如何创建 Maya Nurbs 曲线以匹配关节链?
How can I create a Maya Nurbs curve to match a joint chain?
我有一个曲折的关节链——所有的旋转轴都被使用了。我正在尝试从中创建一条与关节路径相匹配的 Nurbs 曲线。理想情况下,我还可以指定 CV 的密度和曲线的阶数。曲线创建选项运气不佳。
如有任何帮助,我们将不胜感激!我主要在 Python.
工作
廉价的解决方案是遍历骨骼,获取它们的位置,然后从它们创建一条 1 阶(线性)曲线。
def joint_positions(j):
pos = [cmds.xform(j,q=True, t=True, ws=True)]
children = cmds.listRelatives(j, c=True) or []
for child in children:
pos.extend(joint_positions(child))
return pos
joints = joint_positions('joint1')
cmds.curve(d = 1, p=joints)
这给了你一个在每个关节处都有一个结的曲线。然后,您可以使用 fitBSpline
命令的某种组合将其重新采样为更平滑的形式,and/or rebuild
命令以更规律地对其采样。您可以使用 UI 以交互方式试验这些值,以找到适合您的应用程序的值,然后在您知道要查找的内容时将它们烘焙到脚本中。在高于 1 的度数中没有一个单一的、完美的、数学上纯粹的答案,所以你基本上是在盯着最适合你的应用程序的答案。
我有一个曲折的关节链——所有的旋转轴都被使用了。我正在尝试从中创建一条与关节路径相匹配的 Nurbs 曲线。理想情况下,我还可以指定 CV 的密度和曲线的阶数。曲线创建选项运气不佳。
如有任何帮助,我们将不胜感激!我主要在 Python.
工作廉价的解决方案是遍历骨骼,获取它们的位置,然后从它们创建一条 1 阶(线性)曲线。
def joint_positions(j):
pos = [cmds.xform(j,q=True, t=True, ws=True)]
children = cmds.listRelatives(j, c=True) or []
for child in children:
pos.extend(joint_positions(child))
return pos
joints = joint_positions('joint1')
cmds.curve(d = 1, p=joints)
这给了你一个在每个关节处都有一个结的曲线。然后,您可以使用 fitBSpline
命令的某种组合将其重新采样为更平滑的形式,and/or rebuild
命令以更规律地对其采样。您可以使用 UI 以交互方式试验这些值,以找到适合您的应用程序的值,然后在您知道要查找的内容时将它们烘焙到脚本中。在高于 1 的度数中没有一个单一的、完美的、数学上纯粹的答案,所以你基本上是在盯着最适合你的应用程序的答案。