Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
Страница 1 из 11
Форум разработчиков игр » Полезные статьи, Примеры и Исходники » 3D Rad » (Урок) FrameByFrame (Сложно)
(Урок) FrameByFrame
_¿_ Дата: Вторник, 01.01.2013, 10:00 | Сообщение # 1
( Und doch niemand nicht wird. )
Просмотр профиля: _¿_

Сообщений: [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
Форум разработчиков игр » Полезные статьи, Примеры и Исходники » 3D Rad » (Урок) FrameByFrame (Сложно)
Страница 1 из 11
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2016 Хостинг от uWeb
Топ Разработка игр Рейтинг@Mail.ru