Вступ
Відразу невелике застереження – у статті описується процес створення моделі NPC для ЧН чи ЗП. Однак для ТЧ суть залишається та ж, змінюється лише скелет. Як варіант, можна зробити все за статтею, а потім конвертувати у ТЧ. (Як найлегше це зробити, докладно описано в статті). Таким чином, ви отримаєте моделі під всі ігри серії з мінімальними зусиллями.
Для зручності сприйняття урок розділений на три частини - Maya, 3DS Max і Налаштування в SDK.
Maya
Для роботи вам знадобиться Autodesk Maya 8.5 або Autodesk Maya 2008 із встановленими плагінами з пакету X-Ray Asset Tools від bardak'а.
Почну, мабуть, із перерахування обмежень на вашу модель. Вона може бути зроблена вами власноруч, рипнута з іншої гри або була взята власне зі Сталкера, але перенесла невелику пластичну операцію. Так чи інакше передбачається, що модель у вас є. І є вона у форматі, що розуміється Maya.
Обмеження
1. Модель має складатися з трикутників (тобто має бути жодного чотирьох і більше вугільного полігону). Якщо ви не впевнені у дотриманні цієї умови або впевнені в його невиконанні, то проробляємо операцію під назвою тріангуляція (автоматичне розбиття моделі на трикутники): виділяємо модель, натискаємо кнопку Mesh, потім вибираємо пункт Triangulate :
2. У моделі має бути прийнятна кількість полігонів. Точного обмеження немає, але робити більше 12000 точно не варто – лагів не уникнути. Для довідки моделі від GCS в середньому мають по 6000 полігонів. Якщо у вашій моделі багато більше, ніж належить, то оптимізуємо її будь-яким зручним для вас способом. Найлегший – Mesh -> Reduce
3. Розмір моделі має відповідати природним розмірам людини. Найлегше імпортувати в сцену модель NPC з гри та підігнати свою інструментом «scale»
4. Модель має бути з UV координатами, текстурою у форматі DDS та X-Ray шейдером.
5. Модель має бути на початку координат.
6. Перед початком прив'язки моделі до скелета виконуємо ще одну нескладну операцію:
Ось, мабуть, і все. Якщо ви успішно подолали всі обмеження, можна приступати безпосередньо до прив'язки моделі.
Прив'язка моделі
Спочатку імпортуємо в сцену з нашою моделлю візуал будь-якого NPC з архівів гри. Видаляємо міш. Таким чином, у сцені залишається лише ваша модель та скелет із гри. Тепер необхідно начепити міш на скелет. Найкраще міняти саме модель, залишаючи скелет незмінним, щоб уникнути проблем із шейпами. Хоча плагін експорту повинен повертати положення кісток у вихідні, відбувається це чомусь не завжди, тому краще перестрахуватися).
Після того, як ви підігнали форму моделі під скелет (до речі, можна не видаляти модель сталкера, а орієнтуватися по ній, так комусь може здатися зручніше) ще раз обнулюємо історію, як описано вище. Тепер, коли всі приготування закінчені, необхідно змусити модель деформуватися під дією скелета. А робиться це так:
1. Виділяємо модель і скелет, потім тиснемо Skin , у списку вибираємо пункт Bind Skin , натискаємо на кубик, навпроти Smooth Bind :
2. У вікні робимо такі налаштування:
Все, наша модель прив'язана до скелета. Однак не все так райдужно, як може здатися на перший погляд - у моделі крива розважування, тобто кістки впливають на оболонку не так, як треба. Щоб ви зрозуміли, що я маю на увазі, подивіться на ілюстрацію:
Модель вимагає додаткового налаштування, проте вже на даному етапі можна перевірити її працездатність, експортувавши в SDK і підставивши гру, як описано нижче.
3. Знову виділяємо модель. Розважування моделі правиться інструментом Paint Skin Weights tool , а знаходиться він тут:
Зверніть увагу знову натискаємо на кубик, а не на напис. Якщо ви все зробили правильно, ваша модель перетвориться на чорно-білу, а праворуч з'явиться вікно налаштувань інструменту.
Спробую коротко пояснити принцип роботи з Paint Skin Weights tool :
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 :
Мабуть, все.
Невеликий ліричний відступ на тему скелетів: Існує щонайменше два способи імпортування скелета з гри в 3DS Max – через OGF2SMD та через FBX . Обидва способи мають свої плюси та мінуси. Наприклад, при видобутку кістяка за допомогою OGF2SMD останні кістки у гілках виходять дуже довгими, а за допомогою FBX деякі кістки виходять настільки маленькими, що дуже незручно в них потім тикати. Я вибрав OGF2SMD.
Взагалі, після імпорту в 3DS Max скелета, потрібно домальовувати в кінці кожної гілки ще по одній кістці, але я вже зробив це за вас, тому просто беремо файл з архіву.
1. Завантажуємо «Еколог.max»
2. Натискаємо File –> Merge , (ваша модель має бути форматі .max) та імпортуємо майбутнього NPC у сцену з екологом
3. Якщо все зроблено правильно, ваша модель з'явиться на тому ж місці (у мене - там же, де і еколог). Якщо ні – рухаємо.
4. Виділяємо еколога і видаляємо його.
5. Виділяємо нашу модель та призначаємо їй модифікатор Physique . Для цього натискаємо на незрозумілого виду дугу, потім на перевернутий трикутник і в списку вибираємо сам модифікатор:
6. Натискаємо на модель, потім на кістку root_stalker :
У вікні, що з'явилося, нічого не міняємо, тільки натискаємо Initialize .
Все, приступаємо до налаштування розважування моделі. Можна використовувати так звані огинаючі, але я волію відточити по вертексах - довше, але точніше.
Вибачте, не описуватиму принцип роботи з модифікатором Physique, в інтернеті повно статей на цю тему, наприклад, - ця: [ 2] (вас цікавлять тільки розділи «Physique» і «Налаштування вершин»).
Увага є один дуже важливий нюанс. 3DS Max не експортує кістку, якщо до неї або до наступних в ієрархічній структурі не прив'язано жодного вертексу. Тобто треба до всіх останніх кісток у гілках приточити хоча б по одному вертексу.
Так чи інакше, після кількох років мук, модель виявляється прив'язаною більш-менш правильно. Так само, як і в Maya, перевіряємо, чи правильно деформується оболонка, повертаючи суглоби. Знову ж таки, на місце повертаємо їх тільки операцією Undo (Ctrl+z), вручну ніколи. У результаті, у вас має вийти щось на зразок цього (якщо робили як я, по вертекс):
Налаштування прив'язки завершено, приступаємо до експорту моделі у формат .object :
1. Виділяємо нашу модель.
2. Натискаємо на молоточок у правому верхньому кутку екрана (1), потім кнопку More... (2), у списку вибираємо XRay-Export (3), потім, природно, OK (4).
Все, робота в 3DS Max закінчено.
Налаштування в SDK
Для роботи потрібно X-Ray SDK 0.4 .
(ілюстрації, на жаль, зняті з перекладеної версії SDK - прим. ред.)
Отже, приступимо:
1. Відкриваємо АЕ ( Actor Editor ), завантажуємо зроблену раніше модель.
2. Вивчаємо поле з параметрами моделі:
У розділі Object (1) нас цікавить лише останнє поле, User Data (2). У ньому можна прописати шлях конфігу вашої моделі. Якщо залишити поле незаповненим, то двигун гри поставить значення втрати вашої моделі по дефолту. Ще, як варіант, щоб не створювати зайвих папірців, можна прописати шлях до конфігу NPC у броні, схожій за характеристиками вашої. Стандартний вигляд - " #include "models\capture\потрібний_конфіг.ltx ".
У розділі Material необхідно налаштувати поля Texture . Якщо шлях до текстури в 3D-пакеті був вказаний неправильно, Shader (ставимо models/model, якщо не хочемо особливих вишукувань типу напівпрозорості; якщо хочемо, то ставимо те, що вважаємо за потрібне для досягнення необхідного ефекту) і Game Mtl (тут виставляємо default_objec t , знову ж таки, якщо не хочемо вишукувань).
У розділі Motions двічі клацаємо мишкою на полі навпроти Motion reference , у вікні натискаємо на трикутничок біля Actors (1), потім у списку ставимо три галочки як на картинці (2). Натискаємо OK :
Все, модель майже закінчена, зберігаємо зміни. Якщо у грі виникають проблеми з регдоллом, виправте кістки, як описано у статті Створення моделей NPC (виправлення кісток)