перевод из 3д проекции в 2д
Есть сцена с классической камерой проекция + вид + модель.
Задача: отрисовка объекта (текста) не в пространстве 3д мира, а в пространстве 2д экрана.
Пример: выделяем объект в 3д проекции, и текстовая информация должна рисоваться в проекции Орто как-бы рядом с выделенным объектом.
Сейчас приходиться рисовать текст в 3д пространстве и поворачивать лицом к камере. Не то.
Предполагаю, что именно через матрицы можно перевести координаты текстового блока в экранные. Спасибо.
Ответы (1 шт):
Автор решения: zhigarartem
→ Ссылка
Чтобы переключиться из 3d в 2d:
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluOrtho2D(0, width, height, 0);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
// Отрисовка текстуры с текстом.
Перевод оконных координат (x,y) в пространственные (x,y,z) и обратно:
Gl.glGetIntegerv(Gl.GL_VIEWPORT, viewport);
Gl.glGetDoublev(Gl.GL_PROJECTION_MATRIX, projection);
Gl.glGetDoublev(Gl.GL_MODELVIEW_MATRIX, modelview);
// Из 2d в 3d
Glu.gluUnProject(winX, winY, winZ, modelview, projection,
viewport, out objX, out objY, out objZ);
// Из 3d в 2d
Glu.gluProject(objX, objY, objZ, modelview, projection,
viewport, out winX, out winY, out winZ);