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

John Carlson yottzumm at gmail.com
Fri May 23 16:01:33 PDT 2025


Don,

Per my previous email, I think the desire is to choose a different tangent
vector than the gradient.

Any auto-calculations would probably come up with some kind of gradient,
correct?

Note that choosing a tangent space or plane orthogonal to the normal is not
good enough, one wants to choose an appropriate vector within that tangent
space/plane.

John

On Fri, May 23, 2025 at 2:02 PM Brutzman, Donald (Don) (CIV) <
brutzman at nps.edu> wrote:

> 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://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://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
>    <https://en.wikipedia.org/wiki/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://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://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://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://create3000.github.io/x_ite/
> 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://create3000.github.io/x_ite/components/rendering/tangent/
>
> IndexedFaceSet with tangent field:
>
> https://create3000.github.io/x_ite/components/geometry3d/indexedfaceset/#fields-tangent
>
> Best regards,
> Holger
>
> --
> Holger Seelig
> Leipzig, Germany
>
> holger.seelig at yahoo.de
> https://create3000.github.io/x_ite/
> 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://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://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://github.com/create3000/Library
> Online at:
>
> 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
> <https://create3000.github.io/x_ite/components/rendering/tangent/>
>
> 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://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://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
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250523/6f158d39/attachment-0001.html>


More information about the x3d-public mailing list