我使用的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;只是手動推三角形頂點和麪)構造完美罰款這意味着這不可能是一個問題與不考慮到相交的畫布偏移量。我已經檢查了兩種幾何形狀,兩者之間似乎沒有任何根本的區別。
沒有人有任何想法什麼問題可能是什麼?