[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO  
Форум мира Blitz3D » Язык Blitz3D » 3D моделирование, текстуры, библиотеки » Анимация загруженной модели (Анимация загруженной модели)
Анимация загруженной модели
ARenaBlitzДата: Пятница, 19.03.2010, 18:10 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Народ, кто-нибудь подскажите, что мне делать.
Я загрузил в Blitz3D анимационную модель в формате 3ds. Запускаю анимацию, анимация проходит полностью (с первого кадра и до последнего). Можно ли сделать так, что анимация проходило к примеру с 10 кадра до 100 кадра, ну а затем повторялась снова с 10 кадра и шла 100 и так до бесконечности.
Спасибо всем...
 
ParisHiltonДата: Суббота, 20.03.2010, 00:29 | Сообщение # 2
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
Юзай AnimSeq
Quote

AnimSeq ( entity )

Returns the specified entity's current animation sequence.



Мы ищем предмет цели для того чтобы найти результаты его следствия
 
ARenaBlitzДата: Суббота, 20.03.2010, 06:40 | Сообщение # 3
ламер
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Так все, теперь я со всем разобрался. Чё да как делать. Ну в общем, если кому интересно, то пишу свой код целиком.

Quote ("Анимации объекта")

SeedRnd MilliSecs() ; включает анимацию в программе
Graphics3D 800,600,32,2
cam=CreateCamera()
PositionEntity cam,0,15,-25
pln=CreatePlane()
tex=LoadTexture("Julia.jpg")
EntityTexture pln,tex
PositionEntity pln,0,0,0
ScaleTexture tex,30,30

Fable = LoadAnimMesh("Main_hero.3ds") ; загрузка анимационной модели в формате 3ds для объекта Fable
LoadAnimSeq Fable, "Main_hero.3ds" ; загрузка 1-ой анимации для объекта Fable
LoadAnimSeq Fable, "Main_hero1.3ds" ; загрузка 2-ой анимации для объекта Fable
ScaleEntity Fable,0.1,0.1,0.1 ; уменьшение модели в 10 раз
RotateEntity Fable,0,45,0 ; поворот модели на 45 градусов по оси Y

Repeat
If KeyDown(200) Then MoveEntity cam,0,0,1
If KeyDown(208) Then MoveEntity cam,0,0,-1
If KeyDown(203) Then TurnEntity cam,0,1,0
If KeyDown(205) Then TurnEntity cam,0,-1,0

If KeyDown(17) ; проверка нажания клавиши W, если нажата клавиша W, то идет следующее действие
If AnimSeq (Fable)=0 Then Animate Fable,1,0.5,1,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №1
Else ; иначе
If AnimSeq (Fable) = 1 Then Animate Fable,0,0.5,0,10 ; если идет анимация №1, но клавиша W отпущена, то немедленное прекратить анимацию и вернуться к исходному месту
End If ; конец цикла данной операции

If KeyDown(31) ; проверка нажания клавиши S, если нажата клавиша S, то идет следующее действие
If AnimSeq(Fable) = 0 Then Animate Fable,1,0.5,2,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №2
Else ; иначе
If AnimSeq (Fable) = 2 Then Animate Fable,0,1,0,10 ; если идет анимация №2, но клавиша S отпущена, то немедленное прекратить анимацию и вернуться к исходному месту
End If ; конец цикла данной операции

If KeyDown(1) Then Exit
UpdateWorld
RenderWorld
Flip
Forever

Добавлено (20.03.2010, 06:40)
---------------------------------------------
Если же нужно сделать так к примеру, что когда вы держите нажатой клавишу W ваш герой бежит, а затем, как только вы её отпустите нужно, чтобы он не только остановился, но и еще его немного качнуло вперед в этом случае нужно прописать код, который проверит, что была анимация бега, ну а после этого надо включить однократную анимацию остановки. Сделаем это на примере все того же кода, слегка изменив его:

Quote ("Переход из одной анимации в другу при отпускании клавиши")

SeedRnd MilliSecs() ; включает анимацию в программе
Graphics3D 800,600,32,2
cam=CreateCamera()
PositionEntity cam,0,15,-25
pln=CreatePlane()
tex=LoadTexture("Julia.jpg")
EntityTexture pln,tex
PositionEntity pln,0,0,0
ScaleTexture tex,30,30

Fable = LoadAnimMesh("Main_hero.3ds") ; загрузка анимационной модели в формате 3ds для объекта Fable
LoadAnimSeq Fable, "Main_hero.3ds" ; загрузка 1-ой анимации для объекта Fable
LoadAnimSeq Fable, "Main_hero1.3ds" ; загрузка 2-ой анимации для объекта Fable
ScaleEntity Fable,0.1,0.1,0.1 ; уменьшение модели в 10 раз
RotateEntity Fable,0,45,0 ; поворот модели на 45 градусов по оси Y

Repeat
If KeyDown(200) Then MoveEntity cam,0,0,1
If KeyDown(208) Then MoveEntity cam,0,0,-1
If KeyDown(203) Then TurnEntity cam,0,1,0
If KeyDown(205) Then TurnEntity cam,0,-1,0

If KeyDown(17) ; проверка нажания клавиши W, если нажата клавиша W, то идет следующее действие
If AnimSeq (Fable)=0 Then Animate Fable,1,0.5,1,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №1
Else ; иначе
If AnimSeq (Fable) = 1 Then Animate Fable,3,0.5,2,10 ; если идет анимация №1, но клавиша W отпущена, то перейти к анимации №2, которая прокрутится всего один раз
End If ; конец цикла данной операции

If KeyDown(1) Then Exit
UpdateWorld
RenderWorld
Flip
Forever



Сообщение отредактировал ARenaBlitz - Суббота, 20.03.2010, 06:40
 
Форум мира Blitz3D » Язык Blitz3D » 3D моделирование, текстуры, библиотеки » Анимация загруженной модели (Анимация загруженной модели)
  • Страница 1 из 1
  • 1
Поиск: