2

実行時に顔の色を変更したい単純な平面メッシュがあります (実際には、キャラクターが「床タイル」の上を歩いたとき)。

私は次のことを試します:

face.color.setRGB(Math.random(), Math.random(), Math.random());

これは で正常に動作しますがCanvasRenderer、 に切り替えると動作しなくWebGLRendererなります。

geometry.colorsNeedUpdateフラグを設定しようとしましたが、成功しませんでした。メッシュとジオメトリは次のように設定されdynamicています。他に不足しているものはありますか?

(Three.js r59 を使用)

ありがとう、

フィル。

4

3 に答える 3

7

についてWebGLRendererは、次のパターンに従う必要がありますTHREE.Geometry

各面に色を割り当てます。

for ( var i = 0; i < geometry.faces.length; i ++ ) {
    geometry.faces[ i ].color.setHex( Math.random() * 0xffffff );
}

素材にセットvertexColors = THREE.FaceColors

material = new THREE.MeshPhongMaterial( { color: 0xffffff, vertexColors: THREE.FaceColors } );

colorsNeedsUpdateカラーチェンジ後にセット。

mesh.geometry.colorsNeedUpdate = true;

three.js.r.76

于 2013-07-25T15:23:17.140 に答える