Some Proposals for Updating the VRML Specification
The following are some proposed changes to the
Draft VRML 1.1 specification.
This list has been revised to reflect the updated VRML specification,
which contains clarifications from the original version.
Only those changes that do not appear in the draft 1.1 specification are
listed below.
Please send any comments on these proposed changes to the www-vrml
mailing list
(www-vrml@wired.com).
These are grouped into a number of different categories.
Errors
- The description for the LOD node still says "Each value in the ranges
array should be less than the previous value", which of course is wrong.
It should read "greater than".
- The paragraph on "Issues for low-end rendering systems" at the end of the
SpotLight description is good, but it should also appear after the
DirectionalLight node. It should also be added after the PointLight node,
and removed from the PointSet node where it makes no sense.
- The section describing instancing using USE appears to have been deleted.
Since there are still references to USE elsewhere in the spec, I assume this
was not deliberate...?
- The description of the Text node refers to "extent", but the actual node
syntax still shows "width".
Changes
- Switch nodes should be treated as Separators.
New Nodes
- A "billboard" or "sprite" node, whose orientation is always locked to that
of the camera.
New or Changed Fields
- The "on", "intensity" and "color" fields for lights should be "input"
fields.
- All the fields of the Environment node should be "input" fields.
- Add a transparencyColor field to the Texture2 node, for those file
formats (such as JPEG) that do not provide an alpha channel.
Alternatively, require the use of PNG instead of JPEG when an
alpha channel is needed.
- Add a primitiveVisibility field to the ShapeHints node. The value would
be one of INSIDE, OUTSIDE, or BOTH; the INSIDE setting would cause primitives
(Sphere, Cone, Cylinder, Cube) to be visible from the inside only, OUTSIDE
(the default) would make them visible from the outside only, and BOTH would
make them visible from both the inside and the outside. (See also the
proposed clarification regarding negative radius values for Cone, Sphere
and Cylinder).
- Change the map field of the WWWAnchor node to be an SFBitmask, with
values of POINT, ORIENTATION and TEXTURE. POINT causes the camera's
(object-space) location to be sent, ORIENTATION causes its (object-space)
orientation to be sent, and TEXTURE causes its texture map coordinates to
be sent. Regardless of the order in which the values are specified,
they're always sent with the POINT first (if specified), the ORIENTATION
next (if specified) and the TEXTURE coordinates last (if specified).
The value NONE would also be accepted, in which case none of the extra
information is sent.
- Add a "tesselation" field to the ShapeHints node, giving the number of
faces to use for tesselating a Sphere, Cone or Cylinder.
- Add a "quality" field to the Texture2 node. It would be an
SFEnum, with values of PERSPECTIVE and LINEAR, to indicate whether true,
perspective-correct texture mapping is required or whether faster
bi-linear can be used.
-
The IndexedFaceSet should have a textureIndex field that would allow
textures to be associated with each face, rather than requiring multiple
face sets for objects with multiple textures.
Clarifications
- Deprecate the use of GIF due to licensing restrictions.
- The interpretation of the textureCoordIndex field needs to be spelled out,
and PER_VERTEX_INDEXED bindings in general. The specification is still
unclear on this point.
- Negative radius values for Cones, Cylinders and Spheres should turn them
inside-out. This, combined with shapeType UNKNOWN_SHAPE_TYPE, will produce
primitives that are visible from both the inside and the outside.
Alternatively, new fields could be added to the ShapeHints node to indicate
whether subsequent primitives should be visible from the outside, the
inside, or both; this is probably a better (and clearer) way of doing it,
since it avoids questions like "what if a cone has a negative radius and a
negative height?". It also lets us turn cubes inside-out.
- It should be stated that relative URLs should be handled as described in
RFC 1808.
- In the description of WWWAnchor, it should be made clear that the
"deepest" anchor wins.
- It is strongly suggested that DEF'd names be kept unique.
- It should be made clear that definintions for new nodes (done with
"isA" and "fields") are file scoped; they only need to be specified the
first time.
- The exact meaning of the width field of the AsciiText node is unclear.
- The proper uses of the focalDistance field should be spelled out.
The following wording has been proposed by Alan Walford for the 1.0
clarifications document:
focalDistance is the distance from the Camera to a point in space along
the vector defined by the view direction given by the Camera's angles
and position. This point in space is where the "viewer" is focused attention.
This value is a hint only and may be used by a browser to define the
speed of travel for flying or walking.
For example, a focalDistance of 5 means the object of primary concern is 5
meters from the camera and the browser should adjust flying speed to reach that
point in a reasonable amount of time. If the distance was 50 meters then
perhaps the browser can use this as a hint to travel 10 times faster.
focalDistance is not to be confused with
focal length used to describe a lens in optics.
The heightAngle of a PerspectiveCamera can be used to simulate a particular
lens and camera. To calculate a heightAngle use the following formula:
"heightAngle = 2.0 * arctan( (verticalFormat/2) / focalLength )".
- Drop support for unquoted strings, or clarify the rules regarding
commas and closing brackets and embedded quotes).
[proposed by steffel@blacksun.com]
- Consider changing to ANSI-C standard for multi-line SFStrings.
[proposed by steffel@blacksun.com]
(It's not clear that this adds any additional functionality).
- Specify whether SFStrings containing linefeeds should lead to multiple
lines of text in an AsciiText node.
[proposed by steffel@blacksun.com]
- Required that one class of SFBitmask should
have no more than 32 values (so that they fit inside a 32-bit LONG value).
[proposed by steffel@blacksun.com]
- Make it clear that users can define their own mnemonics for SFEnum in
user defined types.
[proposed by steffel@blacksun.com].
General
- Support for animated texture maps. This could be done by allowing
the file to be of type MPEG, or by allowing the filename field in the
Texture2 node to be an MFString (to specify multiple frames for a very
short animation).
- Support the use of degrees instead of radians throughout, by
recognizing a 'd' or 'D' suffix. For example, "0 1 0 45D".
Edited by Bernie Roehl
(
broehl@sunee.uwaterloo.ca).
Last updated December 22 1995
QUE Home Page
For technical support for our books and software
contact support@mcp.com
© 1996, Que Corporation