我有一个关于使用 Android Studio 在 opengl es 中实现 arcball 的问题。
在计算完旋转轴后,我应该通过渲染管道将轴反转回对象空间,以便可以在对象空间中应用旋转。
这部分可以写成:
obj_rotateAxis = normalize(vec3(inverse(mat3(camera->projMatrix) * mat3(camera->viewMatrix) * mat3(teapot->worldMatrix)) * rotateAxis));
但是,我听说正确的形式应该是:
obj_rotateAxis = normalize(vec3(inverse(mat3(camera->viewMatrix) * mat3(teapot->worldMatrix)) * rotateAxis));
其中 projMatrix 被丢弃。为什么我们在实现轨迹球时不考虑投影矩阵,尽管对对象进行了投影变换?