【GAMES101】Lecture 07 着色(shading)

目录

着色

Blinn-Phong反射模型

漫反射

光衰减


着色

这个着色(shading)就是将不同的材质应用到不同的物体上,像一个物体,它可以是木头的、金属的、塑料的……

Blinn-Phong反射模型

我们来看一个简单的着色模型,叫Blinn-Phong反射模型

我们可以看到下面这个茶杯在右上方光源的照射下可以分成三个不同的地方,一个是这个Specular highlights,叫镜面高光,就是对着光源比较光滑的地方反射的光比较多,一个是这个Diffuse reflection,叫漫反射部分,物理中指的是投射在粗糙表面上的光向各个方向反射的现象,还有一个Ambient lighting,叫做环境光,也叫间接光照,这个光是来着周围环境的反射光

着色是局部的,是对于一个点着色,对于这一个点,它是在物体的表面的对吧,这是我们能够看得到,这个表面可能是曲面,但是对于某个点来说,它所在的面可以当作是一个平面,我们定义三个方向单位向量,n是这个平面的法向量,然后我们观测方向这个v向量指向我们的摄像机,l(L)向量是光源方向,指向光源,还有这个着色点的颜色color,还有着色点的光泽shininess,注意这个shininess不是亮度

还有就是着色不会产生这个阴影,就是shading不会产生shadow,这个着色是局部的,而这个阴影则是在光源下点和其他点的作用

漫反射

我们说这个漫反射是光线照射到一个不光滑的地方然后反射出四面八方的光线的现象

但是为什么同样是漫反射有些地方亮有些地方暗呢,大家都知道这是因为光线照射的角度不一样是不是,我们这里把光给离散化,那如果光是垂直照射到这个平面上自然接受到的光最多,如果是斜的话这个接受到的光能量就会减少,这个就涉及到Lambert余弦定理,就是说我们接收到的光的能量和光源方向与平面法方向之间的夹角的余弦值成正比

这个其实可以解释为什么会有春夏秋冬,并不是因为冬天太阳离地球远了,毕竟是同一颗地球,北半球冬天的时候南半球是夏天是不是,而是因为太阳照射光线的角度随着地球公转发生了变化,冬天是斜着照,接受的光能量比较小,所以比较冷

光衰减

考虑一个点光源散发出来的能量,假设每时每刻散发出来的能量是固定的,那么这些能够可以想象成一个球膜,并且这个球膜越来越大,就是这个球膜的表面积越来越大,但是根据能量守恒,这个球膜的总能量是不变的,假设距离光源距离为1的点的光的强度为I,那么可以算出距离为r的点的光的强度为I/r²

然后最后就是怎么计算这个漫反射出来的光,这个n·l是Lambert余弦定理计算出来的余弦值,然后和0取个最大值,因为余弦值为负的没有意义,然后乘以光在着色点的强度,这个kd是漫反射的反射率系数,取值0到1,表示可以反射多少光

这个着色还没完,还需要两节课才能讲完这个着色,还有就是刚刚过程中的物理模型并不完全准确,要等到路径追踪才讲

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

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

相关文章

冻结Prompt微调LM: PET(b) LM-BFF

PET-TC(B) paper b: 2020.9 It’s not just size that matters: Small language models are also few-shot learners. Prompt: 多字完形填空式人工Prompt Task:Text Classification Model: Albert-xxlarge-v2 Take Away: 支持多字的完形填空Prompt&a…

基于DQN和TensorFlow的LunarLander实现(全代码)

使用深度Q网络(Deep Q-Network, DQN)来训练一个在openai-gym的LunarLander-v2环境中的强化学习agent,让小火箭成功着陆。 下面代码直接扔到jupyter notebook或CoLab上就能跑起来。 目录 安装和导入所需的库和环境Q网络搭建经验回放实现DQNAge…

【算法Hot100系列】字母异位词分组

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

环境变量配置文件

1.配置文件简介 source命令 source命令通常用于保留、更改当前shell中的环境变量。 格式: source 配置文件 . 配置文件 环境变量配置文件简介 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSI…

(二十)Flask之上下文管理第一篇(粗糙缕一遍源码)

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

Ikuai中如何添加/更换虚拟机(图文)

Ikuai配置 分区/格式化硬盘(如果已经格式化,无需再次格式化,直接传送到上传镜像) 上传镜像 ⚠️:如果是压缩格式,需要解压缩后上传,如这里的IMG格式。 创建虚拟机 配置虚拟机(等待虚拟机起来后执行&#…

Vulnhub-w1r3s-editable

一、信息收集 端口扫描,ftp允许匿名登录,但是没有得到什么有用的线索 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.1.6 | …

FeatInsight: 基于 OpenMLDB 的特征平台助力高效的特征管理和编排

OpenMLDB 社区新开源了特征平台产品 - FeatInsight(https://github.com/4paradigm/FeatInsight),是一个先进的特征存储(Feature Store)服务,基于 OpenMLDB 数据库实现高效的特征管理和编排功能。FeatInsight 特征平台提供简便易用…

JeecgBoot集成东方通TongRDS

TongRDS介绍 TongRDS(简称 RDS)是分布式内存数据缓存中间件,用于高性能内存数据共享与应用支持。RDS为各类应用提供高效、稳定、安全的内存数据处理能力;同时它支持共享内存的搭建弹性伸缩管理;使业务应用无需考虑各种…

Active Directory监控工具

Active Directory 是 Microsoft 为 Windows 环境实现的 LDAP 目录服务,它允许管理员对用户访问资源和服务实施公司范围的策略。Active Directory 通常安装在 Windows 2003 或 2000 服务器中,它们统称为域控制器。如果 Active Directory 出现故障&#xf…

跑通 yolov5-7.0 项目之训练自己的数据集

yolov5 一、yolov5 源码下载二、配置环境,跑通项目三、训练自己的数据集1、获取验证码数据2、标注图片,准备数据集3、开始训练自己的数据集1、train.py 训练数据集2、val.py 验证测试你的模型3、detect.py 正式用你的模型 四、遇到的报错、踩坑1、import…

电脑内存满了怎么清理内存?试试这6个方法~

内存越大,运行越快,程序之间的切换和响应也会更加流畅。但是随着时间的增加,还是堆积了越来越多的各种文件,导致内存不够用,下面就像大家介绍三种好用的清理内存的方法。 方法一:通过电脑系统自带的性能清理…

vim 编辑器如何同时注释多行以及将多行进行空格

当然可以,以下是我对您的文字进行润色后的版本: 一、场景 YAML文件对空格的要求非常严格,因此在修改YAML时,我们可能需要批量添加空格。 二、操作步骤 请注意:您的所有操作都将以第一行为基准。也就是说&#xff0…

OpenCV-Python(39):Meanshift和Camshift算法

目标 学习了解Meanshift 和Camshift 算法在视频中找到并跟踪目标 Meanshift 原理 Meanshift算法是一种基于密度的聚类算法,用于将数据点划分为不同的类别。它的原理是通过数据点的密度分布来确定聚类中心,然后将数据点移动到离其最近的聚类中心&#…

【代码随想录07】344.反转字符串 541. 反转字符串II 05.替换空格 151.翻转字符串里的单词 55. 右旋转字符串

目录 344. 反转字符串题目描述做题思路参考代码 541. 反转字符串 II题目描述参考代码 05. 替换数字题目描述参考代码 151. 反转字符串中的单词题目描述参考代码 55. 右旋转字符串题目描述参考代码 344. 反转字符串 题目描述 编写一个函数,其作用是将输入的字符串反…

C语言从入门到实战——动态内存管理

动态内存管理 前言一、 为什么要有动态内存分配二、 malloc和free2.1 malloc2.2 free 三、calloc和realloc3.1 calloc3.2 realloc 四、常见的动态内存的错误4.1 对NULL指针的解引用操作4.2 对动态开辟空间的越界访问4.3 对非动态开辟内存使用free释放4.4 使用free释放一块动态开…

用于自动驾驶最优间距选择和速度规划的多配置二次规划(MPQP) 论文阅读

论文链接:https://arxiv.org/pdf/2401.06305.pdf 论文题目:用于自动驾驶最优间距选择和速度规划的多配置二次规划(MPQP) 1 摘要 本文介绍了用于自动驾驶最优间距选择和速度规划的多配置二次规划(MPQP)。…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

指路(1)(2)(3)(4)(5)👇 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能…

MATLAB对话框与菜单设计实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740733 一、实验目的 1.掌握建立控件对象的方法。 2.掌握对话框设计方法。 3.掌握菜单设计方法。 二、实验内容 建立如下图所示的菜单。菜单…

15.云原生之k8s容灾与恢复实战

云原生专栏大纲 文章目录 Velero与etcd介绍Velero与etcd备份应用场景Velero与etcd在k8s备份上的区别 Velero备份恢复流程备份工作流程Velero备份时,若k8s集群发送变化,会发发生情况?Velero 备份pv,pv中数据变化,会发发…