Chcę animować model (na przykład człowieka, chodzenie) w OpenGL. Wiem, że nie ma rzeczy jak szkielet-animacji (ze skomplikowanej matematyki), ale co z tego ....Jak animować model 3d (siatkę) w OpenGL?
- Tworzenie modelu w Blenderze
- utworzyć szkielet dla tego modelu w Blenderze
- teraz zrobić animacja chodzenia w Blenderze z tego modelu i szkielet
- Poświęć trochę „Klatki kluczowe” tej animacji i eksportowania każdego „klatka kluczowa” jako jednego modelu (na przykład jako obj pliku)
- Złóż ładującego pliku OBJ OpenGL (aby uzyskać dane wierzchołków, tekstur, normalnych i powierzchni)
- Użyj VBO wyciągnąć ten animowany model w OpenGL (i trochę skomplikowane pomysły jak zmienić aktualny „klatka kluczowa”/model w VBO ... Może coś z
glMapBufferRange
Ok, wiem, że ten pomysł to tylko mały scenariusz, ale czy warto zajrzeć dalej? Co to jest dobry pomysł, aby zmienić "keyFrame"/modele w VBO?
Znam ten problem z pamięcią, ale przy małych modelach (i niezbyt wielu animacjach) można to zrobić, jak sądzę.
Aby być uczciwym, wdrożenie tej klatki kluczowej niego animację na poziomie wierzchołków jest prawdopodobnie dużo więcej wysiłku, niż wykonać opracowanie systemu animacji szkieletu. Animacja szkieletu nie została wykonana w "starych" czasach, ponieważ procesorowi brakowało mocy do wykonania wszystkich dodatkowych transformacji wierzchołków. Ale dzisiejsze procesory graficzne chrupią tę dodatkową matrycę i interpolację na śniadanie, a także w GLSL jest o wiele mniej kodu. – datenwolf
@datenwolf Zgadzam się z tobą na temat wydajności, ale nie zgadzam się co do łatwości implementacji animacji szkieletu. Animacja wierzchołków to 'dla i verts [i] = lerp (t, previous [i], next [i])}' W porównaniu do zrzucania hierarchii kwaternionów, relacji i długości (ta część nieźle), ale potem musisz powiązać wierzchołki z wagami kości. To tylko o wiele więcej danych do zarządzania. –
thx za szybką odpowiedź! – user2602528