Camera Common Properties, Operators, and Methods

Properties

The following properties apply to all camera types:

<camera>.fov Float default: 45.0 -- animatable, angle

Determines how wide an area the camera views. This is the horizontal Field Of View.

<camera>.curFOV Float default: 45.0 -- float

Returns the current Field Of View, respecting the fovType value described below. Available in 3ds Max 8 and higher.

<camera>.fovType Integer default: 1 -- integer

Sets the current Field Of View type. Changes the flyout next to the FOV spinner in the Camera's UI. Available in 3ds Max 8 and higher.

Possible values are:

1 - Horizontal

2 - Vertical

3 - Diagonal

<camera>.orthoProjection Boolean default: false

When on, the camera view looks just like a User view. When off, the camera view is the standard perspective-like view.

<camera>.type Name default: #free

The type of camera:

#free - Free Camera (Target view can be set in any direction)

#target - Target Camera (Camera will always align view with target object)

<camera>.showCone Boolean default: false

Displays the cone (actually a pyramid) defined by a camera's field of view. The cone appears in the other viewports but does not appear in a camera viewport.

<camera>.showHorizon Boolean default: false

Displays the horizon line. A dark gray line appears at the level of the horizon in the camera's viewport.

<camera>.nearrange Float default: 0.0 -- animatable; alias: Near_Env_Range

The near range for atmospheric effects.

<camera>.farrange Float default: 1000.0 -- animatable; alias: Far_Env_Range

The far range for atmospheric effects.

<camera>.clipManually Boolean default: false

Turn on to define clipping planes. When Clip Manually is off, geometry closer to the camera than 3 units is not displayed.

<camera>.nearclip Float default: 1.0 -- animatable, alias: near_clip

Objects closer than the near clipping plane are invisible to the camera.

<camera>.farclip Float default: 1000.0 -- animatable, alias: far_clip

Objects farther than the far clipping plane are invisible to the camera.

<camera>.showRanges Boolean default: false

When on, displays yellow rectangles within the camera's cone to show the Near and Far range settings.

<camera>.targetDistance Float default: 160.0 -- animatable, alias: Target_Distance

Sets a point to use as an invisible target.

<camera>.mpassEnabled Boolean default: false -- boolean; MultiPass_Effect_Enabled

Enable/Disable the MultiPass Camera Effect.

<camera>.mpassRenderPerPass Boolean default: false -- boolean; MPEffect___Render_Effects_Per_Pass

Enable/Disable the Render Per Pass option.

<camera>.multipass_effect SubAnim default: SubAnim:MultiPass_Effect -- SubAnim

<camera>.mpassEffect Depth_of_FieldMPassCamEffect default: Depth_of_FieldMPassCamEffect:Depth_of_FieldMPassCamEffect -- SubAnim

Get/Set the MultiPass Camera Effect. See MPassCamEffect objects for details.
To preview a MultiPass Camera Effect in the viewport, see the
maxOps.displayActiveCameraViewWithMultiPassEffect Method

For Example:

$Camera01.mpassEffect = Motion_BlurMPassCamEffect()

$Camera01.mpassEffect.disableAntialiasing = true

 

Notes

The .fov property value is the horizontal FOV in degrees.

The Vertical and Diagonal FOV and Lens values are based on the horizontal FOV and the current renderer Aperture Width.

See the new properties and functions added to 3ds Max 8 providing access to the FOV type and current value.

You can also use the following MAXScript function to calculate the Vertical FOV from the Horizontal FOV:

Function:

fn GetCamVFOV theCamera =

(

local r_aspect=(renderWidth as float)/renderHeight

2.0*atan(tan(theCamera.fov/2.0)/r_aspect)

)

The CameraFOV Structure:

The CameraFOV structure available in 3ds Max 8 and higher provides a set of functions related to Camera Field Of View conversion:

<float>cameraFOV.FOVtoMM <float fov>

Converts the supplied horizontal FOV to lens MM.

<float>cameraFOV.MMtoFOV <float mm>

Converts the supplied lens MM to horizontal FOV

<float>cameraFOV.CurFOVtoFOV <camera> <float cfov>

Converts the FOV in the camera's current FOV direction to horizontal FOV.
See also the new camera properties .fovType and .curFOV providing access to the FOV type flyout and the current value defined by the state of the flyout.

<float>cameraFOV.FOVtoCurFOV <camera> <float fov>

Converts the horizontal FOV to the FOV in the camera's current FOV direction.
See also the new camera properties .fovType and .curFOV providing access to the FOV type flyout and the current value defined by the state of the flyout.

Example:

c = freecamera()

$Free_Camera:Camera01 @ [0.000000,0.000000,0.000000]

cameraFOV

#Struct:cameraFOV(

FOVtoMM:<fn>,

CurFOVtoFOV:<fn>,

FOVtoCurFOV:<fn>,

MMtoFOV:<fn>)

cameraFOV.FOVtoMM 45 --convert horizontal FOV of 45 degrees into mm

43.4558

cameraFOV.MMtoFOV 43.4558 --convert 43.4558 mm back to degrees

45

c.fovType = 3 --set the FOV type to diagonal

3

cameraFOV.CurFOVtoFOV c 54.7473 --convert diagonal to horizontal FOV

45

cameraFOV.FOVtoCurFOV c 45 --convert 45 deg. horizontal to diagonal FOV

54.7473

c.curFOV --current FOV type, in this case 3=diagonal

54.7473

c.fov --this is ALWAYS the horizontal FOV!

45

c.fovType = 1 --set current FOV to 1=horizontal

1

c.curFOV --the current FOV is now horizontal

45

c.fov --this must return the same as current, as both are horizontal

45

Simulating Zoom Extents All

The following script changes the fov of specified camera to simulate a "zoom extents all" for the camera.

Example:

fn ZE_Cam cam objs =

(

local max2, fov, asp, v -- declare local variables

-- define a function that returns the maximum value

-- of a set of values in an array

fn maxof vals = (local v=vals[1]; for v1 in vals do (if v1 > v do v=v1);v)

fov=0 -- initialize the fov value

asp=(renderWidth as float)/renderHeight -- calculate the renderer's image aspect ratio

in coordsys cam -- work in coordinate system of the camera

(

for obj in objs where obj != cam do -- loop across all objects except the camera

(

if obj.min.z >=0 do continue -- if object is behind camera, skip it

-- get max value of the object's bounding box, correcting for the image aspect ratio

-- in the y values

v = maxof #((abs obj.max.x),(abs obj.min.x),(abs (obj.max.y*asp)),(abs (obj.min.y*asp)))

fov = maxof #(fov,(2*atan(-v/obj.min.z))) -- increase fov if needed

)

)

cam.fov=fov -- set the camera's fov to the new fov value

)

-- test bed --

cam=$camera01 -- specify the camera to "zoom extent all" on

ZE_Cam cam $* -- call the function, passing the camera and an object set containing all objects

 

 

See also

Depth_of_FieldMPassCamEffect : MPassCamEffect

Motion_BlurMPassCamEffect : MPassCamEffect

Node Common Properties, Operators, and Methods

MAXWrapper Common Properties, Operators, and Methods

Value Common Properties, Operators, and Methods