Продолжаю душить бесполезной инфой трёх с половиной людей, заглядывающих в блоги.

Вступление

Как все знают, сцена битвы Артаса с Иллиданом из финала Фрозен Трона является одной моделью, с соответствующими анимациями и камерами. Но есть там кое-что ещё.
Некие файлы с расширением .mrf. И они не просто лежат мёртвым грузом в архиве, а действительно используются в модели, и не самым очевидным способом.
Вот они, сверху вниз:

А здесь в текстовом виде
EventObject "MRFX0000" {
	ObjectId 173,
	EventTrack 1 {
		19300,
	}
}
EventObject "MRDX0000" {
	ObjectId 174,
	EventTrack 1 {
		22300,
	}
}
EventObject "MRFX0001" {
	ObjectId 175,
	EventTrack 1 {
		28133,
	}
}
EventObject "MRFX0002" {
	ObjectId 176,
	EventTrack 1 {
		49833,
	}
}
EventObject "MRFX0003" {
	ObjectId 177,
	EventTrack 1 {
		55933,
	}
}
EventObject "MRFX0004" {
	ObjectId 178,
	EventTrack 1 {
		60633,
	}
}
EventObject "MRFX0005" {
	ObjectId 179,
	EventTrack 1 {
		72867,
	}
}
EventObject "MRDX0001" {
	ObjectId 180,
	EventTrack 1 {
		36067,
	}
}
EventObject "MRDX0002" {
	ObjectId 181,
	EventTrack 1 {
		52433,
	}
}
EventObject "MRDX0003" {
	ObjectId 182,
	EventTrack 1 {
		58333,
	}
}
EventObject "MRDX0004" {
	ObjectId 183,
	EventTrack 1 {
		62500,
	}
}
EventObject "MRDX0005" {
	ObjectId 184,
	EventTrack 1 {
		74633,
	}
}
Да, это событийные объекты. Но они имеют коды, которые не указаны в официальной документации Blizzard.

Ковыряем

Я тупо скопипастил эти событийные объекты в другую модель, с изменением номеров кадров срабатывания, и... ничего не произошло. Ни в редакторе, ни в игре никакого эффекта данные событийные объекты не произвели.
UPDT. Нет, воспроизвести эффект в игре у меня получилось, прошу прощения за дезинформацию. Подробнее в комментарии.
Модель битвы воспроизводится из карты через нативку SetCinematicCameraForPlayer. Можно попробовать также. Но я сделал ещё проще и использовал возможность импорта кастомного экрана кампании.
Сделал камеру над ивентами, накидал побольше света.

И импортировал в кампанию...
Вот оно! Эти событийные объекты выводят (либо удаляют) в нужный кадр плащи Артаса, которые хранятся в виде mrf файлов. И эта технология работает только при выводе на экран моделей через камеру.
UPDT. Внутри обычной игры тоже работает. Подробнее в комментарии.
Если открыть файл в хекс-редакторе, то можно найти ссылку на текстуру плаща:
Да, если здесь поменять путь, то текстура поменяется. Но сама форма mrf будет испорчена. Скорее всего, это просто из-за того, что длина пути должна быть точно такой же, чтобы не испортить структуру файла в hex-формате. Но я сделаю по-человечески: возьму текстурку Textures/DungeonDoodad0.blp и импортирую её в кампанию по пути Doodads\Cinematic\ArthasIllidanFight\ArthasCloakFight.blp.
Результат:
Работает! Текстура поменялась.

UPDT. А ещё можно создать фрейм типа SPRITE с этой моделью, и посмотреть на анимации плаща.

Резюмируя

К нам в редакцию пришло много вопросов
  1. Работает ли это в рефе?
Да.
  1. Что такое mrf?
Понятия не имею. На хайве есть только одно толковое упоминание этих файлов, где автор предположил, что это monochrome recursive format. Я скачал две программы для просмотра изображений, в которых была заявлена поддержка mrf, но они эти файлы не открыли. Мне кажется, что это либо 3д-модель, либо анимация для неё, либо файл, содержащий внутри что-то из этого. Если открыть файлы в хекс-редакторе, то можно увидеть, что они начинаются со слова Morf, что бы это не значило.
Это 3D-модель с анимированными позициями вершин? Я разобрал этот формат, и даже написал скрипт-импортёр для Blender
  1. Можно ли из этого извлечь пользу обычному варкрафтеру?
Нет Не знаю.
P.S. файлик с моделью приложил к посту
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
Так, блэт. Кажется, я обманул сам себя. Только что импортировал приложенную модель в карту, и увидел, что ивенты работают в игре.
В предыдущих версиях модели они не работали (честно). В отличии от них в данной модели отсутствует какой-либо меш, наличиствует камера и есть источники света. Что-то из этого позволило воспроизвести mrf файлы.
Почему в блоге?
А больше некуда
Загруженные файлы
33
А больше некуда
Всегда можно утопить в дискордике
Никогда не слышал про MRF, но теперь если загуглить будет находится этот материал
26
теперь если загуглить будет находится этот материал
Сомневаюсь, что это будет кто-то гуглить, ибо я не нашёл инфы о таком формате с таким способом применения вообще нигде. То есть это использовалось только в одной модельке в игре 2002-го года.
Бтв, я всё-таки склоняюсь к тому, что это именно модели, что-то типа заранее отрендеренного результата симуляции ткани.
33
симуляции ткани
Мы живём в симуляции. Но это уже другая история
28
Ну скорее всего mrf от слова Morf, то есть какой-то спец файл для изменения модели.
31
возможно аналог shapekey из блендера, которые по-разному анимирует вершины модели.
23
Близы делали эту модель вместо нормального cgi ролика, потому что не успевали по срокам, так что скорее всего это костыли, именно под конкретную модель, и не для массового использования, потому их и нет в документации (чисто предположение).
37
EugeAl, согласен, я тоже считаю, что это чисто костыльная вещь на скорую руку.
26
Я решил проверить mrf ивенты в рамках вот этой темы. Логика была такая, что если событийные звуки спавнятся в центре карты, то будут ли спавнится там событийные плащи? Оказалось, что нет: баг не распространяется и плащи таки рендерятся на экране.
Но суть не в этом, оказалось, что при выводе такой модели на экран через SPRITE, плащи воспроизводят анимации
Загруженные файлы
26
Я уже вроде как забил на эту тему, но рекомендации ютуба мне сегодня выдали это
Как? Тридешники, это реально сделать на обычной костной анимации?
23
poisoNDealer, Вручную крайне тяжело. Тут скорее всего что то типа конверта физики объекта в скелет, а потом собственно экспорт скелета.
31
Как? Тридешники, это реально сделать на обычной костной анимации?
да.
тут же примитив.
Берется плоскость, подразделяется на меньшие квадраты.
К каждой вершине прикрепляется кость.
Создается симуляция ткани, переносится и запекается за скелет.
А дальше только конвертирование скелетной анимации в варик.
Вот нашел пример с флагом.
38
В нормальном 3d мире анимировать можно не только костно, но и вершинно
31
В нормальном 3d мире анимировать можно не только костно, но и вершинно
Это то понятно, но что делать если модель предназначена для программы, не умеющей работать с анимацией вершин.
Приходиться изворачиваться.
26
Когда варкрафтеру нечего делать, он начинает байты считать

Таблица оффсетов

Готов спорить на деньги, что это описание треугольников

Чётное количество флоатов от 0 до 1, может быть UV развёртка?
26
Короч я разобрал бОльшую часть данных .mrf файлов, и почти написал простенький скрипт-импортёр для блендера. "Почти" потому что пока ещё не в курсе как в блендер апи воспроизвести эту анимацию. В общем, это рили тупо покадровая перестройка меша, путём смены координат вершин.
Плащ артаса в блендере:
Загруженные файлы
26
Берги, три недели без варкрафта: пациент научился реверсить бинарники и писать аддоны для блендера. Развитие попёрло.
38
Mrf очень похоже на moving reference frame

Скорее всего это оно и есть, потому что moving reference frame это не брендовое имя, а геометрическое определение (перемещение множества векторов в пространстве относительно другого множества)
Загруженные файлы
26
ScorpioT1000, формат выглядит так, будто сделали симуляцию ткани, и прям в лоб запекли позиции вершин покадрово.
Я мб потом распишу подробнее, но если вкратце, то ключевой кадр здесь выглядит так:
(float x, float y, float z) --позиция вершины 0
(float x, float y, float z) --нормаль вершины 0
(float x, float y, float z) --позиция вершины 1
(float x, float y, float z) --нормаль вершины 1
...
(float x, float y, float z) --позиция вершины N
(float x, float y, float z) --нормаль вершины N
В каждом кадре расписана каждая вершина.
38
Это и ожидаемо, так и создаётся анимация soft body при симуляции движком, можешь поиграться с havok в 3ds max
26
Получилось импортнуть в блендер, закостылил через Shape Keys. Теперь хочется придумать обратную процедуру, чтобы экспортировать анимации вертексов в варкрафт. Но я помню, что они не работают напрямую в игре, их использование будет крайне ограничено
Чтобы оставить комментарий, пожалуйста, войдите на сайт.