Главная
Новости
Статьи
Ссылки
Гостевая книга
Форум
Почта:
Прочее
Общая информация
Предыстория
Оружие
Кадры из игры
Концепт-арт
Скачать
Инструменты
Авторы проекта
Глоссарий объектов
Юмор в картинках

Статьи

Создание модели в 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:
хромовый эффект на сфере выглядит одинаково со всех сторон
Кстати, этот шар был более многогранным, а значит гладким, чем предыдущий.
Но сейчас "хром" ни к чему. Если будет надо, то и на скомпилированной модели текстуре можно будет задать этот эффект в просмотрщиках и сохранить.
Так вот, в Милке сразу из текстуры стали сделаем материал

Создание материала в Milk-е

Вкладка Materials/New и
верхняя кнопка, обозначенная на рис. розовым, предложит загрузить текстуру

4) Цилиндр (точнее это призма, ладно пофиг). Кстати, цилиндр самый универсальный, т.к. из него получается большинство фигур вращения — конус (и усечённый), тор, труба, всякие лампочки, вазы и т.п. Спирали тоже. А цилиндром вместе с инструментом Face можно создавать произвольные основания — буквы можно делать.
Создадим цилиндр
Панель инструментов/Вкладка Model/кнопка Cilinder

В Milk Shape создан цилиндр

Число сторон я выбрал 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) Отмасштабированную скобу повернём, чтобы была параллельно полу. И выделяем её как группу (т.к. к выделению вершин не присвоится материал):

выделение группы для материала в Milk Shape

И присваиваем материал:
Вкладка 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 она выглядит так:

лестница из скоб модель для Half-Life skoby.mdl

Кидаете 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-е.

Модель в редакторе карт отрисуется полностью, а если её выделить, то и с рамками габаритов. И станет проигрываться первое движение:

модель в редакторе Hammer 3.5
Но это в редакторе, а в игре движение нужно будет задавать с помощью вызова объекта с моделью энтитей scripted_sequence или параметров объекта env_model.

Если разбираться с движениями в Milk Shape 3D, то окажется, что легко сделать поступательное движение или вращение. Сложнее редактировать разные навороченные движения. К сожалению, человекоподобному персонажу создать ходьбу или что-то не менее сложное здесь трудно, лучше для таких задач изучить Blender, 3D Max, iClone или может быть возьмётесь за Maya. В ходьбе не помешало бы немного отработки гравитации и отслеживания пересечения тела с поверхностью земли, чего в Milk Shape 3D нет.

Ответ на вопрос "Какой энтитей вставить модель на карту?":

  • cycler,
  • cycler_sprite,
  • env_model из мода-надстройки Spirit of Half-Life,
  • monster_furniture или
  • monster_generic
можно найти у БУзера в FAQ:
http://www.half-life.ru/forum/showthread.php?s=&threadid=9049
Там вообще ответы на многое технического плана.

Я написал, как создать простую модель. А сейчас ссылки:

Здесь справочная статья про то, как настраивать файлы qc-сценариев компиляции с примерами.

А ещё хороший учебник по моделированию на русском можете посмотреть, пройдя по этой ссылке:

http://www.halflife.ru/mdl/tut.shtml






Half-life Red Alert Expantion
Presented by HLRA team
All rights reserved
  Counter.CO.KZ -     !
Hosted by uCoz