проблема системы координат с Jogl - PullRequest
0 голосов
/ 07 октября 2009

В настоящее время я разрабатываю приложение на Jogl (фактически, мое первое приложение). Сначала мне нужно загрузить модель на холст из файла .obj. (Мне удается это сделать).

Далее я должен использовать событие перетаскивания мышью, чтобы нарисовать обводку на тех же самых канвах, и если обводка должна быть перед чайником. (Я использую GL.GL_LINE_STRIP) и (glu.gluUnproject, чтобы получить координаты для рисования на)

До этого момента у меня были проблемы. (Модель представляет собой просто стержень, лежащий горизонтально по оси x)

Координаты загруженной модели не совпадают с точкой курсора мыши. Например: я использую щелчок мыши, чтобы определить, где находится мой курсор, а также щелкаю в конце моей модели (стержень). Это возвращает mi значение X 0.37599047216147075. Затем я пытаюсь найти значение максимальной вершины X модели стержня (это должна быть вершина в самой правой части стержня). он возвращает мне значение 1.xxx ... которое не близко к значению моего курсора мыши. И максимальное значение, на которое я могу нажать, составляет всего лишь 0.6xxx. Есть идеи, почему это так?

Ответы [ 2 ]

0 голосов
/ 08 октября 2009

Я пытался использовать 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);
}
0 голосов
/ 07 октября 2009

Вам необходимо выяснить, как преобразовать двухмерную координату "пространства обзора", заданную событием мыши, в трехмерную координату "мирового пространства", которая имеет смысл сравнивать с данными вашей модели.

Эта тема может быть полезна.

...