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

这里写目录标题

  • 图形学基础
    • 线性代数
      • 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.rhkb.cn/news/421311.html

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

相关文章

终端显示字体背景和字体颜色

【终端显示字体背景和字体颜色等使用用法】 在命令行下想要产生五颜六色的字体和背景&#xff0c;只需要加上一些颜色代码即可。 ANSI 标准规定了一种所有终端共享的指令集&#xff0c;并要求用 ASCII 的数字字符传递所有数值信息&#xff0c;用于控制 Linux 终端上的光标位置…

linux中2024新版virtuoso安装的详细步骤

前言 Virtuoso 是一个高性能的多模型数据库&#xff0c;支持关系型、文档型、图形型和RDF数据库操作。随着时间的推移&#xff0c;Virtuoso 数据库不断更新&#xff0c;尤其是2024年发布的新版本&#xff0c;带来了许多新特性和改进。本文将详细介绍如何在 Linux 环境下安装最新…

ISP面试准备2

系列文章目录 文章目录 系列文章目录前言一.如何评价图像质量&#xff1f;二.引起图像噪声的原因三. ISP3.1 ISP Pipeline主要模块3.1.1坏点校正&#xff08;Defect Pixel Correction, DPC&#xff09;3.1.2黑电平校正&#xff08;Black Level Correction, BLC&#xff09;3.1.…

形式向好、成本较低、可拓展性较高的名厨亮灶开源了。

简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算法加…

论文速读|形机器人的高速和抗冲击远程操作

论文地址&#xff1a;https://arxiv.org/pdf/2409.04639 本文提出了一种综合解决方案&#xff0c;用于远程控制类人机器人&#xff0c;实现了高速度和冲击抵抗的操作。通过结合无校准的运动捕捉和重定标、低延迟全身运动流式传输工具箱和高带宽的摆线驱动器&#xff0c;显著提高…

别错过!一款你不能错过的轻量级拖拽库 `drag-kit`

在开发过程中&#xff0c;如何让UI元素自由拖拽&#xff0c;是许多前端工程师面临的常见问题。尤其在构建复杂的用户交互界面时&#xff0c;能够提供灵活、便捷的拖拽功能显得尤为重要。今天我们就来深入解析一款轻量级的拖拽库——drag-kit。它不仅功能涵盖多&#xff0c;而且…

开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略

摘要&#xff1a;本文深入探讨在开源 AI 智能名片 S2B2C 商城小程序的情境下&#xff0c;全渠道供应的运行机制。阐述各环节企业相互配合的重要性&#xff0c;重点分析零售企业在其中的关键作用&#xff0c;包括协调工作、信息传递、需求把握等方面&#xff0c;旨在实现高效的全…

国家标准和行业标准有什么区别?如何办理国家标准?

在当今复杂多样的标准体系中&#xff0c;国家标准和行业标准犹如两颗璀璨的明珠&#xff0c;各自闪耀着独特的光芒&#xff0c;它们共同为经济社会的发展提供了坚实的技术支撑。然而&#xff0c;你是否真正了解这两者之间的区别呢&#xff1f; 一、制定主体 • 国家标准&#x…

多速率信号处理-Nobel恒等式

典型的插值器的结构&#xff0c;滤波器位于插值操作后&#xff0c;意味着滤波器工作在较高的采样率下&#xff0c;对滤波器的设计带来压力。可以通过恒等变换将插值操作后置&#xff0c;滤波器前置&#xff0c;简化系统的设计。 第一恒等式 表明抽取操作位于乘加操作之后和抽…

ABeam旗下德硕管理咨询(上海)荣获知识管理领域的专业奖项—2024 China MIKE 大奖

ABeam旗下德硕管理咨询&#xff08;上海&#xff09;荣获知识管理领域的专业奖项—2024 China MIKE 大奖 近日&#xff0c;备受业界瞩目的2024 China MIKE大奖揭晓&#xff0c;ABeam集团旗下德硕管理咨询&#xff08;上海&#xff09;有限公司凭借其优秀的知识管理体系与创新实…

计算机毕业设计选题推荐-班级管理系统-教务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

SpringCloud微服务详细笔记(一):微服务介绍--微服务拆分--RestTemplate远程调用--Nacos注册中心

目录 1.认识微服务 1.1单体架构 1.2微服务 1.3SpringCloud 2.微服务拆分 2.1服务拆分原则 2.1.1什么时候拆&#xff1f; 2.1.2怎么拆&#xff1f; 2.2微服务项目结构&#xff1a; 2.3服务拆分示例&#xff1a; 2.4远程调用 2.4.1RestTemplate 2.4.2远程调用示例 …

MVC架构的JSP快速学习(一)

目录 服务相关配置 模型介绍 基础依赖 模型图(抽象) 项目结构 控制器编写 服务相关配置 1. Tomcat配置 http://t.csdnimg.cn/9rILV 2. Maven配置 http://t.csdnimg.cn/REKu9 3. Idea配置 tomcat maven 模型介绍 虽然JSP本身不强制使用MVC&#xff0c;但它通常与Serv…

21. Revit API: 几何对象(二)- Curve

上篇讲了Revit几何对象的类层次结构&#xff0c;讲了几何元素和几何实例&#xff0c;简单提到了Solid。 这一篇呢&#xff0c;就从构成Solid的边讲起。 一、Edge&#xff08;边&#xff09; Edge在Revit中就是用来表示边的&#xff0c;并且在各种表示几何结构的类中串门。 前…

封装一个 Vue 3 流程线可视化组件

这个组件展示了一系列带有节点和箭头连接的流程线&#xff0c;并具备不同风险等级的样式和动画效果&#xff0c;非常适合大屏展示项目。 功能概述 这个流程线组件具备以下功能&#xff1a; 动态渲染&#xff1a;根据传入的数据&#xff0c;组件可以自动生成节点和箭头。风险…

计算机网络(五) —— 自定义协议简单网络程序

目录 一&#xff0c;关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二&#xff0c;网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三&#xff0c;自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三&#xff0c;服务器实现 3.1…

分享一个基于微信小程序的医院挂号就诊一体化平台uniapp医院辅助挂号应用小程序设计(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

NVD系列语音芯片在报警器中通常应用在哪些场景中

语音芯片在各类场景中应用的最大作用就是进行语音提示和警报提示。本文将对NVD系列语音芯片应用在报警器中的场景。 1.提升电动车的安全性 当电动车遭受震动或异常移动时&#xff0c;报警器会感应到并触发报警装置&#xff0c;通常是通过发出高分贝的声音警报来吸引人们的注意…

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后&#xff0c;苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本&#xff0c;iOS 18 RC 的内部版本号为22A3354&#xff0c;本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中&#xff0c;苹果给我们带来了 Apple Intelligence&#xff0c;这…

如何在内网中与阿里云服务器进行文件传输?[2024详细版]

随着云计算发展&#xff0c;企业和个人选择将数据存储在云端&#xff0c;以提高数据的安全性和可访问性。阿里云作为国内领先的云服务提供商之一&#xff0c;提供了多种云产品和服务。其中&#xff0c;云服务器ECS&#xff08;Elastic Compute Service&#xff09;因其灵活性和…