プログラミングで2D表示ができるようになったばかりの頃に疑問だった「3Dの表示ってどうやるの?」というやつの解説の練習。下地の作成。
おおまかな流れ
「ピクセルとはなんぞや」あたりまで戻るべきか、とか思うが、まぁとりあえず、やりたいようにまずは。
- ベースの表示
- モデルは「点」の集合である
- 「点」をつなげてできる面をそれぞれ求める
- それぞれの面を、モデルの向きやカメラの位置を考慮して移動させて、最終的な位置を画面に表示する
- テクスチャの表示
- モデルは「"点"と"テクスチャ座標"の組」の集合である
- 「テクスチャ座標」とは「この"点"は、テクスチャのこの位置の画像を取ってくる」という位置のこと
- 面を求める時に、その「テクスチャ座標」をもとにテクスチャを切り抜いたり変形したりして絵を求める
- あとは同じように位置を求めて画面に表示
気になるのは、「いきなり"モデル"と呼んで通じるか」「"点"と呼ぶべきか、最初から"頂点"と呼ぶべきか」「テクスチャの説明はすべきか」「テクスチャと対応するのはわかったけど、実際にはどういうモデルにどういうテクスチャが対応するのか(画像の必要性)」あたり。カメラ位置からの計算とかは、内容を省いても、なんとかなるかなという気はする。
やっぱり、画像があった方がこの手のはわかりやすい。
「頂点」は、「点の位置」「テクスチャ座標」「法線」「頂点カラー」...が1セットになっていることも、何らかの形で組み込みたいが。
モーションの方の説明。たぶん、基本表示の説明とは分離すべき。
- モーション計算のベースの考え方
- 「気を付け」から「前に倣え」をするモーションを考える
- 両方の状態の「点」の位置を全部覚えておくのはデータが大きくなりすぎる
- 「気を付け」+「右腕が90度回転」+「左腕が90度回転」=「前に倣え」という風に表現したい
- 「点」だけでなく「関節」も考えることにする
- モーションの計算
軸のことは考えずに、「90度回転」を使用。データが大きくなりすぎることは、なんか示して比較した方が良いか。「関節」の説明が足りてない気がする。「ボーン」と最初から呼ぶべきか。モーションの計算は図があった方が良い気がするが、アレルギーを誘発しそうな気もする。説明を「位置×回転」と「原点への移動、復帰」の2段階に分けてるのは良い気がする。ただ、「回転は原点中心」とかのベースが共有できるレベルじゃないと(この説明を使うのは)難しい。
「重み」の計算は、ひとまず01で、どのボーンに対応しているかを示すレベルで提示したい。例えば、上の例では「右腕の指先」は「右腕のボーン」に、「左腕の指先」は「左腕のボーン」に対応している。だから、「右腕の指先」の計算では「右腕のボーン」のみを考慮して、他の「左腕のボーン」などは考慮しないで計算する。
誰に対して説明すべきだろう。なんとなくは「高校生あたりの自分」にしたいが、実用的な問題で言えば「企画の人」あたりが妥当。プログラマじゃないので、数学の理解度があまり期待できない。ただ、どちらにしろ、ピクセルとかテクスチャの説明は省けるか。語彙として持ってなくても、「ピクセル=画面の1ドット」「テクスチャ=画像」「モデル=物体」とかしておけば、だいたい大丈夫だろう。「モデルは点から成る」というのは説明が必要?昔のゲームならカクカクしてたから想像しやすかったけど、イマドキのゲームだと想像しにくいかもしれない。
あと、やっぱり実際にモデリングしてから書きたい。