Как я могу излучать свет на вершину и на вершину освещения в ThreeJS?

Я хочу видеть диаграмму с цветом, заданным на вершину,и получить немного затенения.
Но если я используюMeshBasicMaterial, я только получаю VertexColor без динамического затенения.
С другой стороны, если я используюMeshPhongMaterial, я просто получаю затенение, но без излучения от моих вершинных цветов.

1 ответ

  1. Как трое.JS PhongMaterial поддерживаетvertexColors, давая вам хорошее сочетание динамического освещения и цветов вершины, я не совсем уверен, что понимаю ваш вопрос. Возможно, это то, что вы должны исследовать больше?

    Однако в качестве альтернативы написанию пользовательского шейдера можно попробовать отрисовку модели за несколько этапов.

    Это не даст вам столько контроля над тем, как цвета вершин и освещение Фонга объединены, как шейдер, но часто простое добавление/умножение смеси может дать довольно приличные результаты.

    Алгоритм:

    - 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