私のプロトタイプシステムには、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-シーン内のテキストボックスとの競合カメラコントロール)
上記の関数にコードはありますか?参考までに、私は簡単なカメラを使用しました:
camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
ありがとう。