mARici-tenが管理する三次元オブジェクトは全てGLObjectクラスを継承します.
GLObjectクラスにはtranslate,rotate,glDraw関数が定義されています. translate,rotateは世界座標からのオブジェクトの相対姿勢を指定することで オブジェクト座標を決定することができます.
GLObject::glDraw()が表示の根幹となる関数です. GLObjectを継承した各クラスはglDrawに描画命令を記述します.
GLPolygonクラスは三次元ポリゴンを取り扱うためのクラスです.
頂点情報と面情報の取り扱いについては, 頂点数n,面数m,マテリアルの切り替え数sとしたとき, 頂点は3xnのfloat配列, 面は3x(m+s)のint配列となっています 頂点には三次元点がそのまま格納されます. 面の情報は点のインデックスの組み合わせによりあらわされ, また三角形に限定されます. 同時に,後述するマテリアル情報の切り替えも格納されます. 具体的には,(-1,-1,t)という並びの面情報が来た場合, 以降はt番目のマテリアルを使用することになります.
法線については, 面法線と点法線を扱うことができます. モデルファイルにより与えられない場合,法線を計算させることができます.
calcNormals(); // 面の情報から面法線を計算する calcVertexNormals(); // caclNormals()等で面法線を与えた後に点法線を計算する
GLMaterialクラスはマテリアル情報(現在は色とテクスチャ)を取り扱うためのクラスです.
同次座標変換による順運動学を記述するために必要な関数群です. mARici-tenの内部形式では右手座標系,列ベクトルによる表現となるため, DirectXの左手座標系,OpenGLの行ベクトル表現との間では変換をする必要があります.