This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Basics
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Unigine.Camera Class

The Camera class is used to create a new camera, set it up (set all the required matrices, field of view, masks and so on) and then pass it to an instance of the Viewport class to render an image from this camera.

Notice
An instance of this class is not a node.

A camera instance can have the following masks:

  • Sound Source mask
  • Sound Reverberation mask
  • Viewport mask
  • Reflection Viewport mask

Camera settings can be set up in the Camera Settings in UnigineEditor.

Usage Example

In this example Camera and PlayerSpectator (which inherited from Player class) instances created and added to the current scene. Here is a code from the AppWorldLogic.cs file.

Source code (C#)
namespace UnigineApp
{
	class AppWorldLogic : WorldLogic
	{
		PlayerSpectator playerSpectator;
		Camera camera;

		/* ... */

		public override bool Init()
		{
			/* ... */
			// initialize PlayerSpectator and Camera instances
			playerSpectator = new PlayerSpectator();
			camera = new Camera();

			// specify the necessary camera parameters: FOV, ZNear, ZFar.
			// add the post_sensor_red post-effect to camera
			camera.Fov = 110.0f;
			camera.ZNear = 0.1f;
			camera.ZFar = 10000.0f;

			// set camera to the player
			playerSpectator.Camera = camera;

			// specify the position and view direction of playerSpectator
			playerSpectator.ViewDirection = new vec3(0.0f, 1.0f, 0.0f);
			playerSpectator.WorldPosition = new vec3(-1.6f, -1.7f, 1.7f);

			Game.Player = playerSpectator;

			return 1;
		}
	}
}

Camera Class

Enums

PROJECTION_MODE#

NameDescription
PERSPECTIVE = 0Perspective projection.
ORTHOGRAPHIC = 1Orthographic projection.

FOV_FIXED#

NameDescription
VERTICAL = 0Vertical FOV component is fixed.
HORIZONTAL = 1Horizontal FOV component is fixed.

FOV_MODE#

NameDescription
VERTICAL = 0Vertical FOV mode. Vertical FOV of the camera is determined by the FOV value.
PHYSICALLY_BASED_CAMERA = 1

Physically based mode. Horizontal FOV of the physically-based camera is calculated using the focal length and film gate values according to the following formula:

FOV_h = 2 * atan(film_gate / (2 * focal_length)) * RAD2DEG

Properties

int NumScriptableMaterials#

The total number of scriptable materials attached to the camera.

int ReverbMask#

The current bit mask that determines what reverberation zones can be heard. for sound to reverberate, at least one bit of this mask should match a reverb mask of the sound source and a reverb mask of the reverberation zone. masks of a sound source and reverberation zone can match with the camera's one in several bits, not necessarily one.

int SourceMask#

The A bit mask that determines what sound channels can be heard. for a sound source to be heard, its mask should match this one in at least one bit. plus, the volume of sound channel in which the sound plays (its number also depends on this mask) should not be equal to 0.

int ReflectionViewportMask#

The current bit mask for rendering reflections into the camera viewport. reflections are rendered in the camera viewport if masks of reflective materials match this one (one bit at least).

int ViewportMask#

The current bit mask for rendering into the viewport. object surfaces, materials, decals, lights and gui objects will be rendered into the viewport only if their viewport mask matches the camera's one (one matching bit is enough).

bool ObliqueFrustum#

The A value indicating if the viewing frustum is oblique.

vec4 ObliqueFrustumPlane#

The oblique near clipping plane of the viewing frustum.

vec3 Up#

The current up direction of the camera's viewport (i.e. tilt of the camera's viewport).

float ZFar#

The current distance to the far clipping plane of the camera's viewing frustum.

float ZNear#

The current distance to the near clipping plane of the camera's viewing frustum.

float FocalLength#

The focal length of the physically-based camera lens.

float FilmGate#

The A film gate for the physically-based camera with horizontal fov.

float Fov#

The

Returns the current vertical field of view of the camera.

Notice
Horizontal FOV cannot be used since it varies depending on the viewport's aspect ratio. Setting FOV recalculates projection matrix with aspect ratio = 1.

You can use the following formula to calculate horizontal FOV from the vertical one for the given aspect ratio (width/height): FOV_h = 2 × atan ( (width / height) × tan(FOV_v / 2)).

Camera.FOV_FIXED FovFixed#

The A value indicating which fov component (horizontal or vertical) is currently fixed.

Camera.FOV_MODE FovMode#

The Sets the value indicating the type of FOV that is used for the camera.

mat4 Projection#

The current projection matrix with unit (1.0) aspect ratio.

mat4 Offset#

The An additional transformation (an offset matrix) set for the camera. this transformation is applied after modelview transformation. the offset matrix does not affect the view matrix or the position of the camera. for example, it can be used to simulate camera shake from an explosion.

vec3 Position#

The current position of the camera. the position vector is stored in the 3rd column of the inverse view matrix.

mat4 IModelview#

The inverted view matrix of the camera.

mat4 Modelview#

The current view matrix of the camera.

float OrthoHeight#

The height of the camera with the orthographic projection mode enabled.

Camera.PROJECTION_MODE ProjectionMode#

The projection mode, PROJECTION_MODE.ORTHOGRAPHIC for the orthographic mode; PROJECTION_MODE.PERSPECTIVE for the perspective mode.

Members


Camera ( ) #

Constructor. Creates a new camera with default settings:

void GetDirectionFromScreen ( out Vec3 p0, out Vec3 p1, float screen_x, float screen_y, float aspect ) #

Casts the ray from a certain position on the screen.

Arguments

  • out Vec3 p0 - Start coordinate of the ray.
  • out Vec3 p1 - End coordinate of the ray.
  • float screen_x - X-coordinate of screen, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float screen_y - Y-coordinate of screen, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float aspect - Screen's aspect ratio (height to width).

vec3 GetDirectionFromScreen ( float screen_x, float screen_y, float aspect ) #

Casts the ray from a certain position on the screen.

Arguments

  • float screen_x - X-coordinate of screen, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float screen_y - Y-coordinate of screen, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float aspect - Screen's aspect ratio (height to width).

Return value

Point coordinate.

mat4 GetProjectionFromScreen ( float screen_x0, float screen_y0, float screen_x1, float screen_y1, float aspect ) #

Creates a projection matrix out of 2 screen positions. This is required for the frame selection.

Arguments

  • float screen_x0 - X-coordinate of the first screen position, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float screen_y0 - Y-coordinate of the first screen position, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float screen_x1 - X-coordinate of the second screen position, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float screen_y1 - Y-coordinate of the second screen position, in the [0;1] range, where 0 is the left upper point, 1 is the right lower point.
  • float aspect - Screen's aspect ratio (height to width).

Return value

Projection matrix.

int GetScreenPosition ( out float screen_x, out float screen_y, vec3 point, float aspect ) #

Projects the point in world coordinates to the screen. Screen coordinates are written into the first 2 variables passed to the method.

Arguments

  • out float screen_x - X-coordinate of the screen position.
  • out float screen_y - Y-coordinate of the screen position.
  • vec3 point - Point coordinates.
  • float aspect - Aspect ratio (screen height to width).

Return value

1 if the point has been projected successfully; otherwise, 0.

Camera Clone ( ) #

Clones the current camera and saves it to the given camera instance.

Return value

Copy of the camera.

mat4 GetAspectCorrectedProjection ( float aspect ) #

Returns projection matrix after correction for the specified aspect ratio. Currently fixed FOV component is taken into account.

Arguments

  • float aspect - Aspect ratio.

Return value

Projection matrix after correction for the specified aspect ratio.

void AddScriptableMaterial ( Material material ) #

Attaches a new scriptable material to the camera. To apply a scriptable material globally, use the addScriptableMaterial() method of the Render class. The order of execution for scripts assigned to scriptable materials is defined by material's number in the list of the camera.
Notice
Scriptable materials applied globally have their expressions executed before the ones that are applied per-camera.

Arguments

  • Material material - Scriptable material to be attached to the camera.

void InsertScriptableMaterial ( int num, Material material ) #

Inserts a new scriptable material into the list of the ones assigned to the camera. To apply a scriptable material globally, use the insertScriptableMaterial() method of the Render class. The order of execution for scripts assigned to scriptable materials is defined by material's number in the camera's list.
Notice
Scriptable materials applied globally have their expressions executed before the ones that are applied per-camera.

Arguments

  • int num - Position at which a new scriptable material is to be inserted.
  • Material material - Scriptable material to be inserted.

void RemoveScriptableMaterial ( int num ) #

Removes the scriptable material with the specified number from the camera.

Arguments

int FindScriptableMaterial ( Material material ) #

Returns the number of the specified scriptable material for the camera. This number is camera-specific (valid for this camera only) and determines the order in which the assigned expressions are executed.
Notice
Scriptable materials applied globally have their expressions executed before the ones that are applied per-camera.

Arguments

  • Material material - Scriptable material for which a number is to be found.

Return value

Scriptable material number in the range from 0 to the total number of scriptable materials, or -1 if the specified material was not found.

void SetScriptableMaterial ( int num, Material material ) #

Replaces the scriptable material with the specified number with the new scriptable material specified. The number of material determines the order in which the expressions assigned to it are executed. This number is camera-specific (valid for this camera only).
Notice
Scriptable materials applied globally have their expressions executed before the ones that are applied per-camera.

Arguments

Material GetScriptableMaterial ( int num ) #

Returns a scriptable material attached to the camera by its number.

Arguments

Return value

Scriptable material attached to the camera with the specified number.

void SetScriptableMaterialEnabled ( int num, bool enabled ) #

Enables or disables the scriptable material with the specified number. When a material is disabled (inactive), the scripts attached to it are not executed.

Arguments

  • int num - Scriptable material number in the range from 0 to the total number of scriptable materials.
  • bool enabled - 1 to enable the scriptable material with the specified number, 0 to disable it.

bool GetScriptableMaterialEnabled ( int num ) #

Returns a value indicating if the scriptable material with the specified number attached to the camera is enabled (active). When a material is disabled (inactive), the scripts attached to it are not executed.

Arguments

Return value

1 if the scriptable material with the specified number is enabled; otherwise, 0.

void SwapScriptableMaterials ( int num_0, int num_1 ) #

Swaps two scriptable materials with specified numbers. The number of material determines the order in which the expressions assigned to it are executed.
Notice
The number is camera-specific (valid for this camera only).

Arguments

void ClearScriptableMaterials ( ) #

Clears all scriptable materials attached to the camera.

Camera Copy ( Camera camera ) #

Copies the parameters from the source camera to this camera instance.

Arguments

  • Camera camera - Source camera instance.

Return value

This camera instance.

void Swap ( Camera camera ) #

Swaps the parameters between the specified camera and this camera instance.

Arguments

  • Camera camera - Camera instance.
Last update: 2024-12-13
Build: ()