Вступление Сразу небольшая оговорка – в статье описывается процесс создания модели NPC для ЧН или ЗП. Однако для ТЧ суть остается та же, меняется лишь скелет. Как вариант, можно сделать все по статье, а потом конвертировать в ТЧ. (как легче всего это сделать, подробно описано в статье). Таким образом вы получите модели под все игры серии с минимальными усилиями.
Для удобства восприятия урок разделен на три части – «Maya», «3DS Max» и «Настройка в SDK».
Maya
Для работы вам потребуется Autodesk Maya 8.5 или Autodesk Maya 2008 с установленными плагинами из пакета X-Ray Asset Tools от bardak'а.
Начну, пожалуй, с перечисления ограничений на вашу модель. Она может быть сделана вами собственноручно, рипнута из другой игры или же была взята собственно из Сталкера, но перенесла небольшую пластическую операцию. Так или иначе, предполагается, что модель у вас есть. И есть она в формате, понимаемом Maya.
Ограничения
1. Модель должна состоять из треугольников (то есть не должно быть ни одного четырех и более угольного полигона). Если вы не уверены в соблюдении этого условия или же уверены в его невыполнении, то проделываем операцию под названием триангуляция (автоматическое разбиение модели на треугольники): выделяем модель, нажимаем кнопку Mesh, затем выбираем пункт Triangulate:
[attachment=2:Npc_model_01.jpg]
2. В модели должно быть приемлемое количество полигонов. Точного ограничения нет, но делать больше 12000 точно не стоит – лагов не избежать. Для справки, модели от GCS в среднем имеют по 6000 полигонов. Если в вашей модели много больше, чем положено, то оптимизируем ее любым удобным вам способом. Самый легкий – Mesh -> Reduce
3. Размер модели должен соответствовать естественным размерам человека. Легче всего импортировать в сцену модель NPC из игры и подогнать свою инструментом «scale»
4. Модель должна быть с UV координатами, текстурой в формате DDS и X-Ray шейдером.
5. Модель должна находиться в начале координат.
6. Перед началом привязки модели к скелету, выполняем еще одну несложную операцию:
[attachment=3:Npc_model_02.jpg]
Вот, пожалуй, и все. Если вы успешно преодолели все ограничения, то можно приступать непосредственно к привязке модели.
Привязка модели
Для начала импортируем в сцену с нашей моделью визуал любого NPC из архивов игры. Удаляем меш. Таким образом, в сцене остается только ваша модель и скелет из игры. Теперь необходимо нацепить меш на скелет. Лучше всего менять именно модель, оставляя скелет неизменным, во избежание проблем с шейпами. Хотя плагин экспорта должен возвращать положения костей в исходные, происходит это почему-то не всегда, так что лучше перестраховаться).
После того, как вы подогнали форму модели под скелет (кстати, можно не удалять модель сталкера, а ориентироваться по ней, так кому-то может показаться удобней) еще раз обнуляем историю, как описано выше. Теперь, когда все приготовления окончены, нужно заставить модель деформироваться под действием скелета. А делается это так:
1. Выделяем модель и скелет, затем жмем Skin, в открывшемся списке выбираем пункт Bind Skin, нажимаем на кубик, напротив Smooth Bind:
[attachment=4:Npc_model_03.jpg]
2. В открывшемся окне делаем следующие настройки:
[attachment=5:Npc_model_04.jpg]
Все, наша модель привязана к скелету. Однако не все так радужно, как может показаться на первый взгляд – у модели кривая развесовка, то есть кости влияют на оболочку не совсем так, как надо. Чтобы вы поняли, что я имею ввиду, посмотрите на иллюстрацию:
[attachment=6:Npc_model_05.jpg]
Модель требует дополнительной настройки, однако уже на данном этапе можно проверить ее работоспособность, экспортировав в SDK и подставив в игру, как описано ниже.
3. Снова выделяем модель. Развесовка модели правится инструментом Paint Skin Weights tool, а находится он тут:
[attachment=7:Npc_model_06.jpg]
Обратите внимание, снова нажимаем на кубик, а не на надпись. Если вы все сделали правильно, то ваша модель превратится в черно-белую, а справа появится окно настроек инструмента.
Попробую вкратце объяснить принцип работы с Paint Skin Weights tool:
[attachment=8:Npc_model_07.jpg]
1. Список костей скелета, работа ведется с выделенной костью, в данном случае это «Bip01_l_clavicle».
2. Образно выражаясь, место, где можно указать радиус кисти инструмента, которой вы мазюкаете по несчастному и ее прозрачность (Opacity), если работали в фотошопе, то поймете, о чем я.
3. Четыре режима работы кисти:
3.1 Replace – заменяет значение влияния кости на вертексы, попадающие под влияние кости на заданное ( произведение степени влияния на прозрачность (Opacity x Value)).
3.2 Add - добавляет к имеющемуся значению опять же произведение степени влияния помноженное на прозрачность.
3.3 Smooth – сглаживает значения. (Если простым языком, то у вас есть белое пятно на черном фоне, мазюкаем и получаем белое пятно с серыми границами)
3.4 Scale – штука опасная, не трогаем вообще.
4. Value – степень воздействия кисти (0 – черный, 1 – белый).
5. Наглядное представление влияния кости на модель.
Собственно, все. Выделяем все кости по очереди и мазюкаем кистью до получения удовлетворительных результатов. Для удобства открываем еще одно окно майки, импортируем модель из игры и смотрим, как какая кость влияет на что. Пытаемся повторить с поправкой на то, что модель у нас немного отличается. Крутим суставы, чтобы посмотреть привязку в динамике, но не забываем нажимать «Edit» - «Undo», вручную на место кости никогда не ставим.
После пары дней мучений у нас получится что-то более-менее удовлетворяющее требованиям человекоподобного существа. Выделяем меш (скелет не нужно), нажимаем File –> Export selection, выбираем формат (X-ray skeletal object) и кнопку Export. Если все сделано правильно и по гороскопу благополучный день, то экспорт пройдет удачно (зависит именно от гороскопа, так как часто случаются рендомные вылеты, и их причина мне неизвестна).
Работа в Maya на этом закончена.
3DS Max
Сразу предупрежу – в Maya можно гораздо проще и быстрее получить удовлетворительный результат, нежели в Max, однако он более распространен и стабилен, так что попытаюсь объяснить, как сделать подобие описанных выше действий в максе.
Итак, приступим.
Вам понадобятся Autodesk 3DS Max 8 и плагин экспорта .object.
Для удобства постараюсь придерживаться структуры первой главы.
Ограничения на модель:
1. Модель должна находиться в центре координат.
2. В модели должно быть приемлемое количество полигонов, точного ограничения нет, но делать больше 12000 точно не стоит – лагов не избежать. Для справки, модели от GCS в среднем имеют по 6000 полигонов. Если в вашей модели много больше, чем положено, то оптимизируем ее любым удобным вам способом. Самый легкий – назначить модификатор «optimize», однако тогда побьются UV координаты.
3. Размер модели должен соответствовать естественным размерам человека.
4. Модель должна быть затекстурирована, на ней должен быть x-ray материал.
5. Модель должна быть представлена в режиме «Editable Mesh», для этого выделяем модель, нажимаем правой кнопкой на рабочей области, в открывшемся списке выбираем пункт Convert To и далее Convert to Editable Mesh:
[attachment=9:Npc_model_08.jpg]
Пожалуй, всё.
Небольшое лирическое отступление на тему скелетов: Существует как минимум два способа импортирования скелета из игры в 3DS Max – через OGF2SMD и через FBX. Оба способа имеют свои плюсы и минусы. Например, при добыче скелета при помощи OGF2SMD последние кости в ветках получаются очень длинными, а при помощи FBX некоторые кости получаются настолько маленькими, что очень неудобно в них потом тыкать. Я выбрал OGF2SMD.
Вообще, после импорта в 3DS Max скелета, нужно дорисовывать в конце каждой ветки еще по одной кости, но я уже сделал это за вас, так что просто берем файл из архива:[url="http://stalker-portal.tom.ru/ypoku/ekolor.rar"]скачать архив[/url]
1. Загружаем «Эколог.max»
2. Нажимаем File –> Merge, (ваша модель должна быть формате .max) и импортируем будущего NPC в сцену с экологом
[attachment=10:Npc_model_09.jpg]
3. Если все сделано правильно, то ваша модель появится на том же месте (у меня - там же, где и эколог). Если нет – двигаем.
4. Выделяем эколога и удаляем его.
5. Выделяем нашу модель и назначаем ей модификатор Physique. Для этого нажимаем на непонятного вида дугу, затем на перевернутый треугольничек и в открывшемся списке выбираем сам модификатор:
[attachment=11:Npc_model_10.jpg]
6. Нажимаем на модель, затем на кость root_stalker:
[attachment=12:Npc_model_11.jpg]
В появившемся окне ничего не меняем, только нажимаем Initialize.
Все, приступаем к настройке развесовки модели. Можно использовать так называемые огибающие, но я предпочитаю аттачить по вертексам – дольше, но точнее.
Уж извините, не буду описывать принцип работы с модификатором Physique, в интерете полно статей на эту тему, например, - эта: [2] (вас интересуют только разделы «Physique» и «Настройка вершин»).
Внимание, есть один очень важный нюанс. 3DS Max не экспортирует кость, если к ней или к последующим в иерархической структуре не привязано ни одного вертекса. То есть, надо ко всем последним костям в ветках приаттачить хотя бы по одному вертексу.
Так или иначе, после пары лет мучений, модель оказывается привязанной более-менее правильно. Так же, как и в Maya, проверяем, правильно ли деформируется оболочка, поворачивая суставы. Опять-таки, на место возвращаем их только операцией Undo (Ctrl+z), вручную никогда. В итоге, у вас должно получиться что-то вроде этого (если делали как я, по вертексам):
[attachment=13:Npc_model_12.jpg]
Настройка привязки окончена, приступаем к экспорту модели в формат .object:
1. Выделяем нашу модель.
2. Нажимаем на молоточек в правом верхнем углу экрана (1), затем кнопку More...(2), в открывшемся списке выбираем XRay-Export(3), затем, естественно, OK(4).
[attachment=14:Npc_model_13.jpg]
Откроются настройки экспорта. Там нажимаем Export Skin. В открывшемся окошке вводим имя модели и директорию сохранения.
Все, работа в 3DS Max закончена.
Настройка в SDK
Для работы потребуется X-Ray SDK 0.4.
(иллюстрации, к сожалению, сняты с переведенной версии SDK - прим. ред.)
Итак, приступим:
1. Открываем АЕ (Actor Editor), загружаем сделанную ранее модель.
2. Изучаем поле с параметрами модели:
[attachment=15:Npc_model_14.jpg]
В разделе Object (1) нас интересует лишь последнее поле, User Data (2). В нем можно прописать путь к конфигу вашей модели. Если оставить поле незаполненным, то движок игры поставит значения урона вашей модели по дефолту. Еще, как вариант, чтобы не создавать лишних бумажек, можно прописать путь к конфигу NPC в броне, схожей по характеристикам с вашей. Стандартный вид – "#include "models\capture\нужный_конфиг.ltx".
В разделе Material необходимо настроить поля Texture. Если путь к текстуре в 3D-пакете был указан неправильно, Shader (ставим models/model, если не хотим особых изысков типа полупрозрачности; если хотим, то ставим то, что считаем нужным для достижения необходимого эффекта) и Game Mtl (тут выставляем default_object, опять же, если не хотим изысков).
В разделе Motions дважды щелкаем мышкой на поле напротив Motion reference, в открывшемся окне нажимаем на треугольничек возле Actors (1), затем в открывшемся списке ставим три галочки как на картинке (2). Нажимаем OK:
[attachment=16:Npc_model_15.jpg]
Все, модель почти закончена, сохраняем изменения. Если в игре возникают проблемы с регдоллом, исправьте кости, как описано в статье
Добавлено (14.09.2010, 19:10)
---------------------------------------------
Не обращайте внимание на "ляповые строчки" материал взят с одного из томских сайтов.