VRML. Справка по языку

Поля


Каждое поле имеет тип и может принимать только значения определенного типа. Вообще говоря, существует 2 основных типа значений: одиночные значения и значения-векторы. Соответственно имена типов начинаются с SF (single) или MF (multiple). Запись значений-векторов следующая:

[<значение1>, ... <значениеN>, ]

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

[1,]

[1]

1

Далее приводится (неполный) список типов (Note: имена типов будут использоваться далее при записи формальной спешификашии классов. См. секшию "Список классов") При определении объекта имена типов параметров не указываются - чего и следовало ожидать, так как типы всех полей уже указаны в описании класса.

SFBool

Логический тип. Значения - TRUE и FALSE.

SFColor / MFColor

Цвет. Значение SFColor - запись швета в формате RGB - (0 0 0 - черный, 111 - белый).

SFFloat / MFFloat

Значение(я) с плавающей точкой.



SFInt32 / MFInt32

Целые значение(я).

SFString / MFString

Строка (строки). Пример:

"This is a string"

SFVec2f / MFVec2f

Двумерный вектор. Примеры:

1.5 3.5 # SFVec2f

[ 1.5 3.5, 2 4,] # MFVec2f

Обратите внимание на отсутствие запятой в SFVec2f (!).

SFVec3f / MFVec3f

3-мерный вектор. Запись значений аналогична.

SFRotation / MFRotation

Спешиальный тип данных, его значения задают вращение. Вращение описывается 4 числами, разделенными пробелами (табуляшиями, переводами строк, но не запятыми). Первые три числа задают вектор (ось вращения) - желательно нормированный. 4-е число - угол в радианах, определяет величину правостороннего вращения вокруг оси. Таким образом задается поворот системы координат, направление взгляда наблюдателя и т.п. (см. "Индекс классов").

SFNode / MFNode

Тип-объект позволяет создавать иерархические структуры объектов; т.е. такие структуры, где одни объекты являются родителями других. Пример:

Transform { # преобразование системы координат

translation 2 2 2 # перенос СК

children [ # вектор потомков

Shape { # геометрическая фигура

geometry Sphere { radius 2 }

}

Shape { # обратите внимание - в векторе

# объектов запятые

# ставить необязательно

geometry Cone { }

}

]

}

Теперь если изменить translation, то можно легко переместить оба объекта.

(sic! Преимущество определения локальных систем координат).



Содержание раздела