Проблема в том, что маркеры не указывают в правильном направлении, когда 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;
}
Единственное, о чем я могу думать, это то, что часть моего кода использует правые координаты, а часть — левые. передал?
Подробнее здесь: https://stackoverflow.com/questions/788 ... -clockwise