[x3d-public] Specification review progress: PNG3, Tangent node, HAnim weekly progress
Michalis Kamburelis
michalis.kambi at gmail.com
Wed Jul 9 09:15:22 PDT 2025
Indeed, taking a look at Blender -> glTF exporter should be helpful.
It can already generate the 4D tangent vectors in the same format we
now accept in X3D (with the W component indicating "handedness" in the
same way for X3D and glTF). Note that you need to select a proper
checkbox when exporting glTF to have tangents written to the file.
>From my side, Tangent development:
- Announced right now on
https://castle-engine.io/wp/2025/07/09/support-for-new-tangent-node-in-x3d-with-vectors-as-4d-better-aligned-with-gltf/
- Castle Game Engine now follows the X3D Tangent spec, with MFVec4f
for vectors just like for glTF. (hooray, another win for standards --
glTF, X3D in X_ITE, X3D in Castle Game Engine are now all aligned.)
- Our tools, like Castle Model Viewer, convert glTF to X3D, preserving
tangent information from glTF into X3D Tangent node. (e.g. convert
models with tangents generated by Blender or downloaded from Sketchfab
or obtained from Khronos tests)
- In effect we have some sample X3D files using Tangent node :
https://github.com/castle-engine/demo-models/tree/master/gltf/tangents
. These were obtained by converting some glTFs from Sketchfab
(Creative Commons licenses) -> X3D using CGE, see README there for
details.
- I also tested our implementation on Khronos testcase
https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/NormalTangentMirrorTest
Regards,
Michalis
niedz., 6 lip 2025 o 07:29 John Carlson <yottzumm at gmail.com> napisał(a):
>
> Now….
>
> How do we import/export a Tangent node in Blender? Can we create a .blend file example for it so I can try exporting, then importing? What are the Blender API data structures and methods?
>
> I will probably look at glTF examples and intuit.
>
> John
>
> On Sat, Jul 5, 2025 at 8:23 AM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
>>
>> John,
>>
>> Thank you, it's cool, every precise question helps me to explain it better :)
>>
>> To answer that:
>>
>> The tangent vectors (i.e., Tangent node contents) only change the way
>> "final normal vector at given surface point" (designated by N in the
>> lighting equations) is calculated. That's how they influence the
>> calculation done by lighting equations, and thus the final rendered
>> color. They do not interact with colors or geometry in any other way.
>>
>> And the way they change this N is that tangent vectors (together with
>> bitangent and per-face/per-vertex normals) define the "tangent space"
>> in which the bump mapping (which is the moment where we take
>> XxxMaterial.normalTexture into account) is calculated.
>>
>> There are some resources on the web explaining this, like:
>> - https://fabiensanglard.net/bumpMapping/
>> - Wikipedia: https://en.wikipedia.org/wiki/Bump_mapping ,
>> https://en.wikipedia.org/wiki/Normal_mapping
>> - hm, ok, and much more, searching for terms like "bump mappping" or
>> "normal mapping" or "bump mapping 3d opengl" yields a lot of results
>> :)
>>
>> ( One needs some disclaimer when reading them though:
>>
>> - There are various ways to define/deal with "handedness" of the
>> coordinate system. X3D spec and glTF spec match in how they handle it,
>> so the world 3D coordinate space is right-handed, and the "tangent
>> space" handedness is determined by the W component of 4D tangents.
>> Various articles on the web don't deal with this detail, or they deal
>> with it differently.
>>
>> - The terminology distinction "bump mapping" vs "normal mapping" is
>> honored/ignored differently in articles. (Admittedly, in my own
>> writing sometimes too :) ) To be precise, "bump mapping" is more
>> general idea, and "normal mapping" is a special case of it (when you
>> do it using normal maps), and "normal mapping in tangent space" is
>> even more special case of it. But...various resources simplify these
>> things, because in practice "normal mapping in tangent space" is the
>> most common way to do bump mapping in real-time 3D graphics (now).
>> )
>>
>> I hope any of this helps you and Don and anyone else to make sense of
>> it :) Feel free to incorporate any of this in spec prose.
>>
>> Regards,
>> Michalis
More information about the x3d-public
mailing list