0

在XAML中,ProjectionPlane用于在三维轴上旋转元素。例如,如果我想倾斜的长方形的右边缘向我,我这样做:如何缩小ProjectPlane动画的视野?

<!-- zero rotation --> 
<Rectangle Fill="White" Height="200" Width="200"> 
    <Rectangle.Projection> 
     <PlaneProjection RotationY="0" /> 
    </Rectangle.Projection> 
</Rectangle> 

<!-- 45 deg rotation --> 
<Rectangle Fill="White" Height="200" Width="200"> 
    <Rectangle.Projection> 
     <PlaneProjection RotationY="45" /> 
    </Rectangle.Projection> 
</Rectangle> 

<!-- 85 deg rotation --> 
<Rectangle Fill="White" Height="200" Width="200"> 
    <Rectangle.Projection> 
     <PlaneProjection RotationY="85" /> 
    </Rectangle.Projection> 
</Rectangle> 

结果矩形(S)是这样的:

enter image description here

到目前为止好。这是我的问题。随着角度增加接近90度,矩形越来越倾斜。是否有一种属性或技术可以让ProjectionPlane沿着Y轴一直旋转到90度,但是减小了方向(或改变了视野)?

换句话说,从后角到角落的角度会减小,因此如果矩形内含有角度,则角度会更明显。

下面是一个前后的问题,尽可能使问题变得清晰。左边是我得到的。在右边是我想要的。说明问题略显夸张。我希望这是有道理的。

enter image description here

回答

1

可惜PlaneProjection不允许你改变投影矩阵。为了控制投影,您必须使用Matrix3DProjection。您可以使用文档中提供的示例代码,也可以查看将WinDBT库移植到Matrix3DEx

你可以尝试的另一件事是沿着Z轴推回你的对象,并将其放大以便保持它的大小。由于物体会远离相机,因此在翻盖时会显示更少的失真。

BTW Accordingly to Jaime Rodriguez用于PlaneProjection的fov设置为57度,对于大多数显示器来说有点宽。