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
Cieniowanie Gourauda w JavaScript :-)
Brak komentarzy:
Prześlij komentarz