当你在游戏里给角色换装备时,新装备总是“嗖!”地一下瞬间替换掉旧的,你几乎看不到游戏人物“穿上装备”的动作。不过现在,佐治亚理工的研究人员提供的一种模型,可以让虚拟人物在游戏里实现“穿衣服”的动作。
游戏中那些飙车飞驰,枪火弥漫,房屋爆破的场景给人感觉真的是High爆了。但你通常不会在游戏中见到一些平常生活的小细节,比如抽烟、接吻、以及……穿衣服。
如果算上MOD,《上古卷轴》里你几乎可以拥有无尽的装备,但你从来看不到角色“穿上衣服”的动作。图片来源:《上古卷轴》
“穿衣服”的镜头少,因为技术达不到
无论是《暗黑破坏神》、《侠盗猎车手》 、《上古卷轴》还是《巫师》,你都很少真的看见游戏角色们“换衣服”这样人性化的动作。实际上,当你给游戏人物换上更好的装备,穿上更拉风的外装,或者更换上某些MOD制作的绅士衣服时,那些衣服和裤子都是“嗖!”的一下出现在了游戏人物的身上,而之前的衣服则以某种不知名的方式,在那一瞬间进入了人物的物品库。
就算我们已经在3D特技效果和动画电影的制作里取的了相当的进展,我们也很少能看到一个3D动画的角色或者某个模拟游戏的人物“换衣服”的整个动作。你可能完全想象不到,要让僵硬的角色动态模型和仿真布料进行物理互动,在计算机上是多么难以实现。
究其原因,要么是因为技术上太难实现于是放弃了,要么是由于模型不到位让效果看起来非常的垃圾(或许两者都有?)。而目前做不出比较真实的穿衣动作模型,主要是由于3D建模里的“衣服”和“角色”不是同一种类型:“衣服”一般源于物理建模;但“角色”是基于人体建模制作的。两者的互相作用会使模型变得很复杂。
不过,在最近发布的研究里1,佐治亚理工的研究员们正在寻求解决这种在电子屏幕上展现“穿衣服过程”的方法,从而在屏幕上展现出更好的互动。他们最近就开发出了一种能够让3D动画角色独立控制四肢来穿上外套和其他衣服的算法模型。
“在动画电影里你看到的最接近穿衣服的事情就是英雄们披着披风了,但这仍然是很简单的设计,因为穿披风其实并不涉及很多角色和衣服之间的物理接触,“佐治亚理工研究员,论文的共同作者刘凯伦说道,“这是我们特别想要强调的问题,因为合成这样的场景需要包含两种完全不同物理系统的相互作用。”
3D动画《大圣归来》里,孙悟空和他拉风的披风。但披风和人物的身体接触很少,因而比较容易实现。图片来源:电影《西游记之大圣归来》
“衣服”该怎么“穿”?
穿衣服是人类社会日常活动中最常见的活动之一,但穿衣服并不简单。一个孩子得花上三四年才能熟练掌握穿衣服的技巧。在现实生活里,人们学习穿衣服的挑战主要在于,肢体需要自我协调,来处理柔软且易变性的物体(衣服)。综合起来,学习的难度不算低。
在计算机里,也不容易。
你也肯定在动画里看到过,当角色的手臂移动时,衣服的袖子和胳膊上许多又小、又奇怪的变化。衣服就像头发和水一样,是很难被动画实体化的。一般来说,衣服由物理原理来捕捉,这样布料就会像现实生活里那样反应和变化。而不同的是,角色人物的运动的和动作一般来说是由人体学模型来创建的。想让这样的两个系统相互反应比较有难度。
研究人员提供了一种解决方法。“最困难的部分在于如何计算出控制角色的算法。”刘说道,“虚拟角色需要根据衣服的反应作出肢体运动的正确决策,这样才能准确的到达衣服模型的开口位置。”
模型的虚拟角色正在穿裤子。别问我裤子中间的突起是怎么回事……(算法模型在特定动作下造成的材料形变,才不是里面有一个隐形的东西呢!)图片来源:参考资料[1]
这个解决方法是在“衣服”的模型上设计一个“开口”,当通过开口的时候,就让衣服和衣服包裹下的身体相互作用。研究人员使用了一系列限定的“主要动作”,比如说把手和脚穿过衣服的开口,然后结合当时衣服的状态,在一些动作比较关键的瞬间设置相应的算法路径。这些“主要动作”可以根据不同风格的衣物来组合成不一样的运动顺序。利用前馈和反馈控制机制,一个“穿衣控制器”被用来处理每个“主要动作”。
这个“穿衣控制器”设置了一项路径来达到目标动作,同时会在必要的时候基于模拟布料的实时状态做连续不断的局部调整。研究人员表示,这个模型能够使用在不同的服装类型上,包括外套、短裤、长袍以及背心。并且控制器能很好地分辨不同衣服的网格分辨率,这能让衣物模拟器能够更有效的整合不同的衣服活动。另外,他们还展示了这个算法能同样教会一个虚拟角色帮另一个虚拟角色穿衣服。
虚拟角色穿衣服实拍。图片来源:参考资料[1]
也教机器人“穿衣服”
目前为止,佐治亚理工学院的研究人员正在打算将这项“穿衣技术”用于3D电影和游戏里。也许下次换装备的时候,你能真的看到角色“穿上”新的装备。虽然有些人可能会觉得这项功能有些鸡肋,但这项技术仍然会帮助一些追求代入感的游戏和模拟游戏更好地展现游戏的真实性。
而长远来看,他们的研究成果也许能教会真实的机器人识别他们周围世界的微小差别。
现今,无论是自动工厂里的机器人,或者无人驾驶的汽车,机器人会尽量避免和周围的东西产生冲突。但如果有一天,机器人需要穿上一件T恤,那它总得需要和T恤发生接触。
“想象你正在穿一件T恤,”刘解释道,“在某种度上你需要理解你和衣服的这种接触,并利用从接触中获得的信息来正确判断如何沿着正确的路径移动手臂。”
“如果我们在做动画绘制,那么模型就比较简单,因为现实中的有些东西可以被简化。不过如果你想让真的机器人做一些现实中的事情,”刘说,“那这项任务的性质就更困难了,因为我们将在一个非常有限的现实空间里处理一个高度可变的物体。”
如果这种方法能帮助一个3D角色穿上一件模拟的T恤,也许未来,机器人也可以运用同样的方法帮助残疾人和老年人穿衣。
参考文献
[1] Alexander Clegg, Jie Tan, Greg Turk, C. Karen Liu, Animating Human Dressing