forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Вопрос по анимации (http://forum.boolean.name/showthread.php?t=17009)

Eugenes 08.07.2012 17:01

Вопрос по анимации
 
Нашел на форуме FAQ по работе с AnimMesh. Там есть строчки вида

Код:

man = LoadAnimMesh("MedicTFC.b3d") ; Грузим модельку перца
idle = LoadAnimSeq(man, "Idle.b3d") ; Вот так грузим первую анимацию

Я просто раньше работал только с .md2 и не совсем понятен этот код. Т.е. у нас есть 3D модель анимированная персонажа, например, где он стоит на месте. Далее, вторая модель, где он, например, стреляет. И мы грузим вторую анимацию через LoadAnimSeq?
Можно ли как-то работать с кадрами анимации, как с md2? Т.е. проиграл анимацию хотьбы - такие-то кадры, анимация выстрела - такие-то кадры.

PS предположим у меня есть анимация, где игрок бежит, а есть анимация, где он стреляет. Можно ли совместить, чтобы игрок и бежал и стрелял или для этого придется делать это в 3D редакторе?

Кирпи4 17.07.2012 01:48

Ответ: Вопрос по анимации
 
Ох, это гемор большой, смешивание это...
Хоть и не сампый православный, но пашущий вариант:
1) копируем модель персонажа, вешаем её на основную модель, скрываем нулевой альфой
2) загружаем анимацию бега и стояния на основную модель, а на скрытую только анимацию выстрела
3) создаём в коде Data секцию, в которую входят только те кости, которые находятся в верхней части туловища
4) вставляем вот такую функцию:
Код:

Function SyncPlayerBones(PlayerMesh, HiddenMesh)
  Restore .BonesData ; метка DATA секции
  Read BonesNum%  ; Количество костей
  For i=1 to BonesNum
      Read Name$ ; Имя кости
      bone1=FindChild(PlayerMesh,Name) : bone2=FindChild(HiddenMesh,Name)
      RotateEntity bone1, EntityPitch(bone2,0), EntityYaw(bone2,0), EntityRoll(bone2,0)
  Next
EndFunction

5) вставляем вот такой код между UpdateWorld и RenderWorld
Код:

If Animating(HiddenMesh) SyncPlayerBones(PlayerMesh, HiddenMesh) ; HiddenMesh  - скрытый, PlayerMesh - основной меши игрока
6) наслаждаемся. Для того, чтобы заставить игрока стрельнуть, анимируем скрытый меш =)

Вот пример DATA - секции:
Код:

.BonesData
Data 4
Data "Golova","Tulovishe","Lruka","Pruka"


Gector 17.07.2012 01:52

Ответ: Вопрос по анимации
 
Data так же некошерно как и Goto

burovalex 23.07.2012 20:33

Ответ: Вопрос по анимации
 
Честно сам не разбирался, но случайно однажды получилось такое, правда мне не нужен был такой эффект.
Я делал в 3д максе, попробуй так:

1)создаешь анимацию бега - для этого двигаешь только ноги в анимации, т.е. после постановы позы записываешь информацию только кости ног.
2)сохраняешь эту анимацию
4)стираешь всю анимацию в 3дмаксе и пишешь таким же методом анимацию рук и т.д.
5)в блитце затем совместно проигрываешь нужные анимации, и если анимация не пересекается костями - будет тебе счастье :)


Часовой пояс GMT +4, время: 09:03.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot