我刚刚开始使用 WPF3D 并陷入困境,这是我的场景:
我有几个使用 Viewport2DVisual3D 实现的精灵,里面有树木的图像,但是当我要移动 ViewPort3D 的 PerspectiveCamera 时,我将开始看到图像是平的。在相机位置和观察点发生变化后,我将如何让所有大约 200 个精灵始终面向相机。
欣赏任何想法
你的相机看起来像:
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
如果需要缩放,则乘以四边形。