|
|
I had a thought. And yes, this may slow the engine, but for some
applications it may be a lot more accurate. Things we know, or should
know:
1. Direction of the ray.
2. The 'object' that a point the ray hits belongs to.
3. Where in 3D space that 'should' place the surfaces in relation to each
other.
What is needed is to identify which object when hit is 'behind' the ray
at the point of intersection. If you know that you are leaving object X,
but the point you hit, due to precision issues, is on Y, then obviously
those calculations need to be delayed in cases where you will also hit X
at roughly the same exact point. It would seem to me that the odds of two
objects being so close together that they don't coincide, but numerical
precision makes them seem to, is much less often than intentional direct
contact between surfaces. If you know that they should occupy the same
apparent space and that one must mathematically appear prior to the
other, there should be some way to figure out which is which and act
accordingly, right? Even if this double checking could only be turned on
manually in certain CSG where you 'know' such a check is needed it would
help.
Then again, I don't have a clue about the internal mechanics, so maybe I
am missing something obvious.. It is definitely not something I could
code and test for myself.. :( And yeah, I know how you get around it, I
just think a better way has to be possible.
--
void main () {
call functional_code()
else
call crash_windows();
}
Post a reply to this message
|
|