Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Более сложные сцены в виртуальном мире






Обычно сцены бывают более сложными, чем выше рассмотренные. Сложность сцен может быть обусловлена:

- большей сложностью поверхности трехмерных объектов, чем те примитивы, которые были рассмотрены в предыдущем разделе;

- наличием в сцене не одного, а большого количества объектов,

а также рядом других факторов.

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

Рис.2

 

Для описания поверхностей объектов создаются два массива. В первом массиве записываются координаты вершин многоугольников, формирующих эти грани, а во втором массиве для каждой грани записываются номера вершин, из которых она сформирована. Ниже приводится код, описывающий геометрический объект Pyramid01 (Пирамида), расположенный в начале координат и окрашенный в красный цвет.

 

#VRML V2.0 utf8

# Produced by 3D Studio MAX VRML97 exporter, Version 7, Revision 0, 65

# Date: Tue Aug 15 14: 35: 51 2006

 

DEF Pyramid01 Transform {

translation 0 0 0

children [

Shape {

appearance Appearance {

material Material {

diffuseColor 1 0 0

}

}

# Начало поля geometry (геометрия) узла Shape, которое определяет форму объекта.

geometry DEF Pyramid01-FACES IndexedFaceSet {

coord DEF Pyramid01-COORD Coordinate { point [

0 42.61 0, -31.62 0 27.84, 31.62 0 27.84, 31.62 0 -27.84, -31.62 0 -27.84,

0 0 0]

}

coordIndex [

0, 1, 2, -1, 0, 2, 3, -1, 0, 3, 4, -1, 0, 4, 1, -1, 1, 5, 2, -1,

2, 5, 3, -1, 3, 5, 4, -1, 4, 5, 1, -1]

}

# Конец поля geometry (геометрия) узла Shape, которое определяет форму объекта.

}

]

}

 

Сравнивая коды описывающие сферу, которые приведены в начале предыдущего раздела, с кодами, описывающими пирамиду, видим, что они отличаются только строением поля geometry (геометрия) узла Shape. В первом случае браузеру указывается, что нужно построить сферу с заданным радиусом, все остальное, т.е. расчет полигональной сетки, он делает самостоятельно. Во втором случае браузеру задаются координаты вершин полигональной сетки полем point, и, кроме того, полем coordIndex указываются индексы (номера) вершин, которыми формируется каждая грань. При записи координат вершин, как это видно из примера, каждая из координат отделяется от соседней координаты пробелом, а группы, состоящие из трех координат, отделяются друг от друга запятыми. При записи индексов (номеров) координат в поле coordIndex каждый индекс отделяется от соседнего индекса запятой с пробелом, причем группа индексов, описывающих грань (полигон), завершается числом (меткой) -1.

При внимательном рассмотрении приведенного кода читатель обнаружит, что поле geometry включает в себя два узла.

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

 

#VRML V2.0 utf8

# Produced by 3D Studio MAX VRML97 exporter, Version 7, Revision 0, 65

# Date: Tue Aug 15 16: 44: 15 2006

 

# Описание куба

DEF Box01 Transform {

translation 66.32 0 0.3436

rotation 0 1 0 -0.7808

children [

Transform {

translation 0 0 0

children [

Shape {

appearance Appearance {

material Material {

diffuseColor 0 1 0

}

}

geometry Box { size 40.7 40.7 40.7 }

}

] }

]

}

 

# Описание сферы

DEF Sphere01 Transform {

translation -40.89 0 -2.405

children [

Shape {

appearance Appearance {

material Material {

diffuseColor 1 0 0

}

}

geometry Sphere { radius 23.83 }

}

]

}

 

В этом примере следует обратить внимание на то, что при описании куба появилось новое поле rotation со значением 0 1 0 -0.7808. Это поле показывает, как повернут куб. Первые три значения поля представляют собой вещественные числа, которые задают вектор нормали, относительно которого происходит вращение, последнее число представляет собой угол поворота в радианах.

Коды, описывающие другие геометрические объекты, могут быть легко получены следующим образом. Сначала в редакторе 3Ds max создается объект, затем этот объект экспортируется в формате VRML, а затем его код читается с помощью приложения Notepad (Блокнот) Windows.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.