我创建并呈现包含SpotLight
Helix
中具有特定位置的20 ViewPort
个点的列表。使用计时器我总是改变SpotLight
的颜色。 ViewPort
灯设置为:
<helix:DirectionalHeadLight Position="2,3,0" Brightness="0.30"></helix:DirectionalHeadLight>
我还创建一个列表并渲染一个包含20个球体SphereVisual3D
的列表。 SpotLight
和SphereVisual3D
具有相似的位置。比我为spehres设置了一个材料(在这种情况下是indigo)。见图:
图1:SphereVisual3D
职位
图2:SpotLight
位置(每SpotLight
个不同的颜色)
我希望保持领域Material
不变,而不反映light
中的SpotLights
。
我尝试了所有3种Material
:
1:sphere.Material = new DiffuseMaterial(new SolidColorBrush(Colors.Indigo));
图1.1:与DiffuseMaterial
和SpotLights
的Spehres
2:sphere.Material = new SpecularMaterial(new SolidColorBrush(Colors.Indigo),1);
图2.1:与SpecularMaterial
和SpotLights
的Spehres
3:sphere.Material = new EmissiveMaterial(new SolidColorBrush(Colors.Indigo));
图3.1:与SpecularMaterial
和SpotLights
的Spehres
是否可以设置不反射光线并保持其颜色的Material
?有没有可能设置一个简单的颜色?
答案 0 :(得分:1)
我认为你不能仅通过材料来做到这一点。
我建议用面向相机的二维平面(圆圈)(例如在Helix中使用SphereVisual3D
)替换MeshBuilder.AddEllipse()
s,并在它们上使用DiffuseMaterial
。
当然,当相机的位置或外观方向发生变化时,您必须做出反应并相应地更改二维元素的方向。