00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXCAMERA_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXCAMERA_H
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
00039
00040
00041 #include <fbxfilesdk/fbxfilesdk_def.h>
00042
00043 #include <fbxfilesdk/kfbxplugins/kfbxnodeattribute.h>
00044 #include <fbxfilesdk/kfbxplugins/kfbxcolor.h>
00045
00046 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00047
00048 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00049
00050 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00051
00052 class KFbxTexture;
00053 class KFbxSdkManager;
00054 class KFbxMatrix;
00055 class KFbxXMatrix;
00056 class KTime;
00057
00066 class KFBX_DLL KFbxCamera : public KFbxNodeAttribute
00067 {
00068 KFBXOBJECT_DECLARE(KFbxCamera,KFbxNodeAttribute);
00069
00070 public:
00072 virtual EAttributeType GetAttributeType() const;
00073
00075 void Reset();
00076
00090 typedef enum
00091 {
00092 ePERSPECTIVE,
00093 eORTHOGONAL
00094 } ECameraProjectionType;
00095
00096
00101
00115 typedef enum
00116 {
00117 eCUSTOM_FORMAT,
00118 eD1_NTSC,
00119 eNTSC,
00120 ePAL,
00121 eD1_PAL,
00122 eHD,
00123 e640x480,
00124 e320x200,
00125 e320x240,
00126 e128x128,
00127 eFULL_SCREEN
00128 } ECameraFormat;
00129
00136 void SetFormat(ECameraFormat pFormat);
00137
00141 ECameraFormat GetFormat() const;
00142
00150 typedef enum
00151 {
00152 eWINDOW_SIZE,
00153 eFIXED_RATIO,
00154 eFIXED_RESOLUTION,
00155 eFIXED_WIDTH,
00156 eFIXED_HEIGHT
00157 } ECameraAspectRatioMode;
00158
00170 void SetAspect(ECameraAspectRatioMode pRatioMode, double pWidth, double pHeight);
00171
00175 ECameraAspectRatioMode GetAspectRatioMode() const;
00176
00182 void SetPixelRatio(double pRatio);
00183
00187 double GetPixelRatio() const;
00188
00196 void SetNearPlane(double pDistance);
00197
00203 double GetNearPlane() const;
00204
00212 void SetFarPlane(double pDistance);
00213
00219 double GetFarPlane() const;
00220
00222
00232
00247 typedef enum
00248 {
00249 eCUSTOM_APERTURE_FORMAT = 0,
00250 e16MM_THEATRICAL,
00251 eSUPER_16MM,
00252 e35MM_ACADEMY,
00253 e35MM_TV_PROJECTION,
00254 e35MM_FULL_APERTURE,
00255 e35MM_185_PROJECTION,
00256 e35MM_ANAMORPHIC,
00257 e70MM_PROJECTION,
00258 eVISTAVISION,
00259 eDYNAVISION,
00260 eIMAX
00261 } ECameraApertureFormat;
00262
00267 void SetApertureFormat(ECameraApertureFormat pFormat);
00268
00272 ECameraApertureFormat GetApertureFormat() const;
00273
00282 typedef enum
00283 {
00284 eHORIZONTAL_AND_VERTICAL,
00285 eHORIZONTAL,
00286 eVERTICAL,
00287 eFOCAL_LENGTH
00288 } ECameraApertureMode;
00289
00293 void SetApertureMode(ECameraApertureMode pMode);
00294
00298 ECameraApertureMode GetApertureMode() const;
00299
00305 void SetApertureWidth(double pWidth);
00306
00310 double GetApertureWidth() const;
00311
00317 void SetApertureHeight(double pHeight);
00318
00322 double GetApertureHeight() const;
00323
00329 void SetSqueezeRatio(double pRatio);
00330
00334 double GetSqueezeRatio() const;
00335
00345 typedef enum
00346 {
00347 eNO_FIT,
00348 eVERTICAL_FIT,
00349 eHORIZONTAL_FIT,
00350 eFILL_FIT,
00351 eOVERSCAN_FIT,
00352 eSTRETCH_FIT
00353 } ECameraGateFit;
00354
00359 double ComputeFieldOfView(double pFocalLength) const;
00360
00365 double ComputeFocalLength(double pAngleOfView) const;
00366
00372 typedef enum
00373 {
00374 eROTATE_TRANSLATE,
00375 eTRANSLATE_ROTATE
00376 } ECameraFilmRollOrder;
00377
00379
00395
00402 void SetBackgroundFileName(const char* pFileName);
00403
00409 char const* GetBackgroundFileName() const;
00410
00417 void SetBackgroundMediaName(const char* pFileName);
00418
00424 char const* GetBackgroundMediaName() const;
00425
00432 void SetForegroundFileName(const char* pFileName);
00433
00439 char const* GetForegroundFileName() const;
00440
00447 void SetForegroundMediaName(const char* pFileName);
00448
00454 char const* GetForegroundMediaName() const;
00455
00456
00462 typedef enum
00463 {
00464 eBACKGROUND,
00465 eFOREGROUND,
00466 eBACKGROUND_AND_FOREGROUND
00467 } ECameraPlateDrawingMode;
00468
00474 void SetBackgroundAlphaTreshold(double pThreshold);
00475
00481 double GetBackgroundAlphaTreshold() const;
00482
00483
00487 void SetFitImage(bool pFitImage);
00488
00492 bool GetFitImage() const;
00493
00497 void SetCrop(bool pCrop);
00498
00502 bool GetCrop() const;
00503
00507 void SetCenter(bool pCenter);
00508
00512 bool GetCenter() const;
00513
00517 void SetKeepRatio(bool pKeepRatio);
00518
00522 bool GetKeepRatio() const;
00523
00524
00530 void SetShowFrontPlate(bool pEnable);
00531
00537 bool GetShowFrontPlate() const;
00538
00542 void SetFrontPlateFitImage(bool pFrontPlateFitImage);
00543
00547 bool GetFrontPlateFitImage() const;
00548
00552 void SetFrontPlateCrop(bool pFrontPlateCrop);
00553
00557 bool GetFrontPlateCrop() const;
00558
00562 void SetFrontPlateCenter(bool pFrontPlateCenter);
00563
00567 bool GetFrontPlateCenter() const;
00568
00572 void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio);
00573
00577 bool GetFrontPlateKeepRatio() const;
00578
00582 void SetForegroundOpacity(double pOpacity);
00583
00587 double GetForegroundOpacity() const;
00588
00592 void SetForegroundTexture(KFbxTexture* pTexture);
00593
00597 KFbxTexture* GetForegroundTexture() const;
00598
00599
00604 typedef enum
00605 {
00606 eRELATIVE_TO_INTEREST,
00607 eRELATIVE_TO_CAMERA
00608 } ECameraFrontBackPlaneDistanceMode;
00609
00613 void SetBackPlaneDistanceMode(ECameraFrontBackPlaneDistanceMode pMode);
00614
00618 ECameraFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const;
00619
00626 void SetFrontPlaneDistance(double pDistance);
00627
00631 double GetFrontPlaneDistance() const;
00632
00636 void SetFrontPlaneDistanceMode(ECameraFrontBackPlaneDistanceMode pMode);
00637
00641 ECameraFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const;
00642
00648 typedef enum
00649 {
00650 eDISABLED,
00651 eALWAYS,
00652 eWHEN_MEDIA
00653 } ECameraFrontBackPlaneDisplayMode;
00654
00660 void SetViewFrustumFrontPlaneMode(ECameraFrontBackPlaneDisplayMode pMode);
00661
00665 ECameraFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const;
00666
00672 void SetViewFrustumBackPlaneMode(ECameraFrontBackPlaneDisplayMode pMode);
00673
00677 ECameraFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const;
00678
00680
00687
00691 void SetViewCameraInterest(bool pEnable);
00692
00696 bool GetViewCameraInterest() const;
00697
00701 void SetViewNearFarPlanes(bool pEnable);
00702
00706 bool GetViewNearFarPlanes() const;
00707
00712 typedef enum
00713 {
00714 eROUND = 0,
00715 eSQUARE = 1
00716 } ECameraSafeAreaStyle;
00717
00719
00726
00731 typedef enum
00732 {
00733 eINTERACTIVE,
00734 eAT_RENDER
00735 } ECameraRenderOptionsUsageTime;
00736
00741 typedef enum
00742 {
00743 eOVERSAMPLING_ANTIALIASING,
00744 eHARDWARE_ANTIALIASING
00745 } ECameraAntialiasingMethod;
00746
00751 typedef enum
00752 {
00753 eUNIFORM,
00754 eSTOCHASTIC
00755 } ECameraSamplingType;
00756
00761 typedef enum
00762 {
00763 eCAMERA_INTEREST,
00764 eSPECIFIC_DISTANCE
00765 } ECameraFocusDistanceSource;
00766
00768
00773
00783 bool IsBoundingBoxInView( const KFbxMatrix& pWorldToScreen,
00784 const KFbxMatrix& pWorldToCamera,
00785 const KFbxVector4 pPoints[8] ) const;
00786
00795 bool IsPointInView( const KFbxMatrix& pWorldToScreen, const KFbxMatrix& pWorldToCamera, const KFbxVector4& pPoint ) const;
00796
00803 KFbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const KFbxXMatrix& pWorldToCamera) const;
00804
00815 KFbxMatrix ComputePerspective( int pPixelWidth, int pPixelHeight, bool pIncludePostPerspective ) const;
00816
00818
00820
00821
00822
00824
00825
00826
00827
00828
00836 KFbxTypedProperty<fbxDouble3> Position;
00837
00845 KFbxTypedProperty<fbxDouble3> UpVector;
00846
00858 KFbxTypedProperty<fbxDouble3> InterestPosition;
00859
00867 KFbxTypedProperty<fbxDouble1> Roll;
00868
00879 KFbxTypedProperty<fbxDouble1> OpticalCenterX;
00880
00891 KFbxTypedProperty<fbxDouble1> OpticalCenterY;
00892
00900 KFbxTypedProperty<fbxDouble3> BackgroundColor;
00901
00909 KFbxTypedProperty<fbxDouble1> TurnTable;
00910
00919 KFbxTypedProperty<fbxBool1> DisplayTurnTableIcon;
00920
00921
00922
00923
00924
00933 KFbxTypedProperty<fbxBool1> UseMotionBlur;
00934
00943 KFbxTypedProperty<fbxBool1> UseRealTimeMotionBlur;
00944
00952 KFbxTypedProperty<fbxDouble1> MotionBlurIntensity;
00953
00954
00955
00956
00957
00966 KFbxTypedProperty<ECameraAspectRatioMode> AspectRatioMode;
00967
00975 KFbxTypedProperty<fbxDouble1> AspectWidth;
00976
00984 KFbxTypedProperty<fbxDouble1> AspectHeight;
00985
00993 KFbxTypedProperty<fbxDouble1> PixelAspectRatio;
00994
00999 KFbxTypedProperty<ECameraApertureMode> ApertureMode;
01000
01008 KFbxTypedProperty<ECameraGateFit> GateFit;
01009
01021 KFbxTypedProperty<fbxDouble1> FieldOfView;
01022
01023
01035 KFbxTypedProperty<fbxDouble1> FieldOfViewX;
01036
01048 KFbxTypedProperty<fbxDouble1> FieldOfViewY;
01049
01057 KFbxTypedProperty<fbxDouble1> FocalLength;
01058
01068 KFbxTypedProperty<ECameraFormat> CameraFormat;
01069
01070
01071
01072
01073
01082 KFbxTypedProperty<fbxBool1> UseFrameColor;
01083
01091 KFbxTypedProperty<fbxDouble3> FrameColor;
01092
01093
01094
01095
01096
01104 KFbxTypedProperty<fbxBool1> ShowName;
01105
01113 KFbxTypedProperty<fbxBool1> ShowInfoOnMoving;
01114
01122 KFbxTypedProperty<fbxBool1> ShowGrid;
01123
01131 KFbxTypedProperty<fbxBool1> ShowOpticalCenter;
01132
01140 KFbxTypedProperty<fbxBool1> ShowAzimut;
01141
01149 KFbxTypedProperty<fbxBool1> ShowTimeCode;
01150
01158 KFbxTypedProperty<fbxBool1> ShowAudio;
01159
01167 KFbxTypedProperty<fbxDouble3> AudioColor;
01168
01169
01170
01171
01172
01180 KFbxTypedProperty<fbxDouble1> NearPlane;
01181
01189 KFbxTypedProperty<fbxDouble1> FarPlane;
01190
01191
01200 KFbxTypedProperty<fbxBool1> AutoComputeClipPlanes;
01201
01202
01203
01204
01205
01206
01215 KFbxTypedProperty<fbxDouble1> FilmWidth;
01216
01225 KFbxTypedProperty<fbxDouble1> FilmHeight;
01226
01234 KFbxTypedProperty<fbxDouble1> FilmAspectRatio;
01235
01244 KFbxTypedProperty<fbxDouble1> FilmSqueezeRatio;
01245
01253 KFbxTypedProperty<ECameraApertureFormat> FilmFormat;
01254
01263 KFbxTypedProperty<fbxDouble1> FilmOffsetX;
01264
01273 KFbxTypedProperty<fbxDouble1> FilmOffsetY;
01274
01282 KFbxTypedProperty<fbxDouble1> PreScale;
01283
01289 KFbxTypedProperty<fbxDouble1> FilmTranslateX;
01290
01296 KFbxTypedProperty<fbxDouble1> FilmTranslateY;
01297
01304 KFbxTypedProperty<fbxDouble1> FilmRollPivotX;
01305
01312 KFbxTypedProperty<fbxDouble1> FilmRollPivotY;
01313
01322 KFbxTypedProperty<fbxDouble1> FilmRollValue;
01323
01331 KFbxTypedProperty<ECameraFilmRollOrder> FilmRollOrder ;
01332
01333
01334
01335
01336
01344 KFbxTypedProperty<fbxBool1> ViewCameraToLookAt;
01345
01353 KFbxTypedProperty<fbxBool1> ViewFrustumNearFarPlane;
01354
01362 KFbxTypedProperty<ECameraFrontBackPlaneDisplayMode> ViewFrustumBackPlaneMode;
01363
01371 KFbxTypedProperty<fbxDouble1> BackPlaneDistance;
01372
01380 KFbxTypedProperty<ECameraFrontBackPlaneDistanceMode> BackPlaneDistanceMode;
01381
01389 KFbxTypedProperty<ECameraFrontBackPlaneDisplayMode> ViewFrustumFrontPlaneMode;
01390
01398 KFbxTypedProperty<fbxDouble1> FrontPlaneDistance;
01399
01407 KFbxTypedProperty<ECameraFrontBackPlaneDistanceMode> FrontPlaneDistanceMode;
01408
01409
01410
01411
01412
01420 KFbxTypedProperty<fbxBool1> LockMode;
01421
01429 KFbxTypedProperty<fbxBool1> LockInterestNavigation;
01430
01431
01432
01433
01434
01442 KFbxTypedProperty<fbxBool1> FitImage;
01443
01451 KFbxTypedProperty<fbxBool1> Crop;
01452
01460 KFbxTypedProperty<fbxBool1> Center;
01461
01469 KFbxTypedProperty<fbxBool1> KeepRatio;
01470
01478 KFbxTypedProperty<fbxDouble1> BackgroundAlphaTreshold;
01479
01487 KFbxTypedProperty<fbxDouble1> BackPlaneOffsetX;
01488
01496 KFbxTypedProperty<fbxDouble1> BackPlaneOffsetY;
01497
01505 KFbxTypedProperty<fbxDouble1> BackPlaneRotation;
01506
01516 KFbxTypedProperty<fbxDouble1> BackPlaneScaleX;
01517
01527 KFbxTypedProperty<fbxDouble1> BackPlaneScaleY;
01528
01537 KFbxTypedProperty<fbxBool1> ShowBackplate;
01538
01546 KFbxTypedProperty<fbxReference> BackgroundTexture;
01547
01548
01549
01550
01551
01552
01560 KFbxTypedProperty<fbxBool1> FrontPlateFitImage;
01561
01569 KFbxTypedProperty<fbxBool1> FrontPlateCrop;
01570
01578 KFbxTypedProperty<fbxBool1> FrontPlateCenter;
01579
01587 KFbxTypedProperty<fbxBool1> FrontPlateKeepRatio;
01588
01589
01598 KFbxTypedProperty<fbxBool1> ShowFrontplate;
01599
01607 KFbxTypedProperty<fbxDouble1> FrontPlaneOffsetX;
01608
01616 KFbxTypedProperty<fbxDouble1> FrontPlaneOffsetY;
01617
01625 KFbxTypedProperty<fbxDouble1> FrontPlaneRotation;
01626
01634 KFbxTypedProperty<fbxDouble1> FrontPlaneScaleX;
01635
01643 KFbxTypedProperty<fbxDouble1> FrontPlaneScaleY;
01644
01652 KFbxTypedProperty<fbxReference> ForegroundTexture;
01653
01661 KFbxTypedProperty<fbxDouble1> ForegroundOpacity;
01662
01663
01664
01665
01666
01674 KFbxTypedProperty<fbxBool1> DisplaySafeArea;
01675
01683 KFbxTypedProperty<fbxBool1> DisplaySafeAreaOnRender;
01684
01692 KFbxTypedProperty<ECameraSafeAreaStyle> SafeAreaDisplayStyle;
01693
01701 KFbxTypedProperty<fbxDouble1> SafeAreaAspectRatio;
01702
01703
01704
01705
01706
01714 KFbxTypedProperty<fbxBool1> Use2DMagnifierZoom;
01715
01723 KFbxTypedProperty<fbxDouble1> _2DMagnifierZoom;
01724
01732 KFbxTypedProperty<fbxDouble1> _2DMagnifierX;
01733
01741 KFbxTypedProperty<fbxDouble1> _2DMagnifierY;
01742
01743
01744
01745
01746
01754 KFbxTypedProperty<ECameraProjectionType> ProjectionType;
01755
01763 KFbxTypedProperty<fbxDouble1> OrthoZoom;
01764
01765
01766
01767
01768
01776 KFbxTypedProperty<fbxBool1> UseRealTimeDOFAndAA;
01777
01785 KFbxTypedProperty<fbxBool1> UseDepthOfField;
01786
01794 KFbxTypedProperty<ECameraFocusDistanceSource> FocusSource;
01795
01803 KFbxTypedProperty<fbxDouble1> FocusAngle;
01804
01812 KFbxTypedProperty<fbxDouble1> FocusDistance;
01813
01821 KFbxTypedProperty<fbxBool1> UseAntialiasing;
01822
01830 KFbxTypedProperty<fbxDouble1> AntialiasingIntensity;
01831
01839 KFbxTypedProperty<ECameraAntialiasingMethod> AntialiasingMethod;
01840
01841
01842
01843
01844
01852 KFbxTypedProperty<fbxBool1> UseAccumulationBuffer;
01853
01861 KFbxTypedProperty<fbxInteger1> FrameSamplingCount;
01862
01870 KFbxTypedProperty<ECameraSamplingType> FrameSamplingType;
01871
01873
01874
01875
01876
01877
01878
01880 #ifndef DOXYGEN_SHOULD_SKIP_THIS
01881 friend class KFbxGlobalCameraSettings;
01882
01883 virtual KFbxObject& Copy(const KFbxObject& pObject);
01884
01885 protected:
01886 KFbxCamera(KFbxSdkManager& pManager, char const* pName);
01887
01888 virtual bool ConstructProperties(bool pForceSet);
01889
01893 virtual KStringList GetTypeFlags() const;
01894
01895 private:
01896 double ComputePixelRatio(kUInt pWidth, kUInt pHeight, double pScreenRatio = 1.3333333333);
01897
01898
01899 KString mBackgroundMediaName;
01900 KString mBackgroundFileName;
01901
01902
01903 KString mForegroundMediaName;
01904 KString mForegroundFileName;
01905
01906 friend class KFbxNode;
01907
01908 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
01909
01910 };
01911
01912 #define ImageFit
01913
01914 typedef KFbxCamera* HKFbxCamera;
01915
01916 inline EFbxType FbxTypeOf( KFbxCamera::ECameraAntialiasingMethod const &pItem ) { return eENUM; }
01917 inline EFbxType FbxTypeOf( KFbxCamera::ECameraApertureFormat const &pItem ) { return eENUM; }
01918 inline EFbxType FbxTypeOf( KFbxCamera::ECameraApertureMode const &pItem ) { return eENUM; }
01919 inline EFbxType FbxTypeOf( KFbxCamera::ECameraAspectRatioMode const &pItem ) { return eENUM; }
01920 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFrontBackPlaneDisplayMode const &pItem ) { return eENUM; }
01921 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFrontBackPlaneDistanceMode const &pItem ) { return eENUM; }
01922 inline EFbxType FbxTypeOf( KFbxCamera::ECameraPlateDrawingMode const &pItem ) { return eENUM; }
01923 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFocusDistanceSource const &pItem ) { return eENUM; }
01924 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFormat const &pItem ) { return eENUM; }
01925 inline EFbxType FbxTypeOf( KFbxCamera::ECameraGateFit const &pItem ) { return eENUM; }
01926 inline EFbxType FbxTypeOf( KFbxCamera::ECameraProjectionType const &pItem ) { return eENUM; }
01927 inline EFbxType FbxTypeOf( KFbxCamera::ECameraRenderOptionsUsageTime const &pItem ) { return eENUM; }
01928 inline EFbxType FbxTypeOf( KFbxCamera::ECameraSafeAreaStyle const &pItem ) { return eENUM; }
01929 inline EFbxType FbxTypeOf( KFbxCamera::ECameraSamplingType const &pItem ) { return eENUM; }
01930 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFilmRollOrder const &pItem ) { return eENUM; }
01931
01932 #include <fbxfilesdk/fbxfilesdk_nsend.h>
01933
01934 #endif // FBXFILESDK_KFBXPLUGINS_KFBXCAMERA_H
01935