1
在我的原型系統中有一個功能,用於在您單擊Collada文件時檢測相交。相交功能如下:Three.JS-在Collada中檢測相交(光線投射)
function Intersectfun (event) {
mouse.x = (event.clientX/window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY/window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 1);
var toIntersect = [];
THREE.SceneUtils.traverseHierarchy(scene, function (child) {
if (child instanceof THREE.Mesh) {
toIntersect.push(child);
}
});
// Unproject the vector
projector.unprojectVector(vector, camera);
var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
var intersects = ray.intersectObjects(toIntersect);
if(intersects.length){
target = intersects[0].object;
}
}
但是,當我使用:
controls = new THREE.TrackballControls(camera, renderer.domElement);
的交叉矩陣是空的,無法檢測到十字路口!
但是當我使用:
controls = new THREE.TrackballControls(camera);
我能得到的交叉矩陣,它工作得很好,但另一個問題是發現(在這裏看看:Three.JS -- conflict Camera controls with a textbox in a scene)
是否有任何的代碼在以上功能?爲了您的信息,我使用了一個簡單的相機:
camera = new THREE.PerspectiveCamera(40, window.innerWidth/window.innerHeight, 1, 10000);
謝謝。