This is a list of all the nodes I think should be part of VRML 1.0. Much of the text describing the nodes was stolen from the manual page for the corresponding Inventor node.

Cone

This node represents a simple cone whose central axis is aligned with the y-axis. By default, the cone is centered at (0,0,0) and has a size of -1 to +1 in all three directions. The cone has a radius of 1 at the bottom and a height of 2, with its apex at 1. The cone has two parts: the sides and the bottom.

The cone is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.

If the current material binding is PER_PART or PER_PART_INDEXED, the first current material is used for the sides of the cone, and the second is used for the bottom. Otherwise, the first material is used for the entire cone.

When a texture is applied to a cone, it is applied differently to the sides and bottom. On the sides, the texture wraps counterclockwise (from above) starting at the back of the cone. The texture has a vertical seam at the back, intersecting the yz-plane. For the bottom, a circle is cut out of the texture square and applied to the cone's base circle. The texture appears right side up when the top of the cone is tilted away from the camera.

PARTS
     SIDES       The conical part
     BOTTOM      The bottom circular face
     ALL         All parts

FILE FORMAT/DEFAULTS
     Cone {
          parts         ALL
          bottomRadius  1
          height        2
     }

Coordinate3

This node defines a set of 3D coordinates to be used by a subsequent IndexedFaceSet node. This node does not produce a visible result during rendering; it simply replaces the current coordinates in the rendering state for subsequent nodes to use.

FILE FORMAT/DEFAULTS
     Coordinate3 {
          point  0 0 0
     }

Cube

This node represents a cuboid aligned with the coordinate axes. By default, the cube is centered at (0,0,0) and measures 2 units in each dimension, from -1 to +1. The cube is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.

If the current material binding is PER_PART, PER_PART_INDEXED, PER_FACE, or PER_FACE_INDEXED, materials will be bound to the faces of the cube in this order: front, back, left, right, top, and bottom.

Textures are applied individually to each face of the cube; the entire texture goes on each face. On the front, back, right, and left sides of the cube, the texture is applied right side up. On the top, the texture appears right side up when the top of the cube is tilted toward the camera. On the bottom, the texture appears right side up when the top of the cube is tilted away from the camera.

FILE FORMAT/DEFAULTS
     Cube {
          width   2
          height  2
          depth   2
     }

Cylinder

This node represents a simple capped cylinder centered around the y-axis. By default, the cylinder is centered at (0,0,0) and has a default size of -1 to +1 in all three dimensions. You can use the radius and height fields to create a cylinder with a different size.

The cylinder is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.

If the current material binding is PER_PART or PER_PART_INDEXED, the first current material is used for the sides of the cylinder, the second is used for the top, and the third is used for the bottom. Otherwise, the first material is used for the entire cylinder.

When a texture is applied to a cylinder, it is applied differently to the sides, top, and bottom. On the sides, the texture wraps counterclockwise (from above) starting at the back of the cylinder. The texture has a vertical seam at the back, intersecting the yz-plane. For the top and bottom, a circle is cut out of the texture square and applied to the top or bottom circle. The top texture appears right side up when the top of the cylinder is tilted toward the camera, and the bottom texture appears right side up when the top of the cylinder is tilted away from the camera.

PARTS
     SIDES   The cylindrical part
     TOP     The top circular face
     BOTTOM  The bottom circular face
     ALL     All parts

FILE FORMAT/DEFAULTS
     Cylinder {
          parts   ALL
          radius  1
          height  2
     }

DirectionalLight

This node defines a directional light source that illuminates along rays parallel to a given 3-dimensional vector.

A light node defines an illumination source that may affect subsequent shapes in the scene graph, depending on the current lighting style. Light sources are affected by the current transformation. A light node under a separator does not affect any objects outside that separator.

FILE FORMAT/DEFAULTS
     DirectionalLight {
          on         TRUE
          intensity  1
          color      1 1 1
          direction  0 0 -1
     }

Group

This node defines the base class for all group nodes. Group is a node that contains an ordered list of child nodes. The ordering of the child nodes represents the traversal order for all operations (for example, rendering, picking, and so on). This node is simply a container for the child nodes and does not alter the traversal state in any way. During traversal, state accumulated for a child is passed on to each successive child and then to the parents of the group (Group does not push or pop traversal state as Separator does).

FILE FORMAT/DEFAULTS
     Group {
     }

IndexedFaceSet

This node represents a 3D shape formed by constructing faces (polygons) from vertices located at the current coordinates. IndexedFaceSet uses the indices in the coordIndex field (from IndexedShape) to specify the polygonal faces. An index of -1 indicates that the current face has ended and the next one begins.

The vertices of the faces are transformed by the current transformation matrix.

Treatment of the current material and normal binding is as follows: The PER_PART and PER_FACE bindings specify a material or normal for each face. PER_VERTEX specifies a material or normal for each vertex. The corresponding _INDEXED bindings are the same, but use the materialIndex or normalIndex indices (see IndexedShape) The DEFAULT material binding is equal to OVERALL. The DEFAULT normal binding is equal to PER_VERTEX_INDEXED; if insufficient normals exist in the state, vertex normals will be generated automatically.

Explicit texture coordinates (as defined by TextureCoordinate2) may be bound to vertices of an indexed shape consecutively (if the texture coordinate binding is PER_VERTEX) or by using the indices in the textureCoordIndex field (if the binding is PER_VERTEX_INDEXED). As with all vertex-based shapes, if there is a current texture but no texture coordinates are specified, a default texture coordinate mapping is calculated using the bounding box of the shape. The longest dimension of the bounding box defines the S coordinates, and the next longest defines the T coordinates. The value of the S coordinate ranges from 0 to 1, from one end of the bounding box to the other. The T coordinate ranges between 0 and the ratio of the second greatest dimension of the bounding box to the greatest dimension.

Be sure that the indices contained in the coordIndex, materialIndex, normalIndex, and textureCoordIndex fields are valid with respect to the current state, or errors will occur.

FILE FORMAT/DEFAULTS
     IndexedFaceSet {
          coordIndex         0
          materialIndex      -1
          normalIndex        -1
          textureCoordIndex  -1
     }

IndexedLineSet

This node represents a 3D shape formed by constructing polylines from vertices located at the current coordinates. IndexedLineSet uses the indices in the coordIndex field (from IndexedShape) to specify the polylines. An index of -1 indicates that the current polyline has ended and the next one begins.

The coordinates of the line set are transformed by the current cumulative transformation.

Treatment of the current material and normal binding is as follows: The PER_PART binding specifies a material or normal for each segment of the line. The PER_FACE binding specifies a material or normal for each polyline. PER_VERTEX specifies a material or normal for each vertex. The corresponding _INDEXED bindings are the same, but use the materialIndex or normalIndex indices. The DEFAULT material binding is equal to OVERALL. The DEFAULT normal binding is equal to PER_VERTEX_INDEXED; if insufficient normals exist in the state, the lines will be drawn with lighting turned off. The same rules for texture coordinate generation as IndexedFaceSet are used.

FILE FORMAT/DEFAULTS
     IndexedLineSet {
          coordIndex         0
          materialIndex      -1
          normalIndex        -1
          textureCoordIndex  -1
     }

Info

This class defines a information node in the scene graph. This node has no effect during traversal. It is used to store information in the scene graph, typically for application-specific purposes, copyright messages, or other strings.

     Info {
          string  ""
     }

LevelOfDetail

This group node is used to allow applications to switch between various representations of objects automatically. The children of this node typically represent the same object or objects at varying levels of detail, from highest detail to lowest. The size of the objects when projected into the viewport is used to determine which version to use (i.e., which child to traverse).

The size is computed as the area of the screen rectangle enclosing the projection of the 3D bounding box that encloses all of the children. When rendering, this size is compared to the values in the screenArea field. If the size is greater than the first value, child 0 is traversed. If it is smaller than the first, but greater than the second, child 1 is traversed, and so on. If there are fewer children than are required by this rule, the last child is traversed. The screenArea field contains just 0 by default, so the first child is always traversed.

FILE FORMAT/DEFAULTS
     LevelOfDetail {
          screenArea  0
     }

Material

This node defines the current surface material properties for all subsequent shapes. Material sets several components of the current material during traversal. Different shapes interpret materials with multiple values differently. To bind materials to shapes, use an MaterialBinding node.

FILE FORMAT/DEFAULTS
     Material {
          ambientColor   0.2 0.2 0.2
          diffuseColor   0.8 0.8 0.8
          specularColor  0 0 0
          emissiveColor  0 0 0
          shininess      0.2
          transparency   0
     }

MaterialBinding

This node specifies how the current materials are bound to shapes that follow in the scene graph. Each shape node may interpret bindings differently. The current material always has a base value, which is defined by the first value of all material fields. Since material fields may have multiple values, the binding determines how these values are distributed over a shape.

The bindings for faces and vertices are meaningful only for shapes that are made from faces and vertices. Similarly, the indexed bindings are only used by the shapes that allow indexing.

When multiple material values are bound, the values are cycled through, based on the period of the material component with the most values. For example, the following table shows the values used when cycling through (or indexing into) a material with 2 ambient colors, 3 diffuse colors, and 1 of all other components in the current material. (The period of this material cycle is 3):

Material        Ambient color   Diffuse color   Other
 0                     0               0           0
 1                     1               1           0
 2                     1               2           0
 3 (same as 0)         0               0           0
BINDINGS
     DEFAULT            Use default binding
     OVERALL            Whole object has same material
     PER_PART           One material for each part of object
     PER_PART_INDEXED   One material for each part, indexed
     PER_FACE           One material for each face of object
     PER_FACE_INDEXED   One material for each face, indexed
     PER_VERTEX         One material for each vertex of object
     PER_VERTEX_INDEXED One material for each vertex, indexed

FILE FORMAT/DEFAULTS
     MaterialBinding {
          value  DEFAULT
     }

MatrixTransform

This node defines a geometric 3D transformation with a single SbMatrix. Note that some matrices (such as singular ones) may result in errors in bounding boxes, picking, and lighting.

FILE FORMAT/DEFAULTS
     MatrixTransform {
          matrix  1 0 0 0
                  0 1 0 0
                  0 0 1 0
                  0 0 0 1
     }

Normal

This node defines a set of 3D surface normal vectors to be used by vertex-based shape nodes that follow it in the scene graph. This node does not produce a visible result during rendering; it simply replaces the current normals in the rendering state for subsequent nodes to use. This node contains one multiple-valued field that contains the normal vectors.

FILE FORMAT/DEFAULTS
     Normal {
          vector  0 0 1
     }

NormalBinding

This node specifies how the current normals are bound to shapes that follow in the scene graph. Each shape node may interpret bindings differently.

The bindings for faces and vertices are meaningful only for shapes that are made from faces and vertices. Similarly, the indexed bindings are only used by the shapes that allow indexing. For bindings that require multiple normals, be sure to have at least as many normals defined as are necessary; otherwise, errors will occur.

BINDINGS
     DEFAULT            Use default binding
     OVERALL            Whole object has same normal
     PER_PART           One normal for each part of object
     PER_PART_INDEXED   One normal for each part, indexed
     PER_FACE           One normal for each face of object
     PER_FACE_INDEXED   One normal for each face, indexed
     PER_VERTEX         One normal for each vertex of object
     PER_VERTEX_INDEXED One normal for each vertex, indexed

FILE FORMAT/DEFAULTS
     NormalBinding {
          value  DEFAULT
     }

OrthographicCamera

An orthographic camera defines a parallel projection from a viewpoint. This camera does not diminish objects with distance, as an SoPerspectiveCamera does. The viewing volume for an orthographic camera is a rectangular parallelepiped (a box).

By default, the camera is located at (0,0,1) and looks along the negative z-axis; the position and orientation fields can be used to change these values. The height field defines the total height of the viewing volume.

Cameras are used to view a scene. When a camera is encountered during rendering, it sets the projection and viewing matrices and viewport appropriately; it does not draw geometry. Cameras should be placed before any shape nodes or light nodes in a scene graph; otherwise, those shapes or lights cannot be rendered properly. Cameras are affected by the current transformation, so you can position a camera by placing a transformation node before it in the scene graph . The default position and orientation of a camera is at (0,0,1) looking along the negative z-axis.

FILE FORMAT/DEFAULTS
     OrthographicCamera {
          position         0 0 1
          orientation      0 0 1  0
          focalDistance    5
          height	   2
     }

PerspectiveCamera

A perspective camera defines a perspective projection from a viewpoint. The viewing volume for a perspective camera is a truncated right pyramid.

By default, the camera is located at (0,0,1) and looks along the negative z-axis; the position and orientation fields can be used to change these values. The heightAngle field defines the total vertical angle of the viewing volume.

Cameras are used to view a scene. When a camera is encountered during rendering, it sets the projection and viewing matrices and viewport appropriately; it does not draw geometry. Cameras should be placed before any shape nodes or light nodes in a scene graph; otherwise, those shapes or lights cannot be rendered properly. Cameras are affected by the current transformation, so you can position a camera by placing a transformation node before it in the scene graph . The default position and orientation of a camera is at (0,0,1) looking along the negative z-axis.

FILE FORMAT/DEFAULTS
     PerspectiveCamera {
          position         0 0 1
          orientation      0 0 1  0
          focalDistance    5
          heightAngle      0.785398
     }

PointLight

This node defines a point light source at a fixed 3D location. A point source illuminates equally in all directions; that is, it is omni- directional.

A light node defines an illumination source that may affect subsequent shapes in the scene graph, depending on the current lighting style. Light sources are affected by the current transformation. A light node under a separator does not affect any objects outside that separator.

FILE FORMAT/DEFAULTS
     PointLight {
          on         TRUE
          intensity  1
          color      1 1 1
          location   0 0 1
     }

PointSet

This node represents a set of points located at the current coordinates. PointSet uses the current coordinates in order, starting at the index specified by the startIndex field. The number of points in the set is specified by the numPoints field. A value of -1 for this field indicates that all remaining values in the current coordinates are to be used as points.

The coordinates of the point set are transformed by the current cumulative transformation. The points are drawn with the current light model and drawing style (drawing styles FILLED and LINES are treated as POINTS).

Treatment of the current material and normal binding is as follows: PER_PART, PER_FACE, and PER_VERTEX bindings bind one material or normal to each point. The DEFAULT material binding is equal to OVERALL. The DEFAULT normal binding is equal to PER_VERTEX. The startIndex is also used for materials, normals, or texture coordinates when the binding indicates that they should be used per vertex.

FILE FORMAT/DEFAULTS
     PointSet {
          startIndex  0
          numPoints   -1
     }

Rotation

This node defines a 3D rotation about an arbitrary axis through the origin. The rotation is accumulated into the current transformation, which is applied to subsequent shapes. The rotation field provides a variety of methods for specifying the rotation.

FILE FORMAT/DEFAULTS
     Rotation {
          rotation  0 0 1  0
     }

Scale

This node defines a 3D scaling about the origin. If the components of the scaling vector are not all the same, this produces a non-uniform scale.

FILE FORMAT/DEFAULTS
     Scale {
          scaleFactor  1 1 1
     }

Separator

This group node performs a push (save) of the traversal state before traversing its children and a pop (restore) after traversing them. This isolates the separator's children from the rest of the scene graph. A separator can include lights, cameras, coordinates, normals, bindings, and all other properties. Separators are relatively inexpensive, so they can be used freely within scenes.

Separators can also perform culling during rendering and picking. Culling skips over traversal of the separator's children if they are not going to be rendered or picked, based on the comparison of the separator's bounding box with the current view volume. Culling is controlled by the renderCulling and pickCulling fields. These are also set to AUTO by default, allowing the implementation to decide whether or not to cull (Inventor currently does not have an automatic culling scheme, so AUTO culling is the same as having culling OFF).

CULLING ENUMS
     ON    Always try to cull to the view volume
     OFF   Never try to cull to the view volume
     AUTO  Implementation-defined culling behavior

FILE FORMAT/DEFAULTS
     Separator {
          renderCulling       AUTO
     }

ShapeHints

By default, Inventor assumes very little about the shapes it renders. You can use the ShapeHints node to indicate that IndexedFaceSets are solid, contain ordered vertices, or contain convex faces.

These hints allow Inventor to optimize certain rendering features. Optimizations that may be performed include enabling back-face culling and disabling two-sided lighting. For example, if an object is solid and has ordered vertices, Inventor turns on backface culling and turns off two-sided lighting. If the object is not solid but has ordered vertices, it turns off backface culling and turns on two-sided lighting. In all other cases, both backface culling and two-sided lighting are off. Note that if the current drawing style is not filled or any clipping planes are in effect, backface culling will not be performed.

The ShapeHints node also affects how default normals are generated. When an IndexedFaceSet has to generate default normals, it uses the creaseAngle field to determine which edges should be smooth- shaded and which ones should have a sharp crease. The crease angle is the angle between surface normals on adjacent polygons. For example, a crease angle of .5 radians (the default value) means that an edge between two adjacent polygonal faces will be smooth shaded if the normals to the two faces form an angle that is less than .5 radians (about 30 degrees). Otherwise, it will be faceted.

VERTEX ORDERING ENUMS
     UNKNOWN_ORDERING    Ordering of vertices is unknown
     CLOCKWISE           Face vertices are ordered clockwise
                          (from the outside)
     COUNTERCLOCKWISE    Face vertices are ordered counterclockwise
                          (from the outside)

SHAPE TYPE ENUMS
     UNKNOWN_SHAPE_TYPE  Nothing is known about the shape
     SOLID               The shape encloses a volume

FACE TYPE ENUMS
     UNKNOWN_FACE_TYPE   Nothing is known about faces
     CONVEX              All faces are convex

FILE FORMAT/DEFAULTS
     ShapeHints {
          vertexOrdering  UNKNOWN_ORDERING
          shapeType       UNKNOWN_SHAPE_TYPE
          faceType        CONVEX
          creaseAngle     0.5
     }

Sphere

This node represents a sphere. By default, the sphere is centered at the origin and has a radius of 1. The sphere is transformed by the current cumulative transformation and is drawn with the current lighting model, drawing style, material, and geometric complexity.

A sphere does not have faces or parts. Therefore, the sphere ignores material and normal bindings, using the first material for the entire sphere and using its own normals. When a texture is applied to a sphere, the texture covers the entire surface, wrapping counterclockwise from the back of the sphere. The texture has a seam at the back on the yz-plane.

FILE FORMAT/DEFAULTS
     Sphere {
          radius  1
     }

SpotLight

This node defines a spotlight style light source. A spotlight is placed at a fixed location in 3-space and illuminates in a cone along a particular direction. The intensity of the illumination drops off exponentially as a ray of light diverges from this direction toward the edges of the cone. The rate of drop-off and the angle of the cone are controlled by the dropOffRate and cutOffAngle fields.

A light node defines an illumination source that may affect subsequent shapes in the scene graph, depending on the current lighting style. Light sources are affected by the current transformation. A light node under a separator does not affect any objects outside that separator.

FILE FORMAT/DEFAULTS
     SpotLight {
          on           TRUE
          intensity    1
          color        1 1 1
          location     0 0 1
          direction    0 0 -1
          dropOffRate  0
          cutOffAngle  0.785398
     }

Switch

This group node usually traverses only one or none of its children. It implements an operation similar to the switch statement in C. One can use this node to switch on and off the effects of some properties or to switch between different properties.

The whichChild field specifies the index of the child to traverse, where the first child has index 0.

A value of -1 (the default) means do not traverse any children. A value of -3 traverses all children, making the switch behave exactly like a regular SoGroup.

FILE FORMAT/DEFAULTS
     Switch {
          whichChild  -1
     }

Texture2

This property node defines a texture map and parameters for that map. This map is used to apply texture to subsequent shapes as they are rendered.

The texture can be read from the file specified by the filename field. Once the texture has been read, the image field contains the texture data. However, this field is marked so the image is not written out when the texture node is written to a file. To turn off texturing, set the filename field to an empty string ("").

Textures can also be specified in memory by setting the image field to contain the texture data. Doing so resets the filename to the empty string.

WRAP ENUM
     REPEAT  Repeats texture outside 0-1 texture coordinate range
     CLAMP   Clamps texture coordinates to lie within 0-1 range
     }

FILE FORMAT/DEFAULTS
     Texture2 {
          filename    ""
          image       0 0 0
          wrapS       REPEAT
          wrapT       REPEAT
     }

Texture2Transform

This node defines a 2D transformation applied to texture coordinates. This affects the way textures are applied to the surfaces of subsequent shapes. The transformation consists of (in order) a non-uniform scale about an arbitrary center point, a rotation about that same point, and a translation. (Note: while the transformations can be thought of as being applied in that order, the GL matrices are actually premultiplied in the opposite order. Therefore, the operations are listed in the reverse order throughout this reference page.) This allows a user to change the size and position of the textures on objects.

FILE FORMAT/DEFAULTS
     Texture2Transform {
          translation  0 0
          rotation     0
          scaleFactor  1 1
          center       0 0
     }

TextureCoordinate2

This node defines a set of 2D coordinates to be used to map textures to subsequent vertex-based shapes (those derived from SoVertexShape). It replaces the current texture coordinates in the rendering state for the shapes to use.

The current texture coordinate binding (see SoTextureCoordinateBinding) determines how texture coordinates are mapped to vertices of shapes. An alternative to using explicit texture coordinates is to generate them using a function; see SoTextureCoordinateFunction.

Texture coordinates range from 0 to 1 across the texture. The horizontal coordinate, called S, is specified first, followed by the vertical coordinate, T.

FILE FORMAT/DEFAULTS
     TextureCoordinate2 {
          point  0 0
     }

Transform

This node defines a geometric 3D transformation consisting of (in order) a (possibly) non-uniform scale about an arbitrary point, a rotation about an arbitrary point and axis, and a translation.

FILE FORMAT/DEFAULTS
     Transform {
          translation       0 0 0
          rotation          0 0 1  0
          scaleFactor       1 1 1
          scaleOrientation  0 0 1  0
          center            0 0 0
     }

TransformSeparator

This group node is similar to the SoSeparator node in that it saves state before traversing its children and restores it afterwards. However, it saves only the current transformation; all other state is left as is. This node can be useful for positioning a camera, since the transformations to the camera will not affect the rest of the scene, even through the camera will view the scene. Similarly, this node can be used to isolate transformations to light sources or other objects.

FILE FORMAT/DEFAULTS
     TransformSeparator {
     }

Translation

This node defines a translation by a 3D vector.

FILE FORMAT/DEFAULTS
     Translation {
          translation  0 0 0
     }

WWWAnchor

The WWWAnchor node loads a new scene into a VRML browser when one of its children is chosen. Exactly how a user "chooses" a child of the WWWAnchor is up to the VRML browser; typically, clicking on one of its children with the mouse will result in the new scene replacing the current scene. A WWWInline with an empty ("") name does nothing when its children are chosen. The name is an arbitrary URL.

The WWWAnchor's map field is an enumerated value that can be either NONE (the default) or POINT. If it is POINT then the object-space coordinates of the point on the object the user chose will be added to the URL in the name field, with the syntax "?x,y,z".

FILE FORMAT/DEFAULTS
     WWWAnchor {
          name ""
	  map NONE
     }

WWWInline

The WWWInline node reads its children from anywhere in the World Wide Web. Exactly when its children are read is not defined; reading the children may be delayed until the WWWInline is actually displayed. A WWWInline with an empty name does nothing. The name is an arbitrary URL.

If the WWWInline's bboxSize field specifies a non-empty bounding box (a bounding box is non-empty if at least one of its dimensions is greater than zero), then the WWWInline's bounding box is specified by its bboxSize and bboxCenter fields. This allows an implementation to view-volume cull or LevelOfDetail switch the WWWInline without reading its contents.

FILE FORMAT/DEFAULTS
     WWWInline {
          name ""
	  bboxSize 0 0 0
	  bboxCenter 0 0 0
     }