Ledの日記: PMDEditorのCSScript開発に関する覚書2
問題2.変数名は分かったが、何かのクラスで提供されている。その中身にアクセスする方法が分からない。
解答2.[表示]-[プラグインデータ一覧]をクリックすると(メモ程度ではあるが)情報が得られる。例えばIPXVertex(頂点情報)の中身を知りたい場合、ツリービューのPEPlugin - Pmx - IPXVertexで参照できる。
参考(C#についてまったく知らなかったので)IListはC#で標準で提供されていて、C++で言うところのlistに対応するようだ。使い方はぐぐればいろいろ出てくる。とりあえずすぐに使うのは
vertex.Count が頂点数、 vertex.Add(v)で頂点vを新たに追加など。
問題3.新しい頂点のメモリを確保するにはどうしたらいいか分からない。newでは駄目らしい。
解答3.「ヘッダ」で宣言されている
IPXPmxBuilder bdx = host.Builder.Pmx; // PMXビルダ
を使う。新しい頂点ひとつを確保する場合、
IPXVertex v = bdx.Vertex();
などと書く。頂点以外でも同様にかける。メソッド名称など詳細は「プラグインデータ一覧」の[PEPlugin]-[IPXPmxBuilder] を参照。
問題4.V3とかV4とか、ベクトルらしいが、メンバ名や、どんな関数があるか分からない。
解答4.「プラグインデータ一覧」の[PEPlugin]-[SDX]-[V3]などを参照。
問題5.モーフをスクリプトで作成しようと思ったが、モーフの種別には「グループモーフ」「頂点モーフ」「ボーンモーフ」「材質モーフ」がある。どうやって設定していいか分からない。
解答5.下記参照。
IPXMorph m= bdx.Morph(); // 新規モーフ m 作成
m.Kind = (PEPlugin.Pmx.MorphKind) 0; // グループモーフ
m.Kind = (PEPlugin.Pmx.MorphKind) 1; // 頂点モーフ
m.Kind = (PEPlugin.Pmx.MorphKind) 2; // ボーンモーフ
m.Kind = (PEPlugin.Pmx.MorphKind) 3; // 材質モーフ
// 最後に morph.Add(m); を実行してPmxデータのモーフに追加する
問題6. IPXBornのメンバに親ボーンを表すParentというのがある。親がない場合はどうなっているか?
解答6.親がない場合はnullである。例えば次のコードでボーンの木構造をさかのぼって根に到達するまでのボーン名称を表示できる。
// i を適当なボーンのインデックスとする
for(IPXBone b=bone[i]; b!=null; b=b.Parent){
MessageBox.Show(b.Name);
}
---
とりあえずこんなところかな。まだまだ分からないことは一杯あるが、この辺が分かればいろいろいじり甲斐が出てくるだろう。
PMDEditorのCSScript開発に関する覚書2 More ログイン