Viper
Description
Viper is a Java-based VRML parser and scene graph generator that
provides both syntax and semantic level checking as per the VRML '97 specification.
Please see below for a list of what's supported
, what's not supported and known
bugs.
Test your VRML97 world (.wrl) file for conformance to the VRML '97
Specification using our server-based version of the Viper parser.
Installation
See the Installation
and Download Area
Note that the implementation relies on two files: "stdNodes.wrl" and
"constraints.wrl". If either of these are incorrect, checks will not be
performed correctly.
Also note that the release includes the subdirectory "vrml". We've included
here a partial implementation of the java classes defined in Annex B of
the Vrml spec. What we didn't need, we didn't implement. In theory you
should be able to replace this set of classes with your own vrml classes.
This has not been tried, so your mileage may vary.
What's Supported
-
All nodes are now supported, including the Script node, PROTOS and EXTERNPROTO's.
-
Complete syntax checking.
-
Scene Graph construction and display.
-
Hierarchical checking is supported for all nodes
-
DEF/USE statements are checked.
-
Top-level Route statements are checked.
-
All constrained field values are checked to ensure they fall within the
allowed range of values.
-
SF/MF color values are checked to ensure valid values.
-
SF/MF rotation values are checked for normalization.
-
SFImage values are checked to ensure correct number of pixel values and
that each pixel value has the right number of components.
-
Field names are checked to ensure only valid fields are included in a node
instance.
-
Duplicates fields are flagged.
-
Interpolator nodes are checked to ensure that the ratio of the number of
keyValues to keys is correct.
-
Base Profile Checking for compliance with Table 7.1 of the VRML '97 specifications
is now supported. All constraints on the contents of the VRML file are
checked. Checking of non-VRML files (JPEG, PNG, etc.) is NOT supported.
What's not Supported
-
Non-VRML files are not checked when doing base profile checking.
Known Bugs
Note:The only known bug in viper that requires fixing is
its excesive memory consumption in processing some large files. In some
cases the solution described below for processing large SFImages may work,
in other cases it may not. Large SFImages require a lot of memory to process.
An image with 64K pixels requires roughly 8 MBytes to process. To process
a file that includes more than one such image will probably require using
the java -mx option when running the parser.
-
For example:
-
java -mx24m Parser -f file.wrl
may be necessary to process a vrml file with two 64K images.
For more information on Viper, contact
michael.kass@nist.gov