maya骨骼绑定插件教程(Maya骨骼绑定基础与原理)
maya骨骼绑定插件教程(Maya骨骼绑定基础与原理)要纠正方向,需要执行以下两个步骤:虽然Maya会对齐局部旋转轴,但随着你创建的关节链(多跟关节连在一起称之为关节链)调整后,你的绑定将改变轴方向,或者在关节上留下旋转值。在图中,其中一个关节被移动了。注意局部旋转轴仍然与它们的原始方向对齐。关节通常被用来构建“骨骼”。关节的意义在于,它们可以变形一个“绑定”的模型。比如你将一个角色附加到一个骨架上时。当使用关节工具在视窗中的每次单击将创建一个关节时,会自动将它们放置到一个层级结构中,以父级开始,用子级结尾。关节工具(以及所有于关节相关的工具)可以在Skeleton菜单下找到。正如可以从上面的Skeleton菜单图片中看到的,有许多操作可以在关节或者骨骼上执行。比如,Reroot Skeleton将重新父级化层次结构,因此选中的关节是新的父节点。这是关节的局部(旋转)轴指向的方向。在绑定中,关节的方向是非常重要的。如果关节的方向不对,它可能会
又到了整理归纳总结的时间。本文的核心还是围绕骨骼绑定基础与原理以及流程,不会过于讨论蒙皮。中间涉及到的一些关键词不会加入一些图形学的定义,一些特别学术性的定义比较难翻译成通俗易懂的语句去表达,如有遗漏还请见谅。仅作为辅助理解整个Maya绑定的逻辑出现,有兴趣的可以自己去深入了解。
1骨骼动画
骨骼动画是模型动画的一种(另外一种是顶点动画),包含了骨骼和蒙皮。模型是由mesh组成的,一段段骨骼之间相互连接组成骨架(连接处称之为关节),通过改变骨骼的朝向和位置来生成动画。蒙皮是指把Mesh的顶点附着在骨骼上,并且每个顶点可以被多个骨骼控制。
2关节
关节通常被用来构建“骨骼”。关节的意义在于,它们可以变形一个“绑定”的模型。比如你将一个角色附加到一个骨架上时。当使用关节工具在视窗中的每次单击将创建一个关节时,会自动将它们放置到一个层级结构中,以父级开始,用子级结尾。
关节工具(以及所有于关节相关的工具)可以在Skeleton菜单下找到。正如可以从上面的Skeleton菜单图片中看到的,有许多操作可以在关节或者骨骼上执行。比如,Reroot Skeleton将重新父级化层次结构,因此选中的关节是新的父节点。
这是关节的局部(旋转)轴指向的方向。在绑定中,关节的方向是非常重要的。如果关节的方向不对,它可能会旋转到错误的方向。要显示所选关节的“局部旋转轴”,可以使用显示/变换显示菜单。
虽然Maya会对齐局部旋转轴,但随着你创建的关节链(多跟关节连在一起称之为关节链)调整后,你的绑定将改变轴方向,或者在关节上留下旋转值。在图中,其中一个关节被移动了。注意局部旋转轴仍然与它们的原始方向对齐。
要纠正方向,需要执行以下两个步骤:
1. 冻结转换(确保所有旋转为0),不会改变Translate的值。
2. 使用旋转关节(在Skeleton菜单中)对齐关节。
所有轴的手柄点都会沿着X方向。
可以注意到的是,末端关节仍然与世界空间对齐,要调整它
1. 单独选择末端的关节
2. 激活旋转关节到世界
3IK手柄
IK表示逆向动力学。IK手柄工具可以让你从“子级”的一端拉一个关节链,而不是旋转“父级”关节。选中该工具后,你可以单击任意两个关节来创建IK手柄。
在选项中需要更改的两个默认设置:
1. 将当前解算器更改为旋转平面解算器(Rotate-Plane Solver)。
-这允许我们用一个对象来控制关节链的旋转
-非常适合控制肘部和膝盖
2. 打开粘性(Sticky)
-保持IK手柄不动,当我们移动父级关节时
-在移动臀部时可以保持双脚在地面上
4添加控制
首先我们看看转换继承。这是指当一个对象继承或接收另一个对象的新值时,它们是被父子关系在一起的父子对象。重要的是,“子级”会从“父级”继承值。
下图,两个立方体都不是另一个的父级。观察它们的Translate的值。
现在大立方体是小立方体的父级。这个小立方体似乎向右“移动了3个单位”,这使得它能够保持在原本的位置。
但如果我们把小立方体归零,它就会移动到父级立方体的中心。
重要的是,如果父级有值,子级将只继承父级的值。如果父级的值为零,那么子级的值不会有任何变化。
5旋转顺序
Maya每次计算一个旋转轴,以获得最终的方向值。如果旋转顺序是XYZ(这是默认顺序),那么首先计算X 然后计算Y 最后计算Z。从层次结构的角度来看,你可以在图中看到,X就像是三个轴的“子级”。当它旋转时,其他两个的手柄不会改变。当Y(是X的父级)旋转时,可以看到X的手柄沿着Y轴旋转。最后,当Z(Y的父级)旋转时,X和Y也跟着旋转。
旋转顺序位于属性编辑器中基于当前选择的物体。你可以找到旋转顺序在Transform Attributes下拉部分。当前读取示例图像中的“pcube3”。
旋转顺序问题的典型例子如下图。当角色在场景中移动时,旋转重心会面向角色的不同方向是一个很常见的行为。但是,使用默认的XYZ旋转顺序,旋转角色(旋转Y)会导致Z轴不沿着Y旋转。
你可以在第二张图中看到Z没有移动,现在X几乎与Z对齐了。这意味着角色不能倾斜侧面旋转。这就产生了万向节死锁。那么将旋转顺序设置为XZY可以解决这个问题。因为Y现在在顺序的最后(也就是父级),所以X和Z总是跟着走,就不会有万向节死锁(简单来说,就是当你旋转一个轴向时同时也影响了其他轴向的数值,不规则的旋转产生)的问题。
不管你使用的是Object方式还是World的方式旋转,最终的计算方式还是Gimbal(欧拉旋转的计算方式)。
万向节
万向节有三个坐标轴X Y Z。坐标轴之间是父子关系,并互相垂直。父级轴会带动子级轴转动。
欧拉角和万向节的关系
欧拉角内部就是使用的万向节的规则。
万向节死锁
万向节的特点是轴与轴之间存在父子关系,每个轴对另外两个轴的影响各不相同,也正是因为这个特点导致出现了一些缺陷。所以欧拉角的万向节死锁问题,是由于欧拉旋转定义本身造成的。这种造成一些旋转自由度的缺陷也被就被称为死锁。
6Maya绑定工作流程
1. 定位关节链
2. 冻结变换关节链
3. 旋转关节正确对齐关节旋转
4. 命名你的关节
5. 放置控制器
6. 对齐控制器
7. 确保控制器的值为零
8. 删除控制器上的历史记录
9. 命名控制器
10. 把绑定骨架连接到控制器上。
11. 把所有的控制器放到正确的层次结构中
12. 隐藏动画师不应该触及的任何东西(比如关节,IK手柄,定位器,变形器等)
13. 锁定和隐藏不需要的通道
7
层级和命名
在层次结构中对节点进行父子关系和打组,这可以让你避免双重转换(位移)。试着将相似的节点分组在一起。比如将控制器分组在一起,或将变形器分组在一起等等。除非它们特别需要被其他对象继承。
开始分组节点后,需要确保对它们进行合适的命名。如果你使用图层,确保也给它们命名。
8实用程序节点和表达式
表达式往往更容易去创建,如果你理解Mel语言。实用的程序节点可能需要更长的时间,也更复杂的计算。但是实用工具节点不怎么需要编程知识。这意味着你可以比较容易的去做一些相对困难的效果。
Maya仅在输入变化时执行实用程序节点的预编译代码,实用节点式非常稳定的。
表达式是在动画的每一帧中进行计算。然而有时是需要表达式的,因为你可能需要做一些工具节点不能够实现的事情。比如默认的Maya实用工具节点无法执行三角函数,像计算余弦和正弦,去找到三角形的角。
一般来说,使用实用节点提供稳定和快速的绑定的优先选择。
9约束和直接连接(属性关联)
约束和直接连接看上去具有相同的效果,但它们之间也存在一些显著的差异。主要的区别是你可以约束一个节点到一个以上的“父级”。这种也是可设关键帧的关系 不像直接连接。另一个重要的区别是,约束具有世界空间效应,而直接连接读取实际值驱动程序对象。
示例图中,可以看到两个大的立方体被单个Group控制旋转。pCube3小立方体确实旋转了,因为约束超出了层级结构 并直接对齐到它的目标对象。使用“直接连接”的pCube4小立方体只有在其目标对象“值”改变时才会改变,也就是说只有当你选择组里面的pCube2并且旋转时,pCube4才会被旋转。
10总结
绑定是一项有挑战的事情,需要足够的耐心和好奇心。即使你觉得已经尝试了所有的方法来解决一个问题。当你不断深入学习后,可能又能掌握新的解决问题的其他方式和知识。除了那些常用的方法去绑定角色,车辆或者生物。但总会又有一些新的事物没有什么参考。那个时候你就得靠自己的知识储备和创造力去解决问题。