Games101图形学学习笔记——图形学基础

news2024/11/26 5:45:14

这里写目录标题

  • 图形学基础
    • 线性代数
      • Vector向量
      • 向量的点乘
      • 向量的叉乘
    • 矩阵
  • Transform
    • 3D变换
    • 视图/相机变换
  • 正交投影和透视投影
    • 正交投影
    • 透视投影

图形学基础

基础数学:线性代数,几何
基础物理:力学,光学
其他:信号处理,数值分析

线性代数

Vector向量

在这里插入图片描述
向量的归一化
在这里插入图片描述
向量的加法(平行四边形法则,三角形法则)
在这里插入图片描述
向量的坐标表示
在这里插入图片描述

向量的点乘

在这里插入图片描述
向量点乘的一些属性
在这里插入图片描述
点乘的坐标运算
在这里插入图片描述
可以判断向量前与后的信息

点乘>0 同方向

点乘<0 反方向

向量的叉乘

在这里插入图片描述
叉乘的一些属性
在这里插入图片描述
叉乘的矩阵形式
在这里插入图片描述
作用:判定左和右
判定内与外

矩阵

线性变换是操纵空间的一种手段,他保持网格线平行且等距分布,并保持原点不动
矩阵是一种描述线性变换的语言,而矩阵向量乘法就是计算线性变换作用域给定向量的一种途径
矩阵的乘积
首先两个矩阵必须要可以相乘
(M x N)(N x P) = (M x P)
第一个矩阵的列==第二个矩阵的行。才能相乘
如:
第一个矩阵M行N列
第二个矩阵N行P列
得到M行P列的新矩阵

新矩阵a行b列的元素怎么得出来呢?
第一个矩阵a行和第二个矩阵b列做点积运算
在这里插入图片描述
矩阵的性质
在这里插入图片描述
矩阵乘向量
在这里插入图片描述
矩阵的转置
在这里插入图片描述
单位矩阵,矩阵的逆
在这里插入图片描述
向量的点乘,叉乘(矩阵形式)
在这里插入图片描述
向量的投影
在这里插入图片描述

Transform

Scale 缩放
在这里插入图片描述
Reflection 镜像变换
在这里插入图片描述
Shear 错切
在这里插入图片描述
Rotate(旋转)

如果用一个矩阵乘以输入可以得到输出的坐标,那么称这个变换叫线性变换
在这里插入图片描述
齐次坐标
在这里插入图片描述
给二维坐标增加一个维度,将线性变换也可以用矩阵形式表达
在这里插入图片描述
用齐次坐标可以将线性用矩阵统一表示
在这里插入图片描述
缺点:引入了额外的数字
矩阵不满足交换律
在这里插入图片描述
先旋转在平移写作 (T·R·向量) 从右往左写,矩阵的应用是从右到左的
三维空间中的线性变换也可以用齐次坐标表示
在这里插入图片描述
在这里插入图片描述

3D变换

3D变换相对于2D变换来说只是多增加了一个维度,可由2D变换举一反三得来
在这里插入图片描述
3D旋转在绕Y轴旋转时理解有些特殊
在这里插入图片描述
以xyz三个轴来说
X x Y = Z Y x Z = X X x Z = -Y
所以绕Y轴旋转的矩阵表现出来是转置的状态

罗德里格斯旋转公式

在三维空间内绕某一轴旋转,默认这个轴是过原点的

罗德里格斯旋转公式就是总结了绕任意过原点的轴旋转的公式
在这里插入图片描述
对于绕不过原点的轴旋转,我们可以将其拆分为

  • 将旋转轴平移到原点
  • 绕轴旋转
  • 将旋转后的模型平移回去

MVP变换:模型,视图,投影变换

视图/相机变换

图形学的最终目的是为了将三维中的物体渲染成二维里的图像

在现实生活中如何照一张照片?

  • 找个好地方摆pose(Model变换)
  • 把相机放个好角度(View变换)
  • 按快门(Projection变换)
    在这里插入图片描述
    View变换–如何摆放相机的角度

决定相机的位置
决定相机看向的方向
决定相机头朝上的方向
在这里插入图片描述
规定相机永远在(0,0,0),沿着-Z看
变化的永远是其他物体

所以要先把摄像机归到原点

平移摄像机至(0,0,0)
将相机lookat的方向旋转到-z
旋转相机头朝上的方向到Y
在这里插入图片描述
第一步的平移可以简单的写成下图Tview
在这里插入图片描述
但是要将任意向量旋转到轴上比较难写(也就是第2步和第三步)

但是将轴(如X轴(1,0,0))旋转到任意向量比较好写

所以我们先求将X轴旋转到任意向量的矩阵,之后将该矩阵求逆,即可得到任意向量旋转到轴的矩阵Rview

Rview x Tview = Mview

Mview即为视图变换,将Mview应用到相机,相机归零,同时也需要将Mview应用到其他所有物体,让物体和相机的相对位置保持不变

正交投影和透视投影

区别:是否有近大远小的性质

正交投影

满足近大远小的性质

先将相机归零lookat -Z轴

对于二维投影来说,直接把Z轴坐标舍弃,就能得到物体在xy平面上的投影

要把得到的图像平移并且缩放到[-1,1]²中,方便之后的计算
对于正交投影来说,视口是个[l,r][b,t][f,n]的长方体,想让他变成[-1,1]³中的话只需要

  • 先将立方体的中心平移到原点
  • 在将立方体缩放到[-1,1]³中

首先要找到立方体的中心点,也就是
在这里插入图片描述
将边长r-l、t-b、n-f缩放到长度2

所以正交投影矩阵如下
在这里插入图片描述
(此时物体肯定会被拉伸,在之后的视口操作中会恢复拉伸)
在这里插入图片描述

透视投影

传统的欧式几何是在同一平面内生效的法则
对于不同平面就会造成照片中近大远小的情况

如何做透视投影呢?
在这里插入图片描述
老师的方法是,先将Frustum远平面及远平面到近平面之间的所有平面挤压到近平面大小,

变成Cuboid的样子,然后做一次正交投影

那么如何做挤压呢?

  • 对于除近平面外的任意一个点,通过挤压后该点的高度y要变成和近平面一样的y’
  • 从侧面看Frustum的话,如下图,可以形成两个相似三角形,即可得出y‘=(n/z)y
  • 同理x’=(n/z)x

通过上面推导出来的两个公式可得,对于任意一点(x,y,z,1)T 可得
这里为了方便书写,用T来表示转置矩阵,下文同
在这里插入图片描述
将这个点同时乘z得
在这里插入图片描述
(齐次坐标同时乘k(k!=0),还得到相同的点)

  • 所以我们推导出了变化后的点的一部分
    就是
    在这里插入图片描述
  • 那么一个矩阵乘以任意一点(x,y,z,1)T得到上图,我们就可以推导出这个矩阵的一部分了
  • 矩阵的一部分如下图
    在这里插入图片描述
    想补全这个矩阵,需要用到两条已知的性质
  1. 近平面的点不会发生变化
  2. 远平面的点z的值不会发生变化
    在这里插入图片描述
  • 对于近平面上的点来说,他的z值就是n
    见下图
    在这里插入图片描述
    由性质1可得

对于近平面上的点(x,y,n,1)T经过矩阵变换后该点还为(x,y,n,1)T,同时乘n后得(nx,ny,n²,n)T

所以当z等于n时,也就是说近平面的点通过矩阵运算后变为(nx,ny,n²,n)T
在这里插入图片描述
所以矩阵第三行乘以(x,y,n,1)T= n²

可得第三行前两个数一定为0,即(0,0,A,B)
在这里插入图片描述
可得

  1. An+B=n²
    由性质2可得
    选一远平面上的点x=0,y=0,即中间点(0,0,f,1)T,经矩阵变化后还是中间点(0,0,f,1)T,同时乘f后得(0,0,f²,f)T
    即(0,0,A,B)(0,0,f,1)T=(0,0,f²,f)T
    可得

  2. Af+B=f²
    联立1、2得
    A=n+f
    B=-nf
    至此可解出Mpersp -> ortho
    在这里插入图片描述
    所以对于空间中任意一点进行透视变换可以通过如下公式解出
    在这里插入图片描述

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

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

相关文章

代码随想录训练营 Day56打卡 图论part06 108. 冗余连接 109. 冗余连接II

代码随想录训练营 Day56打卡 图论part06 一、卡码108. 冗余连接 题目描述 有一个图&#xff0c;它是一棵树&#xff0c;他是拥有 n 个节点&#xff08;节点编号1到n&#xff09;和 n - 1 条边的连通无环无向图&#xff08;其实就是一个线形图&#xff09;&#xff0c;如图&…

Java面试篇基础部分-Java的类加载机制

JVM的类加载 JVM在运行Java文件的时候,类加载分为5个阶段:加载、验证、准备、解析、初始化。在类初始化加载完成之后,就可以使用这个类的信息了。当这个类不需要使用的时候,就可以从JVM进行卸载。 加载 加载是指JVM读取Class文件的操作,并且根据Class的文件描述创建对应的…

工厂安灯系统在优化生产流程上的优势丨深圳讯鹏科技

工厂安灯系统通过可视化的方式&#xff0c;帮助工厂管理者和操作工人及时了解生产状态&#xff0c;快速响应问题&#xff0c;从而优化生产流程。 一、安灯系统实时监控与反馈 安灯系统的核心功能是实时监控生产线的状态。通过在生产现场设置灯光、显示屏等设备&#xff0c;工人…

单片机拍照_将采集的RGB图像封装为BMP格式保存到SD卡

文章目录 一、前言二、BMP文件结构2.1 BMP图片的格式说明 2.2 RGB888与RGB565格式是什么&#xff1f;&#xff08;1&#xff09;RGB565&#xff08;2&#xff09;RGB888&#xff08;3&#xff09;区别&#xff08;4&#xff09;如何构成&#xff08;5&#xff09;示例 三、实现…

yolo训练出现Could not load library libcudnn_cnn_train.so.8问题及解决方法

问题场景&#xff1a; 训练yolov5或者yolov8时候会报错&#xff1a; Could not load library libcudnn_cnn_train.so.8. Error: /usr/local/cuda-12.1/lib64/libcudnn_cnn_train.so.8: uined symbol: _ZN5cudnn3cnn34layerNormFwd_execute_internal_implERKNS_7backend11Vari…

【EasyExcel】@ColumnWidth(value = 20) EasyExcel设置列宽不生效

经过测试发现&#xff0c;只有XLS&#xff0c;ColumnWidth注解才会生效&#xff0c;选择CSV和XLSX都不会生效 //对应的导出实体类 EasyExcel.write(outputStream, Result.class)//excel文件类型&#xff0c;包括CSV、XLS、XLSX.excelType(ExcelTypeEnum.XLS)

当你学会了Python,随手爬取电影榜单!

一、爬电影TOP250 python爬取电影TOP250数据&#xff01; 首先&#xff0c;打开电影TOP250的页面&#xff1a; https://movie.douban.com/top250 开发好python代码后&#xff0c;成功后的csv数据&#xff0c;如下&#xff1a; 代码是怎样实现的爬取呢&#xff1f;下面逐一讲…

计算机网络相关概念

名词解释&#xff1a; 1.ARPANET ARPANET&#xff08;Advanced Research Projects Agency Network&#xff09;是由美国国防部高级研究计划局&#xff08;ARPA&#xff09;在1969年启动的一个实验性计算机网络项目。它是世界上第一个分组交换网络&#xff0c;也是互联网的前身…

springboot《计算机网络》在线考试系统-计算机毕业设计源码22248

摘要 计算机网络课程是计算机科学与技术、信息技术及相关专业的一门重要课程。然而&#xff0c;在传统的教育模式下&#xff0c;计算机网络课程的考核方式多以纸质试卷为主&#xff0c;这种方式存在诸多弊端。一方面&#xff0c;试卷的编制、印刷、分发、收缴等环节耗时耗力&am…

遗传算法求解VRP路径规划问题

文章目录 题目&#xff1a;快递公司送货策略VRP问题简介遗传算法项目地址代码说明代码结构求解流程举例求解目标求解步骤 总结 打数模国赛前拿来练手的题&#xff0c;现在题目求解思路分享给大家&#xff0c;包括 所有源代码 和 高清pdf论文&#xff0c;希望能对大家有所帮助…

多线程篇(其它容器- CopyOnWriteArrayList)(持续更新迭代)

一、CopyOnWriteArrayList&#xff08;一&#xff09; 1. 简介 并发包中的并发List只有CopyOnWriteArrayList。 CopyOnWriteArrayList是一个线程安全的ArrayList&#xff0c;对其进行的修改操作都是在底层的一个复制的数 组&#xff08;快照&#xff09;上进行的&#xff0…

解决 git 不是内部或外部命令,也不是可运行的程序

目录 报错提示&#xff1a; 一、解决办法 1、从git官网下载windows版本的git 2、安装 3、注意事项 二、报错 1、解决 fatal: Not a git repository (or any of the parent directories): .git 问题 报错提示&#xff1a; 一、解决办法 Windows下配置Git&#xff1a; 1…

sap公司间交易(采购单转储)-公司间交易价格的配置

sap 公司间交易(采购单转储)-公司间交易价格的配置 对于通过采购单转储方式实现公司间交易,公司间交易价系统标准设计是,购货方采用采购单上的单价做为发票校验的价格,而销售方由于没有销售单,则采用的是在 vk11 里维护的公司间售价,这种做法的坏处是经常要同步这两个价格…

error C2275: 将此类型用作表达式非法-解决方案

最近在进行将C移植C的项目&#xff0c;代码改完&#xff0c;生成解决方案时&#xff0c;出现如下错误&#xff1a; 在移植c代码到c的时候&#xff0c;经常会出现一个奇怪的错误&#xff1a;“error C2275: “xxxxx”: 将此类型用作表达式非法” 两个错误属于同一类型&#xff…

投资一家无人机培训机构技术详解

无人机培训机构是随着无人机技术的快速发展和普及而兴起的一种专业培训机构。这类机构专注于为学员提供无人机相关的理论知识、操控技能以及应用技术培训&#xff0c;以满足不同领域对无人机人才的需求。 1. 市场调研与定位 市场调研 在投资无人机培训机构之前&#xff0c;深…

OpenWRT有三个地方设置DNS,究竟设置哪个地方会更好?

前言 刚上手OpenWRT软路由系统的小伙伴或许都会有这样的疑问&#xff1a;OpenWRT这个系统有三个地方是设置DNS的&#xff0c;究竟设置哪一个才是正确的&#xff1f; 这个还得从实际应用说起。 一般来说&#xff0c;咱们在使用路由器的时候&#xff0c;DNS都是默认运营商的DN…

YOLOV3实现越界检测——智能安防

目录 应用前景 1. 安全监控系统 2. 家庭安防系统 3. 无人机监控 4. 交通管理 5. 无人驾驶技术 6. 大型活动现场 代码说明 1. YOLO 模型加载 2. 摄像头视频流捕获 3. 安全区域绘制 4. YOLOv3 目标检测 5. 过滤和标记人类目标 6. 入侵检测 7. 结果显示和退出 总结…

黑神话怎么录?游戏录屏必备,探索2024年7款游戏录屏软件排行榜

在游戏世界中&#xff0c;记录下每一个精彩瞬间已成为玩家们的共同需求。2024年&#xff0c;随着《黑悟空神话》等大作的问世&#xff0c;玩家们对于游戏录屏软件的需求愈发高涨。本文将为您推荐几款在2024年备受好评的游戏录屏软件&#xff0c;帮助您捕捉游戏中的每一个高光时…

NLP-文本分类文献阅读-前置基础-词汇解释-通俗易懂-9月份-学习总结

目录 迁移学习 特征选择 特征工程 朴素贝叶斯分类方法 支持向量机 K-最近邻&#xff08;K-Nearest Neighbors, KNN&#xff09; 特征向量稀疏 卷积神经网络 循环神经网络 图神经网络 TextCNN 动态 K 最大池化 One-hot BOW Word2vec 池化&#xff08;Pooling&#xff09; 全连接…