Анимация текстуры ткани в Deus Ex
Анимация текстуры ткани в Deus Ex произвела на меня сильное впечатление. В сочетании со звуковыми эффектами она создает качественное погружение в атмосферу. Я предположил, что они с искажениями анимируют UV-ки и перемещают мозаичную карту нормалей от верхнего правого к нижнему левому краю.
Я отбросил, что тут присутствует анимация вершин. С одной стороны, при взгляде сбоку я не видел движения. С другой стороны, создатели игры могли “запереть” краевые вершины. Но это, наверно, слишком.
Мой друг Falk говорит, что такой трюк относительно легко сделать в UDK. И он тоже посчитал, что перед нами UV анимация плюс наложение и перемещение разбиваемой на тайлы карты нормалей.
Но как обычно, все оказалось интереснее…
Я нашел инструмент для извлечения каркасной сетки. Вы можете увидеть, что пересечений UV не так много, поэтому мое предположение не подтвердилось. Но как сделана такая анимация текстуры ткани? Ведь анимированная карта нормалей просто заставляла бы складки подниматься и опускаться, но не перемещала их.
И в памяти не нашлось интересных текстур. Но потом я посмотрел опции в инструменте отладки и нашел “Disable Texture Filtering” – отключение фильтрации текстур. И вот как все стало выглядеть. Сначала я даже подумал, что вижу баг…
…но затем я снова изучил текстуры и нашел красивую маленькую текстуру шума. В сочетании с изображением выше все становится понятно. Использовали не карту нормалей и не искажение UV, а параллакс-маппинг. Я не был уверен в этом, думал, что “анимированная” параллакс карта означает полное запекание симуляции в высоком разрешении. Но теперь стало понятнее.
Несомненно, перед нами основа. Выглядит как карта нормалей в пространстве объекта, хотя насчет использования ч/б текстуры я не уверен.
И вместо того, чтобы создавать текстуру высокого разрешения с наложением на полусферы (как я сначала подумал), они масштабируют эту небольшую текстуру шумов и позволяют сделать свою работу фильтрации текстур. Гениально!
Дополнение 1
В Batman: Arkham City есть похожая анимация полотна
Движется даже силуэт! Идеально подходит для флажков. По крайней мере, пока вы смотрите на них спереди. Сбоку движения нет (так же, как в Deus Ex):
Вот каркасный вид. Хотя и кажется, что над вывеской проведена добротная тесселяция, вершины в игре не перемещаются. Я думаю, они используются для сокрытия мест, где силуэт перемещается больше (внизу вывески) или меньше (сверху/сбоку вывески):
Мне кажется (но я это не выяснял), что для перемещения текстур в Batman все же использовали карты нормалей. Эти волнистые нормалмапы кажутся как будто бы созданными специально для такого: