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