我一直在使用fromGeometry方法来从常规的几何对象中创建BufferGeometry对象,并且我发现在转换过程中似乎增加了顶点的数量。例如,如果我这样做:在Three.js中将几何转换为BufferGeometry会增加顶点的数量吗?
var geometry = new THREE.BoxGeometry(80,80,80,16,16,16);
var bGeometry = new THREE.BufferGeometry();
bGeometry.fromGeometry(geometry);
console.log(bGeometry.getAttribute('position'));
console.log(geometry.vertices.length);
我得到一个Float32Array [27648],它由3个产量9216分,而几何具有1538个顶点。我理解THREE.BoxGeometry合并了一些顶点,所以我怀疑这可能与它有关,但我确定BoxGeometry对象具有更多顶点吗?还是Geometry对象在GPU中“未压缩”,因此它们实际上具有相同数量的顶点,而不是在我的几何对象中?
的原因,我问的是,我试图创建一个自定义属性,但是我的数组太短时,我只迭代,在我的几何对象的顶点数量,以为会有相同数量的两个对象中的顶点。
这听起来很低效。如果只存储8个顶点(24个浮点数),那么是否会有多余的冗余?然后有一个指向每个顶点顶点的参考数组?例如,face1由顶点[0,1,2] face2:[0,2,3]等组成? – Marquizzo
你的建议是IndexedGeometryBuffers。 – gaitat
哦,很高兴知道!我想我还有很多东西需要学习。 – Marquizzo