Главная страница
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.023 c
15-1212656826
андр.
2008-06-05 13:07
2008.07.20
MS SQL 2000 TRANSACTION


2-1213973775
lewka-serdceed
2008-06-20 18:56
2008.07.20
Замена символа в строке другим символом


15-1212736550
Ega23
2008-06-06 11:15
2008.07.20
Есть ли такая приблуда?


2-1213696529
JS
2008-06-17 13:55
2008.07.20
Округление


15-1211970166
Randew
2008-05-28 14:22
2008.07.20
Вредно ли мышке постоянно "светится"?