0

我将我的 3D 点(许多点)存储在一个TGLPoints对象中。场景中除了点之外没有其他对象。绘制点时,我想让它们适合屏幕,这样它们就不会看起来太远或太近。我试过TGLCamera.ZoomAll但没有成功,这里给出的解决方案是调整相机位置、景深和场景比例:

objSize:=YourCamera.TargetObject.BoundingSphereRadius;
if objSize>0 then begin
    if objSize<1 then begin
        GLCamera.SceneScale:=1/objSize;
        objSize:=1;
    end else GLCamera.SceneScale:=1;

    GLCamera.AdjustDistanceToTarget(objSize*0.27);
    GLCamera.DepthOfView:=1.5*GLCamera.DistanceToTarget+2*objSize;
end;

这次这些点没有出现在屏幕上。

我应该怎么做才能使 3D 点适合屏幕?

4

1 回答 1

0

对于每个点,通过从点位置到相机位置的矢量长度来构建比例因子。然后使用此比例构建您将应用于相机矩阵的转换矩阵。如果规模很大,则意味着点更远,您将应用反向平移使该点更接近。我希望这很清楚。要计算平移向量,请使用以下公式

平移向量 = 平移向量 +/- (abs(scale)/2)

如果距离您选择的相机太远,+/- 将由比例大小决定 - 在上面的等式中。

于 2017-12-20T11:19:08.567 回答