WPF 3D x坐标向后显示

时间:2019-05-28 09:25:59

标签: wpf 3d

使用WPF 3D,我将几何定义如下:

<MeshGeometry3D Positions="0 0 0  1 1 0  1 0 0" />

我的相机定义为

<PerspectiveCamera FarPlaneDistance="20" 
                    LookDirection="0,0,1" 
                    UpDirection="0,1,0" 
                    NearPlaneDistance="0" 
                    Position="0,0,-10" 
                    FieldOfView="45" />

但是,当我查看生成的图片时,我得到了:

illustration

似乎X坐标向后,即X轴朝左。奇怪的是,当我尝试翻转符号时,即当我书写时

<MeshGeometry3D Positions="0 0 0  -1 1 0  -1 0 0" />

图像完全消失。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

我将首先回答您的第二个问题... WPF等3d引擎通常采用背面剔除,即不渲染指向远离相机的面部以提高性能。您可以通过更改MeshGeometry3D中点的顺序或将BackMaterial分配给GeometryModel3D(而不是常规Material)来解决此问题。

关于第一个问题,不是X而是Z。如果您查看the WPF 3D Graphics Overview on the Microsoft site,您会看到Z变为负数进入屏幕。您已将相机设置为[0,0,-10],并将外观方向设置为[0,0,1],因此相机实际上位于对象的“后面”并向后看。将这些值分别更改为[0,0,10]和[0,0,-1],并添加一个BackMaterial,就像我上面提到的那样,一切将再次变得很好。