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

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

Сообщение Anonymous »

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

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

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

public Matrix4f getMatrix() {
return new Matrix4f().translationRotateScale(this.position, this.rotation, this.scale);
}
А для рисования ручек я использую

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

Matrix4f m = gameObject.getMatrix();
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»