现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射

本文主要是介绍现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上节课我们讨论了布林-冯模型中的漫反射部分,本节将继续讨论该模型中的高光和环境光部分。

布林-冯反射模型(Blinn-Phong Reflectance Model)

高光

对于模型的高光,我们只可以从镜面反射方向看到,也就是说当我们眼睛看的方向 V \bold{V} V和镜面反射方向 R \bold{R} R很接近时可以看到高光。

image-20210401205017997

但是我们定义镜面方向有些困难,于是我们引入了半程向量(bisector) h \bold{h} h来定义高光,如下图。如果我们得到的半程向量 h \bold{h} h与法线方向 n \bold{n} n很接近,那么我们就可以看到高光。

image-20210401205357437
h = bisector ( v , l ) = v + l ∥ v + l ∥ (1) \bold{h}=\text{bisector}(\bold{v},\bold{l})=\frac{\bold{v}+\bold{l}}{\left\| \bold{v}+\bold{l} \right\|} \tag{1} h=bisector(v,l)=v+lv+l(1)
则我们可以使用半程向量(bisector)来定义高光的能量
L s = k s ( I / r 2 ) max ⁡ ( 0 , cos ⁡ α ) p = k s ( I / r 2 ) max ⁡ ( 0 , n ⋅ h ) p (2) L_s=k_s(I/r^2)\max(0,\cos \alpha)^p\\ =k_s(I/r^2)\max(0,\bold{n}\cdot\bold{h})^p \tag{2} Ls=ks(I/r2)

这篇关于现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949680

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)