用过 PS 同学应该都直到液化工具,做一些变形、变扭处理还是挺管用的
那么在 Blender 中,3D版本的液化工具就是:Proportional Edit Mode 了,其实它是一个编辑模式
Proportional Edit Mode 直译为:按比例控制模式
我使用的是 Blender 2.83.4 版本的
这个编辑模式在:顶部工具栏的:
(目前 2.83.4 是在这个入口,以后 Blender 更新后可能会变的位置,Blender 的更新速度很快)
演示
以 Blender 中具有代表型的网格 猴子:苏珊 为例
使用 Proportional Edit Mode 来位移的效果
- 启用 “Edit Mode” (Tab 键)
- 选择面选择方式
- 启用 “Proportional Edit Mode” (O 键)
- 选中 苏珊 的两个瞳孔
我们按下 “G” 键(Grab) 移动,(鼠标滚轮可以控制液化拉伸应用范围)
可以看到中间有一个淡淡的圆圈是控制按比例拉伸的范围,也可以看到会变大、变小,因为用我滚轮鼠标控制了大小
关闭 Proportional Edit Mode 的位移效果
如果我把 Proportional Edit Mode 关闭了,直接移动这两个瞳孔,效果会不一样,具体如下:
可以看到启用与没启用 Proportional Edit Mode 的编辑效果很明显
Proportional Edit Mode 的平滑曲线
留意 Proportional Edit Mode 右边有个平滑变化曲线
默认是 Smooth 曲线,从图标就可以看出来它的变化率
这个变化率是用于启用 Proportional Edit Mode 时,中间的那个淡淡的白色圆圈的半径是控制的有效果范围,所有未选中的顶点 与 选中的顶点 的 距离 小于 白色圆圈的半径 都会进入控制范围。
Smooth 的效果我们看到了(曲线外部上也可以看出效果,其他曲线目测就知道效果了)
其中两个比较特殊,从英文名字上也可以看出效果:
- Constant - 恒定方式,意思不论按比例拉伸网格时,不论其他顶点是否与白色圆圈中心有多远,只要在白色圆圈内,都会同等控制的拉伸强度
- Random - 随机方式,这就会在拉伸时产生抖动,因为不论距离多远,都是随机拉伸强度
Constant 平滑模式
可以看到,如果我将白色圆圈放大到包括整个网格时的移动,都将相当远直接对整体对象的所有顶点的位移效果了
Random 平滑模式
在滚轮滚动控制白色圆圈大小的时候,可以看到都随机数值的抖动效果(随机种子变化,或是白色圆圈大小参数控制了 Perlin Noise 算法里的参数)
所有其他的平滑曲线方式总览
参考了:Blender 教程 7天入门blender 七集全 中 Day2 视频的 36:10 处,有介绍这种立方图的方式来查看变换率,是非常直观的
就是新建一张 Plane 平面,W键 Subdivision 来个5、6次,就差不多到这个细分的密集度了,然后选中中间的某个顶点,再用每个平滑曲线的方式来查看效果即可
旋转效果
位移效果上面已经看过了,那么现在看看旋转的效果
旋转效果的话,我们换个 Cube 网格来看效果会更叫的直观
处理一下 Cube 网格
- 先将 Cube 网格 Ctrl + R 切割成
- 选中 Pivot 点为 3D Cursor
- 再将 3D Cursor 放置在 Cube 右边
(记得开启 Proportional Edit Mode)
选中 Cube 顶部的网格面
然后 “R” 旋转 Cube ,滚轮控制白色拉伸圈大小,再一边控制旋转角度大小,可以看到效果非常不错:螺旋式拉伸、旋转
开启了 Proportional Edit Mode 的旋转
关闭了 Proportional Edit Mode 的旋转
所以 Proportional Edit Mode 开启后的效果是相当明显的
最后是缩放的效果
区别就不比较了,看看就好
Connected Only - 只对有链接关系的顶点做变化
倒回以 猴子苏珊 的网格为例
我们先选中鼻梁处的单个顶点(好像没有鼻梁)
这次我们将 “Connected Only” 勾上
再看看拉伸效果
可以看到,眼球没有跟着一起变换
因为子网格没有与我们选中的猴头盖的网格有链接上任何的顶点,所以眼球子网格布会有变换影响
Projected from View - 从 View 设计视图中投影下来编辑
将 “Projected from View” 勾上
再将 3D View 视图分两个窗口
将上面那个视图中从顶视图上观察
再拉伸看看效果
可以看到与拉伸控制的 3D View 的投影面(二维)中所有靠近白色圆心的点都拥有了相同的拉伸控制强度了
总结
什么时候呢用上呢?
Proportional Edit Mode 哪些地方可以用上呢?
在一些卡通风格的动作编辑里会用得比较多,用来实现动作夸张的大幅度动作时的扭曲、拉伸是有 feel 的
最典型的是:《Tom and Jerry》(猫和老鼠)的儿时卡通片用得非常多,还有很多国外的 3D CG 卡通电影业是非常的多,像《卑鄙的你》(小黄人那部),这些风格特别适合那种:多动症、疯狂、中二的卡通动画对象。
功能实现的猜测
虽然我没有去实现过类似的这类顶点控制的功能
但是目测可以有个大概的思路,功能算法不是很复杂,不过此类功能发明人很创新
实现思路
-
获取网格对象的 所有网格顶点 与 选中的顶点 距离 D D D
-
获取 白色圆的圆心的半径 R R R
-
将 D D D 和 R R R 的比值,作为 t = D / R t = D/R t=D/R
-
将 t t t 代入曲线变换计算,得出控制强度权重: W = C u r v e E v a l u a t e ( t ) W = CurveEvaluate(t) W=CurveEvaluate(t)
-
使用 W W W 作为变换控制参数的大小的插值控制
-
T d T_d Td是最终应用的变换参数值, T s T_s Ts是变换参数原始值
-
T d = W ∗ T s T_d=W*T_s Td=W∗Ts,其中 T T T代表 Transform 可以是 缩放(Scale)、旋转(Rotate)、位移(Translate),也就是我们变换矩阵常见的 TRS 矩阵