我创建并呈现一个包含 20 SpotLight
的列表点 Helix
ViewPort
具有特定位置的。使用计时器,我总是更改 SpotLight
的颜色. ViewPort
灯光设置为:
<helix:DirectionalHeadLight Position="2,3,0" Brightness="0.30"></helix:DirectionalHeadLight>
然后我还创建了一个列表并渲染了一个包含 20 个球体的列表 SphereVisual3D
. SpotLight
s 和 SphereVisual3D
s 有相似的位置。比我为球体设置 Material (在本例中为靛蓝)。看图:
图 1:SphereVisual3D
职位
图 2:SpotLight
位置(每个 SpotLight
有不同的颜色)
我想保留球体 Material
一样,不反射(reflect)light
来自 SpotLights
.
我尝试了所有 3 种类型的 Material
:
1:sphere.Material = new DiffuseMaterial(new SolidColorBrush(Colors.Indigo));
图 1.1:带有 DiffuseMaterial
的球体和 SpotLights
2:sphere.Material = new SpecularMaterial(new SolidColorBrush(Colors.Indigo),1);
图 2.1:带有 SpecularMaterial
的球体和 SpotLights
3:sphere.Material = new EmissiveMaterial(new SolidColorBrush(Colors.Indigo));
图 3.1:带有 SpecularMaterial
的球体和 SpotLights
是否可以设置 Material
不反射光并保持其颜色?是否可以设置纯色?
最佳答案
我认为仅靠 Material 无法做到这一点。
我建议将 SphereVisual3D
替换为面向相机的二维平面(圆圈)(例如,在 Helix 中使用 MeshBuilder.AddEllipse()
)并使用DiffuseMaterial
在它们上面。
当然,当相机的位置或观察方向发生变化时,您将不得不使用react并相应地改变 2d 元素的方向。
关于wpf - 如何在 Helix Toolkit ViewPort 中设置不反光的 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389575/