[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 15:13:04 PDT 2022


Note:  I have not read through the NURBS standards section yet.

All good information, Don, thanks!   I recall a surface we had in my class
with 9 subsurfaces, so 16 control points arranged in a 4x4 mesh,  there
were other adjustments, perhaps normals.   I am not sure what type your
edgeNormal would be, probably NurbsCurve?   I believe the last two letters
of NURBS is b-spline.   I don't recall any overlap between geometry, except
edges.  Be sure to check the difference between bezier curves and b-spline
curves.

I think the trick was to avoid splitting between surfaces, not just normals
at control points.  The whole edge has to match between NURBS.  So just
like edges are shared in face sets, some (1 or 4) control points are shared
between NURBS in NurbsSets, possibly with more fudge factors.  Although i
think NurbsSets may only be required for smoothing, so extra light doesn’t
sneak between smoothed nodes, just like face sets.  i had this problem with
triangles without faces.  The GPU needs to know shared edges to avoid
cracks.  I think the smoothing in many cases is left to the designer, not a
mathematician/engineer.  Certainly the designer can override tool generated
controls, but still be required to meet physical constraints of the
engineer.

I think that NURBS for Geo might be a good plan, We would need data or
computing of control point values.   Gradients might have to be computed
from LIDAR?   I don’t know how to compute other control values.  I wasn’t
even told the equation for the oblate ellipsoid of the earth.  I faintly
recall discussing geometry of projections, and how to identify projections
to know limitations.

For remote sensing, people were taught orthophotogrammetry.

Probably it’s all different these days.

I will look up if my Foley&VanDamm has NURBS, or otherwise look up how they
might be coded, if this is missing from our JavaScript implementations.   I
am open to provide NURBS  of the earth, if no one has done it, and we have
NURBS of oblate ellipsoids.   I’m slightly familiar with
GeoElevationGrids…are there normals?

Vince, do any of the open source X3D players implement NURBS?   Or other 3d
players?  Don, do we have NURBS examples?

Please inform me if i am stepping into patented   areas, i have no
experience with patents.

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/a90c5e0a/attachment-0001.html>


More information about the x3d-public mailing list