在第二人生里,人物的显示是比较复杂的,因为同一个网格模型可以显示为不同的人物出来,也就是人物每个部位的纹理不一样,比如不同的女孩子就有可能选择不同的头发,还可以穿着不同的衣服,不同的裤子等等。要实现这些功能,也就是说要把头、上身、下身、脚分开来显示。如下图所示:
蔡军生 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. BZOJ 4595 SHOI2015 激光发生器 射线,线段,偏转
  2. java生成函数excel_java实现在excel中创建及读取公式
  3. 树莓派开发7-Pi摄像头+mjpg-streamer
  4. PCA主成分分析/协方差矩阵
  5. 《敏捷开发绩效管理》扩展阅读(敏捷开发绩效管理,敏捷团队绩效管理)
  6. 电脑登陆不了网页的服务器地址,电脑能登qq不能打开网页的解决方法
  7. 大话设计模式--建造者模式 Builder -- C++实现实例
  8. MSM8994 thermal管理
  9. Tensorflow官方文档中文版——第一章
  10. oracle如何规则显示,Oracle语句优化规则汇总
  11. 红帽急了:新年的 RHEL 将有低成本或免费版
  12. Deep Graph Library消息传递机制-Message Passing详解
  13. Cmder安装使用篇
  14. PaddleNLP基于ERNIR3.0文本分类以CAIL2018-SMALL数据集罪名预测任务为例【多标签】
  15. 输入两个正整数m和n,求其最大公约数和最小公倍数
  16. 【YOLOV5-5.x 源码解读】plots.py
  17. 苹果AirPods3将用与AirPods Pro中相同的SiP技术
  18. 陕西奥罗国际大酒店配电房改造
  19. spi通讯不需要地线吗_SPI通信时是不是主机和从机的MISO、MOSI两根线应该交叉接呀?...
  20. 安装 macbook 双系统( OS X 和 Ubuntu )

热门文章

  1. Spoon Kettle 输入之 excel 输入详解(Microsoft Excel input)
  2. 跨境电商Google广告投放详细教程
  3. C语言 6习题13 编一程序,将两个字符串连接起来,不要用strcat函数。
  4. Typore中的图片如何永久保存
  5. teemo使用手册(内附脚本一键提取,邮箱、IP、domain、whatweb筛选可打开网址)
  6. Scratch 游戏项目学习法 —— 接苹果(六)让苹果掉到下面
  7. 兜了一圈,发现想要的APK在这里有
  8. Python运行环境详细总结
  9. 品牌如何正确联动B站UP主“恰饭视频”,最近一支不像恰饭视频的作品在B站火了
  10. oracle瓶颈,解决Oracle数据库性能瓶颈问题