Odpowiadając na to pytanie dla swquinn , odpowiedź podniosła bardziej trafne pytanie, na które chciałbym usłyszeć odpowiedzi. Zamieszczę własną strategię (obiecuję, że nie zaakceptuję jej jako odpowiedzi), ale chciałbym usłyszeć innych.
W szczególności: jak zająć się ustalaniem rozsądnego budżetu dla zespołu ds. Treści. Zazwyczaj jednym z pierwszych pytań zadawanych w trakcie rozwoju jest: jaki jest nasz budżet wielokąta? Oczywiście w dzisiejszych czasach rzadkość stanowi fakt, że sama liczba wierzchołków / poli jest czynnikiem ograniczającym, zamiast tego wchodzą w grę złożoność shaderów, współczynnik wypełnienia, złożoność oświetlenia.
Zespół ds. Treści chce mieć pewne twarde liczby / limity, aby mieć uzasadnione oczekiwania, że ich zawartość, gdy trafi do silnika, nie będzie zbyt ciężka. Biorąc pod uwagę, że „to zależy” nie jest szczególnie użyteczną odpowiedzią, chciałbym usłyszeć strategię, która pozwala mi nadać im realne granice bez a) wprowadzania w błąd lub b) błędnego.
źródło
Odpowiedzi:
Z mojego rozumienia znacznie łatwiej jest zmniejszyć złożoność modelu niż dodać szczegóły modelu, który został oskórowany i zmontowany. Wiem, że niektóre firmy wykorzystują to, łącząc bardzo szczegółowe zasoby i zmniejszając je w zależności od sytuacji.
Valve robi to ze swoimi NPC. NPC są modelowane w najdrobniejszych szczegółach bez jakiegokolwiek mapowania, a następnie skalowane w dół do poziomu akceptowalnego przez obecną technologię i sztuczki, takie jak różne techniki mapowania stosowane w oparciu o szczegółowe modele (lub nawet tworzone automatycznie).
Pomaga to również w korekcie na przyszłość, ponieważ nigdy nie będziesz musiał ponownie tworzyć zasobów, tylko dostosowuj je do każdego nowego projektu. Ma to również tę zaletę, że nie trzeba czekać, aż zespół przeprowadzi testy porównawcze, które są specyficzne dla kontekstu, zanim zasoby będą mogły zostać opracowane. Artyści mogą być w pełni zaangażowani od pierwszego dnia.
źródło
Okej, więc naszą strategią jest:
Wreszcie: zachowaj ostrożność przy swoich liczbach. Renderowanie nie jest jedyną rzeczą, którą będzie musiała zrobić Twoja gra, więc zdecyduj, jaką część klatki chcesz wydać na renderowanie, i ustaw swój cel. Np. Jeśli chcesz spędzić dwie trzecie klatki przy renderowaniu z prędkością 30 klatek na sekundę, w swoich testach wybierz wartość docelową 1s / 22ms (45 fps).
Poza tym powinieneś być w stanie podać przykładowe sceny. Np. Oto scena z 200 000 wielokątów, 5 statycznymi światłami i nie więcej niż 3 dynamicznymi światłami na model, z 15 znakami 50 000 polis i 30 kośćmi, i działa z prędkością 60 klatek na sekundę i zajmuje 30 MB pamięci.
źródło
Liczba wierzchołków
Badałem „Polygon Count” od ponad 15 lat. Nie ma ścisłego sposobu określenia, ile wynosi limit, szczególnie w przypadku nowocześniejszego oprogramowania i sprzętu. Limity były znacznie bardziej przydatne w silnikach, które obsługiwały jedynie 4000 trójkątów dla całego poziomu. Teraz przekonasz się, że większość obiektów w środowisku gry przekroczy to indywidualnie.
Ostatecznie liczy się to, co robi silnik z pasami wielokątów.
Gdy silnik renderuje każdy model, pobiera współrzędne odwzorowane na UV, teksturę / materiał przedstawiony na trójkątach i tworzy paski trójkąta. W większości przypadków wentylator trójkąta jest podzielony na osobne paski trójkąta na trójkąt. Zwiększa to liczbę pasków trójkąta, zmniejszając wydajność.
Doskonałym przykładem tego rozwiązania jest płaski cylinder cylindra. Pakiety 3D zazwyczaj tworzą trójkątny wentylator z wierzchołkiem pośrodku. Usuwam krawędzie i środkowy wierzchołek, a następnie tworzę kwadraty w poprzek twarzy. To powinno następnie triangulować w pojedynczy pasek trójkąta zamiast wielu pasków jednej twarzy, bez zmiany liczby wielokątów.
Liczbę wielokątów należy traktować jako wskazówkę i zadbać o sposób modelowania, a także UV Mapuj siatkę. Mniej podziałów w siatce, gdy mapowanie UV często może być bardziej korzystne.
Następnie zastanów się, co można sfałszować za pomocą normalnych map. Płaska twarz z dużą ilością szczegółów zwykle jest odwzorowana normalnie. Zaokrąglenia muszą być okrągłe, aby zobaczyć sylwetkę. Patrząc z przodu na zakrzywione twarze, nie powinieneś zauważać różnicy między zasobem wysokiej rozdzielczości a zasobem rozdzielczości gry. To sylwetka robi różnicę w twoim modelu, gdy w grę wchodzą normalne mapy. Sylwetkę można teraz modyfikować za pomocą DirectX 11, korzystając z mozaikowania i mapowania przemieszczeń.
Design gry
Podczas projektowania gry weź pod uwagę następujące kwestie:
Korzystając z gry i typów widoków, zdecyduj, jaka będzie głębia widoku. Czy widzisz odległe obiekty iz jaką jasnością? Czy robisz coś z ograniczonym widokiem, na przykład strzelanka na korytarzu? (np. Gears of War) Czy robisz coś w swobodnym roamingu z otwartymi krajobrazami? (np. Skyrim)
Gdy już wiesz, jak to powinno wyglądać, możesz zbadać podobne gry.
Animacja ograniczy wtedy twoją zdolność do zwiększenia liczby wielokątów. Siatki statyczne, wszystko, co pozostaje w tej samej pozycji, jest najtańsze na GPU i CPU. Zwłaszcza jeśli nie są obiektami fizyki. W przypadku obiektów fizyki często można tworzyć proste kadłuby zderzeniowe i złożone siatki wizualne. W większości gier nie ma wystarczającej interakcji, aby zauważyć różnicę. Animacja przesuwa twój model 3-wymiarowo, z kilkoma kośćmi na wierzchołek, mieszając się między ważeniem każdego z nich. Może to być kosztowne w stosunku do czasu procesora, co może kolidować z AI i fizyką opartą na oprogramowaniu. Im większa liczba wierzchołków, na które wpływa liczba kości w całym modelu, obniży wydajność procesora. Jest to kolejny powód, dla którego postacie w grze są uważane za „sztukę”. Bardzo trudno jest zdefiniować granicę wielokąta.
Mój przykład
Korzystam z UDK, tworząc powolną strzelankę z perspektywy trzeciej osoby, z ograniczoną liczbą graczy i postaci niezależnych na ekranie w dowolnym momencie. W tym celu zamierzam uzyskać około 10 000 trójkątów na gracza, 5000 trójkątów dla typowych, ogólnych wrogów, a gdybym tworzył postać w stylu „bossa”, około 15 000. Dodatkowo, broń dla trzeciej osoby, około 4000 trójkątów, będzie bardzo szczegółowa. Pojazdy około 10 000 trójkątów. Wszystko będzie wymagało poziomu szczegółowości, ponieważ wymagam długich odległości widzenia.
Gdybym robił pierwszą osobę, oparłbym ramiona na około 2000 trójkątów, broń na około 5000 trójkątów, z normalnym odwzorowaniem dla każdego.
Wniosek
Oto, co prawdopodobnie oznacza „To zależy”, ale pomyślałem, że może wyjaśnić pewne rzeczy, o których ludzie często się zastanawiają.
źródło
Jedną z metod, o której mogę myśleć, jest użycie automatycznie skonstruowanych scen do generowania danych statystycznych, na podstawie których można rozszyfrować poszukiwane informacje.
Uzyskaj duży wolumen zasobów (potencjalnie może zostać wygenerowany automatycznie).
Utwórz narzędzie do generowania scen, które mogą być ładowane przez silnik za pomocą puli zasobów.
Uruchom bota, który będzie poruszał twoim aparatem po scenie. Możesz także uruchomić inne boty, aby scena była bardziej dynamiczna, w tym światła.
Zbierz jak najwięcej informacji i wrzuć je do bazy danych; fps, liczba poli-, zmiany cieniowania, liczba świateł, losowanie połączeń itp.
Utwórz / uzyskaj narzędzia do wyświetlania danych w bazie danych na jak najwięcej sposobów.
Ten link może dostarczyć więcej pomysłów: Dead Rising Tools
źródło