2017-10-09 4 views
0

저는 구의 중심에 위치한 구와 광선 사이의 교차를 얻기 위해 레이 캐스팅을 사용하려고합니다. 그것은 꽤 간단한 시나리오지만 그것을 작동하게 만들 수는 없습니다.Raycasting은 어떤 교차도주지 않습니다.

관련 코드 : 당신이 객체의 내부에서 주조 객체와 광선 사이의 교차점을 얻고 싶은 경우에

// 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()에 대한 문서, 말한다 : 메쉬를 들어, 향해 지적해야 직면

하는 것으로 검출 될 광선의 원점; 얼굴의 뒤를 통과하는 광선의 교차점은 감지되지 않습니다. 객체의 두면에 대해 레이 캐스트하려면 머티리얼의 side 속성을 THREE.DoubleSide로 설정해야합니다.

관련 문제