В прошлом уроке мы научились создавать UTX файл текстурных данных. Теперь мы сделаем простенькую модельку [баннерная доска], сделаем ей разврестку затекстурим и запихнем все это дело в игру как НПС персонажа (увы) .
Данный урок расчитан для тех людей которые УЖЕ имеют БАЗОВЫЕ познания
-3Ds Max
-Photoshop
-Unreal Engine 2 (UT2004)
Что нам нужно для достижение цели
-3Ds Max
-Adobe Photoshop
-Патч от гилдора (купите у разработчика)
-ActorX Exporter for 3Ds Max
-UT2004
-l2FileEdit
-Melkosoft Excell

-Усидчивость терпение
1)Создание мэша
1.1)Моделирование
INTRODUCTION:
По сути дело самая легкая и креативная часть всего процесса, мануалов по данной теме очень много но я в краце опишу всю процедуру с начало до конца когда вы видите биллборд в игре. Я лишь опишу все что сделал я, на самой простой модели.
Представляем как наш мэш(модель) будет выглядить.
Нарисовали на бумашке? Приступаем к примитивному моделингу
Используя вкладку
Начинаем с простых форм.
Манипулируем объект в пространстве
Используя простые утлиты начинаем менять мэш
Заканчиваем форму
Важная ремарка. Перед тем как перейти к пункту (2)Разверстка не объеденяйте объекты(если их множество) в 1 меш путем
2)Разверстка
2.1)Общие принципы
Если коротко, UV Mapping, или UVW Unwrapping, это процесс разверстки который необходим для преобразование соответствии между координатами на поверхности трёхмерного объекта (X, Y, Z) и координатами на текстуре (U, V, W)
Если еще короче ХД Разверстка процесс который определяет координаты будующих текстур, и без данного процесса нельзя перейти дальше.
2.2)Подготовка
Самое легкое для вас найти туториалы в ютубе. Но я опишу некоторые функции на базе наипростейших форм.
Вот мы имеем базовую форму.
Для детальной проверки правильности текстурных координат создаем и применяем материал Standart с данной текстурой.
Для того чтобы применить материал жмем M выбираем любой свободный слот. Во вкладке Diffuse.
Далее выбираем тип открываемого файла
И ставим галочку сюда чтобы материал был виден во Viewport'e
И перетаскиваем материал на сам объект
2.3)Создание UV
И так, даже не вооруженным взглядом можно увидеть что UV разверстка не правильна в некоторых частах, и неполная в общем.
Применяем модификатор Unwrap UVW
Открываем UV Editor
Переходим в режим выбора полигонов.
Выбираем все CTRL - A
И применяем самый простой метод разверстки примитивных объектов.
Flatten Mapping - Берет все лица (стороны) объекта и "делит" их по плоскости.
С такими параметрами
Вот что мы получаем
Дальше это по сути процесс создание для себя удобство чтоб в будующем легче было текстурировать, крутить вертить стороны в анрвап едиторе до тех пор пока ты не будешь знать четко какая где стоит сторона.
Вот что получил я
После завершение всей редактуры, колапсим
Есть еще очень много методов и техник разверстки и узнать про них можно просто загуглив, я не буду сильно углублятся в эту тему на данный момент.
NOTE
Cтоит знать что все элементы должны подчинятся некоторым правилам
1) No Overlaping UVS Не должно быть пересекающих частей разверстки
Проверять тут с активным режимом выбора ПОЛИГОНОВ

Если красным ничего не показывает значит все гуд
2) No Out Of Bounds UVS Не должно быть элементов пересекающих данную зону когда уже меш готов к экспорту в игру, в едиторе же в процессе настройки UV эту черту можно сводобно использовать, т.е к примеру для систематизации UV или просто на время передвинуть не нужные элементы за черту чтоб не мешали.
2.4)Сохранение. Рендеринг
Для рендера нашей разверстки в нужный нам формат TGA нажимаем как на картинке ниже
С данными параметрами
Сохраняем
Такие параметры
Результат.
DONE!
Промежуточная эстетика
Перед экспортом в PSK файл. Необходимо настроить и перепроверить мэш дабы не возникло непредвиденных проблем.
1.1)Настройка пивот пойнта

а потом перетаскиваем пивот к основанию объекта по Z координате (вниз)
DONE
1.2)Центрирование
Перед экспортом необходимо сам мэш центрировать к визуальной сетки в максе, для этого в режиме объекта
правый клик суды и суды потом
DONE теперь мэш в центре
1.3) Присвоение материала
@TODO
1.4) Проверка Material ID's
В данной части урока где используется лишь 1 слот для текстур убедитесь что все части и стороны объекта имеют лишь 1 Material ID для этого выберите все стороны объекта CTRL+A и как на картинке присвойте 1.
3)Создание текстуры
3.1)Выбор текстур
Выбираем текстуры...
3.2)Текстурирование
Тут писать много не буду, как запомнили или проверили какая часть UV за что отвечает, вот и наносим на нее нужные нам картинки, шаманим, благо есть много туториалов по дизайну и текстурированию, углублятся не буду.
Данный рендер загружаем в фотошоп и поверх него начинаем наносить нужные нам текстуры

DONE!
4)Импорт в UT2004
4.1)Подготовка
После скачивание 3дмакс и Actor X Exporter, устанавливаем данный плагин на макс и тут вызываем его.
Ставим поверх нашего меша модификатор скин
Опять переходим в актор х и с такими параметрами
Жмем на
Save Mesh/Refpose
4.2)Импорт модели в UT2004
На патченный гилдором UT2004 импортим...
Во вкладке текстур выбираем нашу текстурку переходим в Animations и нажимаем Use как на картинке ниже для превизуализации
4.3)Импорт текстуры в UT2004
-читайте подробнее в уроке про UTX паки
https://forum.zone-game.info/showthread.php?t=34822
5)Экспорт модели и текстуры
Текстуру экспортим как в уроке тут
https://forum.zone-game.info/showthread.php?t=34822
К примеру пакет ZoneGameNPC_Tex
Кодируем в 121 EncDecom
А модельку сохраняем так, и пихаем в папку D:/Igri/L2/Animations
6)Импорт в игру, редактирование .Dat файлов
Клиент часть
Это параметры NPC GRP npcgrp.dat
Код:
tag class mesh cnt_tex1 tex1[0] tex1[1] tex1[2] tex1[3] tex1[4] tex1[5] tex1[6] cnt_tex2 tex1[0] tex1[1] cnt_dtab1 dtab1[0] dtab1[1] dtab1[2] dtab1[3] dtab1[4] dtab1[5] dtab1[6] dtab1[7] dtab1[8] dtab1[9] dtab1[10] dtab1[11] dtab1[12] dtab1[13] dtab1[14] dtab1[15] dtab1[16] dtab1[17] dtab1[18] dtab1[19] dtab1[20] dtab1[21] dtab1[22] dtab1[23] dtab1[24] dtab1[25] dtab1[26] dtab1[27] dtab1[28] dtab1[29] dtab1[30] dtab1[31] dtab1[32] dtab1[33] npc_speed UNK_0 cnt_snd1 snd1[0] snd1[1] snd1[2] cnt_snd2 snd2[0] snd2[1] snd2[2] snd2[3] snd2[4] cnt_snd3 snd3[0] snd3[1] snd3[2] rb_effect_on rb_effect rb_effect_fl unk1_cnt unk1_tab[0] unk1_tab[1] unk1_tab[2] unk1_tab[3] unk1_tab[4] unk1_tab[5] unk1_tab[6] unk1_tab[7] unk1_tab[8] unk1_tab[9] unk1_tab[10] unk1_tab[11] unk1_tab[12] unk1_tab[13] unk1_tab[14] unk1_tab[15] unk1_tab[16] unk1_tab[17] unk1_tab[18] unk1_tab[19] unk1_tab[20] unk1_tab[21] unk1_tab[22] unk1_tab[23] unk1_tab[24] unk1_tab[25] unk1_tab[26] unk1_tab[27] unk1_tab[28] unk1_tab[29] unk1_tab[30] unk1_tab[31] unk1_tab[32] unk1_tab[33] unk1_tab[34] unk1_tab[35] unk1_tab[36] unk1_tab[37] unk1_tab[38] unk1_tab[39] unk1_tab[40] unk1_tab[41] unk2_cnt unk2_tab[0] unk2_tab[1] unk2_tab[2] unk2_tab[3] unk2_tab[4] unk2_tab[5] unk2_tab[6] unk2_tab[7] unk2_tab[8] unk2_tab[9] unk2_tab[10] unk2_tab[11] unk2_tab[12] unk2_tab[13] unk2_tab[14] unk2_tab[15] unk2_tab[16] unk2_tab[17] unk2_tab[18] unk2_tab[19] unk2_tab[20] unk2_tab[21] unk2_tab[22] unk2_tab[23] unk2_tab[24] unk2_tab[25] unk2_tab[26] unk2_tab[27] unk2_tab[28] unk2_tab[29] unk2_tab[30] unk2_tab[31] unk2_tab[32] unk2_tab[33] unk2_tab[34] unk2_tab[35] unk2_tab[36] unk2_tab[37] unk2_tab[38] unk2_tab[39] unk2_tab[40] unk2_tab[41] effect UNK_3 sound_rad sound_vol sound_rnd quest_be class_lim_? npcend_cnt npcend[0] npcend[1] npcend[2] npcend[3] npcend[4] npcend_cnt2
Используя Excell и создал строку на основе ID Гремлина. Вот она. И присвоил в соответсвующие ечейки путь к файлом. Давайте это рассмотрим
Код:
93002 LineageNPC.black_market_trader_MDwarf_set ZoneGameNPC.TableProjection 1 ZoneGameNPC_Tex.TableProjection_Diffuse 0 2 4416 18 1.00000000 0 3 ItemSound.fist_1 ItemSound.fist_2 ItemSound.fist_3 5 ItemSound.armor_leather_1 ItemSound.armor_leather_2 ItemSound.armor_leather_5 ItemSound.armor_leather_7 ItemSound.armor_leather_8 3 ChrSound.MNpc_Old_Dmg_1 ChrSound.MNpc_Old_Dmg_2 ChrSound.MNpc_Old_Dmg_3 0 1 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 1 0 3 a,ssq_mammon_greeting_1\0 a,ssq_mammon_greeting_2\0 a,ssq_mammon_greeting_3\0 0
tag class mesh cnt_tex1 tex1[0]
Tag = Id NPC
Class= по сути любой)
Mesh= Путь к мешу в Animations. ZoneGameNPC.TableProjection
cnt_tex1 = 1 это значит что слотов для текстуры будет 1. максимум 7. используются в основном на комплексных мешей где есть на 1 предмете разные типы материалов к примеру разврестка 1, но материалов этих слотов 3, дерево, метал пластик...и т.д.
tex1[0]= слот первый. И внтутри него надо прописывать путь к текстуре
пример. ZoneGameNPC_Tex.TableProjection_Diffuse
Серверная часть
Создаем своего нпса.
Код:
<npc id="93002" name="." title=".">
<set name="aggroRange" value="0" />
<set name="ai_type" value="CharacterAI" />
<set name="baseAtkRange" value="40" />
<set name="baseCON" value="43" />
<set name="baseCritRate" value="40" />
<set name="baseDEX" value="30" />
<set name="baseHpMax" value="1673.055" />
<set name="baseHpRate" value="1" />
<set name="baseHpReg" value="6.5" />
<set name="baseINT" value="21" />
<set name="baseMAtk" value="361" />
<set name="baseMAtkSpd" value="500" />
<set name="baseMDef" value="262" />
<set name="baseMEN" value="25" />
<set name="baseMpMax" value="889.8" />
<set name="baseMpReg" value="2.4" />
<set name="basePAtk" value="665" />
<set name="basePAtkSpd" value="253" />
<set name="basePDef" value="322" />
<set name="baseRunSpd" value="120" />
<set name="baseSTR" value="40" />
<set name="baseShldDef" value="0" />
<set name="baseShldRate" value="0" />
<set name="baseWIT" value="20" />
<set name="baseWalkSpd" value="30" />
<set name="collision_height" value="0.0" />
<set name="collision_radius" value="1.5" />
<set name="level" value="55" />
<set name="rewardExp" value="0" />
<set name="rewardRp" value="0" />
<set name="rewardSp" value="0" />
<set name="shots" value="NONE" />
<set name="texture" value="" />
<set name="type" value="Merchant" />
<attributes>
<defence attribute="fire" value="20" />
<defence attribute="water" value="20" />
<defence attribute="wind" value="20" />
<defence attribute="earth" value="20" />
<defence attribute="holy" value="20" />
<defence attribute="unholy" value="20" />
</attributes>
</npc>
Спавним нпса в игре.
9)PROOFIT!
Свои результаты выкладывайте в теме, мне будет очень интерестно на них посмотреть
И за огромного количество скриншотов информации я ели доделал данный туториал
Тему буду иногда дополнять.
ваши пожелания или вопросы, проблемы с которыми вы сталкиваетесь все это очень приветствуется, пишите.