
1.Общие сведения(структура программы,
простейший пример)
2.Прототипы
3.Группирование объектов
4.Динамические объекты
5.Усложненный пример
6.Основные типы данных
7.Основные узлы и работа с ними
Основные
узлы и работа с ними
Appearance
Box
Color
ColorInterpolator
Cone
CoordinateInterpolator
Cylinder
FontStyle
Group
ImageTexture
Material
OrientationInterpolator
PlaneSensor
PositionInterpolator
ProximitySensor
Shape
Sphere
SphereSensor
Text
TimeSensor
TouchSensor
Transform
Viewpoint
Принципы
работы с узлами
Узел
может содержать защищенные поля (field),
поля с возможностью доступа (exposedField),
входящие события (eventIn), выходящие
события(eventOut). Каждая из перечисленных
сущностей имеет строго определенный тип
(все основные типы перечислены в
предыдущем разделе). На этапе обработки
происходит связывание компонентов
узлов по следующим правилам:
-
связывать можно только компоненты
одинакового типа,
-
выходящие события можно связывать с
открытыми полями и входящими событиями,
-
недопустимо связывать выходящее
событие с выходящим событием,
-
недопустимо связывать входящее событие
с входящим событием,
-
недопустимо производить связи с
защищенными полями
Appearance
Appearance {
exposedField SFNode material
exposedField SFNode texture
exposedField SFNode textureTransform
}
Узел
определяет визуальное представление
геометрии
Box
Box {
field SFVec3f size # (0,?)
}
Узел
задает параллелепипед.
Color
Color {
exposedField MFColor color[] # [0,1]
}
Этот
узел определяет набор RGB цветов,
используемых в других узлах.
ColorInterpolator
ColorInterpolator {
eventIn SFFloat set_fraction # (-?,?)
exposedField MFFloat key[] # (-?,?)
exposedField MFColor keyValue[] # [0,1]
eventOut SFColor value_changed
}
Этот
узел позволяет линейно интерполировать
цвет геометрии
Cone
Cone {
field SFFloat bottomRadius # (0,?)
field SFFloat height # (0,?)
field SFBool side
field SFBool bottom
}
Этот
узел описывает конус
CoordinateInterpolator
CoordinateInterpolator {
eventIn SFFloat set_fraction # (-?,?)
exposedField MFFloat key[] # (-?,?)
exposedField MFVec3f keyValue[] # (-?,?)
eventOut MFVec3f value_changed
}
Этот
узел позволяет линейно интерполировать
координаты геометрии.
Cylinder
Cylinder {
field SFBool bottom
field SFFloat height # (0,?)
field SFFloat radius # (0,?)
field SFBool side
field SFBool top
}
Этот
узел описывает цилиндр.
FontStyle
FontStyle {
field MFString family
field SFBool horizontal
field MFString justify
field SFString language
field SFBool leftToRight
field SFFloat size # (0,?)
field SFFloat spacing # [0,?)
field SFString style
field SFBool topToBottom
}
Этот
узел позволяет задать стиль шрифта.
Group
Group {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children[]
field SFVec3f bboxCenter # (-?,?)
field SFVec3f bboxSize # (0,?) или -1,-1,-1
}
Этот
узел позволяет группировать узлы в
группы.
ImageTexture
ImageTexture {
exposedField MFString url[]
field SFBool repeatS
field SFBool repeatT
}
Этот
узел описывает текстуру.
Material
Material {
exposedField SFFloat ambientIntensity # [0,1]
exposedField SFColor diffuseColor # [0,1]
exposedField SFColor emissiveColor # [0,1]
exposedField SFFloat shininess # [0,1]
exposedField SFColor specularColor # [0,1]
exposedField SFFloat transparency # [0,1]
}
Этот
узел позволяет описать свойства
материала.
OrientationInterpolator
OrientationInterpolator {
eventIn SFFloat set_fraction # (-?,?)
exposedField MFFloat key[] # (-?,?)
exposedField MFRotation keyValue[] # (-?,?)
eventOut SFRotation value_changed
}
Позволяет
линейно интерполировать ориентацию/поворот
геометрии в пространстве.
PlaneSensor
PlaneSensor {
exposedField SFBool autoOffset
exposedField SFBool enabled
exposedField SFVec2f maxPosition # (-?,?)
exposedField SFVec2f minPosition # (-?,?)
exposedField SFVec3f offset # (-?,?)
eventOut SFBool isActive
eventOut SFVec3f trackPoint_changed
eventOut SFVec3f translation_changed
}
Этот
узел может быть вставлен в любую
геометрию и позволяет пользователю
передвигать при помощи указателя эту
геометрию относительно плоскости Z.
PositionInterpolator
PositionInterpolator {
eventIn SFFloat set_fraction # (-?,?)
exposedField MFFloat key[] # (-?,?)
exposedField MFVec3f keyValue[] # (-?,?)
eventOut SFVec3f value_changed
}
Позволяет
линейно интерполировать позицию
геометрии в пространстве.
ProximitySensor
ProximitySensor {
exposedField SFVec3f center # (-?,?)
exposedField SFVec3f size # [0, ?)
exposedField SFBool enabled
eventOut SFBool isActive
eventOut SFVec3f position_changed
eventOut SFRotation orientation_changed
eventOut SFTime enterTime
eventOut SFTime exitTime
}
Реагирует на приближение/удаление
пользователя к объекту.
Shape
Shape {
exposedField SFNode appearance
exposedField SFNode geometry
}
Этот
узел позволяет связать геометрию с
узлами, отвечающими за визуальное
представление форм.
Sphere
Sphere {
field SFFloat radius # (0,?)
}
Этот
узел позволяет задать сферу.
SphereSensor
SphereSensor {
exposedField SFBool autoOffset
exposedField SFBool enabled
exposedField SFRotation offset # [-1,1], (-?,?)
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
Этот
узел может быть вставлен в любую
геометрию и позволяет пользователю
вращать при помощи указателя эту
геометрию относительно ее центра.
SphereSensor
SphereSensor {
exposedField SFBool autoOffset
exposedField SFBool enabled
exposedField SFRotation offset # [-1,1], (-?,?)
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
Этот
узел может быть вставлен в любую
геометрию и позволяет пользователю
вращать при помощи указателя эту
геометрию относительно ее центра.
TimeSensor
TimeSensor {
exposedField SFTime cycleInterval # (0,?)
exposedField SFBool enabled
exposedField SFBool loop
exposedField SFTime startTime # (-?,?)
exposedField SFTime stopTime # (-?,?)
eventOut SFTime cycleTime
eventOut SFFloat fraction_changed # [0, 1]
eventOut SFBool isActive
eventOut SFTime time
}
Этот
узел позволяет генерировать выходящие
события через заданные промежутки
времени.
TouchSensor
TouchSensor {
exposedField SFBool enabled
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitPoint_changed
eventOut SFVec2f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFBool isOver
eventOut SFTime touchTime
}
Этот
узел может быть вставлен в любую
геометрию и генерирует выходящее
событие при нажатии пользователем
указателем на данную геометрию.
Transform
Transform {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f center # (-?,?)
exposedField MFNode children[]
exposedField SFRotation rotation # [-1,1], (-?,?)
exposedField SFVec3f scale # (0, ?)
exposedField SFRotation scaleOrientation # [-1,1], (-?,?)
exposedField SFVec3f translation # (-?,?)
field SFVec3f bboxCenter # (-?,?)
field SFVec3f bboxSize # (0,?) или -1,-1,-1
}
Этот
узел является контейнером для другой
геометрии и задает для нее локальную
систему координат/ориентацию/масштаб.
Viewpoint
Viewpoint {
eventIn SFBool set_bind
exposedField SFFloat fieldOfView # (0,p)
exposedField SFBool jump
exposedField SFRotation orientation # [-1,1], (-?,?)
exposedField SFVec3f position # (-?,?)
field SFString description ""
eventOut SFTime bindTime
eventOut SFBool isBound
}
Этот
узел задает точки обзора сцены
|