wpf 3d当相机在前面时我可以看到shpe但是当相机回来时我不能

时间:2016-04-08 17:56:58

标签: c# wpf xaml

<Window x:Class="Wpf3DTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="WPF 3D Test" Height="400" Width="400">
<Grid Background="Black"
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />

    </Grid.RowDefinitions>


    <Viewport3D x:Name="viewport" Grid.Row="1" >
        <Viewport3D.Camera>
            <PerspectiveCamera x:Name="camera" FarPlaneDistance="50" LookDirection="0,+10,0" 
                UpDirection="0,0,1" NearPlaneDistance="0" Position="0,-5,0"
                FieldOfView="50" />

        </Viewport3D.Camera>

        <ModelVisual3D x:Name="model">
            <ModelVisual3D.Content>
                <Model3DGroup x:Name="group" >
                    <AmbientLight Color="DarkGray" />


                    <DirectionalLight Color="White" Direction="0,7,0" />

                    <DirectionalLight Color="White" Direction="0,-7,0" />


                    <DirectionalLight Color="White" Direction="4,8,5" />
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>

                            <MeshGeometry3D Positions="-1,0,-1 -1,0,1 1,0,1 1,0,-1" TriangleIndices="0,1,2"/>
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial Brush="Blue"/>
                        </GeometryModel3D.Material>
                    </GeometryModel3D>
                </Model3DGroup>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>
</Grid>

这是我的第一个问题。我希望能找到。 当相机在前面时,可以看到形状。 但当ı改变相机后,不能。

ı认为它是光的原因。 ı增加2个不同的地方。但我不能

相机前端

<PerspectiveCamera x:Name="camera" FarPlaneDistance="50" LookDirection="0,-10,0" 
                UpDirection="0,0,1" NearPlaneDistance="0" Position="0,5,0"
                FieldOfView="50" />

相机后退

<PerspectiveCamera x:Name="camera" FarPlaneDistance="50" LookDirection="0,+10,0" 
                UpDirection="0,0,1" NearPlaneDistance="0" Position="0,-5,0"
                FieldOfView="50" />

两个相机都看着形状 感谢。

1 个答案:

答案 0 :(得分:0)

您遇到back-face culling

  

背面剔除是3D引擎执行可见性检查的重要部分。其目的是检测特定场景中不可见的多边形 - 即远离观察者的多边形。

From Gamasutra

在大多数3D系统中,只有正面可见。正面由缠绕顺序或点确定。在MeshGeometry3D的情况下,正面的缠绕顺序是逆时针的。如果你要颠倒&#34; TriangleIndices&#34;中的点的顺序。属性:

<MeshGeometry3D Positions="-1,0,-1 -1,0,1 1,0,1 1,0,-1" TriangleIndices="2,1,0"/>

然后你应该只看到&#34; back&#34;相机,它将在&#34;前面&#34;相机。