Monday, March 11, 2019

Unity capture animation to sprites (with transparency)

  1. Create a new Scene
  2. In game tab, set the resolution to be the same as your captured sprites should be
  3. Drag your prefab or gameobject for animation into your scene and position it as you like
  4. Save below code as FrameDump.cs
  5. Drag the FrameDump.cs to camera object
  6. Set the "frame count" to number of frames to capture. For, example, if you have created an animation with Samples 60 and it runs for 1 minute, set this to 60. Open your animation on your animation tab in Unity to see this
  7. Run your new Scene in editor by clicking Play
  8. You can stop after the "frame count" counts down to 0
  9. The files are saved to c:\temp\cap


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class FrameDump: MonoBehaviour {
 string folder = "C:\\temp\\cap";
 [SerializeField]
 int frameCount = 60;
 int MAXFRAMES = 0;

 // Initialization
 void Start() {
  // delete folder (and anything inside it) if it exists
  if (System.IO.Directory.Exists(folder)) {
   System.IO.Directory.Delete(folder, true);
  }
  // create the folder for dumps
  System.IO.Directory.CreateDirectory(folder);
  MAXFRAMES = frameCount;

 }

 private void OnPostRender() {
  if (frameCount <= 0)
   return;
  string filename = string.Format("{0:000000}", (MAXFRAMES - frameCount));
  Debug.Log("File: " + filename);
  //Create a new texture with the width and height of the screen
  Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);
  //Read the pixels in the Rect starting at 0,0 and ending at the screen's width and height
  texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
  texture.Apply();
  File.WriteAllBytes(folder + "\\" + filename + ".png", texture.EncodeToPNG());
  Destroy(texture);
  frameCount--;
 }
}


No comments:

Turn on Windows 11 Fast Boot

If windows starting is slow, to enable windows 11 fast startup/boot,  Press Windows + R, type powercfg.cpl, and hit Enter.  This will direct...