ActiViz .NET  5.8.0
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Private Member Functions
Kitware.VTK.vtkModifiedBSPTree Class Reference

vtkModifiedBSPTree - Generate axis aligned BBox tree for raycasting and other Locator based searches More...

Inheritance diagram for Kitware.VTK.vtkModifiedBSPTree:
[legend]
Collaboration diagram for Kitware.VTK.vtkModifiedBSPTree:
[legend]

List of all members.

Public Member Functions

 vtkModifiedBSPTree (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
 vtkModifiedBSPTree ()
 Construct with maximum 32 cells per node. (average 16->31)
override void BuildLocator ()
 Build Tree.
override int FindCell (IntPtr x)
 Build Tree.
override int FindCell (IntPtr x, double tol2, vtkGenericCell GenCell, IntPtr pcoords, IntPtr weights)
 Build Tree.
override void FreeSearchStructure ()
 Free tree memory.
override void GenerateRepresentation (int level, vtkPolyData pd)
 Build Tree.
virtual void GenerateRepresentationLeafs (vtkPolyData pd)
 Build Tree.
vtkIdListCollection GetLeafNodeCellInformation ()
 Build Tree.
override bool InsideCellBounds (IntPtr x, int cell_ID)
 Build Tree.
override int IntersectWithLine (IntPtr p1, IntPtr p2, double tol, ref double t, IntPtr x, IntPtr pcoords, ref int subId)
 Build Tree.
override int IntersectWithLine (IntPtr p1, IntPtr p2, double tol, ref double t, IntPtr x, IntPtr pcoords, ref int subId, ref int cellId)
 Build Tree.
override int IntersectWithLine (IntPtr p1, IntPtr p2, double tol, ref double t, IntPtr x, IntPtr pcoords, ref int subId, ref int cellId, vtkGenericCell cell)
 Build Tree.
override int IntersectWithLine (IntPtr p1, IntPtr p2, vtkPoints points, vtkIdList cellIds)
 Build Tree.
virtual int IntersectWithLine (IntPtr p1, IntPtr p2, double tol, vtkPoints points, vtkIdList cellIds)
 Build Tree.
override int IsA (string type)
 Standard Type-Macro.
new vtkModifiedBSPTree NewInstance ()
 Standard Type-Macro.
- Public Member Functions inherited from Kitware.VTK.vtkAbstractCellLocator
 vtkAbstractCellLocator (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
virtual void CacheCellBoundsOff ()
 Boolean controls whether the bounds of each cell are computed only once and then saved. Should be 10 to 20% faster if repeatedly calling any of the Intersect/Find routines and the extra memory won't cause disk caching (24 extra bytes per cell are required to save the bounds).
virtual void CacheCellBoundsOn ()
 Boolean controls whether the bounds of each cell are computed only once and then saved. Should be 10 to 20% faster if repeatedly calling any of the Intersect/Find routines and the extra memory won't cause disk caching (24 extra bytes per cell are required to save the bounds).
virtual void FindCellsAlongLine (IntPtr p1, IntPtr p2, double tolerance, vtkIdList cells)
 Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buckets containing the line. It is possible that an empty cell list is returned. The user must provide the vtkIdList to populate. This method returns data only after the locator has been built.
virtual void FindCellsWithinBounds (IntPtr bbox, vtkIdList cells)
 Return a list of unique cell ids inside of a given bounding box. The user must provide the vtkIdList to populate. This method returns data only after the locator has been built.
virtual void FindClosestPoint (IntPtr x, IntPtr closestPoint, ref int cellId, ref int subId, ref double dist2)
 Return the closest point and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell.
virtual void FindClosestPoint (IntPtr x, IntPtr closestPoint, vtkGenericCell cell, ref int cellId, ref int subId, ref double dist2)
 Return the closest point and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This version takes in a vtkGenericCell to avoid allocating and deallocating the cell. This is much faster than the version which does not take a *cell, especially when this function is called many times in a row such as by a for loop, where the allocation and deallocation can be done only once outside the for loop. If a cell is found, "cell" contains the points and ptIds for the cell "cellId" upon exit.
virtual int FindClosestPointWithinRadius (IntPtr x, double radius, IntPtr closestPoint, ref int cellId, ref int subId, ref double dist2)
 Return the closest point within a specified radius and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This method returns 1 if a point is found within the specified radius. If there are no cells within the specified radius, the method returns 0 and the values of closestPoint, cellId, subId, and dist2 are undefined.
virtual int FindClosestPointWithinRadius (IntPtr x, double radius, IntPtr closestPoint, vtkGenericCell cell, ref int cellId, ref int subId, ref double dist2)
 Return the closest point within a specified radius and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This method returns 1 if a point is found within the specified radius. If there are no cells within the specified radius, the method returns 0 and the values of closestPoint, cellId, subId, and dist2 are undefined. This version takes in a vtkGenericCell to avoid allocating and deallocating the cell. This is much faster than the version which does not take a *cell, especially when this function is called many times in a row such as by a for loop, where the allocation and deallocation can be done only once outside the for loop. If a closest point is found, "cell" contains the points and ptIds for the cell "cellId" upon exit.
virtual int FindClosestPointWithinRadius (IntPtr x, double radius, IntPtr closestPoint, vtkGenericCell cell, ref int cellId, ref int subId, ref double dist2, ref int inside)
 Return the closest point within a specified radius and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This method returns 1 if a point is found within the specified radius. If there are no cells within the specified radius, the method returns 0 and the values of closestPoint, cellId, subId, and dist2 are undefined. This version takes in a vtkGenericCell to avoid allocating and deallocating the cell. This is much faster than the version which does not take a *cell, especially when this function is called many times in a row such as by a for loop, where the allocation and dealloction can be done only once outside the for loop. If a closest point is found, "cell" contains the points and ptIds for the cell "cellId" upon exit. If a closest point is found, inside returns the return value of the EvaluatePosition call to the closest cell; inside(=1) or outside(=0).
virtual int GetCacheCellBounds ()
 Boolean controls whether the bounds of each cell are computed only once and then saved. Should be 10 to 20% faster if repeatedly calling any of the Intersect/Find routines and the extra memory won't cause disk caching (24 extra bytes per cell are required to save the bounds).
virtual int GetLazyEvaluation ()
 Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. If LazyEvaluation is supported, this turns on/off the feature. if not supported, it is ignored.
virtual int GetNumberOfCellsPerNode ()
 Specify the preferred/maximum number of cells in each node/bucket. Default 32. Locators generally operate by subdividing space into smaller regions until the number of cells in each region (or node) reaches the desired level.
virtual int GetNumberOfCellsPerNodeMaxValue ()
 Specify the preferred/maximum number of cells in each node/bucket. Default 32. Locators generally operate by subdividing space into smaller regions until the number of cells in each region (or node) reaches the desired level.
virtual int GetNumberOfCellsPerNodeMinValue ()
 Specify the preferred/maximum number of cells in each node/bucket. Default 32. Locators generally operate by subdividing space into smaller regions until the number of cells in each region (or node) reaches the desired level.
virtual int GetRetainCellLists ()
 Boolean controls whether to maintain list of cells in each node. not applicable to all implementations, but if the locator is being used as a geometry simplification technique, there is no need to keep them.
virtual int GetUseExistingSearchStructure ()
 Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase.
virtual void LazyEvaluationOff ()
 Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. If LazyEvaluation is supported, this turns on/off the feature. if not supported, it is ignored.
virtual void LazyEvaluationOn ()
 Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. If LazyEvaluation is supported, this turns on/off the feature. if not supported, it is ignored.
virtual void RetainCellListsOff ()
 Boolean controls whether to maintain list of cells in each node. not applicable to all implementations, but if the locator is being used as a geometry simplification technique, there is no need to keep them.
virtual void RetainCellListsOn ()
 Boolean controls whether to maintain list of cells in each node. not applicable to all implementations, but if the locator is being used as a geometry simplification technique, there is no need to keep them.
virtual void SetCacheCellBounds (int _arg)
 Boolean controls whether the bounds of each cell are computed only once and then saved. Should be 10 to 20% faster if repeatedly calling any of the Intersect/Find routines and the extra memory won't cause disk caching (24 extra bytes per cell are required to save the bounds).
virtual void SetLazyEvaluation (int _arg)
 Most Locators build their search structures during BuildLocator but some may delay construction until it is actually needed. If LazyEvaluation is supported, this turns on/off the feature. if not supported, it is ignored.
virtual void SetNumberOfCellsPerNode (int _arg)
 Specify the preferred/maximum number of cells in each node/bucket. Default 32. Locators generally operate by subdividing space into smaller regions until the number of cells in each region (or node) reaches the desired level.
virtual void SetRetainCellLists (int _arg)
 Boolean controls whether to maintain list of cells in each node. not applicable to all implementations, but if the locator is being used as a geometry simplification technique, there is no need to keep them.
virtual void SetUseExistingSearchStructure (int _arg)
 Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase.
virtual void UseExistingSearchStructureOff ()
 Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase.
virtual void UseExistingSearchStructureOn ()
 Some locators support querying a new dataset without rebuilding the search structure (typically this may occur when a dataset changes due to a time update, but is actually the same topology) Turning on this flag enables some locators to skip the rebuilding phase.
- Public Member Functions inherited from Kitware.VTK.vtkLocator
 vtkLocator (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
override void Register (vtkObjectBase o)
 Handle the PointSet <-> Locator loop.
virtual void AutomaticOff ()
 Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. If not set, there will be an explicit method to control the construction of the locator (found in the subclass).
virtual void AutomaticOn ()
 Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. If not set, there will be an explicit method to control the construction of the locator (found in the subclass).
virtual int GetAutomatic ()
 Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. If not set, there will be an explicit method to control the construction of the locator (found in the subclass).
virtual uint GetBuildTime ()
 Return the time of the last data structure build.
virtual vtkDataSet GetDataSet ()
 Build the locator from the points/cells defining this dataset.
virtual int GetLevel ()
 Get the level of the locator (determined automatically if Automatic is true). The value of this ivar may change each time the locator is built. Initial value is 8.
virtual int GetMaxLevel ()
 Set the maximum allowable level for the tree. If the Automatic ivar is off, this will be the target depth of the locator. Initial value is 8.
virtual int GetMaxLevelMaxValue ()
 Set the maximum allowable level for the tree. If the Automatic ivar is off, this will be the target depth of the locator. Initial value is 8.
virtual int GetMaxLevelMinValue ()
 Set the maximum allowable level for the tree. If the Automatic ivar is off, this will be the target depth of the locator. Initial value is 8.
virtual double GetTolerance ()
 Specify absolute tolerance (in world coordinates) for performing geometric operations.
virtual double GetToleranceMaxValue ()
 Specify absolute tolerance (in world coordinates) for performing geometric operations.
virtual double GetToleranceMinValue ()
 Specify absolute tolerance (in world coordinates) for performing geometric operations.
virtual void Initialize ()
 Initialize locator. Frees memory and resets object as appropriate.
virtual void SetAutomatic (int _arg)
 Boolean controls whether locator depth/resolution of locator is computed automatically from average number of entities in bucket. If not set, there will be an explicit method to control the construction of the locator (found in the subclass).
virtual void SetDataSet (vtkDataSet arg0)
 Build the locator from the points/cells defining this dataset.
virtual void SetMaxLevel (int _arg)
 Set the maximum allowable level for the tree. If the Automatic ivar is off, this will be the target depth of the locator. Initial value is 8.
virtual void SetTolerance (double _arg)
 Specify absolute tolerance (in world coordinates) for performing geometric operations.
virtual void Update ()
 Cause the locator to rebuild itself if it or its input dataset has changed.
- Public Member Functions inherited from Kitware.VTK.vtkObject
 vtkObject (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
 vtkObject ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
uint AddObserver (uint arg0, vtkCommand arg1, float priority)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
uint AddObserver (string arg0, vtkCommand arg1, float priority)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
virtual void DebugOff ()
 Turn debugging output off.
virtual void DebugOn ()
 Turn debugging output on.
vtkCommand GetCommand (uint tag)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
byte GetDebug ()
 Get the value of the debug flag.
virtual uint GetMTime ()
 Return this object's modified time.
int HasObserver (uint arg0, vtkCommand arg1)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int HasObserver (string arg0, vtkCommand arg1)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int HasObserver (uint arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int HasObserver (string arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int InvokeEvent (uint arg0, IntPtr callData)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int InvokeEvent (string arg0, IntPtr callData)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int InvokeEvent (uint arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
int InvokeEvent (string arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
virtual void Modified ()
 Update the modification time for this object. Many filters rely on the modification time to determine if they need to recompute their data. The modification time is a unique monotonically increasing unsigned long integer.
void RemoveAllObservers ()
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObserver (vtkCommand arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObserver (uint tag)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObservers (uint arg0, vtkCommand arg1)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObservers (string arg0, vtkCommand arg1)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObservers (uint arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void RemoveObservers (string arg0)
 This is a global flag that controls whether any debug, warning or error messages are displayed.
void SetDebug (byte debugFlag)
 Set the value of the debug flag. A non-zero value turns debugging on.
override string ToString ()
 Returns the result of calling vtkObject::Print as a C# string.
delegate void vtkObjectEventHandler (vtkObject sender, vtkObjectEventArgs e)
 Generic signature for all vtkObject events.
void RemoveAllHandlersForAllEvents ()
 Call RemoveAllHandlers on each non-null vtkObjectEventRelay. TODO: This method needs to get called by the generated Dispose. Make that happen...
- Public Member Functions inherited from Kitware.VTK.vtkObjectBase
 vtkObjectBase (IntPtr rawCppThis, bool callDisposalMethod, bool strong)
 Automatically generated constructor - called from generated code. DO NOT call directly.
 vtkObjectBase ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
virtual void FastDelete ()
 Delete a reference to this object. This version will not invoke garbage collection and can potentially leak the object if it is part of a reference loop. Use this method only when it is known that the object has another reference and would not be collected if a full garbage collection check were done.
string GetClassName ()
 Return the class name as a string. This method is defined in all subclasses of vtkObjectBase with the vtkTypeMacro found in vtkSetGet.h.
int GetReferenceCount ()
 Return the current reference count of this object.
void SetReferenceCount (int arg0)
 Sets the reference count. (This is very dangerous, use with care.)

Static Public Member Functions

static new vtkModifiedBSPTree New ()
 Construct with maximum 32 cells per node. (average 16->31)
static new int IsTypeOf (string type)
 Standard Type-Macro.
static new vtkModifiedBSPTree SafeDownCast (vtkObjectBase o)
 Standard Type-Macro.

Public Attributes

new const string MRFullTypeName = "Kitware.VTK.vtkModifiedBSPTree"
 Automatically generated type registration mechanics.
- Public Attributes inherited from Kitware.VTK.vtkAbstractCellLocator
- Public Attributes inherited from Kitware.VTK.vtkLocator
- Public Attributes inherited from Kitware.VTK.vtkObject
- Public Attributes inherited from Kitware.VTK.vtkObjectBase
- Public Attributes inherited from Kitware.VTK.WrappedObject
const string vtkChartsEL_dll = "libKitware.VTK.vtkCharts.Unmanaged.so"
 Export layer functions for 'vtkCharts' are exported from the DLL named by the value of this variable.
const string vtkCommonEL_dll = "libKitware.VTK.vtkCommon.Unmanaged.so"
 Export layer functions for 'vtkCommon' are exported from the DLL named by the value of this variable.
const string vtkFilteringEL_dll = "libKitware.VTK.vtkFiltering.Unmanaged.so"
 Export layer functions for 'vtkFiltering' are exported from the DLL named by the value of this variable.
const string vtkGenericFilteringEL_dll = "libKitware.VTK.vtkGenericFiltering.Unmanaged.so"
 Export layer functions for 'vtkGenericFiltering' are exported from the DLL named by the value of this variable.
const string vtkGeovisEL_dll = "libKitware.VTK.vtkGeovis.Unmanaged.so"
 Export layer functions for 'vtkGeovis' are exported from the DLL named by the value of this variable.
const string vtkGraphicsEL_dll = "libKitware.VTK.vtkGraphics.Unmanaged.so"
 Export layer functions for 'vtkGraphics' are exported from the DLL named by the value of this variable.
const string vtkHybridEL_dll = "libKitware.VTK.vtkHybrid.Unmanaged.so"
 Export layer functions for 'vtkHybrid' are exported from the DLL named by the value of this variable.
const string vtkIOEL_dll = "libKitware.VTK.vtkIO.Unmanaged.so"
 Export layer functions for 'vtkIO' are exported from the DLL named by the value of this variable.
const string vtkImagingEL_dll = "libKitware.VTK.vtkImaging.Unmanaged.so"
 Export layer functions for 'vtkImaging' are exported from the DLL named by the value of this variable.
const string vtkInfovisEL_dll = "libKitware.VTK.vtkInfovis.Unmanaged.so"
 Export layer functions for 'vtkInfovis' are exported from the DLL named by the value of this variable.
const string vtkParallelEL_dll = "libKitware.VTK.vtkParallel.Unmanaged.so"
 Export layer functions for 'vtkParallel' are exported from the DLL named by the value of this variable.
const string vtkRenderingEL_dll = "libKitware.VTK.vtkRendering.Unmanaged.so"
 Export layer functions for 'vtkRendering' are exported from the DLL named by the value of this variable.
const string vtkViewsEL_dll = "libKitware.VTK.vtkViews.Unmanaged.so"
 Export layer functions for 'vtkViews' are exported from the DLL named by the value of this variable.
const string vtkVolumeRenderingEL_dll = "libKitware.VTK.vtkVolumeRendering.Unmanaged.so"
 Export layer functions for 'vtkVolumeRendering' are exported from the DLL named by the value of this variable.
const string vtkWidgetsEL_dll = "libKitware.VTK.vtkWidgets.Unmanaged.so"
 Export layer functions for 'vtkWidgets' are exported from the DLL named by the value of this variable.

Static Public Attributes

static new readonly string MRClassNameKey = "18vtkModifiedBSPTree"
 Automatically generated type registration mechanics.
- Static Public Attributes inherited from Kitware.VTK.vtkAbstractCellLocator
- Static Public Attributes inherited from Kitware.VTK.vtkLocator
- Static Public Attributes inherited from Kitware.VTK.vtkObject
- Static Public Attributes inherited from Kitware.VTK.vtkObjectBase

Protected Member Functions

override void Dispose (bool disposing)
 Automatically generated protected Dispose method - called from public Dispose or the C# destructor. DO NOT call directly.

Static Private Member Functions

static vtkModifiedBSPTree ()
 Automatically generated type registration mechanics.

Detailed Description

vtkModifiedBSPTree - Generate axis aligned BBox tree for raycasting and other Locator based searches

Description vtkModifiedBSPTree creates an evenly balanced BSP tree using a top down implementation. Axis aligned split planes are found which evenly divide cells into two buckets. Generally a split plane will intersect some cells and these are usually stored in both child nodes of the current parent. (Or split into separate cells which we cannot consider in this case). Storing cells in multiple buckets creates problems associated with multiple tests against rays and increases the required storage as complex meshes will have many cells straddling a split plane (and further splits may cause multiple copies of these).

During a discussion with Arno Formella in 1998 he suggested using a third child node to store objects which straddle split planes. I've not seen this published (Yes! - see below), but thought it worth trying. This implementation of the BSP tree creates a third child node for storing cells lying across split planes, the third cell may overlap the other two, but the two 'proper' nodes otherwise conform to usual BSP rules.

The advantage of this implementation is cells only ever lie in one node and mailbox testing is avoided. All BBoxes are axis aligned and a ray cast uses an efficient search strategy based on near/far nodes and rejects all BBoxes using simple tests.

For fast raytracing, 6 copies of cell lists are stored in each leaf node each list is in axis sorted order +/- x,y,z and cells are always tested in the direction of the ray dominant axis. Once an intersection is found any cell or BBox with a closest point further than the I-point can be instantly rejected and raytracing stops as soon as no nodes can be closer than the current best intersection point.

The addition of the 'middle' node upsets the optimal balance of the tree, but is a minor overhead during the raytrace. Each child node is contracted such that it tightly fits all cells inside it, enabling further ray/box rejections.

This class is intented for persons requiring many ray tests and is optimized for this purpose. As no cell ever lies in more than one leaf node, and parent nodes do not maintain cell lists, the memory overhead of the sorted cell lists is 6*num_cells*4 for 6 lists of ints, each num_cells in length. The memory requirement of the nodes themselves is usually of minor significance.

Subdividision is controlled by MaxCellsPerNode - any node with more than this number will be subdivided providing a good split plane can be found and the max depth is not exceeded.

The average cells per leaf will usually be around half the MaxCellsPerNode, though the middle node is usually sparsely populated and lowers the average slightly. The middle node will not be created when not needed. Subdividing down to very small cells per node is not generally suggested as then the 6 stored cell lists are effectively redundant.

Values of MaxcellsPerNode of around 16->128 depending on dataset size will usually give good results.

Cells are only sorted into 6 lists once - before tree creation, each node segments the lists and passes them down to the new child nodes whilst maintaining sorted order. This makes for an efficient subdivision strategy.

NB. The following reference has been sent to me {formella-1995-ray, author = "Arno Formella and Christian Gill", title = "{Ray Tracing: A Quantitative Analysis and a New Practical Algorithm}", journal = "{The Visual Computer}", year = "{1995}", month = dec, pages = "{465–476}", volume = "{11}", number = "{9}", publisher = "{Springer}", keywords = "{ray tracing, space subdivision, plane traversal, octree, clustering, benchmark scenes}", annote = "{We present a new method to accelerate the process of finding nearest ray–object intersections in ray tracing. The algorithm consumes an amount of memory more or less linear in the number of objects. The basic ideas can be characterized with a modified BSP–tree and plane traversal. Plane traversal is a fast linear time algorithm to find the closest intersection point in a list of bounding volumes hit by a ray. We use plane traversal at every node of the high outdegree BSP–tree. Our implementation is competitive to fast ray tracing programs. We present a benchmark suite which allows for an extensive comparison of ray tracing algorithms.}", }

Thanks John Biddiscombe for developing and contributing this class

ToDo

Implement intersection heap for testing rays against transparent objects

Style

This class is currently maintained by J. Biddiscombe who has specially requested that the code style not be modified to the kitware standard. Please respect the contribution of this class by keeping the style as close as possible to the author's original.


Constructor & Destructor Documentation

static Kitware.VTK.vtkModifiedBSPTree.vtkModifiedBSPTree ( )
staticprivate

Automatically generated type registration mechanics.

Kitware.VTK.vtkModifiedBSPTree.vtkModifiedBSPTree ( IntPtr  rawCppThis,
bool  callDisposalMethod,
bool  strong 
)

Automatically generated constructor - called from generated code. DO NOT call directly.

Kitware.VTK.vtkModifiedBSPTree.vtkModifiedBSPTree ( )

Construct with maximum 32 cells per node. (average 16->31)


Member Function Documentation

override void Kitware.VTK.vtkModifiedBSPTree.BuildLocator ( )
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkLocator.

override void Kitware.VTK.vtkModifiedBSPTree.Dispose ( bool  disposing)
protected

Automatically generated protected Dispose method - called from public Dispose or the C# destructor. DO NOT call directly.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.FindCell ( IntPtr  x)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.FindCell ( IntPtr  x,
double  tol2,
vtkGenericCell  GenCell,
IntPtr  pcoords,
IntPtr  weights 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override void Kitware.VTK.vtkModifiedBSPTree.FreeSearchStructure ( )
virtual

Free tree memory.

Reimplemented from Kitware.VTK.vtkLocator.

override void Kitware.VTK.vtkModifiedBSPTree.GenerateRepresentation ( int  level,
vtkPolyData  pd 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkLocator.

virtual void Kitware.VTK.vtkModifiedBSPTree.GenerateRepresentationLeafs ( vtkPolyData  pd)
virtual

Build Tree.

vtkIdListCollection Kitware.VTK.vtkModifiedBSPTree.GetLeafNodeCellInformation ( )

Build Tree.

Here is the call graph for this function:

override bool Kitware.VTK.vtkModifiedBSPTree.InsideCellBounds ( IntPtr  x,
int  cell_ID 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.IntersectWithLine ( IntPtr  p1,
IntPtr  p2,
double  tol,
ref double  t,
IntPtr  x,
IntPtr  pcoords,
ref int  subId 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.IntersectWithLine ( IntPtr  p1,
IntPtr  p2,
double  tol,
ref double  t,
IntPtr  x,
IntPtr  pcoords,
ref int  subId,
ref int  cellId 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.IntersectWithLine ( IntPtr  p1,
IntPtr  p2,
double  tol,
ref double  t,
IntPtr  x,
IntPtr  pcoords,
ref int  subId,
ref int  cellId,
vtkGenericCell  cell 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

override int Kitware.VTK.vtkModifiedBSPTree.IntersectWithLine ( IntPtr  p1,
IntPtr  p2,
vtkPoints  points,
vtkIdList  cellIds 
)
virtual

Build Tree.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

virtual int Kitware.VTK.vtkModifiedBSPTree.IntersectWithLine ( IntPtr  p1,
IntPtr  p2,
double  tol,
vtkPoints  points,
vtkIdList  cellIds 
)
virtual

Build Tree.

override int Kitware.VTK.vtkModifiedBSPTree.IsA ( string  type)
virtual

Standard Type-Macro.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

static new int Kitware.VTK.vtkModifiedBSPTree.IsTypeOf ( string  type)
static

Standard Type-Macro.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

static new vtkModifiedBSPTree Kitware.VTK.vtkModifiedBSPTree.New ( )
static

Construct with maximum 32 cells per node. (average 16->31)

Reimplemented from Kitware.VTK.vtkObject.

new vtkModifiedBSPTree Kitware.VTK.vtkModifiedBSPTree.NewInstance ( )

Standard Type-Macro.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

static new vtkModifiedBSPTree Kitware.VTK.vtkModifiedBSPTree.SafeDownCast ( vtkObjectBase  o)
static

Standard Type-Macro.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

Here is the call graph for this function:


Member Data Documentation

new readonly string Kitware.VTK.vtkModifiedBSPTree.MRClassNameKey = "18vtkModifiedBSPTree"
static

Automatically generated type registration mechanics.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.

new const string Kitware.VTK.vtkModifiedBSPTree.MRFullTypeName = "Kitware.VTK.vtkModifiedBSPTree"

Automatically generated type registration mechanics.

Reimplemented from Kitware.VTK.vtkAbstractCellLocator.


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