#model #libgdx #rotation #instance #scaling
#Модель #libgdx #вращение #экземпляр #масштабирование
Вопрос:
Мне нужно масштабировать экземпляр модели (куб размером 1x1x1) по оси y, а затем повернуть его вокруг оси z. Таким образом, в основном это должно выглядеть как луч, который вращается посередине. К сожалению, что бы я ни делал, вращение всегда выполняется перед масштабированием, и результатом является дорогая форма. что я получаю и чего я хочу
instance.transform.setToScaling(JUMP_GATE_SIZE, JUMP_GATE_SIZE * 5, JUMP_GATE_HIGHT);
instance.transform.setTranslation(x, y, 0);
rotationMatrix.setToRotation(zVector, r);
instance.transform.rotate(rotation);
Есть идеи, как это сделать?
Я пытаюсь масштабировать куб до bride между 2 местоположениями в пространстве.
Ответ №1:
Решение было найдено моей женой, которая является математиком. Порядок операций с матрицей является ключевым. В основном все применяемые матричные операции применяются к модели в обратном порядке во время операции рисования. Это означает, что, поскольку я выполняю операцию поворота последней для матрицы, она фактически сначала применяется к модели. Код, который работает
instance.transform.setToRotation(zVector,r);
instance.transform.scale(JUMP_GATE_SIZE, JUMP_GATE_SIZE * 5, JUMP_GATE_HIGHT);
instance.transform.setTranslation(x, y, 0);