Как сначала масштабировать, а затем поворачивать экземпляр модели в libgdx

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