posts - 105,comments - 0,trackbacks - 0

摘要: 首先,让我们制作一个发光的材料。我们需要一个发光函数(我们也可以把它加到hit_record里,这取决于你的设计品位).就像背景,它只告诉光线它是什么颜色,它不反射。这很简单: 这样我就不必让所有非发射材料实现emit(),然后我的基类返回黑色: 接下来,我们将颜色函数中的背景设为黑色,并注意emm阅读全文
posted @ 2018-07-23 11:23 图样司 阅读(6) 评论(0) 编辑
摘要: 我们之前使用撞点P来索引一个固体纹理,比如大理石。我们还可以读取图像,并使用2D纹理坐标索引到图像上。 在图像中缩放(u,v)的直接方法是将u和v四舍五入为整数,并将其用作(i,j)像素。但是这很尴尬,因为当我们改变图像分辨率时,我们不想改变代码。因此,最普遍的非官方标准之一是使用纹理坐标而不是图像阅读全文
posted @ 2018-07-20 17:03 图样司 阅读(26) 评论(0) 编辑
摘要: 为了建立三维空间的几何模型,我们需要体积、表面和曲线的数学模型。有两种基本的方法可以做到这一点,分类和枚举。 第一种方法的基本思想是存在一个点隶属分类函数。这是由公式或三值过程给出的,给定一个点的坐标,返回该点是在内部、外部还是在形状上。数学上,这可以表示为 函数为0的点轨迹定义了内外边界。假设没有阅读全文
posted @ 2018-07-11 23:16 图样司 阅读(9) 评论(0) 编辑
摘要: 复杂的场景通常由许多不同类型的几何原语组成。为了生成这种场景的图像,渲染系统必须能够处理这种多样性。射线跟踪的主要优点之一是它具有简单的面向对象结构。该程序有一个射线追踪部分,通过投射或追踪合适的射线来计算光学性质;还有一个相交部分,用来检查射线是否与不同类型的物体相交。由于接口定义得很好,所以如果阅读全文
posted @ 2018-07-10 23:26 图样司 阅读(17) 评论(0) 编辑
摘要: 光线和二次曲线相交的相对简单的类别:圆柱体,圆锥体,椭圆体,双曲面等。球体和平面是该族物体的特殊子类。 出于效率的原因,这些简单的对象通常被赋予它们自己的相交实例。 例如,参见[13]以获得更快的圆柱交点方法。 本节将介绍这些对象的广义相交。 同样,参数光线公式和隐式表面方程用于解决相交问题。 标准阅读全文
posted @ 2018-07-03 11:16 图样司 阅读(26) 评论(0) 编辑
摘要: 光线追踪中一个常用形式就是长方形的盒子。这个图元对象经常被用于边界体积-一个用于加快复杂对象相交测试的算法。 Kay和Kajiya提出了一个基于slabs[9]来处理这些相交对象的方法。slab就是两个平行平面之间的空间。slab集的相交定义了边界体积。该方法依赖于每一对板的光线的交点,跟踪近距离和阅读全文
posted @ 2018-07-02 10:21 图样司 阅读(13) 评论(0) 编辑
摘要: 一旦在一个多边形中找到了一个交点,就可以执行许多其他操作。如果多边形被分配了颜色模式,则必须检索交点处的颜色。类似的操作必须对其他纹理映射过程执行,比如bump映射。如果多边形是曲面上的一条路径,则必须从顶点的不同法线推导出精确法线。 本节将介绍在凸四边形中获取点位置的算法,因为这种形状在各种应用中阅读全文
posted @ 2018-06-29 16:28 图样司 阅读(29) 评论(0) 编辑
摘要: 一旦得到平面方程,就可以进行射线/多边形的交点。在计算射线/平面交叉后,下一步是确定交点是否在多边形内。 有许多不同的方法可以解决这个问题。Berlin[1]很好地概述了一些技术。这里给出的方法是在[14]中提出的“射线相交”算法的一个修改版本。该算法的工作原理是,从交点处向任意方向发射一束射线,并阅读全文
posted @ 2018-06-28 21:49 图样司 阅读(17) 评论(0) 编辑
摘要: 这一节讨论的是在平面上的一个点是否在平面上的一个多边形上。多边形被假定为完全在平面内。假设平面方程是已知的。如果不给出平面方程,就必须推导出它。参阅rogers的优秀著作[12],以获得正常的方法。阅读全文
posted @ 2018-06-27 16:49 图样司 阅读(12) 评论(0) 编辑
摘要: 先定义一个光线: 虽然不需要对光线方向进行标准化,但是,还是建议进行标准化,否则t将代表长度的距离。 再定义一个平面: 然后坐标系统原点到平面的距离是D, D的符号决定了系统原点在平面的哪一边。这是平面的隐式函数。 通过将方程(C1)的展开式代入平面方程(C2),得到射线原点到平面P的交点的距离: 阅读全文
posted @ 2018-06-26 16:56 图样司 阅读(18) 评论(0) 编辑