z-order with intersecting meshes

BlitzMax Forums/MiniB3D Module/z-order with intersecting meshes

RexRhino(Posted 2010) [#1]
When I have two meshes at the same location, or in some way intersecting, the z-order seems to be confused.

For example, if I create a spaceship by creating a spherical body, and then I have the sphere bisected by a double sided quad in order to be the "wing", I will be able to see the entire quad superimposed on the sphere.

Is there any way to have meshes touching or intersecting each other without messing up the z-order (the z-order works perfect so long as the meshes are not touching).


Beaker(Posted 2010) [#2]
http://www.sjbaker.org/steve/omniv/love_your_z_buffer.html


RexRhino(Posted 2010) [#3]
Thanks for the info Beaker...

However, I am nearly certain this is not the problem. I am using a modern DX10 era graphics card, and my camera range is set between 5 and 100 (which means that 16 bit should be more than enough, even if my card had a 16 bit z-buffer).


Kryzon(Posted 2010) [#4]
It's the Near range that makes the difference, not really the Far.

Having 5 is very good, that gives much more precision.
Could you post a screenshot of the issue?


RexRhino(Posted 2010) [#5]
I am on my phone now, but will post pictures later.

Anyway, I discovered that this problem only occures for meshes that I have created from scratch. The functions like "createcube" work fine.

Is there anything I could be doing wrong when I create the mesh that could cause z order problems?


RexRhino(Posted 2010) [#6]
I have figured out the problem a little bit better.

The object that is closest to the camera is always draw over the object farther away... Including when objects intersect. Thus if you had a very large box (let's say 10x10), located at 0,0,0... And you had a small box (let's say 1x1), inside the larger box... The small box would be drawn over the large box if it was closer to the camera.


RexRhino(Posted 2010) [#7]
OK, I figured out the problem (which I am pretty sure is a minib3d bug), but not the solution.

If I apply a brush to a mesh, and the brush has alpha blending on, it turns off z-ordering. With alpha blending off, it works fine.

Since I need to use alpha on my textures, is there a work around?


Warner(Posted 2010) [#8]
I'm not sure, but there is a default behaviour about z-ordering and alpha. If you draw an alpha object, objects that are behind it should still be drawn. Even if they are futher down the render queue.


RexRhino(Posted 2010) [#9]
Is there at least a way to set the masked color on a brush?