1,正常的笛卡爾右手坐標系,以屏幕右方為+X軸,屏幕上方為+Y軸,垂直屏幕向外為+Z軸,如下圖,xy軸組成的平面為屏幕面


但由於THREE里的相機並不總是從屏幕正前方視角,還可以設置坐標系任意一個軸為正上方(類似於旋轉坐標系),所以不同的設置會導致視角不一樣
三維坐標系里的點坐標格式為(x,y,z),因此,繪制xyz軸的直線可以由以下坐標構成
X軸:(0,0,0)-(100,0,0)
Y軸:(0,0,0)-(0,100,0)
Z軸:(0,0,0)-(0,0,100)

2,相機所在位置position和視線方向lookAt
相機所在位置是一個點(x,y,z),即相機在坐標系種的位置
lookAt也是一個點,由相機和lookAt組成的向量就是相機的視線方向了

例如相機在A(100,100,100),lookAt在B(0,0,0),那么視線的方向就很清楚了,這個時候你在X軸上划一條(0,0,0)-(100,0,0)的直線
在屏幕上並不會顯示一條垂直於屏幕的水平線,而是一條傾斜的直線,原因就是視角的方向調整了(默認視角是屏幕正前方看向屏幕,即(0,0,100)-(0,0,0))
3,調整相機的XYZ正方向
相機默認的坐標系Y軸向上,也可以設置成XZ軸為正方向,現在看一下正常坐標系
camera.position.x = 500;
camera.position.y = 500;
camera.position.z = 500;
camera.up.x = 0;
camera.up.y = 1;
camera.up.z = 0;
camera.lookAt({x:0,y:0,z:0});


圖中白色為X軸,黃色為Y軸,紅色為Z軸
再把X軸設為正方向,結果為


X設為正方向,必然是向上的,注意看這個時候的y和z軸
再將Z軸設為正方向,結果為


Z設為正方向, Z軸必然是向上的,注意此時的x和y軸
我們可以簡單理解成
y.up = 1,一個人站在屏幕前面看屏幕中心,屏幕向右為+X,屏幕向上為+Y,屏幕向外為+Z


x.up = 1,一個人站在屏幕上面看向屏幕中心,雙眼所在直線與屏幕上邊垂直


z.up = 1,一個人站在屏幕的右側看向屏幕中心,雙眼所在直線與屏幕右邊水平,有點像把屏幕當成盤子端在面前,
屏幕面向上,屏幕右側面向眼睛,屏幕上側面向右手方向


難受,三維想象能力不行,幾個姿勢擺了半天才明白過來。