【Maya绑定】FK骨架拉伸实现思路

您所在的位置:网站首页 ik和fk哪个是1 【Maya绑定】FK骨架拉伸实现思路

【Maya绑定】FK骨架拉伸实现思路

2023-03-22 14:32| 来源: 网络整理| 查看: 265

此笔记仅为个人平时积累之用,描述并非专业,如有错误恳请指正

前言

我们在上一节【Maya绑定】三点式IK骨架的比例拉伸的实现思路中,实现三点式IK关节的拉伸。IK关节的控制器只有一个(在wrist处,呈现的是父约束),因此我们计算了各段骨长实现拉伸效果。 FK关节拉伸三段控制器,三段控制器的transform节点中的局部变换矩阵Matrix记录了控制器的自己的变换信息,因此不必计算各段骨长。 在这里插入图片描述

如何移动控制器 我们可以将父级控制器的定位器locator**(定位器是不包含旋转的改变)**去定位子关节的位置,其Matrix传递给子控制器的parentOffsetMatrix,这样在拉伸的关节的过程中,定位器在移动,控制器也会跟随移动,但不会影响显性的变换。 parentOffsetMatrix为maya2020新特性,为隐性变换。为什么要专门制作FK拉伸机制 控制器使用父约束之类可以改变driven位置,为什么还专门去添加这种看似无意义的举动。 为了方便说明,可以看两种示例: 情况1,直接使用控制器进行拉伸: 在这里插入图片描述 情况2,使用增加的属性stretch比例因子: 在这里插入图片描述 这两个例子,区别在于控制器是否保持归零状态。 如果一段关节已经增加了控制器,但想要修改关节位置,正常思路是移动关到预期位置,控制器解除约束,控制器冻结,重新约束。第二种情况则有效避免了这样的情况发生,并且能实现不同比例模型的复用。上一节的目的也是如此。 关节和其控制器层级关系

在这里插入图片描述 ↑上图大纲选中内容展示的是关节以及关节的定位器。关节的定位器定位了其子关节相对于父关节的相对位置,因此我们把定位器命名为“关节名称_OFF_LOC”代表了子关节的相对位置(记两段原始骨长为L1,L2) 在这里插入图片描述 ↑上图大纲选中内容展示的是控制器的层级关系。控制器与关节是点约束关系,但我们在节点编辑器中将控制器的rotate与关节的rotate进行相连。也就是说关节原则上是根据控制器移动和旋转。

伪代码实现 # stretch the bone shoulder_FK.scaleX = shoulder_FK_CTRL.stretch * shoulder_FK.scaleX elbow_FK.scaleX = elbow_FK_CTRL.stretch * elbow_FK.scaleX # translate the off_loc shoulder_FK_OFF_LOC.transX = shoulder_FK_CTRL.stretch * L1 # at elbow elow_FK_OFF_LOC.transX = elbow_FK_CTRL.stretch * L2 # at wrist # fill the parentOffsetMatrix of the Ctrl elbow_CTRL.parentOffsetMatrix=shoulder_FK_OFF_LOC.matrix wrist_CTRL.parentOffsetMatrix=elbow_FK_OFF_LOC.matrix

可使用的节点:multDoubleLinear



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3