Orphaned Polygons in Torque – Part 1 of 3

I am no expert in the field of Programming, I don’t want to be (I am an artist) but sometimes in game dev, technical artists have to have a good grounding of what their engine is doing… What I say here may not necessarily be fact, simply what I have found on my workings with the Torque Engine. Orphaned Polygons are something that I run up against allot, and so I thought I would do this sort of white paper/case study on them. Hopefully it helps others out there.

What Are Orphaned Polygons?

My understanding of Orphaned Polygons is simple. As the BSP tree (DIF) is created brushes get sliced. (A simple understanding of BSP Trees is handy – ftp://ftp.sgi.com/other/bspfaq/faq/bspfaq.html#6.txt) During this slicing process (which is automatic) a brush may get sliced along a ‘strange’ axis (or unexpected axis) which would then create a non-valid polygon.

I have found in Torque that slicing occurs when an edge on one brush (brush x) has a different angle to the adjacent brush (brush y), and if you were to ‘continue’ that edge (brush x) into the next brush (brush y), that would be were U would find the slice. See image below.


Example #1 – White = Polygon, Blue = Orphan Polygon, Gray = No Polygons


Example #2 – Real in game example!

Orphaned polygons are those that end up not part of any brush. When they are detected, they are removed from the data stream by map2dif and so will not cause your structure any problems in the game.*
My understanding of this is that they will get flagged as not a complete brush or as invalid data, just so the engine knows to ignore it. (A brush is a complete cube or wedge shape, not just a single polygon.. an Orphaned Polygon is just that a lone poly!!!)

Series Division

Part 1 – What Are Orphaned Polygons
Part 2 – How do I find them?
Part 3 – How do I resolve, or fix them?!

References

* Advanced 3D Game Programing All in One – Kenneth C. Finney
http://www.garagegames.com/mg/forums/result.thread.php?qt=17297
http://www.garagegames.com/mg/forums/result.thread.php?qt=1835

kick it on GameDevKicks.com

Leave a Reply