如果绘制3D立方体,需绘制6个面;下面代码绘制一个面;来逐步理解此代码;

<Pagexmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Grid>  <Viewport3D><Viewport3D.Camera><PerspectiveCamera Position="0,0,1" x:Name="camera"></PerspectiveCamera></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><Model3DGroup ><GeometryModel3D><GeometryModel3D.Material><DiffuseMaterial Brush="Red"/></GeometryModel3D.Material><GeometryModel3D.Geometry><MeshGeometry3D Positions="0,0,0 2,0,0 2,2,0 0,2,0" TriangleIndices="0,1,2 0,2,3"></MeshGeometry3D></GeometryModel3D.Geometry></GeometryModel3D></Model3DGroup></ModelVisual3D.Content></ModelVisual3D></Viewport3D.Children></Viewport3D></Grid>
</Page>

 1  3D 画布
要画画总的有个画布。Viewport3D(投影3D场景的平面)是WPF中的3D画布,类于2D中的Canvas。<Viewport3D>
Children…
</Viewport3D>
这就是显示3D的根元素;

2 相机
创建三维场景时,实际上是要创建三维对象的二维表示形式。 由于三维场景的外观会因观察者的观察位置不同而异,因此必须指定观察位置。而观察位置就是由相机(Camera 类)来为三维场景指定的。

<PerspectiveCamera Position="0,0,8" x:Name="camera"></PerspectiveCamera>

此元素是相机;

3D的话一定要理解相机;否则你的图形挂了你不知道是怎么回事;先看下图,位置关系是: 真实物体 - 2D屏幕 - 相机;

先理解相机的Z坐标;相机位于Z轴上;如果把相机移近,等于Z坐标减小,看到的物体将变大;如果把相机移远,等于Z坐标增大,看到的物体将变小;

把相机Z坐标由8变为20,绘制的面变小;

相机Z坐标变为1,看到绘制的面变大;

3 3D模型

Model3D 是三维对象的抽象基类。若要生成三维场景,需要一些要查看的对象,而且构成场景图的对象必须派生自 Model3D。

要生成模型,首先生成一个基元或网格。 三维基元是一系列构成单个三维实体的顶点。

WPF 三维系统目前提供 MeshGeometry3D 类,使用该类可以指定任何几何形状;它目前不支持预定义的三维基元(如球体和立方体)。

ModelVisual3D 类
命名空间:
System.Windows.Media.Media3D
程序集:
PresentationCore.dll
提供一个呈现 Visual3D 对象的 Model3D。

ModelVisual3D类说明和示例参见;
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.media.media3d.modelvisual3d?view=net-5.0

先学这么多;

WPF 3D基础学习 - 画布、相机、Model3D(1)相关推荐

  1. WPF 3D 基础学习 - 相机、裁剪、光线入门(2)

    接 https://blog.csdn.net/bcbobo21cn/article/details/109697065 1 从坐标系看相机 从坐标系看一下相机:右手是X正向,Y正方向是向上:这是WP ...

  2. Mars3D开发基础学习:相机Camera及视角控制

    Camera相机控制了三维场景的视图.有很多方法可以操作Camera,如旋转(rotate).缩放(zoom).平移(pan)和飞到目的地(flyTo).同时也有鼠标和触摸事件用来处理与Camrea的 ...

  3. android基础学习之相机拍照部分

    在学习这个模块之前必须要对android有关于相机拍照的API有所了解  , 这个模块的API有两部分  一部分就是Camera 还有一部分 是Camera2 好像androidX包里面还有一个Cam ...

  4. WPF 3D 点光源学习

    先画一个平面,物体具有黄色的材质:不添加灯光,显示如下, 加入一个点光源,位置(1,1,1).颜色白色,如下,照亮了物体,看到物体的材质: 点光源是从斜上方照过来的, 如果光源为绿色,则如下, 点光源 ...

  5. WPF 3D 学习 - 3D材质初步

    材质(Material ) 在二维中,可以使用 Brush 类来向屏幕中的区域应用颜色.图案.渐变或其他可视化内容. 但是,三维对象的外观是照明模型的功能,而不只是应用于它们的颜色或图案.  实际对象 ...

  6. WPF基础学习笔记(一)Dependency Object 和 Dependency Property

    .依赖属性是WPF个人觉得对精彩和最有特色的部分.所以特地先拿出来. 首先要实现Dependency Property 则必须要继承Dependency Object.如果看下WPF的基础控件其实都间 ...

  7. 零基础学习3D建模,第一步:3D建模软件有哪些?给你科普一下

    1.建模软件有很多,为大家科普下建模软件有哪些: 高模:Maya.3Dmax.Zbrush 中模:Maya.3Dmax 低模:Maya.3Dmax.Topogun 展UV:Maya.Zbrush.Un ...

  8. 3D视觉学习计划之PCL库的基础知识

    3D视觉学习计划之PCL库的基础知识 一.PCL库的概述 PCL是一个大型跨平台开源C++编程库,它在吸收了前人点云相关研究基础上建立起来,实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取. ...

  9. 3d量测怎么学距离_零基础学习3D建模用这几种方法,学习效率提升没毛病

    相信大部分学习游戏建模的人都是因为对这个行业有兴趣,才会想去学习,当然也有一部分的人是看到这个行业的前景会发展的不错想转行的. 很多人在学习的时候都会出现的一个问题,就是感觉怎么学习都做不好,记得软件 ...

最新文章

  1. MySQL体系结构之物理文件
  2. docker常用命令行集锦
  3. 全新的图形数据库云服务Amazon Neptune正式发布
  4. 全球及中国霍乱菌苗行业模式分析及前景发展规划建议报告2022-2027年版
  5. Mysql 去除 特定字符后面的所有字符串
  6. java list 排序_java list排序
  7. Git初学札记(六)————在远程新建本地Branch与在本地新建远程Branch
  8. 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题
  9. 【sklearn第二十六讲】模型评价
  10. [ACM] hdu 2079 选课时间(普通型母函数)
  11. conda:Could not find a version that satisfies the requirement XXX
  12. Mybatis系列(四)注解
  13. 塞规公差带图_塞规和卡规公差表
  14. python 开发按键钢琴
  15. 什么是千兆交换机和万兆交换机?它们有什么区别?
  16. 回望2019,不仅是“自由自在“,更是 AI 领域不平凡的一年
  17. 中国娱记的鼻祖留心shuo新浪博客
  18. winlogon 之 WlxLoggedOutSAS
  19. TSA-Net论文详解
  20. 【量化】量化交易入门系列2:经典的量化交易策略(上)

热门文章

  1. Gumbel-Softmax Trick和Gumbel分布 附VAE讲解
  2. linux lvm 镜像,LVM实现逻辑卷镜像
  3. xshell突然连接不上虚拟机解决办法
  4. 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别
  5. Zookeeper简介/快速入门——特别详细
  6. js实践篇:例外处理Try{}catch(e){}
  7. Java 技术篇-linux系统下安装jdk、设置java环境变量实例演示
  8. CTFshow 命令执行 web72
  9. poj 2069 Super Star 最小求覆盖【爬山算法】
  10. [YTU]_2637(编程题:类---矩形类)