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

Havok是我接触的第一款游戏中间件,那是在五,六年前,我刚刚毕业,对游戏开发还是个菜鸟.我记得先是对游戏场景中的地形和其他静态物体生成刚体,然后做角色的Ragdoll就是模拟人死之后顺着地形躺下,然后又做车辆模拟,后来还做过破碎.下面先一一枚举下我做的事情:
      (1)地形刚体是每次场景加载时实时生成的.
      (2)场景中的所有静态物体生成一个巨大的组合刚体,每一个静态物体都是刚体的一个Shape,然后将该刚体保存到文件中.
      (3)创建出一堵刚体所组成的墙.然后可以用物体砸它.
      (4)Ragdoll搞的很辛苦,因为当时我还不太了解骨骼动画,还没吃透游戏引擎中的动作模块.然后Havok又有一套Animation模块,如果要做Ragdoll则需要用到Animation.
      (5)穿刺处理.当搞出Ragdoll之后,发现如果角色死在墙边时,手部有可能插入到墙内,那么这时变成Ragdoll后,手部刚体就会在墙内.这种情况下死相有些难看,需要做动态刚体穿刺处理.
      (6)车辆模拟,当时搞出来后,在场景编辑器中,随意生成地形,创建场景,自己玩的很起劲.后来我比较了PhysX和Bullet后发现Havok提供了车辆功能最为完善,操作感最好.
      (7)破碎处理.DEMO中有敲玻璃的例子,我就仿着它写,记得当时是有个坦克的车辆,用它发射子弹刚体敲击玻璃.而玻璃破碎的过程是删除旧刚体,生成多个新刚体.
      (8)可分解的刚体,就是做一个小木屋,当有其他刚体碰到时,会坍塌.但坍塌后的刚体有时会嵌入到地面上,左右摇摆不定,这让我很是无奈.
      (9)想做刚体模拟布料效果,当时生成一圈的刚体,围在一个角色腿部.每个刚体与周围四个刚体有约束连接.但效果不行,动作剧烈时或刷帧率低时,膝盖会穿出刚体.
      (10)角色的控制.纯粹就是将Havok的CharacterControl移植到引擎中.引擎中本来就是角色控制的逻辑,没必要用Havok的.
      我在Havok上做的一切没有应用于任何一款游戏,最初觉得有点可惜,但是现在再看看当时写的代码,想想也不可惜,那代码写得太挫了.

Havok不仅仅是物理开发包,正如DirectX不仅仅是3D图形开发包一样.Havok包括一系列图形游戏相关的开发,如AI,Animation,布料,脚本,甚至包括一套图形渲染引擎.但大部分的使用都是在物理方面,就如同大部分对DirectX的使用仅仅是D3D.DirectX的其他模块如Sound,Music还有人在用,而Input,Play之类使用者了了无几.与Havok竞争的一款物理引擎PhysX,感觉它们两个的关系很像DirectX和openGl.DirectX的装包有500多M,openGl的安装包大约有几十M.Havok大而全,提供了很多与物理相关的功能,它的安装包也很大,总共要几个G,安装过程也挺麻烦的.PhysX的安装包则只有100M不到.Havok提供了起码几百个的DEMO,而PhysX的官方DEMO也就二十几个.Havok大气滂沱,PhysX简洁精悍.

Havok的所有DEMO都堆集在一个工程中,这个工程十分庞大,这是我至今为止见过的代码量最大的单个工程,感觉相当霸气.DEMO涉及到Havok的方方面面,除了物理和碰撞方面的,还有内存管理,多线程管理,文件读写.如果能再集成几个物理小游戏就好了.

Havok有一套Animation模块,也是免费的,这个因为不太用,所以我研究地不深.记得当时有个DEMO是实现动作混合的,不知道这个模块现在发展成什么样了.现在游戏中有角色间交互的需求,比如角色受到攻击时,攻击点不同,攻击力度不同应该有不同的反映,希望能有解决方案.这需要物理,Animation,IK三种技术.

Havok的布料模块,这个模块很奇怪,它与物理模块没有关系,或者说它有自己的物理模块.如果你要实现一个角色穿着布料的情况,你需要为布料再创建出一套碰撞体来.但角色身体上可能已经给他创建出刚体了.而布料的最大问题是有很大的不确定性,当角色播放剧烈的动作时,布料会穿出碰撞体.比如你的角色穿着一条裙子,当一套动作做完后,大腿穿出了裙子,整个裙子跑到屁股后面了.后来Nvdina提供了一套基于PhysX的中间件Apex,实现了物理布料与骨骼动画的融合处理,使布料在受物理影响时,也受到骨骼动作的影响,解决了这一难题.从而我便从Havok转到了PhysX.

Havok AI这个不免费,我没接触过.Havok物理中有个DEMO是角色在场景中自由漫游且相互避让.其实寻路,碰撞,物理,IK总有些耦合性.

Havok的相关工具还是挺不错的,Havok的Max导出插件在导出模型时,可以自由地设置其矩阵变换;而PhysX导出插件则不能.MAX中的建模坐标系为Z轴右手坐标系,而通常游戏中为Y轴向上的左手坐标系.那么对模型的坐标系变换就很是需要.Havok的VisualDebugger工具要比PhysX的更好用.我记得可以很轻松地设置VisualDebugger的视角与游戏视角一致,而PhysX的PVD中,我始终没有实现这一功能.不过VisualDebugger我不太常用,相对于重开一个进程对物理进行调试数据的显示,我更喜欢直接将物理对象绘制在游戏中,这样做更为直观方便.

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

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

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

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

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

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

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

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

    我所遭遇过的游戏中间件---HumanIK Autodesk HumanIK游戏中间件,为游戏创建更加可信.真实的角色动画.该中间件的全身逆向运动(FBIK)系统支持角色真实地与所在环境及其它角色进行 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 第一个web程序(web.xml , ServletConfig , ServletContext)

    一:第一个jsp程序 1.项目设计结构 2.新建Person.java package com.java.demo; public class Person { public void printSt ...

  2. django项目添加新的app

  3. WinForm 使用 NPOI 2.2.1从datatable导出Excel

    最新的NOPI应该是2.3了,但在官网上还是2.2.1. 也是第一次使用NPOI来导出Excel文件. 在写的时候搜不到2.2.1的教程,搜了一个2.2.0的教程. 不过也没什么问题,NPOI是真的方 ...

  4. Codeforces 1090J $kmp+hash+$二分

    题意 给出两个字符串\(s\)和\(t\),设\(S\)为\(s\)的任意一个非空前缀,\(T\)为\(t\)的任意一个非空前缀,问\(S+T\)有多少种不同的可能. Solution 看了一圈,感觉 ...

  5. hdoj 5182 PM2.5 排序

    PM2.5 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Descr ...

  6. centos7安装apache 新手入门 图文教程

    操作系统 64位CentOS Linux release 7.2.1511 (Core) 下载apache相关软件 1.apr和apr-util,下载地址: http://apr.apache.org ...

  7. Mac使用自带的屏幕共享实现VNC连接KVM时需要输入密码的问题解决

    别试了,下载这个软件VNC-Viewer,苹果自带的那个不行!!! https://www.realvnc.com/en/connect/download/viewer/macos/

  8. Bandwagon Host – 64M内存 1.5G硬盘 100G流量 年3.99美金

    BandwagonHost(习惯称作搬瓦工),属于IT7公司旗下的产品,搬瓦工虽然是新起的商家, 但是有实力雄厚的公司背景在一定程度上还是可以放心使用的. 很多用户在选择这款低价VPS的时候都担心是否 ...

  9. Smali语法简单介绍

    Smali语言其实就是Davlik的寄存器语言: Smali语言就是android的应用程序.apk通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件,文件的展示 ...

  10. MySQL性能诊断与调优 转

    http://www.cnblogs.com/preftest/ http://www.highperfmysql.com/     BOOK LAMP 系统性能调优,第 3 部分: MySQL 服务 ...