I have a 3D Modell of a house, where the roof is invisible so that the rooms can be seen (like here)
But (for now) I have no textures and each surface has the same color, e.g.,
var myMaterial = new DiffuseMaterial (new SolidColorBrush(myColor))
If I view it in a WPF Viewport3D, I want to be able to differentiate between the surfaces. e.g., I want to see when the floor ends and the wall starts.
This should be possible by lighting the object. I already tried:
Ambient light doesn't work, because all surfaces would look equally colored:
myViewport3D.Children.Add(new ModelVisual3D(){Content = new AmbientLight(Colors.White)})
And if I use directional light and stick its position to the moving camera, some surface normals are sometimes nearly perpendicular to the camera/light and so are nearly black, which looks even more unnatural.
So what is a good way to distinguish the surfaces of a single-colored 3DObject in a WPF Viewport3D?
Edited after user "jdv" wrote his comment