-by Justin Couch
This appendix contains a list of all VRML 2.0 nodes and their definitions. The nodes are grouped according to their function within the scene graph. Although Chapter 13, "Exploring VRML Browsers and Development Tools," discussed group nodes and leaf nodes, there are a few more types. The grouping here is the same as that used in the VRML 2.0 draft 3 specification.
It has been assumed that you already know how to use VRML and the syntax for piecing together a scene. This is merely a listing of each of the nodes, their fields, and the default value for each field.
These nodes are primarily used to contain other nodes. Children nodes are always placed in the children field and are bounded by a box located at bboxCenter and of size bboxSize. Grouping nodes may contain any other nodes, including other grouping nodes, as children.
Anchor { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children [] exposedField SFString description "" exposedField MFString parameter [] exposedField MFString url [] field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 }
Billboard { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField SFVec3f axisOfRotation 0 1 0 exposedField MFNode children [] field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 }
Collision { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children [] exposedField SFBool collide TRUE field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 field SFNode proxy NULL eventOut SFTime collideTime }
Group { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children [] field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 }
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 }
Special groups are a subset of the grouping nodes that contain extra functionality. Each special group contains extra information in the scene graph that doesn't necessarily get displayed, even though the information exists in the file.
Inline { exposedField MFString url [] field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 }
LOD { exposedField MFNode level [] field SFVec3f center 0 0 0 field MFFloat range [] }
Switch { exposedField MFNode choice [] exposedField SFInt32 whichChoice -1 }
Common nodes are common across the scene graph. They can be placed as children of other nodes or as standalones.
DirectionalLight { exposedField SFFloat ambientIntensity 0 exposedField SFColor color 1 1 1 exposedField SFVec3f direction 0 0 -1 exposedField SFFloat intensity 1 exposedField SFBool on TRUE }
PointLight { exposedField SFFloat ambientIntensity 0 exposedField SFVec3f attenuation 1 0 0 exposedField SFColor color 1 1 1 exposedField SFFloat intensity 1 exposedField SFVec3f location 0 0 0 exposedField SFBool on TRUE exposedField SFFloat radius 100 }
Shape { exposedField SFNode appearance NULL exposedField SFNode geometry NULL }
Sound { exposedField SFVec3f direction 0 0 1 exposedField SFFloat intensity 1 exposedField SFVec3f location 0 0 0 exposedField SFFloat maxBack 10 exposedField SFFloat maxFront 10 exposedField SFFloat minBack 1 exposedField SFFloat minFront 1 exposedField SFFloat priority 0 exposedField SFNode source NULL field SFBool spatialize TRUE }
AudioClip { exposedField SFString description "" exposedField SFBool loop FALSE exposedField SFFloat pitch 1.0 exposedField SFTime startTime 0 exposedField SFTime stopTime 0 exposedField MFString url [] eventOut SFTime duration_changed eventOut SFBool isActive }
Script { exposedField MFString url [] field SFBool directOutput FALSE field SFBool mustEvaluate FALSE # And any number of: eventIn eventTypeName eventName field fieldTypeName fieldName initialValue eventOut eventTypeName eventName }
SpotLight { exposedField SFFloat ambientIntensity 0 exposedField SFVec3f attenuation 1 0 0 exposedField SFFloat beamWidth 1.570796 exposedField SFColor color 1 1 1 exposedField SFFloat cutOffAngle 0.785398 exposedField SFVec3f direction 0 0 -1 exposedField SFFloat intensity 1 exposedField SFVec3f location 0 0 0 exposedField SFBool on TRUE exposedField SFFloat radius 100 }
WorldInfo { field MFString info [] field SFString title "" }
Sensors take external input and generate events to be passed to other nodes by routes. They have the ability to be enabled or disabled by setting the enabled field appropriately. Although they don't hold children nodes themselves, they use the children of their parent Grouping node as the geometry.
CylinderSensor { exposedField SFFloat diskAngle 0.262 exposedField SFBool enabled TRUE exposedField SFFloat maxAngle -1 exposedField SFFloat minAngle 0 exposedField SFRotation offset 0 1 0 0 exposedField SFBool autoOffset TRUE eventOut SFBool isActive eventOut SFRotation rotation_changed eventOut SFVec3f trackPoint_changed }
PlaneSensor { exposedField SFBool enabled TRUE exposedField SFVec2f maxPosition -1 -1 exposedField SFVec2f minPosition 0 0 exposedField SFVec3f offset 0 0 0 exposedField SFBool autoOffset TRUE eventOut SFBool isActive eventOut SFVec3f trackPoint_changed eventOut SFVec3f translation_changed }
ProximitySensor { exposedField SFVec3f center 0 0 0 exposedField SFVec3f size 0 0 0 exposedField SFBool enabled TRUE eventOut SFBool isActive eventOut SFVec3f position_changed eventOut SFRotation orientation_changed eventOut SFTime enterTime eventOut SFTime exitTime }
SphereSensor { exposedField SFBool enabled TRUE exposedField SFRotation offset 0 1 0 0 exposedField SFBool autoOffset TRUE eventOut SFBool isActive eventOut SFRotation rotation_changed eventOut SFVec3f trackPoint_changed }
TimeSensor { exposedField SFTime cycleInterval 1 exposedField SFBool enabled TRUE exposedField SFBool loop FALSE exposedField SFTime startTime 0 exposedField SFTime stopTime 0 eventOut SFTime cycleTime eventOut SFFloat fraction_changed eventOut SFBool isActive eventOut SFTime time }
TouchSensor { exposedField SFBool enabled TRUE eventOut SFVec3f hitNormal_changed eventOut SFVec3f hitPoint_changed eventOut SFVec2f hitTexCoord_changed eventOut SFBool isActive eventOut SFBool isOver eventOut SFTime touchTime }
VisibilitySensor { exposedField SFVec3f center 0 0 0 exposedField SFBool enabled TRUE exposedField SFVec3f size 0 0 0 eventOut SFTime enterTime eventOut SFTime exitTime eventOut SFBool isActive }
Pure geometry nodes can't be drawn on the screen by themselves. They must be used as the node in the geometry field of the Shape node. They contain no properties other than the basic geometrical characteristics.
Box { field SFVec3f size 2 2 2 }
Cone { field SFFloat bottomRadius 1 field SFFloat height 2 field SFBool side TRUE field SFBool bottom TRUE }
ElevationGrid { eventIn MFFloat set_height exposedField SFNode color NULL exposedField SFNode normal NULL exposedField SFNode texCoord NULL field MFFloat height [] field SFBool ccw TRUE field SFBool colorPerVertex TRUE field SFFloat creaseAngle 0 field SFBool normalPerVertex TRUE field SFBool solid TRUE field SFInt32 xDimension 0 field SFFloat xSpacing 0.0 field SFInt32 zDimension 0 field SFFloat zSpacing 0.0 }
Extrusion { eventIn MFVec2f set_crossSection eventIn MFRotation set_orientation eventIn MFVec2f set_scale eventIn MFVec3f set_spine field SFBool beginCap TRUE field SFBool ccw TRUE field SFBool convex TRUE field SFFloat creaseAngle 0 field MFVec2f crossSection [ 1 1, 1 -1, -1 -1, -1 1, 1 1 ] field SFBool endCap TRUE field MFRotation orientation 0 0 1 0 field MFVec2f scale 1 1 field SFBool solid TRUE field MFVec3f spine [ 0 0 0, 0 1 0 ] }
IndexedFaceSet { eventIn MFInt32 set_colorIndex eventIn MFInt32 set_coordIndex eventIn MFInt32 set_normalIndex eventIn MFInt32 set_texCoordIndex exposedField SFNode color NULL exposedField SFNode coord NULL exposedField SFNode normal NULL exposedField SFNode texCoord NULL field SFBool ccw TRUE field MFInt32 colorIndex [] field SFBool colorPerVertex TRUE field SFBool convex TRUE field MFInt32 coordIndex [] field SFFloat creaseAngle 0 field MFInt32 normalIndex [] field SFBool normalPerVertex TRUE field SFBool solid TRUE field MFInt32 texCoordIndex [] }
IndexedLineSet { eventIn MFInt32 set_colorIndex eventIn MFInt32 set_coordIndex exposedField SFNode color NULL exposedField SFNode coord NULL field MFInt32 colorIndex [] field SFBool colorPerVertex TRUE field MFInt32 coordIndex [] }
PointSet { exposedField SFNode color NULL exposedField SFNode coord NULL }
Sphere { field SFFloat radius 1 }
Text { exposedField MFString string [] exposedField SFNode fontStyle NULL exposedField MFFloat length [] exposedField SFFloat maxExtent 0.0 }
Geometric properties are property nodes for the different geometry nodes. These can be declared and have the DEF keyword placed in front of them once, then reused across a number of nodes, instantly. For example, you can declare one Coordinate node and use it in an IndexedFaceSet and PointSet node at the same time. The usual rules about the DEF and USE keywords apply.
Color { exposedField MFColor color [] }
Coordinate { exposedField MFVec3f point [] }
Normal { exposedField MFVec3f vector [] }
TextureCoordinate { exposedField MFVec2f point [] }
This collection of nodes controls the visible appearance of the geometric surface. Although these nodes can't be used to alter geometric properties, they can enhance geometric surfaces when used wisely. The default color for the appearance node is black.
appearance { exposedField SFNode material NULL exposedField SFNode texture NULL exposedField SFNode textureTransform NULL }
FontStyle { field SFString family "SERIF" field SFBool horizontal TRUE field SFString justify "BEGIN" field SFString language "" field SFBool leftToRight TRUE field SFFloat size 1.0 field SFFloat spacing 1.0 field SFString style "" field SFBool topToBottom TRUE }
ImageTexture { exposedField MFString url [] field SFBool repeatS TRUE field SFBool repeatT TRUE }
Material { exposedField SFFloat ambientIntensity 0.2 exposedField SFColor diffuseColor 0.8 0.8 0.8 exposedField SFColor emissiveColor 0 0 0 exposedField SFFloat shininess 0.2 exposedField SFColor specularColor 0 0 0 exposedField SFFloat transparency 0 }
MovieTexture { exposedField SFBool loop FALSE exposedField SFFloat speed 1 exposedField SFTime startTime 0 exposedField SFTime stopTime 0 exposedField MFString url [] field SFBool repeatS TRUE field SFBool repeatT TRUE eventOut SFFloat duration_changed eventOut SFBool isActive }
PixelTexture { exposedField SFImage image 0 0 0 field SFBool repeatS TRUE field SFBool repeatT TRUE }
TextureTransform { exposedField SFVec2f center 0 0 exposedField SFFloat rotation 0 exposedField SFVec2f scale 1 1 exposedField SFVec2f translation 0 0 }
Given a set of keys and corresponding values, the input of a fractional value produces an output value that's the result of the linear interpolation between the appropriate pairs of values.
ColorInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFColor keyValue [] eventOut SFColor value_changed }
CoordinateInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFVec3f keyValue [] eventOut MFVec3f value_changed }
NormalInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFVec3f keyValue [] eventOut MFVec3f value_changed }
OrientationInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFRotation keyValue [] eventOut SFRotation value_changed }
PositionInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFVec3f keyValue [] eventOut SFVec3f value_changed }
ScalarInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key [] exposedField MFFloat keyValue [] eventOut SFFloat value_changed }
These nodes can be used only one at a time. The first one declared in the file is always the default. Any subsequent nodes can be made active by sending them a set_bind event. The current state can be found by reading the isBound eventOut field.
Background { eventIn SFBool set_bind exposedField MFFloat groundAngle [] exposedfield MFColor groundColor [] exposedField MFString backUrl [] exposedField MFString bottomUrl [] exposedField MFString frontUrl [] exposedField MFString leftUrl [] exposedField MFString rightUrl [] exposedField MFString topUrl [] exposedField MFFloat skyAngle [] exposedField MFColor skyColor [ 0 0 0 ] eventOut SFBool isBound }
Fog { exposedField SFColor color 1 1 1 exposedField SFString fogType "LINEAR" exposedField SFFloat visibilityRange 1000 eventIn SFBool set_bind eventOut SFBool isBound }
NavigationInfo { eventIn SFBool set_bind exposedField MFFloat avatarSize [ 0.25, 1.6, 0.75 ] exposedField SFBool headlight TRUE exposedField SFFloat speed 1.0 exposedField MFString type "WALK" exposedField SFFloat visibilityLimit 0.0 eventOut SFBool isBound }
Viewpoint { eventIn SFBool set_bind exposedField SFFloat fieldOfView 0.785398 exposedField SFBool jump TRUE exposedField SFRotation orientation 0 0 1 0 exposedField SFVec3f position 0 0 0 field SFString description "" eventOut SFTime bindTime_changed eventOut SFBool isBound }