c# - 3d 对象未渲染

标签 c# wpf 3d

我有一个带有主窗口的 WPF 应用程序。因为我有一个框架,框架内容是一个页面。

现在页面中有 4 个包含 Viewport2DVisual3D 的 viewport3D,其中我有图像元素。

问题: 在某些 PC 上,我的应用程序运行良好,但在某些 PC 上,我的应用程序不呈现 viewport3d 或不呈现框架。不知道,但它在主窗口中没有显示任何内容。

问题出现在 Acer 笔记本电脑上 Model .

呈现: True Image

未呈现: enter image description here

编辑: 当我将框架放在网格中时,这个问题再次发生。 (我在一个框架中显示此页面,该框架是我窗口的主要内容:当我将框架放在网格中时,它没有显示对象) 似乎这发生在具有共享图形的笔记本电脑上

编辑 2:

<Page x:Class="MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              Loaded="Page_Loaded_1"
        x:Name="myMainPage" FlowDirection="RightToLeft"  >

    <Page.Resources>

        <Style  TargetType="ContentControl" x:Key="MenuItemsStyle">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>

                        <Viewport3D VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="False">
                            <Viewport3D.Camera>
                                <PerspectiveCamera x:Name="myCam" FieldOfView="90" Position="{Binding ElementName=myMainWindow, Path=CameraHeight}" NearPlaneDistance="1" FarPlaneDistance="10"/>
                            </Viewport3D.Camera>

                            <ModelVisual3D>
                                <ModelVisual3D.Content>
                                    <Model3DGroup>
                                        <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
                                    </Model3DGroup>
                                </ModelVisual3D.Content>
                            </ModelVisual3D>

                            <Viewport2DVisual3D x:Name="V2d3d">

                                <Viewport2DVisual3D.Transform>
                                    <Transform3DGroup>
                                        <RotateTransform3D >
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D Axis="0,1,0" Angle="0" x:Name="aar3D"/>
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                    </Transform3DGroup>
                                </Viewport2DVisual3D.Transform>

                                <Viewport2DVisual3D.Material>
                                    <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
                                </Viewport2DVisual3D.Material>
                                                              <Viewport2DVisual3D.Geometry>
                                    <MeshGeometry3D Positions="{Binding   ElementName=myMainWindow, Path=MeshPosions}"
                            TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
                                </Viewport2DVisual3D.Geometry>
                                <Border Name="mainBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                                    <Border.Style>
                                        <Style TargetType="Border">
                                            <Setter Property="BorderThickness" Value="1.2"/>
                                            <Setter Property="Background" >
                                                <Setter.Value>
                                                    <SolidColorBrush Color="Transparent"/>
                                                </Setter.Value>
                                            </Setter>
                                            <Setter Property="BorderBrush" >
                                                <Setter.Value>
                                                    <SolidColorBrush Color="Transparent"/>
                                                </Setter.Value>
                                            </Setter>
                                                                              </Style>
                                    </Border.Style>
                                    <ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                                                      Content="{TemplateBinding ContentControl.Content}">
                                        <ContentPresenter.Triggers>
                                            <EventTrigger RoutedEvent="ContentPresenter.MouseLeftButtonDown">
                                              // Axis Animation
                                            </EventTrigger>
                                        </ContentPresenter.Triggers>
                                    </ContentPresenter>
                                </Border>
                            </Viewport2DVisual3D>
                        </Viewport3D>

                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <EventTrigger RoutedEvent="ContentControl.MouseLeftButtonDown" >
                  //Axis Animation
                </EventTrigger>
                <EventTrigger RoutedEvent="ContentControl.MouseEnter">
                   //ScaleAnimation
                               </EventTrigger>
                <EventTrigger RoutedEvent="ContentControl.MouseLeave">
                   //ScaleAnimation
                </EventTrigger>
            </Style.Triggers>
        </Style>

    </Page.Resources>

    <Page.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            //Load Object Scale And Fade In
        </EventTrigger>
    </Page.Triggers>

    <Grid Name="MainGrid">


                 <Canvas Name="MainCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FlowDirection="LeftToRight">
            <ContentControl Opacity="0" Name="MenuItem1" Style="{StaticResource MenuItemsStyle}" 
                            MouseDown="MenuItem1_MouseDown" Panel.ZIndex="1" >
                <Image Source="/IsargaranProject;component/Images/isargari.jpg"/>
                <ContentControl.RenderTransform>
                    <ScaleTransform ScaleX="0.7" ScaleY="0.7"  x:Name="MenuItem1ST"/>
                </ContentControl.RenderTransform>
            </ContentControl>
        </Canvas>

    </Grid>
</Page>

最佳答案

如果您使用的是 OPENGL 或 DirectX3D,那么您会发现无法渲染的笔记本电脑将缺少一些插件,例如无法安装 DirectX 3D 或 OpenGL,您可以尝试使用这两个 3D 渲染工具来实现同样的目的。我过去我曾尝试过这个,我制作了一个 Graph 程序,它遇到了同样的问题,但是当我安装 OPENGL 和 DirectX3D 时,它工作正常!

关于c# - 3d 对象未渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772795/

相关文章:

wpf - 如何在C#(代码隐藏)中旋转文本 block 中的文本~~

graphics - 为什么图形引擎中的碰撞难以有效计算?

math - 如何插值旋转?

c# - 如何使用 selenium rc for c# 处理验证消息?

c# - 如何在 LINQ-to-SQL 中模拟正则表达式

c# - 通用方法,取消装箱可为 null 的枚举

wpf - WPF工具栏: how to remove grip (dots on the left)

c# - ObservableCollection 和 CollectionChanged 事件

c# - 用户无法在已绑定(bind)到浮点值的文本框中键入 '.',而 UpdateSourceTrigger 在 WPF 中为 PropertyChanged

c++ - 用 C++ 建模服装