gpt4 book ai didi

scripting - 从名称或 MaxScript 中皮肤列表的索引中获取骨骼 ID

转载 作者:行者123 更新时间:2023-12-04 06:00:45 25 4
gpt4 key购买 nike

我有一个骨骼名称(例如 Bone002 ),我想获取它的骨骼 ID(不是皮肤列表中的索引,而是所需的 ID,例如在 skinOps.SetVertexWeights 中)。

我知道反向操作如下所示:

skinMod = $.modifiers[#skin]
boneListIndex = (skinOps.GetVertexWeightBoneID skinMod v w)
local boneName = skinOps.GetBoneNameByListID skinMod boneListIndex 0

但是如何获得 boneID ?我已经有 boneListIndexboneName .

我假设所有骨骼都有唯一的名称。

最佳答案

您使用的是什么版本的 3dsMax?我记得这里的文档相当困惑。在这种情况下,Bone_ID 和 vertex_bone_integer 可以互换 - 我刚刚在一个简单的网格上进行了测试, SkinOps.GetVertexWeightBoneID 和 SkinOps.SetVertexWeights 使用相同的骨骼索引。

如果要按名称定位,则需要按名称匹配索引。用你的骨骼名称创建一个数组:

boneNames = for i=1 to (skinOps.GetNumberBones skinMod) collect (skinOps.GetBoneName skinMod i 0)

然后你可以使用你最喜欢的搜索方法并检索索引,一个简单的 findItem 在这里工作得很好:
boneIndex = findItem boneNames "Bone002"

请记住, skinOps.GetBoneName 功能有点无聊;最后一个参数用于确定是否返回实际节点或其名称 - 无论设置如何,都只会返回名称字符串。这意味着,如果皮肤中有两个名称相同的骨骼,则必须找到一种巧妙的方法来获取适当的节点。

关于scripting - 从名称或 MaxScript 中皮肤列表的索引中获取骨骼 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com