I have a transparent Viewport2DVisual3D outer that is wrapped around another Viewport2DVisual3D inner. When outer is added to the viewport before inner, inner is invisible (even though outer is transparent). If inner is added first, it works correctly.
Visuals are added to the viewport by the user, so the order in which they are added is unknown. I don’t want to remove and re-add everything in the correct order every time the user adds a new visual if at all possible. Is there another way to make inner visible through outer regardless of the order that the visuals are added in?
Unfortunately, re-ordering your Viewport2DVisual3D’s from back-to-front (that is, for one to show up “behind” another transparent element, it must be added first) is precisely what you have to do.
See details here at the wpf3d team blog.