Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
x3dom.doc
Скачиваний:
65
Добавлен:
02.04.2015
Размер:
5.22 Mб
Скачать

IndexedLineSet

Позволяет определить набор ломаных линий определённого цвета в пространстве. Линии не участвуют в проверке на столкновения.

В качестве дочерних включает узлы Coordinate и Color, которые содержат координаты точек и цвета в произвольном порядке. Для определения порядка построения ломаных линий из элементов массива и их раскраски используются поля coordIndex и colorIndex.

Описание полей:

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

colorIndex определяет последовательность применения значений элементов массива цветов к точкам или линиям.

colorPerVertex определяет, применяются ли цвета к линиям (false) или к точкам, интерполируясь по длине линии (true).

<IndexedLineSet coordIndex=''0 1 2 3 0 –1 2 6 5 1 –1''

colorIndex=''0 1 2 3 4 -1 5 6 0 1 -1''

colorPerVertex='true'>

<Coordinate 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''></Coordinate>

<Color color=''0 0 1, 0 1 0, 0 1 1, 1 0 0, 1 0 1, 1 1 0, 1 1 1''>

</IndexedLineSet>

Вместо задания узла Color, можно раскрасить все линии одинаково с использованием поля emissiveColor узла Material.

IndexedFaceSet

Служит для создания сложных геометрических фигур, состоящих из набора полигонов.

IndexedFaceSet : X3DComposedGeometryNode {

MFNode [in,out] attrib [] [X3DVertexAttributeNode]

SFNode [in,out] color NULL [X3DColorNode]

SFNode [in,out] coord NULL [X3DCoordinateNode]

SFNode [in,out] fogCoord NULL [FogCoordinate]

SFNode [in,out] normal NULL [X3DNormalNode]

SFNode [in,out] texCoord NULL [X3DTextureCoordinateNode]

SFBool [] ccw TRUE

MFInt32 [] colorIndex [] [0,∞) or -1

SFBool [] colorPerVertex TRUE

SFBool [] convex TRUE

MFInt32 [] coordIndex [] [0,∞) or -1

SFFloat [] creaseAngle 0 [0,∞)

MFInt32 [] normalIndex [] [0,∞) or -1

SFBool [] normalPerVertex TRUE

SFBool [] solid TRUE

MFInt32 [] texCoordIndex [] [-1,∞)

}

Описание полей:

  • normal - список нормалей (в качестве значения применяется дочерний узел Normal).

  • texCoord - применяется для нанесения текстуры.

  • ccw - если true, то видимые полигоны, перечисляемые в coordIndex, – это те, номера вершин у которых перечислены против часовой стрелки. Если ccw=”false”, то видимые полигоны это те, номера вершин которых перечислены по часовой стрелке (см. описание общих полей).

  • colorPerVertex - цвета соответствуют полигонам (если значение “false”) или вершинам (“true”) (см. описание общих полей).

  • convex - если в фигуре присутствуют невыпуклые (неплоские, самопересекающиеся) полигоны, то значением данного поля следует указать false (иначе результат работы браузера не определён) (см. описание общих полей).

  • coordIndex - соответствие вершин полигонам – список индексов координат вершин с маркером окончания (-1) для каждого полигона. Номера вершин для видимой поверхности перечисляются против часовой стрелки (если ccw “true”) если значение solid=”true”. Если значение solid=false (ccw=”true”), то поверхность видна с двух сторон. Замыкать координаты полигонов (совмещать конечную точку с начальной) необязательно, это осуществляется автоматически.

  • colorIndex – соответствие элементов массива цветов вершинам или полигонам (в зависимости от значения colorPerVertex).

  • creaseAngle – если не задан узел Normal, то браузер использует этот угол для вычисления того, как поверхность будет освещаться. В зависимости от значения этого поля у поверхности будет гладкое или негладкое затенение. Значение этого поля – угол, который определяет, как генерируются нормали по умолчанию. Если угол между геометрическими нормалями двух смежных поверхностей меньше, чем creaseAngle, то нормали вычисляются таким образом, что поверхности по краю имеют гладкое затенение (см. описание общих полей).

  • normalIndex – перечисляются номера нормалей на соответствие вершинам или поверхностям (в зависимости от значения normalPerVertex) – по такому же принципу, как в colorIndex.

  • normalPerVertex - нормали соответствуют полигонам (“false”) или вершинам (“true”).

  • texCoordIndex - значением этого поля является узел TextureCoordinate (см. ниже).

<IndexedFaceSet ccw="true" colorPerVertex="true" convex="true"

creaseAngle="0" normalPerVertex="true" solid="false"

coordIndex="0 4 7 3 -1 5 6 2 1 -1 4 5 6 7 -1 6 7 3 2 -1"

colorIndex="0 1 2 3 -1 4 5 6 0 -1 1 2 3 4 -1 5 6 0 1 -1">

<Coordinate 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"></Coordinate>

<Color color="0 0 1, 0 1 0, 0 1 1, 1 0 0, 1 0 1, 1 1 0, 1 1 1"></Color>

</IndexedFaceSet>

ElevationGrid

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

ElevationGrid : X3DGeometryNode {

MFNode [in,out] attrib [] [X3DVertexAttributeNode]

SFNode [in,out] color NULL [X3DColorNode]

SFNode [in,out] fogCoord NULL [FogCoordinate]

SFNode [in,out] normal NULL [X3DNormalNode]

SFNode [in,out] texCoord NULL [X3DTextureCoordinateNode]

SFBool [] ccw TRUE

SFBool [] colorPerVertex TRUE

SFFloat [] creaseAngle 0 [0,∞)

MFFloat [] height [] (-∞,∞)

SFBool [] normalPerVertex TRUE

SFBool [] solid TRUE

SFInt32 [] xDimension 0 [0,∞)

SFFloat [] xSpacing 1.0 (0,∞)

SFInt32 [] zDimension 0 [0,∞)

SFFloat [] zSpacing 1.0 (0,∞)

}

Описание полей:

  • xDimension - | - эти переменные определяют размерность сетки возвышенностей.

  • zDimension- Соответственно массив height должно содержать xDimension*zDimension

| элементов

  • xSpacing- | -здесь определяется расстояние между соседними вершинами в метрах

  • zSpacing- | соответственно по осям X и Z

  • height - определяет массив возвышенностей в метрах над горизонтальной плоскостью Y=0. Если смотреть на поверхность сверху в направлении оси –Z, то вершины перечисляются от левого верхнего угла к правому нижнему (построчно).

<ElevationGrid xDimension="7" zDimension="6"

height="1.5, 10, 0.5, 0.5, 1, 1.5, 0,

1, 0.5, 0.25, 0.25, 0.5, 1, 0,

0.5, 0.25, 0, 0, 0.25, 0.5, 0,

0.5, 0.25, 0, 0, 0.25, 0.5, 0,

1, 0.5, 0.25, 0.25, 0.5, 1, 0,

1.5, 1, 0.5, 0.5, 1, 1.5, 0"

xSpacing="5.0" zSpacing="5.0" solid="false">

</ElevationGrid>

Узел ElevationGrid также может содержать дочерние узлы Color (или ColorRGBA) и Normal. Поскольку индексирование цветов и нормалей не производится, при необходимости применения к полигонам или вертексам сетки возвышенностей различных цветов или векторов нормалей, массивы дочерних объектов Color (или ColorRGBA) и Normal должны содержать столько компонентов, возможно повторяющихся, сколько необходимо, причем в порядке их применения к полигонам или вертексам.

Поскольку объект, образуемый узлом ElevationGrid, состоит из четырехугольников, довольно легко можно столкнуться с проблемой неплоских полигонов, что может привести к непредсказуемости тесселяции. Данный эффект можно смягчить использованием для поверхности гладкого затенения путем повышения значения поля creaseAngle.

Extrusion

Несмотря на присутствие в спецификации X3D, узел экструзии не поддерживается в X3DOM.

https://github.com/x3dom/x3dom/issues/53

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]