Ray_Tracing_The_Next_Week下

embedded/2024/10/19 6:08:07/

5·image Texture Mapping 图像纹理映射

我们之前虽然在交点信息新增了uv属性,但其实并没有使用,而是通过p交点笛卡尔坐标确定瓷砖纹理或者大理石噪声纹理的值

现在通过uv坐标读取图片,通过std_image库stbi_load(path)加载图片,返回图片指针,我们直接将std_image文件放在src源码中使用就行

我们创建image_texture的图片纹理,它的颜色值是通过uv坐标从data*纹理获取的,并且我们的球体应用这个新纹理

然后在求交时,不要忘记更新交点信息的uv坐标,通过函数:

3d笛卡尔转极坐标
转到0---1的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 体积体


http://www.ppmy.cn/embedded/123668.html

相关文章

Redis实现每日签到(大数据量)

PHP语言使用Redis NoSQL服务器二进制数据类型实现大数据情况下签到功能 目录 问题 解决方式 封装签到类 功能调用 总结 问题 实现用户每日签到功能不难,但随着用户量上升之后,不论是存储还是判断对数据量来说都很麻烦;假如每天有100万用…

决策树:简单易懂的预测模型

一、引言 在数据分析和机器学习的世界里,预测模型多种多样,有的复杂难懂,有的却简单直观。 决策树就是这样一种模型,它以其简洁的结构和易于理解的特点,成为了初学者和专家们都 喜爱的工具。 二、决策树的基本原理 1…

Java SE-object类和里面的3个主要方法解读

文章目录 1.object类2.toString方法调用过程2.1具体案例2.2源代码查看2.3方法的重写2.4重写效果 3.equals方法调用过程3.1现象的描述3.2方法的重写3.3IDEA自动填充 4.hashcode方法 1.object类 java里面除了object类,所有的类都是存在继承关系的,object类…

python交互式命令时如何清除

在交互模式中使用Python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是:…

【c++】条件计数器函数设计

源码&#xff1a; #include<iostream>// 函数声明 void conditionCount(int *cond, int *total, bool flag);int main() {// 示例数组&#xff0c;包含5个整数int arr[5] {2, 4, 3, 5, 6};// 初始化总计数器和条件计数器int total 0;int cond 0;// 遍历数组&#xff…

二叉树进阶学习——从中序和后续遍历序列构建二叉树

1.题目解析 题目来源&#xff1a;106.从中序和后序遍历序列构造二叉树 测试用例 2.算法原理 后序遍历&#xff1a;按照左子树->右子树->根节点的顺序遍历二叉树&#xff0c;也就是说最末尾的节点是最上面的根节点 中序遍历&#xff1a;按照左子树->根节点->右子树…

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度&#xff08;FVC&#xff09;栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;和Excel和Shp格式的省市县三级逐月FVC数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;原始的逐月栅格数据来源于高吉喜学者…

AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术

在过去几年中&#xff0c;人工智能领域的发展迅猛&#xff0c;尤其是大语言模型的应用&#xff0c;为各行各业带来了前所未有的创新与突破。从ChatGPT-3.5的推出到GPT Store的上线&#xff0c;再到最新的多模态交互ChatGPT-4o&#xff0c;OpenAI不断引领科技潮流&#xff0c;推…