[计算机图形学]MVP变换(前瞻预习/复习回顾)

一、前言

本文章将着重讲解图形学中的MVP矩阵变换,更注重当前阶段的理解,而不是纵观全局,如果想纵观全局,网上有很多资料,也可以等我更新,不过在这里,我不会给大家一个宏观的概念,也不会去细扣渲染管线。适用于刚接触图形学的新手,(本校数媒专业上完前两周图形学的人)。这部分知识在GAMES101也有,我上学期已经看过了,所以对我来说是复习回顾,对各位来说是前瞻预习,想学好任何一门知识,刨根问到底的精神是必不可少的,图形学也是一样,值得一提的是,图形学发展至今,其中有许多定义都是人为规定的,大多是为了简化计算和理解,所以问到这个维度的时候,一般来说已经是问到底了,所以不必再深追究。本文对我来说也算是一个学习记录/复习回顾,有错误还请各位指出,我会虚心改正。

二、关于MVP变换

1.什么是MVP变换:

上了第二周的课程,相信大家已经回顾起了线性代数的基础矩阵运算,这里不带大家回顾了,因为很简单。同时第二周的课上老师也讲了二维的图形变换,那么MVP变换是在三维空间下的变换,也就是4个维度的矩阵(齐次坐标),它的目的是为了把3D场景投影成2D图像显示在显示器上,值得一提的是MVP变换并没有直接把场景投影在屏幕,而只是再为投影做准备,想要投影到屏幕上还需要后面的许多操作运算来完成。

2. MVP矩阵的构成:

MVP矩阵顾名思义,它是由M,V,P三个矩阵组够成的矩阵,其中M为模型矩阵,V为视图矩阵,P为投影矩阵。M矩阵用来将物体顶点在模型空间下的坐标转换为在世界空间下的坐标,V矩阵用来将物体顶点在世界空间下的坐标转换为视图空间下的坐标。P矩阵用来将物体顶点在视图空间的坐标转换为裁剪空间的坐标。M矩阵包括平移矩阵、旋转矩阵、缩放矩阵。V矩阵包括旋转矩阵,平移矩阵。P矩阵则包括正交投影矩阵透视投影矩阵

3. 各个空间的理解:

(1)模型空间:

模型空间是以模型某一点为原点建立坐标系而形成的空间,模型的个顶点最开始是以模型空间坐标系的坐标。

如图为Unity中的猴头模型,该坐标系是模型空间的坐标系

(2)世界空间:

世界空间顾名思义就是以世界原点为原点建立的坐标系。显然可以知道,这与模型空间是两套坐标系,那么此时计算时就要进行相对的计算很麻烦,所以用M矩阵把模型顶点坐标从模型空间都转到世界空间有利于简化后面的计算,这也就是为什么我们要进行模型变换。

(3)视图空间:

视图空间是以摄像机为原点建立坐标系的空间。我们最终想要的显示在屏幕上的结果是由摄像机决定的,所以世界空间显得不那么主要,而转到以摄像机为原点的视图空间有利于我们计算投影到屏幕上的图像,这就是为什么要用V矩阵把世界空间下的顶点坐标转到视图空间的原因。

(4)裁剪空间:

人的视野是有限的,摄像机也是一样,在计算机中,摄像机的视野范围被一个叫视锥的东西决定着,它决定了我们能看到的范围,在视锥外,因为视野受限我们看不到任何东西。而看到的大小都落在视锥内。

视锥图示

三、各个矩阵的详细理解

  1. 模型矩阵:

我们先来确定一下我们的已知量:

  1. 模型空间坐标原点在世界空间的位置

  1. 模型空间坐标系在世界空间的旋转信息

  1. 模型空间坐标系在世界空间的缩放信息

有了这几个已知量,根据世界空间的相对位置,相对旋转和相对缩放信息,很容易得到模型变换的矩阵,也就是三个三维空间下的基础变换矩阵,从左至右依次为[平移]*[旋转]*[缩放]

这里只是个例子,实际缩放多少,旋转多少,以哪个轴旋转,平移多少视情况而定

  1. 视图矩阵:

我们同样确定一下已知量:

  1. 摄像机在世界空间的位置

  1. 摄像机的向上方向y (确保摄像机的摄像头不会歪)

  1. 摄像机的朝向-z (-z方向方便之后的计算)

这里的推导参照GAMES101的推导便于理解,我们想把物体从世界空间坐标系下转换到视图空间坐标系下,为了便于理解我们这样想,将世界空间下的坐标转换为视图空间下的坐标,可以逆向思考为把摄像机放到世界坐标原点,而物体随摄像机相对移动,那么最终呈现的结果是一样的,当然这里并不是真的把摄像机移动到世界坐标原点,而是相对的,如果真的做此操作,那么世界坐标原点也会随之相对移动。总之正向理解和反向理解虽然不同,但最终得出的V矩阵是相同的。那么按我们的反向理解,将摄像机通过平移旋转,来将视图空间的坐标系与被相对移动之前世界空间坐标系对齐即可。

不知道大家还是否记得,旋转矩阵是一个正交矩阵,所以正交矩阵的逆就是它的转置,所以如图:

最终得出V矩阵 :Mview = Rview*Tview (顺序不可调换)

  1. 投影矩阵:

投影矩阵分为正交投影矩阵透视投影矩阵,先做透视投影,再做正交投影。

(1)透视投影和正交投影的区别:

左:透视投影 右:正交投影

简单的说,

透视投影符合我们人眼的视觉也就是近大远小,平行线远处相交(如看向远处的火车铁轨)

正交投影不改变大小,没有近大远小,且平行线永远平行。

(2)透视投影矩阵:

前面我们说了我们要先做透视投影矩阵再做正交投影矩阵,而透视投影矩阵实际上是把我们前面说的视锥,也就是四棱台压缩成正交投影中的长方体的样子的过程。这是一个相当复杂的变换过程,但有几点我们是可以根据经验直接确定的。

首先,规定近平面和远平面也就是上图所写的Near clip plane和Far clip plane。

然后,我们发现当进行压缩时,近平面的坐标是不变的,而远平面的中心点不变。

那么我们总体的过程就是先挤压远平面到和近平面相同的大小,再进行正交投影。

那么我们假设如上图规定近平面和远平面一点的坐标分别为(x',y',z',1)和(x,y,z,1)

图中有一些误解,这里我把摄像机到远平面的距离改为小写的 ' z ' ,到近平面的距离仍然为小写的n。

这个小写的z待会还会用f来替代(意为far,"远")。由此我们得出映射关系n/z或者说n/f。

那么再根据齐次坐标可知,我们都乘以z,那么坐标表示的在空间的位置是不变的,如上图。

到了这一步我们可以根据变换后的坐标写出该4X4矩阵的1,2,4行,那么只剩第三行没有解决如上图。

这里就需要用到我们前面提到的判断,我们虽然不知道常规点是怎么动的但是我们可以找特殊点,而特殊点一定符合规律,通过前面我们可知,近平面上的点不变,远平面的中心点不变。

那么先将近平面的点坐标带入我们刚才得到的未知量方程,得到如下图:

将我们的矩阵第三行未知量分别设为(0,0,A,B),因为n的平方和x,y没有关系。再根据近平面的点列方程可得如下图:(远平面同理,如下图第二个公式)

最终可得到关于A,B的两个方程,n,f分别为近平面到摄像机的距离和远平面到摄像机的距离为已知量。

两个方程,两个未知数,可解,可得:如下图:

再把AB带回原矩阵即可得到透视投影矩阵

(3)正交投影矩阵:

经过透视投影矩阵,我们的视锥体(棱台)已经被挤压成视景体(长方体)了,且内部并不均匀(形成了近大远小的效果),下一步,就是进行正交投影。

我们先把视景体捏成一个正则立方体也就是,三个轴的坐标都在[-1,1]范围内的立方体,并且将中心移到原点,这样方便之后的各种操作计算。过程如下图:

规定了各个面的坐标,那么缩放矩阵(使用2做归一化处理),平移矩阵都很好得出,如下图

而在视锥体中,由于f为远平面的中心点,该矩阵还可以简化为如下图:

(4)投影矩阵合体:

四、总结

那么到此,MVP矩阵就都详细给大家介绍一遍了,即使是这么复杂的变换过程,在计算机的渲染管线中,也不过是微乎其微的一步操作而已,而GPU的并行架构还会在同一时间处理场景内的上千万个物体的顶点。关于MVP变换我自己也死磕了很长时间,所以大家如果有不理解的地方也是正常的,我和ChatGpt对线了足足2个小时,才把每个过程的细节和原理真正的搞清楚,虽然不推荐大家和我一样的做法,但是确实能让思路通透不少,最后感谢观看,喜欢请点赞收藏,谢谢。

参考资料:

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

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

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

相关文章

ChatGPT在物流与运输行业的智能场景:智能调度和自动驾驶的前瞻应用

第一章:引言 随着人工智能技术的飞速发展,物流与运输行业正迎来一场革命。传统的调度和运输模式已经无法满足快速增长的物流需求和客户期望。在这一领域,ChatGPT作为一种先进的自然语言处理模型,具有巨大的潜力。本文将探讨ChatG…

AI开始抢饭碗了!美国500家企业用ChatGPT取代员工,节省5000万美元...

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 自从ChatGPT掀起热潮,不少人担心AI会抢人类饭碗。 然而,现实可能更残酷。 根据,国外就业服务平台Resume Builder调查统计,在1000多家受访美国企业中&…

提一个小bug,如果编辑文章时输入 {{ }},发布后就会显示为 {undefined{ }};

提一个小bug,如果编辑文章时输入 {{ }},发布后就会显示为 {undefined{ }1111 如果编辑文章时输入 如果编辑文章时输入 111 Betaflight BN880 GPS测试 第三电 【建议收藏】一个插件白嫖ChatGPT! 如果编辑文章时输入 如果编辑文章时输入 …

Midjourney笔记

Tips:登录midjourney的官网(Midjourney),在左上角的【Home】界面内,会显示往期所渲染的作品,可用于内容回溯。 关键词的语法顺序 主题:人、动物、人物、地点、物体等。媒介:照片、绘画、插图、…

PHP第6周函数上机练习:实战输出2022年日历(含直播视频)

直播回放 PHP第6周函数上机题(实战输出2022年日历) 题目答案 PHP动态网站开发-函数 一、单选 1、下列关键字中,用于函数返回的是(D )。 A、 continue B、 break C、 exit D、 return 2、若在函数内访问函数…

最近热聊的代码解释器,是个啥?

大家好,我是Yuan,今天给大家介绍ChatGPT最新发布的代码解释器(Code Interpreter)。 近日,OpenAI 在 Twitter 上宣布,所有 ChatGPT Plus 用户都将可以使用:代码解释器(Code Interpreter)。官网地址:https:/…

姗姗来迟的ChatGPT

让聊天变得更有趣 在这个信息爆炸的时代,人们越来越需要一种简单、快捷、有趣的交流方式。ChatGPT应运而生,它是一款基于人工智能技术的聊天机器人,可以与用户进行自然语言交互,提供各种有趣的聊天内容。 ChatGPT的核心技术是GPT&…

OpenAI ChatGPT余额查询又不行了?2023-7-21

前言 之前一篇文章,用于介绍如何免登录在线查询ChatGPT余额,今天开始朋友们反馈用最新的方式也不行了。坑了。。。 免登录在线查询OpenAI ChatGPT API key余额,https://blog.csdn.net/lonliecom/article/details/130564423 一、官方增加了限…

2023 ChatGPT 3.5+4.0 + DALL-E源码 附卡密充值安装教程

在这个全方位的ChatGPT 3.54.0 DALL-E版本源码及视频搭建教程中,您将掌握构建一个功能丰富的Web应用所需的一切。不仅可以实现ChatGPT 3.54.0和DALL-E的强大功能,还能支持代码编写、短文创作、电影剧本和卡密管理,还有用户列表、消息记录、支…

chatgpt赋能python:Python多种用途之一:充值

Python多种用途之一:充值 Python作为一种多用途的编程语言,被广泛地应用在了各个领域中,包括互联网的充值领域。Python充值系统可以极大地提高充值效率,同时也可以保证充值的安全性。在这篇文章里,我们将介绍Python充…

ChatGPT只讲这25个笑话!实验上千次有90%重复,网友:幽默是人类最后的尊严

梦晨 发自 凹非寺量子位 | 公众号 QbitAI 如果你试过让ChatGPT随便讲个笑话(英语),那你大概率见过这个: 两位德国学者对GPT3.5做了个大型测试,发现它其实只会讲25个笑话。 1008次结果中有90%都是25个笑话的变体&#x…

用AI修复郭德纲远古相声;小红书爆款文案Prompt模板;用AI经营一家三明治店;AI将实现80%编程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 B站UP主使用AI修复郭德纲远古相声,10天播放近70万 B站UP主 野老相声-风景-4K修复 使用了AI换脸技术,对郭德纲、…

做Walmart有什么工具可以事半功倍呢?

1.Easyya 易芽选品(免费付费) 官网:EasyYa易芽选品-跨境电商亚马逊选品_市场流量分析运营辅助工具 软件:有Web端插件小程序 功能介绍: 竞品分析 快速确定对标的商品、Listing、品牌以及卖家。 新品开发 通过市场…

AI卷入618战场;印象AI开放次数限制;2023 AIGC人才趋势洞察报告;员工瞒着老板悄悄用AI;超好用的AI头像生成教程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 澳洲游戏媒体 Gamurs 招聘AI编辑,被各路媒体口诛笔伐 上周,澳洲知名游戏媒体集团 Gamurs 在官网招聘「AI Edit…

【企业架构设计实战】4 应用架构设计

前言 企业IT架构包括应用架构、数据架构和技术架构,企业IT架构与业务架构共同构成了企业架构的核心内容。接下来重点介绍IT架构中的应用架构。 应用架构是对企业所有应用系统、服务及它们之间交互关系的整体描述,反映应用系统如何支撑业务运行及未来业务发展,同时需要体现应…

打工人又被 AI “误伤”!印度 CEO:“我裁了 90% 的技术支持团队,都外包给了 AI”...

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年6月份全网热门报告合集 全国最全大模型盘点(附列表) 千模大战:百家争鸣OR一地鸡毛? 2023年7月6日国务院经济形势专家座…

大数据知识点记录

1、工具: 大数据知识点记录_江湖行骗老中医的博客-CSDN博客HUE相当于Navicat的一个工具kudu(数据库)------> impalaHbase(数据库)------> HiveAzkaban 调度 ------> jobsqoop : import export -- >mysql我…

matlab的BBGT格式标签转YOLO格式标签

最近在网上找到一个目标检测数据集,标签格式既不是VOC也不是YOLO,如下图所示。我也没找到其他名称,姑且先称为bbgt格式。 然后对标签的介绍是这样的: 即 标签是使用 Piotr 的计算机视觉 Matlab 工具箱 (PMT&#xff09…

Hugging Face 每周速递: 扩散模型课程完成中文翻译,有个据说可以教 ChatGPT 看图的模型开源了...

每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。 产品更新 享用由 A100 GPU 强力支持的超快速机…

chatgpt赋能python:Python抢票教程:快速抢到心仪的票

Python抢票教程:快速抢到心仪的票 随着互联网的飞速发展,越来越多人选择在网上购买演唱会、球赛、展览等门票,而这些热门票常常被秒杀一空,可怎么办呢?Python帮你解决这个问题! 什么是Python抢票 Python…