科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道第二人生的源码分析(十四)人物角色的实现

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在第二人生里,最重要的实现就是人物角色的实现,它不是基于第一视角实现的,而是第三视角的方式实现,因此每个居民在第二人生里是有一个虚拟人物角色代表的。

作者:第二人生 来源:bolg【原创】 2008年1月17日

关键字: C++ Second Life caimouse 第二人生 软件

  • 评论
  • 分享微博
  • 分享邮件

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

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

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

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

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

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

初始化人物角色。

 

2、 buildCharacter();

构造人物角色。

 

3、 loadAvatar();

加载人物角色。

 

4、 loadMeshNodes()

加载人物的网格节点。

 

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

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

 

6、 mesh_data->loadMesh( full_path )

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

 

 原文链接:http://blog.csdn.net/caimouse/archive/2008/01/14/2044149.aspx

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章