[X3D-Public] X3D spec errors about NURBS component
Joe D Williams
joedwil at earthlink.net
Thu Apr 1 07:45:21 PDT 2010
> While implementing NURBS in my view3dscene,
Thanks Michalis, for these important inputs.
Best Regards,
Joe
----- Original Message -----
From: "Michalis Kamburelis" <michalis.kambi at gmail.com>
To: "x3d-public PUBLIC" <x3d-public at web3d.org>
Sent: Thursday, April 01, 2010 6:34 AM
Subject: [X3D-Public] X3D spec errors about NURBS component
> Hi,
>
> While implementing NURBS in my view3dscene, I noticed a couple of
> specification errors for this component
> (http://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/nurbs.html).
> Here they are. They are mostly small errors, except issue 1.
> ("Normals
> orientation" below). Comments (especially about issue 1.) are
> welcome.
>
> If no objections, I understand that the correct place to submit
> these is
> on http://www.web3d.org/x3d/specifications/spec_feedback/ (or is
> there
> any better place? Mantis is member-only, as far as I can see?).
>
> 1. Normals orientation for NURBS surfaces is not given anywhere.
> This
> means two problems:
>
> 1.1.: Specification doesn't say from which side the surface is
> visible
> when solid=TRUE is used. Should be fixed similar to how Extrusion
> specification explicitly gives order or rendering quads. Proposal:
> add
> to the X3DNurbsSurfaceGeometryNode paragraph:
>
> "When solid=TRUE is used, the surface should be visible only from
> the
> side that appears ccw (counter-clockwise) on the screen, assuming a
> surface's quads would be rendered in this order:
>
> point(u , v );
> point(u-1, v );
> point(u-1, v-1);
> point(u , v-1);
>
> Where u is the parameter generating successive points along the u
> dimension, and v is the parameter generating successive points along
> the
> v dimension.
> "
>
> This is compatible with existing implementations: at least
> white_dune,
> octaga player, and my own.
>
> 1.2: Also, specification doesn't say from which side the normal
> generated by NurbsSurfaceInterpolator.normal_changed points to. This
> could be fixed by adding
>
> "Normals generated by normal_changed event should point from the
> ccw
> (counter-clockwise) side of the surface, assuming the order of
> surface
> quads is as given in the X3DNurbsSurfaceGeometryNode section."
>
> 2. Near the end of "27.2.3 Common geometry fields and correctness":
>
> These two phrases contradict each other (the "-1"):
> "The number of knots shall be equal to the number of control points
> plus the order of the curve."
> "the exact number required (numcontrolPoint + order − 1)"
>
> Should be fixed by removing "-1" from the 2nd part, that is it
> should
> be "the exact number required (numcontrolPoint + order)"
>
> 3. In "27.3.2 X3DNurbsSurfaceGeometryNode":
>
> There are 2 sentences refering to the non-existing "closed" field:
> "A closed surface shall be specified by repeating the limiting
> control
> points and setting the closed field to TRUE. If the closed field is
> set
> to FALSE, the implementation shall not be required to smoothly blend
> the
> edges of the surface in that dimension into a continuous surface."
>
> Above 2 sentences should be removed, as the way of closing the
> surface
> is explained correctly in the very next sentences: ("A closed
> surface in
> either the u-dimension or the v-dimension shall be specified by
> repeating the limiting control points for that dimension and setting
> the
> respective uClosed or vClosed field to TRUE....)
>
> 4. In "27.4.9 NurbsSet":
>
> The spec of geometry, addGeometry, removeGeometry fields/events
> says
> that "NurbsSurface" nodes are allowed there. But NurbsSurface
> doesn't
> exist in X3D... (I guess this is a leftover from VRML 97 spec.)
>
> Should be fixed, replacing "NurbsSurface" with
> X3DNurbsSurfaceGeometryNode.
>
> Or, alternatively, could be fixed by replacing "NurbsSurface" with
> more general X3DParametricGeometryNode. This would be more flexible
> for
> VRML authors (as it includes also NurbsCurve), but will require
> change
> to NurbsSet text: text talks about "groups a set of Nurbs surface
> nodes", should be changed to "groups a set of Nurbs geometry nodes".
>
> 5. In "27.4.10 NurbsSurfaceInterpolator":
>
> Text says
> "Sending a set_fraction input computes a 3D position on the surface
> for the given u and v coordinates, from which the position in the
> surface shall be then sent by value_changed."
>
> but there's no value_changed output event. There are only
> position_changed and normal_changed output events. Fortunately, the
> intention of position_changed and normal_changed is obvious.
>
> Could be fixed like
> "Sending a set_fraction input computes a 3D position and normal on
> the
> surface for the given u and v coordinates. The computed position on
> the
> surface shall be sent by position_changed, and the computer normal
> shall
> be sent by normal_changed."
>
> 6. In "27.4.4 NurbsCurve":
>
> The non-existing type "SFBoolean" is mentioned, should be fixed to
> "SFBool".
>
> Michalis
>
> _______________________________________________
> X3D-Public mailing list
> X3D-Public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
More information about the X3D-Public
mailing list