Тема номера
Технология, побеждающая воображение
Игорь Боровиков

В 1992 году Хенк Роджерс (Henk Rogers) вместе с коллективом российских программистов организовал в Москве совместное предприятие «Аниматек», целью которого была разработка новых технологий для компьютерных игр и 3D-графики (о Хенке Роджерсе, его карьере в индустрии игровых программ и сотрудничестве с российскими программистами можно прочитать в увлекательной книге D.Sheff «Game Over», Vintage Books, N. Y., 1993). После нескольких лет исследований и разработок появился пакет AnimaTek's World Builder, работающий в DOS и предназначенный для процедурного моделирования и компьютерной генерации ландшафтов. Летом прошлого года он превратился из внутреннего технологического полигона в коммерческий продукт, версия 1.0 которого была признана журналом «Computer Graphics World» лучшей среди программ для моделирования и анимации, выпущенных в 1995 году. Сейчас близка к завершению версия 2.0 для Windows NT/95, значительно превосходящая по возможностям свою предшественницу.
Стоит сразу обратить внимание на то, что в World Builder'e вы не найдете средств построения сферы или куба и не сможете создать персонаж для игры. Назначение его – не повторять возможности типичных пакетов инженерного или художественного 30-дизайна, а предоставить новые в тех областях, где выбор инструментов пока не велик. Для World Builder'a это – создание ландшафтов.
Модель и ее окружение
В чем специфика ландшафтов 3D-графики и почему они оказались одной из главных тем работы «Аниматека»?
Представьте себе типичный эпизод из компьютерной игры. В сказочном лесу герой побеждает дракона и по живописной дороге идет к замку, расположенному высоко в горах. Для художника, профессионально работающего с 30-графикой, ни герой, ни дракон, ни, тем более, замок никаких проблем с точки зрения моделирования не представляют. Но что делать со сказочным лесом, живописной дорогой и высокими горами? Подобный вопрос возникает, очевидно, не только у разработчиков игр, но и у тех, кто занят изготовлением видеопродукции, у архитекторов, иллюстраторов и т. д.
«Трехмерный» ответ на этот вопрос не столь тривиален, как может показаться на первый взгляд. Действительно, при большом разнообразии 3D-пакетов, лишь очень немногие из них имеют эффективные средства для работы с ландшафтами. Для PC – это (в хронологическом порядке) Vista Pro, World Construction Set и AnimaTek's World Builder. Для Macintosh – это, конечно, Вгусе и, отчасти, Strata Studio. Даже на профессиональной платформе SGI таких пакетов до недавнего времени почти не было. Тем не менее понятно, что если художнику нужен полный набор 30-средств для производства игр, видео и презентаций, то без ландшафтов ему не обойтись. Это и побудило «Аниматек» заняться решением ландшафтной проблемы.
Существует принципиальная разница между моделированием отдельного объекта и моделированием целого окружения или среды, в которой находятся эти объекты. Интуитивно понятно, что объект имеет смысл помещать в окно редактора целиком, а среду – нет. Среда или окружение нужны только как протяженный фон, попадающий в каждый отдельный кадр лишь небольшой своей частью. При этом может оказаться , что окружение не играет заметной роли в сравнении с главными объектами в сцене, но, как правило, оно гораздо больше и сложнее этих объектов. Оба параметра окружения – сложность и протяженность – обычно лежат далеко за пределами возможностей пакетов общего назначения.
Очевидно, что сложность 30-модели леса или горного массива иной природы, чем, скажем, модели дракона. Крайне редко нас интересует расположение отдельных деревьев в лесу или геометрия каждой отдельной горы. Для леса в большинстве случаев можно обойтись его усредненными характеристиками: средней плотностью рассадки, средней высотой, соотношением между численностью пород деревьев... Задав эти параметры и область, в которой необходимо «посадить» лес, можно доверить рассадку деревьев автоматической процедуре. Такая процедура предоставляет художнику новые возможности, ранее недоступные из-за чрезмерной трудоемкости.
Выбирая подходящие процедуры, можно без особого труда порождать гигантские по размеру и сложности сцены. Но если нет эффективного рендеринга, способного за разумное время построить реалистичное изображение такой сцены в нужном разрешении, то ценность процедурных моделей становится сомнительной. Решение одной проблемы порождает другую, более сложную: для ландшафтных сцен нужен особо эффективный просчет. Понятно, что одной только высокой скорости визуализации поверхностей далеко не достаточно, так как даже бедные объектами сцены могут содержать миллионы многоугольников. Это заставляет опираться на эффективные процедуры автоматической поддержки уровня детализации и удаления невидимых линий и т. п. Генерация изображения превращается из набора ^ простых действий в сложную и дорогостоящую технологию, «ба-' лансирующую» между скоростью и качеством.

Большую сцену трудно не только просчитывать, но и редактировать, если только не предпринять соответствующих мер. Обычно работа со сложными сценами опирается сразу на несколько методов. Традиционно – это иерархическая организация сцены, облегчающая восприятие и манипулирование объектами. Кроме того, каждый объект или процедура должны иметь один или несколько методов быстрого предварительного просмотра, используемых при создании или модификации объекта или эффекта. Наконец, дифференциальное проектирование, описанное в разделе о пользовательских интерфейсах, также может значительно упростить и ускорить работу над сложными сценами. Эффективность пакета как производственного инструмента можно оценивать по скорости и точности, с которыми художник может реализовать свой замысел. Для создания ландшафта использование всего арсенала методов работы со сложными сценами оказывается исключительно важным.
Если реализованы процедурные модели, рендеринг и эффективные методы работы с большими сценами, но нет возможности обмена данными с пакетами общего назначения, то ландшафты останутся «вещью в себе». Действительно, ландшафт – обычно лишь фон, на котором происходит действие. Герой игры никогда не сможет пройти через лес к замку, если нет развитых средств импорта и экспорта, а также процедуры комбинирования выхода из разных пакетов в постпроцессе. Если такие средства есть, то ландшафтный редактор превращается в действительно полезный инструмент для создания окружения трехмерным объектам.
Модели в World Builder
Для пользователя главным выражением ландшафтной специфики является библиотека процедурных моделей. Их роль в пакетах общего назначения выражена не столь ярко, поэтому многие, возможно, с ними не знакомы. Давайте вкратце рассмотрим некоторые общие требования к процедурным моделям.
Оценка процедурных моделей
Один из важнейших параметров процедурной модели – коэффициент усиления данных (к.у.д.) – впервые был введен Биллом Ривзом (William Reeves) в работах по процедурному моделированию. Коэффициент означает отношение объемов выходных и входных данных процедуры. Для простоты выходными данными можно считать полигональную сетку модели. Если, например, размер сетки несложной модели дракона составляет несколько килобайт, и одна половина вершин сетки была отредактирована вручную (входные параметры), а вторая половина получена отражением первой, то к.у.д. такого метода моделирования равен двум.

Число деревьев в лесу может достигать нескольких сотен. Сложность модели дерева, по крайней мере, сравнима с упомянутой моделью дракона. При этом объем входных данных процедуры рассадки леса измеряется единицами байт. Результирующий коэффициент оказывается на 6-7 порядков выше.
Хотя процедуры с высоким к.у.д. и позволяют наполнять сцены большим количеством сложных объектов, тем не менее они имеют серьезные ограничения. Любую вершину модели дракона легко отредактировать. В процедурном лесу доступ к отдельным вершинам сеток сильно затруднен, если вообще возможен. Высокий к.у.д. и возможность редактирования более низкого уровня – весьма желательное, но очень редкое сочетание для процедурных моделей.
Процедурная модель работает как черный ящик, на входе которого всего несколько параметров, а на выходе – довольно сложный объект. Поэтому важным требованием является управляемость по входным параметрам и интуитивная простота зависимости от них. Весьма распространены модели, в которых не удается сделать то, что нужно, так как изменение входных параметров приводит к непредсказуемым результатам. Такое поведение типично для многих известных фильтров в 20-редакторах; оно уместно в игрушках, но совершенно неприемлемо для инструмента. Высокий к.у.д. оказывается в таких условиях бесполезным.
Итак, высокий коэффициент усиления данных в сочетании с возможностью редактирования результата на разных уровнях, управляемость и интуитивная простота являются главными требованиями к процедурным моделям.
Ландшафтная сетка и скелетные линии
Широко известный подход к моделированию поверхности ландшафта использует фракталы и их модификации. При высоком к.у.д. гибкость этого метода не велика. Если требуется создать поверхность с конкретными специфическими деталями, то, после применения фрактальной процедуры, пользователь, лишенный эффективных методов редактирования, остается один на один с большой сеткой.
В World Builder'e использован более гибкий подход, опирающийся на скелетные линии. Скелетные линии естественно использовать для описания особенностей ландшафтной поверхности, таких, как линии водораздела и водотока. В категорию особых линий попадают, кроме того, хребты гор и русла рек. Скелетной линией очень просто задать общий абрис горы, работая при этом практически в двух измерениях. Детали любого размера (не меньше, разумеется, разрешения выбранной сетки) легко поддаются описанию скелетными линиями. Поэтому площадка под замок, задаваемая скелетными линиями с требуемой точностью, естественно впишется в общий рельеф. Другая часто используемая возможность -задание с помощью скелетных линий изолинии рельефа.
Применение процедур фрактализации к скелетным линиям сохраняет их общий вид при одновременном увеличении реалистичных деталей поверхности. Скелетными линиями можно управлять, как по отдельности, так и объединенными в группы, благодаря чему с легкостью задаются и редактируются сложные поверхности.
Следующий шаг после задания скелетных линий – построение самой поверхности ландшафта. На этом шаге моделируется процесс эрозии. Входными данными модели являются геометрия скелетных линий, интенсивность эрозии и общие характеристики поверхности, такие ,как ее шероховатость. Результат эрозии легко предсказать. В настройке параметров процедуры помогает также и окно предварительного просмотра.
Легко оценить к.у.д. для моделирования скелета. Типичный скелет ландшафта содержит несколько десятков линий с десятками заданных вручную вершин, что дает общее число точек порядка 102. (Здесь не учитываются вершины, автоматически добавленные при фрактализации.) Типичная результирующая сетка содержит 106 вершин, следовательно, результирующий к.у.д. имеет порядок 104.
На практике выигрыш от использования скелетных линий еще больше, так как с пакетом World Builder поставляется богатая библиотека скелетов гор, холмов, каньонов, барханов, айсбергов и пр. В большинстве случаев достаточно отбуксировать в окно редактора любые понравившиеся библиотечные рельефные формы.

Раскраска ландшафта и растительность
Для размещения на поверхности ландшафта текстур (материалов), объектов и растительности в World Builder'e применяется редактор областей. Область – это внутренность многоугольника, заданного линией, аналогичной скелетной линии. Области можно населять любыми комбинациями текстур, растительности, камней и других объектов, в том числе импортированных из других редакторов.
Можно задать условия размещения содержимого области, например, снега на склонах гор. Снег, естественно, должен лежать выше определенной границы на не слишком крутых северных склонах. Аналогично задаются условия для растительности: деревья могут расти в определенном диапазоне высот. Их экспозиция должна соответствовать крутизне склона. Даже если исходная область задана грубо, условия размещения позволяют существенно изменить и усложнить ее геометрию. Например, можно в качестве области для рассадки травы выбрать весь ландшафт или, задавая условия размещения, выделить фактический ареал обитания.
Редактор областей имеет несколько режимов показа ландшафта: от схематичной физической карты до детального фотореалистичного изображения на виде сверху. По карте можно двигаться в любом направлении и выводить ее на экран в разном масштабе. Области можно перемещать, копировать и удалять. К границе области можно добавлять точки, перемещать их и удалять. Выбираются области для работы либо с помощью мыши, либо из списка. Области, геометрия и содержимое которых уже определены, можно заморозить и защитить от случайного изменения.
Редактор областей – один из главных инструментов пакета. Он незаменим при текстурировании ландшафта и при «массовой рассадке» объектов.
Трава
Для травы использована модель на базе системы частиц. Травинки моделируются как траектории частиц, движущихся в поле тяжести. Отдельные травинки объединяются в пучки, которые высаживаются небольшими «клумбами». Благодаря такой иерархической организации внешний вид травы можно варьировать в широком диапазоне. Например, можно имитировать траву, растущую кочками на болоте, или сплошной луговой покров. Автоматическое изменение цвета и возможность одинаково рассаживать разные виды травы позволяет моделировать разнотравье. Раскачивание травы от ветра также автоматически моделируется и варьируется в широких пределах: от легкого бриза до штормового ветра. Уровень детализации при моделировании поддерживается автоматически. Сравнимых по эффективности и эстетическому эффекту моделей травы, насколько известно разработчикам, в других коммерческих пакетах пока нет.
С пакетом поставляется библиотека трав, которые могут модифицироваться или использоваться, как есть.
Растения
World Builder включает большую библиотеку растений, которые простой буксировкой можно помещать прямо в сцену или в редактор областей. Кроме того, в пакет встроена возможность моделирования новых типов растений, чего нет ни в World Construction Set, ни в Вгусе.
В основу моделирования растений положена объектно-ориентированная версия языка L-систем (этот язык используется для определения различных типов самоподобных структур, примером которых являются фракталы типа «снежинок» и «деревьев» Коха). Объектная ориентация значительно ускоряет и облегчает работу, позволяя наследовать компоненты уже существующих моделей. (Исходный код большинства моделей поставляется с пакетом.) Если уже есть готовая L-система, то, изменяя стартовое значение генератора случайных чисел, можно породить любое количество родственных растений.

Заметим также, что любая оценка к.у.д. для L-систем с наследованием всегда дает потенциально заниженный результат. Причина в том, что, не внося никаких изменений в существующую модель, от нее можно унаследовать новый объект. Таким образом, объем полезных данных, произведенный однажды написанной и зафиксированной базовой моделью, потенциально бесконечен.
Редактирование L-модели происходит в окне встроенного текстового редактора, с которым связан компилятор L-систем. После успешной компиляции модель автоматически вставляется в сцену и может быть использована.
Хотя L-системы – исключительно мощное и гибкое средство моделирования, оно предназначено для описания только целых классов и видов растений. Если же возникает потребность установить конкретную ветку дерева под определенным углом или убрать ее вовсе, то можно воспользоваться «ручным» редактором геометрии растений. Кроме изменения геометрии, он позволяет изменить материал растения или любого его элемента.
Средства моделирования растений позволяют создавать с высокой достоверностью практически любые растительные объекты, в том числе и вымышленные. Представление об этом дает дерево в стиле бонсай на иллюстрации.
Сочетание в World Builder'e L-систем с механизмом наследования и возможностью «ручного» редактирования моделей является уникальным для 30-пакетов.
Небо
Реалистическое трехмерное процедурное небо с процедурными облаками управляется компактным набором параметров. Облака могут плыть по небу на заданной высоте, меняя при этом форму. Управляя палитрой неба и облаков, можно придавать изображению любые оттенки. О разнообразии «небес» можно судить по размеру библиотеки, поставляемой с пакетом. В версии 2.0 пакета модели неба дополнены процедурными звездами.
Вода
Моделирование отражения и анимированная рябь создают весьма достоверные водные объекты. Прозрачность воды на мелководье и изменение цвета с глубиной усиливают достоверность до фотографической. При этом, как и в остальных моделях пакета, художнику предоставлена полная свобода для создания необычных художественных эффектов.
Дороги
В версии 2.0 существует возможность автоматической прокладки дорог. При этом отыскивается оптимальная траектория, которая легко редактируется. Рельеф под дорогой слегка изменяется, и в нужных местах появляются террасы или выемки. Растительность по желанию художника может быть удалена с дороги либо полностью, либо частично. Поэтому одинаково легко строить как автомагистрали, так и малозаметные тропинки в лесу.
Автоматическое перемещение камеры вдоль дороги позволяет с исключительной скоростью и легкостью снимать видеоролики. Эту возможность особенно оценят разработчики игр.
Материалы
Объекты в World Builder'e можно раскрашивать и текстурировать. Материал собирается из строительных блоков – шейдеров, то есть описаний или алгоритмов визуализации. Понятие шейдера заимствовано из знаменитого пакета RenderMan фирмы Pixar, который использовался при создании множества спецэффектов для видео и кино. Каждый шейдер описывает некоторый набор характеристик поверхности. Например, фотометрия может быть описана одним шейдером, использующим определенную физическую модель отражения и поглощения света поверхностью. Выбирая разные физические модели фотометрии, мы можем изготовить разные фотометрические шейдеры. Другой пример – использование шейдера для помещения текстуры на поверхность объекта. Текстурная карта при этом моделирует цвет или окраску поверхности.
Универсальность шейдеров демонстрирует менее очевидный пример – профилирование поверхности по данным текстурной карты. В этом случае меняется не столько цвет, сколько геометрия поверхности: узлы сетки во время рендеринга смещаются в соответствии с текстурной картой профиля.
Новая черта версии 2.0 – процедурные 2D- и 30-текстуры. Они лишены эффекта периодичности, свойственного обычным текстурам при многократном повторении их на поверхности.
Везде, где в шейдерах применяются текстурные карты, можно вместо статических текстур использовать avi- и flc-файлы и последовательности статических кадров. Вместе с комбинированием разных шейдеров это открывает исключительно широкие возможности для создания анимированных материалов и эффектов.
Библиотека пакета содержит несколько сотен материалов и текстур.
Стандартные средства и их расширения
В любом 30-пакете должен присутствовать «джентльменский» набор стандартных средств для моделирования освещения, теней и т. д. World Builder позволяет анимировать любой числовой параметр модели. Для этого достаточно перейти в нужный кадр, задать новые параметры, и в соответствующем режиме автоматически будет создан ключевой кадр.
Анимация параметров процедурных моделей позволяет моделировать смену времени суток и времени года. Вместе с процедурной анимацией травы можно моделировать порывы ветра или совмещать рост травы с ее • колыханием на ветру.
Можно анимировать даже параметры карты теней. (Карта теней используется в приближенном методе построения теней объектов. Их изображение вместе с информацией о глубине создается и сохраняется перед рендерингом сцены. Этот метод вычисления затененной части пространства грубее, чем «честный» ray-tracing, но гораздо быстрее.) Например, можно перемещать теневую карту вслед за движущимся объектом, что позволяет сильно сэкономить на ее разрешении. Кроме того, для одного источника света можно создать произвольное количество теневых карт, что также позволяет рационально использовать память и добиваться максимально реалистических результатов.
Кроме традиционных камер в версии 2.0 добавлены панорамы: круговая и кубическая в стиле QuickTime VR. Круговая панорама проецирует сцену на боковую поверхность цилиндра и незаменима при создании прокручиваемого кругового фона для игровых приложений.
В кубической панораме изображение проецируется на поверхность куба. С помощью кубической панорамы можно добиваться максимальной иллюзии погружения, поскольку направление взгляда при воспроизведении фильма ничем не ограничено.
Стоит упомянуть и тот факт, что пакет поддерживает практически все популярные графические форматы, а результат рендеринга может быть записан сразу в нескольких форматах. Как и большинство профессиональных пакетов, World Builder 2.0 имеет открытую архитектуру и допускает создание модулей расширения. Благодаря этому пользователи могут дополнять пакет новыми специфическими алгоритмами визуализации, процедурными моделями 30-объектов, анимацией или видеоэффектами.
Импорт и экспорт
Как уже упоминалось, ценность ландшафтного пакета невелика, если он лишен средств импорта и экспорта. Версия 1.0 позволяла обмениваться файлами в формате 3ds, сохраняя информацию о материалах. Благодаря этому импорт архитектуры, скажем, модели замка в World Builder не составлял труда.
Если модель героя сделана в технологии body parts (т. е. составлена из отдельных жестких частей, соединенных шарнирно), то импорт vue-файла из 3DStudio вместе с моделью позволяет легко получить в World Builder'e анимированного героя. Модель дракона в той же технологии была бы менее естественна, и для нее лучше подходит сплошная деформируемая сетка. Деформации сетки World Builder напрямую импортировать пока не может, но позволяет поместить изображение дракона в ландшафт на этапе постпроцесса с помощью совмещения z-буферов. (Z-буфер отличается от обычного растрового изображения дополнительной информацией о расстоянии до видимой части объекта, сопровождающей каждый пиксел.) С World Builder'OM поставляется модуль расширения для 3DS-tudio, осуществляющий композицию z-буферов.
Добавим, что World Builder также импортирует данные в формате Vista Pro DEM и USGS DEM, т. е. открыт путь к импорту оцифрованных реальных ландшафтов.
Интерфейс пользователя
Интерфейс обеих версий пакета полностью соответствует современным стандартам. Он интуитивно понятен и прост в обращении.
Набор основных инструментов версии 2.0 по составу, положению на экране и функциональности близок к 3DStudio Max.
Научиться работать с пакетом очень легко. В версии 1.0 набор online демонстраций, запускаемых прямо во время сеанса, описывает по шагам все основные приемы работы с программой. В принципе, можно даже не читать руководство, качество которого, кстати, удовлетворит самого взыскательного пользователя. Если что-то забыто по ходу дела, то соответствующую демонстрацию можно найти и запустить в считанные секунды.
World Builder предлагает пользователю новый метод ускоренной работы с 30-графикой – дифференциальное проектирование. Обычно добавления в сцену происходят локально: здесь поменяли материал, там подвинули объект или добавили новый. В большинстве пакетов после этого придется «рендерить» заново всю сцену. Идея дифференциального проектирования состоит в сохранении в z-буфере просчитанной части сцены. Добавляемый в сцену объект перемещается и раскрашивается на фоне z-буфера. За счет этого достигается высокая точность подбора материалов, положения и ориентации объекта. Преимущество такого подхода перед независимым модулем редактирования материалов принципиальное, так как цветовой баланс сцены получается несравненно точнее и достигается быстрее.

Типичный сеанс работы в программе выглядит как чередование шагов дифференциального проектирования. Практически все сцены, иллюстрирующие статью, построены с использованием этой технологии.
Дифференциальное проектирование помогает при разработке, но никак не сказывается на скорости финального рендеринга. Применение специального z-буфера в версии 2.0 значительно ускоряет визуализацию сложных сцен. Время просчета в обычных ЗD-пакетах, использующих стандартные алгоритмы рендеринга, катастрофически увеличивается с ростом сложности сцены. В версии 1.0 время просчета линейно изменялось в зависимости с ростом числа объектов. Для версии 2.0 этот рост гораздо медленнее.
Для удаленных объектов, трехмерность которых не столь существенна, появилась возможность использовать двумерные ширмы (flip-board). Отличить ширму от трехмерного объекта на большом расстоянии практически невозможно, а скорость рендеринга заметно повышается. (Кстати, ширмы – единственный способ представления объектов в пакете World Construction Set, ближайшем аналоге World Builder'a для PC.)
Для ускорения разработки в новой версии добавлено универсальное окно предварительно просмотра, в котором можно увидеть редактируемый или тестовый объект вместе с редактируемым материалом. Объект в окне виден в том же положении, освещении и прочих условиях, в каких он существует в сцене. В окне предварительного просмотра можно задавать любой фон и даже использовать z-буфер с изображением сцены.
Наконец, в версии 2.0 объем библиотек намного больше, чем в предыдущей. Появились архитектурные объекты (замки, дома, мосты, хижины и пр.), расширена библиотека ландшафтных форм, появились новые растения, текстуры (в том числе процедурные), новые камни. Увеличение библиотек поможет сократить время разработки новых проектов и вдохновить пользователей на эксперименты. По понятным причинам источник моделей для ландшафтного редактора неисчерпаем. Очевидно, что «финальная» версия такого пакета в принципе не может быть создана, так как направлений развития больше, чем может охватить любой коллектив.
Более подробную информацию вы можете найти в Интернете по адресам http:\\www.animatek.com(«AHHMaTeK») и http:\\www.digimation.com (фирма Digimation, издатель пакета World Builder).
{НАЧАЛО ВРЕЗКИ}
Российская компьютерная графика, неизвестная в России
Это немного грустная и очень «русская» история о том, как наши программисты, организованные западным «мессией», создают миры, перед которыми бледнеет Зазеркалье Алисы. Наукоемкие компьютерные технологии рождают подлинное искусство, затмевающее и фотографию, и кино. Обозреватели западных компьютерных журналов удивляются тому, что сотни тысяч объектов высокого качества с десятками миллионов деталей «живут» и движутся на 486-м компьютере с 8 Мбайт памяти. «Российские программисты, — можно прочесть в некоторых статьях, — очевидно, последние, кто придает такое значение коду своих программ, видимо, они не имеют доступа к лучшему оборудованию...» И тем обиднее, что в нашей стране практически не знают об описываемом пакете, как и обо всем классе таких программ.
Процедурное моделирование и так называемые системы частиц (Particle Systems) создают из «воображаемых» объектов миры, подчиняющиеся законам, заложенным в программе. Причем изображение может жить и само по себе, и следовать движению камеры. Камера приближается к пучку травы: становятся различимы все более и более мелкие детали; они добавляются постепенно, плавно увеличиваются... А если отойти от травинки подальше, то она сливается с фоном. При этом вода течет, трава колышется, облака плывут... Словом, создается полное ощущение реальности видимого на экране мира. Необычность данной публикации в том, что пакет представляет сам разработчик. Причем повествование ведет человек, причастный именно к математике проекта, к его «начинке». Я намеренно сократил описание интерфейса программы, выполненного, впрочем, на самом современном уровне, чтобы подчеркнуть значимость внутреннего наполнения продукта, широту применяемых технологий (в этом пакете используется большинство современных технологий компьютерной графики), дать возможность читателю заглянуть на «кухню» и понаблюдать за работой создателей ПО.
Олег Татарников
{КОНЕЦ ВРЕЗКИ}