Статьи
Создание модели в Milk Shape
3D
Пасяда Александр 16.9.2005, дополнение в 2012 г.
Тем, кто хочет начать моделировать для Half-Life (и не только, т.к. скомпилировать можно ещё в кучу игр), я написал
статью про то, как создать в Milk Shape 3D модель и поставить в редакторе уровней Hammer.
Скачать модель лестницы из скоб skoby.rar
1) Что подсказывает
пространственное воображение стоит нарисовать (т.к. модель простая, то
совсем не обязательно):
2) Т.к. несколько
моделей в одном каталоге создадут неразбериху, создаёте подкаталог для
модели в рабочем каталоге вашего
проекта, к примеру в нашем моде Ralert: C:\Ralert\Модели\Скобы\ В нём скоро появятся файлы
векторной модели — *.smd и мультипликаций — тоже *.smd, текстуры — *.bmp, файл с
параметрами компиляции — *.qc и потом скомпилированная модель —
*.mdl
3)
Туда кидаем 256-ти цветную текстуру в формате *.bmp. Вот развёртка
текстуры рифлёной поржавевшей стали ГС:
Небольшое отступление от темы: называться .bmp-текстура может как угодно, даже по-русски,
но если она будет начинаться приставкой "chrome",
то на всей модели этой текстуре автоматически будет присвоен статус
"хромированного" покрытия... или никелированного, а ещё точнее блестящей полированной поверхности.
Хромированный эффект на текстуре — это
когда грань расположена фронтально, то она красится в цвет центральной точки текстуры 64х64.
Чем сильнее наклон, например, вправо, тем
выбирается более дальняя от центра справа точка. А например, левую верхнюю
точку алгоритм выберет при наклоне почти на 90° влево вверх. Если текстура больше, то выбирается только часть.
Вот текстура для проверки 64x64 и переливающиеся грани куба с хромовым эффектом из этой текстуры:
А теперь хромовый эффект на шаре со сферическим сглаживанием, когда этот искажённый узор текстуры выглядит одинаково со всех сторон шара:
,
вернее почти одинаково, т.к. шар из небольших треугольников неидеален.
И ещё иллюстрации с текстурой 128х128 — вначале модель шара с наложенной текстурой без эффекта, а то на предыдущих примерах не сравнивал:
Когда хромовый эффект используется с текстурой 128x128, видна только верхняя левая четверть текстуры 64х64:
Кстати, этот шар был более многогранным, а значит гладким, чем предыдущий.
Но сейчас "хром" ни к чему. Если будет надо, то и на скомпилированной модели текстуре можно будет задать этот эффект в просмотрщиках и сохранить.
Так вот, в Милке сразу из текстуры стали
сделаем материал
Вкладка
Materials/New и верхняя кнопка, обозначенная на рис. розовым,
предложит загрузить текстуру
4) Цилиндр (точнее
это призма, ладно пофиг). Кстати, цилиндр самый универсальный, т.к. из
него получается большинство фигур вращения — конус (и усечённый), тор,
труба, всякие лампочки, вазы и т.п. Спирали тоже. А цилиндром вместе с
инструментом Face можно создавать произвольные основания — буквы можно
делать. Создадим цилиндр Панель инструментов/Вкладка Model/кнопка
Cilinder
Число сторон я выбрал 9 (сначала, но финальную я сделал заново с 5 сторонами для
скорости на карте).Выбираем 7 сегментов вдоль скобы, чтобы изгибы
смотрелись приличнее.
А внизу оставим флажок "Close Cilinder" — чтобы
основания цилиндра тоже были. (Обычно он у меня сброшен — основания я
заполняю вручную инструментом Face. Получается на 2 треугольника меньше в
каждом основании, особенно если, например, их потом 10-ти кратно
размножаете, то экономия в 40 граней).
5) Выделяем центры
оснований: Вкладка Model/кнопка Select + ниже кнопка Vertex и
масштабируем по высоте - кнопка Scale + ниже включите кнопку оси Y,а X
и Z — отключите.
Для начала важно запомнить, что здесь Y —
вертикальная ось. Между делом, по умолчанию у нас 4 экрана: слева
фронтальный вид, под ним — вид сверху, справа — вид слева и объёмное окно.
В объёмном окне зажав Ctrl или Shift можно менять вид мышкой.
6) А)
Теперь выделяем вершины и поворачиваем на 45 градусов Б) Rotate + ниже
включена кнопка Z и введено 45 В) Подравниваем кнопкой Move и Г-Д)
выделяем-вращаем-подравниваем Е) Снизу симметрично доделывается и Ё)
Подгоняется длина хвостов
7)
Отмасштабированную скобу повернём, чтобы была параллельно полу. И выделяем
её как группу (т.к. к выделению вершин не присвоится материал):
И
присваиваем материал: Вкладка Materials/Assign В объёмном окне
появится затекстуренная скоба:
Если у вас не появилась затекстуренная. То...
В объёмном щёлкните правой кнопкой и среди 4 верхних строк поставьте Texture.
Ну а если это не помогло, загрузите текстуру в материал заново.
8) Подравняем
текстуру: Меню Tools/Texture Coordinate Editor
Кнопками Select и Move подравниваем:
Если у вас не отображаются проекции рёбер на текстуру, значит или вам нужно
выбрать в комбинированном списке редактора координат текстуры нужную группу
(в примере она пока и так всего одна) или группа (3D объект) вообще не была
выбрана.
9) Делаем из скоб
лестницу. Выделим скобу как группу или грани и щёлкаем
Меню Edit/Dublicate Selection
Присвоили новой группе наш материал (Вкладка
Materials/Assign). А сейчас поднимаем её вверх на 17 единиц:
Вкладка Model->Move, а внизу включена кнопка Y cо значением 17,
которое мы ей вписываем. Жмём рядом с кнопкой Z специально обученную...
В общем понятно какую кнопку. Всего сделаем 20 ступенек. Эт хорошо.
10) Модель не
бывает без мультипликации. Для этого нужен скелет. Поставим одну скелетную
вершину — joint:
Кстати, "joint" можно было бы перевести ещё и как "сустав".
Если кружок скелетной вершины слишком велик, зайдите в меню File->Preferences... и замените в поле Joint Size вкладки Misc размер 0,2 или 0,02 вместо 1.
Только помните особенность энтити monster_furniture из Hammer-а.
Если ставите monster_furniture на произвольной высоте, он сваливается своей нижней скелетной вершиной на пол (точнее
ближайший брашевый блок). Если под ней у модели есть грани — они уйдут в
пол. Чтобы не сваливались, правда, можно ставить не с помощью monster_furniture, с помощью непроходимого в игре объекта
Cycler, но подробно сейчас об этом не буду.
Чтобы присвоить вершины к скелетной вершине, выделим скелетную
вершину... чего её выделять, она одна. Выделим вершины скоб.
Можно выделить совсем просто: так как они все у нас не принадлежат ещё к скелету, так
что:
Вкладка Joints->SelUnAssigned — выделяются незадействованные
вершины
Joints/Assign — присобачили
11) На последок я
одну скобу искривил — повернул часть по 2 осям. И заострённые концы,
которые будут в стене, удалил.
12) Можно
экспортировать: Меню File->Export->Half-Life SMD
Под названием skoba1.smd
Сейчас Милка спросит Reference или Sequence. Reference — это
векторная сетка, Sequence — мультипликация. Наше — первая.
А в другой модели я удалил кривую — поставил нормальную. И также экспортировал под названием
skoba0.smd
(кстати обычно в smd-файлах сеток пишут оканчание _ref, но
это важно там, где куча smd-файлов движений)
13) Режим
мультипликации включается большим кнопарём снизу:
Так как
движений нет, можно сделать единственный кадр. И запомнить его (сделать
его ключевым): Ctrl+k или Меню Animate->Set Keyframe
14) Экспорт
движения:
Меню File->Export->Half-Life SMD
Сохранить под названием idle.smd (в переводе с англ. "холостое движение")
Опять спросит "Referense или Sequence?". Sequence.
15) Простой
текстовый файл компиляции proba.qc прописывает параметры наподобие таких
("// " означает начало комментария с обязательным пробелом после слешей):
$modelname
"proba.mdl"
$cd ".\"
$cdtexture ".\"
// векторная модель
$body body "proba_ref"
// 1 мультипликация (7 кадров/с)
$sequence "idle" "idle" fps 7
Скачать proba.qc
Нам нужны были бы файл модели proba_ref.smd и движения idle.smd. Но у нас есть 2
файла модели skoby0.smd и skoby1.smd
Поэтому для нашего случая впишем 2 альтернативные бодигруппы:
$modelname "skoby.mdl"
$cd ".\"
$cdtexture ".\"
// 2 векторные модели - на карте ,например,
в monster_furniture добавь параметр body. body=0 - будет skoby0, body=1 -
будет skoby1
$bodygroup body
{
studio "skoby0"
studio
"skoby1"
}
// 1 мультипликация (7 кадров/с)
$sequence "idle"
"idle" fps 7
Вообще-то я сделал генератор .qc файлов для упрощения создания сценариев компиляции. Советую скачать — Генератор qc сценариев вер. 1.0.1,
но в таком простом случае он не понадобился.
Копируете компилятор моделей studiomdl.exe (cкачать studiomdl
— она теперь понимает формат DoD) в каталог модели и пишете в командной строке
studiomdl.exe skoby.qc
Чтобы не химичить в командной строке, можно, как предлагает Digital Brother, использовать для него GUI, т.е. графическую оболочку
GUI StodioMDL v. 2.2.
Получили mdl-ку. В просмотрщике моделей Jed's Half-Life
Model Viewer 1.36 она выглядит так:
Кидаете skoby.mdl в папку models вашего мода. Ставите monster_furniture. В параметре
Model открываете окно и находите в файлах skoby.mdl. А отключив кнопку
Smart Edit добавляете новый параметр body со значением 0 — без кривых
скоб, или со значением 1 — с одной кривой скобой.
Если у вас модели видны в редакторе кубиками или параллелепипедами, то скачайте более свежий файл
halflife.fgd
и поставьте его в редакторе Hammer v. 3.5 beta: Меню Tools/ Options/ вкладка Game
Configurations/ текстовое окошко Game Data files
[Единственная доработка этого Red Alertовского fgd для Half-life в том, что у учёных 8
голов, а не 4]. А если и сейчас модели выглядят кубиками, то переместите
этот halflife.fgd в конец списка fgd в Hammer-е.
Модель в редакторе карт отрисуется полностью, а если её выделить, то и с рамками габаритов. И станет проигрываться первое движение:
Но это в редакторе, а в игре движение нужно будет задавать с помощью вызова объекта с моделью энтитей scripted_sequence или параметров объекта env_model.
Если разбираться с движениями в Milk Shape 3D, то окажется, что легко сделать поступательное движение или вращение.
Сложнее редактировать разные навороченные движения. К сожалению, человекоподобному персонажу создать ходьбу или что-то не менее сложное здесь трудно, лучше для таких задач изучить Blender, 3D Max, iClone или может быть возьмётесь за Maya.
В ходьбе не помешало бы немного отработки гравитации и отслеживания пересечения тела с поверхностью земли, чего в Milk Shape 3D нет.
Ответ на вопрос "Какой энтитей вставить модель на карту?":
можно найти у БУзера в FAQ:
http://www.half-life.ru/forum/showthread.php?s=&threadid=9049
Там вообще ответы на многое технического плана.
Я написал, как создать простую модель. А сейчас ссылки:
Здесь справочная статья
про то, как настраивать файлы qc-сценариев компиляции с примерами.
А ещё хороший учебник по моделированию на русском
можете посмотреть, пройдя по этой ссылке:
http://www.halflife.ru/mdl/tut.shtml
|