unity 畸变_unity3d 几种镜头畸变

unity 畸变_unity3d 几种镜头畸变1 Fisheyedisto 鱼眼镜头解释来自百度百科 鱼眼镜头是一种焦距为 16mm 或更短的并且视角接近或等于 180 它是一种极端的广角镜头 鱼眼镜头 是它的俗称 为使镜头达到最大的摄影视角 这种摄影镜头的前镜片直径很短且呈抛物状向镜头前部凸出 与鱼的眼睛颇为相似 鱼眼镜头 因此而得名 关键代码如下 float2fishey float2uv float2n uv

1.Fisheye distortion  鱼眼镜头

解释来自百度百科:鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180°。 它是一种极端的广角镜头,“鱼眼镜头”是它的俗称。为使镜头达到最大的摄影视角,这种摄影镜头的前镜片直径很短且呈抛物状向镜头前部凸出,与鱼的眼睛颇为相似,“鱼眼镜头”因此而得名。

关键代码如下:

float2 fisheye(float2 uv)

{

float2  n_uv = (uv – 0.5) * 2.0;

float2 r_uv;

r_uv.x = (1 – n_uv.y * n_uv.y) * _Intensity_y * (n_uv.x);

r_uv.y = (1 – n_uv.x * n_uv.x) * _Intensity_x * (n_uv.y);

return(uv* _scale – r_uv);

}

效果是这样的:

1563c19c3527da489f0da35dda0871dd.png

2.Barrel Distortion  桶形畸变

桶形畸变(Barrel Distortion),又称桶形失真,是由镜头中透镜物理性能以及镜片组结构引起的成像画面呈桶形膨胀状的失真现象。我们在使用广角镜头或使用变焦镜头的广角端时,最容易察觉桶形失真现象。当画面中有直线(尤其是靠近相框边缘的直线)的时候,桶形失真最容易被察觉。普通消费级数码相机的桶形失真率通常为1%。

关键代码如下:

float2 barrel(float2 uv)

{

float2 h = uv.xy – float2(0.5, 0.5);

float r2 = h.x * h.x + h.y * h.y;

float f = 1.0 + r2 * (_distortion + _cubicDistortion * sqrt(r2));

return f * _scale * h + 0.5;

}

效果是这样的:

37e9e66d281c0d405b34e08f1271aed6.png

3.Pincushion Distortion  枕形畸变

在正确的拍摄条件下,矩形物体的像仍应呈矩形。但有的镜头由于有缺陷,将矩形物体拍成四边向内凹进形如枕头的影像,称镜头的这种像差为枕形畸变。相反如拍成四边突出的影像即称桶形畸变。

枕形畸变又称正畸变,是由于视场边缘部分的放大率高于中心部分放大率所引起,即倾斜角度大的光线的放大率比倾斜角度小的光线的放大率高。

把桶形畸变参数修改即为枕形畸变

效果是这样的:

7807bc933e1968c8aa223f8291e296f4.png

全部代码已上传至GitHub

——by wolf96    http://blog.csdn.net/wolf96

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225979.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:07
下一篇 2026年3月17日 上午8:07


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号