2011-09-02

Skalowanie - zmianie w kodzie trójkąta

Trójkąt to taki wstęp do implementacji siatki.

W kodzie nic nie zmieniłem. W przypadku trójkąta zamiast transformować promień do współrzędnych lokalnych wszelkich obliczeń dokonujemy dla normalnych wierzchołków i współrzędnych wierzchołków w współrzędnych świata. Dzięki temu unikamy zbędnych transformacji. Korzystamy tutaj z faktu, że wszystkie punkty trójkąta leżą w jednej płaszczyźnie. Płaszczyzna jest innym obiektem dla którego moglibyśmy zrezygnować z transformacji świat-obiekt i obiekt-świat. Swoją drogą płaszczyzna z czasem przestanie być przeze mnie używana, jest to dość nienaturalny obiekt.

Same zaś współrzędne i normalne trójkąta są pamiętane we współrzędnych lokalnych. Każda zmiana w macierzy transformacji (przeskalowanie, translacja, rotacja obiektu) powoduje wyliczenie nowych współrzędnych i normalnych świata. Dzięki temu podczas wielokrotnego zmieniania właściwości obiektu unikamy kumulowania się błędów obliczeniowych.

Żeby było mi łatwiej bezpośrednio manipulować parametrami trójkąta ustawianie ich jest możliwe we współrzędnych świata.

Dodatkowo do właściwości obiektów renderowalnych musiałem wprowadzić nową macierz - macierz transformacji normalnych świat-obiekt, będąca odwrotnością macierzy transformacji normalnych obiekt-świat.

Brak komentarzy:

Prześlij komentarz