2017-12-13 4 views
0

TGLPoints 개체에 3D 포인트 (많은 포인트)를 저장합니다. 장면에 장면 이외의 다른 물체는 없습니다. 포인트를 그릴 때 멀리 떨어져 있거나 너무 가까이 보이지 않도록 화면에 맞추고 싶습니다.확대/축소하여 화면의 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; 

점은 화면에 시간이 표시되지 않은 : 나는 TGLCamera.ZoomAll하지만보기 및 현장 규모의 어떤 성공도 카메라 위치를 조정 here 주어진 솔루션, 깊이를 시도했다.

3D 포인트를 화면에 맞추려면 어떻게해야합니까?

답변

0

각 점에 대해 점 위치에서 카메라 위치까지의 벡터 길이를 취하여 축척 인수를 작성합니다. 그런 다음이 스케일을 사용하여 카메라 매트릭스에 적용 할 변형 행렬을 만듭니다. 눈금이 클 경우 점이 더 멀리 있음을 의미하므로 반대쪽으로 번역하면 역으로 점을 찍을 수 있습니다. 나는 이것이 분명히 희망한다. 공식 다음 변환 벡터 사용을 계산하기

번역 벡터 = 번역 벡터 +/- (ABS (스케일)/2)

+/-가 카메라에서 너무 멀리있는 경우 규모의 크기에 의해 결정됩니다 당신은 선택 - 위의 방정식에서.

관련 문제