Представление сложных геометрических объектов

Представление сложных геометрических объектов

Цель: изучение представления сложных геометрических объектов на языке VRML с использованием узлов PointSet, IndexedLineSet, IndexedFaceSet, ElevationGrid, Extrusion и связанных с ними узлов Color, Coordinate, Normal, TextureCoordinate.

 

Сложные геометрические объекты

В качестве значения поля geometry(геометрия) узла Shape(форма) можно использовать один из следующих узлов, позволяющих создавать сложные геометрические объекты:

 

1. PointSet (Набор точек) – позволяет задать набор точек определённого цвета в пространстве.

Синтаксис узла:

 

PointSet {

exposedField    SFNode          color                   NULL

#цвет

exposedField    SFNode          coord                   NULL

#координаты

}

 

Рассмотрим ещё 2 узла, связанные с узлом PointSet – Color и Coordinate.

 

Color (Цвет).

Синтаксис узла:

 

Color {

exposedField    MFColor         color                   []

}

 

С помощью этого узла можно описать значение цвета для каждой точки (последовательно задаётся цвет каждой точки по порядку).

 

Coordinate (Коодинаты)

Синтаксис узла:

 

Coordinate {

exposedField    MFVec3f         point                   []

}

 

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

 

Точки не участвуют в проверке на столкновения.

 

Пример (файл 2-3.wrl) : создаются 8 разноцветных точек в пространстве.

 

#VRML V2.0 utf8

 

Shape{

appearance Appearance {

# можно задать прозрачность точек и цвета

# цвет каждой из точек можно определить непосредственно в самом                 # узле PointSet, как показано ниже

# текстуры на точки наложить нельзя

}

geometry PointSet {

color Color { #цвет каждой из 8 точек соответственно

color [1 0 0, 0 1 0, 0 0 1, 0 1 1,

1 0 1, 1 1 0, 1 1 1, 0.5 0.5 0]

}

coord Coordinate { # координата каждой из 8 точек

point [       -2 0 2, 2 0 2, 2 0 -2, -2 0 –2,

-2 4 2, 2 4 2, 2 4 -2, -2 4 -2]

}

}

}

 

 

2. IndexedLineSet (Индексированный набор линий) – позволяет определить набор ломаных линий (которые могут образовывать многоугольники) определённого цвета в пространстве. Многоугольники не закрашены (состоят из линий).

Синтаксис узла:

 

IndexedLineSet {

eventIn         MFInt32         set_colorIndex

eventIn         MFInt32         set_coordIndex

exposedField    SFNode          color                   NULL

exposedField    SFNode          coord                   NULL

field           MFInt32         colorIndex              []

field           SFBool          colorPerVertex          TRUE

field           MFInt32         coordIndex              []

}

 

Назначение полей:

  • coord – определяет координаты вершин ломаных линий (так же, как в узле PointSet)
  • coordIndex – определяет последовательность обхода координат из coord для построения ломаных линий. Нумерация координат в coord начинается с 0. Если описание одной из ломаных линий закончено, ставится маркер окончания ломаной линии (–1) —  см. пример.
  • colorPerVertex – если

Комментарии к записи Представление сложных геометрических объектов отключены

Рубрика: Программирование

Обсуждение закрыто.