WPF画三角形的代码中,摄像机的代码如下;包含2个Direction属性;
<PerspectiveCamera Position="-2,2,2" LookDirection="2,-2,-2" UpDirection="0,-1,0"/>
来看一下什么是上方向;
WPF中camera中的updirection属性到底是怎么用的
position属性确定了位置,lookdirection属性确定了照的方向,这两个不就已经可以确定视角了么?要updirection有什么用;
答:可以想象一下,你现在的位置是确定的,你也是往电脑的方向看的,但如果你倒立着看屏幕,你眼睛里呈现的图像就倒过来了。因此要规定一下观察者的“上方”是哪方。
updirection,就是摄像机顶部的方向;摄像机是正的,或者是倒的;
下面这段话解释的很清楚;眼睛为摄像机,当我们移动时,当我们转身时,当我们抬头时;
Position、LookDirection和UpDirection
和场景中的其他物品一样,摄像机也具备Position属性,表示摄像机在场景的具体位置;LookDirection则表示摄像机“看的”方向;而UpDirection同样是一个向量,表示摄像机顶部的方向。
假设我们的眼睛是一个摄像机,那么,眼睛所在的位置(对应原点)就是Position,眼睛所看的方向,例如西北水平方向(用向量表示为-1,0,-1)为Camera的LookDirection,眼睛的顶部(也就是我们的头,用向量表示为0,1,0)为Camera的UpDirection。
当我们移动时,Position方向发生改变;当我们转身时,LookDirection发生改变;当我们抬头时,除了LookDirection,UpDirection也相应地改变成头顶所指的方向了。
先画三角形如下;
现在看一下如何把摄像机倒过来,那么三角形就是倒的,相比上图;
updirection改为(0,0,0),不对,三角形看不到了;
如果把updirection的Z坐标改为-1,看一下,也没倒过来;
updirection改为(0,-1,0),三角形倒过来了;但是位置变了;还不是完全理解,下回继续;
WPF的三维坐标系的方向,根据目前所学,和我们常规习惯一样;X轴,右手方向为正,左手方向为负;Y轴,上为正,下为负;Z轴,从屏幕出来为正,往屏幕里面去为负;