Class: Sketchup::Camera

Inherits:
Object
  • Object
show all

Overview

The Camera class contains methods for creating and manipulating a camera. The camera in SketchUp is the “point of view” from which you look at the model.

Examples:

# Create a camera from scratch with an "eye" position in
# x, y, z coordinates, a "target" position that
# defines what to look at, and an "up" vector.
eye = [1000,1000,1000]
target = [0,0,0]
up = [0,0,1]
my_camera = Sketchup::Camera.new eye, target, up

# Get a handle to the current view and change its camera.
view = Sketchup.active_model.active_view
view.camera = my_camera

Version:

  • SketchUp 6.0

Instance Method Summary # collapse

Constructor Details

#initializeSketchup::Camera #initialize(eye, target, up, perspective = true, fov = 30.0) ⇒ Sketchup::Camera

Returns a new camera with eye (where the camera is) and targets (where the camera is looking).

Examples:

eye = Geom::Point3d.new(20, 5, 30)
target = Geom::Point3d.new(20, 60, 25)
up = Z_AXIS
camera = Sketchup::Camera.new(eye, target, up)

Arbitrary camera

camera = Sketchup::Camera.new

Overloads:

Version:

  • SketchUp 6.0

Instance Method Details

#aspect_ratioFloat

The #aspect_ratio method is used to retrieve the aspect ratio of the Camera.

`0.0` is the default value and denotes an aspect ratio matching that of the View.

Examples:

camera = Sketchup.active_model.active_view.camera
aspect_ratio = camera.aspect_ratio

Returns:

  • (Float)

Version:

  • SketchUp 6.0

#aspect_ratio=(ratio) ⇒ Object

The #aspect_ratio= method is used to set the aspect ratio for a Camera. Changing this value will cause SketchUp to show gray bars over the screen to show the resulting view.

If you set the value to `0.0`, then the aspect ratio of the Camera will match the aspect ratio of its View.

Examples:

camera = Sketchup::Camera.new
camera.aspect_ratio = 1.85

Parameters:

  • ratio (Float)

Version:

  • SketchUp 6.0

#center_2dGeom::Point3d

The #center_2d method returns a point with the x and y offset of the camera when it's in two-point perspective or math photo mode. When the camera is in two-point perspective and the user pans around, the x and y values will change. These values are in normalized device coordinates, so for instance, the range [-1.0, 1.0] spans the full width or height of the screen.

The z value is unused and it is always zero.

Examples:

Sketchup.active_model.active_view.camera.center_2d

Returns:

Version:

  • SketchUp 2015

#descriptionString

The #description method is used to retrieve the description for a Camera.

Examples:

camera = Sketchup::Camera.new
description = camera.description

Returns:

Version:

  • SketchUp 6.0

#description=(description) ⇒ Object

The #description= method is used to set the description for the Camera.

Examples:

camera = Sketchup::Camera.new
description = camera.description = "35 mm Camera"

Parameters:

Version:

  • SketchUp 6.0

#directionGeom::Vector3d

The #direction method is used to retrieve a Vector3d object in the direction that the Camera is pointing.

Examples:

camera = Sketchup::Camera.new
direction = camera.direction

Returns:

Version:

  • SketchUp 6.0

#eyeGeom::Point3d

The #eye method is used to retrieve the eye Point3d object for the Camera.

Examples:

camera = Sketchup::Camera.new
eye = camera.eye

Returns:

Version:

  • SketchUp 6.0

#focal_length(length) ⇒ Float

The focal_length method is used to get the focal length in millimeters of perspective Camera.

This value is computed on the fly based on the camera #fov value and the camera #image_width value.

Examples:

# Calculate focal length based on camera's current #image_width.
camera = Sketchup::Camera.new
focal_length = camera.focal_length

# If you want the 35 mm focal length equivalent, a common measurement of
# camera field of view, you can instead calculate it from the #fov angle.
camera = Sketchup.active_model.active_view.camera
focal_length_35_eqv = 36.0 / (2 * Math.tan(camera.fov.degrees / 2))

Returns:

  • (Float)

Version:

  • SketchUp 6.0

#focal_length=(focal_length) ⇒ Object

The #focal_length= method allows you to set the field of view by specifying a focal length in millimeters. Focal length must be between 1 and 3000, inclusive.

The camera #fov value is set based on the provided focal_length and the current #image_width for the camera.

Examples:

# Set field of view from focal length using camera's current #image_width.
camera = Sketchup.active_model.active_view.camera
camera.focal_length = 120

# If you instead want to set the 35 mm focal length equivalent, a common
# measurement of camera field of view, you can first convert it to an angle
# and use #fov=.
camera = Sketchup.active_model.active_view.camera
focal_length_35_eqv = 120
camera.fov = 2 * Math.atan(36.0 / (2 * focal_length_35_eqv)).radians

Parameters:

  • focal_length (Float)

Version:

  • SketchUp 6.0

#fovFloat

The #fov method retrieves the field of view of the Camera.

This is only applicable to perspective cameras.

Examples:

camera = Sketchup::Camera.new
fov = camera.fov

Returns:

  • (Float)

    Field of view in degrees

Version:

  • SketchUp 6.0

#fov=(fov) ⇒ Object

The #fov= method sets the field of view for a Camera. Field of view must be between 1 and 120 degrees, inclusive.

This is only valid on a perspective camera.

Examples:

camera = Sketchup::Camera.new
fov = camera.fov = 56.78

Parameters:

  • fov (Numeric)

    Field of view in degrees

Version:

  • SketchUp 6.0

#fov_is_height?Boolean

The #fov_is_height? method indicates whether the field of view is measured vertically, as opposed horizontally.

Examples:

camera = Sketchup.active_model.active_view.camera
if camera.fov_is_height?
  fov_vertical = camera.fov
  # Compute the horizontal FOV.
else
  fov_horizontal = camera.fov
  # Compute the vertical FOV.
end

Returns:

  • (Boolean)

Version:

  • SketchUp 2015

#heightFloat

The #height method retrieves the height of a Camera.

This is only valid if it is not a perspective camera.

Examples:

camera = Sketchup::Camera.new
camera.perspective = false
height = camera.height

Returns:

  • (Float)

    height in inches.

Version:

  • SketchUp 6.0

#height=(value) ⇒ Object

The #height= method is used to set the height for the Camera in inches.

This is only valid if it is not a perspective camera.

Examples:

camera = Sketchup::Camera.new
camera.perspective = false
camera.height = 20

Parameters:

  • value (Float)

Version:

  • SketchUp 6.0

#image_widthFloat

The #image_width method returns the width of the image, as used to calculate the #focal_length. This value has no effect on how the view is displayed in SketchUp.

The default value, 0, is interpreted by SketchUp as 36 mm (the width of traditional 35 mm film).

Examples:

camera = Sketchup::Camera.new
width = camera.image_width

Returns:

  • (Float)

    Width in mm.

Version:

  • SketchUp 6.0

#image_width=(image_width) ⇒ Object

The #image_width= method is used to set the width of the image, as used to calculate the #focal_length. This value has no effect on how the view is displayed in SketchUp.

The default value, 0, is interpreted by SketchUp as 36 mm (the width of traditional 35 mm film).

Examples:

camera = Sketchup::Camera.new
camera.image_width = 1.0
focal_length = camera.focal_length

Parameters:

  • image_width (Float)

    Width in mm.

Version:

  • SketchUp 6.0

#is_2d?Boolean

The #is_2d? method indicates if the camera two-point perspective or match photo mode.

Returns:

  • (Boolean)

Version:

  • SketchUp 2015

#perspective=(perspective) ⇒ Object

The #perspective= method is used to set whether or not this is a perspective camera or an orthographic camera.

Examples:

camera = Sketchup::Camera.new
camera.perspective = false

Parameters:

  • perspective (Boolean)

Version:

  • SketchUp 6.0

#perspective?Boolean

The #perspective? method is used to determine whether a camera is a perspective or orthographic camera.

Examples:

camera = Sketchup::Camera.new
status = camera.perspective?
if (status)
  puts "Perspective"
else
  puts "Orthographic"
end

Returns:

  • (Boolean)

Version:

  • SketchUp 6.0

#scale_2dObject

The #scale_2d method returns a float indicating the scaling factor of 2 point perspective cameras.

When the camera is in two-point perspective and the user uses the zoom tools, this value will change. Zooming out will produce a value greater than 1.0.

Returns:

  • float

Version:

  • SketchUp 2015

#set(eye, target, up) ⇒ Sketchup::Camera

The #set method sets the camera orientation. You have to set the camera eye, target and up parameters at the same time to make sure that you have a valid camera definition.

Examples:

camera = Sketchup::Camera.new
eye = Geom::Point3d.new(20, 5, 30)
target = Geom::Point3d.new(20, 60, 25)
up = Z_AXIS
camera.set(eye, target, up)

Parameters:

Returns:

Version:

  • SketchUp 6.0

#targetGeom::Point3d

The #target method retrieves Point3d that the camera is pointing at.

Examples:

camera = Sketchup::Camera.new
target = camera.target

Returns:

Version:

  • SketchUp 6.0

#upGeom::Vector3d

The #up method is used to retrieve the up vector for the camera. This is

the direction that the top of the camera is facing.

Examples:

camera = Sketchup::Camera.new
up = camera.up

Returns:

Version:

  • SketchUp 6.0

#xaxisGeom::Vector3d

The #xaxis method is used to retrieve the x axis of the camera coordinate system.

This value is computed from the cross product between the camera direction and the up vector.

Examples:

camera = Sketchup::Camera.new
xaxis = camera.xaxis

Returns:

Version:

  • SketchUp 6.0

#yaxisGeom::Vector3d

The #yaxis method retrieves the y axis of the camera coordinate system.

This value is computed to be perpendicular the camera x and z axes. It is equivalent to the up direction, but is computed to make sure that it is perpendicular to the direction.

Examples:

camera = Sketchup::Camera.new
# 0.0, 1.0, 0.0
yaxis = camera.yaxis

Returns:

Version:

  • SketchUp 6.0

#zaxisObject

The #zaxis method retrieves the z axis of the camera coordinate system.

This value is computed. It is the same as Camera.direction

Examples:

camera = Sketchup::Camera.new
# 0.0, 1.0, 0.0
v = camera.zaxis
if (v)
  UI.messagebox v.to_s
else
  UI.messagebox "Failure"
end

Returns:

  • vector - a Vector3d object if successful

Version:

  • SketchUp 6.0