2017-10-09 20 views
0

私は球とレイの交差点を取得するためにレイキャスティングを使用しようとしています。どちらもシーンの中央に位置しています。それはかなりシンプルなシナリオですが、私はそれを動作させることができません。レイキャスティングに交差点がありません

関連するコード:場合

// renderer, camera, etc... 

var material = new THREE.MeshStandardMaterial(); 
material.opacity = 0.25; 
material.transparent = true; 
sphere = new THREE.Mesh(new THREE.SphereGeometry(100, 32, 32), material); 
scene.add(sphere); 

var start = new THREE.Vector3(0, 0, 0); 
var direction = new THREE.Vector3(-84, 102, 97); 
var ray = new THREE.Raycaster(start, direction.normalize()); 
scene.updateMatrixWorld(); 
var rayIntersects = ray.intersectObjects([sphere], true); 

console.log(rayIntersects); // empty array 
+2

オブジェクトの内側からレイをキャストするときには、バック面はカウントされません。 'var material = new THREE.MeshStandardMaterial({side:THREE.DoubleSide});'を使用してみてください。 – prisoner849

答えて

1

、あなたがオブジェクトと線との交点を取得したい、対象物の内部からキャストし、その後、オプションとして、あなたは、両面を使用する必要があります材料。

ので、同じように:

var material = new THREE.MeshStandardMaterial({ side: THREE.DoubleSide }); 

.intersectObject (object, recursive)方法についての説明の一部の最後にTHREE.Raycaster()のドキュメント、次のように述べていますメッシュについて、の方に指摘されている必要があり直面

に留意されたいです。検出されるためには光線の起源。顔の後ろを通る光線の交点は検出されません。オブジェクトの両面に対してレイキャストするには、マテリアルのサイドプロパティをTHREE.DoubleSideに設定します。