fbsdk/fbcamera.h Source File
 
 
 
fbsdk/fbcamera.h
Go to the documentation of this file.
00001 #ifndef __FBCAMERA_H__
00002 #define __FBCAMERA_H__
00003 /**************************************************************************
00004  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005  All Rights Reserved.
00006  
00007  The coded instructions, statements, computer programs, and/or related 
00008  material (collectively the "Data") in these files contain unpublished 
00009  information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010  protected by Canada and United States of America federal copyright law 
00011  and by international treaties.
00012  
00013  The Data may not be disclosed or distributed to third parties, in whole 
00014  or in part, without the prior written consent of Autodesk, Inc. 
00015  ("Autodesk").
00016  
00017  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024  FREE.
00025  
00026  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
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 // FBCamera
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     // Camera Format
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     // Camera Background options
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     // Camera Foreground options
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     // Camera View Options
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     // Camera Render Options
00317         // Rendering Options
00318     FBPropertyBool                       UseAntiAliasing;        
00319     FBPropertyBool                       UseDepthOfField;        
00320     FBPropertyBool                       InteractiveMode;        
00321 
00322         // Anti-aliasing Options
00323     FBPropertyDouble                     AntiAliasingIntensity;    
00324     FBPropertyCameraAntiAliasingMethod   AntiAliasingMethod;        
00325     FBPropertyInt                        NumberOfSamples;        
00326     FBPropertyCameraSamplingType         SamplingType;            
00327     FBPropertyBool                       UseAccumulationBuffer;    
00328     
00329         // Depth of Field Options
00330     FBPropertyCameraFocusDistanceSource  FocusDistanceSource;    
00331     FBPropertyDouble                     FocusSpecificDistance;    
00332     FBPropertyDouble                     FocusAngle;                
00333 
00334         // 2D Magnifier
00335     FBPropertyBool                       Use2DMagnifier;            
00336     FBPropertyBool                       Display2DMagnifierFrame;
00337     FBPropertyAnimatableDouble           MagnifierZoom;            
00338     FBPropertyAnimatableDouble           MagnifierPosX;            
00339     FBPropertyAnimatableDouble           MagnifierPosY;            
00340 
00341     // Other Attributes
00342     FBPropertyModel                      Interest;                
00343     FBPropertyAnimatableDouble           Roll;                    
00344     FBPropertyAnimatableDouble           TurnTable;                
00345     FBPropertyBool                       DisplayTurnTableIcon;    
00346 
00347     // MotionBlur
00348     FBPropertyAnimatableDouble           MotionBlurIntensity;    
00349     FBPropertyBool                       UseMotionBlur;            
00350     FBPropertyBool                       UseRealTimeMotionBlur;    
00351 
00352     // Viewport dimension (those property values are only updated & valid during custom renderer callback
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 // FBCameraStereo
00389 __FB_FORWARD( FBCameraStereo );
00390 
00392 /* Stereo Type */
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 // FBPropertyListCamera
00436 class FBSDK_DLL FBPropertyListCamera : public FBPropertyListComponent
00437 {
00438 public:
00439     FBPropertyListCamera();
00444     FBCamera* operator[](int pIndex);
00445 };
00446 
00448 // FBCameraSwitcher
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