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