首页 > 解决方案 > 使用 Helixtoolkit.SortingVisual3D 通过透明表面单击事件

问题描述

我希望我的可点击蓝色立方体在通过透明表面 MeshGeometryVisual3D 元素点击它时改变颜色。当立方体容器是 ViewPort 类的子容器时,一切正常,但通过表面不可见(无排序),但当它是 Helixtoolkit.SortingVisual3D 的子容器时,单击事件停止工作,但通过表面可见!这是我使用的 SortingVisual3D 元素的代码:

<helix:SortingVisual3D x:Name="sortingVisual1" Method="BoundingSphereSurface" SortingFrequency="5" >  
   <helix:MeshGeometryVisual3D x:Name="_visual"  MeshGeometry="{Binding objectGeometry}"   Visible="{Binding IsChecked, ElementName=MeshVisible}" >
   </helix:MeshGeometryVisual3D>
</helix:SortingVisual3D>

添加到 SortingVisual3D 元素的多维数据集的代码是这样的:

 AddCubePoint cpsorting = new AddCubePoint(middle, defaultMaterial);
            sortingVisual1.Children.Add(cpsorting);

在此处输入图像描述

我曾尝试在同一位置使用两个相同的立方体(ViewPort 的一个孩子,SortingVisual3D 的第二个),但点击表面后颜色会改变,仅在 ViewPort 的孩子上(见图)!

在此处输入图像描述

我是 helix-3d-toolkit 的新手,经过 2 天的研究,我找不到任何可行的解决方案或想法如何解决这个问题!请帮我 !

标签: wpfeventstransparencyhelix-3d-toolkithelix

解决方案


您需要将立方体放在半透明网格之前,因此首先渲染立方体。将透明网格命中测试设置为 false


推荐阅读