----------------------------------------------main.cpp ------------------------------------------
main.cpp
//triangle
vec3 vertexes3_1[3];
vertexes3_1[0] = vec3(-6.75, 0.0, 0.0);
vertexes3_1[1] = vec3(-4.25, 0.0, 0.0);
vertexes3_1[2] = vec3(-5.25, 2.5, 0.0);
//quadrilateral1
vec3 vertexes4_1[4];
vertexes4_1[0] = vec3(-6.5, 3.0 ,0.0);
vertexes4_1[1] = vec3(-1.5, 3.0 ,0.0);
vertexes4_1[2] = vec3(-1.5, 5.5 ,0.0);
vertexes4_1[3] = vec3(-6.5, 5.5 ,0.0);
//quadrilateral2
vec3 vertexes4_2[4];
vertexes4_2[0] = vec3(-1.25, 3.0 ,0.0);
vertexes4_2[1] = vec3(3.75, 3.0 ,0.0);
vertexes4_2[2] = vec3(3.0, 5.5 ,0.0);
vertexes4_2[3] = vec3(-0.0, 4.0 ,0.0);
hitable *list[8];
list[0] = new sphere(vec3(0.0,-100,0), 100, new lambertian(vec3(0.8, 0.8, 0.0)));
list[1] = new sphere(vec3(-2.75, 1.25, 0), 1.25, new lambertian(vec3(0.8, 0.8, 0.0)));
list[2] = new polygon(vertexes3_1, 3, new lambertian(vec3(0.8, 0.8, 0.0)));
list[3] = new polygon(vertexes4_1, 4, new lambertian(vec3(0.8, 0.8, 0.0)));
list[4] = new polygon(vertexes4_2, 4, new lambertian(vec3(0.8, 0.8, 0.0)));
list[5] = new elliptic_plane(vec3(0.0, 1.25, 0), vec3(0, 0, 1), 1.25, 1.25, 1.25, new lambertian(vec3(0.8, 0.8, 0.0)));
list[6] = new quadratic(vec3(2.75, 1.25, 0), 1.25, 1.25, 1.25, 0, 1, 1.25, new lambertian(vec3(0.8, 0.8, 0.0)));
list[7] = new quadratic(vec3(5.5, 2.5, 0), 1.25, 2.5, 1.25, -1, 0, 2.5, new lambertian(vec3(0.8, 0.8, 0.0)));
hitable *world = new hitable_list(list,8);
vec3 lookfrom(0, 2.5, 20);
vec3 lookat(0, 2.5, 0);
float dist_to_focus = (lookfrom - lookat).length();
float aperture = 0.0;
camera cam(lookfrom, lookat, vec3(0,1,0), 20, float(nx)/float(ny), aperture, 0.7*dist_to_focus);
输出图片:
uv原图:

本文配置了一个包含三角形、四边形、椭圆平面等几何体的三维场景,并使用不同的材质进行渲染。通过设置摄像机参数,如视点、焦点距离等,实现了对场景的观察。
897

被折叠的 条评论
为什么被折叠?



