軌跡動(dòng)畫(Animation Track),是 OGRE 所支持的幾種動(dòng)畫模式(包括骨骼動(dòng)畫)中的一種。通過讓節(jié)點(diǎn)(node)沿著一條預(yù)設(shè)了關(guān)鍵幀(Key Frame)的軌跡移動(dòng)來實(shí)現(xiàn)節(jié)點(diǎn)的動(dòng)畫。
OGRE 中創(chuàng)建和實(shí)施軌跡動(dòng)畫的步驟大致如下:
1. 在主程序類的 Application :: createScene ( ) 場(chǎng)景創(chuàng)建方法中進(jìn)行以下工作:
Animation * Ogre::SceneManager::createAnimation (
const String & name, // 動(dòng)畫名稱
Real length // 動(dòng)畫長度(秒)
) [virtual]
(2) 使用 createTrack 方法為動(dòng)畫創(chuàng)建軌跡動(dòng)畫:
AnimationTrack * Ogre::Animation::createTrack (
unsigned short handle, // 分配給軌跡動(dòng)畫的索引句柄,用于以后可能的調(diào)用
Node * node // 指定要沿著這條軌跡運(yùn)動(dòng)的節(jié)點(diǎn)
)
(3) 使用 createKeyFrame 方法為軌跡動(dòng)畫創(chuàng)建一系列關(guān)鍵幀:
KeyFrame * Ogre::AnimationTrack::createKeyFrame (
Real timePos // 時(shí)間位置
)
(4) 使用 setTranslate 、 setScale 、 setRotation 三個(gè)方法來設(shè)置關(guān)鍵幀每個(gè)時(shí)間位置上節(jié)點(diǎn)的位置、縮放、旋轉(zhuǎn)屬性:
void Ogre::KeyFrame::setTranslate ( const Vector3 & trans )
void Ogre::KeyFrame::setScale ( const Vector3 & scale )
void Ogre::KeyFrame::setRotation ( const Quaternion & rot )
(5) 使用 createAnimationState 方法創(chuàng)建一個(gè)動(dòng)畫狀態(tài)來追蹤這個(gè)軌跡:
AnimationState * Ogre::SceneManager::createAnimationState ( const String & animName ) [virtual]
(6) 使用 setEnabled 方法來激活動(dòng)畫狀態(tài):
void Ogre::AnimationState::setEnabled ( bool enabled )
2. 在接收器類的 Listener::frameStarted(const FrameEvent& evt) 方法中刷新動(dòng)畫狀態(tài):
void Ogre::AnimationState::addTime ( Real offset )
posted on 2007-03-02 17:36
清源游民 閱讀(2812)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
OGRE