通常、Live2DのパラメータIDはCubism Modelerで確認します
この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()の中に入れました。
また、パラメータの現在の値をとるには以下のコードで取れます
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());
}
}
描画オブジェクトの頂点やインデックスを取るなら以下のコードでいけます。
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>");
インデックスはStart()でいいけど頂点はOnRenderObject()やUpdate()に入れないと0が返ってきます。
参考:Live2D Document - 頂点インデックスの取得