如何在 3Ds Max 中计算骨骼长度
How to calculate Bone Length in 3Ds Max
我正在创建一个脚本来帮助我加快装配工作流程。我正在尝试为分配给骨骼的助手创建一个自动大小调整。这样,较长的骨骼将拥有较大的助手,而较小的骨骼将拥有较小的助手。
我决定通过计算骨骼的长度来做到这一点,如下所示。
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" 循环中使用它,所以当我 select 多个骨骼时,使用 actionMan 到 select 其他元素是不可能的,因为它会造成 selection 的问题。
除了骨骼的 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]
我正在创建一个脚本来帮助我加快装配工作流程。我正在尝试为分配给骨骼的助手创建一个自动大小调整。这样,较长的骨骼将拥有较大的助手,而较小的骨骼将拥有较小的助手。
我决定通过计算骨骼的长度来做到这一点,如下所示。
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" 循环中使用它,所以当我 select 多个骨骼时,使用 actionMan 到 select 其他元素是不可能的,因为它会造成 selection 的问题。
除了骨骼的 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]