我正在尝试在threeJS中绘制线框网格和纹理网格,但是当我同时添加到我的场景时,纹理网格不会显示。代码如下:
我在创建两个共享相同几何体的网格时遇到问题,其中一个材质是线框,另一个是纹理。如果其中一种材料是线框而另一种材料只是一种颜色填充,则它可以正常工作 - 但只要我将第二种材料制成纹理就会停止工作。
如果我注释掉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 );
答案 0 :(得分:15)
在SceneUtils下有一个createMultiMaterialObject(geometry, materials)
。它实际上创建了多个网格,所有网格都在一个组中共享相同的几何体。
示例:
var mesh = THREE.SceneUtils.createMultiMaterialObject( geometry, [
new THREE.MeshLambertMaterial( { color: 0xffffff} ),
new THREE.MeshBasicMaterial( { color: 0x222222, wireframe: true} )
]);
答案 1 :(得分:0)
不幸的是,无法在使用线框的对象和不使用线框的对象之间共享几何体。您需要克隆该几何体。这提醒我,我们还没有为.clone()
Geometry
做过{。}}。