Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1213960748
DFT
2008-06-20 15:19
2008.07.20
изменение размеров родителя


15-1212545940
Slider007
2008-06-04 06:19
2008.07.20
С днём рождения ! 4 июня 2008 среда


15-1212677917
Slider007
2008-06-05 18:58
2008.07.20
С днем рождения ! 5 июня 2008 четверг


2-1213704407
tey
2008-06-17 16:06
2008.07.20
работа со строкой


11-1191870302
LazyBob
2007-10-08 23:05
2008.07.20
List View непойму никак..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский