Преобразование системы координат.
Transform {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f center 0 0 0
exposedField MFNode children []
exposedField SFRotation rotation 0 0 1 0
exposedField SFVec3f scale 1 1 1
exposedField SFRotation scaleOrientation 0 0 1 0
exposedField SFVec3f translation 0 0 0
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Вы уже заметили, что геометрические классы позволяют создавать только правильные фигуры? Как же создать, к примеру, эллипсоид? Ответ - нужно применить преобразование координат, т.е. масштабировать (scale) координаты x, y, z с разными коэффишиентами :
Transform {
scale 2 1 3
children Shape { geometry Sphere {} }
} # получился эллипсоид
Поля translation, rotation, scale, scaleOrientation, center дают возможность осуществить любую геометрическую трансформашию (аффинное преобразование координат):
Настоятельно рекомендуется использовать Transform
(фактически это установка локальной системы координат) для каждого более-менее законченного геометрического объекта. Если, например, вам понадобится увеличить ваш объект в два раза, то это будет легко сделать - просто напишите scale 2 2 2 в объекте Transform.
Transform может являться родителем другого объекта Transform.