Animacja w OpenGL przy użyciu modeli 3D

11

Stworzyłem model w Blenderze. Teraz chcę przeczytać ten model 3D w moim programie c ++. Uznałem, że model można wyeksportować do różnych formatów plików, np. .Obj, .3ds lub COLLADA, a następnie można go odczytać w programie c ++. Od dłuższego czasu szukam tego w Internecie i znalazłem wiele samouczków. Ale napotkałem problemy z większością z nich. Na przykład W samouczku Nehe używają glaux, którego nie chcę używać w moim programie. Pozostałe tutoriale używają md2, który nie jest obsługiwany przez Blendera.

Czy ktoś może więc wskazać mi, jakiego formatu pliku użyć do eksportowania modelu 3D i jak załadować go do mojego programu OpenGL? Jak mogę animować ten model? Czy można dodać dodatkowe efekty, takie jak mapowanie tonów po załadowaniu go do programu c ++ przy użyciu OpenGL? jeśli tak to jak?

PS Używam Linuksa do tworzenia gier

Snape
źródło

Odpowiedzi:

2

Wybrałbym format OBJ. Jak już pewnie sobie sprawę, tam setki ładowarek OBJ dla C ++ tam . Uważam, że jednym z najbardziej dojrzałych jest Assimp , obsługuje wiele różnych formatów i jest dość dobrze udokumentowany. Oto przykład, w którym go używają.

Dan
źródło
link lighthouse.com nie działa
snape 13.10.11
Działa dla mnie we wszystkich moich przeglądarkach ... Wypróbuj ten link x90.es/1CC
Dan
2
Obj nie obsługuje animowanych siatek, prawda? po prostu google „Blender opengl skinned mesh” i oczekuję, że znajdziesz format, który pasuje do tego, co chcesz edytować: nie mogłem usunąć mojego postu, miał być odpowiedzią na poprzedni post
polecający
1
.obj nie obsługuje animacji, a ta odpowiedź jest nieprawidłowa. stackoverflow.com/questions/757145/…
Sean Middleditch
2

Blender 2.60 poprawił obsługę animacji COLLADA, był mniej lub bardziej zepsuty we wcześniejszych wersjach. Jeśli jednak nie załadowałeś jeszcze żadnych formatów modeli we własnym kodzie, radzę najpierw nauczyć się ładować .obj. Jest w ASCII, więc jest czytelny dla człowieka i łatwy do odczytania bez zewnętrznych bibliotek modułu ładującego.

SurvivalMachine
źródło
1

3ds nie zawiera żadnych danych animacji, więc nie będzie działać. Collada, o której niewiele wiem, ale kiedy zdecydowałem, jakiego formatu użyć w mojej grze, dużo szukałem i porównywałem, aż w końcu poszedłem z formatem B3D, obsługuje animację szkieletową i można go załadować z Irrlicht (zawiera również wartości oświetlenia ).

Używam eksportera „potok b3d” z 3dsMax i kodowałem swój własny moduł cieniujący hlsl, aby animować i oświetlać siatki, działa naprawdę dobrze.

Możesz sprawdzić, jak robi to Irrlicht (tj. Ładowanie i animowanie), animacja wykonuje się jednak w oprogramowaniu, ale istnieją przykłady, jeśli szukasz trochę, jak to zrobić za pomocą modułu cieniującego (jeśli tego chcesz). Fajną rzeczą jest to, że Irrlicht obsługuje zarówno OpenGL, jak i Linux.

Innym dość prostym formatem jest format .X, musi tam być mnóstwo przykładów eksportowania, ładowania, analizowania i konfigurowania szkieletu oraz animowania go. Jest to jednak format Microsof, więc może nie będziesz chciał go używać :-)

Mapowanie tonów i tym podobne nie ma absolutnie nic wspólnego z animacją, więc jeśli wiesz, jak korzystać z tej techniki, możesz to zrobić za pomocą animowanych siatek.

Valmond
źródło