11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Live2DモデルファイルからパラメータID取得

Last updated at Posted at 2015-03-13

通常、Live2DのパラメータIDはCubism Modelerで確認します
01 2.png

このIDは新規に作ったり編集削除できるので、Live2Dモデルによってバラバラです。
Unity側でモデルファイルからパラメータIDを取得する方法がありました。
APIリファレンスにも書いてないので、デバッグしてたら取れましたw

SimpleModel.cs
// モデル情報からパラメータIDを取得
var paramList = live2DModel.getModelImpl().getParamDefSet().getParamDefFloatList();
foreach (var item in paramList) {
    // モデルのパラメータIDを取得
    Debug.Log(item.getParamID().ToString());
}

これを実行するとこんな感じにパラメータIDが取れます。
今回はStart()の中に入れました。
スクリーンショット 2015-03-13 13.34.53.png

また、パラメータの現在の値をとるには以下のコードで取れます

SimpleModel.cs
foreach(var item in paramList){
    // モデルのパラメータIDを値を取得
	Debug.Log(live2DModel.getParamFloat(item.getParamID().ToString()));
}

エディタ拡張すればモデルをスクリプトにセットするだけで、そのモデルが持ってるパラメータIDも表示できるかと。

あと、描画オブジェクトIDを取得したい場合は以下のコードで取れます。

SimpleModel.cs
var dataList = live2DModel.getModelImpl().getPartsDataList();
foreach (var items in dataList) {
	for (int i = 0; i < items.getDrawData().Count-1; i++) {
		Debug.Log (items.getDrawData()[i].getDrawDataID().ToString());
	}
}

DebugLog1.png

描画オブジェクトの頂点やインデックスを取るなら以下のコードでいけます。

SimpleModel.cs
// 描画オブジェクトIDから描画インデックスを取得
var drawIndex = live2DModel.getDrawDataIndex("D_FACE_001.00");
// 頂点を取得
var points = live2DModel.getTransformedPoints(drawIndex);
Debug.Log ("---------- point_num:" + points.Length + " ----------");
var pointArray = new StringBuilder();
for (int i = 0; i < points.Length; i+=2) {
	pointArray.Append("x:" + points[i] + " y:" + points[i+1] + " ");
}
Debug.Log ("<color=blue>point:" + pointArray + "</color>");

// インデックスを取得
var indices = live2DModel.getIndexArray(drawIndex);
Debug.Log ("---------- index_num:" + indices.Length + "----------");
var indexArray = new StringBuilder();
for (int i = 0; i < indices.Length; i++) {
	indexArray.Append(indices[i] + ", ");
}
Debug.Log ("<color=red>index:" + indexArray + "</color>");

DebugLog2.png

インデックスはStart()でいいけど頂点はOnRenderObject()やUpdate()に入れないと0が返ってきます。
参考:Live2D Document - 頂点インデックスの取得

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?