ゲーム数学を「使える力」に変えよう!ゲーム講座PDF無料プレゼント中>>

ワールド座標をスクリーン座標に変換する方法|3D空間から2D表示へ

ベクトルと行列で理解するゲーム数学|移動・回転・変換の基本

「3Dオブジェクトの位置を、画面のどこに表示されるか知りたい」

「UI要素を3Dオブジェクトの上に配置したい」

こんな要望、ありませんか?

そんな場面で必要なのが、ワールド座標をスクリーン座標に変換する処理です。

3D空間の位置を、画面の2D座標に変換すれば、UIと3D空間を連携させることができます。

ワールド座標からスクリーン座標への変換は、カメラの投影計算を使った重要な処理です。

Unityでは、Camera.WorldToScreenPointという関数で簡単に変換できますね。

この記事では、ワールド座標をスクリーン座標に変換する方法について、Unity実装例とともに解説します。

  • ワールド座標をスクリーン座標に変換する方法が分からない…
  • 3Dオブジェクトの位置を、画面のどこに表示されるか知りたい。
  • UI要素を3Dオブジェクトの位置に合わせたい。

この記事でわかること

  • ワールド座標からスクリーン座標への変換の基本
  • カメラの投影計算を使った変換方法
  • Unityでの変換関数の使い方
  • 3Dオブジェクトの画面表示位置の取得
  • 初心者でも理解できる座標変換の考え方
ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

ワールド座標スクリーン座標変換とは何か(ゲーム制作目線)

ワールド座標スクリーン座標変換の基本

ワールド座標からスクリーン座標への変換は、3D空間の位置を、画面の2D座標に変換する処理です。

ワールド座標は、3D空間での位置を表す座標です。

スクリーン座標は、画面の左上を原点とする2D座標です。

この変換を行うことで、3Dオブジェクトの位置を画面座標で取得できます

例えば、3Dオブジェクトの上にUI要素を表示したり、オブジェクトが画面のどこに表示されているかを確認したりできます。

Unityでは、CameraコンポーネントのWorldToScreenPoint関数を使って、簡単に変換できます。

ゲームでの具体的な使い道

ワールド座標スクリーン座標変換のゲームでの使用例

ワールド座標からスクリーン座標への変換が、ゲームでどう使われているか確認してみましょう。

3Dオブジェクトの上にUIを表示

3Dオブジェクトの位置を画面座標に変換して、その位置にUI要素を配置します。

プレイヤーの頭上に名前を表示したり、敵の頭上にHPバーを表示したりする際に使われます。

オブジェクトが画面内にあるかの判定

3Dオブジェクトの位置を画面座標に変換して、画面内に表示されているかを判定できます。

画面外のオブジェクトを非表示にしたり、画面端に近いオブジェクトを検出したりできます。

ポインターやカーソルの位置合わせ

3Dオブジェクトの位置を画面座標に変換して、ポインターやカーソルをその位置に合わせます。

オブジェクト選択時のハイライト表示などに使われます。

ミニマップへの座標投影

ワールド座標をスクリーン座標に変換する考え方を応用して、ミニマップに座標を投影できます。

3D空間の位置を、2Dのミニマップ上の位置に変換して表示します。

ワールド座標スクリーン座標変換が使われる場面

  • 3Dオブジェクトの上にUIを表示
  • オブジェクトが画面内にあるかの判定
  • ポインターやカーソルの位置合わせ
  • ミニマップへの座標投影

作り方は分かった。
でも完成まで行けない人へ

当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。

買い切り 全講座 今後追加も無料
永久会員チケットを見てみる

※ まずは内容を見るだけでOK

考え方・仕組みを図解イメージで説明

ワールド座標スクリーン座標変換の仕組み

ワールド座標からスクリーン座標への変換は、「3D空間の位置 → カメラの投影 → 2D画面座標」という流れで実現できます。

カメラによる投影

3D空間の位置は、カメラを通して画面に投影されます。

カメラの視野角や位置によって、同じ3D位置でも画面座標が変わります。

投影行列による変換

カメラの投影行列を使って、3D空間の位置を2D画面座標に変換します。

投影行列は、カメラの設定(視野角、アスペクト比、近接平面、遠方平面)から計算されます。

正規化デバイス座標への変換

まず、3D空間の位置を正規化デバイス座標(NDC)に変換します。

NDCは、-1から1の範囲で画面を表現する座標系です。

画面座標への変換

NDCを画面の解像度に合わせて、実際の画面座標に変換します。

画面の左上を原点とし、X軸は右方向、Y軸は下方向が正の値です。

⚠️ 重要なポイント

  • ワールド座標からスクリーン座標への変換は、カメラの投影計算を使う
  • カメラの位置や角度によって、同じ3D位置でも画面座標が変わる
  • 投影行列を使って、3D位置を2D画面座標に変換する
  • 画面座標は左上が原点で、X軸は右方向、Y軸は下方向が正

Unityで実装する際の注意点(代表例)

Unityでのワールド座標スクリーン座標変換の実装

Unityでワールド座標をスクリーン座標に変換する場合の注意点を見ていきましょう。

基本的な変換実装(WorldToScreenPointを使う方法)

Camera.WorldToScreenPointを使った、基本的な変換実装です。

UI要素の位置に反映

変換したスクリーン座標を、UI要素の位置に反映する実装です。

画面内判定

オブジェクトが画面内にあるかを判定する実装です。

Z値の意味

WorldToScreenPointの戻り値のZ値は、カメラからの距離を表します。

Z値が正の場合は、オブジェクトがカメラの前方にあります。

Z値が負の場合は、オブジェクトがカメラの後方にあります。

カメラの取得

変換に使うカメラは、通常はMainCameraを取得します。

複数のカメラを使う場合は、適切なカメラを指定する必要があります。

Canvasとの連携

UI要素を配置する場合、Canvasの設定に注意が必要です。

Screen Space – Overlayの場合は、そのままスクリーン座標を使用できます。

Screen Space – Cameraの場合は、カメラを指定して変換する必要があります。

博士
博士
ワールド座標からスクリーン座標への変換は、3Dと2Dをつなぐ重要な処理です。WorldToScreenPointを使えば簡単に変換できます。UI要素の配置や画面内判定など、様々な場面で活用できますね!

まとめ

ワールド座標スクリーン座標変換のまとめ

この記事では、ワールド座標をスクリーン座標に変換する方法について見てきました。

重要なポイントをおさらいします。

重要なポイント:

  • ワールド座標からスクリーン座標への変換は、カメラの投影計算を使った処理
  • Unityでは、Camera.WorldToScreenPoint関数で簡単に変換できる
  • 変換結果のZ値は、カメラからの距離を表す(正の値で前方、負の値で後方)
  • 3Dオブジェクトの上にUIを表示したり、画面内判定などに活用できる
  • Canvasの設定によって、UI要素への反映方法が変わる

ワールド座標からスクリーン座標への変換は、UIと3D空間を連携させる重要な技術です。

3Dオブジェクトの位置を画面座標で取得すれば、様々な機能を実現できます。

カメラの投影計算を理解すれば、より高度な座標変換も可能になります。

実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。

Unity入門の森では、座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。

ぜひチェックしてみてください。

ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

コメント

タイトルとURLをコピーしました