wpf - 如何在 Helix Toolkit ViewPort 中设置不反光的 Material ?

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

我创建并呈现一个包含 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职位

enter image description here

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

enter image description here

我想保留球体 Material一样,不反射(reflect)light来自 SpotLights . 我尝试了所有 3 种类型的 Material :

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

图 1.1:带有 DiffuseMaterial 的球体和 SpotLights enter image description here

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

图 2.1:带有 SpecularMaterial 的球体和 SpotLights enter image description here

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

图 3.1:带有 SpecularMaterial 的球体和 SpotLights enter image description here

是否可以设置 Material不反射光并保持其颜色?是否可以设置纯色?

最佳答案

我认为仅靠 Material 无法做到这一点。

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

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

关于wpf - 如何在 Helix Toolkit ViewPort 中设置不反光的 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389575/

相关文章:

opengl - 运动矢量 - 如何正确计算它?

objective-c - 如何复制 Finder 智能文件夹

Cocoa/Objective-C - 具有文本输入的子窗口,主窗口不会变为非事件状态

objective-c - 限制 NSMetadataQuery 的范围

c# - WPF C# - 从另一个线程更新进度条

WPF 不支持 Textbox.MinLines 进行自动高度计算

wpf - DependencyObject.AssociatedObject 始终为 null

WPF 圆角边框 ListView 裁剪问题

vector - 如何计算 3D 中相对于相机视角方向的方位角和仰角......?

c++ - OpenGL 阴影贴图 - 阴影贴图纹理根本没有被采样?