Talk:Binary space partitioning

message: Correct me if I'm wrong, but I'm under the impression that the process as a whole is named Binary Space Partitioning, and that Binary Space Partition would refer to a single partition generated in that process. Anyone objects to moving this page to Binary space partitioning? --cbraga 17:15, Jun 1, 2004 (UTC)
:That seems right to me. Fredrik (talk) 17:33, 1 Jun 2004 (UTC)
thread_title:  move to binary space partitioning? 

message: The article, specifically the definition of a BSP, refers to a solid planar BSP.  A BSP need not describe convex hulls, nor need it be partitioned by planes.
For example, consider the following.  Enclose every primitive in a sphere (specifically the smallest sphere that will encapsulate the primitive).  Merge each sphere with the sphere closest to it to create a new sphere, merging each sphere only once.  These new spheres are the parents of their respective children.  Iterate the process until only one sphere remains.  We now have a spherical BSP.  It has three advantages over a planar BSP: 1) primitives are not subdivided, 2) it can be generated extremely fast (ie at runtime, as opposed to pre-processing), 3) new primitives can be quickly added into the tree on-the-fly.  While it cannot be used to perfectly sort polygons (which is not an issue with hardware rendering), it is efficient at determining which primitives lie within the view frustum.
Also the article does not discuss leafy verses nodey trees.  Leafy being that the geometric primitives are stored in the leafs, where in nodey trees they are stored in the nodes.  The difference has repercussions on collision detection.  Also nodey trees infer that the geometric primitives themselves were used to partition the BSP.
Again, the Generation section is planar-centric, yet it does not mention where potential partitions are chosen from.  The simplest method (and one required for a nodey BSP) is to use the planes of the polygons of the mesh we are generating a BSP for.  This only works well for specific types of geometry, such as buildings with many perpendicular planes.  When this technique is applied to geometry such as a heightmap, it fails miserably, causing a massive amount of polygon subdivision.  The polygon count can easily increase by a factor of 10 or more.  In this case choosing partition planes using another method - for example using planes that lie on the edge of a polygon that are perpendicular to the normal - work much better.
--Dan East 01:17, Mar 14, 2005 (UTC)
:What you are describing is not a BSP tree, but a set of hierarchical  bounding volumes. --Pezezin 13:44, 28 September 2006 (UTC)
thread_title:  Solid Planar BSP 

message: Beforehand (or dynamically) you carve up the world into (mostly disjoint) convex objects. For each non-solid border of each object you store the convex object on the other side, as well as a list of the objects that it (partially) contains.
During the game you don't just store the position of each movable object, but also the convex object(s) that contains (parts of) it (dynamic programming). Then, when the object moves (or shoots or looks at something), you first makes sure that it does not hit an object that is (partially) contained by the current convex object. If it's not, you
calculate through which border the representative line segment will leave the current convex object(s). If the border is solid, the line is terminated, and if the border is not, the line is traced through the next convex object and so on.
This algorithm is quite efficient as long as the convex objects are mostly disjoint.
In the highly inlikely case that you do not know inside which object you are currently located, you can discover that by tracing a line from any known place. But this never happens in Doom or Quake. -- Nic Roets 15:22, 24 August 2005 (UTC)
thread_title:  It's possible to write Doom, Quake etc without a BSP 

message: That demo is not very good at showing how the tree is generated. For one, the tree is easily made heavy on one side or another (not something which would happen in a proper compiler). Also, it does a poor job of showing how the technique affects lighting (everything is pretty much the exact same). I recommend removing the link because it conveys partial information to the reader which will lead to incorrect assumptions.
The link in question: http://symbolcraft.com/graphics/bsp/
Located: http://en.wikipedia.org/wiki/Binary_space_partitioning#Generation
Dragon Hilord 21:13, 15 August 2006 (UTC)
thread_title:  BSP Tree Generation Demo 

message: This article needs to show programmatic implementation of this process I think.  If I'm wrong than don't be hesitant to speak... —The preceding unsigned comment was added by 69.137.157.249 (talk) 10:53, 28 March 2007 (UTC)
thread_title:  Needs implementation 

message: I don't think the Doom engine used BSP. I may have misunderstood, but space partitioning is a technique used when dealing with 3D geometry, and Doom did not store it's level data as 3D geometry. I know that Quake used BSP for it's levels, but am fairly sure Doom did not. 86.14.204.223 (talk) 13:21, 15 December 2008 (UTC)
thread_title:  BSP in Doom? 

message: I have added a  template in the section Other space partitioning structures, because I think a few questions have to be sorted out. Firstly, I'm confused about whether binary space partitioning is a specific algorithm, as the article seems to say, or if it is a class of algorithms, as Template:CS trees seems to say. Aren't both binary space partitioning trees and all trees listed after it actually spatial data partitioning trees, which is a branch if trees listed two rows down? Secondly, the section I put the  template in contains a relationship table, which lists binary space partition trees, quadtrees and octrees, but not kd-trees. Why not kd-trees, don't they use only one dividing plane too, just like binary space partition trees?
Also, I can shortly mention that the section seemed to say that quadtrees and octrees were the most useful in subdividing 2- and 3-dimensional spaces respectively; since I couldn't agree with that I had to change it to that they were usefull for subdividing 2- and 3-dimensional spaces respectively. —Kri (talk) 00:00, 24 July 2011 (UTC)
thread_title:  Relationship with other partitioning structures unclear 

message: I've made some substantial edits the article, while keeping the same general sections as before. This was primarily motivated by the the lack of detail in the previous revisions making it hard to understand what binary space partitioning really involved, without going to the references. I've tried to cover (at least briefly) as many of the points raised previously on the talk page as possible. I'm aware that the new examples relate in particular to BSP as proposed by Fuchs et al. (1980), but I hope it is clear from the article that this is one of many related algorithms using BSP. Still some work to do, on referencing in particular (the existing 'Timeline' section and additional references seem to be based heavily on a Bachelors dissertation (cited as WINTER99)). Chrisjohnson (talk) 00:50, 9 June 2012 (UTC)
thread_title:  Substantial edits 

message: I know there's no original research allowed, but is there anything out there about how binary search trees are a subset of BSP trees? Here's the gist: the BSP is an ordered binary tree based on the result of a dot product of a point (4d vector with an xyz in 3d space and its w-component as 1) and a plane (4d vector representing the coefficients in ax + by + cz + d = 0). Take it down to 2d, the dot product is now between a 2d point and the line ax + by + c = 0. Take that down to 1d, and it's a the dot product of a scalar and the value ax + b = 0, both of which are just scalar values, and so is the normal definition of the key of a binary search tree. Therefore BSP trees are binary search trees which order values in N-dimensional space by using an (N-1)-dimensional partitioning subspace, of which binary search trees are the 1-dimensional example. It's a very nice way to think of the BSP process and how it ties into the more generic data structures.70.120.71.220 (talk) 04:55, 14 February 2013 (UTC)
thread_title:  BSP as a generalization of binary search trees 

message: Why is the "Brush" section relevant to this article?  It isn't clear to me at all.  It looks like it was merged from its own article--anybody know why?
64.58.7.42 (talk) 18:04, 11 December 2015 (UTC)
thread_title:  Brush Section?