Class TAbstractViewpointNode

Unit

Declaration

type TAbstractViewpointNode = class(TAbstractBindableNode)

Description

Base type for viewpoints in X3D, which are locations from which the user may view the scene.

Hierarchy

Overview

Methods

Public constructor Create(const AX3DName: string = ''; const ABaseUrl: string = ''); override;
Public function TransformationChange: TNodeTransformationChange; override;
Public class function ProjectionType: TProjectionType; virtual; abstract;
Public procedure GetView(out CamPos, CamDir, CamUp, GravityUp: TVector3);
Public function SmartDescription: string; virtual;
Public function ProjectionMatrix: TMatrix4; virtual;
Public function ModelviewMatrix: TMatrix4;
Public function GetProjectorMatrix: TMatrix4;
Public procedure CreateNode; override;
Public class function ClassX3DType: string; override;

Properties

Public property Position: TVector3 read GetPosition write SetPosition;
Public property FdCenterOfRotation: TSFVec3f read FFdCenterOfRotation;
Public property CenterOfRotation: TVector3 read GetCenterOfRotation write SetCenterOfRotation;
Public property FdDescription: TSFString read FFdDescription;
Public property Description: String read GetDescription write SetDescription;
Public property FdJump: TSFBool read FFdJump;
Public property Jump: Boolean read GetJump write SetJump;
Public property FdOrientation: TSFRotation read FFdOrientation;
Public property Orientation: TVector4 read GetOrientation write SetOrientation;
Public property FdRetainUserOffsets: TSFBool read FFdRetainUserOffsets;
Public property RetainUserOffsets: Boolean read GetRetainUserOffsets write SetRetainUserOffsets;
Public property EventCameraMatrix: TSFMatrix4fEvent read FEventCameraMatrix;
Public property EventCameraInverseMatrix: TSFMatrix4fEvent read FEventCameraInverseMatrix;
Public property EventCameraRotationMatrix: TSFMatrix3fEvent read FEventCameraRotationMatrix;
Public property EventCameraRotationInverseMatrix: TSFMatrix3fEvent read FEventCameraRotationInverseMatrix;
Public property FdCameraMatrixSendAlsoOnOffscreenRendering: TSFBool read FFdCameraMatrixSendAlsoOnOffscreenRendering;
Public property CameraMatrixSendAlsoOnOffscreenRendering: Boolean read GetCameraMatrixSendAlsoOnOffscreenRendering write SetCameraMatrixSendAlsoOnOffscreenRendering;
Public property FdDirection: TMFVec3f read FFdDirection;
Public property FdUp: TMFVec3f read FFdUp;
Public property FdGravityUp: TSFVec3f read FFdGravityUp;
Public property GravityUp: TVector3 read GetGravityUp write SetGravityUp;
Public property FdGravityTransform: TSFBool read FFdGravityTransform;
Public property GravityTransform: Boolean read GetGravityTransform write SetGravityTransform;

Description

Methods

Public constructor Create(const AX3DName: string = ''; const ABaseUrl: string = ''); override;
 
Public function TransformationChange: TNodeTransformationChange; override;
 
Public class function ProjectionType: TProjectionType; virtual; abstract;
 
Public procedure GetView(out CamPos, CamDir, CamUp, GravityUp: TVector3);

Calculate camera vectors (position, direction, up, gravity up). Follows VRML/X3D specification:

  • position is taken directly from FdPosition field,

  • direction and up are (respectively) -Z and +Y rotated by FdOrientation,

  • gravity up is +Y.

They are all then transformed by the current viewpoint transformation (determined by parent nodes like TTransformNode).

One conclusion from the above is that the only way to change the gravity up vector (this determines in which direction viewer falls down) is to use the Transform node around the viewpoint node.

Additionally, as an extension, we also look at FdDirection and FdUp and FdGravityUp vectors. See https://castle-engine.io/x3d_extensions.php#section_ext_cameras_alt_orient

Returned CamDir, CamUp, GravityUp are always normalized.

Public function SmartDescription: string; virtual;

Description generated smart (trying to use FdDescription field, falling back on other information to help user identify the node).

Public function ProjectionMatrix: TMatrix4; virtual;

Matrices for projecting texture from this viewpoint, for ProjectedTextureCoordinate. Override ProjectionMatrix for subclasses (ModelviewMatrix is already correctly defined here).

Public function ModelviewMatrix: TMatrix4;
 
Public function GetProjectorMatrix: TMatrix4;
 
Public procedure CreateNode; override;
 
Public class function ClassX3DType: string; override;
 

Properties

Public property Position: TVector3 read GetPosition write SetPosition;

Position of the viewpoint.

Public property FdCenterOfRotation: TSFVec3f read FFdCenterOfRotation;
 
Public property CenterOfRotation: TVector3 read GetCenterOfRotation write SetCenterOfRotation;
 
Public property FdDescription: TSFString read FFdDescription;
 
Public property Description: String read GetDescription write SetDescription;
 
Public property FdJump: TSFBool read FFdJump;
 
Public property Jump: Boolean read GetJump write SetJump;
 
Public property FdOrientation: TSFRotation read FFdOrientation;
 
Public property Orientation: TVector4 read GetOrientation write SetOrientation;

Orientation of the viewpoint, expressed as rotation to transform default direction and up (DefaultX3DCameraDirection, DefaultX3DCameraUp).

Public property FdRetainUserOffsets: TSFBool read FFdRetainUserOffsets;
 
Public property RetainUserOffsets: Boolean read GetRetainUserOffsets write SetRetainUserOffsets;
 
Public property EventCameraMatrix: TSFMatrix4fEvent read FEventCameraMatrix;
 
Public property EventCameraInverseMatrix: TSFMatrix4fEvent read FEventCameraInverseMatrix;
 
Public property EventCameraRotationMatrix: TSFMatrix3fEvent read FEventCameraRotationMatrix;
 
Public property EventCameraRotationInverseMatrix: TSFMatrix3fEvent read FEventCameraRotationInverseMatrix;
 
Public property FdCameraMatrixSendAlsoOnOffscreenRendering: TSFBool read FFdCameraMatrixSendAlsoOnOffscreenRendering;
 
Public property CameraMatrixSendAlsoOnOffscreenRendering: Boolean read GetCameraMatrixSendAlsoOnOffscreenRendering write SetCameraMatrixSendAlsoOnOffscreenRendering;
 
Public property FdDirection: TMFVec3f read FFdDirection;
 
Public property FdUp: TMFVec3f read FFdUp;
 
Public property FdGravityUp: TSFVec3f read FFdGravityUp;
 
Public property GravityUp: TVector3 read GetGravityUp write SetGravityUp;

Warning: this symbol is deprecated.

Specify the gravity vector explicitly. See https://castle-engine.io/x3d_implementation_navigation_extensions.php .

Public property FdGravityTransform: TSFBool read FFdGravityTransform;
 
Public property GravityTransform: Boolean read GetGravityTransform write SetGravityTransform;

Should the gravity vector be affected by the viewpoint transformation, that is by the TTransformNode instances that contain this TAbstractViewpointNode.


Generated by PasDoc 0.16.0.