3

threeJSでワイヤーフレームメッシュとテクスチャメッシュを描画しようとしていますが、両方をシーンに追加すると、テクスチャメッシュが表示されません。以下のコード:

マテリアルの1つがワイヤーフレームで、もう1つがテクスチャである、同じジオメトリを共有する2つのメッシュを作成するのに問題があります。マテリアルの1つがワイヤーフレームで、もう1つが単なるカラーフィルである場合、それは正常に機能しますが、2番目のマテリアルをテクスチャにするとすぐに機能しなくなります。

コメントアウトするscene.add( wireMesh );と、テクスチャメッシュが表示されます。

var wireMat =  new THREE.MeshBasicMaterial( { color:0x00FFFF, wireframe: true,                 transparent: true, overdraw:true } );
var wireMesh = new THREE.Mesh(geometry, wireMat);
scene.add( wireMesh );

var texture = texture = THREE.ImageUtils.loadTexture( 'textures/world.jpg' );

var imageMat = new THREE.MeshBasicMaterial( {color:0xffffff, map: texture } );

var fillMesh = new THREE.Mesh(geometry, imageMat);
scene.add( fillMesh );
4

2 に答える 2

16

SceneUtilsの下に。がありcreateMultiMaterialObject(geometry, materials)ます。基本的に、すべてがグループ内で同じジオメトリを共有する複数のメッシュを作成します。

例:

var mesh = THREE.SceneUtils.createMultiMaterialObject( geometry, [

    new THREE.MeshLambertMaterial( { color: 0xffffff} ),
    new THREE.MeshBasicMaterial( { color: 0x222222, wireframe: true} )

]);

THREE.SceneUtilsソースコード

于 2013-11-06T04:36:37.090 に答える
0

残念ながら、ワイヤーフレームを使用しているオブジェクトとそれを使用していない別のオブジェクトの間でジオメトリを共有することはできません。そのジオメトリのクローンを作成する必要があります。.clone()これは、まだ行っていないことを思い出させてくれGeometryます。

于 2012-09-11T22:52:13.510 に答える