我有这段代码:
function render_obj(objPath){
var loader = new THREE.OBJLoader();
loader.load(
objPath,
function ( object ) {
child = object.children[0];
var geometry = new THREE.Geometry().fromBufferGeometry( child.geometry );
var material = new THREE.MeshBasicMaterial({wireframe: true});
model = new THREE.Mesh(geometry, material);
scene.add(model);
},
function ( xhr ) {
console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
},
function ( error ) {
console.log( 'An error happened' );
}
);
};
现在man.obj
有214个顶点和332个面。当我通过这样做检查面部时:model.geometry.faces.length
我得到332这是正确的。
当我model.geometry.vertices.length
时,我得到996,我应该得到214 ......
为什么?
答案 0 :(得分:1)
您正在使用的装载程序正在创建一个名为“三角汤”的东西。这意味着您的N个三角形实际上由N * 3个顶点定义。三角形本身并不存在,它只是从顶点解释而来。前三个是三角形,接下来是三个,依此类推。如果你有一个连续的平滑网格,那么很多顶点都会重复。
您可能感兴趣的是“索引”几何。在这种类型的几何体中,您有一个实际的三角形缓冲区,其中包含顶点的索引。在连续平滑网格中,许多三角形可以共享一个顶点。