_¿_ |
Дата: Вторник, 01.01.2013, 10:00 | Сообщение # 1 |
Сообщений: [1192]
|
Всего существует два вида анимации - костная и по-кадровая.Оба из них оптимизированы для 3d Rad версии 6.22 и выше. Только вот костная анимация офицально-обновляема и оптимизирована в отличии от по-кадровой.Изначально в 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; - обозначает начало анимации, с какого кадра она начинается, параметр 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; } } И так же снимаем галочку Active в настройках. У нас уже настроены 2 анимации, не буду вас мучить кото-васией и сразу это завершим: Добавляем последний EOI (EOI Stand) и последний Script (назовем его ScriptStand). В скрипте прописываем код уже со статичными значениями: Код void Main() {
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 Удар. Спасибо что дочитали урок до конца, надеюсь я вам помог! =)
Сообщение отредактировал: _Лопатин_Сергей_ - Суббота, 23.03.2013, 12:09 |
|
| |