MeshNormalMaterial颜色

问题描述 投票:1回答:1

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

http:/www.smartjava.orgltjschapter-0404-mesh-normal-material.html - 例子

对不起,我的问题很愚蠢,我是新来的three.js。

three.js shader mesh fragment-shader
1个回答
2
投票

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

gl_FragColor = vec4( vNormal, opacity );

那么最终的碎片颜色(即r,g,b,a值)将只取决于法线。

在你贴出的公式中,有一个常数项和一半的法线。

© www.soinside.com 2019 - 2024. All rights reserved.