|
3D-программирование Вопросы, касающиеся программирования 3D мира |
05.08.2007, 11:16
|
#1
|
Оператор ЭВМ
Регистрация: 13.11.2006
Сообщений: 39
Написано 0 полезных сообщений (для 0 пользователей)
|
Скорость анимации +
Подскажите как в процессе игры менять скорость анимации модели.
И ещё когда загру жаю модель командой
model = LoadMesh()
то :
texture = LoadTexture()
EntityTexture model, texture
работает, а если model = LoadAnimMesh() то нет, в чём проблема?
|
(Offline)
|
|
05.08.2007, 13:14
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
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 и как поменять скорость анимации" ,а то "Скорость анимации +" не совсем понятно хотя тоже норманна, это я уже придираюсь
А вот как поменять скорость анимации для каждого отдельного объекта - мну тоже интересно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
05.08.2007, 13:26
|
#3
|
ПроЭктировщик
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Скорость анимации +
DMX, а не проще затекстурить модель в редакторе, а потом ее экспортировать... тогда не надо отдельно текстуру грузить, она будет затекстуриной (главное координацию самой текстуры с экспортированой моделью сохранить)
На счет скорости.. Animate entity[,mode][,speed#][,sequence][,transition#]
кури [,speed#]. Можно задать переменную.. и менять ее значение в зависимости от условий...
|
(Offline)
|
|
05.08.2007, 15:21
|
#4
|
Танчики Developer
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений (для 23 пользователей)
|
Re: Скорость анимации +
ы, а вот на этот вопрос кто ответит?
как поменять скорость анимации только одной модели в момент прохождения анимации?
|
(Offline)
|
|
05.08.2007, 15:28
|
#5
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Скорость анимации +
шмотря в каком формаде... мине больше вшего нравитшо мд2
|
(Offline)
|
|
05.08.2007, 15:47
|
#6
|
Танчики Developer
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений (для 23 пользователей)
|
Re: Скорость анимации +
b3d
|
(Offline)
|
|
05.08.2007, 16:47
|
#7
|
ПроЭктировщик
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений (для 0 пользователей)
|
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
|
(Offline)
|
|
05.08.2007, 17:36
|
#8
|
Танчики Developer
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений (для 23 пользователей)
|
Re: Скорость анимации +
Maestro,
ты вот это не прочитал
в момент прохождения анимации
|
|
(Offline)
|
|
05.08.2007, 17:51
|
#9
|
ПроЭктировщик
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений (для 0 пользователей)
|
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 - то, что нужно.
|
(Offline)
|
|
05.08.2007, 19:19
|
#10
|
Танчики Developer
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений (для 23 пользователей)
|
Re: Скорость анимации +
Maestro, не гадай, она начнется заново. )
мне это не столь важно чтобы в хелп лазить.
так что никто не знает? очень интересная штука ведь...
|
(Offline)
|
|
06.08.2007, 10:16
|
#11
|
Оператор ЭВМ
Регистрация: 13.11.2006
Сообщений: 39
Написано 0 полезных сообщений (для 0 пользователей)
|
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
|
(Offline)
|
|
06.08.2007, 11:15
|
#12
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Скорость анимации +
Во время, можно, сделать функцию, которая будет создавать временный Sequence и запускать его, Sequence же, будет начинать с текущего кадра и кончаться на максимальный кадр корневой Sequence. Если играет временная, тогда по навому прохождению анимации уже удалять её и запускать корневую.
|
(Offline)
|
|
06.08.2007, 14:19
|
#13
|
Оператор ЭВМ
Регистрация: 13.11.2006
Сообщений: 39
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Скорость анимации +
А можна кодик этой функции?
|
(Offline)
|
|
06.08.2007, 14:28
|
#14
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Скорость анимации +
Писать нужно.
Вобщем теория:
Есть класс:
Type TTmpSeq
Field Sequence
End Type
Далее есть функция, меняющая скорость анимации, и в её содержании будет Extract анимации из текущего играющей последовательности с текущего по последний кадр, и запускаем его с новой скоростью, делее, если играеться или закончилась игра этой очереди, тогда удалять, только вот функции удаления очереди я чтото не нашёл , если не прокатит FreeEntity, тогда плоха будет . Странно, а чего Марк не сделал функцию удаляющую последовательность?
В общем и всё
|
(Offline)
|
|
06.08.2007, 18:57
|
#15
|
Оператор ЭВМ
Регистрация: 13.11.2006
Сообщений: 39
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Скорость анимации +
OK. А нет функции для изменения размеров модели в реальном времени.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:38.
|