Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.
 
 
 
 
 
 

143 lines
5.0 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkLODActor.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 vtkLODActor - an actor that supports multiple levels of detail
// .SECTION Description
// vtkLODActor is an actor that stores multiple levels of detail (LOD) and
// can automatically switch between them. It selects which level of detail to
// use based on how much time it has been allocated to render. Currently a
// very simple method of TotalTime/NumberOfActors is used. (In the future
// this should be modified to dynamically allocate the rendering time between
// different actors based on their needs.)
//
// There are three levels of detail by default. The top level is just the
// normal data. The lowest level of detail is a simple bounding box outline
// of the actor. The middle level of detail is a point cloud of a fixed
// number of points that have been randomly sampled from the mapper's input
// data. Point attributes are copied over to the point cloud. These two
// lower levels of detail are accomplished by creating instances of a
// vtkOutlineFilter (low-res) and vtkMaskPoints (medium-res). Additional
// levels of detail can be add using the AddLODMapper() method.
//
// To control the frame rate, you typically set the vtkRenderWindowInteractor
// DesiredUpdateRate and StillUpdateRate. This then will cause vtkLODActor
// to adjust its LOD to fulfill the requested update rate.
//
// For greater control on levels of detail, see also vtkLODProp3D. That
// class allows arbitrary definition of each LOD.
// .SECTION Caveats
// If you provide your own mappers, you are responsible for setting its
// ivars correctly, such as ScalarRange, LookupTable, and so on.
//
// On some systems the point cloud rendering (the default, medium level of
// detail) can result in points so small that they can hardly be seen. In
// this case, use the GetProperty()->SetPointSize() method to increase the
// rendered size of the points.
// .SECTION see also
// vtkActor vtkRenderer vtkLODProp3D
#ifndef __vtkLODActor_h
#define __vtkLODActor_h
#include "vtkActor.h"
class vtkMapper;
class vtkMapperCollection;
class vtkMaskPoints;
class vtkOutlineFilter;
class vtkPolyDataMapper;
class vtkRenderer;
class vtkViewport;
class vtkWindow;
class VTK_RENDERING_EXPORT vtkLODActor : public vtkActor
{
public:
vtkTypeRevisionMacro(vtkLODActor,vtkActor);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Creates a vtkLODActor 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). NumberOfCloudPoints is set to 150.
static vtkLODActor *New();
// Description:
// This causes the actor to be rendered. It, in turn, will render the actor's
// property and then mapper.
virtual void Render(vtkRenderer *, vtkMapper *);
// Description:
// This method is used internally by the rendering process. We overide
// the superclass method to properly set the estimated render time.
int RenderOpaqueGeometry(vtkViewport *viewport);
// 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:
// Add another level of detail. They do not have to be in any order
// of complexity.
void AddLODMapper(vtkMapper *mapper);
// Description:
// Set/Get the number of random points for the point cloud.
vtkGetMacro(NumberOfCloudPoints,int);
vtkSetMacro(NumberOfCloudPoints,int);
// Description:
// All the mappers for different LODs are stored here.
// The order is not important.
vtkGetObjectMacro(LODMappers, vtkMapperCollection);
// Description:
// When this objects gets modified, this method also modifies the object.
void Modified();
// Description:
// Shallow copy of an LOD actor. Overloads the virtual vtkProp method.
void ShallowCopy(vtkProp *prop);
protected:
vtkLODActor();
~vtkLODActor();
vtkActor *Device;
vtkMapperCollection *LODMappers;
// stuff for creating our own LOD mappers
vtkMaskPoints *MaskPoints;
vtkOutlineFilter *OutlineFilter;
vtkTimeStamp BuildTime;
int NumberOfCloudPoints;
vtkPolyDataMapper *LowMapper;
vtkPolyDataMapper *MediumMapper;
virtual void CreateOwnLODs();
virtual void UpdateOwnLODs();
virtual void DeleteOwnLODs();
private:
vtkLODActor(const vtkLODActor&); // Not implemented.
void operator=(const vtkLODActor&); // Not implemented.
};
#endif