WarCraft 3: Анимации материалов

Анимация от "А" до "Я"

Анимации материалов

Теория

Наверняка вы знаете, что в каждом материале может быть множество слоев с разными текстурами и типами смешивания, и можно регулировать прозрачность каждого слоя отдельно от прозрачности материала в целом, однако не каждый знает всех возможностей анимации этих слоев. Далее я расскажу и о них.
Как и в случае с анимациями поверхностей, здесь полноценно регулируется прозрачность, но совершенно новой возможностью является анимация ID текстуры, то есть можно динамически менять текстуры в материале. А уж с использованием такой особенности не соскучишься: различные элементали, имитация жидкостей и даже возможность вставить в вашу модель маленькое видео (по кадрам, естественно)! Именно последний вариант я выбрал для рассмотрения в этой статье.
Я заранее сделал простую модель деревянного телевизора, который и будет показывать все, что захочется, а вернее, все, на что будут текстуры.

5.1

Так что приступим к практике!

Практика (TV_version_1.mdx)

Порывшись в архивах WarCraft 3, я нашел ряд текстур, отвечающих за моргание "глаза Battle.net", и решил, что для примера они прекрасно подойдут. Путь к этим текстурам следующий:
UI\Glues\BattleNet\BattlenetWorking\
В этой папке находятся 29 текстур, которые необходимо использовать в нашей модели, так что каждую я занес в список текстур, отчего тот слегка пополнел.
Теперь перейдем в редактор материалов и установим в нужный материал первую из необходимых нам текстур, после чего необходимо установить флажок "Анимирована" и нажать на кнопку "ID текстуры". Откроется окно с одной строчкой, где в нулевой кадр прописано определенное число: в моем случае это цифра 4, хотя у вас может быть и любое другое (далее я расскажу, как же оно определяется). Ну что ж, нам-то надо начинать с нуля: пропишем в первый кадр анимации (у меня это кадр 2000) цифру 0 и далее через каждые, например, 50 кадров, будем последовательно прописывать числа вплоть до 28.

5.2

Может возникнуть вопрос, почему на изображении выше я расписал кадры до 33, но перед тем, как будет дан ответ, просмотрите анимацию, в которой вы делали смену текстур. Если у вас в модели уже были какие-то текстуры до того, как вы добавили текстуру глаза, то где-то в первых кадрах будут мелькать именно они. Все очень просто: программа с самого начала выставила цифру 4, т.к. именно это – ID первой из текстур глаза, а все предыдущие заняты другими текстурами.
Но тем не менее, бывает и так, что текстуры добавляются в разброс, и тогда их ID путаются. Чтобы узнать их номера и/или поменять их, необходимо конвертировать модель в формат *.mdl, открыть её блокнотом и найти блок, отвечающий за текстуры. В моем случае он таков:
Textures 33 {
	Bitmap {
		Image "Buildings\Human\TownHall\TownHallCastleKeep.blp", | ID этой текстуры – 0, т.к. нумерация всегда начинается с нуля.
	}
	Bitmap {
		Image "Textures\Goldmine.blp",| 1
	}
	Bitmap {
		Image "tv_texture.blp",| 2
	}
	Bitmap {
		Image "Textures\Doodads0.blp", | 3
	}
	Bitmap {
		Image "UI\Glues\BattleNet\BattlenetWorking\BattlenetWorking0000.blp", | 4 – как раз с четырех и надо было начинать, создавая смену ID в нашем материале.
	}
	Bitmap {
		Image "UI\Glues\BattleNet\BattlenetWorking\BattlenetWorking0001.blp",
	}
	Bitmap {
		Image "UI\Glues\BattleNet\BattlenetWorking\BattlenetWorking0002.blp",
	}

… | я намеренно стер еще кучу однотипных записей, дабы не загромождать статью.

		Image "UI\Glues\BattleNet\BattlenetWorking\BattlenetWorking0028.blp",
	}
}
Чтобы поменять ID текстур, нужно поменять их местами, но стоит помнить, что их следует изменить и в материалах, где эти ID используются, т.к. на них такая перестановка тоже отразится:
Materials 5 {
	Material {
		Layer {
			FilterMode None,
			staticTextureID 1, | Здесь и меняется ID статичной текстуры.
		}
	}
…
}
Теперь, после исправления недоработок этого этапа анимирования, если они все же были, конвертируем модель обратно в *.mdx и возвратимся в Редактор материалов.
К слову об интерполяциях – здесь они не имеют никакого значения, так что смело можно оставлять "None".
Примечание: наверняка вы заметили, что вне анимаций у поверхности, покрытой нашим анимируемым материалом, текстура меняется на самую первую по ID – ничего страшного, но от этого никуда не деться, корректно она отобразится только во время анимаций.
Итак, осталось лишь правильно переписать кадры – и впредь сразу начинать с верного ID – и полюбоваться получившейся анимацией. Глаз в телевизоре моргает и озирается!

5.3

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

Просмотров: 1 968

Deimos2110 #1 - 5 лет назад 0
Блин, то ли я статью не понял и делаю что то не так, но у меня почему то текстуры как стояли на 1 месте так и стоят=(