3D座標→2D画面座標変換
カメラから見た3D座標(右・上・前)を、透視投影で画面上のピクセル座標に変換します。
画面X(左端が0)—
画面Y(上端が0)—
計算式
- 焦点距離 f = (画面の高さ ÷ 2) ÷ tan(垂直FOV ÷ 2)
- 画面X = 幅 ÷ 2 + X ÷ Z × f
- 画面Y = 高さ ÷ 2 − Y ÷ Z × f
使い方のヒント
座標はカメラを原点とし、X=右、Y=上、Z=前方としています。ワールド座標から変換する場合は、先にカメラの位置・向きでカメラ座標に直してください。ゲームエンジンによって軸の向きが異なります。
計算例
初期値(点の座標 X 2、点の座標 Y 1、点の座標 Z 10、垂直FOV 60 °、画面の幅 1,920 px、画面の高さ 1,080 px)のままで計算すると、画面X(左端が0)は 1,147.06 px、画面Y(上端が0)は 446.47 px、画面内かどうかは 画面内、焦点距離(ピクセル単位)は 935.31 px になります。まずはこの値を基準に、自分の数値へ置き換えて確認してください。
たとえば「点の座標 X」だけを 4 に変えると、画面X(左端が0)は 1,334.12 px、画面Y(上端が0)は 446.47 px、画面内かどうかは 画面内、焦点距離(ピクセル単位)は 935.31 px になります。結果がどの入力にどれだけ敏感かを見るときは、入力を1つずつ動かして比べるとわかりやすくなります。
関連ツール
よくある質問
3D座標→2D画面座標変換では何がわかりますか?
カメラから見た3D座標(右・上・前)を、透視投影で画面上のピクセル座標に変換します。
何を入力すればいいですか?
次の項目を入力します: 点の座標 X、点の座標 Y、点の座標 Z、垂直FOV、画面の幅、画面の高さ。内容を変えると、結果もそれに合わせて変わります。
結果にはどんな項目が表示されますか?
「画面X(左端が0)」「画面Y(上端が0)」「画面内かどうか」「焦点距離(ピクセル単位)」などが表示されます。
どんな計算式を使っていますか?
ページ内の「計算式」にまとめています。たとえば「焦点距離 f = (画面の高さ ÷ 2) ÷ tan(垂直FOV ÷ 2)」のような式です。
結果はどのくらい正確ですか?
計算式はゲームでよく使われるものです。実際の作品では丸め方(切り捨て・四捨五入)や上限値が違うことがあるので、最後はテストプレイで確認してください。
スマホでの利用、入力内容の扱い、結果のコピー、印刷など、全ツールに共通する質問は共通のよくある質問にまとめています。