Jorrit Rouwe
2001-12-12 07:31:03 UTC
Hello,
Does anyone have an efficient algorithm for generating the bevelling planes
for a BSP as described in "Dynamic Plane Shifting Traversal" by Stan Melax?
Preferably one that can dynamically generate the planes to save memory.
Currently, as a preprocessing step, I use the following algorithm:
- Go down the tree and keep track of all splitting planes and do the
following for each solid node:
- Check the angle between each pair of the accumulated planes and possibly
generate a bevelling plane (based on angle between the planes).
- Discard planes that do not touch a vertex of the convex volume the node
describes.
- I don't consider vertices that are not on the BSP boundary because they
would generate bevelling planes that have no effect when shifted.
It works, but in some cases it generates a few extra planes, and it is too
slow for realtime use (O(N^3) where N = number of splitting planes).
Jorrit.
Jorrit Rouwé | Programmer
Lost Boys Games | Prins Hendrikkade 139 | 1011AS Amsterdam The Netherlands
Tel: +31 (0)20 4272277 | Fax: +31 (0)20 4274040 | ***@games.lostboys.com
Amsterdam | Barcelona | Berlin | London | Madrid | Paris | San Francisco |
Warsaw | Zurich | www.games.lostboys.com
Does anyone have an efficient algorithm for generating the bevelling planes
for a BSP as described in "Dynamic Plane Shifting Traversal" by Stan Melax?
Preferably one that can dynamically generate the planes to save memory.
Currently, as a preprocessing step, I use the following algorithm:
- Go down the tree and keep track of all splitting planes and do the
following for each solid node:
- Check the angle between each pair of the accumulated planes and possibly
generate a bevelling plane (based on angle between the planes).
- Discard planes that do not touch a vertex of the convex volume the node
describes.
- I don't consider vertices that are not on the BSP boundary because they
would generate bevelling planes that have no effect when shifted.
It works, but in some cases it generates a few extra planes, and it is too
slow for realtime use (O(N^3) where N = number of splitting planes).
Jorrit.
Jorrit Rouwé | Programmer
Lost Boys Games | Prins Hendrikkade 139 | 1011AS Amsterdam The Netherlands
Tel: +31 (0)20 4272277 | Fax: +31 (0)20 4274040 | ***@games.lostboys.com
Amsterdam | Barcelona | Berlin | London | Madrid | Paris | San Francisco |
Warsaw | Zurich | www.games.lostboys.com