问题二十九:测试ray tracing中camera几个主要参数

camera(vec3 lookfrom, vec3 lookat, vec3vup, float vfov, float aspect, float aperture, float focus_dist)

我们相机当前的构造函数的参数有这么七个:

vec3 lookfrom:相机的位置

vec3 lookat:目标物体的位置

vec3 vup:相机的倾斜方向(一般设置为(0,1,0))

float vfov:相机的张角theta(这个可以理解为相机的视野。theta大则视野大则目标物体在视野图片中的比例小;theta小则视野小则目标物体在视野图片中的比例大。)

float aspect:图片的宽高比

float aperture:相机光圈的值

float focus_dist:成像位置(在其他参数固定的情况下,调节成像位置总能找到一个相对最清晰的成像位置,一般为(lookfrom-lookat).length,随着物距的改变而正比改变。这个有点不科学,真实相机的像距不是这样的,像距应该在一倍焦距到两倍焦距之间才对)

 

 

测试开始---------------------------------------------------------

 

目标物体:(还是这五个球)

        hitable *list[5];
        list[0] = new sphere(vec3(0,0,-1), 0.5, new lambertian(vec3(0.1, 0.2, 0.5)));
        list[1] = new sphere(vec3(0,-100.5,-1), 100, new lambertian(vec3(0.8, 0.8, 0.0)));
        list[2] = new sphere(vec3(1,0,-1), 0.5, new metal(vec3(0.8, 0.6, 0.2), 0.0));
        list[3] = new sphere(vec3(-1,0,-1), 0.5, new dielectric(1.5));
        list[4] = new sphere(vec3(-1,0,-1), -0.45, new dielectric(1.5));
        hitable *world = new hitable_list(list,5);

29.1 测试1,从不同位置拍摄目标物体

测试1,从不同位置拍摄目标物体得到的图片不一样。

如果距离目标物体太近,可能只能拍摄到目标物体的局部,这时需要增大视野(增大theta);如果距离目标物体太远,可能导致目标物体在图片中所占比例太小,这时需要减小视野(减小theta)。(距离太近时,可能导致目标物体变形:圆变成椭圆)

 

-----------------------------------------------------测试1---------------------------------------------------------

相机位置在(000),张角theta分别是406080时的图片如下:

        vec3 lookfrom(0,0,0);

       vec3 lookat(0,0,-1);

       float dist_to_focus = (lookfrom - lookat).length();

       float aperture = 0.0;

 

       camera cam(lookfrom, lookat, vec3(0,1,0), 40, float(nx)/float(ny),aperture, dist_to_focus);


        camera cam(lookfrom, lookat, vec3(0,1,0), 60, float(nx)/float(ny),aperture, dist_to_focus);


        camera cam(lookfrom, lookat, vec3(0,1,0), 80, float(nx)/float(ny),aperture, dist_to_focus);


 

相机位置在(00100),张角theta分别是4010

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值