2015-02-02 1 views
0

THREE.JS에 프로그램을 작성 중이며 Vector3을 투영해야합니다. 카메라의 화면 가운데에 있어야하는 Vector3 (0,0,0)을 투영하려고하면 NaN이 표시됩니다. 가시성이 차이를 만들어서는 안되는 다른 Vector3s는 NaN, 0, Infinity 및 -1과 0 사이의 임의의 숫자 (보통)와 같은 항목을 반환합니다. 여기에 몇 가지 코드는 다음과 같습니다THREE.JS - Vector3.project가 이상한 결과를 반환합니다.

camera.position.x=32; 
camera.position.y=32; 
camera.position.z=32; 
camera.lookAt(new THREE.Vector3(0,0,0)); 
for(var x=0;x<=16;x++) 
{ 
    for(var z=0;z<=16;z++) 
    { 
     var p=new THREE.Vector3(x,0,z).project(camera); 
     alert(p.x+" "+p.y+" "+p.z); 
     //HELP!!! 
    } 
} 

감사합니다 : D

답변

0

당신이 세터를 사용하는 데 필요한 카메라 위치를 설정하려면이 (? 내가 잘못 아니에요 경우이 r67 이후로 변경). 이 같은 :

camera.position.setX(32); 
camera.position.setY(32); 
camera.position.setZ(32); 

또는

camera.position.set(32, 32, 32); 

당신이 세터를 사용하지 않았기 때문에 카메라의 위치는 가장 가능성도 (0, 0, 0)입니다.

벡터를 자신에게 투영 할 수 없습니다. 이것을 막기위한 해결책은 벡터와 카메라 위치의 동일성을 검사하는 절을 추가하는 것입니다.

vector = new THREE.Vector3(x, 0, z); 
if(! camera.position.equals(vector)){ 
    var p = vector.project(camera); 
} 
+0

Nope ... 여전히 작동하지 않습니다. – MadHacker

관련 문제