在WPF3D上绘制图像控件以始终面向相机

时间:2013-06-30 22:01:51

标签: wpf 3d sprite

我刚刚开始使用WPF3D而陷入困境,这是我的情景:

我使用Viewport2DVisual3D实现了几个精灵,里面有树的图像,但是当我要移动ViewPort3D的PerspectiveCamera时,我将开始看到图像是平的。在相机位置和外观点发生变化后,我将如何让所有约200个精灵始终面向相机。

欣赏任何想法

1 个答案:

答案 0 :(得分:0)

您的相机看起来像:

ux  vx  wx  x
uy  vy  wy  y
uz  vz  wz  z
0   0   0   1

x, y, z)是相机的位置,u, v, w是相机矢量的基础。

仅保持位置会使您的精灵始终面向相机。那是

1  1  0  x
0  1  0  y
0  0  1  z
0  0  0  1

在组合的世界相机矩阵中,您可以使用旋转,平移和缩放的组合。 除了需要保持缩放之外,相同的方法将起作用。 每个维度的缩放可以计算为

dx = length(u)
dy = length(v)
dz = length(w)

你的世界相机变换将是

dx  0   0   x
0   dy  0   y
0   0   dz  z
0   0   0   1

另一个更简单的解决方案是使用原始世界相机矩阵变换精灵的中心(一个点不会受到旋转的影响)。 变换中心后,在其周围绘制精灵四边形。如果需要缩放,则将四边形乘以dx, dy, dz