3

我创建并渲染了一个包含 20SpotLight个点的列表,Helix ViewPort其中包含特定位置。有了计时器,我总是改变SpotLight. 灯光ViewPort设置为: <helix:DirectionalHeadLight Position="2,3,0" Brightness="0.30"></helix:DirectionalHeadLight>

比我还创建一个列表并呈现 20 个球体的列表SphereVisual3DSpotLights 和s的SphereVisual3D位置相似。比我为 spehres 设置材料(在本例中为靛蓝)。见图片:

图1:SphereVisual3D职位

在此处输入图像描述

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

在此处输入图像描述

我想保持球体Material相同,而不lightSpotLights. 我尝试了所有 3 种类型Material

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

DiffuseMaterial图 1.1:带有和的 SpehresSpotLights 在此处输入图像描述

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

SpecularMaterial图 2.1:带有和的 SpehresSpotLights 在此处输入图像描述

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

SpecularMaterial图 3.1:带有和的 SpehresSpotLights 在此处输入图像描述

是否可以设置Material不反射光线并保持其颜色的a?有没有可能设置纯色?

4

1 回答 1

1

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

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

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

于 2017-01-19T12:32:23.020 回答