首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PerspectiveCamera WPF向下看

PerspectiveCamera WPF向下看
EN

Stack Overflow用户
提问于 2012-12-21 18:54:47
回答 2查看 1.6K关注 0票数 2

我真的对WPF中的透视摄像头感到沮丧,它做了各种各样奇怪的事情,我在互联网上找到的所有解决方案对我来说都不起作用。

目前我有这样的代码:

代码语言:javascript
复制
<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 -1300“起作用,但Position=”-500 1300“不再起作用。我经常使用updirection变量,但我无法解决这个问题……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-21 19:00:29

您需要更改LookDirection和位置。

您所做的是将摄影机从对象的一侧移动到另一侧,但使其看向同一方向:

代码语言:javascript
复制
----- <-- object

  ^
  |
  Camera

如下所示:

代码语言:javascript
复制
  ^
  |
  Camera

----- <-- object

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

代码语言:javascript
复制
  Camera
  |
  V

----- <-- object
票数 4
EN

Stack Overflow用户

发布于 2013-02-23 03:34:20

您可能需要更改三角形索引的顺序。看一看http://www.codeproject.com/Articles/23332/WPF-3D-Primer,更具体地说是“第四步”。

简而言之,定义顶点的顺序也定义了三角形可见的方向。三角形的背面是不可见的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13988799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档