---
name: "SoPerspectiveCamera"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoPerspectiveCamera/3iv"
---

# SoPerspectiveCamera(3iv)

perspective camera node

## NAME

SoPerspectiveCamera — perspective camera node

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoCamera \> SoPerspectiveCamera

## SYNOPSIS

**#include \<Inventor/nodes/SoPerspectiveCamera.h\>**

Fields from class SoPerspectiveCamera:

**SoSFFloat**	**heightAngle**

Fields from class SoCamera:

**SoSFEnum**	**viewportMapping**\
 **SoSFVec3f**	**position**\
 **SoSFRotation**	**orientation**\
 **SoSFFloat**	**aspectRatio**\
 **SoSFFloat**	**nearDistance**\
 **SoSFFloat**	**farDistance**\
 **SoSFFloat**	**focalDistance**

Methods from class SoPerspectiveCamera:

	**SoPerspectiveCamera()**\
 **static SoType**	**getClassTypeId()**

Methods from class SoCamera:

**void**	**pointAt(const SbVec3f &targetPoint)**\
 **virtual void**	**scaleHeight(float scaleFactor)**\
 **virtual SbViewVolume**	**getViewVolume(float useAspectRatio = 0.0) const**\
 **void**	**viewAll(SoNode \*sceneRoot, const SbViewportRegion &vpRegion, float slack = 1.0)**\
 **void**	**viewAll(SoPath \*path, const SbViewportRegion &vpRegion, float slack = 1.0)**\
 **SbViewportRegion**	**getViewportBounds(const SbViewportRegion &region) const**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**A perspective camera defines a perspective projection from a viewpoint. The viewing volume for a perspective camera is a truncated right pyramid.**

**By default, the camera is located at (0,0,1) and looks along** **the negative z-axis; the position** and **orientation** fields can be used to change these values. The **heightAngle** field defines the total vertical angle of the viewing volume; this and the **aspectRatio** field determine the horizontal angle.

## FIELDS

**SoSFFloat**	**heightAngle**\
 Vertical angle of the viewing volume.

## METHODS

	**SoPerspectiveCamera()**\
 Creates a perspective camera node with default settings.

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoHandleEventAction, SoRayPickAction**\
 Sets the viewport and camera information in the state.

## FILE FORMAT/DEFAULTS

```
PerspectiveCamera {
viewportMapping	ADJUST_CAMERA
position	0 0 1
orientation	0 0 1  0
aspectRatio	1
nearDistance	1
farDistance	10
focalDistance	5
heightAngle	0.785398
}
```

## SEE ALSO

**SbViewVolume, SoOrthographicCamera**
