mirror of
				https://github.com/maxartz15/VertexAnimation.git
				synced 2025-11-04 02:15:59 +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/Gizmos.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Editor/Gizmos.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: e057e650c2af4ea42a1d1b534a8dfbf9
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Editor/Gizmos/VA_ModelBaker Icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Editor/Gizmos/VA_ModelBaker Icon.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 2.4 KiB  | 
							
								
								
									
										144
									
								
								Editor/Gizmos/VA_ModelBaker Icon.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								Editor/Gizmos/VA_ModelBaker Icon.png.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,144 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 68e0f0fb3c94dae4c8e1d9d8362085b5
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 11
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: -1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: -100
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 0
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 2
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 8192
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 8192
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: iPhone
 | 
			
		||||
    maxTextureSize: 8192
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 8192
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Windows Store Apps
 | 
			
		||||
    maxTextureSize: 8192
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
  spritePackingTag: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  pSDShowRemoveMatteOption: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										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