Не знаю, можно ли считать
94Д •^IStW' Гпап-а 1П Г^ват 1л тош!-
Не знаю, можно ли считать это практическим примером работы с цветным освещением, однако писать программу было довольно интересно. Смысл основной части этого приложения — переместить камеру, задать новое освещение и воспроизвести макет на экране. Давайте выделим несколько минут и посмотрим, как все это делается. Однако перед тем, как заниматься программой, взгляните на Рисунок 10-8, который поясняет принцип ее работы.
Рисунок. 10-8. Получение стереоизображения
Сначала макет освещается красным светом, а камера переносится в точку А, в которой воспроизводится изображение для левого глаза. Затем макет освещается зеленым светом, а камера переносится в точку В, где воспроизводится изображение для правого глаза. Если просматривать изображение с красным фильтром на левом глазу и зеленым — на правом, то левый глаз будет видеть изображение из точки А, а правый — из точки В. Ниже приведен фрагмент кода пассивного цикла приложения, в котором все это происходит:
BOOL CMainFrame::Update() {
m_bPhase = !m bPhase;
double d = 1.0; // Расхождение
double cz = 10; // Положение камеры по оси z
C3dVector vo;
if (m_pCur3hape) (
I iRRTHhIP UrrrrHJUUIUIA ГРОТЯ "ЧКЙ:-; 9А^
m_pCurShape-»GetPosition (vo) ;
} else {
vo = C3dVector(0, 0, 0) ;
} C3dVector cv;
if (m_pDirLight && m_p3cene) { if "(itiJaPhase) {
m_pDirLight-»SetColor (1, 0, 0) ;
cv = C3dVector(-d, 0, -cz') ;
} else {
m_pDirLight-»SetColor(0, 1, 0);
cv = C3dVector(d, 0, -cz);
} m_pScene-»SetCameraPosition (cv) ;
C3dVector vl = vo — cv;
m_pScene-»SetCameraDirection (vl) ;
}
// Обновить трехмерное окно if (m_wnd3d.Update(1)) { ЬМоге = TRUE;
}
return ЬМоге;
i
Вектор текущего положения объекта (vo) используется для вычисления вектора направления камеры (vl), чтобы векторы для левого и правого видов сходились в центре объекта.
Подобный подход к реализации стереоскопического изображения обладает тремя недостатками:
• Поскольку левый и правый виды выводятся по отдельности, изображение заметно мерцает.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий