[x3d-public] Specification review progress: PNG3, Tangent node, HAnim weekly progress

Michalis Kamburelis michalis.kambi at gmail.com
Sat Jul 5 06:23:06 PDT 2025


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