繁体   English   中英

慢跑协调系统问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM