【GAMES101】Lecture04 Transformation Cont. 变换 续集

目录

  • 0 引言
  • 1 3D Transformations
    • 1.1 缩放和平移变换
    • 1.2 旋转变换
    • 1.3 Quat 四元数
  • 2 Viewing Transformation 观测变换
    • 2.1 View(视图)/ Camera Transformation 视图变换
      • 2.1.1 什么是视图变换
      • 2.1.2 如何进行视图变换
      • 2.1.3 总结
    • 2.2 Projection(投影) Transformation
      • 2.2.1 Orthographic(正交)projection
      • 2.2.2 Perspective(透视)projection
        • 2.2.2.1 回顾一下齐次坐标
        • 2.2.2.2 如何进行透视投影

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:计算机图形学专栏
  • 💥 标题:
  • ❣️ 寄语:对知识永远有兴趣!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正

0 引言

对于二维变换中的旋转矩阵而言,旋转矩阵的转置等于旋转矩阵的逆。(说明这个旋转矩阵是正交矩阵)

在这里插入图片描述

1 3D Transformations

1.1 缩放和平移变换

在这里插入图片描述

1.2 旋转变换

旋转相对复杂,绕不同轴旋转不一样。x
下面是分别绕着 x,y,z轴旋转的情况

在这里插入图片描述


如果是一般的旋转呢,不是只围绕XYZ中某一个轴进行旋转,那么就要将复杂问题转换为简单问题,我们可以将一般性的旋转转换为XYZ轴上的旋转组合。

如下图所示:Row(X)、Pitch(Y)、Yaw(Z)。
我们可以将一般性的旋转转换为绕X旋转、绕Y旋转、绕Z旋转的组合

在这里插入图片描述

罗德里德斯旋转公式
定义了 旋转轴 n 旋转角度 α ,这里的旋转轴是指经过轴心的向量,那假如我要绕着不经过轴心的向量进行旋转呢?那么就可以将这个复杂的变换分解为简单的变换组合,可以现将旋转轴移动到轴心,然后旋转,最后再移动回去。

在这里插入图片描述

1.3 Quat 四元数

自己扩充,这个概念也很重要

四元数是一种数学结构,广泛应用于计算机图形学和动画中。它们扩展了复数的概念,其中一个复数有两个实部和一个虚部,而一个四元数有一个实部和三个虚部。四元数通常表示为:

q = w + x i + y j + z k q = w + xi + yj + zk q=w+xi+yj+zk

其中, w w w 是实部, x x x, y y y, 和 z z z 是虚部, i i i, j j j, 和 k k k 是虚数单位,满足以下关系:

i 2 = j 2 = k 2 = i j k = − 1 i^2 = j^2 = k^2 = ijk = -1 i2=j2=k2=ijk=1

四元数具有一些有用的性质,使其在计算机图形学中得到广泛应用,特别是在旋转和方向插值方面。例如,它们可以用来表示旋转,因为它们具有良好的旋转合成性质。

在计算机图形学中,四元数通常用于执行旋转和变换,因为它们可以更高效地表示旋转,并且避免了万向节锁等问题,与使用欧拉角或旋转矩阵相比,它们提供了更好的性能和稳定性。

四元数在旋转和方向插值方面的应用非常重要,因为它们提供了一种有效的方式来表示和处理旋转变换,同时避免了欧拉角和旋转矩阵所带来的一些问题。

  1. 表示旋转:四元数可以用来表示三维空间中的旋转。通过将四元数 q = w + x i + y j + z k q = w + xi + yj + zk q=w+xi+yj+zk 视为旋转的表示,其中 w w w 是余弦值,而 ( x , y , z ) (x, y, z) (x,y,z) 是轴的正弦分量,可以将旋转应用于向量或物体。

  2. 旋转合成:通过将两个旋转的四元数相乘,可以合成一个新的旋转。这种合成旋转的操作是通过将两个旋转的四元数相乘得到一个新的四元数来完成的,这个四元数代表了这两个旋转的组合。这种操作比使用旋转矩阵进行矩阵相乘更有效率,并且不容易产生误差。

  3. 方向插值:在动画和过渡中,我们经常需要平滑地从一个方向过渡到另一个方向,例如在相机朝向或对象方向变换中。使用四元数进行方向插值(slerp)可以提供平滑的过渡,而不会出现奇异性(例如万向节锁)或者旋转路径不连续的问题。

  4. 插值:除了方向插值外,四元数还可以用于在旋转动画中插值,以平滑地过渡旋转状态。

总的来说,四元数在旋转和方向插值方面的应用使得在计算机图形学中更容易地处理旋转操作,同时提供了更高效和稳定的解决方案。

2 Viewing Transformation 观测变换

2.1 View(视图)/ Camera Transformation 视图变换

在一个场景中,从不同的角度看得到的是不同的画面,所以要唯一确定一个相机,以及相机的方向。这样从三维场景转换到二维图像才是唯一的。

2.1.1 什么是视图变换

可以想一想我们是如何拍一张照片的

  • 找一个地方,然后大家站好位置(模型变换)
  • 相机找到一个好的角度(视图变换)
  • 拍照(投影变换)

在这里插入图片描述

2.1.2 如何进行视图变换

也就是说“如何摆放相机位置”,那么如何定义相机的方位呢?

  • Position e (相机的位置)
  • Look-at / gaze direction g (相机的向前方向)
  • Up direction t (相机的向上方向)

确定这三个要素,才能唯一确定相机的信息。

在这里插入图片描述

规定相机位置在原点,相机往 -Z 方向看,相机向上向量是 Y 轴。(这样可以简化后序操作)

在这里插入图片描述

然后把相机变换到刚才规定的方位

  1. 首先将相机位置 e 变换到 原点 origin
  2. 然后旋转相机的朝向 g 到 -Z 轴
  3. 旋转相机的向上方向 t 到 Y 轴
  4. 旋转 (g × t) 到 X 轴

在这里插入图片描述

然后把上述的操作用矩阵变换来表示,如下

在这里插入图片描述

2.1.3 总结

在计算机图形学中,视图变换、模型视图变换和模型变换虽然相关,但指代的概念略有不同:

  1. 视图变换(View Transformation):视图变换是将场景从世界坐标系转换到相机坐标系(也称为观察坐标系或视图坐标系)的过程。在这个过程中,通常会进行平移、旋转和缩放等操作,以便相机观察场景的不同部分。视图变换通常将世界空间中的对象变换到相机的视角,以便进行后续的投影操作

  2. 模型视图变换(Model-View Transformation):模型视图变换是将模型从模型坐标系变换到观察坐标系(或视图坐标系)的过程。它是视图变换和模型变换的结合,通常包括将模型进行适当的旋转、平移和缩放,以及将模型从世界空间变换到相机坐标系中。模型视图变换将模型放置在相机视角的正确位置和方向,以便正确呈现在屏幕上。

  3. 模型变换(Model Transformation):模型变换是将对象从局部坐标系变换到世界坐标系的过程。这个过程通常包括对对象进行旋转、平移和缩放等操作,以便将对象放置在世界空间的正确位置和方向上。

虽然这些概念在某些情况下可以互换使用,但在其他情况下它们表示的是不同的操作和阶段。例如,在光栅化阶段中,我们通常使用模型视图变换将模型变换到相机视角,然后使用投影变换将其投影到屏幕上。

2.2 Projection(投影) Transformation

投影变换是计算机图形学中的一个重要概念,用于将三维场景投影到二维屏幕上,以便最终显示。主要有两种类型的投影变换:透视投影(Perspective Projection)和正交投影(Orthographic Projection)。

  1. 透视投影:透视投影是一种模拟人眼视觉的投影方式,近大远小。在透视投影中,远处的物体看起来比近处的物体小,投影到屏幕上的位置也不同。透视投影常用于创建具有逼真感的图像,如计算机游戏和虚拟现实应用中。

  2. 正交投影:正交投影是一种投影方式,它不考虑物体距离的远近,所有物体在投影中的大小和位置都保持不变。在正交投影中,投影线是平行的,因此被投影到屏幕上的物体不会产生透视效果。正交投影常用于技术绘图和CAD软件等领域,以及需要精确测量物体尺寸的情况。

在进行投影变换时,通常会将三维场景中的对象的坐标转换为裁剪空间中的坐标,然后再将裁剪空间中的坐标转换为屏幕空间中的坐标。这个过程通常包括透视除法和屏幕空间的归一化。透视除法是将裁剪空间中的坐标的 x x x, y y y, z z z 分量除以其 w w w 分量,得到规范化的坐标。然后,屏幕空间的坐标可以通过将规范化坐标映射到屏幕空间的范围内来得到,通常是通过将坐标映射到屏幕的像素坐标范围内。

投影变换是计算机图形学中渲染管线的一个关键步骤,在将三维场景转换为二维图像时起着至关重要的作用。

在这里插入图片描述

在这里插入图片描述

2.2.1 Orthographic(正交)projection

  • 首先摆放好相机方位
  • 然后把Z轴坐标值去掉

在这里插入图片描述

在这里插入图片描述

2.2.2 Perspective(透视)projection

使用的最广泛的投影。平行线不再平行,

在这里插入图片描述

在这里插入图片描述

2.2.2.1 回顾一下齐次坐标

在这里插入图片描述

2.2.2.2 如何进行透视投影

投影变换是计算机图形学中的一种重要变换,用于将三维场景中的对象投影到二维屏幕上。其中,视锥体(Frustum)是一种常用的投影模型,它由一个近裁剪面(Near Clipping Plane)、一个远裁剪面(Far Clipping Plane)、以及四条视锥体的侧面构成。投影变换负责将视锥体中的场景投影到一个标准立方体(或者称为规范视锥体)中,然后再进行透视或正交投影,最终将投影的结果映射到屏幕上。

  1. 近裁剪面(Near Clipping Plane):视锥体的近裁剪面是视锥体的一个平面,通常位于相机位置之前的一个距离内。它定义了从相机到场景中对象的可见最小距离。

  2. 远裁剪面(Far Clipping Plane):视锥体的远裁剪面是视锥体的另一个平面,通常位于相机位置之后的一个距离外。它定义了从相机到场景中对象的可见最大距离。

在这里插入图片描述

简单好理解的方式:①将远裁剪面的矩形挤成近裁剪面同样大小; ②然后直接进行正交投影即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【广度优先搜索】【图论】【并集查找】2493. 将节点分成尽可能多的组

作者推荐 视频算法专题 本文涉及知识点 广度优先搜索 图论 并集查找 LeetCod2493. 将节点分成尽可能多的组 给你一个正整数 n ,表示一个 无向 图中的节点数目,节点编号从 1 到 n 。 同时给你一个二维整数数组 edges ,其中 edges[i] [ai…

音视频学习笔记——实现PCM和H264合成MP4功能

本文主要记录实现PCM和H264合成MP4功能的整个框架&#xff0c;各个模块中FFmpeg的api使用流程&#xff0c;便于后续学习和复盘。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感兴趣…

智能指针基础知识【C++】【RAII思想 || unique_ptr || shared_ptrweak_ptr || 循环引用问题】

目录 一&#xff0c;为什么需要智能指针 二&#xff0c;内存泄露的基本认识 1. 内存泄露分类 2. 常见的内存检测工具 3&#xff0c;如何避免内存泄露 三&#xff0c;智能指针的使用与原理 1. RAII思想 2. 智能指针 &#xff08;1. unique_ptr &#xff08;2. shared_…

[MYSQL]当数据库被攻破如何重新恢复

前情提要&#xff1a;mysql数据库默认密码、默认端口没有改&#xff0c;也没做安全防护&#xff0c;导致被攻破被索要比特币。 那我们自然是不能给他们的&#xff0c;下面罗列我的补救方法。 密码修改相关 第一步大家自然都会想到先去修改密码&#xff1a; mysqladmin -u roo…

二维码门楼牌管理系统应用场景:商业与零售业发展的助推器

文章目录 前言一、二维码门楼牌管理系统的基本功能二、商业和零售业中的应用场景三、二维码门楼牌管理系统的优势分析四、结论 前言 在数字化时代的浪潮中&#xff0c;二维码门楼牌管理系统凭借其独特的优势&#xff0c;正在逐步成为商业和零售业发展的新宠。它不仅能够为商家…

华为od机试C卷-开源项目热度榜单

1、题目描述 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。 对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue…

鸿蒙开发-UI-动画-页面内动画

鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 文章目录 前言 一、概述 二、页面内…

基于springboot的某大学外卖系统的实现(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 1 后台登录 2管理员界面 3员工信息管理 4客户信息管理 三、库表设计 四、论文 前言 如今&#xff0c;信息化不断的高速发展&#xff0c;社会也跟着不断进步&#xff0c;现今的社会&#xff0c;各种工作都离不开信息化技…

跨网络传输的大致过程+图解(软件虚拟层),ip地址介绍,ip地址和mac地址对比

目录 跨网络传输 引入​​​​​​​ 举例 -- 唐僧西天取经 结论 介绍 ip地址 引入 介绍 类型 公有ip 私有ip 版本 ipv4 ipv6 ip地址和mac地址的唯一性问题 数据包转发的过程 引入 思考 -- 如何跨子网 过程 图解 封装和解包 去掉差异 ip地址/协议的重要…

[每周一更]-第90期:认识Intel的CPU

市面上的CPU分类主要分有两大阵营&#xff0c;一个是Intel、AMD为首的复杂指令集CPU&#xff0c;另一个是以IBM、ARM为首的精简指令集CPU。 两个不同品牌的CPU&#xff0c;其产品的架构也不相同&#xff0c;例如&#xff0c;Intel、AMD的CPU是X86架构的&#xff0c;而IBM公司的…

mybatis plus 查询数据库 字段名 自动添加下划线

问题 mybatis plus 查询数据库 字段名 自动添加下划线 详细问题 笔者使用mybatis plus 查询数据库&#xff0c;执行查询语句报错。详细报错信息 2024-03-08 11:08:33.156 ERROR 4816 --- [nio-9090-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() …

Sora的双重边缘:视频生成的革新与就业的再思考

随着科技的日新月异&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术如潮水般涌入我们的日常生活&#xff0c;为各个领域带来了翻天覆地的变化。在这一浪潮中&#xff0c;Sora作为一款前沿的AI视频生成工具&#xff0c;凭借其高度逼真…