Вращение LWJGL и JOML иногда происходит по часовой стрелке, иногда против часовой стрелки.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Вращение LWJGL и JOML иногда происходит по часовой стрелке, иногда против часовой стрелки.

Сообщение Anonymous »

Я создаю конструктор сцен в LWJGL. Объекты на сцене имеют позиции и вращения. Как и у большинства создателей сцен/моделистов, у меня есть цветные маркеры, чтобы показать ориентацию объектов. У меня типичная установка: красные точки указывают в положительном направлении x, синие — в положительном направлении z.
Проблема в том, что маркеры указывают в неправильном направлении. Я приложил скриншот, показывающий проблему. Куб справа имеет вращение 0, 0, 0 и дескрипторы правильные. Куб слева имеет вращение 0, 30, 0. Меня смущает, почему синяя ручка повернута на 30 градусов по часовой стрелке, а сетка на 30 градусов ПРОТИВ часовой стрелки?
[img]https:/ /i.sstatic.net/e8PHLyRv.png[/img]

Я вычисляю вращение куба с помощью

Код: Выделить всё

public Matrix4f getLocalMatrix() {
// I update the position, rotation and scale directly, so I recalculate the matrix every time.
return this.localMatrix.translationRotateScale(this.position, this.rotation, this.scale);
}
А для рисования ручек я использую

Код: Выделить всё

Matrix4f m = gameObject.getLocalMatrix();
gizmos.drawRay(gameObject.position, m.positiveZ(new Vector3f()));

...

public void drawRay(Vector3f start, Vector3f direction) {
glBegin(GL_LINES);
glVertex3f(start.x, start.y, start.z);
glVertex3f(start.x + direction.x, start.y + direction.y, start.z + direction.z);
glEnd();
}
Я использую простой вершинный шейдер, не думаю, что это проблема,

Код: Выделить всё

layout (location=0) in vec3 inPosition;
layout (location=1) in vec2 texCoord;

out vec2 outTextCoord;

uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;

void main() {
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(inPosition, 1.0);
outTextCoord = texCoord;
}
Униформа настроена правильно (я предполагаю). Для modelMatrix установлено значение gameObject.getLocalMatrix()
Единственное, о чем я могу думать, это то, что часть моего кода использует правые координаты, а часть — левые. передал?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -clockwise
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»