如何在Helix Toolkit ViewPort中设置不反射光的材质?

时间:2016-05-23 11:17:58

标签: wpf 3d material spotlight helix-3d-toolkit

我创建并呈现包含SpotLight Helix中具有特定位置的20 ViewPort个点的列表。使用计时器我总是改变SpotLight的颜色。 ViewPort灯设置为:  <helix:DirectionalHeadLight Position="2,3,0" Brightness="0.30"></helix:DirectionalHeadLight>

我还创建一个列表并渲染一个包含20个球体SphereVisual3D的列表。 SpotLightSphereVisual3D具有相似的位置。比我为spehres设置了一个材料(在这种情况下是indigo)。见图:

图1:SphereVisual3D职位

enter image description here

图2:SpotLight位置(每SpotLight个不同的颜色)

enter image description here

我希望保持领域Material不变,而不反映light中的SpotLights。  我尝试了所有3种Material

1:sphere.Material = new DiffuseMaterial(new SolidColorBrush(Colors.Indigo));

图1.1:与DiffuseMaterialSpotLights的Spehres enter image description here

2:sphere.Material = new SpecularMaterial(new SolidColorBrush(Colors.Indigo),1);

图2.1:与SpecularMaterialSpotLights的Spehres enter image description here

3:sphere.Material = new EmissiveMaterial(new SolidColorBrush(Colors.Indigo));

图3.1:与SpecularMaterialSpotLights的Spehres enter image description here

是否可以设置不反射光线并保持其颜色的Material?有没有可能设置一个简单的颜色?

1 个答案:

答案 0 :(得分:1)

我认为你不能仅通过材料来做到这一点。

我建议用面向相机的二维平面(圆圈)(例如在Helix中使用SphereVisual3D)替换MeshBuilder.AddEllipse() s,并在它们上使用DiffuseMaterial

当然,当相机的位置或外观方向发生变化时,您必须做出反应并相应地更改二维元素的方向。