Научная статья на тему 'Математическое моделирование преобразований в трёхмерном пространстве для проектирования дружественных интерфейсов'

Математическое моделирование преобразований в трёхмерном пространстве для проектирования дружественных интерфейсов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
86
16
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Математическое моделирование преобразований в трёхмерном пространстве для проектирования дружественных интерфейсов»

Математическое моделирование преобразований в трёхмерном пространстве для проектирования дружественных интерфейсов

автор: Я. В. Ахромов Московский Институт Электроники и Математики (Технический Университет)

кафедра "ИиМГ - Дизайн" руководитель: к.т.н. доц. В. А. Фомичёв, кафедра МОСОИиУ e-mail: [email protected]

Введение

Появление трёхмерной графики в сети Интернет берёт своё начало ещё с 1994 года, когда на Второй международной конференции по WWW была представлена первая версия знаменитого проектирования виртуальной реальности VRML (Virtual Reality (Markup) Modeling Language). Спецификация данного языка составлена таким образом, что с помощью него можно строить трехмерные сцены, так называемые виртуальные миры, в которых пользователь или виртуальный путешественник, может спокойно перемещаться и взаимодействовать с окружающими его виртуальными предметами. В 1996 году появился VRML 2.0 -версия языка VRML с более мощным аппаратом возможностей и средств. Практически был создан язык, по стандарту языков разметки текста (markup), как и HTML, но для описания трёхмерных сцен. Программы на таком языке можно создавать в обычных текстовых редакторах, например Microsoft Windows Notepad. Единственное, что необходимо для просмотра таких миров - это наличие на компьютере пользователя специального программного расширения (модуля) поддержки VRML, например Cortona Browser или CosmoPlayer. Одним из наиболее привлекательных примеров построения виртуальных миров в сети Интернет, является недавно созданный портал, в честь трехсотлетия города Санкт-Петербург - www.300.ru. К сожалению, пока язык VRML не является на столько популярным, как и HTML, и на это есть несколько причин:

1) Лучшее применение VRML - это создание виртуальных миров с набором определённых объектов и ландшафта, на основании существующей в реальной жизни местности. Вот почему, в сети Интернет существует достаточное количество VRML миров - прототипов реальных объектов. Их применение - туристический бизнес либо просто в познавательных целях. Так, например, создаются

виртуальные картинные галереи различных музеев или знаменитые площади мировых столиц.

2) Язык VRML сам по себе не содержит достаточного набора средств для создания интерактивных виртуальных приложений. Для этого отдельно пишутся сценарии на языке Java Script. Это создает определённое неудобство в ёмкости и компактности всего проекта.

3) Для просмотра VRML необходим специальный модуль поддержки VRML миров, который до сих пор не является в достаточной степени распространенным.

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

Однако, идея реализации трёхмерных веб-сайтов, с трёхмерным интерфейсом, была поддержана также разработчиками программы Swift 3D. Здесь, делается попытка создавать трёхмерную графику на основе механизма кривых Безье, т.е. векторной обработкой. Как известно, пионером в области представления и обработки векторной графики в сети Интернет является Macromedia Flash, поэтому Swift 3D - является специальным 3D графическим пакетом одно из основных применений которого заключается в создании сайтов с трёхмерным контентом в формате shock wave (SWF) т.е. Flash. Технология создания такого рода трёхмерной графики достаточно проста, здесь мы создаем всю необходимую нам трехмерную графику в Swift 3D, а затем импортируем её во Flash. Также, стоит отметить, что Swift 3D не является единственным способом в подобного рода реализации трехмерных сайтов, существует также возможность экспорта трехмерной графики в векторном формате, т.е. приемлемом для Flash, в 3D Studio MAX и MAYA. В

результате мы получаем достаточно емкое интернет приложение, т.к. вся работа выполняется средствами векторной графики, которое работает как обычный Flash-сайт, но в 3D. Для активного внедрения интерактивности в такой сайт, необходима проработка совместимости импортированной во Flash трехмерной графики и сценариев, написанных на языке Action Script. Здесь, стоит отметить, что фактически мы имеем дело с предопределённой анимацией или статикой трехмерных объектов изначально сделанных в сторонних графических пакетах (Swift 3D, 3D Studio MAX, MAYA), и написанием сценария на языке Action Script, способного управлять такой анимацией или изменять статические объекты. Объем таких сайтов получается достаточно небольшим, однако это при том, если анимации не так много. При создании большого сайта или более сложной анимации может получиться достаточно большое приложение. Возникает вопрос: существует ли какая-либо альтернатива всем перечисленным выше технологиям и которая способна наиболее лучшим образом создавать трехмерную графику для последующего её использования в качестве интерфейса и навигации сайта. Ответ -API.

Трехмерная графика средствами API

Прикладной программный интерфейс (API) позволяет в режиме run-time

отображать не только двумерные объекты, но также и трёхмерные. Здесь, необходимая нам трёхмерная графика создается программно во Flash, без подключения каких-либо сторонних графических пакетов. В результате получается файл размером несколько десятков килобайт (текстовый программный код), способный в формате swf не только отображать трехмерную графику, но и полностью управлять её содержимым. Например, если задастся целью построить трехмерный куб, вращающейся вокруг своей оси в зависимости от нажатия клавиш управления направлением вращения с клавиатуры, можно воспользоваться программой Swift 3D. Здесь мы отдельно создаем трехмерный ролик вращающегося куба, затем импортируем его во Flash, затем пишем сценарий на языке Action Script управления воспроизведением такого ролика. Однако, если нужно, чтобы при этом куб изменял свои размеры, цвет, характер вращения -описанный выше метод реализации не подходит. Для этого придется создавать несколько роликов с предопределенным характером анимации в каждом из них.

При этом получаем файл едва пригодный для распространения в сети Интернет. Здесь даже речь не идёт о создании трехмерных сцен движения пользователя, формата 3D Action. Однако, если использовать технологию API - то всё это становится вполне возможным. Одним из наиболее ярких примеров использования API в качестве трехмерного "движка" можно найти на сайте www.mx3D.com. Основная сложность в создании подобного рода приложения заключается в том, что здесь необходимо создавать трехмерную графику "с нуля", т.е. на основе программирования целого математического аппарата, а не просто описания геометрических фигур, как в языке VRML, и тем более без визуального контроля всей сцены как в 3D Studio или Swift 3D. Но, здесь цель оправдывает все затраченные силы и средства, т.к. в результате мы можем создать полноценный трехмерный интерфейс с максимальной степенью интерактивности.

Необходимость третей координаты

Когда мы работаем во Flash, и строим интерфейсы для сайтов и интернет

магазинов мы работаем в двумерном пространстве, и все наши расчеты строятся относительно двух координат X и Y. Однако, когда речь идёт о трехмерной графике, нам необходимо получить третью координату Z. Каким образом мы можем это сделать, находясь в двумерном пространстве Flash. Рассмотрим следующий рисунок.

Здесь показаны две вершины 1 и 2, при этом можно видеть, что несмотря на одинаковые значения X и Y этих вершин, они имеют различные Z координаты.

Вершина 1 находится от зрителя дальше, чем вершина 2, однако так называемое моделирование глубины во Flash определяет значение Z координаты вершины 1 меньше значения Z координаты вершины 2, т.к. вершина 2 удалена дальше от центра, чем вершина 1. С точки зрения формализации данного закона распределения глубин, можно записать формулу: X = X * dist / (dist - Z); Y = Y * dist / (dist - Z); Где dist - это расстояние между зрителем и экраном. Фактически изменение данного параметра ведёт к различным искажениям перспективы. Вообще стоит отметить, что перспективное изображение возникает при центральном проецировании, т.е. когда центр проецирования (глаз наблюдателя) находится на конечном расстоянии от экрана. Данное высказывание можно определить через построение определенной матрицы.

"10 0 0 0 10 0 0 0 0 -1/с . 0 0 0 1

Данная матрица называется матрицей перспективного преобразования с проецированием на плоскость XOY. Где С (0,0,c) - точка расположения наблюдателя, центр проецирования. Плоскость проецирования, т.е. экран, совпадает с координатной плоскостью XOY. Поскольку представление трехмерной графики требует применение математического аппарата матриц, дадим краткое определение самой матрицы. Матрицей называется прямоугольная таблица размером (m x n), состоящая из m строк и n столбцов, элементы матрицы обозначаются как a ij, где i и j обозначают номера строк и столбцов соответственно. Например:

[А] =

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

Возникает вопрос: как можно перейти от матрицы перспективного преобразования с проецированием на плоскость XOY к нашей формуле вычисления глубины. Для этого определим точку в трехмерном пространстве как четырехмерный вектор [X, Y, Z, Н], где Х^^ - координаты точки, Н - длина вектора. Примем Н в качестве 1, чтобы получить единичный вектор. Получается, что нам необходимо перемножить две матрицы.

В этом случае:

Х=х; Y=y; Z=0; H=z*(-1^)+1=(c-z)^

Теперь примем c=dist т.к. Z координата точки расположения наблюдателя и расстояние между зрителем и экраном одно и тоже. Следовательно: H=(dist-z)/dist;

Последнее, что осталось сделать это воспользоваться преобразованием из

однородных координат, т.е.: [X Y Z 1] = [X/H Y/H Z/H 1]

Получается, что:

X=X/((dist-z)/dist)=X*dist/(dist-z);

Y=Y/((dist-z)/dist)=Y*dist/(dist-z);

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

3D API в приложении к электронной коммерции

В свете развития Интернет технологий, возникает вопрос, каким образом

весь этот арсенал трехмерного моделирования средствами Macromedia Flash MX API можно применить в электронной коммерции. Речь идёт о фактическом применении трехмерной графики в режиме run-time в области электронной коммерции, например интернет-магазин с трехмерным интерфейсом расположения товаров, построение трехмерных графиков и диаграмм на при выводе статистической информации на различных порталах и ворталах, и т.п. Кончено, пока таких проектов в сети Интернет встречается очень мало, однако API графика постепенно набирает обороты и получает широкое распространение. Одним из таких примеров является сайт www.b-gear.com или www.b-gear.ru - поисковая система оригинальных идей и решений.

Здесь реализована концепция поисковой системы с трехмерным интерфейсом. Вообще, поиск сам по себе является неотъемлемым атрибутом любого веб-сайта в области электронной коммерции. Сейчас трудно представить деловой портал или интернет-магазин без возможности поиска необходимой информации. Однако здесь мы имеем дело с поиском в трехмерном интерфейсе. Главное, что необходимо помнить перед началом работы над трехмерной API графикой, насколько действительно такая графика вам необходима. Дело в том, что главная пока проблема API - это сильная зависимость от возможностей процессора на компьютере пользователя. Если вы планируете создавать статичную трехмерную графику, то использование API просто излишне, для этого достаточно средств Swift 3D или 3D Studio MAX. Если вы планируете использовать предопределенную анимацию и минимум интерактивности, то можно также обойтись без API. Однако, если вы собираетесь создавать трехмерный интерфейс с возможностями API технологии, то сразу необходимо оценить возможную нагрузку на процессор всего вашего приложения. Фактически получается парадоксальная ситуация: раньше на заре использования и распространения Flash, многие, включая известного Якоба Нильсена, ругали Flash за то, что необходимо

было долго скачивать большие Flash фильмы (особенно на маленьких модемных скоростях), однако после закачки такие фильмы работали вполне нормально; сейчас наоборот, Flash API-фильм как правило занимает очень мало места, и закачивается на компьютер пользователя мгновенно, однако если у вас слабый процессор, то вы едва сможете что-либо посмотреть. Есть ли выход из этой сложившейся ситуации? Да, если мы учтем несколько режимов отображения API графики, на вашем сайте, для быстрых компьютеров, средних и медленных. Конечно, это не всегда можно сделать быстро о оперативно, однако такая забота о пользователях, несомненно, увеличит популярность вашего сайта. Так, сайт Brain Gear сделан на 99% средствами API графики, более того его размер 34 килобайта!

Заключение

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

i Надоели баннеры? Вы всегда можете отключить рекламу.