Jak są projektowane i wyświetlane modele 3D w grach? Czy to wszystko kod? Rysowane na papierze, a następnie w oprogramowaniu graficznym 3D, a następnie ... co?
Oczywiście, programiści gier nie zdefiniują każdego wierzchołka każdego kształtu (/ obiektu), który chcą narysować, wszystko w kodzie (czy to w Direct3D, czy OpenGL.) Czy projektanci gier mają narzędzia do użycia, takie jak Maya lub coś podobnego do zastrzeżonego oprogramowania do grafiki 3D; „rysują” model w tym oprogramowaniu, eksportują go w dowolnym formacie, a następnie programiści analizują go za pomocą kodu i automatycznie wprowadzają zdekodowane / przeanalizowane nieprzetworzone wierzchołki obiektu / modelu?
Dużo googlowałem, ale nie mogłem znaleźć czegoś solidnego, by wytłumaczyć, w jaki sposób działa ten aspekt profesjonalnych gier wideo.
Odpowiedzi:
We wszystkich grach, nad którymi pracowałem, Asset Creation Pipeline działa mniej więcej tak:
Zadaniem projektanta poziomów będzie zebranie zasobów, aby samemu „zbudować” poziom.
To niezwykłe, że cały poziom jest budowany jako pojedynczy element geometrii. Większość poziomów składa się z elementów lub sekcji. (np. niesławny użył zestawu sześciokątnych „kafelków” http://www.gamasutra.com/php-bin/news_index.php?story=118581, a skyrim (i wiele innych) stosują podejście w stylu Lego do łączenia poziomów http : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )
Zwykle w proces ten zaangażowany jest edytor poziomów o pewnym opisie, chociaż wiele gier używa modelerów 3d jako „edytorów poziomów” do tworzenia wcześniej utworzonych zasobów.
Po wykonaniu wszystkich tych czynności zasoby są zwykle przetwarzane przez Toolchain, który zamienia pliki przyjazne Modelerowi 3D w dane gotowe do gry, które można załadować bezpośrednio do środowiska wykonawczego.
Łańcuchy narzędzi (bit, który bierze surowe zasoby i przekształca je w dane gotowe do gry) są często jednymi z najbardziej skomplikowanych elementów inżynierii w rozwoju gier. Muszą rozmawiać z wieloma różnymi aplikacjami, rozumieć wiele różnych formatów plików, a także rozumieć, w jaki sposób przekształcać dane w bardziej wydajny i natychmiast użyteczny format. Łańcuchy narzędzi zwykle wykonują również wstępne przejścia oświetlenia, spawanie wierzchołków, generowanie LOD i tak dalej. Często zbudowanie całego zestawu danych dla dużej gry AAA zajmie bardzo dużo czasu, często więcej niż 8 godzin na całkowitą przebudowę. Łańcuchy narzędzi zwykle zawierają również rozproszone przetwarzanie, aby rozłożyć obciążenie na wszystkie komputery w całym studiu.
Runtime jest sama gra. Plik wykonywalny, który działa na twoim komputerze lub konsoli. Wewnątrz środowiska wykonawczego będzie system o nazwie Resource Manager. Zadaniem Menedżera zasobów jest ładowanie zasobów wymaganych przez inne systemy w grze.
Np .: gdy powiesz ładowaniu gry do poziomu, metadane poziomu zapewnią menedżerowi zasobów listę zasobów, które należy załadować, aby wyświetlić poziom. Podobnie każdy zasób będzie zawierał listę dowolnych tekstur, materiałów lub zasobów podrzędnych, które należy załadować.
Kiedy wszystko rzeczywiście zostanie załadowane do pamięci. Gra wyśle rzeczy, które są widoczne dla Renderera, który następnie wejdzie w interakcję z API używanym do rysowania rzeczy na ekranie.
Programiści mogą (i robią) ręcznie generować informacje o wierzchołkach. Zazwyczaj jest to nazywane „renderowaniem w trybie natychmiastowym”. Nie jest bardzo wydajny i jest używany tylko w sytuacjach, w których nie jest możliwe użycie wstępnie wygenerowanych lub zmanipulowanych przez wierzchołek danych danych wierzchołków. Np .: Rendering interfejsu użytkownika, quady na pełnym ekranie.
Zazwyczaj 99% obiektów na ekranie będzie wstępnie wygenerowanymi informacjami o wierzchołkach renderowanymi w trybie „Zachowane”, przy czym shadery wykonują wszelkie wymagane manipulacje. Np .: Animacja bez skóry
źródło
Oto prosta odpowiedź: robią to wszystko w aplikacjach graficznych 3D, takich jak Maya lub 3DS Max. Najpierw zajmują się sztukami koncepcyjnymi (na papierze), zgodnie z nimi tworzą modele, tekstury (w Photoshopie lub coś w tym stylu). Proste animacje są wykonywane w całości w oprogramowaniu, bardziej złożone animacje są wykonywane za pomocą Motion Capture, a następnie mapowane do modelu. Do animacji zwykle używasz animacji Szkielet.
Wszystkie te dane są zapisywane w plikach.
Kiedy gra się rozpoczyna, analizuje wszystkie te pliki i ładuje modele, tekstury, animacje. A kiedy jest to potrzebne, wyświetla je.
źródło
Programiści mogą zdefiniować każdy wierzchołek indywidualnie, jeśli chcą. Tak się oczywiście nigdy nie dzieje, chyba że stworzą jakąś podstawową wersję demo kostki. Zwykle to, co zapisywane jest w plikach modelu, to coś w rodzaju listy wierzchołków, które programiści mogą łatwo podłączyć do kodu rysowania modelu. Jest oczywiście więcej niż to, ale w zasadzie formaty modeli dają pośrednie „instrukcje”, jak narysować określony model.
W wielu przypadkach i dla wielu formatów plików modeli strona kodowania została wykonana dla Ciebie. Istnieją nawet niektóre tekstowe formaty modeli z towarzyszącym kodem rysunkowym, które znacznie ułatwiają koderowi urządzenia śledzenie, w jaki sposób model jest tłumaczony na kod.
Jednak nigdy nie byłem osobą, która pisała ten kod, więc możliwe jest, że kilka szczegółów mojego wyjaśnienia nie jest dostępnych.
źródło
Pracowałem sam, aby spróbować połączyć grę. Mogę dać ci prostą listę programów, których używam.
Modelowanie: płaszcz 3D, modo
Olinowanie: modo
Tekstury: GIMP, Inkscape
Silnik gry: Unity
Oczywiście jest to mała lista aplikacji, ale dla mnie one działają i są dostępne dla hobbystów i niezależnych programistów.
źródło