[英]coordinates system problem with jogl
目前,我正在Jogl中开发一个应用程序(实际上是我的第一个应用程序)。 首先,我必须从.obj文件将模型加载到画布中(我设法这样做)。
接下来是我必须使用鼠标拖动事件在同一画布上绘制笔划,并且该笔划必须在茶壶的前面。(我使用GL.GL_LINE_STRIP)和(glu.gluUnproject以获取要绘制的坐标)
到此为止,我遇到了问题。 (该模型只是水平放置在x轴上的一根杆)
加载的模型的坐标似乎与mu鼠标光标点不同。 例如:我使用鼠标单击来确定光标所在的位置,也单击模型末端(一根杆),这将返回X值0.37599047216147075。 然后,我尝试查找杆模型的“最大顶点X”值(应为杆最右侧的顶点)。 它给我返回一个1.xxx值...靠近我的鼠标光标值的地方不存在。 我可以点击的最大值仅为0.6xxx。 知道为什么会这样吗?
您需要研究如何将鼠标事件给定的2D“视图空间”坐标转换为3D“世界空间”坐标,以便与模型数据进行比较。
该线程可能会有所帮助。
好吧,我尝试使用glu.gluUnproject,但是我不确定z值应该是多少。
public void calObjectCoor(GL gl, float mousex, float mousey, float z) {
float x = mousex, y = mousey;
gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
/* note viewport[3] is height of window in pixels */
realy = viewport[3] - (int) y ;
glu.gluUnProject((double) x, (double) realy, z, //
mvmatrix, 0,
projmatrix, 0,
viewport, 0,
wcoord, 0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.