Получение местоположения костного матрикса для визуализации отдельных сеток в этом месте? - PullRequest
0 голосов
/ 17 июня 2019

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

Я попробовал взять Vector4f (0,0,0,1) и использовать LWJGL2 Matrix4f.trandform (mat, vector4f, dest), где mat был матрицей, взятой из файла анимации, а vector4f был заявленным выше, чем dest был новый Вектор, который он произвел, это то, что я использовал.

при использовании работающего с GL11 материала для рисования линии и точки отображаются в правильном месте [см. GIF 1 https://imgur.com/a/z19R264], я заметил, что мне пришлось разделить значения x, y, z на 16 в для того, чтобы они были правильного размера, иначе они должны быть большими (это нормально).

Рендеринг оружия и оружия движется с анимацией, но он не рендерится в правильное местоположение, а его анимация, например, когда перемещение головы влево-вправо при перемещении предмета также будет слегка двигаться вверх и вниз, как рисунок арки.

 screenPos = new Vector4f(0,0,0,1);

 Matrix4f mat  = ((ModelSMDBase)getMainModel()).theModel.body.currentAnim.frames.get(((ModelSMDBase)getMainModel()).theModel.body.currentAnim.currentFrameIndex).transforms.get(child.ID);

Matrix4f.transform(mat, screenPos, screenPos);

float x2 = screenPos.getX()/16,
 y2 = screenPos.getY()/16,
 z2 = screenPos.getZ()/16;

Ожидается, что элемент будет отображаться в том месте, где находится кость, и у него не возникнет проблем после анимации, в действительности результат будет отображаться в неправильном месте.

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