2013-05-10 3 views
0

나는 레이캐스팅 (raycasting) 방법을 사용하여 트랙의 양쪽에있는 다른 색상의 스트립을 감지하고 거리를 계산하여 위치에 제 차 객체를 유지했습니다. 그러나 문제는 광선이 항상 전역 좌표계에서 일정한 방향을 가리키고 있으며, 차 객체의 움직임 (회전)에 따라 바뀌지 않습니다. 광선 방향이 내가 할 수있는 방법을 파악할 수없는 차의 참조 프레임에 있다면 그것은 가질 수 있습니다. 현재이 작업을 수행하고 있습니다로컬이 아닌 글로벌 좌표계를 기준으로 한 레이 캐스팅 방향

var ray = new THREE.RayCaster (car.position, new THREE.Vector3 (-1,0,0), 0,50);

자동차의 움직임은

누군가가 해결책을 지적 할 수있는 X-Z 평면에?

답변

1

세계 우주에서 레이 캐스팅이 수행되고 있으므로 올바른 월드 공간 벡터가 필요합니다.

나는 차가 장면의 자식이라고 가정하고 있고, 다른 회전 된 객체는 아닙니다.

세계 좌표계에서 자동차가 향하고있는 방향을 가리키는 단위 벡터를 구성하려면 먼저 자동차가 향하는 방향을 가리키는 단위 벡터를 로컬 좌표계로 구성하십시오. 귀하의 경우 :

var vector = new THREE.Vector3(-1, 0, 0); 

그런 다음 자동차에 적용된 것과 동일한 회전을 벡터에 적용하십시오.

vector.applyQuaternion(car.quaternion); 

편집 : 감지되고있는 스트립 와트의 반대 r.66

+0

덕분에 문제가 해결되었습니다 .. 많이 @WestLangley을 three.js를하도록 업데이트 ..하지만이 예상된다 즉 스트립에 Vector3 (1,0,0)과 viceversa를 사용하여 월드 공간의 x 개가 감지됩니다. 여전히 내 논리에서 사용할 수 있지만 그 이유를 알고 싶습니다 –

+0

다른 질문을 게시해야합니다. 추가 문제가 있습니다. 문제를 설명하기 위해 간단한 예제 (jsfiddle.net)를 제공하는 것이 좋습니다. – WestLangley

+0

Ok ... thnx ... 다른 질문을 올릴 것입니다. –

관련 문제