找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

如何让3D游戏中人物上下楼脚踏实地?

2016-12-20 23:19| 发布者: xmohe| 查看: 463| 评论: 0

摘要: 如何让3D游戏中人物上下楼脚踏实地?小白求教br像gta这些游戏中br角色的布娃娃效果十分真实br在上下楼梯时,每一步都会塔在台阶上brimg data-rawwidth=550 data-rawheight=296 src=http://pic1.zhimg.com ...
如何让3D游戏中人物上下楼脚踏实地?小白求教<br>像gta这些游戏中<br>角色的布娃娃效果十分真实<br>在上下楼梯时,每一步都会塔在台阶上斜坡或者有碰撞物体的时候,站立的角色会弯腿
求大神指导一下思路
虽然是菜鸟,也不希望自己的东西粗制滥造<br>目前找了很多地方都没有相关的文章小白求教
像gta这些游戏中
角色的布娃娃效果十分真实
在上下楼梯时,每一步都会塔在台阶上


斜坡或者有碰撞物体的时候,站立的角色会弯腿
…显示全部这套系统叫locomotion (和布娃娃也不是一回事,ragdoll主要还是用来做无动画的人体碰撞)
正常的游戏只要判断一个虚拟碰撞胶囊体的底部位置和地面的碰撞即可
locomtion就涉及了各种状态下人的重心和双脚之间的关系

具体说unity里面这个叫foot ik
autodesk的解决方案叫humanIK 可以去搜索下
这套系统颇复杂,不是三言两语可以说清楚的,如果没有人物骨骼系统的了解,说不太清,可以自己去搜索下搜一下IK就行了,搞明白IK剩下的自己就推出来了。以前有个老游戏Operation Flashpoint,简单的把角色下肢缩放到地形高度,坡度不大时还好,坡度稍微大一些就穿帮了Foot IK

====================================================================

稍微说详细点吧。
单说FootIK本身原理挺简单:raycast到地面求交,加一个美术设好的offset,得到脚的位置,然后求TwoBone-IK,再调整下脚掌姿态。在走路动画中,标记出脚贴地的阶段,持续算这个。这样能做出一个demo效果。

但要让动作自然到GTA水准,对各种地形鲁棒,就会有各种问题了。

举个例子,在下楼梯或下坡时,除了下肢的IK链,pelvis甚至整个身体都可能被pull到向下移动,这时如何保证整体动作自然?如果是蹑手蹑脚或者蹲着下楼呢?等等这些要根据游戏、地图,具体实验才能知道。

GTA这样的质量的游戏,很难有哪个引擎或者哪个库能直接满足要求;要用也都是买源码和支持,自己修改的。更多的是需要实现者熟悉基础的理论,积累很多经验(trick),根据具体地图去验证、调整。在上古卷轴5中也有楼主说的那种效果,后来知道用的是foot I先解单边约束,一旦发生碰撞,就把碰撞的部位沿法向推回表面,然后解一下IK就可以了。这是物理引擎做的,建议题主调整一下自己的关键字,重新搜索。IK
通过定位较低的骨骼使较高的骨骼旋转,来调整姿势
像在UE4中在IK设置里填写脚底骨骼和对应的关节骨骼,以及腿长等一些参数就可以实现这效果如果只是实现,找引擎或者引擎插件手册更靠谱一点
原理的话,其实也很简单,说白了就是对地面做n条射线(有几条腿做几条,比如你做的是个蜈蚣精什么的。。。那计算量着实大)
获得法线和接触点位置,然后根据这两个参数对骨骼动画进行改变
但是说的容易,实现起来其实还蛮麻烦的。。。
非要自己实现的话,在开源源码里找吧,ue应该是有,ogre有没有不知道(应该是有)
unity好像物理引擎自带这个功能,具体我没试过。。。我做的都是2d游戏。。。3dmax里面有个东西叫动力学,给不同的物体加上相应的属性,可以模拟出一定的效果。例如我放一个长方体在地面上,设置刚体属性;其上方放一个长方形的面,设置cloth属性。给场景添加重力并开始模拟以后,平面就会下落,最终达到下面这张图里的效果游戏里应该也是通过设置这一些物理属性来实现真实效果的模拟的。

鲜花

握手

雷人

路过

鸡蛋

相关阅读

发布主题 官方QQ群 微博