[X3D-Public] X3D spec errors about NURBS component

Richard F. Puk puk at igraphics.com
Thu Apr 1 09:54:34 PDT 2010


Hi, Michalis --

These are worthwhile discussion points. Please submit them using the standard spec_feedback mechanism to ensure that they are formally considered.

  -- Dick

/******************************************
| Richard F. Puk, Ph.D., President
| Intelligraphics Incorporated
| 7644 Cortina Court, Carlsbad, CA  92009-8206
| Tel:  +1-760-753-9027   Cell:  +1-760-809-9027
| E-mail:  puk at igraphics.com
| Web:  http://www.igraphics.com/
\******************************************




> -----Original Message-----
> From: x3d-public-bounces at web3d.org [mailto:x3d-public-
> bounces at web3d.org] On Behalf Of Michalis Kamburelis
> Sent: Thursday, April 01, 2010 6:34 AM
> To: x3d-public PUBLIC
> 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