diff options
Diffstat (limited to 'release/scripts/scripttemplate_camera_object.py')
-rw-r--r-- | release/scripts/scripttemplate_camera_object.py | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/release/scripts/scripttemplate_camera_object.py b/release/scripts/scripttemplate_camera_object.py deleted file mode 100644 index cacc35ed1a5..00000000000 --- a/release/scripts/scripttemplate_camera_object.py +++ /dev/null @@ -1,104 +0,0 @@ -#!BPY -""" -Name: 'Camera/Object Example' -Blender: 245 -Group: 'ScriptTemplate' -Tooltip: 'Script template for setting the camera direction' -""" - -from Blender import Window -import bpy - -script_data = \ -'''#!BPY -""" -Name: 'My Camera script' -Blender: 245 -Group: 'Object' -Tooltip: 'Rotate the camera to center on the active object' -""" - -import Blender -from Blender import Window, Scene, Draw, Mathutils - -# Rotate the camera in such a way that it centers on the currently active object -def RotCamToOb(cam, ob): - - # Get the camera matrix - camMat = cam.getMatrix('worldspace'); - - # Get the location of the camera and object and make sure they're vectors - camLoc = Mathutils.Vector(cam.loc) - obLoc = Mathutils.Vector(ob.loc) - - # Get the vector (direction) from the camera to the object - newVec = obLoc - camLoc - - # Make a quaternion that points the camera along the vector - newQuat = newVec.toTrackQuat('-z', 'y') - - # Convert the new quaternion to a rotation matrix (and resize it to 4x4 so it matches the other matrices) - rotMat = newQuat.toMatrix().resize4x4() - - # Make a matrix with only the current location of the camera - transMat = Mathutils.TranslationMatrix(camMat.translationPart()); - - # Multiply the rotation and translation matrixes to make 1 matrix with all data - newMat = rotMat * transMat - - # Now we make this matrix the camera matrix and voila done! - cam.setMatrix(newMat) - -#Make sure blender and the objects are in the right state and start doing stuff -def SceneCheck(): - - # Show a neat waitcursor whilst the script runs - Window.WaitCursor(1) - - # If we are in edit mode, go out of edit mode and store the status in a var - emode = int(Window.EditMode()) - if emode: Window.EditMode(0) - - # Get the scene, the camera and the currently active object - scn = Scene.GetCurrent() - cam = scn.getCurrentCamera() - ob = scn.getActiveObject() - - # Lets do some checks to make sure we have everything - # And if we don't then call a return which stops the entire script - if not cam: - Draw.PupMenu('Error, no active camera, aborting.') - return - - if not ob: - Draw.PupMenu('Error, no active object, aborting.') - return - - if cam == ob: - Draw.PupMenu('Error, select an object other than the camera, aborting.') - return - - # Start the main function of the script if we didn't encounter any errors - RotCamToOb(cam, ob) - - # Update the scene - scn.update() - - # Redraw the 3d view so we can instantly see what was changed - Window.Redraw(Window.Types.VIEW3D) - - # If we were in edit mode when the script started, go back into edit mode - if emode: Window.EditMode(1) - - # Remove the waitcursor - Window.WaitCursor(0) - -# Start the script -SceneCheck() - -''' - -new_text = bpy.data.texts.new('camobject_template.py') -new_text.write(script_data) -bpy.data.texts.active = new_text -Window.RedrawAll() |