raytracegroundup_v3.2_FishBowl_20170323
光线追踪模拟:鱼缸 玻璃 水 三角形网格图形
测试图形含:平底鱼缸、圆底鱼缸
(生成图形的过程非常耗时,尤其是“平底鱼缸”图形耗时二十几个小时)
raytracegroundup_v3.1_GlassOfWater_20170321
光线追踪模拟一杯水。
用各种基本图形作为各种介质的界面,最终生成“一杯水”的图形。
含两个角度的观测图形、添加阴影的图形。
注意:由于涉及的介质界面较多,所以为了得到较为真实的图形,需要将max_depth设置较大(10或者>10)。
raytracegroundup_v3.0_TorusPartConcave_20170320
较v2.9添加了一些小surfaces:
Annulus、OpenCylinderConvex、OpenCylinderConcave、TorusPart、TorusPartConcave。
测试图形是TorusPart、TorusPartConcave相关的。
raytracegroundup_v2.9_RealisticTransparency_TriangleMeshes_20170319
将Triangle Mesh的材质设置为透明材质。
对比测试不同max_depth,不同分辨率的Triangle Mesh图形。
过程中用到:Triangle Mesh图形的仿射变换。
同时实现了Instance类的shadow_hit()函数。
realisticraytracegroundup_v2.8_RealisticTransparency_20170319
真实地模拟透明材质:菲涅尔方程;颜色过滤。
对比测试了“真实地模拟透明材质”、“简易地模拟透明材质”的图形;
对比测试了内外颜色过滤的图形。
raytracegroundup_v2.7_SimpleTransparent_20170317
只是“简易”地模拟透明材料。
为什么说是“简易地模拟”呢?
因为,在两种介质确定了的情况下,这一章节中认为折射系数kt是一个常数,对应反射系数kr=1-kt。但是,实际情况则是:kt会因入射角的不同而变化。
测试图形包含:
各种折射率、各种“最大光线深度”对比测试图形(含全反射图形)。
raytracegroundup_v2.6_GlobalTace_CornellBox_20170316
raytracegroundup_v2.6_GlobalTace_CornellBox_20170316
较之前版本,这个版本主要是将path tracing算法只用于间接光照。
基于Cornell Box对比测试了效果图形。
raytracegroundup_v2.5_PathTace_CornellBox_20170316
raytracegroundup_v2.5_PathTace_CornellBox_20170316
采用Path Tracing算法生成Cornell Box。
内含多种采样次数的对比测试图形。
raytracegroundup_v2.4_GlossyReflection_20170315
raytracegroundup_v2.4_GlossyReflection_20170315
主要添加了“间接光照的高光反射模型”相关代码。
测试图形包含:hand skeleton在“间接光照的高光反射模型”材质物体中的镜像。
改变“模糊指数exp”,对比测试多组图形。
raytracegroundup_v2.3_MirrorReflection_20170314
raytracegroundup_v2.3_MirrorReflection_20170314
对应的测试图形为:hand skeleton。
调节了各种直接光照参数和间接光照参数,然后生成了各种对比图形。
raytracegroundup_v2.2_PLY_HierarchicalInstanceGrid_Bunny,Dragon_20170313
raytracegroundup_v2.2_PLY_HierarchicalInstanceGrid_Bunny,Dragon_20170313
通过层级实例网格[Hierarchical Instance Grids]可以在场景中画很多很多个图形。
分别以Stanford Bunny和Stanford Dragon为基本几何图形生成相应的测试图形。
raytracegroundup_v2.1_PLY_MultiplyObjectsGrid_Penguin_20170313
raytracegroundup_v2.1_PLY_MultiplyObjectsGrid_Penguin_20170313
用多个PLY文件,组合成一个‘企鹅’的图形。
包含测试图形:不同光照下的平坦着色和平滑着色的图形
raytracegroundup_v2.0_PLY_SmoothShading_20170313
raytracegroundup_v2.0_PLY_SmoothShading_20170313
含‘平坦着色’和‘平滑着色’的对比测试图形。
raytracegroundup_v1.9_PLY_20170310
raytracegroundup_v1.9_PLY_20170310
程序导入了各种经典的PLY文件(hand skeleton, stanford bunny, horse, goldfish, happy buddha, and dragon)。
同时,为图形添加了光源和阴影。
内含各种测试图形。
各种经典图形的PLY文件(包含Unix/Mac、Windows系统下的两种格式)
各种经典图形的PLY文件。
ply文件夹放的是Windows系统编码格式的文件;
bak文件夹放的是Unix/Mac系统编码格式的文件;
包含的经典图形有:bunny, horse, dragon, hand skeleton, gold fish, happy buddha, penguin parts
raytracegroundup_v1.8_TriangleMesh_20170306
ray_tracing ground_up triangle_mesh
用三角形网格(Triangle Mesh)分别细分球面和牛角面。
包含完整代码和对比测试图形。
bart_kitchen_robots_museum7
这里是小编在《Ray Tracing from the Ground Up》的基础上分别实现BART中的三个动画(kitchen, robots, museum)的C++代码。Xcode
raytracegroundup_v5.4_RayTracing_Scenes_DragonRulingPlatform_20170416
驭龙台有如下五部分组成:
第一部分:圆台;
第二部分:龙;
第三部分:柱子;
第四部分:组成整个墙面的“门”;
第五部分:台阶、房顶;
其中大部分“基本图形”都是磨边的楔形。
建立几何模型之后,设置了各种材质和纹理。
测试:含远近不同视角的观测场景。
对应博文链接:http://blog.csdn.net/libing_zeng/article/details/70197179
raytracegroundup_v5.3_BeveledWedges_Rosette_20170416
用磨边的楔形物体拼出一个“花环”。
我们需要完成两件事情:
1,用磨边楔形拼出“花环”的几何模型;
2,给“花环”中的每一个磨边楔形设置不同/随机的大理石纹理。
对应博文链接:http://blog.csdn.net/libing_zeng/article/details/70194670
raytracegroundup_v5.1_RayTracing_Scenes_Seaside_Morning,Evening,Night_20170412
想象这么一个场景:
海边有一个古老的凉亭。雕刻着古时壁画的屋檐;砂岩的地板;亭内摆放着一个木质的茶桌;茶桌上摆着大理石的茶杯和茶壶;紧挨着茶桌有一个圆形的坐垫;小白兔和小灰兔静静地蹲坐在地板上;凉亭向外是一个大理石的台阶;台阶向外是一个铺着被海水侵蚀过的青石“广场”;广场向外就是淡蓝色的大海;海面上飘着一艘木船;大海无际,视线最远处的海面和天空相接;早晨或者傍晚,天空的云映在海面上……
对应博文链接:http://blog.csdn.net/libing_zeng/article/details/70183774
raytracegroundup_v5.0_RayTracing_Scenes_TwoHorses_20170411
这个场景中包含两匹马,不知道怎么起名,所以就叫“Two Horses”啦。还有就是用到各种反射模型、各种光照模型、各种纹理、PLY格式的几何模型。
对应博文链接:http://blog.csdn.net/libing_zeng/article/details/70183028
raytracegroundup_v4.9_RayTracing_Scenes_PLYs_20170410
该场景中包含如下几个部分:
1,后方平面(Phong材质,平面的2D方格纹理);
2,下方平面(Reflective材质,平面的2D方格纹理);
3,封闭圆柱平台(Phong材质,对应的2D方格纹理);
4,Bunny(Dielectric材质);
5,Dragon(Phong材质,大理石纹理);
6,Horse(Phong材质,砂岩纹理);
7,Hand Skeleton(Phong,木纹纹理);
对应博文链接:http://blog.csdn.net/libing_zeng/article/details/70176906
raytracegroundup_v4.8_RayTracing_Scenes_Globe_20170409
这是本人学习光线追踪以来生成的第一个“一本正经”的场景。该场景中主体是“地球仪”。这个场景中包含如下几部分:
1,地球仪的底座(1个回旋面+1个圆柱面,Phong材质,木纹纹理);
2,地球仪的主体球面(Phong材质,图片映射纹理);
3,地球仪的支架(半个圆环+1个圆柱面+2个小球面,Reflective材质,没有纹理);
4,地球仪下方的圆台(1个封闭圆柱面,Phong材质,2D方格纹理);
5,场景的下面和背面(2个平面,Matte材质,2D方格纹理);
对应博文:http://blog.csdn.net/libing_zeng/article/details/69856133
raytracegroundup_v4.7_TriangleMeshes_RotationalSweeping_Phong_NoiseTexture_20
用三角形网格细分回旋曲面;使用Phong反射模型;设置噪声纹理(大理石纹理、砂岩纹理、木纹纹理)
相关博文链接:http://blog.csdn.net/libing_zeng/article/details/69789041
raytracegroundup_v4.6_TriangleMeshes_UtahTeapot_Phong_NoiseTexture_20170406
完成三件事情:
1,用三角形网格细分Bezier曲面(以Utah Teapot为例);
2,给曲面设置“Phong反射模型”对应的材料;
3,给曲面设置噪声纹理(大理石纹理、砂岩纹理、木纹纹理);
raytracegroundup_v4.5_TriangleMeshes_UtahTeapot_20170405
用三角形网格细分Utah Teapot(Bicubic Bezier Patches)。使用的teapot数据是32-patches、306-vertices版本。细分后,给teapot设置各种纹理(marble, sandstone, wood等)并生成图形。
mytest_v1.1_BezierPatches_UtahTeapot_20170405
以“trace参数方程表示的曲面”相关算法直接画出Utah Teapot。使用的数据是32 patches、306 vertices版本。特别注意:原数据中patches对应的顶点的索引是从0到306的。如果vertices数据是保存在某数组中,则patches中的数据需要“整体减1”后才能和vertices数组正确对应。
测试图形:
单patche分成4*4个小曲面片、单patche分成16*16个小曲面片的“正确”输出图形。
另外,若没有“整体减1”时也输出了三个“错位图形”(作为对比)。
对应总结的博文:http://blog.csdn.net/libing_zeng/article/details/69258616
raytracegroundup_v4.4_ProceduralTexture_Wood_20170331
给球面、圆柱面设置木纹纹理。
测试图片:实现木纹纹理的中间过程,依次添加不同噪声时,测试了对应的木纹效果。
raytracegroundup_v4.3_ProceduralTexture_Sandstone_20170330
在大理石纹理的基础上,使用来自砂岩照片的“颜色带”,使得图形更为逼真。
砂岩属于沉积岩,所以纹理较为平整,所以“噪声系数”要设置得很小(一般为0.1)。
测试图形:给球面和圆柱添加砂岩纹理。
同时包含纹理仿射变换前后的对比图形。
raytracegroundup_v4.1_ProceduralTexture_WrappedNoiseTexture_20170329
所谓“包裹的噪声纹理”,相对与基本的噪声纹理,其实就是:对其get_color()返回的结果(即“求和”的结果)进行放大(即乘以一个大于1的系数),然后将乘积的结果包裹到[0,1]之间(即换算到[0,1]之间)。
测试图形:给球面设置Wrapped Noise Texture。
测试了两组:放大系数为2、放大系数为8