青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 505  文章 - 1034  trackbacks - 0
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345


子曾經曰過:編程無他,唯手熟爾!

常用鏈接

留言簿(94)

隨筆分類(649)

隨筆檔案(505)

相冊

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

積分與排名

  • 積分 - 921912
  • 排名 - 14

最新隨筆

最新評論

閱讀排行榜

評論排行榜

[前言:在Ogre的Facial Demo中采用了頂點動畫(確切點說是Pose Animation)讓面部產生面部表情及發音動畫,本文簡單介紹了頂點動畫的概念,并結合Facial Demo,探討如何實現Pose Animation。]


         頂點動畫是直接使用頂點讓網格(mesh)產生動畫的一種方式。每一組動作在頂點動畫中對應一個頂點數據實體。頂點動畫被存儲在.mesh文件中,因為它與網格的頂點緊密相連。實際上,頂點動畫分為兩種子類型。

1、Morph Animation(變形動畫)

         變形動畫依靠在每個關鍵幀中及其之間保存和插入頂點絕對位置的快照(snapshot)。當骨骼動畫不能恰當處理動畫對象時,變形動畫會比較有用。在分物體必須從根本改變動畫部分的結構和形狀時,骨骼動畫就不適合了。

由于絕對位置數據的使用,不可能在同樣的頂點數據中混合多于一個的變形動畫;如果你想使用動畫混合,你應該使用骨骼動畫,因為它更有效。如果你激活了在同一個頂點數據中包含的多個動畫,只有最后一個有效。也就是說動畫狀態的"weight"選項不能被用于變形動畫。

變形動畫與骨骼動畫能夠組合應用(參考 Ogre Manual 8.3.3 Combining Skeletal and Vertex Animation)。同時,變形動畫也能在使用頂點渲染器(shader)的硬件中實現(參考Ogre Manual Morph Animation in Vertex Programs)

2、Pose Animation(姿態動畫)

          姿態動畫允許將多個潛在地不同效果等級的頂點姿態(vertex poses)混合成最終的頂點狀態。該動畫通常用于面部動畫,在這種動畫中每一個面部表情被作為一個獨立的動畫,我們可以將一個表情混合在另外一個上,如果每個姿態只影響面部的一部分,也可以組合所有的表情。

         為了產生姿態動畫,需要引用預先包含在mesh中的一套動作集,這些動作集采用與源頂點的偏移量來表示。但是并不要求每一個頂點都有偏移量,當用軟件處理這些數據時,沒有偏移量的頂點會被忽略掉。如果用硬件處理的話,沒有偏移量的頂點會自動被填充為0。

          一旦定義好了姿態,你就可以在動畫中引用他們。每一個姿態動畫跡(pose animation track)對應著一個單獨的幾何數據集合(或者是與物體網格對應的,或者是其中一個子網格的),在動畫中的每個關鍵幀可以引用一個或多個姿態(pose),且每一個有其相應的影響值(influence)。你能定義許多關鍵幀,使用多種姿態的混合,從而產生多個部位協調運動的動畫。

         應該小心多個姿態同時應用的情況。當在硬件中處理姿態動畫的時候(參考Ogre Manual Pose Animation in Vertex Programs),每個激活的動作都需要額外的頂點緩沖器加入到渲染器(shader)中,如果采用軟件來處理動畫,你處理的激活姿態越多消耗的時間也就越長。也就是說,在一個關鍵幀中如果有兩個姿態,在下一幀中也有兩個,那么在它們過渡之間實際上就有4個激活的關鍵幀。

         你可以綜合應用姿態動畫和骨骼動畫,參考 Ogre Manual 8.3.3 Combining Skeletal and Vertex Animation,你也可以采用硬件加速那些混合頂點渲染器(shader)的應用程序(參考Ogre Manual Pose Animation in Vertex Programs)。

3、Pose Animation xml結構

<mesh>

         <submeshes>

                   <submesh material="子網格材質" ...>

                            <faces count="面數">

                                     <face ... />

                            </faces>

                            <geometry vertexcount="頂點數">

                                     <vertexbuffer ...>         // 頂點緩沖器內容

                                               <vertex>

                                                        <position 頂點位置>

                                                        <normal 頂點法向量>

                                                        <texcoord 紋理坐標>

                                               </vertex>

                   </submesh>

         </submeshes>

         <submeshnames>         // 主要是為pose和animation提供索引號

                   <submeshname name="子網格的名字" index="子網格的索引號(從0開始)">

         </submeshnames>

         <poses> // 這些參數主要是對手調動畫有效

                   <pose target="submesh or mesh" index="對應哪個網格的姿態" name="姿態的名字">

                            <poseoffset index="頂點索引" x y z相對偏移量 />

                   </pose>

         </poses>

         <animations>        // 下面這些動畫對于自動播放動畫有效

                   <animation name="動畫名字" length="幀長度">

                            <tracks>         // 動畫跡

                                     <track target="submesh or mesh" index="姿態索引號" type="動畫類型,這里是pose">

                                               <keyframes> // 關鍵幀

                                                        <keyframe time="時間">

                                                                 <poseref poseindex="pose索引" influence="影響值[0-1]" />

                                                        </keyframe>

                                               </keyframes>

                                     <track>

                            </tracks>

                   </animation>

         </animations>

</mesh>
4、如何實現

4.1 建模工具對Pose Animation的支持

         Facial Demo中所用的頭部模型是由SoftImage授權使用的XSI面部動畫模型,不是所有的導出工具都支持Pose Animation,目前有 SoftImage XSI 5.0 Exporter v1.2.3、oFusion Pro for 3ds max、Maya Ogre導出器支持。

4.2 關鍵頂點的尋找

         通過分析xml中的poseoffset偏移量,可以看到許多非常小的數據,這些數據是由模型導出工具產生的,其實它們完全可以被忽略掉。通過實驗,我將原來604個頂點的poseoffset數據減少為75個,而且效果和原來相差不大,說明這75個poseoffset對應的頂點是該動畫的關鍵頂點。

4.3 在程序中如何讀取Pose Animation

         下面是包括在場景創建函數createScene中創建動畫的代碼:

       // 載入包含pose animation的mesh

       MeshPtr mesh = MeshManager::getSingleton().load("aaa.mesh", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

       // 創建動畫將其命名為smile,并將長度初始化為0

       Animation* anim = mesh->createAnimation("smile", 0);

       // 創建頂點動畫跡,這里只有針對索引值為0的Pose動畫,故第一個參數為1[1]

       // 這些動畫pose被定義在<poses>標簽中

       VertexAnimationTrack* track = anim->createVertexTrack(1, VAT_POSE); 

       // 創建手動動畫,并將關鍵幀起始位置置為0

       manualKeyFrame = track->createVertexPoseKeyFrame(0);

       // 創建手動動畫所用到的poses引用,并初始化為0

       manualKeyFrame->addPoseReference(0, 0.0f);

       // 創建物體(這里是Dr. Bunsen的頭像)

        Entity* head = mSceneMgr->createEntity("Head1", "aaa.mesh");

       // 從mesh中得到名為action的動畫參數(在<animations>標簽中定義)

       actionAnimState = head->getAnimationState("action");

       // 是否允許自動播放該動畫

       actionAnimState->setEnabled(true);

       // 獲取先前從mesh文件中得到的動畫smile,并將關鍵幀起始位置置為0

       manualAnimState = head->getAnimationState("smile");

       manualAnimState->setTimePosition(0);
下面在是每一幀渲染開始都會調用的frameStarted函數中自動播放動畫代碼:

       // 根據自上一幀以來所消耗的秒數來修改調整關鍵幀位置

       actionAnimState->addTime(evt.timeSinceLastFrame);

--------------------------------------------------------------------------------

[1] Ogre API指出createVertexTrack第一個參數的含義為: Handle to give the track,  used for accessing the track later. Must be unique within this Animation, and is used to
 identify the target. For example when applied to a Mesh, the handle must reference the
 index of the geometry being modified; 0 for the shared geometry, and 1+ for SubMesh 
geometry with the same index-1.
posted on 2006-11-24 02:01 七星重劍 閱讀(3342) 評論(1)  編輯 收藏 引用 所屬分類: Game Engine 、OGRE

FeedBack:
# re: OGRE中的人臉動畫 2012-06-27 21:51 
感謝博主分享。也很認同您的看法,天賦很重要,但是再走到極致之前真不應該成為放棄的借口啊  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久久免费观看视频| 亚洲你懂的在线视频| 国产一区深夜福利| 亚洲人成人一区二区在线观看| 亚洲综合清纯丝袜自拍| 欧美国产日韩xxxxx| 午夜精品福利视频| 欧美日韩在线一二三| 亚洲国产欧美一区| 久久久噜噜噜久噜久久 | 欧美国产精品v| 午夜精品美女自拍福到在线| 欧美视频观看一区| 99在线精品观看| 亚洲国产天堂久久综合| 激情综合色丁香一区二区| 麻豆精品在线播放| 亚洲二区在线观看| 蜜臀va亚洲va欧美va天堂 | 欧美不卡视频一区发布| 激情欧美日韩一区| 麻豆成人在线观看| 欧美激情免费观看| 久久夜色精品国产欧美乱| 一区二区视频免费在线观看| 久久影院午夜论| 久久久国产精品一区二区中文| 国产视频精品va久久久久久| 久久精品国语| 久久久久一区| 亚洲国产日韩欧美在线图片| 亚洲大片av| 日韩视频精品在线| 亚洲午夜精品福利| 黄色小说综合网站| 久久gogo国模裸体人体| 欧美尤物一区| 亚洲成人在线观看视频| 亚洲国产精品久久91精品| 欧美美女bb生活片| 亚洲欧美日韩一区二区在线| 午夜视频一区| 亚洲国产精品一区二区www| 亚洲精品久久久一区二区三区| 欧美三级电影网| 久久精品国产精品| 久久综合九色99| 国产精品社区| 欧美国产综合一区二区| 欧美一区亚洲二区| 亚洲激情另类| 亚洲性线免费观看视频成熟| 狠狠色综合日日| 亚洲欧洲午夜| 国产视频一区欧美| 欧美国产亚洲视频| 国产精品国产| 久久综合五月天婷婷伊人| 久久国产黑丝| 欧美激情网站在线观看| 欧美日韩国产一区二区| 久久精彩免费视频| 欧美日韩国产一区二区三区| 免播放器亚洲一区| 欧美系列电影免费观看| 欧美二区不卡| 国产无遮挡一区二区三区毛片日本| 亚洲国产精选| 狠狠色综合网| 亚洲尤物在线视频观看| 亚洲毛片在线观看.| 欧美在线视频播放| 亚洲欧美国产三级| 欧美激情影音先锋| 免费日本视频一区| 欧美一区二区黄色| 在线中文字幕不卡| 久久在线视频| 久久精品一区蜜桃臀影院| 欧美日韩高清一区| 欧美激情精品久久久久久久变态| 国产亚洲欧美日韩精品| 中文欧美字幕免费| 日韩视频永久免费| 女人天堂亚洲aⅴ在线观看| 久久伊人亚洲| 久久久国产91| 久久亚洲精品一区| 国产亚洲欧美日韩日本| 亚洲一区二区高清视频| 一区二区三区视频观看| 欧美精品亚洲二区| 亚洲欧洲视频| 99视频一区二区三区| 欧美国产日韩在线| 亚洲激情第一页| 日韩视频在线免费| 欧美久久久久久久久| 亚洲理论在线| 老司机一区二区| 欧美激情在线有限公司| 性欧美videos另类喷潮| 国产日韩av高清| 久久久久青草大香线综合精品| 久久综合亚州| 欧美精品成人| 久久久蜜桃一区二区人| 欧美国产精品一区| 亚洲影院免费| 国产在线精品二区| 免费成人激情视频| 欧美午夜在线| 欧美高清视频在线播放| 国产精品自拍视频| 亚洲精品九九| 欧美午夜电影一区| 欧美成人黄色小视频| 国产精品福利网| 亚洲激情社区| 黄色一区二区在线观看| 国产一区观看| 国产综合久久| 亚洲一区二区三区视频播放| 亚洲免费av观看| 美国十次了思思久久精品导航| 国产麻豆精品久久一二三| 亚洲精品美女| 亚洲全部视频| 久久久亚洲欧洲日产国码αv| 欧美一级播放| 国产精品久久久久一区二区三区 | 日韩一区二区免费看| 精品盗摄一区二区三区| 亚洲在线播放电影| 欧美成人午夜激情| 国产亚洲一区二区三区在线播放 | 亚洲午夜日本在线观看| 欧美国产日韩在线观看| 欧美激情久久久| 在线观看一区二区视频| 久久嫩草精品久久久精品| 久久最新视频| 亚洲国产精品高清久久久| 久久综合狠狠| 亚洲国产一区二区三区a毛片| 亚洲人体1000| 欧美日韩国产成人在线免费| 99国产精品| 亚洲欧美日韩精品综合在线观看| 99视频一区二区三区| 久久国产精品高清| 亚久久调教视频| 亚洲欧美视频一区| 亚洲国产精品成人久久综合一区| 亚洲二区精品| 欧美成人亚洲| 一区二区免费在线观看| 欧美在线999| 精东粉嫩av免费一区二区三区| 久久嫩草精品久久久精品| 红桃视频欧美| 欧美a级理论片| 99在线精品视频在线观看| 欧美日韩在线免费观看| 亚洲欧美日韩国产综合在线| 久久综合色综合88| 夜久久久久久| 国产视频观看一区| 免费不卡在线观看| 一区二区三区日韩精品| 久久久久久久成人| 亚洲精品五月天| 国产欧美精品一区aⅴ影院| 久久一区二区三区av| 亚洲乱码久久| 久久久久青草大香线综合精品| 亚洲卡通欧美制服中文| 欧美性色综合| 开元免费观看欧美电视剧网站| 99人久久精品视频最新地址| 国产精品久久久一区麻豆最新章节 | 欧美制服丝袜| 亚洲国内精品| 久久久99爱| 国产精品99久久久久久www| 国产在线精品一区二区夜色| 亚洲女与黑人做爰| 国产亚洲一区在线| 欧美日本一区二区高清播放视频| 香蕉久久一区二区不卡无毒影院| 亚洲高清不卡| 久久野战av| 亚洲欧美日韩成人| 亚洲精品久久| 在线观看三级视频欧美| 国产精品一区毛片| 欧美色图天堂网| 欧美激情一区二区三区在线视频| 欧美影院精品一区| 亚洲一区免费观看|