在第二人生里,最重要的实现就是人物角色的实现,它不是基于第一视角实现的,而是第三视角的方式实现,因此每个居民在第二人生里是有一个虚拟人物角色代表的。这样构造出来的社会是多姿多彩,先来看看下面人物角色的图片:

蔡军生  2008/01/14QQ:9073204 深圳

蔡军生  2008/01/14QQ:9073204 深圳

从上面看到各种各样的人物角色,穿着不同的衣服,摆出不同的姿势,形态各异。要实现这样的人物角色显示,是需要比较多的代码来实现的。首先是它的网格就比较复杂,有很多三角形才构造这样复杂的人物,刚刚头部构造的三角形网格大小,就有1.6M大小。其次它的骨骼动画也比较复杂,这些都需要大量的变换矩阵组成。再次,就是实现很多人物同时显示时计算量比较大。人物角色的实现过程是这样的:先加载头发、眼睛、头部、上肢、下肢,然后再贴上相应的纹理图片。

在第二人生里,为了加快人物角色的显示,并没有把人物的网格数据放在服务器上,而是随着客户端一起下载的。现在就来分析一下怎么样从文件里加载网格数据。如下:

1、 LLVOAvatar::LLVOAvatar()构造函数

初始化人物角色。

2、 buildCharacter();

构造人物角色。

3、 loadAvatar();

加载人物角色。

4、 loadMeshNodes()

加载人物的网格节点。

5、 LLPolyMesh::getMesh(info->mMeshFileName);

按名称来加载角色的数据。

6、 mesh_data->loadMesh( full_path )

从文件路径名称里读取网格数据。

第二人生的源码分析(十四)人物角色的实现相关推荐

  1. 【转】ABP源码分析十四:Entity的设计

    IEntity<TPrimaryKey>: 封装了PrimaryKey:Id,这是一个泛型类型 IEntity: 封装了PrimaryKey:Id,这是一个int类型 Entity< ...

  2. GCC源码分析(十四) — rtx结构体,指令与栈分配

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

  3. Cowboy 源码分析(十八)

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

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

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

  5. Flume 1.7 源码分析(四)从Source写数据到Channel

    Flume 1.7 源码分析(一)源码编译 Flume 1.7 源码分析(二)整体架构 Flume 1.7 源码分析(三)程序入口 Flume 1.7 源码分析(四)从Source写数据到Channe ...

  6. spring源码分析第四天------springmvc核心原理及源码分析

    spring源码分析第四天------springmvc核心原理及源码分析 1.基础知识普及 2. SpringMVC请求流程 3.SpringMVC代码流程 4.springMVC源码分析 4.1 ...

  7. Anbox源码分析(四)——Anbox渲染原理(源码分析)

    Anbox源码分析(四) 上篇文章我们从源码分析了一下Anbox是怎样一步步的准备了OpenGL ES的渲染环境的,这篇文章,我们继续分析Android的渲染指令是如何到达宿主机进行渲染的. 宿主机端 ...

  8. shardingsphere源码分析(四)-- 改写引擎

    shardingsphere源码分析(四)-- 改写引擎 shardingsphere源码分析(四)-- 改写引擎 官方介绍 debug 总结 shardingsphere源码分析(四)-- 改写引擎 ...

  9. kube-scheduler源码分析(四)之 findNodesThatFit

    本文个人博客地址:https://www.huweihuang.com/kubernetes-notes/code-analysis/kube-scheduler/findNodesThatFit.h ...

  10. live555源码分析(四)RTSPServer分析

    live555源码分析系列 live555源码分析(一)live555初体验 live555源码分析(二)基本组件上 live555源码分析(三)基本组件下 live555源码分析(四)RTSPSer ...

最新文章

  1. linux 系统网络服务器组建,配置和管理实训教程 pdf,Linux网络服务器配置管理项目实训教程2...
  2. org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IPr
  3. 微软发布 VS Code Java 安装程序,一键安装所有 Java 开发环境
  4. jmeter-5.3 测试http接口动态数据 windows+Linux双环境
  5. 中小企业集群ntpd服务搭建
  6. Java CopyOnWrite容器
  7. 如何打开oracle的回闪,oracle回闪操作
  8. 计算机无线网络怎么连接,怎么连接无线网络 电脑怎么添加无线网络连接
  9. SAS安装及过程中遇到的问题的解决办法
  10. N76E003的TM1620B驱动
  11. swift5函数和Collection
  12. Faceted project metadata file /.settings/org.eclipse.wst.common.project.facet.core.xml could
  13. 2022美国大学生数学建模竞赛C题摘要及总结
  14. Catagory添加属性、扩展方法
  15. 计算机软件专业的学术道德,遵守学术规范 恪守学术道德--计算机工程学院举行2019届毕业设计(论文)动员会...
  16. 客单价怎么算 影响客单价的主要因素有哪些?
  17. P3387 【模板】缩点
  18. 利用Matlab进行相机标定并使用openCV进行简单三维重建
  19. n(n-1)到底是个啥
  20. CAD—dwg格式解析库:libdxfrw和libredwg

热门文章

  1. 华为ensp OSPF单区域配置
  2. Tera Term (串口工具)永久保存设置的字体和框体大小
  3. 495. Teemo Attacking(提莫攻击)
  4. (九)ThunderbirdMail配置QQ邮件服务
  5. 计算机打印机端口号,网络打印机端口号.doc
  6. 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念
  7. 日常办公,无特殊要求者怎么选择显示器?
  8. python3自动发送邮件并添加附件
  9. python 空数组_Python笔记
  10. STM32学习之红外遥控