OGRE 换装方法

转自:http://blog.csdn.net/trcj1/article/details/6607209

Ogre换装系统

         角色换装作为游戏里一个古老而不可或缺的系统,各个引擎都有完备支持,Ogre也不例外。

         尽管网上一些讨论把Ogre换装说得讳莫如深,实际上它还是很简单的。早在05年提及这个问题时,sinbad也只是说了一句“use Entity::shareSkeletonInstanceWith”

         游戏里的换装大致分为三类,下面逐一介绍其Ogre实现。

         一、更换纹理。这算是最简单的一类,顾名思义,更换材质的贴图即可。它在Ogre中的调用可能是这样的:

[cpp]  view plain copy
  1. body->getMaterial()->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName("clothTexture");  

Ogre_character_customize_0

更换纹理实现更换衣服

         二、挂接物体。此类应用多是将刚性、无形变的物体挂接到某个骨骼节点上,最常见的就是将武器挂接到手部骨骼,实现持握的效果。Ogre中调用如下:

[cpp]  view plain copy
  1. body->attachObjectToBone("handBone", weapon);  

 Ogre_character_customize_1

挂接物体实现手持武器

         三、共享骨骼。这是最常被讨论的一个,要求模型共享一套骨骼。以戴手套为例,手套模型需要共享裸模的骨骼,任何时候都做一样的动作,如此表现为二者契合,以实现穿戴的效果。Ogre中使用如下调用:

[cpp]  view plain copy
  1. glove->shareSkeletonInstanceWith(body);  

         这类换装要求美术人员做绑定时使用同一套骨骼,最终导出的各个模型也应尽量指向相同的骨骼文件。如果美术指向了名字不同的骨骼,在共享前你得费心调用Mesh:: setSkeletonName()重新指定,始终保证两个模型使用的骨骼一致。这里不推荐使用_notifySkeleton(),略显暴力了。

 Ogre_character_customize_2

共享骨骼实现手套、靴子与角色契合

         如果你碰巧也使用《火炬之光》的资源做实验,会发现有些手套模型竟然包含有身体,这样做的原因很多,防止两个模型契合处有明显接缝是其中之一。这时你需要在整合后隐藏那些多余的SubEntity,这并不困难,尝试过你便会明白。

         美好的事物理应简单。

 Ogre_character_customize_3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值