WPF 3D开发教程(一)

原文:WPF 3D开发教程(一)

一、3D基础知识

1.1 坐标系

我们知道,在2D平面绘图时,WPF使用的坐标系(其实计算机上的图形处理一般都是这样)是以屏幕左上角为原点,向右为x轴正方向,向下为y轴正方向。而WPF的3D坐标系,取区域中心为原点,向右为x轴正方向,向上为y轴正方向,z轴正方向垂直于屏幕指向我们。

这是一个右手系,读者可以伸出自己的右手,做下图所示动作。拇指、食指、中指分别代表x、y、z轴。

1.2 3D世界的元素

事实上,电脑屏幕是一个2D平面,3D物体要在此平面中显示,需要有一个投影。投影的方式很多,我们后面会谈到。WPF中使用Viewport3D作为3D物体的显示容器,我们可以把它理解为2D绘图时的Canvas。

除此之外,我们还需要一些额外的属性,才能描述一个3D世界的物体。

首先,如果世界没有光,我们就看不到任何东西,所以我们需要一个光源。

有了光源,如果物体是透明的,我们同样看不到它。所以物体上面有纹理,最简单的就是一种颜色。

我们看物体时,近大远小,岑桑画杨桃画出五角星,这说明,从不同的距离、不同的角度去看物体,会得到不同的画面。我们用一个叫做相机的元素去描述这些。

1.3 由三角形表示的物体

3D物体有点云、体素网格、三角网格、多视图表示等表示方法,WPF采用三角网格法,如下图所示:

显而易见,一个物体使用越多三角形去表示,表面就会越细腻,但这会增加渲染的计算量。

在三维空间,一个表是有正反之分的。WPF只会渲染“正面”,“反面”都是一片漆黑的。那正面和反面是怎么定义的呢?

一个三角形有三个顶点,这三个顶点有一个排列顺序。同样利用右手定则,我们的四指(除拇指外)沿着顶点旋转,则大拇指的指向就是正面。如上面所示,如果三角形的顶点定义是0、1、2,那么朝向我们的那个面就是正面。相反,如果定义是0、2、1,那么我们只看到三角形的底面,是没有被渲染的。

原文地址:https://www.cnblogs.com/lonelyxmas/p/12208782.html

时间: 2024-10-01 15:04:24

WPF 3D开发教程(一)的相关文章

WPF 3D开发教程(三)

原文:WPF 3D开发教程(三) 三.3D模型 3D模型就是物体,是3D开发中的主角.我们在第一部分提过,使用三角网格法表示面.而三角形由顶点组成,每个面又有一定的材质,这些都是怎么表示的呢?三角形面由Positions和TriangleIndices两个属性确定,而材质的显示主要由TextureCoordinates和Material两个属性确定.我们具体解释一下这些属性. 3.1 Positions和TriangleIndices 我们举一个简单的例子说明问题.假设我们要表示如下一个平面:

WPF 3D开发教程(二)

原文:WPF 3D开发教程(二) 二.相机.光源 2.1 相机和投影 我们一般会用到两种相机,PerspectiveCamera和OrthographicCamera. PerspectiveCamera:透视投影相机,更符合世界实际. OrthographicCamera:正投影相机,不会出现近大远小的效果. 更常用的是PerspectiveCamera,所以我们主要介绍这种相机的属性. 相机有三个重要属性,我们一般是要设置好的. LookDirection:相机镜头朝向. UpDirecti

C#WPF 语音开发教程 源代码下载 csdn tts(text to sound) 一步一步 教你制作语音软件 附图和源代码

C#WPF  语音开发教程  一步一步 教你制作语音软件 附图和源代码 效果展示 一 项目准备 1.vs2012开发平台 2.微软的语音软件库 下载:http://download.csdn.net/detail/wyx100/8431269 (含实例项目源代码) 二.开发目标 制作一个语音软件,可以朗读文字: 多个语音库:男音和女音.支持英文和中文朗读: 支持选择播放设备 支持朗读语速选择 支持音量选择 三 开发过程 1.新建WpfSpeechDemo工程 文件(vs开发平台左上角)----新

libgdx游戏引擎3D开发教程-第一章-基础教程

开卷语:我最近才开始学习游戏编程,因为想做个网游玩,所以前几天找了不少引擎来看,于是不出意料的选中了libgdx,值得感谢的是libgdx的文档很多很全,所以没有走多少弯路就成功的配置好了环境.基础教程很完善,好多大神都已经写的很详细了,但是3D方面的很少见,所以我正好要学,索性直接翻译过来,大家共同进步.注意:教程基本是从Wiki上翻译过来,外加自己的小部分理解,所以一般来说应该没什么问题,如有错误请多多指教. =========================================

15个WPF项目例子+WPF经典开发教程0

摘要:有人推崇产品,有人推崇运营,也有人推崇战略-到底该推崇什么?李智勇系统地分析了这三者之间的思路,并引用黑格尔的一句话,给出了自己的看法:在尺度中已经蕴含本质,这在产品.运营.战略的侧重上体现的非常好. 视野不拉升或者认知不深入时,就容易在盲人摸象层面上反复,看到微信火了,那就产品最重要,看到阿里火了,那就平台最重要.实际上一个比较显然的事实是,没有锥子一样的产品,那你就火不起来:不能从产品升级为平台,那就很可能活不下去.当然,有些人会说平台也是一种产品,但就和人与猴子都是灵长目,实际上仍是

#WPF的3D开发技术基础梳理

原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关原因,需要用的3D技术,虽然内心没有底只能硬着头皮上了.最后效果还不错. 开发完之后,对WPF的开发小有所感,于是打算写下来,把相关知识梳理下.给正在学习WPF技术伙伴们一点帮助. 能力平平,知识有限,如有错误,还望雅正. 作为微软推广的一门软件开发技术,肯定会遵循一个基本准则:怎么方便怎么来,怎么

国内首部大型C++网络游戏开发教程(300+课时,MINI快跑、水果忍者、DirectX技术、天鹰教3D网游)

距离二十世纪八十年代c++语言的诞生,到如今已经有三十多年的历史,随着c++语言的发展,它被应用于在越来越多的领域. C++是一个多泛型的编程语言,它既可以面向过程,也是一门面向对象的语言.C++是一门使用非常广泛的计算机编程语言,因此它受到了越来越多程序员的亲 睐.C++相关专家介绍:c++的就业领域很广泛,相对于java和其他语言来说有很多优点,很多大公司的服务器程序也都是基于C++开发的.目前c++ 软件开发主要集中在以下几个领域. 视频下载地址 c++网络游戏开发教程下载地址--链接:h

程序设计C语言二级考试教程 Java基础视频教程 安卓软件开发教程 Unity3D游戏制作入门教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

Android OpenGL ES 开发教程 从入门到精通

From:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ES 简明开发教程一:概述 Android OpenGL ES 简明开发教程二:构造OpenGL ES View Android OpenGL ES 简明开发教程三:3D绘图基本概念 Android OpenGL ES 简明开发教程四:3D 坐标变换 Android OpenGL ES 简明开发教程五