• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      改進的耦合面?zhèn)鬟f方法

      2015-05-30 17:15:25倪雪飛秦富春
      儷人·教師版 2015年4期

      倪雪飛 秦富春

      【摘要】計算機三維動畫是現(xiàn)在計算機的研究重點,其中,人體運動仿真技術被引用到了各個領域中。本文提出了一種基于“采樣數組”的方法計算耦合面信息。耦合面的數量很大,在交互時使矩陣計算的復雜度較高,這種方法的解決辦法是在交互面上構建一組數組,對通過碰撞檢測的耦合面進行采樣過濾,降低矩陣計算的復雜度,最后以插值計算的方式計算出沒有通過采樣的耦合面信息。

      【關鍵詞】人體運動系統(tǒng) ?耦合面 ?插值計算 ?流體仿真

      耦合面[1](Couple faces)指用于使人體流體發(fā)生交互,傳遞參數的數據結構。本文沒有采樣用原有的方法,而是在原有的耦合面?zhèn)鬟f方法上進行改進,采用了一種基于采樣數組的方法降低耦合面的傳輸量與計算量,再通過插值計算出未通過采樣的耦合面,用降低計算的精確度為代價換取運算性能的提升的優(yōu)化策略,提高了仿真效率。

      耦合面數據結構

      Struct CoupleFaces

      {

      Vec3 ? ?vn; ? // 法線向量

      Float ? ?fp; ? // 流體壓力的數值大小

      Float ? ?fa; ? // 人體對流體的加速度的數值大小

      Mesh ? ms; ? // 耦合面對應的流體網格

      Int ? ? sign; ?// 耦合面對應的人體子鏈ID

      Float ? ?fs; ? // ?耦合面面積大小

      Pair ?BodyPos; ?// 耦合面落在子鏈上的網格}

      因為耦合面作為中間層負責傳送雙方的數據,還需要保存一些預處理數據,它的結構較為復雜。其中最為重要的數據為耦合面法線向量[3]、流體壓力值和傳遞的加速度值。

      流體仿真首先取得耦合面對應的流體模型網格[2],然后將網格的加速度與網格質量相乘得到壓力值,最后將壓力值與法線信息保存進參數與。人體在得到壓力后經過矩陣計算,得到每個耦合面的加速度,這里的加速度是人體在耦合面這個位置上的實際加速度,最后人體仿真將加速度保存進參數。如果每一個耦合面需要大約12個浮點數來儲存,共需要24000個浮點數約96K。對數據的讀取可以達到實時性,下面考慮數據的運算性能。

      在計算耦合面信息時會設計到3個矩陣運算,即存在:

      (1)兩個矩陣維度與矩陣維度相乘;

      (2)一個矩陣維度與矩陣維度相乘;

      (3)一個矩陣維度與矩陣維度相乘;

      為耦合面數量,為自由度數量,計算3個矩陣方程的復雜度為,因為遠遠大于,所以復雜度等同為。當時,方程計算量為次浮點數相乘,浮點數做乘法的消耗較大,數量巨大的浮點數相乘必然會影響仿真效率。

      構建采樣數組

      采樣數組(Sampling Array)的作用是:映射子鏈上的耦合面并對其采樣。數組的每個元素由耦合面ID、子鏈ID和采樣標記等信息組成。由于要求將三維空間的耦合面映射到二維空間的采樣數組,需要對應的坐標映射公式。坐標轉換公式(1)。

      (1)

      公式(1)將三維空間中位于以某點為中心的耦合面映射到基于角度的坐標系中,由于角度值域,我們需要將其轉換到數組大小的整數坐標中。轉換公式(2)。

      (2)

      經過公式(2)的轉換,坐標代表耦合面映射到數組中的坐標??梢灾溃蓸訑到M的第一列元素為子鏈最右端的一列網格,如果從做向右掃描數組的每一列,那么相當于以子鏈最右端為起始,逆時針掃描子鏈上的所有網格。

      子鏈的包圍盒有球體、長方體、膠囊體。球體包圍盒符合上面的映射公式;膠囊體由半球與圓柱組成,半球符合映射公式(2),圓柱體的映射公式于上面公式基本類似,在這里不做多余闡述;長方體的映射公式(2)不同,其公式比較復雜,考慮到效率和公式的一致性問題,本文用球體映射公式替代長方形映射。

      耦合面采樣

      在遍歷數組尋找耦合面時,不需要遍歷整個數組,因為這樣將退化成遍歷所有的耦合面。我們設定每隔2個單位對數組采樣,取得數組單元后再判斷是否含有耦合面,如果有則進一步計算。

      數組邊緣單位需要全部采樣,直到找到存在耦合面的單位。因為采樣后的耦合面不是全部耦合面,在進行遞歸運算時,可以防止沒有找到耦合面的特殊情況。

      在對數組采樣后,只將通過采樣的耦合面?zhèn)鬟f給人體計算,對沒有采樣到的耦合面進行插值計算。耦合面的計算量縮小至少為原來的,矩陣計算復雜度為。插值計算過程如下:

      (1)遍歷所有數組網格,找到第一次沒有計算的耦合面;

      (2)以自身為坐標中心,遞歸周圍網格,在4個象限里分別找到一個已經計算過的。

      (3)進行插值計算,插值與耦合面加速度值與距離本耦合面的距離有關,其表達式為公式(3)。

      (3)

      (4)將計算完的耦合面標記到數組中;

      (5)返回(1),直到遍歷完數組。

      本文基于采樣耦合面的傳遞方法,對傳統(tǒng)的傳遞方式進行了改進,該方法對需要交互的耦合面進行適當采樣,以降低矩陣運算量,然后在通過插值計算得到為能通過采樣的耦合面信息,改進的方法在交互性能上提高了,數值的精確度達到,交互數量上穩(wěn)定的保持在倍。

      【參考文獻】

      [1]陳學文,丑武勝,劉靜華等.基于包圍盒的碰撞檢測算法研究.計算機工程與應用,2005,41(5):46-50.

      [2]Niewmeyer.Frank, Wilke.hans-Joachim, Schmidt.Hendrik. Geometry strongly influences the response of numerical models of the lumbar spine-A probabilistic finite element analysis [J]. Journal of Biomechanics, 2012, 45(8):1414-1423.

      [3]Chouvatut. Varin, Madarasmi. Suthep, Tucerya.Mihran. 3D face and motion from feature points using adaptive constrained minimal[C]. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, 2011:2207-2219.

      沂南县| 徐闻县| 永清县| 庐江县| 云梦县| 寿宁县| 景德镇市| 望江县| 漳平市| 墨竹工卡县| 广水市| 安国市| 德清县| 民丰县| 麦盖提县| 万年县| 潼关县| 乐安县| 昭通市| 建水县| 荥经县| 色达县| 成都市| 新龙县| 辉县市| 文昌市| 定西市| 张家港市| 黄冈市| 邻水| 平湖市| 宣城市| 民县| 随州市| 股票| 独山县| 清流县| 长岭县| 尖扎县| 瓮安县| 绥中县|