[vtkusers] vtkCamera Parameters
David Pont
david_pont at hotmail.com
Thu Oct 26 13:02:41 EDT 2000
Erik,
Here are code fragments that I use to save camera settings to file and
load them back again:
-----------------------------------------------------------
double dA[3], dV;
int iV;
vtkCamera *Camera = Renderer->GetActiveCamera();
Camera->GetPosition( dA );
fprintf( f, "Position=%lg,%lg,%lg\n", dA[0], dA[1], dA[2] );
Camera->GetFocalPoint( dA );
fprintf( f, "FocalPoint=%lg,%lg,%lg\n", dA[0], dA[1], dA[2] );
Camera->GetViewUp( dA );
fprintf( f, "ViewUp=%lg,%lg,%lg\n", dA[0], dA[1], dA[2] );
dV = Camera->GetViewAngle();
fprintf( f, "ViewAngle=%lg\n", dV );
Camera->GetViewPlaneNormal( dA );
fprintf( f, "ViewPlaneNormal=%lg,%lg,%lg\n", dA[0], dA[1], dA[2]
);
iV = Camera->GetParallelProjection();
fprintf( f, "ParallelProjection=%d\n", iV );
dV = Camera->GetParallelScale();
fprintf( f, "ParallelScale=%lg\n", dV );
-----------------------------------------------------------
I use similar code to load the settings back from file into a temporary
structure, then do the following:
-----------------------------------------------------------
Camera->SetPosition( C->Position );
Camera->SetFocalPoint( C->FocalPoint );
Camera->SetViewUp( C->ViewUp );
Camera->SetViewAngle( C->ViewAngle );
Camera->SetViewPlaneNormal( C->ViewPlaneNormal );
Camera->SetParallelProjection( C->ParallelProjection );
Camera->SetParallelScale( C->ParallelScale );
Camera->Modified();
Renderer->ResetCameraClippingRange();
vtkLightCollection* Lights = Renderer->GetLights();
int i, n = Lights->GetNumberOfItems();
vtkLight *Light;
float pos[3], fp[3];
Camera->GetPosition( pos );
Camera->GetFocalPoint( fp );
Lights->InitTraversal();
for( i=0; i<n; i++ ) {
Light = Lights->GetNextItem();
Light->SetPosition( pos );
Light->SetFocalPoint( fp );
Light->Modified();
}
}
-----------------------------------------------------------
I have cobbled this together from some questions/responses I found in the
mailing list archive, plus a bit of my own fiddling. There may be a few
redundant or dumb bits, but it works OK for me.
regards
Dave Pont
>From: Erik Sobel <erik.sobel at alphatech.com>
>To: vtkusers at public.kitware.com
>Subject: [vtkusers] vtkCamera Parameters
>Date: Wed, 25 Oct 2000 11:55:07 -0400
>
>Does anyone know how to completely specify the camera parameters?
>
>I am frustrated by the lack of consistency in its methods. There is a
>Get/SetRoll pair, Get/SetPosition, and Get/SetFocalPoint but no way to Get:
>Zoom, Dolly, Yaw, Azimuth, Pitch or Elevation. There is a way to
>GetOrientationWXYZ but no way to Set it. Calling the renderer's
>ResetCamera method doesn't seem to reset ALL of the camera's parameters.
>
>What I am looking for is a convenient way to save and restore the complete
>state of the camera after it has been moved by hand.
>
>Thanks,
>Erik
>
>
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at:
><http://public.kitware.com/cgi-bin/vtkfaq>
>Follow this link to subscribe/unsubscribe:
>http://public.kitware.com/mailman/listinfo/vtkusers
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
Share information about yourself, create your own public profile at
http://profiles.msn.com.
More information about the vtkusers
mailing list