Цель: изучение представления сложных геометрических объектов на языке 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 – если