[WebGL入门]三,3D绘图的基础知识

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正。

二维和三维

三维空间--我们生活这个这个现实的世界就是一个三维空间。

在三维的世界里,所有的东西都由横,竖,深度。将这些东西重现,就是一个实时3D渲染。但是再现这个3D空间,我们是在一个2D的显示器上来实现的。

电脑和手机的屏幕,都是一个2D的显示器。至少现在还没有一个3D的显示设备,当然,研究所这些地方可能会有,但是一般的家庭肯定是没有的。

利用WebGL可以模拟三维空间,但是最终必须输出显示在一个二维的显示器上。由深度决定的前后关系,根据远近进行放大和缩小,这些都必须提前进行运算得出结果。

OpenGL也好,DirectX也好,这个从三维到二维的变换等基本的计算手法一般是不会变的。当然,WebGL也是一样的。

右手?左手?说一说坐标系

虽然说3D的计算基本上都是一致的,但是DirectX和OpenGL之间还有点小差异。

说到DirectX和OpenGL的区别,经常会拿坐标系来举例。就是使用左手坐标系还是右手坐标系。OpenGL使用的是右手坐标系。

下图是右手坐标系的图解。

下图是左手坐标系的图解。

比较的话,主要是Z坐标的方向不同。x坐标和y坐标的话,哪个坐标系都是一样的。

除去Z坐标的处理,哪个坐标系都是没有深度的概念的,所以没必要想的太复杂。WebGL是OpenGL的一个分支,当然是使用右手坐标系了。

坐标变换

无论用DirectX还是OpenGL,最终都需要将三维的情报向二维进行变换。就像刚开始说的那样,最终的图像都是由二维显示器来显示的。

这时候,坐标变换就是必须的了。坐标变换大致可以分为三种,将这些正确的组合在一起,最终决定显示器上的位置。

用身边的东西举例说明的话,三维向二维转换的例子就是照相机。照片和图像,通过照相机已经全部变为了二维,最终,输出成了照片和动画。

脑子里想象一下使用照相机照相的一幕,来试着理解一下坐标变换吧。

模型变换

三种坐标变换中的第一个,是模型变换。在OpenGL的处理中虽然一般叫做模型变换,但是在DirectX中被叫做世界变换。

模型变换,是指为了定义参照物在三维空间的什么位置而进行的坐标变换。和现实的世界不同,程序中的三维空间里定义了世界的中心的基准点,就是原点。从这个原点出发,为了知道参照物的相对位置,就需要进行必要的坐标变换。

假设,虚拟的三维空间里有一个苹果,那么为了表示这个苹果在什么位置,就需要进行相应的模型变换了。

视图变换

三种坐标变换的第二个,是视图变换。

视图变换,定义了镜头的实际位置以及镜头的方向。拿刚刚举例的苹果来说,即使三维空间中有一个苹果,如果镜头的方向不对着苹果的话,同样也是看不到这个苹果的。而且,如果将镜头大幅度远离苹果,那么也有可能看不到苹果了。

为了决定镜头的位置和角度所进行的坐标变换就叫做视图变换。

投影变换

三种坐标变换中的最后一个,是投影变换。

这个变换,定义了三维空间的摄影区域。比如,是横向摄影,还是纵向摄影,最远拍摄多远距离等。

一般的照相机,直接拍摄镜头前的所有图像,最远拍摄多远也基本上没什么意识。但是,程序是无法模拟无限大的空间的,所以,从哪里开始拍摄,拍摄到哪里,必须有一个明确的范围。

投影变幻,通过远近法则,可以将近处的物体描画的比较大,远处的物体描画的比较小。

总结

内容有点长了,来总结一下吧。

使用程序来模拟三维空间的时候,最终的情报必须变换成二维数据。而且三维坐标,根据平台不同,Z轴的处理是不一样的。WebGL是OpenGL的处理系,使用的是右手坐标系。

为了模拟三维空间,将三维空间的情报向二维的情报进行转换,需要三个坐标变换。分别是模型变换,视图变换和投影变换,将这些变换进行组合,最终决定描画的图形内容。

为了使用WebGL进行开发,本次所介绍的坐标系和坐标变换的知识是必不可少的。细节先不说,如果大致的意思都不了解的话,后面实际处理的时候肯定会有疑惑的。最低限度,三个坐标变换的意思一定要记住。

下一次,看一下为了使用WebGL都需要做哪些准备。

转载请注明:转自lufy_legend的博客http://blog.csdn.net/lufy_legend

[WebGL入门]三,3D绘图的基础知识

时间: 2024-10-03 23:15:36

[WebGL入门]三,3D绘图的基础知识的相关文章

[WebGL入门]五,矩阵的基础知识

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 不是让你到店前面排队 lufy:你一定奇怪,为什么叫这个题目,因为日语中的矩阵叫做"行列",所以作者就给读者们开了个玩笑,我就这么直接翻译了,大家知道什么意思就行了. 在3D渲染的世界里,会很频繁的用到矩阵. 这里所说的矩阵,是数学里的矩阵.英语中叫做Matrix. 矩阵虽然听起来好

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

七天入门统计力学-第1天 基础知识及基本概念

七天掌握物理基础课统计力学是不可能的,但是由于工作需要,以及方便其他相关课程的学习,在七天之内至少可以对统计力学大的体系有一个把握,并且能够体会出其中的重点和难点.这样的"预习"性质的学习对于完全掌握是有很大的帮助的. 参考课本:Statistical Mechanics by Donald A McQuarrie 学习基础:高等数学,普通物理,热力学(化学),电动力学,量子力学,复变函数.//这个基础并不完善,基本处于半白板. 说实话刚开始看这本书来学习统计力学的时候真的是没有任何头

内存泄露从入门到精通三部曲之基础知识篇

作者:腾讯Bugly特约嘉宾:姚潮生 一.首先以一个内存泄露实例来开始本节基础概念的内容: 实例1:(单例导致内存对象无法释放而泄露) 可以看出ImageUtil这个工具类是一个单例,并引用了activity的context. 试想这个场景,应用起来以后,转屏.转屏以后,旧MainActivity会destroy,新MainActivity会重建,导致单例ImageUtil重新getInstance.很不幸的是,由于instance已经不是空的了,所以ImageUtil不会重建,还持有之前的Co

ArcGIS教程:3D 数据的基础知识

三维 GIS 数据的定义 (x,y,z) 中包含一个额外维度(z 值).Z 值具有测量单位,同传统 2D GIS 数据 (x,y)相比,其可存储和显示更多的信息.虽然 z 值通常为实际高程值(如海拔高度或地理深度),但未规定必须强制执行此方法.Z 值可用于表示许多内容,例如化学物质浓度.位置的适宜性,甚至完全用于表示等级的值. 3D GIS 数据有两种基本类型:要素数据和表面数据. 3D 要素数据 要素数据表示离散对象,每个对象的 3D 信息都存储在要素的几何中. 三维要素数据可对每个 x,y

ArcGIS教程:3D表面的基础知识(二)

Terrain 数据集 遥感高程数据(如激光雷达和声纳点的测量值)在数量上可达几十万甚至上百万之多.因此,对如今的大多数硬件和软件而言,在对这种类型的数据进行管理和建模时是很麻烦的.Terrain 数据集允许生成一系列规则和条件,根据此类规则和条件将源数据的索引编成一组动态生成的有序 TIN 金字塔. Terrain 数据集是管理地理数据库中基于点的大量数据并动态生成高质量精确表面的有效方法.激光雷达.声纳和高程的测量值在数量上可达几十万甚至数十亿之多.在很多情况下,不允许对此类数据进行组织.分

ArcGIS教程:3D表面的基础知识(一)

3D 表面模型是三维空间中要素(真实或假想)的一种数字表达形式.3D 表面的几个简单示例如地表.城市走廊.地下天然气矿床以及用于测定地下水位深度的深井组成的网络.这些均属于真实要素的示例,但表面也可以是派生的或假想的.某种特定细菌在每个井中的污染程度就是派生表面的一个示例.这些污染程度级别也可以绘制成 3D 表面地图.在视频游戏或计算机模拟环境中经常可以见到假想 3D 表面. 通常可以使用专门设计的算法来获取或计算 3D 表面,这些算法对点.线或面数据进行采样然后将其转换为数字3D 表面.Arc

第三章:爬虫基础知识回顾

第一节:技术选型,爬虫能做什么技术选型scrapy vs requests + beautifulsoup1. requests + beautifulsoup都是库,scrapy是框架2.scrapy框架中可以加入requests + beautifulsoup3.scrapy基于twisted,性能是最大的优势4.scrapy方便扩展,提供了很多内置的功能5.scrapy内置的css和xpath selector非常方便,beautifulsoup最大的缺点就是慢 网页分类常见类型的服务1.

[WebGL入门]四,渲染准备

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 必须准备的东西 上次介绍了3D绘图的基础知识.讲了一下由Z坐标的不同决定的两种坐标系,以及坐标变换的种类.这一次,说一说实际WebGL绘图的时候必须准备的东西. 首先,HTML,javascript相关的基础知识就不解释了.如果,有不明白的单词或概念的话,请自己查一下.我是认为你有一定的HTM