2012-12-14 4 views
-1

저는 몇 주 동안 three.js로 놀았으며 레이 캐스팅에 약간의 불일치가있었습니다. 카메라는 구형 에 첨가광선 교차점 및 자식 카메라

http://jsfiddle.net/eMrhb/12/

예를 들어 TrackBallControl 더 사용 메쉬 : 여기서 I는 encoutered 버그 중 하나를 설명하는 간략화 된 버전이다. 구 콘솔 열기에 몇 번 클릭

scene.add(mesh);  
mesh.add(camera); 

은 우리에게 레이 메쉬 사이의 예상 교차 전혀 보여주지.

장면 (http://jsfiddle.net/eMrhb/9/)에 카메라를 추가, 문제 해결 :

scene.add(mesh);  
scene.add(camera); 

을하지만 내 요구에 맞게 내 장면 객체와 카메라 사이에 훨씬 더 복잡한 계층 구조를 사용할 수 있습니다.

제한 사항이 있으십니까? 그렇다면 사용할 수있는 해결 방법이 있습니까?

+0

내가 왜 당신이 아래로 점점 확실하지 않다을 - 투표 됨. 이것은 나에게 아주 좋은 질문처럼 보입니다 ... – WestLangley

+0

아마 당신이 주장하는 것처럼, 두 번째 바이올린의 장면에 카메라를 직접 추가하지 않았기 때문일 것입니다. – WestLangley

+0

실례합니다. (영어) 실수입니다. _directly_는 올바른 단어가 아니 었습니다. – lutangar

답변

0

예, 해결할 수 있습니다.

카메라가 회전 또는 변환 된 다른 객체의 자식 인 경우 광선 캐스팅에 다른 패턴을 사용해야합니다. 대신이 익숙한 패턴의

:

var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize()); 

대신이 패턴을 사용할 수 있습니다

var position = camera.matrixWorld.getPosition().clone(); 
var ray = new THREE.Ray(position, vector.subSelf(position).normalize()); 

three.js를 r.53

+0

실제로 문제가 수정되었습니다 : . 고맙습니다. 중첩 된 객체의 경우 'camera.matrixWorld.getPosition() .clone();' 항상 작업을 수행합니까? 아니면 불쾌한 벡터 곱셈을 통해 얻고 다른 객체가 다른 객체처럼 업데이트해야합니까? 위키에서 _Camera 위치 및 대상이 자동으로 업데이트됨을 읽었습니다 ._ 지역 위치에서만 정확합니까? – lutangar

+0

나는이 해결책이있는 그대로 작동 할 것이라고 믿는다. 위키 저자가 인용 한 인용구가 무엇을 의미하는지는 분명하지 않습니다. 추가 문제가있는 경우 새로운 문제를 게시하십시오. – WestLangley