Initial revision
This commit is contained in:
106
intern/python/modules/Blender/Camera.py
Normal file
106
intern/python/modules/Blender/Camera.py
Normal file
@@ -0,0 +1,106 @@
|
||||
"""The Blender Camera module
|
||||
|
||||
This module provides access to **Camera** objects in Blender
|
||||
|
||||
Example::
|
||||
|
||||
from Blender import Camera, Object, Scene
|
||||
c = Camera.New('ortho') # create new ortho camera data
|
||||
c.lens = 35.0 # set lens value
|
||||
cur = Scene.getCurrent() # get current Scene
|
||||
ob = Object.New('Camera') # make camera object
|
||||
ob.link(c) # link camera data with this object
|
||||
cur.link(ob) # link object into scene
|
||||
cur.setCurrentCamera(ob) # make this camera the active
|
||||
"""
|
||||
|
||||
import shadow
|
||||
import _Blender.Camera as _Camera
|
||||
|
||||
|
||||
class Camera(shadow.hasIPO):
|
||||
"""Wrapper for Camera DataBlock
|
||||
|
||||
Attributes
|
||||
|
||||
lens -- The lens value
|
||||
|
||||
clipStart -- The clipping start of the view frustum
|
||||
|
||||
clipEnd -- The end clipping plane of the view frustum
|
||||
|
||||
type -- The camera type:
|
||||
0: perspective camera,
|
||||
1: orthogonal camera - (see Types)
|
||||
|
||||
mode -- Drawing mode; see Modes
|
||||
"""
|
||||
|
||||
_emulation = {'Lens' : "lens",
|
||||
'ClSta' : "clipStart",
|
||||
'ClEnd' : "clipEnd",
|
||||
}
|
||||
|
||||
Types = {'persp' : 0,
|
||||
'ortho' : 1,
|
||||
}
|
||||
|
||||
Modes = {'showLimits' : 1,
|
||||
'showMist' : 2,
|
||||
}
|
||||
|
||||
def __init__(self, object):
|
||||
self._object = object
|
||||
|
||||
def getType(self):
|
||||
"""Returns camera type: "ortho" or "persp" """
|
||||
if self.type == self.Types['ortho']:
|
||||
return 'ortho'
|
||||
else:
|
||||
return 'persp'
|
||||
|
||||
def setType(self, type):
|
||||
"""Sets Camera type to 'type' which must be one of ["persp", "ortho"]"""
|
||||
self._object.type = self.Types[type]
|
||||
|
||||
def setMode(self, *modes):
|
||||
"""Sets Camera modes *the nice way*, instead of direct access
|
||||
of the 'mode' member.
|
||||
This function takes a variable number of string arguments of the types
|
||||
listed in self.Modes.
|
||||
|
||||
|
||||
Example::
|
||||
|
||||
c = Camera.New()
|
||||
c.setMode('showMist', 'showLimits')
|
||||
"""
|
||||
flags = 0
|
||||
try:
|
||||
for a in modes:
|
||||
flags |= self.Modes[a]
|
||||
except:
|
||||
raise TypeError, "mode must be one of %s" % self.Modes.keys()
|
||||
self.mode = flags
|
||||
|
||||
def __repr__(self):
|
||||
return "[Camera \"%s\"]" % self.name
|
||||
|
||||
def New(type = 'persp'):
|
||||
"""Creates new camera Object and returns it. 'type', if specified,
|
||||
must be one of Types"""
|
||||
cam = Camera(_Camera.New())
|
||||
cam.setType(type)
|
||||
return cam
|
||||
|
||||
def get(name = None):
|
||||
"""Returns the Camera with name 'name', if given. Otherwise, a list
|
||||
of all Cameras is returned"""
|
||||
if name:
|
||||
return Camera(_Camera.get(name))
|
||||
else:
|
||||
return shadow._List(_Camera.get(), Camera)
|
||||
|
||||
Get = get # emulation
|
||||
|
||||
|
Reference in New Issue
Block a user