![]() |
| [[ Home | Forums | 3D Engines Database | Wiki | Articles/Tutorials | Game Dev Jobs | IRC Chat Network | Contact Us ]] |
|
|
#1 |
|
DevMaster Editor
Join Date: Jan 2005
Posts: 54
|
BSP Trees: Theory and Implementation
Author: Samuel Ranta-Eskola Description: This article offers a detailed explanation of Binary Space Partitioning (BSP) theory for real-time engines, along with various implementation details, complexity anaylsis, optimzations, and rendering. Post your discussions/comments here by clicking on Add Reply. |
|
|
|
|
|
#2 |
|
DevMaster Staff
Join Date: Apr 2003
Location: Germany
Posts: 2,328
|
nice article !
some constructive criticism though... right at the beginning you say that the bsp tree isn't used anymore for depth sorting a scene. so it would have been nice if you would have written a little more in depth about the uses it has today. what i mean is that instead of only explaining how to construct and render a bsp tree you should have also mentioned how to construct a PVS or how to actually do colission detection with a bsp tree. maybe you could do a second part about that. that would be really cool since i like the style of your article very much
___________________________________________
If Prolog is the answer, what is the question ? |
|
|
|
|
|
#3 |
|
DevMaster Staff
Join Date: Jan 2003
Posts: 1,201
|
Thanks anubis for your comments.
I should have mentioned it before, but this is a 4-article series. The other articles will be: 1. Hidden Surface Removal 2. Radiosity 3. Physics in BSP Trees That should hopefully answer your question ![]() Thanks to the author for his valuable contribution. |
|
|
|
|
|
#4 |
|
DevMaster Staff
Join Date: Apr 2003
Location: Germany
Posts: 2,328
|
oh, that clears it up... in that case ignore my comments =]
hm... i think we can soon start to open different sections for a few tutorial topics at the beginning a seperation like gfx, audio, general might be sufficent
___________________________________________
If Prolog is the answer, what is the question ? |
|
|
|
|
|
#5 |
|
Senior Member
Join Date: Jan 2003
Location: Switzerland
Posts: 1,333
|
radiosity? iieehhk..
ugly ![]()
___________________________________________
davepermen.net -Loving a Person is having the wish to see this Person happy, no matter what that means to yourself. -No matter what it means to myself.... |
|
|
|
|
|
#6 |
|
New Member
Join Date: Sep 2003
Location: Uppsala, Sweden
Posts: 8
|
Hi everbody
I wrote this article about 2 years ago. At that stage I was a rookie gameprogammer. Thus there exist some minor mistakes and things that might look strange to the more experienced. There are also a few errors that has been pointed out to me, but they weren't to significant and I actually don't remember what they were The best way to consider this article is as a guide to BSP-trees. Most of the thinking you will have to do yourselves. Some solutions are plain dumb and definetly need polishing. If anybody has any questions you can post them here and I'll try to answer them as good as I can. |
|
|
|
|
|
#7 |
|
Senior Member
Join Date: Jan 2003
Location: ON, Canada
Posts: 524
|
Thanks Samuel for this useful and excellent article! Can't wait for the next one
![]()
___________________________________________
"What ever happened to happily ever after?" |
|
|
|
|
|
#8 |
|
Member
Join Date: Dec 2005
Location: Chandigarh
Posts: 34
|
after reading the artical i have implemented the classify function as follows which classify a point against the plane passed
int My3DApplication::classifyPoint( D3DXVECTOR3 *pos, POLYGON *Plane ) { D3DXVECTOR3 *vec1 = (D3DXVECTOR3 *)&Plane->VertexList[0]; D3DXVECTOR3 Direction = (*vec1) - (*pos); float result = D3DXVec3Dot(&Direction,&Plane->Normal); if( result < -0.001f ) return POINTPOSITION_FRONT; if( result > 0.001f ) return POINTPOSITION_BACK; return POINTPOSITION_ONPLANE; } but its not working |
|
|
|
|
|
#9 |
|
DevMaster Staff
Join Date: Oct 2004
Location: Seattle, WA
Posts: 3,707
|
This thread is three years old. Please start a new thread.
___________________________________________
Currently working at Sucker Punch reedbeta.com - OpenGL demos and other projects Luabridge - a lightweight, dependency-free C++/Lua binding library. CD Lite - an unobtrusive, minimal CD player application for Windows. |
|
|
|
|
|
#10 | |
|
Senior Member
Join Date: Sep 2005
Location: .nl
Posts: 505
|
Quote:
The article links to this thread though. |
|
|
|
|
|
|
#11 |
|
New Member
Join Date: Oct 2006
Location: chicago
Posts: 2
|
hi there seems to be a small error in the GENERATE-BSP-TREE algo?
In GENERATE-BSP-TREE line 2 should be Tree = BSPTreeNode (Node) instead of Tree = BSPTreeNode (PolygonSet) correct me if i am wrong, but in that case node seems to have no use in that function. |
|
|
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|