2017-06-18 88 views
0

我有一个关于在opengl es中使用Android Studio实现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被丢弃。为什么我们在实现弧球时不考虑投影矩阵,尽管投影变换是针对对象完成的?

回答

0

据我所知,你使用arcBall来计算你将应用于你的对象的旋转角度。当你想旋转一个物体时,你想让它从世界的起源(世界矩阵)或视点(视图矩阵)旋转。

投影矩阵并不代表物体的实际位置。你最喜欢的位置越小,你会得到你不想让深度对你的旋转产生影响。

因此,您从视点或原点计算旋转,然后让投影矩阵在渲染时完成其工作。