Как сместить матрицу трехмерного преобразования? - PullRequest
0 голосов
/ 21 января 2019

Суть проблемы заключается в том, что я работаю над 3D-проектом, в котором используются отдельные инструменты для экспорта данных сетки и данных анимации.Эти инструменты имеют разные исходные точки.

  • Сетки экспортируются с 0,0,0 в качестве нижней выровненной по левому краю точки сетки AABB.
  • Анимации центрированы по x, z, а снизу выровнены по y.

Недавно я представил физический движок, который использует отдельный, полностью центрированный 0,0,0 жесткий корпус.пробел.

Я использую физический движок в качестве источника истины и пытаюсь соответствующим образом перевести различные исходные точки.

Мой текущий расчет положения вертика выглядит следующим образом:

  gl_Position = projection * view * model * joint * (centerOffset * vec4(position.xyz, 1));

У меня есть ряд матриц преобразования, применяемых к трехмерным вершинам.

  • position.xyz

    - исходные позиции vert

  • centerOffset

    - переводпреобразование, которое смещает вершины в их соответствующую позицию в 0,0,0 центрированной AABB.

  • joint

    - это матрица преобразования из экспортированной совместной анимации Blender.

  • model

    - это матрица положения и вращения мира

Проблема, с которой я сталкиваюсь при таком подходев том, что вершины теперь центрированы вокруг мировой позиции model правильно, но когда применяется совместная анимация, она искажается, потому что матрицы анимации joint смещены относительно + Y, а данные сетки центрированы на Y: 0

То, что я ожидал бы сделать здесь, это смещение матрицы joint, чтобы они находились в правильном диапазоне Y 0,0,0 центрированных вершин.

Я попытался умножить матрицу joint на матрицу преобразования со смещением по Y, но в итоге она сдвигает весь искаженный набор вершин на новое смещение, а не конкретное совместное преобразование.

По сути, мне нужна эквивалентная операция: войти в Blender и вручную переместить все соединения вниз по оси Y, чтобы они были по центру Y, а не выровнены снизу, а затем повторно экспортировать матрицы соединений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...