个人中心 退出登录

为什么游戏出Bug时人物的动作都是展开双手变成T?

2020-10-26

  你有在游戏中遇到过这样奇怪的事情嘛?突然有一天,可能是你游戏中的某一个角色,也或许时全部角色都以奇怪的 T 型姿势站立,它们面无表情、两腿并拢、双臂向两旁伸展,好如十字架一般。

为什么游戏出Bug时人物的动作都是展开双手变成T?

  说实话小时候的自己第一次遇到这样的情况时,感觉还有些吓人,游戏的角色仿佛突然间都接受到了什么感召一般,面无表情地做着同样的动作。然而事实上,就好像《走近科学》节目的发展一般,这个姿势也并没有人们想象中的那么神秘,并不是什么宗教的启示、也并非受到了黑客攻击,这个姿势是任何角色建模工作的基础,被人们俗称为 T-pose。

为什么游戏出Bug时人物的动作都是展开双手变成T?

  而出现上面这种情况的原因,大多是因为游戏角色模型缺失了,比如说可能被电脑里的安全软件在“清理垃圾”的时候删掉了,导致游戏角色只能以建模时的默认动作呈现。

为什么是 T?

  但是为什么绝大多数游戏里的角色在建模时的默认动作都是 T 呢?而不是 X、Y 之类的其他动作呢?

  事实上,在角色建模时的确没有什么规定要求角色一定要举着双手摆成 T 字型,建模师想摆成什么样子都是可以的。但是建模师们之所以大多选择使用 T-pose,最重要的原因是为了方便自己的工作,T-pose 这种姿势算是前人总结出来的经验。

为什么游戏出Bug时人物的动作都是展开双手变成T?

  为何 T-Pose 是最方便建模师工作的动作呢?这就要先解释一下在 3D 动画或游戏中角色模型的设计原理。

  在我们看到的 3D 动画背后,其角色模型实际上是由无数个点组成的,而角色的每一个动作,都要通过移动相当数量的点才能够完成,但是要同时控制这么多点一个一个全部移动到特定位置是很困难的,因此建模师设计出了模仿人类骨骼的虚拟骨骼,被称作 Skeleton。

为什么游戏出Bug时人物的动作都是展开双手变成T?

  有了骨骼之后,模型上的点就成了依附在骨骼上的组合,角色的控制也便从以点为单位进化到了以一节骨骼为单位,角色的动作就要比一个一个点去移动方便得多了,只要控制一段骨骼移动,就可以带动骨骼周围的点,从而完成角色的动作。

  但是以一节一节骨骼为单位还是太繁琐了,想象一下我们人类自己的动作就可以知道,我们做任何动作都不会以骨骼为单位来控制身体,往往都要同时带动多个骨骼才能完成。

  这时候聪明的建模师根据人体又发明出了绑定(Rigging)这一设计。绑定的原理就和机械设计的原理相似,建模师在骨骼之间加入一些控制器,将单个单个的骨骼由控制器连接起来,其功能类似于人体的关节,这时候只要移动控制器就可以使多个骨骼同时移动,以完成角色复杂的动作了。

为什么游戏出Bug时人物的动作都是展开双手变成T?

  而在完成以上这些设计之后,建模师还要给上面的“点、骨骼与绑定”刷权重,什么是权重呢?再拿身体举例,我们一块骨头所连接的关节可能不止一个,比如说手臂上有连接着肩关节、肘关节、腕关节等等,在角色模型里也是如此,同一个点可能同时被多个骨骼控制、同一节骨骼也可能同时被多个绑定控制,因此我们要分配这些骨骼和绑定对同一个点或骨骼的控制权,也就是谁先谁后,谁占主导。

为什么游戏出Bug时人物的动作都是展开双手变成T?