========
= VRML =
========

-----------------------------------------------------------------------------
Note:	- AsciiText nodes are not supported.
	- creaseAngle field in ShapeHints nodes is ignored
	- Faces that are not simple convex polygons are not handled correctly
-----------------------------------------------------------------------------


TkSM provides the following VRML routines:

	- vrml_scan <channel>

	- vrml_parse <cell> <model prefix>

	- vrml_continue <channel>

	- vrml_skip

	- vrml_end


!!!!!IMPORTANT!!!!!

vrml_parse will periodically invoke window and idle event handlers. Since
the VRML parser module is non-reentrant, the user must take extra precaution
when these handlers use the VRML parser routines.

!!!!!IMPORTANT!!!!!


A VRML file is processed as follow:

- the user calls <vrml_scan> to scan in a VRML file.  Nodes that reference
  external files (Texture2 and WWWInline nodes) are returned.

- processing continues with a call to <vrml_parse>, which traverses the scene
  graph and converts nodes into models.

- if <vrml_parse> encounters a Texture2 or an WWWInline node that requires
  access to an external file, it will stop and return to the user a list of two
  elements.  The first element specifies the type of the node (Texture2 or
  WWWInline), and the second element gives the URL for the file.

- the user may retrieve the file, and resume processing with <vrml_continue>, or
  he may skip the node (when the file is not available) with <vrml_skip>.

- upon successful completion, <vrml_parse>, <vrml_continue>, and <vrml_skip>
  will return a list containing the following:

	list of model names
	list of strings from Info nodes
	list of DEF names and the models that USE these names
	list of WWWAnchor nodes
	list of LOD nodes
	list of cameras
	list of light sources
	list of scripts

- the user may terminate processing and free up memory at any point with
  <vrml_end>.



-----------------
Custom VRML nodes
-----------------

- Script nodes:

	Script {
		language	# SFString
		script		# SFString
	}

- PerspectiveCamera:

	A new field, focalLength, of type MFFloat, can be used to control
	the z-component value of the viewport's -prp option. Default value
	is 1.
