00001 #ifndef __FBCAMERA_H__
00002 #define __FBCAMERA_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00043 #include <kaydaradef.h>
00044 #ifndef FBSDK_DLL
00045
00048 #define FBSDK_DLL K_DLLIMPORT
00049 #endif
00050
00051 #include <fbsdk/fbmodel.h>
00052 #include <fbsdk/fbhud.h>
00053
00054 #ifdef FBSDKUseNamespace
00055 namespace FBSDKNamespace {
00056 #endif
00057
00058 FB_DEFINE_COMPONENT( FBSDK_DLL, Camera );
00059 FB_DEFINE_COMPONENT( FBSDK_DLL, CameraStereo );
00060
00062
00064 __FB_FORWARD( FBCamera );
00065
00067 enum FBCameraFrameSizeMode {
00068 kFBFrameSizeWindow,
00069 kFBFrameSizeFixedRatio,
00070 kFBFrameSizeFixedResolution,
00071 kFBFrameSizeFixedWidthResolution,
00072 kFBFrameSizeFixedHeightResolution
00073 };
00074
00076
00077 enum FBCameraResolutionMode {
00078 kFBResolutionCustom,
00079 kFBResolutionD1NTSC,
00080 kFBResolutionNTSC,
00081 kFBResolutionPAL,
00082 kFBResolutionD1PAL,
00083 kFBResolutionHD,
00084 kFBResolution640x480,
00085 kFBResolution320x200,
00086 kFBResolution320x240,
00087 kFBResolution128x128,
00088 kFBResolutionFullScreen
00089 };
00090
00092
00093 enum FBCameraApertureMode {
00094 kFBApertureVertical,
00095 kFBApertureHorizontal,
00096 kFBApertureVertHoriz,
00097 kFBApertureFocalLength
00098 };
00099
00101
00102 enum FBCameraFilmBackType {
00103 kFBFilmBackCustom,
00104 kFBFilmBack16mmTheatrical,
00105 kFBFilmBackSuper16mm,
00106 kFBFilmBack35mmAcademy,
00107 kFBFilmBack35mmTVProjection,
00108 kFBFilmBack35mmFullAperture,
00109 kFBFilmBack35mm185Projection,
00110 kFBFilmBack35mmAnamorphic,
00111 kFBFilmBack70mmProjection,
00112 kFBFilmBackVistaVision,
00113 kFBFilmBackDynavision,
00114 kFBFilmBackIMAX
00115 };
00116
00118
00119 enum FBCameraViewPlaneMode {
00120 kFBViewPlaneDisabled,
00121 kFBViewPlaneAlways,
00122 kFBViewPlaneWhenMedia
00123 };
00124
00126
00127 enum FBCameraDistanceMode {
00128 kFBDistModeRelativeToInterest,
00129 kFBDistModeAbsoluteFromCamera
00130 };
00131
00133
00134 enum FBCameraSafeAreaMode {
00135 kFBSafeAreaSquare,
00136 kFBSafeAreaRound
00137 };
00138
00140
00141 enum FBCameraAntiAliasingMethod {
00142 kFBAntiAliasingSoftware,
00143 kFBAntialiasingMultiSamplingOnyx
00144 };
00145
00147
00148 enum FBCameraSamplingType {
00149 kFBSamplingUniform,
00150 kFBSamplingStochastic
00151 };
00152
00154
00155 enum FBCameraFocusDistanceSource {
00156 kFBFocusDistanceCameraInterest,
00157 kFBFocusDistanceSpecificDistance
00158 };
00159
00161
00162 enum FBCameraType {
00163 kFBCameraTypePerspective,
00164 kFBCameraTypeOrthogonal
00165 };
00166
00168
00169 enum FBCameraMatrixType {
00170 kFBProjection,
00171 kFBModelView,
00172 kFBModelViewProj,
00173 kFBProjInverse
00174 };
00175
00176 FB_DEFINE_ENUM( FBSDK_DLL, CameraType );
00177 FB_DEFINE_ENUM( FBSDK_DLL, CameraApertureMode );
00178 FB_DEFINE_ENUM( FBSDK_DLL, CameraFilmBackType );
00179 FB_DEFINE_ENUM( FBSDK_DLL, CameraFrameSizeMode );
00180 FB_DEFINE_ENUM( FBSDK_DLL, CameraResolutionMode );
00181 FB_DEFINE_ENUM( FBSDK_DLL, CameraViewPlaneMode );
00182 FB_DEFINE_ENUM( FBSDK_DLL, CameraDistanceMode );
00183 FB_DEFINE_ENUM( FBSDK_DLL, CameraSafeAreaMode );
00184 FB_DEFINE_ENUM( FBSDK_DLL, CameraAntiAliasingMethod );
00185 FB_DEFINE_ENUM( FBSDK_DLL, CameraSamplingType );
00186 FB_DEFINE_ENUM( FBSDK_DLL, CameraFocusDistanceSource );
00187 FB_DEFINE_ENUM( FBSDK_DLL, CameraMatrixType );
00188
00205 class FBSDK_DLL FBCamera : public FBModel {
00206 __FBClassDeclare( FBCamera,FBModel );
00207 public:
00212 FBCamera(const char * pName, HIObject pObject=NULL);
00213
00214 FBPropertyBool SystemCamera;
00215
00216
00217 FBPropertyCameraFrameSizeMode FrameSizeMode;
00218 FBPropertyCameraResolutionMode ResolutionMode;
00219 FBPropertyDouble ResolutionWidth;
00220 FBPropertyDouble ResolutionHeight;
00221 FBPropertyDouble WindowWidth;
00222 FBPropertyDouble WindowHeight;
00223 FBPropertyDouble PixelAspectRatio;
00224 FBPropertyDouble NearPlaneDistance;
00225 FBPropertyDouble FarPlaneDistance;
00226 FBPropertyBool MouseLockCamera;
00227 FBPropertyCameraType Type;
00228 FBPropertyCameraApertureMode ApertureMode;
00229 FBPropertyAnimatableDouble FieldOfView;
00230
00231 FBPropertyAnimatableDouble FieldOfViewX;
00232 FBPropertyAnimatableDouble FieldOfViewY;
00233 FBPropertyAnimatableDouble OpticalCenterX;
00234 FBPropertyAnimatableDouble OpticalCenterY;
00235 FBPropertyAnimatableDouble FocalLength;
00236
00237 FBPropertyCameraFilmBackType FilmBackType;
00238 FBPropertyDouble FilmSizeWidth;
00239 FBPropertyDouble FilmSizeHeight;
00240 FBPropertyDouble FilmAspectRatio;
00241 FBPropertyDouble SqueezeRatio;
00242
00243 static const double OrthoFactor;
00244
00273 FBPropertyDouble OrthoZoom;
00274
00275
00276
00277 FBPropertyTexture BackGroundTexture;
00278 FBPropertyVideo BackGroundMedia;
00279 FBPropertyCameraViewPlaneMode ViewBackGroundPlaneMode;
00280 FBPropertyBool BackGroundImageCenter;
00281 FBPropertyBool BackGroundImageFit;
00282 FBPropertyBool BackGroundImageKeepRatio;
00283 FBPropertyBool BackGroundImageCrop;
00284 FBPropertyDouble BackGroundPlaneDistance;
00285 FBPropertyCameraDistanceMode BackGroundPlaneDistanceMode;
00286
00287
00288 FBPropertyAnimatableDouble ForeGroundAlpha;
00289 FBPropertyDouble ForeGroundMaterialThreshold;
00290 FBPropertyBool ForeGroundTransparent;
00291 FBPropertyTexture ForeGroundTexture;
00292 FBPropertyVideo ForeGroundMedia;
00293 FBPropertyCameraViewPlaneMode ViewForeGroundPlaneMode;
00294 FBPropertyBool ForeGroundImageCenter;
00295 FBPropertyBool ForeGroundImageFit;
00296 FBPropertyBool ForeGroundImageKeepRatio;
00297 FBPropertyBool ForeGroundImageCrop;
00298 FBPropertyDouble ForeGroundPlaneDistance;
00299 FBPropertyCameraDistanceMode ForeGroundPlaneDistanceMode;
00300
00301
00302 FBPropertyBool ViewCameraInterest;
00303 FBPropertyBool ViewNearFarPlane;
00304 FBPropertyBool ViewShowName;
00305 FBPropertyBool ViewShowGrid;
00306 FBPropertyBool ViewShowAxis;
00307 FBPropertyBool ViewShowTimeCode;
00308 FBPropertyBool ViewDisplaySafeArea;
00309 FBPropertyBool ViewOpticalCenter;
00310 FBPropertyCameraSafeAreaMode SafeAreaMode;
00311
00312 FBPropertyAnimatableColor BackGroundColor;
00313 FBPropertyBool UseFrameColor;
00314 FBPropertyColor FrameColor;
00315
00316
00317
00318 FBPropertyBool UseAntiAliasing;
00319 FBPropertyBool UseDepthOfField;
00320 FBPropertyBool InteractiveMode;
00321
00322
00323 FBPropertyDouble AntiAliasingIntensity;
00324 FBPropertyCameraAntiAliasingMethod AntiAliasingMethod;
00325 FBPropertyInt NumberOfSamples;
00326 FBPropertyCameraSamplingType SamplingType;
00327 FBPropertyBool UseAccumulationBuffer;
00328
00329
00330 FBPropertyCameraFocusDistanceSource FocusDistanceSource;
00331 FBPropertyDouble FocusSpecificDistance;
00332 FBPropertyDouble FocusAngle;
00333
00334
00335 FBPropertyBool Use2DMagnifier;
00336 FBPropertyBool Display2DMagnifierFrame;
00337 FBPropertyAnimatableDouble MagnifierZoom;
00338 FBPropertyAnimatableDouble MagnifierPosX;
00339 FBPropertyAnimatableDouble MagnifierPosY;
00340
00341
00342 FBPropertyModel Interest;
00343 FBPropertyAnimatableDouble Roll;
00344 FBPropertyAnimatableDouble TurnTable;
00345 FBPropertyBool DisplayTurnTableIcon;
00346
00347
00348 FBPropertyAnimatableDouble MotionBlurIntensity;
00349 FBPropertyBool UseMotionBlur;
00350 FBPropertyBool UseRealTimeMotionBlur;
00351
00352
00353 FBPropertyInt CameraViewportX;
00354 FBPropertyInt CameraViewportY;
00355 FBPropertyInt CameraViewportWidth;
00356 FBPropertyInt CameraViewportHeight;
00357
00358 #ifndef K_NO_HUD
00359 FBPropertyListHUD HUDs;
00360 #endif
00361
00367 K_DEPRECATED_2014 double* GetMatrix( FBCameraMatrixType pType );
00368
00374 void GetCameraMatrix( FBMatrix& pMatrix, FBCameraMatrixType pType, FBEvaluateInfo* pEvalInfo = NULL );
00375
00383 FBVector4d InverseProjection( int pX, int pY, double pDistanceFromCamera, bool pRelativeToViewport = false );
00384 };
00385
00387
00389 __FB_FORWARD( FBCameraStereo );
00390
00392
00393 enum FBCameraStereoType
00394 {
00395 kFBCameraStereoNone,
00396 kFBCameraStereoConverged,
00397 kFBCameraStereoOff_Axis,
00398 kFBCameraStereoParallel
00399 };
00400
00401 FB_DEFINE_ENUM( FBSDK_DLL, CameraStereoType);
00402
00403 class FBSDK_DLL FBCameraStereo : public FBCamera
00404 {
00405 __FBClassDeclare(FBCameraStereo, FBCamera);
00406 public:
00411 FBCameraStereo(const char * pName, HIObject pObject=NULL);
00412
00413 FBPropertyCameraStereoType Stereo;
00414 FBPropertyAnimatableDouble InteraxialSeparation;
00415 FBPropertyAnimatableDouble ZeroParallax;
00416 FBPropertyAnimatableDouble ToeInAdjust;
00417 FBPropertyAnimatableDouble FilmOffsetRightCam;
00418 FBPropertyAnimatableDouble FilmOffsetLeftCam;
00419
00420 FBPropertyCamera RightCamera;
00421 FBPropertyCamera LeftCamera;
00422 FBPropertyCamera CenterCamera;
00423
00424 FBPropertyString PrecompFileName;
00425 FBPropertyString RelativePrecompFileName;
00426
00427 FBPropertyBool DisplayZeroParallaxPlane;
00428 FBPropertyDouble ZeroParallaxPlaneTransparency;
00429 FBPropertyColor ZeroParallaxPlaneColor;
00430 };
00431
00433
00436 class FBSDK_DLL FBPropertyListCamera : public FBPropertyListComponent
00437 {
00438 public:
00439 FBPropertyListCamera();
00444 FBCamera* operator[](int pIndex);
00445 };
00446
00448
00450 __FB_FORWARD( FBCameraSwitcher );
00451
00457 class FBSDK_DLL FBCameraSwitcher : public FBModel
00458 {
00459 __FBClassDeclare( FBCameraSwitcher, FBBox );
00460 public:
00463 FBCameraSwitcher();
00464
00465 FBPropertyCamera CurrentCamera;
00466 FBPropertyInt CurrentCameraIndex;
00467 };
00468
00469
00470 #ifdef FBSDKUseNamespace
00471 }
00472 #endif
00473 #endif