Created
January 22, 2014 20:09
-
-
Save GRGSIBERIA/8566424 to your computer and use it in GitHub Desktop.
表情モーフのデータをCSVから読み込む.1行目は表情名,2行目は枠の種類,3行目以降から実データ.頂点インデックス,X,Y,Zの順番で格納.XYZは移動量.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Run()関数内の処理を記述 | |
// 外部クラスの活用などは一般形式のスクリプトコードを使用してください. | |
// プラグイン変数は IPERunArgs args を通して取得可能 | |
// コードに自動的に追加されるヘッダ/フッタはメニューから有効化/確認が可能(ヘッダは標準で有効設定) | |
string name; | |
ExpressionCategory category; | |
var vectors = Dictionary<int, IPEVector3>(); | |
// CSVを1行1行読み込み | |
using (var reader = new StreamReader("C:\\input.csv", Encoding.GetEncoding("shift_jis")) { | |
name = reader.ReadLine(); | |
switch (reader.ReadLine()) { | |
case "Eye": | |
category = ExpressionCategory.Eye; | |
break; | |
case "Rip": | |
category = ExpressionCategory.Rip; | |
break; | |
case "Eyebrow": | |
category = ExpressionCategory.Eyebrow; | |
break; | |
case "Others": | |
category = ExpressionCategory.Others; | |
break; | |
} | |
while ((var line = reader.ReadLine()) != null) { | |
var splited = line.Replace(" ", "").Split(","); | |
var i = int.Parse(splited[0]); | |
var v = builder.CreateVector3(float.Parse(splited[1]), float.Parse(splited[2]), floatParse(splited[3])); | |
vectors.Add(i, v); | |
} | |
} | |
// 新しい表情インスタンスを作成 | |
var new_exp = builder.CreateExpression(); | |
new_exp.Name = name; | |
new_exp.Category = category; | |
// Eye Rip Eyebrow Others Nothing | |
foreach (var kv in vectors) { | |
var offset = builder.CreateExpressionOffset(); | |
offset.Index = kv.Key; | |
offset.Offset = kv.Value; | |
new_exp.Offsets.Add(offset); | |
} | |
var connector = args.Host.Connector; | |
var pmd = connector.Pmd.GetCurrentState(); | |
pmd.Expression.Add(new_exp); | |
pmd.FrameExpression.Add(pmd.Expression.Count-1); // 表情枠追加 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment