Dlaczego Y występuje w wielu grach?

19

Nauczyłem się w szkole, że oś Z jest w górze. To samo dotyczy oprogramowania do modelowania, takiego jak Blender. Jednak w wielu grach oś y jest podniesiona.

Jaki jest powód?

danijar
źródło
W rzeczywistości tutaj, na uniwersytecie, wiele osób rysuje y w górę, gdy rysuje obraz 2D (zgadnij, ponieważ w 2D y również jest w górze i często używamy 3D jako uogólnienia 2D, pokazując przykłady). Nie pamiętam, że naprawdę nauczyliśmy się tego w szkole.
Aufziehvogel,
4
Prosta odpowiedź: przez miliony lat matematycy rysowali wykresy XY na papierze, na którym X idzie w lewo-prawo, a Y idzie w dół, a gdy dodano głębokość, staje się Z wchodzące w papier. Nie tak prosta odpowiedź: nikt się nie zgadza, dlaczego mieliby się zgadzać w sprawie dowolnych osi? =)
Patrick Hughes,
1
Zobacz także: gamedev.stackexchange.com/questions/13414/…
Kylotan 27.12.12
Uważam, że ten licznik jest intuicyjny również dla 2D, być może dlatego, że zacząłem od XNA, gdzie Y spada. Ale rzeczy z tyłu powinny być narysowane jako pierwsze, a wyżej w przestrzeni ekranu często oznacza więcej. Powoduje to odwrócenie niektórych liter y podczas rysowania map til, a logika staje się niezręczna.
Madmenyo,
Zauważ, że gdybyśmy początkowo pracowali z wykresami ZY z Z w górę, to nie mielibyśmy tego problemu - po prostu wprowadzilibyśmy oś X i to byśmy zrobili. (Lub podobnie, jeśli dodalibyśmy oś W do naszych wykresów YX, również nie mielibyśmy tego zamieszania.)
Little Endian 30.09.17

Odpowiedzi:

46

Myślę, że kierunek osi współrzędnych to obserwacje z różnych domen, w których płaszczyzna kluczowa była inna, a X / Y były wyrównane z tą płaszczyzną kluczową. W niektórych zastosowaniach płaszczyzna uziemienia była najważniejsza, dlatego X / Y były uziemieniem, a Z kończyło się prostopadle do tego. Jednak w przypadku gier kluczową płaszczyzną jest zwykle ekran (szczególnie wtedy, gdy były 2D i dopiero zaczynały przechodzić do 3D), więc X / Y były ekranem, a następnie, gdy gry się skończyły, 3D Z kończyło się prostopadle do tego.

Rozróżnia się dwa największe narzędzia do grafiki 3D: 3ds max i Maya. Oś Z jest podniesiona w 3ds max, ponieważ wyrosła z narzędzi architektonicznych, podczas gdy oś Y jest podniesiona w Mayi, ponieważ wyrosła z narzędzi do tworzenia filmów.

Ważną rzeczą do zrealizowania przy porównywaniu dowolnego konkretnego narzędzia z tym, czego nauczyłeś się w szkole, jest to, że wszystko jest arbitralne. Tak naprawdę nie ma znaczenia, w którą stronę są skierowane osie, o ile wszystko jest spójne i poprawnie tłumaczone między różnymi układami współrzędnych.

jhocking
źródło
3

Jest to głównie spuścizna z czasów, gdy wszystko, co można było zrobić za pomocą 3D, to obracająca się przestrzeń ekranu, przewijanie paralaksy lub coś podobnego. W takich zastosowaniach Z było „głębokością”, ponieważ X i Y były osiami płaszczyzny ekranu. Ponieważ wersje demonstracyjne były coraz bardziej zaawansowane, oryginalne konwencje pozostały, ponieważ łatwiej jest nie zmieniać niczego, co działa.

Jeśli chodzi o to, dlaczego właśnie dzisiejsze gry mają Y jako oś pionową - istnieje wiele źle napisanych samouczków, które nie wyjaśniają różnicy. Zwykle najbardziej użyteczna jest podstawowa płaszczyzna ruchu na osiach X i Y (tak, że większość obliczeń 2D nie wymaga zamiany osi w kodzie). Dla większości sidecrollerów jest to naturalnie zbieżne z płaszczyzną ekranu (X / Y). W przypadku gier przygodowych X / Y działa dobrze jako płaszczyzna pozioma (prostopadła do kierunku grawitacji), ponieważ doskonale odwzorowuje mapy w grze, elementy sterujące gamepada, mapy wysokości terenu i wiele innych rzeczy.

snake5
źródło
2

O ile kiedykolwiek zbierałem Y = góra / dół, a Z = głębokość opiera się na fizyce, gdzie grawitacja jest zawsze w kierunku (-Y), a dodanie 3D oznacza, że ​​nie chcesz zmieniać fundamentu , więc zrobiono głębię.

W przypadku metody Z = góra / dół jest to jednak powrót do matematyków. ponieważ X / Y zostało narysowane na papierze, który leżał płasko na stole, gdy oś Z była rozciągana, wychodził z papieru, a zatem w górę. chociaż wielu inżynierów również będzie korzystać z tej konwencji.

w odniesieniu do konwencji stosowanej przez dane narzędzie: Maya i Unity mają Y-up (prawdopodobnie zaprojektowane przez kogoś z doświadczeniem fizycznym). podczas gdy 3DsMax i Unreal mają Z-up (prawdopodobnie zaprojektowane przez matematyków / inżynierów). choć można również powiedzieć, że może to być tylko jedna decyzja podjęta pewnego dnia, ponieważ należało zastosować spójny system.

ponieważ to pytanie koncentruje się na narzędziu do modelowania i jest umieszczone na stronie pytań i odpowiedzi dotyczących rozwoju gier. możesz sprawdzić, do jakiego układu współrzędnych będziesz eksportować, i upewnij się, że się z tym zgadzasz.

zdaj sobie również sprawę, że niektóre układy osi są sztywne i trwałe, a inne można modyfikować (myśl, że można to zmienić w Blenderze i Unrealu, ale może się mylić)

gardian06
źródło
1

Ponieważ układ współrzędnych używany w grach jest oparty na wymiarze monitora. Gdy komputer coś renderuje, zaczyna się w lewym górnym rogu, co daje współrzędną xiy dla [0, 0]. Gdy renderowanie przebiega w kierunku prawej strony ekranu, wartość x zwiększa się odpowiednio, gdy renderowanie przesuwa się w dół, wartość y wzrasta. Układ współrzędnych jest zasadniczo układem przestrzennym 2D, z wyjątkiem tego, że początek znajduje się w lewym górnym rogu, a nie na środku ekranu.

W pakietach 3D, takich jak 3DsMax i Maya, mają własną definicję współrzędnych xiy na podstawie tego, co jest dla nich ważne. 3DsMax został oparty na projekcie architektonicznym, jeśli narysujesz schemat na płaszczyźnie 2D, y jest w górze. W Mayi, która jest głównie używana do animacji, ziemia to x, y, a wysokość to z.

Frankie Law
źródło
W Mayi ekran ma X / Y, a Z jest prostopadły do ​​ekranu.
jhocking
Głosuję z góry, ponieważ pytanie brzmi „dlaczego”, a nie „jak”, brakuje mu powodów, dla których jest tak, jak jest, tylko powtarzając, jak to jest.
Maik Semder,
Cóż, w uczciwości pierwszym słowem jest „ponieważ”, tj. ta odpowiedź zaczyna się od wyjaśnienia powodów. Może nie jest to świetne wytłumaczenie, ale jest to wytłumaczenie.
jhocking