Ray_Tracing_The_Next_Week下
5·image Texture Mapping 图像纹理映射
我们之前虽然在交点信息新增了uv属性,但其实并没有使用,而是通过p交点笛卡尔坐标确定瓷砖纹理或者大理石噪声纹理的值
现在通过uv坐标读取图片,通过std_image库stbi_load(path)加载图片,返回图片指针,我们直接将std_image文件放在src源码中使用就行
我们创建image_texture的图片纹理,它的颜色值是通过uv坐标从data*纹理获取的,并且我们的球体应用这个新纹理
然后在求交时,不要忘记更新交点信息的uv坐标,通过函数:
void get_sphere_uv(const vec3& p, double& u, double& v) {/* 从p交点-》极坐标-》uv对应值 */auto phi = atan2(p.z(), p.x());auto theta = asin(p.y());u = 1-(phi + pi) / (2*pi);v = (theta + pi/2) / pi;
}
然后在ray_color()求得交点的uv后,应该调用value()获取uv对应的颜色,这里由于继承体系,我们将从材质获取纹理添加getTexture()的虚函数,以便动态的调用纹理的value()
下图是随意找的一张jpg格式的地球贴图

6·Rectangles and Lights 矩形和光源
我们想要在场景加入矩形的灯光,因此首先新建发光材质
接着为了让光源的效果更清晰,我们让背景不在是天空,改为全黑的,所有光都来自于我们的矩形光源
我们创建矩形物体,并重写hit求交函数,那么如何求交呢?
定义一个轴对齐xy方向的平面,x0,x1,y0,y1,z,首先射线方程仅看z值,求得t,然后再分别将t带入xy的射线方程,即可求出xy,那么当xy在范围内,那么就是相交的

现在开始布置Cornell Box场景

7·Cornell Box
创建新的box实例,因为要考虑倾斜角度,我们先把轴对齐box创建出来

实例:是一种经过旋转过或者平移等操作的几何图元。光线追踪中是通过改变光线来模拟物体操作的
对于平移:物体移动offset,相当于光线 - offset,因为光线实际没有移动,被修改的rec仍要改回来
8`volumes 体积体
相关文章:
Ray_Tracing_The_Next_Week下
5image Texture Mapping 图像纹理映射 我们之前虽然在交点信息新增了uv属性,但其实并没有使用,而是通过p交点笛卡尔坐标确定瓷砖纹理或者大理石噪声纹理的值 现在通过uv坐标读取图片,通过std_image库stbi_load(path)…...
ES索引生命周期管理
基于如何 定时删除ES索引过期数据 而引发的一系列关于ES索引生命周期管理ILM(Index Lifecycle Management)的学习 快速上手 :定时删除ES索引中的过期数据 1. ILM解决什么问题? ES从6.7版本引入ILM,通过ILM可以解决哪些问题呢? 自动新建…...
Oracle数据库体系结构基础
关于Oracle体系结构 基于Oracle11g体系结构 目标: 了解Oracle体系结构掌握逻辑存储结构掌握物理存储结构熟悉Oracle服务器结构熟悉常用的数据字典 Oracle数据库管理中的重要的三个概念 实例(instance):实例是指一组Oracle后台进程以及在服务器中分配…...
QT学习笔记4.5(文件、参数文件)
QT学习笔记4.5(文件、参数文件) 1.保存配置参数 1.使用QSettings保存到注册表,ini文件 2.文件存储:使用 QFile 和其他类将参数保存到文本文件、二进制文件、XMLWENJIAN、JSON 文件等。 文本文件:以简单的键值对格式…...
服务器虚拟化的详细学习要点
服务器虚拟化的详细学习要点可以归纳为以下几个方面: 1. 基本概念与原理 定义与原理:了解服务器虚拟化是一种将物理服务器资源转化为虚拟服务器资源的技术,允许在一台物理服务器上运行多个虚拟服务器。 虚拟化层次:理解虚拟化的不同层次,如裸机虚拟化(Type 1)和托管虚…...
创建一个Java Web API项目
创建一个Java Web API涉及多个步骤和技术栈,包括项目设置、依赖管理、数据访问层实现、业务逻辑实现、控制层开发以及测试和部署。在这篇详解中,我将带领你通过一个完整的Java Web API实现流程,采用Spring Boot和MyBatis-Plus作为主要技术工具…...
对称加密算法的使用Java和C#
1. JAVA中的使用 1.1.原生使用 Main函数代码 import symmetric_encryption.AESExample; import symmetric_encryption.BlowfishExample; import symmetric_encryption.DESExample; import symmetric_encryption.TripleDESExample; public class App { public static…...
10款好用的开源 HarmonyOS 工具库
大家好,我是 V 哥,今天给大家分享10款好用的 HarmonyOS的工具库,在开发鸿蒙应用时可以用下,好用的工具可以简化代码,让你写出优雅的应用来。废话不多说,马上开整。 1. efTool efTool是一个功能丰富且易用…...
ubuntu22.04中备份Iptables的设置
在 Ubuntu 22.04 中备份 iptables 的设置,您可以采用以下几种方法: 使用 iptables-save 命令: 您可以使用 iptables-save 命令将当前的 iptables 规则保存到文件中。例如,要将规则保存到 /etc/iptables/rules.v4 文件中࿰…...
(PyTorch) 深度学习框架-介绍篇
前言 在当今科技飞速发展的时代,人工智能尤其是深度学习领域正以惊人的速度改变着我们的世界。从图像识别、语音处理到自然语言处理,深度学习技术在各个领域都取得了显著的成就,为解决复杂的现实问题提供了强大的工具和方法。 PyTorch 是一个…...
若依从redis中获取用户列表
因为若依放入用户的时候,会在减值中添加随机串,所以用户的key会在redis中变成: login_tokens:6af07052-b76d-44dd-a296-1335af03b2a6 这样的样子。 如果用 Set<Object> items redisService.redisTemplate.keys("login_tokens&…...
文件上传之%00截断(00截断)以及pikachu靶场
pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断, 第13关0x00截断 差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下&#…...
Chainlit集成LlamaIndex并使用通义千问实现和数据库交互的网页对话应用(text2sql)
前言 我在之前的几篇文章中写了如何使用Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用,但是发现Langchain的几种和数据库交互的组件都不够让我满意,虽然已经满足了大部分场景的需求,但是问题还是很多,比如…...
计组复习笔记
计组笔记 汇编部分 通用寄存器(General Registers): AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…...
62. 环境贴图2
环境贴图作用测试 实际生活中光源照射到一个物体上,这个物体反射出去的光线也会影响其他的物体,环境贴图就是用一种简单方式,近似模拟一个物体周边环境对物体表面的影响。 测试:对于PBR材质,如果threejs三维场景不添…...
MATLAB中数据导入与导出的全面指南
在MATLAB中,数据的导入与导出是数据处理工作流中的两个基本步骤。导入是将外部数据加载到MATLAB工作区的过程,而导出则是将工作区中的数据保存到外部文件中。这两个步骤对于数据分析、可视化和结果共享至关重要。本文将详细介绍如何在MATLAB中进行数据的…...
Jenkins从入门到精通,构建高效自动化流程
目录 一、Jenkins简介1、Jenkins的历史与发展(1)Jenkins的起源(2)Jenkins的发展(3)Jenkins的社区与生态系统(4)Jenkins在我国的发展 2、Jenkins的核心功能3、Jenkins的应用场景 二、…...
【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
如何在电脑上浏览手机界面
联想浏览器中,点击右键-》检查,进入开发者工具: 点击如上,红色框框选中的手机浏览模式即可。...
国产RISC-V案例分享,基于全志T113-i异构多核平台!
RISC-V核心优势 全志T113-i是一款双核Cortex-A7@1.2GHz国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Docker容器技术。 而其中的RISC-V属于超高能效副核心,主频高达1008MHz,标配内存管理单元,可运…...
英语从句全攻略:名词性、定语、副词性从句一网打尽(含易错点分析)
英语从句全攻略:名词性、定语、副词性从句一网打尽(含易错点分析) 当你读到一篇地道的英文文章时,是否曾被那些"套中套"的句子结构难住?从句就像英语语法中的俄罗斯套娃,层层嵌套却暗藏规律。作为…...
GME-Qwen2-VL-2B-Instruct部署详解:CUDA版本兼容性与FP16加载验证
GME-Qwen2-VL-2B-Instruct部署详解:CUDA版本兼容性与FP16加载验证 1. 项目概述 GME-Qwen2-VL-2B-Instruct是一个专为图文匹配度计算优化的多模态模型工具。它解决了原生调用中常见的打分不准问题,通过本地化部署实现了高效、安全的图文检索功能。 1.1…...
Windows下用MSYS2编译axel多线程下载工具的保姆级教程(附常见错误解决方案)
Windows下MSYS2编译axel多线程下载工具全指南 如果你厌倦了商业下载工具的臃肿和限制,又对Python多线程下载的稳定性不满,那么编译一个原生的axel多线程下载工具可能是最佳选择。本文将带你从零开始在Windows环境下,通过MSYS2完整编译axel&a…...
智能车小白也能懂的舵机PD控制:从电感差比和到方向控制,保姆级避坑指南
智能车方向控制入门:用PD算法驯服你的舵机 第一次看到智能车在赛道上流畅过弯时,很多人都会好奇——这辆小车是如何感知赛道边界并精准控制方向的?作为电磁组智能车的核心部件,舵机就像车辆的"方向盘",而PD控…...
算力虚拟化技术:如何实现算力的高效分配与复用
算力虚拟化技术:如何实现算力的高效分配与复用📚 本章学习目标:深入理解如何实现算力的高效分配与复用的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《云原生、云边端一体化与算力基建…...
Docker容器中运行Windows系统的突破性企业级解决方案:架构解析与部署实践
Docker容器中运行Windows系统的突破性企业级解决方案:架构解析与部署实践 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 在当今云原生和容器化技术快速发展的背景下,如…...
PyTorch张量操作实战:从基础运算到高效数据处理
1. PyTorch张量基础:从零开始理解多维数组 第一次接触PyTorch张量时,我完全被这个看似复杂的概念搞懵了。直到有一天,我把张量想象成俄罗斯套娃,突然就豁然开朗了。最外层的套娃是最高维度,每打开一层就降一个维度&…...
OpenClaw多任务队列:GLM-4.7-Flash并行处理邮件整理与文档生成
OpenClaw多任务队列:GLM-4.7-Flash并行处理邮件整理与文档生成 1. 为什么需要多任务队列 上周五下午,我同时面临三个紧急任务:整理客户邮件、生成季度报告草稿、汇总项目会议纪要。手动切换不同工具时,不仅效率低下,…...
掺氢燃气轮机Simulink动态仿真模型探索
掺氢燃气轮机simulink动态仿真模型 1. 西门子5MW和260MW(v94.3a)模型设计点 2. 可选择加pid控制或开环动态仿真模型 3. 功率可以为输入也可以为输出,供选择 4. 掺氢气比例可以动态调节 5. 输出参数包括燃烧室出口温度,流量,动力涡轮出口温度&…...
Windows系统信息导出全攻略:从msinfo32生成报告到用PowerShell定制你的专属硬件清单
Windows系统信息自动化采集与定制化报告实战指南 对于IT资产管理专员和技术团队而言,准确获取终端设备的硬件配置信息是软件许可合规、资产盘点和故障排查的基础工作。传统的手动记录方式效率低下且容易出错,而Windows内置的msinfo32工具生成的报告又过于…...
