Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru





 в самое начало


demo.design
3D programming FAQ



ОСВЕЩЕНИЕ
5.4. Освещение по Гуро

Здесь делаются такие предположения:

  • Ks = 0 (то есть грань не отражает свет, а только рассеивает)
  • освещенность меняется по грани линейно

Ну, а раз освещенность меняется линейно - так же, как и координаты текстуры u, v - можно использовать точно такую же процедуру, как для старого доброго текстурирования, только вместо двух координат текстуры u, v нам надо будет интерполировать одну величину - освещенность. В вершинах она считается по той же самой формуле (с учетом Ks = 0, конечно),

intensity = ambient + amp * cos(N, L).

Здесь за N в вершине берется как раз нормаль к объекту в вершине (vertex normal), посчитанная так, как описано в 5.2.

То есть, для написания процедуры освещения по Гуро достаточно написать три строчки расчета освещенности (обозначать ее будем c) в вершинах грани по приведенной здесь формуле и заменить в своей процедуре текстурирования u на c, выкинув при этом v (оно нам не нужно, нас интересует только c). Чтобы добавить освещение по Гуро в текстурирование, надо, соответственно, добавить полностью скопированный с расчета u расчет c. Что делать с полученным по цвету найденного через (u, v) в текстуре пиксела и освещенности с, описано в соответствующем пункте.

Заметим, что освещение по Гуро - это не линейная интерполяция освещенности по изображению грани на экране, как это обычно принято и понимать и делать. Освещенность меняется линейно по трехмерной грани, а вовсе не по ее проекции. То есть, вообще говоря, здесь мы тоже должны учитывать перспективу. Правда, линии одинаковой освещенности все равно будут прямыми, но выглядеть картинка, освещенная по Гуро с учетом перспективы, будет все же покорректнее.



 в самое начало


demo.design
3D programming FAQ














helloworld.ru © 2001-2021
Все права защищены