Проблемы визуализации трехмерных виртуальных миров в среде web

Проблемы визуализации трехмерных виртуальных миров в среде web

Р.М. Криштун,

аспирант кафедры информационных систем МГУП имени Ивана Федорова

Статья посвящена актуальной проблеме браузерных игр -визуализации трехмерных виртуальных миров. Представлен обзор литературы по предмету, Web-технологии для реализации трехмерной графики и обзор библиотеки «CooperUcht». Рассматривается основная проблема Web-игр - динамическая подгрузка частей сцены.

1. Введение

В XXI веке роль цифровой информации в жизни человека настолько возросла, что стала неотъемлемой частью жизни большинства людей. Кто-то пользуется оцифрованными данными для выполнения работы, у кого-то работа базируется на таких данных, некоторые используют их для информационного обогащения, но есть люди, которым информационные ресурсы помогают на время «сбежать от реальности». Уже много лет большой популярностью пользуются «виртуальные реальности». При помощи них человек может «перенестись» в другой мир - мир фантазий. В таких мирах человек может не только созерцать происходящее, но и влиять на ход событий. Самое распространенное применение технологии виртуальной реальности - компьютерные игры жанров Action, Arcade, RPG, Simulator и др. Создатели игр при помощи программного кода создают виртуальные миры, со своей историей и особенностями. Пользователю, в свою очередь, предлагается собственноручно изучить виртуальное отражение реальности в качестве точно так же созданного героя-прототипа.

В последствии такие же виртуальные миры перешли на просторы Wide World Web. Если раньше пользователи с различными операционными системами могли путешествовать по одним и тем же мирам только при условии наличия специальной портированной версии игры, то теперь эта проблема была отчасти решена.

Самый главный плюс web-приложений - кроссплатфор-менность. Абсолютно у всех есть браузер. Таким образом, для запуска приложения не требуется никакого специфического программного обеспечения. Другой важный плюс - удобное осуществление многопользо-вательности за счет клиент-серверной архитектуры. Ярким примером использования клиент-серверной архитектуры в подобных приложениях - ММОРПГ. «Многопользовательская ролевая онлайн-игра или ММОРПГ (англ. massively multiplayer online role-playing game, MMORPG) -(жанр онлайновых компьютерных ролевых игр ORPG), в которой большое количество игроков взаимодействуют друг с другом в виртуальном мире»[1]. В качестве клиента выступает специальное аппаратное приложение, которое подключается к общему серверу. Сервер передает на приложения-клиентов информацию об изменениях в виртуальном мире, а клиент в свою очередь осуществляет визуализацию мира с учетом переданных сервером изменений. На данный момент аудитория ММОРПГ составляет миллиарды людей. А если представить, что возможность окунуться в виртуальный мир не будет зависеть от того, какой компьютер перед пользователем и какое программное обеспечение на нем установлено, то число пользователей увеличится во много раз. Исследования показывают, что чем проще в освоении приложение (при сохранении функционала), тем больше людей проявляют к нему интерес.

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

«Родителями» такого вида игры стали MUDbi, которые пользовались большой популярностью в начале 90-х годов. Представляли собой небольшие текстовые игры без какого-либо графического сопровождения. На сегодняшний день онлайн игры не только имеют соответствующий интерфейс, но и обрели звуковое сопровождение, в том числе и звуковые эффекты. Да и существенное преимущество сегодняшних игр перед теми же MUDами заключается в том, что нет необходимости вводить команду, которую должен выполнять Ваш герой.

В настоящее время браузерные онлайн игры разрабатываются преимущественно на Flash-технологиях. Несмотря на широкое распространение данной области разработок, а также на постоянное обновление технологии, не каждая компания смогла добиться игры в режиме реального времени. Большинство современных браузерных проектов работают по системе fallout, но появились существенные рыв-

ки в разработке игр. Такие браузерные онлайн игры как Dark Orbit и Deepolis - одни из немногих, работающих в режиме реального времени. К сожалению, технологии Flash еще не позволяют создать игры, максимально приближенные к клиентским аналогам, за счет чего браузерные онлайн игры остаются в каком-то смысле примитивными, технологии WebGL в свою очередь позволяют сделать игры намного более реалистичными.

В последнее время создаваемые виртуальные миры ощутимо увеличились в масштабах, что породило проблему серьезной аппаратной зависимости приложений, которые их воспроизводили. Таким образом возник вопрос: каким образом можно спроектировать web-приложение таким образом, чтобы не пострадала скорость воспроизведения мира и тем самым не потерялась интерактивность? Ведь, если приложение будет иметь низкую скорость работы, то ощущение виртуальной реальности пропадет и приложение потеряет огромное количество пользователей.

2. Обзор литературы по предмету

В числе немногочисленной литературы по данной тематике можно выделить следующие книги:

1. В.П. Иванова и А.С. Батракова «Трехмерная компьютерная графика», 2008 г. В этой книге изложены главные принципы формирования трехмерных компьютерных изображений и рекомендации по прикладному применению трехмерной компьютерной графики: моделирование трехмерных сцен, архитектурное проектирование, распознавание образов, анимация и др. Представлена информация по программной поддержке геометрического моделирования, компьютерного синтеза изображений и примеры программ, реализованных на Турбо Паскале.

2. Том Миллер «Managed Direct X9. Программирование графики и игр», 2009 г. В данной книге рассмотрены как основы программирования 3D-графики, так и более сложные разделы, например, управление уровнями детализации mesh-объектов, использование высокоуровневого языка шейдеров и символьной анимации.

3. Andre LaMathe «Tricks of the 3d game programming gurus. Advanced 3D graphics and rasterization», 2011 г. В книге освещены различные аспекты разработки трехмерных игр, однако основное внимание уделяется вопросам программирования трехмерных игр - в частности, представлению трехмерных объектов, их визуализации с учетом свойств материала объектов, освещению, перспективам, а также таким специфическим вопросам трехмерной визуализации, как создание различных визуальных спецэффектов и т. п. В книге также рассматриваются многие сопутствующие вопросы - создание и применение звуковых

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

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

В качестве задач для исследования можно предложить:

• разработать методику динамической подгрузки больших трехмерных моделей;

• найти или спроектировать средства для реализации методики в среде web-технологий;

• реализовать библиотеку на базе найденных средств, осуществляющую работу разработанного метода.

3. Аналитическая часть

3.1. Web-технологии для реализации трехмерной

графики

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

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

Использование готового движка при разработке программы, сайта или другого продукта сокращает время разработки, позволяет уделить больше времени разработке других подсистем, например пользовательскому интерфейсу» [2]. Таким образом, используя движки можно намного быстрее написать необходимое приложение и затратить больше усилий на написание прикладного функционала.

Рис. 1. Скриншот с demo «Backyard Demo», созданной на CooperLicht

3.2. Обзор библиотеки «СоореШс^»

В процессе исследования были просмотрены несколько вариантов движков, работающих с трехмерной web-графикой. Одним из самых выдающихся из них является движок «Соорегис|-Ф>. Он был создан компанией АтЫега на базе технологии WebGL. При помощи этой технологии можно оперировать с текстурами объектов, светом, материалами, отражением, интерактивно создавая красивые динамические сцены (рис. 1).

На сайте разработчика представлены демоверсии работы движка. Это полноценные трехмерные сцены - небольшие виртуальные миры. Но уже на малых сценах видны недостатки этого движка. Даже считая то, что перед началом работы с демоверсией пришлось выждать несколько минут загрузки, приложение работало с большими задержками. Между изменением положения курсора мыши и отображением этого изменения проходило от 2 до 7 секунд. Это недопустимо, т. к. теряется одна из компонент реалистичности виртуального мира, а именно RealTiming.

3.3. Анализ проблемы

Основная проблема - динамическая подгрузка частей сцены. Необходимо осуществить ее таким образом, чтобы максимально разгрузить процессор в каждый отдельный момент времени. В популярной игре MineCraft, написанной на Java, для создания такой динамики используются так называемые чанки. Чанк - это часть бесконечной карты. Размеры одного чанка - 16 блоков шириной, 16 блоков длиной и 256 блоков глубиной. Это составляет 65 536 блоков. При открытии нового куска карты, генерируется и становится активным 81 чанк вокруг игрока. В многопользовательском режиме чанки загружаются в радиусе 10 от игрока (21*21 чанк). Радиус может быть сконфигурирован от 3 до 15. Связано это с мощностью оборудования и скоростью подключения. На этих чанках могут появляться предметы, может проявляться какая-то игровая деятельность, все остальные чанки в этот момент времени являются статическими и не обрабатываются процессором. При возвращении персонажа на чанк, в котором он уже находился, чанк восстанавливается из памяти, это предотвращает необходимость грузить его заново.

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

Для ускорения визуализации можно использовать следующие методы:

• взять за основу алгоритм подгрузки MineCraft;

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

• хранить не только высокополигональные модели, но и их низкополигональные копии. При отдалении камеры от моделей заменять высокополигональные модели на низкополигональные.

4. Заключение

Проблема портирования игровых приложений с одной операционной системы на другую до сих пор сильно распространена.

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

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

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

5. Библиографический список

1. Иванова А.П. Трехмерная компьютерная графика / В.П. Иванова и А.С. Батракова, 2008.

2. ТомМиллер. Managed Direct X9. Программирование графики и игр / Том Миллер, 2009.

3 Andre LaMathe «Tricks of the 3d game programming gurus. Advanced 3D graphics and rasterization», 2011.