Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
2-1213883070
Beer_Hunter
2008-06-19 17:44
2008.07.20
Mail Merge


2-1213898401
ProofNA
2008-06-19 22:00
2008.07.20
Работа с принтером


2-1214108702
WebSQLNeederrr
2008-06-22 08:25
2008.07.20
Выход из цикла, но не выход из процедуры? Как?


2-1213864974
webpauk
2008-06-19 12:42
2008.07.20
Преобразование переменных


2-1213697117
Муслик
2008-06-17 14:05
2008.07.20
Копирование текста