2016-05-27 20 views
0

私は、頂点ごとに指定された色のチャートを見たいだけでなく、少しのシェーディングも得たいと思っています。 しかし、MeshBasicMaterialを使用すると、動的シェーディングを持たないVertexColorしか得られません。 一方、私がMeshPhongMaterialを使用した場合、私はちょうど陰影を取得しますが、私の頂点の色からは発光しません。ThreeJSで頂点ごとおよび頂点ごとに発光を発光させるにはどうすればよいですか?

+0

ルックは、あなたのコメントのために –

+0

感謝をhttp://threejs.org/examples/#webgl_geometry_colors、私はreviewdと、それを試してみたが、私はBufferGeometryを使用していますが、createMultiMaterialObjectがあるように思えますジオメトリでのみ動作します。私はシェイダーの作成をスキップしようとしていましたが、それを避けることはできません。 –

答えて

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 
関連する問題