javascript – 什么是正确的Oculus Rift桶畸变半径函数?

我想在javascript中为oculus rift实现桶形着色器.

根据这个视频(http://youtu.be/B7qrgrrHry0?t=11m26s),桶形失真的半径函数是:

newr = 0.24 * r ^ 4 0.22 * r ^ 2 1

结果:

参考图片:Shader之后:

如果我将函数更改为newr = r我得到原始图像.

如果我将函数设置为:newr = 0.022 * r ^ 2我得到:

这个是接近但不是正确的解决方案(用眼睛测试)

所以它不是程序的错…半径函数就是问题所在.

在这里你可以尝试一个小提琴:http://jsfiddle.net/s175ozts/2/

为什么原始功能不起作用?

谢谢 :)

解决方法:

尝试了很多东西……我终于得到了解决方案.
诀窍是首先将r标准化,然后将barrelfunction与原始r相乘

var sf = pr / rMax; //Scaling factor
var newR = pr*(0.24*Math.pow(sf,4)+0.22*Math.pow(sf,2)+1); //barrel distortion function

请看这里的小提琴:http://jsfiddle.net/s175ozts/4/

结果:

上一篇:如何在Android中实现图像失真效果


下一篇:javascript – 在画布上挥动文本