You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
6.7 KiB
180 lines
6.7 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkActor.h,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkActor - represents an object (geometry & properties) in a rendered scene
|
|
// .SECTION Description
|
|
//
|
|
// vtkActor is used to represent an entity in a rendering scene. It inherits
|
|
// functions related to the actors position, and orientation from
|
|
// vtkProp. The actor also has scaling and maintains a reference to the
|
|
// defining geometry (i.e., the mapper), rendering properties, and possibly a
|
|
// texture map. vtkActor combines these instance variables into one 4x4
|
|
// transformation matrix as follows: [x y z 1] = [x y z 1] Translate(-origin)
|
|
// Scale(scale) Rot(y) Rot(x) Rot (z) Trans(origin) Trans(position)
|
|
|
|
// .SECTION See Also
|
|
// vtkProperty vtkTexture vtkMapper vtkAssembly vtkFollower vtkLODActor
|
|
|
|
#ifndef __vtkActor_h
|
|
#define __vtkActor_h
|
|
|
|
#include "vtkProp3D.h"
|
|
|
|
class vtkRenderer;
|
|
class vtkPropCollection;
|
|
class vtkActorCollection;
|
|
class vtkTexture;
|
|
class vtkMapper;
|
|
class vtkProperty;
|
|
|
|
class VTK_RENDERING_EXPORT vtkActor : public vtkProp3D
|
|
{
|
|
public:
|
|
vtkTypeRevisionMacro(vtkActor,vtkProp3D);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Creates an actor with the following defaults: origin(0,0,0)
|
|
// position=(0,0,0) scale=(1,1,1) visibility=1 pickable=1 dragable=1
|
|
// orientation=(0,0,0). No user defined matrix and no texture map.
|
|
static vtkActor *New();
|
|
|
|
// Description:
|
|
// 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.
|
|
virtual void GetActors(vtkPropCollection *);
|
|
|
|
// Description:
|
|
// Support the standard render methods.
|
|
virtual int RenderOpaqueGeometry(vtkViewport *viewport);
|
|
virtual int RenderTranslucentGeometry(vtkViewport *viewport);
|
|
|
|
// Description:
|
|
// This causes the actor to be rendered. It in turn will render the actor's
|
|
// property, texture map and then mapper. If a property hasn't been
|
|
// assigned, then the actor will create one automatically. Note that a side
|
|
// effect of this method is that the pipeline will be updated.
|
|
virtual void Render(vtkRenderer *, vtkMapper *) {};
|
|
|
|
// Description:
|
|
// Shallow copy of an actor. Overloads the virtual vtkProp method.
|
|
void ShallowCopy(vtkProp *prop);
|
|
|
|
// Description:
|
|
// Release any graphics resources that are being consumed by this actor.
|
|
// The parameter window could be used to determine which graphic
|
|
// resources to release.
|
|
void ReleaseGraphicsResources(vtkWindow *);
|
|
|
|
// Description:
|
|
// Set/Get the property object that controls this actors surface
|
|
// properties. This should be an instance of a vtkProperty object. Every
|
|
// actor must have a property associated with it. If one isn't specified,
|
|
// then one will be generated automatically. Multiple actors can share one
|
|
// property object.
|
|
void SetProperty(vtkProperty *lut);
|
|
vtkProperty *GetProperty();
|
|
|
|
// Description:
|
|
// Create a new property sutible for use with this type of Actor.
|
|
// For example, a vtkMesaActor should create a vtkMesaProperty
|
|
// in this function. The default is to just call vtkProperty::New.
|
|
virtual vtkProperty* MakeProperty();
|
|
|
|
// Description:
|
|
// Set/Get the property object that controls this actors backface surface
|
|
// properties. This should be an instance of a vtkProperty object. If one
|
|
// isn't specified, then the front face properties will be used. Multiple
|
|
// actors can share one property object.
|
|
void SetBackfaceProperty(vtkProperty *lut);
|
|
vtkProperty *GetBackfaceProperty();
|
|
|
|
// Description:
|
|
// Set/Get the texture object to control rendering texture maps. This will
|
|
// be a vtkTexture object. An actor does not need to have an associated
|
|
// texture map and multiple actors can share one texture.
|
|
virtual void SetTexture(vtkTexture*);
|
|
vtkGetObjectMacro(Texture,vtkTexture);
|
|
|
|
// Description:
|
|
// This is the method that is used to connect an actor to the end of a
|
|
// visualization pipeline, i.e. the mapper. This should be a subclass
|
|
// of vtkMapper. Typically vtkPolyDataMapper and vtkDataSetMapper will
|
|
// be used.
|
|
virtual void SetMapper(vtkMapper *);
|
|
|
|
// Description:
|
|
// Returns the Mapper that this actor is getting its data from.
|
|
vtkGetObjectMacro(Mapper,vtkMapper);
|
|
|
|
// Description:
|
|
// Get the bounds for this Actor as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax). (The
|
|
// method GetBounds(double bounds[6]) is available from the superclass.)
|
|
void GetBounds(double bounds[6]) {this->vtkProp3D::GetBounds( bounds );};
|
|
double *GetBounds();
|
|
|
|
// Description:
|
|
// Apply the current properties to all parts that compose this actor.
|
|
// This method is overloaded in vtkAssembly to apply the assemblies'
|
|
// properties to all its parts in a recursive manner. Typically the
|
|
// use of this method is to set the desired properties in the assembly,
|
|
// and then push the properties down to the assemblies parts with
|
|
// ApplyProperties().
|
|
virtual void ApplyProperties() {return;};
|
|
|
|
// Description:
|
|
// Get the actors mtime plus consider its properties and texture if set.
|
|
unsigned long int GetMTime();
|
|
|
|
// Description:
|
|
// Return the mtime of anything that would cause the rendered image to
|
|
// appear differently. Usually this involves checking the mtime of the
|
|
// prop plus anything else it depends on such as properties, textures
|
|
// etc.
|
|
virtual unsigned long GetRedrawMTime();
|
|
|
|
// Description:
|
|
// The following methods are for compatibility. The methods will be deprecated
|
|
// in the near future. Use vtkProp::GetNextPath() (and related functionality)
|
|
// to get the parts in an assembly (or more correctly, the paths in the
|
|
// assembly).
|
|
virtual void InitPartTraversal();
|
|
virtual vtkActor *GetNextPart();
|
|
virtual int GetNumberOfParts();
|
|
|
|
protected:
|
|
vtkActor();
|
|
~vtkActor();
|
|
|
|
vtkProperty *Property;
|
|
vtkProperty *BackfaceProperty;
|
|
vtkTexture *Texture;
|
|
vtkMapper *Mapper;
|
|
|
|
// is this actor opaque
|
|
int GetIsOpaque();
|
|
|
|
// Bounds are cached in an actor - the MapperBounds are also cache to
|
|
// help know when the Bounds need to be recomputed.
|
|
double MapperBounds[6];
|
|
vtkTimeStamp BoundsMTime;
|
|
|
|
private:
|
|
vtkActor(const vtkActor&); // Not implemented.
|
|
void operator=(const vtkActor&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|