00001 #ifndef __FBSTORY_H__
00002 #define __FBSTORY_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/fbcomponent.h>
00052 #include <fbsdk/fbcore.h>
00053 #include <fbsdk/fbvideo.h>
00054 #include <fbsdk/fbmodel.h>
00055 #include <fbsdk/fbcamera.h>
00056
00057 #include <fbxsdk/fbxsdk_nsbegin.h>
00058 class FbxScene;
00059 #include <fbxsdk/fbxsdk_nsend.h>
00060
00061 #ifdef FBSDKUseNamespace
00062 namespace FBSDKNamespace {
00063 #endif
00064
00065 __FB_FORWARD( FBStory );
00066 __FB_FORWARD( FBStoryFolder );
00067 __FB_FORWARD( FBStoryTrack );
00068 __FB_FORWARD( FBStoryClip );
00069 FB_DEFINE_COMPONENT( FBSDK_DLL, Story );
00070 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryFolder );
00071 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryTrack );
00072 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryClip );
00073 FB_DEFINE_COMPONENT( FBSDK_DLL, AnimationNode );
00074 FB_DEFINE_COMPONENT( FBSDK_DLL, Video );
00075 FB_DEFINE_COMPONENT( FBSDK_DLL, AudioClip );
00076
00078 enum FBStoryTrackType {
00079 kFBStoryTrackAnimation,
00080 kFBStoryTrackCamera,
00081 kFBStoryTrackCharacter,
00082 kFBStoryTrackConstraint,
00083 kFBStoryTrackCommand,
00084 kFBStoryTrackShot,
00085 kFBStoryTrackAudio,
00086 kFBStoryTrackVideo
00087 };
00088
00090 enum FBStoryTrackRefMode {
00091 kFBStoryTrackOverride,
00092 kFBStoryTrackAdditive
00093 };
00094
00096 enum FBStoryTrackBodyPart {
00097 kFBStoryTrackBodyPartNone = 0,
00098
00099 kFBStoryTrackBodyPartHead = 1 << 0,
00100
00101 kFBStoryTrackBodyPartLeftShoulder = 1 << 1,
00102 kFBStoryTrackBodyPartLeftHand = 1 << 2,
00103 kFBStoryTrackBodyPartLeftArm = 1 << 3 | kFBStoryTrackBodyPartLeftShoulder | kFBStoryTrackBodyPartLeftHand,
00104 kFBStoryTrackBodyPartRightShoulder = 1 << 4,
00105 kFBStoryTrackBodyPartRightHand = 1 << 5,
00106 kFBStoryTrackBodyPartRightArm = 1 << 6 | kFBStoryTrackBodyPartRightShoulder | kFBStoryTrackBodyPartRightHand,
00107
00108 kFBStoryTrackBodyPartUpperBody = kFBStoryTrackBodyPartHead |
00109 kFBStoryTrackBodyPartLeftArm | kFBStoryTrackBodyPartLeftShoulder | kFBStoryTrackBodyPartLeftHand |
00110 kFBStoryTrackBodyPartRightArm | kFBStoryTrackBodyPartRightShoulder | kFBStoryTrackBodyPartRightHand,
00111
00112 kFBStoryTrackBodyPartLeftFoot = 1 << 7,
00113 kFBStoryTrackBodyPartLeftLeg = 1 << 8 | kFBStoryTrackBodyPartLeftFoot,
00114 kFBStoryTrackBodyPartRightFoot = 1 << 9,
00115 kFBStoryTrackBodyPartRightLeg = 1 << 10| kFBStoryTrackBodyPartRightFoot,
00116
00117 kFBStoryTrackBodyPartLowerBody = kFBStoryTrackBodyPartLeftLeg | kFBStoryTrackBodyPartLeftFoot | kFBStoryTrackBodyPartRightLeg | kFBStoryTrackBodyPartRightFoot,
00118
00119 kFBStoryTrackBodyPartAll = kFBStoryTrackBodyPartUpperBody | kFBStoryTrackBodyPartLowerBody,
00120
00121 kFBStoryTrackBodyPartProps = 1 << 11,
00122 kFBStoryTrackBodyPartExtensions = 1 << 12
00123 };
00124
00126 enum FBStoryClipShowGhostMode {
00127 kFBStoryClipAlways,
00128 kFBStoryClipTimeCursor
00129 };
00130
00132 enum FBStoryClipSolveMode {
00133 kFBStoryClipRetargetSkeleton,
00134 kFBStoryClipAnimSkeleton,
00135 kFBStoryClipAnimFkIk,
00136 kFBStoryClipAnimSkeletonIk
00137 };
00138
00140 enum FBStoryClipCompMode {
00141 kFBStoryClipOff,
00142 kFBStoryClipAuto,
00143 kFBStoryClipUser
00144 };
00145
00146 FB_DEFINE_ENUM(FBSDK_DLL, StoryTrackType);
00147 FB_DEFINE_ENUM(FBSDK_DLL, StoryTrackRefMode);
00148 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipShowGhostMode);
00149 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipSolveMode);
00150 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipCompMode);
00151
00152 FB_FORWARD( FBPropertyListStoryFolder );
00154 class FBSDK_DLL FBPropertyListStoryFolder : public FBPropertyListComponentBase
00155 {
00156 public:
00162 virtual int Add(FBStoryFolder* pItem);
00163
00169 virtual int Remove(FBStoryFolder* pItem);
00170
00174 virtual void RemoveAt(int pIndex);
00175
00180 virtual FBStoryFolder* operator[](int pIndex);
00181
00185 virtual int GetCount();
00186
00187 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00188 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00189 private:
00190 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryFolder*)pItem); }
00191 #endif
00192 };
00193
00194 FB_FORWARD( FBPropertyListStoryTrack );
00196 class FBSDK_DLL FBPropertyListStoryTrack : public FBPropertyListComponentBase
00197 {
00198 public:
00204 virtual int Add(FBStoryTrack* pItem);
00205
00211 virtual int Remove(FBStoryTrack* pItem);
00212
00216 virtual void RemoveAt(int pIndex);
00217
00222 virtual FBStoryTrack* operator[](int pIndex);
00223
00227 virtual int GetCount();
00228 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00229 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00230 private:
00231 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryTrack*)pItem); }
00232 #endif
00233 };
00234
00235 FB_FORWARD( FBPropertyListStorySubTrack );
00237 class FBSDK_DLL FBPropertyListStorySubTrack : public FBPropertyListComponentBase
00238 {
00239 public:
00245 virtual int Add(FBStoryTrack* pItem);
00246
00252 virtual int Remove(FBStoryTrack* pItem);
00253
00257 virtual void RemoveAt(int pIndex);
00258
00263 virtual FBStoryTrack* operator[](int pIndex);
00264
00268 virtual int GetCount();
00269 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00270 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00271 private:
00272 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryTrack*)pItem); }
00273 #endif
00274 };
00275
00276 FB_FORWARD( FBPropertyListStoryClip );
00278 class FBSDK_DLL FBPropertyListStoryClip : public FBPropertyListComponentBase
00279 {
00280 public:
00285 virtual int Add(FBStoryClip* pItem);
00286
00291 virtual int Remove(FBStoryClip* pItem);
00292
00296 virtual void RemoveAt(int pIndex);
00297
00302 virtual FBStoryClip* operator[](int pIndex);
00303
00307 virtual int GetCount();
00308 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00309 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00310 private:
00311 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryClip*)pItem); }
00312 #endif
00313 };
00314
00315 FB_FORWARD( FBPropertyListStoryDetails );
00317 class FBSDK_DLL FBPropertyListStoryDetails : public FBPropertyListComponentBase
00318 {
00319 public:
00324 virtual int Add(FBComponent* pItem);
00325
00330 virtual int Remove(FBComponent* pItem);
00331
00335 virtual void RemoveAt(int pIndex);
00336
00341 virtual FBComponent* operator[](int pIndex);
00342
00346 virtual int GetCount();
00347 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00348 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00349 #endif
00350 };
00351
00352 FB_FORWARD( FBPropertyListPivot );
00354 class FBSDK_DLL FBPropertyListPivot : public FBPropertyListComponentBase
00355 {
00356 public:
00361 virtual int Add(FBModel* pItem);
00362
00367 virtual int Remove(FBModel* pItem);
00368
00372 virtual void RemoveAt(int pIndex);
00373
00378 virtual FBModel* operator[](int pIndex);
00379
00383 virtual int GetCount();
00384 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00385 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00386 private:
00387 inline virtual int Add ( FBComponent* pItem ) { return Add((FBModel*)pItem); }
00388 #endif
00389 };
00390
00392
00394
00397 class FBSDK_DLL FBStory : public FBComponent
00398 {
00399
00400 __FBClassDeclare(FBStory, FBComponent);
00401
00404 FBStory();
00405
00406 public:
00407
00408 FBPropertyBool Mute;
00409 FBPropertyBool LockedShot;
00410 FBPropertyBool SummaryClip;
00411 FBPropertyBool RecordToDisk;
00412 FBPropertyBool NoneBlockingPostprocess;
00413 FBPropertyStoryFolder RootFolder;
00414 FBPropertyStoryFolder RootEditFolder;
00415
00419 static FBStory& TheOne();
00420
00421 };
00422
00424
00426
00429 class FBSDK_DLL FBStoryFolder : public FBComponent
00430 {
00431
00432 __FBClassDeclare(FBStoryFolder, FBComponent);
00433 public:
00434
00440 FBStoryFolder(FBStoryFolder* pParentFolder=NULL, HIObject pObject=NULL);
00441
00444 virtual void FBDelete();
00445
00449 void Load(bool pLoad);
00450
00451 FBPropertyString Label;
00452 FBPropertyBool Collapsed;
00453 FBPropertyBool Solo;
00454 FBPropertyBool Mute;
00455 FBPropertyString RecordClipPath;
00456 FBPropertyStoryFolder Parent;
00457 FBPropertyListStoryFolder Childs;
00458 FBPropertyListStoryTrack Tracks;
00459 };
00460
00462
00464
00467 class FBSDK_DLL FBStoryTrack : public FBConstraint
00468 {
00469
00470 __FBClassDeclare(FBStoryTrack, FBConstraint);
00471 public:
00472
00478 FBStoryTrack(FBStoryTrackType pTrackType, FBStoryFolder* pFolder=NULL, HIObject pObject=NULL);
00479
00485 FBStoryTrack(FBComponent* pSource, FBStoryFolder* pFolder=NULL, HIObject pObject=NULL);
00486
00489 virtual void FBDelete();
00490
00494 void ChangeDetailsBegin();
00495
00499 void ChangeDetailsEnd();
00500
00501
00510 FBStoryClip* CopyTakeIntoTrack(FBTimeSpan& pTimeSpan, FBTake* pTake, FBTime pOutputOffset = 0, bool pMakeUndoable = false);
00511
00512
00518 void EnableBodyPart(FBStoryTrackBodyPart pPart, bool pEnable);
00519
00523 bool IsBodyPartEnabled(FBStoryTrackBodyPart pPart);
00524
00528 void AddClip(FBComponent* pClip, FBTime pTime);
00529
00533 void Load(bool pLoad);
00534
00535
00536 FBPropertyStoryTrackType Type;
00537 FBPropertyString Label;
00538 FBPropertyBool Mute;
00539 FBPropertyBool Solo;
00540 FBPropertyString RecordClipPath;
00541 FBPropertyString ClipNameConvention;
00542 FBPropertyBool RecordTrack;
00543 FBPropertyStoryFolder ParentFolder;
00544 FBPropertyStoryTrack ParentTrack;
00545 FBPropertyListStorySubTrack SubTracks;
00546 FBPropertyListStoryClip Clips;
00547 FBPropertyListStoryDetails Details;
00548
00549
00550 FBPropertyAnimatableDouble Weight;
00551
00552
00553 FBPropertyBool Ghost;
00554 FBPropertyBool GhostModel;
00555 FBPropertyBool GhostTravelling;
00556 FBPropertyBool GhostPivot;
00557 FBPropertyBool AcceptKey;
00558 FBPropertyStoryTrackRefMode ReferenceMode;
00559 FBPropertyBool OffsetEnable;
00560 FBPropertyBool PassThrough;
00561
00562
00563 FBPropertyCharacter Character;
00564 FBPropertyInt CharacterIndex;
00565
00566
00567 FBPropertyBool ShowBackplate;
00568 FBPropertyBool ShowFrontplate;
00569
00570
00571 FBPropertyInt AudioOutIndex;
00572
00573
00574 FBPropertyVideo TrackVideo;
00575 private:
00576 void FBStoryTrackInitProperties();
00577 };
00578
00580
00582
00594 class FBSDK_DLL FBStoryClip : public FBComponent
00595 {
00596
00597 __FBClassDeclare(FBStoryClip, FBComponent);
00598 public:
00599
00606 FBStoryClip(FBComponent* pClipObject, FBStoryTrack* pTrack, FBTime pTime, HIObject pObject=NULL);
00607
00614 FBStoryClip(const char* pFilePath, FBStoryTrack* pTrack, FBTime pTime, HIObject pObject=NULL);
00615
00618 virtual void FBDelete();
00619
00622 FBStoryClip* Clone();
00623
00630 FBTime Move(FBTime pDelta, bool pForce=true);
00631
00638 FBTime MoveTo(FBTime pTime, bool pForce=true);
00639
00645 FBStoryClip* Razor(FBTime pTime);
00646
00647
00651 void Match();
00652
00658 bool ExportToFile(FBString pOutputFile);
00659
00664 bool MakeWritable();
00665
00673 void GetAffectedObjects( FBArrayTemplate<FBComponent*>* pAffectedObjects );
00674
00683 void GetAffectedAnimationNodes( FBArrayTemplate<FBAnimationNode*>* pAffectedAnimationNodes, FBComponent* pClipObject );
00684
00688 FBXSDK_NAMESPACE::FbxScene* GetFbxScene();
00689
00690
00691 FBPropertyColor Color;
00692 FBPropertyTime Start;
00693 FBPropertyTime Stop;
00694 FBPropertyTime MarkIn;
00695 FBPropertyTime MarkOut;
00696 FBPropertyTimeSpan PreBlend;
00697 FBPropertyTimeSpan PostBlend;
00698 FBPropertyTime Offset;
00699 FBPropertyDouble Speed;
00700
00701
00702 FBPropertyCamera ShotCamera;
00703 FBPropertyVideo ShotBackplate;
00704 FBPropertyVideo ShotFrontplate;
00705 FBPropertyBool ShowBackplate;
00706 FBPropertyBool ShowFrontplate;
00707 FBPropertyTime ShotActionStart;
00708 FBPropertyTime ShotActionStop;
00709
00710
00711 FBPropertyAudioClip AudioClip;
00712
00713
00714 FBPropertyBool ImageSequence;
00715 FBPropertyBool UseSystemFrameRate;
00716 FBPropertyDouble FrameRate;
00717
00718
00719 FBPropertyDouble Scale;
00720 FBPropertyVector3d Translation;
00721 FBPropertyVector3d Rotation;
00722 FBPropertyVector3d LoopTranslation;
00723 FBPropertyBool AutoLoop;
00724 FBPropertyBool Loop;
00725 FBPropertyBool Ghost;
00726 FBPropertyBool GhostModel;
00727 FBPropertyBool GhostTravelling;
00728 FBPropertyBool GhostPivot;
00729 FBPropertyStoryClipShowGhostMode ShowGhostClipMode;
00730 FBPropertyAnimationNode PreBlendData;
00731 FBPropertyAnimationNode PostBlendData;
00732 FBPropertyListPivot Pivots;
00733 FBPropertyBool Loaded;
00734
00735
00736 FBPropertyStoryClipSolveMode SolvingMode;
00737 private:
00738 void FBStoryClipInitProperties();
00739 };
00740
00741 #ifdef FBSDKUseNamespace
00742 }
00743 #endif
00744 #endif