RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 597045
Accepted
Byulent
Byulent
Asked:2020-11-29 03:49:36 +0000 UTC2020-11-29 03:49:36 +0000 UTC 2020-11-29 03:49:36 +0000 UTC

WPF - 立方体在旋转时显示不佳

  • 772

我正在使用 3d 图形制作 WPF 程序。该程序的目的是创建一个通过拖动鼠标进行旋转的立方体。

模型本身已经准备就绪,事件处理程序也已实现。然而,有一个麻烦:在大角度旋转时,立方体某处的面片会消失。它看起来像这样:

在此处输入图像描述

如何解决?

XAML 中的表单代码:

<Window x:Class="laba10.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:laba10"
    mc:Ignorable="d"
    Title="RotateCube" Height="350" Width="525"
    MouseDown="Window_MouseDown" MouseMove="Window_MouseMove" MouseUp="Window_MouseUp">
<Grid>
    <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="1.5,0,1" LookDirection="0,0,-2" FieldOfView="105" />
        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight x:Name="light" Color="#FFFFFF" Direction="-1,-1,-2" />
            </ModelVisual3D.Content>
            <ModelVisual3D.Transform>
                <RotateTransform3D>
                    <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D x:Name="rotatel" Axis="0 1 0"/>
                    </RotateTransform3D.Rotation>
                </RotateTransform3D>
            </ModelVisual3D.Transform>
        </ModelVisual3D>
        <!--wire model-->
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <GeometryModel3D>
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D 
                            Positions="-1 -1 0  1 -1 0  -1 1 0  1 1 0 -1 -1 2  1 -1 2 -1 1 2 1 1 2
                            -1 -0.99 0 1 -0.99 0 0.99 -1 0 0.99 1 0 -1 0.99 0 1 0.99 0 -0.99 1 0 -0.99 -1 0 
                            -1 -0.99 2 1 -0.99 2 0.99 -1 2 0.99 1 2 -1 0.99 2 1 0.99 2 -0.99 1 2 -0.99 -1 2"
                            TriangleIndices="0 1 8 1 9 8 10 1 11 1 3 11 2 12 13 13 3 2 0 15 2 15 14 2 0 4 8 
                            4 16 8 4 23 6 23 22 6 2 14 22 22 6 2 4 5 16 5 17 16 18 5 19 5 7 19 6 20 21 20 21 7 
                            9 1 17 17 1 5 11 3 19 19 3 7"/>
                    </GeometryModel3D.Geometry>
                    <GeometryModel3D.Material>
                        <DiffuseMaterial>
                            <DiffuseMaterial.Brush>
                                <SolidColorBrush Color="Black"  Opacity="1" />
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
                    </GeometryModel3D.Material>

                    <GeometryModel3D.Transform>
                        <TranslateTransform3D
        OffsetX="1.5" OffsetY="0." OffsetZ="-3"   >
                        </TranslateTransform3D>
                    </GeometryModel3D.Transform>
                </GeometryModel3D>
            </ModelVisual3D.Content>
            <ModelVisual3D.Transform>
                <RotateTransform3D CenterX="1.5" CenterY="0." CenterZ="-3">
                    <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D x:Name="rotatew" Axis="0 1 0"/>
                    </RotateTransform3D.Rotation>
                </RotateTransform3D>
            </ModelVisual3D.Transform>
        </ModelVisual3D>
        <!--solid model-->
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <GeometryModel3D>
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D 
          Positions="-1 -1 0  1 -1 0  -1 1 0  1 1 0 -1 -1 2  1 -1 2 -1 1 2 1 1 2"
          Normals="0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1"
          TriangleIndices="0 1 2  1 3 2  0 4 2  4 6 2  1 5 3  
                            5 7 3  4 5 6  5 7 6  0 1 4  1 5 4  
                            2 3 6  3 6 7" />
                    </GeometryModel3D.Geometry>
                    <GeometryModel3D.Material>
                        <DiffuseMaterial>
                            <DiffuseMaterial.Brush>
                                <SolidColorBrush Color="Cyan" Opacity="0.5"/>
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
                    </GeometryModel3D.Material>
                    <!-- Translate the plane. -->
                    <GeometryModel3D.Transform>
                        <TranslateTransform3D
        OffsetX="1.5" OffsetY="0" OffsetZ="-3"   >
                        </TranslateTransform3D>
                    </GeometryModel3D.Transform>
                </GeometryModel3D>
            </ModelVisual3D.Content>
            <ModelVisual3D.Transform>
                <RotateTransform3D
                        CenterX="1.5" CenterY="0." CenterZ="-3">
                    <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D x:Name="rotates" Axis="0 1 0"/>
                    </RotateTransform3D.Rotation>
                </RotateTransform3D>
            </ModelVisual3D.Transform>
        </ModelVisual3D>
    </Viewport3D>
</Grid>
</Window>
c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Byulent
    2020-11-29T11:26:38Z2020-11-29T11:26:38Z

    正如经常发生的那样,答案几乎就在表面上。问题出在不正确的地方TriangleIndices。在我将它们更正为手册中给出的值后,一切正常。

    是的,我仍然无法弄清楚线模型需要进行哪些更改。

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5