Module Scene :: Class Scene
[frames | no frames]

Class Scene


The Scene object

This object gives access to Scene data in Blender.
Method Summary
  addScriptLink(text, event)
Add a new script link to this Scene.
  clearScriptLinks(links)
Delete script links from this Scene.
Scene copy(duplicate_objects)
Make a copy of this Scene.
Blender Object or None getActiveObject()
Get this scene's active object.
list of Blender Objects getChildren()
Get all objects linked to this Scene.
Blender Object getCurrentCamera()
Get the currently active Camera for this Scene.
list of integers getLayers()
Get the layers set for this Scene.
string getName()
Get the name of this Scene.
Blender Radiosity getRadiosityContext()
Get the radiosity context for this scene, see Radio.
RenderData getRenderingContext()
Get the rendering context for this scene, see Render.
list getScriptLinks(event)
Get a list with this Scene's script links of type 'event'.
  link(object)
Link an Object to this Scene.
  makeCurrent()
Make this Scene the currently active one in Blender.
bool play(mode, win)
Play a realtime animation.
  setCurrentCamera(camera)
Set the currently active Camera in this Scene.
  setLayers(layers)
Set the visible layers for this scene.
  setName(name)
Set the name of this Scene.
  unlink(object)
Unlink an Object from this Scene.
  update(full)
Update this Scene in Blender.

Instance Variable Summary
integer (bitmask) Layers: The Scene layers (check also the easier to use layers).
list of integers layers: The Scene layers (check also Layers).
string name: The Scene name.

Method Details

addScriptLink(text, event)

Add a new script link to this Scene.

Using OpenGL functions within a scene ScriptLink will draw graphics over the 3D view. There is an issue with the zoom of the floating panels also scaling graphics drawn by your scriptlink. This makes matching OpenGL graphics to mouse location impossible. Make sure that you use floating point for operations that you would usually use int functions for: glRasterPos2f rather then glRasterPos2i.

The following example shows how you can use the OpenGL model view matrix to obtain the scale value.

Example:
 from Blender import BGL
 view_matrix = BGL.Buffer(BGL.GL_FLOAT, 16)
 BGL.glGetFloatv(BGL.GL_MODELVIEW_MATRIX, view_matrix)
 gl_scale = 1/viewMatrix[0]
 
 # Now that we have the scale we can draw to the correct scale.
 BGL.glRect2f(10*gl_scale, 10*gl_scale, 110*gl_scale, 110*gl_scale)
Parameters:
text - the name of an existing Blender Text.
           (type=string)
event - "FrameChanged", "OnLoad", "OnSave", "Redraw" or "Render".
           (type=string)

clearScriptLinks(links=None)

Delete script links from this Scene. If no list is specified, all script links are deleted.
Parameters:
links - None (default) or a list of Blender Text names.
           (type=list of strings)

copy(duplicate_objects=1)

Make a copy of this Scene.
Parameters:
duplicate_objects - Defines how the Scene children are duplicated:
  • 0: Link Objects;
  • 1: Link Object Data;
  • 2: Full copy.

           (type=int)
Returns:
The copied Blender Scene.
           (type=Scene)

getActiveObject()

Get this scene's active object.
Returns:
the active object or None if not available.
           (type=Blender Object or None)

Note: the active object, if selected, can also be retrieved with Object.GetSelected -- it is the first item in the returned list. But even when no object is selected in Blender, there can be an active one (if the user enters editmode, for example, this is the object that should become available for edition). So what makes this scene method different from Object.GetSelected()[0] is that it can return the active object even when no objects are selected.

getChildren()

Get all objects linked to this Scene.
Returns:
A list with all Blender Objects linked to this Scene.
           (type=list of Blender Objects)

Note: Object.Get will return all objects currently in Blender, which means all objects from all available scenes. In most cases (exporter scripts, for example), it's probably better to use this scene.GetChildren instead, since it will only access objects from this particular scene.

getCurrentCamera()

Get the currently active Camera for this Scene.
Returns:
The currently active Camera object.
           (type=Blender Object)

Note: The active camera can be any object type, not just a camera object.

getLayers()

Get the layers set for this Scene.
Returns:
a list where each number means the layer with that number is set.
           (type=list of integers)

getName()

Get the name of this Scene.
Returns:
string

getRadiosityContext()

Get the radiosity context for this scene, see Radio.
Returns:
the radiosity object for this scene.
           (type=Blender Radiosity)

Note: only the current scene can return a radiosity context.

getRenderingContext()

Get the rendering context for this scene, see Render.
Returns:
the render data object for this scene.
           (type=RenderData)

getScriptLinks(event)

Get a list with this Scene's script links of type 'event'.
Parameters:
event - "FrameChanged", "OnLoad", "OnSave", "Redraw" or "Render".
           (type=string)
Returns:
a list with Blender Text names (the script links of the given 'event' type) or None if there are no script links at all.
           (type=list)

link(object)

Link an Object to this Scene.
Parameters:
object - A Blender Object.
           (type=Blender Object)

makeCurrent()

Make this Scene the currently active one in Blender.

play(mode=0, win='<VIEW3D>')

Play a realtime animation. This is the "Play Back Animation" function in Blender, different from playing a sequence of rendered images (for that check Render.RenderData.play).
Parameters:
mode - controls playing:
  • 0: keep playing in the biggest 'win' window;
  • 1: keep playing in all 'win', VIEW3D and SEQ windows;
  • 2: play once in the biggest VIEW3D;
  • 3: play once in all 'win', VIEW3D and SEQ windows.

           (type=int)
win - window type, see Window.Types. Only some of them are meaningful here: VIEW3D, SEQ, IPO, ACTION, NLA, SOUND. But the others are also accepted, since this function can be used simply as an interruptible timer. If 'win' is not visible or invalid, VIEW3D is tried, then any bigger visible window.
           (type=int)
Returns:
0 on normal exit or 1 when play back is canceled by user input.
           (type=bool)

setCurrentCamera(camera)

Set the currently active Camera in this Scene.
Parameters:
camera - The new active Camera.
           (type=Blender Camera)

setLayers(layers)

Set the visible layers for this scene.
Parameters:
layers - a list of integers in the range [1, 20], where each available index makes the layer with that number visible.
           (type=list of integers)

Note: if this Scene is the current one, the 3D View layers are also updated, but the screen needs to be redrawn (at least 3D Views and Buttons windows) for the changes to be seen.

setName(name)

Set the name of this Scene.
Parameters:
name - The new name.
           (type=string)

unlink(object)

Unlink an Object from this Scene.
Parameters:
object - A Blender Object.
           (type=Blender Object)

update(full=0)

Update this Scene in Blender.
Parameters:
full - A bool to control the level of updating:
  • 0: sort the base list of objects.
  • 1: sort and also regroup, do ipos, keys, script links, etc.

           (type=int)

Warning: When in doubt, try with full = 0 first, since it is faster. The "full" update is a recent addition to this method.


Instance Variable Details

Layers

The Scene layers (check also the easier to use layers). This value is a bitmask with at least one position set for the 20 possible layers starting from the low order bit. The easiest way to deal with these values in in hexadecimal notation. Example:
 scene.Layers = 0x04 # sets layer 3 ( bit pattern 0100 )
 scene.Layers |= 0x01
 print scene.Layers # will print: 5 ( meaning bit pattern 0101)
After setting the Layers value, the interface (at least the 3d View and the Buttons window) needs to be redrawn to show the changes.
Type:
integer (bitmask)

layers

The Scene layers (check also Layers). This attribute accepts and returns a list of integer values in the range [1, 20]. Example:
 scene.layers = [3] # set layer 3
 scene.layers = scene.layers.append(1)
 print scene.layers # will print: [1, 3]
Type:
list of integers

name

The Scene name.
Type:
string

Generated by Epydoc 2.1 on Thu Jul 13 16:50:05 2006 http://epydoc.sf.net