// PMDファイルをUnity形式に変換
    void BurnUnityFormatForPMD(MMD.PMD.PMDFormat format)
    {
        format.fst         = this.fst;
        obj                = new GameObject(format.name);
        format.caller      = obj;
        format.shader_type = this.shader_type;

        MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter();

        this.mesh      = conv.CreateMesh(format);                       // メッシュの生成・設定
        this.materials = conv.CreateMaterials(format);                  // マテリアルの生成・設定
        this.bones     = conv.CreateBones(format);                      // ボーンの生成・設定

        // バインドポーズの作成
        conv.BuildingBindpose(format, this.mesh, this.materials, this.bones);
        obj.AddComponent <Animation>();         // アニメーションを追加

        MMDEngine engine = obj.AddComponent <MMDEngine>();

        // IKの登録
        if (this.use_ik)
        {
            engine.ik_list = conv.EntryIKSolver(format, this.bones);
        }

        // 剛体関連
        if (this.rigidFlag)
        {
            try
            {
                this.rigids = conv.CreateRigids(format, bones);
                conv.AssignRigidbodyToBone(format, this.bones, this.rigids);
                conv.SetRigidsSettings(format, this.bones, this.rigids);
                conv.SettingJointComponent(format, this.bones, this.rigids);

                // 非衝突グループ
                List <int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(format, this.rigids);
                int[]        groupTarget  = conv.GetRigidbodyGroupTargets(format, rigids);

                MMDEngine.Initialize(engine, groupTarget, ignoreGroups, this.rigids);
            }
            catch { }
        }

#if UNITY_4_0
        AvatarSettingScript avt_setting = new AvatarSettingScript(format.caller);
        avt_setting.SettingAvatar();
#endif

        var window = LoadedWindow.Init();
        window.Text = format.head.comment;

        CreatePrefab(format);
        EndOfScript(format);
    }
Exemplo n.º 2
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>
		private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) {
			format_ = format;
			use_rigidbody_ = use_rigidbody;
			use_mecanim_ = use_mecanim;
			use_ik_ = use_ik;
			scale_ = scale;
			root_game_object_ = new GameObject(format_.meta_header.name);
			MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加
			root_game_object_.AddComponent<Animation>();	// アニメーションを追加
		
			MeshCreationInfo[] creation_info = CreateMeshCreationInfo();				// メッシュを作成する為の情報を作成
			Mesh[] mesh = CreateMesh(creation_info);									// メッシュの生成・設定
			Material[][] materials = CreateMaterials(creation_info);					// マテリアルの生成・設定
			GameObject[] bones = CreateBones();											// ボーンの生成・設定
			SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones);	// バインドポーズの作成
			CreateMorph(mesh, materials, bones, renderers, creation_info);				// モーフの生成・設定
			
	
			// IKの登録
			if (use_ik_) {
				engine.bone_controllers = EntryBoneController(bones);
				engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver)
														.Select(x=>x.ik_solver)
														.ToArray();
			}
	
			// 剛体関連
			if (use_rigidbody_) {
				GameObject[] rigids = CreateRigids();
				AssignRigidbodyToBone(bones, rigids);
				SetRigidsSettings(bones, rigids);
				GameObject[] joints = CreateJoints(rigids);
				GlobalizeRigidbody(joints);

				// 非衝突グループ
				List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids);
				int[] groupTarget = GetRigidbodyGroupTargets(rigids);

				MMDEngine.Initialize(engine, scale_, groupTarget, ignoreGroups, rigids);
			}
	
			// Mecanim設定 (not work yet..)
#if UNITY_4_0 || UNITY_4_1
			if (use_mecanim_) {
				AvatarSettingScript avt_setting = new AvatarSettingScript(root_game_object_);
				avt_setting.SettingAvatar();
			}
#endif

			return root_game_object_;
		}
Exemplo n.º 3
0
        private GameObject CreateGameObject_(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale)
        {
            format_           = format;
            shader_type_      = shader_type;
            use_rigidbody_    = use_rigidbody;
            use_mecanim_      = use_mecanim;
            use_ik_           = use_ik;
            scale_            = scale;
            root_game_object_ = new GameObject(format_.name);

            Mesh mesh = CreateMesh();                                   // メッシュの生成・設定

            Material[]   materials = CreateMaterials();                 // マテリアルの生成・設定
            GameObject[] bones     = CreateBones();                     // ボーンの生成・設定

            // バインドポーズの作成
            BuildingBindpose(mesh, materials, bones);

            MMDEngine engine = root_game_object_.AddComponent <MMDEngine>();

            //スケール・エッジ幅
            engine.scale                   = scale_;
            engine.outline_width           = default_outline_width;
            engine.material_outline_widths = Enumerable.Repeat(1.0f, materials.Length).ToArray();

            // IKの登録
            if (use_ik_)
            {
                engine.ik_list = EntryIKSolver(bones);
            }

            // 剛体関連
            if (use_rigidbody_)
            {
                try
                {
                    var rigids = CreateRigids(bones);
                    AssignRigidbodyToBone(bones, rigids);
                    SetRigidsSettings(bones, rigids);
                    GameObject[] joints = SettingJointComponent(bones, rigids);
                    GlobalizeRigidbody(joints);

                    // 非衝突グループ
                    List <int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids);
                    int[]        groupTarget  = GetRigidbodyGroupTargets(rigids);

                    MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
                }
                catch { }
            }

            // Mecanim設定
            if (use_mecanim_)
            {
                AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones);
                avatar_setting.SettingHumanAvatar();

                string path      = format_.folder + "/";
                string name      = GetFilePathString(format_.name);
                string file_name = path + name + ".avatar.asset";
                avatar_setting.CreateAsset(file_name);
            }
            else
            {
                root_game_object_.AddComponent <Animation>();                   // アニメーション追加
            }

            return(root_game_object_);
        }
Exemplo n.º 4
0
    void Start()
    {
        skeletonMaterial = Resources.Load("Skeleton", typeof(Material)) as Material;

        barracudaRunner = GameObject.Find("BarracudaRunner").GetComponent <VNectBarracudaRunner>();
        barracudaRunner.ModelQuality = configurationSetting.TrainedModel;

        videoCapture = GameObject.Find("MainTexrure").GetComponent <VideoCapture>();

        Menu        = GameObject.Find("Menu");
        cameraMover = GameObject.Find("MainCamera").GetComponent <CameraMover>();

        sourceDevice = GameObject.Find("SourceDevice").GetComponent <Dropdown>();
        WebCamDevice[] devices = WebCamTexture.devices;
        foreach (var d in devices)
        {
            sourceDevice.options.Add(new Dropdown.OptionData(d.name));
        }
        sourceDevice.value = 0;

        btnPause     = GameObject.Find("btnPause").GetComponent <Button>();
        ifFrame      = GameObject.Find("ifFrame").GetComponent <InputField>();
        txFrameCount = GameObject.Find("txFrameCount").GetComponent <Text>();
        btnSkip      = GameObject.Find("btnSkip").GetComponent <Button>();
        pnlVideoIF   = GameObject.Find("pnlVideoIF");
        pnlVideoIF.SetActive(false);

        btnSourceDevice = GameObject.Find("btnSourceDevice").GetComponent <Button>();
        txtFPS          = GameObject.Find("txtFPS").GetComponent <Text>();
        btnRecord       = GameObject.Find("btnRecord").GetComponent <Button>();

        avatars = GameObject.Find("Avatars").GetComponent <Dropdown>();

        avatarSetting = GameObject.Find("AvatarSetting").GetComponent <AvatarSettingScript>();
        avatarSetting.Init();
        avatarSetting.gameObject.SetActive(false);
        configuration = GameObject.Find("Configuration").GetComponent <ConfigurationScript>();
        configuration.Init();
        configuration.gameObject.SetActive(false);

        ReflectConfiguration(configurationSetting);

        var settings = PlayerPrefs.GetString("AvatarSettings", "");

        //settings = "";
        // Decode Avatar Setting
        string[] asStr = settings.Split(';');
        foreach (var s in asStr)
        {
            string[] col = s.Split(',');
            if (col.Length != 16)
            {
                continue;
            }
            var setting = new AvatarSetting();

            if (!int.TryParse(col[0], out setting.AvatarType))
            {
                continue;
            }
            if (setting.AvatarType < 0)
            {
            }
            else if (setting.AvatarType == 0)
            {
                setting.VRMFilePath = col[1];
            }
            else if (setting.AvatarType == 1)
            {
                setting.FBXFilePath = col[1];
            }
            setting.AvatarName = col[2];
            if (!float.TryParse(col[3], out setting.PosX))
            {
                continue;
            }
            if (!float.TryParse(col[4], out setting.PosY))
            {
                continue;
            }
            if (!float.TryParse(col[5], out setting.PosZ))
            {
                continue;
            }
            if (!float.TryParse(col[6], out setting.DepthScale))
            {
                continue;
            }
            if (!float.TryParse(col[7], out setting.Scale))
            {
                continue;
            }
            if (!float.TryParse(col[8], out setting.FaceOriX))
            {
                continue;
            }
            if (!float.TryParse(col[9], out setting.FaceOriY))
            {
                continue;
            }
            if (!float.TryParse(col[10], out setting.FaceOriZ))
            {
                continue;
            }
            if (!int.TryParse(col[11], out setting.SkeletonVisible))
            {
                continue;
            }
            if (!float.TryParse(col[12], out setting.SkeletonPosX))
            {
                continue;
            }
            if (!float.TryParse(col[13], out setting.SkeletonPosY))
            {
                continue;
            }
            if (!float.TryParse(col[14], out setting.SkeletonPosZ))
            {
                continue;
            }
            if (!float.TryParse(col[15], out setting.SkeletonScale))
            {
                continue;
            }

            AvatarList.Add(setting);
        }
        ;

        if (AvatarList.Count == 0)
        {
            var setting = new AvatarSetting()
            {
                AvatarType = -1,
                AvatarName = "unity-chan",
                Avatar     = GameObject.Find("unitychan").GetComponent <VNectModel>(),
            };
            setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ);
            AvatarList.Add(setting);
            barracudaRunner.InitVNectModel(setting.Avatar);

            setting = new AvatarSetting()
            {
                AvatarType = -2,
                AvatarName = "yukihiko-chan",
                Avatar     = GameObject.Find("YukihikoAoyagi").GetComponent <VNectModel>(),
            };
            setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ);
            AvatarList.Add(setting);
            barracudaRunner.InitVNectModel(setting.Avatar);
        }

        avatars.options.Clear();
        foreach (var setting in AvatarList)
        {
            if (setting.AvatarType >= 0)
            {
                LoadAvatar(setting);
            }
            else if (setting.AvatarType < 0)
            {
                avatars.options.Add(new Dropdown.OptionData(setting.AvatarName));

                switch (setting.AvatarType)
                {
                case -1:
                    setting.Avatar = GameObject.Find("unitychan").GetComponent <VNectModel>();
                    break;

                case -2:
                    setting.Avatar = GameObject.Find("YukihikoAoyagi").GetComponent <VNectModel>();
                    break;
                }

                setting.Avatar.SetNose(setting.FaceOriX, setting.FaceOriY, setting.FaceOriZ);
                barracudaRunner.InitVNectModel(setting.Avatar);
            }
        }
        avatars.value = 0;
        ChangedAvatar(0);
    }
Exemplo n.º 5
0
    //--------------------------------------------------------------------------------
    // PMDファイルの読み込み
    // PMDファイルをUnity形式に変換
    void BurnUnityFormatForPMD()
    {
        MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter();

        GameObject obj = new GameObject(this.format.name);
        this.format.fst = this.fst;
        this.format.caller = obj;
        this.format.shader_type = this.shader_type;

        Mesh mesh = conv.CreateMesh(this.format);                   // メッシュの生成・設定
        Material[] materials = conv.CreateMaterials(this.format);   // マテリアルの生成・設定
        GameObject[] bones = conv.CreateBones(this.format);         // ボーンの生成・設定

        // バインドポーズの作成
        conv.BuildingBindpose(this.format, mesh, materials, bones);
        obj.AddComponent<Animation>();	// アニメーションを追加

        MMDEngine engine = obj.AddComponent<MMDEngine>();

        // IKの登録
        if (this.use_ik)
            engine.ik_list = conv.EntryIKSolver(this.format, bones);

        // 剛体関連
        if (this.rigidFlag)
        {
            try
            {
                var rigids = conv.CreateRigids(this.format, bones);
                conv.AssignRigidbodyToBone(this.format, bones, rigids);
                conv.SetRigidsSettings(this.format, bones, rigids);
                conv.SettingJointComponent(this.format, bones, rigids);

                // 非衝突グループ
                List<int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(this.format, rigids);
                int[] groupTarget = conv.GetRigidbodyGroupTargets(this.format, rigids);

                MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
            }
            catch { }
        }

        // Mecanim設定 (not work yet..)
        #if UNITY_4_0 || UNITY_4_1
        AvatarSettingScript avt_setting = new AvatarSettingScript(this.format.caller);
        avt_setting.SettingAvatar();
        #endif

        // プレファブに登録
        Object prefab = PrefabUtility.CreateEmptyPrefab(this.format.folder + "/" + format.name + ".prefab");
        PrefabUtility.ReplacePrefab(this.format.caller, prefab);

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

        // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る
        GameObject.DestroyImmediate(obj);
        PrefabUtility.InstantiatePrefab(prefab);
    }
Exemplo 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>
        private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale)
        {
            format_ = format;
            use_rigidbody_ = use_rigidbody;
            use_mecanim_ = use_mecanim;
            use_ik_ = use_ik;
            scale_ = scale;
            root_game_object_ = new GameObject(format_.meta_header.name);
            MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加
            engine.scale = scale_;

            MeshCreationInfo[] creation_info = CreateMeshCreationInfo();				// メッシュを作成する為の情報を作成
            Mesh[] mesh = CreateMesh(creation_info);									// メッシュの生成・設定
            Material[][] materials = CreateMaterials(creation_info);					// マテリアルの生成・設定
            GameObject[] bones = CreateBones();											// ボーンの生成・設定
            SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones);	// バインドポーズの作成
            CreateMorph(mesh, materials, bones, renderers, creation_info);				// モーフの生成・設定

            // BoneController・IKの登録(use_ik_を使った判定はEntryBoneController()の中で行う)
            {
                engine.bone_controllers = EntryBoneController(bones);
                engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver)
                                                        .Select(x=>x.ik_solver)
                                                        .ToArray();
            }

            // 剛体関連
            if (use_rigidbody_) {
                GameObject[] rigids = CreateRigids();
                AssignRigidbodyToBone(bones, rigids);
                SetRigidsSettings(bones, rigids);
                GameObject[] joints = CreateJoints(rigids);
                GlobalizeRigidbody(joints);

                // 非衝突グループ
                List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids);
                int[] groupTarget = GetRigidbodyGroupTargets(rigids);

                MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
            }

            // Mecanim設定
            #if UNITY_4_2
            if (use_mecanim_) {
                //アニメーター追加
                AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones);
                avatar_setting.SettingAvatar();

                string path = format_.meta_header.folder + "/";
                string name = GetFilePathString(format_.meta_header.name);
                string file_name = path + name + ".avatar.asset";
                avatar_setting.CreateAsset(file_name);
            } else {
                root_game_object_.AddComponent<Animation>();	// アニメーション追加
            }
            #else //UNITY_4_2
            root_game_object_.AddComponent<Animation>();	// アニメーション追加
            #endif //UNITY_4_2

            return root_game_object_;
        }
Exemplo n.º 7
0
    //--------------------------------------------------------------------------------
    // PMDファイルの読み込み

    // PMDファイルをUnity形式に変換
    void BurnUnityFormatForPMD()
    {
        MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter();

        GameObject obj = new GameObject(this.format.name);

        this.format.fst         = this.fst;
        this.format.caller      = obj;
        this.format.shader_type = this.shader_type;

        Mesh mesh = conv.CreateMesh(this.format);                   // メッシュの生成・設定

        Material[]   materials = conv.CreateMaterials(this.format); // マテリアルの生成・設定
        GameObject[] bones     = conv.CreateBones(this.format);     // ボーンの生成・設定

        // バインドポーズの作成
        conv.BuildingBindpose(this.format, mesh, materials, bones);
        obj.AddComponent <Animation>();         // アニメーションを追加

        MMDEngine engine = obj.AddComponent <MMDEngine>();

        // IKの登録
        if (this.use_ik)
        {
            engine.ik_list = conv.EntryIKSolver(this.format, bones);
        }

        // 剛体関連
        if (this.rigidFlag)
        {
            try
            {
                var rigids = conv.CreateRigids(this.format, bones);
                conv.AssignRigidbodyToBone(this.format, bones, rigids);
                conv.SetRigidsSettings(this.format, bones, rigids);
                conv.SettingJointComponent(this.format, bones, rigids);

                // 非衝突グループ
                List <int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(this.format, rigids);
                int[]        groupTarget  = conv.GetRigidbodyGroupTargets(this.format, rigids);

                MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
            }
            catch { }
        }

        // Mecanim設定 (not work yet..)
#if UNITY_4_0 || UNITY_4_1
        AvatarSettingScript avt_setting = new AvatarSettingScript(this.format.caller);
        avt_setting.SettingAvatar();
#endif

        // プレファブに登録
        Object prefab = PrefabUtility.CreateEmptyPrefab(this.format.folder + "/" + format.name + ".prefab");
        PrefabUtility.ReplacePrefab(this.format.caller, prefab);

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

        // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る
        GameObject.DestroyImmediate(obj);
        PrefabUtility.InstantiatePrefab(prefab);
    }
Exemplo n.º 8
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>
		private GameObject CreateGameObject_(PMXFormat format, bool use_rigidbody, AnimationType animation_type, bool use_ik, float scale) {
			format_ = format;
			use_ik_ = use_ik;
			scale_ = scale;
			root_game_object_ = new GameObject(format_.meta_header.name);
			MMDEngine engine = root_game_object_.AddComponent<MMDEngine>(); //MMDEngine追加
			//スケール・エッジ幅
			engine.scale = scale_;
			engine.outline_width = 1.0f;
			engine.material_outline_widths = format.material_list.material.Select(x=>x.edge_size).ToArray();
			engine.enable_render_queue = false; //初期値無効
			const int c_render_queue_transparent = 3000;
			engine.render_queue_value = c_render_queue_transparent;
			
			MeshCreationInfo[] creation_info = CreateMeshCreationInfo();				// メッシュを作成する為の情報を作成
			Mesh[] mesh = CreateMesh(creation_info);									// メッシュの生成・設定
			Material[][] materials = CreateMaterials(creation_info);					// マテリアルの生成・設定
			GameObject[] bones = CreateBones();											// ボーンの生成・設定
			SkinnedMeshRenderer[] renderers = BuildingBindpose(mesh, materials, bones);	// バインドポーズの作成
			CreateMorph(mesh, materials, bones, renderers, creation_info);				// モーフの生成・設定
			
	
			// BoneController・IKの登録(use_ik_を使った判定はEntryBoneController()の中で行う)
			{
				engine.bone_controllers = EntryBoneController(bones);
				engine.ik_list = engine.bone_controllers.Where(x=>null != x.ik_solver)
														.Select(x=>x.ik_solver)
														.ToArray();
			}
	
			// 剛体関連
			if (use_rigidbody) {
				GameObject[] rigids = CreateRigids();
				AssignRigidbodyToBone(bones, rigids);
				SetRigidsSettings(bones, rigids);
				GameObject[] joints = CreateJoints(rigids);
				GlobalizeRigidbody(joints);

				// 非衝突グループ
				List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids);
				int[] groupTarget = GetRigidbodyGroupTargets(rigids);

				MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
			}
	
			// Mecanim設定
			if (AnimationType.LegacyAnimation != animation_type) {
				//アニメーター追加
				AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones);
				switch (animation_type) {
				case AnimationType.GenericMecanim: //汎用アバターでのMecanim
					avatar_setting.SettingGenericAvatar();
					break;
				case AnimationType.HumanMecanim: //人型アバターでのMecanim
					avatar_setting.SettingHumanAvatar();
					break;
				default:
					throw new System.ArgumentException();
				}
				
				string path = format_.meta_header.folder + "/";
				string name = GetFilePathString(format_.meta_header.name);
				string file_name = path + name + ".avatar.asset";
				avatar_setting.CreateAsset(file_name);
			} else {
				root_game_object_.AddComponent<Animation>();	// アニメーション追加
			}

			return root_game_object_;
		}
Exemplo n.º 9
0
		private GameObject CreateGameObject_(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) {
			format_ = format;
			shader_type_ = shader_type;
			use_rigidbody_ = use_rigidbody;
			use_mecanim_ = use_mecanim;
			use_ik_ = use_ik;
			scale_ = scale;
			root_game_object_ = new GameObject(format_.name);
		
			Mesh mesh = CreateMesh();					// メッシュの生成・設定
			Material[] materials = CreateMaterials();	// マテリアルの生成・設定
			GameObject[] bones = CreateBones();			// ボーンの生成・設定
	
			// バインドポーズの作成
			BuildingBindpose(mesh, materials, bones);
	
			MMDEngine engine = root_game_object_.AddComponent<MMDEngine>();
			//スケール・エッジ幅
			engine.scale = scale_;
			engine.outline_width = default_outline_width;
			engine.material_outline_widths = Enumerable.Repeat(1.0f, materials.Length).ToArray();
	
			// IKの登録
			if (use_ik_)
				engine.ik_list = EntryIKSolver(bones);
	
			// 剛体関連
			if (use_rigidbody_)
			{
				try
				{
					var rigids = CreateRigids(bones);
					AssignRigidbodyToBone(bones, rigids);
					SetRigidsSettings(bones, rigids);
					GameObject[] joints = SettingJointComponent(bones, rigids);
					GlobalizeRigidbody(joints);
	
					// 非衝突グループ
					List<int>[] ignoreGroups = SettingIgnoreRigidGroups(rigids);
					int[] groupTarget = GetRigidbodyGroupTargets(rigids);
	
					MMDEngine.Initialize(engine, groupTarget, ignoreGroups, rigids);
				}
				catch { }
			}
	
			// Mecanim設定
			if (use_mecanim_) {
				AvatarSettingScript avatar_setting = new AvatarSettingScript(root_game_object_, bones);
				avatar_setting.SettingHumanAvatar();
				
				string path = format_.folder + "/";
				string name = GetFilePathString(format_.name);
				string file_name = path + name + ".avatar.asset";
				avatar_setting.CreateAsset(file_name);
			} else {
				root_game_object_.AddComponent<Animation>();	// アニメーション追加
			}

			return root_game_object_;
		}
	// PMDファイルをUnity形式に変換
	void BurnUnityFormatForPMD(MMD.PMD.PMDFormat format) {
		format.fst = this.fst;
		obj = new GameObject(format.name);
		format.caller = obj;
		format.shader_type = this.shader_type;
		
		MMD.PMD.PMDConverter conv = new MMD.PMD.PMDConverter();
		
		this.mesh = conv.CreateMesh(format);				// メッシュの生成・設定
		this.materials = conv.CreateMaterials(format);		// マテリアルの生成・設定
		this.bones = conv.CreateBones(format);				// ボーンの生成・設定

		// バインドポーズの作成
		conv.BuildingBindpose(format, this.mesh, this.materials, this.bones);
		obj.AddComponent<Animation>();	// アニメーションを追加

		MMDEngine engine = obj.AddComponent<MMDEngine>();

		// IKの登録
		if(this.use_ik)
			engine.ik_list = conv.EntryIKSolver(format, this.bones);

		// 剛体関連
		if (this.rigidFlag)
		{
			try
			{
				this.rigids = conv.CreateRigids(format, bones);
				conv.AssignRigidbodyToBone(format, this.bones, this.rigids);
				conv.SetRigidsSettings(format, this.bones, this.rigids);
				conv.SettingJointComponent(format, this.bones, this.rigids);

				// 非衝突グループ
				List<int>[] ignoreGroups = conv.SettingIgnoreRigidGroups(format, this.rigids);
				int[] groupTarget = conv.GetRigidbodyGroupTargets(format, rigids);

				MMDEngine.Initialize(engine, groupTarget, ignoreGroups, this.rigids);
			}
			catch { }
		}

#if UNITY_4_0
		AvatarSettingScript avt_setting = new AvatarSettingScript(format.caller);
		avt_setting.SettingAvatar();
#endif

		var window = LoadedWindow.Init();
		window.Text = format.head.comment;
		
		CreatePrefab(format);
		EndOfScript(format);
	}