Обновление детских костных матриц в Unity skined me sh renderer - PullRequest
0 голосов
/ 05 апреля 2020

Я вручную обновляю некоторые преобразования костей в скиновом мендрейере в единстве, но потомки этих костей ошибочны перед следующим кадром, и они мне нужны для некоторых операций.

Поскольку я изменяю положение в мире Я думаю, что могу вычислить обновленную дочернюю позу, используя родительское преобразование и дочернюю локальную матрицу, но я не знаю как.

Что-то вроде:

    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);
    }

1 Ответ

0 голосов
/ 20 апреля 2020
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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...