【发布时间】:2011-05-04 13:01:51
【问题描述】:
六个月以来,我一直在努力解决这个问题,并找到了一个可行的解决方案,但我就是不知道如何让我的模型完全按照我的意愿行事。我正在为 iPad 渲染一个带有轨迹球旋转实现和缩放/平移功能的 3D 模型,尽管转换代码将与桌面 OpenGL 的代码相同。目前,用户可以通过点击模型来改变模型的旋转中心。旋转中心发生变化,但原点保持静止,这导致模型远离用户触摸屏幕的位置。我想做的是允许用户触摸模型并使模型保持静止,但让它将原点移动到用户触摸的位置。我不确定执行此操作需要哪些转换或转换顺序。当前的转换顺序是:
glPushMatrix();
glTranslatef(pan.x, pan.y, 0);
glMultMatrixf(mat); //this is my rotation/scale matrix I get from my arcball class
glTranslatef(-origin.x, -origin.y, -origin.z);
//draw model
glPopMatrix();
知道需要进行哪些更改才能使原点而不是模型移动吗?
【问题讨论】: