まずはAndroid SDKとEclipseをダウンロードして、インストールや設定を済ませてください。
ダウンロードしたHyperMotion3D.zipをEclipseのWorkspaceにコピーします。Eclipseで「File」→「Import」メニューを実行し、「General」→「Existing Projects into Workspace」を実行して、「Select root directory」でWorkspaceを選択し、Projects一覧からHyperMotion3Dを選びます。
HyperMotion3D.javaファイルで以下のようにしてキャラクターを表示させます。
package com.vixar;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import com.roxiga.hypermotion3d.*;
import com.roxiga.models.*;
public class HyperMotion3D implements GLSurfaceView.Renderer
{
//コンテクスト
private Context _context;
//①キャラクターのインスタンス宣言
private Model3D _obj;
//カメラ位置
private Vector3D _eye = new Vector3D(1000.0f, 1000.0f, 1000.0f);
//カメラの注視する点
private Vector3D _lookAt = new Vector3D(0.0f, 0.0f, 0.0f);
//カメラ視点上方向を表すベクトル
private Vector3D _up = new Vector3D(0.0f, 1.0f, 0.0f);
public HyperMotion3D(Context context)
{
_context = context;
//②キャラクターの生成
_obj = new SharpHair();
}
public void onDrawFrame(GL10 gl)
{
// 描画用バッファをクリア
gl.glClear(GL10.GL_COLOR_BUFFER_BIT
| GL10.GL_DEPTH_BUFFER_BIT);
// モデルビュー行列を指定
gl.glMatrixMode(GL10.GL_MODELVIEW);
// 現在選択されている行列(モデルビュー行列)に、単位行列をセット
gl.glLoadIdentity();
// カメラ位置をセット
GLU.gluLookAt(gl,
_eye._x,_eye._y,_eye._z,
_lookAt._x,_lookAt._y,_lookAt._z,
_up._x,_up._y,_up._z);
//③アニメーションするオブジェクトの描画
_obj.draw(gl);
}
public void onSurfaceChanged(
GL10 gl, int width, int height)
{
// ビューポートをサイズに合わせてセットしなおす
gl.glViewport(0, 0, width, height);
// アスペクトレート
float ratio = (float) width / height;
// 射影行列を選択
gl.glMatrixMode(GL10.GL_PROJECTION);
// 現在選択されている行列(射影行列)に、単位行列をセット
gl.glLoadIdentity();
/* Perspectiveの設定(視野角度, アスペクト比)、ニア、ファー*/
GLU.gluPerspective(gl, 30.0f, ratio, 10f, 10000f);
}
public void onSurfaceCreated(
GL10 gl, EGLConfig config)
{
// ディザを無効化
gl.glDisable(GL10.GL_DITHER);
// カラーとテクスチャ座標の補間精度を、最も効率的なものに指定
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
GL10.GL_FASTEST);
// 片面表示を有効に
gl.glEnable(GL10.GL_CULL_FACE);
// カリング設定をCCWに
gl.glFrontFace(GL10.GL_CCW);
// 深度テストを有効に
gl.glEnable(GL10.GL_DEPTH_TEST);
//テクスチャ機能ON
gl.glEnable(GL10.GL_TEXTURE_2D);
//背景色
gl.glClearColor(0.6f,0.8f,1,1);
// 頂点配列を使うことを宣言
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
//テクスチャ
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
//④テクスチャ読み込み
_obj.setTexture(gl,_context.getResources(),R.drawable.sharphair);
}
}
赤字の①~④を追加するだけで、キャラクターを読み込みテクスチャをセットしてアニメーションするキャラを描画できます。
①のModel3DクラスはTransMotionかVixar Motionから書き出したjavaファイルが扱えます。
②のSharpHairはトンガリ頭のキャラのクラスのコンストラクタで、上記の3Dアニメーションツールから、「HyperMotion3D\src\com\roxiga\models」フォルダ内に書き出されたSharpHair.javaモデルデータです。
③で①②④で読み込んだアニメーションするキャラクターを表示します。
④は①②で生成したキャラクターにテクスチャを貼ります。テクスチャは「HyperMotion3D\res\drawable」内に置かれた画像ファイルsharphair.jpg(必ず小文字に)をリソースとして読み込めます。