[x3d-public] Mantis 27.4.9 NurbSet - Change child geometry model to X3DParametricGeometryNode

John Carlson yottzumm at gmail.com
Sat May 14 00:38:14 PDT 2022


I have spent 2 days on this subject in email, so I think it's time I quit.
I am not a speedy emailer.

John

On Sat, May 14, 2022 at 1:59 AM John Carlson <yottzumm at gmail.com> wrote:

> Follow up after re-reading Mantis  700. The Mantis does not speak of
> NurbsCurve, a subtype node of X3DParametricGeometryNode.    This is the
> biggest sticking point for me.  To me, it's not a surface, but if you say
> so, I will concur!  The language of the standards limits NurbsSet geometry
> to surfaces, if not the interfaces. Shucks!
>
> I would love to add more parametric geometry that includes
> tesselationScale to the standard.  Let me know when we can proceed. I
> realize that I cannot add it to NurbsSet.
>
> On Sat, May 14, 2022 at 1:36 AM John Carlson <yottzumm at gmail.com> wrote:
>
>> Finally, my recommendation:
>>
>> Change nothing unless we want curves and possibly extrusions
>> (pseudo-surfaces) to be in NurbsSet.  Otherwise, proceed.
>>
>> On Sat, May 14, 2022 at 1:29 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> I apologize that this was not in a comment to the website. It's easier
>>> to follow a thread in email.  Read the last paragraph if you want a
>>> conclusion.
>>>
>>> The X3D4 CD Extensible 3D (X3D), ISO/IEC 19775-1:2022, 27 NURBS
>>> Component (web3d.org)
>>> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/nurbs.html#NurbsSet> says
>>> the tesselationScale affects Nurbs surface nodes: "The
>>> *tessellationScale* parameter is scaling the tessellation values in lower
>>> level contained Nurbs surface nodes."
>>>
>>> *Note:  If the contained Nurbs *curve *nodes now possible, but illegal
>>> in a NurbsSet are not scaled by the tessellationScale, things might get
>>> confusing!  But I kind of understand why they aren't!  If NurbsSet only
>>> contains surfaces, why not call it "NurbsSurfaceSet"?*
>>>
>>> I hope we have a good list of Nurbs surface nodes that people can add to
>>> NurbsSet geometry for instead of relying on interfaces.
>>>
>>> Full text of NurbsSet:
>>>
>>> The NurbsSet node groups a *set of Nurbs surface nodes* to a common
>>> group for rendering purposes only. This informs the X3D browser that
>>> the set of Nurbs surfaces shall be treated as a unit during tessellation to
>>> enforce tessellation continuity along borders. The *tessellationScale* parameter
>>> is scaling the tessellation values in lower level contained Nurbs
>>> surface nodes. A set of Nurbs surfaces that use a matching set of
>>> *controlPoint* along the borders shall result in a common tessellation
>>> stepping.
>>>
>>> The geometry represented in the children of this node shall not be
>>> directly rendered. It is an informational node only. Surfaces not
>>> represented elsewhere in the transformation hierarchy shall not be rendered.
>>>
>>> The bounds information is provided for optimization purposes only. A X3D browser
>>> *may choose *[ Editor's note:  Why Don is seeing non-smooth NURBS,
>>> likely--but I'm not too familiar with the standard] to use this information
>>> about when to apply trimming or smooth tessellation between patches based
>>> on the bounds information (EXAMPLE  only smooth when the viewer is
>>> within the bounds).
>>>
>>>
>>> So:
>>>
>>>
>>> 27.4.3 NurbsCurve
>>>
>>> NurbsCurve : X3DParametricGeometryNode {
>>>   SFNode   [in,out] controlPoint NULL  [X3DCoordinateNode]
>>>   SFNode   [in,out] metadata     NULL  [X3DMetadataObject]
>>>   SFInt32  [in,out] tessellation 0     (-∞,∞)
>>>   MFDouble [in,out] weight       []    (0,∞)
>>>   SFBool   []       closed       FALSE
>>>   MFDouble []       knot         []    (-∞,∞)
>>>   SFInt32  []       order        3     [2,∞)
>>>
>>>
>>>
>>> The above has controlPoint, has tessellation, but does not participate in tesselationScale?
>>>
>>>
>>> I'm trying to understand the impact of: X3DNurbsControlCurveNode to surfaces that use it.   The surfaces appear visually to be extrusions, and I now know that NURBS includes extrusions (surprise to me!) from reading the CD standard.
>>>
>>> I guess there's a use case for adding NurbsSwungSurfaces and NurbsSweptSurface to NurbsSets?  Like outlining a X3DNurbsSurfaceGeometryNode?  Sounds okay by me!  It seems confusing that there are no controlPoints to smooth with!  Or is it more like, what set of controlPoints? And no tessellation control!
>>>
>>> NurbsCurve2D
>>>
>>> can't be added to a NurbsSet, thank goodness!
>>>
>>> Are we okay now?  As far as I can tell, the specification will work, but
>>> implementers will have to deal with sticky problems smoothing controlPoint
>>> between surfaces and extrusion surfaces. They'll have to somehow delegate
>>> the controlPoint in the extrusions to a control curve (is this
>>> specified?).  And also excluding NurbsCurve from NurbsSet seems rather
>>> arbitrary, which is a good reason to change the type of the geometry field
>>> in NurbsSet.  When we change the geometry field type, we lose the ability
>>> to separate types of NURBS (curves, extrusions, surfaces) in the NurbsSet
>>> geometry interfaces.
>>>
>>> Thanks,
>>>
>>> John
>>> On Fri, May 13, 2022 at 10:13 AM Brutzman, Donald (Don) (CIV) <
>>> brutzman at nps.edu> wrote:
>>>
>>>> Looking at the Interface Hierarchy shows what implements those types,
>>>> confirming that only Nurbs nodes are involved.  This also clearly
>>>> identifies why we shifted the interface involved.
>>>>
>>>>
>>>>
>>>> +- X3DParametricGeometryNode -+- NurbsCurve
>>>>
>>>>                               +- NurbsSweptSurface
>>>>
>>>>                               +- NurbsSwungSurface
>>>>
>>>>                               |
>>>>
>>>>                               +- X3DNurbsSurfaceGeometryNode -+-
>>>> NurbsPatchSurface
>>>>
>>>>                                                               +-
>>>> NurbsTrimmedSurface
>>>>
>>>>
>>>>
>>>> Dick points out that someday in (some wonderful) future we might allow
>>>> other geometry nodes to get smoothly aligned next to Nurbs nodes.  That
>>>> will be nice – but we are OK for now.
>>>>
>>>>
>>>>
>>>> all the best, Don
>>>>
>>>> --
>>>>
>>>> Don Brutzman  Naval Postgraduate School, Code USW/Br
>>>> brutzman at nps.edu
>>>>
>>>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA
>>>> +1.831.656.2149
>>>>
>>>> X3D graphics, virtual worlds, Navy robotics https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Thursday, May 12, 2022 7:39 AM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>>>> *Cc:* X3D Public Mailing List (x3d-public at web3d.org) <
>>>> x3d-public at web3d.org>
>>>> *Subject:* Re: [x3d-public] Mantis 27.4.9 NurbSet - Change child
>>>> geometry model to X3DParametricGeometryNode
>>>>
>>>>
>>>>
>>>> Understood, i am just trying to work through if there’s any parametric
>>>> geometry which isn’t NURBS, and is thus now inclusive in this modified
>>>> NurbsSet.
>>>>
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Thu, May 12, 2022 at 8:58 AM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>> Please be assured, no new semantics and no new functionality is being
>>>> proposed.  We are addressing a Mantis issue that noted the NurbsSet
>>>> definition was unnecessarily restrictive.  We adjusted the specification
>>>> interface to match that inclusive rationale.
>>>>
>>>>
>>>>
>>>> Changes to implementations are up to them.  Since NurbsSet is a way for
>>>> authors to communicate when various Nurbs nodes are coincident and
>>>> potentially smoothable, it has no impact on functionality and might improve
>>>> rendering appearance by enabling smoothed seams.
>>>>
>>>>
>>>> Thanks for your review.
>>>>
>>>>
>>>>
>>>> all the best, Don
>>>>
>>>> --
>>>>
>>>> Don Brutzman  Naval Postgraduate School, Code USW/Br
>>>> brutzman at nps.edu
>>>>
>>>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA
>>>> +1.831.656.2149
>>>>
>>>> X3D graphics, virtual worlds, Navy robotics https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Wednesday, May 11, 2022 10:40 PM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>>>> *Cc:* X3D Public Mailing List (x3d-public at web3d.org) <
>>>> x3d-public at web3d.org>
>>>> *Subject:* Re: [x3d-public] Mantis 27.4.9 NurbSet - Change child
>>>> geometry model to X3DParametricGeometryNode
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Don, I'm a bit unsure of the new semantics for NurbsSet....it includes
>>>> other parametric geometry nodes which aren't NURBS?
>>>>
>>>>
>>>>
>>>> Would ParametricGeometrySet be a better name than NurbsSet, or a good
>>>> addition to X3D4?
>>>>
>>>>
>>>>
>>>> Is it counterintuitive to look for a "ParametricGeometrySet" inside
>>>> NURBS sections?
>>>>
>>>>
>>>>
>>>> How does this impact browser implementations?
>>>>
>>>>
>>>>
>>>> I don't know if the standard includes parametric, implicit, etc.
>>>> descriptions?
>>>>
>>>>
>>>>
>>>> Are we planning on dropping X3DNurbsSurfaceGeometryNode  in the future?
>>>>
>>>>
>>>>
>>>> NURBS seems a bit specialized, but at least I know I'm looking for
>>>> NURBS.  Parametric seems *way* general, and should probably remain at the
>>>> abstract level.
>>>>
>>>>
>>>>
>>>> I have no other issues that come to mind presently.
>>>>
>>>>
>>>>
>>>> I'm a bit leery of Mantis, so I will now review your next email.    My
>>>> summary:  Can one include more than one abstract type in the allowable
>>>> types?  That is, allow both X3DParametricGeometryNode
>>>>
>>>> and X3DNurbsSurfaceGeometryNode sub node types for geometry?
>>>>
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Wed, May 11, 2022 at 8:06 PM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>> NurbsSet should be inclusive about which nodes an author thinks can be
>>>> rendered together as one smooth surface.
>>>>
>>>>
>>>>
>>>>    - Mantis 27.4.9 NurbSet - Change child geometry model to
>>>>    X3DParametricGeometryNode
>>>>    - https://www.web3d.org/member-only/mantis/view.php?id=700
>>>>
>>>>
>>>>
>>>>    - X3D4 Architecture, NURBS component, 27.4.8 NurbsSet
>>>>    -
>>>>    https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/nurbs.html#NurbsSet
>>>>
>>>>
>>>>
>>>> Since X3DParametricGeometryNode includes X3DNurbsSurfaceGeometryNode,
>>>> changed all three NurbsSet geometry fields from X3DNurbsSurfaceGeometryNode
>>>> to X3DParametricGeometryNode.
>>>>
>>>>
>>>>
>>>> NurbsSet : X3DChildNode, X3DBoundedObject {
>>>>
>>>>   MFNode  [in]     addGeometry                [
>>>> X3DParametricGeometryNode]
>>>>
>>>>   MFNode  [in]     removeGeometry             [
>>>> X3DParametricGeometryNode]
>>>>
>>>>   MFNode  [in,out] geometry          []       [
>>>> X3DParametricGeometryNode]
>>>>
>>>>   SFNode  [in,out] metadata          NULL     [X3DMetadataObject]
>>>>
>>>>   SFFloat [in,out] tessellationScale 1.0      (0,∞)
>>>>
>>>>   SFVec3f []       bboxCenter        0 0 0    (-∞,∞)
>>>>
>>>>   SFVec3f []       bboxSize          -1 -1 -1 [0,∞) or −1 −1 −1
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> This changes X3DUOM and possibly some implementations.  Comments
>>>> welcome.
>>>>
>>>>
>>>>
>>>> We current intend to accept this change as resolved once X3DUOM is
>>>> updated.
>>>>
>>>>
>>>>
>>>> all the best, Don
>>>>
>>>> --
>>>>
>>>> Don Brutzman  Naval Postgraduate School, Code USW/Br
>>>> brutzman at nps.edu
>>>>
>>>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA
>>>> +1.831.656.2149
>>>>
>>>> X3D graphics, virtual worlds, Navy robotics https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> x3d-public mailing list
>>>> x3d-public at web3d.org
>>>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20220514/3605af56/attachment-0001.html>


More information about the x3d-public mailing list