Итак, следующая глава обсуждения технологий: добавление 3d-моделей. В общем, все просто, если модель у вас уже есть в формате md2/md3. О том, как этого добиться, если модель в другом формате (в частности, в формате 3ds), я расскажу чуть позже. Сначала скажу, как собсна, вставить модель в гоззо. Модели в гоззо привязываются, во-первых, к Actor'ам из декорейта, а во-вторых - к конкретным фреймам этих акторов. Описание используемых 3d-моделей находится в lump'е modeldefs, синтаксис такой: Для моделей MD2: Model <ActorName> { Path <"path"> Model <model index> <"model file"> Skin <model index> <"skin file"> Scale <X scale> <Y scale> <Z scale> Frame <XXXX> <X> <model index> <"frame name"> } Для моделей MD3: Model <ActorName> { Path <"path"> Model <model index> <"model file"> Skin <model index> <"skin file"> Scale <X scale> <Y scale> <Z scale> FrameIndex <XXXX> <X> <model index> <frame number> } Расшифровка параметров: <"ActorName"> Имя класса actor'а, к которому привязывается модель <"path"> Путь к файлу с моделью в zip/pk3 <"model file"> Имя файла с моделью в zip/pk3 (файл дожен располагаться в директории, указанной в path <"skin file"> Имя файла со скином модели (файл имеет любой формат - bmp, pcx, png и т.д.) <X, Y and Z scale> Масштабирование модели по осям <model index> Можно одному кадру (frame) назначить до четырех моделей. Если вы используете только одну, поставьте 0 <XXXX> Спрайт, который заменяется моделью (например, POSS) <X> Кадр данного спрайта, который заменяется моделью (например, А) <"frame name"> Имя кадра в модели MD2 <frame number> Номер кадра в модели MD3 Модели формата md2/md3 могут содержать несколько кадров анимации; в MD2 кадр имеет имя, а в MD3 только нумеруется. GZDoom понимает изображения (насколько я понял из экспериментов) любых форматов и глубины цвета (то же касается не только моделей, но и текстур). Но в случае скинов для моделей у меня не получилось использовать изображение размером 256х256. Зато 128х128 вполне корректно прочиталось. Видимо, скины 256х256 считаются уже текстурами высокого разрешения, и их нужно прописывать в lump'е hirestex. Но об этом потом. Пример использования модели: Model BloodHound { Path "models/bloodhound" Model 0 "bloodhound.md2" Skin 0 "bloodhound.pcx" Scale 1.0 1.0 1.0 Frame BHND A 0 "walk01" Frame BHND B 0 "walk02" Frame BHND C 0 "walk03" Frame BHND D 0 "walk04" } Это значит, что в архиве есть папка models\bloodhound, а в ней лежит сама модель и скин к ней. Замещаются четыре спрайта BHNDA.. BHNDB.. BHNDC.. и BHNDD.. Итак, еще один пункт "саги о продвинутых технологиях". 3D-МОДЕЛИ Для тех, кто заинтересовался возможностью использовать 3d-модели в гоззо, есть плагин для 3d Studio Max 6-7, позволяющий экспортировать модели в формат md3. Просто кладем скачанный файл в папку plugins и получаем в меню экспорта новый пункт: Quake III (md3). Как делать модели и текстурировать их - это слишком большая тема, чтобы приводить ее здесь. Скажу только пару замечаний: 1) не забываем, что фреймы в моделях md3 имеют только номер, поэтому вместо "frame" в modeldefs надо использовать "frameindex" 2) Для моделей формата md3 гоззо разрешает использовать текстуры 256х256 3) Если в качестве текстуры вы используете файл .bmp, то в modeldefs его расширение писать не нужно, только имя, например: Model BloodHound { Path "models/bloodhound" Model 0 "bloodhound.md2" Skin 0 "bloodhound" // ЭТО означает, что имя файла со скином собаки "bloodhound.bmp" Scale 1.0 1.0 1.0 Frame BHND A 0 "walk01" Frame BHND B 0 "walk02" Frame BHND C 0 "walk03" Frame BHND D 0 "walk04" } 4) При использовании большого количества моделей с большим количеством полигонов, гоззо начинает безбожно тормозить. Поэтому имеем меру (пример подтормаживания - мои потуги сделать медлаб. Там довольно высокополигональная модель комнатного растения, в холле их стоит много, замечено уменьшение fps) |