|
Экспорт скелетной анимации в Blitz3D
Когда я только начинал изучать Blitz3D, мне захотелось разобраться с работой команд для анимации. Так как быстро изобразить какого-нибудь монстра, да еще с анимацией не так-то просто, я сделал проще - взял модель зомби из Half-Life2 и загрузил его в 3DS-Max. Всё сконвертилось прекрасно - анимация работает, рендерится как надо, текстуры на месте, пришла пора сохранять в формат b3d. Сохраняю, загружаю в свою программу, и вижу... - только движущиеся кости. Помучившись с настройками плагина экспорта B3DPipeline (кстати, лучший плагин для экспорта в формат b3d), я получал разный результат - костей нет, но есть неподвижная оболочка, или движущаяся оболочка, но с торчащими везде костями.
Так и не добившись нужного результата самостоятельно, я стал искать информацию в Интернете, но практически на всех форумах видел тот же вопрос, а вразумительный ответ не давал никто. Наконец, на одном из форумов (не помню уже, где именно) я нашёл подробную инструкцию по этому вопросу и решил описать этот процесс подробнее.
Может быть, опытным программистам это покажется ерундой, но я думаю (проверено на себе), что экспорт скелетной анимации из Макса в Blitz - это одна из больших проблем для человека, только начинающего изучать Blitz3D.
На самом деле всё оказалось очень просто. Нужно только правильно расставить галочки при экспорте. Вот подробная инструкция с рисунками:
1) Загружаем анимированную модель в Макс, жмём File/Export и выбираем формат b3d и папку, куда будем сохранять - лучше в ту же, откуда и загружали или позаботьтесь заранее, чтобы в папке лежали все нужные текстуры!
2) В появившемся окне плагина ставим галочки в левой части, как на рисунке. Те, что играют особую роль выделены - их нужно поставить так же. Обратите внимание - Bone Meshes отключено! Нажимаем Export. Так мы сохраним ТОЛЬКО оболочку модели.
3) Теперь скроем оболочку командой Display/Hide by category/Geometry. Теперь мы видим только скелет.
4) Осталось экспортировать анимацию костей в формат b3d и всё! Снова жмём File/Export/ выбираем формат b3d и имя файла с анимацией и ложим его рядом с первым файлом (хотя и не обязательно, но лучше, если в одной папке с моделью будут и все её анимации). В окне экспорта галочки ставим так же, только Bone Meshes ВКЛЮЧАЕМ!
Теперь мы имеем один файл с моделью и один файл с анимацией для этой модели. Если анимаций несколько, то можно проделать всё еще несколько раз, но шаг 2 (сохранение первого файла с моделью) можно пропустить.
Вот пример, как использовать полученные файлы в программе:
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
cam=CreateCamera()
ZOMBIE=LoadAnimMesh("ZOMBIE\Zombie.B3D");-первый файл с моделью
ScaleEntity ZOMBIE,.5,.5,.5
PositionEntity ZOMBIE,0,1,20
attack=LoadAnimSeq (ZOMBIE,"ZOMBIE\Zombie-attack.B3D"); загружаем второй файл-с анимацией, здесь ;можно загрузить еще какие-нибудь анимации (под номером 2,3 и т.д)
PointEntity cam,ZOMBIE; камера будет следить за моделью
While Not KeyDown(1)
If KeyDown(57) And AnimSeq=0 Animate ZOMBIE,1,0.1,attack,0;включаем анимацию со скоростью ;0.1
UpdateWorld()
RenderWorld()
Flip 0
Wend
End |
Лично я пробовал это на различных моделях из игр Half-Life2, Sin и других, основанных на движке Source и всё всегда прекрасно получалось (а как их выдрать оттуда - читайте здесь). Также можно попробовать взять модель для экспериментов из GTA - там модели сделаны похоже.
Удачной анимации!!!
23.07.2007 Blitz-coder
|
|