在第二人生里,人物的显示是比较复杂的,因为同一个网格模型可以显示为不同的人物出来,也就是人物每个部位的纹理不一样,比如不同的女孩子就有可能选择不同的头发,还可以穿着不同的衣服,不同的裤子等等。要实现这些功能,也就是说要把头、上身、下身、脚分开来显示。如下图所示:
蔡军生 2008/01/22 QQ:9073204 深圳
现在就来仔细地分析一下第二人生里是怎么样分别显示不同身体部份的,它的代码如下:
#001 U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
#002 {
#003 U32 num_indices = 0;
#004 
#005 if (!mIsBuilt)
#006 {
#007 return num_indices;
#008 }
#009 
……
……
#077 //--------------------------------------------------------------------
#078 // render all geomety attached to the skeleton
#079 //--------------------------------------------------------------------
#080 static LLStat render_stat;
#081 
#082 LLViewerJointMesh::sRenderPass = pass;
#083 
这里开始显示人物的各部位网格和纹理。
#084 if (pass == AVATAR_RENDER_PASS_SINGLE)
#085 {
#086 BOOL first_pass = TRUE;
#087 if (!mIsSelf || gAgent.needsRenderHead())
#088 {
#089 num_indices += mHeadLOD.render(mAdjustedPixelArea);
#090 first_pass = FALSE;
#091 }
上面显示头部。
#092 num_indices += mUpperBodyLOD.render(mAdjustedPixelArea, first_pass);
上面显示上身。
#093 num_indices += mLowerBodyLOD.render(mAdjustedPixelArea, FALSE);
上面显示下半身。
#094 
#095 {
#096 LLGLEnable blend(GL_BLEND);
#097 LLGLEnable test(GL_ALPHA_TEST);
#098 num_indices += renderTransparent();
上面调用函数renderTransparent显示头发、裙子。
#099 }
#100 }
这样分开显示的好处,就是可以显示各种各样的人物出来,多姿多彩,节省人物实现的数据下载,当然也是骨骼动画实现的需要。

第二人生的源码分析(十九)人物组合显示相关推荐

  1. 【转】ABP源码分析十九:Auditing

    审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,它们提供了活动序列的文档证据,这些活动序列可以在任何时间影响一个特定的操作. AuditInfo:定义如下图中需要被Audit的信息. Aud ...

  2. Cowboy 源码分析(十八)

    在上一篇中,我们整理了下cowboy_http_protocol:header/3函数,在文章的末尾留下2个没有讲到的函数,今天,我们先看下cowboy_http_protocol:error_ter ...

  3. GCC源码分析(十六) — gimple转RTL(pass_expand)(下)

    版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...

  4. Clamav杀毒软件源码分析笔记 九

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Clam ...

  5. Clamav杀毒软件源码分析笔记[九]

    Clamav杀毒软件源码分析笔记[九] 刺猬@http://blog.csdn.net/littlehedgehog [数据流病毒扫描] 数据流病毒扫描,听上去貌似很牛逼的称呼,其实就是一个传送数据流 ...

  6. 深入剖析Spring Web源码(十九) - 整理的文档和日志的索引(第一版)

    整理的文档 把所有的<深入剖析Spring Web>系列日志整理成为文档,供大家下载阅读,希望对大家有所帮助.里面有些章节尚未完成,所以称为第一版.希望不久的将来,能把没有完成的章节在第二 ...

  7. Spark源码分析之九:内存管理模型

    Spark是现在很流行的一个基于内存的分布式计算框架,既然是基于内存,那么自然而然的,内存的管理就是Spark存储管理的重中之重了.那么,Spark究竟采用什么样的内存管理模型呢?本文就为大家揭开Sp ...

  8. 【转】ABP源码分析十八:UI Inputs

    以下图中描述的接口和类都在Abp项目的Runtime/Validation, UI/Inputs目录下的.在当前版本的ABP(0.83)中这些接口和类并没有实际使用到.阅读代码时可以忽略,无需浪费时间 ...

  9. 【转】ABP源码分析十六:DTO的设计

    IDTO:空接口,用于标注Dto对象. ComboboxItemDto:用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于na ...

  10. 【转】ABP源码分析十五:ABP中的实用扩展方法

    类名 扩展的类型 方法名 参数 作用 XmlNodeExtensions XmlNode GetAttributeValueOrNull attributeName Gets an   attribu ...

最新文章

  1. linux下查看vnc端口_怎样查vnc端口,Linux下根据进程名怎样查端口
  2. java spring 过滤器_spring中过滤器与拦截器的区别
  3. cubemx lan8720a ping不通_肩颈不通百病生,这5个开肩动作要多练
  4. 乐观锁的颗粒度_MySql数据库锁机制详解
  5. sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁
  6. 这就是数据分析之算法认知
  7. 基于MATLAB的平面刚架有限元分析,基于MATLAB的平面刚架静力分析.pdf
  8. 程序员遇到什么样的工作状态应该果断跳槽走人?
  9. PowerBuilder DataWindow 38个开发技巧
  10. ngrok 代理访问
  11. tftp拷贝linux文件夹,CentOS下使用TFTP向目标板传送文件
  12. 秀米怎么添加word附件
  13. 苹果手机回收价格怎么查询
  14. 【XSY3906】数数题(期望,多项式)
  15. Riemannian geometry applied to BCI classification
  16. 考研路茫茫——早起看书
  17. 第4章 点云的滤波与分类 4.1点云数据的过滤
  18. Qt中的网络编程(TCP)
  19. 闲人闲谈PS之十七——系统切换带来的冲击
  20. HDU 4411 Arrest 费用流

热门文章

  1. 学习 PixiJS — 动画精灵
  2. 495. Teemo Attacking(提莫攻击)
  3. UPnP 体系架构和基本原理 —— UPnP 工作流程
  4. Oracle 18c新特性一览
  5. vue路由报错Avoided redundant navigation
  6. 面试题-取出url中的参数以json对象结构输出(JavaScript)
  7. 【LaTeX】复杂表格的制作:Excel2LaTeX及细节调整
  8. Excel表格常用复制粘贴技巧,你真的会操作?
  9. 一键seo提交收录_百度网站提交,选择主动提交,还是被动收录?
  10. Linux内核-CFS调度下带宽控制(Bandwidth Control)