Content deleted Content added
→Additional references: deleted duplicate reference |
Link suggestions feature: 3 links added. |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 22:
*1981 Naylor's Ph.D. thesis<ref>{{cite thesis |last=Naylor |first=Bruce |date=May 1981 |title=A Priori Based Techniques for Determining Visibility Priority for 3-D Scenes |url=https://www.proquest.com/openview/94daf3b8677f8ca4567915515efeefac/1?pq-origsite=gscholar&cbl=18750&diss=y |degree=Ph.D. |___location=University of Texas at Dallas |access-date=June 5, 2025}}</ref> provided a full development of both BSP trees and a graph-theoretic approach using strongly connected components for pre-computing visibility, as well as the connection between the two methods. BSP trees as a dimension-independent spatial search structure were emphasized, with applications to visible surface determination. The thesis also included the first empirical data demonstrating that the size of the tree and the number of new polygons were reasonable (using a model of the Space Shuttle).
*1983 [[Henry Fuchs|Fuchs]] et al.<ref>{{Cite book |last1=Fuchs |first1=Henry |last2=Abram |first2=Gregory D. |last3=Grant |first3=Eric D. |title=Proceedings of the 10th annual conference on Computer graphics and interactive techniques |chapter=Near real-time shaded display of rigid objects |date=1983 |language=en |publisher=ACM |pages=65–72 |doi=10.1145/800059.801134 |isbn=978-0-89791-109-2}}</ref> described a micro-code implementation of the BSP tree algorithm on an Ikonas frame buffer system. This was the first demonstration of real-time visible surface determination using BSP trees.
*1987 Thibault and Naylor<ref name="thibault87" /> described how arbitrary polyhedra may be represented using a BSP tree as opposed to the traditional b-rep ([[boundary representation]]). This provided a solid representation vs. a surface based-representation. Set operations on polyhedra were described using a tool, enabling [[constructive solid geometry]] (CSG) in real-time. This was the forerunner of BSP level design using "[[brush (video games)|brushes]]", introduced in the Quake editor and picked up in the Unreal Editor.
*1990 Naylor, Amanatides, and Thibault<ref>{{cite journal |last1=Naylor |first1=Bruce |last2=Amanatides |first2=John |last3=Thibault |first3=William |date=August 1990 |title=Merging BSP Trees Yields Polyhedral Set Operations |url=https://dl.acm.org/doi/pdf/10.1145/97880.97892 |doi=10.1145/97880.97892 |citeseerx=10.1.1.69.292|journal=ACM SIGGRAPH Computer Graphics |volume=24 |issue=4 |publisher=Association of Computing Machinery |pages=115–124 |access-date=June 5, 2025}}</ref> provided an algorithm for merging two BSP trees to form a new BSP tree from the two original trees. This provides many benefits including combining moving objects represented by BSP trees with a static environment (also represented by a BSP tree), very efficient CSG operations on polyhedra, exact collisions detection in O(log n * log n), and proper ordering of transparent surfaces contained in two interpenetrating objects (has been used for an x-ray vision effect).
*
*1991 Gordon and Chen<ref>{{cite
*1992 [[Seth J. Teller|Teller]]'s Ph.D. thesis<ref>{{cite thesis |last=Teller |first=Seth |date=1992 |title=Visibility computations in densely occluded polyhedral environments |url=https://www.proquest.com/openview/80322259984cf6c676a345676ab1d74a/1?pq-origsite=gscholar&cbl=18750&diss=y |degree=Ph.D. |___location=University of California at Berkeley |access-date=June 5, 2025}}</ref> described the efficient generation of potentially visible sets as a pre-processing step to accelerate real-time visible surface determination in arbitrary 3D polygonal environments. This was used in ''[[Quake (video game)|Quake]]'' and contributed significantly to that game's performance.
*1993 Naylor<ref>{{cite journal |last1=Naylor |first1=Bruce |date=1993 |title=Constructing good partitioning trees |url=https://www.researchgate.net/profile/Bruce-Naylor/publication/2492209_Constructing_Good_Partitioning_Trees/links/55cc86be08aea2d9bdce442d/Constructing-Good-Partitioning-Trees.pdf |journal=Graphics Interface |publisher=Canadian Information Processing Society |pages=181–191 |access-date=June 5, 2025}}</ref> answered the question of what characterizes a good BSP tree. He used expected case models (rather than worst-case analysis) to mathematically measure the expected cost of searching a tree and used this measure to build good BSP trees. Intuitively, the tree represents an object in a multi-resolution fashion (more exactly, as a tree of approximations). Parallels with Huffman codes and probabilistic [[binary search]] trees are drawn.
*1993 Hayder Radha's Ph.D. thesis<ref>{{cite thesis |last=Radha |first=Hayder |date=1993 |title=Efficient image representation using binary space partitioning trees |url=https://www.proquest.com/openview/a80bc19b1374b928afa8844a8ed05ef4/1?pq-origsite=gscholar&cbl=18750&diss=y |degree=Ph.D. |publisher=Columbia University |access-date=June 5, 2025}}</ref> described (natural) image representation methods using BSP trees. This includes the development of an optimal BSP-tree construction framework for any arbitrary input image. This framework is based on a new image transform, known as the Least-Square-Error (LSE) Partitioning Line (LPE) transform. H. Radha's thesis also developed an optimal rate-distortion (RD) [[image compression]] framework and image manipulation approaches using BSP trees.
==Overview==
[[File:2D Binary Index.svg|thumb|An example of a recursive binary space partitioning [[quadtree]] for a 2D index
Binary space partitioning is a generic process of [[recursion|recursively]] dividing a scene into two using [[hyperplanes]]<ref>{{cite web |last=Naylor |first=Bruce |date=January 2005 |title=A Tutorial on Binary Space Partitioning Trees |url=https://www.researchgate.net/publication/238348725_A_Tutorial_on_Binary_Space_Partitioning_Trees |website=ResearchGate |access-date=July 1, 2025}}</ref> until the partitioning satisfies one or more requirements. It can be seen as a generalization of other spatial tree structures such as [[K-d tree|''k''-d trees]] and [[quadtree]]s, one where hyperplanes that partition the space may have any orientation, rather than being aligned with the coordinate axes as they are in ''k''-d trees or quadtrees. When used in computer graphics to render scenes composed of planar [[Polygon mesh|polygons]], the partitioning planes are frequently chosen to coincide with the planes defined by polygons in the scene.
The specific choice of partitioning plane and criterion for terminating the partitioning process varies depending on the purpose of the BSP tree. For example, in computer graphics rendering, the scene is divided until each node of the BSP tree contains only polygons that can be rendered in arbitrary order. When [[back-face culling]] is used, each node, therefore, contains a convex set of polygons, whereas when rendering double-sided polygons, each node of the BSP tree contains only polygons in a single plane. In collision detection or ray tracing, a scene may be divided up into [[Geometric primitive|primitives]] on which collision or ray intersection tests are straightforward.
Line 155:
{{refbegin}}
*{{cite journal |first=B. |last=Naylor |title=Constructing Good Partitioning Trees |date=May 1993 |journal=Graphics Interface |url=https://www.researchgate.net/publication/2492209 |citeseerx=10.1.1.16.4432}}{{dead link|date=January 2025|bot=medic}}{{cbignore|bot=medic}}
*{{cite journal |first1=H. |last1=Radha |first2=R. |last2=Leoonardi |first3=M. |last3=Vetterli |first4=B. |last4=Naylor |title=Binary space partitioning tree representation of images |journal=Journal of Visual Communications and Image Processing |volume=2 |issue=3 |pages=201–221 |date=1991 |doi=10.1016/1047-3203(91)90023-9 |url=http://infoscience.epfl.ch/record/33911 |doi-access=free}}
*{{cite thesis |first=H.M.S. |last=Radha |title=Efficient Image Representation using Binary Space Partitioning Trees |date=1993 |type=PhD |publisher=Columbia University |oclc=30775044}}
|