如何计算3Ds Max中的骨骼长度

时间:2017-11-10 17:50:14

标签: 3dsmax maxscript

我正在创建一个脚本来帮助我加快操作工作流程。我正在尝试为我分配给骨骼的助手创建一个自动大小调整。这样,较长的骨头会有更大的助手和更小的骨头更好的助手。

我决定通过计算骨骼的长度来做到这一点,如下所示。

xyz1 = point3 $.pos.x $.pos.y $.pos.z --takes position from first bone
actionMan.executeAction 0 "40194" --moves to the next bone in chain
xyz2 = point3 $.pos.x $.pos.y $.pos.z --takes position from second bone

intensity = distance xyz2 xyz1 --calculate vector length

actionMan.executeAction 0 "40193" --moves to the previous bone in chain
loc = point()
loc.size = intensity*0.5 --defines the size of the helper
loc.position = $.position

有没有更简单的方法呢?因为我必须在“for”循环中使用它,当我选择多个骨骼时,使用actionMan选择其他元素是不可能的,因为它会产生选择问题。

1 个答案:

答案 0 :(得分:0)

除了骨骼的length属性(有没有理由不使用它?),你可以得到第一个骨骼的孩子,并获得它的距离。也就是说,如果您选择了链的顶部父骨骼:

for b in #()+$ where isKindOf b BoneObj collect b.length

这也将包括最后一个骨骼。或者通过测试父子距离:

for b in #()+$ where isKindOf b BoneObj and b.children.count > 0 collect distance b b.children[1]