一般社団法人 全国個人事業主支援協会

COLUMN コラム

みなさん、こんにちは。

今回も、C#でOpenGLを使う方法について、ご紹介します。

前回は頂点インデックスを使った描画方法についてお話しました。

今回は、座標変換行列についてお話します。

 

●座標変換行列

こちらの記事で少し登場していますが、座標変換行列は3Dの描画で必須の項目です。

座標変換とは、構築された3次元空間をカメラで撮影し、2次元のスクリーンに投影することが目的となります。

座標変換の詳細はグーグルなどで検索できますが(例:和歌山大学床井研究室様)、処理の過程を簡単に説明します。

①モデル座標⇒ワールド座標変換

3Dモデルをワールド空間上に配置する。

②ワールド座標⇒カメラ座標変換

ワールド空間上にカメラを置き、ワールドの中心をカメラの位置を中心とする変換を行う。

③カメラ座標⇒射影座標変換

カメラで見える領域は無限遠に続くので、奥行きに対してNear, Farの制限をかけながら3次元空間を切り取ることで、視錐台形状を作成する。

また、視錐台を直方体に収縮することでパース(※)をかける。

※パース=人間の目は手前にある物体は大きく、奥の物体は小さく見えるため、そのような見え方のことを指す。

④射影座標⇒スクリーン座標変換

パースをかけた直方体に対し、最前面の領域を2次元の領域として採用し、2Dのスクリーン画像とする。

下図が座標変換の具体的なイメージになります。

 

いかがでしたでしょうか?

次回は、座標変換をOpenTKで実現する方法についてお話します。

 

 

The following two tabs change content below.

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア