Ejemplo n.º 1
0
		/// <summary>
		/// GameObjectを作成する
		/// </summary>
		/// <param name='format'>内部形式データ</param>
		/// <param name='use_rigidbody'>剛体を使用するか</param>
		/// <param name='animation_type'>アニメーションタイプ</param>
		/// <param name='use_ik'>IKを使用するか</param>
		/// <param name='scale'>スケール</param>
		public static GameObject CreateGameObject(PMXFormat format, bool use_rigidbody, AnimationType animation_type, bool use_ik, float scale) {
			GameObject result;
			using (PMXConverter converter = new PMXConverter()) {
				result = converter.CreateGameObject_(format, use_rigidbody, animation_type, use_ik, scale);
			}
			return result;
		}
Ejemplo n.º 2
0
        /// <summary>
        /// プレファブを作成する
        /// </summary>
        /// <param name='shader_type'>シェーダーの種類</param>
        /// <param name='use_rigidbody'>剛体を使用するか</param>
        /// <param name='animation_type'>アニメーションタイプ</param>
        /// <param name='use_ik'>IKを使用するか</param>
        /// <param name='scale'>スケール</param>
        /// <param name='is_pmx_base_import'>PMX Baseでインポートするか</param>
        public void CreatePrefab(PMDConverter.ShaderType shader_type, bool use_rigidbody, PMXConverter.AnimationType animation_type, bool use_ik, float scale, bool is_pmx_base_import)
        {
            GameObject game_object;
            string     prefab_path;

            if (is_pmx_base_import)
            {
                //PMX Baseでインポートする
                //PMXファイルのインポート
                PMX.PMXFormat pmx_format = null;
                try {
                    //PMX読み込みを試みる
                    pmx_format = PMXLoaderScript.Import(file_path_);
                } catch (System.FormatException) {
                    //PMXとして読み込めなかったら
                    //PMDとして読み込む
                    PMD.PMDFormat pmd_format = PMDLoaderScript.Import(file_path_);
                    pmx_format = PMXLoaderScript.PMD2PMX(pmd_format);
                }
                header_ = pmx_format.header;
                //ゲームオブジェクトの作成
                game_object = PMXConverter.CreateGameObject(pmx_format, use_rigidbody, animation_type, use_ik, scale);

                // プレファブパスの設定
                prefab_path = pmx_format.meta_header.folder + "/" + pmx_format.meta_header.name + ".prefab";
            }
            else
            {
                //PMXエクスポーターを使用しない
                //PMDファイルのインポート
                PMD.PMDFormat pmd_format = null;
                try {
                    //PMX読み込みを試みる
                    PMX.PMXFormat pmx_format = PMXLoaderScript.Import(file_path_);
                    pmd_format = PMXLoaderScript.PMX2PMD(pmx_format);
                } catch (System.FormatException) {
                    //PMXとして読み込めなかったら
                    //PMDとして読み込む
                    pmd_format = PMDLoaderScript.Import(file_path_);
                }
                header_ = PMXLoaderScript.PMD2PMX(pmd_format.head);

                //ゲームオブジェクトの作成
                bool use_mecanim = PMXConverter.AnimationType.LegacyAnimation == animation_type;
                game_object = PMDConverter.CreateGameObject(pmd_format, shader_type, use_rigidbody, use_mecanim, use_ik, scale);

                // プレファブパスの設定
                prefab_path = pmd_format.folder + "/" + pmd_format.name + ".prefab";
            }
            // プレファブ化
            PrefabUtility.CreatePrefab(prefab_path, game_object, ReplacePrefabOptions.ConnectToPrefab);

            // アセットリストの更新
            AssetDatabase.Refresh();
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     GameObjectを作成する
        /// </summary>
        /// <param name='format'>内部形式データ</param>
        /// <param name='use_rigidbody'>剛体を使用するか</param>
        /// <param name='animation_type'>アニメーションタイプ</param>
        /// <param name='use_ik'>IKを使用するか</param>
        /// <param name='scale'>スケール</param>
        public static GameObject CreateGameObject(PMXFormat format, bool use_rigidbody, AnimationType animation_type,
                                                  bool use_ik, float scale)
        {
            GameObject result;

            using (var converter = new PMXConverter())
            {
                result = converter.CreateGameObject_(format, use_rigidbody, animation_type, use_ik, scale);
            }

            return(result);
        }
Ejemplo n.º 4
0
		/// <summary>
		/// プレファブを作成する
		/// </summary>
		/// <param name='shader_type'>シェーダーの種類</param>
		/// <param name='use_rigidbody'>剛体を使用するか</param>
		/// <param name='animation_type'>アニメーションタイプ</param>
		/// <param name='use_ik'>IKを使用するか</param>
		/// <param name='scale'>スケール</param>
		/// <param name='is_pmx_base_import'>PMX Baseでインポートするか</param>
		public void CreatePrefab(PMDConverter.ShaderType shader_type, bool use_rigidbody, PMXConverter.AnimationType animation_type, bool use_ik, float scale, bool is_pmx_base_import) {
			GameObject game_object;
			string prefab_path;
			if (is_pmx_base_import) {
				//PMX Baseでインポートする
				//PMXファイルのインポート
				PMX.PMXFormat pmx_format = null;
				try {
					//PMX読み込みを試みる
					pmx_format = PMXLoaderScript.Import(file_path_);
				} catch (System.FormatException) {
					//PMXとして読み込めなかったら
					//PMDとして読み込む
					PMD.PMDFormat pmd_format = PMDLoaderScript.Import(file_path_);
					pmx_format = PMXLoaderScript.PMD2PMX(pmd_format);
				}
				header_ = pmx_format.header;
				//ゲームオブジェクトの作成
				game_object = PMXConverter.CreateGameObject(pmx_format, use_rigidbody, animation_type, use_ik, scale);
	
				// プレファブパスの設定
				prefab_path = pmx_format.meta_header.folder + "/" + pmx_format.meta_header.name + ".prefab";
			} else {
				//PMXエクスポーターを使用しない
				//PMDファイルのインポート
				PMD.PMDFormat pmd_format = null;
				try {
					//PMX読み込みを試みる
					PMX.PMXFormat pmx_format = PMXLoaderScript.Import(file_path_);
					pmd_format = PMXLoaderScript.PMX2PMD(pmx_format);
				} catch (System.FormatException) {
					//PMXとして読み込めなかったら
					//PMDとして読み込む
					pmd_format = PMDLoaderScript.Import(file_path_);
				}
				header_ = PMXLoaderScript.PMD2PMX(pmd_format.head);
	
				//ゲームオブジェクトの作成
				bool use_mecanim = PMXConverter.AnimationType.LegacyAnimation == animation_type;
				game_object = PMDConverter.CreateGameObject(pmd_format, shader_type, use_rigidbody, use_mecanim, use_ik, scale);
	
				// プレファブパスの設定
				prefab_path = pmd_format.folder + "/" + pmd_format.name + ".prefab";
			}
			// プレファブ化
			PrefabUtility.CreatePrefab(prefab_path, game_object, ReplacePrefabOptions.ConnectToPrefab);
			
			// アセットリストの更新
			AssetDatabase.Refresh();
		}
Ejemplo n.º 5
0
        /// <summary>
        /// プレファブを作成する
        /// </summary>
        /// <param name='shader_type'>シェーダーの種類</param>
        /// <param name='use_rigidbody'>剛体を使用するか</param>
        /// <param name='use_mecanim'>Mecanimを使用するか</param>
        /// <param name='use_ik'>IKを使用するか</param>
        /// <param name='scale'>スケール</param>
        /// <param name='is_pmx_base_import'>PMX Baseでインポートするか</param>
        public void CreatePrefab(PMD.PMDConverter.ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale, bool is_pmx_base_import)
        {
            GameObject game_object;
            Object     prefab;

            if (is_pmx_base_import)
            {
                //PMX Baseでインポートする
                //PMXファイルのインポート
                PMX.PMXFormat format = PMXLoaderScript.Import(file_path_);
                //ゲームオブジェクトの作成
                game_object = PMXConverter.CreateGameObject(format, use_rigidbody, use_mecanim, use_ik, scale);

                // プレファブに登録
                prefab = PrefabUtility.CreateEmptyPrefab(format.meta_header.folder + "/" + format.meta_header.name + ".prefab");
            }
            else
            {
                //V2エクスポーターを使用しない
                //PMDファイルのインポート
                if (null == format_)
                {
                    //まだ読み込んでいないなら読むこむ
                    try {
                        //PMX読み込みを試みる
                        format_ = PMXLoaderScript.PmdImport(file_path_);
                    } catch (System.FormatException) {
                        //PMXとして読み込めなかったら
                        //PMDとして読み込む
                        format_ = PMDLoaderScript.Import(file_path_);
                    }
                    header_ = format_.head;
                }

                //ゲームオブジェクトの作成
                game_object = PMDConverter.CreateGameObject(format_, shader_type, use_rigidbody, use_mecanim, use_ik, scale);

                // プレファブに登録
                prefab = PrefabUtility.CreateEmptyPrefab(format_.folder + "/" + format_.name + ".prefab");
            }
            PrefabUtility.ReplacePrefab(game_object, prefab);

            // アセットリストの更新
            AssetDatabase.Refresh();

            // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る
            GameObject.DestroyImmediate(game_object);
            PrefabUtility.InstantiatePrefab(prefab);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// GameObjectを作成する
 /// </summary>
 /// <param name='format'>内部形式データ</param>
 /// <param name='use_rigidbody'>剛体を使用するか</param>
 /// <param name='use_mecanim'>Mecanimを使用するか</param>
 /// <param name='use_ik'>IKを使用するか</param>
 /// <param name='scale'>スケール</param>
 public static GameObject CreateGameObject(PMXFormat format, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale)
 {
     PMXConverter converter = new PMXConverter();
     return converter.CreateGameObject_(format, use_rigidbody, use_mecanim, use_ik, scale);
 }