Base |
public bool FitIntoView( FitIntoViewType fitIntoViewType = FitIntoViewType.CheckAllPositions, bool adjustTargetPosition = true, double adjustmentFactor = 1, bool waitUntilCameraIsValid = true )
FitIntoView adjusts the camera's Distance (for PerspectiveCamera) or CameraWidth (for OrthographicCamera) and TargetPosition (if adjustTargetPosition is true) so that all the objects on the scene will be visible from one edge of the viewport to another edge.
When fitIntoViewType is set to the CheckAllPositions, then the method checks each position of the objects defined with list of Visual3D objects. This is more precise than CheckBounds but can take much longer when there are objects with a lot of position in the scene. In this cases it is recommended to use the CheckBounds settings.
The adjustmentFactor parameter can be used to set the margin around the scene objects. Its value is multiplied by the calculated Distance or CameraWidth. For example value 1.1 would add 10% margin around scene objects.
When using OrthographicCamera, the returned CameraWidth and the new TargetPosition will exactly position the object to the bounds of the Viewport3D. When using PerspectiveCamera there might be some smaller margins (empty space) on one or the other side of the Viewport3D.
To set fit into view for only part of the scene, you can use the FitIntoView(IListVisual3D, FitIntoViewType, Boolean, Double, Boolean) overloaded method that also takes list of Visual3D objects as a parameter.
To get the calculated Distance or CameraWidth and new TargetPosition without changing the current camera, you can use the GetFitIntoViewDistanceOrCameraWidth(IListVisual3D, FitIntoViewType, Boolean, Point3D) method.