【GAMES101】Lecture 08 着色频率

目录

着色频率

Flat shading(平面着色)

Gouraud shading(顶点着色)

Phong shading(像素着色)

如何计算法线


着色频率

大家可以看到下面这三个球是看起来不一样的是吧,但是其实这三个球用的模型是一样,但是着色频率不一样,我们说着色是应用到某个点的,所谓着色频率就是指要将着色应用到哪些点上,左边这个球是平面着色,中间这个是顶点着色,右边这个是像素着色

Flat shading(平面着色)

对于每个平面,我们可以找出它的法线,然后根据这个法线的方向就可以计算出一个shading,然后我们认为这个平面都是这个shading,那么这个平面都是同一个颜色,这个叫flat shading,平面着色

Gouraud shading(顶点着色)

对于每个三角形的顶点,我们可以计算出每个顶点的shading对吧,然后每个三角形顶点都有自己的颜色,那对于三角形内部怎么处理呢,这个可以通过插值的方法来让三角形内部的颜色有一个平滑的过渡,这个叫gouraud shading,顶点着色

Phong shading(像素着色)

还可以对每一个像素进行着色,计算每一个点的shading,这个叫phong shading,像素着色

这几个着色频率不一定说谁的效果就更好,具体还得看这个物体本身采样的面的数量,如果说这个模型足够精细,那实际上平面着色和顶点着色的效果也会很好

如何计算法线

我们刚刚说这个三种着色频率都需要计算这个法线,那么怎么计算呢,三角形平面的法线比较好算,直接两条边向量做一个叉乘就可以得到这个平面的方向向量了

那这个三角形顶点的法线如何计算呢?我们说一个顶点它肯定会是几个三角形的顶点对吧,因为用三角形表示这个物体肯定是闭合的,然后对于一个顶点周围的三角形平面都可以计算出一个法线,那我们取这些法线的平均是不是就可以近似的表示这个顶点的法线,那有的三角形面积大,有的三角形面积小,它们的法线对顶点的法线的影响可能不一样,这里就做一个加权平均就行

还有就是两个顶点之间的像素如何计算法线,是根据重心坐标做插值实现的,这个重心坐标具体后面课程会讲解

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

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

相关文章

Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界面

一、前言 这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第…

c++:基于c语言基础上的语法不同(1)

前言&#xff1a;此篇文章适合学完c语言基础概念的同学&#xff0c;是帮助c向c语言的同学快速掌握基本语法。 基础格式 #include<iostream>using namespace std; int main() {system("pause");return 0; } 输入&#xff1a; cin>>a;//a是输入内容 输出…

Spark-RDD算子大全

Spark RDD&#xff08;弹性分布式数据集&#xff09;是Spark中的核心抽象&#xff0c;它代表一个不可变、分区的分布式数据集合。下面是一些常用的RDD算子&#xff1a; 转换算子&#xff1a; map(func)&#xff1a;对RDD中的每个元素应用给定的函数&#xff0c;返回一个新的RD…

vue基于Spring Boot的中医在线学习课程购买服务管理系统

SpinrgBoot的主要优点有&#xff1a; 1、为所有spring开发提供了一个更快、更广泛的入门体验&#xff1b; 2、零配置&#xff1b; 3、集成了大量常用的第三方库的配置&#xff1b; 4、提供准备好的特性。当今&#xff0c;nodejs领域的开发者机会都在使用SpinrgBoot,在开发领域逐…

【探索C++容器:vector的使用和模拟实现】

【本节目标】 1.vector的介绍及使用 2.vector深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vertor文档介绍 1. vector是表示可变大小数组的序列容器。2. 就像数组一样&#xff0c;vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元…

Deepin/Ubuntu_查看磁盘空间大小

以下是Linux系统&#xff08;Deepin、Ubuntu&#xff09;查看磁盘空间大小的代码示例&#xff1a; 使用df命令&#xff1a; df -h使用du命令查看指定目录的磁盘使用情况&#xff1a; du -sh /path/to/directory使用lsblk命令&#xff1a; lsblk使用fdisk命令查看磁盘分区表…

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况

Linux下安装docker

1、查看系统版本 Docker支持64位版本的CentOS 7和CentOS 8及更高版本&#xff0c;它要求Linux内核版本不低于3.10。查看Linux版本的命令这里推荐两种&#xff1a;lsb_release -a或cat /etc/redhat-release。 显然&#xff0c;当前Linux系统为CentOS7。再查一下内核版本是否不低…

关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关)

关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关) 本文作者&#xff1a; slience_me 文章目录 关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关)1. python环境配置相关1.1 系统环境1.2 Anaconda环境相关1.2.1 安装1.2.2 查看python环境 1.…

面试150-76(Leetcode114二叉树展开为链表)

代码&#xff1a; 0124 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode righ…

【软件测试常见Bug清单】

软件测试中&#xff0c;bug的类型有很多种&#xff0c;比如&#xff1a;代码错误、界面优化、设计缺陷、需求补充和用户体验等&#xff1b; 一般情况下&#xff0c;需求补充和设计缺陷比较好区分&#xff0c;但是代码错误、界面优化和用户体验区分不是很明显&#xff1b; 下面…

MySQL存储函数和存储过程练习题

一、创建表的要求 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch表内容 id name glass 1 xiaommg …

【GitHub项目推荐--名校课程资源】【转载】

先引用一段话&#xff0c;今天推荐的所有 GitHub 项目创立动机几乎都是这个。本文会盘点清华、北大、斯坦福、中国科学技术大学、上海交大等学校的课程资源。 01. 浙江大学课程共享计划 上图截屏中的话就是出自该项目&#xff0c;浙江大学搞了一个课程共享计划&#xff0c;其…

安装RabbitMQ sentos并挂载

1. usr/local/software/mq/data 创建data目录, mkdir data 2. 拉取镜像 docker pull rabbitmq 3.配置网络 docker network create --driver bridge --subnet172.18.12.0/16 --gateway172.18.1.1 wn_docker_net 4. 设置参数并创建挂载 docker run -it \ --name rabbitmq \…

一文说明白 MySQL 的 ACID 和 几种日志的关系

1、简介 我们对于MySQL 很熟悉&#xff0c;关于其特性都有一定的了解&#xff0c;但是关于一些具体的实现原理&#xff0c;有的小伙伴可能不太熟悉&#xff0c;而且这部分知识在我们互联网大厂面试中是经常涉及的&#xff0c;因此&#xff0c;本文将带你深入底层&#xff0c;顺…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记&#xff1a;【二叉树篇】538. 把二叉搜索树转换为累加树 日期&#xff1a;2023.1.19 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为准备组会汇报又搁置了好久&#xff08;其实就是懒逃避T^T)&#xff0c;但这是最后一道二叉树啦啊啊啊&#xff01;&#xff01…

递归、搜索与回溯算法(专题六:记忆化搜索)

目录 1. 什么是记忆化搜索&#xff08;例子&#xff1a;斐波那契数&#xff09; 1.1 解法一&#xff1a;递归 1.2 解法二&#xff1a;记忆化搜索 1.2.1 记忆化搜索比递归多了什么&#xff1f; 1.2.2 提出一个问题&#xff1a;什么时候要使用记忆化搜索呢&#xff1f; 1.3 …

第十三章 MySQL

第十三章 MySQL 下面是创建数据库操作 删除数据库 右上角选择要操作的数据库 如果关闭了这个控制台&#xff0c;下次如何找到它呢 也可以对其改名

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南

文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下&#xff0c;搭建QT插件版的CTest测试环境。 一、…

java测简单案例定时器和netty心跳检

一&#xff0c;定时器的实现方式 在Java中&#xff0c;定时器可以通过多种方式实现&#xff0c;其中最常用的是使用java.util.Timer和java.util.TimerTask类。下面是一个简单的示例&#xff0c;演示如何使用这些类来创建一个定时器。 首先&#xff0c;我们需要创建一个继承自…