[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