使Camera LookDirection看起来正面

时间:2015-06-07 05:28:36

标签: c# wpf 3d camera

如何在3D中查看WPF模型的正面?

我很困惑为LookDirection设置X Y Z.

我不知道当我设置xyz时会发生什么,我不知道相机在哪里看。我对UpDirection并不知道同样的事情。

以下是我的相机属性:

camera.Position = new Point3D(100, 100, 150);
camera.LookDirection = new Vector3D(-100, -100, -100);
camera.UpDirection = new Vector3D(0, 0, 1);

问题是相机从后面看。 模型显示为下面的立方体。

enter image description here

如何让它看起来正面?

另外请解释如何设置xyz。我知道什么属性做但我无法想象它们。

我认为X是从右到左.Y是深度。 Z上升了。

1 个答案:

答案 0 :(得分:12)

想象一下,你在3D空间中移动头部而不是相机。然后Camera.Position指定您的头部位置,Camera.LookDirection确定您正在查看的方向,Camera.UpDirection显示您的头部方向。以下图片为您清理了一切。

在第一张图片中,相机以+ Z轴为中心,向下看-Z轴和你的形状:

enter image description here

当您将camera.Position设置为例如(x = 1,y = 0,z = 10)时,相机位置会改变如下:

enter image description here

因此,相机向右移动一点,因此您将在视图的左侧看到您的形状。

现在,如果将camera.LookDirection更改为说(x = 0,y = 1,z = -1),那么相机只会查看点(0,1,-1),如下所示:

enter image description here

重要编辑:

根据DaveInCaz的评论,LookDirectionLookAtPoint不同 (PrespectiveCamera以前的属性是Point3D而不是Vector3D LookDirection)。

LookDirection实际上等于“要点”减去“相机位置”

这意味着在上图中,如果我们想要位于(1,0,10)的相机看点(0,1,-1),那么camera.UpDirection应该是:< / p>

(0,1,-1) - (1,0,10)=( - 1,1,-11)。

最后,camera.UpDirection确定相机顶部指向的位置。在下图中,将require 'combine_pdf' watermark = CombinePDF.load("watermark.pdf").pages[0] pdf = CombinePDF.load "content_file.pdf" pdf.pages.each {|page| page.fix_rotation << watermark} pdf.save "content_with_watermark.pdf" 设置为(-0.5,1,0)会导致相机逆时针旋转:

enter image description here

我希望这些照片能为你清楚。