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

Nunan 01.01.2007 23:14

Анимации. Как загрузить много анимаций?
 
Подскажите код Blitz3d:
У меня есть 5 анимаций одной модели),
у 1й анимации - 50 кадров,
2й - 100 кадров,
3й - 20 кадров.
4й и 5й - 10 кадров.
Мне необходимо загрузить их, и анимировать в нужные моменты. Это будет одна модель, у которой должны запускаться разные её анимации.
Напишите, пожалуйста мне код:
Код:

(напишите код загрузки 5 анимаций для одной модели)

select anim
case 1
(напишите код запуска 1-й анимации)
case 2
(напишите код запуска 2-й анимации)
case 3
(напишите код запуска 3-й анимации)
case 4
(напишите код запуска 4-й анимации)
case 5
(напишите код запуска 5-й анимации)
end select


moka 01.01.2007 23:35

Re: Анимации. Как загрузить много анимаций?
 
Код:


Mesh=LoadAnimMesh("...")
ExtractAnimSeq(Mesh,0,50)
ExtractAnimSeq(Mesh,51,150)
ExtractAnimSeq(Mesh,151,170)
ExtractAnimSeq(Mesh,171,180)
ExtractAnimSeq(Mesh,181,190)
 
select anim
case 1
Animate Mesh,1,1,1
case 2
Animate Mesh,1,1,2
case 3
Animate Mesh,1,1,3
case 4
Animate Mesh,1,1,4
case 5
Animate Mesh,1,1,5
end select

Молодец, вопрос оформлен подобающе, но поспешил, во-первых, относительно анимации модели и её формата, так-как есть и md2, анимационные комманды. И насчёт анимаций, 5 анимаций, и что? Нежно то расписать ещё и с какого по какой кадр, а не по скока.

Nunan 02.01.2007 00:15

Re: Анимации. Как загрузить много анимаций?
 
Спасибо, за ответ.
Меня ещё интересует вопрос:
в стандартном примере анимации "makbot" две анимации загружаются из разных файлов:
mesh_3ds=LoadAnimMesh("makbot\mak_robotic.3ds");an im seq 0
LoadAnimSeq(mesh_3ds,"makbot\mak_running.3ds");ani m seq 1

...
If ... then Animate mesh_3ds,1,.5,1
If ... then Animate mesh_3ds,2,1,0
...

Я тоже думал о том чтобы 5 анимаций одной модели были в 5ти файлах, возможно это реализовать как в этом примере только для 5ти анимаций?

moka 02.01.2007 00:43

Re: Анимации. Как загрузить много анимаций?
 
Да возможно, но зачем? Если у тебя глав. персонаж, то лучше всё в одном файле, это экономнее и удобнее. А если у тебя будет что-то подобие стратежки или рпг, где будут одинаковые скелеты, и для них анимации, то это как скин получается, тогда лучше делать модельки, и отдельно анимационные скелеты, которые и загружаются подобно как в примере.

Nunan 02.01.2007 17:29

Re: Анимации. Как загрузить много анимаций?
 
В 3дмаксе есть такое свойство анимации что он сглаживает её. Тоесть если мне надо сделать в диапозоне 1-50 анимацию "стоит" а в диапозоне 51-100 анимацию "встаёт" то получается что в 50м кадре и в 51м должен быть разрыв, который не должен быть сглажен. ... Надо будет посмотреть как там в 3дМаксе убрать сглаживание.

Ещё.
Да я делаю анимацию скелета человека.
Далее я хочу сделать разные модели этих людей и чтобы они двигались используя этот скелет.
Я с этим первый раз имею дело, тоесть сейчас в первый раз открываю это для себя.
Как это сделать?
Я это представляю так:
есть файл во всеми анимациями (скелет)
есть файлы каждой части тела (ноги, руки, тело...)
каждая часть тела становится Chield-ами для соответсвующей части скелета, тоесть её принимает координаты.

Или лучше модель тоже сделать в одном файле, а потом выделить от туда каждую часть?

avel 04.01.2007 04:39

Re: Анимации. Как загрузить много анимаций?
 
2MoKa или кто знает.
Ответьте пожалуйста.
Цитата:

Сообщение от MoKa
[code]
есть и md2, анимационные комманды.

А возможно в md2 несколько моделей сочетать, а не одну цельную?
Можно ли в нем экспортировать много кадров анимации? У меня, почему-то, 140 максимум.
И почему он экспортируется зеркально?
Цитата:

Сообщение от MoKa
[code]
тогда лучше делать модельки, и отдельно анимационные скелеты, которые и загружаются подобно как в примере.

А это вообще как в блице реализовать, чтобы анимационный скелет был отдельно от модели? Расскажи подробнее.
Возможно ли, наложить анимационную последовательносить, когда модели слегка отличаются? (оружие другое или еще чего...)
Заранее благодарен, avel/

ЛысыЙ_Чук-Иванчук 04.01.2007 19:29

Re: Анимации. Как загрузить много анимаций?
 
Цитата:

А это вообще как в блице реализовать, чтобы анимационный скелет был отдельно от модели? Расскажи подробнее.
Возможно ли, наложить анимационную последовательносить, когда модели слегка отличаются? (оружие другое или еще чего...)
Заранее благодарен, avel/
Вообще просто, тут я использую- B3D. Создаеш главный файл Модель +Скелет(все кости превязаны, и точно настроены!!!). Затем экспортируеш его правельно(дело в том что при экспорте нужно правельно паставить галочки(как я парился- ух кипел)). Далее создаеш создаеш анимацию удаляеш ВСЕ кроме Костей, И все.......;):)

moka 05.01.2007 01:41

Re: Анимации. Как загрузить много анимаций?
 
md2 - это не скелетная анимация, это повертексная, и уже почти забытая. Желаю и вам забыть о ней.
vlad - это он о 3Д Максе.
avel - да возможно, я с этим точно не работал, но примерно скажу, своё об этом представление. Сперва глянь вот это, из 3 сообщения Нунена:
Цитата:

mesh_3ds=LoadAnimMesh("makbot\mak_robotic.3ds");an im seq 0
LoadAnimSeq(mesh_3ds,"makbot\mak_running.3ds");ani m seq

Видишь, анимация загружена из отдельного файла. Как я представляю себе это, то первая модель это модель со скилетом и привязоными к костям точками. А вот в файле, только скилет, где названия костей, индентичны названию костей в моделе со скелетом, но в этом файле, нету модели, там только тот-же скелет, но с анимацией.
Относительно анимированию, частей тела, есть команда, которая поворачивает и двигает определённую кость, но это программно, реализовать можно, но написав свои функции, если подумать, не слишком и сложно.
Но если анимировать, каждую часть тела? Зачем, так нигде не реализовано! Например HL2, там ниже пояса, и выше, а голова програмно + тело может отправится в безанимационное состояние - только физика. Обычно так и делают в последних новинках.

Относительно разным моделям, и одинаковой анимации, конечно можно что-бы разные модели были, зачем тогда делать анимацию отдельно?

HolyDel 05.01.2007 03:01

Re: Анимации. Как загрузить много анимаций?
 
кста. loadAnimSeq возвращает номер секвенции, что очень удобно.

moka 05.01.2007 03:48

Re: Анимации. Как загрузить много анимаций?
 
Да тоесть, получется подобно с работой мд2.

Насчёт экспорта анимации из 3д макса, ну когда анимация плавная, с этим должно быть где-то там лекарство.

Diplomat 05.01.2007 11:43

Re: Анимации. Как загрузить много анимаций?
 
2 MoKa : .MD2- это самый быстрый формат для Блица, не терпящего большого количества обьектов вообще, и как следствие костей в частности. В случае, если необходимо большое количество сложных "многочайлдовых" анимированных обьектов- вертексная анимация .МД2 остается единственным выходом. Поэтому забывать ёё, в отличии от .Х и .ЗДС не рекомендую.
;)

moka 05.01.2007 11:46

Re: Анимации. Как загрузить много анимаций?
 
Цитата:

МД2 остается единственным выходом
А вот и не соглашесь я с вами, если есть ручки, то небольшие 2-3 функции, сделают это и с b3d ;)

Diplomat 05.01.2007 12:31

Re: Анимации. Как загрузить много анимаций?
 
Обоснуйте (с)

moka 05.01.2007 13:50

Re: Анимации. Как загрузить много анимаций?
 
Пишем, с нуля, скелет, анимацию, свой формат, и всё будет!

Diplomat 05.01.2007 15:19

Re: Анимации. Как загрузить много анимаций?
 
Цитата:

Пишем, с нуля, скелет, анимацию, свой формат, и всё будет!
Шановний, це ганьба! (с)
Ты меня просто не слушаешь и говоришь в сущности глупости.

Как формат .БЗД вполне хорош: его минус- это разве что ограничение влияния одна-кость-на-вертекс. Но Блиц тормозит при увеличении количества обьектов в мире, а анимированный БЗД состоит из множества обьектов: это и чайлды модели, и кости.
МД2 же- это единый обьект. Тесты производительности БЗД и МД2 уже были, в т.ч. и я приводил их еще на старых Блицгеймсах: потери скорости БЗД впечатляют.
Потому новый формат с костной анимацией в Блице ничего не изменит: МД2 всё равно будет выигрывать в скорости в разы, и тем больше, чем сложней будет требуемая анимация модели.

P.S. Давайте не будем безосновательно флудить?

Raiter 05.01.2007 16:21

Re: Анимации. Как загрузить много анимаций?
 
мд2 рулит! это точно! и не только по скорости! а и по удобству обращения с ним! можно легко задавать ключи анимации которые нужно проигрывать. и не нужно отдельно грузить скелет и т.д. всю анимацию можно производить одним оператором!

jimon 05.01.2007 17:10

Re: Анимации. Как загрузить много анимаций?
 
Raiter
MD2 ето пережиток прошлого
скелетная анимация ето то что нам надо сейчас
заанимировал один скелет и 200 разных моделей тоже уже имеют анимацию

ps. что тебе мешает поместить скелет и всю анимацию с мешем в один файл ?

Diplomat 05.01.2007 17:46

Re: Анимации. Как загрузить много анимаций?
 

Цитата:

MD2 ето пережиток прошлого
скелетная анимация ето то что нам надо сейчас
Не могу согласиться. "То, что нам нужно сейчас"- это то, что наиболее эффективно решает поставленную в данный момент задачу. А кости в Блице лучшим образом решают поставленные задачи далеко не всегда.

HolyDel 06.01.2007 01:35

Re: Анимации. Как загрузить много анимаций?
 
Diplomat+1

avel 11.01.2007 06:37

Re: Анимации. Как загрузить много анимаций?
 
2vlad
Спасибо, попробую.
2MoKa
за ответ благодарю, вот только какой в 3дс формате может быть скелет? Там для анимации нужно все части дела делать из отдельных кусков. А насчет лекарства неонял: там - это где?
насчет программного задания анимации: пробовал получается некрасиво для шутера еще нормально, а для рпг или спортивных симуляторов неподходит совершенно.
2jimon
200 моделей и один скелет это то, что мне и надо (не всмысле модели нужны, они-то у меня есть :) ), только как это в блице реализовать? да чтобы еще анимация была плавная, а модель по возможности реалистичная, что предполагает ее цельность.
ВСЕМ
народ подскажите мне однувещь, а то я уже совсем запутался какой формат мне лучше использовать и что с ним делать.
Задача такая: есть модель сделанная в 3дмаксе, еще несколько подобных моделей и скелет с анимацией большого числа движений. Есть игрушка, написаная на блице, которую я не могу закончить из-за подобных нюансов. Она представляет собой стратегию реального времени типа диабло или титан квеста, но со всякими примочками в виде головоломок, пошагового боя, эпических битв сбольшим числом войнов, возможностью строить и др. мне надо, чтобы в игре были качественые модели, сочетающие в себе возможность нескольких движени, которые будут примерно одинаковые для всех. приближенность камеры достаточно близкая, поэтому нужна повертексная анимация (развивающийся плащ, например) и возможность изменять некотоые части модели (смена молотка на топор у рабочего, например).
Вопрос:
Как мне это все реализовать. Конкретно какой формат выбрать и как в блице это все прописать?
Заранее всем благодарен, avel.

ЛысыЙ_Чук-Иванчук 11.01.2007 08:57

Re: Анимации. Как загрузить много анимаций?
 
Цитата:

2vlad
Спасибо, попробую.
Попробовать ты попробуенш, но скорее всего тебе самостоятельно неполучится разобратся с галочками:)
Так-чо если неполучится спрашивай.....
Цитата:

Заранее всем благодарен, avel.
Благодорить будеш потом, кнопочкой THANKS

Nunan 11.01.2007 18:50

Re: Анимации. Как загрузить много анимаций?
 
avel, использовать систему скелетов не сложно.
Сначало делаешь скелет с четко названными именами каждого обьекта скелета, например
тело - "body"
руки: "arml1" "arml2" "arml3" "armr1" "armr2" "armr3"
ноги: "hl1" "hl2" ...
голова - "head"

Называть обьекты надо в 3дМаксе в обычном поле - там где пишутся названия обьектов.

Потом ты загружаешь скелет в Блитце.
Теперь ты должен "распознать" обьекты из скелета по их именам, с Блитце есть специальная функция
FindChield(entity,name$)
Вот...
ты делаешь так:
arml1=FindChield(skelet,"arml1")
и так далее.
Теперь ты можешь в любое время определять Позицию каждой части скелета и его повороты.
А потом ты просто берёшь нужную деталь человека и они просто каждый кадр принимает позицию и углы соотвествующей части скелета.
PositionEntity skin_arml1,EntityX(arml1),.....
кажется функция EntityParent skin_arml1,arml1 не сработает (я кажется пробовал, но могу и ошибатся).


Ещё можно выделить обьекты из скелета функцией skelet_parts(i)=GetChild(skelet,i) где i - номер обьекта в скелете, его я не знаю как узнать, можно просто методом подбора понять какая часть у тебя скелета находится под какими номерами. После GetChild ты можешь применить функцию EntityParent skin_parts(i),skelet_parts(i), и у тебя постоянно будут твои части тела будут привязаны к костям. В любое время ты их можешь убирать и ставить новые.

Оружие ты тоже просто делаешь Chieldом обьекта "кисть" и оно будет летать за кистью.

avel 17.01.2007 03:00

Re: Анимации. Как загрузить много анимаций?
 
2vlad
ты оказался прав. разобраться с галочками у меня не вышло, причем не из-за того, что там так все сложно, а из-за того, что у меня экспортер глючный. вылетает зараза раз за разом (о, блин, каламбур получился! :) ). Поэтому спрашиваю:
во первых подскажи если не трудно, где достать нормальный экспортер для шестого 3ДМакса.
во вторых чего делать с галочками?
обещаю отThanks'ить тебя обязательно!
2Nunan
спасибо за столь подробный ответ. тебе, кстати, тоже Thanks от меня. но вообще-то я это все уже знал и пробовал воспользоваться этим. В моей игрушке использовать модели, состоящие из частей неполучится, потому, что они расположены близко к камере и это будет видно. мне бы хотелось узнать про скелет для цельной модели.
я думаю, что буду использовать костную или морфинговую анимацию. вот только все время какие-нибудь проблеммы возникают. прочитай повнимательнее мое предыдущее сообщение и ответь на мои вопросы если сможеш. буду очень благодарен.
всем
народ я по прежнему жду вашей помощи!
поднимите глаза чуть выше, точнее на предыдущую страницу и ответьте мне если не сложно. заранее всем благодарен, avel.

HolyDel 18.01.2007 02:20

Re: Анимации. Как загрузить много анимаций?
 
в первый файл сохраняется модель со скелетом (как не знаю).
в остальные файлы сохраняется анимация ЭТОГО скелета. кости можно сделать прозрачными.
тогда получается что-то вроде набора файло
maks_mesh.b3d - где скелет и сетка модели
maks_run.b3d - в этом файле сохранена анимация бега
maks_idle.b3d - в этом файле сохранена анимация простоя
maks_die.b3d - в этом файле сохранена анимация смерти
и.т.д

далее ето дело грузится в блитх
mesh=loadanimmesh("maks_mesh.b3d") ;Грузим саму модель
run=loadanimseq("maks_run.b3d); Грузим анимацию бега
и т.д.
при этом в переменную run записывается 1, в следующую 2 и т.д. это просто номер секвенции.
теперь чтобы заставить играть определенную анимацию надо писать Animate mesh,1,1,run - для анимации бега
и т.д.
про галки ниче не знаю ибо не моделлер, но когда надо было сэкспортировал со второго раза, ибо вроде все понятно.


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

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