Мое решение для этого было использовать стандартный элемент управления, и укладывать элементы управления Viewport3D друг на друга. Это не относится к упорядочению по глубине, но в моем случае я хотел, чтобы элементы в элементе управления были в любом случае перед остальными элементами:
<ItemsControl ItemsSource="{Binding XXX}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type XXX}">
<Viewport3D Camera="{Binding Camera, ElementName=MainViewport}">
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White"/>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
...my template here...
</ModelVisual3D>
</Viewport3D>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>