如何在ThreeJS中为每个顶点和每个顶点照明发光?

时间:2016-05-27 15:12:38

标签: three.js

我希望看到每个顶点指定颜色的图表,并且还要获得一点阴影。 但是,如果我使用MeshBasicMaterial,我只能获得没有动态着色的VertexColor。 另一方面,如果我使用MeshPhongMaterial,我只会得到阴影,但没有顶点颜色的放射性。

1 个答案:

答案 0 :(得分:0)

由于THREE.JS PhongMaterial支持vertexColors,为您提供动态光照和顶点颜色的完美组合,我不太清楚我理解您的问题。也许这是你应该调查的更多内容?

但是,作为编写自定义着色器的替代方法,您可以尝试多次传递模型。

这不会让你尽可能多地控制顶点颜色和phong光照作为着色器组合的方式,但通常简单的加/混合可以提供相当不错的结果。

算法:

- create two meshes for the BufferGeometry, one with the BasicMaterial and one with the PhongMaterial
- for the PhongMaterial, set
    depthFunc = THREE.EqualDepth
    transparent = true;
    blending = THREE.AdditiveBlending(or MultiplyBlending)
- render the first mesh
- render the second mesh at the exact same spot