2017-10-10 8 views
0

たとえば、DOMのように、シーンの上/左からThree.jsの位置0,0,0を開始するにはどうすればよいですか?DOM変換座標と一致するようにThree.js座標系を変更するにはどうすればよいですか?

位置が0,0,0のときは左上になり、サイズはCSSのピクセルサイズになり、このサイズは変更されません。ビューポートが変更されます。サイズが10の場合は、10個のCSS pxのスパンが(Z = 0の場合)画面に表示されることを意味します。


編集:私は、私は知らなかったフォーラムThree.js比較的新しい公式にこの質問を移動しています:https://discourse.threejs.org/t/how-can-we-make-three-js-scenes-use-dom-style-coordinates/962

答えて

0

あなたが(代わりに、視点の)適切な正字を設定する必要がありますキャンバスサイズをピクセルに合わせるための投影行列です。正投影行列は以下のように構築される:

S 0 0 0 | S = 2/right - left 
0 T 0 0 | T = 2/top - bottom 
0 0 U 0 | U = -2/far-near 
Tx Ty Tz 1 | 

ピクセル単位で画面空間(16台のフロートアレイで定義された4×4行列を仮定して)を有するようにマッチワールド空間に従ったようにあなたは、射影行列を定義することができる:

view[ 0] = 2.0/(canvasWidth); 
view[ 5] = 2.0/-(canvasHeight);  // Negate to invert Y coordinates 
view[10] = -2.0/farClip - nearClip; 
view[12] = -1.0;      // Translate X so left border start at 0 
view[13] = 1.0;      // Translate Y so top border start at 0 
view[14] = 0.0; 
view[15] = 1.0; 

これで、Three.jsでこれを設定する方法を見つける必要がありました。

+0

ヒントSedenion。右、左、上、下、遠く、近い値は何ですか?右== canvasWidth、左== 0ですか? – trusktr

+1

右上と左下がビューポートに関連しています。「右 - 左」は幅を与え、「上 - 下」は高さを与えます。近い値と近い値は、近くおよび遠いクリッピング平面に関連しています。はい、あなたの場合、 'right'は' canvasWidth'で、 'Left'は暗黙のうちに' 0'です。理論的にはすべてのキャンバスをカバーしているからです。 –

関連する問題