Анимации текстур

Содержание:

Анимации текстур

Теория

Как же можно анимировать текстуры? Это – правильный вопрос. Ни Mdlvis, ни War3 ModelEditor не располагают возможностями для непосредственного графического воздействия на изображения, которые используются в качестве текстур. Но тем не менее Менеджер анимаций текстур в w3me есть. Так как же он работает?
На самом деле анимируется не сама текстура, а UVW-развертка, которая имеет свои вершины с собственными координатами. Вот они и двигаются, правда, только все вместе. Развертка может перемещаться, поворачиваться и масштабироваться в w3me, и это – ключ ко многим возможностям, одну из которых я продемонстрирую далее.

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

Во второй версии того же телевизора я использую только одну импортируемую текстуру, на которой умещу 60 кадров небольшого фильма с Тыщей и тюленями, который и будет показывать мой телевизор.
Схема текстуры такова:

6.1

Текстура поделена на 64 ячейки размером 64х64 пикселя (в моем случае нижний правый угол 128х128 отведен под текстуру экрана, так что свободных ячеек 60) и в каждую может быть вставлен один из кадров, которые затем будут совмещены в ролик путем горизонтального и вертикального перемещения развертки на текстуре.
При работе с UVW-разверткой в Mdlvis’е вы, скорее всего, заметили, что при перемещении вершин значения X и Y меняются в пределах от -1 до 1, если не выходить за ограничительный квадрат. Несложно догадаться, что перемещать развертку экрана, изначально находящуюся в верхнем левом углу, мы будем с шагом в 0.125.
Примечание: можно и выйти за ограничительный квадрат, но тогда следует поставить галочки в пунктах "Выравнивание ширины" и "Выравнивание высоты" в настройках текстуры (6.0.1), чтобы она, так сказать, повторялась и вне квадрата.
» Изображение к примечанию
Итак, в w3me перейдем в Менеджер анимаций текстур и, кликнув ПКМ, выберем пункт "Создать новый". В появившемся окне (6.2) есть выбор, что же именно анимировать; здесь стоит остановиться. Как я ни пытался, но заставить хоть как-то работать масштабирование или даже вращение у меня не вышло, и если шансы на корректную работу второго были низки из-за кватернионов, то неработоспособность масштабирования вызвала у меня глубокое недоумение. Ну тут уж ничего не сделать (хотя вы, конечно же, можете попытаться), и я пойду дальше, ибо мне необходимо именно перемещение, которое работает нормально и без нареканий.

6.2

После нажатия на кнопку "Перенос" в голову может прийти вопрос: если мы анимируем развертку на текстуре, которая, как известно, плоская, то почему для редактирования доступны аж три параметра? Непонятно. По-видимому, редактирование контроллеров в w3me , универсализировано, и он не делает различий между 3D и 2D, а экспериментальным путем было установлено, что третье число никак не влияет на анимацию текстуры. Так что можно смело браться за первых два, знакомых X и Y.

6.3

Замечу, что в качестве интерполяции выбрано "None", т.к. в моем случае необходимо мгновенное перемещение. Но здесь прекрасно работают и все остальные типы.
После создания нескольких первых кадров стоит вернуться в Редактор материалов, ведь пока наша анимация не прикреплена ни к чему. Найдем материал, который использует нашу текстуру, и зайдем в настройки слоя: здесь необходимо задать ID анимированной текстуры, чтобы анимация текстуры закрепилась за ней самой.

6.4

Продолжаем расписывать кадры.
Совет: помните, что все можно связать с глобальной анимацией, и это часто оказывается полезным при использовании анимаций текстур.
Создали все свои кадры? Отлично, теперь сохраним модель и перезапустим w3me. Смотрим анимацию, и что мы видим: её нет! Дело в том, что w3me сам почему-то удаляет анимацию текстур после закрытия модели (известный баг), но это исправимо.
Сперва необходимо пересохранить нашу модель в *.mdl. Теперь откроем её через блокнот и найдем блок, отвечающий за материалы; в нем – материал, который использует анимированную текстуру, на данный момент у меня он выглядит так:
	Material {
		Layer {
			FilterMode None,
			staticTextureID 2,
			TwoSided,
			Unshaded,
		}
	}
Чтобы заставить анимацию текстур работать, нужно выписать "TVertexAnimId #", где вместо символа # указывают порядковый номер анимации текстур (начиная с нуля). Вписать эту строчку необходимо после статичного ID текстуры. Таким образом, получаем:
	Material {
		Layer {
			FilterMode None,
			staticTextureID 2,
			TVertexAnimId 0,
			TwoSided,
			Unshaded,
		}
	}
Теперь сохраняем модель и конвертируем в *.mdx. После этого даже w3me сам по себе не сможет убрать данные об анимации текстуры из материала.
Я показал лишь один из множества возможных способов использования анимаций текстур: танковые гусеницы, бегущие строки, различные спецэффекты – все это вам еще предстоит реализовать.
Ну а теперь настал черед переходить к предпоследней главе этой статьи.


Views: 6 030

Кайзер #1 - 1 year ago 0
Голосов: +0 / -0
У меня почему то в бок движется текстура, а мне нужно что бы двигалась в низ, как мне сделать что бы двигалось не в левый бок, а в низ?
Андреич #2 - 1 year ago 0
Голосов: +0 / -0
Кайзер:
У меня почему то в бок движется текстура, а мне нужно что бы двигалась в низ, как мне сделать что бы двигалось не в левый бок, а в низ?
ну прописываешь движение только по Y...
к примеру:
0: {0.0, 0.0, 0.0}
1000: {0.0, 1.0, 0.0}
Кайзер #3 - 1 year ago 0
Голосов: +0 / -0
Андреич, ааа, понял, но теперь у меня другая проблема: У модели есть 2 доспеха где есть анимированая текстура, диадема и наплечник, я изменял анимацию анимированой текстуры из диадемы, и привязывал наплечник к ней, и только потом это понял, когда увидел что диадема движется не так как нужно, а раньше было нормально, в общем я начал создавать новую вкладку анимированой текстуры, что бы у Диадемы была отдельная анимация движения, а у наплечника своя, но у меня какой то бред случился, как бы я не изменял эти цифры X - Y, движение всеровно прежнее
Андреич #4 - 1 year ago 0
Голосов: +0 / -0
не забыл выделить для наплечника и диадемы разрые материалы.?
у каждого материала должен быть прописан свой ID анимированной текстуры, чтобы их движение различалось...
Кайзер #5 - 1 year ago (изм. ) 0
Голосов: +0 / -0
вот, раньше была 1 вкладка анимации текстур, и к ней были привязаны и корона и наплечник, а я изменял X - Y вкладки короны, ибо незнал ничего, в итоге я изменил движение текстуры так, как мне нужно было для наплечника, но обнаружил что текстура короны тоже движется в ту сторону что текстура у наплечника, и я попробовал создать вторую вкладку анимации текстур, и привязать её к короне, что бы корона двигалась как надо и что бы наплечник двигался по своему, но по итогу всеровно корона двигалась как раньше, будто от этого никакого толку, что я привязал эту вторую вкладку к короне, что бы первая вкладка осталась у наплечника. Соответственно появляется вопрос: Что делать то? Ведь я прописал для Диадемы второй ID анимированой текстуры, создал второй что бы прописать второй для диадемы, а первый что бы остался у наплечника, но по итогу всеровно 2 доспеха работают на 1 ID анимированой текстуры, хоть я и создал второй ID, и привязал его к диадеме
Прикрепленные файлы
Андреич #6 - 1 year ago 0
Голосов: +0 / -0
Кайзер, xgm.guru/p/wc3/wc3-ne-rabotaet-mdx
сбрось модельку в тему...
нужно смотреть по факту...
Кайзер #7 - 1 year ago 0
Голосов: +0 / -0
Андреич, там уже месяц неотвечали, но я написал