mirror of
				https://github.com/maxartz15/VertexAnimation.git
				synced 2025-11-04 10:25:44 +01:00 
			
		
		
		
	ModelBaker Test
MeshCombiner, combine SkinnedMeshRenderers and MeshRenderers into one. AnimationBaker, bake SkinnedMeshRenderer with of animations into vertex animations. Test shader, flipped Y compared to previvious version, it now starts at 0,0 and goes into the positive direciton.
This commit is contained in:
		
							
								
								
									
										8
									
								
								Editor/Scripts/Editor/ModelBaker.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Editor/Scripts/Editor/ModelBaker.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: afa9933157fe17b40be247abddb0b2ee
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										8
									
								
								Editor/Scripts/Editor/ModelBaker/Editor.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Editor/Scripts/Editor/ModelBaker/Editor.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 5fb7e85d011f3c6419742e766fc11aeb
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										109
									
								
								Editor/Scripts/Editor/ModelBaker/Editor/VA_ModelBakerEditor.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								Editor/Scripts/Editor/ModelBaker/Editor/VA_ModelBakerEditor.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using UnityEditor;
 | 
			
		||||
 | 
			
		||||
namespace TAO.VertexAnimation.Editor
 | 
			
		||||
{
 | 
			
		||||
    [CustomEditor(typeof(VA_ModelBaker))]
 | 
			
		||||
    public class VA_ModelBakerEditor : UnityEditor.Editor
 | 
			
		||||
    {
 | 
			
		||||
        private VA_ModelBaker modelBaker = null;
 | 
			
		||||
 | 
			
		||||
        void OnEnable()
 | 
			
		||||
        {
 | 
			
		||||
            modelBaker = target as VA_ModelBaker;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void OnInspectorGUI()
 | 
			
		||||
        {
 | 
			
		||||
            serializedObject.Update();
 | 
			
		||||
 | 
			
		||||
            InputGUI();
 | 
			
		||||
            BakeGUI();
 | 
			
		||||
            OutputGUI();
 | 
			
		||||
 | 
			
		||||
            serializedObject.ApplyModifiedProperties();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void InputGUI()
 | 
			
		||||
        {
 | 
			
		||||
            //public GameObject model;
 | 
			
		||||
            //public AnimationClip[] animationClips;
 | 
			
		||||
            //public int fps = 24;
 | 
			
		||||
            //public int textureWidth = 512;
 | 
			
		||||
            //public bool saveBakedDataToAsset = true;
 | 
			
		||||
            //public bool generateAnimationBook = false;
 | 
			
		||||
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("model"));
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("animationClips"));
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("fps"));
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("textureWidth"));
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("saveBakedDataToAsset"));
 | 
			
		||||
            EditorGUILayout.PropertyField(serializedObject.FindProperty("generateAnimationBook"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void BakeGUI()
 | 
			
		||||
        {
 | 
			
		||||
            if (GUILayout.Button("Bake"))
 | 
			
		||||
            {
 | 
			
		||||
                ClearBakedData();
 | 
			
		||||
 | 
			
		||||
                modelBaker.Bake();
 | 
			
		||||
 | 
			
		||||
                if (modelBaker.saveBakedDataToAsset)
 | 
			
		||||
                {
 | 
			
		||||
                    SaveBakedData();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            using (new EditorGUILayout.HorizontalScope())
 | 
			
		||||
            {
 | 
			
		||||
                if (GUILayout.Button("SaveBakedData", EditorStyles.miniButtonLeft))
 | 
			
		||||
                {
 | 
			
		||||
                    SaveBakedData();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (GUILayout.Button("ClearBakedData", EditorStyles.miniButtonRight))
 | 
			
		||||
                {
 | 
			
		||||
                    ClearBakedData();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void OutputGUI()
 | 
			
		||||
        {
 | 
			
		||||
            using (new EditorGUI.DisabledGroupScope(true))
 | 
			
		||||
            {
 | 
			
		||||
                EditorGUILayout.PropertyField(serializedObject.FindProperty("bakedData"));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SaveBakedData()
 | 
			
		||||
        {
 | 
			
		||||
            AssetDatabase.AddObjectToAsset(modelBaker.BakedData.mesh, modelBaker);
 | 
			
		||||
 | 
			
		||||
            foreach (var pm in modelBaker.BakedData.positionMaps)
 | 
			
		||||
            {
 | 
			
		||||
                AssetDatabase.AddObjectToAsset(pm, modelBaker);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            AssetDatabase.SaveAssets();
 | 
			
		||||
            AssetDatabase.Refresh();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ClearBakedData()
 | 
			
		||||
        {
 | 
			
		||||
            var assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(modelBaker));
 | 
			
		||||
 | 
			
		||||
            foreach (var a in assets)
 | 
			
		||||
            {
 | 
			
		||||
                if (a != modelBaker)
 | 
			
		||||
                {
 | 
			
		||||
                    AssetDatabase.RemoveObjectFromAsset(a);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            AssetDatabase.SaveAssets();
 | 
			
		||||
            AssetDatabase.Refresh();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 3a3231c3c369f0c4ab95f98b979d0530
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										12
									
								
								Editor/Scripts/VA_AssetConverter.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Editor/Scripts/VA_AssetConverter.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace TAO.VertexAnimation.Editor
 | 
			
		||||
{
 | 
			
		||||
    [CreateAssetMenu(fileName = "new AssetConverter", menuName = "VA_Animation/AssetConverter", order = 400)]
 | 
			
		||||
    public class VA_AssetConverter : ScriptableObject
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Editor/Scripts/VA_AssetConverter.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Editor/Scripts/VA_AssetConverter.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 55b196764521c964c84e8f2edd5c8da5
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
		Reference in New Issue
	
	Block a user