网上基本找不到hat相关的资料,只能自己摸索啦~
Attachment也就是附件,它的作用是把两个角色附和在一起,比如人与武器是两个角色,人拿起武器就是两个角色的附和动作;人与马也是两个角色,人骑上马也是两个角色的附和动作,完成了attachment后,武器就会和人的手一起运动,人也会随着马一起前行。
为了完成这样的操作,我们就需要告诉Havok:
(1) 附主是什么?它的本地帧是什么?
(2) 附从是什么?它的本地帧是什么?
(3) 什么时候让附从和附主附加在一起,什么时候分离?
其中,本地帧是在HCT中完成的,通俗来说,它就是决定一个角色哪一部分要和另一个角色的哪一部分连接,比如对于人而言,手心处就是本地帧。如果想要添加本地帧,可以在特定位置建一个球体,指定为本地帧。
为了完成一个attachment,首先,我们需要在havok面板里新建多个Character。
然后,我们需要加入以下一些东西:
(1) Get Handle On Bone Modifier,引入附主,输入一个本地帧名字,输出到一个Object pointer 对象中。
(2) Sense Handle Modifier,引入附从,输入一个本地帧名字,输出到一个Object pointer 对象中。
(3) Attachment Modifier,引入附件,输入之前引入的附主和附从,把它们连接起来。
(4) Event Driven Modifier, 引入状态转变,输入一个attachment,可以让附主附从在事件触发后分离或贴合。
有几个要关注的问题,个人经验:
(1) 进行附件动画模拟的时候,需要把几个附件角色都激活,具体方法是右键角色勾选Active in Viewport.
(2) 进行附件动画模拟的时候,要从包含修改器的位置开始模拟,然后再进入内层结点,才能看得见效果。如果直接从内层结点开始模拟,就不会体现外层结点的作用效果。
(3) 附件的设计最好都统一放在外层,便于维护。而他本身可以在你需要用到事件的时候,在结点内层嵌套一个附件以及事件驱动,但因为比较隐蔽,不推荐这么做。
有时候我们可能会需要用到手柄(附主或者附从)在世界坐标系中的旋转或者平移状态,这时候我们可以用到Evaluate Handle Modifier,输入对象指针,输出结果包含:
(1) 位置(hkVector4Proxy)
(2) 旋转(hkQuaternionProxy)
(3) 是否有效输出 (is Valid Out)
....
后续发现新问题继续补充。