【问题标题】:How to set a material that does not reflect light in Helix Toolkit ViewPort?如何在 Helix Toolkit ViewPort 中设置不反射光线的材质?
【发布时间】:2016-09-20 06:00:40
【问题描述】:

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

我还创建了一个列表并渲染了一个包含 20 个球体的列表SphereVisual3DSpotLights 和SphereVisual3Ds 有相似的位置。比我为 spehres 设置材料(在本例中为靛蓝)。见图片:

图 1:SphereVisual3D 位置

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

我想保持球体Material 不变,而不从SpotLights 反射light。 我尝试了所有 3 种类型的 Material:

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

图 1.1:带有 DiffuseMaterialSpotLights 的 Spehres

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

图 2.1:带有 SpecularMaterialSpotLights 的 Spehres

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

图 3.1:带有 SpecularMaterialSpotLights 的 Spehres

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-11
      • 2023-04-06
      • 2019-06-03
      • 2019-06-15
      • 2017-07-29
      • 2019-03-25
      • 2013-12-22
      • 2021-04-07
      相关资源
      最近更新 更多