[x3d-public] 3D graphics, vertex attributes Tangent index and vector
Holger Seelig
holger.seelig at yahoo.de
Thu May 15 01:35:31 PDT 2025
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 <mailto: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 <mailto: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 <mailto: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 <mailto:yottzumm at gmail.com>>
>>>> Sent: May 14, 2025 3:00 PM
>>>> To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org <mailto:x3d-public at web3d.org>>
>>>> Cc: Joe D Williams <joedwil at earthlink.net <mailto: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 <mailto: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 <mailto:x3d-public at web3d.org>
>>>>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>>
>>>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org <mailto: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/20250515/6ec8b2bb/attachment.html>
More information about the x3d-public
mailing list