У меня есть touchRotationMatrix, который я делаю следующим образом:
Matrix.setIdentityM(identity, 0);
Matrix.rotateM(identity, 0, x, 0,1,0);
Matrix.multiplyMV(v, 0, identity, 0, v, 0)
Matrix.rotateM(identity, 0, y, 1,0,0);
Matrix.rotateM(identity, 0, y, v[0],v[1],v[2]);
Matrix.multiplyMM(touchRotationMatrix, 0, identity, 0, touchRotationMatrix, 0);
X и Y - нормализованные дельты вращения.
Это применяется к моей матрице модели следующим образом:
Matrix.multiplyMM(mModelMatrix, 0, mModelMatrix, 0,touchRotationMatrix,0);
Проблема здесь в том, что любое вращение, которое я делаю, происходит вокруг его собственных осей.
Позвольте мне проиллюстрировать, почему я не хочу этого:
Если я вращаюсь слева направо, это похоже на поворот головы, что хорошо. Если я сначала поворачиваюсь вверх, а затем поворачиваюсь слева направо, я в конечном итоге смотрю на пол или потолок. Это имеет смысл, потому что он вращается вокруг своих осей.
Мой вопрос: как мне сделать так, чтобы вращение х не происходило по своим осям?
Надеюсь, я ясен, любое руководство или помощь будут очень благодарны! Спасибо!
PS Я не эксперт ни по OpenGL, ни по LinearAlgebra.