2017-12-13 11 views
0

TGLPointsオブジェクトに3Dポイント(多くのポイント)を保存します。シーンにはポイント以外のオブジェクトはありません。ポイントを描くとき、​​私はそれらを遠くに、または近づかないようにスクリーンに合わせたいと思います。私はTGLCamera.ZoomAllを試みたが、成功しませんし、また、カメラの位置を調整here与えソリューション、ビューとシーンのスケールの深さ:どのようにして画面の3D点を画面に合わせるか?

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ポイントを画面に合わせるにはどうすればよいですか?

答えて

0

ポイントごとに、ポイントの位置からカメラの位置までのベクトルの長さをとることによって、スケール係数を作成します。次に、このスケールを使用して、カメラマトリックスに適用する変換マトリックスを作成します。縮尺が大きい場合はポイントが遠いことを意味し、逆平行移動を適用してそのポイントを近くに配置します。私はこれがはっきりしていることを望むそれはあまりにも遠く、カメラからあなたが選んだのであれば式

並進ベクトル=並進ベクトル+/-(ABS(スケール)/ 2)以下の

を並進ベクトルの使用を計算するには+/-スケールの大きさによって決定されます - 上の方程式で。

関連する問題