Rzut izometryczny

Klikipedia - klikowa encyklopedia
Skocz do: nawigacji, wyszukiwarki
Ograniczenie rzutu izometrycznego - niebieska kulka jest wyżej, ale identyczne skrócenie perspektywistyczne sprawia wrażenie, że jest na takim samym poziomie, jak kulka czerwona.

Rzut izometryczny to odwzorowanie przestrzeni trójwymiarowej na płaszczyznę, będące jedym z rodzajów rzutu równoległego. Charakteryzuje się tym, że kąt pomiędzy wszystkimi rzutowanymi osiami jest ten sam, co sprawia, że skrócenie perspektywiczne każdej z osi jest takie samo.

W grach technika rzutu izometrycznego stała się popularna z powodu łatwości, z jaką obiekty 2D ułożone w kratkach mogą imitować środowisko 3D. Ograniczenia spowodowane przez cechy tego rzutu można zniwelować poprzez takie zaprojektowanie gry, aby ograniczenia te nie były zauważalne.

Przede wszystkim, ktoś kto zapewne czyta ten artykuł jest zainteresowany izometrią na płaszczyźnie, w celu implementacji grafiki do gdy, lub innego rodzaju wizualizacji. Zatem na początek: NIKT NIGDZIE W INTERNECIE NIE POKAZUJE SZYBKIEJ I ŁATWEJ IMPLEMENTACJI TEGO TYPU. Jeżeli poważnie myślisz o izometrii, trzeba będzie napisać to samemu. Osobiście w 2008 napisałem tego typu kod i muszę przyznać działa bezbłędnie. Mnóstwo matematyki, równań, ale udało się, wyprowadziłem sobie wszystkie potrzebne wzory, które opisują świat izometryczny.

Zajęło mi to około miesiąca. Nie chcę Cię przerażać, to było w odstępach czasowych :p. No ale wracając do sedna. Radzę zacząć od podstaw matematycznych. Dam wskazówkę, że należy się oprzeć o równania liniowe, ale tylko dwóch zmiennych, no w jednym miejscu trzech :p. Związek świata izometrycznego z półprostymi szybko Ci się nasunie, gdy będzie trzeba określic w jakiej "kafelce" jesteś kursorem, czyli przeliczyć poz. kursora, czy innych na pozycję kafelki. Ale to nie wszystko. Jeszcze najważniejszy i bardzo łożony problem. Obcinanie niewidocznych fragmentów ekranu. Przecież bez sensu rysować wszystko co ma być w świecie gry. Zatem kolejne wzorki, wzorki...

No cóż chciałem tylko zrobić taką małą dygresję. Osobiście denerwowało mnie, że nigdzie nic konkretnego rozwiązanego nie znalazłem, ale po czasie stwierdziłem, że ktoś kto to zrobił, nie chce się tym dzielić. Polecam na początek zapoznać się z artykułami ludzi świata Delphi i Omegi. Bardzo fajne podejście do sprawy: [1]


Przykłady w grach klikowych