3Dビューワー

概要

AR機能によって得られたマーカーとカメラの相対姿勢に基づき 入力画像の上に三次元モデル表示を行う部分です.

関連するソースファイル

機能詳細

三次元ビューワー

三次元オブジェクト管理

GLObject

mARici-tenが管理する三次元オブジェクトは全てGLObjectクラスを継承します.

GLObjectクラスにはtranslate,rotate,glDraw関数が定義されています. translate,rotateは世界座標からのオブジェクトの相対姿勢を指定することで オブジェクト座標を決定することができます.

GLObject::glDraw()が表示の根幹となる関数です. GLObjectを継承した各クラスはglDrawに描画命令を記述します.

GLPolygon

GLPolygonクラスは三次元ポリゴンを取り扱うためのクラスです.

頂点情報と面情報の取り扱いについては, 頂点数n,面数m,マテリアルの切り替え数sとしたとき, 頂点は3xnのfloat配列, 面は3x(m+s)のint配列となっています 頂点には三次元点がそのまま格納されます. 面の情報は点のインデックスの組み合わせによりあらわされ, また三角形に限定されます. 同時に,後述するマテリアル情報の切り替えも格納されます. 具体的には,(-1,-1,t)という並びの面情報が来た場合, 以降はt番目のマテリアルを使用することになります.

法線については, 面法線と点法線を扱うことができます. モデルファイルにより与えられない場合,法線を計算させることができます.

calcNormals(); // 面の情報から面法線を計算する
calcVertexNormals(); // caclNormals()等で面法線を与えた後に点法線を計算する

GLMaterial

GLMaterialクラスはマテリアル情報(現在は色とテクスチャ)を取り扱うためのクラスです.

同次座標変換管理

同次座標変換による順運動学を記述するために必要な関数群です. mARici-tenの内部形式では右手座標系,列ベクトルによる表現となるため, DirectXの左手座標系,OpenGLの行ベクトル表現との間では変換をする必要があります.

目次へ