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=4088)

DMX 05.08.2007 11:16

Скорость анимации +
 
Подскажите как в процессе игры менять скорость анимации модели.
И ещё когда загру жаю модель командой
model = LoadMesh()
то :
texture = LoadTexture()
EntityTexture model, texture
работает, а если model = LoadAnimMesh() то нет, в чём проблема?

ABTOMAT 05.08.2007 13:14

Re: Скорость анимации +
 
DMX, нуно каждому чайлду текстуру назначать отдельно, если ты грузишь Аниммешем, т.к. при этом каждый чайлд считается как отдельный объект и назначать текстуры тоже придёцо по отделности, например, если в Максе у тебя были кубик и шар и эти объекты назывались Box01 и Sphere01 то код будит примерно таким:

model = LoadAnimMesh()
texture = LoadTexture()

EntityTexture FindChild(model, "Box01"), texture
EntityTexture FindChild(model, "Sphere01"), texture

Так же хочу добавить что если ты положишь в папку с 3ds-кой или b3d-шкой модели (советую юзать b3d, 3ds не поддерживает ГС, костную анимацию и много других полезностей) все текстуры, заюзанные в Максе при её создании то при загрузке этой модели командой loadanimmeah или loadmesh все текстуры загрузятся автоматически, ничего отельно текстурить не надо ;)

Что касается смены скорости анимации = то юзай UpdateWorld(число - чем больше тем быстрее всё анимируется)

Так же хотел добасить что называй тему на форуме чтобы она ясно отражала её суть. Например, "Как затекстурить AnimMesh и как поменять скорость анимации" ,а то "Скорость анимации +" не совсем понятно хотя тоже норманна, это я уже придираюсь ;)

А вот как поменять скорость анимации для каждого отдельного объекта - мну тоже интересно.

Maestro 05.08.2007 13:26

Re: Скорость анимации +
 
DMX, а не проще затекстурить модель в редакторе, а потом ее экспортировать... тогда не надо отдельно текстуру грузить, она будет затекстуриной (главное координацию самой текстуры с экспортированой моделью сохранить)

На счет скорости.. Animate entity[,mode][,speed#][,sequence][,transition#]
кури [,speed#]. Можно задать переменную.. и менять ее значение в зависимости от условий...

Leito 05.08.2007 15:21

Re: Скорость анимации +
 
ы, а вот на этот вопрос кто ответит?
как поменять скорость анимации только одной модели в момент прохождения анимации?

Raiter 05.08.2007 15:28

Re: Скорость анимации +
 
шмотря в каком формаде... мине больше вшего нравитшо мд2

Leito 05.08.2007 15:47

Re: Скорость анимации +
 
b3d

Maestro 05.08.2007 16:47

Re: Скорость анимации +
 
Leito, как понять только одной модели? у тебя же для каждой модели отдельная анимация... да даже если одна (например надо чтобы у войска была одна анимация но проигрывалась с разной скоростью)...
Например войско - список
Код:

Type muzik
 Field telo
End Type

потом создаешь их
Код:

Function CreateVoisko(tn)
For i=1 To tn
 m.muzik=New telo
 m\telo=loadAnimMesh("chel.b3d")
 PositionEntity m\telo,Rnd(-50,50),0,Rnd(-50,50)
Next
End Function

Потом при создании левела (не в главном цыкле)
Код:

For m.muzik=Each telo
  animete m\telo,rnd(.8,1.2)
 Next


Leito 05.08.2007 17:36

Re: Скорость анимации +
 
Maestro,
ты вот это не прочитал

Цитата:

в момент прохождения анимации

Maestro 05.08.2007 17:51

Re: Скорость анимации +
 
Global m=1,n=1

В главном цыкле:
Код:

  if m=1 then
 animate m\telo,n
 m=0
endif

If kakoeto_sobitie then
  n=1.5
  m=1
endif

Но тут надо проверить, анимация просто ускорится, или начнется заного... если начнется заного, тогда надо как-то выщитывать кадр анимаци... как - хз.
ЗЫ: покапайся в хелпе, может что-то типа AnimTime - то, что нужно.

Leito 05.08.2007 19:19

Re: Скорость анимации +
 
Maestro, не гадай, она начнется заново. )
мне это не столь важно чтобы в хелп лазить.


так что никто не знает? очень интересная штука ведь...

DMX 06.08.2007 10:16

Re: Скорость анимации +
 
Так я всё равно не вкурил, мне надо чтобы при нажатии кнопок + или - в процессе игры менялась скорость анимации модели. Кто не понял вот код того что я имел в виду. (я только показал что я имел в виду.)
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
SeedRndMilliSecs()
anim_speed# = 0.1
dt# = 0.01
camera = CreateCamera()
CameraClsColor camera,0,64,128
cube = CreateCube()
PositionEntity cube,0,-1,5
light = CreateLight()
While Not KeyHit(1)

time = MilliSecs()

TurnEntity cube,1,0,-0.1
IfKeyDown(74)
anim_speed# = anim_speed# - dt# * .01
Ifanim_speed# < 0.1Thenanim_speed# = 0.1
ElseIfKeyDown(78)
anim_speed# = anim_speed# + dt# * .01
Ifanim_speed# > 0.9 Thenanim_speed# = 0.9
EndIf
UpdateWorld
RenderWorld
Text 5, 5, "Anim speed : " + Int(anim_speed# * 100.0) / 100.0 + " ('+' or '-')"

Flip
to_dt# = (MilliSecs() - time) / 60.0
dt# = dt# + (to_dt# - dt#) * .1
Wend
End


moka 06.08.2007 11:15

Re: Скорость анимации +
 
Во время, можно, сделать функцию, которая будет создавать временный Sequence и запускать его, Sequence же, будет начинать с текущего кадра и кончаться на максимальный кадр корневой Sequence. Если играет временная, тогда по навому прохождению анимации уже удалять её и запускать корневую.

DMX 06.08.2007 14:19

Re: Скорость анимации +
 
А можна кодик этой функции?

moka 06.08.2007 14:28

Re: Скорость анимации +
 
:) Писать нужно.
Вобщем теория:
Есть класс:
Type TTmpSeq
Field Sequence
End Type

Далее есть функция, меняющая скорость анимации, и в её содержании будет Extract анимации из текущего играющей последовательности с текущего по последний кадр, и запускаем его с новой скоростью, делее, если играеться или закончилась игра этой очереди, тогда удалять, только вот функции удаления очереди я чтото не нашёл ;), если не прокатит FreeEntity, тогда плоха будет :). Странно, а чего Марк не сделал функцию удаляющую последовательность?
В общем и всё ;)

DMX 06.08.2007 18:57

Re: Скорость анимации +
 
OK. А нет функции для изменения размеров модели в реальном времени.


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

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