计算模型周围的边界球.假设半径为r,中心为c.将相机目标点放在球体的中心.如果您的相机具有视野a,则可以计算从相机到相机目标所需的距离L.
tan(a/2) = r/L
Run Code Online (Sandbox Code Playgroud)
这使
L = r/tan(a/2)
Run Code Online (Sandbox Code Playgroud)
如果摄像机视图方向为v,则以新摄像机位置开始
p = c - normalize(v)*L
Run Code Online (Sandbox Code Playgroud)
这将保持相机的方向并确保整个模型可见.
请注意,如果视口是矩形而不是方形,则必须使用视口较短边的FOV.