1.2数学基础

向量运算

矩阵运算

比较基础就不记录了


MVP矩阵推导

1.讲为什么要有矩阵变换和不同的坐标空间

  • 将3D物体转化到2D平面
  • 为各个空间的运用做准备

2.介绍各个空间的概念和含义

MVP矩阵代表什么?

MVP矩阵分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。

OS =  模型原点为坐标系原点的空间坐标系 = 模型空间 
WS = 世界空间为坐标原点的空间坐标系 = 世界空间 
VS = 摄像机为坐标系原点的空间坐标系 = 视觉空间 
CS =  裁剪空间 确定像素是否位于可见范围内
SS = 屏幕空间 显示平面 根据平台不同 坐标原点不同 分别位于左下或者左上 OPENGL屏幕坐标系原点在左下角向上向右增加,D3D屏幕坐标系原点在左上角向下向右增加。
WS = OS * M矩阵 
VS = WS * V矩阵 
CS = VS * P矩阵
CS得到的坐标经过齐次除法(透视除法)和映射输出 得到SS的二维坐标 (一般unity自动在底层进行 所以我们只要得到裁剪空间内的坐标即可)

注:五个空间中 只有观察空间(VS)是右手坐标系 剩余 都是左手坐标系

M:模型空间->世界空间

模型空间:以自身为中心的空间坐标系

3dmax采用右手坐标系

世界空间:以世界为中心的空间坐标系

unity中左手坐标系

M矩阵的作用:让游戏对象的顶点坐标从模型空间转换到世界空间

从模型空间变换到世界空间步骤:

  1. 第一步进行了缩放
  2. 第二步进行了旋转
  3. 第三步进行了平移

顶点坐标的变换顺序(变换顺序不能改变)

世界坐标变换要先缩放、后旋转、再平移的原因

对应的依次进行矩阵变换得出变换矩阵

读矩阵需要从右往左

V :世界空间->视觉空间

以摄像机为中心的空间坐标系(v空间的z是朝向相机后面的)

M矩阵的作用:从世界空间变换到摄像机空间

求V矩阵思路:

  1. 平移整个观察空间,摄像机原点和世界坐标原点重合,坐标轴重合
  2. 摄像机是在世界空间中是先旋转,再平移
  3. 为了让摄像机与世界坐标重合,逆变换

摄像机在世界空间中是先旋转,再平移的,所以我想,如果想要物体在世界空间下以视觉空间为坐标变换到原点,就要逆着先平移后旋转吧。

从世界空间变换到摄像机空间步骤:

  1. 第一步进行平移
  2. 第二步进行旋转
  3. 第三步Z分量取反(左手坐标系的原因)

左手坐标系的原因:在unity中,它的摄像机空间的正方形是负z的方向,如果按正常的来说,视觉空间下的坐标正方向应该是摄像机的正方形,但unity是左手坐标系,所以要取反)

对应的依次进行矩阵变换得出变换矩阵

P :视觉空间->裁剪空间

1.不是真正的投影,为投影做准备。

2.目的:判断顶点是否在可见范围内。

3.P矩阵:对x,y,z分量进行缩放,用w分量做范围值。如果x,y,z都在w范围内,那么该点在裁剪空间内。

透视投影

那么计算出near、far、w有什么用呢?

我想近平面时w=near,远平面时w=far,一个物体有顶点构成这些顶点在裁剪空间下具有(x,y,z)坐标,如果这个顶点想要出现在视锥体内,也就是被看见,该顶点在可见范围内,方便为之后的投影做准备,那么其xyz就要分别大于-w小于w,多余部分就被裁剪掉,不出现在屏幕上。这也是p矩阵起到的作用。

正交投影

3.推导MVP变换矩阵

Model Matrix

View Matrix

Projection Matrix

4.考虑找一些对应空间操作的例子

世界空间的应用

不规则平面的Tilling:以世界坐标当做uv进行采样

视觉空间的应用

根据摄像机距离显隐变换的云朵

模型空间,世界空间,观察空间的区别

模型空间

模型空间是和某个模型或者说是对象有关的。有时模型空间也被称为对象空间或局部空间。每个模型都有自己独立的坐标空间,当它移动或旋转的时候,模型空间也会跟着它移动和旋转。比如自己的游戏模型,我们移动的时候我们的模型空间也在跟着移动,我们转身时本身的前后左右方向也跟着改变。

世界空间

世界空间是一个特殊的坐标系,因为它建立了我们所关心的最大的空间。世界空间可以被用于描述绝对位置(这里指的是世界坐标系中的位置),通常我们把世界空间的原点放置在游戏空间的中心。

在 unity 中,除了观察空间(摄像机空间),所有的空间坐标系都是使用的左手坐标系。很多的效果都是要在世界空间中完成的。

观察空间(摄像机空间)

最大的区别在于在观察空间中我们使用的是右手坐标系,而这个是符合OpenGL的,在观察空间中我们需要把世界空间的顶点转换到观察空间,为此我们需要求的观察空间的变换矩阵,因为坐标系的不同,所以我们需要对z轴取反,并求得逆变换,在观察空间还有一项就是需要将观察空间的顶点转换到裁剪空间(也被称为齐次裁剪空间),这个用于变换的矩阵叫做裁剪矩阵,也被称为投影矩阵,在观察空间中并不是真正的投影,而是准备投影的数据,即那些顶点需要保留,那些需要剔除,这是由投影方式决定的。

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

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

相关文章

positivessl泛域名证书500元13个月

随着创建网站的门槛变低,不论是个人用户还是企事业单位用户创建的域名网站也越来越多,怎么维护网络环境的安全成为了各个用户需要解决的问题。为了保护网站的数据安全,防止恶意攻击和数据泄露,大多数用户选择为域名网站安装数字证…

水电智能抄表是什么?

1.简述:水电智能抄表的兴起 水电智能抄表系统是现代科学技术和传统公共文化服务相结合的产物,它通过自动化技术性改变了传统的人工抄表方式,大大提高了高效率,降低生产成本,同时也为用户提供了更为贴心的服务。这一新…

轻兔推荐 —— 一个好用的软件服务推荐平台

给大家推荐一个好用的的软件服务推荐平台:轻兔推荐 网站界面简洁大方,没有太多杂七杂八的功能和页面,有明暗主题色可以选择,默认为亮色,可在网站上方手动切换。 每工作日都会推荐一款软件,有时会加更&…

内网安全--隧道技术-MSF上线本地

免责声明:本文仅做技术交流与学习... 不得不说,小白最近也是用上了viper,这里要特别感谢一下my bro 北岭敲键盘的荒漠猫 MSF--viper: --生成马子-->上线 --进入meterpreter. 1-查看路由,添加路由. 查看路由信息 : run autoroute -p run post/multi/manage/autoroute 添加…

『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案

📣读完这篇文章里你能收获到 了解Orange Pi AIpro硬件优势,为构建高效云存储基础设施的理想平台。学会使用Orange Pi AIpro硬件平台,搭载Ubuntu Server系统,打造云存储环境。掌握利用Kodbox软件,享受文件管理、多格式…

微软MSBuild大会发布Copilot+PC:技术革新还是隐私噩梦?

微软在最近的MSBuild 2024大会上发布了全新的CopilotPC概念,这一技术结合了高通骁龙X Elite芯片,将人工智能与PC紧密结合。此次发布引起了广泛关注,不仅是因为其技术创新,还因为潜在的隐私问题。甚至连Elon Musk也对此表示担忧&am…

小熊家务帮day5 客户管理模块1 (小程序认证,手机验证码认证等)

客户管理模块 1.认证模块1.1 认证方式介绍1.1.1 小程序认证1.1.2 手机验证码登录1.1.3 账号密码认证 1.2 小程序认证1.2.1 小程序申请1.2.2 创建客户后端工程jzo2o-customer1.2.3 开发部署前端1.2.4 小程序认证流程1.2.4.1 customer小程序认证接口设计Controller层Service层调用…

C++ | Leetcode C++题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret(numRows);for (int i 0; i < numRows; i) {ret[i].resize(i 1);ret[i][0] ret[i][i] 1;for (int j 1; j &…

Python | Leetcode Python题解之第117题填充每个节点的下一个右侧节点指针II

题目&#xff1a; 题解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return Nonestart rootwhile start:self.last Noneself.nextStart Nonep startwhile p:if p.left:self.handle(p.left)if p.right:self.handle(p.right)p p.nex…

基于眼底增强的疾病感知蒸馏模型用于OCT图像的视网膜疾病分类

文章目录 Fundus-Enhanced Disease-Aware Distillation Model for Retinal Disease Classification from OCT Images摘要方法实验结果 Fundus-Enhanced Disease-Aware Distillation Model for Retinal Disease Classification from OCT Images 摘要 光学相干断层扫描&#xf…

【MySQL】SQL 基础

文章目录 【 1. SQL 的书写规则 】1.1 大小写规则1.2 常量的表示1.3 注释1.4 HELP 系统帮助 【 2. 常用数据库函数 】2.1 SHOW DATABASES 显示数据库2.2 CREATE DATABASE 创建数据库2.3 ALTER DATABASE 修改数据库2.4 DROP DATABASE 删除数据库2.5 USE 选择数据库 【 3. RDBMS …

TypeScript系列之-- 数组和元组类型

数组的定义&#xff1a; 第一种&#xff0c;可以在元素类型后面接上[] let list: number[] [1, 2, 3]; 第二种方式是使用数组泛型&#xff0c;Array<元素类型> let list: Array<number> [1, 2, 3]; 如果数组想每一项放入不同数据怎么办&#xff1f;用元组类型…

建立SFTP服务器

文章目录 建立SFTP服务器1. 使用VMware安装CentOS 7虚拟机。2. 安装完虚拟机后&#xff0c;进入虚拟机&#xff0c;修改网络配置&#xff08;onboot改为yes&#xff09;并重启网络服务&#xff0c;查看相应IP地址&#xff0c;并使用远程连接软件进行连接。3. 配置yum源&#xf…

vscode常用操作

1 vscode跳转node_modules下文件&#xff0c;没有切换定位到左侧菜单目录的问题 2&#xff0c;搜索node-modules 3&#xff0c;设置选中字体颜色 {"workbench.colorTheme": "Default Light Modern","editor.mouseWheelZoom": true,"termin…

opencascade 快速显示AIS_ConnectedInteractive源码学习

AIS_ConcentricRelation typedef PrsDim_ConcentricRelation AIS_ConcentricRelation AIS_ConnectedInteractive 简介 创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象&#xff0c;而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对…

Matplotlib绘图指南:从基础绘图到多子图展示

目录 前言 导入模块 第一点&#xff1a;绘制图像 第二点&#xff1a;保存图像 第三点&#xff1a;多图形的绘制 第四点&#xff1a;绘制多子图 总结 前言 在数据可视化中&#xff0c;Matplotlib是一款强大的Python库&#xff0c;提供了丰富的功能来绘制各种类型的图表。…

3D透视图转的时候模型闪动怎么解决?---模大狮模型网

在3D建模与渲染的世界中&#xff0c;透视图是我们观察和操作模型的重要窗口。然而&#xff0c;有时候在旋转透视图时&#xff0c;模型会出现闪动的现象&#xff0c;这不仅影响了我们的工作效率&#xff0c;还可能对最终的渲染效果产生负面影响。本文将探讨这一问题的成因&#…

prompt提示词:如何让AI帮你提一个好问题

我们看完一篇文章的时候&#xff0c;有时候发给AI后&#xff0c;不知道如何问AI&#xff0c;不知道问哪些问题&#xff0c;你使用这个提示词&#xff0c;就可以让AI帮你想一个好问题&#xff0c;然后你用AI想好的问题再去问AI 能提出一个好的问题是非常难的 提示词 结合文章…

Elasticsearch8.13.4版本的Docker启动关闭HTTPS

博主环境是&#xff1a; 开发环境&#xff1a;SpringbootElasticSearch客户端对应的starter 2.6.3版本 maven配置 <!-- ElasticSearch --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elas…

计算机体系结构-2024期末考试

前言 最后一个字落笔&#xff0c;虽然知道并没有发挥到最好&#xff0c;内心还是感慨良多。 真正意义上本科阶段的课程考试&#xff0c;到此就结束了。 正如青春总有不完美的地方&#xff0c;此刻思绪竟飘到了三年前的盛夏&#xff0c;那个骄傲的少年。 扯远了&#xff0c;…