World Builder Professional 2.2
World Builder Professional 2.2
Ландшафтная сетка и скелетные линии
Раскраска ландшафта и «озеленение»
Лучше гор могут быть только горы... созданные в World Builder 2.2
Сражение за мировые рынки продолжается — фирма AnimaTek выпускает очередное обновление своего популярного ландшафтного пакета, в очередной раз доказывая, что формирование виртуального мира — больше искусство, чем наука.
Фирма AnimaTek, создатель пакета World Builder, имеет славную историю: в 1988 году Владимир Похилько* совместно с Алексеем Пажитновым, автором знаменитого «Тетриса», и при содействии американского антрепренера Хенка Роджерса основали компанию AnimaTek International, Inc. Первоначально она была российской компанией, а в начале 90-х открыла свой офис в США и в настоящее время производит целый спектр всевозможных трехмерных приложений, основанных на оригинальных технологиях, из которых наиболее успешной разработкой является World Builder.
Модель и ее окружение
World Builder применяется при моделировании реалистичных трехмерных ландшафтов. Основное техническое отличие пакетов ландшафтного моделирования от других направлений 3D-графики заключается в самом подходе: в отличие от отдельного, изолированного объекта здесь моделируется единая, протяженная среда, в которой существуют многочисленные объекты и их окружение. Таким образом, если объект можно целиком поместить в окно редактирования и манипулировать им, то среда или окружение имеют смысл только как некий протяженный фон, в общем случае бесконечный, попадающий в каждый отдельный кадр лишь небольшой своей частью. И даже если окружение не играет заметной роли в сцене, то оно все равно, как правило, гораздо больше и сложнее всех содержащихся в нем объектов и определяется не по сумме составляющих, а по комплексным параметрам сложности детализации и общей протяженности. Таким образом, моделирование среды выходит за пределы возможностей 3D-пакетов общего назначения и отдается специализированным пакетам.
Подход к 3D-моделированию леса или горного массива — иной природы, чем к созданию отдельного объекта. Нас мало интересует расположение отдельных деревьев или тонкости геометрии каждой отдельной горы. Для леса, например, в большинстве случаев можно обойтись общими характеристиками: средней плотностью рассадки, максимальной высотой и взаимным соотношением между видами насаждений. Задавшись такими параметрами и областью посадки, мы в принципе можем поручить генерацию леса автоматизированной процедуре. Такая процедура открывает новые возможности для художника, недоступные ранее из-за неоправданной трудоемкости. Таким образом, иной, процедурный, подход является основным при моделировании ландшафтов.
Воспользовавшись соответствующими процедурами, можно без труда создавать гигантские по размеру и сложности сцены. Однако это лишь одна часть процесса, и если у данной процедуры нет эффективного рендеринга, способного за разумное время построить реалистичное изображение такой сцены в нужном разрешении, то ценность процедурных моделей становится сомнительной. Решение одной проблемы порождает другую, более сложную: для ландшафтных сцен нужен особенно эффективный рендеринг.
Очевидно, что одно только повышение скорости традиционного полигонального рендеринга не решит проблемы, так как даже бедные объектами ландшафты могут содержать миллионы полигонов. Помочь в этом случае может, например, изменение уровня детализации, особенно эффективные процедуры удаления невидимых поверхностей, и другие «хитрости». Таким образом, рендеринг в подобных пакетах превращается из набора простых процедур в сложную дорогостоящую технологию, балансирующую между скоростью и качеством.
Кроме того, большую сцену одинаково сложно не только рендерить, но и редактировать, поэтому приходится применять сразу несколько специализированных методов. Самый традиционный из них — это иерархическая организация сцены, облегчающая восприятие и управление объектами. Кроме того, каждый объект или процедура должны иметь один или несколько методов быстрого предварительного просмотра, используемых при создании или модификации объекта или эффекта. И, наконец, дифференциальное проектирование, описанное в разделе о пользовательских интерфейсах, также может значительно упростить и ускорить работу над сложными сценами.
Эффективность пакета как производственного инструментария можно оценивать по скорости и точности, с которыми художник может реализовать свой замысел. А для ландшафтных сцен наличие разветвленного арсенала методов работы оказывается исключительно важным.
Если реализованы процедурные модели, быстрый рендеринг и эффективные методы работы с большими сценами, но нет, например, возможности обмена данными с пакетами общего назначения, то ландшафты так и останутся красивыми картинками.
Интерфейс пользователя
Интерфейс обеих версий пакета полностью соответствовал современным стандартам. Он был интуитивно понятен, легок в обращении и близок тем, кто работал с 3D Studio, имел традиционный четырехоконный интерфейс (для фронтального, верхнего и боковых изометрических видов, плюс вид из камеры). Еще с первой версии реализовывалась интеграция с 3D Studio. Для новичков определялся упрощенный вариант интерфейса, в котором часть пунктов меню и диалогов была скрыта. При этом, не выходя из программы, всегда можно было переключиться на профессиональный вариант, где все возможности разрешены. Набор основных инструментов второй версии по составу, положению на экране и функциональности близок к 3D Studio MAX. Наиболее частые операции, такие как помещение библиотечного объекта или материала в сцену, сводятся к перемещению из одного окна в другое.
Каждое окно может отображать объекты как в виде ограничительных кубов, скелетных линий или каркасов, так и в затененном виде — плоского полигонального рендеринга или сглаженного по Фонгу (но, к сожалению, пока не поддерживается аппаратная акселерация).
Для ускорения разработки в новой версии добавлено универсальное окно предварительного просмотра — окно, в котором можно увидеть редактируемый объект или тестовый объект с редактируемым материалом. В этом окне можно задавать любой фон и даже использовать z-буфер с изображением сцены. Для процедурно-анимированных моделей (колыхание травы, ветер в деревьях, дрейф облаков и т.п.) предварительный просмотр проходит в реальном времени, если заказать прорисовку в скелетных линиях. Если же для окна предварительного просмотра выбрать качественную прорисовку, то автоматически создастся avi-файл с пробной анимацией.
Богатые инструментальные средства World Builder дают широкие возможности для манипуляции с объектами любой природы (перемещения, масштабирования, вращения и др.). Настройка на текущий объект в сцене происходит автоматически, при этом обновляется содержимое инструментальных линеек, редактора свойств и меню. Свойства объектов редактируются одинаково, независимо от их природы. Для удобства поиска и восприятия свойства объектов также организованы в иерархию.
World Builder использует иерархическое дерево (Object Tree) для слежения за предметами в сцене, которое также дает возможности группировки и относительного перемещения объектов. Выбор любого объекта отображает все его релевантные параметры на дереве реквизитов (Properties Tree), и при выборе любого параметра можно изменить его значение непосредственно на вкладке (Property Page). Эти три окна с большим количеством значений и параметров могут, конечно, закрывать рабочее поле, но являются изящной системой, которая дает возможность быстрого упорядочения и прямого доступа к произвольному параметру любого объекта. Плавающие окна художник может расположить по своему желанию, а для тех, кто привык к стандартному расположению, имеется автоматическая организация рабочего пространства.
Большой набор библиотек с готовыми примерами намного превосходит объем того, что имелось в предыдущих версиях. Появилась архитектура (замки, дома, мосты, хижины и т.д.), расширена библиотека ландшафтных форм и различных природных поверхностей: растительности, небес, воды, камней и дорог, появились flipboards (двухмерные растровые объекты-ширмы), добавились текстуры, в том числе процедурные и другие 3D-объекты, что позволяет быстро достичь желаемых результатов: вы можете просто перетаскивать эти объекты в сцену, как в популярном ландшафтном пакете Bryce. Для удобства доступа к библиотечным объектам введена иерархическая организация библиотек, напоминающая Windows Explorer. Увеличение библиотек должно сократить время разработки новых проектов и вдохновить пользователей на разнообразные эксперименты. Для удаленных объектов, трехмерность которых не столь существенна, использование двухмерных ширм (flipboard) является хорошей возможностью. Отличие ширмы от трехмерного объекта на большом расстоянии увидеть практически невозможно, а на скорости рендеринга замена сказывается в лучшую сторону. (Кстати, ширмы — это единственный способ представления объектов в пакете World Construction Set, ближайшем аналоге World Builder).
Модели в пакете World Builder
Ландшафтная специфика в пакете выражается для пользователя в виде специализированной библиотеки процедурных моделей. Их роль в программах общего назначения выражена не столь ярко, и, как следствие, для многих пользователей — это экзотика. Поэтому стоит кратко обсудить некоторые общие требования к процедурным моделям.
Ландшафтная сетка и скелетные линии
Если используются только фрактальные процедуры моделирования поверхностей, то пользователь остается один на один с большой сеткой, лишившись эффективных методов редактирования.
В пакете World Builder используется более гибкий подход, опирающийся на скелетные линии. Скелетные линии естественно использовать для описания особенностей ландшафтной поверхности, таких как линии водораздела или водотока. В категорию таких особых линий попадают хребты гор и русла рек. Кроме того, скелетной линией легко задавать общий контур горы, работая при этом практически в двух измерениях. Другая часто используемая возможность — задание изолиний рельефа с помощью тех же скелетных линий. Таким образом, легко поддаются описанию детали любого размера. Поэтому площадка под объект, легко задаваемая скелетными линиями с требуемой точностью, естественно впишется в общий рельеф.
Применение процедур фрактализации к скелетным линиям сохраняет их общий вид при одновременном увеличении реалистичных деталей поверхности. Скелетными линиями легко управлять как по отдельности, так и в группах. Благодаря этому можно с легкостью задавать и редактировать сложные поверхности, воспользовавшись либо библиотечными заготовками, либо начав работу с нуля.
Следующий шаг после задания скелетных линий — построение реалистичной поверхности. На этом шаге моделируется процесс эрозии. Входными данными в этом случае будут скелетные линии, интенсивность эрозии и общие характеристики поверхности, такие, например, как шероховатость. Поверхности могут быть дополнительно фрактализованы для придания им реалистичной шероховатости. Затем на скелетон натягивается текстурированная «кожа» ландшафта, и вы обсчитываете результат. Причем результат эрозии легко предсказать. В настройке параметров процедуры помогает также и окно предварительного просмотра.
При этом уровень детализации просчета можно изменять. Все это позволяет создавать необходимые ландшафты чрезвычайно интуитивным, простым и эффективным способом, особенно если вы будете добавлять также процедурную эрозию, карты шероховатостей (bump) или смещений (displacement) для придания сценам, таким образом, максимальной реалистичности.
На практике выигрыш от использования скелетных линий увеличивается при использовании библиотек. В большинстве случаев достаточно просто перетащить из библиотеки в окно редактора любые понравившиеся вам формы вместе с необходимыми текстурами и материалами, присущими естественным средам и объектам, таким как трава, камень или песок.
Кроме того, подход, опирающийся на скелетные линии, открыт для обмена данными с другими пакетами. Например, для более удобной работы с архитектурными моделями в пакете предусмотрена возможность интерпретировать сетку, импортированную из файла 3D Studio MAX, либо как сеть из скелетных линий, либо непосредственно как фрагмент ландшафта. Таким образом, фрагмент ландшафта, прилегающий к архитектурной модели, может быть идеально перенесен в ландшафтный редактор вместе с моделью.
Здесь вы можете создавать и контрольные точки на 3D-поверхности, манипулируя ими для формирования скелета, который определяет контуры будущего ландшафта.
Раскраска ландшафта и «озеленение»
Для размещения на поверхности ландшафта текстур, объектов и растительности в World Builder используется редактор областей (Area Editor). Каждый ландшафт в вашей сцене имеет собственный редактор области, где, собственно, она определяется и заполняется любым количеством материалов, растительностью или другими трехмерными объектами. Область — это внутренность многоугольника, заданного линией, аналогичной скелетной. Области можно покрывать текстурами (материалами), растительностью, камнями и другими объектами, в том числе и импортированными из других редакторов в любых комбинациях. Они могут рассеиваться по области беспорядочно или помещаться на строго определенные, индивидуальные места — и при этом аккуратно встанут на поверхность в соответствии с высотными ограничениями.
Для области можно задать условия размещения ее содержимого (рис. 1). Типичный пример использования таких условий — это моделирование положения снега на склонах гор: снег естественно положить выше определенной высоты на не слишком крутых северных склонах. Аналогичные условия могут быть использованы для генерации растительности: некоторые виды деревьев могут расти в определенном диапазоне высот, в зависимости от экспозиции и крутизны склона. Даже если исходная область задана лишь в грубом приближении, условия размещения позволяют существенно изменять и усложнять ее геометрию. Например, в качестве области для рассадки травы можно выбрать весь ландшафт, а условиями размещения выделить фактический ареал обитания.
Редактор областей имеет несколько режимов показа ландшафта (рис. 2): от схематичной физической карты до детального фотореалистичного изображения на виде сверху. По карте можно осуществлять навигацию и выводить ее на экран в любом увеличении. Области можно редактировать как целое: перемещать, копировать и удалять. К границе области можно добавлять точки, перемещать их и удалять. Выбрать область для работы можно либо с помощью мыши, либо из списка, в котором области представлены своими содержательными именами. Области, геометрию и содержимое которых уже настроили, можно заморозить и защитить от случайного изменения.
Редактор областей — это один из главных инструментов пакета, так как он незаменим при текстурировании ландшафта и при «массовой рассадке» объектов. В нем и создается основная масса сложных сцен.
Трава
Для генерации травы используется модель, основанная на системе частиц. Травинки моделируются траекториями частиц, движущимися в поле тяжести. Травинки объединяются в пучки, а пучки высаживаются небольшими «клумбами». Благодаря такой иерархической организации внешний вид травы можно варьировать в широком диапазоне. Например, можно имитировать растущую кочками траву на болоте или сплошную луговую траву. Автоматическая вариация цвета и возможность одинаково рассаживать разные виды травы позволяет моделировать разнотравье. Раскачивание травы от ветра также автоматически моделируется и варьируется в широких пределах: от легкого бриза до штормового ветра. Модель травы поддерживает автоматический уровень детализации. Аналогичных по эффективности и эстетическому эффекту моделей травы нет в других коммерческих пакетах.
Поставляется обширная библиотека трав, которые могут легко модифицироваться пользователем. Диалоги, описывающие параметры травы, как и многие другие параметры в пакете, имеют наглядную структуру и снабжены многочисленными иллюстрациями (рис. 3).
Растения
В World Builder имеется большая библиотека растений, которые можно помещать простым перемещением прямо в сцену или в редактор областей. Кроме того, в пакет встроена уникальная возможность моделирования новых типов растений. В основу моделирования растений положена объектно-ориентированная версия языка L-систем. Объектная ориентация значительно усиливает традиционный подход, позволяя наследовать компоненты уже существующих моделей. Исходный код большинства моделей поставляется с пакетом, что облегчает работу над новыми растениями. Если уже есть готовая L-система, то, изменяя стартовое значение генератора случайных чисел, можно создать любое количество экземпляров родственных растений.
Редактирование L-системной модели происходит в окне текстового редактора, встроенного в среду World Builder. С окном редактора связан компилятор L-систем. После успешной компиляции модель автоматически вставляется в сцену и готова к использованию.
Хотя L-системы — исключительно мощное и гибкое средство моделирования, оно предназначено для описания классов и видов растений в целом. Если же возникает потребность установить определенную ветку конкретного дерева под определенным углом или убрать ее вовсе, то можно воспользоваться «ручным» редактором геометрии растений. Кроме изменения геометрии, в нем можно ввести в растение новый материал или изменить его на любом элементе растения.
Средства моделирования растений в World Builder позволяют создавать практически любые формы растительных объектов с высокой достоверностью. Например, для одного из продуктов была изготовлена серия ботанически точных моделей водных растений. При этом сохраняется и возможность моделировать вымышленные формы.
В целом же сочетание L-систем с механизмом наследования и возможностью «ручного» редактирования моделей является уникальным для 3D-пакетов.
В новой версии возможна и процедурная анимация деревьев на ветру. Даже новичок может выбрать в диалоге Wind Wizard’а один из нескольких типов анимации и по нажатию одной кнопки весьма натуралистично раскачать дерево. Так же легко смоделировать порыв ветра или колыхание водорослей. Сцены, выглядевшие в версии 1.0 застывшими, буквально оживают.