GAMES101-现代计算机图形学入门笔记

主讲老师:闫令琪,此处仅做个人笔记使用。如果我的分享对你有帮助,请记得点赞关注不迷路。

课程链接如下:GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

课程分为四部分:光栅化、几何、光线追踪、模拟

图形学依赖于数学、物理学(光学力学等)、信号处理(反走样)、数值分析、美学等等等等。

一、线性代数

向量、矩阵。

表示空间中的一个点,并平移,旋转等操作。都涉及到向量好矩阵的计算。

向量(矢量):表示的是一个方向,A的坐标减去B的坐标,得到的就是一个向量。你平移这个向量,只要指向同一个方向,那就还是同一个向量。

向量两个重要的属性:方向、长度。

【向量点乘】在图形学里最重要的作用就是找到两个向量(方向)之间的夹角,或者说是余弦夹角。

常用于:

  • 光从哪一个方向进来,物体表面的法线是什么方向的,我们从哪个方向去看。这些方向之间互相的夹角的计算,都是通过点乘来运算的。
  • 一个向量投影到另一个向量上是长什么样。↓

图形学里向量常见应用及好处:

点乘的结果是一个标量。

点乘的公式是:a·b = |a||b|cosθ

点乘可以用来计算两个向量(两个方向)有多么接近。根据两个向量点乘的结果就可以判断两个方是接近还是远离。也可以计算关于前与后的信息(方向基本一致,方向基本相反或方向垂直):如果a、b向量比较接近,那么计算点积的时候得到的结果就比较接近1,如果方向渐渐远离,远离到垂直,结果数值就会渐渐变为0。再远离,数值会渐渐变为-1,再转360回去就又会回归为1。

应用: 一束光打在镜面上,大家都知道有镜面反射定律。如果眼睛(摄像机)就是从出射光的角度看进去,呢么就会看到非常亮的光斑反射 。如果错开一点点,就看不到反射。金属材质同理,离得角度在一个区间内看到的就是另一个金属感强的折射效果,我们需要通过计算两个向量是否接近及远离,来定义具体的区间,并对其做出相应的调整和实现。

【向量叉积】会输入a、b两个向量,会计算出第三个向量c(差积结果),和原本的两个向量都要垂直 

叉积(又称叉乘)的结果是一个向量。

叉乘的公式是a×b = |a||b|sinθ * c(其中c是垂直于a和b所在平面的单位向量)

右手螺旋定则:计算a向量和b向量的差积,就是伸出右手(拇指与其余四指垂直),从a的方向弯曲手指转到b方向。拇指的朝向就是差积c的方向。(a叉乘b得到正c就说明是右手螺旋定则)

注意,叉乘没有交换律,如果要交换记得加个负号。一个向量叉乘它自己,结果是0(长度为0的向量)。

向量的叉乘可以表示成矩阵模式

叉积可以用来在图形学里判定左和右。如图,想判定b在a的左侧还是右侧(想左逆时针旋转还是向右顺时针旋转),用a叉乘b,会发现z是正的(拇指朝屏幕外),就可以判断b在a的左边。

叉积可以用来在图形学里判定内与外(重点)。 如图有ABC三个点,它们是逆时针排列的。我们想判定如图P点是否在三角形内,我们可以做这样的叉积:先看AB叉乘AP,得到结果是向外的,可得P点在AB的左侧。BC叉乘BP,可得P点在BP的左侧,CA叉乘CP,可得P点在CP的左侧。叉乘都在左侧可得点在三角形内,否则至少有一边点在右侧。

应用:如果过我们要做三角形光栅化,上述判断内与外就是基础。我们要判断三角形覆盖了哪些像素,我们至少要知道这个点是不是在该三角形内部,这样我们好给他进行着色。(如果得到结果是0,如何判断是内部还是外部呢?自己说了算进行啦哈哈哈,是内是外都可以)

定义一个坐标系的好处,(例如右手坐标系)是可以把任意的向量进行分解,分解到坐标系的三个轴上去(会用到前面介绍的向量的投影)。投影的计算方式就是点积。

【未完待续】如果我的分享对你有帮助,请记得点赞关注不迷路。

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

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

相关文章

激光工控机在自动化生产线中有什么关键作用?

激光工控机作为自动化生产线的核心设备,通过高精度控制、快速响应和智能化集成,在提升效率、保障质量、实现柔性制造等方面发挥着不可替代的作用。以下是其关键作用的具体分析: 一、实现高效连续生产: 1.高速加工能力&#xff1…

高等数学(上)题型笔记(六)定积分的应用

目录 1 三角函数定积分的结论 2 定积分的微元法(元素法) 2.1 使用条件 2.2 使用步骤 3 定积分的几何应用 3.1 平面图形的面积 3.1.1 直角坐标系的情形 3.1.1.1 X型 3.1.1.2 Y型 3.1.1.3 双型 3.1.1.4 复合:分割型 3.1.1.5 引入参…

QT项目——天气预报

文章目录 前言一、项目介绍二、项目基础知识1. 软件开发网络通信架构1.1 CS架构 / BS架构1.1.1 CS架构(客户端-服务器架构)1.1.2 BS架构(浏览器-服务器架构) 1.2 HTTP 基本概念 2. QT 下 HTTP 编程2.1 类的解析2.2 示例程序 3. JS…

最优化方法-牛顿法

牛顿法 泰勒级数 泰勒级数展开 $$ \begin{aligned} f(x)&\lim\limits_{n\rightarrow \infin}\sum\limits_{i1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\ &f(x_0)f’(x_0)(x-x_0)\frac{f’(x_0)}{2!}(x-x_0)2\cdots\frac{1}{n!}fn(x_0)(x-x_0)^n\ &\quad~ O\left[(x-x_…

论文笔记(七十二)Reward Centering(二)

Reward Centering(二) 文章概括摘要2 简单的奖励中心 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…

halcon机器视觉深度学习对象检测,物体检测

目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本, 然后训练模型,导出模型文件 这个是模型 mod…

MySQL修改JSON格式数据示例

最近发现有个数据是用JSON格式直接存到表格里面的,大概就是下面这样的 然后需要修改里面某个属性的值,一开始我想的是 REPLACE 替换 UPDATE test_1 SET content REPLACE(content, {"age": 15, "name": "w5"}, {"ag…

第4章 信息系统架构(二)

4.2 系统架构 信息系统架构是一种体系结构,它反映了一个组织信息系统的各个组成部分之间的关系,以及信息系统与相关业务、信息系统与相关技术之间的关系。 4.2.1 架构定义 对于大规模的复杂系统来说,对总体的系统结构设计比起对计算算法和…

AI 时代:探索大语言模型与核心技术

引言 在当今科技快速发展的时代,人工智能(AI)正成为推动创新和变革的重要力量。从能够理解和生成自然语言的大语言模型(LLM),到具有自我学习能力的生成式预训练转换器(GPT)&#xf…

Python----数据结构(单链表:节点,是否为空,长度,遍历,添加,删除,查找)

一、链表 链表是一种线性数据结构,由一系列按特定顺序排列的节点组成,这些节点通过指针相互连接。每个节点包含两部分:元素和指向下一个节点的指针。其中,最简单的形式是单向链表,每个节点含有一个信息域和一个指针域&…

10、k8s对外服务之ingress

service和ingress的作用 service的作用 NodePort:会在每个节点开放一个端口,端口号30000-32767。 也是只能用于内网访问,四层转发。实现负载均衡。不能基于域名进行访问。 clusterip:service的默认类型,只能在集群…

Linux-ubuntu系统移植之Uboot启动流程

Linux-ubuntu系统移植之Uboot启动流程 一,Uboot启动流程1.Uboot的两阶段1.1.第一阶段1.11.硬件初始化1.12.复制 U-Boot 到 RAM1.13.跳转到第二阶段 1.2.第二阶段1.21.C 语言环境初始化1.22. 硬件设备初始化1.23. 加载环境变量1.24. 显示启动信息1.25. 等待用户输入&…

H3C交换机路由器防火墙FTP/TFTP服务器搭建。

软件介绍。 3CDaemon 2.0 - Download 3CDaemon 是一款集成了多种网络服务功能的工具软件,主要用于网络管理和文件传输,支持TFTP、FTP、Syslog等多种协议,广泛应用于网络设备的配置和管理。 1. 主要功能 TFTP服务器:支持TFTP协议…

Docker Mysql 数据迁移

查看启动命令目录映射 查看容器名称 docker ps查看容器的启动命令 docker inspect mysql8.0 |grep CreateCommand -A 20如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2 如果没…

[Windows] WPS 2024冬季更新版(版本号19770)

[Windows] WPS 2024冬季更新版 链接:https://pan.xunlei.com/s/VOJQrS4UCz5639Oan7pu1X84A1?pwdg8ad# WPS灵犀正式上线DeepSeek R1!告别服务器超时,办公效率飙升300%! 2025年2月14日,WPS官方宣布全面接入DeepSeek …

图解循环神经网络(RNN)

目录 1.循环神经网络介绍 2.网络结构 3.结构分类 4.模型工作原理 5.模型工作示例 6.总结 1.循环神经网络介绍 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络结构。与传统的神经网络不同&#xff0c…

【队列】循环队列(Circular Queue)详解

文章目录 一、循环队列简介二、循环队列的判空和判满三、循环队列的实现leetcode 622. 设计循环队列 一、循环队列简介 在实际开发中,队列是一种常用的数据结构,而循环队列(Circular Queue)则一般是一种基于数组实现的队列&#x…

vmware虚拟机Ubuntu Desktop系统怎么和我的电脑相互复制文件、内容

1、先安装vmware workstation 17 player,然后再安装Ubuntu Desktop虚拟机,然后再安装vmware tools,具体可以参考如下视频: VMware虚拟机与主机实现文件共享,其实一点也不难_哔哩哔哩_bilibili 2、本人亲自试过了&…

Netty入门详解

引言 Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能网络服务器和客户端。它提供了一组丰富的 API,使得开发人员能够轻松地处理各种网络协议,如 TCP、UDP 等,并且支持多种编解码方式&a…

DeepSeek 助力 Vue 开发:打造丝滑的点击动画(Click Animations)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…