WPF 3D模型介绍及使用

这篇具有很好参考价值的文章主要介绍了WPF 3D模型介绍及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2D 容器中的三维:
WPF 中的3D 图形内容封装在一个元素中, Viewport3D 该元素可以参与二维元素结构。 在 WPF 中,图形系统将视为二维 Viewport3D 视觉对象,如许多其他元素。 Viewport3D 作为一个窗口(视区)为一个三维场景。 更准确地说,它是一个在其上投影三维场景的图面。
在传统的2D 应用程序中,可以像使用 Viewport3D 网格或画布这样的其他容器元素一样使用。 虽然您可以 Viewport3D 在同一个场景图中使用与其他2d 绘图对象,但您不能渗透中的2d 和3d 对象 Viewport3D 。 本主题将重点介绍如何在中绘制3D 图形 Viewport3D 。

三维坐标空间:
2D 图形的 WPF 坐标系统将原点定位在呈现区域的左上角 (通常是) 屏幕。 在二维系统中,正 x 轴值向右移动,正值 y 轴值向下移动。 但是,在3D 坐标系中,原点位于呈现区域的中心,正 x 轴值前进到右侧,而 y 轴上的正值朝上向右,而从原点向外前进到查看器。

WPF 3D模型介绍及使用

 照相机和投影:

使用2D 的开发人员习惯于将绘图基元定位在二维屏幕上。 创建三维场景时,务必记住,确实要创建3D 对象的2D 表示形式。 由于三维场景看上去不同,具体取决于旁观者视角的观点,你必须指定该点。 Camera类允许您为三维场景指定此视图点。
了解3D 场景如何在二维图面上表示的另一种方法是将场景描述为查看图面上的投影。 ProjectionCamera允许您指定不同的投影及其属性,以更改旁观者视角查看3d 模型的方式。 PerspectiveCamera指定 foreshortens 场景的投影。 换句话说, PerspectiveCamera 提供消失点透视。 可以指定照相机在场景坐标系中的位置、照相机的方向和视野以及用来定义场景中“向上”方向的矢量。 下图说明了的 PerspectiveCamera 投影。
的 NearPlaneDistance 和 FarPlaneDistance 属性 ProjectionCamera 限制了照相机投影范围。 由于照相机可以位于场景中的任何位置,因此照相机实际上可能会位于模型内部或者紧靠模型,这使正确区分对象变得很困难。 NearPlaneDistance 允许您指定与相机之间的最小距离,超过此值后将不会绘制对象。 相反, FarPlaneDistance 使您可以指定与相机之间的距离,超过此距离将不会绘制对象,从而确保太远的对象不能被识别。

主要参数
PerspectiveCamera:透视投影相机,更符合世界实际。
OrthographicCamera:正投影相机,不会出现近大远小的效果。
LookDirection:相机镜头朝向。
UpDirection:相机的上方向是哪里。
Position:相机放在哪里。
    
AmbientLight(环境光) 
DirectionalLight(平行光) 
PointLight(点光源) 
SpotLight(聚光灯) 
    
Positions中每个点从0开始编号,TriangleIndices中每个整数就是Positions中对应编号的点比如你这个例子中:(0)-2 1 -1,(1) 0 2 0,(2) 2 1 -1,(3) -2 -1 -1,(4) 0 -2 0,(5) 2 -1 -1,所以0 3 1对应的就是(0)(-2, 1, -1)、(3)(-2, -1,-1)、(1)(0, 2, 0)
    
Material(材质),它可以是纯颜色、渐变颜色、图片等
TextureCoordinates用于描述材质如何贴在平面上

3D图形案例:

WPF 3D模型介绍及使用

<Window x:Class="WpfCompreExample._3D"
        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:WpfCompreExample"
        mc:Ignorable="d"
        Title="_3D" Height="450" Width="800">
    <Grid>
        <!-- Place a Label control at the top of the view. -->
        <Label 
                HorizontalAlignment="Center" 
                TextBlock.TextAlignment="Center" 
                FontSize="20" 
                Foreground="Red" 
                Content="Model: Cone"/>
        <!-- Viewport3D is the rendering surface. -->
        <Viewport3D Name="myViewport" >

            <!-- Add a camera. -->
            <Viewport3D.Camera>
                <PerspectiveCamera 
                        FarPlaneDistance="20" 
                        LookDirection="0,0,1" 
                        UpDirection="0,1,0" 
                        NearPlaneDistance="1" 
                        Position="0,0,-3" 
                        FieldOfView="45" />
            </Viewport3D.Camera>
            <!-- Add models. -->
            <Viewport3D.Children>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <Model3DGroup >
                            <Model3DGroup.Children>
                                <!-- Lights, MeshGeometry3D and DiffuseMaterial objects are added to the ModelVisual3D. -->
                                <DirectionalLight Color="#FFFFFFFF" Direction="3,-4,5" />
                                <!-- Define a red cone. -->
                                <GeometryModel3D>
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D 
    Positions="0.293893 -0.5 0.404509  0.475528 -0.5 0.154509  0 0.5 0  0.475528 -0.5 0.154509  0 0.5 0  0 0.5 0  0.475528 -0.5 0.154509  0.475528 -0.5 -0.154509  0 0.5 0  0.475528 -0.5 -0.154509  0 0.5 0  0 0.5 0  0.475528 -0.5 -0.154509  0.293893 -0.5 -0.404509  0 0.5 0  0.293893 -0.5 -0.404509  0 0.5 0  0 0.5 0  0.293893 -0.5 -0.404509  0 -0.5 -0.5  0 0.5 0  0 -0.5 -0.5  0 0.5 0  0 0.5 0  0 -0.5 -0.5  -0.293893 -0.5 -0.404509  0 0.5 0  -0.293893 -0.5 -0.404509  0 0.5 0  0 0.5 0  -0.293893 -0.5 -0.404509  -0.475528 -0.5 -0.154509  0 0.5 0  -0.475528 -0.5 -0.154509  0 0.5 0  0 0.5 0  -0.475528 -0.5 -0.154509  -0.475528 -0.5 0.154509  0 0.5 0  -0.475528 -0.5 0.154509  0 0.5 0  0 0.5 0  -0.475528 -0.5 0.154509  -0.293892 -0.5 0.404509  0 0.5 0  -0.293892 -0.5 0.404509  0 0.5 0  0 0.5 0  -0.293892 -0.5 0.404509  0 -0.5 0.5  0 0.5 0  0 -0.5 0.5  0 0.5 0  0 0.5 0  0 -0.5 0.5  0.293893 -0.5 0.404509  0 0.5 0  0.293893 -0.5 0.404509  0 0.5 0  0 0.5 0  " 
    Normals="0.7236065,0.4472139,0.5257313  0.2763934,0.4472138,0.8506507  0.5308242,0.4294462,0.7306172  0.2763934,0.4472138,0.8506507  0,0.4294458,0.9030925  0.5308242,0.4294462,0.7306172  0.2763934,0.4472138,0.8506507  -0.2763934,0.4472138,0.8506507  0,0.4294458,0.9030925  -0.2763934,0.4472138,0.8506507  -0.5308242,0.4294462,0.7306172  0,0.4294458,0.9030925  -0.2763934,0.4472138,0.8506507  -0.7236065,0.4472139,0.5257313  -0.5308242,0.4294462,0.7306172  -0.7236065,0.4472139,0.5257313  -0.858892,0.429446,0.279071  -0.5308242,0.4294462,0.7306172  -0.7236065,0.4472139,0.5257313  -0.8944269,0.4472139,0  -0.858892,0.429446,0.279071  -0.8944269,0.4472139,0  -0.858892,0.429446,-0.279071  -0.858892,0.429446,0.279071  -0.8944269,0.4472139,0  -0.7236065,0.4472139,-0.5257313  -0.858892,0.429446,-0.279071  -0.7236065,0.4472139,-0.5257313  -0.5308242,0.4294462,-0.7306172  -0.858892,0.429446,-0.279071  -0.7236065,0.4472139,-0.5257313  -0.2763934,0.4472138,-0.8506507  -0.5308242,0.4294462,-0.7306172  -0.2763934,0.4472138,-0.8506507  0,0.4294458,-0.9030925  -0.5308242,0.4294462,-0.7306172  -0.2763934,0.4472138,-0.8506507  0.2763934,0.4472138,-0.8506507  0,0.4294458,-0.9030925  0.2763934,0.4472138,-0.8506507  0.5308249,0.4294459,-0.7306169  0,0.4294458,-0.9030925  0.2763934,0.4472138,-0.8506507  0.7236068,0.4472141,-0.5257306  0.5308249,0.4294459,-0.7306169  0.7236068,0.4472141,-0.5257306  0.8588922,0.4294461,-0.27907  0.5308249,0.4294459,-0.7306169  0.7236068,0.4472141,-0.5257306  0.8944269,0.4472139,0  0.8588922,0.4294461,-0.27907  0.8944269,0.4472139,0  0.858892,0.429446,0.279071  0.8588922,0.4294461,-0.27907  0.8944269,0.4472139,0  0.7236065,0.4472139,0.5257313  0.858892,0.429446,0.279071  0.7236065,0.4472139,0.5257313  0.5308242,0.4294462,0.7306172  0.858892,0.429446,0.279071  "                   TriangleIndices="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 " />
                                    </GeometryModel3D.Geometry>

                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial>
                                            <DiffuseMaterial.Brush>
                                                <SolidColorBrush 
                            Color="Red" 
                            Opacity="1.0"/>
                                            </DiffuseMaterial.Brush>
                                        </DiffuseMaterial>
                                    </GeometryModel3D.Material>
                                </GeometryModel3D>
                            </Model3DGroup.Children>
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D.Children>
        </Viewport3D>
    </Grid>
</Window>

参考:WPF 3D开发教程(一)_lweiyue的专栏-CSDN博客_wpf3d 

全网最全3D模型实例:WPF3D模型综合实例(全网最全实例)-C#文档类资源-CSDN下载文章来源地址https://www.toymoban.com/news/detail-469826.html

到了这里,关于WPF 3D模型介绍及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IOS使用Unity容器动态加载3D模型

    项目背景 我们的APP是一个数字藏品平台,里面的很多藏品需要展示3D模型,3D模型里面可能会包含场景,动画,交互。而对应3D场景来说,考虑到要同时支持iOS端,安卓端,Unity是个天然的优秀方案。 对于Unity容器来说,需要满足如下的功能: 1.在APP启动时,需要满足动态下载

    2024年03月18日
    浏览(42)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(8) -- 使用Converter类实现内容的转义处理

    在我们WPF应用端的时候,和WInform开发或者Vue前端开发一样,有时候也需要对内容进行转义处理,如把一些0,1数值转换为具体含义的文本信息,或者把一些布尔变量转换为是否等,都是常见的转换处理,本篇随笔介绍在WPF应用端对内容使用Converter类实现内容的转义处理的操作。

    2024年02月08日
    浏览(48)
  • 基于EasyX学习图形学中的三维几何变换【全】

    本文开始学习几何变换中的三维变换,对于各种变换的定义方法基本和二维变换一样,在此我就不过多赘述了。 三维变换矩阵 由于二维变换矩阵为三阶矩阵,所以三维变换矩阵为四阶矩阵 以下例子均在此正方体基础上 坐标表示 矩阵表示 变换矩阵 核心代码 效果展示 坐标表

    2024年02月09日
    浏览(48)
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)

    项目主页:https://dreamgaussian.github.io/ (包含论文和代码) 提示:以下是本篇文章正文内容,下面案例可供参考 常用的3D内容创建方式,主要是 利用基于优化的通过分数蒸馏采样(SDS)进行的3D生成 。该方法每个样本优化较慢,很难实际应用。本文提出了DreamGaussian,兼顾效率

    2024年02月06日
    浏览(53)
  • VR全景打造亮眼吸睛创意内容:三维模型、实景建模

    随着VR技术在不同行业之间应用落地,市场规模也在快速扩大,VR全景这种全新的视觉体验为我们生活中的许多方面都带来了无限的可能。更加完整的呈现出一个场景或是物体的所有细节,让浏览者感受到自己仿佛置身于现场一般;其次,VR全景的沉浸感和交互感也为浏览者带

    2024年02月04日
    浏览(41)
  • WPF图形控件使用之-DrawingBrush图形画刷

            DrawingBrush 背景图  Background上画,线条( LineGeometry )、几何图形( RectangleGeometry )、椭圆( EllipseGeometry )、弧线( ArcSegment   )等。 属性 说明 描述 GeometryDrawing Brush=\\\"Orange\\\" 设置填充色   StartPoint 设置起始坐标 StartPoint=\\\"0 5\\\"(X轴坐标、Y轴坐标) EndPoint 设置结束坐

    2024年02月13日
    浏览(34)
  • WPF图形控件使用之-VisualBrush图形画刷

    VisualBrush 背景图  Background上画,线条( LineGeometry )、几何图形( RectangleGeometry )、椭圆( EllipseGeometry )、弧线( ArcSegment   )、各种控件等,相对与 DrawingBrush书写更简单一些。   属性 说明 备注 Viewport (从左向右,从上向下,图像宽度放大比例,图像高度放大比例)放

    2024年02月13日
    浏览(29)
  • 实操:(附环摄数据及三维模型)如何利用Smart3D将二维照片转换成三维模型?

    目录 01 数据分享 1.1 Smart3D软件(附安装视频) 1.2 航拍数据(约4G,十分不建议,我花了一整天时间才制作成功) 1.3 小型img格式数据百度网址 1.4 航拍数据原下载地址 1.5 航拍数据处理得到的I3S格式的三维模型(需要ArcGIS Pro打开) 1.6 操作参考网址 02 如何打开Smart3D? 03 创建一个

    2023年04月09日
    浏览(54)
  • 无人机异形结构三维模型提取3D测绘测量逆向抄数清远上门三维扫描

    近年来,CASAIM中科广电在无人机异形结构件三维扫描和建模领域的应用逐渐受到关注。高精度3d测量设备采用了先进的激光扫描技术,能够快速、准确地获取物体的三维数据。在本案中,我们将介绍一个使用CASAIM中科广电3d测量设备进行无人机异形结构件三维扫描和三维建模的

    2024年01月24日
    浏览(48)
  • WPF图形控件使用之-Line线控件使用

    在项目中有的时候可能会用的画虚线或者设置线的流动效果,这个时候可能会使用到线控件。 属性 说明 描述 X1 起始x轴坐标 X1=\\\"10\\\" Y1 起始Y轴坐标 Y1=\\\"10\\\" X2 结束X轴坐标 X2=\\\"100\\\" Y2 结束Y轴坐标 Y2=\\\"100\\\" Stroke 线条颜色 Stroke=\\\"Red\\\" StrokeThickness 线条粗细 StrokeThickness=\\\"2\\\" StrokeDashArray 设置

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包