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

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

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

布林-冯反射模型(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

相关文章

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、(重要)

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

C#特性(Attributes)和反射(Reflection)详解

《C#特性(Attributes)和反射(Reflection)详解》:本文主要介绍C#特性(Attributes)和反射(Reflection),具有很好的参考价值,希望对大家有所帮助,如有错误... 目录特性特性的定义概念目的反射定义概念目的反射的主要功能包括使用反射的基本步骤特性和反射的关系总结特性