opengl 相关坐标系概念梳理 与 各个变换对照

您所在的位置:网站首页 opengl模型坐标系和世界坐标系哪个好 opengl 相关坐标系概念梳理 与 各个变换对照

opengl 相关坐标系概念梳理 与 各个变换对照

2024-07-10 10:02:32| 来源: 网络整理| 查看: 265

模型坐标系与模型变换(旋转、平移、缩放是在局部坐标系中进行的,但是当此过程被写成模型转换矩阵时就已经隐含了模型坐标系到世界坐标系的转换) 以下内容节选自https://www.cnblogs.com/jukan/p/6088356.html

局部坐标系(模型坐标系)是为了方便构造模型而设立的坐标系,建立模型时我们无需关心最终对象显示在屏幕哪个位置。模型的原点定位也可以有所不同,例如下面在模型坐标系定义的模型: 

模型变换的主要目的是通过变换使得用顶点属性定义或者3d建模软件构造的模型,能够按照需要,通过缩小、平移等操作放置到场景中合适的位置。通过模型变换后,物体放置在一个全局的世界坐标系中,世界坐标系是所有物体交互的一个公共坐标系。例如下面的图中在模型坐标系定义的茶壶模型(来自World, View and Projection Transformation Matrices):

teapot

茶壶通过模型变换,转换到世界坐标系中(来自World, View and Projection Transformation Matrices):

teapot2

模型变换包括:旋转、平移、缩放、错切等内容。例如将物体从一个位置p=(x,y,z),移动到另一个位置p′=(x′,y′,z′)的过程,用矩阵表示为: 

p′=Tp=⎡⎣⎢⎢⎢⎢100001000010txtytz1⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢xyz1⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢x+txy+tyz+tz1⎤⎦⎥⎥⎥⎥

应用多个模型变换时,注意变换执行的顺序影响变换的结果,一般按照缩放–》旋转—》平移的顺序执行;另外,注意旋转和缩放变换的不动点问题。

视图变换——从世界坐标系到相机坐标系

视变换是为了方便观察场景中物体而设立的坐标系,在这个坐标系中相机是个假想的概念,是为了便于计算而引入的。相机坐标系中的坐标,就是从相机的角度来解释世界坐标系中位置。相机和场景的示意图如下所示(来自World, View and Projection Transformation Matrices):

camera

OpenGL中相机始终位于原点,指向-Z轴,而以相反的方式来调整场景中物体,从而达到相同的观察效果。例如要观察-z轴方向的一个立方体的右侧面,可以有两种方式:

立方体不动,让相机绕着+y轴,旋转+90度,此时相机镜头朝向立方体的右侧面,实现目的。完成这一旋转的矩阵记作Ry(π2)相机不动,让立方体绕着+y轴,旋转-90度,此时也能实现同样的目的。注意这时相机没有转动。完成这一旋转的矩阵记作Ry(−π2)

OpenGL中采用方式2的观点来解释视变换。再举一个例子,比如,一个物体中心位于原点,照相机也位于初始位置原点,方向指向-Z轴。为了对物体的+Z面成像,那么必须将照相机从原点移走,如果照相机仍然指向-Z轴,需要将照相机沿着+Z轴方向后退。假若照相机不移动,我们可以通过将物体沿着-Z轴后退d个单位,则变换矩阵为: 

T=⎡⎣⎢⎢⎢10000100001000−d1⎤⎦⎥⎥⎥

 

通过在世界坐标系中指定相机的位置,指向的目标位置,以及viewUp向量来构造一个相机坐标系,通过视变换矩阵将物体坐标由世界坐标系转换到相机坐标系

投影变换-从相机坐标系到标准化设备坐标空间(Normalized Device Coordinates,NDC) 从右手笛卡尔坐标系转到左手坐标系

参考文章:

https://www.jianshu.com/p/db53d8d3b14e

https://www.cnblogs.com/msc4456/p/5939807.html

https://stackoverflow.com/questions/4124041/is-opengl-coordinate-system-left-handed-or-right-handed

可视化小工具:

     http://www.songho.ca/opengl/files/matrixProjection.zip

     http://www.songho.ca/opengl/files/matrixModelView.zip

  在投影变换(Projection Transformation)中也分为两个部分,第一个部分是将上个阶段得到的所有数据从观察坐标转换到裁剪坐标,第二个部分是将这些裁剪坐标通过除以w分量的方式转换到归一化设备坐标(NDC)。NDC坐标系是一个左手坐标系,其Z轴正方向与投影坐标系正好相反。

OpenGL会生成投影矩阵。这个矩阵的作用就是将坐标进行正交投影并且将投影后的坐标正规化(转换到-1到1之间)。要注意的是,生成该矩阵的时候,OpenGL会把右手坐标系转换为左手坐标系。原因很简单,右手坐标系的Z轴向平面外的,这样不符合我们的习惯。

请格外注意,OpenGL只定义了裁剪坐标系、规范化设备坐标系和屏幕坐标系,而局部坐标系(模型坐标系)、世界坐标系和照相机坐标系都是为了方便用户设计而自定义的坐标系(如下图所示)。

另外,z方向规范化后的范围是[-1,1] ,我的理解是为了与x,y方向统一,从而形成一个稳定的标准,方便opengl对从NDC开始的后续阶段的标准定义。

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭