如何定位相机以使我的主要对象完全可见并适合屏幕?

时间:2014-02-04 05:05:31

标签: algorithm 3d java-3d

物体位于3D平面的中心。我知道对象的界限。

对于3D平面,X从左到右,Y从下到上,Z从屏幕内部到外部。物体面向正Z方向。

我想将相机放在X = 0,Y = 0和Z =某处,以便相机可以从最左边到最右边,从最顶部到最底部看到整个物体,它的正面。

所以伙计们,请帮助我,Z = ......?

1 个答案:

答案 0 :(得分:2)

设R为对象的边界球体的半径 令V为垂直视场角,0 <0。 V&lt; 90度。
令H为水平视场角,0 <0。 H&lt; 90度。

然后你需要将物体放在物体上的距离是Z = R / sin(min(V,H))。

推导

以下是对象的完整垂直视图所需的距离Z的推导。求解Z得到Z = R / sin(V)。

Derivation

对于完整水平视图所需的距离Z的类似推导给出Z = R / sin(H)。由于我们想要一个完整的垂直和水平视图,我们使用Z = max(R / sin(V),R / sin(H))= R / sin(min(V,H))。