|
3D-программирование Вопросы, касающиеся программирования 3D мира |
19.06.2010, 19:59
|
#1
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Управляемая голова во время анимации
Ребят подскажите, что нужно сделать, чтоб при анимации, к примеру, ходьбы можно было бы управлять поворотом головы вручную? Работает только если не проигрывать анимацию...
man = LoadAnimMesh("man.b3d")
head = FindChild(man, "Bip01 Head")
Animate man, 1, 1, 0
While Not KeyHit(1)
If KeyDown(2) Then
TurnEntity head,1,0,0
EndIf
If KeyDown(3) Then
TurnEntity head,-1,0,0
EndIf
UpdateWorld()
RenderWorld()
Flip
Wend
End
|
(Offline)
|
|
19.06.2010, 21:04
|
#2
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: Управляемая голова во время анимации
сначала
UpdateWorld()
а потом уже управляй головой, но не turn, а меняй переменную поворота и rotate
__________________
299 792 458
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.06.2010, 16:20
|
#3
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Управляемая голова во время анимации
Анимируешь ноги, потом, через findchild находишь их, и запускаешь только их анимацию. Затем, находишь голову через тот же findchild, и уже её крутишь через свой код.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.06.2010, 17:06
|
#4
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: Управляемая голова во время анимации
ага, головой нужно управлять чтоб не создавать подобные темы, смотреть справку и логически рассуждать(в твоем коде сначала голова поварачивается, а потом ее поварачивает согласно анимации).
__________________
299 792 458
|
(Offline)
|
|
20.06.2010, 18:37
|
#5
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Ответ: Управляемая голова во время анимации
DeeJex, ты сам пробовал так делать как описал?
P.S. Вообще-то форум для того и создан, что бы темы создавать и направлять начинающих в нужную сторону. Гы!
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Coks за это полезное сообщение:
|
|
20.06.2010, 18:41
|
#6
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: Управляемая голова во время анимации
Сообщение от Coks
DeeJex, ты сам пробовал так делать как описал?
|
а смысл если ошибка очевидна?
__________________
299 792 458
|
(Offline)
|
|
22.06.2010, 14:29
|
#7
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Управляемая голова во время анимации
DeeJex, спасибо, теперь все ок. Не пойму только почему в ксорсе этот метод не работает (тоесть работает как в первом посте), хотя все команды идентичны.
Сообщение от Hurrit
Анимируешь ноги, потом, через findchild находишь их, и запускаешь только их анимацию. Затем, находишь голову через тот же findchild, и уже её крутишь через свой код.
|
Расскажи пожалуйста чуть подробнее, как реализовать это начиная с импорта анимации из 3дмакса (ну или в общем случае). Я так думаю, нужно скрыть или удалить незадействованные части скелета при импорте, но боюсь что нарушится иерархия и блитц не захочет грузить эту анимацию. Вобщем, буду разбираться и экспериментировать...
Последний раз редактировалось strayhnd, 22.06.2010 в 20:36.
|
(Offline)
|
|
23.06.2010, 22:11
|
#8
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Управляемая голова во время анимации
Ну смотри: Голову ты называешь head. У тебя есть ноги, допустим называешь их legs (учитываем регистр), ты анимируешь их в 3дс макс и экспортируешь через б3д пайплайн. Теперь, пишешь в коде следующее:
model=LoadAnimMesh("model.b3d") head=FindChild(model,"head") legs=FindChild(model,"legs") Animate legs,1 While Not KeyHit(1) If KeyDown(2) Then TurnEntity head,1,0,0 EndIf If KeyDown(3) Then TurnEntity head,-1,0,0 EndIf UpdateWorld RenderWorld Flip Wend
Ну, что-то вроде этого.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.06.2010, 17:02
|
#9
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Управляемая голова во время анимации
У меня анимация работает только если анимировать основную модель, а когда я пытаюсь анимировать какую-нибудь часть модели, получаю ошибку "Entity has no animation".
Тоесть это работает:
model=LoadAnimMesh("model.b3d") Animate model,1
а это не работает (Entity has no animation):
model=LoadAnimMesh("model.b3d") legs=FindChild(model,"legs") Animate legs,1
В чем может быть проблема? Если в экспорте, тогда почему в первом случае анимация проигрывается?
|
(Offline)
|
|
27.06.2010, 22:36
|
#10
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Ответ: Управляемая голова во время анимации
Сообщение от DeeJex
а смысл если ошибка очевидна?
|
Теория немного отличается от практики. Я попробовал так - у меня не получилось. Если предоставишь работающий код буду благодарен
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:39.
|