2011-11-25 17 views
21

전통적으로 3D 프로젝션에서 Y 축은 "위아래"를 나타내는 축입니다. 나는 다른 엔진과 함께 Z 축이라는 축을 생각해 냈습니다. 내가 궁금해 한 것은 Three.JS에 Z 축을 "위/아래"축으로 만드는 방법이 있는지의 여부입니다. 그렇다면 어떤 결과가 있습니까? enter image description hereThree.JS y 축이 z 축이되도록 프로젝션 회전

+4

오른쪽 사진의 "x"와 "y"가 잘못된 위치에있는 것 같습니다. 그들은 서로 바꿔야하지 않습니까? – aarman

+0

이 대회에 대해 더 자세히 읽을 수있는 곳으로 안내해 주시겠습니까? 나는 그것을 직면 해 본 적이 없다. -/ – Kuba

답변

36

전체 좌표계가 아닌 카메라 만 변경할 수 있습니다. 예를 들어 :

var WIDTH = 1024; 
var HEIGHT = 768; 
var VIEW_ANGLE = 45; 
var ASPECT = WIDTH/HEIGHT; 
var NEAR = 0.1; 
var FAR = 10000; 
camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); 
camera.position.z = 300; 
camera.up = new THREE.Vector3(0, 0, 1); 
scene.add(camera); 

이 카메라가 Z-UP을 사용하기위한 up 벡터를 변경합니다.


편집 :

예를 설명하기 위해, 여기에 약간 up 벡터 설정 한 후 lookAt를 호출하도록 수정으로 작성한 jsfiddle입니다 : 항상 설정해야합니다 http://jsfiddle.net/NycWc/1/

+0

답변 해 주셔서 감사합니다! 지금은 테스트 할 시간이 없지만 곧 시도 할 것입니다. 그것은 다른 카메라 방법에 어떤 영향을 미칩니 까? 정상적으로'lookAt'를 사용할 수 있습니까? –

+0

흠, 카메라의 위쪽 벡터를 사용하기 때문에 lookAt가 여전히 작동한다고 생각합니다. https://github.com/mrdoob/three.js/blob/master/src/cameras/Camera.js#L32 – jterrace

+1

아마 뭔가 이상한 일을하고 있지만, 카메라가 올라갈 것이라고 기대하고 있습니다. 대신 http://jsfiddle.net/NycWc/ 왼쪽에있는 것 같습니다. –

2

내가 객체와이 문제를 가지고 : 여기

는 내가 원하는 걸의 도면이다. 방법은 다음과 같습니다.

object.rotation.z = 90 * Math.PI/180; 
object.rotation.x = -90 * Math.PI/180; 

이렇게하면 방향이 바뀌 었습니다.

+0

전체 좌표계를 변경하여 y와 z의 위치를 ​​변경하면 내가 설명한 변경을 할 수있는 방법을 찾고있다. –

0

XYZ 좌표계는 오른손 규칙으로 자신의 컨벤션을 만드는 것은 그리 좋은 계획은 아니며 많은 혼란을 야기합니다. 좌표 프레임을 자유롭게 회전시킬 수는 있지만 축의 방향은 변경하지 마십시오. 디스플레이하는 것을 실제로하고 싶다면 x, y, -z 좌표 프레임을 만들 수 있습니다.