Format pliku dla statycznych i animowanych modeli 3D

22

Obecnie piszę grę 3D w C ++ z OpenGL i przechodzę do części, w której można załadować modele 3D. Dlatego szukam popularnych formatów plików i technik

  • wyświetla statyczne siatki i
  • renderuj animowane siatki.

Znalazłem już całkiem sporo możliwych formatów i technik, takich jak animacje klatek kluczowych, animacje szkieletów, MD2 do MD5, 3DS, X, Collada itp. Pp.

Dla uproszczenia chciałbym użyć formatu (i techniki), który pozwala zarówno na siatki statyczne, jak i animowane. Moje pytanie brzmi więc, czy jeden format jest odpowiedni do tego zadania i który sugerujesz. I trochę wyjaśnić: nie potrzebuję super płynnych animacji ani nowych funkcji.

Sidenote: Ponieważ jestem fanem blendera (ale nie jestem ekspertem ;-)) byłoby pomocne, gdyby można go z tym używać - ale oczywiście nie powinno to być ogranicznikiem programu.

stschindler
źródło

Odpowiedzi:

16

Pozwól, że zaproponuję Ci korzystanie z Collady .

Jest szeroko obsługiwany przez narzędzia DCC i dobrze znormalizowany. Obsługuje szkieletowe animacje i ... cóż, robi prawie wszystko, w tym shadery i fizykę - te nie będą dla ciebie odpowiednie.

Animacje oparte na wierzchołkach, takie jak w formatach MDL lub MD2, są mniej więcej reliktem przeszłości. Obecnie większość animacji to animacje szkieletowe (tzn. Pomyśl, czy postacie są płynnie zmontowane), a narzędzia do tworzenia treści są dla nich zoptymalizowane.

Blender ma działającego eksportera Collada, ale jak zawsze eksportowanie rzeczy z Blendera może być denerwujące. W razie problemów konieczne może być wypróbowanie alternatywnych eksporterów lub formatów plików lub ręczne zhakowanie skryptów.

Aby załadować Colladę, użyj bibliotek takich jak FCollada lub ColladaDOM (nie próbuj parsować samodzielnie, Collada to naprawdę gruby potwór XML ...). Dostępna jest również biblioteka Open Asset Import Library , która ładuje ~ 25 formatów plików, w tym Collada (i wszystkie inne wymienione przez Ciebie formaty). Byłby to doskonały wybór, ponieważ jest przeznaczony przede wszystkim dla twórców gier i zapewnia wyniki w formacie odpowiednim do renderowania w czasie rzeczywistym. Ale szczerze mówiąc: jestem jednym ze współautorów, więc prawdopodobnie jestem trochę stronniczy.

Last but not least : format pliku, którego używasz do importowania zasobów, nie powinien określać możliwości twojego silnika i technik, których używa - raczej powinien być odwrotnie. To, czy animacje są super-płynne, nie jest kwestią formatu importu, zależy od tego, jakiej techniki używasz do animowania siatek i jak dobrze są one modelowane. Format importu powinien po prostu pomóc Ci przenieść dane z Blendera do gry.

Alexander Gessler
źródło
Dziękuję bardzo za szczegółową odpowiedź. Słyszałem o Colladzie po raz pierwszy dzisiaj (polecany przez znajomego) i nie byłem pewien, czy naprawdę jest gotowy do użycia w środowisku produkcyjnym. Spróbuję teraz, dzięki. :-)
stschindler
2
Dobra rada, zwłaszcza odniesienie do AssImp. Nie zasugerowałbym jednak COLLADA, ponieważ nikt nie wydaje się konsekwentnie i poprawnie obsługiwać wszystko, i jest dość duży do rzeczywistych celów treści. Sugerowałbym użycie czegoś takiego jak MD5, który dostaje szkielet i jest dość szeroko wdrażany poprawnie (myślę). Nie odrzuciłbym też tak łatwo MD2; istnieje wiele przykładowych modeli, które można tanim animować w trywialny sposób (chociaż jest to bezużyteczne dla ragdoll lub tego, co masz).
ChrisE
Będę się po prostu bawić z różnymi formatami plików. Dzięki AssImp będzie to łatwe. MD2 był rzeczywiście moim pierwszym pomysłem, ale myślę, że tworzenie go jest dość drogie, a nie tylko eksportowanie odpowiednich kości. Ragdoll nie są w moim przypadku potrzebne, potrzebuję tylko animowanych modeli, bez fizyki.
stschindler
Są naprawdę źli eksporterzy Collady, ale przynajmniej format jest dobrze udokumentowany, więc zawsze wiesz, kogo winić :-). MD5 też jest dobrym kandydatem, ale nie wiem, jak dobrzy są eksporterzy Blendera. MD2 ma bardzo ograniczoną reprezentację wierzchołków i cierpi z powodu ograniczenia rozmiaru i dokładności. I naprawdę nie byłoby go używać, nie ma powodu, aby to zrobić.
Alexander Gessler
wazim.com/Collada_Tutorial_1.htm to całkiem niezły dogłębny samouczek do ładowania collada, ale nadal polecam korzystanie z biblioteki.
Exilyth,