Оглавление Дополнительное чтение Учебник «Компьютерная графика» 
Увидеть «невидимое» 
Программирование и искусство. Мир клеточных автоматов. Искусственная жизнь

Технология, побеждающая воображение

Модель и ее окружение

В чем специфика ландшафтов 3D-графики? Представьте себе типичный эпизод из компьютерной игры. В сказочном лесу герой побеждает дракона и по живописной дороге идет к замку, расположенному высоко в горах. Для художника, профессионально работающего с 3D-графикой, ни герой, ни дракон, ни замок никаких проблем с точки зрения моделирования не представляют. Но что делать со сказочным лесом, живописной дорогой и высокими горами? Подобный вопрос возникает, очевидно, не только у разработчиков игр, но и у тех, кто занят изготовлением видеопродукции, у архитекторов, иллюстраторов и т. д.

Действительно, при большом разнообразии 3D-пакетов, лишь очень немногие из них имеют эффективные средства для работы с ландшафтами. Для PC — это (в хронологическом порядке) Vista Pro, World Construction Set и AnimaTek's World Builder. Для Macintosh — это, конечно, Bryce и, отчасти, Strata Studio. Даже на профессиональной платформе SGI таких пакетов до недавнего времени почти не было. Тем не менее понятно, что если художнику нужен полный набор 3D-средств для производства игр, видео и презентаций, то без ландшафтов ему не обойтись.

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

Очевидно, что сложность 3D-модели леса или горного массива имеет иную природу, чем, скажем, сложность модели дракона. Крайне редко нас интересует расположение отдельных деревьев в лесу или геометрия каждой отдельной горы. Для леса в большинстве случаев можно обойтись его усредненными характеристиками: средней плотностью рассадки, средней высотой, соотношением между численностью пород деревьев... Задав эти параметры и область, в которой необходимо «посадить» лес, можно доверить рассадку деревьев автоматической процедуре. Такая процедура предоставляет художнику новые возможности, ранее недоступные из-за чрезмерной трудоемкости.

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

Большую сцену трудно не только просчитывать, но и редактировать, если только не предпринять соответствующих мер, Обычно работа со сложными сценами опирается сразу на несколько методов. Традиционно — это иерархическая организация сцены, облегчающая восприятие и манипулирование объектами. Кроме того, каждый объект или процедура должны иметь один или несколько методов быстрого предварительного просмотра, используемых при создании или модификации объекта или эффекта. Наконец, дифференциальное проектирование, также может значительно упростить и ускорить работу над сложными сценами. Эффективность пакета можно оценивать по скорости и точности, с которыми художник может реализовать свой замысел. Для создания ландшафта использование всего арсенала методов работы со сложными сценами оказывается исключительно важным.

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

Модели в World Builder

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

Оценка процедурных моделей

Один из важнейших параметров процедурной модели — коэффициент усиления данных (к.у.д.) — впервые был введен Вильямом Ривзом (William Reeves) в работах по процедурному моделированию. Коэффициент означает отношение объемов выходных и входных данных процедуры.

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

Число деревьев в лесу может достигать нескольких сотен. Сложность модели дерева, по крайней мере, сравнима с упомянутой моделью дракона. При этом объем входных данных процедуры рассадки леса измеряется единицами байт. Результирующий коэффициент оказывается на 6-7 порядков выше.

Хотя процедуры с высоким к.у.д. и позволяют наполнять сцены большим количеством сложных объектов, тем не менее они имеют серьезные ограничения. Любую вершину модели дракона легко отредактировать. В процедурном лесу доступ к отдельным вершинам сеток сильно затруднен, если вообще возможен. Высокий к.у.д и возможность редактирования более низкого уровня — весьма желательное, но очень редкое сочетание для процедурных моделей.

Процедурная модель работает как черный ящик, на входе которого всего несколько параметров, а на выходе — довольно сложный объект. Поэтому важным требованием является управляемость по входным параметрам и интуитивная простота зависимости от них. Весьма распространены модели, в которых не удается сделать то, что нужно, так как изменение входных параметров приводит к непредсказуемым результатам. Такое поведение типично для многих известных фильтров в 2D-редакторах; оно уместно в игрушках, но совершенно неприемлемо для инструмента. Высокий к.у.д. оказывается в таких условиях бесполезным.

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

Ландшафтная сетка и скелетные линии

Широко известный подход к моделированию поверхности ландшафта использует фракталы и их модификации. При высоком к.у.д. гибкость этого метода не велика. Если требуется создать поверхность с конкретными специфическими деталями, то после применения фрактальной процедуры пользователь, лишенный эффективных методов редактирования, остается один на один с большой сеткой.

В World Builder'e использован более гибкий подход, опирающийся на скелетные линии. Скелетные линии естественно использовать для описания особенностей ландшафтных поверхностей, таких, как линии водораздела и водотока. В категорию особых линий попадают, кроме того, хребты гор и русла рек. Скелетной линией очень просто задать общий абрис горы, работая при этом практически в двух измерениях. Детали любого размера (не меньше, разумеется, разрешения выбранной сетки) легко поддаются описанию скелетными линиями. Поэтому площадка под замок, задаваемая скелетными линиями с требуемой точностью, естественно впишется в общий рельеф. Другая часто используемая возможность — задание с помощью скелетных линий изолинии рельефа.

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

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

Легко оценить к.у.д. для моделирования скелета. Типичный скелет ландшафта содержит несколько десятков линий с десятками заданных вручную вершин, что дает общее число точек порядка 102. (Здесь не учитываются вершины, автоматически добавленные при фрактализации). Типичная результирующая сетка содержит 106 вершин, следовательно, результирующий к.у.д. имеет порядок 104.

На практике выигрыш от использования скелетных линий еще больше, так как с пакетом World Builder поставляется богатая библиотека скелетов гор, холмов, каньонов, барханов, айсбергов и пр. В большинстве случаев достаточно отбуксировать в окно редактора любые понравившиеся библиотечные рельефные формы.

Раскраска ландшафта и растительность

Для размещения поверхности ландшафта текстур и материалов, объектов и растительности в WorldBullder'e применяется редактор областей. Область — это внутренность многоугольника, заданного линией, аналогичной скелетной линии. Области можно населять любыми комбинациями текстур, растительности, камней и других объектов, в том числе импортированных из других редакторов.

Можно задать условия размещения содержимого области, например, снега на склонах гор. Снег, естественно, должен лежать выше определенной границы на не слишком крутых северных склонах. Аналогично задаются условия для растительности: деревья могут расти в определенном диапазоне высот. Их экспозиция должна соответствовать крутизне склона. Даже если исходная область задана грубо, условия размещения позволяют существенно изменить и усложнить ее геометрию. Например, можно в качестве области для рассадки травы выбрать весь ландшафт или, задавая условия размещения, выделить фактический ареал обитания.

Редактор областей имеет несколько режимов показа ландшафта: от схематичной физической карты до детального фотореалистичного изображения на виде сверху. По карте можно двигаться в любом направлении и выводить ее на экран в разном масштабе. Области можно перемещать, копировать и удалять. К границе области можно добавлять точки, перемещать их и удалять. Выбираются области для работы либо с помощью мыши, либо из списка. Области, геометрия и содержимое которых уже определены, можно «заморозить» и защитить от случайного изменения.

Редактор областей — один из главных инструментов пакета. Он незаменим при текстурировании ландшафта и при «массовой рассадке» объектов.

Трава

Для травы использована модель на базе системы частиц. Травинки моделируются как траектории частиц, движущихся в поле тяжести. Отдельные травинки объединяются в пучки, которые высаживаются небольшими «клумбами». Благодаря такой иерархической организации внешний вид травы можно варьировать в широком диапазоне. Например, можно имитировать траву, растущую кочками на болоте, или сплошной луговой покров. Автоматическое изменение цвета и возможность одинаково рассаживать разные виды травы позволяет моделировать разнотравье. Раскачивание травы от ветра также автоматически моделируется и варьируется в широких пределах: от легкого бриза до штормового ветра. Уровень детализации при моделировании поддерживается автоматически. Сравнимых по эффективности и эстетическому эффекту моделей травы, насколько известно разработчикам, в других коммерческих пакетах пока нет.

С пакетом поставляется библиотека трав, которые могут модифицироваться или использоваться, как есть.

Растения

World Builder включает большую библиотеку растений, которые простой буксировкой можно помещать прямо в сцену или в редактор областей. Кроме того, в пакет встроена возможность моделирования новых типов растений, чего нет ни в World Construction Set, ни в Bryce.

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

Заметим также, что любая оценка к.у.д. для L-систем с наследованием всегда дает потенциально заниженный результат. Причина в том, что, не внося никаких изменений в существующую модель, от нее можно унаследовать новый объект. Таким образом, объем полезных данных, произведенный однажды написанной и зафиксированной базовой моделью, потенциально бесконечен.

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

Хотя L-системы — исключительно мощное и гибкое средство моделирования, оно предназначено для описания только целых классов и видов растений. Если же возникает потребность установить конкретную ветку дерева под определенным углом или убрать ее вовсе, то можно воспользоваться «ручным» редактором геометрии растений. Кроме изменения геометрии, он позволяет изменить материал растения или любого его элемента.

Средства моделирования растений позволяют создавать с высокой достоверностью практически любые растительные объекты, в том числе и вымышленные. Представление об этом дает дерево в стиле бонсай на иллюстрации.

Сочетание в World Builder'e L-систем с механизмом наследования и возможностью «ручного» редактирования моделей является уникальным для 3D-пакетов.

Небо

Реалистическое трехмерное процедурное небо с процедурными облаками управляется компактным набором параметров. Облака могут плыть по небу на заданной высоте, меняя при этом форму. Управляя палитрой неба и облаков, можно придавать изображению любые оттенки. 0 разнообразии «небес» можно судить по размеру библиотеки, поставляемой с пакетом. В версии 2.0 пакета модели неба дополнены процедурными звездами.

Вода

Моделирование отражения и анимированная рябь создают весьма достоверные водные объекты. Прозрачность воды на мелководье и изменение цвета с глубиной усиливают достоверность до фотографической. При этом, как и в остальных моделях пакета, художнику предоставлена полная свобода для создания необычных художественных эффектов.

Дороги

В версии 2.0 существует возможность автоматической прокладки дорог. При этом отыскивается оптимальная траектория, которая легко редактируется. Рельеф под дорогой слегка изменяется, и в нужных местах появляются террасы или выемки. Растительность по желанию художника может быть удалена с дороги либо полностью, либо частично. Поэтому одинаково легко строить как автомагистрали, так и малозаметные тропинки в лесу.

Автоматическое перемещение камеры вдоль дороги позволяет с исключительной скоростью и легкостью снимать видеоролики. Эту возможность особенно оценят разработчики игр.

Материалы

Объекты в World Builder'e можно раскрашивать и текстурировать. Материал собирается из строительных блоков — шейдеров, то есть описаний или алгоритмов визуализации. Понятие шейдера заимствовано из знаменитого пакета RenderMan фирмы Pixar, который использовался при создании множества спецэффектов для видео и кино. Каждый шейдер описывает некоторый набор характеристик поверхности. Например, фотометрия может быть описана одним шейдером, использующим определенную физическую модель отражения и поглощения света поверхностью. Выбирая разные физические модели фотометрии, мы можем изготовить разные фотометрические шейдеры. Другой пример — использование шейдера для помещения текстуры на поверхность объекта. Текстурная карта при этом моделирует цвет или окраску поверхности.

рис. 34.1aрис. 34.1bрис. 34.1cрис. 34.1d
Увидеть «невидимое» Программирование и искусство. ...