[x3d-public] Mantis 27.4.9 NurbSet - Change child geometry model to X3DParametricGeometryNode; smoothing adjacent normal vectors

John Carlson yottzumm at gmail.com
Fri May 13 18:27:13 PDT 2022


I’m seeing that a Bezier surface is a special case of NURBS in the X3D
standard under NURBS, 27.2.2

https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/nurbs.html

My guess is one can constrain NURBS or NurbsSets such that they become
Bezier surfaces, and thus, smoothable

I hope that and the previous message answers Don’s puzzle about edgeNormal.
  It’s up to the designer or tools to construct NURBS that can be put in a
smoothed NurbsSet, and that’s probably why some NURBS nodes cannot be
placed in a NurbsSet, and that’s why there are 2 abstract nodes (well, 3)
in NURBS.   If you want more generic grouping for smoothing, create a
ParametricGeometrySet, Ok?

The danger in of pushing up the interface is you may allow NURBS which
can’t be smoothed, unlike Bezier NURBS and perhaps others, which can be
smoothed.   I have not heard of smoothing a NurbsCurve?  Are we intending
that, and do we have enough information to smooth a curve with a surface?
I think we may at a low level (control points or vertices)

I hope people are okay with stream of thought communication.   I often need
a teddy bear to think about things.   I think people have actually bought
me a teddy bear.

John


On Fri, May 13, 2022 at 7:02 PM John Carlson <yottzumm at gmail.com> wrote:

> As I suspected, there do not appear to be normals under that name in NURBS
> curves and surfaces in the standard.
>
> Note than animation can affect normals through a _changed field.
>
> So i doubt if NURBS for Geo can support non-computed normals.   Geo might
> still provide normals which could affect lighting,  but normals sound like
> a space hog.
>
> I suggest we look to scanning geometry for normals.
>
> My understanding is that the 4x4 grid of control points shares control
> points with other 4x4 grids.  What makes sense to me is they share the
> control points on the edges and vertices, and *perhaps* 3 control points
> need to be colinear crossing the edge for each control point on the edge,
> and *perhaps* 5 control points need to be coplanar crossing the corners of
> 4 adjacent 4x4 grids.  This why one differentiates a bezier curve from a
> b-spline curve (exercise left to reader).  In the NxN case, IDK.  Sharing
> control points (not only vertices) is what makes the whole NurbsSet smooth.
>
> I hope this clears up any confusion and helps.
>
> Don, if edgeNormals were required, there would probably be normals as
> fields for all control points.
>
> Look to textures for any normal colors.
>
>
> At one point I considered using 6 control points per “NURBS” to collapse
> the earth once it was tessellated into “triangle NURBS.”   The idea was to
> show distance as time to communicate such that the earth would retain
> smoothness as it collapsed
>
> I didn’t achieve that, probably for lack of data.  I guess a demo would
> have been good.
>
> I don’t know why triangle NURBS didn’t catch on, probably because of
> rectangular arrays to store data.
>
> I will scan the standard a bit more.
>
> John
>
>
>
> On Fri, May 13, 2022 at 1:40 PM Brutzman, Donald (Don) (CIV) <
> brutzman at nps.edu> wrote:
>
>> Thanks for continuing scrutiny.  Improving X3D player support for the
>> advanced capabilities possible using NURBS is certainly a worthy goal.
>>
>>
>>
>> It is mathematically possible to render smooth/seamless edges across the
>> coincident edges of adjacent NURBS surfaces by adjusting normal vectors of
>> the respective edge vertices.  Since vertex computation for each patch
>> might have a different slope as it approaches the edge from either side,
>> slopes will be different at the coincident edge vertices.  Thus independent
>> computation of each surface’s normal vectors by GPU will have different
>> vector direction on each side.
>>
>>
>>
>> (btw this is why I proposed an edgeNormal field for the boundaries of an
>> ElevationGrid, different adjacent grids typically show such seams.  No one
>> in GeoSpatial Working Group was ready to pursue it, perhaps we might try
>> again someday in X3D4.1.)
>>
>>
>>
>> Anyway such adjustments are a declared capability of NURBS
>> representations, reasonably intuitive, and a long-accepted capability in
>> the X3D specification.
>>
>>
>>
>> Of relevant note is that many fancy models such as automobiles etc. are
>> often represented using numerous NURBS patches.  None of the advertising
>> images I’ve seen reveal seams everywhere…  so these high-fidelity tools
>> must be using some form of this technique.
>>
>>
>> One might think that an author might achieve the same effect by adding
>> specially calculated Normal nodes corresponding to each of the Nurbs nodes
>> in a scene.  Ordinarily normals are not included in X3D scenes because they
>> lead to larger file sizes and also are easily recalculated by GPU rendering
>> hardware.  However it is pretty difficult (probably impossible) to even
>> define for Nurbs surfaces since the browser is free to compute the
>> tessellation of a parametric surface at whatever fidelity is desired.
>> Hence you need a NurbsSet node to identify such commonality of surfaces
>> which together define a single shape.
>>
>>
>>
>> For some of your other questions: if I recall correctly, Bezier b-splines
>> have arbitrary expressive power to define surfaces and so any geometric
>> surface might be replaced by a corresponding NURBS version.  This technique
>> is often used in a terrain-reduction context to get adjustable fidelity
>> while progressively smoothing and simplifying raggedy terrain tessellations.
>>
>>
>>
>> X3DParametricGeometryNode and X3DNurbsSurfaceGeometryNode were each
>> defined during the evolution of X3D in order to collect shared fields in
>> the object-oriented interfaces.  They are each limited to NURBS, internal
>> abstract interfaces (not nodes) and not necessarily part of any independent
>> implementation.
>>
>>
>>
>> It would be interesting to know if
>>
>>    1. Any of the X3D implementations support NurbsSet operations,
>>    2. Open-source implementations such as Blender support such
>>    operations.
>>
>>
>>
>> Have fun with X3D Nurbs!  8)
>>
>>
>>
>> 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:* Friday, May 13, 2022 10:28 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
>>
>>
>>
>> Sorry, further questions keep popping up.  Are we sure that the NURBS
>> Surfaces directly under the X3DParametricGeometryNode can be smoothly
>> aligned with the other NURBS surfaces under X3DNurbsSurfaceGeometryNode  ?
>>   Indeed, it kind of looks like all the interesting stuff which may be
>> required for smoothing may be in     X3DNurbsSurfaceGeometryNode
>> (compare with NurbsCurve).  If we move to the higher interface, fields
>> valuable to smoothing may not appear in the concrete nodes?
>>
>>
>>
>> This cones from someone with only a book knowledge of MURBS 35 or so
>> years ago.
>>
>>
>>
>> Im basically wondering why there are two abstract nodes, and why X3DParametricGeometryNode
>> was placed under a the Nurbs section.
>>
>>
>>
>> I have interesting parametric geometry, but i can’t ever see It smoothed
>> with NURBS or placed in a NurbsSet.
>>
>>
>>
>> As a reference, imagine the surface
>>
>>
>>
>>  r = radiusAverage + radiusRange * cos (numThetaLeaves * theta) * cos
>> (numPhiLeaves * phi)
>>
>>
>>
>> in spherical coordinates.
>>
>>
>>
>> If X3D is extensible, where would I extend from for this surface?
>>
>>
>>
>> John
>>
>>
>>
>> On Fri, May 1 2022 at 10:13 AM Brutzman, Donald (Don) (CIbrutzman at nps.edu>
>> wrote:
>>
>> Looking at the ouInterface 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/20220513/c347300c/attachment-0001.html>


More information about the x3d-public mailing list