Главная страница
    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.45 MB
Время: 0.042 c
2-1214166864
psa247
2008-06-23 00:34
2008.07.20
Выполнение запроса с цифрами


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


2-1213959404
Alex_C
2008-06-20 14:56
2008.07.20
Вопрос по GetObjectProp


15-1212697734
No_Dead
2008-06-06 00:28
2008.07.20
Автоподстройка заблокир.


2-1214204601
lewka-serdceed
2008-06-23 11:03
2008.07.20
Дополнительеая информация о файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский