2009-10-07 2 views
0

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

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

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

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

+0

Привет, вы решили? – elect

ответ

0

Вам необходимо изучить, как преобразовать координату 2D «пространства зрения», заданную с событием мыши, в координату трехмерного «мирового пространства», которая имеет смысл сравнить с вашими данными модели.

This thread может быть полезно.

0

Ну, я пробовал использовать 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); 
} 
Смежные вопросы