poniedziałek, grudnia 22, 2008

Gouraud = Pseudo Phong :-)

Gdy ponad 8 lat temu napisałem cieniowanie Gourauda ;-) strasznie to przeżywałem ;-)
Byłem dumny jak paw ;-)



Teraz w ramach zabaw z Java'ą przełożyłem sobie mój stary program w C na Java'ę :-)
Niestety prędki nie jest ;-)

Cieniowanie Gourauda to coś w stylu cieniowania Phong'iem. Dla oryginalnego cieniowania Phong'a należałoby liczyć, a dokładniej przybliżać wektor normalny dla każdego elementu powierzchni, i na podstawie tego wektora wyliczać oświetlenie punktu.
Ja trochę oszukuje, liczę wektor normalny tylko dla wierzchołków każdego z trójkątów z których zbudowany jest model, po czym wyliczam mniej więcej znormalizowaną odległość wektora normalnego ;-) od wektora oświetlenia [powinienem kąt], i ta odległość jest mapowana na kolor, a kolor jest liczony w oparciu o funkcję sinus ;-) Dzięki temu każdy wierzchołek trójkąta ma swój kolor, a wszystkie inne punktu otrzymują swój kolor poprzez interpolację między wartościami dla wierzchołków.
Z tego co pamiętam, do takiego sposobu dotarłem metodą prób i błędów.

Szczerze przyznam, że wykłady z analizy matematycznej na których mieliśmy elementy geometrii analitycznej były bardzo przydatne ;-) Zresztą, akurat wtedy gdy mieliśmy te wykłady wpadłem na pomysł napisania tego ;-)

Osoby o wolnych komputerach przepraszam, użyjcie może AdBlocka do zablokowania appletu.


Podobne postybeta
Nie taka Java wolna jak ją opisują...
Pierwsze próby z WebGL
WebGL - dalsze zabawy
Chrome, Firefox, IE9 preview i cieniowanie Gouraud'em w JavaScript
A takie tam ;-)