00001 #ifndef __FBOPTICAL_H__
00002 #define __FBOPTICAL_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 #ifndef FB_KERNEL
00052
00053 #include <fbsdk/fbcomponent.h>
00054 #include <fbsdk/fbmodel.h>
00055
00056 #ifdef FBSDKUseNamespace
00057 namespace FBSDKNamespace {
00058 #endif
00059
00060 __FB_FORWARD( FBModelOptical );
00061
00062 FB_DEFINE_COMPONENT( FBSDK_DLL, ModelOptical );
00063 FB_DEFINE_COMPONENT( FBSDK_DLL, ModelMarkerOptical );
00064 FB_DEFINE_COMPONENT( FBSDK_DLL, RigidBody );
00065 FB_DEFINE_COMPONENT( FBSDK_DLL, Take );
00066
00068
00070 __FB_FORWARD( FBOpticalSegment );
00072 class FBSDK_DLL FBOpticalSegment : public FBComponent
00073 {
00074 __FBClassDeclare( FBOpticalSegment, FBComponent );
00075 public:
00079 FBOpticalSegment(FBModelOptical* pOptical=NULL);
00080
00084 FBOpticalSegment( const FBOpticalSegment &pSegment );
00085
00090 bool operator==(const FBOpticalSegment &pValue) const;
00091
00096 FBOpticalSegment& operator=(const FBOpticalSegment& pValue);
00097
00100 virtual void Reset();
00101
00105 virtual void Cut( FBTime& pTime );
00106
00110 virtual bool IsValid();
00111
00112
00113 FBPropertyTimeSpan OriginalTimeSpan;
00114 FBPropertyTimeSpan TimeSpan;
00115 FBPropertyAnimationNode Data;
00116 FBPropertyBool Used;
00117
00118
00119 FBPropertyModelMarkerOptical Marker;
00120 FBPropertyTimeSpan MarkerTimeSpan;
00121
00122 friend class FBPropertyListOpticalSegment;
00123 friend class FBPropertyListMarkerSegment;
00124
00125 private:
00126 void FBOpticalSegmentInitProperties();
00127 };
00128 FB_DEFINE_COMPONENT ( FBSDK_DLL, OpticalSegment );
00129 FB_DEFINE_ARRAY ( FBSDK_DLL, OpticalSegment );
00130 FB_DEFINE_LIST ( FBSDK_DLL, OpticalSegment );
00131
00133
00135 FB_FORWARD( FBPropertyListMarkerSegment );
00136
00138 class FBSDK_DLL FBPropertyListMarkerSegment : public FBPropertyBaseList< FBOpticalSegment >
00139 {
00140 private:
00141 FBArrayTemplate< FBOpticalSegment* > mItems;
00142 virtual int Add( FBOpticalSegment pItem );
00143 virtual void Refresh();
00144 public:
00145 FBPropertyListMarkerSegment();
00146 virtual ~FBPropertyListMarkerSegment();
00150 virtual void RemoveAt ( int pIndex );
00151
00156 virtual FBOpticalSegment operator[]( int pIndex );
00157
00161 virtual int GetCount();
00162
00167 virtual int GetIndexAt( FBTime& pTime );
00168 };
00169
00171
00173 FB_FORWARD( FBPropertyListOpticalSegment );
00174 FB_DEFINE_LIST( FBSDK_DLL, OpticalSegment );
00175
00177 class FBSDK_DLL FBPropertyListOpticalSegment : public FBPropertyBaseList< FBOpticalSegment >
00178 {
00179 private:
00180 FBArrayTemplate< FBOpticalSegment* > mItems;
00181 virtual int Add( FBOpticalSegment pItem );
00182 virtual void Refresh();
00183 public:
00184 FBPropertyListOpticalSegment();
00185 virtual ~FBPropertyListOpticalSegment();
00189 virtual void RemoveAt( int pIndex );
00190
00195 virtual FBOpticalSegment operator[]( int pIndex );
00196
00200 virtual int GetCount();
00201
00206 virtual int Add( FBAnimationNode* pData );
00207 };
00208
00210
00213 enum FBGapMode {
00214 kFBGapRigidBody,
00215 kFBGapConstant,
00216 kFBGapLinear,
00217 kFBGapBezier,
00218 kFBGapCurve,
00219 kFBGapSample
00220 };
00221 FB_DEFINE_ENUM( FBSDK_DLL, GapMode );
00222
00224
00226 __FB_FORWARD( FBOpticalGap );
00228 class FBSDK_DLL FBOpticalGap : public FBComponent
00229 {
00230 __FBClassDeclare( FBOpticalGap, FBComponent );
00231 public:
00235 FBOpticalGap(FBModelMarkerOptical* pMarker=NULL);
00236
00240 FBOpticalGap(const FBOpticalGap& pGap);
00241
00246 bool operator==(const FBOpticalGap &pValue) const;
00247
00252 FBOpticalGap& operator=(const FBOpticalGap& pValue);
00253
00257 virtual void InsertControlKey( FBTime& pTime );
00258
00262 virtual bool IsValid();
00263
00264 FBPropertyTimeSpan TimeSpan;
00265 FBPropertyGapMode Interpolation;
00266 FBPropertyAnimationNode Data;
00267
00268 friend class FBPropertyListOpticalGap;
00269
00270 private:
00271 void FBOpticalGapInitProperties();
00272 };
00273 FB_DEFINE_COMPONENT ( FBSDK_DLL, OpticalGap );
00274 FB_DEFINE_ARRAY ( FBSDK_DLL, OpticalGap );
00275 FB_DEFINE_LIST ( FBSDK_DLL, OpticalGap );
00276
00278
00280 FB_FORWARD( FBPropertyListOpticalGap );
00281
00283 class FBSDK_DLL FBPropertyListOpticalGap : public FBPropertyBaseList< FBOpticalGap >
00284 {
00285 private:
00286 FBArrayTemplate< FBOpticalGap* > mItems;
00287 virtual int Add( FBOpticalGap pItem );
00288 virtual void RemoveAt( int pIndex );
00289 virtual void Refresh();
00290 public:
00291 FBPropertyListOpticalGap();
00292 virtual ~FBPropertyListOpticalGap();
00297 virtual FBOpticalGap operator[]( int pIndex );
00298
00302 virtual int GetCount();
00303 };
00304
00306
00308 __FB_FORWARD( FBModelMarkerOptical);
00310 class FBSDK_DLL FBModelMarkerOptical : public FBModelMarker
00311 {
00312 __FBClassDeclare( FBModelMarkerOptical,FBModelMarker );
00313 public:
00320 FBModelMarkerOptical(const char *pName = NULL, FBModelOptical* pOptical=NULL, HIObject pObject=NULL );
00321
00327 virtual int ImportBegin();
00328
00336 virtual bool ImportKey( double pX, double pY, double pZ=0.0, double pOcclusion=0.0 );
00337
00342 virtual bool ImportEnd();
00343
00349 virtual int ExportBegin();
00350
00358 virtual bool ExportKey( double *pX, double *pY, double *pZ=NULL, double *pOcclusion=NULL );
00359
00363 virtual bool ExportEnd();
00364
00368 virtual void SetModelOptical( FBModelOptical* pOptical );
00369
00374 virtual void InsertSegmentedData( FBAnimationNode* pTData, FBAnimationNode* pOData );
00375
00379 virtual FBRigidBody GetRigidBody();
00380
00381 FBPropertyModelOptical Optical;
00382 FBPropertyListMarkerSegment Segments;
00383 FBPropertyListOpticalGap Gaps;
00384 FBPropertyColor Color;
00385 FBPropertyBool Done;
00386 FBPropertyAnimationNode Data;
00387 private:
00388 void FBModelMarkerOpticalInitProperties();
00389 };
00390 FB_DEFINE_ARRAY ( FBSDK_DLL, ModelMarkerOptical );
00391 FB_DEFINE_LIST ( FBSDK_DLL, ModelMarkerOptical );
00392
00394
00396 FB_FORWARD( FBPropertyListModelMarkerOptical );
00397
00399 class FBSDK_DLL FBPropertyListModelMarkerOptical : public FBPropertyBaseList< FBModelMarkerOptical* >
00400 {
00401 private:
00402 FBArrayTemplate< FBModelMarkerOptical* > mItems;
00403 public:
00404 FBPropertyListModelMarkerOptical();
00405 virtual ~FBPropertyListModelMarkerOptical();
00407 virtual void Refresh ();
00408
00412 virtual void RemoveAt( int pIndex );
00413
00418 virtual FBModelMarkerOptical* operator[]( int pIndex );
00419
00423 virtual int GetCount ();
00424
00428 virtual int Add( const char* pName = NULL );
00429
00433 virtual int Add( FBModelMarkerOptical* pItem );
00434 };
00435
00437
00439 FB_FORWARD( FBPropertyListRigidBodyMarkers );
00440 FB_DEFINE_LIST( FBSDK_DLL, ModelMarkerOptical );
00441
00443 class FBSDK_DLL FBPropertyListRigidBodyMarkers : public FBPropertyBaseList< FBModelMarkerOptical* >
00444 {
00445 private:
00446 FBArrayTemplate< FBModelMarkerOptical* > mItems;
00447 public:
00448 FBPropertyListRigidBodyMarkers();
00449 virtual ~FBPropertyListRigidBodyMarkers();
00451 virtual void Refresh();
00452
00456 virtual void RemoveAt( int pIndex );
00457
00462 virtual FBModelMarkerOptical* operator[]( int pIndex );
00463
00467 virtual int GetCount ();
00468
00469 public:
00473 virtual int Add( const char* pName = NULL );
00478 virtual int Add( FBModelMarkerOptical* pItem );
00479 };
00480
00482
00485 enum FBRigidBodyMode {
00486 kFBRigidBodyFast,
00487 kFBRigidBodyBest
00488 };
00489 FB_DEFINE_ENUM( FBSDK_DLL, RigidBodyMode );
00490
00492
00494 __FB_FORWARD( FBRigidBody );
00496 class FBSDK_DLL FBRigidBody : public FBComponent
00497 {
00498 __FBClassDeclare( FBRigidBody, FBComponent );
00499 public:
00503 FBRigidBody(FBModelOptical* pOptical=NULL);
00504
00508 FBRigidBody( const FBRigidBody &pRigidBody );
00509
00514 bool operator==(const FBRigidBody &pValue) const;
00515
00520 FBRigidBody& operator=(const FBRigidBody& pValue);
00521
00524 virtual void Snap();
00525
00528 virtual void ComputeAnimation();
00529
00533 virtual bool IsValid();
00534
00535 FBPropertyListRigidBodyMarkers Markers;
00536 FBPropertyModel Model;
00537 FBPropertyAnimationNode QualityData;
00538 FBPropertyBool Done;
00539 FBPropertyRigidBodyMode Mode;
00540 FBPropertyInt SmoothWidth;
00541
00542 friend class FBPropertyListRigidBody;
00543 private:
00544 void FBRigidBodyInitProperties();
00545
00546 };
00547 FB_DEFINE_ARRAY ( FBSDK_DLL, RigidBody );
00548 FB_DEFINE_LIST ( FBSDK_DLL, RigidBody );
00549
00551
00553 FB_FORWARD( FBPropertyListRigidBody );
00554
00556 class FBSDK_DLL FBPropertyListRigidBody : public FBPropertyBaseList< FBRigidBody >
00557 {
00558 private:
00559 FBArrayTemplate< FBRigidBody* > mItems;
00560 virtual int Add ( FBRigidBody pItem );
00561 virtual void Refresh ();
00562 public:
00563 FBPropertyListRigidBody();
00564 virtual ~FBPropertyListRigidBody();
00568 virtual void RemoveAt( int pIndex );
00569
00574 virtual FBRigidBody operator[]( int pIndex );
00575
00579 virtual int GetCount();
00580
00586 virtual int Add( FBModelList& pList, const char* pName=NULL);
00587 };
00588
00590
00592 __FB_FORWARD( FBModelOptical );
00594 class FBSDK_DLL FBModelOptical : public FBModel
00595 {
00596 __FBClassDeclare( FBModelOptical,FBModel );
00597 public:
00602 FBModelOptical(const char * pName, HIObject pObject=NULL);
00603
00607 virtual bool ImportSetup();
00608
00612 virtual bool ExportSetup();
00613
00617 virtual void ClearSegments( bool pUnUsedOnly = true );
00618
00619 FBPropertyDouble MarkerSize;
00620 FBPropertyTime SamplingStart;
00621 FBPropertyTime SamplingStop;
00622 FBPropertyTime SamplingPeriod;
00623
00624 FBPropertyListModelMarkerOptical Markers;
00625 FBPropertyListOpticalSegment Segments;
00626 FBPropertyListRigidBody RigidBodies;
00627 };
00628
00629
00631
00633 FB_DEFINE_LIST( FBSDK_DLL, ModelOptical );
00634 FB_FORWARD( FBPropertyListModelOptical );
00635
00637 class FBSDK_DLL FBPropertyListModelOptical : public FBPropertyListComponent
00638 {
00639 public:
00640 FBPropertyListModelOptical();
00645 FBModelOptical* operator[](int pIndex);
00646 };
00647
00648
00650
00653 enum FBGenerationMode {
00654 kFBGenerationNone,
00655 kFBGenerationFast
00656 };
00657 FB_DEFINE_ENUM( FBSDK_DLL, GenerationMode );
00658
00660
00663 enum FBControllerMode {
00664 kFBControllerNone,
00665 kFBControllerLabelling,
00666 kFBControllerSegment,
00667 kFBControllerRigidBody
00668 };
00669 FB_DEFINE_ENUM( FBSDK_DLL, ControllerMode );
00670
00672
00675 enum FBSegmentMode {
00676 kFBSegmentMarker,
00677 kFBSegmentRigidBody,
00678 kFBSegmentAll
00679 };
00680 FB_DEFINE_ENUM( FBSDK_DLL, SegmentMode );
00681
00683
00686 enum FBInsertSegmentMode {
00687 kFBInsertSegmentWhole,
00688 kFBInsertSegmentToEnd,
00689 kFBInsertSegmentFromStart
00690 };
00691 FB_DEFINE_ENUM( FBSDK_DLL, InsertSegmentMode );
00692
00694
00696 __FB_FORWARD( FBModelOpticalAdvanced );
00698 class FBSDK_DLL FBModelOpticalAdvanced : public FBComponent
00699 {
00700 __FBClassDeclare( FBModelOpticalAdvanced,FBComponent );
00701 public:
00705 FBModelOpticalAdvanced( FBModelOptical* pOptical );
00706
00708 virtual void AcceptAllSegments();
00709
00711 virtual void AcceptSegment();
00712
00714 virtual void SkipSegment();
00715
00717 virtual void AutomaticBuild();
00718
00720 virtual void CropSegmentsAnimation();
00721
00722 FBPropertyAnimationNode Quality;
00723 FBPropertyBool ShowRigidQuality;
00724 FBPropertyGenerationMode GenerationMode;
00725 FBPropertyControllerMode ControllerMode;
00726 FBPropertySegmentMode SegmentMode;
00727 FBPropertyInsertSegmentMode InsertSegmentMode;
00728 FBPropertyBool PlayToNextSegment;
00729 FBPropertyBool AutoPlayToNextSegment;
00730 FBPropertyDouble MaxMatchDistance;
00731 FBPropertyBool Active;
00732 FBPropertyTake UsedTake;
00733 };
00734
00736
00738 __FB_FORWARD( FBDeviceOpticalMarker );
00744 class FBSDK_DLL FBDeviceOpticalMarker : public FBComponent {
00745 __FBClassDeclare( FBDeviceOpticalMarker,FBComponent );
00746 public:
00750 FBDeviceOpticalMarker(const char *pName);
00751
00758 void SetData(double pX, double pY, double pZ=0.0, double pOcclusion=0.0);
00759
00760 FBPropertyBool IsUsed;
00761 FBPropertyVector3d Position;
00762 FBPropertyDouble Occlusion;
00763 FBPropertyModel Model;
00764 };
00765 FB_DEFINE_ARRAY ( FBSDK_DLL, DeviceOpticalMarker );
00766 FB_DEFINE_LIST ( FBSDK_DLL, DeviceOpticalMarker );
00767
00769
00771 FB_FORWARD( FBPropertyListDeviceOpticalMarker );
00772
00774 class FBSDK_DLL FBPropertyListDeviceOpticalMarker : public FBPropertyBaseList< FBDeviceOpticalMarker* >
00775 {
00776 FBArrayTemplate<FBDeviceOpticalMarker*> mItems;
00777 virtual int Add ( FBDeviceOpticalMarker* pItem );
00778 public:
00779 FBPropertyListDeviceOpticalMarker();
00780 virtual ~FBPropertyListDeviceOpticalMarker();
00784 virtual void RemoveAt( int pIndex );
00789 virtual FBDeviceOpticalMarker* operator[](int pIndex);
00793 virtual int GetCount();
00794
00799 virtual int Add( const char *pName=NULL );
00800 };
00801
00803
00805 __FB_FORWARD( FBDeviceOptical );
00807 class FBSDK_DLL FBDeviceOptical : public FBDevice
00808 {
00809 __FBClassDeclare( FBDeviceOptical,FBDevice );
00810 public:
00811 friend class FBDeviceOpticalLayout;
00812
00817 FBDeviceOptical(const char* pName, HIObject pObject=NULL);
00818
00819 FBPropertyListDeviceOpticalMarker Markers;
00820 FBPropertyBool SupportOcclusion;
00821 FBPropertyBool AutoAntialiasing;
00822 FBPropertyDouble DampingTime;
00823 FBPropertyModel ModelOptical;
00824
00825 FBPropertyBool ForceOpticalSamplingRate;
00826 FBPropertyDouble OpticalSamplingRate;
00827 FBPropertyBool UseMarkerTimeStamp;
00828
00829 FBPropertyBool SkipFrame;
00830 FBPropertyTime MarkerTimeStamp;
00831
00832
00834 void DeviceOpticalBeginSetup();
00836 void DeviceOpticalEndSetup();
00837
00843 virtual void DeviceOpticalEvalAllMarkers(FBDeviceNotifyInfo &pDeviceNotifyInfo);
00844
00850 virtual void DeviceOpticalRecordFrame(FBTime &pTime,FBDeviceNotifyInfo &pDeviceNotifyInfo);
00851
00852
00853
00854
00855 virtual bool FbxStore(FBFbxObject* pFbxObject,kFbxObjectStore pStoreWhat);
00856 virtual bool FbxRetrieve(FBFbxObject* pFbxObject,kFbxObjectStore pStoreWhat);
00857
00858
00859 virtual bool FBCreate();
00860 virtual void FBDestroy();
00861
00862
00863 virtual bool DeviceOperation( kDeviceOperations pOperation );
00864
00865
00866 virtual bool AnimationNodeNotify(FBAnimationNode* pAnimationNode,FBEvaluateInfo* pEvaluateInfo);
00867 virtual void DeviceIONotify(kDeviceIOs pAction,FBDeviceNotifyInfo &pDeviceNotifyInfo);
00868
00869
00870 virtual void RecordingInitAnimation(FBAnimationNode* pAnimationNode);
00871 virtual void RecordingDoneAnimation(FBAnimationNode* pAnimationNode);
00872 };
00873
00874 #ifdef FBSDKUseNamespace
00875 }
00876 #endif
00877
00878 #endif
00879 #endif