【问题标题】:How to calculate Bone Length in 3Ds Max如何在 3Ds Max 中计算骨骼长度
【发布时间】:2018-04-24 00:28:52
【问题描述】:

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

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

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 选择其他元素,因为它会产生选择问题。

【问题讨论】:

    标签: 3dsmax maxscript


    【解决方案1】:

    除了骨骼的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]
    

    【讨论】:

    • 你能给我写一段代码供参考吗(两种情况都适用)?谢谢
    • 非常感谢!你帮了大忙。
    猜你喜欢
    • 2011-09-01
    • 2016-12-27
    • 2016-07-31
    • 2020-08-18
    • 2014-03-29
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多