我所遭遇过的游戏中间件---HumanIK

Autodesk HumanIK游戏中间件,为游戏创建更加可信、真实的角色动画。该中间件的全身逆向运动(FBIK)系统支持角色真实地与所在环境及其它角色进行交互。通过动态地将FBIK信息分层置于运行中的现有视频中,创建、修改和重新利用角色动画,以此来节省动画师宝贵的时间。

以上语句拷贝自HumanIK广告手册.所谓IK(反向动力学)就是相反于正常的骨骼动作播放,提供骨架上某几根骨骼的变换状态,让骨架动态的摆出合理的位置.举个具体应用的例子,如果要实现两个高度不定的角色间的握手,不使用IK只能为每两种高度的角色编辑一套动作,这样做工作量和数据量都很大.如果游戏中的角色高度是用玩家任意设置的,那么不使用IK是办不到的.

凭心而论,HumanIK是我接触的Autodesk的三款中间件中最让我省心的,另外两款是Scaleform和Kynapse.省心的原因是它的复杂程度比其他两款小很多,更为重要的是,我做的项目压根没用使用到HumanIK.所以我对HumanIK的研究只是停留在写了几个Demo的测试阶段.这已经是两年前做的事了,由于时间过久,很多细节已经忘却了.

HumanIK的需要自己一套文件数据,HumanIK提供了Maya的导出插件可以编辑生成该数据.但也可以使用现成的骨骼动作生成该数据.HumanIK提供了这方面的接口,当然开发者可以不保存该数据的文件,而是每次创建动作时生成该数据.骨骼动作的关节间有个自由度范围,在其Maya导出插件中,可以编辑该范围,而自动生成的范围则采用默认参数.当时有个小坑是,角色的腿分为两类,一种是普通的膝关节,另一种膝关节是反的,用于鸟类.我直到搞了HumanIK才意识到鸟类的膝关节是反的,之前吃了那么多鸡腿都没有注意过.

HumanIK的集成比较容易,依照其Demo,按照流程,可以轻松创建一个HumanIK的对象HIKCharacter.
    //Step 1: Define which joints my character use.
    // 步骤 1. 创建HIKCharacterDefinition
    //Step 2: Create a HIKcharacter for my definition.
    // 步骤 2. 根据HIKCharacterDefinition创建 HIKCharacter
    //Step 3: Setup my character geometry, T Stance.
    // 步骤 3. 设置HIKCharacter的几何体
    //Step 4. Set up Degrees of Freedom (optional)
    // 步骤 4. 设置自由度(可选)
    // 通过自由度,可以增加针对特定角色的这些内置旋转限制,以创建对骨架灵活性的其他约束。
    //Step 5: Characterize your character geometry.
    // 函数完成角色化之后,无法随时更改自由度
   
       记得去年夏天,有个师弟来我家,他在上海一家游戏公司,混的比我好,早已经是项目经理了.想实现角色握住门把手,或者拿起桌子上的东西的功能.我给他推荐了HumanIK,不知道他现在搞的怎么样了.但如果他是今年问我这个问题的话,我一定不给他推荐HumanIK,这个功能用三角形的余弦定理,可以实现.余弦定理是已知三角形的三个边长求三个内角.具体调试起来有点麻烦,我大概花了一天的时间搞定.可以修改骨架的胳膊或腿的两级骨骼,虽不像HumanIK那样能修改骨架的N级骨骼,以及设置关节间的自由度,但也能满足需求.

由于时间过久,对HumanIK的记忆有点模糊,我记得它的DEMO中有个爬梯子的小人,具体的实现代码却没有细看.但游戏中对IK的需求并不只是爬梯子这么简单,策划更希望能实现角色间的动态交互,这与物理有些关系.比如,角色受到攻击时,根据被攻击的位置和力度动态地做出不同的反应.但这种功能,在HumanIK中没有,在三个物理的中间件中也没有.我曾经在一款游戏中见到这种功能,还自己写算法简单模拟过.当角色某一部位受到攻击时,让相关骨骼向后做一点旋转,将就着还凑合吧,没有细调.但要实现角色受攻击时,退后几步再回来,有点麻烦.希望有朝一日,HumanIK或者物理的中间件能提供个解决方案.

我所遭遇过的游戏中间件---HumanIK的更多相关文章

  1. 我所遭遇过的游戏中间件---SpeedTree

    我所遭遇过的游戏中间件---SpeedTree SpeedTree是一个专门用于渲染植被的中间件,并提供了一套完善的植物编辑工具.在它官方提供的DEMO中,你会看到高度逼真的树木和植物,在风的影响下树 ...

  2. 我所遭遇过的游戏中间件---nvDXTLib

    我所遭遇过的游戏中间件---nvDXTLib nvDXTLib是Nvidia提供的一套用于DXT纹理压缩SDK.接口十分简洁,就是提供了几个纹理压缩的函数,其中我使用最多的函数是: DXTLIB_AP ...

  3. 我所遭遇过的游戏中间件--Kynapse

    我所遭遇过的游戏中间件--Kynapse Autodesk Kynapse游戏中间件是一款面向游戏开发.非玩家控制角色实时模拟的领先的人工智能解决方案.Kynapse具有先进的路径查找功能,比如三维路 ...

  4. 我所遭遇过的游戏中间件--Scaleform

    我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...

  5. 我所遭遇过的游戏中间件---Redux

    我所遭遇过的游戏中间件---Redux 一.关于Redux Substance Redux 是一款纹理处理软件加中间件,专门用于纹理生成和压缩.具其用户指南介绍,它能够对纹理集进行优化,可以将现有压缩 ...

  6. 我所遭遇过的游戏中间件--Apex

    我所遭遇过的游戏中间件--Apex Apex是PhysX的扩展中间件,它是在PhysX的基础上封装了一层.用于实现布料,粒子,破碎这三种物理效果.我只研究其布料处理.使用Apex做物理最大的好处是:它 ...

  7. 我所遭遇过的游戏中间件--PhysX

    我所遭遇过的游戏中间件--PhysX PhysX现在是Nvidia的物理中间件.其特点是简练且功能强大.当我最初拿到PHYSX的SDK时,就发现这个物理中间件比Havok要小很多,但该有的功能都有,甚 ...

  8. 我所遭遇过的游戏中间件--Havok

    我所遭遇过的游戏中间件--Havok Havok是我接触的第一款游戏中间件,那是在五,六年前,我刚刚毕业,对游戏开发还是个菜鸟.我记得先是对游戏场景中的地形和其他静态物体生成刚体,然后做角色的Ragd ...

  9. 我所遭遇过的游戏中间件--FlashOcx

    使用Flash做游戏界面的另一种方式是通过Abode提供flash.ocx处理Flash界面.将Flash图像通过GDI绘制出来后,再将图像数据拷贝到一个D3D的纹理结构中,最后由引擎的D3D接口进行 ...

随机推荐

  1. TradingView 初识

    如引用 TradingView 库,需引入库中 3 个文件(所需库为 github 私有库,需申请) <script type="text/javascript" src=& ...

  2. 在qemu环境中用gdb调试Linux内核

    简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

  3. Eclipse 更改默认的编码 和 换行符

  4. 用 React 编写移动应用 React Native

    转载:用 React 编写移动应用 React Native ReactNative 可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App.而且React ...

  5. poj3349(hash table)

    做的第一道哈希表的题目.速度很慢,跑了3000+ms.采用六条边的和对一个大质数的余数作为哈希表的key,理论上质数取得越大,消耗的空间就越大,但是速度会加快,这里取了14997.地址冲突用链表解决. ...

  6. 80X86指令总结

    一.数据传送指令 指令名称 汇编语句格式 功能 影响标志位 传送move data mov opd, ops (ops) → opd:分为主存储器.通用寄存器.段寄存器,不可同时使用主存储器,类型要匹 ...

  7. zoj 3537 区间dp+计算几何

    题意:给定n个点的坐标,先问这些点是否能组成一个凸包,如果是凸包,问用不相交的线来切这个凸包使得凸包只由三角形组成,根据costi, j = |xi + xj| * |yi + yj| % p算切线的 ...

  8. python开发_webbrowser_浏览器控制模块

    ''' python的webbrowser模块支持对浏览器进行一些操作 主要有以下三个方法: webbrowser.open(url, new=0, autoraise=True) webbrowse ...

  9. Codeforces Round #361 (Div. 2) A. Mike and Cellphone 水题

    A. Mike and Cellphone 题目连接: http://www.codeforces.com/contest/689/problem/A Description While swimmi ...

  10. 洛谷OJ P2356 弹珠游戏 维护前缀和

    题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...