光线追踪RayTracing,基本原理,判断物体与光线相交

news2024/10/6 6:43:20

光线的三点假设:

  1. 光线按直线传播
  2. 光线之间不会发生碰撞
  3. 光线会经过一系列折射反射进入摄像机
    可以从摄像机发出光线,推出可逆的光路
    在这里插入图片描述
    上图中,透明球在与相机直连的线条处,需要将折射和反射的着色点结果相加,如果有光源直射,需要将光源在该点的着色结果也相加
    在这里插入图片描述
    相机直射出的第一条光线为primary Ray,之后做处理的均被称为secondaryRay,与光源的连线被称为shadowRay
  • 光线定义
    在这里插入图片描述
    对于球表面求光线交点
    在这里插入图片描述
    之后解得t的值:
    在这里插入图片描述
    在这里插入图片描述
    t:首先是正数
    在可以分多种情况讨论,相离相交相切
  • 总过程可总结为:
    在这里插入图片描述
  • 关于光线和物体求交
    如果光源在物体内,则与物体交点一定是奇数个,否则一定为偶数个
  • 光线和物体求交
  • 与三角形求交
    可以首先将这个问题转化为光线和平面求交,再判断交点是否在三角形内
  • 如何定义一个平面?
    记录该平面上一个点p,和该平面的法线,即可定义一个平面
    在这里插入图片描述
    上图中,N为法线,p’为平面上的一个点,平面内任意一个点p可以满足该式子
    带入光线射入的公式可得出t的值,从而可得光线与该平面的焦点
    在这里插入图片描述
    最后根据重心坐标的知识得出该点是否在三角形内。
  • 另一种方法Moller Trumbore算法
    解这个式子主要通过矩阵形式解
    在这里插入图片描述
  • AABB包围盒(包围体积)
    Axis-Aligned Bounding Box轴对齐包围盒
    如果针对物体上每一个三角形都判断是否会被光线照射到,那么带来的消耗将会非常大,所以引入AABB包围盒机制来对判断光线照射这个过程进行加速,如果光线碰不到包围盒的话,就不可能碰到物体上任何一个三角形
    在这里插入图片描述
  • 光线和包围盒相交
    在这里插入图片描述
    上图中,找到光线经过x0,x1平面的时间,找到光线经过y0,y1的时间,通过交集的性质求得tmin和tmax,如果最后的结果是tmax > tmin,那么说明光线穿过了包围盒
    那么对于3D包围盒求tmin和tmax:
    在这里插入图片描述
    如果光线进入时间为负,离开时间为正,则说明光源在包围盒内
    那么有:
    在这里插入图片描述

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

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

相关文章

Neuroimage | LMDA-Net第一作者亲自讲述其设计思想

近期, 天津大学精仪学院和医工院联合,在神经科学和神经成像顶刊 Neuroimage中发表题为《LMDA-Net: 一种具有通用性和可解释性的轻量级EEG解码网络》的学术论文, 为解决人工神经网络模型在EEG解码时面临的跨数据集泛化性差、预测波动性高和模型可解释性差…

【2023】Redis cluster集群模式搭建

目录 1.cluster集群介绍2.搭建cluster集群2.1.架构图2.2.搭建集群2.2.1.创建所需配置文件2.2.2.创建集群所需容器2.2.3.创建集群:master1节点连接其他节点2.2.4.配置从节点,完成三主三从 3.在cluster集群内读写数据 1.cluster集群介绍 Redis Cluster是R…

每个程序员都必须知道的8种通用数据结构

8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和…

GitOps多环境部署问题及解决方案

大型组织应用GitOps难免会遇到在多环境中部署的问题,本文分析了应用环境分支策略会遇到到问题,介绍了应用文件夹策略解决这些问题的方案。原文:Stop Using Branches for Deploying to Different GitOps Environments[1], How to Model Your G…

STC8比较器功能案例介绍

STC8比较器功能案例介绍 📌相关篇《STC8功能脚切换相关寄存器P_SW1和P_SW2以及MCLKOCR介绍》 📋基于内部参考电压源,使用外部端口P3.7作为比较器正极输入源,比较器结果输出到P3.4 或者P4.1(由P_SW2 中的CMPO_S 进行设定…

Oracle的最高认证并不是OCM,而是......

什么是Oracle数据库的最高认证呢?大家注意,不是Oracle OCM,而是Oracle高可用大师认证,全称叫:Maxium Availability Certified Master,要获得这一张证书,你需要同时有5个认证。 关于博主&#x…

Prompt 用法大全!让 ChatGPT 更智能的六种策略(中)

如果遵循以下六种策略来构建 Prompt 提示词,在和 ChatGPT 对话中我们将获得更好、更符合我们要求的回答。 这些策略,后几种更适合在编程调用 ChatGPT API 时使用,不过也适用直接和 ChatGPT 对话,让它更好的理解我们的意图。 1、写…

8.DIY可视化-拖拽设计1天搞定主流小程序-小程序首页幻灯片显示

小程序首页幻灯片显示 本教程均在第一节中项目启动下操作 小程序首页幻灯片显示前言一、添加组件: 图片轮播公告图文菜单二. 绑定幻灯片数据接口三:首页绑定接口数据:1.绑定字段 四.导出源码,解压后,导入hbulider,运行查看效果1.导出源码:2.解压,导入hbuilder 五.运行查看效果对…

Ae:蒙版插值面板

Ae菜单:窗口/蒙版插值 Mask Interpolation 蒙版插值Mask Interpolation面板可用于自动创建蒙版路径 Mask Path属性的关键帧,从而实现更平滑逼真的路径动画。 至少选择 2 个连续的蒙版路径关键帧后,智能蒙版插值将基于面板上的选项设置创建中间…

Qt5.12.6配置Android Arm开发环境(Linux)

1.安装jdk 2.安装android studio 3.安装sdk 与ndk 设置代理 安装SDK工具 安装SDK Platform 安装QT 选择JDK 1.8安装路径,SDK与NDK路径 如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed 配置成功后可看到ARMv7与AMD-v8a kits Qt Version也可看到ARM…

既然有了HTTP,为什么还要RPC?

文章目录 HTTP和RPC区别RPC(Remote Procedure Call)服务流行的RPC框架 HTTP服务Restful RPC接口和HTTP接口的区别与联系传输协议传输效率性能消耗负载均衡服务治理(下游服务新增,重启,下线时如何不影响上游调用者&…

Java012——Java引用数据类型String的简单学习

回顾Java数据类型 本次要学习的是Java引用数据类型String 一、对String类简单说明 说明:String是Java中的一个类 二、String类的作用 作用:主要用来创建和操作字符串。 三、使用String类 3.1、创建字符串 注意: 1、字符串使用双引号&qu…

基于Springboot+vue+协同过滤+前后端分离+鲜花商城推荐系统(用户,多商户,管理员)+全套视频教程

基于Springbootvue协同过滤前后端分离鲜花商城推荐系统(用户,多商户,管理员)(毕业论文11000字以上,共33页,程序代码,MySQL数据库) 代码下载: 链接:https://pan.baidu.com/s/1mf2rsB_g1DutFEXH0bPCdA 提取码:8888 【运行环境】Idea JDK1.8 Maven MySQL…

【网络原理】TCP/IP协议五层模型

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 …

Linux基础内容(22)—— 信号

Linux基础内容(21)—— 进程消息队列和信号量_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130770830?spm1001.2014.3001.5501 目录 1.定义 1.介绍 2.解释 例子 操作系统信号 实现的大致思路 2.信号的产生方式 …

【C语言】计算含多种运算符的表达式

计算含多种运算符的表达式 引入运算符的优先级算术表达式的运算规则引例例题 引入 诸如下面这些表达式,它的计算过程,计算顺序是怎样的?计算结果为多少? 今天我们就一起来解决一下这个问题吧! 运算符的优先级 解决…

6.数据结构期末复习之查找和排序1

概念 静态查找: 无插入和删除 动态查找: 边插入删除边查找静态和动态查找的实现方式 1.线性表: 静态查 2.树表(二叉排序树)动态查 3.散列表 静态动态都可以查找: 集合中查找满足条件的数据关键码 1.主关键码:可以表标识数据唯一性 2.次关键码: 不能标识查找效率: 比较次数决定的…

八、进程程序替换

文章目录 一、进程程序替换(一)概念(二)为什么程序替换(三)程序替换的原理(四)如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换,会不会影响父进程呢? &…

PDF 内容替换器软件工具 PDF Replacer Pro Crack

PDF 内容替换器软件工具 批量查找和替换 PDF 中的指定文本 PDF Replacer 是一款 Windows 软件程序,可在 PDF 文件中查找指定的单词或短语文本并替换为新文本,并保持 PDF 布局不变。 Windows 7/Win 8/Win 10 或更高版本(32/64 位) …

devart ADO.NET Data Providers 2023

ADO.NET Data Providers 2023 dotConnect 开发与数据相关的 .NET 应用程序的终极解决方案,具有 ORM 支持的快速灵活综合功能丰富的 ADO.NET 提供程序 ADO.NET 数据提供者 高性能 ADO.NET 数据提供程序 dotConnect 是一个增强的数据连接解决方​​案,它建立在 ADO.N…