Смекни!
smekni.com

Организация автоматизированного рабочего места 3D-аниматора (стр. 4 из 8)

Возьмём два примера. Первый – это текстурирование определённого природного ландшафта. Тут очень уместно вспомнить, как выглядят открытые пространства в таких играх, как WorldofWarcraft или других фэнтезийных массивно-многопользовательских играх.

На рисунке 12 видно: нерегулярная поверхность, ландшафт с возвышениями и впадинами, имитация грунта – песка, травы, воды, в воздухе вон что-то летает... ну, и так далее. Естественно, тут используется множество текстур достаточно высокого разрешения. Но, естественно, не такого высокого, чтобы покрыть весь ландшафт одним растровым изображением (хотя в idSoftware разработана технология Megatexture, позволяющая поступать как раз таким образом – одной картинкой накрывать весь огромный ландшафт как стол скатертью).

Рисунок 12 - Текстурирование


По традиции изготавливаются изображения – квадратные или прямоугольные, со сторонами, чьи измерения строго кратны 16 (256х256, 512х512, 2048х2048, 2048х512 и так далее). Чем больше изображения, тем более подробными они будут выглядеть в сцене или в игре, тем больше деталей удастся передать. Но габариты изображения – это ещё и размеры графического файла, и объёмы занимаемой оперативной памяти.В движке QuakeIII существовало ограничение: 4 мегабайта текстур на всю карту. Что очень и очень немного, особенно по нынешним временам.

Текстуры должны стыковаться друг с другом бесшовно, что требует их особой подготовки. Наиболее простой, но небезотказный способ – это деление исходного изображения, например, фотографии, на четыре равных блока и перекрёстное перемещение этих фрагментов друг относительно друга как на вот этой схеме:

[A]-[B]

[C]-[D]

_____

[D]-[C]

[B]-[A]

После чего надо замазывать (например, с помощью штампа в Photoshop) образовавшиеся внутренние швы. А также маскировать повторяющиеся фрагменты: текстуре (Рисунок 13), изображающей, например, траву или песок, стоит выглядеть насколько возможно реалистично, с одной стороны, и однородно – с другой; при наложении на крупную поверхность повторяющейся текстуры, эффект черепицы (tiling) – явного повторения одних и тех же узоров, увы, неизбежен, но его можно хоть как-то спрятать. Если текстура имеет высокое разрешение, то tiling почти незаметен с близкого расстояния, зато более чем заметен издали.


Рисунок 13 - Текстура

И без особого удовольствия увидим многочисленные «квадратики» на земле – повторяющиеся текстуры. При нахождении вблизи поверхности их почти не заметно.

Способов комбинировать несколько текстур существует множество – например, в трёхмерных редакторах можно назначать разные материалы (и, соответственно, разные текстуры) на разные группы вершин на одной и той же поверхности; можно использовать трафареты (stencil) для того, чтобы указывать, где одна текстура будет полностью или частично прозрачной, а где – нет, и где, соответственно, из-под неё будет выглядывать другая.

Второй пример – это некрупная трёхмерная модель, требующая достаточно сложной, но единой текстуры для всей своей поверхности.

И здесь мы упираемся в UV-развёртку

UV-развёртка – это проекция всей поверхности объёмной фигуры на плоскость для последующего расположения на ней растровых изображений (можно вспомнить старые игры типа QuakeI или II и процесс изготовления «скинов» для моделей игроков – это как раз рисование текстур по заданной для каждой модели UV-развёртке). Если совсем «на пальцах», то UV-развёртка – это «разрезание» трёхмерной фигуры по заданным швам, так, чтобы она могла лечь на плоскость с минимальными искажениями пропорций.

Это нужно, чтобы избежать масштабных искажений текстуры – чтобы на разных фрагментах модели одно и то же растровое изображение имело одинаковое разрешение. На практике такого добиться удаётся довольно редко, но нужно добиться хотя бы относительного единообразия.

Первое правило: вся поверхность фигуры должна лечь на плоскость «одним слоем», а то на деле бывает иначе – если швы неправильно выставлены.

Правило второе: развёртка должна быть как можно более непрерывной; просто для того, чтобы художнику проще было ориентироваться по ней. Совсем без «островов» дело вряд ли обойдётся, особенно, если фигура сложная, но и с разбросанными так и сяк маленькими фрагментами радости работать нет никакой.

Правило третье: пропорции развёртки должны соблюдаться. Иначе в одном месте фрагмент текстуры будет иметь одно разрешение, а в другом – другое, и выглядеть это будет ужасающе.

После того, как развёртка готова, её можно экспортировать в любой растровый редактор и использовать в качестве шаблона, поверх которого рисуется текстура со всеми возможными деталями (Рисунок 14).

Далее приведём пример работы с относительно простым объектом:

Рисунок 14 - Развертка

Цельный объект без внутренних граней, без заданного материала и текстур (Рисунок 15).


Рисунок 15 - Объект без внутренних граней, без заданного материала и текстур

Оранжевым цветом обозначены швы (seams), по которым модель будет «разрезаться» для расположения её поверхности на плоскости. По сути дела, UV-развёртка (Рисунок 16) – это примерно то же, что и портновская выкройка или плоская заготовка бумажной модели для склеивания.

Рисунок 16 - UV-развёртка

Модель разрезана; вот как будет выглядеть UV-развёртка (серые линии и красные точки). Сразу поверх неё нарисована текстура. Как видно, «солома» размещена так, чтобы совпадать с ориентацией крыши в пространстве. Без искажений, естественно, не обошлось.

Ну и вот, наконец, вот что получается в итоге:


Рисунок 17 - Отрендеренная модель

Отрендеренная модель (Рисунок 17). Текстура соломы на крыше выглядит так себе, даже, несмотря на хитрость – пакет Blender 3D, в котором данная модель собрана, позволяет регулировать с помощью текстур нормали, добавляя ощущение неровной поверхности. С другой стороны, цели показать супермодель с супертекстурами данный материал и не преследовал. Главное тут – принцип, как это всё делается.

2.7 Риггинг 3D-модели

Риггинг (rigging, animation setup, анимационныйсетап). В 3D анимации - это процесс подготовки персонажа к анимации, включающий создание и размещение внутри трёхмерной модели рига (от англ. Rig - оснастка), виртуального «скелета» - набора «костей» или «суставов» (bones, joints), установления иерархической зависимости между ними и значений возможных трансформаций для каждой из этих костей (Рисунок 18).

Рисунок 18 - Персонаж с выстроенным ригом


Скелетная анимация, для которой и применяется риггинг (а с ним и скиннинг) удобна прежде всего тем, что позволяет манипулировать большим количеством составных элементов анимируемой фигуры (конечности, глаза, мышцы лица, губы и т.д.) с помощью относительно малого количества управляющих элементов - тех самых костей и их регулируемых характеристик.

Поскольку между ними устанавливается иерархическая зависимость, то смещение в пространстве каждой кости, находящейся в зависимости от другой, будет представлять собой совокупность её собственных трансформаций и трансформаций, которым подвергается «материнская» кость. Другими словами, за смещением кости бедра должно следовать смещение костей всей ноги. Грамотная настройка зависимостей позволяет аниматорам значительно экономить усилия, указывая, например, траектории смещения только для небольшого количества отдельных костей, которые потянут за собой другие, находящиеся в иерархическом подчинении.

Собственно, структура сочленений виртуального скелета даже внешне очень похожа на сочленения скелета у позвоночных. От сложности этой структуры напрямую зависит, насколько она будет гибкой, и насколько реалистичной получится анимация. С другой стороны, чем больше костей в структуре рига, тем сложнее будет с ним работать. 3D модель с несколькими добавленными «костями» (Рисунок 19). Всё остальное ещё предстоит сделать.

Рисунок 19 - 3D модель с несколькими добавленными «костями»


С риггингом напрямую связан процесс скиннинга (от англ. skin - кожа; интересно, кстати, что в отрыве от контекста 3D графики слово skinning переводится как «свежевание»), - назначения связей между участками поверхности уже самой анимируемой фигуры и костями рига. Иными словами, необходимо, чтобы кость, соответствующая крайней фаланге пальца, влияла только на нужную группу вершин на поверхности анимированную 3D фигуры, и чтобы не получилось, чтобы изменение положения этой фаланги приводило с загибанию всей руки персонажа в рогалик. Хотя, конечно, если именно это вам и нужно...

У этого процесса немало своих нюансов. Например, необходимо точное определение, какая группа вершин (vertices) подвергается воздействию трансформаций отдельных костей, чтобы не зацепить ненароком другие; на какие группы вершин подвергаются воздействиям более чем одной кости и так далее.

Оптимальным вариантом для анимации фигуры «двуногого без перьев» является скелет, упрощённо повторяющий структуру «обычного» человеческого скелета. На него и следует ориентироваться, создавая «кости»; расположение их сочленений должно совпадать с гнущимися участками фигуры (колени, логти и другие суставы).

Рёбра, естественно, ни к чему, каждый позвонок на позвоночнике - тоже, но спина всё-таки должна сохранять какое-то подобие гибкости, так что костей в ней всё равно будет много.