Как сделать файл mdl

Обновлено: 04.07.2024

В данной статье я вам расскажу как можно сделать кастомную модель игрока путём обычного прописывания через натив, так-же рассмотрим примеры

Автор статьи: Mort3m
Вообще, сама задумка статьи с зм сру, но так как это мертвый сайт, кого это волнует?

В данной статье я вам расскажу как можно добавить собственные ( кастомные ) модели игрокам.
Многие делают эти самые модели через мод, как по мне, легче сделать так, как я опишу в этом гайде.
И так, для начала нам нужен Zombie Plague Fix5a . Потому что в этом фиксе есть натив на установку кастомной модели.

Если данного фикса у вас на моде нету, берём обычный Zombie Plague.

ВНИМАНИЕ! Следующий блок статьи пойдет о том, как добавить натив на установку кастомной модели. Т.е для тех, у кого нет Fix5a .
Приступим.

1. Открываем исходник мода.

2. Ищем строку
3. Ищем свободное место для добавления натива. Либо место, куда вы бы хотели поместить сам натив.
Лично я это буду делать после натива zp_force_buy_extra_item
Добавляем строку:
Должно получиться так:
4. Теперь нам надо добавить саму функцию установки кастомной модели.
Спускаемся до строки:
И в любом удобном месте вставляем этот блок кода:
Должно получиться так: ( Шрифт уменьшил чтобы код влез полностью )

Если вы всё сделали правильно, компиляция должна пройти успешно:

ВНИМАНИЕ! Следующий блок статьи пойдет для всех пользователей, имеющих как обычный Zombie Plague так и Fix5a .
Итак, перейдем к основному.
Теперь нам надо будет написать маленький плагин, добавляющий вашу модель игрокам. Сам плагин я выложу в этой статье.

1. Создаём файл формата .sma с любым угодным вам названием

2. Заходим в файл любым текстовым редактором.

3. Подключаем инклуды + Оффсеты.
4. Вписываем натив + некоторые макросы + создаём переменную.
Важно! ПАПКА С МОДЕЛЬЮ И САМА МОДЕЛЬ ДОЛЖНЫ БЫТЬ С ОДИНАКОВЫМИ НАЗВАНИЯМИ
5. Теперь нам надо вписать два форварда. plugin_precache и plugin_init
И в них зарегистрировать нужное нам событие и регистрацию плагина ( по желанию )
6. Теперь нам осталось создать публичную функцию и вписать форвард когда игрок превращается в человека.

Эта статья - введение в моделирование персонажей, оружия, транспорта и предметов для движка Source. Другие статьи в Категории: Моделирование подробнее описывают процесс создания моделей, привязки, анимации, сборки и назначения игровой физики.

Contents

Базовые файлы и инструменты

Softimage|XSI Mod Tool для Half-life 2

Все модели в Half-Life 2 были созданы в Softimage XSI. Бесплатную версию Softimage Mod Tool, специально созданную для разработки модификаций, можно найти на сайте Autodesk. Также на сайте вы найдете аддон для движка Source (необходимый для создания контента в Source), уроки, форумы и другие полезные вещи, которые помогут вам освоиться с Softimage Mod Tool.

.SMD - файлы

.SMD-файлы экспортируются из XSI в меню file/export. Они бывают трех типов.

  • Базовый (reference) файл SMD - точный "снимок" модели, с ее геометрией, структурой костей, текстурой и связями между вершинами сетки и ее скелетом. Референсные .SMD не содержат данных об анимации -- они лишь создают статичный слепок всей модели в заданный момент времени.
  • Физический (physbox) .SMD содержит информацию об объемах, которые физический движок использует для расчета столкновений и о привязке вершин к скелету.
  • Анимационные (animation) .SMD-файлы содержат только данные об анимации, а также информацию о скелете, достаточные, чтобы программа StudioMdl знала, что анимация соотвествует скелету reference-модели.

Как можно видеть, для анимированной модели нужны по крайней мере два .SMD -- а беглый взгляд на исходные файлы Half-Life в SDK показывает, что большинство моделей имеют очень много файлов анимаций. С другой стороны, очень многим моделям нужен один-единственный базовый .SMD-файл.

.QC-файлы

Файлы .QC можно считать чем-то вроде таблицы с содержанием проектов моделей: .QC содержит полный список всего, что будет включено в законченную модель. Основная задча .QC-файла -- говорить компилятору StudioMdl, где искать текстуры и .SMD-файлы.

Также в .QC определяется информация, относящаяся уже к игровому движку. Например, .QC-файл дает движку сведения о том, где должны быть эффекты -- сияние (glow) или дым, -- какие анимации отвечают различным действиям AI, а также когда и какие звуки проигрывать.

StudioMDL

Studiomdl.exe это работающая из командной строки программа, которая на самом деле создает файлы моделей Half Life. В качестве параметра командной строки она получает имя файла .QC, а затем использует его, чтобы найти нужные .SMD-файлы моделей и файлы текстур. Также программа выдает информацию о том количестве памяти, которое занимают геометрия модели, ее текстуры и анимации. Это может быть полезно в отладке и оптимизиции моделей. It takes the name of a .QC file as a command parameter and uses the .QC to find the relevant .SMD and texture files. The program also provides feedback on the amount of memory used for the completed model's geometry, textures, and animation data, which can be useful in debugging and optimizing your models. О компиляции моделей с помощью studiomdl.exe см.Основы компиляции моделей.

Если вам неудобно использовать командную строку, можете попробовать созданные сторонними разработчиками инструменты, такие как GUIStudioMDL или Studiocompiler.

.MDL-файлы

Конечный результат описанного выше процесса -- файл модели Half-Life (.MDL), который содержит всю информацию о модели: геометрию, анимацию, работу AI и т.п. Он готов, и соответсвующий код сможет использовать модель.

Процесс моделирования

Перед созданием любой модели лучше подготовить четкое изображение вашего персонажа, транспорта или вещи. Это изображение чем-то похоже на чертеж.. Когда дизайн персонажа готов, можно приступать к созданию геометрии, редактировать жесткие ребра, чтобы модель правильно освещалась, добавлять текстурные координаты, привязывать сетку к скелету, делать мимику.

Анализ моделирования персонажа

Прежде чем начинать дизайн модели, вам, возможно, захочется обдумать такие вещи, как производительность, использование в игре, технические ограничения (число полигонов, размер текстур), различные аспекты анимации и соглашения о названиях. Самое важное, что нужно продумать перед планированием модели -- это предполагаемая роль этой модели в вашей модификации.

Как этот персонаж будет использоваться?

Это персонаж, который всегда будет атаковать издалека или же сражаться близко? Он будет появляться в темных помещениях или на улице днем, а может и там, и там? Какого цвета в целом уровни, в которых персонаж будет появляться? Насколько важен этот персонаж в модификации, это главный персонаж или изредка появляющийся статист? Лучшее, что можно сделать в целом для дизайна это определить наиболее вероятную дистанцию, позицию,окружение, в котором персонаж будет появляться, а потом убедиться, что персонаж хорошо выполняет свои задачи в этих условиях.

Концепты

Лучше всего моделирование начинать с создания концепт-арта, который разом решает большинство проблем дизайна. На этом этапе вы решаете, кто ваш персонаж, какой он формы, как выглядят материалы и даже какими могут быть базовые позы для набора анимаций. Также это относительно безболезненный способ проверить с командой ваши идеи, не тратя время на моделирование, текстурирование и анимацию персонажа. Перед тем, как продолжать, лучше постараться собрать как можно больше отзывов о дизайне. Все персонажи Half-Life 2 пережили несколько версий и доработок прежде чем были завершены.

Проекция модели


Model sheet, изображающий бойцов сопротивления женского и мужского пола из Half-Life 2 спереди и сбоку.

Концепт обычно изображает персонажа во вполне определенной позе, причем с того угла, который может затруднить использование рисунка в качестве образца для моделирования. Поэтому следующий шаг -- это создание Model Sheet ("проэкция модели"). Это листы пришли из традиционной анимации. Чертеж модели изображает персонажа в нейтральной позе спереди и сбоку, без перспективы. Проэкции персонажа это своего рода чертеж его геометрии, на котором конкретизируются ваши соображения о его пропорциях, силуэте и форме. Как правило, этот скетч вы будете использовать при моделировании как фоновое изображение в окнах проекций XSI (иногда метод называют ротоскопией -- Rotoscopy,-- см. в документации XSI)

На этом скетче показаны проекции повстанцев: мужчины и женщины из Half-Life 2.

Производительность и технические требования

Число полигонов в некоторых моделях персонажей из Half-Life 2:

  • Солдаты: 4682
  • Полиция: 3852
  • Сопротивление: 4976
  • Зомби: 4290
  • Вертолет: 6415
  • Страйдер: 6444
  • Эликс: 8323

Не существует жестких правил, фиксирующих, сколько треугольников можно потратить на модель или текстуры какого разрешения можно использовать. Есть верхний предел возможностей движка (10000 полигонов на модель, 17433 вершин и текстуры со стороной 2048 пикселей), но это не к этому нужно стремиться. Следует продумать, сколько таких персонажей/машин/предметов будет в кадре. Если вам хотелось бы показывать их десятками в любой момент игры, то ограничение на количество треугольников будет другим, нежели в случае, если на экране этот объект будет один. Для человекоподобных существ, особенно в моделях для мультиплеера, не следует тратить более 4000 полигонов на хорошую модель персонажа - которая имеет достаточно создающих форму деталей, достаточно ребер для корректного освещения и правильно сгибается в суставах. Разумеется, вы можете выделить на персонажа и больше, но при использовании карт нормалей и текстур высокого разрешения необходимости в этом обычно не возникает.

Одна из полезных особенностей XSI заключается в возможности работать с моделью из четырехугольников, и иметь правильно расположенные ребра (петли, edge loops), задающие форму. В такой модели можно легко добавлять и удалять сечения -- особенно когда сохраняются текстурные координаты, -- а также можно изменить геометрию модели, сохраняя веса вершин. В движке Source поддерживаются Дискретные уровни детализации (LOD'ы). Они могут существенно поднять скорость обсчета сцены.

Создание геометрии

К этому времени вы имеете приблизительное представление о том, как персонаж будет использоваться, о том, какой именно дизайн вы создаете, о том, как выглядит геометрия спереди и сбоку, и о том, сколько треугольников отведено на этого персонажа. Пора приступить к моделированию. Процесс создания геометрии для движка Source не является специфичным только для этого движка, поэтому здесь он не будет подробно рассматриваться. Мы просто рассмотрим некоторые общие указания, которые могут упростить процесс моделирования.

Подходы к моделированию

Есть много способом начать создавать модель, но стандартом индустрии de facto является subdivision-моделирование (дополнительное разбиение, "подразделение", участка поверхности и затем увеличения детализации - прим.перев.). При создании моделей для Source вы скорее всего будете использовать только один-два уровня subdivision, но тем не менее это неплохой способ получить органические формы из низкополигональных контрольных, базовых моделей. При использовании этого метода, большая часть работы производится путем выдавливания геометрии и перемещения получившихся вершин и ребер, пока они не станут соотвествовать проекциям персонажа, которые вы поставили фоном в окнах проекций. Распространенная ошибка начинающих моделлеров состоит в том, что они не используют преимущества влияния веса вершины на получающееся разбиение поверхности. Пожалуйста, обратитесь к документации XSI за более подробной информацией о создании моделей по методу subdivision surface. На определенной стадии моделирования вам понадобится напрямую редактировать получающуюся сетку чтобы произвести окончательную проработку мелких деталей.

Симметричное моделирование

Умение определять симметричные области модели может сэкономить время при создании модели, развертки и текстур. Также, повторяющиеся элементы вашего дизайна лучше создать один раз и отклонировать по модели нужное число раз. Существуют разные способы симметричного создания модели, но использование Symmetrize Polygons -- безусловно, наиболее эффективный из них. С помощью этого инструмента XSI (Model>Modify>Poly. Mesh>Symmetrize Polygons) вы можете копировать области сетки, с заданной трансформацией, при этом сохраняя UV-координаты и другие параметры, которые вы можете задать.

Реберные петли (Edgeloops) и Анимация

Одно из требований при создании модели -- хорошее расположение ребер около суставов, чтобы они могли аккуратно сгибаться, сохраняя правильность формы и привязки; у вас даже могут быть плечи, правильно работающие почти в любом положении. Положение и вес edge loop'ов практически всегда будут требовать правки после привязки сетки к скелету и проверки нескольких поз.

Редактирование острых/сглаженных ребер

После того, как геометрия модели воссоздана, понадобится определить, какие ребра на модели должны быть острыми. Возможно использовать автоматическое сглаживания, но это обычно дает результат, далекий от идеального. Выбрать, какие ребра сделать острыми, не так просто. Несглаженные ребра обычно использут чтобы изобразить сгибы, трещины, границы между материалами, места, где у модели большие углы между гранями (ориентировочно, больше 75 градусов). Вообще говоря, все ребра с углом между гранями более 90 градусов должны быть острыми, поэтому можно начать с автоматического сглаживания для такого значения угла. Чтобы редактировать острые ребра, войдите в режим выделения ребер (например, горячей клавишей "i"), выделите ребра, нажмите правую кнопку мыши на выделеных ребрах и выберете Mark hard edge/vertex (у меня работает по-другому: Model>Modify-Component>Mark hard edge/vertex - прим. перев.). Если выделить эти ребра еще раз и выбрать эту же опцию, то острые ребра будут становиться сглаженными и наоборот. Можно также убрать свойство жесткости ребер, удалив их ветвь в иерархии модели в Проводнике (XSI Explorer).

Задание UV-координат


Следующим шагом в создании модели будет редактирование UV-координат вашей модели. За базовой информацией по редактированию UV-координат отбратитесь к документации XSI (разделы Shaders, Lights and Cameras. Section: Texturing Basics). Один из подводных камней в работе с текстурным редактором XSI заключается в том, что в результате получается несколько наборов UV-координат. Вам нужно, чтобы у модели был только один набор текстурных координат. На этом рисунке вы можете видеть, как в одном узле текстурных координат можно в какой-то момент получить несколько наборов текстурных координат.

Начинающим этого, как правило, нужно избегать. Если и в том, и в другом наборе полезная информация, используйте возможность копирования и вставки UV, чтобы объединить их в один.

Чтобы с чего-то начать, попробуйте использовать тип маппинга Get>Property>Texture Projection>Cubic, он даст набор хороших кусков развертки, так называемых UV Islands. Затем можно воспользоваться инструментом Island Heal в текстурном редакторе, чтобы быстро соединить эти куски и повернуть/отмасштабировать их. Также обратитесь к разделу The Texture Editor, Healing Polygon Islands документации XSI.

Привязка сетки модели к скелету

Когда вы решили проблемы с геометрией модели, назначили развертку и получили приемлемый скелет, нужно привязать сетку к костям. Это можно сделать через панель анимации. Нажав 2 вы переведете панель инструментов в режим анимации. Когда ваша сетка выделена, выберете оболочку Deform>Envelope>Set, затем выделите кости, которые хотите включить. Чтобы редактировать получившиеся envelope'ы (оболочки), используйте панель весов, в которую можно попасть через иконку кисти в нижнем левом углу интерфейса. В этой панели также есть редактор весов, в котором можно сохранять и загружать веса envelope'ов. Подробное объяснение процесса привязки к скелету можете прочитать в разделе Envelopes документации XSI.

Правка envelope'ов и геометрии для анимации

Настройка директорий и рабочей среды (workspace)

Структура директорий

Информацию о расположении скомпилированных моделей и исходных файлов смотрите в статье Файлы Source SDK b структура директорий. Чтобы узнать, как компилировать модели, используя эту структуру, см. Компиляция моделей.


Перво наперво вам надо заиметь копию 3Ds MAX, Photoshop (или другой редактор графики) и лиц. копию SSDK.

Если у вас все это есть - приступаем к моделлированию. Запускайте MAX, а я пока подожду.

Запустили? отлично, надеюсь у вас есть базовые навыки работы в максе. Создайте BOX размерами 50х50х50

gamer-lab.com

Тычим по нему правой кнопкой мыши (далее как у нормальных людей ПКМ) и ыбираем Convert to >> Editable Poly

gamer-lab.com

Открываем свойства объекта >> свиток модификаторов и там выбираем Unwarp UVW

gamer-lab.com

наш куб обводится зеленой линией и справа появляются настройки. Там жмем кнопарь "Edit"

gamer-lab.com

Открывается окно. В этом окне снизу жмем кнопочку
Далее сверху Mapping >> Flatten Mapping. Откроется окошко


В нем жмем ок. Получается следующее:

Оставим как есть, в данном случае и так хорошо =)
Сверху жмем Tools >> Render UVW template и в окошке вводим размер будущей текстуры, в этой модели оставим стд - 1024х1024

Тут жмем кнопку Render UV Template.
И в следующем окне жмем чтобы сохранить развертку.
Сохранять можно в любом формате в любой папке.
Сохранив развертку закройте окно редактирования развертки. Теперь откроем Photoshop (или другое схожее с ним приложение)
В нем откроем только что сохраненную развертку. Теперь будем по ней рисовать текстуру. Рисовать сами знаете как, если не знаете - перед вами весь интернет =)

Я сделал такую вот текстуру:


gamer-lab.com

Сделав текстуру натянем ее на нашу коробку.
Для этого откройте Material Editor , выберите свободную ячейку, затем нажмите на квадрат справа от Diffuse и в открывшемся окне выберите bitmap. далее выберите текстру.


gamer-lab.com

У меня получилось следующее:


gamer-lab.com

Теперь займемся технической частью. А именно костямми.
Нажмите на кнопку создания примитивов и в конце на кнопку Systems

Далее на кнопку bones. Создайте одну кость любого размера и поместите ее в центр - для точного перемещения в пространстве нажмите ПКМ на одной из 3х иконок.
1ая - перемещение вверх-вниз
2ая - поворот влево, вправо, вверх, вниз
3я - изменение размера по всем осям и по отдельности

Поместив ее в центр откройте свойства коробки и добавьте к ней модификатор Skin.
Добавьте там кость bone01.

Все, теперь экспортируем модельку в .SMD

Создайте папку в C:\Program Files\Steam\steamapps\sourcemod\ваш мод или там где у вас Steam- \box
Туда и экспортируйте .SMD
Сначала экспортируйте box_ref.smd - это будет сама модель
Потом экспортируйте анимацию длинною в 2 кадра:


gamer-lab.com


И назовите ее box_idle.smd

С моделлингом покончено, теперь будем делать .qc
Создайте блокнотом в папке с экспортированными .smd - файл с именем и расширением box.qc
В этом файле напишем:

$cd "C:\Program Files\Steam\steamapps\sourcemods\motiondrive\box" \\ путь к .qc файлу
$modelname "mymdl/box.mdl" \\ путь и название модели (не забудьте предварительно создать эту \\ папку!
$scale 1.0 \\ размер модели (1.0 - без изменений)
$body "body" "box_ref.smd" \\ название .smd который используется в качестве основы
$cdmaterials "models/box/" \\папка с текстурами
$surfaceprop "wood" \\ то из чего модель состоит
$sequence idle "box_idle" fps 30 ACT_IDLE 1 \\ анимация*
$collisionmodel "box_ref.smd" \\физ. модель для определения движком формы объекта
// Масса в кг
$concave \\ физбокс модели имеет несколько вогнутых мест
$mass 5.0 \\ масса
>
$keyvalues \\ тэги для определения движком что мдлка физическая
"prop_data"
"base" "Wooden.Medium" \\ соответственно из чего модель состоит (служит для определения
\\ движком какие звуки юзать)
>
>


\\ * idle - название анимации, box_idle - .smd с анимацией, fps - кол-во кадров в сек., ACT_IDLE - \\ акт для использования в коде.

Теперь займемся текстурами. Скомпилируйте и настройте текстуры, затем скопируйте их в папку models\box НЕ ИЗМЕНЯЯ ИХ НАЗВАНИЯ.
В настройках текстуры используйте только шейдер VertexLitGeneric, иначе будет эмошность.


Из этого руководства вы узнаете как с помощью 2-х простеньких программ можно преобразовать файл модели *.mdl в исходный формат файла карты *.vmf для редактора Hammer Editor. Этот метод будет полезен тем, кто работает с Propper для создания моделей через редактор Hammer Editor.


1,140 уникальных посетителей
51 добавили в избранное








Сначала внесу небольшую ясность, для чего я написал это руководство и почему всё-таки меня посетила эта идея? Начнём с того, что все вы знаете, что я использую Propper для создания своих моделей для Мастерской Garry's Mod. И как то на днях меня посетила очень интересная мысль, конечно же я задался вопросом: А можно ли преобразовать файл модели *.mdl в исходный формат файла карты *.vmf, чтобы открыть его через редактор Hammer Editor и отредактировать под свои нужды?

Примерно неделю я искал методику преобразования, искал инфу, но нифига не находилось. И я решил ещё раз скачать и опробовать все программы, которые в наши дни создали для работы с Source движком, начал я, конечно же, с таких программ как BSP Source, Crowbar, EntSpy, Crafty, MDL Viewer и даже в программе Blender перекопал все функции, но нифига не нашёл.

Потом я вспомнил, что есть такая замечательная программа, как MilkShape 3D — Эта программа для работы с моделированием, для тех кто не знает. Скачав эту программу я понимал, что у программы очень большой функционал и решил опробовать её. До этого я ни разу не работал с MilkShape 3D и по этому, как и вы, в этой программе я до сих пор новичок.

Приложения, которые вам понадобятся для работы, это:

Кликните по наименованиям программ и ссылке на официальный сайт, чтобы перейти и загрузить эти программы на ваш компьютер. Скачайте и установите эти программы, а мы едем дальше.

Для активации программы Milkshape 3D запустите программу и нажмите сверху: Help → About. Перед вами появится окошко о программе, в этом окошке нажмите кнопочку — Register и в появившемся окошке введите один из ключей ниже:

Name: Milkshape
Code: J2Bd1-TCdcZ3-T27d11d

Name: User
Code: dS40d-1Ed33d-36d27d2

Итак, для начала вам нужно взять какой-нибудь файл модели *.mdl — с помощью программ мы разберём файл модели, а затем преобразуем его в исходный формат файла карты, то есть *.vmf

В качестве тестовой модели мы будем использовать модель скорой помощи из Team Fortress 2. Эту модель вы сможете найти, если откроете файл tf2_misc_dir.vpk с помощью программы GFSCape, если что, файл лежит в директории Team Fortress 2 → tf → tf2_misc_dir.vpk

Извлеките файлы модели в любую удобную вам папку, вот как сделал я:

С помощью программы Crafty сейчас мы разберём эту модель и экспортируем в исходный формат модели файла *.obj

Запустите Crafty и откройте файл модели *.mdl через программу. При открытии вы увидите что-то вроде вот этого:

Не у всех пользователей одинаково открывается обозреватель моделей. У некоторых будет белое, как у меня на скриншоте, а у некоторых будет показана текстура модели. Вам нужно нажать File → Export или клавиши: Ctrl + E — Чтобы открыть экспортер файла модели в другой формат.

Введите название файла, и укажите формат *.obj для экспорта, как показано на картинке:

Теперь запускаем MilkShape 3D и нажимаем: File → Import → Wavefront OBJ…

И открываем наш *.obj файл.

Вот так в редакторе выглядит исходный файл модели:

Но наша задача не осматривать модель, а преобразовать её в исходник для Hammer Editor, по этом не расслабляемся и продолжаем преобразование.

Теперь нажимаем File → Import → Q3Radiant MAP…

После нажатия перед вами откроется вот такое окошко:

Это специальный экспортер, который позволяет преобразовывать всё что угодно в формат *.map — Этот формат используется в редакторе GoldSource Engine для старых GoldSource игр, проще говоря. Например CS 1.6 или Half-Life.

В этом окошке вам нужно написать название файла модели с окончанием .map в конце файла. Например: my_model.map и нажать клавишу: ОК. В общем, смотрите картинку как сделал я и точно не ошибётесь:

После сохранения в папке, через которую мы открывали модель в редакторе — появится *.map файл:

Теперь вновь запускаем Crafty и с помощью этой программы открываем наш сохранённый *.map файл. В моём случае я открою файл ambulance.map итак, что получилось у меня:

Теперь вновь нажимаем File → Export или Ctrl + E

Вводим название файла модели и указываем тип файла: *.vmf — Исходный формат файла карты Hammer Editor и сохраняем его.

И что мы видим? О чудо! У нас появился исходный файл карты *.vmf файл. Открываем его через Hammer Editor и смотрим, вот что получилось у меня:

Модель преобразована в браш, теперь вы можете делать с ней, что захотите. Обрезать, удалить, увеличить, удалить часть, скопировать часть. Экспериментируйте друзья!

Как вы видите, всё очень просто. Достаточно приложить небольшое усилие и желание — и только тогда у вас всё получится.

Читайте также: