Maya绑定:小球挤压拉伸变形详细绑定(晶格、簇、测量工具、节点编辑器)
做一个小球拉伸变形的绑定,效果如下图
目录
一 基本变形
1 创建骨骼
2 创建晶格
3 晶格和骨骼蒙皮
4 修改权重
5 创建簇
二 控制器
1 创建Ik手柄
2 上层控制器
控制器 控制 Ik 手柄:P
3 底部控制器
控制器 控制 骨骼:P
4 中间控制器
控制器 控制器 簇:父子约束
三 挤压拉伸变胖变瘦
1 创建测量工具
Ik手柄 控制 1个locator:点约束
骨骼根关节 控制 另1个locator:点约束
2 节点编辑器 测量距离
3 节点编辑器 算挤压拉伸倍数
4 节点编辑器 控制小球高矮
5 节点编辑器 算小球胖瘦倍数
6 节点编辑器 控制小球胖瘦
四 收尾
总控制器
骨骼 控制 簇:P
骨骼 控制 中间控制器:P
整理层级
隐藏不需要的东西
一 基本变形
1 创建骨骼
创建小球
右视图,X吸附创建骨骼,回车
2 创建晶格
变形--晶格 选项
*不勾选 使用局部模式:没有很明确的控制界限,只是一个渐变 (多数时使用)
应用
3 晶格和骨骼蒙皮
冻结变换
选中骨骼和晶格
蒙皮--绑定蒙皮
测试 、复位
4 修改权重
窗口--常规编辑器--组件编辑器--平滑蒙皮
上面4个点全部受到joint2 的影响
选中晶格上 黄圈这4个点,把 joint2 (上面那个关节) 的权重都改为1
测试、复位
同理,下面的8个晶格点,全部受到join1的影响
测试、复位
5 创建簇
选中晶格中间那层的4个点,变形--簇 选项
勾选 相对模式 (忽略父层级位移:父物体怎么移动,簇不会对模型产生影响))
测试、复位
二 控制器
1 创建Ik手柄
IK手柄可以通过位移来控制骨骼的旋转,同时稍后要做拉伸
测试、复位
2 上层控制器
创建一个圆,作为控制器
吸附中心、冻结变换、清除历史
控制器 控制 Ik 手柄:P
测试、复位
3 底部控制器
冻结变换、清除历史
控制器 控制 骨骼:P
测试、复位
4 中间控制器
吸附中心、冻结变换、删除历史
控制器 控制器 簇:父子约束
(注意 先选控制器 、再选簇)
测试、复位
三 挤压拉伸变胖变瘦
1 创建测量工具
创建--测量工具--距离工具
随便点击2个点 , 出现两个locator
点约束 选项,不勾选 保持偏移
Ik手柄 控制 1个locator:点约束
骨骼根关节 控制 另1个locator:点约束
测试、复位
2 节点编辑器 测量距离
展示--勾选 形状
窗口--节点编辑器
如果打开窗口有节点,可以选中节点,用红框的工具 隐藏 (注意不要用delete,delete是删除)
把测距离这3个shap添加进来
双击图中 测量的节点,可以看到 右边属性栏 显示 距离是4
就是 这两个locator之间的距离现在是4,就是球体正常情况高度是4 (记住这个数)
3 节点编辑器 算挤压拉伸倍数
挤压拉伸的倍数 = 两个locator实时变化的距离 / 4
挤压拉伸的这个倍数 后面要直接 赋值给 小球的缩放倍数
在空白处 点击tab键盘,输入选择 乘除节点
双击 乘除节点,右侧 属性那里,运算:相除,输入2 写 4
点击 乘除节点前面的小圈,输入1--输入1X
出来一根线,连接到距离shape 右面的小圈,单击,选 距离
双击 乘除节点,就可以看到连接成功了
挤压拉伸的倍数 = 两个locator实时变化的距离 / 4
4 节点编辑器 控制小球高矮
看下 骨骼向上拉伸,就是小球高矮 需要对Y轴进行缩放,记住 缩放Y
把 joint1 添加进来
点击 乘除节点 右面的 小圈--输出--输出X
出来一条线,连接到 joint1 左边的小圈,缩放--缩放Y
连好了
关闭节点编辑器,测试拉伸、复位
测试压缩、复位
5 节点编辑器 算小球胖瘦倍数
胖瘦的倍数 = 挤压拉伸倍数的倒数 = 4 / 两个locator实时变化的距离
再来一个乘除节点,相除,输入1 写4
点击两下距离shape 让下面的属性 距离 显示出来
点击,输入2--输入2X--连接到 距离
连接好了
胖瘦的倍数 = 挤压拉伸倍数的倒数 = 4 / 两个locator实时变化的距离
6 节点编辑器 控制小球胖瘦
小球的胖瘦 受到 缩放X 和 缩放Z 共同控制
输出--输出X 连接到 joint1的 缩放X 和 缩放Z
关闭 节点编辑器、测试、复位 (下面的根骨骼joint1 控制的小球 下面实现了变瘦,上面还没实现)
测试、 复位
现在要对小球上半部分 就是joint2 调整缩放倍数
joint2 的 缩放X、缩放Z
把joint2 添加到节点编辑器,把刚刚算出的胖瘦倍数,输出X,连给joint2的 缩放X和 缩放Z
关闭节点编辑器,再测试下、复位
(现在小球上下的宽度一致了)
四 收尾
总控制器
创建一个总控制器,改成黄色,冻结变化、删除历史
总控制器 控制 上中下三个控制器:P
移动总控制器 发现 有点问题
骨骼 控制 簇:P
再移动总控制器就没有问题了
拉伸小球时,中间的控制器 没有跟着往上走
骨骼 控制 中间控制器:P
再测试下
整理层级
下面选中的 (除了总控制器)打组
打组完
再把总控制器 和 刚刚打的组 再打一个最大的组,起名字 ball
(这样的话,比如 当场景里有多个球时,不会乱)
隐藏不需要的东西
把晶格、测量工具、两个locator、簇 ctrl + H 隐藏
(如果想取消隐藏,先在大纲里找到隐藏的物体,shift + H)
显示--显示--全部 可以把所有隐藏的物体显示出来