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
00065 class KFBX_DLL KFbxCamera : public KFbxNodeAttribute
00066 {
00067 KFBXOBJECT_DECLARE(KFbxCamera,KFbxNodeAttribute);
00068
00069 public:
00071 virtual EAttributeType GetAttributeType() const;
00072
00074 void Reset();
00075
00089 typedef enum
00090 {
00091 ePERSPECTIVE,
00092 eORTHOGONAL
00093 } ECameraProjectionType;
00094
00095
00100
00114 typedef enum
00115 {
00116 eCUSTOM_FORMAT,
00117 eD1_NTSC,
00118 eNTSC,
00119 ePAL,
00120 eD1_PAL,
00121 eHD,
00122 e640x480,
00123 e320x200,
00124 e320x240,
00125 e128x128,
00126 eFULL_SCREEN
00127 } ECameraFormat;
00128
00135 void SetFormat(ECameraFormat pFormat);
00136
00140 ECameraFormat GetFormat() const;
00141
00149 typedef enum
00150 {
00151 eWINDOW_SIZE,
00152 eFIXED_RATIO,
00153 eFIXED_RESOLUTION,
00154 eFIXED_WIDTH,
00155 eFIXED_HEIGHT
00156 } ECameraAspectRatioMode;
00157
00169 void SetAspect(ECameraAspectRatioMode pRatioMode, double pWidth, double pHeight);
00170
00174 ECameraAspectRatioMode GetAspectRatioMode() const;
00175
00181 void SetPixelRatio(double pRatio);
00182
00186 double GetPixelRatio() const;
00187
00195 void SetNearPlane(double pDistance);
00196
00202 double GetNearPlane() const;
00203
00211 void SetFarPlane(double pDistance);
00212
00218 double GetFarPlane() const;
00219
00221
00231
00246 typedef enum
00247 {
00248 eCUSTOM_APERTURE_FORMAT = 0,
00249 e16MM_THEATRICAL,
00250 eSUPER_16MM,
00251 e35MM_ACADEMY,
00252 e35MM_TV_PROJECTION,
00253 e35MM_FULL_APERTURE,
00254 e35MM_185_PROJECTION,
00255 e35MM_ANAMORPHIC,
00256 e70MM_PROJECTION,
00257 eVISTAVISION,
00258 eDYNAVISION,
00259 eIMAX
00260 } ECameraApertureFormat;
00261
00266 void SetApertureFormat(ECameraApertureFormat pFormat);
00267
00271 ECameraApertureFormat GetApertureFormat() const;
00272
00281 typedef enum
00282 {
00283 eHORIZONTAL_AND_VERTICAL,
00284 eHORIZONTAL,
00285 eVERTICAL,
00286 eFOCAL_LENGTH
00287 } ECameraApertureMode;
00288
00292 void SetApertureMode(ECameraApertureMode pMode);
00293
00297 ECameraApertureMode GetApertureMode() const;
00298
00304 void SetApertureWidth(double pWidth);
00305
00309 double GetApertureWidth() const;
00310
00316 void SetApertureHeight(double pHeight);
00317
00321 double GetApertureHeight() const;
00322
00328 void SetSqueezeRatio(double pRatio);
00329
00333 double GetSqueezeRatio() const;
00334
00344 typedef enum
00345 {
00346 eNO_FIT,
00347 eVERTICAL_FIT,
00348 eHORIZONTAL_FIT,
00349 eFILL_FIT,
00350 eOVERSCAN_FIT,
00351 eSTRETCH_FIT
00352 } ECameraGateFit;
00353
00358 double ComputeFieldOfView(double pFocalLength) const;
00359
00364 double ComputeFocalLength(double pAngleOfView) const;
00365
00371 typedef enum
00372 {
00373 eROTATE_TRANSLATE,
00374 eTRANSLATE_ROTATE
00375 } ECameraFilmRollOrder;
00376
00378
00394
00401 void SetBackgroundFileName(const char* pFileName);
00402
00408 char const* GetBackgroundFileName() const;
00409
00416 void SetBackgroundMediaName(const char* pFileName);
00417
00423 char const* GetBackgroundMediaName() const;
00424
00431 void SetForegroundFileName(const char* pFileName);
00432
00438 char const* GetForegroundFileName() const;
00439
00446 void SetForegroundMediaName(const char* pFileName);
00447
00453 char const* GetForegroundMediaName() const;
00454
00455
00461 typedef enum
00462 {
00463 eBACKGROUND,
00464 eFOREGROUND,
00465 eBACKGROUND_AND_FOREGROUND
00466 } ECameraPlateDrawingMode;
00467
00473 void SetBackgroundAlphaTreshold(double pThreshold);
00474
00480 double GetBackgroundAlphaTreshold() const;
00481
00482
00486 void SetFitImage(bool pFitImage);
00487
00491 bool GetFitImage() const;
00492
00496 void SetCrop(bool pCrop);
00497
00501 bool GetCrop() const;
00502
00506 void SetCenter(bool pCenter);
00507
00511 bool GetCenter() const;
00512
00516 void SetKeepRatio(bool pKeepRatio);
00517
00521 bool GetKeepRatio() const;
00522
00523
00529 void SetShowFrontPlate(bool pEnable);
00530
00536 bool GetShowFrontPlate() const;
00537
00541 void SetFrontPlateFitImage(bool pFrontPlateFitImage);
00542
00546 bool GetFrontPlateFitImage() const;
00547
00551 void SetFrontPlateCrop(bool pFrontPlateCrop);
00552
00556 bool GetFrontPlateCrop() const;
00557
00561 void SetFrontPlateCenter(bool pFrontPlateCenter);
00562
00566 bool GetFrontPlateCenter() const;
00567
00571 void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio);
00572
00576 bool GetFrontPlateKeepRatio() const;
00577
00581 void SetForegroundOpacity(double pOpacity);
00582
00586 double GetForegroundOpacity() const;
00587
00591 void SetForegroundTexture(KFbxTexture* pTexture);
00592
00596 KFbxTexture* GetForegroundTexture() const;
00597
00598
00603 typedef enum
00604 {
00605 eRELATIVE_TO_INTEREST,
00606 eRELATIVE_TO_CAMERA
00607 } ECameraFrontBackPlaneDistanceMode;
00608
00612 void SetBackPlaneDistanceMode(ECameraFrontBackPlaneDistanceMode pMode);
00613
00617 ECameraFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const;
00618
00625 void SetFrontPlaneDistance(double pDistance);
00626
00630 double GetFrontPlaneDistance() const;
00631
00635 void SetFrontPlaneDistanceMode(ECameraFrontBackPlaneDistanceMode pMode);
00636
00640 ECameraFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const;
00641
00647 typedef enum
00648 {
00649 eDISABLED,
00650 eALWAYS,
00651 eWHEN_MEDIA
00652 } ECameraFrontBackPlaneDisplayMode;
00653
00659 void SetViewFrustumFrontPlaneMode(ECameraFrontBackPlaneDisplayMode pMode);
00660
00664 ECameraFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const;
00665
00671 void SetViewFrustumBackPlaneMode(ECameraFrontBackPlaneDisplayMode pMode);
00672
00676 ECameraFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const;
00677
00679
00686
00690 void SetViewCameraInterest(bool pEnable);
00691
00695 bool GetViewCameraInterest() const;
00696
00700 void SetViewNearFarPlanes(bool pEnable);
00701
00705 bool GetViewNearFarPlanes() const;
00706
00711 typedef enum
00712 {
00713 eROUND = 0,
00714 eSQUARE = 1
00715 } ECameraSafeAreaStyle;
00716
00718
00725
00730 typedef enum
00731 {
00732 eINTERACTIVE,
00733 eAT_RENDER
00734 } ECameraRenderOptionsUsageTime;
00735
00740 typedef enum
00741 {
00742 eOVERSAMPLING_ANTIALIASING,
00743 eHARDWARE_ANTIALIASING
00744 } ECameraAntialiasingMethod;
00745
00750 typedef enum
00751 {
00752 eUNIFORM,
00753 eSTOCHASTIC
00754 } ECameraSamplingType;
00755
00760 typedef enum
00761 {
00762 eCAMERA_INTEREST,
00763 eSPECIFIC_DISTANCE
00764 } ECameraFocusDistanceSource;
00765
00767
00772
00782 bool IsBoundingBoxInView( const KFbxMatrix& pWorldToScreen,
00783 const KFbxMatrix& pWorldToCamera,
00784 const KFbxVector4 pPoints[8] ) const;
00785
00794 bool IsPointInView( const KFbxMatrix& pWorldToScreen, const KFbxMatrix& pWorldToCamera, const KFbxVector4& pPoint ) const;
00795
00802 KFbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const KFbxXMatrix& pWorldToCamera) const;
00803
00814 KFbxMatrix ComputePerspective( int pPixelWidth, int pPixelHeight, bool pIncludePostPerspective ) const;
00815
00817
00819
00820
00821
00823
00824
00825
00826
00827
00835 KFbxTypedProperty<fbxDouble3> Position;
00836
00844 KFbxTypedProperty<fbxDouble3> UpVector;
00845
00857 KFbxTypedProperty<fbxDouble3> InterestPosition;
00858
00866 KFbxTypedProperty<fbxDouble1> Roll;
00867
00878 KFbxTypedProperty<fbxDouble1> OpticalCenterX;
00879
00890 KFbxTypedProperty<fbxDouble1> OpticalCenterY;
00891
00899 KFbxTypedProperty<fbxDouble3> BackgroundColor;
00900
00908 KFbxTypedProperty<fbxDouble1> TurnTable;
00909
00918 KFbxTypedProperty<fbxBool1> DisplayTurnTableIcon;
00919
00920
00921
00922
00923
00932 KFbxTypedProperty<fbxBool1> UseMotionBlur;
00933
00942 KFbxTypedProperty<fbxBool1> UseRealTimeMotionBlur;
00943
00951 KFbxTypedProperty<fbxDouble1> MotionBlurIntensity;
00952
00953
00954
00955
00956
00965 KFbxTypedProperty<ECameraAspectRatioMode> AspectRatioMode;
00966
00974 KFbxTypedProperty<fbxDouble1> AspectWidth;
00975
00983 KFbxTypedProperty<fbxDouble1> AspectHeight;
00984
00992 KFbxTypedProperty<fbxDouble1> PixelAspectRatio;
00993
00998 KFbxTypedProperty<ECameraApertureMode> ApertureMode;
00999
01007 KFbxTypedProperty<ECameraGateFit> GateFit;
01008
01020 KFbxTypedProperty<fbxDouble1> FieldOfView;
01021
01022
01034 KFbxTypedProperty<fbxDouble1> FieldOfViewX;
01035
01047 KFbxTypedProperty<fbxDouble1> FieldOfViewY;
01048
01056 KFbxTypedProperty<fbxDouble1> FocalLength;
01057
01067 KFbxTypedProperty<ECameraFormat> CameraFormat;
01068
01069
01070
01071
01072
01081 KFbxTypedProperty<fbxBool1> UseFrameColor;
01082
01090 KFbxTypedProperty<fbxDouble3> FrameColor;
01091
01092
01093
01094
01095
01103 KFbxTypedProperty<fbxBool1> ShowName;
01104
01112 KFbxTypedProperty<fbxBool1> ShowInfoOnMoving;
01113
01121 KFbxTypedProperty<fbxBool1> ShowGrid;
01122
01130 KFbxTypedProperty<fbxBool1> ShowOpticalCenter;
01131
01139 KFbxTypedProperty<fbxBool1> ShowAzimut;
01140
01148 KFbxTypedProperty<fbxBool1> ShowTimeCode;
01149
01157 KFbxTypedProperty<fbxBool1> ShowAudio;
01158
01166 KFbxTypedProperty<fbxDouble3> AudioColor;
01167
01168
01169
01170
01171
01179 KFbxTypedProperty<fbxDouble1> NearPlane;
01180
01188 KFbxTypedProperty<fbxDouble1> FarPlane;
01189
01190
01199 KFbxTypedProperty<fbxBool1> AutoComputeClipPlanes;
01200
01201
01202
01203
01204
01205
01214 KFbxTypedProperty<fbxDouble1> FilmWidth;
01215
01224 KFbxTypedProperty<fbxDouble1> FilmHeight;
01225
01233 KFbxTypedProperty<fbxDouble1> FilmAspectRatio;
01234
01243 KFbxTypedProperty<fbxDouble1> FilmSqueezeRatio;
01244
01252 KFbxTypedProperty<ECameraApertureFormat> FilmFormat;
01253
01262 KFbxTypedProperty<fbxDouble1> FilmOffsetX;
01263
01272 KFbxTypedProperty<fbxDouble1> FilmOffsetY;
01273
01281 KFbxTypedProperty<fbxDouble1> PreScale;
01282
01288 KFbxTypedProperty<fbxDouble1> FilmTranslateX;
01289
01295 KFbxTypedProperty<fbxDouble1> FilmTranslateY;
01296
01303 KFbxTypedProperty<fbxDouble1> FilmRollPivotX;
01304
01311 KFbxTypedProperty<fbxDouble1> FilmRollPivotY;
01312
01321 KFbxTypedProperty<fbxDouble1> FilmRollValue;
01322
01330 KFbxTypedProperty<ECameraFilmRollOrder> FilmRollOrder ;
01331
01332
01333
01334
01335
01343 KFbxTypedProperty<fbxBool1> ViewCameraToLookAt;
01344
01352 KFbxTypedProperty<fbxBool1> ViewFrustumNearFarPlane;
01353
01361 KFbxTypedProperty<ECameraFrontBackPlaneDisplayMode> ViewFrustumBackPlaneMode;
01362
01370 KFbxTypedProperty<fbxDouble1> BackPlaneDistance;
01371
01379 KFbxTypedProperty<ECameraFrontBackPlaneDistanceMode> BackPlaneDistanceMode;
01380
01388 KFbxTypedProperty<ECameraFrontBackPlaneDisplayMode> ViewFrustumFrontPlaneMode;
01389
01397 KFbxTypedProperty<fbxDouble1> FrontPlaneDistance;
01398
01406 KFbxTypedProperty<ECameraFrontBackPlaneDistanceMode> FrontPlaneDistanceMode;
01407
01408
01409
01410
01411
01419 KFbxTypedProperty<fbxBool1> LockMode;
01420
01428 KFbxTypedProperty<fbxBool1> LockInterestNavigation;
01429
01430
01431
01432
01433
01441 KFbxTypedProperty<fbxBool1> FitImage;
01442
01450 KFbxTypedProperty<fbxBool1> Crop;
01451
01459 KFbxTypedProperty<fbxBool1> Center;
01460
01468 KFbxTypedProperty<fbxBool1> KeepRatio;
01469
01477 KFbxTypedProperty<fbxDouble1> BackgroundAlphaTreshold;
01478
01486 KFbxTypedProperty<fbxDouble1> BackPlaneOffsetX;
01487
01495 KFbxTypedProperty<fbxDouble1> BackPlaneOffsetY;
01496
01504 KFbxTypedProperty<fbxDouble1> BackPlaneRotation;
01505
01515 KFbxTypedProperty<fbxDouble1> BackPlaneScaleX;
01516
01526 KFbxTypedProperty<fbxDouble1> BackPlaneScaleY;
01527
01536 KFbxTypedProperty<fbxBool1> ShowBackplate;
01537
01545 KFbxTypedProperty<fbxReference> BackgroundTexture;
01546
01547
01548
01549
01550
01551
01559 KFbxTypedProperty<fbxBool1> FrontPlateFitImage;
01560
01568 KFbxTypedProperty<fbxBool1> FrontPlateCrop;
01569
01577 KFbxTypedProperty<fbxBool1> FrontPlateCenter;
01578
01586 KFbxTypedProperty<fbxBool1> FrontPlateKeepRatio;
01587
01588
01597 KFbxTypedProperty<fbxBool1> ShowFrontplate;
01598
01606 KFbxTypedProperty<fbxDouble1> FrontPlaneOffsetX;
01607
01615 KFbxTypedProperty<fbxDouble1> FrontPlaneOffsetY;
01616
01624 KFbxTypedProperty<fbxDouble1> FrontPlaneRotation;
01625
01633 KFbxTypedProperty<fbxDouble1> FrontPlaneScaleX;
01634
01642 KFbxTypedProperty<fbxDouble1> FrontPlaneScaleY;
01643
01651 KFbxTypedProperty<fbxReference> ForegroundTexture;
01652
01660 KFbxTypedProperty<fbxDouble1> ForegroundOpacity;
01661
01662
01663
01664
01665
01673 KFbxTypedProperty<fbxBool1> DisplaySafeArea;
01674
01682 KFbxTypedProperty<fbxBool1> DisplaySafeAreaOnRender;
01683
01691 KFbxTypedProperty<ECameraSafeAreaStyle> SafeAreaDisplayStyle;
01692
01700 KFbxTypedProperty<fbxDouble1> SafeAreaAspectRatio;
01701
01702
01703
01704
01705
01713 KFbxTypedProperty<fbxBool1> Use2DMagnifierZoom;
01714
01722 KFbxTypedProperty<fbxDouble1> _2DMagnifierZoom;
01723
01731 KFbxTypedProperty<fbxDouble1> _2DMagnifierX;
01732
01740 KFbxTypedProperty<fbxDouble1> _2DMagnifierY;
01741
01742
01743
01744
01745
01753 KFbxTypedProperty<ECameraProjectionType> ProjectionType;
01754
01762 KFbxTypedProperty<fbxDouble1> OrthoZoom;
01763
01764
01765
01766
01767
01775 KFbxTypedProperty<fbxBool1> UseRealTimeDOFAndAA;
01776
01784 KFbxTypedProperty<fbxBool1> UseDepthOfField;
01785
01793 KFbxTypedProperty<ECameraFocusDistanceSource> FocusSource;
01794
01802 KFbxTypedProperty<fbxDouble1> FocusAngle;
01803
01811 KFbxTypedProperty<fbxDouble1> FocusDistance;
01812
01820 KFbxTypedProperty<fbxBool1> UseAntialiasing;
01821
01829 KFbxTypedProperty<fbxDouble1> AntialiasingIntensity;
01830
01838 KFbxTypedProperty<ECameraAntialiasingMethod> AntialiasingMethod;
01839
01840
01841
01842
01843
01851 KFbxTypedProperty<fbxBool1> UseAccumulationBuffer;
01852
01860 KFbxTypedProperty<fbxInteger1> FrameSamplingCount;
01861
01869 KFbxTypedProperty<ECameraSamplingType> FrameSamplingType;
01870
01872
01873
01874
01875
01876
01877
01879 #ifndef DOXYGEN_SHOULD_SKIP_THIS
01880
01881 friend class KFbxGlobalCameraSettings;
01882
01883 virtual KFbxObject& Copy(const KFbxObject& pObject);
01884 virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
01885
01886 protected:
01887 KFbxCamera(KFbxSdkManager& pManager, char const* pName);
01888
01889 virtual bool ConstructProperties(bool pForceSet);
01890
01894 virtual KString GetTypeName() const;
01895 virtual KStringList GetTypeFlags() const;
01896
01897 private:
01898 double ComputePixelRatio(kUInt pWidth, kUInt pHeight, double pScreenRatio = 1.3333333333);
01899
01900
01901 KString mBackgroundMediaName;
01902 KString mBackgroundFileName;
01903
01904
01905 KString mForegroundMediaName;
01906 KString mForegroundFileName;
01907
01908 friend class KFbxNode;
01909
01910 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
01911
01912 };
01913
01914 #define ImageFit
01915
01916 typedef KFbxCamera* HKFbxCamera;
01917
01918 inline EFbxType FbxTypeOf( KFbxCamera::ECameraAntialiasingMethod const &pItem ) { return eENUM; }
01919 inline EFbxType FbxTypeOf( KFbxCamera::ECameraApertureFormat const &pItem ) { return eENUM; }
01920 inline EFbxType FbxTypeOf( KFbxCamera::ECameraApertureMode const &pItem ) { return eENUM; }
01921 inline EFbxType FbxTypeOf( KFbxCamera::ECameraAspectRatioMode const &pItem ) { return eENUM; }
01922 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFrontBackPlaneDisplayMode const &pItem ) { return eENUM; }
01923 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFrontBackPlaneDistanceMode const &pItem ) { return eENUM; }
01924 inline EFbxType FbxTypeOf( KFbxCamera::ECameraPlateDrawingMode const &pItem ) { return eENUM; }
01925 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFocusDistanceSource const &pItem ) { return eENUM; }
01926 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFormat const &pItem ) { return eENUM; }
01927 inline EFbxType FbxTypeOf( KFbxCamera::ECameraGateFit const &pItem ) { return eENUM; }
01928 inline EFbxType FbxTypeOf( KFbxCamera::ECameraProjectionType const &pItem ) { return eENUM; }
01929 inline EFbxType FbxTypeOf( KFbxCamera::ECameraRenderOptionsUsageTime const &pItem ) { return eENUM; }
01930 inline EFbxType FbxTypeOf( KFbxCamera::ECameraSafeAreaStyle const &pItem ) { return eENUM; }
01931 inline EFbxType FbxTypeOf( KFbxCamera::ECameraSamplingType const &pItem ) { return eENUM; }
01932 inline EFbxType FbxTypeOf( KFbxCamera::ECameraFilmRollOrder const &pItem ) { return eENUM; }
01933
01934 #include <fbxfilesdk/fbxfilesdk_nsend.h>
01935
01936 #endif // FBXFILESDK_KFBXPLUGINS_KFBXCAMERA_H
01937