2015-09-28 47 views
0

我有2个几何和2个网格。主要目标有时会排除第一个几何体的一部分(所以我需要2组),并在此时显示第二个几何体的一部分(总是1组)。 R72发布之前,我是用这个代码BufferGeometry:如何渲染面组

1几何:

bufCompaniesGeomNotActive.addDrawCall(0, geomCompaniesNotActive.faces.length * 3, 0); 
bufCompaniesGeomNotActive.addDrawCall(0, 0, 0); 

2几何

bufCompaniesGeomActive.addDrawCall(0, 0, 0); 

在R72版本addDrawCall刚刚更名为ADDGROUP。 但主要问题是第1几何中的2组。我试图让可见部分像以前一样

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; 

但没有成功。 我找到了方法companiesGeomActive.setDrawRange(obj.startFaceIndexActive * 3, 3 * (obj.endFaceIndexActive - obj.startFaceIndexActive));,它的工作原理,但我怎样才能设置许多组的范围?

回答

2

BufferGeometry.groups现在用于支持MultiMaterial(以前称为MeshFaceMaterial)。当材料MultiMaterial

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被忽略:

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

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

如果你有一个单一的材料,并想呈现的面孔子组,你可以使用一种模式,像这样。

three.js r.72

+0

一切正常!非常感谢。 –