1. 概述
需要说明的是,球体投影到像素空间的结果可能不是一个正圆,其半径或者直径大小只能估算而没有确定的值。根据参考资料,球体投影到像素空间的半径的计算公式为:
其中radius是球体的半径,fov是摄像机视场角,z是球心到摄像机位置的距离。当然,由于最后得到的是裁剪空间的大小,需要换算到屏幕像素空间。
2. 详论
根据我的理解,这个公式也是近似的。本人通过参考文献得到的推导方式如下所示。
使用参考文章4中的插图:
球体投影到像素空间的半径其实就是h的像素长度。此时,有:
球体被投影到裁剪空间:
由投影变换的性质可知:
联立(1)(2)式有,
根据世界空间的集合关系,有:
式(4)带入式(3)中,有:
在摄像机距离球心比较远的情况下,可以认为:
也就是式(0)的由来。如果需要计算准确一点,那么:
上式带入式(5),就会有:
最后换算到屏幕像素空间:
3. 参考
- calculate pixelsize on screen from boundingsphere
- Calculating radius of projected sphere
- Radius of projected Sphere
- Radius of projected sphere in screen space