Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在three.js中隐藏网格的面吗?_Javascript_Three.js_Mesh - Fatal编程技术网

Javascript 我可以在three.js中隐藏网格的面吗?

Javascript 我可以在three.js中隐藏网格的面吗?,javascript,three.js,mesh,Javascript,Three.js,Mesh,我希望在运行时使网格的某些部分不可见。我是否可以将这些零件设置为不可见/透明,例如通过更改单个面的属性?网格本身仅使用一种材质 示例性插图正如编辑理解的那样:想象一个网格(这里有20个顶点的几何体),其中四个顶点的每个四边形构成一个面4。现在,应该使网格的某些部分不可见(此处两个面不可见) 您可以为每个面指定不同的材质。下面是一个示例,其中面共享材质,但某些面是透明的: // geometry var geometry = new THREE.BoxGeometry( 100, 100, 10

我希望在运行时使网格的某些部分不可见。我是否可以将这些零件设置为不可见/透明,例如通过更改单个面的属性?网格本身仅使用一种材质


示例性插图正如编辑理解的那样:想象一个网格(这里有20个顶点的几何体),其中四个顶点的每个四边形构成一个
面4
。现在,应该使网格的某些部分不可见(此处两个面不可见)


您可以为每个面指定不同的材质。下面是一个示例,其中面共享材质,但某些面是透明的:

// geometry
var geometry = new THREE.BoxGeometry( 100, 100, 100, 4, 4, 4 );

// materials
materials = [
    new THREE.MeshLambertMaterial( { color: 0xffff00, side: THREE.DoubleSide } ),
    new THREE.MeshBasicMaterial( { transparent: true, opacity: 0 } )
];

// assign material to each face
for( var i = 0; i < geometry.faces.length; i++ ) {
    geometry.faces[ i ].materialIndex = THREE.Math.randInt( 0, 1 );
}
geometry.sortFacesByMaterialIndex(); // optional, to reduce draw calls

// mesh
mesh = new THREE.Mesh( geometry, materials );
scene.add( mesh );
//几何体
var geometry=新的3.BoxGeometry(1001001004);
//材料
材料=[
新的THREE.MeshLambertMaterial({color:0xffff00,side:THREE.DoubleSide}),
新的3.MeshBasicMaterial({transparent:true,opacity:0})
];
//为每个面指定材质
对于(变量i=0;i
更新的Fiddle显示了在运行时更改材质的一种方法:

编辑:
MeshFaceMaterial
已被弃用。张贴和小提琴更新


three.js r.87

你的问题不是很清楚。你是否试图将人脸的可见性设置为false(使其不可见)?我以我理解的方式编辑了这个问题。特别是,因为我也有这个问题,不想创建一个副本。但我如何在运行时更改这些面材质?我添加了一个点击监听器,它应该使所有的面再次变黄,但它不起作用。我在上面找到了一个答案。备注:再次将所有人脸变为黄色不符合问题的用例。我需要在点击时将透明材质应用到每个面上,当然这也不起作用。这个提琴允许运行时更改。它基于您引用的“相关讨论”。另外,由于缓冲区需要预先分配,您不能更改为更复杂的材质,因此在新的小提琴中,两种材质都是
Lambert