wuhanht
路人甲
路人甲
  • 注册日期2007-05-24
  • 发帖数12
  • QQ
  • 铜币175枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2669回复:5

[原创]虚拟三维场景中角色动画的增加

楼主#
更多 发布于:2007-12-16 13:30
    虚拟三维场景中加入动态人物,是虚拟社区建设和三维游戏的基本要求。在完成这个目标之前,有必要分析人物角色特点和分别阐述其实现途径。<BR>    虚拟三维场景中的人物角色特点和实现途径:<BR>    1)能真实反应现实世界中的人类动作,能够结合这些不同的动作,比如边走边看。此特点可以通过骨骼动画来实现,因为此类模型是由具有互相连接的“骨骼”而组成的骨架结构,通过改变骨骼的朝向和位置可以为模型生成动画。
<P>    2)动态人物模型在三维场景中运动需要碰撞检测,才能方便于走上下坡等场景,和不至于穿墙和入地等不符合现实世界的情景出现。此特点可以通过结合物理模型包来实现,如ODE,PAL等。</P>
<P>    3)动态人物模型的制作和准确导入到场景中。模型的制作可以依靠Creator,3DMax,Maya等建模软件来完成。将制作好的人物模型导入到虚拟场景中,需要找到这两类模型的底层相同之处,一般来说,贴图文件格式差不多,而找到几何文件的共同地方,很有可能是追溯到数值矩阵甚至顶点对位置。如加载人物模型文件的主要代码是:<BR>for( unsigned int i = 0; i < mBodyNode->getNumChildren(); i++ )</P>
<P  align=left>   {<BR>        osg::MatrixTransform* scale = dynamic_cast<osg::MatrixTransform*>( mBodyNode->getChild(i) );                                           //得到矩阵</P>
<P  align=left>         for( unsigned int j = 0; j < scale->getNumChildren(); j++ )</P>
<P  align=left>         {</P>
<P  align=left>            osg::Geode* geode = dynamic_cast<osg::Geode*>( scale->getChild(j) ); //得到孩子结点</P>
<P  align=left>            for( unsigned int k = 0; k < geode->getNumDrawables(); k++ )</P>
<P  align=left>            {                                //得到基础图元<BR>               osg::Drawable* drawable = dynamic_cast<osg::Drawable*>( geode->getDrawable(k) );</P>
<P  align=left>            }</P>
<P  align=left>         }</P>
<P>      }<BR>        ..........<BR>        return mBodyNode.get();</P>
<P><BR>    4)动态人物模型的动作幅度改变。人物模型的位置和大小等设定,可以通过在整个模型数据的组织中设置顶部的变换矩阵来实现。而跑步等幅度的改变,除了骨骼动画有相应的动作改变外,也是将变换矩阵中的平移等参数进行放大。</P>
<P> </P><IMG src="http://www.cnblogs.com/images/cnblogs_com/wuhanhoutao/116216/r_Resize%20of%20BeijingFourthRingRoad.jpg" border=1>
喜欢0 评分0
hmwzh
路人甲
路人甲
  • 注册日期2007-09-22
  • 发帖数28
  • QQ
  • 铜币181枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-04-25 19:15
<P>这个三维场景是基于软件的还是自己开发出来的阿??</P>
<P>如果是基于软见的,那是什么软件阿?</P>
举报 回复(0) 喜欢(0)     评分
agiga
路人甲
路人甲
  • 注册日期2008-04-18
  • 发帖数7
  • QQ
  • 铜币107枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-05-13 15:28
有没有更详细的说明呢!<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
wt1118
路人甲
路人甲
  • 注册日期2008-05-08
  • 发帖数15
  • QQ
  • 铜币150枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-05-16 09:37
<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
haveacake
路人甲
路人甲
  • 注册日期2007-08-23
  • 发帖数10
  • QQ
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2008-11-07 11:43
<P>用什么做的呢?等待</P><img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
zhangyunji
路人甲
路人甲
  • 注册日期2007-03-08
  • 发帖数32
  • QQ
  • 铜币175枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2008-11-10 18:50
<P>是用什么软件做的呢</P>
<P>ERDAS、ArcGIS?</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部