CCDIK

描述如何访问并使用CCDIK骨架控制节点来设置并控制IK链。

Windows
MacOS
Linux

CCDIK(循环坐标下降逆动态学)骨架控制节点是一个轻量级的IK解算器(与FABRIK相似),通常用于驱动骨骼链。然而与FABRIK不同,CCDIK提供了定义角约束的功能,需要在解算中限制任意骨骼的旋转时较为实用。 

CCDIK节点可用于驱动如下所示的过程化动画: 

上方视频中使用了CCDIK节点属性的 解算器 部分并将角色的 根骨骼(Root Bone) 设为左肩。然后将 末端骨骼(Tip Bone) 设为角色食指上的最后一个数字。调整 执行器位置(Effector Location) 时,IK解算器将接管,链中的每块骨骼将基于定义的 每个关节的旋转限制(Rotation Limit Per Joints) 值来跟随。这些角限制可防止骨骼出现奇怪旋转,要实现需要的效果可能需要对值进行一些调整(以每根骨骼为基础)。  

输入和输出引脚

以下列出了 CCDIK 节点的可用 输入输出 引脚:

CCDIK_Node.png

引脚类型

描述

输入引脚

执行器位置(Effector Location)

指定末端骨骼的目标位置(如 执行器位置空间 设为 骨骼)。这将是来自目标骨骼的偏移,用作目标位置。

组件姿势(Component Pose)

要进行变换的输入姿势。

Alpha

一个范围为[0.0, 1.0]的浮点值,用作alpha值来确定由骨骼控制应用的变形的权重。如值为0.0,则将为输入姿势赋予完整权重;而值为1.0时,则会为控制计算的变形赋予完整权重。

输出引脚

组件姿势(Component Pose)

应用变换后的最终姿势。

节点属性

以下是使用CCDIK节点(可从 细节 面板中选用)时可用的属性: 

CCDIK_Details.png

选项

描述

执行器位置

(作为引脚)执行器位置(Effector Location)

是否将此属性显示为节点上的一个引脚。

执行器位置空间(Effector Location Space)

设置骨骼位置的坐标空间(场景空间、组件空间、父骨骼空间,或骨骼空间)。

执行器目标(Effector Target)

执行器变换空间(Effector Transform Space) 是一块骨骼,这便是要使用的目标骨骼。

解算器

末端骨骼(Tip Bone)

指定为链中末端骨骼(或最终骨骼)的骨骼。

根骨骼(Root Bone)

指定为链中根骨骼(或初始骨骼)的骨骼。

精确度(Precision)

执行器位置(Effector Location) 到最终末端位置差量的容差。

最大迭代数(Max Iterations)

所允许的最大迭代数(用于控制性能)。

从尾部开始(Start from Tail)

是否将轴绘制到调试关节旋转。

启用旋转限制(Enable Rotation Limit)

执行器位置(Effector Location) 到最终末端位置差量的容差。

每个关节的旋转限制(Rotation Limit Per Joints)

每根骨骼的对称旋转限制。索引0与 根骨骼 匹配,最后一个索引与 末端骨骼 匹配。

性能

LOD阈值(LOD Threshold)

此节点允许运行的最大LOD。

Alpha

Alpha输入类型(Alpha Input Type)

定义Alpha输入类型(浮点值、布尔值或动画曲线值)。

(作为引脚)

启用此项将 Alpha 属性作为引脚显示在节点上。禁用即可停止将其显示为引脚。

范例:按钮按压

下方视频中使用了CCDIK节点和一些蓝图,让角色按下墙上的按钮。 

下方动画蓝图的动画图表中使用了CCDIK节点,执行器位置从关卡中按键的位置进行驱动。如玩家在按钮的范围中并按下相应的键,则会混合到使用CCDIK节点的姿势,使角色到达执行器位置(按下按钮)。 

点击图片查看全图。

在下图中,我们将clavicle_l(左肩)指定为 根骨骼、index_03_l(左手食指上最后一个数字)指定为骨骼链的 末端骨骼。我们还定义使用 每个关节的旋转限制(Rotation Limit Per Joints) 部分来约束应用到每根骨骼的旋转量。 

CCDIK_Example_Details.png

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见