【问题标题】:Update child bone matrices in Unity skinned mesh renderer在 Unity 蒙皮网格渲染器中更新子骨骼矩阵
【发布时间】:2020-04-21 02:57:23
【问题描述】:

我正在统一手动更新蒙皮网格渲染器中的一些骨骼变换,但这些骨骼的子节点在下一帧之前是错误的,我需要它们进行一些操作。

当我修改世界位置时,我想我可以通过使用父变换和子本地矩阵来计算更新后的子姿势,但我不知道如何。

类似:

    foreach(var bone in myskmesh.bones)
    {
        bone.transform=bone.parent.transform*bone.localtransform;    //I know it doesn't exist
    }

编辑: 也许这是一个开始:

    foreach(var bone in myskmesh.bones)
    {
        bone.position = bone.parent.TransformPoint(bone.localPosition);
    }

【问题讨论】:

    标签: unity3d


    【解决方案1】:
    void UpdateArmatureChilds(Transform startbone)
    {
        for (var i = 0; i < startbone.childCount; i++)
        {
            var childbone= startbone.GetChild(i);
            childbone.position = startbone.TransformPoint(childbone.localPosition);
            childbone.rotation = startbone.rotation * childbone.localRotation;
            UpdateArmatureChilds(childbone);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 2015-04-03
      • 2013-07-20
      • 2017-05-05
      • 2021-12-18
      • 2012-02-12
      • 1970-01-01
      • 2021-12-16
      • 2019-07-23
      相关资源
      最近更新 更多