我使用的Chrome版本35.0.1916.153米three.js所R67three.js所Raycaster未检测
我试图相交一些自定义的网格,我在我的场景创建场景目。 raycaster似乎没有注册网格,尽管它们存在于scene.children中。
网格生成代码:
if (modelVertices != null && modelVertices.length >= 3) {
triangles = THREE.Shape.Utils.triangulateShape (modelVertices, holes);
for(var i = 0; i < triangles.length; i++){
modelGeometry.faces.push(new THREE.Face3(triangles[i][0], triangles[i][2], triangles[i][2]));
}
modelGeometry.computeFaceNormals();
var modelMesh = new THREE.Mesh(modelGeometry, material);
modelMesh.material.side = THREE.DoubleSide;
polyhedralzGroup.add(modelMesh)
}
光线投射代码:
var projector = new THREE.Projector();
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
//console.log("Work");
// See if the ray from the camera into the world hits one of our meshes
var intersects = raycaster.intersectObjects(scene.children, true);
helper.position.set(0, 0, 0);
//console.log(intersects.length);
if (intersects.length > 0) {
if (intersects[ 0 ].face != null) {
helper.lookAt(intersects[ 0 ].face.normal);
helper.position.copy(intersects[ 0 ].point);
}
如在代码中,我使用computeFaceNormals();所以这不是问题(参见here)。奇怪的场景似乎与其他几何形状,我使用简单的三角形(即不使用THREE.Shape.Utils.triangulateShape;只是手动推三角形顶点和面)构造完美罚款这意味着这不可能是一个问题与不考虑到相交的画布偏移量。我已经检查了两种几何形状,两者之间似乎没有任何根本的区别。
没有人有任何想法什么问题可能是什么?