• <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>

            麒麟子

            ~~

            導航

            <2008年12月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            統計

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            2D Skinned Mesh(3D的完全翻版 帶旋轉)

            由下面幾個文章引發的欲望,讓我自己也試著實現了一個基于2D的骨骼動畫。

             

            一篇講述骨骼動畫數學運算的文章

            http://www.cnblogs.com/neoragex2002/archive/2007/09/13/891945.html

             

            兩篇講述骨骼動畫原理和實現的文章 一篇也是用的2D,老外的那篇用的是DX 

            http://www.shnenglu.com/Leaf/archive/2010/12/31/137818.html

             

            空明流轉用C#寫的一個,當然也可以下載源碼。只是在他的BLOG中,他未解釋任何東西。并且我也未曾下載任何源碼,不知是否源碼中有文檔

            http://www.shnenglu.com/lingjingqiu/archive/2008/06/07/52463.aspx

             

            很不爽的是,許多例子或原理講的時候沒有帶旋轉。 其實那才是重頭戲。 空明流轉的貌似有旋轉,可惜C#我也看不懂。還不如自己來一個。

            為了迎合廣大人民群眾的取向,先上圖和上碼。

            image

             

            源碼下載地址 (所有源碼和執行程序)

             

             

            本來按照某種意義上來講,這就算完事兒了。 但還是要簡單介紹一下。

            白色方塊:骨骼位置

            白色線條:骨骼空間的X軸(注意這是2D,因此只有X和Y軸)

            藍色方塊:頂點

            (要跟大家說一下對不起,因為我實在是不想仔細地去給一個讓它們看起來會很美的數據。湊合著能表達意思就行)

             

            按鍵:1 2 3 4 5 6 7 8(非小鍵盤)你自己按了就知道。

             

            環境:C++ VS 2005 HGE(僅是用于渲染)。

             

            關于那些代碼

            對于骨骼數據的存儲,我并未采用兄弟+孩子節點的表示法。 而是將他們存在了一個數組里。 并標記一個骨骼的父骨骼在數組中的索引。

            這樣不管是從數據存儲還是訪問上,都很方便。

            另外,骨骼數據并未存放著“它影響了哪些頂點,影響權重”等信息,這些則交由模型持有。 這樣一來,骨骼數據本身就是一堆矩陣的數

            據運算,并不涉及其它結構。 放哪都是一樣的。 目前是2D的數據運算。 若有兄弟有蛋疼,將它換成3D數據試試。本想出一個很好的演示

            樣例,突然發現數據構建太費勁了,只好省去! 此次也沒有做動畫,而是做了一個手動控制。

             

            關于這次蛋疼的目的

            這次蛋疼的目的僅是想充分理解一下骨骼運算。因為公司的骨骼動畫并非由我完成的,所以自己沒有實際操刀做過。由此想自己實現一次,而3D

            數據構造又太麻煩。 既然僅是數學運算,何必要找3D呢,2D即可。

             

            關于這次的收獲

            這次寫了順便寫了一個2D的向量和一個2D矩陣運算類。矩陣求逆那里很費了一下時間,后來才發現是一個地方寫錯了。 不過糾結總歸有好處,至

            少映像更深。 其間參考了許多原碼,由此不得不說明一下我遇到的一些TIP

             

            一、骨骼數據的存放一般是分開存放的。分為“位移,縮放,旋轉”。 在動畫插值時分別插值。 因為矩陣的線性插值形成的旋轉效果是不對的。

            (因為SIN COS)并非線性。而位移和縮放通常情況下是固定的常量。不需要進行插值,由此還能省去不少運算。

            二、骨骼權重和要為1 (這句有點廢)

            三、用SHADER進行骨骼運算時,由于全都是世界矩陣。 由此可省掉一個(0,0,0,1)。 于是,一個骨骼矩陣可以節約一個寄存器。(這

            也是老生常淡了)

            四、能有耐心地看完DX的例子的人,一定是強人。 因為我一個也沒堅持看完過。

            五、多看看DX SDK,即使同一頁,每一次你都會有新收獲。

             

            關于下一次蛋疼計劃

            整理一下先前寫的那個3D例子。雖然與VCZH那個比起來很遜,但畢竟是自己生的。

             

            有興趣的朋友就下載來看看吧,一切盡在不言中,我自我感覺那代碼比較好懂。不而要我多解釋。 加上上面好幾篇文章作為“巨人的肩膀”。

            謝謝。

             

            GMAIL: BOYUEGAME

             

            時間到,洗洗睡!各位晚安。

            posted on 2011-01-14 00:24 麒麟子 閱讀(2299) 評論(2)  編輯 收藏 引用 所屬分類: GPU and Graphic

            評論

            # re: 2D Skinned Mesh(3D的完全翻版 帶旋轉) 2011-01-14 15:23 空明流轉

            注釋在代碼上,文章里面解釋起來比較麻煩。  回復  更多評論   

            # re: 2D Skinned Mesh(3D的完全翻版 帶旋轉) 2011-01-14 15:24 Rambler

            @空明流轉
            嗯,我也是這樣想的。哈哈  回復  更多評論   

            久久精品嫩草影院| 久久精品国产一区| 久久精品国产亚洲av麻豆图片| 久久狠狠一本精品综合网| 武侠古典久久婷婷狼人伊人| 伊人久久大香线蕉AV一区二区| 东方aⅴ免费观看久久av| 久久永久免费人妻精品下载| 青青草原综合久久| 精品国产乱码久久久久软件| 国产精品一区二区久久| 热综合一本伊人久久精品| 亚洲中文字幕久久精品无码喷水| 秋霞久久国产精品电影院| 久久99精品国产麻豆宅宅| 久久精品?ⅴ无码中文字幕| 中文字幕久久久久人妻| 久久无码AV中文出轨人妻| 狠狠干狠狠久久| 亚洲国产美女精品久久久久∴ | 久久强奷乱码老熟女| 亚洲va中文字幕无码久久| 久久精品国产国产精品四凭| 97精品伊人久久大香线蕉app| 亚洲精品综合久久| 久久久亚洲精品蜜桃臀| 青青国产成人久久91网| 精品久久久久久无码中文字幕一区 | 精品久久久久久国产91| 77777亚洲午夜久久多人| 三级三级久久三级久久| 一级做a爰片久久毛片看看| 久久精品无码一区二区日韩AV| 99久久精品国产综合一区| 久久综合九色综合97_久久久| 69久久夜色精品国产69| 国产成人久久激情91| 99久久人妻无码精品系列蜜桃| 国产精品久久午夜夜伦鲁鲁| 俺来也俺去啦久久综合网| 99久久精品影院老鸭窝|