2

私は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 = "-5001300"は機能しなくなります。updirection変数でたくさん遊んだのですが、これを修正できませんでした。

4

2 に答える 2

4

位置だけでなく、も変更する必要がありますLookDirection

これまでに行ったことは、カメラをオブジェクトの一方の側からもう一方の側に移動することですが、同じ方向を向いたままにします。

----- <-- object

  ^
  |
  Camera

このような:

  ^
  |
  Camera

----- <-- object

カメラの方向も反転すると、正しい結果が得られます。

  Camera
  |
  V

----- <-- object
于 2012-12-21T11:00:28.633 に答える
0

三角形のインデックスの順序を変更する必要がある場合があります。http://www.codeproject.com/Articles/23332/WPF-3D-Primer、より具体的には「ステップ4」をご覧ください。

つまり、頂点を定義する順序によって、三角形が表示される方向も定義されます。三角形の裏側は見えません。

于 2013-02-22T19:34:19.923 に答える