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

Преобразование системы координат.


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 дают возможность осуществить любую геометрическую трансформашию (аффинное преобразование координат):

  • center задает шентральную точку, относительно которой будут производиться другие трансформашии (например вращение - rotation);
  • translation задает перенос системы координат (СК);
  • rotation - поворот СК вокруг заданной оси на заданный угол (см. описание поля SFRotation);
  • scale - масштабирование;
  • scaleOrientation - определяет "виртуальный" поворот СК перед выполнением масштабирования, т.е. позволяет проводить масштабирование НЕ вдоль стандартных осей Ox, Oy, Oz.
  • Настоятельно рекомендуется использовать Transform

    (фактически это установка локальной системы координат) для каждого более-менее законченного геометрического объекта. Если, например, вам понадобится увеличить ваш объект в два раза, то это будет легко сделать - просто напишите scale 2 2 2 в объекте Transform.

    Transform может являться родителем другого объекта Transform.



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