Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

vtkAssembly Class Reference

#include <vtkAssembly.h>

Inheritance diagram for vtkAssembly:

Inheritance graph
[legend]
Collaboration diagram for vtkAssembly:

Collaboration graph
[legend]
List of all members.

Detailed Description

create hierarchies of vtkProp3Ds (transformable props)

Date:
2002/05/28 03:33:50
Revision:
1.49

vtkAssembly is an object that groups vtkProp3Ds, its subclasses, and other assemblies into a tree-like hierarchy. The vtkProp3Ds and assemblies can then be transformed together by transforming just the root assembly of the hierarchy.

A vtkAssembly object can be used in place of an vtkProp3D since it is a subclass of vtkProp3D. The difference is that vtkAssembly maintains a list of vtkProp3D instances (its "parts") that form the assembly. Then, any operation that transforms (i.e., scales, rotates, translates) the parent assembly will transform all its parts. Note that this process is recursive: you can create groups consisting of assemblies and/or vtkProp3Ds to arbitrary depth.

To add an assembly to the renderer's list of props, you only need to add the root of the assembly. During rendering, the parts of the assembly are rendered during a hierarchical traversal process.

Warning:
Collections of assemblies are slower to render than an equivalent list of actors. This is because to support arbitrary nesting of assemblies, the state of the assemblies (i.e., transformation matrices) must be propagated through the assembly hierarchy.
Warning:
Assemblies can consist of hierarchies of assemblies, where one actor or assembly used in one hierarchy is also used in other hierarchies. However, make that there are no cycles (e.g., parent->child->parent), this will cause program failure.
Warning:
If you wish to create assemblies without any transformation (using the assembly strictly as a grouping mechanism), then you may wish to consider using vtkPropAssembly.
See also:
vtkActor vtkTransform vtkMapper vtkPolyDataMapper vtkPropAssembly
Created by:
  • Schroeder, Will
CVS contributions (if > 5%):
  • Schroeder, Will (81%)
  • Martin, Ken (6%)
CVS logs (CVSweb):
  • .cxx (/Rendering/vtkAssembly.cxx)
  • .h (/Rendering/vtkAssembly.h)
Examples:
vtkAssembly (Examples)
Tests:
vtkAssembly (Tests)

Definition at line 88 of file vtkAssembly.h.

Public Types

typedef vtkProp3D Superclass

Public Methods

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
void AddPart (vtkProp3D *)
void RemovePart (vtkProp3D *)
vtkProp3DCollectionGetParts ()
void ReleaseGraphicsResources (vtkWindow *)
unsigned long int GetMTime ()
void ShallowCopy (vtkProp *prop)
void BuildPaths (vtkAssemblyPaths *paths, vtkAssemblyPath *path)
void GetActors (vtkPropCollection *)
void GetVolumes (vtkPropCollection *)
int RenderOpaqueGeometry (vtkViewport *ren)
int RenderTranslucentGeometry (vtkViewport *ren)
void InitPathTraversal ()
vtkAssemblyPathGetNextPath ()
int GetNumberOfPaths ()
void GetBounds (float bounds[6])
float * GetBounds ()

Static Public Methods

vtkAssembly * New ()
int IsTypeOf (const char *type)
vtkAssembly * SafeDownCast (vtkObject *o)

Protected Methods

 vtkAssembly ()
 ~vtkAssembly ()
virtual void UpdatePaths ()

Protected Attributes

vtkProp3DCollectionParts
vtkTimeStamp PathTime


Member Typedef Documentation

typedef vtkProp3D vtkAssembly::Superclass
 

Reimplemented from vtkProp3D.

Definition at line 93 of file vtkAssembly.h.


Constructor & Destructor Documentation

vtkAssembly::vtkAssembly   [protected]
 

vtkAssembly::~vtkAssembly   [protected]
 


Member Function Documentation

vtkAssembly* vtkAssembly::New   [static]
 

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkAssembly::GetClassName   [virtual]
 

Reimplemented from vtkProp3D.

int vtkAssembly::IsTypeOf const char *    type [static]
 

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkProp3D.

virtual int vtkAssembly::IsA const char *    type [virtual]
 

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkProp3D.

vtkAssembly* vtkAssembly::SafeDownCast vtkObject   o [static]
 

Reimplemented from vtkProp3D.

void vtkAssembly::PrintSelf ostream &    os,
vtkIndent    indent
[virtual]
 

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkProp3D.

void vtkAssembly::AddPart vtkProp3D  
 

Add a part to the list of parts.

void vtkAssembly::RemovePart vtkProp3D  
 

Remove a part from the list of parts,

vtkProp3DCollection * vtkAssembly::GetParts   [inline]
 

Return the parts (direct descendants) of this assembly.

Definition at line 183 of file vtkAssembly.h.

References Parts.

void vtkAssembly::GetActors vtkPropCollection   [virtual]
 

For some exporters and other other operations we must be able to collect all the actors or volumes. These methods are used in that process.

Reimplemented from vtkProp.

void vtkAssembly::GetVolumes vtkPropCollection   [virtual]
 

For some exporters and other other operations we must be able to collect all the actors or volumes. These methods are used in that process.

Reimplemented from vtkProp.

int vtkAssembly::RenderOpaqueGeometry vtkViewport   ren [virtual]
 

Render this assembly and all its parts. The rendering process is recursive. Note that a mapper need not be defined. If not defined, then no geometry will be drawn for this assembly. This allows you to create "logical" assemblies; that is, assemblies that only serve to group and transform its parts.

Reimplemented from vtkProp.

int vtkAssembly::RenderTranslucentGeometry vtkViewport   ren [virtual]
 

Render this assembly and all its parts. The rendering process is recursive. Note that a mapper need not be defined. If not defined, then no geometry will be drawn for this assembly. This allows you to create "logical" assemblies; that is, assemblies that only serve to group and transform its parts.

Reimplemented from vtkProp.

void vtkAssembly::ReleaseGraphicsResources vtkWindow   [virtual]
 

Release any graphics resources that are being consumed by this actor. The parameter window could be used to determine which graphic resources to release.

Reimplemented from vtkProp.

void vtkAssembly::InitPathTraversal   [virtual]
 

Methods to traverse the parts of an assembly. Each part (starting from the root) will appear properly transformed and with the correct properties (depending upon the ApplyProperty and ApplyTransform ivars). Note that the part appears as an instance of vtkProp. These methods should be contrasted to those that traverse the list of parts using GetParts(). GetParts() returns a list of children of this assembly, not necessarily with the correct transformation or properties. To use the methods below - first invoke InitPathTraversal() followed by repeated calls to GetNextPath(). GetNextPath() returns a NULL pointer when the list is exhausted.

Reimplemented from vtkProp3D.

vtkAssemblyPath* vtkAssembly::GetNextPath   [virtual]
 

Methods to traverse the parts of an assembly. Each part (starting from the root) will appear properly transformed and with the correct properties (depending upon the ApplyProperty and ApplyTransform ivars). Note that the part appears as an instance of vtkProp. These methods should be contrasted to those that traverse the list of parts using GetParts(). GetParts() returns a list of children of this assembly, not necessarily with the correct transformation or properties. To use the methods below - first invoke InitPathTraversal() followed by repeated calls to GetNextPath(). GetNextPath() returns a NULL pointer when the list is exhausted.

Reimplemented from vtkProp.

int vtkAssembly::GetNumberOfPaths   [virtual]
 

Methods to traverse the parts of an assembly. Each part (starting from the root) will appear properly transformed and with the correct properties (depending upon the ApplyProperty and ApplyTransform ivars). Note that the part appears as an instance of vtkProp. These methods should be contrasted to those that traverse the list of parts using GetParts(). GetParts() returns a list of children of this assembly, not necessarily with the correct transformation or properties. To use the methods below - first invoke InitPathTraversal() followed by repeated calls to GetNextPath(). GetNextPath() returns a NULL pointer when the list is exhausted.

Reimplemented from vtkProp.

void vtkAssembly::GetBounds float    bounds[6] [inline]
 

Get the bounds for the assembly as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).

Reimplemented from vtkProp3D.

Definition at line 146 of file vtkAssembly.h.

References vtkProp3D::GetBounds().

float* vtkAssembly::GetBounds   [virtual]
 

Get the bounds for the assembly as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).

Implements vtkProp3D.

unsigned long int vtkAssembly::GetMTime   [virtual]
 

Override default GetMTime method to also consider all of the assembly's parts.

Reimplemented from vtkProp3D.

void vtkAssembly::ShallowCopy vtkProp   prop [virtual]
 

Shallow copy of an assembly. Overloads the virtual vtkProp method.

Reimplemented from vtkProp3D.

void vtkAssembly::BuildPaths vtkAssemblyPaths   paths,
vtkAssemblyPath   path
[virtual]
 

WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERING PROCESS Overload the superclass' vtkProp BuildPaths() method. Paths consist of an ordered sequence of actors, with transformations properly concatenated.

Reimplemented from vtkProp.

virtual void vtkAssembly::UpdatePaths   [protected, virtual]
 


Member Data Documentation

vtkProp3DCollection* vtkAssembly::Parts [protected]
 

Definition at line 170 of file vtkAssembly.h.

Referenced by GetParts().

vtkTimeStamp vtkAssembly::PathTime [protected]
 

Definition at line 174 of file vtkAssembly.h.


The documentation for this class was generated from the following file: