Форум портала о WarCraft Форум портала о WarCraft
порно чат

Вернуться   Форум портала о WarCraft > Вселенная WarCraft > World Editor > Статьи
Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Ответ
 
Опции темы Опции просмотра
Старый 24.07.2010, 18:29   #1
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Добавление своих моделей и др. в карту

Добавление своих моделей и др. в карту



::1::Сначала расскажем об устройстве файла w3m (карты).
Архив содержит следующие файлы:
(listfile)
(attributes)
war3map.w3e
war3map.w3i
war3map.wtg
war3map.wct
war3map.wts
war3map.j
war3map.shd
war3mapMap.blp
war3map.mmp
war3map.wpm
war3map.doo
war3mapUnits.doo
war3map.w3r
war3map.w3c
war3map.w3u
war3mapImported (папка)

Их назначение:

(listfile)
Список всех входящих в архив файлов, представлен в обычном текстовом виде.

war3map.j
Здесь, на языке JASS2, который придумали в Blizzard, записаны все тригеры, которые есть в карте. Для получения информации о синтаксисе языка читайте статью Sergey-я о текстовых тригерах.

war3map.w3e
Здесь содержится информация о текстурировании поверхности. В этом и остальных последующих файлах для редактирования надо открыть не обычным блокнотом(он покажет всякую ерунду), а в шестнадцатеичной кодировке(Hex). Вся поверхность разбивается на одинаковые квадраты и каждой из четырёх точек квадрата присваивается определённый тип текстуры. При этом точка отвечает за прилегающую к ней четверть квадрата.
Заголовок:
символ: "W3E!" - символьное значение(char), обязательный элемент, обозначающий тип файла
целое: "0B 00 00 00" - версия формата 11 (целое число всегда занимает 4 байта)
символ: главная текстура. Возможны следующие варианты
A - Ashenvale
B - Barrens
C - Felwood
D - Dungeon
F - Lordaeron Fall
G - Underground
L - Lordaeron Summer
N - Northrend
Q - Village Fall
V - Village
W - Lordaeron Winter
X - Dalaran
Y - Cityscape
целое: используется ли custom tilesets (1 - да, 0 - нет)
целое: количество используемых текстур земли(не должно превышать 16)
символ: ID используемых текстур земли. Например "Ldrt" означает "Lordaeron Summer Dirt". Для получения полного списка ID текстур земли, откройте файл Terrain.slk, находящийся в директории TerrainArt в war3.mpq.
целое: количество используемых текстур утёсов(не должно превышать 16).
символ: ID используемых текстур утёсов. Например "CLdi" означает "Lordaeron Cliff Dirt". Для получения полного списка ID текстур утёсов, откройте файл CliffTypes.slk, находящийся в директории TerrainArt в war3.mpq.
целое: ширина карты + 1
целое: высота карты + 1
дробное десятичное: смещение центра карты по X
дробное десятичное: смещение центра карты по Y
Эти параметры определюют местоположение центра карты, который нужен для технических целей. Начало координат находится в нижнем левом углу. По умолчанию центр координат сдвигается в геометрический центр карты.
Далее идёт непосредственно сама информация о текстурировании карты. Там в принципе ничего интересного нет, так как всё, что можно сделать в ручную в этом файле, можно сделать и в самом едиторе.

war3map.shd
Не содержит заголовка, только рабочую информацию. Размер файла = 16*ширина_карты*высота_карты. Один байт может иметь значение: 00 - нет тени, FF - есть тень. Каждый квадрат текстуры (земли или утёса) содержит 16 квадратов тени(4*4).

war3map.wpm
Обозначает на карте места с разной степенью проходимости. На каждый текстурный квадрат приходится по 16 квадратов проходимости.
Заголовок:
символ: 'MP3W'
целое: версия файла
целое: ширина карты проходимости (ширина_текстурной_карты*4)
целое: высота карты проходимости (высота_текстурной_карты*4)
В главной части один за одним идут байты, соответствующие квадратам проходимости. Их значениям соответсвуют:
00 - мост
08 - неглубокая вода
0A - глубокая вода
40 - нормальная земля
48 - места, где нельзя строить
CA - места, где нельзя ходить и строить
CE - граница карты

war3map.doo
Информация по деревьям.

war3mapUnits.doo
Информация по предметам и дудадам.

war3map.w3i
Различная информация по карте, которая задаётся в едиторе в разделе сценарий.

war3map.wts
Здесь хранятся строковые значения введённые в некоторых полях тригеров.

war3mapMap.blp
Изображение миникарты.

war3map.mmp
The menu minimap - оформление значками миникарты, появляющейся при загрузке карты.
Заголовок.
целое: неизвестно, что означает, но обычно = 0
целое: количество значков
Главная часть.
На каждый значок приходится по 16 байт
целое: тип значка
00 - золотая шахта
01 - нейтральное здание
02 - стартовая точка игрока
целое: коодината значка по Х
целое: коодината значка по Y
Например:
10, 10 - сверху слева
80, 80 - по центру
F0, F0 - снизу справа
Последние 4 байта блока первого значка - цвет в формате СС ЗЗ КК АА = синий, зелённый, красный, альфа канал.
03 03 FF FF : красный
FF 42 00 FF : синий
B9 E6 1C FF : cyan
81 00 54 FF : пурпурный
00 FC FF FF : жёлтый
0E 8A FE FF : оранжевый
00 C0 20 FF : зелённый
B0 5B E5 FF : розовый
97 96 95 FF : светло серый
F1 BF 7E FF : светло голубой
46 62 10 FF : голубой
04 2A 49 FF : коричневый
FF FF FF FF : нет цвета

war3map.w3u
Здесь хранятся данные о всех самодельных юнитах(custom units).

war3map.wtg
Здесь хранятся все внутренние имена тригеров и переменных, которые едитор автоматически генерирует.

war3map.w3c
Здесь задаются все те параметры камеры, которые доступны в едиторе при открытии свойств камеры.

war3map.w3r
Параметры регионов. Тоже ничего новенького,интересного или чего-то такого, чего нельзя было бы задать через едитор.

war3map.w3s
Задаются звуки. Стандартные параметры.

war3map.wct
Здесь записываются текстовые тригеры. Так как они отличаются по своей структуре от обычных тригеров, то для их описания был создан специальный файл - это он. В текстовом виде они и задаются в этом файле. Или что-то в этом роде.

war3map.imp
А вот этот файл уже кое-чем интересен. Он появляется внутри архива w3m только если в едиторе был экспортирован в карту хотя бы один звук или музыка. Если это было сделано, то в w3m появляется экспортированный файл в папке war3mapImported, а также создаётся файл war3map.imp, в котором делается запись об экспортированном объекте. Структура записи проста: целое - версия файла, это несущественный параметр, дающий только информацию для пользователя(не так уж и нужную на мой взгляд). Следующее целое - количество импортированных файлов. Далее идут пути к файлам, находящимся в папке war3mapImported. Пример пути: реальное размешение в архиве - war3mapImported\sound.wav, запись в war3map.imp - sound.wav. Казалось бы вот оно, достаточно закинуть в карту с помощью WinMpq нужные файлы (blp, mdx и т. д.), прописать их в war3map.imp, и тогда они не будут выкинуты едитором при сохранении карты, но не всё так хорошо, как хотелось бы. К сожалению сохранять файлы можно только в самой папке war3mapImported, если добавлять в неё ещё подпапки и вних уже закидывать файлы, то тут не поможет даже прописывание в war3map.imp, всё равно едитор стерёт его. Таким образом получается, что экспортировать в карту можно любой файл, причём его не будет стирать едитор, но не по любому пути, а только в папку war3mapImported.

Эта заметка является сокращённым переводом статьи "Inside W3M Files - by Zepir" взятой с www.wc3campaigns.com. Я постарался выделить самое главное и интересное. Для получения полной информации о фалах внутри w3m читайте оригинальный текст на английском языке.

Самое главное : Прежде как делать какие то действие то создаем один нестандартный юнит с любыми параметрами ( это важно ) под названием Unit 001 ...

Внимание после описанных ниже действий НЕЛЬЗЯ открывать карту в World Editor ... Точнее не нельзя... а нежелательно т.к. World Editor удалит ВСЕ файлы которые мы закачаем в архив.
Так что прежде чем приступать убедитесь - все ли вы сделали ... А если все готово и нам осталось добавить пару спеллов нестандартных моделей и картинок то вперед ...
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Старый 24.07.2010, 18:29   #2
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: Добавление своих моделей и др. в карту

::2::Добавление своих файлов в карту.

Инструменты: WinMPQ(нажмите на линк там полное описание по установке), Exel(входит в пакет Microsoft Office), конвертер MDL->MDX и обратно( скачать сдесь ) , Еще нам необходим Unit Editor с помощью которого мы можем прописать любой путь к модели в самой карте ( скачать тут ).
Дополнение: Если нужно изменять карту после вставления файлов то засовывать желательно в саму карту
Совет: Лучше всего сделать копию мапы и работать в ней.
1) Модели :

а) Если у тебя есть модели и их осталось вставить тогда :
1. При помощи WinMPQ открываешь карту и засовываешь(add...) модели под известныи именем. Или же своим .
Пример: Новая модель для MoonWell'а: Units\NightElf\MoonWell\
2. При помощи конвертера конвертируешь модели mdx в mdl и обратно после редактирования в 3d Max - вставляешь в карту под своим именем/путем.
Пример: Новая модель - Warden (Модель называется HeroWarden): Units\NightElf\HeroWarden\
Кстати скачать классные модели вы можете тут
3. Чтобы использовать нестандартную иконку или же модель в своей карте то нам нужен Unit Editor v 2.00 ( скачать тут .
b) Если же мы хотим создать модель то :
Для работы нам понадобятся следующее: 3ds max 4 или выше, конвертер моделей из формата mdl в формат mdx .
Формат mdx специально разработан для большей архивации моделей, но при этом сам варкрафт не использует файлы в этом формате на прямую. Прежде чем работать с моделью, он конвертирует mdx в mdl, с которым уже работает. Формат mdl представляет собой нечто похожее на asc, но с той разницей, что в файле записываются все параметры модели и её анимации в текстовом виде. Именно на этом и основан мой способ. В принципе, разобраться в mdl не так уж и сложно, это может каждый, нужно только время и хотя бы начальное знание 3ds max.
А теперь по порядку о структуре mdl. Сначала идёт общий раздел.

Model "Tent" { // название модели //
NumGeosets 2, // количество мешей //
NumGeosetAnims 2, // количество анимаций видимости //
NumLights 1, // количество источников света //
NumHelpers 1, // количество помощников //
NumBones 2, // количество костей //
NumAttachments 3, // количество прикреплений //
NumParticleEmitters2 1, // количество источников частиц //
NumRibbonEmitters 1, // количество источников следа //
NumEvents 2, // количество событий //
BlendTime 150, // время смешения //
MinimumExtent { -219.2, -309.508, -222.794 }, // минимальнык границы модели //
MaximumExtent { 108.97, 261.674, 296.323 }, // максимальные границы модели //

Меш - это условно говоря собрание полигонов (треугольников). Они могут быть соединены или не соединены между собой, но они считаются единым целым. Это означает, что у них один на всех материал и ещё кое-что. Звучит непонятно, но я надеюсь из дальнейшего текста всё станет ясно. Анимация видимости - определяет в какой момент времени меш будет виден, а в какой нет. Каждому мешу соответствует своя анимация видимости. Помощник - всегда невидимый объект фиксированного размера, нужен для вспомогательных целей анимации. Кость - тоже помощник, но более узко специализирован. Нужен для передачи анимации мешу, то есть делаешь анимацию кости, а она передаёт анимацию отедельным участкам меша. Прикрепление - помните в тригерах есть событие: "привязать спецэффект к юниту orign"? Так вот orign - это название прикрепления. С помощью прикреплений, например, определяется, где у героя рука, чтобы вокруг неё летал огненный шар, если герой подобрал сферу огня. Источник следа - например когда оркский блейдмастер машет мечом, то благодаря такому источнику от меча остаётся след на воздухе. Событие - точно ещё не знаю, что это, но похоже, что с помощью него задаётся время анимации, в которое будет произведён тот или иной звук, например когда юнит умирает. Время смешения - пока трудно сказать за что отвечает этот параметр, так как во всех моделях, которые я видел, он был равен 150. Границ модели - относительные границы, за которые модель при любой анимации не выйдет.
Далее идёт описание последовательностей анимации. Заметьте, что здесь, как и в предыдущем разделе, указывается количество последовательностей анимации. Практически во всех разделах соблюдается это правило. Также немаловажно правильно раставлять фигурные скобки {}, так как при несоблюдении этого правила конвертер будет ругаться и не выполнит конвертацию.

Sequences 2 {
Anim "Birth" { // название анимации //
Interval { 33, 1000 }, // временной интервал //
NonLooping, // не повторять сначала //
MinimumExtent { -216.322, -313.805, -118.9 },
MaximumExtent { 283.259, 249.843, 379.521 },
BoundsRadius 408.918, // ограничивающий радиус //
}
Anim "Stand Work" {
Interval { 6667, 10000 },
MinimumExtent { -216.322, -313.805, -118.9 },
MaximumExtent { 283.259, 249.843, 379.521 },
BoundsRadius 408.918,
}
}

На самом деле, конечно же практически ни у одной модели нет такого малого количества анимаций, но они все описываются весьма похоже, поэтому достаточно привести такой небольшой пример. Название анимации - те самые названия, котоые указываются в тригере "играть stand work анимацию юнита". Временной интервал - с какого кадра по какой будет длиться эта анимация. Чтобы лучше понять, что это значит, откройте 3ds max, там внизу есть раскадровка сцены. Ограничивающий радиус - судя по всему радиус границ, за которые модель или отдельные её составляющие не пускаются, например при использовании источника частиц. Между Interval и MinimumExtent может стоять не только NonLooping. Rarity 3 или Rarity 5 - означает, что анмация редкая, цифра опередляет степень её редкости. В анимации движения, например "Walk", указывается MoveSpeed 290 - скорость движения.
После идёт описание последовательностей глобальных анимации.

GlobalSequences 2 {
Duration 967, // длительность анимации //
Duration 467,
}

Глобальная анимация - анимация, которая будет присуствовать во всех неглобальных анимациях, например развивание на ветру флага блейдмастера - глобальная анимация. Каждой такой анимации присваивается свой идентификационный номер, соответсвующий её порядковому номеру в приведённом списке минус 1, то есть у глобальной анимации номер 0 длительность - 967 кадров, у номер 1 - 467.
Далее описание используемых текстур.

Textures 2 {
Bitmap {
Image " objects\InventoryItems\TreasureChest\treasurechest

.blp", // путь к текстуре //
}
Bitmap {
Image "",
ReplaceableId 1, // особый тип текстуры //
}

Вобщем здесь всё понятно, замечу только, что текстура должа находиться либо внутри карты, либо war3.mpq, либо war3patch.mpq, и то, что текстурам также присваиваются идентификационые номера(ID). В дальнейшем, если в разделе присваиваются ID, то я буду прсто в конце описания ставить "ID". ReplaceableId 1 - цвет игрока, владеющего в данный момент юнитом.
Затем идут материалы.

Materials 2 {
Material {
ConstantColor, // особенность материала //
Layer { // слой //
FilterMode None, // режим фильтрации слоя //
Unshaded, // особенность слоя //
static TextureID 0, // тип текстуры слоя и её ID //
Alpha 2 { // регулеровка прозрачности //
Linear, // тип регулеровки //
3300: 0.23, // номер кадра и использование альфы в долях (от 1 до 0) //
3367: 0.48,
}
}
}
Material {
Layer {
FilterMode None,
Unshaded,
static TextureID 1,
}
Layer {
FilterMode Blend,
static TextureID 0,
static Alpha 0.7, // определяет значение альфы в любой момент времени //
}
}
}

Этот раздел - один из самых многообразных. Благодаря различным комбинациям, можно создать большое количество самых различных материалов. Особенность материала: ConstantColor - постоянный цвет, SortPrimsFarZ - пока не знаю что это означает, но материал с таким параметром использовался для создания свечения вокруг меча блейдмастера. Слой - в материале может использоваться несколько слоёв, накладываясь один на другой и создавая нужный эффект. Режим фильтрации - можно сказать, что этот параметр определяет тип слоя. None - простой непрозрачный слой. Blend - смешивание с остальными слоями материала. Transparent - прозрачность слоя определяется текстурой. Поясню, что это значит: каждая текстура состоит из самого изображения и слоя прозрачности (альфы). Этот слой фактически представляет собой чёрно-белую картинку, накладываемую на изображение, при этом, то место, где пиксел оказался белым, слой - непрозрачен, а где пиксел - чёрный, там слой полностью прозрачен и значит невидим. Оттенки серого соответствуют разной степени прозрачности. Для лучшего понимания этого аспекта откройте Photoshop или какой-нибудь другой редактор текстур такого типа. AddAlpha - при наложении на другие слои, в том числе и других материалов, альфа прозрачности всех наложенных слоёв математически складывается и результат будет являться альфой для этого слоя (сложение, конечно же, попиксельное). Также, возможно существование режимов вычитания, умножения, деления альфы (что-нибудь вроде SubtAlpha). Additive - это уже относится к текстуре, то есть при наложении слоёв происходит их сложение, а выдаётся результат, также возможно существование схожих с альфой режимов. Особенность слоя - существует множество различных особенностей. Unshaded - не затеняется, при этом теряется реалистичность. TwoSided - слой накладывается на обе стороны меша - лицевую и оборотную, если же этот параметр не указан, то текстура наносится только на лицевую сторону, если же посмотреть с обратной стороны, то будет видно сквозь меш. Unfogged - убирает дымчатость, что конкретно это означает, пока не знаю, но устанавливается этот параметр весьма редко, только если материал используется для создания спецэффекта, например звёздочек, летящих при лечении. Регулеровка прозрачности - определяет какую долю альфы брать в орпеделённый промежуток времени. При этом установленное число будет действовать до следующей установки другого числа или ближайшего ключевого кадра анимации, которыми являются кадры начала и окончания анимации, указанные в описании последовательностей анимации. Значение любого параметра в ключевых кадрах считается равным максимальному (в данном случае единице). Это очень важный момент, так как ключевые кадры, как я уже сказал, оказывают влияние на все параметры, а значит в них происходит обнуление внесённых изменений. Тип регулеровки прозрачности - влияет на то как прозрачность будет меняться от одного кадра до другого. DontInterp - мгновенный переход из одного значения в другое. Linear - постепенный переход. ID.
Далее следуют непосредственно сами меши.

Geoset {
Vertices 4 { // вершины меша //
{ -138.925, -309.508, 296.323 },
{ -138.925, -309.508, -222.794 },
{ -219.2, 261.674, 296.323 },
{ -219.2, 261.674, -222.794 },
}
Normals 4 { // нормали вершин //
{ 0.990268, 0.139173, -1.90921e-008 },
{ 0.990268, 0.139173, -1.90921e-008 },
{ 0.990268, 0.139173, -1.90921e-008 },
{ 0.990268, 0.139173, -1.90921e-008 },
}
TVertices 4 { // текстурные вершины //
{ 0, 0 },
{ 0, 1 },
{ 1, 0 },
{ 1, 1 },
}
VertexGroup { // группы вершин(меша) //
0,
0,
1,
1,
}
Faces 1 6 { // поверхность //
Triangles {
{ 0, 1, 2, 3, 2, 1 },
}
}
Groups 2 2 { // группировка по костям //
Matrices { 0 },
Matrices { 1 },
}
MinimumExtent { -219.2, -309.508, -222.794 }, // см. описание последовательностей анимации //
MaximumExtent { -138.925, 261.674, 296.323 },
Anim {
MinimumExtent { 3.40282e+038, 3.40282e+038, 3.40282e+038 },
MaximumExtent { -3.40282e+038, -3.40282e+038, -3.40282e+038 },
}
Anim {
MinimumExtent { -219.2, -309.508, -222.794 },
MaximumExtent { -138.925, 261.674, 296.323 },
BoundsRadius 388,
}
MaterialID 0, // ID материала меша //
SelectionGroup 0, // группа выделения //
}

Это меш номер 0. Далее идут все остальные меши, организованные таким же образом. В этой части файла и задаётся статическая геометрия (форма) модели. вершины меша - координаты вершин, ID. нормали вершин - координаты нормалей вершин, указывающие, где у точки лицевая сторона, а где оборотная. Звучит странно, но тем не менее. Текстурные вершины - координаты вершин меша на текстуре, благодаря им определяется как накладывается текстура на модель. Группы вершин меша - объеденение вершин для технических целей. В данном примере первые две вершины объединены в группу 0, другие две - в группу 1. Поверхность - здесь из вершин составляется поверхность. Вершины объединяются в треугольники, из которых уже состоит поверхность. Группировка по костям - немаловажная часть моделирования, определяет какие вершины управляются какими костями. ID номер Matrices(матрицы) соответсвует ID номеру группы вершин, а число в фигурных скобках соответствует объектному ID номеру кости. Подробнее об объектном ID номере будет сказано немного позднее. В данном примере, вершины, относящиеся к группе вершин номер 0, будут управляться костью с объектным номером 0. ID материала меша указывает, какой материал будет применён к этому мешу. Группа выделения - пока не знаю, что это, но во всех моделях равен 0 для всех мешей.
Затем идёт анимация видимости.

GeosetAnim {
Alpha 4 {
DontInterp, // тип перехода //
0: 0,
967: 1,
1333: 0,
5800: 0,
}
GeosetId 0, // используемый меш //
}
GeosetAnim {
Alpha 4 {
DontInterp,
0: 0,
967: 1,
733: 0,
4800: 0,
}
GeosetId 1,
}

Здесь также каждой анимации соответствует свой ID номер. Тип перехода - та же функция, что и у типа регулеровки прозрачности в разделе материала, даже те же названия используются. Устанавливается номер кадра и значение, при этом 1 - объект виден, 0 - невидим.
Далее идут вспомогательные объекты разных типов. При этом все они нумеруются независимо от типа.

Bone "Plane01" { // тип и название объекта //
ObjectId 0, // номер объекта //
Billboarded, // особенность объекта //
GeosetId 0, // номер используемого меша //
GeosetAnimId 0, // номер используемой анимации видимости //
Scaling 3 { // тип преобразования //
Linear, // способ перехода //
GlobalSeqId 0, // номер глобальной анимации //
0: { 1, 1, 1 },
67: { 1.54938, 1.54938, 1.54938 },
966: { 1, 1, 1 },
}
}
Bone "Box01" {
ObjectId 1,
Parent 3, // "Dummy01" // родитель объекта //
GeosetId Multiple,
GeosetAnimId None,
Rotation 2 {
Hermite,
667: { 0, 0, 0, 1 },
InTan { 0.110167, 0.0903195, 0.0587129, 0.988058 },
OutTan { 0.110167, 0.0903195, 0.0587129, 0.988058 },
733: { -0.238667, -0.195669, -0.127196, 0.942641 },
InTan { -0.357136, -0.210093, -0.174873, 0.89316 },
OutTan { -0.357136, -0.210093, -0.174873, 0.89316 },
}
Translation 2 {
Hermite,
333: { 0, 0, -17.0679 },
InTan { 0, 0, -17.0679 },
OutTan { 0, 0, -3.75045 },
967: { 0, 0, -20.8183 },
InTan { 0, 0, -3.75045 },
OutTan { 0, 0, 3.75045 },
}
}

Словов bone значит, что объект - кость. Номер объекта - тот самый номер, который указывался в матрицах при групировке верши по костям. Запись "Matrices { 0 }" означает, что вершинами управляет кость с номером 0, в данном примере это кость "Plane01". Особенности объекта: Billboarded - всегда поворачивается к зрителю лицевой стороной. На этом принципе основаны шары на блейдмастере. На самом деле это не шары, а плоскости, на которые наложена текстура с альфой прозрачности, и эти плоскости всегда поворачиваются к нам лицом. Номер используемого меша нужен для ускорения работы компьютера. Если кость управляет сразу несколькими матрицами из разных мешей, то пишется GeosetId Multiple. Номер используемой анимации видимости указывает какая анимация отвечает за видимость кости. Если для этой кости не испоьзуется анимация видимости, то пишется GeosetAnimId None. Надо заметить, что поскольку к кости привязаны матрицы, то им передаются все изменения происходящие с костью, включая видимость. Ведь действительно, зачем управлять видимостью кости, если её всё равно не видно? Это нужно для передачи воздействия на матрицы. Но, как у матриц есть управляющий, так и костей он может быть. Обычно это помощник, хотя может быть и другая кость, при этом указывается Parent ID(номер родителя). В этом прмере родителем кости 1 является помощник 2. Тип преобразования - какое преобразование будет происходить с костью. Scaling - изменение масштаба. Задаётся в долях по каждой оси координат отдельно. Rotation - вращение. Первые две координаты задают точку на плоскости XY, через которую и начало координат проводится плоскость, параллельная оси Z. На этой плоскости оставшимися двумя координатами задаётся окончательная точка поворота. Translation - вроде премещение. Visibility - видимость. Способ перехода - то же, что и тип регулеровки в анимации видимости. Bezier - безье тип, то есть кривая прехода с регулируемой гладкостью. InTan - входящая в вершину гладкость, OutTan - выходящая. Глобальная анимация задаётся либо в костях либо в помощнике. Для этого достаточно после способа перехода написать GlobalSeqId и ID номер. Все последующие после этого координаты преобразования будут причисляться к глобальной анимации. У одной кости или помощника может быть несколько преобразований разного типа, в данном примере у кости "Box01" два преобразования: вращение и премещение.
После костей идут источники света.

Light "Omni01" { // название //
ObjectId 2,
Omnidirectional, // тип //
static AttenuationStart 80, // начальноая граница затухания //
static AttenuationEnd 200, // конечная граница затухания //
static Intensity 17, // интенсивность //
static Color { 0.87451, 0.984314, 1 }, // цвет //
static AmbIntensity 0, // интенсивность внешней освещённости //
static AmbColor { 1, 1, 1 }, // цвет внешней освещённости //
Visibility 6 {
DontInterp,
67: 0,
600: 0,
65033: 0,
65300: 1,
65467: 0,
240000: 0,
}
}

По типу, источники света делятся на точечные(omni) и направленные(direct). Omnidirectional - точечный. Свет затухает от начальной до конечной границы. До начальной его интенсивность не меняется и равна 100 процентам, а после конечной не изменяется и равна 0. Цвет задаётся в долях трёх основных цветов: красного, зелёного, синего.
Затем идут помощники.

Helper "Dummy01" {
ObjectId 3,
Translation 2 {
Linear,
5000: { 0, 0, 0 },
5333: { 3.43655, -4.24382, -13.444 },
}
}

Структура строения помощников весьма схожа со структурой костей. Главное отличие состоит в том, что у помощника указывается только его ID номер и задаётся преобразование.
Затем идут прикрепления.

Attachment "Origin Ref " {
ObjectId 4,
}
Attachment "Overhead Ref" {
ObjectId 5,
}
Attachment "Weapon Ref" {
ObjectId 6,
Parent 3,
Visibility 3 {
DontInterp,
133: 0,
567: 0,
667: 1,
}
}

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

PivotPoints 11 {
{ -5.57062, 0.220597, 20.2984 },
{ 3.28472, -4.53012, 30.8989 },
{ -4.28088, 17.2638, 32.6912 },
{ -8.02448, -0.0493665, 35.7101 },
{ -7.2794, 1.89344, 30.8989 },
{ -153.026, -86.0745, 368.757 },
{ -116.208, -193.252, 151.937 },
{ -7.2692, 5.58314, 344.523 },
{ -7.9371, 1.42364, 568.952 },
{ 189.757, 61.9468, 245.577 },
{ -23.4029, -5.56605, 105.132 },
}

Первая строчка - координаты геометрического центра объекта с ID равным 0. И так далее для всех объектов.
Следом идут источники частиц

ParticleEmitter2 "SmallBlastDebris" {
ObjectId 7,
SortPrimsFarZ,
Unshaded,
static Speed 440, // скорость движения частиц //
static Variation 0, // вариация скорости //
static Latitude 55,
static Gravity 749, // мощность гравитации //
Squirt, // распылять //
LifeSpan 0.71, // время жизни //
EmissionRate 4 { // скорость воспроизводства //
DontInterp,
65033: 0,
65333: 22,
65433: 0,
122167: 0,
}
static Width 24, // ширина источника //
static Length 24, // длинна источника //
Blend, // смешение //
Rows 1, // количество строчек //
Columns 1, // количество столбиков //
Head,
TailLength 0.1,
Time 0.7,
SegmentColor {
Color { 0, 0.682353, 1 },
Color { 0, 0.309804, 0.658824 },
Color { 0, 0, 0 },
},
Alpha {255, 255, 0},
ParticleScaling {5, 5, 5}, // масштаб частиц //
LifeSpanUVAnim {0, 0, 1},
DecayUVAnim {0, 0, 1},
TailUVAnim {0, 0, 1},
TailDecayUVAnim {0, 0, 1},
TextureID 2, // ID используемой текстуры //
}

Про источники частиц я ещё немного знаю, поэтому коментировать нечего, но многие параметры здесь те же, что и в предыдущих разделах.
Затем идут источники следа.

RibbonEmitter "BlizRibbon01" {
ObjectId 8,
Parent 3,
static HeightAbove 48.312,
static HeightBelow 48.372,
static Alpha 0.35,
static Color { 0, 0.635294, 1 },
static TextureSlot 0,
Visibility 2 {
DontInterp,
2333: 0,
6000: 0,
}
EmissionRate 35,
LifeSpan 0.35,
Rows 1,
Columns 1,
MaterialID 3,
}

Это совсем тёмный лес.
Далее идут камеры. Хотя обычно, если и есть в модели камера, то она одна.

Camera "Camera01" {
Position { 403.317, -10.8177, 202.115 }, // позиция камеры //
FieldOfView 0.538016, // сила линзы //
FarClip 1000, // далнее отсечение //
NearClip 8, // ближнее отсечение //
Target {
Position { -86.5748, -22.7399, 0.860381 }, // координаты цели //
}
}

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

EventObject "SNDxDOLS" {
ObjectId 9,
EventTrack 1 {
667,
}
}
EventObject "UBRxDHSB" {
ObjectId 10,
EventTrack 1 {
5333,
}
}

Номер кадра указывает, когда начнёт играть звук. "SNDxDOLS" - название звука.

А теперь, как применив эти знания, создать свою модель.
Если у вас уже есть модель, то её надо сперва мысленно разбить на простые составляющие. Голова с туловищем, руками и ногами - один параллелепипед, конь - другой параллелепипед. Далее считаете количество вершин в каждом таком стставляющем. Создаёте свою mdl, в котором делаете столько мешей, сколько составляющих у вас получилось (в принципе можно и меньше). Заносите в них координаты необходимых вершин, не важно какие координаты, главное чтобы были все необходимые вершины. Затем запсываете триугольники, чтобы получились именно те простые фигуры, которые в получили. Задаёте остальные, необходимые для корректной работы параметры (например вершины текстуры), но не создаваёте пока анимации. Конвертите mdl в mdx, который имортируете в 3ds max. Там вы путём движения вершин востанавливаете свою модель и экспортируете её опять в mdx, его в mdl, координаты вершин вставляете в свою заготовку. Теперь модель готова. Опытным путём задаёте нужные координаты текстурных вершин. Анимация делается посредством всё тех же костей, помщников, источников частиц и т. д. Вообщем, как я и предупреждал, соэдание своей модели - тяжёлое занятие.
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Старый 24.07.2010, 18:29   #3
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: Добавление своих моделей и др. в карту

[Само обьяснения "СОЗДАНИЯ МОДЕЛИ" взято с http://comstroller.narod.ru/ - отредактировано : Prot ]
>
Итого мы сделали новую модель то давайте зальем ее в карту.
Делаем следующее :
1. При помощи WinMPQ открываем карту и нажимаем (add...).
2. Указываем путь например Units\NightElf\HeroWarden\ - Равносильно что C:\ то есть папка в которой лежит модель...
-----!!!Конечное имя файла не указывать!!!-----
Пример: Модель Warden(Модель называется HeroWarden.mdl) - Units\NightElf\HeroWarden\HeroWarden.mdl - вот это и есть "адрес модели"

Все мы вставили модель в карту, но как же ее указать в "Используемой модели" ...
А вот то и поможет нам в этом Unit Editor v 2.00 ... Сначала делаем резервную копию карты на случай если вы ошибетесь хоть буквой ... то невидать вашей любимой карты как своей **** ... Вообщем все внимание ... Делаем следующее :
1. Открываем WinMPQ_кой свою карту .
2. Вынимаем файл war3map.w3u .
3. Открываем Unit Editor v 2.00 .
4. Видим надпись Model Used . Далее написал "адрес" модели.
5. Теперь вставляем свой адрес . А быть точным какой указали при "залитии" файла в MPQ карты + КОНЕЧНОЕ ИМЯ ФАЙЛА .
Пример : Units\NightElf\HeroWarden\HeroWarden.mdl
6. После всего этого нажимаем в Unit Editor v 2.00 "Save" измененный файл war3map.w3u...
7. Открываем нашу карту WinMPQ_кой и удаляем старый war3map.w3u ...
8. Нажимаем add ...Добавляем "НОВЫЙ" - war3map.w3u - Путь не ПРОПИСЫВАЕМ то есть оставляем пустым...
9. Сохраняем архив WinMPQ_кой ...
2) Иконки: просто вставляешь в карту... иконку(формат - blp) и указываешь путь к ней (можно вместо старой)
Пример: Иконка "лица" Warden(Иконка называется HeroWarden.blp) - Units\NightElf\HeroWarden\ .Самое простое, но сложнее чем казалось. Рисуем иконку (64х64), но в двух вариантах – enable/disable. Для геройских аур, в четырех – enable/ disable/ passive/ passivedisable. Для просто аур вроде в двух – passive/ passivedisable.
Enable – просто кнопка, disable, passivedisable — Кнопка не доступна, или (!!) юзер нажал на Esc, когда кнопка на экране (сомнительный кстати шаг близардовцев). Passive – очевидно, пассивная кнопка. Первая, в оригинальном дизайне, с рамкой. Вторая с черное рамкой, и темной маской. Третья с черной рамкой, но без маски.

1. Открываем WinMPQ_кой свою карту .
2. Вынимаем файл war3map.w3u .
3. Открываем Unit Editor v 2.00 .
4. Видим надпись Interface icon ... . Далее написал "адрес" картинки.
5. Теперь вставляем свой адрес . А быть точным какой указали при "залитии" файла в MPQ карты.
6. После всего этого сохраняем на диске в Unit Editor v 2.00 ...
7. Открываем нашу карту WinMPQ_кой и удаляем старый war3map.w3u ...
8. Нажимаем add ... Путь не ПРОПИСЫВАЕМ то есть оставляем пустым...
9. Сохраняем архив WinMPQ_кой ...

3) Файл отвечающий за уровень героя, и начисление добавлений при увеличении ловкости, силы и разума - MiskData.txt. Вытаскивай и после изменения вставляй обратно под этим же именем/путем.
( важно ) :
Если быть точным то его в архиве карте нет ... но не проблема скачайте его у нас
4) Спеллы: Есть также 2 пути:
а) Если хочешь изменить старый то открывай AbilityData.slk находи его и изменяй.
б) Если хочешь иметь несколько похожих или не хочешь портить старый то копируй старый и вставляй в конце, затем изменяй параметры и 1 и 3 колонку. За первую колонку отвечает [раса]AbilityFunction, за 3 - [раса]AbilityString. Кроме того тебе придется создавать название и описания - файлы [раса]AbilityString и [раса]AbilityFunction.
Предупреждения: у одного юнита может быть только 1 заклинания 1 типа, при 2-х или больше заклинаний одного типа они будут работать не стабильно(перескакивать из одного в другое).
Пример: новое заклинание лечение (у приестов):
Вытаскивай AbilityData.slk, HumanAbilityFunction.txt и HumanAbilityString.txt
Копируй старое заклинание в AbilityData.slk при помощи Exel на клетки после последнего заклинания.
Изменяй параметры и в 1-ом и 3-ем столбце напиши: A001(например)
!) Открывай HumanAbilityFunction.txt, копируй то что связанно с заклинанием лечения вниз, изменяй на второй строчке скопированного на [A001] и ты можешь:

а) Изменить иконку
б) Изменить положение(там две цифры, у этого заклинания 0,2. Изменяй на любое (минимальное 0,0 максимальное 3,2))
Первая цифра - столбец, вторая - строка.
в Изменить то что нужно для этого спелла.

5) Открывай HumanAbilityString.txt, копируй то что связанно с заклинанием лечения вниз, изменяй на второй строчке скопированного на [A001] и ты можешь:

а) Изменять имя этого спелла.
б) Изменять описание этого спелла.
в) Изменять кнопку для нажатия этого спелла. (Без кнопки будет Shift, что очень раздражает некоторых, типа меня.)

Более простой способ :
(Пассивные спеллы не получаться)
Способ пригоден и для тех, кто при виде текстовых скриптов впадает в ступор, а потом долго мучается в депрессии.
Делаем «пустышку» - ничего не делающий спелл, по технологии описанной ранее. Например, BloodLust, с нулевым сроком действия.
Делаем к нему описания, картинки и прочее.
Создаем в карте новый триггер, перехватываем события:
Боевая единица - A unit owned by Игрок 1 Отдал приказ (цель объект)
А также (цель точка) и (без указания цели). Или что-нибудь одно, в соответствии с пустышкой. И так для всех игроков, которые смогут использовать заклинание (если магия для сингла - хватит одного, вряд ли вы обучите комп, пользоваться вашим творчеством).
Делаем условие «(Issued order) равно (Order(текст_спелла))»
текст_спелла - это та строка, какая была некогда в параметре Order, AbilityFunc (точнее, не та, но они совпадают). Для полной уверенности еще можно сравнить «Ordered unit» с тем, у которого есть заклинание.
Теперь в «Ordered unit» - юнит, который кастует. В «Target unit of issued order» - юнит, на который кастуют. А в «Target point of issued order» - точка, в которую кастуют.

Пассивные спеллы :
Такие как :
// Evasion
Нам нам нужно обязательно либо править другой спелл либо писать это все в текстовом редакторе триггеров ...
Использовав :
Event :
When unit leant ability.

Condition :
(Learned Hero Skill) equip to (название пустышки либо id)

Action :

Все что нам нужно сделать .

Если вы делаете через НОВОЕ ЗАКЛИНАНИЕ тогда нам придеться "ловить" пустышку через Jass - текстовой редактор триггеров.

Авторы :
Prot
Zulin K'haran
<vlad_C0M>
Zuriel
© WC3.RU, 2002-2010 гг
Нашли ошибки и недоработки в статье? Сообщите нам в раздел Поддержки! С уважением, WC3.RU
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Старый 12.08.2010, 14:37   #4
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: Добавление своих моделей и др. в карту

Другие статьи:

Основы JASS.
JASS - Общие понятия.
Синтаксис JASS.
JASS - Библиотечные функции. Часть 1.
JASS - Библиотечные функции. Часть 2.
JASS - Операторы.
JASS - Выражения
JASS - Комментарии.
JASS - Функции
JASS - Типы
JASS - Заключение.
Faq по созданию рельефа.
Зачем так много триггеров?
Немного об оптимизации кода.
Текстовые триггеры
Создаем простейшие карты (карты для melee)
Событие с переменным периодом.
Познаем триггеры (Triggers)
Познаем регионы (locations)
Познаем переменные...
Отлавливаем двойной клик мышью.
Массивы и циклы в обычных и текстовых триггерах
Локальные переменные в Custom Text
Камеры, спецэффекты, карта, цвета, кэш...
Добавление своих функций в триггеры
Добавление своих моделей и др. в карту
Делаем очень большую карту...
Делаем огнемет.
Улучшенная версия огнемета...
Глюки worldeditor'a
Random с задаваемой вероятностью - аура.
__________________
Смотри подругому !
VAV вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +4, время: 18:45.

Design Developed by CompleteGFX
vBulletin® Version 3.6.7.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot