О сайте
  Новости сайта
  Почитать
  Утилиты
 
  Help Blitz3D
 
   

 

 

 

 

 

 

 

 

 

Экспорт скелетной анимации в Blitz3D

Когда я только начинал изучать Blitz3D, мне захотелось разобраться с работой команд для анимации. Так как быстро изобразить какого-нибудь монстра, да еще с анимацией не так-то просто, я сделал проще - взял модель зомби из Half-Life2 и загрузил его в 3DS-Max. Всё сконвертилось прекрасно - анимация работает, рендерится как надо, текстуры на месте, пришла пора сохранять в формат b3d. Сохраняю, загружаю в свою программу, и вижу... - только движущиеся кости. Помучившись с настройками плагина экспорта B3DPipeline (кстати, лучший плагин для экспорта в формат b3d), я получал разный результат - костей нет, но есть неподвижная оболочка, или движущаяся оболочка, но с торчащими везде костями.

Так и не добившись нужного результата самостоятельно, я стал искать информацию в Интернете, но практически на всех форумах видел тот же вопрос, а вразумительный ответ не давал никто. Наконец, на одном из форумов (не помню уже, где именно) я нашёл подробную инструкцию по этому вопросу и решил описать этот процесс подробнее.

Может быть, опытным программистам это покажется ерундой, но я думаю (проверено на себе), что экспорт скелетной анимации из Макса в Blitz - это одна из больших проблем для человека, только начинающего изучать Blitz3D.

На самом деле всё оказалось очень просто. Нужно только правильно расставить галочки при экспорте. Вот подробная инструкция с рисунками:

1) Загружаем анимированную модель в Макс, жмём File/Export и выбираем формат b3d и папку, куда будем сохранять - лучше в ту же, откуда и загружали или позаботьтесь заранее, чтобы в папке лежали все нужные текстуры!

2) В появившемся окне плагина ставим галочки в левой части, как на рисунке. Те, что играют особую роль выделены - их нужно поставить так же. Обратите внимание - Bone Meshes отключено! Нажимаем Export. Так мы сохраним ТОЛЬКО оболочку модели.

Шаг 1

3) Теперь скроем оболочку командой Display/Hide by category/Geometry. Теперь мы видим только скелет.

Шаг 2

4) Осталось экспортировать анимацию костей в формат b3d и всё! Снова жмём File/Export/ выбираем формат b3d и имя файла с анимацией и ложим его рядом с первым файлом (хотя и не обязательно, но лучше, если в одной папке с моделью будут и все её анимации). В окне экспорта галочки ставим так же, только Bone Meshes ВКЛЮЧАЕМ!

Шаг 3

Теперь мы имеем один файл с моделью и один файл с анимацией для этой модели. Если анимаций несколько, то можно проделать всё еще несколько раз, но шаг 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

 

 
Hosted by uCoz