-
using UnityEngine;
-
using System. Collections;
-
-
{
-
{
-
// Get the state for the clip we want to bake
-
if (clipState == null )
-
{
-
return;
-
}
-
-
// Start playing the clip
-
-
// Set time to start
-
clipState. time = 0.0f;
-
-
// Calculate time between baked frames
-
-
// Bake the frames
-
for ( int frameIndex = 0; frameIndex < m_numFramesToBake; ++frameIndex )
-
{
-
string frameName = string. Format ( "BakedFrame{0}", frameIndex );
-
-
// Create a mesh to store this frame
-
frameMesh. name = frameName;
-
-
// Sample animation to get bones in the right place
-
-
// Bake the mesh
-
m_skinnedMeshRenderer. BakeMesh (frameMesh );
-
-
// Setup game object to show frame
-
frameGO. name = frameName;
-
-
// Setup mesh filter
-
meshFilter. mesh = frameMesh;
-
-
// Setup mesh renderer
-
MeshRenderer meshRenderer = frameGO. AddComponent<MeshRenderer> ( );
-
meshRenderer. sharedMaterials = m_skinnedMeshRenderer. sharedMaterials;
-
-
// Move to next frame time
-
clipState. time += deltaTime;
-
}
-
-
// Stop playing
-
}
-
-
[SerializeField ]
-
Animation m_animation; // Animation component used for baking
-
-
[SerializeField ]
-
SkinnedMeshRenderer m_skinnedMeshRenderer; // Skinned mesh renderer used for baking
-
-
[SerializeField ]
-
string m_clipToBake = "Idle"; // Name of the animation clip to bake
-
-
[SerializeField ]
-
int m_numFramesToBake = 30; // Number of frames to bake
-
}