我所遭遇过的游戏中间件---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或者物理的中间件能提供个解决方案.

转载于:https://www.cnblogs.com/WhyEngine/p/3504189.html

我所遭遇过的游戏中间件---HumanIK相关推荐

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

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

  2. Zipline推出基于Lua跨平台游戏中间件Moai

    新的平台意味着中间件的另一种形式,Zipline Games也正式启动了Moai平台.这个中间件主要面向PC.手机.及基于云端的游戏开发,包含2个部分.Moai支持iOS和Android移动平台,同时 ...

  3. 移动游戏 真的吗???真的

    我什么都不知道 摘要:Kickstarter在众投创业模式中独领风骚,掀起了一波又一波的融资狂潮,而在游戏开发领域,越来越多的开发者加入战局,但却有人欢喜有人愁,没有认清开发及市场前景便盲目众投最终让 ...

  4. 科技爱好者周刊(第 168 期):游戏《底特律:变人》

    这里记录每周值得分享的科技内容,周五发布. 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. 周刊讨论区的帖子<谁在招人?>,提供大量程 ...

  5. 读书笔记_Unity3d 游戏优化2

    推荐序2 成为一名优秀的游戏客户端开发者,不仅需要常年的实践积累与思考,更需要夯实的基础为支撑.大部分开发者都很努力刻苦,但是为什么不同开发者之间的能力参差不齐?这是因为日常开发过程中的经验很多时候只 ...

  6. 如何才能成为成功的独立游戏开发者?

    不久前我收到一封邮件,对方在邮件上问我"如何才能成为一名独立游戏开发者?" 虽然我的回复是全力以赴,但是我却不清楚他们真正寻求的答案是什么.我们经常会被问及类似的答案,所以我决定针 ...

  7. H5网页游戏(js),游戏小程序,网页游戏引擎

    采用了Three.js作为3D引擎库,结合tween.js作为配套的动画库,以及基于webpack的脚手架nowa链接作为技术支持.市面上比较成熟的3D库有Three.js和Babylon.js. B ...

  8. 游戏开发过程详细介绍

    8.游戏引擎 http://edu.gamfe.com/tutor/d/8154.html 早想写一点游戏设计的文章与大家交流,一是经验的问题,二是公司正在紧张的 游戏制作 期,实在抽不出多少时间,一 ...

  9. 为什么游戏服务器稳定性差 是什么原因导致的

    现在在互联网行业中,游戏行业一直占据着重要的地位,越来越多的企业开始投入到游戏行业中,每年上线的游戏数量也在持续增长.但想要一个游戏能够常久稳定的运行下去,不仅需要玩家数量稳定,游戏内容吸引人之外,用 ...

最新文章

  1. Sass (Syntactically Awesome StyleSheets)
  2. 检索出现次数的SQL语句
  3. Windows网络通信(二):socket异步编程
  4. 苹果为了不让AirTag被用来跟踪,将推出一个安卓应用
  5. JavaScript扩展运算符(...)
  6. 如何构建 SaaS 网站的高转化?
  7. 由于不当的执行顺序导致的死锁
  8. python爬虫多进程_Python爬虫技术--基础篇--多进程
  9. 工作275:表单验证重置
  10. 蓝桥杯 2017 国赛B组C/C++【对局匹配】
  11. 【需求工程】需求应用域理解
  12. 超实用的 Nginx 极简教程,覆盖了常用场景(转)
  13. 如何卸载CrossOver里的软件 ?快来看看吧
  14. window10企业版g c盘满了_C盘满了?试试这几招
  15. CSS颜色表示的几种方式
  16. x86_64 x86 amd64 i386 i686 aarch64等词语含义
  17. appium ios 下拉刷新输入框输入后收起键盘
  18. ABBYY最新官方免费序列号激活码序列号密钥下载分享
  19. Ubuntu修改时区和更新时间
  20. 有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。VS2019版

热门文章

  1. UICollectionView,CollectionView,瀑布流
  2. Android UI线程和非UI线程
  3. Persist Security Info 参数的作用
  4. WAMP 2.2 配置与IIS共用单IP,多域名多网站配置方法
  5. 快手文档 - www.kuaishou.net
  6. 深入解析 Dubbo 3.0 服务端暴露全流程
  7. 回帖赢好礼,让AI回应你的要求
  8. 函数计算镜像加速:从分钟到秒的跨越
  9. 跨越十年,我的重要时刻它从未离开过
  10. 数据湖架构,为什么需要“湖加速”?