当前位置: 首页 > news >正文

兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)

关于漫反射

光打到凹凸不平的平面上,光线会被反射到四面八方,被称为漫反射

 关于这种模型,由于光线由于分散,所以进入人眼的光线强度和观察角度没有区别

 在A点和B点接收到的光线强度是一样的

在漫反射下,光线强度只和光的入射角度有关

关于法线和叉乘

法线,是指始终垂直于某平面的虚线,这是在二维平面下的法线

叉乘是求一条垂直于平面的向量

 可以用叉乘求出物体的法线

关于点乘

点乘表示A在B方向上的投影与B方向的乘机,反映了两个向量在方向上的相似度

计算公式为:

兰伯特光照模型(Lambert Lighting)

diffuse = I*cosθ

其中I为入射光强度

cosθ为光源方向和顶点法线的余弦,也就是两者的点乘,这个值越大,则cosθ越大

但是如果光在物体背面,则这个值为负数,于是就归为0就可以了

然后再乘上材质的颜色就是最后的颜色值了,也就是下面的完全公式

Diffuse = 直射光颜色 *材质颜色 * max(0,cos夹角(光和法线的夹角))

在辐射度量学之前,图形学一直处于一个想当然的境地

这个公式是在1760年提出来的,这个公式完全是经验公式,看起来像那么回事就可以了

但是兰伯特光照模型有个弊端,就是在物体打不着光的一面完全是黑色的,会“不那么好看”

于是就有了半兰伯特光照模型

半兰伯特光照模型(Half-Lanbert)

在1998的《半条命》的游戏引擎中,提出了半兰伯特的光照模型

在半兰伯特光照模型公式中

Diffuse = 直射光颜色 * 材质颜色 * (dot(光源方向, 法线方向) * 0.5 + 0.5)

在光在物体的背面的时候,最后的计算结果也会有明暗变化

这样物体就会”好看多了“

相关文章:

兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)

关于漫反射 光打到凹凸不平的平面上,光线会被反射到四面八方,被称为漫反射 关于这种模型,由于光线由于分散,所以进入人眼的光线强度和观察角度没有区别 在A点和B点接收到的光线强度是一样的 在漫反射下,光线强度只和光…...

Python 进阶指南(编程轻松进阶):二、环境配置和命令行

原文:http://inventwithpython.com/beyond/chapter2.html 环境配置是配置你的计算机环境,以便你写代码的过程。这包括安装任何必要的工具,配置它们,以及处理安装过程中的任何问题。没有一键配置这种傻瓜式操作过程,因为…...

求职半年,三月成功拿到阿里offer,分享一波面经...

前言 不论是校招还是社招都避免不了各种⾯试、笔试,如何去准备这些东⻄就显得格外重要。不论是笔试还是⾯试都是有章可循的,我这个“有章可循”说的意思只是说应对技术⾯试是可以提前准备,所谓不打无准备的仗就是这个道理。 以下为大家&…...

餐饮店的运营需要考虑哪些方面

餐饮店的运营需要多方面的考虑和规划,以下是传递宝APP上一些常用的餐饮店运营方法: 1.定位:明确餐饮店的定位和目标客户群体,针对不同的客户需求,提供个性化的服务和产品,比如是附近的上班族,还…...

Multi-modal Alignment using Representation Codebook

Multi-modal Alignment using Representation Codebook 题目Multi-modal Alignment using Representation Codebook译题使用表示代码集的多模态对齐期刊/会议CVPR 摘要:对齐来自不同模态的信号是视觉语言表征学习(representation learning)的…...

关于vector的emplace_back和push_back的区别

实验代码&#xff1a; class A { public:A(int x) {x x;cout << "construct A" << endl;}A(const A& a) {x a.x;cout << "copy construct A" << endl;}A(const A&& a) {cout << "Move construct A"…...

Vue——表单输入绑定

目录 基本用法​ 文本 多行文本 复选框​ 选择器​ 值绑定​ 复选框 单选按钮 选择器选项 修饰符​ .lazy​ .number​ .trim​ 组件上的 v-model​ 在前端处理表单时&#xff0c;我们常常需要将表单输入框的内容同步给 JavaScript 中相应的变量。手动连接值绑定…...

MySQL性能优化(二)索引

文章目录优化手段准备案例索引的本质索引的数据结构不同存储引擎中索引的实践MyIsam &#xff08;索引没有主次之分、都存放在MYI文件&#xff09;主键索引其他索引InnoDB&#xff08;数据即索引、索引即数据&#xff09;主键索引——聚集索引聚集索引其他索引没有主键的情况&a…...

< 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >

< 每日闲谈&#xff1a;你真的了解 “ ChatGPT ” 嘛 &#xff1f; >&#x1f449; 前言&#x1f449; OpenAI的创立&#x1f449; ChatGPT有何过人之处&#xff1f;> 效果演示&#x1f449; OpenAI看家之作 — GPT自然语言模型> GPT发展史> 里程碑-GPT3> 从…...

改善Instagram客户服务的6个技巧

Instagram仍然是全球前四大社交网络&#xff0c;按用户数量排名。它通过其创新的过滤器、内容创建工具、视频和卷轴选项继续增长并推动流量。这是一个平台&#xff0c;世界顶级名人和有影响力的人可以为全球用户提供有趣和令人印象深刻的内容。 但不仅仅是一个娱乐平台&#xf…...

8年经验之谈:4步解决测试与开发人员有争议的bug问题...

“开发认为不是bug&#xff0c;测试如何处理&#xff1f;”很多面试中&#xff0c;测试工程师都会被问到这个问题&#xff0c;不仅仅是面试&#xff0c;工作中测试人员也会遇到这类问题&#xff0c;甚至可能由于某种原因&#xff0c;无论是开发人员还是开发经理就是不愿修改程序…...

Linux日常小技巧shell脚本

在工作中我们常用shell脚本处理一些问题,这里整理了一些工作中常用的简单shell脚本。 定时备份文件 #!/bin/bash backup_dir="/data1/backup" src_dir="/data1/app" date_time=$(date +%Y%m%d_%H%M%S) tar -czvf ${backup_dir}/${date_time}.tar.gz ${sr…...

技术创业者必读:从验证想法到技术产品商业化的全方位解析

导语 | 技术创业之路往往充满着挑战和不确定性&#xff0c;对于初入创业领域的人来说&#xff0c;如何验证自己的创业想法是否有空间、如何选择靠谱的投资人、如何将技术产品商业化等问题都需要认真思考和解决。在「TVP 技术夜未眠」第六期直播中&#xff0c;正马软件 CTO、腾讯…...

Docker Registry 本地镜像发布到私有库

本地镜像发布到私有库流程 是什么1 官方Docker Hub地址&#xff1a;https://hub.docker.com/&#xff0c;中国大陆访问太慢了且准备被阿里云取代的趋势&#xff0c;不太主流。2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便&#xff0c;涉及机密的公司不可能提供镜像给公…...

Pytorch构建ResNet-50V2

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第J2周&#xff1a;ResNet-50V2算法实战与解析 &#x1f356; 作者&#xff1a;K同学啊 一、ResNetV2与ResNet结构对比 改进点 (a)origi…...

【01】PointNet论文解析

PointNet的应用 1.点云图像的分类&#xff08;整片点云是什么物体&#xff09; 2.点云图像的部件分割&#xff08;整片点云所代表的物体能拆分的结构&#xff09; 3.点云图像的语义分割&#xff08;将三维点云环境中不同的物体用不同的颜色区分开&#xff09; 补充 PointN…...

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…...

JavaEE简单示例——基于注解的SSM整合

基于注解的SSM整合 在之前我们进行了基于XML配置文件的整合&#xff0c;这次我们介绍基于注解的SSM框架的整合。基于注解的含义是将我们之前所有的配置文件用java类来代替&#xff0c;也就是我们会在Java类中编写之前我们之前在配置文件中编写的内容。 首先我们将之前我们编写…...

EFBG-06-250双比例阀放大器

EFBG-06-250双比例阀放大器特点&#xff1a; 1.本阀系仅供应驱动元件所需最低的压力及流量的入口节流式节能阀。 2.本阀可使油泵及马达侧的压力随时维持大于负载压0.6-0.9MPa的压差&#xff0c;因而可节省能耗。 3.外置比例放大器参数可调&#xff0c;维修更换简单。...

初级算法-栈与队列

主要记录算法和数据结构学习笔记&#xff0c;新的一年更上一层楼&#xff01; 初级算法-栈与队列一、栈实现队列二、队列实现栈三、有效的括号四、删除字符串中的所有相邻重复项五、逆波兰表达式求值六、滑动窗口最大值七、前K个高频元素栈先进后出&#xff0c;不提供走访功能…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...