我有一个房子的3D模型,屋顶是透明的,使得可以看到房间内部(类似于这里)。
但是(目前)我没有纹理,每个表面都是相同的颜色,例如:
var myMaterial = new DiffuseMaterial (new SolidColorBrush(myColor))
如果我在WPF Viewport3D中查看它,我希望能够区分表面。例如,我想知道地板何时结束以及墙壁何时开始。
通过对对象进行照明应该是可能的。我已经尝试过:
环境光不起作用,因为所有表面看起来都是同样的颜色:
myViewport3D.Children.Add(new ModelVisual3D(){Content = new AmbientLight(Colors.White)})
如果我使用定向光并将其位置固定在移动相机上,有些表面法线有时几乎垂直于相机/光源,因此几乎是黑色的,这看起来更加不自然。那么,在WPF Viewport3D中区分单色3D对象的表面的好方法是什么?