Tuesday, April 6, 2010

I'm a tool (writer)

Things are getting pretty busy. The film is due for marks on Friday, and I'm busy trying to get something patched together for marks. To help try to meet that, I took some time today to write a little pair of tools to get me working faster.

The UDK has a nifty command switch called "dumpmovie" which forces it to save every rendered frame to the screenshots folder. In combination with the "fps XX" switch (where XX is the number of frames per second), it essentialy performs like a batch render in Maya, except there's not automatic off. Instead, it plays in a game window, and stops recording when you exit the game. Of course, the options with this are very limited. You can't (as far as I'm aware) set the path for the screenshots, and it only saves in BMP format, but it works, and that's what's important. Since BMPs are uncompressed, they take up a lot of space. A 120-frame render weighs in just over 300Mb. With WinRAR, I can collect and compress those 120 frames into a single 20Mb RAR file. That's about a 93% storage savings.

With those facts in mind, here was my workflow for rendering out a scene:
  1. Save final map and assets in UDK, then close editor.
  2. Open command prompt and type in really long UDK shell command to start a Dumpmovie render. (example: C:\UDK\UDK-2010-03\Binaries\Win32\UDK MapName -dumpmovie -benchmark -fps 24 -resx=1280 -resy=720)
  3. Render out scene.
  4. Open Explorer to the UDK screenshots folder.
  5. Select all new rendered frames.
  6. Right click, "Add to archive."
  7. Set up WinRAR options.
  8. Delete leftover frames.
Not optimal at all.

So instead, I wrote two simple batch files. One does the rendering side, the other runs the archiving. The rendering one also has the option of calling the archiver as soon as the render finishes. This is my new workflow.
  1. Run UDK_Render.bat.
  2. Give map name, choose resolution (full or half 720p).
  3. Run render.
  4. Choose to archive (or not).
  5. Give archive name.
  6. Done.
This leaves me with a screenshots folder that has nicely organized archives for each shot, plus it deletes the source files after creating the archive, so the screenshot folder is clean and primed for the next render. This also makes it very easy extract each archive into its own folder to prep for rendering out an uncompressed AVI from AfterEffects so I can then throw it into Premiere for editing.

As a side note for comparing UDK render time against Maya: If we assume Mental Ray is rendering at 5 frames/minute and UDK at 15 frames/sec, the ratio is 4500:1!!
Render time essentially becomes a non-issue. I could render my entire film (if it were contained in a single map), check for errors, tweak the map, and re-render in about the time it would take MR to render 3-5 frames. This by itself is one of my major arguments for using real-time rendering engines (like game engines) for rapid film production work.

No comments: