在3D场景中,我们通常需要在场景中四处移动(旋转、平移)的3D对象旁边贴上标签(小文本元素或图标)。这些标签应始终面向相机,但仍可随对象移动。我相信这种技术被称为广告牌。
另外一个很酷的特性是,无论关联的对象距离有多远,标签都将始终保持相同的大小。因此,标签似乎生活在2D屏幕空间中,而不是3D场景图中。
有没有人能想出一个聪明的办法在WPF中做到这一点?
发布于 2009-11-09 02:18:57
对于广告牌,您需要确保面法线指向相机。算法是面法线和观察方向之间的点积应该是-1 (负1)。
我有一些旧的C代码可以做到这一点,但它可能不是特别有用。
为了保持对象的大小不变,您需要计算出屏幕大小,然后应用转换以使其保持所需的恒定大小。
但是,如果希望对象看起来就像在二维空间中一样,为什么不在二维覆盖中绘制它呢?这将同时解决广告牌和伸缩问题。您可以计算出标签的屏幕位置,然后使用2D绘图功能。
https://stackoverflow.com/questions/1697373
复制相似问题