forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Немного про нормали (http://forum.boolean.name/showthread.php?t=211)

pax 16.10.2005 19:41

Вложений: 1
Нормали - это пермендикуляры к поверхности в любой точке. В Blitz'е нормали имеет каждый вертекс модели.

Вы спросите, а зачем они нужны? Сперва может показатся что они ненужны вовсе... но это на первый взгляд.

На самом деле нормали влияют на освещение модели:
- если нормаль направлена прямо на источник света, то эта часть модели освещается полностью (освещенность в этой точке максимальна);
- если нормаль находится под углом к источнику то возмодны два случая:
1. Угол нормали больше 0 но меньше 90 градусов - в этом случае освещенность меняется по мере изменения угла т.е. чем больше угол тем меньше освященность;
2. Угол нормали больше или равна 90 градусов - в этом случае модель освещается глобальной подсветкой (в Blitz'е она задается оператором AmbientLight red#,green#,blue#).

Таким образом правильное направление нормали влияет на качаство освещения модели.

В Blitz'е нормали можно изменить двумя методами:
- возложить определение нормалей на Blitz - это осуществляется оператором UpdateNormals mesh;
- вручную - осуществляется оператором VertexNormal surface,index,nx#,ny#,nz#. Пример использования этого оператора:

Код:

For k=1 To CountSurfaces(Mesh)
        Surf%=GetSurface(Mesh,k)
        For i=1 To CountVertices(Surf)
 *VertexNormal(Surf%,I,nx,ny,nz)
        Next
Next

Также можно экспортировать геометрию вместе с нормалями из программ трехмерного моделирования, что избавит вас от принудительного изменения направления нормалей.

Пример прикрепленный к этому сообщению демонстрирует влияние нормалей на освещение сфер: зеленая сфера имеет правильное направление нормалей (т.е. перпендикулярно к поверхности), а нормали оранжевой сферы направлены в точку, из которой начал движение источник света.

impersonalis 16.10.2005 20:18

Ну нормаль не совем перпендикуляр - это вектор, перпендикулярный плоскости.

pax 16.10.2005 20:29

Вот нашел определение нормали в БЕС'е:

Цитата:

НОРМАЛЬ (от лат . normalis - прямой) к кривой линии (поверхности) в данной ее точке, прямая, проходящая через эту точку и перпендикулярная к касательной прямой (касательной плоскости) в этой точке.


Часовой пояс GMT +4, время: 06:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot