Python Reference Guide
 
Loading...
Searching...
No Matches
Rendering\RenderLayers.py
1# Copyright 2009 Autodesk, Inc. All rights reserved.
2# Use of this software is subject to the terms of the Autodesk license agreement
3# provided at the time of installation or download, or which otherwise accompanies
4# this software in either electronic or hard copy form.
5#
6# Script description:
7# Render all layers from a scene to different files.
8#
9# Topic: FBPlayerControl, FBCamera, FBVideoGrabber, FBFolderPopup
10#
11
12from pyfbsdk import *
13import os
14
15# naming mask to identify render layers
16lRenderPrefix = 'Render'
17lformat = '.tif' # .avi, .jpg, .tga, .tif, .tiff, .yuv, .swf
18
19# Rendering grabs zoom bar data for frame range
20gApplication = FBApplication()
21gSystem = FBSystem()
22lControl = FBPlayerControl()
23timeSpan = gSystem.CurrentTake.LocalTimeSpan
24lStart = timeSpan.GetStart()
25lStop = timeSpan.GetStop()
26lStepFrame = 1
27lFrameRate = lControl.GetTransportFpsValue()
28
29# a function for setting render options and executing render
30def RenderLayer ( pPath,pLayerName ):
31 lRenderPath = "%s\\%s_%s" % ( pPath,pLayerName,lformat )
32
33 lOptions = FBVideoGrabber().GetOptions()
34 lOptions.ViewingMode = FBVideoRenderViewingMode().FBViewingModeCurrent
35 lOptions.TimeSpan = timeSpan
36 lOptions.TimeSteps = FBTime(0, 0, 0, 1)
37 lOptions.CameraResolution = FBCameraResolutionMode().kFBResolutionCustom
38 lOptions.AntiAliasing = False
39 lOptions.RenderAudio = False
40 lOptions.FieldMode = FBVideoRenderFieldMode().FBFieldModeNoField
41 lOptions.BitsPerPixel = FBVideoRenderDepth().FBVideoRender24Bits
42 lOptions.ShowCameraLabel = False
43 lOptions.ShowSafeArea = False
44 lOptions.OutputFileName = pPath
45 lOptions.ShowTimeCode = True
46 lOptions.OutputFileName = lRenderPath
47 lOptions.StillImageQuality = 0
48 gApplication.FileRender( lOptions )
49
50#Create a dictionary of Groups visibility to recall later
51lShow = {}
52for lGroups in FBSystem().Scene.Groups:
53 lShow[lGroups.Name]=lGroups.Show
54
55# hide Axis and grid from renders
56for lCamera in FBSystem().Scene.Cameras:
57 lCamera.ViewShowAxis = False
58 lCamera.ViewShowGrid = False
59
60
61# select global folder for renders
62lFp = FBFolderPopup()
63lFp.Caption = "Select a folder to put your Rendered Layers:"
64
65# Set the default path. Good for a PC only... will have to be different for Mac.
66lFp.Path = r"C:\temp"
67
68lRes = lFp.Execute()
69# create a subfolder for render layers
70if lRes:
71 lfolder = FBMessageBoxGetUserValue( "Create subfolder for render layers: " , "Warning: will overwrite existing ", "MyRenderLayers", FBPopupInputType.kFBPopupString, "Ok" )
72
73 if lfolder[0]:
74 print("Creating subfolder %s" % lfolder[1])
75 if not os.path.exists("%s\\%s" % ( lFp.Path,lfolder[1] )):
76 os.mkdir("%s\\%s" % ( lFp.Path,lfolder[1] ))
77
78 lFp.Path = "%s\\%s" % (lFp.Path,lfolder[1])
79
80 else:
81 FBMessageBox( "Result", "Got an error", "Ok" )
82
83 del( lfolder )
84
85# Render each Render Layer
86 for lGroups in FBSystem().Scene.Groups:
87 lGroups.Show = False
88 for lGroups in FBSystem().Scene.Groups:
89 if lGroups.Name.startswith( lRenderPrefix ):
90 lGroups.Show = True
91 print('Rendering Layer ' + lGroups.Name.lstrip( lRenderPrefix ))
92 RenderLayer(lFp.Path,lGroups.Name.lstrip( lRenderPrefix ))
93 print('Done')
94 lGroups.Show = False
95
96# unhide axis and grid from scene
97for lCamera in FBSystem().Scene.Cameras:
98 lCamera.ViewShowAxis = True
99 lCamera.ViewShowGrid = True
100
101# reset visibility status of Groups
102for lGroups in FBSystem().Scene.Groups:
103 lGroups.Show = lShow[lGroups.Name]
104
105
106
107
108
FBApplication is used mainly to manage files.
Definition: pyfbsdk_generated.h:801
Resolution modes.
Definition: pyfbsdk_generated.h:2829
Folder Popup (for selecting a directory).
Definition: pyfbsdk_generated.h:8126
Player control.
Definition: pyfbsdk_generated.h:13745
Provides access to the underlying system, and the MotionBuilder scene.
Definition: pyfbsdk_generated.h:18771
Time data structure.
Definition: pyfbsdk_generated.h:19596
Video Grabber class.
Definition: pyfbsdk_generated.h:20875
Enum FBVideoRenderDepth.
Definition: pyfbsdk_generated.h:21073
Enum FBVideoRenderFieldMode.
Definition: pyfbsdk_generated.h:21083
Enum FBVideoRenderViewingMode.
Definition: pyfbsdk_generated.h:21096
int FBMessageBox(str pBoxTitle, str pMessage, str pButton1Str, str pButton2Str=None, str pButton3Str=None, int pDefaultButton=0, int pScrolledMessage=0)
Dialog popup box.