Make your own free website on Tripod.com

INDEXEDFACESET

Документы VRML используют узел IndexedFaceSet для представления трехмерных фигур, используя многоугольники с вершинами, расположенными в текущих координатах. Следующий код иллюстрирует имена полей и их значения по умолчанию для узла IndexedFaceSet :

IndexedFaceSet {  
coordIndex 0 # MFLong
materialIndex -1 # MFLong
normalIndex -1 # MFLong
textureCoordIndex -1 # MFLong
  }  

Поле coordlndex определяет координаты граней многогранников, причем значение индекса начинается с 0. Неотрицательные значения индекса отвечают трехмерной точке [х, у, z). По определению многогранник должен иметь три или более линии, ограничивающие каждую грань. Поэтому необходимо определить как минимум три координатных индекса (координаты трех точек в пространстве) для каждой грани многогранника. Величина, равная -1 в поле coordlndex, указывает на конец текущей грани. Если многогранник содержит более одной грани, необходимо отделять каждую грань от следующей значением -1. После последней грани многогранника также необходимо поставить значение -1. Поле materiallndex определяет индекс материалов, который будет использоваться броузером для каждой вершины многогранника. Поле normallndex определяет индексы нормалеей, которые броузер использует для узлов простой геометрии. С их помощью вычисляется эффект отражения света от поверхностей. Поле textureCoordlndex определяет индексы текстур, которые броузер свяжет с заданными координатами.

Документы VRML используют индексы IndexedFaceSet в рамках поля coordinatelndex для того, чтобы определить грани многогранника. Броузер преобразует вершины многогранника, используя матрицу текущего преобразования.Если привязка координат текстуры имеет тип PER_VERTEX, то можно связывать явные координаты текстуры (определенные узлом textureCoordinate2) с вершинами группы узлов простой геометрии, одна после другой. Однако если привязка определена как PER_VERTEX_INDEXED, тогда можно связывать координаты текстуры с вершинами многогранника, используя индексы, которые вы указали в поде textureCoordIndex.Для всех узлов простой геометрии, основанных на описании вершин, справедливо следующее. Если вы определяете текущую текстуру, но не указываете координат текстуры, броузер применяет задаваемое по умолчанию отображение координат текстуры, используя ограничивающий прямоугольник. Размеры этого ограничивающего прямоугольника заданы в тepминax S и Т. Наибольший размер этого прямоугольника определяет S-координаты, а следующий по длине размер прямоугольника определяет T-координаты. S-координаты изменяются в пределах от 0 до 1, пробегая значения от одного конца прямоугольника до другого. Область значений T-координат начинается с числа, лежащего между 0 и отношением второго по длине размера прямоугольника к его самому длинному размеру.