モデルについて

[最終更新 2018/06/28]

 

 

モデル情報の編集について

モデル情報は基本的にModelerで作成されます。
パラメータに対する頂点などの動きは.moc3ファイルに記録されます。
その他の物理演算やアートメッシュにつけられるユーザデータなどは別のファイルとして出力され、
モデルに関するすべてのファイルの参照を記録しておくものが.model3.jsonファイルになります。

Modelerから.moc3ファイルの出力を行う際に同時に出力ができます。「組み込み用データの書き出し」
また、Cubism3 Viewer (for OW)を使うことで、モーションや表情ファイル、ポーズファイルの組み込み設定を追加することができます。

 

Frameworkを使った.model3.jsonファイルからの読み込み

Frameworkを利用した読み込みでは、モデルに必要な情報を.model3.jsonファイルから抽出して、
CubismUserModelクラスを継承したインスタンスを整備して利用することを想定しています。

ICubismModelSettingクラスに抽出した各要素はCubismUserModel::Load~~系関数で読み込むことができます。

.model3.jsonファイルからの全体的なロードの流れはサンプル内のLAppModel::LoadAssets関数から
LAppModel::SetupModel関数、CubismUserModel::CreateRenderer関数、LAppModel::SetupTextures関数の流れを追っていくと把握しやすいです。

 

Frameworkでのモデルを表示するまでの基本的な流れ

ここではCubismUserModelクラスで行われている内容を追っていくことで、
CubismUserModelクラスを利用せずにCubismModelクラスなどの根本部分のみを使った表示までの流れを見ていきます。

 

1.初期化

a.インスタンスの作成

b.グラフィック環境の関連付け

c.テクスチャの関連付け

d.表示位置と大きさの指定

2.更新時

a.頂点の更新

b.描画

 

1-a.インスタンスの作成(.moc3ファイルの読み込み)

始めに.moc3ファイルをメモリ上に読み込みます。
読み込んだバッファとサイズをCubismMoc::Create関数に渡し、まずはCubismMocインスタンスを作成します。
次にCubismMoc::CreateModel関数を呼び出してCubismModelインスタンスを作成します。
このCubismModelインスタンスからパラメータの操作や描画のための情報取得などを行います。

 

 

1-b.グラフィック環境の関連付け

Frameworkはモデルのテクスチャ情報をグラフィックAPIに依存させないためにCubismRendererクラスからの派生クラスを使っています。
モデルに関連するグラフィック関連の情報はすべてCubismRendererクラスからの派生クラスが管理します。
CubismRendererクラスからのグラフィックAPIに対する派生クラスを生成し、
CubismRenderer::Initialize関数でCubismModelインスタンスを登録することでCubismRendererインスタンスとCubismModelインスタンスが紐づけされます。

 

 

1-c.テクスチャの関連付け

Frameworkでモデルが持つテクスチャはCubismRendererクラスの派生クラスが管理します。
しかしその機能はグラフィックスAPIへの依存を避けるため、CubismRendererクラスにそのメソッドの登録はされていません。
対象とするグラフィックスAPIによってメソッドの仕様の変化に注意してください。
OpenGLの処理ではCubismRendererクラスの派生CubismRenderer_OpenGLES2クラス内のCubismRenderer_OpenGLES2::BindTexture関数を使って登録しています。
一つ目の引数はモデルのテクスチャ番号、Editor上ではテクスチャアトラスの番号で確認できます。
二つ目の引数はテクスチャのOpenGLでの管理番号です。

下の例はCocos2d-xでのテクスチャの読み込みです。

 

Cocos2d-xによるTextureの管理をしない、OpenGL単体の場合はアプリケーション側の管理を通して登録します。

 

 

1-d.表示位置と大きさの指定

これまでの設定を行えば、モデルを描画することはできますが
多くの場合表示位置や縮尺が違いすぎてそのままでは画面には表示されません。
csmGetDrawableVertexPotions関数で帰ってくる頂点範囲に関しては「DrawableVertexPotionsの範囲」をご覧ください。
サイズを調整するためにCubismModelMatrixクラスとCubismModel::GetCanvasWidth関数、CubismModel::GetCanvasHeight関数をつかいます。

この行列は描画前にProjectionマトリクスに乗算されてMVPマトリクスとしてレンダラーに渡されます。

 

 

 

2-a.頂点の更新

CubismModelインスタンスに対するパラメータ操作をアートメッシュの頂点に反映するためにCubismModel::Update関数を実行します。

 

 

2-b.描画

描画はCubismModelインスタンスからは実行せず、紐づけされているレンダラーに命令しておこないます。

 

 

CubismModelクラスで実在しないパラメータを使う

CubismModelクラスのパラメータ、パーツ不透明度の操作では、.moc3ファイルに存在しないIDでも取り扱いを行う機能があります。
この機能はCubismMotionクラス、CubismPoseクラスなどが利用しており、
利用して新たな機構を作成するときには既存の機能と衝突しないように使用するID内容などを注意してください。
また、Frameworkを読み解くときにも作成されたパラメータを使って他の機能と連携している可能性について留意してください。
※存在しない最大値、最小値、初期値へのアクセスはエラーが発生する

 

Copyright © 2018 Live2D Inc.