1. 程式人生 > >ogre的SampleBrowser專案的程式碼結構筆記2——sample控制元件

ogre的SampleBrowser專案的程式碼結構筆記2——sample控制元件

sample控制元件的載入、解除安裝、切換和資訊提取

1、Sample類功能如下:

1、設計了很多虛擬函式,和響應函式,用於子類重寫。
2、其中啟動sample函式將被SampleContext類呼叫,通過這個函式獲得SampleContext類的渲染引數。
 3、重點為_setup函式。

其中 _setup函式功能如下:

1、啟動一個例項。不能直接呼叫,被SampleContext累呼叫。
2、其中的window和input等可以通過呼叫設定。

2、SdkSample類功能如下:

SdkSample類是Sample類和SdkTrayListener介面的子類。進一步實現例項中的相同部分。
SdkTrayListener介面用於監聽和響應gui的各種控制。

1、在_setup函式中建立瞭如下成員變數,並對他們進行配置。
 Ogre::Viewport* mViewport;            // main viewport
 Ogre::Camera* mCamera;                // main camera
 SdkTrayManager* mTrayMgr;             // tray interface manager
 SdkCameraMan* mCameraMan;             // basic camera controller
 ParamsPanel* mDetailsPanel;           // sample details panel
 2、建立每個sample裡面都需要顯示的細節資訊面板(mDetailsPanel),並對它進行響應和切換管理。
 3、對各種gui(mTrayMgr裡面建立)、camera控制(mCameraMan)和一些渲染設定進行響應和配置。

其中 _setup函式功能如下:

      _setup函式啟動程式,比父類多了功能。
     1、建立mCamera和mCameraMan。
     2、mTrayMgr管理器的new。
     3、mDetailsPanel對話方塊的條目新增和顯示設定。

3、Sample_Character類功能如下:

Sample_Character類是Sample_Character例項中的類,也是SdkSample的子類。它的具體功能如下:

     1、填寫mInfo內容。
     2、建立場景(包括3d場景和2d對話方塊),建立動畫動畫人物。
     3、控制動畫和渲染骨骼動畫,camera和對話方塊顯示。
     4骨骼動畫的控制和渲染具體內容在下面成員變數中:
             SinbadCharacterController* mChara;

4、SinbadCharacterController類功能如下:

SinbadCharacterController類是Sample_Character例項中的類,它的具體功能如下:

     1、這個類是用來控制人物動畫相關內容的,包括人物動畫切換和漸變,人物對應位移、旋轉,camera跟隨。
     2、動畫人物實體模型包括三部分,人物模型,雙劍模型,拔劍的家閃光效果
     3、動畫實現分為top和bottom兩部分。閃光效果是程式碼動態計算的線形紋理。

其中 setupBody函式功能如下:

     1、建立人物的實體和節點。
     2、建立人物雙刀,並繫結到骨骼。
     3、建立抽刀的閃光線條。

其中 fadeAnimations函式功能如下:

     1、根據切換標誌,計算動畫切換的漸變。
     2、這裡的邏輯不嚴謹。原來我改過,現在只是人眼看不見。遇到首尾不一致的動畫,顯示時會有距離閃現跳動。

5、Sample_Character.cpp檔案

Sample_Character例項中的Sample_Character.cpp檔案,編寫了控制元件程式碼的入口程式。具體原理暫略。 在ogre相關plugin中再學習。

————sample控制元件 完————