WPF 3D基础学习 - 画布、相机、Model3D(1)
如果绘制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)相关推荐
- WPF 3D 基础学习 - 相机、裁剪、光线入门(2)
接 https://blog.csdn.net/bcbobo21cn/article/details/109697065 1 从坐标系看相机 从坐标系看一下相机:右手是X正向,Y正方向是向上:这是WP ...
- Mars3D开发基础学习:相机Camera及视角控制
Camera相机控制了三维场景的视图.有很多方法可以操作Camera,如旋转(rotate).缩放(zoom).平移(pan)和飞到目的地(flyTo).同时也有鼠标和触摸事件用来处理与Camrea的 ...
- android基础学习之相机拍照部分
在学习这个模块之前必须要对android有关于相机拍照的API有所了解 , 这个模块的API有两部分 一部分就是Camera 还有一部分 是Camera2 好像androidX包里面还有一个Cam ...
- WPF 3D 点光源学习
先画一个平面,物体具有黄色的材质:不添加灯光,显示如下, 加入一个点光源,位置(1,1,1).颜色白色,如下,照亮了物体,看到物体的材质: 点光源是从斜上方照过来的, 如果光源为绿色,则如下, 点光源 ...
- WPF 3D 学习 - 3D材质初步
材质(Material ) 在二维中,可以使用 Brush 类来向屏幕中的区域应用颜色.图案.渐变或其他可视化内容. 但是,三维对象的外观是照明模型的功能,而不只是应用于它们的颜色或图案. 实际对象 ...
- WPF基础学习笔记(一)Dependency Object 和 Dependency Property
.依赖属性是WPF个人觉得对精彩和最有特色的部分.所以特地先拿出来. 首先要实现Dependency Property 则必须要继承Dependency Object.如果看下WPF的基础控件其实都间 ...
- 零基础学习3D建模,第一步:3D建模软件有哪些?给你科普一下
1.建模软件有很多,为大家科普下建模软件有哪些: 高模:Maya.3Dmax.Zbrush 中模:Maya.3Dmax 低模:Maya.3Dmax.Topogun 展UV:Maya.Zbrush.Un ...
- 3D视觉学习计划之PCL库的基础知识
3D视觉学习计划之PCL库的基础知识 一.PCL库的概述 PCL是一个大型跨平台开源C++编程库,它在吸收了前人点云相关研究基础上建立起来,实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取. ...
- 3d量测怎么学距离_零基础学习3D建模用这几种方法,学习效率提升没毛病
相信大部分学习游戏建模的人都是因为对这个行业有兴趣,才会想去学习,当然也有一部分的人是看到这个行业的前景会发展的不错想转行的. 很多人在学习的时候都会出现的一个问题,就是感觉怎么学习都做不好,记得软件 ...
最新文章
- MySQL体系结构之物理文件
- docker常用命令行集锦
- 全新的图形数据库云服务Amazon Neptune正式发布
- 全球及中国霍乱菌苗行业模式分析及前景发展规划建议报告2022-2027年版
- Mysql 去除 特定字符后面的所有字符串
- java list 排序_java list排序
- Git初学札记(六)————在远程新建本地Branch与在本地新建远程Branch
- 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题
- 【sklearn第二十六讲】模型评价
- [ACM] hdu 2079 选课时间(普通型母函数)
- conda:Could not find a version that satisfies the requirement XXX
- Mybatis系列(四)注解
- 塞规公差带图_塞规和卡规公差表
- python 开发按键钢琴
- 什么是千兆交换机和万兆交换机?它们有什么区别?
- 回望2019,不仅是“自由自在“,更是 AI 领域不平凡的一年
- 中国娱记的鼻祖留心shuo新浪博客
- winlogon 之 WlxLoggedOutSAS
- TSA-Net论文详解
- 【量化】量化交易入门系列2:经典的量化交易策略(上)
热门文章
- Gumbel-Softmax Trick和Gumbel分布 附VAE讲解
- linux lvm 镜像,LVM实现逻辑卷镜像
- xshell突然连接不上虚拟机解决办法
- 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别
- Zookeeper简介/快速入门——特别详细
- js实践篇:例外处理Try{}catch(e){}
- Java 技术篇-linux系统下安装jdk、设置java环境变量实例演示
- CTFshow 命令执行 web72
- poj 2069 Super Star 最小求覆盖【爬山算法】
- [YTU]_2637(编程题:类---矩形类)