<div dir="auto">Now….</div><div dir="auto"><br></div><div dir="auto">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?</div><div dir="auto"><br></div><div dir="auto">I will probably look at glTF examples and intuit.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sat, Jul 5, 2025 at 8:23 AM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com">michalis.kambi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">John,<br>
<br>
Thank you, it's cool, every precise question helps me to explain it better :)<br>
<br>
To answer that:<br>
<br>
The tangent vectors (i.e., Tangent node contents) only change the way<br>
"final normal vector at given surface point" (designated by N in the<br>
lighting equations) is calculated. That's how they influence the<br>
calculation done by lighting equations, and thus the final rendered<br>
color. They do not interact with colors or geometry in any other way.<br>
<br>
And the way they change this N is that tangent vectors (together with<br>
bitangent and per-face/per-vertex normals) define the "tangent space"<br>
in which the bump mapping (which is the moment where we take<br>
XxxMaterial.normalTexture into account) is calculated.<br>
<br>
There are some resources on the web explaining this, like:<br>
- <a href="https://fabiensanglard.net/bumpMapping/" rel="noreferrer" target="_blank">https://fabiensanglard.net/bumpMapping/</a><br>
- Wikipedia: <a href="https://en.wikipedia.org/wiki/Bump_mapping" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Bump_mapping</a> ,<br>
<a href="https://en.wikipedia.org/wiki/Normal_mapping" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Normal_mapping</a><br>
- hm, ok, and much more, searching for terms like "bump mappping" or<br>
"normal mapping" or "bump mapping 3d opengl" yields a lot of results<br>
:)<br>
<br>
( One needs some disclaimer when reading them though:<br>
<br>
- There are various ways to define/deal with "handedness" of the<br>
coordinate system. X3D spec and glTF spec match in how they handle it,<br>
so the world 3D coordinate space is right-handed, and the "tangent<br>
space" handedness is determined by the W component of 4D tangents.<br>
Various articles on the web don't deal with this detail, or they deal<br>
with it differently.<br>
<br>
- The terminology distinction "bump mapping" vs "normal mapping" is<br>
honored/ignored differently in articles. (Admittedly, in my own<br>
writing sometimes too :) ) To be precise, "bump mapping" is more<br>
general idea, and "normal mapping" is a special case of it (when you<br>
do it using normal maps), and "normal mapping in tangent space" is<br>
even more special case of it. But...various resources simplify these<br>
things, because in practice "normal mapping in tangent space" is the<br>
most common way to do bump mapping in real-time 3D graphics (now).<br>
)<br>
<br>
I hope any of this helps you and Don and anyone else to make sense of<br>
it :) Feel free to incorporate any of this in spec prose.<br>
<br>
Regards,<br>
Michalis<br>
</blockquote></div></div>