Hello people. I'm working on a project and I wanna use Unity as my render engine. The simple and straightforward quick render pleases me and I don't have to wait since it's in real time.
However, I'm not working on a game, I just wanna make a simple cutscene and it seems I haven't managed to find any tutorials to do so?
Basically, what's the proper workflow to import a long baked animaiton inside Unity and render it into a video?
Also, does Unity accepts pre-animated Blendshapes??
Replies
There are some solutions on the asset store to fix that, i'm still looking to find out what the best one is myself. Cinema Director looks very promising so far, but it's not cheap.
If I you don't want to buy one you can try making anything that moves in the cutscene(with it's imported animation intact) the child of just one object, then you can add an animation to that in unity's animation editor, it will let you control the curves of any child objects in one anim. If you can script a little, you can also use animation events to further control your scene.
This approach is a huge pain to work with though, since unity's animation editor is pretty awful. But you can get away with it as long as you do all the proper animation work in your 3d package and only need to spawn a particle system here, fade a color there, or switch an object over there.
Unity should support blendshapes: http://docs.unity3d.com/Manual/BlendShapes.html
To render it to video, you can just make a build of your scene, then play and record it using normal screen recording tools(recording is usually too slow from the editor, but very quick from a build. I use OBS for recording).
Since you're rendering it to video you can add sound in a video editing program, that should be a lot less work than trying to make it fit from within unity.
Hope that helps I really recommend looking into some of the popular asset stuff for cutscenes if you're going to do this often though.
usequencer is very buggy unfortunately. We had to ditch it after a week of bugs. It has a lot of potential and over time it might get more stable.
I just wrote a script based on TakeScreenshot by Aarku that saves screen captures as a .png image sequence. You can get it here: ScreenCaptureImageSequence.cs on PasteBin
You'll have to record the audio some other way though... I'd probably pipe my system audio output through SoundFlower into Quicktime (essentially using a virtual microphone to record my audio output). I also heard Audacity can do the same as my SoundFlower/Quicktime combo.
- The recorded frame rate should now be independent of the actual frame rate. Setting the Frame Rate variable to something between 1 and 60 makes it record at the corresponding fps. Setting it to 0 results in realtime capturing at whatever fps Unity runs at.
- You can capture at a larger resolution than what you actually see. However, on my machine, this seems to make the captured frame rate drop significantly.
- It automatically creates a folder to put the images into and keep things tidy.
- Each time you start recording, it starts a new take and creates a new sub folder.
- You can set custom scene names and file suffixes.
- Each recording's folder tells you the exact start time of the recording, for syncing with audio, etc
- ... probably more things I forgot, because I'm tired right now. Just read the comments in the script.
You can get the new version here on PasteBin: ScreenCaptureImageSequence.cs v2https://www.assetstore.unity3d.com/en/#!/content/19779
Not expensive considering the time it saves you. What is your time really worth? If so, try waiting for one of the Asset Store Sales.
Full disclosure: I am one of the developers of this product.
It also works in an incredible knockout combo with Cinemachine which allows for all your shots to procedurally track the targets. Should things change speed, or the level be adjusted, the cameras still figure out the shots. You can also seamlessly blend from your gameplay cameras to cutscene cameras and back.
Full disclosure: I am one of the developers of this product.