[X3D-Public] CAD examples errors
Michalis Kamburelis
michalis.kambi at gmail.com
Wed Apr 24 11:33:06 PDT 2013
Hi,
I noticed a link to CAD component examples on
http://www.web3d.org/x3d/content/examples/Basic/CAD/ . It seems there
are a couple of errors in the test files, i.e. they do not conform to
the X3D specification (they declare in header X3D 3.0 or 3.1 spec versions).
1. "Cad Design Pattern Examples": contains Transform node inside
CADFace. This is invalid, X3D spec (checked 3.1 and 3.3 versions) says
that CADFace can only contain (inside "shape" field) the [X3DShapeNode,
LOD] nodes. So, Transform is not allowed there.
2. "Cad Geometry Extern Prototypes": it indirectly (though
http://www.web3d.org/x3d/content/examples/Basic/CAD/CadGeometryPrototypes.wrl
) links to
http://www.web3d.org/x3d/content/examples/Basic/development/MetadataPrototypes.wrl
, and MetadataPrototypes.wrl is invalid: the manner in which it uses
DEF/USE of "HideWarnings" is invalid. It makes "DEF HideWarnings" inside
a PROTO MetadataDouble, and then inside another PROTO MetadataFloat it
does "USE HideWarnings".
This is incorrect, as each PROTO has a separate namespace for DEF/USE
names. See X3D 3.3 spec:
http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/concepts.html#PROTOdefinitionsemantics
: "Nodes given a name by a DEF construct inside the prototype may not be
referenced in a USE construct outside of the prototype's scope.".
The simplest fix would be to update MetadataPrototypes.wrl to always do
"DEF HideWarnings ... { }" instead of trying to reUSE the HideWarnings name.
3. "Cad Geometry Prototypes": the example in classic encoding
(CadGeometryPrototypes.x3dv) has a parsing error: on line 110, within a
url with ecmascript: contents, the double quotes should be escaped.
There is:
//colorPerVertex ignored in IndexedQuadSet, and always treated as "true"
but it should be
//colorPerVertex ignored in IndexedQuadSet, and always treated as \"true\"
The version in XML encoding seems Ok, so it's probably some bug in
(probably automatic) generation of the classic version.
4. "CADPart Child Transformation Alternative A": same problem as 1.,
Transform node is used inside CADFace. The comments inside say
"Developer scene to explore Mantis Issue 528 Alternative A for
transformation of CADFace children: allow Transform node as child of
CADFace."
and links to member-only
http://www.web3d.org/membership/login/mantis/view.php?id=528 . I guess
you guys are working on it :) Either the testcase should be fixed, or
the spec should be updated to allow Transform as child of CADFace in
next X3D version. This example declares X3D 3.1 in the header.
I see that "CADPart Child Transformation Alternative B" and "CADPart
Child Transformation Alternative C" are exploring other ideas for
putting transformations inside.
Everything else seems working perfectly :) I tested with view3dscene,
simply opening the files in XML and classic encoding with view3dscene
(from snapshots http://michalis.ii.uni.wroc.pl/castle-engine-snapshots/
, since the CAD level 2 support in view3dscene is new).
See X3D specification "CAD geometry component": for X3D 3.1:
http://www.web3d.org/files/specifications/19775-1/V3.1/Part01/components/CADGeometry.html
, for latest X3D 3.3:
http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/CADGeometry.html
. I think that my comments above are true regardless of X3D spec version.
Regards,
Michalis
More information about the X3D-Public
mailing list