我正在从 obj 文件加载网格,然后尝试对其进行规范化。但是,我得到了奇怪的结果。这是加载和居中网格的代码:
var manager = new THREE.LoadingManager();
var loader = new THREE.OBJLoader(manager);
loader.load('http://jamesdedge.com/threejs/bunny.obj', function(object) {
object.traverse(function(child) {
if(child instanceof THREE.Mesh)
{
var geometry = child.geometry;
var verts = geometry.vertices;
var ctr = new THREE.Vector3(0.0, 0.0, 0.0);
for(i = 0; i < verts.length; ++i)
ctr.add(verts[i]);
ctr.divideScalar(verts.length);
for(i = 0; i < verts.length; ++i)
verts[i].sub(ctr);
}
});
scene.add(object);
});
这段代码应该只是将网格中心放在顶点位置的平均值上,但它似乎导致了一种奇怪的效果。你可以在我的网站上看到它:http: //jamesdedge.com/threejs/tjs_demo.html
我看不出是什么原因造成的,ctr 变量给了我一个有效的向量,从所有顶点中减去一个向量只会重新定位它。