r3vcam
real/code/r3vcam.h
r3code
Viewcam Class. This object stores amd manages view window orientation and computes transformations between view pixel coordinates and 3D space coordinates using the input plane system. Notes: - Camera space can be defined by R3VCA_CoordSys, where the third axis defines the direction of the camera and the first axis is horizon from right to left (orthogonal second axis then points up).
r3Model
R3CLID_MODEL
r3Vcam
R3CLID_VCAM - 71
DO3DTO2D, DO3DTO2DARRAY, DO2DTO3D, DO2DTO3DARRAY, SETNATIVEORIENTATION, GOTONATIVEORIENTATION, ROTATE, SETALLHOTPOINTS, DO2DTODIRPOINT, DO3DTO2DANDSIGN, CLIPLINE, DO2DFLOATTO3D, ROTATETOMAIN, CLIPFARLINE, CLIPLINEGENERAL, VIEWTOMODEL,
Projection, Width, Height, AspectRatio, Position, Aimpoint, Heading, Pitching, Banking, IPlaneHeading, IPlanePitching, IPlaneBanking, Scale, CoordSys, IPCoordSys, Distance, Hotpoint, ModelView, ViewIPAngle, KeepIPlaneOrthogonal, RelHeading, RelPitching, RelBanking, RelIPlaneHeading, RelIPlanePitching, RelIPlaneBanking, NativeCoordSys, MinClipDist, MaxClipDist, PrivateHotp, NoVertPersp,
int R3RegisterVCamClass(R3APP *app);
R3VCM_DO3DTO2D
DO3DTO2D
R3VCM_DO3DTO2D
obj.DO3DTO2D();
Map 3D point to 2D
R3VCM_DO3DTO2DARRAY
DO3DTO2DARRAY
R3VCM_DO3DTO2DARRAY
obj.DO3DTO2DARRAY();
Map an array of 3D points to 2D. Init. vcammsg's count field to reflect the point count.
R3VCM_DO2DTO3D
DO2DTO3D
R3VCM_DO2DTO3D
R3BOOL, return true if z > 0 (the point is not behind the camera )
rc = obj.DO2DTO3D();
Map 2D point to 3D
R3VCM_DO2DTO3DARRAY
DO2DTO3DARRAY
R3VCM_DO2DTO3DARRAY
obj.DO2DTO3DARRAY();
Map an array of 2D points to 3D
R3VCM_SETNATIVEORIENTATION
SETNATIVEORIENTATION
R3VCM_SETNATIVEORIENTATION
obj.SETNATIVEORIENTATION();
Sets the current orientation of camera as the native orientation
R3VCM_GOTONATIVEORIENTATION
GOTONATIVEORIENTATION
R3VCM_GOTONATIVEORIENTATION
obj.GOTONATIVEORIENTATION();
resets the camera to its native orientation
R3VCM_ROTATE
ROTATE
R3VCM_ROTATE
R3FLOAT, amount of horiz. rotation in radians
R3FLOAT, amount of vert. rotation in radians
R3INT, rotate flags as defined below, defines what to rotate
obj.ROTATE(p1, p2, p3);
rotates camera in its native orientation
R3VCCM_SETALLHOTPOINTS
SETALLHOTPOINTS
R3VCCM_SETALLHOTPOINTS
R3VECTOR, the new hot point position
obj.SETALLHOTPOINTS(p3);
sets the hotpoint to a common value
R3VCM_DO2DTODIRPOINT
DO2DTODIRPOINT
R3VCM_DO2DTODIRPOINT
obj.DO2DTODIRPOINT();
maps a 2d sceen coordinate to a point on orthogonal plane at unit distance from the camera
R3VCM_DO3DTO2DANDSIGN
DO3DTO2DANDSIGN
R3VCM_DO3DTO2DANDSIGN
obj.DO3DTO2DANDSIGN();
projects a point to the screen coords. Positive t coord indicates if it was in front of the camera.
R3VCM_CLIPLINE
CLIPLINE
R3VCM_CLIPLINE
R3VECTOR, result vector. p3->r & s will contain the screen coords.
obj.CLIPLINE(p3);
finds the screen coords of the point where the given line goes through minclipdist plane
R3VCM_DO2DFLOATTO3D
DO2DFLOATTO3D
R3VCM_DO2DFLOATTO3D
obj.DO2DFLOATTO3D();
maps a 2d screen coordinate (on floating point form) to input plane
R3VCM_ROTATETOMAIN
ROTATETOMAIN
R3VCM_ROTATETOMAIN
R3INT, rotate flags
R3INT, see rotate directions below
obj.ROTATETOMAIN(p1, p3);
Rotates from current view to closest main native projection axis direction
R3VCM_CLIPFARLINE
CLIPFARLINE
R3VCM_CLIPFARLINE
R3VECTOR, result vector. p3->r & s will contain the screen coords.
obj.CLIPFARLINE(p3);
finds the screen coords of the point where the given line goes through maxclipdist plane
R3VCM_CLIPLINEGENERAL
CLIPLINEGENERAL
R3VCM_CLIPLINEGENERAL
obj.CLIPLINEGENERAL();
finds the screen coords of the point where the given line goes through a clip plane
R3VCM_VIEWTOMODEL
VIEWTOMODEL
R3VCM_VIEWTOMODEL
R3VECTOR, input point
R3VECTOR, point in abs. world space
obj.VIEWTOMODEL(p1, p3);
Map a 3d point defined in view space to 3d point in abs. world space.
R3VCM_ROTATETOMAIN direction types:
Flags for ROTATE method
Projection
Projection
R3VCA_Projection
Integer
R3INT
see projection codes below
jsobj.SetProjection(value);
value = jsobj.GetProjection();
R3INT value = ...;
R3SetAttrs(r3obj, R3VCA_Projection, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3VCA_Projection, &value, R3TAG_END);
Width
Width
R3VCA_Width
Integer
R3INT
width in pixels
jsobj.SetWidth(value);
value = jsobj.GetWidth();
R3INT value = ...;
R3SetAttrs(r3obj, R3VCA_Width, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3VCA_Width, &value, R3TAG_END);
Height
Height
R3VCA_Height
Integer
R3INT
height in pixels
jsobj.SetHeight(value);
value = jsobj.GetHeight();
R3INT value = ...;
R3SetAttrs(r3obj, R3VCA_Height, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3VCA_Height, &value, R3TAG_END);
AspectRatio
AspectRatio
R3VCA_AspectRatio
Number
R3FLOAT
Pixel aspect ratio height/width.
jsobj.SetAspectRatio(value);
value = jsobj.GetAspectRatio();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_AspectRatio, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_AspectRatio, &value, R3TAG_END);
Position
Position
R3VCA_Position
the origin of R3VCA_CoordSys
jsobj.SetPosition(value);
value = jsobj.GetPosition();
R3VECTOR value = ...;
R3SetAttrs(r3obj, R3VCA_Position, value, R3TAG_END);
R3VECTOR value;
R3GetAttrs(r3obj, R3VCA_Position, &value, R3TAG_END);
Aimpoint
Aimpoint
R3VCA_Aimpoint
The point camera is aimin at and arouind which camera rotates
jsobj.SetAimpoint(value);
value = jsobj.GetAimpoint();
R3VECTOR value = ...;
R3SetAttrs(r3obj, R3VCA_Aimpoint, value, R3TAG_END);
R3VECTOR value;
R3GetAttrs(r3obj, R3VCA_Aimpoint, &value, R3TAG_END);
Heading
Heading
R3VCA_Heading
Number
R3FLOAT
Heading for camera oriented angle controls
jsobj.SetHeading(value);
value = jsobj.GetHeading();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_Heading, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_Heading, &value, R3TAG_END);
Pitching
Pitching
R3VCA_Pitching
Number
R3FLOAT
Pitcing for camera oriented angle controls
jsobj.SetPitching(value);
value = jsobj.GetPitching();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_Pitching, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_Pitching, &value, R3TAG_END);
Banking
Banking
R3VCA_Banking
Number
R3FLOAT
Banking for camera orientated angle controls
jsobj.SetBanking(value);
value = jsobj.GetBanking();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_Banking, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_Banking, &value, R3TAG_END);
IPlaneHeading
IPlaneHeading
R3VCA_IPlaneHeading
Number
R3FLOAT
angle controls for iplane orientation
jsobj.SetIPlaneHeading(value);
value = jsobj.GetIPlaneHeading();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_IPlaneHeading, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_IPlaneHeading, &value, R3TAG_END);
IPlanePitching
IPlanePitching
R3VCA_IPlanePitching
Number
R3FLOAT
angle controls for iplane orientation
jsobj.SetIPlanePitching(value);
value = jsobj.GetIPlanePitching();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_IPlanePitching, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_IPlanePitching, &value, R3TAG_END);
IPlaneBanking
IPlaneBanking
R3VCA_IPlaneBanking
Number
R3FLOAT
angle controls for iplane orientation
jsobj.SetIPlaneBanking(value);
value = jsobj.GetIPlaneBanking();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_IPlaneBanking, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_IPlaneBanking, &value, R3TAG_END);
Scale
Scale
R3VCA_Scale
Number
R3FLOAT
zoom scale = 1/width of visible area at unit distance from cam origin
jsobj.SetScale(value);
value = jsobj.GetScale();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_Scale, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_Scale, &value, R3TAG_END);
CoordSys
CoordSys
R3VCA_CoordSys
camera space
jsobj.SetCoordSys(value);
value = jsobj.GetCoordSys();
R3COORDSYS value = ...;
R3SetAttrs(r3obj, R3VCA_CoordSys, &value, R3TAG_END);
R3COORDSYS value;
R3GetAttrs(r3obj, R3VCA_CoordSys, &value, R3TAG_END);
IPCoordSys
IPCoordSys
R3VCA_IPCoordSys
input space
jsobj.SetIPCoordSys(value);
value = jsobj.GetIPCoordSys();
R3COORDSYS value = ...;
R3SetAttrs(r3obj, R3VCA_IPCoordSys, &value, R3TAG_END);
R3COORDSYS value;
R3GetAttrs(r3obj, R3VCA_IPCoordSys, &value, R3TAG_END);
Distance
Distance
R3VCA_Distance
Number
R3FLOAT
point of interest (around which camera rotates) is orig + distance*normal
jsobj.SetDistance(value);
value = jsobj.GetDistance();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_Distance, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_Distance, &value, R3TAG_END);
Hotpoint
Hotpoint
R3VCA_Hotpoint
origin of IPCoordSys
jsobj.SetHotpoint(value);
value = jsobj.GetHotpoint();
R3VECTOR value = ...;
R3SetAttrs(r3obj, R3VCA_Hotpoint, value, R3TAG_END);
R3VECTOR value;
R3GetAttrs(r3obj, R3VCA_Hotpoint, &value, R3TAG_END);
ModelView
ModelView
R3VCA_ModelView
read-only
value = jsobj.GetModelView();
R3MATRIX value;
R3GetAttrs(r3obj, R3VCA_ModelView, &value, R3TAG_END);
ViewIPAngle
ViewIPAngle
R3VCA_ViewIPAngle
Number
R3FLOAT
read-only, dot product of iplane normal and cam dir
value = jsobj.GetViewIPAngle();
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_ViewIPAngle, &value, R3TAG_END);
KeepIPlaneOrthogonal
KeepIPlaneOrthogonal
R3VCA_KeepIPlaneOrthogonal
Boolean
R3BOOL
if TRUE iplane is always kept perpendicular to the camera
jsobj.SetKeepIPlaneOrthogonal(value);
value = jsobj.GetKeepIPlaneOrthogonal();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3VCA_KeepIPlaneOrthogonal, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3VCA_KeepIPlaneOrthogonal, &value, R3TAG_END);
RelHeading
RelHeading
R3VCA_RelHeading
Number
R3FLOAT
H, P and B are camera orientation angle controls in native csys
jsobj.SetRelHeading(value);
value = jsobj.GetRelHeading();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelHeading, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_RelHeading, &value, R3TAG_END);
RelPitching
RelPitching
R3VCA_RelPitching
Number
R3FLOAT
H, P and B are camera orientation angle controls in native csys
jsobj.SetRelPitching(value);
value = jsobj.GetRelPitching();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelPitching, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_RelPitching, &value, R3TAG_END);
RelBanking
RelBanking
R3VCA_RelBanking
Number
R3FLOAT
H, P and B are camera orientation angle controls in native csys
jsobj.SetRelBanking(value);
value = jsobj.GetRelBanking();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelBanking, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_RelBanking, &value, R3TAG_END);
RelIPlaneHeading
RelIPlaneHeading
R3VCA_RelIPlaneHeading
Number
R3FLOAT
angle controls for iplane orientation in native csys
jsobj.SetRelIPlaneHeading(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelIPlaneHeading, value, R3TAG_END);
RelIPlanePitching
RelIPlanePitching
R3VCA_RelIPlanePitching
Number
R3FLOAT
angle controls for iplane orientation in native csys
jsobj.SetRelIPlanePitching(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelIPlanePitching, value, R3TAG_END);
RelIPlaneBanking
RelIPlaneBanking
R3VCA_RelIPlaneBanking
Number
R3FLOAT
angle controls for iplane orientation in native csys
jsobj.SetRelIPlaneBanking(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_RelIPlaneBanking, value, R3TAG_END);
NativeCoordSys
NativeCoordSys
R3VCA_NativeCoordSys
space where rotations are computed
jsobj.SetNativeCoordSys(value);
value = jsobj.GetNativeCoordSys();
R3COORDSYS value = ...;
R3SetAttrs(r3obj, R3VCA_NativeCoordSys, &value, R3TAG_END);
R3COORDSYS value;
R3GetAttrs(r3obj, R3VCA_NativeCoordSys, &value, R3TAG_END);
MinClipDist
MinClipDist
R3VCA_MinClipDist
Number
R3FLOAT
in meters
jsobj.SetMinClipDist(value);
value = jsobj.GetMinClipDist();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_MinClipDist, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_MinClipDist, &value, R3TAG_END);
MaxClipDist
MaxClipDist
R3VCA_MaxClipDist
Number
R3FLOAT
in meters
jsobj.SetMaxClipDist(value);
value = jsobj.GetMaxClipDist();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3VCA_MaxClipDist, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3VCA_MaxClipDist, &value, R3TAG_END);
PrivateHotp
PrivateHotp
R3VCA_PrivateHotp
Boolean
R3BOOL
vcam should not follow R3VCCM_SETALLHOTPOINTS
jsobj.SetPrivateHotp(value);
value = jsobj.GetPrivateHotp();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3VCA_PrivateHotp, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3VCA_PrivateHotp, &value, R3TAG_END);
NoVertPersp
NoVertPersp
R3VCA_NoVertPersp
Boolean
R3BOOL
keeps vertical lines parallel
jsobj.SetNoVertPersp(value);
value = jsobj.GetNoVertPersp();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3VCA_NoVertPersp, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3VCA_NoVertPersp, &value, R3TAG_END);
Projections
Input method
Viewcam Message
R3VECTOR *, base point for iplane axis locked projections
R3VECTOR *, normal for custom iplane projections
R3INT, see input method enum above