Главная страница
    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.044 c
2-1213780489
lewka-serdceed
2008-06-18 13:14
2008.07.20
Выделение в ListBox


15-1212508777
Nic
2008-06-03 19:59
2008.07.20
Теория игр : задачи


15-1212588461
data
2008-06-04 18:07
2008.07.20
Подскажите, как работать с битами в Оракле?


15-1212655691
Alkid
2008-06-05 12:48
2008.07.20
Planner


2-1213613675
EgorovAlex
2008-06-16 14:54
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский