Ну господа мапперы, моделлеры и т.д. и т.п. настал день когда вы познакомитесь с процессом компиляции собственных моделей.
Все, всё время спрашивают: <как перенести модель которая сделана в максе, или ещё каком редакторе, в ХЛ2?> Сегодня вы узнаете как это сделать. Мы будем учиться компилировать статичные и физические модели. Для тех кто в танке, объясняю что:
статичная модель (prop_static) - это модель которая не обладает физическими свойствами, т.е. её нельзя сдвинуть с места, разбить или ещё чего, примерами таких моделей могут послужить: дома, деревья, большие камни, горы:.вобщем то чего не должно двигаться в игре и всегда находится на одном месте.
физическая модель (prop_physics) - это модель которая обладает различными физическими свойствами, эту модель можно переместить, толкнуть, сдвинуть с места, разбить и т. д.
Ну пожалуй начнём:..кстати учтите что я предлагаю свой способ компиляции моделей, может кто то делает немного иначе:.но я могу сказать точно, мой способ - работает.
Итак, для начала, что нам нужно:
1) Сама игра
Half-Life 2, настоятельно всем рекомендую лицензионную версию, я уверен вы не пожалеете потраченых денег!
2)
SDK (там находятся необходимые программы для компиляции)
2)
3dsmax 6, 7 (для моделлинга вашей модели, можно кстати и другой редактор:.но в этом туторе я буду описывать как всё проделывать в максе)
3)
Экспортер (для экспорта модели из среды 3dsmax в формат smd). Этот экспортер надо положить в папку с плагинами, например:
С:\3dsmax 6,7\plugins4) Голова и пара рук =))
Я всё буду проделывать на примере простой квадратной табуретки, вот она:
Замоделили? Тогда пошли дальше:
Натягиваем текстуру на модель в формате tga, например:
taburetka.tgaВАЖНО чтобы имя текстуры, которую вы накладываете в 3dsmax-е, совпадало с именем откомпилированной текстуры для этой модели. Теперь как компилировать эту текстуру:
Создаём в папке:
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш модпапку materialsrc, а в ней папку models, туда кидаем нашу текстуру (
taburetka.tga). Теперь лезем в эту папку:
C:\program Files\Valve\Steam\Steamapps\ваш аккаунт\sourcesdk\bin там создаём текстовый файл с помощью блокнота и пишем в нём:
vtex.exe -mkdir -shader VertexLitGeneric C:\progra~1\Valve\Steam\Steamapps\Sourcemods\ваш мод\materialsrc\models\*.tgaНе забывайте указывать вместо слов
<ваш мод> и
<ваш аккаунт> свои аккаунт и название вашего мода!
Теперь сохраняем этот файл как
texture.bat и запускаем его, после чего произойдёт конвертация текстуры из формата tga в формат vmt, в папке:
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш мод\materials\models появятся 2 файла:
taburetka.vmt и
taburetka.vtf
С текстурой всё.
Возвращаемся в 3dsmax и создаём там кость, выбираем вкладку Systems, командной панели, тыкаем на bones и создаём одну кость.
Теперь о том как в максе присоединять кость к модели:
1 способ.
Веделяете всю модель и применяете к ней модификатор skin, нажимаете на кнопку add в свитке parameters:
и в окне указываете единственную кость. Далее жмём на кнопку Edit Envelopes, появятся контейнеры, как на рисунке, увеличиваем значение в поле radius:.как видите из рисунка, я увеличил радиус и левая сторона табуретки окрасилась в красный цвет:.далее выделяем квадратик с правой стороны табуретки и опять увеличиваем радиус, вся наша модель должна быть окрашена в красный цвет, вы также можете включить режим wireframe, чтобы увидеть сетку, на ней будут видны вертексы, т.е. точки этой модели.
Чтобы убедится в том, что наша модель полностью присоединена к кости, выделите эту кость и подвигайте, модель должна перемещаться вместе с костью.
2 способ.
Второй способ, на мой взгляд самый лёгкий:
Выделяете всю модель и нажимаете на кнопку Select and Link, в панели Main Toolbar,
, далее наводите курсор на модель, зажимаете левую кнопку мыши и наводите курсор на кость (курсор примет другой вид), отпускаете. Всё кость присоединилась, можете это также проверить.
Ну и теперь осталось только сделать экспорт модели в формат smd.
Нажимаем File => Export и сохраняем как reference с именем
taburetka.smd в папку с названием, mymodel, которая должна находится здесь:
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш модНастало время создать qc файл. В папке
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш мод\mymodel создадим с помощью блокнота файл, в нём напишем это:
$cd "C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш мод\mymodel" // Это путь к qc файлу
$modelname "mymod/taburetka.mdl" //здесь указываем название модели, а mymod это папка в которой будет лежать готовая модель, вы должны создать эту папку вручную, до компиляции, вот здесь: C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш мод\models
$scale 1.0 // масштаб модели
$body "body" "taburetka.smd" // тут указываем наш smd
$cdmaterials "models/" // путь к текстуре
$surfaceprop "wood" // материал, из которого сделана модель
$sequence idle "taburetka" fps 30 aCT_iDLE 1 // тут указывают smd с анимацией, у нас её нет, поэтому мы используем наш единственный smd
$keyvalues { "prop_data" {"base" "Wooden.Medium" } // это модели того на что будет разлетаться основная модель, ну скажем если постоянно колотить эту модель гвоздодёром, то она разлетится, в данном случае, на деревянные щепки, другие виды осколков можно посмотреть в файле propdata в папке scripts.
$collisionmodel "taburetka.smd" // здесь указывается физическая модель, если указать основную модель то будет создан неправельный физбокс, ну например, между ножек табуретки не будут пролетать пули, поэтому нужно создавать правильный физбокс и писать здесь smd физбокса, об этом чуть позже.
{
// Mass in kilograms
$concave // эт я незнаю чё такое, кто знает пишите в комментах =))
$mass 2.0 // ну а это масса модели в килограммах
}
Сохраняем этот файл как
taburetka.qc Примечание:
Если вы собираетесь компилировать статичную модель то надо заменить параметр:
$keyvalues { "prop_data" {"base" "Wooden.Medium" }на
$staticpropТеперь в папке:
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш модСоздадим, с помощью блокнота, батник:в нём пишем:
C:\progra~1\Valve\Steam\Steamapps\ваш аккаунт\sourcesdk\bin\studiomdl.exe -fullcollide C:\progra~1\Valve\Steam\Steamapps\Sourcemods\ваш мод\mymodel\taburetka.qcИ сохраняем как
mdl.batЗапускаем его. Модель должна скомпилится и появится в папке:
C:\program Files\Valve\Steam\Steamapps\Sourcemods\ваш мод\models\mymodЗапускаем Model Viewer и смотрим какая там у нас получилась модель, у меня вот:
Если будут проблемы с текстурами, например она будет расположена не так как в максе(у меня на рисунке кстати так и есть), то надо использовать в максе модификаторы UVW Mapping или Unwrap UVW.
В моделвьювере я поставл галочку напротив physics Model, как видите физбокс неправильный, и если мы будем стрелять в пространство между ножек то пули будут сбивать табуретку а не пролетать через это пространство.
Сейчаз будем учится делать эти самые правильные физбоксы.
Физбокс это упрощенная модель, которая состоит из простых боксов, проще говоря эта модель нужна для физики, когда вы несколько раз поэкспериментируете, то поймёте что это такое.
В нашем случае физбокс будет такой же по сложности, как и сама модель, потому как табуретка и так очень простая модель.
Так что (в максе) мы просто выделяем все боксы нашей табуретки, и применяем к ним модификатор Edit poly, выделяем все полигоны и назначаем их в группу сглаживания 1
Физбокс любой модели тоже должен быть покрыт текстурой, но настраивать её не надо, потому как в игре этого видно не будет. Если ещё не привязана кость, то привяжите и экспортируйте как reference с именем
taburetka_phys.smd
В qc файле указываете этот физбокс:
$collisionmodel "taburetka_phys.smd"Компилируем модель, открываем модельвьювер и видим нормальный физбокс:
Теперь и пули сквозь дырки пролетать будут и физически эта модель будет кувыркаться в игре (от ваших выстрелов) также как и в жизни =)
Всё это было разобрано на примере простой модели, у вас могут возникнуть проблемы со сложными моделями, а именно с физбоксами:если быть ещё точнее с нормалями:.я не нашёл другого способа, кроме того как выствить точки опоры каждого бокса понулям.
Наверное это поначалу сложно понять, щас попытаюсь объяснить.
Например я задумал сделать арку, сделал модель, сохранил, далее начинаю обкладывать эту модель простыми боксами, т.е. делаю физбокс, потом удаляю оригинал и оставляю эти боксы, сохраняю как физическую модель, компилю и вижу:
Ого:.
Это происходит из-за того что при клонировании и перемещении создаваемых мною боксов, точка опоры смещается относительно центра и происходит такая ерунда, я решил эту проблему вот как:
Создаю арку и кость, соединяю их и когда модель уже готова к экспорту я выставляю точки опоры и у модели и у кости на ноль (причём как координаты перемещения, так и вращения), выставить на ноль их надо следующим образом:
Выделите модель, перейдите во вкладку Hierarchy, нажмите на affect pivot Only и задайте в полях обведённых красным - нули (не забывая что это нужно проделать для координат перемещения и вращения):
Тоже самое проделайте с костью:.теперь делайте экспорт обычной модели.
Дальше создаём физбокс для этой модели:.и делаем опять всё тоже самое с физмоделью и с костью, делаете экспорт физмодели:.компилируете и получаете нормальный физбокс:
Я долго разбирался с этим, и пользуюсь этим способом, может можно как то иначе не знаю:.возможно в Softimage нет таких проблем:.я с этой программой не разбирался и не собираюсь разбираться:
Ну что ещё добавить:..проверяйте пути:.у многих возникают проблеммы и не компилится модель именно из-за не правильно указанных путей.
Терпени, желание, много практики и у вас всё получится!
p.S.
Когда то я тоже не умел компелить простейшую модель, но один чувак, по имени
FishMan научил меня, за что ему огромное СПАСИБО. Надеюсь у меня это тоже получилось, по отношению к вам.
Автор: Donald