[x3d-public] 3D graphics, vertex attributes Tangent index and vector

John Carlson yottzumm at gmail.com
Thu May 29 12:48:30 PDT 2025


Here’s some info on PBR lighting, otherwise, it look like Phong is used.

https://github.khronos.org/glTF-Tutorials/PBR/
<https://github.khronos.org/glTF-Tutorials/PBR/#:~:text=where%2520r%257C%257C%2520is%2520the,approximated%2520using%2520the%2520following%2520terms%E2%80%A6>


Enjoy!


John

On Thu, May 29, 2025 at 1:06 PM Brutzman, Donald (Don) (CIV) via x3d-public
<x3d-public at web3d.org> wrote:

> Very good and thanks for explaining how backwards compatibility is not
> really a problem.
>
> If we can express correct behavior succinctly in the specification prose,
> without adding potential confusion of another new field, that is certainly
> fine by me.  Being explicit about backwards compatibility, when needed, is
> important to include.
>
> Next worry:  lighting equations.  Not finding any in glTF 2.0
> specification itself.  Can we use the KHR extensions to give us proper
> context when updating our lighting equations?  Surprisingly am not finding
> any in the following, perhaps they are using WebGL specifications?
>
>
>    - KHR_lights_punctual extensions
>    -
>    https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md
>
>
> p.s.  hypothesis: am suspecting that glTF 2.0 avoidance of precision
> lighting definitions has been the root cause of why glTF implementations
> have long had much difficulty getting various implementations to achieve
> consistent rendering results.
>
>
> 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:* Michalis Kamburelis <michalis.kambi at gmail.com>
> *Sent:* Thursday, May 29, 2025 10:10 AM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
> *Cc:* Holger Seelig <holger.seelig at yahoo.de>; X3D <x3d-public at web3d.org>
>
> *Subject:* Re: [x3d-public] 3D graphics, vertex attributes Tangent index
> and vector
>
> Happy to see Tangent node being considered for X3D. If it will match
> exactly the glTF spec and behavior (and thus X_ITE behavior, from what I
> see), it will be good :)
>
> Just one comment to what Don wrote: ""so X3D would need a boolean field
> such as "SFBool [in out] computeTangents FALSE" in order to maintain
> backward compatibility, since we have never computed such tangents before.""
>
> - No, please don't add "computeTangents" :)
>
> - The implementation (of X3D, or any other 3D application doing bump
> mapping) knows when it needs tangents. Namely: when doing bump mapping,
> i.e. using XxxMaterial.normalTexture. And it *has* to compute them in such
> cases (unless of course we provide them explicitly in the Tangent node).
>
> - So there is *no* moment when field like computeTangents would make sense
> to be considered, by any implementation. In all cases, implementation
> already knows whether it has to compute tangents or not, if it would not
> compute them -> normal mapping would make no sense.
>
> - The sentence "since we have never computed such tangents before" is not
> true.  All existing X3D implementations (that
> handle XxxMaterial.normalTexture) already compute tangents, I guarantee,
> you just didn't know about it :)
>
> - The reason is that normal maps are specified in tangent space. (as we
> explicitly say in X3D spec about  normalTexture, "The normals are provided
> in tangent space").
>
> Regards,
> Michalis
>
> czw., 29 maj 2025 o 01:49 Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
> napisał(a):
>
> Thanks for excellent explanations and example.  Thanks also for correcting
> my mistaken impressions of what was being considered, this is far different
> than geometric similarities between normal vectors and tangent
> planes/vectors.
>
> Dick and I were able to review this during today's meeting.
>
> Holger, for your CompareTangent.x3d example, is it possible to achieve a
> similar (or identical) effect by solely using Normal vectors?  Just
> curious, since both are supported in glTF we do want to maintain visual
> compatibility.
>
> Aligning with glTF 2.0 has always been part of our approved consensus
> efforts for improving the X3D 4 Architecture specification.
>
>    - X3D Version 4.0 Standard Overview
>    - http://www.web3d.org/x3d4
>    X3D Version 4.0 Standard Overview | Web3D Consortium
>    <http://www.web3d.org/x3d4>
>    The X3D ® version 4 (X3D4) Architecture Specification is a major
>    upgrade to the Extensible 3D (X3D) Graphics International Standard that
>    provides close support for the HTML5 Recommendation, Khronos glTF
>    Physically Based Rendering (PBR), Web Audio API, and MIDI 2.0, along with
>    numerous other features. Humanoid Animation 2.0 (HAnim2) is also fully
>    supported, including BVH-style motion animation.
>    www.web3d.org
>    **
>
>
> So the next line of inquiry would appear to be how to best accomplish the
> satisfactory addition of Tangents to X3D Architecture.
>
> For such an significant addition, typically we need
>
>    1. Rationale (align with glTF, perhaps multiple other good reasons
>    given)
>    2. Draft specification prose, references
>    3. Examples, multiple implementations
>
>
> Presumably the addition of a Tangent node would go into
>
>    - X3D Architecture version 4.1 (draft), clause 11, Rendering component
>    -
>    https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/rendering.html
>
>    - Tangent node would be inserted as section 11.4.12, between PointSet
>    and TriangleFanSet
>    - Node signature definition, i.e. field names, types, accessTypes,
>    default values
>    - Presumably prose would be needed for a new section under concepts,
>    e.g. 11.2.2.6 Tangents.  That description would also need to distinguish
>    how they are different from Normals.
>    - There is an abstract type for X3DNormalNode under
>    X3DGeometricPropertyNode, do we need something similar?
>    - What level is proposed for Table 11.2 — Rendering component support
>    levels ?
>
>    - What nodes are expected to have tangent field added?  Presumably
>    some, but not all, of the geometry nodes?
>    - Update to Concepts, 4.4.2.3 Interface Hierarchy
>    -
>       https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/concepts.html#InterfaceHierarchy
>       - What changes are needed to lighting equations in clause 17
>    Lighting component
>    -
>       https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/lighting.html
>       - For example, the lighting equations in 17.2.2.3 Common
>       definitions for all lighting models
>       -
>       https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html#LightingCommon
>
>       - Is it possible when Normal-node 3-tuple vectors and Tangent-node
>    4-tuple planes are used together (as in the CompareTangent.x3d example) is
>    it possible for contrary or contradictory field information to provided?
>    (It looks like glTF says that Tangent values are ignored if Normal values
>    aren't also supplied at the same time).
>    - What potential error conditions need to be noted?
>    - Are there any potential unexpected "side effects" or issues to
>    resolve when working through this careful due-diligence integration in the
>    X3D Architecture
>
>
> We looked closely at glTF specification prose, and have some questions.
>
>    -
>    https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview
>    - glTF requires "When tangents are not specified, client
>    implementations *SHOULD* calculate tangents using default MikkTSpace
>    <https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#mikktspace> algorithms
>    with the specified vertex positions, normals, and texture coordinates
>    associated with the normal texture." ... and so X3D would need a boolean
>    field such as "SFBool [in out] computeTangents FALSE" in order to maintain
>    backward compatibility, since we have never computed such tangents before.
>    - Are there _any_ light definitions whatsoever in glTF 2.0
>    specification proper?  It looks like all three basic lights are in the
>    KHR_punctual extension (and still no baseline lighting equations seen).
>    -
>       https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md
>
>
> Thanks for considering the possibilities.
>
>
> 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:* Holger Seelig <holger.seelig at yahoo.de>
> *Sent:* Saturday, May 24, 2025 7:30 AM
> *To:* X3D <x3d-public at web3d.org>
> *Cc:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; Michalis
> Kamburelis <michalis.kambi at gmail.com>
> *Subject:* Re: [x3d-public] 3D graphics, vertex attributes Tangent index
> and vector
>
> I have created a simple example file from a previous glTF to show what a
> difference the correct tangents make.
>
> Both spheres have the same material with only a normal texture.
>
> On the left side you can see a sphere with correct tangents and on the
> right side the same sphere with negated tangents.
>
> You can see in the wrong version that the curvatures of the wicker go
> inwards. Which is definitely not intentional.
>
>
> https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Rendering/CompareTangent.x3d
>
> Best regards,
> Holger
>
> --
> Holger Seelig
> Leipzig, Germany
>
> holger.seelig at yahoo.de
> https://create3000.github.io/x_ite/
> https://patreon.com/X_ITE
>
>
>
> Am 24.05.2025 um 04:41 schrieb Michalis Kamburelis via x3d-public <
> x3d-public at web3d.org>:
>
> Don,
>
> Answering the """If there is a benefit for X3D scene graph having
> tangent vectors, in particular for achieving some new flavor of
> rendering or geometry representation that we can't already do, then
> apologies but haven't heard it yet.""" :
>
> I mentioned this benefit (of knowing tangent vector values) in point 3
> of my message. Now also on
> https://github.com/michaliskambi/x3d-tests/wiki/Tangent-node-in-X3D ,
> see there:
>
> """
> Ultimately, the "perfect tangent value" is the one that was used to
> bake the normalmaps. If the authoring tool (like Blender) that you
> used to make normalmaps used a bit different algorithm to calculate
> tangents than your renderer -> then the rendering of normalmaps will
> be slightly "off".
>
> There's a nice screenshot in
>
> https://gamedev.stackexchange.com/questions/146855/how-do-you-compute-the-tangent-space-vectors-with-normals-given-in-the-mesh
> , scroll to "There are multiple ways to generate tangent spaces for a
> mesh, and not all of them agree on the result.". The screenshot there
> shows subtle problems that result from having authoring tool and
> renderer calculate a bit different tangent vectors.
> """
>
> There is a really a good reason why glTF has them and why X_ITE and
> Castle Game Engine have defined extensions to have them too :)
> Simplifying the above explanation: one needs to have Tangent
> information (provided in Tangent node, not auto-calculated), to use
> the normalmap exactly like the 3D authoring tool that generated it
> intended. I *did* mention it in the past from I recall, I did show the
> screenshot from
>
> https://gamedev.stackexchange.com/questions/146855/how-do-you-compute-the-tangent-space-vectors-with-normals-given-in-the-mesh
> already in 2 past threads on x3d-pubilc (in 2019 and 2022, looking at
> gmail history :) ).
>
> Again, maybe I can explain it best on next Friday call, if you want.
>
> Regards,
> Michalis
>
>
> sob., 24 maj 2025 o 04:00 Brutzman, Donald (Don) (CIV)
> <brutzman at nps.edu> napisał(a):
>
>
> Thanks for extra references, interesting.
>
> To be clearer, I was referring to "capital-T" Tangent planes.  We do have
> one of those in ClippingPlane node, plane field.
>
> https://www.web3d.org/x3d/content/X3dTooltips.html#ClipPlane.plane
>
>
> Yes, the slideset does seem to show that there is a lot of math to convert
> a normal vector space to a tangent vector space, and vice versa.  No, a
> single normal vector is not fully convertible bidirectionally to a single
> tangent vector, since a single tangent vector is only one of infinite
> possible tangent vectors originating at the same origin point of a Tangent
> plane.
>
> If there is a benefit for X3D scene graph having tangent vectors, in
> particular for achieving some new flavor of rendering or geometry
> representation that we can't already do, then apologies but haven't heard
> it yet.
>
> We can easily imagine a wide class of difficult-to-debug errors emerging
> in X3D content for authors, players, and converters alike if support for
> both normal vectors and tangent vectors becomes necessary.
>
> p.s. looks like we also have mapped WebGL/glTF techniques using
> normalTexture node, e.g.
>
> X3D 4.1 draft Architecture,12.4.5 Material
>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/shape.html#Material
>
> SFFloat  [in,out] normalScale          1    [0, ∞)
> SFNode   [in,out] normalTexture        NULL [X3DSingleTextureNode]
> SFString [in,out] normalTextureMapping ""
>
> I hope that this deeper-dive into details is viewed as helpful and
> constructive.
>
> There are many additional things we can be doing with X3D, and still a lot
> of re-alignments to finish in the large family of X3D standards that need
> updating for X3D 4.0 Architecture.  I am confident that together we will
> all stay focused primarily on the important things - and occasionally on
> the cool things too!  Onward we go together, with steady forward momentum
> overall.
>
>
> 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: Michalis Kamburelis <michalis.kambi at gmail.com>
> Sent: Friday, May 23, 2025 3:16 PM
> To: John Carlson <yottzumm at gmail.com>
> Cc: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>;
> Joe D Williams <joedwil at earthlink.net>; Brutzman, Donald (Don) (CIV) <
> brutzman at nps.edu>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes Tangent index and
> vector
>
>
>
> John: I know, in math, in 3D, you generally speak about "tangent
> planes" (
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTangent&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200150881%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=xI7y0QYdIcPFZmWTtWOAardp6qBhkbiocWzLIaXZjyA%3D&reserved=0
> <https://en.wikipedia.org/wiki/Tangent> ).
>
> The name "tangent vector" is just a shorthand for "vector lying on a
> tangent plane". This is a standard for calling this value in the
> context of bump mapping / normal maps.
>
> See e.g. glTF spec with useful definition (
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fregistry.khronos.org%2FglTF%2Fspecs%2F2.0%2FglTF-2.0.html%23introduction-technical-terminology&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200184217%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=U1GB3CyxbVkqCeZ50pNY5IQZV%2F6UVeB3fuuHSLtaTtM%3D&reserved=0
> <https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#introduction-technical-terminology>
> "2.2.3. Technical Terminology" ):
>
> """
> tangent
>    A unit XYZ vector defining a tangential direction on the surface.
> """
>
> There is also "tangent coordinate space". If you want to get dirty and
> read about details, search for "tangent normal mapping":
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Flearnopengl.com%2FAdvanced-Lighting%2FNormal-Mapping&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200208362%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=htRXtm4jbhI6G0U0pN09lsBB5IEHQ3EKIocm948xxp8%3D&reserved=0
> <https://learnopengl.com/Advanced-Lighting/Normal-Mapping> ,
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.cs.utexas.edu%2F~fussell%2Fcourses%2Fcs384g-spring2016%2Flectures%2Fnormal_mapping_tangent.pdf&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200227319%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=65d5bG5b5n5jGKSrKA93pYgnKlV2x2Weg7fsDqMEpX0%3D&reserved=0
> <https://www.cs.utexas.edu/~fussell/courses/cs384g-spring2016/lectures/normal_mapping_tangent.pdf>
> .
>
> Regards,
> Michalis
>
> sob., 24 maj 2025 o 00:05 John Carlson <yottzumm at gmail.com> napisał(a):
>
>
> Tangent planes seem more likely than tangent vectors, at least in 3D.
>
> Just a naming convention.
>
> John
> On Fri, May 23, 2025 at 4:09 PM Michalis Kamburelis <
> michalis.kambi at gmail.com> wrote:
>
>
> Don: I don't think that this decision (to never support Tangent node
> in X3D), is correct. I would actually say we should add Tangent to
> X3D.
>
> Let me present a clear argument "why". I copied some of the reasoning
> from mail below to
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmichaliskambi%2Fx3d-tests%2Fwiki%2FTangent-node-in-X3D&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200245004%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=iA1%2Bgoq%2B1GtvXZXMLzdiCDOHOdyQlD4%2FU5vkrA%2FpWs0%3D&reserved=0
> <https://github.com/michaliskambi/x3d-tests/wiki/Tangent-node-in-X3D> ,
> to have a future reference.
>
> 1. Current state: As of now, both X_ITE and Castle Game Engine have
> extensions to define Tangent node.
>
>    So we have invented the "Tangent" node independently in 2
> implementations and, predictably, they are unfortunately
> similar-but-not-exactly the same. Links from this thread, where you
> can notice a difference:
>
>     -
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Fcomponents%2Frendering%2Ftangent%2F&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200266292%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=uC0HoQQvQ%2FqGeaKvwUMRLczWiuPy3k5uhNpzdTVkS4g%3D&reserved=0
> <https://create3000.github.io/x_ite/components/rendering/tangent/> ,
>     -
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fx3d_implementation_rendering_extensions.php%23section_ext_tangent&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200287350%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=%2FiuYgr866%2FE0qt88XbIqwT6TQf%2FpGnCdQ97ziF5myn0%3D&reserved=0
> <https://castle-engine.io/x3d_implementation_rendering_extensions.php#section_ext_tangent>
>
>    Also glTF format has them. See
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fregistry.khronos.org%2FglTF%2Fspecs%2F2.0%2FglTF-2.0.html%23meshes-overview&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200304976%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=DWIIKDtB4VQQ6g3wx9MhIJtafyag%2FzCo4hqXwBokl%2BY%3D&reserved=0
> <https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview>
> , information about "TANGENT".
>
>    ( Holger, if you read this: I think I will change Castle Game
> Engine's Tangent node in the future, to match better both X_ITE and
> glTF, thus we will have matching definitions with X_ITE. Your approach
> is better, Tangent.vector should be 4D. )
>
> 2. Tangents *do not* just repeat the same information as normal
> vectors, DRY principle doesn't apply here. I.e. the tangent vectors
> are *not* a replacement for knowing normal vectors (nor is the other
> way around).
>
>     And just because the model provides normal vectors -- doesn't
> mean that tangent vectors are already precisely 100% determined.
>
>     There are multiple similar algorithms to determine tangent
> vectors. The normal vector alone doesn't yet define the tangent ->
> because in a 3D space, if you have a normal vector -> you still have
> infinite possible values for a vector "orthogonal to normal". So
> tangent vectors are auto-calculated (when not explicitly provided) to
> match the normal vectors, but *also* to match the texture coordinates
> used for normal maps. There are edge-cases when it is just not obvious
> what should be the "perfect tangent" so various implementations
> (MikkTSpace is just one example) can do different things.
>
> 3. Ultimately, the "perfect tangent value" is the one that was used to
> bake the normalmaps. If the authoring tool (like Blender) that you
> used to make normalmaps used a bit different algorithm to calculate
> tangents than your renderer -> then the rendering of normalmaps will
> be slightly "off".
>
>    There's a nice screenshot in
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgamedev.stackexchange.com%2Fquestions%2F146855%2Fhow-do-you-compute-the-tangent-space-vectors-with-normals-given-in-the-mesh&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200321272%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=QTZ5yNrn7f9QO6013RvTKJM83RpbLp1g3o%2BTV%2Bow34Y%3D&reserved=0
> <https://gamedev.stackexchange.com/questions/146855/how-do-you-compute-the-tangent-space-vectors-with-normals-given-in-the-mesh>
> , scroll to "There are multiple ways to generate tangent spaces for a
> mesh, and not all of them agree on the result.". The screenshot there
> shows subtle problems that result from having authoring tool and
> renderer calculate a *bit* different tangent vectors.
>
>    So the perfect thing to do, from a renderer, is to *not* calculate
> the tangent vectors, instead take the tangent vectors as provided by
> the authoring tool. That exactly why glTF has tangents, and why X_ITE
> and Castle Game Engine support them too -- we don't just discard
> tangent values from glTF (only to auto-calculate them), we prefer to
> take tangent values recorded in the 3D model, because this makes
> really good rendering.
>
> See
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmichaliskambi%2Fx3d-tests%2Fwiki%2FTangent-node-in-X3D&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200342653%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=I2JoFkHp6yUXifxdOtDNZn%2B%2FEw%2F6B6CUggprigS0Ymg%3D&reserved=0
> <https://github.com/michaliskambi/x3d-tests/wiki/Tangent-node-in-X3D>
> , which I just created -- it mostly copies what I said above.
>
> I hope this helps. I'll be happy to explain it better on next Web3d
> Friday teleconference, if you're not tired of my talking :) I can show
> how the normalmaps are actually created.
>
> Regards,
> Michalis
>
>
> pt., 23 maj 2025 o 21:03 Brutzman, Donald (Don) (CIV) via x3d-public
> <x3d-public at web3d.org> napisał(a):
>
>
> The X3D group has looked closely at Tangent options in the past and
> decided not to support it.  Instead we use Normal nodes, as ever.
>
> Of geometric note is that they are literally orthogonal and thus either
> representation can be used to the other.
>
> You will not find Tangent node in the X3D specification.
>
> X3D 4.1 draft Architecture, Annex Z (informative) Version content
>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/versionContent.html
>
>
> Note that the X_ITE documentation specifically notes that support in that
> application is nonstandard.
>
>
> SFNode [in, out] tangent NULL [Tangent] non-standard]
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Fcomponents%2Fgeometry3d%2Findexedfaceset%2F%23fields-tangent&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200365822%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=IsR1bELZd2JIdywMabYl4fETQB7Nj18xYLNYDuYiD%2BE%3D&reserved=0
> <https://create3000.github.io/x_ite/components/geometry3d/indexedfaceset/#fields-tangent>
>
>
> There is no issue with codebases adding functionality that might help
> their capabilities - the X in X3D is extensible, after all - but anyone
> putting a Tangent definition into an X3D model file is creating
> nonstandard, invalid, noninteroperable content.
>
> Also please be aware that there is a serious design principle behind this
> decision: DRY.  Thus, a statement I don't expect to repeat: we do not
> intend to consider Tangent support in future X3D specifications.
>
> Wikipedia: Don't repeat yourself
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDon%27t_repeat_yourself&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200388617%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=ArQcjgKedJw1nBDJMHn9IXWR8eCaaeK4byCx1Q1deMU%3D&reserved=0
> <https://en.wikipedia.org/wiki/Don't_repeat_yourself>
>
>
> And some "dry humor" on that page:
>
> The opposing view to DRY is called WET, a backronym commonly taken to
> stand for write everything twice (alternatively write every time, we enjoy
> typing or waste everyone's time).
>
>
> Recommendations:
>
> if your model data is starting with tangent values (for whatever reason)
> then convert them to normal vectors, and
> stick with standard X3D for best results.
>
>
> Have fun with normal X3D!  🙂
>
>
> 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: x3d-public <x3d-public-bounces at web3d.org> on behalf of Joe D
> Williams via x3d-public <x3d-public at web3d.org>
> Sent: Sunday, May 18, 2025 5:03 PM
> To: John Carlson <yottzumm at gmail.com>
> Cc: Joe D Williams <joedwil at earthlink.net>; Extensible 3D (X3D) Graphics
> public discussion <x3d-public at web3d.org>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes Tangent index and
> vector
>
> ok, seems like from what I can study so far,
>
> the first use of Tangent vector is authortime production of
>
> normalized Normal vector for vertex or face.
>
> The  author is looking for relief effects (bumpmapping)
>
> that are produced by Tangent vector.
>
> This process (MikkTSpace algorithm) would fill Normal vector.
>
> This process of generating Normal vector space is called baking.
>
>
>
> For Level5 runtime,
>
> If Normal vector not null then used directly.
>
> If Normal vector null, then normals auto generated by creaseAngle
>
> If Tangent vector null, then nothing.
>
> If Level 5 and Tangent vector not null then possible relief effects
>
> using length of Tangent vector.
>
>
>
> No "bake" in runtime.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> For runtime, the generated Normal vector is used and
>
> if Tangent vector is not null, for the author to produce relief effects
>
> using length of Tangent vector.
>
> Is that true?
>
>
>
>
>
>
>
> .
>
> For runtime
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: May 17, 2025 1:15 PM
> To: Joe D Williams <joedwil at earthlink.net>
> Cc: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes Tangent index and
> vector
>
>
>
> Please review Michalis’ response on this thread about tangentIndex and
> tangentPerVertex.  I believe the corresponding normal fields apply.
>
> Level 5? That depends on updated standard.
>
> On Sat, May 17, 2025 at 2:04 PM Joe D Williams <joedwil at earthlink.net>
> wrote:
>
> * must have tangentIndex (unless tangentIndex same as normalIndex).
>
> * If no tangentIndex, coordIndex used?
>
> * tangentPerVertex? Can tangent be applied to vertex or face (like normal
> and color)?
>
> * must have tangent vector (may be auto filled).
>
> * Level 5 required since level 4 does not have tangent.
>
> Thanks,
>
> Joe
>
>
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: May 16, 2025 10:32 PM
> To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>
> Cc: Joe D Williams <joedwil at earthlink.net>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes Tangent index and
> vector
>
>
>
> Joe,
>
> X_ITE IFS:
>
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Fcomponents%2Fgeometry3d%2Findexedfaceset%2F&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200410801%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=3xDsuKcMJc87j2bLfU4KyNF3brsK3IbYL0CqwE8Quc4%3D&reserved=0
> <https://create3000.github.io/x_ite/components/geometry3d/indexedfaceset/>
>
> Summary, only tangent field.
> John
>
> On Fri, May 16, 2025 at 8:59 PM Joe D Williams via x3d-public <
> x3d-public at web3d.org> wrote:
>
> like  for normals, is there a tangentPerVertex true/false where tangent
> value
>
> is associated with vertex or face?
>
> If tangentIndex null, is coordIndex used?
>
> If Tangent vector null tangents are generated after Normal vector?
>
>
>
> Thanks,
>
> Joe
>
>
>
>
>
>
>
> -----Original Message-----
> From: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org
> >
> Sent: May 15, 2025 6:19 AM
> To: X3D <x3d-public at web3d.org>
> Cc: Holger Seelig <holger.seelig at yahoo.de>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes Tangent index and
> vector
>
>
>
> There are also glTF tests for tangents:
>
> Geometry with tangent node:
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Flaboratory%2Fgltf-sample-viewer%2F%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2FKhronosGroup%2FglTF-Sample-Models%2Fmaster%2F2.0%2FNormalTangentMirrorTest%2FglTF%2FNormalTangentMirrorTest.gltf&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200428820%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=PpWz8VSjvMhqqCEZJV4O4LvlGzFnG2eLGCNk5wbhH4M%3D&reserved=0
> <https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/NormalTangentMirrorTest/glTF/NormalTangentMirrorTest.gltf>
>
> Geometry without tangent node (auto generated tangents using MikkTSpace
> algorithm):
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Flaboratory%2Fgltf-sample-viewer%2F%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2FKhronosGroup%2FglTF-Sample-Models%2Fmaster%2F2.0%2FNormalTangentTest%2FglTF%2FNormalTangentTest.gltf&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200445874%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=DU2%2F7PgyUgyWqjqiAcJuw5G6ncNht9yPMBME0SudrrY%3D&reserved=0
> <https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/NormalTangentTest/glTF/NormalTangentTest.gltf>
>
> The reflection in all half spheres should look the same.
> Turn on IBL (Image Based Lighting).
>
> Best regards,
> Holger
>
> --
> Holger Seelig
> Leipzig, Germany
>
> holger.seelig at yahoo.de
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2F&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200461168%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=XjmnXZ9c2Q8GbU%2F2E%2F57OT5BPf%2FOIDPEyMWaAIKk3l8%3D&reserved=0
> <https://create3000.github.io/x_ite/>
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatreon.com%2FX_ITE&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200476270%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=dnpHDXrPKsnrgHGgRtQcJJd2IZxprCViABurmJXB22E%3D&reserved=0
> <https://patreon.com/X_ITE>
>
>
> Am 15.05.2025 um 10:35 schrieb Holger Seelig via x3d-public <
> x3d-public at web3d.org>:
> All nodes which have a normal field also have a tangent field in X_ITE,
> because tangents are very important for PhysicalMaterial to render
> correctly. Because tangents always come in conjunction with normals,
> normalPerVertex field is also used for tangents.
>
> If there is no Tangent node, the MikkTSpace algorithm is used to generate
> tangent vectors, as need by the glTF specification.
>
> If there is a Tangent node and the vector field is empty, results are
> undefined.
>
> Tangent node:
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Fcomponents%2Frendering%2Ftangent%2F&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200493482%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=55sK6dVEuZQzTVZXhZ8I%2F1DhNilNlfkn2XvvmBO0xUo%3D&reserved=0
> <https://create3000.github.io/x_ite/components/rendering/tangent/>
>
> IndexedFaceSet with tangent field:
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2Fcomponents%2Fgeometry3d%2Findexedfaceset%2F%23fields-tangent&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200513069%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=dgiBEyO2hhPqy1%2FT87BJTK%2BwdI%2BpPcwt2YYGxaIHp70%3D&reserved=0
> <https://create3000.github.io/x_ite/components/geometry3d/indexedfaceset/#fields-tangent>
>
> Best regards,
> Holger
>
> --
> Holger Seelig
> Leipzig, Germany
>
> holger.seelig at yahoo.de
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate3000.github.io%2Fx_ite%2F&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200532049%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=7Ro1wWBaCc%2BvT6L99mV0McgUAgjn%2F0o4dYUiY2692ZQ%3D&reserved=0
> <https://create3000.github.io/x_ite/>
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatreon.com%2FX_ITE&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200551288%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=ZhfBNA1G7rY%2Bdue%2BiXb9EMFn3aXE54dde3KT8UaJNfs%3D&reserved=0
> <https://patreon.com/X_ITE>
>
>
> Am 15.05.2025 um 10:24 schrieb Michalis Kamburelis <
> michalis.kambi at gmail.com>:
> I don't know about Tangent in X_ITE...
>
> But in Castle Game Engine we have a similar extension -- Tangent node (
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fx3d_implementation_rendering_extensions.php&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200570539%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=Nlb39lRO2YzN2P0E4B5wUDtgnsGJ25vkYD0g%2BmFeDKg%3D&reserved=0
> <https://castle-engine.io/x3d_implementation_rendering_extensions.php> ).
> Looks like we developed it independently from X_ITE :) It certainly makes
> sense to have a node that carry this information, to have perfect
> rendering. (Tangents can be auto-calculated, but there are various details
> in the auto-calculation algorithm that various renderers may do a bit
> differently. When the 3D author used "baking" to make a normalmap texture,
> it's better to use exact same tangents as known by the 3D authoring tool.)
>
> At least for Castle Game Engine, the answer is: if the Tangent node is not
> present, but we need tangents (e.g. for bump mapping), then the tangent
> vectors are calculated to match the normal vectors. So there's no
> additional tangentPerVertex or tangentIndex, they would not make sense. By
> knowing the normal vectors, by know all we need to generate reasonable
> tangent vectors.
>
> See
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fx3d_implementation_rendering_extensions.php&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200589324%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=Xx2qMsMjIU1cIZJPyGgF4c5rp48LmfqZHkjJ9S%2BK%2By4%3D&reserved=0
> <https://castle-engine.io/x3d_implementation_rendering_extensions.php> for
> more details.
>
> Regards,
> Michalis
>
> czw., 15 maj 2025 o 07:43 John Carlson via x3d-public <
> x3d-public at web3d.org> napisał(a):
>
> Note, it’s Tangent vector=… not Tangent point=…
>
> John
>
> On Thu, May 15, 2025 at 12:38 AM John Carlson <yottzumm at gmail.com> wrote:
>
> I’d ask Holger, cc’d
>
> I’ve not used Tangent, myself.
>
> X_ITE Supports up to Level 4, so I guess you’re proposing a new level 5
> for the Geometry 3D component?
>
> Look at X_ITE IFS:
>
> <IMG_0516.png>
>
> Maybe check Holger’s create3000 Library for examples?
>
> To retrieve examples, last time I tried:
>
> git clone
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcreate3000%2FLibrary&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200608115%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=JdzgrFdJEsyXix%2BW43%2B8MAU6a%2FFgIItVOPuhEt3mIX8%3D&reserved=0
> <https://github.com/create3000/Library>
> Online at:
>
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcreate3000%2FLibrary&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200624853%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=Ge%2BkLU1GPoDGZG5wQSl5nGgWxSm0T4YFASJw6GwlgxU%3D&reserved=0
> <https://github.com/create3000/Library>
> Let’s get v2 Joe Kick out the door, check v2 finger joints, and make sure
> all joints have converted to v2.
>
> John
>
> On Wed, May 14, 2025 at 10:45 PM Joe D Williams <joedwil at earthlink.net>
> wrote:
>
>
>
> Main questions, in IFS Level5:
> Is a default tangent generated if Tangent point="" field empty?
> tangentPerVertex? assigned to vertex or face?
> tangentIndex? If no tangentIndex is coordIndex used?
>
>
>
> Thanks,
> Joe
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: May 14, 2025 3:00 PM
> To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>
> Cc: Joe D Williams <joedwil at earthlink.net>
> Subject: Re: [x3d-public] 3D graphics, vertex attributes
>
>
>
> Joe,
>
> X_ITE has a tangent node:
>
> Tangent | X_ITE X3D Browser
>
> Enjoy!
>
> John
>
> On Wed, May 14, 2025 at 4:46 PM Joe D Williams via x3d-public <
> x3d-public at web3d.org> wrote:
>
> From this:
>
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.google.com%2Fdocument%2Fd%2F1hCetnGIkut_dyt4mwkDSTNiLTbrVg1jLo_EArE74DRg%2Fedit%3Ftab%3Dt.0&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200642079%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=%2FAuhyK7W2zDHaxy%2BMIRF07Ve94Y0A%2BWWb7OofVb05pY%3D&reserved=0
> <https://docs.google.com/document/d/1hCetnGIkut_dyt4mwkDSTNiLTbrVg1jLo_EArE74DRg/edit?tab=t.0>
>
>
> In 3D graphics, vertex attributes define per-vertex data necessary
> for rendering, animation, shading, and so on.
> These attributes include geometric properties such as
> position, normal, tangents, texture mapping information (UV coordinates),
> shading data (vertex colors), and
> deformation information (skinning weights and blend shapes).
>
>
> In this discussion of vertex attributes, the only one I don't recall
> seeing in X3D is tangent?
>
> Associated with this work:
>
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F18d1qy4jx-d_kLsam-JQAzig23w7dTau0Moe7M32lVvk%2Fedit%3Fgid%3D0%23gid%3D0&data=05%7C02%7Cbrutzman%40nps.edu%7C5010a47039124367feb708dd9a477d98%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638836355200662035%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C40000%7C%7C%7C&sdata=4MpB30vyAlH78SJUrim3wvgE5IAEuN1gnBqBjV%2FlAAY%3D&reserved=0
> <https://docs.google.com/spreadsheets/d/18d1qy4jx-d_kLsam-JQAzig23w7dTau0Moe7M32lVvk/edit?gid=0#gid=0>
>
>
> Thanks,
> Joe
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
> _______________________________________________
> 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/20250529/7bee7c9a/attachment-0001.html>


More information about the x3d-public mailing list