У вас вопросы?
У нас ответы:) SamZan.net

NimNodeBlendPerBone это своего рода разветвление анимациина примере я буду использовать своего тестового персонаж и

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

Tuts 1 By Shaman ^_____^

Предисловие:
Данный Урок Скорее не урок а небольшой сборник информации по использованию AnimTree в коде
так же я Искренне надеюсь на то что вы уже знаете азы AnimTree, если же нет
то идём и учим :)

и так сегодня я хочу показать использование так называемой "AnimNodeBlendPerBone"
это своего рода разветвление анимации
на примере я буду использовать своего тестового персонаж и его анимацию стояния на месте
начну я с того, что же всё таки эта
AnimNodeBlendPerBone
это нода которая складывает 2 анимации воедино
как она это делает?
всё просто, как мы знаем любой Скелет строится на Иерархии костей
что значит, каждая кость происходит от другой кости, или же от корневой кости
корневая кость только одна поэтому скелет как бы то ни было похож на дерево

так вот, наша нода даёт анимацию выбранной кости а так же всей её ветки
которая идёт после неё
и так давайте уже от слов к делу
допустим у нас есть персонаж которому нужно разделить анимацию стояния на месте
на 2 разный

1)собственно сама анимация стояния на месте(Idle)
2)анимация стрельбы на месте из пистолета(
Fire)

открываем наш AnimTree и добавляем новую ноду
проживает она по таким координатам
NewAnimationNode\Filter \AnimNodeBlendPerBone

видим такую картину

как вы могли уже догадаться создаём новую SequenceNode
обзываем её анимацией выстрела у меня это
Fire1
далее подключаем все входы таким образом
нашу
Idle анимацию к Source входу
Fire1 к target(кстати вход вы можете переименовать нажав на него правой кнопкой затем NameInput)
вход
Out подключаем к нашей старой доброй AnimBlendByIdle
а саму ноду переименовываем в окне параметров в разделе
NodeName
в итоге должна получится примерно такая картина

далее переходим в окно свойств нашей ноды
и смотрим на параметр
Brunch StartBone
там тыкаем на +
и забиваем имя кости с которой должна проигрываться анимация выстрела
у меня это Bip001-Spine1
получается так что ноги нашего персонажа остаются на том же месте
а руки и корпус поворачиваются в стойку выстрела

на этом работа с самой AnimTree
закончена и теперь мы перейдём к программированию
но перед этим Обязательно поставим наш ползунок снова на 0
иначе стандартной стойкой будет уже заблендиная анимация..

и так весь урок я писал как раз ради объяснения как же всем этим управлять в коде
так Узрите же :D

проходим в на Pawn класс
и объявляем новую переменную


var AnimNodeBlendPerBone произвольное имя у меня(nameAnim);


далее мы можем поступить 2 способами(как минимум 2 :D)
можем создать функцию которая бы переходила в нужное положение ползунка
а можем поставить анимацию сразу на выстрел
не долго думая сделаем 2ое дабы избежать мне расспросов в личке :)

симулируем функцию выстрела
и запихаем в неё переключение ползунка на 1.00
после чего вернём её на место(функцию выстрела)

simulated function StartFire (byte FireModeNum)

{
// ShamAnimTest это то самое имя ноды которую мы указали в AnimTree
nameAnim = AnimNodeBlendPerBone(Mesh.FindAnimNode('ShamAnimTest'));
//1ое значение 1.0 определяет место ползунка в AnimTree
//2ое определяет скорость бленда анимации
nameAnim.SetBlendTarget(1.0,0.3);
//возвращаем функцию на место :)
Super.Startfire(FireModeNum);

}
всё окей кроме того что наша анимация начинает работу, но не заканчивает её
то есть теперь стойка стрельбы будет всегда когда наш персонаж стоит
так не должно быть
как можно догадаться мы сделаем всё тоже самое только в обратном направлении
на этот раз оперируем с функцией остановки огня
simulated function StopFire (byte FireModeNum)
{
nameAnim = AnimNodeBlendPerBone(Mesh.FindAnimNode('ShamAnimTest'));
nameAnim.SetBlendTarget(0.0,0.3);
Super. StopFire (FireModeNum);
}

вся эта система разумеется несовершенна, но она есть
и её можно ещё пожевать
на этом всё Всем Спасибо всем пока..


by Shaman




1. Тема 1 Философия её предмет и место в культуре человечества Картина мира и мировоззрение
2. КУРС ЛЕКЦИЙ ПО СТРАТЕГИЧЕСКОМУ МЕНЕДЖМЕНТУ
3.  Больной 38 лет упал ударился головой потерял на несколько минут сознание
4. Космополитизация мировой политики
5. Барановского Кафедра философских наук О С Н О В Ы
6. Погода. Элементы погоды. Комплексные типы погод. Предсказание погоды. Местные признаки погод
7. Как устроен наш язык Инструкция учащемуся
8. Экологические буклеты Буклеты представляют собой информационнопросветительский материал малой форм
9. Стафилококки
10.  Длина этапа 17 метров