做一个小球拉伸变形的绑定,效果如下图


目录
[一 基本变形](#一 基本变形)
[1 创建骨骼](#1 创建骨骼)
[2 创建晶格](#2 创建晶格)
[3 晶格和骨骼蒙皮](#3 晶格和骨骼蒙皮)
[4 修改权重](#4 修改权重)
[5 创建簇](#5 创建簇)
[二 控制器](#二 控制器)
[1 创建Ik手柄](#1 创建Ik手柄)
[2 上层控制器](#2 上层控制器)
[控制器 控制 Ik 手柄:P](#控制器 控制 Ik 手柄:P)
[3 底部控制器](#3 底部控制器)
[控制器 控制 骨骼:P](#控制器 控制 骨骼:P)
[4 中间控制器](#4 中间控制器)
[控制器 控制器 簇:父子约束](#控制器 控制器 簇:父子约束)
[三 挤压拉伸变胖变瘦](#三 挤压拉伸变胖变瘦)
[1 创建测量工具](#1 创建测量工具)
[Ik手柄 控制 1个locator:点约束](#Ik手柄 控制 1个locator:点约束)
[骨骼根关节 控制 另1个locator:点约束](#骨骼根关节 控制 另1个locator:点约束)
[2 节点编辑器 测量距离](#2 节点编辑器 测量距离)
[3 节点编辑器 算挤压拉伸倍数](#3 节点编辑器 算挤压拉伸倍数)
[4 节点编辑器 控制小球高矮](#4 节点编辑器 控制小球高矮)
[5 节点编辑器 算小球胖瘦倍数](#5 节点编辑器 算小球胖瘦倍数)
[6 节点编辑器 控制小球胖瘦](#6 节点编辑器 控制小球胖瘦)
[四 收尾](#四 收尾)
[骨骼 控制 簇:P](#骨骼 控制 簇:P)
[骨骼 控制 中间控制器: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)

显示--显示--全部 可以把所有隐藏的物体显示出来