Vorlon 1.21 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.
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.
- An Error is an illegal VRML statement.
- A Warning is a legal but dangerous or unnecessary VRML statement.
- A Nonconformance is a value that is outside the range recommended by
Table 7-1 of the VRML 97 specification. The conformance tests performed
by Vorlon are listed here.
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
- 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".
- 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.
- 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.
- 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.
- 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.
- field value checks: Vorlon verifies
that int, color, boolean, and float fields are valid. Repeated field declarations
are flagged with a warning.
- 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.
- 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.
- ROUTE type checks: Vorlon verifies
that the source and destination fields of a ROUTE are of the same type.
- Interpolator checks: verifies
key fields are non-decreasing, verifies there are the correct number of
keyValue fields
- 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.
- 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
- url with a forward reference to a Viewpoint is flagged as unknown DEF.
- Empty interpolators should be reported as a warning rather than an
error
- Polygon count wrong in some cases where polygons contained in PROTOS.
- "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".
- ROUTEing an eventOut to a Field is not reported as an error.
- Cannot handle file names with space characters.
- 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)
- urls that are passed as parameters to PROTO are not checked when "-url"
flag is used.
- Quotes around DEF names not reported as an error
See the chisel buglist.
Version 1.1 Bugs Fixed in Version 1.12
- Flag not handled correctly if specified before filename
- IndexedFaceSet point field with default value in PROTO interface not
handled correctly.
- Exceptions occur and Vorlon stops processing when running Java 1.0.2
and using "-url" flag and a GZIP file is encountered.
- 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.
- 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.
- 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.
- PixelTexture handling inefficient, get OutOfMemory exception easily,
numeric values of texture not checked.
- Flag errors with "Error,..." similar to warning indications.
- negative and 0 scale values not reported as errors
- Non-digits in coordIndex[] not reported as errors.
- PROTO with no implementation not reported as an error.
- WorldInfo (and other nodes) with an SFString continued on another line
reports error on continuation line.
- Color values using exponent like 6.3e-05 are reported as errors, detected
as not being in range 0 to 1.
- IndexedFaceSet point field with default value in PROTO interface not
handled correctly.
How Vorlon was Tested
- 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.
- 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.
- Feature tests. These tests verify that each of the features
in the "implemented" table actually work as expected.
- 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.
- 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.
- 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.