a. インスタンスの作成(mocの読み込み) b. テクスチャの関連付け
c. グラフィック環境の関連付け ( プラットフォームによっては必要なし )
これらのうち初期化時の流れがプラットフォーム依存のコードになります。
また、表示位置の指定時の基準も環境により異なることがあります。(サンプルでは出来るだけ同じにしています)
1-a. インスタンスの作成 (mocの読み込み)
まずはLive2Dモデルのインスタンスを作成します。 このインスタンスから表示やアニメーションなどの操作を行います。 プラットフォームごとにLive2DModelXXX ( 例えばiPhoneならLive2DModelIPhone )のようにモデルクラスが用意されています。 mocデータから読み込むには各Live2DModelXXXクラスのstatic関数として定義されているloadModel 関数を利用します。 ほとんどのプラットフォームではファイルのパスから読み込む方法とバイト配列から読み込む方法の2つが提供されています。 Live2DModelXXX live2DModel = Live2DModelXXX::loadModel( path );
Live2DModelXXX live2DModel = Live2DModelXXX::loadModel( byteArray, size );
mocファイルとテクスチャファイルを読み込んだらその関連付けの設定が必要です。 これはプラットフォーム(グラフィック環境)によって型は変わります。 例えばOpenGLならばglGenTextures によって作成された整数になります。
live2DModel->setTexture( 0 , texture_00 );
live2DModel->setTexture( 1 , texture_01 );
live2DModel->setTexture( 2 , texture_02 );
プラットフォームによっては描画時にグラフィックエンジンなどへの参照が必要になるため、 OpenGLやDirectXなどの初期化をLive2D内部では行わないため、外部で適切に初期化してください。 public void onDrawFrame(GL10 gl){
live2DModel->setGL( gl );
...
Flashの場合live2DModel->setGraphicsContext( context3D );
DirectXの場合 LPDIRECT3DDEVICE9 g_pD3DDevice;
live2DModel->setDevice(g_pD3DDevice) ;
これまでの設定を行えば、モデルを描画することはできますが 多くの場合表示位置や縮尺が違いすぎて画面には表示されません。 何も指定しない状態では、モデルは左上を原点として右下までの大きさがModelerでの設定サイズ (参考)になります。 そのためsetMatrix関数に行列を設定して位置と大きさを指定します。 4x4のサイズの行列を使用します。 float型の16の長さの配列で、並び順はOpenGL準拠です。
OpenGLでの画面設定例 画面の中心を原点とし、左上(-1,1)、右下(1,-1) glViewport( 0, 0, deviceWidth, deviceHeight );
glMatrixMode( GL10.GL_PROJECTION ) ;
glLoadIdentity() ;
glOrthof( -1, 1, 1, -1, 0.5f, -0.5f );
モデルの位置設定画面中心と横幅をモデルと合わせる設定。 この例では直接配列を編集していますが、一般的には行列用のクラスを使って設定します。 float matrix[16];
matrix[0] = 2/live2DModel->getCanvasWidth();//x軸の拡大率
matrix[5] = 2/live2DModel->getCanvasWidth();//y軸の拡大率
matrix[12] = -1;//x軸の移動
matrix[13] = 1;//y軸の移動
live2DModel->setMatrix( matrix );
頂点の計算はupdate関数で行います。そのため、アニメーションさせるには毎フレーム呼ぶ必要があります。
2-b. 描画
|
|