我所遭遇过的游戏中间件---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. thinkphp中如何是实现多表查询

    多表查询经常使用到,但如何在thinkphp中实现多表查询呢,其实有三种方法. 1 2 3 4 5 6 7 8 9 10 11 12 // 1.原生查询示例: $Model = new Model() ...

  2. Scala入门1(单例对象和伴生类)

    一.Hello World程序的执行原理 参考http://blog.csdn.net/zhangjg_blog/article/details/22760957 object HelloWorld{ ...

  3. .NET之类型转换

    说起类型转换大家很容易的就会联想到将int类型转换成float类型或者是将double类型转转成int类型之类的转换.当然这可能是大多数人最先接触到的转换方式,也是最简单的转换方式.所谓转换就是从现有 ...

  4. 【定时任务】Spring Boot 中如何使用 Quartz

    这篇文章将介绍如何在Spring Boot 中使用Quartz. 一.首先在 pom.xml 中添加 Quartz 依赖. <!-- quartz依赖 --> <dependency ...

  5. CSUOJ 1781 阶乘除法

    Description 输入两个正整数 n, m,输出 n!/m!,其中阶乘定义为 n!= 1*2*3*...*n (n>=1). 比如,若 n=6, m=3,则 n!/m!=6!/3!=720 ...

  6. Linux-看完这篇Linux基本的操作就会了(转)

    前言 只有光头才能变强 这个学期开了Linux的课程了,授课的老师也是比较负责任的一位.总的来说也算是比较系统地学习了一下Linux了~~~ 本文章主要是总结Linux的基础操作以及一些简单的概念~如 ...

  7. CodeDom生成类文件

    仅供个人学习 需要先引入System.CodeDom nuget包 using CodeGenerate.Entities; using System; using System.CodeDom; u ...

  8. iOS 11开发教程(十一)了解iOS11应用视图

    iOS 11开发教程(十一)了解iOS11应用视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解视图的添加.删除以及位置和大小的设置等内容. ...

  9. wikioi 1078 最小生成树 Kruskal算法

    1078 最小生成树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver       题目描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺 ...

  10. How do I use Tasker to run a sync in FolderSync?

    First of all the full version is required.     The full version works as a Tasker plugin - when you ...