MeshNormal材质颜色

MeshNormalMaterial color

在默认的 MeshNormalMaterial 示例中,立方体墙的颜色正在改变,因为它使用了这个 THREE.ShaderLib[ 'normal' ] 着色器。此着色器通过此 gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity ); 设置 gl_FragColor。谁能给我解释一下这个公式?哪个立方体向量被归一化了?还有其他影响颜色的因素吗?

http://www.smartjava.org/ltjs/chapter-04/04-mesh-normal-material.html - 示例

抱歉这个愚蠢的问题,我是 three.js 的新人。

MeshNormalMaterial 基本上是根据对象的法线为对象着色。所以在你给出的等式中 vNormal 是该片段的顶点法线。将其视为将法线的 (x,y,z) 向量转换为 (r,g,b) 颜色。两个空间之间的变换由该公式给出。如果你有

gl_FragColor = vec4( vNormal, opacity );

那么最终的片段颜色(即 r、g、b、a 值)将仅取决于法线。

在您发布的方程式中,有一个常数项和标准化正态分布的一半。