zoukankan      html  css  js  c++  java
  • Ogre集成Havok ragdoll

      贴一个星际2虫群之心的单位死亡动画演示~很给力哟,请自行FQ

      https://www.youtube.com/watch?v=RlM2K-rHi9k

      毕业做毕设时用过PhysX的Wheel,它家的机车示例跟我后来考察的Havok家的相比,后者显然十分霸气和豪华,自此Havok给我留下了很好的印象.

       前段时间在工作中使用了PhysX的Max插件做ragdoll,本以为它已经很不错了,这段时间玩了Havok的Max插件+FilterManager+HCT 来制作ragdoll后,我感到很给力,不光Havok的文档,Demo代码很齐全和详尽,而且它技术支持做得真是好,试用版的使用者在论坛提出的每个问题,团队都会一一耐心解答.

      我这里集成Havok的ragdoll到Ogre时,没有使用Havok的Animation模块来替换掉Ogre的,因为我想保持Ogre原生的代码,以后想扩展animation blend tree等进一步功能时,自己能手动进行改造.就Havok的ragdoll这一块来说,已经把物理层的繁琐细节都封装起来了,提出了skeleton mapper的概念,暴露给外部的是hkaRagdollInstance这个类.通过下面明确的几个步骤,就能在抽象层次比较高的层面完成Ogre和Havok物理的交互,而不用纠缠于rigid body, constraint.....


      1) map high-res pose to ragdoll pose
      2) drive ragdoll rigid bodies and step physics
      3) map ragdoll pose to high-res pose
      4) render

      

      目前已经成功导入了Havok肢解demo的资源:zombie. Skin和ragdoll的max文件都有,我们需要自己导出.mesh和.hkt.

      十分需要注意的几点有:

    1. ragdoll(.hkt)的导出坐标系要与Ogre的一致,也就是yz互换,z变负.通过Havok的TransformScene filter即可.

              

    2. ragdoll和mesh导出时的reference pose要一致.

    3. The Triangle Pelvis Setup...参看Havok user guide的Skeleton Mappers章节

    4. Twist Bones for Ragdolls...同上.  以上4点都是ragdoll制作中可能遇到的问题,毕竟布娃娃这个东西大部分是要靠美术手工制作的.

    5. 代码中禁止掉ragdoll各部分间的自碰撞.否则会出现癫痫表现...

      相关的代码和资源都在我github上,有需要的朋友可以自行查看.需要注意的是,目前只成功运转了这个zombie,我尝试制作了SC2角色的ragdoll(枪兵和光头哥),都不能正常运作.无奈于对Max的骨骼动作相关制作不甚了解,这里就先搁置了(本来我的计划是成功后继续集成肢解dismemberment功能,这个相当有趣).

  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/mavaL/p/3050382.html
Copyright © 2011-2022 走看看