Samples/Camera/CameraSwitcher.py

Samples/Camera/CameraSwitcher.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 # Show the usage of CameraSwitcher
8 #
9 # Topic:FBCameraSwitcher, FBCamera, FBTime, FBRenderer, FBVector3d, FBPlayerControl, FBSystem
10 #
11 
12 from pyfbsdk import *
13 import os
14 
15 FBApplication().FileNew()
16 filepath = os.path.abspath( os.path.join( os.getcwd(), "../Camera/camera_switcher.fbx" ) )
17 print filepath
18 print FBApplication().FileOpen(filepath, False)
19 FBSystem().Renderer.Render()
20 
21 '''
22 
23 
24 1. For FBSystem().Scene.Renderer's camera setting for panes:
25 
26  FBSystem().Scene.Renderer.SetCameraSwitcherInPane()
27  FBSystem().Scene.Renderer.IsCameraSwitcherInPane()
28  FBSystem().Scene.Renderer.SetCameraInPane()
29  FBSystem().Scene.Renderer.GetCameraInPane()
30  FBCameraSwitcher().CurrentCamera
31 
32 '''
33 FBSystem().Scene.Renderer.SetCameraSwitcherInPane( 0, True )
34 FBSystem().Renderer.Render()
35 
36 FBPlayerControl().Goto(FBTime(0, 0, 0, 30))
37 FBSystem().Renderer.Render()
38 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # True
39 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera 1
40 print FBCameraSwitcher().CurrentCamera.Name # Camera 1
41 
42 FBSystem().Scene.Renderer.SetCameraSwitcherInPane( 0, False )
43 FBSystem().Renderer.Render()
44 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # False
45 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera 1
46 print FBCameraSwitcher().CurrentCamera.Name # Camera 1
47 
48 FBPlayerControl().Goto(FBTime(0, 0, 0, 60))
49 FBSystem().Scene.Renderer.SetCameraSwitcherInPane( 0, True )
50 FBSystem().Renderer.Render()
51 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # True
52 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera 2
53 print FBCameraSwitcher().CurrentCamera.Name # Camera 2
54 
55 camera = FBSystem().Scene.Cameras[7]
56 print camera.Name # Camera
57 FBSystem().Scene.Renderer.SetCameraInPane( camera, 0 ) # use Camera Switcher
58 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # False
59 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera
60 print FBCameraSwitcher().CurrentCamera.Name # Camera 2
61 
62 FBSystem().Scene.Renderer.SetCameraSwitcherInPane( 0, False ) # use Camera
63 FBSystem().Renderer.Render()
64 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # False
65 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera
66 print FBCameraSwitcher().CurrentCamera.Name # Camera 2
67 
68 
69 
70 '''
71 
72 2. For FBCameraSwitcher and its 2 modes: manual vs. evaluate
73 
74  FBCameraSwitcher().CurrentCamera
75  FBCameraSwitcher().CurrentCameraIndex
76  FBCameraSwitcher().UseEvaluateSwitch()
77 
78 '''
79 
80 FBSystem().Scene.Renderer.SetCameraSwitcherInPane( 0, True ) # use Camera Switcher
81 FBSystem().Renderer.Render() # render
82 print FBCameraSwitcher().CurrentCamera.Name # Camera 2
83 print FBCameraSwitcher().CurrentCameraIndex # 3, time point to the 3rd camera in CS
84 print FBSystem().Scene.Renderer.IsCameraSwitcherInPane(0) # True
85 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera 2
86 
87 camera = FBSystem().Scene.Cameras[7]
88 print camera.Name # Camera
89 FBCameraSwitcher().CurrentCamera = camera # go to manual mode
90 FBSystem().Renderer.Render() # render
91 print FBCameraSwitcher().CurrentCamera.Name # Camera
92 print FBCameraSwitcher().CurrentCameraIndex # 3, time point to the 3rd camera in CS
93 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera, GetCameraInPane return camera switcher's current camera
94 
95 FBPlayerControl().Goto(FBTime(0, 0, 0, 30)) # move to Camera 1
96 FBSystem().Renderer.Render() # render
97 print FBCameraSwitcher().CurrentCamera.Name # Camera, in manual mode
98 print FBCameraSwitcher().CurrentCameraIndex # 2, time point to the 2nd camera in CS
99 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera, in manual mode
100 
101 FBCameraSwitcher().UseEvaluateSwitch() # go to evaluate mode
102 FBSystem().Renderer.Render() # render.
103 print FBCameraSwitcher().CurrentCamera.Name # Camera for running script. Camera 1 for manual execute. Known issue.
104 print FBCameraSwitcher().CurrentCameraIndex # 2, time point to the 2nd camera in CS
105 print FBSystem().Scene.Renderer.GetCameraInPane(0).Name # Camera for running script. Camera 1 for manual execute. Known issue.
106 
107