/// <summary> /// コンストラクタ /// </summary> /// <param name='file'>読み込むファイルパス</param> public MotionAgent(string file_path) { if (string.IsNullOrEmpty(file_path)) { throw new System.ArgumentException(); } file_path_ = file_path; header_ = VMDLoaderScript.GetHeader(file_path_); //VMD読み込み format_ = null; }
/// <summary> /// アニメーションクリップを作成する /// </summary> /// <param name='assign_pmd'>使用するPMDのGameObject</param> /// <param name='create_asset'>Prefab外に作成するか(true:Prefab外に作成, false:Prefab内蔵)</param> /// <param name='interpolationQuality'>補完曲線品質</param> public void CreateAnimationClip(GameObject assign_pmd, bool create_asset, int interpolationQuality) { //VMDファイルのインポート if (null == format_) { //まだ読み込んでいないなら読むこむ format_ = VMDLoaderScript.Import(file_path_); //VMD読み込み header_ = format_.header; } //アニメーションクリップの作成 AnimationClip animation_clip = VMDConverter.CreateAnimationClip(format_, assign_pmd, interpolationQuality); if (animation_clip == null) { throw new System.Exception("Cannot create AnimationClip"); } // ここで登録 //anim.AddClip(animation_clip, animation_clip.name); if (create_asset) { // フォルダを生成してアニメーションのファイルを書き出す string prefab_folder = AssetDatabase.GetAssetPath(assign_pmd); prefab_folder = Path.GetDirectoryName(prefab_folder); if (!Directory.Exists(prefab_folder + "/Animation")) { AssetDatabase.CreateFolder(prefab_folder, "Animation"); } AssetDatabase.CreateAsset(animation_clip, prefab_folder + "/Animation/" + animation_clip.name + ".anim"); } else { // こちらはPrefabの中に入れるタイプ AssetDatabase.AddObjectToAsset(animation_clip, AssetDatabase.GetAssetPath(assign_pmd)); } AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(animation_clip)); }
void OnGUI() { const int height = 20; pmdPrefab = EditorGUI.ObjectField( new Rect(0, 0, position.width-16, height), "PMD Prefab" ,pmdPrefab, typeof(GameObject)) as GameObject; vmdFile = EditorGUI.ObjectField( new Rect(0, height+2, position.width-16, height), "VMD File", vmdFile, typeof(Object)); if (pmdPrefab != null && vmdFile != null) { if (GUI.Button(new Rect(0, height*2+4, position.width/2, 16), "Convert")) { VMDLoaderScript scr = new VMDLoaderScript(vmdFile, pmdPrefab); vmdFile = null; } } else { if (pmdPrefab == null) EditorGUI.LabelField(new Rect(0, height*2+4, position.width, height), "Missing", "Select PMD Prefab"); else if (vmdFile == null) EditorGUI.LabelField(new Rect(0, height*2+4, position.width, height), "Missing", "Select VMD File"); else EditorGUI.LabelField(new Rect(0, height*2+4, position.width, height), "Missing", "Select PMD and VMD"); } }
/// <summary> /// VMDファイルのインポート /// </summary> /// <param name='file_path'>VMDファイルのパス</param> /// <returns>内部形式データ</returns> public static VMDFormat Import(string file_path) { VMDLoaderScript loader = new VMDLoaderScript(); return(loader.Import_(file_path)); }
/// <summary> /// VMDファイルのヘッダー取得 /// </summary> /// <param name='file_path'>VMDファイルのパス</param> /// <returns>ヘッダー</returns> public static VMDFormat.Header GetHeader(string file_path) { VMDLoaderScript loader = new VMDLoaderScript(); return(loader.GetHeader_(file_path)); }
/// <summary> /// VMDファイルのインポート /// </summary> /// <param name='file_path'>VMDファイルのパス</param> /// <returns>内部形式データ</returns> public static VMDFormat Import(string file_path) { VMDLoaderScript loader = new VMDLoaderScript(); return loader.Import_(file_path); }
/// <summary> /// VMDファイルのヘッダー取得 /// </summary> /// <param name='file_path'>VMDファイルのパス</param> /// <returns>ヘッダー</returns> public static VMDFormat.Header GetHeader(string file_path) { VMDLoaderScript loader = new VMDLoaderScript(); return loader.GetHeader_(file_path); }