国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種三維人體模型的網(wǎng)格簡化約束方法

      文檔序號:6560792閱讀:347來源:國知局
      專利名稱:一種三維人體模型的網(wǎng)格簡化約束方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)圖形學(xué)領(lǐng)域,特別涉及一種三維人體模型的網(wǎng)格簡化約束。
      背景技術(shù)
      對計(jì)算機(jī)生成空間的三維表面模型進(jìn)行簡化,是視頻游戲等領(lǐng)域廣泛使用的技術(shù)之一,可以降低模型的幾何復(fù)雜度、提高場景繪制的速度。對三維表面模型進(jìn)行連續(xù)簡化,還可以以很少的存儲量構(gòu)造出復(fù)雜度連續(xù)變化的一系列簡化模型,方便模型根據(jù)需要在不同復(fù)雜度之間平滑過渡,簡化結(jié)果還可以在網(wǎng)絡(luò)上以漸進(jìn)的方式進(jìn)行傳輸。三維人體模型作為安全預(yù)演、影視制作、視頻游戲等領(lǐng)域的要素之一,其簡化還有利于減少人體模型處理占用的硬件資源,提高場景中虛擬人的規(guī)模,具有廣泛的應(yīng)用范圍和很高的使用價(jià)值。
      目前,驅(qū)動三維人體表面模型運(yùn)動一般采用骨骼蒙皮方法,即認(rèn)為表面模型上每個(gè)頂點(diǎn)的運(yùn)動會受到附近多個(gè)人體骨骼不同程度的影響,在各骨骼做不同旋轉(zhuǎn)運(yùn)動情況下形成人體的各個(gè)運(yùn)動姿態(tài),使用這種方法可以模擬各種運(yùn)動中人體皮膚的變形效果,逼真性和計(jì)算效率都很高,但這種方法給人體模型的簡化處理帶來了麻煩?,F(xiàn)有技術(shù)在處理骨骼蒙皮人體模型的簡化時(shí)存在如下局限(1)、在參考文獻(xiàn)1“A.Mohr and M.Gleicher.Deformation sensitive decimation.TR.University of Wisconsin Graphics Group,2003.http//www.cs.wisc.edu/graphics/Gallery/DSD/”;參考文獻(xiàn)2“A.Shamir,C.Bajaj,andV.Pascucci.Multiresolution dynamic meshes with arbitrary deformations.In Proceedingsof the conference on Visualization 2000423-430”;參考文獻(xiàn)3“A.Shamir andV.Pascucci.Temporal and spatial level of details for dynamic meshes.In Proceedings ofVirtual Reality Systems and Techniques,2001423-430”和參考文獻(xiàn)4“S.Kircher andM.Garland.Progressive multiresolution meshes for deforming surfaces.InACM/Eurographics Symposium on Computer Animation,2005191-200.”中所描述的方法中都存在簡化結(jié)果與具體的運(yùn)動姿態(tài)耦合度高,簡化結(jié)果不具有通用性的缺陷。利用上述方法得到的簡化結(jié)果中,一個(gè)姿態(tài)通常只能對應(yīng)一個(gè)簡化結(jié)果,當(dāng)前幀的簡化結(jié)果不能應(yīng)用到下一幀。
      (2)、在參考文獻(xiàn)5“J.Houle and P.Poulin.Simplification and real-time smoothtransitions of articulated meshes.In Graphics Interface 200155-60.”;參考文獻(xiàn)6“D.Schmalstieg and A.Fuhrmann.Coarse view-dependent levels of detail forhierarchical and deformable models.Technical Report TR-186-2-99-20,ViennaUniversity of Technology,1999.”中所描述的方法則存在耦合度低,但逼真性和實(shí)時(shí)性較低等缺陷。如何以低耦合度,完成逼真的、實(shí)時(shí)性高的骨骼蒙皮人體模型的簡化,從而應(yīng)用于規(guī)模人群的驅(qū)動,是計(jì)算機(jī)圖形學(xué)的研究熱點(diǎn)和難點(diǎn)之一。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于克服現(xiàn)有技術(shù)對骨骼蒙皮人體模型做簡化時(shí),所存在的簡化結(jié)果與具體的運(yùn)動姿態(tài)耦合度高,簡化結(jié)果不具有通用性或者耦合度低,但逼真性和實(shí)時(shí)性較低的缺陷,從而提供一種低耦合、逼真性高的網(wǎng)格簡化約束方法。
      為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種三維人體模型的網(wǎng)格簡化約束方法,包括以下步驟1)、在人體模型的標(biāo)準(zhǔn)姿態(tài)模型上選擇需要添加支撐環(huán)約束的地方;2)、為標(biāo)準(zhǔn)姿態(tài)模型中每處添加支撐環(huán)的地方,選中模型上的三個(gè)頂點(diǎn),惟一確定一個(gè)支撐環(huán)所在的平面;3)、從步驟2)中所選定的三個(gè)頂點(diǎn)中選擇其中的一個(gè)頂點(diǎn),作為支撐環(huán)的第一個(gè)組成頂點(diǎn),并在該頂點(diǎn)的鄰域頂點(diǎn)集合內(nèi)搜索新的頂點(diǎn),所述的新的頂點(diǎn)位于支撐環(huán)所在平面或到此平面的距離在設(shè)定閾值范圍內(nèi);4)、以步驟3)中所搜索到的新的頂點(diǎn)為起點(diǎn),重復(fù)執(zhí)行步驟3)中的搜索,直到滿足搜索終止條件;5)、根據(jù)人體模型上的邊與步驟1中所添加的支撐環(huán)間的關(guān)系,為所述人體模型上的邊分類;6)、根據(jù)步驟5)中對邊的不同分類,對不同類型的邊采用不同的方法計(jì)算邊的折合權(quán)值和邊的折合位置,將計(jì)算結(jié)果存放在一個(gè)堆中;7)、根據(jù)步驟6)的計(jì)算結(jié)果,從堆中選取具有最小折合權(quán)值的邊,準(zhǔn)備進(jìn)行折合;如果已經(jīng)沒有可供折疊的邊,或者簡化的結(jié)果已經(jīng)達(dá)到用戶的要求,則簡化完成,結(jié)束操作;8)、判斷步驟7)中所選擇的具有最小折合權(quán)值的邊是否具備折合資格,若不具備折合資格,且當(dāng)前的具有最小折合權(quán)值的邊的折合權(quán)值為無窮大,則所有邊都不可簡化,簡化過程結(jié)束;若屬于不具備折合資格的其他情況,則將當(dāng)前邊的折合權(quán)值設(shè)為無窮大,并保存到存放邊的堆中,然后跳轉(zhuǎn)到步驟7),若具備折合資格,則執(zhí)行下一步;9)、根據(jù)步驟6)得到的邊的折合位置,對當(dāng)前邊進(jìn)行折合;10)、進(jìn)行折合后的更新操作,包括邊的更新操作,即對折合位置附近的其它邊,如果其有端點(diǎn)連接到當(dāng)前折合邊上,則這些邊因折合發(fā)生改變,依據(jù)步驟6),重新計(jì)算折合權(quán)值和折合位置;支撐環(huán)的更新操作,即若折合后的邊的兩個(gè)端點(diǎn)屬于同一支撐環(huán),則從環(huán)中刪除因折合而消失的環(huán)內(nèi)頂點(diǎn)及相關(guān)信息。
      上述技術(shù)方案中,在所述的步驟1)中,為所述的人體模型的標(biāo)準(zhǔn)姿態(tài)模型上添加支撐環(huán)約束時(shí),所添加的位置包括2-1)、對于腕,肘,肩,頸,頭,胸,腰,髖,膝,踝關(guān)節(jié),每個(gè)關(guān)節(jié)添加一個(gè)支撐環(huán);2-2)、在相鄰關(guān)節(jié)之間、模型表面曲率變化大的地方,主要指胸關(guān)節(jié)以上、肩關(guān)節(jié)和經(jīng)關(guān)節(jié)以下、處于人體腋部附近的部位,每個(gè)部位添加一個(gè)支撐環(huán);2-3)、為人體模型上的每個(gè)環(huán)形邊界添加一個(gè)支撐環(huán)。
      在所述的步驟2)中,所述的選中模型上的三個(gè)頂點(diǎn)時(shí),所述三個(gè)頂點(diǎn)的選擇原則如下3-1)三個(gè)頂點(diǎn)形成的平面,其周圍應(yīng)分布著較多的頂點(diǎn);3-2)若支撐環(huán)所在的位置屬于2-1)的情況,則環(huán)平面的法向需要考慮當(dāng)前關(guān)節(jié)的直接父親關(guān)節(jié)和直接孩子關(guān)節(jié),如果當(dāng)前關(guān)節(jié)僅有一個(gè)直接孩子關(guān)節(jié),則環(huán)平面的法向所在直線應(yīng)該介于直接父親關(guān)節(jié)中心到當(dāng)前關(guān)節(jié)中心的連線和當(dāng)前關(guān)節(jié)中心到其直接子關(guān)節(jié)中心的連線中間;如果當(dāng)前關(guān)節(jié)有多個(gè)直接孩子關(guān)節(jié)或無孩子關(guān)節(jié)時(shí),可將直接父親關(guān)節(jié)中心到當(dāng)前關(guān)節(jié)中心的連線作為環(huán)面的法向;3-3)若支撐環(huán)所在的位置屬于2-2)的情況,則支撐環(huán)應(yīng)該環(huán)繞模型表面相應(yīng)位置曲率較大的地方;3-4)若支撐環(huán)所在的位置屬于2-3)的情況,則將邊界上的所有頂點(diǎn)都容納到環(huán)當(dāng)中;3-5)若支撐環(huán)所在的位置屬于2-1)的情況,則當(dāng)前關(guān)節(jié)中心到環(huán)平面的距離應(yīng)該盡可能小。
      上述技術(shù)方案中,在所述的步驟3)中,所述的在當(dāng)前頂點(diǎn)的鄰域頂點(diǎn)集合內(nèi)搜索新的頂點(diǎn)時(shí),應(yīng)同時(shí)滿足以下條件4-1)、新頂點(diǎn)不屬于任何已構(gòu)造支撐環(huán);4-2)、新頂點(diǎn)到當(dāng)前支撐環(huán)環(huán)面的距離在用戶設(shè)定的閾值范圍內(nèi);4-3)、新頂點(diǎn)與環(huán)內(nèi)已有頂點(diǎn)形成的部分環(huán)構(gòu)成一個(gè)準(zhǔn)凸多邊形弧,此弧中相鄰邊的夾角為直角或鈍角;4-4)、新頂點(diǎn)和環(huán)內(nèi)除當(dāng)前頂點(diǎn)外的其它頂點(diǎn)之間都不存在連接當(dāng)新頂點(diǎn)是當(dāng)前支撐環(huán)上找到的最后一個(gè)頂點(diǎn)時(shí),除同當(dāng)前頂點(diǎn)相連外,還必須同當(dāng)前支撐環(huán)上第一個(gè)確定的頂點(diǎn)相連接。
      在所述的步驟4)中,所述的搜索終止條件為5-1)當(dāng)前支撐環(huán)上的頂點(diǎn)數(shù)目已經(jīng)超過4;5-2)當(dāng)前點(diǎn)的前一個(gè)頂點(diǎn)、當(dāng)前點(diǎn)、搜索開始時(shí)的第一個(gè)頂點(diǎn)之間的夾角為直角或鈍角;5-3)步驟2)中尋找到的三個(gè)頂點(diǎn)都已經(jīng)添加到當(dāng)前支撐環(huán)中。
      上述技術(shù)方案中,在所述的步驟5)中,為所述人體模型上的邊分類的分類標(biāo)準(zhǔn)為6-1)、邊的兩個(gè)端點(diǎn)都不屬于任何支撐環(huán);6-2)、邊的一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán);6-3)、邊的兩個(gè)端點(diǎn)分別屬于不同的支撐環(huán);6-4)、邊的兩個(gè)端點(diǎn)屬于相同的支撐環(huán)。
      在所述的步驟6)中,所述的對不同類型的邊采用不同的方法計(jì)算邊的新合權(quán)值和邊的折合位置是指7-1)對于6-1)中的類別,使用基本簡化算法計(jì)算邊的權(quán)值和折合位置;7-2)對于6-2)中的類別,邊的折合位置為邊中屬于某支撐環(huán)的端點(diǎn),折合權(quán)值使用基本簡化算法計(jì)算;7-3)對于6-3)中的類別,不允許此邊進(jìn)行折合,設(shè)定其折合權(quán)值為無窮大,無需計(jì)算折合位置;
      7-4)對于6-4)中的類別,以折合后的位置必須在環(huán)面上為約束,使用基本簡化算法計(jì)算折合權(quán)值和折合位置。
      所述的基本簡化算法為基于邊折合的算法,包括Qslim算法。
      在所述的步驟8)中,所述的折合資格的判斷標(biāo)準(zhǔn)為9-1)、如果邊的折合權(quán)值為無窮大,則該邊不具備折合資格;9-2)、判斷若此邊被折合,模型的拓?fù)涫欠駮l(fā)生改變,如果是,則不具備折合資格;9-3)、判斷若此邊被折合,是否會導(dǎo)致任何支撐環(huán)被破壞,若是,則不具備折合資格,否則具備折合資格。
      本發(fā)明的優(yōu)點(diǎn)在于(a)、使用該約束進(jìn)行簡化,其簡化過程不依賴于任何具體人體運(yùn)動姿態(tài)而只依賴于接受簡化的人體模型本身,而同一簡化結(jié)果可經(jīng)過骨骼蒙皮驅(qū)動方法生成不同的運(yùn)動姿態(tài),因此實(shí)現(xiàn)了簡化結(jié)果與運(yùn)動姿態(tài)的低耦合;(b)、簡化中該約束在關(guān)節(jié)附近保留了必要模型細(xì)節(jié),保證了簡化模型經(jīng)骨骼蒙皮方法驅(qū)動后的運(yùn)動姿態(tài)具有低復(fù)雜度和高逼真度;(c)、本發(fā)明所描述的骨骼蒙皮人體模型簡化約束,能夠生成低耦合、高質(zhì)量的簡化結(jié)果,滿足各種實(shí)時(shí)應(yīng)用的需要。


      圖1為支撐環(huán)的示意圖;圖2為在膝關(guān)節(jié)和踝關(guān)節(jié)添加了支撐環(huán)約束的示意圖;圖3為在胸關(guān)節(jié)和肩關(guān)節(jié)之間添加支撐環(huán)約束的示意圖;圖4為在人體模型上衣袖口處添加支撐環(huán)約束的示意圖;圖5為單父親單子孫關(guān)節(jié)處的支撐環(huán)的環(huán)面示意圖;圖6為單父親多子孫關(guān)節(jié)處的支撐環(huán)的環(huán)面示意圖;圖7為添加好支撐環(huán)約束的人體模型的示意圖;圖8為一個(gè)頂點(diǎn)與其鄰域頂點(diǎn)的示意圖;圖9為Qslim算法的流程圖;圖10為Qslim算法結(jié)合本發(fā)明時(shí),三維人體模型的網(wǎng)格簡化流程圖;圖11為人體模型中一個(gè)膝關(guān)節(jié)及其支撐環(huán)平面的示意圖;
      圖12為一個(gè)實(shí)施例中在膝關(guān)節(jié)附近選擇三個(gè)頂點(diǎn)的示意圖;圖13為頂點(diǎn)A的鄰域頂點(diǎn)的示意圖;圖14為從頂點(diǎn)A的鄰域頂點(diǎn)中選中A5作為支撐環(huán)的頂點(diǎn)后膝關(guān)節(jié)的示意圖;圖15為A5的鄰域頂點(diǎn)的示意圖;圖16為從頂點(diǎn)A5的鄰域頂點(diǎn)中選中B4作為支撐環(huán)所作面的頂點(diǎn)后膝關(guān)節(jié)的示意圖;圖17為頂點(diǎn)M的鄰域頂點(diǎn)的示意圖;圖18為膝關(guān)節(jié)最后形成的支撐環(huán)的示意圖;圖19A為不屬于任何支撐環(huán)的頂點(diǎn)集合的邊的兩個(gè)端點(diǎn)在折合前的示意圖;圖19B為不屬于任何支撐環(huán)的頂點(diǎn)集合的邊的兩個(gè)端點(diǎn)在折合后的示意圖;圖20A為一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán)的邊在折合前的示意圖;圖20B為一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán)的邊在折合后的示意圖;圖21為邊的兩個(gè)端點(diǎn)分別屬于不同的支撐環(huán)的情況時(shí)不允許折合的示意圖;圖22A為兩個(gè)端點(diǎn)屬于相同的支撐環(huán)的邊在折合前的示意圖;圖22B為兩個(gè)端點(diǎn)屬于相同的支撐環(huán)的邊在折合后的示意圖。
      具體實(shí)施例方式
      下面結(jié)合附圖和具體實(shí)施方式
      對本發(fā)明的方法做進(jìn)一步的說明。
      本發(fā)明的三維人體模型的網(wǎng)格簡化約束方法與網(wǎng)格簡化算法相結(jié)合,可實(shí)現(xiàn)骨骼蒙皮人體模型的簡化。本發(fā)明的網(wǎng)格簡化約束方法可以與多種網(wǎng)格簡化算法相結(jié)合,在本實(shí)施例中,假設(shè)所述的網(wǎng)格簡化算法是基于邊的折合來實(shí)現(xiàn)模型的簡化。Qslim算法是一種典型的基于邊的折合的網(wǎng)格簡化算法,在以下的描述中將本發(fā)明的網(wǎng)格簡化約束方法與Qslim算法相結(jié)合,實(shí)現(xiàn)對人體模型的簡化。
      首先對Qslim算法進(jìn)行說明。Qslim算法為模型中的每條邊計(jì)算權(quán)值,用以估計(jì)和表示折合每條邊時(shí)帶來的誤差,并按權(quán)值的大小對每條邊進(jìn)行堆排序;簡化時(shí),按照貪婪法從當(dāng)前堆中選取權(quán)值最小的邊進(jìn)行折合,重復(fù)此操作直到滿足用戶要求或所有邊都已經(jīng)折合完畢。但Qslim算法只能夠?qū)崿F(xiàn)對靜物模型的簡化。如果單獨(dú)使用Qslim算法簡化人體的每個(gè)姿態(tài),簡化結(jié)果只與具體姿態(tài)一一對應(yīng),不但存儲量大,而且不能為其它姿態(tài)所用(耦合度高);如果使用Qslim算法簡化標(biāo)準(zhǔn)姿態(tài)的人體模型,再借助骨骼帶動皮膚運(yùn)動的骨骼蒙皮驅(qū)動方式從標(biāo)準(zhǔn)姿態(tài)的簡化結(jié)果生成其它姿態(tài)的簡化結(jié)果(耦合度低),會導(dǎo)致走樣現(xiàn)象。因此,對骨骼蒙皮人體模型的簡化不能直接采用Qslim算法。
      結(jié)合Qslim算法和本發(fā)明提出的網(wǎng)格簡化約束方法,則可以在保持簡化結(jié)果與具體運(yùn)動姿態(tài)相對獨(dú)立的前提下,減少走樣現(xiàn)象的發(fā)生,提高簡化結(jié)果的質(zhì)量。
      結(jié)合本發(fā)明的網(wǎng)格簡化約束方法和Qslim算法實(shí)現(xiàn)骨骼蒙皮人體模型簡化包括兩個(gè)步驟首先,在簡化之前,根據(jù)需要為模型表面多處添加支撐環(huán)約束;其次,在簡化過程中,通過判斷當(dāng)前需要進(jìn)行折合的邊與支撐環(huán)約束的關(guān)系,確定具體的簡化策略并進(jìn)行簡化。下面結(jié)合Qslim簡化算法對本發(fā)明進(jìn)行進(jìn)一步的實(shí)施描述。
      在人體模型的標(biāo)準(zhǔn)姿態(tài)模型上添加“支撐環(huán)”約束,“支撐環(huán)”約束在簡化模型前添加,添加“支撐環(huán)”約束包括以下步驟步驟1)確定支撐環(huán)約束的個(gè)數(shù)和位置,一般包括三部分,即a)、對于腕,肘,肩,頸,頭,胸,腰,髖,膝,踝等關(guān)節(jié),每個(gè)關(guān)節(jié)添加一個(gè)支撐環(huán),在圖2中,在人體模型的膝、踝關(guān)節(jié)上添加了支撐環(huán);b)、在相鄰關(guān)節(jié)之間、模型表面曲率變化大的地方,主要指胸關(guān)節(jié)以上、肩關(guān)節(jié)和經(jīng)關(guān)節(jié)以下、處于人體腋部附近的部位,每個(gè)部位添加一個(gè)支撐環(huán),如圖3中,在人體的胸關(guān)節(jié)以上添加了一個(gè)支撐環(huán);c)、對于人體模型上的環(huán)形邊界,如附著在模型上的上衣袖口,為每個(gè)邊界添加一個(gè)支撐環(huán),在圖4中,為人體模型的上衣袖口添加一個(gè)支撐環(huán)。
      步驟2)為每處添加支撐環(huán)的地方,通過交互方式,選中模型上的三個(gè)頂點(diǎn),從而惟一確定一個(gè)平面即支撐環(huán)所在的平面,其中,三個(gè)頂點(diǎn)的選擇依據(jù)如下原則a)三個(gè)頂點(diǎn)形成的平面,其周圍應(yīng)分布較多的頂點(diǎn),否則難以確定環(huán)內(nèi)其它頂點(diǎn);b)若支撐環(huán)所在的位置屬于步驟1)中的a)情況,則平面的法向需要考慮當(dāng)前關(guān)節(jié)的直接父親關(guān)節(jié)和直接孩子關(guān)節(jié)。由于人體模型中每個(gè)關(guān)節(jié)僅有一個(gè)直接父親關(guān)節(jié),如果當(dāng)前關(guān)節(jié)僅有一個(gè)直接孩子關(guān)節(jié),如圖5所示,環(huán)面的法向所在直線應(yīng)該介于直接父親關(guān)節(jié)中心(j0)到當(dāng)前關(guān)節(jié)中心(j1)的連線和當(dāng)前關(guān)節(jié)中心(j1)到其直接子關(guān)節(jié)中心(j2)的連線中間;如果當(dāng)前關(guān)節(jié)有多個(gè)孩子關(guān)節(jié)時(shí),如圖6,可將直接父親關(guān)節(jié)中心(j0)到當(dāng)前關(guān)節(jié)中心(j1)的連線作為環(huán)面的法向;
      c)若支撐環(huán)所在的位置屬于步驟1)中b)情況,則支撐環(huán)應(yīng)該環(huán)繞模型表面相應(yīng)位置曲率較大的地方,環(huán)面的法向因此確定;d)若支撐環(huán)所在的位置屬于步驟1)中c)情況,則應(yīng)當(dāng)考慮將邊界上的所有頂點(diǎn)都容納到環(huán)當(dāng)中,環(huán)面的法向因此確定;e)若支撐環(huán)所在的位置屬于步驟1)中a)情況,則當(dāng)前關(guān)節(jié)中心到環(huán)平面的距離應(yīng)該盡可能小。
      步驟3)任意選取三個(gè)頂點(diǎn)中的一個(gè)作為支撐環(huán)的第一個(gè)組成頂點(diǎn),記為P1,在此頂點(diǎn)的所有模型表面上的鄰域頂點(diǎn)中搜索,如果遇到的一個(gè)頂點(diǎn)P2滿足以下條件,則認(rèn)為該頂點(diǎn)基本上在環(huán)面上,按先后順序添加到支撐環(huán)當(dāng)中,具體條件如下a)、P2不屬于任何已構(gòu)造支撐環(huán);b)、P2到當(dāng)前支撐環(huán)環(huán)面的距離在用戶設(shè)定的閾值范圍內(nèi);c)、P2與環(huán)內(nèi)已有頂點(diǎn)形成的部分環(huán)構(gòu)成一個(gè)準(zhǔn)凸多邊形弧,此弧中相鄰邊的夾角為非銳角;d)、P2和環(huán)內(nèi)除P1外的其它頂點(diǎn)之間都不存在連接。
      在上述說明中,所述的領(lǐng)域頂點(diǎn)是指一個(gè)頂點(diǎn)在模型表面上與其相鄰接的頂點(diǎn)。如圖8所示,頂點(diǎn)V有8個(gè)領(lǐng)域頂點(diǎn),分別用1、2、3、4、5、6、7、8標(biāo)記。
      步驟4)以新添加的頂點(diǎn)Pi為起點(diǎn),重復(fù)使用步驟3)中的方式繼續(xù)尋找其它頂點(diǎn);如果在Pi的領(lǐng)域頂點(diǎn)中發(fā)現(xiàn)頂點(diǎn)P1,并且滿足以下條件,則認(rèn)為支撐環(huán)尋找結(jié)束,具體條件如下a)當(dāng)前支撐環(huán)上的頂點(diǎn)數(shù)目已經(jīng)超過4;b)Pi-1,Pi,P1之間的夾角為直角或鈍角;c)步驟2)中尋找到的三個(gè)頂點(diǎn)都已經(jīng)添加到當(dāng)前支撐環(huán)中。
      通過上述的操作,可確定人體模型中支撐環(huán)的個(gè)數(shù)和位置,以及每個(gè)支撐環(huán)所在的平面和支撐環(huán)上的頂點(diǎn)。求得人體模型上的支撐環(huán)后,開始對人體模型進(jìn)行簡化。
      圖1就是一個(gè)支撐環(huán)的示意圖,在該圖中,從頂點(diǎn)V0開始,可依次尋找支撐環(huán)中的其他頂點(diǎn)V1、V2、V3至Vn。
      結(jié)合“支撐環(huán)”約束實(shí)現(xiàn)骨骼蒙皮人體模型的簡化,所有支撐環(huán)都已經(jīng)確定后,如圖7所示,開始模型的簡化,在模型進(jìn)行簡化時(shí),主要是要實(shí)現(xiàn)對邊的折合,具體簡化步驟如下
      步驟5)對人體模型上的邊與支撐環(huán)的關(guān)系進(jìn)行分類,有四種類別a)兩個(gè)端點(diǎn)都不屬于任何支撐環(huán)的頂點(diǎn)集合;b)一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán);c)兩個(gè)端點(diǎn)分別屬于不同的支撐環(huán);d)兩個(gè)端點(diǎn)屬于相同的支撐環(huán)。
      在上述說明中,所述的邊是指兩個(gè)頂點(diǎn)間的連線,如圖8所示,頂點(diǎn)V和頂點(diǎn)1之間的連線就是所述的邊,頂點(diǎn)V與其他的鄰域頂點(diǎn)2、3、4、5、6、7、8間都存在邊。
      步驟6)根據(jù)分類,使用不同的方法計(jì)算邊的權(quán)值,具體如下a)對應(yīng)步驟5)中a)類別,使用標(biāo)準(zhǔn)Qslim算法計(jì)算方法計(jì)算邊的權(quán)值和折合位置;b)對應(yīng)步驟5)中b)類別,邊的折合位置為邊中屬于某支撐環(huán)的端點(diǎn),折合權(quán)值使用標(biāo)準(zhǔn)Qslim算法計(jì)算;c)對應(yīng)步驟5)中c)類別,不允許此邊進(jìn)行折合,設(shè)定其折合權(quán)值為∞,無需計(jì)算折合位置;d)對應(yīng)步驟5)中d)類別,以折合后的位置必須在環(huán)面上為約束,結(jié)合標(biāo)準(zhǔn)Qslim算法求得新的優(yōu)化解析式,據(jù)此計(jì)算折合權(quán)值和折合位置;步驟7)選取具有最小折合權(quán)值的邊,準(zhǔn)備進(jìn)行折合;如果堆中已經(jīng)沒有可供折疊的邊,或者已經(jīng)達(dá)到用戶的要求(如模型的最低復(fù)雜度),則簡化完成,程序退出;步驟8)依據(jù)以下條件,判斷所選擇的具有最小折合權(quán)值的邊是否具備折合資格a)如果邊的折合權(quán)值為∞,則該邊不具備折合資格,b)判斷若此邊被折合,模型的拓?fù)涫欠駮l(fā)生改變,如果是,則不具備折合資格,c)判斷若此邊被折合,是否會導(dǎo)致任何支撐環(huán)被破壞,即不再遵循步驟1)中所設(shè)定的支撐環(huán)的定義,若是,則不具備折合資格,否則具備折合資格;如果不具備折合資格,且屬于a)的情況,則可判斷出當(dāng)前堆中的所有邊都不可簡化,因此簡化結(jié)束;若屬于除a)之外的其它情況,則設(shè)置其折合權(quán)值為∞,將其放回保存邊的堆中,并轉(zhuǎn)到步驟7);
      步驟9)按標(biāo)準(zhǔn)邊折合步驟和預(yù)先計(jì)算好的邊折合位置,對此邊進(jìn)行折合;步驟10)對一些因折合而改變的邊,需要按照步驟5)和步驟6)中的分類和計(jì)算方法,重新計(jì)算折合權(quán)值和折合位置;如果邊與支撐環(huán)的關(guān)系分類屬于步驟5)中的d),則從環(huán)中刪除因折合而消失的環(huán)內(nèi)頂點(diǎn)及相關(guān)信息;最后轉(zhuǎn)到步驟7)進(jìn)行下一條邊的選取和簡化。
      從上述實(shí)施方案可以看出,骨骼蒙皮人體模型的簡化,可分為添加支撐環(huán)約束和結(jié)合支撐環(huán)約束和基本簡化算法對原始模型進(jìn)行簡化兩個(gè)主要步驟。本實(shí)施方法通過交互方式完成支撐環(huán)約束的添加。對標(biāo)準(zhǔn)姿態(tài)的人體模型進(jìn)行簡化的結(jié)果具有通用性,即可以經(jīng)過骨骼蒙皮皮膚變形方法,以較高的逼真度生成復(fù)雜度低的其它姿態(tài)。使用本發(fā)明增加的空間復(fù)雜度為O(n),n為模型中頂點(diǎn)的個(gè)數(shù);增加的時(shí)間復(fù)雜度依賴于具體的簡化算法,在本實(shí)施方案中,使用支撐環(huán)約束后,時(shí)間復(fù)雜度不變,仍為O(nlog(n)),n為模型的邊數(shù)。
      以膝關(guān)節(jié)為例,對其添加支撐環(huán)的過程進(jìn)行說明。
      如圖11所示,為人體模型中一個(gè)膝關(guān)節(jié)的示意圖,在人體模型上布滿了由頂點(diǎn)和邊組成的三角形。在圖12中,在膝關(guān)節(jié)附近選擇三個(gè)頂點(diǎn),分別標(biāo)記為A、B、C。這三個(gè)頂點(diǎn)構(gòu)成了一個(gè)平面,該平面的法向符合圖11中肢體的基本走向。
      然后,以三個(gè)頂點(diǎn)中的A點(diǎn)開始,搜索支撐環(huán)所在平面內(nèi)的點(diǎn)。如圖13所示,頂點(diǎn)A有6個(gè)鄰域頂點(diǎn),用A1~A6表示,對6個(gè)鄰域頂點(diǎn)到支撐環(huán)平面的距離分別進(jìn)行計(jì)算,假設(shè)其中的A5到環(huán)平面的距離最小,選中A5作為支撐環(huán)所在平面內(nèi)的點(diǎn),選中A5后膝關(guān)節(jié)如圖14所示。選定A5作為支撐環(huán)面內(nèi)的頂點(diǎn)后,再從從A5出發(fā),作進(jìn)一步搜索。如圖15所示,A5的鄰域頂點(diǎn)有A、B1~B5,A離環(huán)平面最近,但是A已經(jīng)在環(huán)平面上,因此,選擇頂點(diǎn)B4。選中B4后的膝關(guān)節(jié)如圖16所示。重復(fù)上述的搜索過程,直到選中B點(diǎn)的鄰接頂點(diǎn)M后,如圖17所示,此時(shí)M的鄰域頂點(diǎn)有A、B、M1~M4,其中,B、A離環(huán)平面最近,由于B已經(jīng)選中;若選擇A,則一個(gè)環(huán)形連接已經(jīng)形成,此時(shí),檢查此環(huán)形連接,符合支撐環(huán)的條件,因此,此環(huán)尋找結(jié)束,最后形成的支撐環(huán)如圖18所示。
      下面根據(jù)步驟5)中所描述的邊與支撐環(huán)間的四種關(guān)系,對折合情況進(jìn)行舉例說明。
      圖19是對邊的兩個(gè)端點(diǎn)都不屬于任何支撐環(huán)的頂點(diǎn)集合的情況進(jìn)行折合的示意圖,其中的圖19A是折合前的圖像,圖19B是折合后的圖像,對于這種情況只需要使用基本簡化算法進(jìn)行折合即可。
      圖20是對邊的一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán)的情況進(jìn)行折合的示意圖,其中的圖20A是折合前的圖像,圖20B是折合后的圖像,對這種情況的邊進(jìn)行折合時(shí),點(diǎn)的折合位置為在環(huán)上的端點(diǎn)。
      圖21是對邊的兩個(gè)端點(diǎn)分別屬于不同的支撐環(huán)的情況進(jìn)行折合的示意圖,待折合邊的兩個(gè)端點(diǎn)分布在不同的環(huán)上,則禁止簡化。
      圖22是對邊的兩個(gè)端點(diǎn)屬于相同的支撐環(huán)的情況進(jìn)行折合的示意圖,其中22A是折合前的圖像,圖22B是折合后的圖像。對這種情況的邊進(jìn)行折合時(shí),使用帶平面約束的簡化方法進(jìn)行簡化。
      權(quán)利要求
      1.一種三維人體模型的網(wǎng)格簡化約束方法,包括以下步驟1)、在人體模型的標(biāo)準(zhǔn)姿態(tài)模型上選擇需要添加支撐環(huán)約束的地方;2)、為標(biāo)準(zhǔn)姿態(tài)模型中每處添加支撐環(huán)的地方,選中模型上的三個(gè)頂點(diǎn),惟一確定一個(gè)支撐環(huán)所在的平面;3)、從步驟2)中所選定的三個(gè)頂點(diǎn)中選擇其中的一個(gè)頂點(diǎn),作為支撐環(huán)的第一個(gè)組成頂點(diǎn),并在該頂點(diǎn)的鄰域頂點(diǎn)集合內(nèi)搜索新的頂點(diǎn),所述的新的頂點(diǎn)位于支撐環(huán)所在平面或到此平面的距離在設(shè)定閾值范圍內(nèi);4)、以步驟3)中所搜索到的新的頂點(diǎn)為起點(diǎn),重復(fù)執(zhí)行步驟3)中的搜索,直到滿足搜索終止條件;5)、根據(jù)人體模型上的邊與所添加的支撐環(huán)間的關(guān)系,為所述人體模型上的邊分類;6)、根據(jù)步驟5)中對邊的不同分類,對不同類型的邊采用不同的方法計(jì)算邊的折合權(quán)值和邊的折合位置,將計(jì)算結(jié)果存放在一個(gè)堆中;7)、根據(jù)步驟6)的計(jì)算結(jié)果,從堆中選取具有最小折合權(quán)值的邊,準(zhǔn)備進(jìn)行折合;如果已經(jīng)沒有可供折疊的邊,或者簡化的結(jié)果已經(jīng)達(dá)到用戶的要求,則簡化完成,結(jié)束操作;8)、判斷步驟7)中所選擇的具有最小折合權(quán)值的邊是否具備折合資格,若不具備折合資格,且當(dāng)前的具有最小折合權(quán)值的邊的折合權(quán)值為無窮大,則所有邊都不可簡化,簡化過程結(jié)束;若屬于不具備折合資格的其他情況,則將當(dāng)前邊的折合權(quán)值設(shè)為無窮大,并保存到存放邊的堆中,然后跳轉(zhuǎn)到步驟7),若具備折合資格,則執(zhí)行下一步;9)、根據(jù)步驟6)得到的邊的折合位置,對當(dāng)前邊進(jìn)行折合;10)、進(jìn)行折合后的更新操作,包括邊的更新操作,即對折合位置附近的其它邊,如果其有端點(diǎn)連接到當(dāng)前折合邊上,則這些邊因折合發(fā)生改變,依據(jù)步驟6),重新計(jì)算折合權(quán)值和折合位置;支撐環(huán)的更新操作,即若折合后的邊的兩個(gè)端點(diǎn)屬于同一支撐環(huán),則從環(huán)中刪除因折合而消失的環(huán)內(nèi)頂點(diǎn)及相關(guān)信息。
      2.根據(jù)權(quán)利要求1所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟1)中,所述的在人體模型的標(biāo)準(zhǔn)姿態(tài)模型上選擇需要添加支撐環(huán)約束的地方,所選擇的位置包括2-1)、對于腕,肘,肩,頸,頭,胸,腰,髖,膝,踝關(guān)節(jié),每個(gè)關(guān)節(jié)添加一個(gè)支撐環(huán);2-2)、在相鄰關(guān)節(jié)之間、模型表面曲率變化大的地方,主要指胸關(guān)節(jié)以上、肩關(guān)節(jié)和經(jīng)關(guān)節(jié)以下、處于人體腋部附近的部位,每個(gè)部位添加一個(gè)支撐環(huán);2-3)、為人體模型上的每個(gè)環(huán)形邊界添加一個(gè)支撐環(huán)。
      3.根據(jù)權(quán)利要求2所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟2)中,所述的選中模型上的三個(gè)頂點(diǎn)時(shí),所述三個(gè)頂點(diǎn)的選擇原則如下3-1)三個(gè)頂點(diǎn)形成的平面,其周圍應(yīng)分布著較多的頂點(diǎn);3-2)若支撐環(huán)所在的位置屬于2-1)的情況,則環(huán)平面的法向需要考慮當(dāng)前關(guān)節(jié)的直接父親關(guān)節(jié)和直接孩子關(guān)節(jié),如果當(dāng)前關(guān)節(jié)僅有一個(gè)直接孩子關(guān)節(jié),則環(huán)平面的法向所在直線應(yīng)該介于直接父親關(guān)節(jié)中心到當(dāng)前關(guān)節(jié)中心的連線和當(dāng)前關(guān)節(jié)中心到其直接子關(guān)節(jié)中心的連線中間;如果當(dāng)前關(guān)節(jié)有多個(gè)直接孩子關(guān)節(jié)或無孩子關(guān)節(jié),可將直接父親關(guān)節(jié)中心到當(dāng)前關(guān)節(jié)中心的連線作為環(huán)面的法向;3-3)若支撐環(huán)所在的位置屬于2-2)的情況,則支撐環(huán)應(yīng)該環(huán)繞模型表面相應(yīng)位置曲率較大的地方;3-4)若支撐環(huán)所在的位置屬于2-3)的情況,則將邊界上的所有頂點(diǎn)都容納到環(huán)當(dāng)中;3-5)若支撐環(huán)所在的位置屬于2-1)的情況,則當(dāng)前關(guān)節(jié)中心到環(huán)平面的距離應(yīng)該盡可能小。
      4.根據(jù)權(quán)利要求1所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟3)中,所述的在當(dāng)前頂點(diǎn)的鄰域頂點(diǎn)集合內(nèi)搜索新的頂點(diǎn)時(shí),應(yīng)同時(shí)滿足以下條件4-1)、新頂點(diǎn)不屬于任何已構(gòu)造支撐環(huán);4-2)、新頂點(diǎn)到當(dāng)前支撐環(huán)環(huán)面的距離在用戶設(shè)定的閾值范圍內(nèi);4-3)、新頂點(diǎn)與環(huán)內(nèi)已有頂點(diǎn)形成的部分環(huán)構(gòu)成一個(gè)準(zhǔn)凸多邊形弧,此弧中相鄰邊的夾角為直角或鈍角;4-4)、新頂點(diǎn)和環(huán)內(nèi)除當(dāng)前頂點(diǎn)外的其它頂點(diǎn)之間都不存在連接,當(dāng)新頂點(diǎn)是當(dāng)前支撐環(huán)上找到的最后一個(gè)頂點(diǎn)時(shí),除同當(dāng)前頂點(diǎn)相連外,還必須同當(dāng)前支撐環(huán)上第一個(gè)確定的頂點(diǎn)相連接。
      5.根據(jù)權(quán)利要求4所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟4)中,所述的搜索終止條件為5-1)當(dāng)前支撐環(huán)上的頂點(diǎn)數(shù)目已經(jīng)超過4;5-2)當(dāng)前點(diǎn)的前一個(gè)頂點(diǎn)、當(dāng)前點(diǎn)、搜索開始時(shí)的第一個(gè)頂點(diǎn)之間的夾角為直角或鈍角;5-3)步驟2)中尋找到的三個(gè)頂點(diǎn)都已經(jīng)添加到當(dāng)前支撐環(huán)中。
      6.根據(jù)權(quán)利要求1所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟5)中,為所述人體模型上的邊分類的分類標(biāo)準(zhǔn)為6-1)、邊的兩個(gè)端點(diǎn)都不屬于任何支撐環(huán);6-2)、邊的一個(gè)端點(diǎn)屬于某個(gè)支撐環(huán),而另一個(gè)端點(diǎn)不屬于任何支撐環(huán);6-3)、邊的兩個(gè)端點(diǎn)分別屬于不同的支撐環(huán);6-4)、邊的兩個(gè)端點(diǎn)屬于相同的支撐環(huán)。
      7.根據(jù)權(quán)利要求6所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟6)中,所述的對不同類型的邊采用不同的方法計(jì)算邊的折合權(quán)值和邊的折合位置是指7-1)對于6-1)中的類別,使用基本簡化算法計(jì)算邊的權(quán)值和折合位置;7-2)對于6-2)中的類別,邊的折合位置為邊中屬于某支撐環(huán)的端點(diǎn),折合權(quán)值使用基本簡化算法計(jì)算;7-3)對于6-3)中的類別,不允許此邊進(jìn)行折合,設(shè)定其折合權(quán)值為無窮大,無需計(jì)算折合位置;7-4)對于6-4)中的類別,以折合后的位置必須在環(huán)面上為約束,使用基本簡化算法計(jì)算折合權(quán)值和折合位置。
      8.根據(jù)權(quán)利要求7所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,所述的基本簡化算法為基于邊折合的算法,包括Qslim算法。
      9.根據(jù)權(quán)利要求1所述的三維人體模型的網(wǎng)格簡化約束方法,其特征在于,在所述的步驟8)中,所述的折合資格的判斷標(biāo)準(zhǔn)為9-1)、如果邊的折合權(quán)值為無窮大,則該邊不具備折合資格;9-2)、判斷若此邊被折合,模型的拓?fù)涫欠駮l(fā)生改變,如果是,則不具備折合資格;9-3)、判斷若此邊被折合,是否會導(dǎo)致任何支撐環(huán)被破壞,若是,則不具備折合資格,否則具備折合資格。
      全文摘要
      本發(fā)明公開了三維人體網(wǎng)格模型的一種簡化約束及其使用方法,包括在人體網(wǎng)格模型上尋找需要添加支撐環(huán)約束的地方;為每處添加支撐環(huán)的地方,選中模型上的三個(gè)頂點(diǎn),確定支撐環(huán)所在的平面;在支撐環(huán)附近的網(wǎng)格模型表面上搜索支撐環(huán)上的其它組成頂點(diǎn),確定支撐環(huán);根據(jù)人體模型上的邊與支撐環(huán)間的關(guān)系,為邊分類;根據(jù)邊的不同分類,對不同類型的邊采用不同的方法計(jì)算邊的折合權(quán)值和邊的折合位置,并采用不同的簡化策略進(jìn)行簡化。本發(fā)明的方法具有低耦合、高質(zhì)量、低復(fù)雜度的簡化效果,具有很強(qiáng)的實(shí)用性。
      文檔編號G06T15/00GK1908985SQ20061011251
      公開日2007年2月7日 申請日期2006年8月22日 優(yōu)先權(quán)日2006年8月22日
      發(fā)明者王兆其, 徐文彬, 毛天露, 夏時(shí)洪 申請人:中國科學(xué)院計(jì)算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1