<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" />
两个相机都看着形状 感谢。
答案 0 :(得分:0)
背面剔除是3D引擎执行可见性检查的重要部分。其目的是检测特定场景中不可见的多边形 - 即远离观察者的多边形。
在大多数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;相机。