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 值)将仅取决于法线。
在您发布的方程式中,有一个常数项和标准化正态分布的一半。
在默认的 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 值)将仅取决于法线。
在您发布的方程式中,有一个常数项和标准化正态分布的一半。