3D не рендерится в приложении WPF
Я пытаюсь визуализировать 3D-объект, используя приведенный ниже код. Но когда я запускаю приложение, ничего не отображается. Кажется, пустым. Я что-то пропустил?
<Page x:Class="SampleWpfApplication.DemoPage3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DemoPage3" xmlns:my="clr-namespace:SampleWpfApplication">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="126*" />
<RowDefinition Height="126*" />
<RowDefinition Height="66" />
</Grid.RowDefinitions>
<Viewport3D x:Name="theView3D">
<Viewport3D.Camera>
<PerspectiveCamera Position="6,6,6" LookDirection="-4,-4,-4"
UpDirection="0,1,0" />
</Viewport3D.Camera>
<ModelVisual3D x:Name="theModel">
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D x:Name="theGeometry">
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="0,1,0 1,-1,1 -1,-1,1 1,-1,-1 -1,-1,-1"
Normals="0,1,0 -1,0,1 1,0,1 -1,0,-1 1,0,-1"
TriangleIndices="0,2,1 0,3,1 0,3,4 0,2,4" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="Red" Opacity="0.9"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="Green" Opacity="0.9"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<DirectionalLight Direction="0,-5,-2" />
<DirectionalLight Direction="3,2,2" />
<GeometryModel3D x:Name="theGeometry2">
<GeometryModel3D.Transform>
<ScaleTransform3D ScaleX="2" ScaleY="2" ScaleZ="2"></ScaleTransform3D>
</GeometryModel3D.Transform>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="0,1,0 1,-1,1 -1,-1,1 1,-1,-1 -1,-1,-1"
Normals="0,1,0 -1,0,1 1,0,1 -1,0,-1 1,0,-1"
TriangleIndices="0,2,1 0,3,1 0,3,4 0,2,4" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="#7FB0C4DE" Opacity="0.9"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="#7FB0C4DE" Opacity="0.9"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Grid>
</Page>
2 ответа
Похоже, для меня это хорошо в Кахамле.
Возможно, вам следует попробовать другую машину или использовать Kaxaml, чтобы увидеть, если вы получите какой-либо результат вообще. На данный момент, это может быть любое количество вещей.
РЕДАКТИРОВАТЬ: я заметил, что я не копировал Grid.RowDefinitions
, Когда я добавляю их, он обрезает область просмотра. Если вы удалите их, это работает?
Я пытаюсь визуализировать ваш Viewport3D в приложении WPF, и он успешно отображается. Это показывает мне сетку пирамиды.
Исходя из кода выше, вы получаете пустой экран, потому что вы не определяете высоту и ширину страницы.
Вот мое решение для вашей страницы (пожалуйста, добавьте свойства высоты и ширины страницы следующим образом):
<Page x:Class="SampleWpfApplication.DemoPage3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="DemoPage3" xmlns:my="clr-namespace:SampleWpfApplication">