Frame by frame в 3d RAD
[ Поделиться ]
[ Спасибо! ]
|
10:05
Только вот костная анимация официально-обновляема и оптимизирована в отличии от по-кадровой.Изначально в 3d Rad не было
поддержки по-кадровой.И до сих пор она не до конца оптимизирована. На данный момент я выпустил серию уроков по анимации
но давайте заострим свое внимание на по-кадровой анимации. По-кадровую анимацию иначе называют - frame by frame. Если
переводить точно то это звучало бы как - кадр за кадром. Если быэто был бы 2d спрайт то такое название было бы по мне как
актуально , но тут мы имеем дело с 3d RAD и 3d моделями - здесь наши кадры это mesh-и. У Frame By Frame анимации есть несколько
недоработок и недостатков по сравнению со скелетной анимацией.К примеру это излишний вес - каждый кадр это отдельно-взятая модель
запомните это - это важно и еще как пригодится.Вес средней модели до 1 мегабайта, а вот количество кадров для стандартной не-тормозящей
анимации превышает 140 итого нам на одну модель придется затратить до 200 мегабайт.С учетом того что в среднем проекте не менее сорока
моделей живых персонажей то я боюсь сказать какой будет у нас вес.Вторая наша проблема это тормоза.Не забываем что каждый наш кадр это
отдельно взятая модель и в этом вся проблема.Представьте себе ситуацию - на карте используются до 30 моделей одновременно + не анимированые,
С учетом количества моделей на кадр то одновременно вашему компьютеру придется воспроизводить до 1500 моделей + не анимированые. Вот тут то
и сказывается отсутствие оптимизации и правильно проработанного баланса.Видно что появилась функция frame by frame благодаря многим энтузиастам.
Итого мы имеем простой способ создания анимации,но с предельно большим весом и отсутствием оптимизации.
Что-же - разобрались что к чему, и если же вы все же в силу незнания скелетной анимации будете использовать frame by frame анимацию в своем проекте
то я просто обязан продолжить урок чтобы пояснить принцип работы и устройства такого подвида анимации...
Урок по созданию frame by frame анимации есть на сайте.Тут же я объясню как заставить эту анимацию "работать на нас".
Назначив управление нам понадобится чтобы модель воспроизводила нужные анимации в нужное время.Для этого существуют тумблеры которые устроены так
называемыми переключателями on и off . Таких объектов в 3d RAD просто не существует но мы можем настроить другие объекты не предназначенные
для этого под наши собственные нужды.Мы будем работать с объектами Event on Imput и совсем чуточку скрипта (даже поясню как он работает). Что-же ну-с
приступим !?
Заранее предупреждаю, я сначала объясняю что сделать для того чтобы добиться результата, все действия идут равномерно шаг-за шагом,они тестировались на движке и если вы выполните что-либо неправильно то все может работать некорректно , в конце урока после того как я объясню что делать я поясню как это работает и что вообще мы делали. Урок сопровождается изображениями и пояснениями к действиям и их функциям.Урок очень сложный но я даю пояснения, удачи вам!!!
Начнем?
Допустим у нас есть какая либо модель анимированная способом frame by frame. Она состоит из шести кадров:
с первого по третий - анимация шага
с четвертого по шестой - анимация удара
кадр ноль - персонаж стоит без действия
Добавляем нашу модель в 3d Rad , затем добавим Event on Imput (EOI). Для удобства (потом понадобится) переименуем наш EOI например в "Шаг".
Добавляем объект Script (Скрипт),в настройках снимаем галочку с Active и прописываем сам код:
Код
void Main()
{
if (IN_1<5)OUT_0=1;
if(IN_1>=3)
{
OUT_0=1;
}
}
{
if (IN_1<5)OUT_0=1;
if(IN_1>=3)
{
OUT_0=1;
}
}
Поясняем:
if (IN_1<5)OUT_0=1; - обозначает начало анимации, с какого кадра она начинается, параметр OUT_0 - переменное значение.
if(IN_1>=3) - эта строка обозначает кадр конечный, то-есть до какого кадра будет идти анимация
OUT_0=1; - а эта строчка обозначает обратный переход к тому кадру с которого начали, переменное значение 1 ставим такое-же как и в первой строке
для корректного отображения.
Соединяем EOI со скриптом.
Соединяем модель со скриптом.
Теперь откроем окно настройки и выставляем параметры EOI:
Поясняем параметры:
script - START on imput (в окне выше извиняюсь выставил неверный параметр)
скрипт - запустить при нажатии.
Skin Mesh - ignire
Скин Мэш - игнорировать (нам он не нужен тут)
Теперь добавляем второй EOI , назовем его "Удар" и соединим с script.
В настройках указываем скрипт как "Stop on imput" (Остановить при нажатии), ну и еще ставим нужную нам
клавишу.
Добавляем второй скрипт и чтобы не перепутать с первым назовем его например script(Удар), так же соединим
с нашим Skin Mesh.В нем прописываем тот же код но уже с другими значениями
(параметры начала и конца другой анимации):
Код
void Main()
{
if (IN_1<5)OUT_0=4;
if(IN_1>=6)
{
OUT_0=4;
}
}
{
if (IN_1<5)OUT_0=4;
if(IN_1>=6)
{
OUT_0=4;
}
}
И так же снимаем галочку Active в настройках.
У нас уже настроены 2 анимации, не буду вас мучить кото-васией и сразу это завершим:
Добавляем последний EOI (EOI Stand) и последний Script (назовем его ScriptStand). В скрипте прописываем
код уже со статичными значениями:
Код
void Main()
{
if (IN_1<5)OUT_0=0;
if(IN_1>=0)
{
OUT_0=0;
}
}
{
if (IN_1<5)OUT_0=0;
if(IN_1>=0)
{
OUT_0=0;
}
}
Соединяем с моделью и EOI и НЕ-убираем галочку Active. В EOI ставим клавишу Enter или любую другую которая нам не нужна и
ставим галочки на режимах Continios (Продолжительный) и дольше на Toggle Mode (Режим повтора).В параметрах устанавливаем
Script как Start on Imput.
Ну а теперь самая главная часть, соединяем ВСЕ СКРИПТЫ со ВСЕМИ EOI. И ставим настройки:
EOI Stand - ставим все скрипты кроме ScriptStand как Stop on Imput.
EOI Удар - ставим все скрипты кроме ScriptУдар как Stop on Imput.
EOI Шаг - ставим все скрипты кроме ScriptШаг как Stop on Imput.
Поздравляем мы завершили работу над настройкой Frame By Frame анимации!
Ну - что же мы черт побери сделали ?
Сейчас поясню. Мы создали EOI как тот самый on off кнопки, теперь EOI запускает и отключает скрипты. К примеру возьмем EOI Шаг, как происходит действие когда мы нажимаем на стрелку UP ? При нажатии на UP объект EOI останавливает все скрипты (Удар,Stand) и активирует скрипт "ScriptУдар" в котором прописаны кадры с какого по какой воспроизводить, когда мы отпускаем клавишу UP единственный постоянно-активный объект EOI Stand останавливает все скрипты кроме "ScriptStand" чтобы когда мы например сделали действие - наш герой не продолжал бегать на месте, остановиться. Тоже самое происходит и с EOI Удар.По такому сложному на вид и простому по принципу действия слаженному действию всех объектов мы получаем правильно настроенную Frame By Frame анимацию. Можете добавлять по принципу действия EOI Шаг
и EOI Удар и другие анимации дополнительно при этом настроив кадры вашей анимации в скрипте и поставив остановку этого скрипта в EOI Stand , EOI Шаг и EOI Удар.
Спасибо что дочитали урок до конца, надеюсь я вам помог! =)
Категория: 3D RAD | Просмотров: 3557 | Добавил: _¿_ (01.01.2013) | Рейтинг: 3.0/3 |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 2 | |
| |