1

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

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

欣赏任何想法

4

1 回答 1

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如果需要缩放,则乘以四边形。

于 2013-07-01T02:39:57.137 回答