WPF 3D广告牌

时间:2009-11-08 18:04:53

标签: wpf 3d label

在3D场景中,我们经常需要在场景中移动(旋转,平移)的3D对象旁边应用标签(小文本或图标)。这些标签应始终面向相机,但仍与对象一起移动。我相信这种技术叫做广告牌。

如果标签总是保持相同的尺寸,那么另一个很酷的功能是 - 无论相关物体有多远。所以标签似乎生活在2D屏幕空间而不是3D场景图中。

有没有人在WPF中找到一个如何做到这一点的聪明方法?

1 个答案:

答案 0 :(得分:1)

对于广告牌,您需要确保脸部法线指向相机。算法是面法线和视图方向之间的点积应为-1(减1)。

我有一些旧的C代码可以做到这一点,但它可能不是特别有用。

为了保持对象大小相同,您需要计算屏幕大小,然后应用变换以使其保持您想要的恒定大小。

但是,如果您希望对象看起来像是在2D空间中,为什么不在2D叠加中绘制它?这将同时解决广告牌和缩放问题。您可以计算出标签的屏幕位置,然后使用2D绘图功能。