Vorlon 1.5 Release Notes


What's new in this release

Bug fixes and performance enhancements. Bugs are now recorded as Chisel bugs, since Chisel includes Vorlon. These bugs are not tracked separately. See Chisel bug fix list for details.

New in Version 1.5

A new flag: -graph to show scene graph. A new flag: -nurbs allows Vorlon to support blaxxun nurbs proposal. Added h-anim specification version 1.1 support. Fixed PROTO nesting non-conformance bug, which detected nesting by PROTO instantiation rather than PROTO definition. Fixed self-reference node bug, which reported the common case of scripts contained in grouping nodes referring to their parent as an error.

New in Version 1.2

A new error category, flagged with keyword "Nonconformance", warns against base profile nonconformance, as specified in the VRML 97 specification Table 7-1. Vorlon performs a large number of conformance tests, listed here.

More complete checks for IndexedFaceSets, IndexedLineSets, ElevationGrids, Extrusions

In addition, some specific problems with the previous release were fixed (see Bugs fixed for full list).


Checks performed by Vorlon

Data type checks 
ROUTEs verifies source and destination types are same
PROTOs verifies IS types are same
Node fields verifies node fields contain correct type of node or PROTO

 

Node specific checks 
Interpolators verifies increasing key values, verifies ratio of key to keyValue entries
IndexedFaceSet verifies faces have at least 3 edges, verifies correct relationship between coord/coordIndex, texCoord/texCoordIndex, colorPerVertex/color/colorIndex, normalPerVertex/normal/normalIndex.  Warning if extra values are present that are ignored, error if not enough values present.  Warning if there are no faces, warning for each unused coordinate, texture coordinate, color, normal  Nonconformance if there are more than 10 sides to a face.
ElevationGrid verifies at least xDimension, zDimension at least 2
Extrusion verifies base profile conformance, crossSection*spine < 2500
Background verifies at least 2 colors, at least 1 angle, and 1 more color than angle for skyColor and groundColor
LOD verifies range values increasing, at least two nodes in LOD, 1 more node than range value

Errors, Warnings, Nonconformances

The following table lists the messages reported by Vorlon. There are three categories of messages: Nonconformance, Warning or Error. The category name is always the first word in the message.

Vorlon Output

Checks this information If incorrect reports(2.)
Table 7-1 base profile conformance(1.) Nonconformance
Node & PROTO type checks(4.) Error
Node & field name spelling(5.) Error
VRML header Error
ROUTE nodes/fields Error
Field values(6.) Error, Warning
IS <field> spelling(7.) Error
IS/ROUTE type checks(8.,8.) Error
Interpolator key/keyValue(10.) Error
IndexedFaceSet numerous checks(11.) Error
Duplicate DEFs Warning
Duplicate PROTOs Warning
Default field values used Warning

  Notes

  1. Table 7-1 conformance: You can check specifically for base profile conformance with the -conformance command line flag. All base profile messages are flagged with the keyword "Nonconformance".
  2. Limiting output: You can disable warnings with the -nowarning command line flag. You can disable both warnings and errors with the -conformance command line flag.
  3. Checking nested url references: You can add nested url checking with the -url command line flag. Whenever a field or statement refers to a URL, Vorlon will automatically check for the existence of these files, both locally and remotely.  If the URL is a local reference (i.e. just the file name or path name as opposed to a complete URL) to another VRML file (as opposed to a texture map, script, etc.), Vorlon will add this file to the queue of files to be processed. Files may be nested to any level.
  4. Node and PROTO type checks: Some SFNode fields are limited to nodes of specific types.  For example, the "geometry" field of a Shape node is limited to geometry nodes like Box, Cone, etc.  Vorlon is aware of 12 basic node data types:  appearance, color, coordinate, fontstyle, geometry, material, normal, sound source, texture, texture coordinate, texture transform, and grouping nodes.  PROTOs are also type checked using these node types, with the first node in the PROTO determining its node data type.  These checks only occur on fields that require a specific node data type.
  5. Field name spelling: Both built in nodes and PROTOs have a set of field names.  When these are used, the names are validated against the actual set allowed.
  6. field value checks: Vorlon verifies that int, color, boolean, and float fields are valid. Repeated field declarations are flagged with a warning.
  7. IS field spelling: Fields passed into PROTOs can be mapped into other fields within the PROTO using IS.  The name of the PROTO field (on the right of IS) is checked against the PROTO parameter fields.
  8. IS type checks: PROTO fields are referenced within the PROTO with the "IS" statement. Vorlon checks that the fields on both sides of the "IS" are of the same type.  PROTO fields that are not referenced by the "IS" statement are flagged with a warning.
  9. ROUTE type checks: Vorlon verifies that the source and destination fields of a ROUTE are of the same type.
  10. Interpolator checks: verifies key fields are non-decreasing, verifies there are the correct number of keyValue fields
  11. IndexedFaceSet checks: reports warnings for unused coordinates, texture coordinates, normals, colors. Reports warning for no faces, extra texCoordIndex, normalIndex, colorIndex values. Reports errors for not enough texCoord/texCoordIndex, normal/normalIndex, color/colorIndex values. Reports errors for texCoordIndex/normalIndex/colorIndex out of synch with coordIndex, reports exact location of out of synch condition. Validates coordIndex values.
  12. right bracket/brace: notes location of missing right brackets/braces

Node Level Type Checks

The following tabele lists all the Node level type checks performed by Vorlon.  In the VRML 2.0 specification, some fields must be of a particular type.  The following is a complete list of these types, and what fields only accept each type.

In addition to nodes listed in the "Nodes of this type" column, PROTO's in which that type is the first node also pass the type check.

Node Type Nodes of this type Fields accepting this type
Appearance Appearance Shape.appearance
Color Color ElevationGrid.color, IndexedFaceSet.color, IndexedLineSet.color, PointSet.color
Coordinate Coordinate IndexedFaceSet.coord, IndexedLineSet.coord, PointSet.coord
FontStyle FontStyle Text.fontStyle
Geometry Box, Cone, Cylinder, ElevationGrid, Extrusion, IndexedFaceSet, IndexedLineSet, PointSet, Sphere, Text Shape.geometry
Material Material Appearance.material
Normal Normal ElevationGrid.normal, IndexedFaceSet.normal
SoundSource AudioClip, MovieTexture Sound.source
Texture ImageTexture, MovieTexture, PixelTexture Appearance.texture
TextureCoordinate TextureCoordinate ElevationGrid.texCoord, IndexedFaceSet.texCoord
TextureTransform TextureTransform Appearance.textureTransform
Grouping Anchor, Billboard, Collision, Group, Transform Collision.proxy

Known Bugs in Version 1.12

  1. url with a forward reference to a Viewpoint is flagged as unknown DEF.
  2. Empty interpolators should be reported as a warning rather than an error
  3. Polygon count wrong in some cases where polygons contained in PROTOS.
  4. "set_xxxxxx" eventIn flagged as errors when used in PROTOs, e.g. "set_rotation IS set_rotation" used in a Transform inside a PROTO that declares a set_rotation eventIn, reported as an error that Transform has no field named "set_rotation".
  5. ROUTEing an eventOut to a Field is not reported as an error.
  6. Cannot handle file names with space characters.
  7. PROTO declaration (not instance) in "children" field not reported as an error, instead PROTO not available in Vorlon checks (i.e. not included in PROTOs available to the scene)
  8. urls that are passed as parameters to PROTO are not checked when "-url" flag is used.
  9. Quotes around DEF names not reported as an error

See the chisel buglist.

Version 1.1 Bugs Fixed in Version 1.12

  1. Flag not handled correctly if specified before filename
  2. IndexedFaceSet point field with default value in PROTO interface not handled correctly.
  3. Exceptions occur and Vorlon stops processing when running Java 1.0.2 and using "-url" flag and a GZIP file is encountered.
  4. Mistaken check for a file "javascript" when:  url [ "javascript: ..." ]  used in an Script node contained in an Inlined file, bug doesn't occur if the [] characters are not part of the url field.
  5. Only first default field of each type marked with "Field value is default" warning, i.e. first: "repeatS TRUE" of a texture node marked this way, a later "repeatS TRUE" not flagged with the warning.
  6. USEing a texCoord that doesn't have enough coordinates is not flagged as an error.  General form of this problem with IndexedFaceSet texCoord/normal/color & texCoordIndex/colorPerVertex/colorIndex/normalPerVertex/normalIndex also fixed -- warnings generated if too many values (browser getting values that are ignored) -- errors generated if not enough values or index fields get out of synch with coordIndex.
  7. PixelTexture handling inefficient, get OutOfMemory exception easily, numeric values of texture not checked.
  8. Flag errors with "Error,..." similar to warning indications.
  9. negative and 0 scale values not reported as errors
  10. Non-digits in coordIndex[] not reported as errors.
  11. PROTO with no implementation not reported as an error.
  12. WorldInfo (and other nodes) with an SFString continued on another line reports error on continuation line.
  13. Color values using exponent like 6.3e-05 are reported as errors, detected as not being in range 0 to 1.
  14. IndexedFaceSet point field with default value in PROTO interface not handled correctly.

How Vorlon was Tested

  1. Book CD tests. Vorlon was run on all the "wrl" files included in four notable VRML 2.0 books: The Annotated VRML 2.0 Reference Manual, VRML 2.0 Sourcebook, Late Night VRML 2.0, and Teach Yourself VRML 2.0 in 21 days.
  2. Table 7-1 Base Profile tests. These tests verify the Table 7-1 checks, flagged by the keyword "Nonconformance". More information on the test files is available here.
  3. Feature tests. These tests verify that each of the features in the "implemented" table actually work as expected.
  4. Generated tests. It is very tedious to come up with all possible type checking tests, so "wrl" files were generated with every possible legal and illegal node type field assignment, as well as identical tests using PROTOs.
  5. Bug Report tests. Thanks to everyone who has reported bugs, and sent a ".wrl" file! This is a diverse collection of VRML files with syntax previous versions of Vorlon did not handle correctly.
  6. Miscellaneous tests. These are various files we have collected from a variety of sources.

Back.

Copyright © 1997, 1998 by Trapezium Development LLC. All rights reserved.