これおもしろい

なにはともあれ1日1記事、いや、週1記事

3Dプログラミングの小話:ポリゴン

毎日ブログ書こうキャンペーン中ですが、日付が変わりそう...。
という訳で、パッと書けるネタがなかったので過去の知識を記事にします。
(追記: 結局日付変わってしまったので開き直って書いてます。)

ポリゴンとは

最近VTuberなどが流行っているのでよく3Dモデルを見掛けますね。
そんな3Dモデルの最小描画単位が三角形なのはご存知ですか?
ポリゴンと呼ばれるものです。

描画するには

三角形なので、1つのポリゴンを描画するのには3頂点が必要で、頂点は座標インデックスを持っています。

例えば、

[index] (x, y, z)

[0] (1, 1, 0)
[1] (2, 0, 0)
[2] (0, 0, 0)

といった具合です。
このインデックスの指定順に三角形を作ります。
これの場合時計回りの三角形になるはず。

この際、右手座標系(右手の親指、人差し指、中指をそれぞれ90度にして、付け根を原点、親指をX軸、人差し指をY軸、中指をZ軸と見立てた時の座標系:Z軸が手前向き)の場合は反時計周りだと表、左手座標系(左手に置き換えた座標系:Z軸が奥向き)の場合は時計回りだと表です。
(OpenGLは右手座標系、DirectXは左手座標系)
設定で変えられますが、基本的に表示される必要のない無駄なレンダリングを減らすために、表のポリゴンしか描画されません。

これは確実に図を描いた方が親切な気がする。

終わりに

最小の描画としてはこれで大丈夫だったはず。たしか。
実際の3Dモデルにする時はもちろんこれだけでは足りず、色とか面ごとに法線持たせるとか様々必要ですが、一番最初に3Dプログラミングで取り組むポリゴンの描画はこれだけで出来るはず。

久しぶりに記憶を辿った気がする。全然覚えてなくて勿体ないからちゃんと復習したいなぁ。
というかこの内容、そんなん常識っしょ、という感じなのだろうか。