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 BufferGeometry:如何渲染面组_Javascript_Three.js - Fatal编程技术网

Javascript BufferGeometry:如何渲染面组

Javascript BufferGeometry:如何渲染面组,javascript,three.js,Javascript,Three.js,我有两个几何体和两个网格。主要目标是有时排除第一个几何体的一部分(因此我需要两组),并在这一次显示第二个几何体的一部分(始终为1组)。在发布r72之前,我一直在使用这个代码 第一几何体: bufCompaniesGeomNotActive.addDrawCall(0, geomCompaniesNotActive.faces.length * 3, 0); bufCompaniesGeomNotActive.addDrawCall(0, 0, 0); 第二几何 bufCompaniesGeom

我有两个几何体和两个网格。主要目标是有时排除第一个几何体的一部分(因此我需要两组),并在这一次显示第二个几何体的一部分(始终为1组)。在发布r72之前,我一直在使用这个代码

第一几何体:

bufCompaniesGeomNotActive.addDrawCall(0, geomCompaniesNotActive.faces.length * 3, 0);
bufCompaniesGeomNotActive.addDrawCall(0, 0, 0);
第二几何

bufCompaniesGeomActive.addDrawCall(0, 0, 0);
在r72版本中,addDrawCall刚刚重命名为addGroup。 但主要问题是第一几何中的两组。我像以前一样试着让这部分可见

 floor.companiesGeomNotActive.groups[0].start = 0;
 floor.companiesGeomNotActive.groups[0].count = obj.startFaceIndexNotActive * 3;

 floor.companiesGeomNotActive.groups[1].start = obj.endFaceIndexNotActive * 3;
 floor.companiesGeomNotActive.groups[1].count = lengthNotActive - obj.endFaceIndexNotActive * 3;
但是没有成功。
我找到了方法
companyesgeomactive.setDrawRange(obj.startFaceIndexActive*3,3*(obj.endFaceIndexActive-obj.startFaceIndexActive)),它可以工作,但如何为多个组设置范围?

BufferGeometry.groups
现在用于支持多材质(以前称为MeshFaceMaterial)

如果使用单个材质并希望渲染面子组,则可以使用如下模式:

geometry.clearGroups();
geometry.addGroup( start1, count1, 0 ); // zero
geometry.addGroup( start2, count2, 0 ); // zero

var materialsArray = [ material ];
var material = new THREE.MultiMaterial( materialsArray );
var mesh = new THREE.Mesh( geometry, material );
当材质为多材质时,
geometry.drawRange
将被忽略

3.js r.72

geometry.clearGroups();
geometry.addGroup( start1, count1, 0 ); // zero
geometry.addGroup( start2, count2, 0 ); // zero

var materialsArray = [ material ];
var material = new THREE.MultiMaterial( materialsArray );
var mesh = new THREE.Mesh( geometry, material );