An iterative, octree-based algorithm for distance computation between polyhedra with complex surfaces 1

Similar documents
TOWARDS A 3D SPATIAL QUERY LANGUAGE FOR BUILDING INFORMATION MODELS

Collision Detection. These slides are mainly from Ming Lin s course notes at UNC Chapel Hill

Collision and Proximity Queries

Collision Detection with Bounding Volume Hierarchies

CPSC / Sonny Chan - University of Calgary. Collision Detection II

Lesson 05. Mid Phase. Collision Detection

Overview. Collision Detection. A Simple Collision Detection Algorithm. Collision Detection in a Dynamic Environment. Query Types.

Spatial Data Structures

Spatial Data Structures

Homework 1: Implicit Surfaces, Collision Detection, & Volumetric Data Structures. Loop Subdivision. Loop Subdivision. Questions/Comments?

References. Additional lecture notes for 2/18/02.

Ray Tracing Acceleration Data Structures

Collision Detection. Jane Li Assistant Professor Mechanical Engineering & Robotics Engineering

Volumetric Particle Separating Planes for Collision Detection

Acceleration Data Structures

Announcements. Written Assignment2 is out, due March 8 Graded Programming Assignment2 next Tuesday

Overview. Collision detection. Collision detection. Brute force collision detection. Brute force collision detection. Motivation

Lecture 17: Solid Modeling.... a cubit on the one side, and a cubit on the other side Exodus 26:13

Spatial Data Structures

Lecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees

Collision Detection. Motivation - Dynamic Simulation ETH Zurich. Motivation - Path Planning ETH Zurich. Motivation - Biomedical Simulation ETH Zurich

CS535 Fall Department of Computer Science Purdue University

Collision Detection II. These slides are mainly from Ming Lin s course notes at UNC Chapel Hill

Collision Detection based on Spatial Partitioning

CAB: Fast Update of OBB Trees for Collision Detection between Articulated Bodies

Spatial Data Structures

Spatial Data Structures and Speed-Up Techniques. Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Spatial Data Structures

CSG obj. oper3. obj1 obj2 obj3. obj5. obj4

Critique for CS 448B: Topics in Modeling The Voronoi-clip Collision Detection Algorithm

Simulation in Computer Graphics Space Subdivision. Matthias Teschner

Accelerating Geometric Queries. Computer Graphics CMU /15-662, Fall 2016

Point Cloud Filtering using Ray Casting by Eric Jensen 2012 The Basic Methodology

Geometric Computations for Simulation

Computational Geometry

Intersection of an Oriented Box and a Cone

Universiteit Leiden Computer Science

Scene Management. Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development

Page 1. Area-Subdivision Algorithms z-buffer Algorithm List Priority Algorithms BSP (Binary Space Partitioning Tree) Scan-line Algorithms

Bounding Volume Hierarchies

Parallel Physically Based Path-tracing and Shading Part 3 of 2. CIS565 Fall 2012 University of Pennsylvania by Yining Karl Li

1. Meshes. D7013E Lecture 14

Planar Point Location

Geometric data structures:

Dynamic Collision Detection

Ray Tracing III. Wen-Chieh (Steve) Lin National Chiao-Tung University

Tracking Minimum Distances between Curved Objects with Parametric Surfaces in Real Time

A Model to Evaluate Ray Tracing Hierarchies

Collision Detection between Dynamic Rigid Objects and Static Displacement Mapped Surfaces in Computer Games

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

Solid Modeling. Ron Goldman Department of Computer Science Rice University

Data Partitioning. Figure 1-31: Communication Topologies. Regular Partitions

γ 2 γ 3 γ 1 R 2 (b) a bounded Yin set (a) an unbounded Yin set

Intersection Acceleration

Distance and Collision Detection

Adaptive Point Cloud Rendering

Solids as point set. Solid models. Solid representation schemes (cont d) Solid representation schemes. Solid representation schemes (cont d)

Efficient Collision Detection Using a Dual Bounding Volume Hierarchy

Using Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects

Collision Detection. Pu Jiantao.

Solid Modelling. Graphics Systems / Computer Graphics and Interfaces COLLEGE OF ENGINEERING UNIVERSITY OF PORTO

improving raytracing speed

Morphological track 1

Spatial Data Structures and Speed-Up Techniques. Ulf Assarsson Department of Computer Science and Engineering Chalmers University of Technology

Real-time Bounding Box Area Computation

G 6i try. On the Number of Minimal 1-Steiner Trees* Discrete Comput Geom 12:29-34 (1994)

26 The closest pair problem

SOME 024: Computer Aided Design. E. Rozos

CS 563 Advanced Topics in Computer Graphics Culling and Acceleration Techniques Part 1 by Mark Vessella

K-structure, Separating Chain, Gap Tree, and Layered DAG

Organizing Spatial Data

Computer Graphics. Bing-Yu Chen National Taiwan University

A Flavor of Topology. Shireen Elhabian and Aly A. Farag University of Louisville January 2010

Selective Space Structures Manual

IFC-based clash detection for the open-source BIMserver

CS 465 Program 4: Modeller

Autonomous and Mobile Robotics Prof. Giuseppe Oriolo. Motion Planning 1 Retraction and Cell Decomposition

Accelerated Raytracing

Preferred directions for resolving the non-uniqueness of Delaunay triangulations

Computer Graphics (CS 543) Lecture 13b Ray Tracing (Part 1) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

Lecture 3: Art Gallery Problems and Polygon Triangulation

1 The range query problem

The Traditional Graphics Pipeline

6. Dicretization methods 6.1 The purpose of discretization

Number/Computation. addend Any number being added. digit Any one of the ten symbols: 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9

9. Three Dimensional Object Representations

A Different Approach for Continuous Physics. Vincent ROBERT Physics Programmer at Ubisoft

Spatial Data Structures for GIS Visualization. Ed Grundy

Load Balancing for Problems with Good Bisectors, and Applications in Finite Element Simulations

In the previous presentation, Erik Sintorn presented methods for practically constructing a DAG structure from a voxel data set.

Comparing Sphere-Tree Generators and Hierarchy Updates for Deformable Objects Collision Detection

A Survey on Collision Detection Techniques for Virtual Environments

Computer Graphics. - Ray-Tracing II - Hendrik Lensch. Computer Graphics WS07/08 Ray Tracing II

Simplified Voronoi diagrams for motion planning of quadratically-solvable Gough-Stewart platforms

1. Introduction to Constructive Solid Geometry (CSG)

Chapter 12 Solid Modeling. Disadvantages of wireframe representations

Mesh Generation. Quadtrees. Geometric Algorithms. Lecture 9: Quadtrees

Quadtrees and Meshing

Computer Graphics 7 - Rasterisation

Course Number: Course Title: Geometry

Transcription:

An iterative, octree-based algorithm for distance computation between polyhedra with complex surfaces 1 André Borrmann, Stefanie Schraufstetter, Christoph van Treeck, Ernst Rank {borrmann, schraufstetter, treeck, rank}@bv.tum.de Computational Civil Engineering, Technische Universität München Arcisstrasse 21, 80290 Munich, Germany Abstract: In a current research project, our group is developing a 3D Spatial Query Language for Building Information Models. Among other features, the spatial language includes metric operators, i.e. operators that depend on the distance between 3D spatial objects. To implement these operators, a fast and well-scaling algorithm based on the octree-encoded discretized geometry for computing the distance between two polyhedra was developed. The proposed algorithm implements a divide-and-conquer strategy: It uses comparably cheap polygon-octant intersection tests to build up the octree, and subsequently performs very simple distance calculations between two octants, that can be realized as fast integer operations. The paper describes the algorithm in detail, discusses its scaling behavior and the advantages of using an octree encoding. Introduction Our research group is developing a 3D Spatial Query Language for Building Information Models (BIMs). A spatial query language provides abstractions for spatial relationships, thus facilitating the spatial analysis of geometric models. In existing query languages for BIMs, such as the Product Model Query Language, the utilization of spatial relations within a query is limited to simple containment relationships. This is mainly due to the structure of the underlying BIM which does not incorporate the explicit geometry of the building components. The proposed Spatial Query Language relies on a spatial algebra that is formally defined by means of point set theory and point set topology (Borrmann, 2006). Besides fully three-dimensional objects of type Body, the algebra also provides abstractions for spatial objects with reduced dimensionality, namely by the types Point, Line and Surface. The Spatial supertype subsumes all types of spatial objects. The spatial operators that operate on the spatial types are the most important part of the algebra. They comprise metric, directional and topological operators. This paper discusses two possible implementations of that part of the metric operators that reflect the Euclidean distance between spatial objects, i.e. the distance, the isfarther and the iscloser operator. In a first step we confine ourselves to bodies with plane surfaces, i.e. polyhedra. For application in the context of modern construction engineering, it is necessary to consider polyhedra that might be concave or possibly possess a complex surface, i.e. a high number of facets (Figure 1). 1 The project presented here is sponsored by the German Research Foundation (DFG).

Related work A well-known solution for calculating the distance between polyhedra with convex surfaces is the GJK algorithm (Gilbert et. al, 1988), which relies on the Minkowski sum of the two objects and the iterative search for the vertex closest to the origin. It soon became apparent that, for objects with complex surfaces, it is far too laborious to perform a GJK computation for every conceivable pair of facets. Therefore, bounding volumes have been introduced to filter out irrelevant facet pairs beforehand. Organizing bounding boxes in a hierarchical way allows for recursive processing and yields an even higher performance. The utilization of an Axis Aligned Bounding Box (AABB) tree for distance calculations was introduced by (van den Bergen, 1998). The reference algorithm shown in the second part of this paper is based on a similar approach. Other developments are bounding volume hierarchies that consist of spheres (Quinlan, 1994), Oriented Bounding Boxes (OBBs) (Gottschalk et al., 1996, Johnson and Cohen, 1998) and Swept Sphere Volumes (Larsen et al., 1999). The latter paper provides a good overview of the different approaches and a detailed comparison of their performance. Figure 1. The paper deals with the computation of the distance between two polyhedra with complex, possibly concave surfaces. The left-hand diagram depicts the octree representation of both objects and the right-hand diagram shows the AABB tree representation. The algorithms described above are based on a pre-set finite tree depth and a final calculation step to determine the distance between two polygonal or triangular facets (e.g. using GJK), resulting in a precise distance value. In contrast, the proposed octree-based algorithm avoids any final calculation step and runs recursively until the desired accuracy is obtained. Octree encoding For processing spatial operators, we utilize the octree-encoded discretized geometry of the operands. The octree is a space-dividing, hierarchical tree data structure (Meagher, 1982). Each node in the tree represents a cubic cell and has exactly one father and either eight children if it is an inner node, or zero children if it is a branch node. The aggregation of all child cells results in the parent cell. The ratio of the

child cell s edge length to that of its father is always 1:2. The octree is related to the quadtree in 2D. Data structures of this kind are usually referred to as space trees. There are different methods for generating the octree representation of an object s geometry. The approaches differ according to whether only the body s boundary (Wenisch & Wenisch, 2004) or also its interior (Mundani, 2003) is represented by the resulting octree. What is common to all approaches is the principle that, starting at the root node, only those children that are neither entirely inside the body nor entirely outside of it are refined. In the case of a two-colored tree, the cells that are cut by the boundary are marked black and all others white. In the case of a threecolored tree, interior cells are marked black, boundary cells grey and exterior cells white. The octree encoding has several advantages compared to the cell enumeration scheme. Firstly, the amount of storage space is reduced by one order (from O(n³) to O(n²)), because only the boundary has to be fully resolved. Secondly, the recursive nature of the data structure allows for the application of recursive algorithms. In the proposed concept for the implementation of spatial operators, the geometry of each single building component is discretized in a separate octree. As regards generation time for the corresponding octree, there are two possibilities: the octree can either be created when the object (building component) is inserted into the database (generation in advance) or when the spatial operation is performed (on-the-fly generation). The first approach requires more processing time for insertion and a lot of memory space needed for the continual storage of the octree. The decision for one or the other approach mainly depends on the frequency of insertion/update operations with respect to the frequency of queries containing spatial operators. In the application domain discussed here, the frequency of insert/update operations is expected to be much higher than that of spatial queries. So the approach of on-the-fly generation is considered to be more appropriate in this case. It offers the additional advantage particularly for the implementation of the distance operator - that the octree generation can be coupled with the recursive algorithm, i.e. only those parts of the octrees need to be refined that are regarded as being closest to each other. The octree-based algorithm The core of the algorithm is based on the calculation of distance values for pairs of octree cells (a cell pair is composed of one cell that belongs to octree A and another cell that belongs to octree B) on each octree level and the principle that those cell pairs whose distance is definitely higher than that of any other cell pair can be excluded from further refinement. Because the exact position of the boundary of the objects is unknown when using an octree encoding, an upper and lower distance value has to be determined for each cell pair (Figure 2). To calculate these values, the upper and lower distance value is determined for each Cartesian direction by applying the following rules: if the coordinate value of both cells is equal, then the lower distance value is 0 and the upper distance value is 1. In any other case, the lower distance value results from the difference between the coordinate values minus 1 and the upper distance value from the difference between the coordinate values plus 1. The cell pairs lower and upper distance values can now be computed by summing up the squared values. The expen-

sive calculation of the square root is not yet necessary, because in this step only the order (closer, farther) of the cell pairs has to be determined. Figure 2. Since the exact position of the boundary of the objects is unknown when using octree encodings, an upper (middle diagram) and lower distance value (right-hand diagram) has to be determined for each cell pair based on the distance between the cells midpoints (left-hand diagram). The lower and upper distance values are used to select candidate pairs that might represent those parts of the boundaries that are closest to each other. To do this, the lowest upper distance value of all pairs is calculated and subsequently all pairs with a higher lower distance value can be excluded from further refinement. All other pairs are candidates and will be refined, i.e. pairs of the respective child cells are composed. For the resulting child pairs, the algorithm is recursively repeated, i.e. distance values are calculated, candidates are chosen and so on. By descending both octrees in this way (which is a breadth first traversal), the precision of the calculated distance is successively increased: the calculated distance can be expressed on each level by means of an interval, whose endpoints are calculated from the square root of the upper and lower distance values determined for the cell pairs of the level in question. By letting the user choose the termination level, he is able to balance the accuracy of the result obtained with the time needed for its computation. Time complexity of the octree-based algorithm In contrast to traditional distance algorithms, the computational time needed to calculate the distance is independent from the number of facets the objects surfaces 2 are composed of, but depends on the desired accuracy. It corresponds with the width of the resulting interval and increases with each recursion level by the order O(n³). The time complexity depends directly on the number of cell pairs that need to be compared. To estimate this number, we examine the worst case, which results from two objects facing each other with parallel (plane) surfaces. For the sake of simplicity, we first examine the 2D case. As stated above, all cell pairs satisfying the distance condition d low < d upper,min are refined. In a first step, cell pairs where cell A has a fixed x coordinate and cell B fulfills the distance condition are counted. The number of such pairs multiplied by the number of cells on the flat surface in y direction yields the number of candidate pairs. Any side effects are disregarded, in other words, we assume an infinitely extended surface. For pairs of cells that satisfy the distance condition, the distance in y direction is a-1, a or a+1 (Figure 3). No y distance smaller than a-1 is possible due to the distance of the surfaces. Nor is a y dis- 2 Note that the time for the octree generation depends on the number of facets.

tance greater than a+1 possible in view of the distance condition, because for a cell pair with a y distance of a+2 und the smallest possible x distance of 0 already d low = (a+2)² + 0² > d high,min = (a+1)² + 1² holds. For cell pairs with a y distance of a or a+1 there is additional scope in x direction, i.e. cell B can be shifted by 1or 2 places respectively (Figure 3). Figure 3. All possible combinations of cells that satisfy the distance condition. The tiles correspond to different distances in y direction (a-1, a and a+1). To determine the maximum distance b in x direction we have to distinguish three cases. In the first case, the y distance is a-1. The distance condition accordingly states (a-1)² + b² < (a+1)² + 1², yielding b 1,max = 4a + 1. In the second case, the y distance is a. The distance condition accordingly states a² + b² < (a+1)² + 1², yielding b 2,max = 2a + 2. In the third case, the y distance is a+1. The distance condition accordingly states (a+1)² + (b+1)² < (a+1)² + 1², yielding b 3,max = 0. The cell pairs may have the distance b in either the positive or negative direction. In addition, there are always 3 cell pairs with a y distance of 0, so that in each case 3 + 2b cell pairs satisfy the distance condition. The number of cell pairs accordingly results in N 1 = (3 + 2 4a + 1) + 2 (3 + 2 2a + 2) + 3 3 O ( a ) To obtain the total number of cell pairs requiring refinement, it is necessary to multiply N 1 with the number of cells in x direction (length l): N = N 1 l. Both the distance a and the length l depend on the current refinement level. Let a 0 be the distance at level 0. In each recursion step, a range of length x d is mapped to a range of length x d+1 with x d+1 = 2x d. After d refinement steps, a can be estimated by a a 0 2 d and l by l l 0 2 d. Accordingly, the number of cell pairs that have to be compared on level d is N = O ( 2 d 2 d ) = O (2 3/2d ) for the 2D case. In 3D, the minimum upper distance is d upper,min = (a+1)² + 1² +1². Because it is 1 greater than in the 2D case, b 1,max, b 2,max and b 3,max change slightly: b 1,max = 4a + 2 b 2,max = 2a + 3 and b 3,max = 1. The number of cells within the corresponding shell segments of an imaginary sphere can be approximated by

N 1 (3 + 2b 1,max )² π / 4 + 2 (3 + 2b 2,max )² π / 4 + 3 (3 + 2b 3,max )² π / 4 O (a) Let l x and l y be the lengths of the plate in x and y direction. Accordingly, the number of cell pairs that need to be compared on level d is N = N 1 l x l y = O ( 2 d 2 d 2 d ) = O ( 2 3d ) for the 3D case. The reference algorithm based on AABB trees In the reference algorithm, AABB trees are used for hierarchical model representation. An AABB tree is a binary tree that is built up by recursively subdividing a given mesh into axis-aligned bounding boxes. Every internal node has the property that its AABB encompasses the AABBs of its children and thus all primitives assigned to the two child nodes. In contrast to octrees, AABB trees can only model the surface but not the interior of an object. AABB trees are constructed in a top-down manner. Given a triangulation of an object s surface, the corresponding AABB tree is built up as follows: first, the smallest AABB containing the set of all primitives is computed. After that, the set is split into two subsets, i.e. a left and a right one, according to a partition rule. We accordingly consider the projection onto the longest axis of the AABB. If the midpoint of a primitive s projection is smaller than the midpoint of the AABB s projection, the primitive is allotted to the left subset. Otherwise it is attached to the right subset. Once all the primitives of the AABB under consideration have been classified, we continue recursively with both the left and the right subset until an AABB contains only one primitive or the maximal level has been reached. In this case, the box is a leaf of the AABB tree. An alternative partition rule sorts the primitives in ascending order with respect to the midpoint of the respective projection onto the longest AABB axis and then splits the set into two equal subsets. In contrast to the first partition rule, it produces a balanced AABB tree but, due to the wider distribution of the box size, the maximum extent of the boxes on a certain level may be larger. The idea of the distance algorithm applied to this hierarchical model representation is similar to that of the octree-based algorithm. In a breadth-first traversal on each level, all AABB pairs that are not candidates for minimal distance are excluded. In contrast to the octree-based distance algorithm, calculations cannot be realized as integer operations and, in addition, leaf nodes of the AABB trees are handled differently. If an AABB pair is a potential candidate for minimal distance and both AABBs of the pair are leaf nodes, we build the cross product of all primitives assigned to the two AABBs and, in a final calculation step, compute the exact minimal distance for all resulting pairs. The exact distance between two primitives under consideration is computed by means of the GJK algorithm for convex polyhedrons. Since an AABB generally encompasses a few triangles only, this does not take much time. The computed distances between triangles may lead to a new minimum upper distance that can be used to exclude other AABB pairs in the same way as in the octree-based approach. It is possible that an AABB pair is a potential candidate for the minimal distance, but only one box of the pair is a leaf and, therefore, only the second bounding box has two children. In this case, the two children of the second AABB are paired with the first AABB, respectively. Finally, the global minimum

distance results as the lowest of all the distances from one triangle to another that were computed with GJK during the algorithm. Performance comparison The performance of both algorithms was compared by computing the distance between two spheres with radius 1, one located at (0,0,0) and the other one at (2,2,2). To model surfaces with different complexities, the spheres were triangulated with 8, 16, 32 and 64 segments resulting in 48, 224, 960 and 3968 facets, respectively. Tables 1 and 2 depict the results of the performance measurements. The timings include the creation of the octrees and AABB trees respectively. In the case of the octree based algorithm, the tree is generated during the recursion only at the places where it is necessary, i.e. only candidate cells are refined. Table 1 and Table 2. The results of the performance measurements. The left-hand side shows the results of the octree-based algorithm and the right-hand side those of the AABB-based algorithm. All timings are in milliseconds. Diagrams 1 and 2. Diagram 1 plots the scaling of the octree algorithm with respect to the number of facets per sphere. Diagram 2 shows that the performance of the AABB-based algorithm depends largely on the chosen tree-depth. We implemented both algorithms as a pure Java code, because this simplifies the server-side integration in an object-relational database. All intersection tests are performed using the Akenine-Möller approach (Akenine-Möller, 2001). Tables 1 and 2 clearly show that the performance of the AABB algorithm is higher than that of the octree based algorithm, particularly if one takes into account that it delivers the pre-

cise distance. But, as visualized in Diagram 2, the processing time of the AABB algorithm strongly depends on the chosen maximum depth of the AABB tree. The optimal depth of the AABB tree depends on the size and distribution of the facets and can hardly be predicted for the general case. In contrast, the processing time of the octree based algorithm scales continuously with O ( 2 3d ), as deduced theoretically above. Discussion / Summary Using AABB trees coupled with executing the GJK algorithm for the final candidates is a good solution for calculating the distance between two polyhedra. Even for objects with complex surfaces, it displays a better performance than the octree-based algorithm. Moreover, the distance returned by the AABB algorithm is an exact value, not an interval, as in the case of the octree algorithm. The fact that most components of usual buildings have a rectangular, axis-aligned shape, renders the AABB algorithm even more suitable. Although we discovered that the performance of the octree-based distance algorithm falls short of that of an AABB-based one, the former has a primal advantage: for a particular level of precision, the time for processing the distance algorithm is bounded above, independent from the number and arrangement of the facets. This property is very useful for integrating the algorithm in a spatial database, because the user is not normally aware of the complexity of the stored objects when submitting a query. In contrast, the processing time of the AABB-based algorithm largely depends on the chosen tree-depth and the distribution of the facets. Moreover, the octree encoding provides an opportunity for an easy, yet robust implementation not only of the distance operator but also of other metric operators, such as volume or area. We consider the octree-based algorithm to be satisfactory and suitable for our purposes, because it complies with our global strategy of an octree-based implementation of all spatial operators provided by the spatial query language. References T. Akenine-Möller (2001), Fast 3D triangle-box overlap testing, J. of Graphics Tools, 6, 29-33. A. Borrmann, C. van Treeck and E. Rank (2006). Towards a 3D Spatial Query Language for Building Information Models. Proc. Joint Int. Conf. of Computing and Decision Making in Civil and Building Engineering (ICCCBE-XI). E. G. Gilbert, D.W. Johnson and S. S. Keerthi (1988). A fast procedure for computing the distance between complex objects in three-dimensional space. IEEE J. of Robotics and Automation, 4(2),193 203. S. Gottschalk, M. Lin and D. Manocha (1996). OBB-Tree: A hierarchical structure for rapid interference detection. Proc. of ACM SIGGRAPH '96 D. Johnson and E. Cohen (1988). A framework for efficient minimum distance computation. Proc. IEEE Int. Conf. on Robotics and Automation. M. C. Lin and J. F. Canny (1991). A fast algorithm for incremental distance computation. Proc. IEEE Int. Conf. on Robotics and Automation. D. Meagher (1982). Geometric modeling using octree encoding. IEEE Computer Graphics and Image Processing, 19(2), 129 147. R.-P. Mundani, H.-J. Bungartz, E. Rank, R. Romberg and E. Niggl (2003). Efficient Algorithms for Octree-Based Geometric Modelling, Proc. of 9th Int. Conf. on Civil and Structural Engineering Computing. P. Wenisch and O. Wenisch (2004), "Fast octree-based voxelization of 3D Boundary Representation- Objects." Technical Report, Lehrstuhl für Bauinformatik, Technische Universität München.