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.





Начало  Назад  Вперед



Книжный магазин