webgl坐标转换_OpenGL/WebGL顶点坐标变换过程简介

世界坐标是按照笛卡尔坐标系定义出来的绝对坐标系,下面的各种坐标系都建立在世界坐标的基础上。

对象坐标系

对象被应用于任何变换之前的初始位置和方向所在的坐标系,也就是当前绘图坐标系;该坐标系不固定且仅对该对象适用;默认情况下,该坐标系与世界坐标系重合;当用函数glTranslatef(),glScalef(),glRotatef()glTranslatef(),glScalef(),glRotatef()对当前绘图坐标系进行平移、伸缩、旋转变换后,世界坐标系和当前绘图坐标系不再重合;改变以后,再用glVertex3f()glVertex3f()等绘图函数绘图时,都是在当前绘图坐标系进行绘图,所有函数参数都是相对当前绘图坐标系来讲。

眼坐标系(相机坐标系/观察空间/视觉空间)

GL_MODELVIEW矩阵是模型变换矩阵和视变换矩阵的组合Mview×Mmodel;使用GL_MODELVIEW矩阵就可以使对象从对象坐标系转换到眼坐标系;OpenGL不存在单独的模型变换Mmodel和视点变换Mview;ModelView变换把场景与我们的观察位置对应起来;默认情况下,眼坐标系与世界坐标系是重合;使用函数gluLookAt()可以指定眼睛(相机)的位置和眼睛的方向;

使用glTranslatef(),glScalef(),glRotatef()函数可以对对象坐标系进行变动;使用gluLookAt()函数可以对眼坐标系进行变动;两者可以达到相同的变换效果,相当于对象不动移动相机,和相机不动移动对象。

裁剪坐标系(裁剪空间)

眼坐标到裁剪坐标由投影完成,眼坐标通过乘以GL_PROJECTION矩阵变成了裁剪坐标;GL_PROJECTION矩阵定义了视景体,即确定哪些物体位于视野之内,位于视景体外的对象会被剪裁掉;除了视景体,投影变换还定义了顶点投影到屏幕上的方式,包括:透视投影和正交投影。

归一化设备坐标系

由裁剪坐标系下通过除以W分量得到,该操作为透视除法;归一化设备坐标很像屏幕坐标,但还没有经过平移和缩放到屏幕像素;(x,y,z)范围均为[−1,1]。

屏幕坐标系(屏幕空间)

(OpenGL)将屏幕上的设备坐标称为屏幕坐标;设备坐标又称为物理坐标,指输出设备上的坐标;设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,以像素为单位表示;设备坐标XX轴向右为正,YY轴向下为正,坐标原点位于窗口的左上角;从归一化设备坐标到屏幕坐标基本上是一个线性映射关系,通过对归一化设备坐标进行视口变换得到;可以用函数glViewport()定义渲染区域的矩形。

(Unity3D)屏幕坐标是以像素来定义的,它的范围是以左下角为(0,0),右上角为(Screen.width,Screen.height)(Screen.width,Screen.height)定义的这样一个矩形,屏幕坐标是一个3D坐标,Z轴用相机的世界单位来衡量;屏幕坐标和相机之间满足两个条件:

creen.width=Camera.pixelWidth,Screen.height=Camera.pixelHeight

例如:相机正对着场景中的原点(0,0,0),相机的Z轴分量为−10,按照屏幕坐标的定义,假设屏幕大小为800×640,则原点转化为屏幕坐标后应该是(400,320,10)。

视口坐标

(Unity3D)视口坐标是标准化后的屏幕坐标;视口坐标是一个3D坐标,Z轴用相机的世界单位来衡量;视口坐标用0到1间的数字来表示,左下角为(0,0),右上角为(1,1)。

例如:将相机正对着场景中的原点(0,0,0),相机的Z轴分量为−10,按照屏幕坐标的定义,假设屏幕大小为800×640,则原点转化为视口坐标后应该是(0.5,0.5,10)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用计算机制作多媒体最后一步,福建省高中会考 多媒体技术应用 选择题专项练习十一(201206)(有答案)...

多媒体技术应用选择题专项练习十一(201206)1.下列都属于数字图像采集工具的是( )A.数码照相机、扫描仪B.麦克风、扫描仪C.打印机、数码照相机D.数码摄像机、打印机2.下列关于制作多媒体作品的叙述,不正确的是( )A.规划与设计是制作多媒体作品的重要步骤B.制作多媒体…

工程师和科学家有什么区别

全世界有3.14 % 的人已经关注了数据与算法之美科学家和工程师有什么不同?通常民众认为,工程师就是搞技术的,科学家就是搞科研的。对科学领域有一定认识的人群会说,工程师是应用科研成果的人,科学家是发现科学规律的人。…

CHANGE MASTER TO语法--MySql数据库

CHANGE MASTER TOmaster_def[,master_def] ... 可以更改从属服务器用于与主服务器进行连接和通讯的参数。 MASTER_USER,MASTER_PASSWORD,MASTER_SSL,MASTER_SSL_CA,MASTER_SSL_CAPATH,MASTER_SSL_CERT,MASTER_SSL_KEY和MASTER_SSL_CIPHER用于向从属服务器提供有关如何与主服务器…

聊一聊Jmeter与多接口测试

背景 前面两篇聊过了 JMeter 的 简单使用 和 参数化,主要都还是单接口的。很多时候,一个业务要走完,它会依赖多个接口,而且这些接口会有依赖性。好比说,我想查询一个订单信息,那么大前提肯定是我已经下单了…

评价的等级优良差_满意程度等级划分

满意程度等级划分分四级:优良中差模块满意度评价标准优:程序运行:完全符合需求的要求,调试运行无BUG并无内部错误,与其他模块可以完全耦合,内部模块紧凑,运行效率高。代码编写界面设计&#xff…

计算机在学前教育和美术绘画中的应用,幼儿园美术教学活动中信息技术的应用...

随着现代经济社会的快速发展和科技水平的进一步提升,信息技术在多个领域内逐步渗透并获得了较为广泛的推广和应用,幼儿园美术教育行业同样如此。在此过程中,信息技术有效融合图像、声音、文字等多种元素,并严格根据幼儿教师教学目…

大数据时代,还不认识这些数据分析工具?

在大数据时代的现今,数据庞大且繁杂,因此,如何有效利用它们,达到资源不浪费的目的成为了相关工作者思考的问题,于是数据分析就应运而生。在实际生活中,数据分析已经成为人们作出判断和采取行动的基石。比如…

C# 强大的新特性 Source Generator

C# 强大的新特性 Source GeneratorIntro微软在 .NET 5 中引入了 Source Generator 的新特性,利用 Source Generator 我们可以在应用编译的期间根据当前编译信息动态生成代码,而且可以在我们的 C# 代码中直接引用动态生成的代码,从而大大减少重…

智商情商哪个重要_智商or情商 哪个对孩子更重要

对于一个正在为未来的人生储备能量的孩子而言,到底是拥有希望、拥有百折不挠的勇气重要,还是理解一首诗的标准答案重要?也许有人会说,培养孩子的那些品质,自有别的渠道,何必非要在这件事上钻牛角尖&#xf…

cefsharp49显示html,CefSharp-cefshar

压缩包 : fca120b77964c5c83f670e8d8723556c.zip 列表CefSharp-cefsharp-49/CefSharp-cefsharp-49/.gitattributesCefSharp-cefsharp-49/.gitignoreCefSharp-cefsharp-49/Build.batCefSharp-cefsharp-49/CONTRIBUTING.mdCefSharp-cefsharp-49/CefSharp.BrowserSubprocess.Core/…

为什么Kubernetes从节点会join失败

有段时间没有鼓捣Kubernetes了,今天重置Kubernetes集群后,slave节点不能加入master节点了,我把问题和解决方案分享给大家。我本地的Kubernetes集群包括一个主节点和一个从节点,如下图:问题主节点启动后,从节…

SharePoint 2007 Select People and Groups中搜索不到其他Domain账户的问题[已解决]

问题描述: 在一个SiteCollection中添加用户的时候发现来自另外一个Domain的账户无法添加。我们要添加NNEAS\HIKC到当前网站并赋予Full Control权限。但是当点击Add Users后发现在弹出的Select People and Groups中搜索不到这个用户,导致无法添加成功。仅…

简单计算机面试题库及答案_计算机专业复试面试问题含答案

1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?while(1){}或者for(;;){}3.用变量a给出下面的定义a)一…

关于计算机英语阅读,一篇摘选的关于计算机的英语阅读材料,对大家的英语也许会有提高!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Name : UserNameDocName : "Travel Request for " Name ", " GetDate()DocSumSet(DescriptiveType!; "Travel Request")DocSumSet(DescriptiveName!; DocName)DocSumSet(Author!; Name)This frag…

推荐7个高质量的学术公众号

全世界有3.14 % 的人已经关注了数据与算法之美在这个知识千变万化的时代,只有不断学习、充实自我,才能跟上时代。以下几个优质公众号,能让你在闲暇的时候,扩宽视野。考虑到有些人可能还不知道这些号,今天给大家都一一列…

井底飞天

这又是孔庆东,孔老师的作品。 因为第一篇便是《我看语文第一课》觉得言之有理,于是从图书馆借出来看。 书通篇算是还好。 前两天,国文国史三十年和这本井底飞天的书并行看时,需要切换自己的思维。当和时间简史并行看时&#xff0c…

WPF 用装饰器制作抽屉效果

wpf实现抽屉效果,一般就一个动画显示就完事了,我这用到了,就研究了一下,用装饰器给控件添加遮罩层,然后在上面添加抽屉控件,虽然麻烦了点,也算是自己研究的成果了。看看效果:下面就看…

ueditor 编辑html文件名,UEditor编辑器自定义上传图片或文件路径的修改方法,ueditor修改方法...

UEditor编辑器自定义上传图片或文件路径的修改方法,ueditor修改方法使用ueditor编辑器,附件默认在ueditor/php/upload/, 我的附件地址是网站根目录下/data/upload/ ,需要修改ueditor如下:第一步:打开php/config.php修改图片目录复…

jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略

MMTTMM该API文档都对这个很清楚。所有生成器都实现了org.hibernate.id.IdentifierGenerator接口。这是一个非常简单的界面。一些应用程序可以选择提供自己的专用实现,但是,Hibernate提供了一系列内置实现。内置生成器的快捷方式名称如下:增量…