WPF 3D相机混乱

时间:2013-11-05 20:20:52

标签: wpf xaml 3d camera

我正在研究一种地板可视化工具(用于透视瓷砖地板),并且正在通过相机进行加速。基本上,我有一个2D矩形(在X& Y轴上),我想看看这个正方形,好像它是一个地板(后面我将“平铺” - 类似于棋盘)。 问题是,花了好几个小时摆弄LookDirection和Position(在透视镜头中),我似乎无法让它直视广场(好像在看房间)。我改变的任何东西都不允许我看到“正面”的场景(“背面”中的X或Y轴)并且它总是以一定角度卡住。我不想旋转模型,只需要相机。 我该怎么做?

        <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="-40,60,50" LookDirection="0.8,-.7,-0.8"  UpDirection="0,0,1" />
        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <Model3DGroup>
                    <DirectionalLight Color="White" Direction="-1,-1,-3" />
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions="0,0,0 25,0,0 25,25,0 0,25,0 " TriangleIndices="0 1 3 1 2 3  "/>
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial Brush="Red"/>
                        </GeometryModel3D.Material>
                    </GeometryModel3D>
                </Model3DGroup>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>

1 个答案:

答案 0 :(得分:2)

我相信你因LookDirection而陷入困境。这是一个方向向量,因此设置XYZ将为您提供偏移外观。你是以一个角度而不是直接向前指向太空。要直视前方,请在X中将LookDirection设置为0,然后将相机的Position X移动到场景的中心,即12.5(因为你的方块从0到25)

<PerspectiveCamera Position="12.5,60,50" LookDirection="0,-.7,-0.8"  UpDirection="0,0,1" />

这将产生一个“正面”视图。根据你的说法,你似乎想要更接近“地板”,所以我将Position移近“地板”并减小了LookDirection向量的角度,就像这样

<PerspectiveCamera Position="12.5,50,20" LookDirection="0,-.7,-0.35"  UpDirection="0,0,1" />

这产生了以下结果。 enter image description here