Шестая часть туториала по созданию лука для игры Skyrim. В данной части рассматривается развесовка модели (скининг)
Cоздание модели лука для игры Skyrim
Часть 1 | Часть 2 | Часть 3 | Часть 4 | Часть 5 | Часть 6 | Часть 7
Приветствую вас. В этой части туториала я хочу остановиться на достаточно сложном моменте – скелетная привязка модели. Сложный он прежде всего из за своей нудности. Но обо всем по порядку. Для начала откроем сцену с луком в 3Ds MAX.
Далее в главном меню выберем Import и загрузим оригинальную модель лука.
Я предпочитаю брать простейшие модели. В данном случае – Steelbow.
Настройки импорта не так уж важны за исключением двух пунктов - Skin modifier и Import Skeleton
Загрузится модель лука.
Увы, она несколько меньше нашей. Поэтому отмасштабируем нашу модель лука под оригинал.
Три главных момента – точки на месте крепления тетивы, её центра и центр рукояти должны быть приблизительно на одном месте, так как анимация использует относительно одинаковые по пропорциям модели.
К сожалению, точки сгиба тетивы оригинальной и нашей не сходятся. Поэтому нужно пододвинуть нашу точку. Это обязательно. Поскольку изменения небольшие, то растяжка развертки не будет заметна.
Теперь рассмотрим внимательней то, что мы импортировали. Для этого пока что скройте наш лук.
То, что вы видите выше – собственно, скелет модели. Анимация в игре – влияние записанной анимации именно на скелет, а не на саму модель, а скелет уже связан с моделью. Скелет напоминает очертание модели и представляет собой набор контрольных точек-линий (костей). Все вертексы модели будут распределены на этих костях путем присвоения веса каждой вершине. Вес – сила влияния кости на данную вершину. 1 – 100% влияние. 0, соответственно, 0% влияние. Разброс веса идет в десятичных дробях. Одна вершина может быть привязана к нескольким костям, что и позволяет плавно деформировать модель при анимации. Как было сказано выше, единица – 100% влияния. Исходя из этого, можно понять, что лимит веса – 1. Больше суммарный вес быть НЕ МОЖЕТ.
Теперь разберем непосредственно скелет лука. Он состоит из 6 костей. Bow_StringBone1/2 – тетива. Bow_LoBone1/2 – одна сторона лука. Bow_UpBone1/2 – другая сторона лука. Седьмая кость - SteelBow.nif, собственно, сам лук. И последняя кость - Bow_MidBone – центральная часть лука, рукоять. Её заметить весьма проблематично, так как сама точка кости находится в точке Bow_UpBone2, а кость соединяет Bow_MidBone и SteelBow.nif (костью, по крайней мере нужной для развесовки, не является)
Красный - Bow_LoBone1
Оранжевый - Bow_LoBone2
Желтый - Bow_MidBone
Зеленый - Bow_StringBone1/2
Синий - Bow_UpBone1
Коричневый - Bow_UpBone2
Черный - SteelBow.nif
Теперь выберем стандартный лук и перейдем во вкладку модификаторов.
Edit Envelopes – Режим редактирования (и просмотра) Когда он включен – вы можете наблюдать резвесовку, выделяя нужную кость, выделять вершины (поставить галочку возле Vertices) и совершать прочие непотребства. Когда вы включите этот инструмент и выделите кости, то увидите следующее.
Это цветовое обозначение веса вершины. Серый – нет веса (0), синий – малый вес, красный – максимальный вес (1). Остальной вес отрисовывается в градации от синего до красного.
Что бы придать вес вершине, её необходимо сначала выбрать. Активировав Edit Envelopes, это можно будет сделать. Выделение происходит либо вручную (как обычно рамкой выделения) либо с помощью инструментов Ring, Loop, Grow, Shrink. Аналогичные инструменты есть везде, где есть вершины или их аналоги, поэтому останавливаться на них я не буду.
Выделенные вершины очерчиваются белой рамкой.
Изменяется вес на следующей панели.
Иконка с гаечным ключом вызывает меню Weight Tool.
Первые четыре кнопки относятся к выделению. Вторые – автоматические весы – 0, 0.1, 0.25, 0.5, 0.75, 0.9 и 1.
Set Weight и Scale Weight отвечают за более тонкую настройку веса выделенных вершин.
Set Weight устанавливает абсолютный вес на значение, указанное в поле ввода. По умолчанию - 0,5. бегунки внутри изменяют вес с шагом 0,05, +/- изменяет с шагом 0,05.
Scale Weight - это множитель, умножает вес вертекса на число в поле ввода, по умолчанию - 0,95, бегунки работают с шагом 0,05, а +/- увеличивает/уменьшает вес на 5%
Нижнее окно – список костей, у которых есть влияние на выбранные вершины. Перед названием указывается вес вершин на эти кости.
Вернемся в предыдущий свиток. Там осталось еще два инструмента – Weight Table и Paint Weight.
Paint Weight – придание веса вершинам с помощью кисти. Настройка этой кисти производится в меню, которое вызывается возле Paint Weight, если нажать на …
И Последнее – Weight table.
Сводная таблица всех костей, вершин и их взаимодействий. После окончания работы необходимо просмотреть эту таблицу – правильно ли всё сделано. Да и во время работы это полезный инструмент для правки веса. Если вы пролистаете таблицу назад, то обнаружите там 1726 наименований – вершин. В моем луке вершин более трех тысяч. В модели персонажа, например Алдуина, вершин еще больше. Разнообразие занятия можно себе представить. Но деваться некуда, это важный этап работы.
Вы можете подсмотреть общее расположение веса вершин на стандартной модели – оно будет подобное. Но есть существенное различие – оно связано с иной структурой нашего лука (другое положение тетивы, добавленные лезвия и т.д.) поэтому в некоторых местах сделать аналогичную развесовку не получится. Пример – тетива. Если вы сделаете так, как на оригинальном луке – она будет висеть в воздухе. Поэтому мы будем менять расположение развесовки под свои нужды. Поскольку стандартная анимация этого не предусматривает, заранее сказать, как будет правильно нельзя. Поэтому придется пробовать. Чтобы свести затраченное на проверку наших проб время, я предлагаю сделать следующим образом. Измените положение скелета в нем так, чтобы он приобрел форму лука при максимальном натяжении. Для этого нужно повернуть вершины (все, кроме MidBone). Перемещать их никуда не нужно.
Разворачивайте (Rotate) их и запоминайте ту величину, на которую развернули, дабы свободно затем вернуть всё на место. Я развернул следующим образом - Bow_LoBone1 и Bow_UpBone1 на 15°. Bow_LoBone2 и Bow_UpBone2 на 5°. Bow_StringBone1 и Bow_StringBone2 на 40°. Так же для точности можно импортировать в макс модель стрелы, подставить её к луку и, исходя из её длины, поправить расположение костей.
Запишите данные и верните всё в изначальное состояние. В идеале всё это не нужно. Для проверки качества развесовки загружается нужная анимация, она проигрывается, если развесовка плохая – это видно. Если хорошая – это тоже видно. Исправили, повторили. С моделями скайрима аналогично. Но открыть анимацию натягивания лука мне не удалось. При этом та же анимация арбалета без всяких махинаций проигрывается что в NifScope, что при экспорте в 3Ds MAX. Я предполагаю, что эта анимация находится в файле BowProject.hkx, но экспортировать в KF я его, к сожалению, не смог. А перспектива определять на глаз каждую вершину в игре, затем возвращаться в макс, снова запускать игру и т.д. мне не очень нравится. Поэтому устроим себе минуту маразма для последующего пропуска десятка запусков игры.
Прежде чем начать заниматься развесовкой, проверьте всю модель – верны ли формы, нет ли лишних деталей, которые следует удалить. Не осталось ли невидимых полигонов, многоугольников и прочих косяков. Если надобность править геометрию возникнет после начала работы со скинингом, то придется переделывать вес.
Итак, примемся за дело. Удалите дефолтную модель лука, скелет оставьте.
Выберите нашу модель лука и примените к ней модификатор Skin.
В поле Bones нажмите add и добавьте туда кости скелета лука.
Не добавьте ненароком SteelBow.nif
Сначала разберемся с костью Bow_MidBone. Сразу же хочется сказать. Нам будут встречаться места, где в Weight Tool нет кости, которая нужна для этих вершин. В таком случае в списке костей модификатора просто выберите нужную и работайте с ней. Так же будут ситуации, где вершины должны быть развешаны на нескольких костях, но вес назначен на других (нескольких). Перед тем, как назначать вес, сбросьте его со всех лишних костей, а затем продолжайте работу.
Итак, выберите вершины, показанные ниже и присвойте им вес – 1 (предварительно выделив кость Bow_MidBone)
Вес – 0.9:
Вес – 0.8:
Вес – 0.7:
Вес – 0.6:
Вес – 0.5:
Вес – 0.2:
Вес – 0.1:
Цветовое обозначение вершин кости будет следующим.
Теперь развесим вершины на Bow_UpBone1 (и Bow_LoBone1 – значения одинаковые, так как это симметричные элементы)
Вес – 0.1:
Вес – 0.2:
Вес – 0.3:
Вес – 0.4:
На этом моменте у меня оказалось, что вес распределен еще на одной кости, кроме Mid Bone и UpBone1. Сначала сбросьте вес с лишней кости, а затем назначайте на нужную. Иначе вес в равных пропорциях отнимется от всех назначенных костей и добавится на новую. В итоге собьется настройка на нужных костях – в данном случае Mid Bone.
Следующий вес – 0.5:
Вес – 0.6:
Вес – 0.4:
Вес – 0.3:
Вес – 0.2:
Вот цветовое обозначение развесовки:
Теперь разберемся с Bow_UpBone2 и Bow_LoBone2
Вес – 1:
Не выделите случайно вершины тетивы – они будут развешиваться отдельно.
Вес – 0.8:
Вес - 0.7:
Вес – 0.5 (Обратите внимание, эти вершины развешаны на трех костях):
Вес – 0.2(Точно так же, как на скриншоте выше – вершины на трех костях):
Цветовое обозначение.
Попробуйте сейчас развернуть кости, как мы сделали в начале этого урока.
Получилось следующее. Тетива такая, поскольку мы не настраивали привязку. А вот косяки с креплениями для тетивы исправьте – мы зацепили( или наоборот, не захватили) нужные вершины.
Затем выберем вершины излома тетивы. Развесим их следующим образом – 0.5 на Bow_StringBone1 и 0.5 на Bow_StringBone2
Она сразу же изменила свое местоположение.
Что касается вершин петли, то тут необходимо одно – нудный, последовательный подбор величин для каждого витка вершин. Выбираем один – придаем определенную величину. Не подходит – меняем величину (вплоть до тысячных в десятичной дроби) Петля развешана на двух костях – тетивы и Bow_LoBone2/ Bow_UpBone2. Сразу же могу сказать, что как минимум половина веса будет приходиться именно на Bow_LoBone2/ Bow_UpBone2. Работа будет закончена тогда, когда в таком положении тетива будет выглядеть прямой линией.
Получается следующим образом. По цветовому обозначению вы можете увидеть, что основной вес сосредоточен на кости лука, а не тетивы (как сделано на оригинальных моделях). Данный способ развесовки тетивы не идеален (и на мой взгляд он достаточно грязный, так как сохранить форму цилиндра на тетиве не удалось), но его применение оправдано тем, что иначе тетиву с таким креплением, как у нас не сделать. Как, в общем то, и любую другую тетиву. Просто в зависимости от модели это может быть чревато большими или меньшими проблемами, типа скошенного в нашем случае цилиндра. А в некоторых случаях проблемы могут отсутствовать вообще - посмотрите эльфийский лук в моде "Луки третей эры". Там тетива вообще является частью одного элемента модели и, как итог у неё этих проблемных мест попросту нет. Если вам он (цилиндр на тетиве) в таком виде не нравится – можете удалить его. Но, к радости, заметен он при стрельбе не будет. Он является мало-мальски заметным украшением только если лук висит за спиной у персонажа, когда никакой деформации не идет.
На этом урок подходит к концу, нам осталось лишь экспортировать лук в игру, чем мы и займемся в следующей части урока.
Верните положение костей в исходное (разверните на величину, обратную той, на которую вы разворачивали кости в начале) и сохраните сцену.
Спасибо за внимание, надеюсь, смог быть вам полезен.
Lord Beowulf, для TesAll.ru
Комментарии