SettingAvatar() public method

public SettingAvatar ( ) : void
return void
コード例 #1
0
    // 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);
    }
コード例 #2
0
ファイル: PMXConverter.cs プロジェクト: Imanity/HelloArduino
		/// <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_;
		}
コード例 #3
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);
    }
コード例 #4
0
ファイル: PMXConverter.cs プロジェクト: hsnk/mmd-for-unity
        /// <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_;
        }
コード例 #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);
    }
コード例 #6
0
	// 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);
	}