Авторизация Регистрация Забыли пароль?
Реклама

Коммутаторы доступа Eltex предлагают широкий функционал для управления сетевым трафиком.

Статьи
Наш игровой сервер
Наши сервисы
Мониторинг серверов
Информация
Нам интересно знать
Популярные теги
Популярные материалы
    Партнеры
    Счетчики
    Вы находитесь:

    Категория: Статьи

    Анимация в Milkshape 3D

    Автор: Viruse

    Дата: 8 марта 2011

    Просмотров: 1 189

    Комментариев: 9

    Для точного проведения эксперимента нам понадобятся следующие инструменты: Milkshape 3D 1.7.0, CS 1.6 и файл v_awp.mdl (модель AWP которую видит игрок у себя в руках на виде от первого лица). Предупреждаю, все это необходимо для того чтобы вы могли делать все в точности так, как написано в данном мануале, если нет каких либо компонентов, читайте далее и пытайтесь сделать по аналогии с тем, что есть у вас.
    Выбираем модель которую необходимо анимировать. В данном примере я выбрал стандартную AWP из CS 1.6. Распаковал ее при помощи плагина Kratisto's Half-Life MDL Decompiler v1.2, который идет в стандартном наборе Milkshape 3D 1.7.0 (Tools -> Kratisto's Half-Life MDL Decompiler v1.2). Если вы анимируете свою собственную модель, а не переделываете анимацию уже существующей модели, то разумеется распаковывать вам ничего не нужно. Хотя вам всеравно придется где-то достать стандартные анимации для вашей модели. Короче распаковали, смотрим что внутри, внутри стандартной v_ модели awp из CS 1.6 (v_awp.mdl) мы видим 23 файла. 13 текстур, 1 скрипт компиляции (v_awp.qc), 1 модель оружия + скелеты оружия и рук (f_awm_template.smd), 2 модели рук - это нововедение в CS 1.6 модели рук находятся теперь в разных файлах и в отдельности от основной модели оружия, причем на этих моделях нет скелета, скелет находится в файле модели оружия см. выше (lhand.smd и rhand.smd) и 6 файлов анимаций, они то нам сегодня и понадобятся, а в частности для примера понадобится 1 файл, анимация перезарядки (reload.smd). Импортируем модель со скелетом в милкшейп, также импортируем модели рук (File -> Import -> Half-Life SMD..., либо File -> Open. Зависит от того в каком формате вы сохранили модель). В появившемся окне "SMD import" убираем последнюю галочку "Rename Bones", чтобы сохранить стандартные названия костей

    Анимация в Milkshape 3D


    Импортируем файл стандартной анимации к нашей модели (File -> Import -> Half-Life SMD...). В появившемся окне вам предложат дописать текущую анимацию к уже существующей анимации "Do you want to append the animation at the end of current animation?". Так как анимации до этого не было выбираем НЕТ, это удалит уже существующие 30 пустых кадров.

    Анимация в Milkshape 3D


    Далее на кифреймере нажимаем кнопку [Anim],

    Анимация в Milkshape 3D



    кифреймер включается\отключается из меню (Window -> Show Keyframer),

    [center]Анимация в Milkshape 3D


    и приступаем собственно к анимации. Можете посмотреть стандартную анимацию, двигая ползун кифреймера или при помощи кнопки [>] (Play Forward).

    Анимация в Milkshape 3D


    Но для начала наверное следует объяснить сам принцип работы анимации в Милкшейпе и в формате SMD в частности. Анимация в милкшейпе состоит из кадров и кифреймов. Число кадров определяет длинну анимации. Для увеличения\уменьшения кадров в анимации просто пишем нужное число фреймов в окне Total Frames.

    Анимация в Milkshape 3D


    В CS за одну секунду мы видим 30 кадров, то есть анимация в 88 кадров (перезарядка AWP) длится 2,9 сек. Ну с кадрами думаю понятно. И что теперь, нужно анимировать каждый кадр перезарядки? Все 88 штук! НЕТ! И помогут нам облегчить работу - кифреймы. Кифрейм - это ключевой кадр в анимации, то есть кадр в котором находится пиковое положение, определенная поза модели. Для примера рассмотрим все ту же перезарядку AWP, в анимации которую мы сделаем будет всего 14 кифреймов. Внимание: в SMD файле все кадры являются кифреймами. При создании анимации необходимо гораздо меньше кифреймов чем содержится в SMD. Тоесть само движение скажем руки из одного положения в другое(снизу вверх), может содержать всего 2 кифрейма, 1 - рука внизу, 2 - рука вверху. Между ними будут обычные кадры которые сами заполнятся промежуточными фазами движения. Чем больше простых кадров, тем дольше будет двигаться рука. В SMD же все кадры между двумя этими кифреймами после компиляции так же станут кифреймами.

    Анимация в Milkshape 3D


    Для того чтобы создать новую анимацию нам нужно удалить все кифреймы кроме первого. Для этого ставим ползун кифреймера на второй кадр анимации. И используем следующий пункт меню Animate -> Delete Keyframe (удалить кифрейм), переходим на третий кадр и повторяем операцию, затем на четвертый и так далее до 88го. Остается только первый кифрейм. После удаления у нас получается болванка для новой анимации - руки сжимающие винтовку.

    Анимация в Milkshape 3D


    Далее нам понадобится 2 самых главных инструмента для работы - мозг и воображение. Необходимо представить движение рук во время перезарядки. После того как движение готово, начинаем его материализовывать через Милкшейп.
    Если Вы следовали советам данного туториала, то кнопка [Anim] на кифреймере у Вас уже нажата. Теперь двигаем ползун кифреймера на 13 кадр, или пишем в левом окошке кифреймера (Current Frame) номер кадра - 13.0. Мы перешли на пустой кадр номер 13, тоесть первое движение будет длинной в 13 кадров.

    Переходим на закладку "Model", нажимаем кнопку [Select], в опциях нажимаем кнопку [Joint].

    Анимация в Milkshape 3D


    Этим мы указываем программе на то, что мы будем производить какие то действия с суставами. Выбираем сустав (Joint), который мы будем крутить/двигать. Сустав - это основная единица скелета модели. Обозначаются на видах синими сферами, соединенными между собой желтыми пирамидами. Их можно спрятать\показать на закладке "Joints" -> "Show Skeleton". Так же на закладке "Joints" можно выбрать сустав из списка, что позволяет быстро найти определенный джоинт на модели.

    Анимация в Milkshape 3D


    Для удобства можно уменьшить размер суставов. Размер джоинтов устанавливается в меню File -> Preferences... -> Misc -> Joint Size (по умолчанию имеет значение 1.000000, в примере я использую размер 0.250000)
    Но вернемся на закладку "Model". Выбираем мышью на одном из видов первый сустав правой руки (в списке джоинтов он называется Bone04). Если все сделали правильно, то выбранный сустав становится красного цвета, все суставы идущие за ним становятся зеленого цвета. Далее нажимаем кнопку [Move] и двигаем руку так чтобы кисть оказалась под магазином винтовки, создаем первую фазу движения.

    Анимация в Milkshape 3D


    Боец подвинул руку к магазину, теперь необходимо cжать ему пальцы, чтобы взять магазин. Но сначала необходимо зафиксировать эту позу. Важно!!! Перед сохранением необходимо отключить пункт меню Animate -> Operate On Selected Joints Only, для того чтобы сохранить всю позу целиком, а не только движение пальца выбранного последним. Открываем меню Animate и выбираем пункт Set Keyframe, или нажимаем Alt+K. Все первое движение готово. Можете подвигать ползуном от первого кадра до тринадцатого, чтобы посмотреть что получилось. Если не нравится, удаляем кифрейм номер 13 (Animate->Delete Keyframe) и начиаем анимировать заново. Как узнать что кифрейм поставился? Очень просто, если подвигать ползуном в режиме анимации, при прохождении кифрейма, на видах, все кости задействованые в этом кифрейме выделяются желтым цветом. Не забывайте ставить кифрейм, это очень важно, так как вы можете потерять созданную вами фазу движения, если забудите поставить кифрейм и начнете делать следующую фазу. Ок первый кифрейм есть.

    Далее двигаем ползун кифреймера еще на один кадр. И продолжаем начатое движение. Суставы пальцев правой руки располагаются в списке c Bone28 по Bone45. Точно также Select'ом выбираем один сустав, Rotate'ом поворачиваем его так, чтобы палец согнулся, для этого главное точно определить оси по которым нужно гнуть пальцы ), остальные можно отключить (кнопки [X],[Y] и [Z] соответственно), затем следующий палец, и т.д. пока боец не возьмет рукой магазин. Причем чтобы получить нормальную человеческую позу, пальцы придется гнуть на всех трех видах. Будем считать что с первым серьезным заданием Вы справились и у Вас получилась нормальная поза, рука живого человека, держащая магазин винтовки (хотя с первого раза врядли у кого то получится, у меня по крайней мере не получилось, ну да ладно, практика практика и еще раз практика), а не клешня трупа замученного бесчеловечными пытками.

    Анимация в Milkshape 3D


    Ставим второй кифрейм и фиксируем тем самым вторую фазу движения.

    Двигаем ползун на 17 кадр. Выбираем первый сустав левой руки (Bone01) и чуть-чуть наклоняем руку с винтовкой вниз используем для этого кнопку [Rotate]. На столько же опускаем правую руку.

    Анимация в Milkshape 3D


    Ставим кифрейм.

    Переходим на 19 кадр. Поворачиваем руку с винтовкой на прежнее место, рука и магазин остаются на месте.

    Анимация в Milkshape 3D


    Ставим кифрейм. Смотрим получившуюся анимацию. Боец отсоединил магазин от винтовки, винтовка немного дрогнула от приложенного усилия.

    Переходим на 38 кадр. Перемещаем правую руку вниз (Bone04). Вставляем в нее магазин (Bone48).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец вынул и выбросил пустой магазин.

    Переходим на 41 кадр. Поворачиваем руку с винтовкой против часовой стрелки (Bone01) Снова вставляем магазин в руку, так как он повернулся вместе с винтовкой (Bone48).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец взял винтовку поудобнее и приготовился для вставки магазина.

    Переходим на 47 кадр. Поднимаем руку вместе с магазином на уровень винтовки, но так чтобы она была немного в стороне и поворачиваем ее так чтобы кисть оказалась сверху магазина (Bone04, Bone48). Можно немного отогнуть кисть с магазином назад (Bone_Righthand).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец приготовился вставить в винтовку новый магазин.

    Переходим на 64 кадр. Вставляем магазин (Bone48) в винтовку и двигаем правую руку так, чтобы она расположилась на магазине (Bone04).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец готов дослать магазин в винтовку.

    Переходим на 67 кадр. Поворачиваем руку с винтовкой немного в сторону (Bone01) двигаем руку с раскрытой ладонью так чтобы она касалась магазина (Bone04).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец дослал магазин в винтовку и рука с винтовкой немного покачнулась в сторону от приложенного усилия.

    Переходим на кадр 68. Немного поворачиваем обе руки в противоположную сторону (Bone01, Bone04).

    Анимация в Milkshape 3D


    Ставим кифрейм. Руки вернулись в положение покоя.

    Переходим на 77 кадр. Поворачиваем руку с винтовкой по часовой стрелке, но не перпендикулярно земле, а оставляем ее всеравно немного наклоненой (Bone01). Правую руку (Bone04) отводим в правую сторону и выпрямляем кисть (Bone_Righthand).

    Анимация в Milkshape 3D


    Ставим кифрейм. Боец почти вернул руку на цевье и выпрямил винтовку.

    Переходим на последний 88 кадр. Последний кифрейм делается следующим образом: Двигаем слайдер кифреймера на первый кифрейм, копируем его (Animate -> Copy Keyframes), двигаем слайдер на последний 88 фрейм, вставляем сюда скопированный первый кифрейм (Animate -> Past Keyframes) и устанавливаем в этом последнем фрейме кифрейм (Animate -> Set Keyframe).

    Анимация в Milkshape 3D


    Все боец выпрямил винтовку и положил руку на цевье. Анимация готова. Сохраняем. Либо экспортируем в SMD. (File -> Export -> Half-Life SMD...) Выбираем наш reload.smd и в появившемся окне "SMD Export" выбираем пункт "Sequence".

    Анимация в Milkshape 3D


    Тем самым говорим милкшейпу, что мы хотим сохранить анимацию, а не файл со скелетом (саму модель). После того как анимация сохранена, необходимо ее исправить вручную, из-за ошибки в программе Милкшейп 1.7.0 возникает ошибка при компиляции. На момент написания статьи никакими средствами Милкшейпа эту ошибку мне устранить не удалось, надеюсь автор исправит ее в будущих версиях программы. Открываем наш файл анимации (reload.smd) в любом тестовом редакторе. Ищем в нем строку "time 1", без кавычек и заменяем ее на time 0, далее ищем time 2 и меняем на time 1, time 3 на time 2 и так далее пока не поменяете все строки с time. Нужно чтобы первая строка была time 0, а не time 1, так что если у Вас первая найденная строка - time 0, то ничего менять не нужно. Сохраняем. Все можно компилировать.

    Автор статьи: Gh0St
    Ключевые слова: mdl Вернуться
    Похожие публикации
    Комментарии на сайте
    Букинатор

    Написал: Букинатор 8 марта 2011 10:20 Группа: Юзер
    Читать лень!Но много написано сразу видно старался:)
    Цитировать
    Viruse

    Написал: Viruse 8 марта 2011 10:31 Группа: VIP
    нз)
    Цитировать
    realost

    Написал: realost 8 марта 2011 13:20 Группа: VIP
    кто то еще этим занимается, а в совместительстве с мапмейкингом вообще таких красот добиться можно
    Цитировать
    eIIT.

    Написал: eIIT. 8 марта 2011 13:36 Группа: Юзер
    ППЦ аж читать долго представляю скока поработал над статейкой )) спссибо))
    Цитировать
    Bos93

    Написал: Bos93 8 марта 2011 13:37 Группа: Юзер
    Viruse,молодец.Спасибо.
    Цитировать
    Viruse

    Написал: Viruse 8 марта 2011 14:48 Группа: VIP
    smile
    Цитировать
    Jaguar_king_krg

    Написал: Jaguar_king_krg 10 марта 2011 10:26 Группа: Юзер
    a gde ska4at ?
    Цитировать
    Az3roT

    Написал: Az3roT 15 марта 2011 13:37 Группа: Юзер
    GooD ! +1
    Цитировать
    Arsele

    Написал: Arsele 30 марта 2011 13:40 Группа: Юзер
    Viruse - моделлер сайта
    Цитировать
    Новый комментарий

    Информация

    Посетители, находящиеся в группе lamo, не могут оставлять комментарии к данной публикации.