Архивы: по дате | по разделам | по авторам

Этот плоский трехмерный мир

Архив
автор : Серж Скаут   09.02.1999

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

   Все существующие методы создания ВР можно разделить на две большие группы. К первой относятся миры, "картинка" которых просчитана заранее, записана в большой файл, откуда и выдается на-гора потребителю. Особенностью метода является то, что просчет трехмерного мира проводится фирмой-производителем, а просмотр - непосредственно пользователем. Каковы достоинства этого подхода? Заранее просчитанный ролик может воспроизводиться даже на медленных системах (примерно так же, как воспроизводятся видеофайлы), обладать весьма высокой деталировкой и проработанностью, а значит, и реализмом (это зависит уже только от мощности компьютерного парка создателей ролика), и просматриваться стандартными средствами. Одним из наиболее распространенных примеров такой технологии является QuickTime VR. К недостаткам этого подхода относится в первую очередь большой объем конечного файла (как минимум - несколько сотен килобайт), представляющего собой, по сути, несколько видеороликов, просчитанных с разных точек виртуального помещения и увязанных между собой, а также псевдосвобода перемещения по этому мирку - траектория движения наблюдателя во многом определяется создателями ролика.

   Другая методика прекрасно известна всем игрунам. Суть ее в том, что отдельно пишется 3D-engine, предназначенный для воспроизведения трехмерной ВР, после чего по определенному алгоритму создается сценарий - программа, описывающая геометрию мира и указывающая, где какие текстуры наложены, где какие светильники висят, откуда рычат страшные звери и журчат ручейки и так далее. Engine берет на себя все заботы по просчету геометрии, натягиванию текстур, расчету освещения, пространственному воссозданию звука, отработке перемещений по миру и прочие технические нюансы. Естественно, в этом случае качество воспроизведения напрямую зависит от производительности engine и быстродействия процессора, а объем файла сценария - от сложности мира и от того, как хранятся текстуры, звуки, персонажи и другие красивости: интегрированно, вместе с картой или же в отдельных файлах.

   По этому принципу в настоящее время строится большинство современных пространственных игр. Оказалось, что тот же принцип очень выгодно использовать для разработки виртуальной реальности под Internet: появилась возможность дать пользователю дополнительный модуль (plug-in) к браузеру, который нужно скачать лишь один раз, и за счет отделения описаний мира от текстур резко уменьшить объем передаваемой по тонюсенькому каналу информации. Более того, подобное разделение позволило начинать создавать мир до того, как загрузятся все необходимые текстуры и звуки: созданное пространство понемногу "проявляется", как фотография, по мере поступления дополнительной информации. Разумеется, и здесь есть свои недостатки. Во-первых, значительно возрастают требования к быстродействию компьютера пользователя, ведь именно на нем осуществляется весь просчет. Во-вторых, создаваемый мир, мягко говоря, очень сильно виртуален, и нужно обладать солидной фантазией и умением выдавать желаемое за действительное, чтобы назвать это реальностью. К сожалению, проблема здесь не в больших запросах к ресурсам компьютера ("Quake" ведь прекрасно работает!), а в малой пропускной способности каналов. Но есть спрос - есть и предложение.

   На протяжении долгого времени практически единственным методом создания подобных чудес было использование VRML. Этот язык позволяет строить очень сложные и деталированные миры, однако процесс создания VRML не так прост, как хочет казаться. Вам придется внимательно изучить синтаксис языка, научиться моделлингу и потратить немало времени, создавая модель мира. В то же время далеко не всегда требуются все те возможности, которые предоставляет VRML.

   Что же делать, если трехмерности на своем сайте очень хочется, а изучать 3D-моделирование и программирование VRML лень или нет времени? Для упрощения процесса построения трехмерных миров группа энтузиастов разработала новый язык разметки виртуальной реальности и создала дополнительные модули для наиболее популярных браузеров. Язык этот называется 3DML (3 Dimensional Markup Language), а официальный сайт разработчиков расположен по адресу www.flatland.com.

   Принципы 3DML
   Что же собой представляет новый язык? Как ясно уже из названия, синтаксис языка предельно приближен к синтаксису HTML. Каждый трехмерный мир описывается отдельным файлом и может быть либо независимо открыт в браузере с помощью дополнительного модуля, называемого Flatland Rover, либо встроен в существующую HTML-страницу с помощью тега <embed>.

   Flatland Rover на настоящий момент существует в вариантах для браузеров IE, Netscape и AOL, но только для Windows-систем, и занимает всего 700 Кбайт. При этом предоставляемые им возможности весьма и весьма широки, а быстродействия самого engine достаточно, чтобы крутить ВР на младших Pentium-машинах. К его несомненным достоинствам следует отнести поддержку 3D-акселераторов, богатый выбор типов источников света, возможность создания точечных источников звука, реагирующих на ваше перемещение в пространстве, поддержку прозрачных и анимированных текстур. Миры, называемые согласно идеологии Flatland спотами (spots), обладают предопределенными объектами типа "земля" и "небо", источником общего освещения (можно сымитировать, к примеру, Солнце или Луну) и гравитацией. Перемещение по миру осуществляется либо клавиатурными стрелками, либо мышью и полностью идентично методике перемещения в "Doom". Правая кнопка мыши позволяет вам "покрутить головой" вправо-влево и вверх-вниз.

   Общий принцип построения миров прост до безобразия и напоминает игру в конструктор Lego. Вся сцена строится из большого количества блоков размером 256х256х256 пикселов. Типы блоков предопределены, и в вашем распоряжении есть два набора (в общей сложности 76 штук) "кубиков" с разной геометрией. Есть кубики-стены, кубики-лестницы, кубики-потолки, кубики-двери и даже кубики-деревья. Все они обладают целым рядом настраиваемых свойств. Кроме того, на blocksets.flatland.com/unofficial расположены еще три "неофициальных" набора блоков, однако что за кубики в этих наборах - неясно. Описаний к ним я найти не смог, даже прокопав весь сайт программкой-шпионом.

   Мир описывается поуровневой картой, каждой ячейке которой соответствует один блок. В качестве описания блоков используются: ASCII-символы! Вот так, к примеру, выглядит простейший уровень:
<LEVEL NUMBER="1">
###...###
#.......#
#.......#
#.......#
#.......#
#.......#
#.......#
#.......#
#########
</LEVEL>
   Мне это сразу напомнило первые школьные эксперименты по написанию игрушек в псевдографике, где злые монстры, отображаемые "собакой", носились за добрым, но неуклюжим иксом. Стены там тоже были из чего-то такого сделаны...

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

   Еще одна заслуга разработчиков состоит в прекрасно написанном и удобном руководстве по написанию 3DML, включающем как пошаговое рассмотрение всех элементов трехмерного мира, так и полный список тегов и блоков 3DML с иллюстрациями. Руководство это, объемом около 1 Мбайт, можно скачать с того же сайта. Там же можно получить и редактор 3DML с полным синтаксисом всех тегов и их автоподстановкой в текст 3DML-файла.

   Синтаксис 3DML
   Файл 3DML, как и файл HTML, состоит из блока заголовка и собственно тела. В заголовке определяется название окна, описывается расположение наборов блоков, размеры карты мира, цвет и текстура для земли и неба, уровень общего освещения и фоновый звук. Кроме этого, в заголовке можно описать постоянный источник света типа Солнца или Луны с приданием ему соответствующей текстуры.

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

   После того как все блоки определены, строятся сами карты уровней. На этом работа заканчивается...

   Стоит учесть, что текстуры блоков грузятся в том же порядке, в каком они описаны в 3DML-файле, поэтому порядок следования описателей блоков очень важен: начинать следует с близких ко входу объектов. При этом Rover не ожидает окончания загрузки, а сразу формирует трехмерное пространство, заполняя блоки либо цветом, либо текстурой по умолчанию. Каждая сторона блока может быть обтянута собственной текстурой, при этом можно использовать как заливку (tiling), так и растяжение (stretching) текстур. Для создания движущихся заливок достаточно использовать анимированный GIF.

   Javascript в 3DML-файлах пока не поддерживается, и единственным местом, где можно использовать команды Javascript, являются ссылки.

   Ложка дегтя
   Конечно, есть у 3DML и недостатки. Так, не существует редактора для блоков (на сайте мне вежливо ответили, что "процесс идет, но конца пока не видно"), и вам придется пользоваться тем, что есть. Правда, библиотека пресетов весьма велика, а на крайний случай есть возможность создать трехмерный спрайт с описанием шести сторон ограничивающего его куба. Вторым существенным, на мой взгляд, недостатком является большой размер блока: с меньшими "кубиками" можно было бы задуматься и о трехмерном интерфейсе для сайта, ведь каждому блоку можно присвоить свою текстуру и описать как ссылку. Таким образом, возможности моделирования мира в 3DML на порядок слабее аналогичных в VRML, однако это с лихвой компенсируется тем, что изучить 3DML и создать свой мир можно буквально за считанные часы.

   К недостаткам самого Rover'a следует отнести отсутствие поддержки TrueColor (в настоящий момент он может работать максимум в HiColor - 64К цветов), не слишком удобную навигацию - пока что о плавном перемещении не идет и речи, все движения происходят дискретно, по блокам, и перемещаться вы можете только в одном из восьми направлений - вправо-влево, вперед-назад и под углом 45њ. При "повороте головы" по правой кнопке не происходит вращения "тела", и последующее движение вперед может, к вашему удивлению, отправить вас совсем в другом направлении.

   В целом 3DML-миры, конечно, не дотягивают до уровня современных 3D-игр и выглядят примерно так же, как уровни старого доброго "Doom".

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



© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.