Введение в 3D-моделирование для S.T.A.L.K.E.R. — S.T.A.L.K.E.R. Inside Wiki

Введение в 3D-моделирование для S.T.A.L.K.E.R.

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Несколько месяцев назад я задался целью сделать свой артефакт. Я ничего не знал о 3D Studio Max и совсем немного разбирался в модинге игры. В этой статье я хочу изложить всё, что знаю сам, чтобы новичкам было проще.

Я буду использовать части статей других авторов со своими правками, сохраняя авторство.

В статье описана работа с 3D Studio Max 2009, но принципы во всех версиях одинаковы.

Большая часть советов несёт сугубо субъективный характер и рассчитана на новичков. Некоторые вещи могут показаться танцами с бубном, но мне помогло ;)

Делаю для ТЧ, но алгоритм подойдёт для ЗП\ЧН.

В конце статьи есть ссылки на крайне полезные ресурсы. Прочитав их, Вы сможете лучше понять многие изложенные здесь вещи.

Статью можно размещать где угодно. Сохраняйте лишь авторство.

Помощь в решении проблем можно получить здесь. http://sigerous.ru/forum/16

Подготовка.

Нам понадобятся:

Плагин для работы с вашей версией макса. Его можно найти на форуме АМК.
ВАЖНО! Для корректного запуска плагина материалов нужно отредактировать ltx файл, идущий в комплекте, так, как написано в ридми.
ВАЖНО! Для корректного экспорта '''анимаций''' нужен плагин под определённый СДК. Анимации ЧН\ЗП несовместимы с ТЧ. И наоборот.
Плагин для работы с DDS для Photoshop. Именно в этом формате хранятся текстуры игры. Найти можно на официальном сайте Nvidia.
СДК для вашей версии игры. Для ТЧ — это 0.4 Искать здесь. Качать полную версию и патч. Русифицированная версия слывёт забагованной.

Этого будет достаточно для создания простого нового артефакта. В дальнейшем, при работе с готовыми ресурсами игры, их модификации, полезными будут такие программы, как OGFViewer, позволяющая просматривать модели без конвертации в другие форматы, а так же конвертер от bardak- мощный инструмент конвертации буквально всего и вся (в том числе готовых ogf обратно в редактируемый и понятный СДК формат object). Полезным может оказаться редактор Milkshape с его плагинами экспорта-импорта, если надо перегнать ogf в 3ds.

Модель.

Для начала, некоторые ограничения на модель (оригинальный текст товарища Senator):

1.Модель должна находиться в центре координат.

2.В модели должно быть приемлемое количество полигонов, точного ограничения нет, но делать больше 12000 точно не стоит — лагов не избежать. Для справки, модели от GCS в среднем имеют по 6000 полигонов.

a.Чтобы узнать количество полигонов, заходим в пункт меню File и  жмём Summary Info.

3.Размер модели должен быть сопоставим по масштабам с размерами человека. Для этого:

a.Можно добавить на сцену объект из игры и делать всё приблизительно.
b.Использовать инструмент Measure Distance из меню Tools (результат выводится в нижнем левом углу), заранее настроив 
единицы измерения (это должны быть метры) в  Customize=>Unit setup
и Customize=>Unit setup=>Sustem Unit Setup.

4.Модель должна быть затекстурирована, на ней должен быть x-ray материал.

a.Позволю себе отметить, что стандартный материал так же нормально экспортируется в СДК.
б.Если всё же назначили материал сталкера, то ОБЯЗАТЕЛЬНО назначаем текстуру. Иначе
экспорта не будет.

5.Модель должна быть представлена в режиме «Editable Mesh», для этого выделяем модель, нажимаем правой кнопкой на рабочей области, в открывшемся списке выбираем пункт Convert To и далее Convert to Editable Mesh. Это делаем в самом конце работы с примитивами, так как перевод в Меш не даст нам параметрически (используя ползунки с цифрами) изменять наши объекты.

6.СДК сталкера не воспринимает группы сглаживания.

Приступим к работе. Азы обращения с редактором можно найти в любой книге по этой теме, тем более, что стоящей модели за 30 минут и без знаний не создать. Однако и останавливаться на примитивах не интересно. Исходим из того, что Вы открыли 3D Studio Max впервые, но хотите получить что-то удобоваримое =) Поэтому скажу пару слов об интерфейсе. Неплохо было бы почитать и материалы по ссылкам в конце статьи.

Интерфейс

Exampsqefqfsadwfasfle.jpg

1-4 Окна проекции. Ищем дополнительную информацию о настройках, так как режимов очень много. Кроме того, можно самим располагать окна как угодно, меняя размер. Особо полезным может быть отображение, полученное в режиме: ПКМ на надпись Pperspective=>Other=>Lit Wireframes. Этот вариант хорош для привязки вертексов(вершин) к костям, когда нужна точность. Можно поменять положение и пропорции окон. Для этого: ПКМ на Perspective=> Configure=>Layout.

5- куб навигации. Подёргаете -сами поймёте, зачем он.

6-Панелька с инструментами. О ней подробнее будет написано чуть ниже.

7-Лента кадров анимации. Понадобится позже при создании анимации нашему арту.

8-Здесь выводится много нужной информации. В том числе и координаты при использовании инструмента Measure Distance.

9- Панель с инструментами навигации. Часть есть так же на кольце управления (Steering Wheel). Впрочем, его лучше выключить, чтобы не занимало место на экране.

10- Основная панель для добавления и модификации объектов.

Examasfafdfple.jpg

1- перемещение объектов по осям X Y Z (Select and Move).

2- вращение объекта. (Select and Rotate)

3- Изменение размеров объекта. (Select and Uniform Scale, просто Scale)

Четыре кнопки левее отвечают за выделение объектов: 1.Курсор- что жмём \ обводим, то и выделяется. 2. Курсор и список- что выбрали в списке имён объектов, то и выделено. 3. Форма выделения- прямоугольник, круг и т. д. 4. Способ выделения. Так, как на картинке, значит будут выделены только объекты, полностью попавшие в рамку.

Четвёртая кнопка справа: четыре шара, вызывает редактор материалов. Этот инструмент понадобится нам для текстурирования. Горячая клавиша- М Две стрелки с левой стороны- «Отмена» и «Отмена отмены»=) Горячие клавиши Ctr+Z так же работают.

Exaasdfawmple.jpg

1. Панелька с примитивами. При выборе любого наименования из списка внизу появится свиток с параметрами для параметрической настройки объекта. Сам объект легче создать сперва «на глаз» в окне проекции а затем настроить как надо здесь.

ВАЖНО! Вернуться к параметрической настройке можно выбрав объект и нажав на вкладку Modify (4). Впрочем, это работает, 

пока наш объект НЕ Mesh.

2.В этой вкладке нас интересуют Bones- кости. Они нужны для анимации и привязки к модели шейпов. Об этом ниже.

3.Выпадающий список позволяет выбирать группы примитивов и многое другое.

4.Вкладка Modify. Содержит в себе модификаторы, с помощью которых и создаётся модель.

В этой вкладке жмём кнопку More и находим плагин экспорта Сталкер. Если его нет, значит криво установили.

Создание модели

И так, с интерфейсом мы разобрались. Начнём собственно работу над созданием первого простейшего артефакта.

Exa124125ё2mple.jpg

Для своей работы я взял следующий примитив: Extended Primitives => Torus Knot. Я получил результат, который мне понравился, попробовав разные настройки. Какие именно? Все подряд в свитке объекта Parametrs. Если дружите с английским, то будет проще. Перебираем все настройки, смотрим, как меняется объект, на что влияет тот или иной параметр. Собственно, таким же образом можно изменять объекты, используя модификаторы. Но, для простоты, в конце статьи будет приведён список модификаторов с переводом(ссылка). На этом этапе я провёл оптимизацию. Проверил через File=>Summary Info количество Faces и поставил значение Segments нашего объекта таким низким, чтобы ещё три копии в сумме не давали больше 6000 Faces. Для оптимизации так же можно использовать модификаторы Optimize и MultiRes.

13121412312.jpg

Далее, с зажатой клавишей Shift и перетаскивая объект (инструмент называется Select and Move), я сделал три копии (Copy) «финального» узла и поиграл с их положением в пространстве. Получилось такая цепь из 4 одинаковых элементов.

Exa13141fwdfmple.jpg

Текстурирование.

Текстуры Сталкера хранятся в формате dds, понятном для 3d Max. Для того, чтобы добавить текстуру в СДК, нам понадобится ещё и tga копия. Однако этот пункт не обязателен. TGA файл необходим для создания превью в СДК, для использования текстуры достаточно кинуть её в x-ray sdk04\level_editor\gamedata\textures\(опционально-ваша папка). Впрочем в конце статьи есть ссылки на материалы, где подробно описан процесс добавления текстуры именно в СДК и очень детально описывается сам формат dds. Но, прежде чем добавить текстуру, надо её создать. Здесь стоит оговориться, что у профессиональных 3д дизайнеров на текстурирование модели уходит так же много времени, как и на создание модели. При этом, используется модификатор Unwrap UVW, мастерски овладеть которым можно лишь спустя 10-15 сделанных моделей. Но мы пойдём другим путём.

Создаём в Photoshop новый рисунок. В параметрах нам важны размеры, а именно- делимость их на 4. К примеру, 512х512 вполне подойдёт. Можно, даже нужно поставить побольше пикселей на дюйм. Дальше ищем в сети любые абстракции и выбираем понравившуюся картинку. Я взял по текстуре на кольцо.

Далее, нам нужно сделать из них так называемые тайловые текстуры, они же бесшовные. Такие текстуры необходимы для того, чтобы на нашем артефакте не было видно швов на стыке текстур. Это делается вот так (оригинальный текст Argus ):наша текстура прямоугольная, а нам нужен квадрат (так как большинство используемых в играх текстур квадратные, то поставим целью сделать квадратную текстуру). Чтобы получить квадрат, отсечем ненужное с помощью инструмента "Обрезка"( или "Рамка", горячая клавиша -С). Чтобы рамка отсечения оставалась квадратной, нужно во время операции удерживать клавишу Shift. Получаем квадратное изображение. Теперь найдем в Фильтрах->другое-> фильтр "Сдвиг". В открывшемся окошке установим на обоих ползунках значение, равное половине стороны квадрата. После использования фильтра прямо в центре изображения появляются швы, те самые, которые могли появиться в игре, если бы мы всунули туда текстуру без обработки, потому что этот фильтр сдвигает изображение так, что швы, которые находились на краях изображения, стали посередине. Все, что нам требуется теперь, это чуть-чуть пошаманить инструментом «Штамп», чтобы замаскировать все стыки. Рекомендую использовать для инструмента "Штамп" кисти максимальной жесткости и 100% давления, это позволяет не разводить муть и сохранить текстуру четкой.

Советую прочесть мануал товарища Argus целиком (ссылка в конце статьи), чтобы не делать лишних ошибок с подбором рисунка текстуры. Теперь, получившуюся текстуру копируем на наш чистый рисунок с заданными размерами, подгоняя края. Нам необходимо добавить на текстуры прозрачность. Это делается с помощью альфа -канала. В компьютерной графике альфа-композиция обозначает процесс комбинирования изображения с фоном с целью создания эффекта частичной прозрачности.(Википедия). В Сталкере фоном выступает собственно все объекты, которые видит герой. Проще говоря, альфа-канал делает дырки в текстурах. Практика:

Exampфывайпвыафйle.jpg

Каналы=> Создать новый канал. Заметьте, что такая картинка получается только при всех включённых каналах.Теперь кистью белого цвета , оставаясь в альфа-канале, стираем для удобства всё красное, а затем чёрным цветом отмечаем прозрачные места(не удивляйтесь , кисть будет рисовать красным). ВАЖНО! Те места, что на альфа-канале красные, будут невидимы в игре. Если использовать полупрозрачную кисть, то и прозрачность будет полупрозрачная XD. Я использовал разные кисти, получилось вот так.

Exaghsfgmple.jpg

Теперь необходимо сохранить нашу текстуру. Если плагин для работы с DDS уже установлен, то просто нажимаем ”Сохранить как” и выставляем dds. Должно появиться диалоговое окно плагина экспорта. Т.к. у нас есть альфа-канал, то нам подойдёт сохранение в режиме DXT3\DXT5 для финальной версии(эти режимы с компрессией, но они портят текстуру при нескольких редактированиях и сохранениях подряд) или 8.8.8.8 для промежуточной(нет сжатия и потери качества). Аналогичные действия проделываем со всеми текстурами.

Пара слов о названиях. Делайте их осмысленными. Никаких qwerty1234. Сами потом запутаетесь в них. 
Это касается как текстур, так и самих моделей, скриптовых или конфиг-файлов. 
Далее, если планируете добавлять текстуру в СДК, то имя art_chain.dds будет воспринято сдк так: 
текстура art_chain.dds лежащая в папке textures\art.
Ещё один момент. Убедитесь в том, что перед сохранением в DDS вы объединили все слои, иначе получите не то, что хотели.

Осталось лишь назначить материал. Для этого вызываем Менеджер Материалов (горячая клавиша M), выбираем первый шарик, жмём кнопку Standart, выбираем материал сталкера.

Exaывфывафmple.jpg

Теперь жмём кнопку напротив Difuse, выбираем Bitmap и ищем в проводнике нужную текстуру. То же проделываем с другими шариками (по количеству текстур). У меня получилось 4 шарика.

Exаыпйкпample.jpg

Теперь зажимаем ЛКМ на шарике и «переносим» с зажатой кнопкой материал на объект. Не забываем включить отображение материалов на сцене (кнопка выделена на рисунке.) для каждого шарика. Получилось не очень, так? Текстура растянута на всю модель.

Чтобы исправить ситуацию, можно воспользоваться модификатором Unwrap UVW. Но мы сделаем проще. Применим к модели модификатор UVW Mapping и поиграем с настройками.

1- режим работы модификатора.

2- количество накладываемых копий текстуры. Именно эти настройки помогут использовать тайловые текстуры на полную. Не зря же мы их делали.=)


У меня получилось вот такое безобразие.

Examсчспияваиple.jpg

Как видно на изображении, текстуры кое-где растянуты, видны швы. Работа халтурная, но для целей обучения её хватит. Но для создания более-менее сложной модели придётся учиться как работе в Photoshop, так и использованию Unwrap UVW.

Exафафцуample.jpg

Подготовка к экспорту.

Размеры и объединение объектов в один. Подгоним по размеру. Используем инструмент Scale для изменения размеров и Measure Distance для выяснения размеров всей модель. Scale может изменять размер всех выбранных объектов cразу.

Examпроврыple.jpg

Важные замечания. В нижнем левом углу находятся показания инструмента Measure Distance по координатам. Соотносите их с реальными размерами вещей. Артефакт размером в 1 метр будет смотреться странно. Заметьте, на проекции Left видно, что артефакт находится выше, чем точка отсчёта координат. Это сделано для того, чтобы артефакт спавнился над землёй, а не застревал в ней. То есть, если опустить артефакт ниже точки отсчёта, то при спавне он просто провалится под землю. Но и сильно отдалять тоже не стоит. Кроме того, когда мы будем создавать кости, имейте в виду, что партиклы отыгрываются на первой кости, а не в точке отсчёта координат.

Плагин экспорта не может экспортировать больше одного объекта. У нас их 4. Объединяем. Для этого есть специальная функция Attach в модификаторах Edit Mesh. Выделяем все объекты сразу, жмём ПКМ=> Convert to=>Convert to Editable Mesh.(после этой операции в идеале должен очистится стек модификаторов(пропадёт модификатор UVW Mapping) Но если после экспорта текстуры собьются, просто снова примените сперва UVW Mapping а затем снова конвертните в Editable Mesh).

Далее необходимо выбрать любой из объектов и в свитке Edit Mesh нажать Attach и выбрать остальные объекты по одному. Диалоговое окно с опциями позволяет нам сохранить за каждым кусочком именно его материал и текстуру.

Example my own.jpg

Кости и шейпы

Следующий шаг- создание костей. Кости используются в игре для анимирования модели и привязки так называемых Bounding Box, или попросту шейпов. Подробнее о шейпах: это невидимые фигуры(сфера, Box- коробка, цилиндр), одновременно связанные с костью и моделью. С костью потому, что каждой кости может соответствовать один шейп. Почему может? Потому, что его может и не быть. Кроме того, во время проигрывания анимации шейпы движутся вместе с костями, что вполне логично. Связь с моделью именно шейпов опосредована. СДК умеет генерировать шейп кости ,исходя из крайних по координатам вертексов, привязанных к этой кости. Это упрощает процесс создания модели, т.к. не надо вручную настраивать все шейпы.

Важно понять, что модель без шейпов в игре будет полностью проницаема для пуль, НПС, героя. Без шейпов, но со скелетом и привязкой, это просто анимированный каркас для проницаемой текстуры. Только шейп позволяет модели взаимодействовать с миром- выстрелами, взрывами, аномалиями. При этом, настройка шейпа(Game Material кости) отвечает за звук рикошета, шагов, коллизии (вспомним звук падения водки, выкинутой из инвентаря). Этот же материал отвечает за визуализацию попадания в объект пули- рикошет с искрами, пыль, осколки стекла. Есть и более интересные эффекты. Материал clothes, к примеру, симулирует батут при прыжке на нём и, в то же время, в нём «вязнет» граната, отскакивающая от всех остальных материалов. Материал glass, положенный горизонтально, скользкий для героя.

Очень многие статьи говорят о том, что материал текстуры влияет на физику. Я не нашёл этой связи входе своих экспериментов. Изменение
материала текстуры на любой из списка не ведёт к каким либо изменениям в принципе. Могу лишь предположить, что материалы текстур связаны
с освещением, намоканием поверхностей.
UPD: Вещи, написанные в этой статье, касаются только объектов динамики (всё то, что не является частью уровня и спавнится
скриптами или через олл.спавн). Если  речь идёт о создании карты, то объекты, расставленные в СДК и скомпилированные как 
часть уровня, могут вообще не иметь костей, их физические свойства определяются как раз параметром Game Mtl текстуры.

Немаловажная деталь. Сейчас мы займёмся привязкой вертексов модели к кости. На такой маленькой модели в принципе не важно, что и куда привязать. Мы можем выделить все вертексы и привязать их к одной кости, выбрать сферический шейп и получить хороший результат. Однако в сложных моделях надо внимательно смотреть, какие части модели мы привязываем к каким костям, т.к. от этого зависит просчёт шейпов, как уже говорилось выше, и корректность отыгрывания анимаций, если речь идёт о привязке модели нпс к стандартному скелету сталкера. Интересный момент. Мы можем достать это стандартный скелет и анимации из готовой модели и «пришить» к нему новую модель без привязки вертексов к костям. Для этого нам понадобится конвертер bardac’a и СДК. Но в таком случае, модель не будет анимирована. Физика невидимых шейпов будет просчитываться, персонаж будет двигаться- модель будет «левитировать», но без анимации видимых частей.

Пара слов об автоматической генерации шейпов. Возьмём дом со стенами. Стене подойдёт шейп Box. Выбираем вертексы на краях стены так, чтобы у нас были все три измерения коробки и присоединяем к кости(на рисунке красным отмечены вертексы, которых хватит). СДК сделает нам шейп по крайним точкам. То есть, если бы в стене было окно, то его вертексы никак не влияли бы на наш шейп, и с точки зрения физики игры оно было бы непроницаемым для пуль и гранат. Это значит, что для стены с окном нужно будет 6 костей: части левее, правее,выше и ниже окна, а так же само окно- перекрестие из двух шейпов.

Examxfhsple.jpg

ВАЖНО! Один и тот же верткс вполне может быть привязан к двум костям, если это нужно для анимации.
Однако СДК причисляет вершину только к одной кости при генерации шейпов. Это значит, что одна 
вершина не может быть крайней и необходимой для общёта шейпов сразу двух костей.

Ещё одна важная деталь. Например, необходим шейп для перекладины, которая находится под углом в 45 градусов относительно горизонта. Для неё нам понадобится кость, так же отклонённая на 45 градусов. И вообще, шейпы сильно зависят от угла костей относительно осей координат. То есть, на глаз созданные кости дадут кривые шейпы. Чтобы выровнять их, можно использовать инструмент Select and Rotate, но параметры вбивать внизу, в поля. Инструмент капризный, осторожно. Иногда нужно просто нажать +\- ,чтобы выровнять кость.

Что ж, с теорией покончено. Приступим к практике. Так как мы собираемся анимировать наш артефакт в будущем, то нам понадобится минимум пять костей т.к. привязка идёт к сочленениям костей, то есть их всегда нужно на одну больше. При экспорте обрубается последняя кость, т.к. к ней нельзя привязать вертексы. Это тоже важно.

Имейте в виду, что лично я пока не знаю, как привязать к цепи костей ещё одну, уже покинув режим создания. Поэтому будьте осторожны в будущем, если не хватит костей, придётся начинать сначала. Ну или поискать в сети информацию=)

UPD: Чтобы добавить кость, нужно кликнуть один раз по той кости, к которой мы хотим привязать новую, и НЕ зажимая
кнопку мыши, отвести крсор в сторону. Операция производится cо включённой кнопкой Bones из вкладки System.
Спасибо Андрею Непряхину за его уроки=)


И так. Создаём наши кости и выравниваем их все, т.к. они сохраняют угол относительно друг друга(при этом, выравнивание полями с циврами внизу- выравнивание относительно точки отсчёта координат, а мышью- относительно родительской кости). Оптимально поднять кости чуть выше точки отсчёта координат. Кроме того, чтобы дальше не напороться на вылет, лучше переименовать первую кость в link (именно так прописывается первая кость в конфигах для спавна уже существующих моделей). Кости можно уменьшить в размерах до пропорциональных артефакту. Но СДК на это не отреагирует. Поэтому, задавая параметры Height и Width делаем их соразмерными модели сразу, до создания.

UPD: Есть такой момент: если хотя бы один вертекс в модели НЕ привязан к какой-либо кости, то первая кость будет автоматом
генерировать шейп на ВСЮ модель. И его придётся настраивать вручную. НО! Можно вообще не привязывать к первой кости
каких-либо вертексов. Она всё-равно будет в модели в СДК.

Adafeq.jpg

Далее, привязка. Выбираем наш объект и применяем модификатор Physique. Жмём Attach to Node, а затем на первую кость ближе к сочленению, должно появиться диалоговое окно. В нём выбираем Rigid и снимаем галочку с Create Envelopes. Жмём Initialize. Переключаем с Deformable на Rigid. Важно сохранять порядок действий, иначе операция может выполниться некорректно.

Easdfgqxample.jpg

Теперь наш объект привязан к первой кости, перемещая кости, будем двигать и объект. Но это только часть работы. Нужно привязать вертексы к костям.

Учитывая сказанное мною выше, стоит быть аккуратными в том, какие вертексы мы присоединяем к одной кости, чтобы шейпы получились нужных форм. Ну а если речь идёт о последующей анимации, то здесь нужно быть архиаккуратными, т.к. даже один не привязанные вертекс, или привязанный к другой кости, даёт искажения модели при движении.

Для этого жмём Vertices. Далее алгоритм прост. Зажата кнопка Select- выбираем нужные вертексы. Жмём кнопку Assign to Link и привязываем к кости (начинаем с первой и идём по порядку. В моём случае одно кольцо для каждой кости) выбранные вертексы. Вертексы станут красными. Программа в этом режиме «не видит» модели, а реагирует на кости и только. То есть, если кость внутри модели, то можно смело её использовать.

Одни и те же вертексы , случайно попавшие в выделение, можно ещё раз смело аттачить к кости. 
Используем Ctr+Z для отмены выделения, зажимаем Shift или Ctr для добавления к выделенному.
Проверить, какие вертексы уже привязаны к кости можно нажав Select by Link и нажав на кость.
Можно спрятать вертексы кнопкой Hide. Очень полезно, чтобы не путать уже привязанные вертексы с искомыми.

Exaлорпламеmple.jpg

Далее жмём на зелёный крестик, снова на кость (ту же). Крестики вертексов должны стать зелёными. А затем жмём Lock Assignment. Крестики превратятся в скобки.

Examрпамгквлоple.jpg

Теперь снова жмём Select и начинаем цикл заново, проделываем его столько раз, сколько нужно. Отличие лишь в том, что теперь вертексы сразу будут зелёными. Это очень нудная и кропотливая работа, если модель сложная. Скажу лишь, что горячие клавиши Shift и Ctrl+Z ,к счастью, работают.

Наконец, привязав вертексы (совсем не обязательно все, если не планируется анимировать объект), мы можем экспортировать модель.

Жмём:

Exaлодртзгьmple.jpg

Далее выбираем Export Skin и сохраняем модель. Читаем лог, он может ругаться на очень многие вещи=)

СДК

Наконец мы добрались до СДК. Нам понадобится actor_editor. Но сперва кинем все текстуры в папку x-ray sdk04\level_editor\gamedata\textures\(ваша папка). Такую же надо будет создать в геймдате игры.

Запускаем из папки level_editor через бат- файл actor_editor. Открываем модель: File=>Load. В логе мы можем видеть ругань на отсутствующие текстуры. Это не важно.

Начнём настройку материалов.

Exaлорплеваmple.jpg

Для этого выбираем свиток Surfaces, выбираем первый материал, находим поле Texture, дважды кликаем и ищем в появившемся окне нужные текстуры в нашей папке. Применяем нужную к этому материалу. Делаем тоже со всеми материалами.Результат:

Examорпинвмаple.jpg

Теперь настроим шейдеры(их можно выставить и в максе). О том, что это такое, можно почитать на Википедии. О том, почему параметров два, читаем ниже.

UPD: В СДК можно выделить ВСЕ текстуры(с зажатой клавишей Shift) и всем им назначить шейдеры за один раз. Полезно,
когда в модели 20+ текстур =))) 

Нам нужны вот эти два параметра:

Exaг76иmple.jpg

Вот параметры, которые я использовал :

Exampдш76ропle.jpg

Если поставить галочку напротив пункта 2 sided, то текстуры будут и «внутри» модели.

Настройка костей.

Сперва нужно включить отображение шейпов и всего, что с ними связано(иногда нужен рестарт СДК). Вот так:

Exadfgerqt2rmple.jpg

Теперь жмём:

Examplорнпм54e.jpg

Это- та самая генерация шейпов. Нужно только определить им форму:

Eюрпмг65xample.jpg

И сделать это с каждой костью. Можно настроить гейм_материал костей, чтобы при попадании в арт или столкновении с ГГ был звук или искры.

Если размер шейпа не тот или положение сбилось, тогда редактируем методом «тыка» параметры Position (позиция шейпа относительно кости) и Radius. В случае с Box будет параметр Half Size. Заметьте, это половина размера. Кроме того, за высоту отвечает координата Y.

Exбропроек4ample.jpg

Результат после всех доводок:

Exampорас332le.jpg

Последний штрих. В свитке Object есть параметр Make Progressive. Он отвечает за генерацию LODов. О том, что это, читаем в сети.

Поле User Data позволяет привязать к модели файл логики в формате ltx. Сейчас нам это не надо.

Последний шаг. Экспорт в ogf. Жмём File=> Export=>Export to OGF. Читаем логи на всякий случай.

Как протестировать? Берём файл (ТЧ) gamedata\config\misc\artefact.ltx. и правим строку visual любого артефакта(возьмём Медузу) на необходимую нам-- это будет путь к модели в папке meshes и название модели. В моём случае это:

visual = physics\art_chain.ogf

Что значит, что моя моделька лежит в папке physics.

Теперь создаём тхт файл, меняем ему расширение на script и кидаем в папку скриптов в геймдате. Прописываем в нём функцию спавна арта. В моём случае это файл n_test2.script. Вот функция, спавнит «Медузу» в инвентарь:

function n_spawn()
alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex_id(), db.actor:id())
end	

Её вызов прописываем в файле ui_main_menu.script. Ищем:

if dik == DIK_keys.DIK_Q then

и заменяем после неё. Должно выглядеть так(это конец файла, если чистые Тени)

if dik == DIK_keys.DIK_Q then
			n_test2.n_spawn()-- вот вызов. До точки- имя файла. После- функции.
		end
	
	end
   
	return true
end


Всё, теперь во время игры выходим в меню, жмём кнопку Q и получаем арт.

Вот результат наших стараний:

Examрпавекple.jpg

А вот здесь другие варианты настройки шейдера (Shader):

Exaadf321mple.jpg

Слева на право и вниз =)  : 1.models\transparent

2.lightplanes

3.aref этот вариант позволяет делать прозрачными только те участки, что отмечены на текстуре в альфа-канале, без прозрачности всей модели.

4.Снова lightplanes.

Дополнительные материалы

Вот - статья неизвестного автора о шейдерах и их список с переводом и комментариями.

http://sdk.stalker-game.com/ru/index.php?title=Docs:%D0%A8%D0%B5%D0%B9%D0%B4%D0%B5%D1%80%D1%8B_X-Ray

XRay материал(который мы применяем к модели в максе или сдк) определяет свойства треугольникам, которые в последствии интерпретирует компилятор и движок.

Основные настройки заключаются в установке необходимых параметров (шейдеров) в трёх основных пунктах шейдера: Engine, Compiler, GameMaterial.

•XRay Engine Shader - установка параметров как это будет отображаться в движке.( настройка Shader в сдк)

•XRay Compiler Shader - установка параметров как это будет восприниматься компилятором. (настройка Compile в сдк)

Для меня остаётся загадкой, зачем такая сложность. Могу лишь предположить, что настройки шейдера, как и написано, - то, что мы видим в игре. А опция для компилятора позволяет создавать лестницы и прочие подобные объекты, где прописаны особые параметры взаимодействия актора с объектом.

Важное замечание: для работы большей части Shader-настроек чаще всего необходим дефолтный гейм-материал текстуры. 
Впрочем, может я что-то упустил.

Будьте внимательны, читайте лог экспорта, когда экспериментируете с шейдерами.

Разбор dds формата здесь

http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%BE%D0%BC_.dds

Экспорт текстур в СДК здесь

http://stalkerin.gameru.net/wiki/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83%D1%80_%D0%B2_SDK

Список модификаторов с толкованием можно найти здесь http://3ddd.ru/modules/phpBB2/viewtopic.php?t=7693

Здесь полезный ЧАВО по Максу. http://faqs.org.ru/graphics/3dfaq_013.htm

Здесь азы Макса. Более полная статья по примитивам, интерфейсу и прочим крайне важным вещам. http://3d.demiart.ru/book/3D-Max-7/Glava_02/Index02.htm

Работы , использованные в статье:

Senator Привязка моделей нпс. http://stalkerin.gameru.net/wiki/index.php?title=3ds_Max_%D0%B8_Maya._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9_NPC

Argus Создание бесшовных текстур http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D1%81%D1%88%D0%BE%D0%B2%D1%8B%D1%85_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83%D1%80

Благодарности:

ХОВАН за поддержку и помощь в разборе СДК

Sea-Cat за переоценку моих способностей

Jesh, Valerich, Desertir с форума АМК за статьи и помощь в решении проблем с ошибками. Senator, Alwen, tambovski, BAC9-FLCL, Argus, Haron за их статьи.

За помощью обращаться сюда http://sigerous.ru/forum/16

Предложения и замечания сюда:

Niafasmail@gmail.com

Автор: Niafa
Другие места
LANGUAGE