确定 WPF 中的 3D 元素是否距离太远而看不到

问题描述 投票:0回答:1

这个基于 WPF 的 sim 使用每帧动画在条件变化时(重新)定位元素。有些元素位于视野内,但距离太远以致于不再可见。我想检测这种情况并修改该元素,以便即使该元素距离太远而无法看到,视觉指示器仍然存在。确定某个元素已达到 Viewport3D 中的像素大小阈值可能是实现此目的的一种方法。

WPF 系统中是否有一种方法可以确定 Viewport3D 中的 XY 坐标,3D 坐标空间中的坐标将投影到该坐标?

似乎可以在 WPF 之外编写 3D 到 2D 投影计算的代码。但既然 WPF 已经在这样做了,也许有办法利用它。

c# wpf 3d projection
1个回答
0
投票

我认为一种方法是计算对象的边界球。 (有一些代码可以做到这一点,不难找到和/或实现) 然后你就可以对每帧进行简单的计算。

O 是你的相机位置,C 是你的边界球中心,R 是边界球半径,D 是你正在搜索的距离。

您只需计算:D = O.DistanceTo(X) - R 因此,如果您不使网格变形,则边界球体将在加载时计算,并且不会更改大小。 D 计算非常快。

(只是为了论证,如果网格在一维上非常拉长,就像一根长管一样,这可能会产生不理想的效果。->那么球体将非常大,并且从侧面看,您的物体不会在正确的时间)

© www.soinside.com 2019 - 2024. All rights reserved.