|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ICamera
Provides access to members that manipulate the camera.
ICamera is used primarily to manipulate the perspective of a 3D display. It's implemented by the Camera associated with a SceneViewer.
Method Summary | |
---|---|
boolean |
canSeeMBB(IEnvelope pExtent)
Indicates if the camera can see any portion of the given extent. |
boolean |
canSeeSphere(IPoint pCenter,
double radius)
Indicates if the camera can see any portion of the given sphere. |
double |
getAzimuth()
The polar azimuth of the observer relative to the target. |
IRay |
getIdentifyRay(int dx,
int dy)
Returns the ray that corresponds to given screen coordinates. |
IVector3D |
getIdentifyVector(IPoint pCursor)
Returns the vector that corresponds to the given screen location. |
double |
getInclination()
The polar inclination of the observer relative to the target. |
IPoint |
getObserver()
The observer's position. |
IEnvelope |
getOrthoViewingExtent()
The extent visible by the camera in orthographic view. |
int |
getProjectionType()
The type of projection. |
double |
getRollAngle()
The roll angle in degrees. |
double |
getScale()
The orthographic projection scale. |
IPoint |
getTarget()
The target's position. |
IVector3D |
getUpDirection()
The camera's up-vector. |
double |
getViewFieldAngle()
The view-field angle in degrees. |
double |
getViewingDistance()
The viewing distance between the observer and the target. |
void |
hTurnAround(double dAzimuth)
Turns the camera horizontally around observer by the given azimuth angle. |
boolean |
isMultiPhaseRendering()
The state of multi-phase rendering. |
boolean |
isUsable()
Indicates if the camera has valid parameters. |
void |
levelObsToTarget()
Levels the observer to the target. |
void |
levelTargetToObs()
Levels the target to the observer. |
void |
move(int direction,
double factor)
Moves the camera in the specified direction. |
void |
pan(IPoint startPoint,
IPoint endPoint)
Moves both the observer and the target so that the object picked as the starting point on screen assumes the ending-point position. |
void |
polarUpdate(double distanceFactor,
double dAzimuth,
double dInclination,
boolean bLimitInclination)
Updates the observer's location by given polar increments. |
void |
propertiesChanged()
Sets camera's dirty flag. |
void |
queryDistanceToMBB(IEnvelope pExtent,
double[] distance)
Returns the distance to the given extent. |
void |
queryDistanceToSphere(IPoint pCenter,
double radius,
double[] distance)
Returns the distance to the given sphere. |
void |
queryDistanceToSphereCenter(IPoint pCenter,
double radius,
double[] distance)
Returns the distance to the given sphere's center. |
void |
queryIdentifyVector(int dx,
int dy,
IVector3D pIdentifyVect)
Returns the vector that corresponds to given screen coordinates. |
void |
queryOrthoViewingPlatform(IEnvelope pInExtent,
IEnvelope pOutExtent,
double[] pScale)
Returns orthographic projection viewing parameters corresponding to the given extent. |
void |
queryViewingPlatformMBB(IEnvelope pExtent,
double[] pNearPlane,
double[] pFarPlane,
double[] pAngle,
double[] pAspect)
Returns the viewing parameters corresponding to the given extent. |
void |
queryViewingPlatformSphere(IPoint pCenter,
double radius,
double[] pNearPlane,
double[] pFarPlane,
double[] pAngle,
double[] pAspect)
Returns the viewing parameters corresponding to the given spherical extent. |
void |
recalcUp()
Updates the up-vector. |
void |
replayFrame(ISceneGraph pSceneGraph)
Renders a frame. |
void |
rotate(double angle)
Rotates the observer horizontally around the target by a given angle in degrees. |
void |
setAzimuth(double azimuth)
The polar azimuth of the observer relative to the target. |
void |
setDefaultsMBB(IEnvelope pExtent)
Positions camera so that the entire given extent can be seen. |
void |
setDefaultsSphere(IPoint pCenter,
double radius)
Positions camera so that the entire given spherical extent can be seen. |
void |
setInclination(double inclination)
The polar inclination of the observer relative to the target. |
void |
setMultiPhaseRendering(boolean pbMultiPhase)
The state of multi-phase rendering. |
void |
setObserver(IPoint observer)
The observer's position. |
void |
setProjectionType(int projectionType)
The type of projection. |
void |
setRollAngle(double rollAngle)
The roll angle in degrees. |
void |
setTarget(IPoint target)
The target's position. |
void |
setUpDirection(IVector3D upVector)
The camera's up-vector. |
void |
setVerticalExaggeration(double rhs1)
Adapts the camera to the scene's vertical exaggeration. |
void |
setViewFieldAngle(double viewFieldAngle)
The view-field angle in degrees. |
void |
setViewingDistance(double distance)
The viewing distance between the observer and the target. |
void |
zoom(double ratio)
Zooms in or out by moving the observer according to the required ratio between the new and previous viewing distances. |
void |
zoomToRect(IEnvelope pExtent)
Zooms to the given screen extent. |
Method Detail |
---|
IPoint getObserver() throws IOException, AutomationException
The observer represents the origin, or point of view, of the camera. It uses coordinates that are in the same unit of measure as the scene itself.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setObserver(IPoint observer) throws IOException, AutomationException
observer
- A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IPoint getTarget() throws IOException, AutomationException
The target is what the observer is looking at, or in other words, what the camera is pointed towards. It uses coordinates that are in the same unit of measure as the scene itself.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setTarget(IPoint target) throws IOException, AutomationException
target
- A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IVector3D getUpDirection() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setUpDirection(IVector3D upVector) throws IOException, AutomationException
upVector
- A reference to a com.esri.arcgis.geometry.IVector3D (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getViewingDistance() throws IOException, AutomationException
The ViewingDistance is in the current scene units as defined by the horizontal coordinate system of the scene's spatial reference.
Setting the ViewingDistance will modify the observer's position along the line of sight relative to the target.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setViewingDistance(double distance) throws IOException, AutomationException
distance
- The distance (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getViewFieldAngle() throws IOException, AutomationException
Increasing the ViewFieldAngle creates the appearance of zooming out even though the observer position is unchanged. Wide angles enable the observer to see a large portion of the scene when positioned inside the data area. A wide angle also presents a distorted view, similar to that of a fish-eye lens.
Decreasing the ViewFieldAngle creates the appearance of zooming in even though the observer position is unchanged.
The default ViewFieldAngle is 55 degrees.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setViewFieldAngle(double viewFieldAngle) throws IOException, AutomationException
viewFieldAngle
- The viewFieldAngle (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getRollAngle() throws IOException, AutomationException
The RollAngle represents the angle, in degrees, of the camera about the line of sight between the observer and target. Angles will be reported in the range >=0 and <360. Angles can be given outside of this range but will be 'wrapped' to the equivalent value in the 0 to 360 range. For example -1 is the equivalent of 359 and 361 is the equivalent of 1.
A RollAngle of 0.0, the default, is straight up relative to the Z axis in the scene. Increasing the RollAngle will tilt the camera clockwise about the line of sight.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setRollAngle(double rollAngle) throws IOException, AutomationException
rollAngle
- The rollAngle (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.int getProjectionType() throws IOException, AutomationException
The projection can be set to either esriPerspectiveProjection or esriOrthoProjection. A perspective projection provides a sense of three dimensionality. An orthographic projection maintains constant scale throughout and is used to provide a 2D, planimetric, view.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setProjectionType(int projectionType) throws IOException, AutomationException
projectionType
- A com.esri.arcgis.analyst3d.esri3DProjectionType constant (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.boolean isUsable() throws IOException, AutomationException
Before doing something with a camera it is advisable to call IsUsable first. It's possible the camera has some properties which are undefined or is unable to perform certain requests. This happens when a camera is associated with an empty scene, the target/observer or other parameters has invalid values (not a number, for instance), or when the target and the observer share the same location etc.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getInclination() throws IOException, AutomationException
The inclination represents the altitude angle, in degrees, of the observer relative to the target. When the observer is above the target the inclination is positive, when below it's negative.
The value given for inclination can be greater than -90 or less than 90. Values outside this range will be reset automatically to the closest positive or negative limit (e.g. 95 reset to 89.9999).
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setInclination(double inclination) throws IOException, AutomationException
inclination
- The inclination (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getAzimuth() throws IOException, AutomationException
The azimuth represents the compass direction, in degrees, of the observer relative to the target. At 0 degrees the observer is due north of the target, 90 degrees due east, 180 degrees due south, and 270 degrees due west.
Values exceeding the range 0-360 will be reset to the equivalent value that falls in this range (e.g. 365 gets reset to 5, -5 gets reset to 355).
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setAzimuth(double azimuth) throws IOException, AutomationException
azimuth
- The azimuth (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void rotate(double angle) throws IOException, AutomationException
Positive values for degrees will rotate the observer clockwise around the target, negative values counter-clockwise.
angle
- The angle (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void polarUpdate(double distanceFactor, double dAzimuth, double dInclination, boolean bLimitInclination) throws IOException, AutomationException
The observer will be moved by the values specified in the arguments:
The distanceFactor resets the current ViewingDistance (distance between observer and target) by multiplying it by the given factor.
dAzimuth is added to the current azimuth.
dInclination is added to the current inclination. If the resulting inclination doesn't fall between -89.9 and 89.9 it will be reset so that it does unless bLimitInclination is set to False.
bLimitInclination when set to True ensures the modified inclination doesn't fall outside the -89.9 to 89.9 limit. If set to False and the limit is exceeded the azimuth will be changed 180 degrees and the UpDirection will be flipped.
distanceFactor
- The distanceFactor (in)dAzimuth
- The dAzimuth (in)dInclination
- The dInclination (in)bLimitInclination
- The bLimitInclination (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void recalcUp() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void propertiesChanged() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setDefaultsMBB(IEnvelope pExtent) throws IOException, AutomationException
The SetDefaultsMBB method of the camera object in a 3D scene can be used to programmatically zoom to a designated extent of 'minimum bounding box'.
pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setDefaultsSphere(IPoint pCenter, double radius) throws IOException, AutomationException
pCenter
- A reference to a com.esri.arcgis.geometry.IPoint (in)radius
- The radius (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryViewingPlatformMBB(IEnvelope pExtent, double[] pNearPlane, double[] pFarPlane, double[] pAngle, double[] pAspect) throws IOException, AutomationException
pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)pNearPlane
- The pNearPlane (out: use single element array)pFarPlane
- The pFarPlane (out: use single element array)pAngle
- The pAngle (out: use single element array)pAspect
- The pAspect (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryViewingPlatformSphere(IPoint pCenter, double radius, double[] pNearPlane, double[] pFarPlane, double[] pAngle, double[] pAspect) throws IOException, AutomationException
pCenter
- A reference to a com.esri.arcgis.geometry.IPoint (in)radius
- The radius (in)pNearPlane
- The pNearPlane (out: use single element array)pFarPlane
- The pFarPlane (out: use single element array)pAngle
- The pAngle (out: use single element array)pAspect
- The pAspect (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryOrthoViewingPlatform(IEnvelope pInExtent, IEnvelope pOutExtent, double[] pScale) throws IOException, AutomationException
pInExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)pOutExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)pScale
- The pScale (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IEnvelope getOrthoViewingExtent() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void replayFrame(ISceneGraph pSceneGraph) throws IOException, AutomationException
pSceneGraph
- A reference to a com.esri.arcgis.analyst3d.ISceneGraph (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.boolean canSeeMBB(IEnvelope pExtent) throws IOException, AutomationException
pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.boolean canSeeSphere(IPoint pCenter, double radius) throws IOException, AutomationException
pCenter
- A reference to a com.esri.arcgis.geometry.IPoint (in)radius
- The radius (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryDistanceToMBB(IEnvelope pExtent, double[] distance) throws IOException, AutomationException
pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)distance
- The distance (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryDistanceToSphere(IPoint pCenter, double radius, double[] distance) throws IOException, AutomationException
pCenter
- A reference to a com.esri.arcgis.geometry.IPoint (in)radius
- The radius (in)distance
- The distance (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryDistanceToSphereCenter(IPoint pCenter, double radius, double[] distance) throws IOException, AutomationException
pCenter
- A reference to a com.esri.arcgis.geometry.IPoint (in)radius
- The radius (in)distance
- The distance (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void queryIdentifyVector(int dx, int dy, IVector3D pIdentifyVect) throws IOException, AutomationException
dx
- The dx (in)dy
- The dy (in)pIdentifyVect
- A reference to a com.esri.arcgis.geometry.IVector3D (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IVector3D getIdentifyVector(IPoint pCursor) throws IOException, AutomationException
pCursor
- A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IRay getIdentifyRay(int dx, int dy) throws IOException, AutomationException
dx
- The dx (in)dy
- The dy (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void move(int direction, double factor) throws IOException, AutomationException
direction
- A com.esri.arcgis.analyst3d.esriCameraMovementType constant (in)factor
- The factor (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void pan(IPoint startPoint, IPoint endPoint) throws IOException, AutomationException
startPoint
- A reference to a com.esri.arcgis.geometry.IPoint (in)endPoint
- A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void levelTargetToObs() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void levelObsToTarget() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void hTurnAround(double dAzimuth) throws IOException, AutomationException
dAzimuth
- The dAzimuth (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void zoom(double ratio) throws IOException, AutomationException
ratio
- The ratio (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void zoomToRect(IEnvelope pExtent) throws IOException, AutomationException
pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.double getScale() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setMultiPhaseRendering(boolean pbMultiPhase) throws IOException, AutomationException
pbMultiPhase
- The pbMultiPhase (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.boolean isMultiPhaseRendering() throws IOException, AutomationException
MultiPhaseRendering is only implemented in ArcScene. When set to True (the default is False), multiple drawing steps are enabled to avoid Z-buffer imprecisions when the ratio of far/near distance is too large, therefore layers with extreme extents may be seen throughout the scene. The far/near distance here refers to the distance between the observer and the far/near clipping plane in OpenGL terms.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setVerticalExaggeration(double rhs1) throws IOException, AutomationException
rhs1
- The rhs1 (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |