Форум: "Media";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизOpenGL, система координат Найти похожие ветки
← →
MyxaMop © (2007-07-04 14:03) [0]написан компонент (OpenGL+D7) от TCustomControl
суть в том, что в компоненте в RealTime направление оси Z становиться противоположным (т.е. получается правая тройка векторов). А в DesignTime все нормально (!). Этот же код кидаешь в приложение - тоже все номально...
Да в добавок, функции лицевых сторон (Faces) поверхностей (gluCylinder, gluShpere) меняются с задними, т.е. освещены "внутренности", а не "внешности" ... Инициализация минимальна и достаточна.
Явно, где-то что-то изменило "направление"...
Вот в чем штука. ВОПРОС
1. Если инициализация одинакова - в чем прикол
2. Если прикола нету - как задать направление оси?
Спасибо, что, хоть, прочитали вопрос...
← →
Dib@zol © (2007-07-04 14:29) [1]
> 1. Если инициализация одинакова - в чем прикол
> 2. Если прикола нету - как задать направление оси?
Скорее всего (1)
А развернуть ось можно заюзаф glscalef(1, 1, -1); Ось Зет развернётся к лесу завдом к вам передом :) А лицевые/нелицевые грани можно менять так: GlFrontFace(GL_CW) или GL_CCW. А уж какая у тя там инициализация - разбирайся сам. Телепатор барахлит.
← →
MyxaMop © (2007-07-04 15:21) [2]с OpenGL - 4 года дружу
GlFrontFace - первое, что пробовал - не катит... да вообще игнориоует
а вот до glscalef(1, 1, -1) не додумался (уставший) - спасибо Dib@zol
вот это думаю выход, но с поворотом может быть небольшой артефакт - мелочь
а вот с освещением все по-прежнему... еще варианты?
инициализация урезанная
light_ambient : Array [0..3] of GLfloat = (0.4, 0.4, 0.4, 1.0);
glEnable(GL_DEPTH_TEST);
glEnable (GL_NORMALIZE);
glEnable (GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @Light_Ambient);
glLightfv(GL_LIGHT0, GL_POSITION, @light_pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, @light_dir);
← →
Dib@zol © (2007-07-04 15:58) [3]
> glLightfv(GL_LIGHT0, GL_POSITION, @light_pos);
> glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, @light_dir);
Может light_pos слишком далеко??? Или light_dir не в ту сторону указывает?
Попробуй визуализировать этот вектор с помощью GL_LINES + glVertex3fv, увидишь куда он направлен и проблема реально станет проще.
← →
MyxaMop © (2007-07-04 16:19) [4]EEEEEEEEEEEEEEEEEEEEEEEEEEpt
Спасибо Dib@zol!
смекнул к чему ты клонишь...
савсем мозги у меня засахарились... Правда оказалось в том что для источника освещения - левая тройка векторов, а для проекции - правая... поэтому и получилось, что сумма векторов нормалей полигонов и освещения была нулевой... В данном ракурсе вопрос исчерпан
осталось тока понять, почему Z реверс произошел...
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.051 c