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

Вступление

Как все знают, сцена битвы Артаса с Иллиданом из финала Фрозен Трона является одной моделью, с соответствующими анимациями и камерами. Но есть там кое-что ещё.
Некие файлы с расширением .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 ивенты в рамках вот этой темы. Логика была такая, что если событийные звуки спавнятся в центре карты, то будут ли спавнится там событийные плащи? Оказалось, что нет: баг не распространяется и плащи таки рендерятся на экране.
Но суть не в этом, оказалось, что при выводе такой модели на экран через SPRITE, плащи воспроизводят анимации
Загруженные файлы
26
Я уже вроде как забил на эту тему, но рекомендации ютуба мне сегодня выдали это
Как? Тридешники, это реально сделать на обычной костной анимации?
23
poisoNDealer, Вручную крайне тяжело. Тут скорее всего что то типа конверта физики объекта в скелет, а потом собственно экспорт скелета.
31
Как? Тридешники, это реально сделать на обычной костной анимации?
да.
тут же примитив.
Берется плоскость, подразделяется на меньшие квадраты.
К каждой вершине прикрепляется кость.
Создается симуляция ткани, переносится и запекается за скелет.
А дальше только конвертирование скелетной анимации в варик.
Вот нашел пример с флагом.
38
В нормальном 3d мире анимировать можно не только костно, но и вершинно
31
В нормальном 3d мире анимировать можно не только костно, но и вершинно
Это то понятно, но что делать если модель предназначена для программы, не умеющей работать с анимацией вершин.
Приходиться изворачиваться.
26
Когда варкрафтеру нечего делать, он начинает байты считать

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

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

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

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