wpf - PerspectiveCamera WPF 向下看

标签 wpf 3d perspectivecamera

我真的对 WPF 中的透视相机感到沮丧,它会做各种奇怪的事情,而且我在互联网上找到的所有解决方案都不适合我。

目前我有这个代码:

<Window x:Class="projectv1.Views.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Name="MainWin">
<Grid HorizontalAlignment="Stretch" >
    <Viewport3D Name="viewport3D1" >
        <Viewport3D.Camera>

            <PerspectiveCamera x:Name="camMain"  Position="-500 -10 300" LookDirection="0 -0.2 -1" UpDirection="0 1 0" FarPlaneDistance="10000" NearPlaneDistance="1" />

        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight x:Name="dirLightMain" Direction="-1,-1,-1">
                </DirectionalLight>
            </ModelVisual3D.Content>
        </ModelVisual3D>

        <ModelVisual3D>
            <ModelVisual3D.Content>
                <GeometryModel3D>
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D x:Name="meshMain"
                            Positions="-800,0,-1000 -200,0,-1000 -500,0,-100"
                            TriangleIndices="0,1,2" >
                        </MeshGeometry3D>
                    </GeometryModel3D.Geometry>
                    <GeometryModel3D.Material>
                        <DiffuseMaterial x:Name="matDiffuseMain">
                            <DiffuseMaterial.Brush>
                                <SolidColorBrush Color="Red"/>
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
                    </GeometryModel3D.Material>
                </GeometryModel3D>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>

</Grid>

所以我有一个三角形,我从下面看它......但现在我想从顶部看它,所以我将相机的 Y 参数的位置更改为任何大于 0 的值,但然后突然我什么也看不见了。例如Position="-500 -1 300"有效,但 Position="-500 1 300"不再有效。我经常使用向上变量,但无法解决这个问题....

最佳答案

您需要更改 LookDirection 以及位置。

您所做的是将相机从对象的一侧移动到另一侧,但保持其朝向同一方向:

----- <-- object

  ^
  |
  Camera

像这样:

  ^
  |
  Camera

----- <-- object

如果您也翻转相机方向,您将得到正确的结果:

  Camera
  |
  V

----- <-- object

关于wpf - PerspectiveCamera WPF 向下看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988799/

相关文章:

c# - 如何更改 WPF/C# 密码框的背景颜色

wpf - 是否可以在 C# 中显示、隐藏和操作 Windows 8 屏幕键盘?

c# - SlimDX Direct3D11 中的线框

javascript - 如何从Three.js中给出X和Y的网格表面获取高程值(Z坐标)?

android-camera - 透视投影中的笛卡尔坐标系

wpf - wpf 中的 StringFormat 本地化问题

c# - Directshow录制/预览问题

google-maps - 在 Google map 中使用 3D

python - OpenCV:使用 solvePnP 确定单应性

javascript - ThreeJS轨迹球控制相机旋转