まずは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(必ず小文字に)をリソースとして読み込めます。