咨询电话:400-810-1418服务与监督电话:400-006-6572
×

提交成功
我们会有专属的教育顾问联系您,请保持手机畅通。

如何在Maya里面基于骨骼绑定制作具有自动碰撞的裙子

发布时间:2020-05-22 09:48:49

跟大家分享一篇如何在Maya里面基于骨骼绑定制作具有自动碰撞的裙子,一起来看下吧!

0.gif

<以裙子为例,裙子会随著物体的碰撞并改变>

作者简介: 刘俐伶 (Liling Liu)现任于Amazon Game Studios担任Technical Artist,正制作一款 AAA-Crucible游戏,毕业于旧金山艺术大学游戏发展所,曾经在Universal creative, Kinosys Films,Chaosmonger Studios等其他公司担任于角色绑定师,本身也是一位 Freelance Rigger参与其他的游戏和动画电影的专案。

由于能够使用两者物体之间的碰撞来产生互动,让动画师能够快速方便制作动作,并且可以将物体输出到游戏引擎。个人的想法是利用这样的技术来制作一个裙子的绑定,在互相的碰撞让裙子能够自然产生变化。首先要有两个物体,在这教学使用一个长条和简单裙子模型(如图)。

1.webp.jpg

一、概念原理

当物体一快碰撞到物体二之前,让物体二开始受到变动。首先要在两者物体之间製作一个圆圈,利用圆圈简单表示为裙子的构造,让物体一移动的过程在这圆圈上找到物体一和这圆圈的距离和角度,并利用这角度使的物体二产生碰撞。物体二也要计算和圆圈的距离是多少才能开始受到碰撞。

二、具体操作

(1):计算物体一与圆圈之间的距离

首先在每一个物体上新增骨头,并製作一个圆圈(如图),

2.png

由于要得知物体一在移动时与圆圈的距离是多少,创立一个Locator (loc_hand_sp)  ,将放置在长条物体的骨头底下,利用这个 Locato r 与圆圈上的点做计算。在计算之前,必须先知道圆圈上的点目前是处于多少 。

创立一个Locator(loc_cuv)加选上圆圈线,到 Constrain > Motion Paths > Attach to Motion Path。在Motion Path Attribute可以看到U Value被锁起来,这时候可以解除锁定,在移动U Value可以看到Locator在圆圈里面移动。

接著计算loc_hand_sp和圆圈线(Cuv_skirt)的点:

1.在 Maya里面到 Windows> Node Editor,在编辑区新增 NearestPointOnCurve 节点;

2.loc_hand_spShape的worldPosition连结至该节点的position Cuv_skirtShape的 worldspace连结至该节点的curve;

3.再将此结点的参数输出至U Value的值。

3.png

如果你对Maya的节点不太熟悉,可以到 Autodesk 官网上得知资讯

https://knowledge.autodesk.com/support/maya/learnexplore/caas/CloudHelp/cloudhelp/2019/ENU/Maya-LightingShading/files/GUID-DA9707D2-8A0D-4911-A010-8274C57D3FD3-htm.html

(2):计算物体二( 裙子) 与圆圈之间的距离

在Maya里面到:Create > Measure Tools > Distance Tool。将裙子的骨头与圆圈线上的locator(loc_cuv)测量距离。

4.png

(3) :判断物体二 ( 裙子)和圆圈之间距离产生变化

• 在Node Editor新增2个multiplyDivide计算距离多少内开始进行变动,此两节点的计算改为Divide,距离线(DD_L_skirt_02_DistShape)连结至multiplyDivide1上的input2,此节点上的input1设为 1,再将此节点连结上multiplyDivide2的input1,将复制input1的值到input2。

• 得出此数值之后,要判定此数值是否介于距离之内,如果数字是在距离内,可产生变动,如果不是,那就保持原地。创立一个remapValue,这个节点可以放置以判断出的数值和自己设定的最大和最小的数值,如果数字介于之间就开始产生计算出结果,如果数值不是介于之间就输出想要的最大和最小的值,在这边最小值以 0,最大值以1输出。将multiplyDivide2输出至remapValue的值,并更改最低数值。

5.png

(4) :计算物体的角度并产生碰撞

创立一个新的multiplyDivide,将刚刚remapValue的值输出此节点(multiplyDivide3)的input1再将此节点输出至裙子骨头上,等等要使用multiplyDivide3的input2作为物体的角度判定。如果角度超过一个数值,那就可以开始转动裙子的骨头。对每一个裙子的骨头重复上述步骤。

6.png

角度判定:

• 创建两组骨头,并将各自的底端骨头放置在 locator上(如图),

7.webp.jpg

在将其中一组的骨头(直的) 放置在另一组底下,由于骨头旋转值会自动转到骨头方向,将此数字複製到骨头的旋转上,这样就可以得知此两组骨头的角度为多少。

• 在骨头(斜的)加上IK Handle并将它放置在圆圈线上的locator。

• 利用之前所创立的loc_hand_sp加选上骨头(直的)做aim constraint,将 world up type改为Object rotation up并将另一组骨头名称放上。根据此locator的轴向,更改 up vector and world up vector 数值。只要两个相碰再一起此角度就归0,继续在超过角度,就进行裙子骨头转动。

• 创立clamp节点,将刚刚骨头(直的)连上clamp的inputR,并在MaxR调整数值,此角度如果介于此就输出为0,否则为1。将clamp值输出multiplyDivide3的input2。

• 由于为了让自己方便能够调整角度可以旋转为多少,再新增一个multiplyDivide,将 multiplyDivide3输出是此点,然后就可以在相关控制器连接上input2。

关于在Maya里面基于骨骼绑定制作具有自动碰撞的裙子的分享就到这里了。

来源:Thepoly公众号

作者:刘俐伶

软件使用: Maya