Game Development Community

What is "split Epsilon" in the exporter options

by Lee Latham · in Constructor · 09/01/2007 (4:41 pm) · 3 replies

Anybody know? I'm struggling with exporting some complex dif's. I already found that nuking Hidden Surface Removal has solved all kinds of problems, but I'm still getting crashes when I import some of my dif's, so I want to try to understand these options.

And please don't say "search the forums", 'cause you can't search the Constructor forums! ;-)

#1
12/19/2007 (9:41 am)
Anyone? I swear I saw this answered (or at least the post had an "I think it does this..." type answer) before, but I can't find it .... I manually did a Find On Page in IE through all of the Constructor forum titles (since search still doesn't work), and this was the only post that I found.

I would LOVE to also know what ALL of the DIF Export options do, especially the following:

Alternate HSR
Split Epsilon
Tiny Split Espsilon
smoothing Threshold

Thanks much!
#2
12/20/2007 (12:20 am)
"Split Epsilon - Introduced with 1.0.1. This is the "magic number" that is used when creating the collision bsp tree and when pushing the polys into that tree in order to sort them into zones. Floating point innaccuracy means that we can never exactly compare two values so we have to use an "epsilon" to decide if they are close enough together to be "equal". This pref controls how far away from a plane a point has to be in order for the brush or polygon to be considered split by that plane.

All math/programming jargon aside, the lower this value is the more likely a brush will get split up by another brush's surfaces and the more likely you will lose surfaces during the hidden surface removal pass. However, if you push this pref too high then you can lose all of the benefits of the hidden surface removal (less overdraw and no z-fighting). Changing this value can go a long way to combatting bad exports but it also can be highly dependent on the size and complexity of the map so I left it controllable by the artists so that they can find their own sweet spots.

Tiny Split Epsilon - Introduced with 1.0.1. This is tightly related to the pref above. The Split Epsilon is used to control whether or not a brush or polygon is considered "split" while the Tiny Split Epsilon is used to control whehter or not that split is too small to be considered. Some things in the bsp create process and the hidden surface removal operation only use the Split Epsilon while other portions use both so I felt it was important to expose this one as well.

Practically, this number always needs to be higher than the Split Epsilon...generally only slightly higher. Again, this is a "magic" number that each artist can play with to get the best results for each scene."
#3
01/22/2008 (9:44 am)
Thanks much for the explaination, Andrew. Sorry I'm just getting back to this now. So adjusting the Split Epsilon number up a bit would help with missing faces too? I had to turn off HSR because of that problem, and manually NULL out the hidden faces.