• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    3D協(xié)作系統(tǒng)下基于DOAG的選擇性Undo/Redo研究

    2019-03-13 05:14:34高麗萍劉珊珊
    關(guān)鍵詞:子結(jié)構(gòu)意圖選擇性

    高麗萍,劉珊珊

    1(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093) 2(復(fù)旦大學(xué) 上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室,上海 200093)

    1 引 言

    當(dāng)?shù)谝淮翁剿餍孪到y(tǒng)時(shí),用戶需要反復(fù)執(zhí)行和取消操作,以充分理解每個(gè)功能."任何具有復(fù)雜交互界面的系統(tǒng)都應(yīng)該提供Undo/Redo支持"的想法被屢次提出來(lái)[1]."沒(méi)有人會(huì)懷疑在交互系統(tǒng)中提供Undo/Redo功能的重要性"這一事實(shí)也指出了這一點(diǎn)[2].

    協(xié)同CAD系統(tǒng)是地理上分散的設(shè)計(jì)師共同工作的重要平臺(tái).作為協(xié)作系統(tǒng)中的一個(gè)重要特性,Undo/Redo可以幫助減少錯(cuò)誤消除誤解[3,4].幾種選擇性Undo/Redo方法已經(jīng)在國(guó)內(nèi)外得到廣泛研究,主要在圖形編輯器和文本編輯器[5,6]中探索了選擇性Undo/Redo,很少對(duì)3D模型進(jìn)行探究,都是通過(guò)插件的形式來(lái)實(shí)現(xiàn)選擇性Undo/Redo,針對(duì)的目標(biāo)對(duì)象也是以前所作的操作,撤銷以前的操作,使得最后編輯的效果能滿足用戶意圖.在CAD協(xié)作系統(tǒng)下,要實(shí)現(xiàn)選擇性Undo/Redo是復(fù)雜的,比單機(jī)環(huán)境下更具有挑戰(zhàn)性.

    要設(shè)計(jì)出一個(gè)復(fù)雜而有創(chuàng)意的工件,選出有意義的操作序列對(duì)快速設(shè)計(jì)出一個(gè)復(fù)雜的工品是有意義的,通過(guò)有意義的操作序列設(shè)計(jì)出滿足用戶需求的CAD模型,在進(jìn)行的一系列操作序列中,我們可以將操作之間的關(guān)系都詳細(xì)地描述出來(lái),當(dāng)選擇其中的一個(gè)操作作為撤銷目標(biāo)時(shí),依賴它的所有操作將會(huì)一起撤銷.在這種情況下,怎么更新剩下的邊界模型,當(dāng)對(duì)撤銷的目標(biāo)對(duì)象進(jìn)行重做時(shí),怎么重構(gòu)新的邊界模型,這些都應(yīng)該清楚地表示說(shuō)明出來(lái).

    一個(gè)通用的協(xié)作環(huán)境的基本正確性應(yīng)該得到滿足,例如意圖維護(hù)和一致性維護(hù).Undo/Redo的目的是消除并重新創(chuàng)建由特定的建模操作所生成的特性.操作在不同的站點(diǎn)之間是交叉的,并且在執(zhí)行了許多操作之后可以檢測(cè)到錯(cuò)誤.Undo/Redo的含義應(yīng)該被清楚地解釋.

    此次我們不同于前面人提出的一種多用戶的Undo/Redo方法,而是用于三維協(xié)作CAD中.在我們的方法中,可以在每個(gè)站點(diǎn)中唯一地標(biāo)識(shí)Undo/Redo目標(biāo).我們還研究了設(shè)計(jì)工件的復(fù)雜操作,用提出的DOAG來(lái)表示一個(gè)構(gòu)成CAD模型的操作關(guān)系圖.在此基礎(chǔ)上,闡明了特征與操作之間的依賴關(guān)系.在每次撤銷或重做時(shí),必須對(duì)邊界模型進(jìn)行更新和重構(gòu),可以通過(guò)DOAG來(lái)幫助實(shí)現(xiàn).

    這篇論文是在前人研究的基礎(chǔ)上[7-9]進(jìn)行詳細(xì)拓展的,詳細(xì)介紹了操作組合DOAG的構(gòu)造(第3部分),關(guān)于Undo/Redo的算法(第4部分)會(huì)詳細(xì)介紹,一個(gè)詳細(xì)的例子在第5部分會(huì)介紹.

    2 相關(guān)工作

    在Undo/Redo上的研究引發(fā)了Undo/Redo模型和機(jī)制,在Undo/Redo模型領(lǐng)域已經(jīng)做了大量的相關(guān)研究.最早的的的Undo/Redo是用在單機(jī)環(huán)境中,在單機(jī)環(huán)境中的Undo/Redo模型分為4類.

    1) 單步Undo/Redo模型;

    2) 線性Undo/Redo模型[10];

    3) US&R模型[11];

    4) 歷史Undo/Redo模型[12].

    然而,在多用戶協(xié)作編輯系統(tǒng)中,在不同站點(diǎn)上的操作是相互交叉的.在本地站點(diǎn)上的最后一個(gè)操作未必是其他站點(diǎn)上的最后一個(gè)操作.所以選擇性Undo/Redo模型是多數(shù)用戶選擇的Undo/Redo模型.它的靈活度受到Undo/Redo范圍的限制.AnyUndo[13]是一個(gè)將撤銷策略與撤銷機(jī)制分離的框架.它允許用戶設(shè)計(jì)一個(gè)單一的撤銷算法來(lái)支持本地和全局的Undo/Redo和多個(gè)模型.選擇性撤銷模型,第一次在COPE[14]中提出用在多用戶系統(tǒng)中.它也被Knister和Ferrié J在[15,16]介紹.選擇性撤銷這一想法在協(xié)作系統(tǒng)[17],協(xié)作編輯系統(tǒng)中[18,19]和協(xié)作圖形編輯系統(tǒng)[21]中采用.在協(xié)作編輯系統(tǒng)中的撤銷算法都屬于操作轉(zhuǎn)換.所有的3個(gè)撤銷模型,即單步撤銷,按時(shí)間先后順序的撤銷和選擇性撤銷,前兩種撤銷模式已經(jīng)被廣泛研究,后面選擇性撤銷方式在CAD中提出通過(guò)分解3D模型[22],構(gòu)造特征組合層次結(jié)構(gòu),將一個(gè)CAD模型進(jìn)行分解,基于特征組合結(jié)構(gòu),特征間的依賴關(guān)系可以清楚得表現(xiàn)出來(lái),簡(jiǎn)化了B-Rep重新評(píng)估,證明了提出的Undo/Redo重做方法滿足了協(xié)作系統(tǒng)的意圖保存和一致性維護(hù)的正確性.

    Abowd[2]和Choudhary[17]提出的多用戶Undo/Redo模型沒(méi)有考慮到操作的依賴集,但GINA[15]中的選擇性撤銷模型和任意撤銷模型[13]有考慮到這點(diǎn).在MSS[9]中,要撤銷的目標(biāo)操作不是歷史緩存中的最后一個(gè),做過(guò)的操作要重新安排,用MSS來(lái)記錄實(shí)際的操作順序,MSS是由在收到的模型操作執(zhí)行完后代表實(shí)現(xiàn)部分模型的狀態(tài)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)都有相應(yīng)的拓?fù)鋵?shí)體集,相關(guān)的拓?fù)鋵?shí)體集可以分開(kāi),組合和消除,TEST在每個(gè)站點(diǎn)都有副本,它可以跟蹤拓?fù)鋵?shí)體的改變,并弄清來(lái)自原始模型和新版本的TE之間的關(guān)系,在TEST中的每個(gè)節(jié)點(diǎn)都有唯一地標(biāo)識(shí),這樣它可以指定它的創(chuàng)建操作.然而,在選擇性撤銷模型中,一個(gè)操作不能撤銷或重做,當(dāng)它與后面執(zhí)行的操作有依賴關(guān)系時(shí),在前面的兩個(gè)模型中,當(dāng)做一個(gè)重做命令時(shí),操作參數(shù)需要進(jìn)行轉(zhuǎn)換.當(dāng)面對(duì)未解決的沖突,他們采取一個(gè)多版本方法作為解決方法,在單機(jī)環(huán)境中,主要用的是多級(jí)模型和級(jí)聯(lián)選擇性撤銷模型.在操作中,相關(guān)性的解決方案是基于任務(wù)ID和任務(wù)相關(guān)性的.也就是說(shuō),當(dāng)撤銷一個(gè)操作時(shí),所有與之相關(guān)的任務(wù)都將被撤銷.

    在多用戶Undo/Redo的領(lǐng)域中,在協(xié)同CAD系統(tǒng)下實(shí)現(xiàn)多用戶Undo/Redo的研究工作很少.我們以前提出的多用戶的Undo/Redo的解決方案的仍然存在缺陷,當(dāng)發(fā)現(xiàn)操作有依賴集時(shí),會(huì)檢查每個(gè)附加的依賴集的特性是否引用了撤銷目標(biāo)所創(chuàng)建的拓?fù)鋵?shí)體.這樣撤銷目標(biāo)對(duì)象的效率非常低.其次,模型恢復(fù)在每個(gè)建模操作執(zhí)行之后通過(guò)存儲(chǔ)模型狀態(tài)來(lái)完成的.撤銷目標(biāo)的效果是首先通過(guò)執(zhí)行模型狀態(tài)并重新執(zhí)行所有有效操作來(lái)消除的.如果撤銷目標(biāo)位于歷史緩沖區(qū)的前端,并且減少了對(duì)它的處理,那么恢復(fù)效率將非常低.也有相關(guān)研究者為了表示設(shè)計(jì)工件的結(jié)構(gòu)和特性之間的相互依賴關(guān)系,采用了ACIS的邊界表示CAD模型的形狀.在ACIS中,屬性被附加到實(shí)體來(lái)描述它們的系統(tǒng)定義和用戶定義的特征.在此基礎(chǔ)上,由特定的建模操作創(chuàng)建的每一個(gè)實(shí)體都以(Create_SiteID,Create_SEQ)的形式作為其ID的輔助信息而被創(chuàng)建,每一個(gè)拓?fù)鋵?shí)體都可以獲得它的相關(guān)操作.為了方便獲得相關(guān)的拓?fù)鋵?shí)體,在協(xié)作CAD提出了FCH[22],特征組合層次是一種樹(shù)狀的數(shù)據(jù)結(jié)構(gòu),用來(lái)表示CAD模型中每個(gè)特征實(shí)體之間的關(guān)系.

    圖1 復(fù)雜模型的操作圖Fig.1 Diagram of complex model operation

    在前面的研究中,恢復(fù)模型都采用這幾種方法,一種是重新執(zhí)行歷史緩沖區(qū)中的所有有效操作.盡管計(jì)算工作量巨大,但由于硬件速度加快,這仍然是可行的.第二種方法是在相鄰的建模操作之間存儲(chǔ)臨時(shí)的幾何模型或增量式的值.該方法是由國(guó)家CAD工程中心的王教授所采用的.再一種是通過(guò)邊界模型重構(gòu)以消除目標(biāo)操作和依賴操作集的執(zhí)行效果.該發(fā)明與已有技術(shù)相比較,效果是積極明顯的.

    圖1是一個(gè)復(fù)雜模型的分解圖,由不同站點(diǎn)協(xié)同構(gòu)造該模型.以下用例子說(shuō)明在原型協(xié)同系統(tǒng)下不同站點(diǎn)上操作的執(zhí)行過(guò)程.如圖2所示,在站點(diǎn)1,6種特征模型操作O1,O2,O3,O4,O5,O6依次到達(dá)站點(diǎn)1,在站點(diǎn)2,操作O1,O2,O4,O4,O5,O6依次按順序到達(dá),每個(gè)操作所引用的拓?fù)鋵?shí)體集在執(zhí)行時(shí)都能正確地通信,在站點(diǎn)1和站點(diǎn)2都不用重新調(diào)整操作順序.在站點(diǎn)3,來(lái)到的操作順序是O1,O3,O4,O2,O5,O6,當(dāng)執(zhí)行O3時(shí),對(duì)模型上的邊進(jìn)行倒圓角,當(dāng)O4到達(dá)時(shí),對(duì)模型進(jìn)行挖圓洞,接著,O2到達(dá),在模型的中間挖凹槽,凹槽的位置大小受到了O3,O4操作的影響,O2→O4,為了保存O2的用戶意圖,必須重新調(diào)整O3,O4,O2的操作順序,由于O5→O6,也要一起撤銷O5,O6構(gòu)成的子模型,重新調(diào)整O1,O3,O4,O2,O5,O6的操作順序.

    圖2 協(xié)同站點(diǎn)上操作執(zhí)行順序圖 Fig.2 Operation sequence in collaborative site

    針對(duì)上圖的例子,我們需要調(diào)整站點(diǎn)3上的O3,O4,O2的操作順序來(lái)維護(hù)用戶意圖,但又要撤銷O5,O6操作構(gòu)成的子結(jié)構(gòu),怎樣能快速撤銷掉已經(jīng)做過(guò)的操作又重新對(duì)撤銷的操作順序進(jìn)行安排呢,又不影響其他的操作構(gòu)成的子結(jié)構(gòu).通過(guò)有意義的操作序列來(lái)快速建立起一個(gè)實(shí)體模型,效率將大大提高,雖然每個(gè)站點(diǎn)上的操作序列是不一樣的,但我們將會(huì)在每個(gè)站點(diǎn)上都存儲(chǔ)了一個(gè)有意義維護(hù)用戶意圖的操作序列,方便用戶撤銷目標(biāo)操作及關(guān)于目標(biāo)操作的子結(jié)構(gòu),而不影響其他沒(méi)有任何關(guān)系的操作.

    3 在3D協(xié)作系統(tǒng)下設(shè)計(jì)操作聚合結(jié)構(gòu)

    我們認(rèn)為一件工件的設(shè)計(jì)是多位不同用戶協(xié)同一起操作的完成的結(jié)果.作為一項(xiàng)正在進(jìn)行的研究,我們主要關(guān)注的是對(duì)于已經(jīng)做過(guò)的操作,不同站點(diǎn)的用戶如何快速地找到目標(biāo)操作及目標(biāo)操作攜帶的操作集進(jìn)行撤銷,調(diào)整操作順序來(lái)完成最終的設(shè)計(jì)意圖.通過(guò)挖掘一個(gè)有意義的設(shè)計(jì)操作序列,處理好這些有意義的操作序列,會(huì)使得選擇性撤銷的效率更加明顯,在一個(gè)協(xié)作的CAD系統(tǒng)中,每個(gè)站點(diǎn)都有操作依賴聚合結(jié)構(gòu)拓?fù)鋵?shí)體的副本.在將其發(fā)送到其他遠(yuǎn)程站點(diǎn)之前,在本地站點(diǎn)發(fā)出的操作優(yōu)先執(zhí)行.一個(gè)復(fù)雜的CAD模型可以分解成若干個(gè)不同的子結(jié)構(gòu),構(gòu)成每個(gè)子結(jié)構(gòu)的操作具有依賴關(guān)系,主要用到的操作為幾何操作和布爾操作,幾何操作是指從一個(gè)已有的實(shí)體模型中選擇拓?fù)鋵?shí)體為目標(biāo),如將一個(gè)實(shí)體的邊倒圓角,將這個(gè)實(shí)體縮小旋轉(zhuǎn)等等.布爾操作指的是聯(lián)合,減法和交叉.通過(guò)執(zhí)行布爾運(yùn)算,一個(gè)新的實(shí)體從兩個(gè)已有的實(shí)體中得到.盡管每個(gè)站點(diǎn)上的歷史緩沖區(qū)可以記錄所有建模操作的到達(dá)順序并進(jìn)行保存,但是當(dāng)要撤銷已做過(guò)的操作時(shí),通過(guò)回溯歷史緩沖區(qū),撤銷沒(méi)有任何依賴關(guān)系的操作是多余的,因此我們提出使用DOAG來(lái)找出有意義的操作集來(lái)快速獲得要撤銷的部分子結(jié)構(gòu),而不影響其他操作構(gòu)成的子結(jié)構(gòu).在DOAG中,操作間的依賴關(guān)系,分為相關(guān)依賴或?qū)傩砸蕾?,相關(guān)依賴是指先用一個(gè)操作創(chuàng)建實(shí)體,后面的操作要借助實(shí)體或在實(shí)體上執(zhí)行,比如Oa,會(huì)被后面生成的操作Ob引用,可以表示Oa→Ob;屬性依賴是指如果對(duì)某個(gè)生成操作的定義的某些參數(shù)受到前面創(chuàng)建操作的大小或位置的影響,通過(guò)利用DOAG,當(dāng)要撤銷操作時(shí),可以快速的找到目標(biāo)操作及目標(biāo)操作的子結(jié)構(gòu),也不會(huì)影響其他沒(méi)有依賴關(guān)系的操作.特定的建模操作創(chuàng)建的實(shí)體都以(CreateSiteID,CreateSeq)的形式作為其ID的輔助信息附加到相應(yīng)的建模操作屬性中,在DOAG中,我們通過(guò)ID可以快速找到這個(gè)建模操作所代表的子結(jié)構(gòu),進(jìn)行選擇性撤銷而進(jìn)行重做,而我們主要對(duì)這些要撤銷的復(fù)雜模型的操作進(jìn)行討論,而其他與要撤銷的目標(biāo)對(duì)象沒(méi)有關(guān)系的操作的執(zhí)行在各個(gè)站點(diǎn)都不會(huì)違背用戶的意圖和最后模型的一致性.

    3.1 DOAG的簡(jiǎn)單介紹

    在基于協(xié)作特征的三維CAD環(huán)境中生成的工件模型是由多個(gè)設(shè)計(jì)者共同操作的復(fù)雜對(duì)象,這些設(shè)計(jì)者迭代地添加,刪除各種類型的特征.它用B-Rep表示,其形狀由大量不同的拓?fù)鋵?shí)體組成,如拓?fù)涿?,邊和頂點(diǎn).布爾運(yùn)算(如聯(lián)合,減法和交叉)提供了一種有效的方法來(lái)將特征和實(shí)體組合一起.接下來(lái)我們介紹一個(gè)有意義的操作聚合圖[20]的基于圖形的數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)稱DOAG.

    定義1.因果順序關(guān)系"→".任意兩個(gè)操作Oa和Ob,如果Oa因于Ob之前,表示為Oa→Ob,則Oa創(chuàng)建的相應(yīng)拓?fù)鋵?shí)體由Ob引用.

    定義2.因果維護(hù)"→".任意兩個(gè)操作Oa和Ob,如果因于Ob之前,表示為Oa→Ob,則在任意站點(diǎn)上Oa總是在Ob之前執(zhí)行.

    定義3.依賴關(guān)系.給兩個(gè)操作Oa和Ob,如果Ob屬性依賴或相關(guān)依賴于Oa,則表示為Oa→Ob.

    定義4.DOAG的描述.一個(gè)DOAG=是由一組Nv個(gè)頂點(diǎn)V,Ne條邊E組成的,一條邊(Vi,Vj)表示頂點(diǎn)Vi與Vj之間有依賴關(guān)系.

    定義5.意圖維護(hù).一個(gè)模型操作O的意圖能夠得到保存當(dāng)且僅當(dāng)1)為了幾何目的與O相關(guān)的sub-DOAG不會(huì)改變或者存在CAD模型對(duì)應(yīng)的DOAG.2)與O相關(guān)的每個(gè)sub-DOAG對(duì)應(yīng)的拓?fù)鋵?shí)體一定存在.

    一個(gè)頂點(diǎn)V被定義為五元組,其形式如下.,type表示操作類型,timestamp表示為所有協(xié)作站點(diǎn)上操作的執(zhí)行順序統(tǒng)一自動(dòng)生成的整數(shù),reference_dependency表示與頂點(diǎn)Vi有相關(guān)依賴關(guān)系的代表操作的一組頂點(diǎn)(v1,v2,…,vn),attribute_dependency表示與頂點(diǎn)Vi有屬性依賴關(guān)系的代表操作的一組頂點(diǎn)(v1,v2,…,vn).

    DOAG是一種樹(shù)狀的數(shù)據(jù)結(jié)構(gòu),用來(lái)表示操作之間的聚合關(guān)系,在協(xié)作設(shè)計(jì)過(guò)程中很多操作具有很多依賴關(guān)系,將這些因依賴關(guān)系聚合在一起的操作構(gòu)成的模型稱為子結(jié)構(gòu).一個(gè)復(fù)雜的CAD模型可以分解為很多子結(jié)構(gòu).

    在一個(gè)協(xié)作CAD系統(tǒng)中創(chuàng)建的CAD模型是以一個(gè)原始模型操作而開(kāi)始創(chuàng)建的,而這個(gè)原始模型操作的依賴集在整個(gè)模型中是最大的,這個(gè)操作所構(gòu)成的模型在DOAG中相當(dāng)于中心點(diǎn)Vcentral,檢索在與當(dāng)前中心點(diǎn)的有引用依賴和屬性依賴的操作,每個(gè)操作作為子DOAG的中心點(diǎn)被自動(dòng)識(shí)別為連接到Vcentral.中心點(diǎn)按操作的時(shí)間戳來(lái)排序的,這樣整個(gè)操作序列都是連貫的,如果要檢索某個(gè)節(jié)點(diǎn)的依賴集及構(gòu)成的子結(jié)構(gòu),我們進(jìn)行了如下總結(jié):

    1) DOAG是一種描述復(fù)雜CAD模型的樹(shù)型結(jié)構(gòu),其根節(jié)點(diǎn)對(duì)應(yīng)協(xié)同站點(diǎn)上的開(kāi)始的操作,在檢索這個(gè)操作的所有DOS,所構(gòu)成的模型就是一個(gè)子結(jié)構(gòu),當(dāng)某個(gè)子結(jié)構(gòu)不滿足用戶意愿時(shí),可以再進(jìn)行分解,構(gòu)成用戶想要的子結(jié)構(gòu),而不會(huì)影響沒(méi)有任何依賴關(guān)系的操作及操作集構(gòu)成的子結(jié)構(gòu),每個(gè)子結(jié)構(gòu)和操作都由節(jié)點(diǎn)和葉子節(jié)點(diǎn)保存著;DOAG的根節(jié)點(diǎn)和每個(gè)中間節(jié)點(diǎn)使用基對(duì)象指針指向代表該復(fù)雜子結(jié)構(gòu)的基特征的節(jié)點(diǎn),并且保存了其代表的復(fù)雜子結(jié)構(gòu)分解生成的子結(jié)構(gòu)對(duì)應(yīng)的節(jié)點(diǎn)集,子節(jié)點(diǎn)使用基對(duì)象指針指向代表該原子結(jié)構(gòu)的定位特征的節(jié)點(diǎn).圖3中用虛線圈的操作可以構(gòu)成一個(gè)子結(jié)構(gòu).

    圖3 圖1中復(fù)雜模型的DOAG圖Fig.3 DOAG of complex model in Fig.1

    3.2 特征模型操作表示

    可以用下面的結(jié)構(gòu)表示一個(gè)特征操作構(gòu)成的子結(jié)構(gòu):

    Struct

    {

    long int CentralOperatin;

    long int ReferDepOpPointer;

    Long int AtrDepOpPointer;

    long int SubConf_Node;

    int SubConf_No;

    }Sub_Configuration

    Struct

    {

    long int subConfBoundaryModelPointer;

    Std..listm_listSubConfPointer;

    }3D Modeling

    通過(guò)上面兩個(gè)類,通過(guò)執(zhí)行第1個(gè)類可以獲得所有操作的操作集,第2個(gè)類可以幫助找到目標(biāo)操作.

    4 在復(fù)制式協(xié)同系統(tǒng)下的Undo/Redo方法

    在提到Undo/Redo方法之前,有必要討論一下我們?cè)趨f(xié)作CAD系統(tǒng)中采用的一致性維護(hù)機(jī)制.一個(gè)協(xié)作性的CAD系統(tǒng)需要執(zhí)行一個(gè)建模操作來(lái)滿足因果關(guān)系的保存和意圖的保存.所有副本在協(xié)作任務(wù)結(jié)束時(shí)達(dá)到收斂的狀態(tài).為了識(shí)別在一個(gè)復(fù)制的協(xié)作式CAD系統(tǒng)中協(xié)作站點(diǎn)所發(fā)布的同步操作的順序,使用基于Lamport State Vector[23]的時(shí)間戳排序技術(shù),狀態(tài)矢量是N個(gè)分量矢量,其中N代表所有協(xié)作站點(diǎn)的總數(shù),并且每個(gè)站點(diǎn)都有一個(gè)唯一的ID,范圍從0到N-1.每個(gè)站點(diǎn)都保留一個(gè)狀態(tài)向量,其中i-1組件表示站點(diǎn)中已經(jīng)執(zhí)行了多少操作.兩個(gè)狀態(tài)向量,SVi和SVj,是通過(guò)這種方式比較的,

    1) SVi=SVj當(dāng)且僅當(dāng)SVi中的值與SVj中相應(yīng)的值相等;

    2) SVi

    3) SVi>SVj,當(dāng)且僅當(dāng)SVi中的值大于SVj中的值.

    任何操作生成時(shí)或傳到其他站點(diǎn)時(shí)都會(huì)攜帶自身的狀態(tài)向量,當(dāng)SVi≤SVj時(shí),i站點(diǎn)上的操作優(yōu)先執(zhí)行,通過(guò)采用一種樂(lè)觀的序列化并發(fā)控制方法實(shí)現(xiàn)了目標(biāo)的保存.在很多協(xié)同系統(tǒng)中,為了維護(hù)用戶意圖的一致性和收斂性,都采用了狀態(tài)向量來(lái)解決出現(xiàn)的并發(fā)問(wèn)題[24,25].

    當(dāng)要撤銷一個(gè)操作時(shí),在協(xié)同CAD環(huán)境中實(shí)現(xiàn)Undo/Redo方法需要考慮到操作之間的依賴關(guān)系,結(jié)合上面提出的DOAG,我們很快檢索到任意操作所攜帶的子結(jié)構(gòu),首先要檢查相應(yīng)的操作所帶的DOS構(gòu)成的子結(jié)構(gòu),然后,所有依賴于撤銷目標(biāo)的操作都應(yīng)該全部撤銷,并且不會(huì)影響其他操作.

    當(dāng)一個(gè)撤銷命令被發(fā)布時(shí),它的意圖是將已經(jīng)做過(guò)的操作進(jìn)行撤銷掉,而不影響其他操作,需要包括:

    1)正確地找到撤銷目標(biāo)的依賴集;

    2)成功地將撤銷目標(biāo)和依賴于它的操作的效果一起撤銷,而不影響其他的子結(jié)構(gòu).

    當(dāng)一個(gè)重做命令發(fā)出時(shí),它的意圖是撤銷由同一用戶發(fā)出的最近的撤銷.在這一節(jié)中,我們提出了一個(gè)局部的Undo/Redo方法,用戶只能撤銷由他/她所發(fā)出的操作,該操作可能不是最后的操作.

    4.1 確定Undo/Redo目標(biāo)

    當(dāng)某一個(gè)有意義的操作序列在站點(diǎn)i上依次執(zhí)行,當(dāng)傳到其他站點(diǎn)時(shí),出現(xiàn)操作順序和站點(diǎn)i上的不一致,要通過(guò)局部Undo/Redo來(lái)調(diào)整操作順序,維護(hù)用戶意圖.由于網(wǎng)絡(luò)延時(shí)和基于狀態(tài)向量上的因果關(guān)系,在每個(gè)協(xié)作站點(diǎn)上的歷史操作都有以下特點(diǎn):

    1)來(lái)自同一站點(diǎn)上的操作在所有站點(diǎn)上都以相同的順序執(zhí)行.

    2)來(lái)自不同協(xié)作站點(diǎn)上的模型操作都是交叉的和在不同的站點(diǎn)以不同的順序執(zhí)行.

    因?yàn)橛脩粢蜂N的目標(biāo)對(duì)象不可能永遠(yuǎn)是最后一個(gè),當(dāng)定位到要撤銷的目標(biāo)時(shí),首先要考慮到兩種情況:

    1)定位到本地站點(diǎn)的撤銷對(duì)象;

    2)定位遠(yuǎn)程站點(diǎn)的撤銷目標(biāo)對(duì)象.

    一個(gè)建模操作在生成過(guò)后在相應(yīng)的站點(diǎn)會(huì)立即執(zhí)行,所以撤銷的目標(biāo)操作只存在本地站點(diǎn)上的執(zhí)行列表中.

    在一個(gè)協(xié)作CAD的原型系統(tǒng)中,有N個(gè)站點(diǎn),Ai,j(0

    當(dāng)一個(gè)任意的遠(yuǎn)程的站點(diǎn)Sj收到Undo要求,這個(gè)要撤銷的對(duì)象可能不是最后一個(gè)執(zhí)行的操作,所以它要撤銷的目標(biāo)操作可能在ExecutedListj和WaitListj中,為了找到要撤銷的目標(biāo),就要采用SiteId和StateVector,任意站點(diǎn)發(fā)送的操作都會(huì)攜帶狀態(tài)向量信息,當(dāng)撤銷命令發(fā)送到其他站點(diǎn)時(shí),首先在ExecutedListj搜索,然后在WaitListj中搜索,直至找到要撤銷的目標(biāo).

    當(dāng)找到要撤銷的目標(biāo)時(shí),由于每個(gè)站點(diǎn)都存儲(chǔ)了整個(gè)操作所構(gòu)成的DOAG,當(dāng)要撤銷的目標(biāo)在DOAG中進(jìn)行遍歷時(shí),就會(huì)找到相應(yīng)的該操作所攜帶的子DOAG,并和該操作一并撤銷掉,并且不影響其他的操作所構(gòu)成的模型結(jié)構(gòu),當(dāng)對(duì)撤銷的操作進(jìn)行重做時(shí),對(duì)它本身所攜帶的子DOAG進(jìn)行重做,重構(gòu)整個(gè)邊界模型.對(duì)于在本地站點(diǎn)和遠(yuǎn)程站點(diǎn)的撤銷目標(biāo)的處理,我們?cè)O(shè)計(jì)了如下幾個(gè)算法:

    算法1.對(duì)于如何獲得撤銷目標(biāo)的子DOAG的算法

    Input. the identified Undo target operation Op,current DOAG

    Output.DOAG(Op)

    1.root=root node of DOAG

    2.From root to Scan all object_nodes

    3.Op_Node=the object node of Op in DOAG

    4.DOS(Op)=Empty;

    5.SubConf_Node=Op_Node.m_listSubConfPointer[i];

    6.Temp_Node=Op_Node.next;

    7.while(Temp_Node!=SubConf_Node)

    8.if(Temp_Node->ReferDepOpPointer==Op_Node)

    9. Temp_Node is put into sub_DOAG(Op);

    10. if(Temp_Node->AtrDepOpPointer!=Op_Node)

    11. Temp_Node is put into sub_DOAG(Op);

    12. SubConf_Node=sub_DOAG(Op);

    13. CentralOperation=Op_Node;

    14. while(SubConf_Node!=NULL)

    15. if(SubConf_Node->subConfBoundaryPointer==Op_Node)

    16. Op_Node is put into sub_DOAG(Op);

    17. endif

    18. endwhile

    19. endif

    20. endif

    21.Temp_Node=Temp_Node->next

    22.endwhile

    該算法首先找到DOAG中原始的根節(jié)點(diǎn),將其設(shè)為中心點(diǎn)Vcentral,再檢索與當(dāng)前中心點(diǎn)的有引用依賴和屬性依賴關(guān)系的操作,將其存儲(chǔ)到每個(gè)中心點(diǎn)的DOAG中,每個(gè)操作作為子DOAG的中心點(diǎn)被自動(dòng)識(shí)別為連接到Vcentral,依次往下遍歷所有的操作節(jié)點(diǎn),直到所有操作遍歷完為止.

    算法2.在協(xié)同站點(diǎn)上的選擇性Undo方法算法

    Input. Undo request,history buffer HBi at Sitei,current Sub_DOAG(Op)

    Output. Re-evaluated geometry model

    1.Op= the identified undo target in history buffer;

    2.sub_DOAG(Op)=Op's dependency operation set;

    3.Op_Node=the object node of Op in the DOAG;

    4.i=Op_Node.SubConf_No;

    5.SubConf_Node=Op_Node.m_listSubConfPointer[i];

    6.Op_Node=the central node of the SubConf_Node;

    7.SubConf_Node=the base model of the Op_Node;

    8.while(Op_Node!=Temp_Node)

    9. if(Temp_Node is in sub_DOAG(Op_Node))

    10. delete Op_Node from DOAG;

    11. else

    12. SubConf_Node=SubConf_Node->subConfBoundaryModelPointer[i];

    13. endif

    14. Temp_Node=Op_Node->Next;

    15.endwhile

    16.Op_Node.m_listSubConfPointer[i]=SubConf_Node;

    17.combine all the exiting sub_configurations to obtain the re-evaluated boundary model;

    該算法從根節(jié)點(diǎn)進(jìn)行出發(fā)開(kāi)始遍歷,通過(guò)遍歷不同的子結(jié)構(gòu),找到目標(biāo)操作及目標(biāo)操作的子DOAG進(jìn)行撤銷,撤消目標(biāo)操作后對(duì)所剩的邊界模型進(jìn)行重構(gòu).

    算法3.在協(xié)同站點(diǎn)上的Redo算法

    Input.Redo request,history buffer HBiat sitei,current DOAGi

    Output. Re-evaluated geometry model

    1.if(Op_Node.RefDepOpPointer==NULL&&Op_Node.AtrDepOpPointer==NULL)

    2.Temp_Node=Op_Node->next;

    3.Op_Node=Temp_Node;

    4.Op_Node.m_listSubConfPointer[i]=NULL;

    5.SubConf_Node=the base model of Op_Node;

    6.subConfBoundaryModelPointer=the boundary model physical adreess of SubConf_Node;

    7.Op_Entity=new SubConf_Node();

    8.Ob_Entity.subConfBoundaryModelPointer[i]=SubConf_Node;

    9.endif

    10.if(Op_Node.RefDepOperationList!=NULL||Op_Node.AtrDepOperationList!==null)

    11.identity the operation creating the referenced topological entities;

    12.Temp_Node=the object nodes of the operation;

    13.Op_New=new SubConf_Node();

    14.Op_New->next=Temp_Node;

    15.SubConf_Node_New.subConfBoundaryModelPointer=pointer points to the new subconfiguration;

    16.if(the topological entities of Op.ReferenceEntityLis are from the base feature)

    17.i=m_listSubConfPointer.count();

    18.Op_Ref|Atri.the_i+1th_Configuration_Pointer=new SubConfiguration();

    19.Op_Ref|Atri.the_i+1th_Configuration_Pointer=Op_New;

    20.else

    21.Op_Ref|Arti.This_SubConfigurationPointer=Op.New;

    22.endif

    23.endif

    Undo/Redo的命令的目的是消除又重做某個(gè)特征,當(dāng)用戶要撤銷已經(jīng)做過(guò)的操作及該操作構(gòu)成的子結(jié)構(gòu)時(shí),又要對(duì)撤銷的目標(biāo)對(duì)象進(jìn)行重做,通過(guò)獲得撤銷操作的DOAG再更新一個(gè)新的DOAG子結(jié)構(gòu)來(lái)滿足用戶意圖,對(duì)更新后的DOAG子結(jié)構(gòu)進(jìn)行重做而不會(huì)影響其他的操作所構(gòu)成的邊界模型.

    5 算法正確性證明

    在這小部分,我們將證明提出關(guān)于選擇性Undo/Redo一致性解決方案的正確性.

    定理1.我們的選擇性Undo/Redo算法遵循do和undo意圖.

    證明:來(lái)自同一站點(diǎn)上的操作在所有站點(diǎn)上都是以相同順序執(zhí)行,所以(SiteID,Create_SEQ)能用來(lái)準(zhǔn)確地標(biāo)識(shí)要undo的目標(biāo),假如O是要撤銷的目標(biāo)操作,根據(jù)我們的算法,通過(guò)DOAG,遍歷所有的操作,找到要撤銷的目標(biāo)操作及目標(biāo)操作的sub-DOAG,所以在整個(gè)DOAG中就沒(méi)有O及O的sub-DOAG的影響.當(dāng)redo命令喚起時(shí),撤銷的目標(biāo)操作O及O的sub-DOAG被標(biāo)識(shí),再次重做.所以redo意圖得到了維護(hù).

    論點(diǎn)1.執(zhí)行過(guò)的操作都遵循因果關(guān)系.

    證明:為了證明這個(gè)論點(diǎn),我們只需要證明一個(gè)新來(lái)的模型操作的執(zhí)行不會(huì)違背已經(jīng)建立好的因果關(guān)系.

    舉DOAG{sub-DOAG1(O1),sub-DOAG2(Oi)...sub-DOAG(On)為一個(gè)例子,它相應(yīng)的歷史緩存為HB={O0,O1,O2,...On},假設(shè)已經(jīng)執(zhí)行過(guò)的操作都遵循因果關(guān)系,On+1是收到的最新的操作,如果On+1的執(zhí)行不違背已經(jīng)執(zhí)行過(guò)的操作的操作順序,那么On+1立即執(zhí)行,On+1的執(zhí)行不會(huì)對(duì)DOAG有影響.如果違背了相關(guān)的CAD模型的DOAG,然后通過(guò)DOAG,找到On+1的sub-DOAG.那么sub-DOAG(On+1)={Oi...Ok},0<=i<=k<=n,所以DOAG={sub-DOAG(O1),sub-DOAG(Oi)...sub-DOAG(On+1)...sub-DOAG(On)},sub-DOAG(On+1)是On+1的相應(yīng)的子結(jié)構(gòu).

    首先,On+1的執(zhí)行不會(huì)違背O0到Oi-1的因果順序,第二,On+1依賴{O0...Oi-1}中的一些操作,因?yàn)镺n+1是在它們之后而又獲得sub-DOAG(On+1)之前喚起的,因此,On+1執(zhí)行的因果維護(hù)得到了滿足,第三On+1與{Oi,...,On}中的操作沒(méi)有因果關(guān)系.所以它們是可以交換的,在{Oi,...On}之前喚起On+1不會(huì)違背因果關(guān)系,所以,論點(diǎn)1被證明是成立的.

    論點(diǎn)2.我們的選擇性Undo/Redo算法不會(huì)違背建立好的因果順序.

    證明:當(dāng)要撤銷一些操作,為了可以看到撤銷目標(biāo)操作過(guò)后的結(jié)果,主要需要兩步:獲得O執(zhí)行時(shí)的模型狀態(tài)并重新評(píng)估撤銷目標(biāo)操作及目標(biāo)操作的子結(jié)構(gòu)后的部分模型.

    第一步,通過(guò)遍歷DOAG獲得撤銷目標(biāo)之前的模型狀態(tài),所以在撤銷目標(biāo)操作O之前執(zhí)行過(guò)的操作都滿足因果依賴關(guān)系.第二步,重構(gòu)剩下的沒(méi)有任何關(guān)系的子結(jié)構(gòu)模型,撤銷完目標(biāo)操作后,此時(shí)將DOAG中目標(biāo)操作及目標(biāo)操作構(gòu)成的子結(jié)構(gòu)設(shè)為無(wú)效,其他的操作及相應(yīng)的子結(jié)狀態(tài)保持不變.

    定理2.我們的選擇性Undo/Redo算法滿足因果維護(hù).

    證明:根據(jù)論點(diǎn)1和論點(diǎn)2,選擇性Undo/Redo的執(zhí)行不會(huì)違背已設(shè)計(jì)好的DOAG,所以因果維護(hù)性質(zhì)得到滿足.

    定理3.通過(guò)選擇性Undo/Redo算法,模型一致性得到維護(hù).

    證明:通過(guò)正式的正確性標(biāo)準(zhǔn)和定理1和定理2,執(zhí)行選擇性Udo/Redo能維護(hù)所有站點(diǎn)上模型的一致性.

    5.1 實(shí)例分析

    對(duì)同一模型,用戶在不同的站點(diǎn)有不同的操作順序O0(0,POLYGON,1),O1(1,CYLINDER,1), O2(2,ROUNDHOLE,1),O3(0,SPIRAL-POLYGON,2), O4(1,SPIRAL-CYLINDER,2), O5(2,UNION,2),O1與O2,O3與O4是屬性依賴,用戶設(shè)計(jì)的DOAG如圖4所示,每個(gè)站點(diǎn)的執(zhí)行順序必須嚴(yán)格按照設(shè)計(jì)的DOAG來(lái)安排操作順序.

    每個(gè)站點(diǎn)上都保存DOAG,當(dāng)用戶要撤銷相應(yīng)的操作時(shí),通過(guò)DOAG能夠快速地找到目標(biāo)操作的子結(jié)構(gòu)一起撤銷,再重新調(diào)整操作順序,滿足用戶意圖.

    圖4 簡(jiǎn)單模型的DOAG圖 Fig.4 DOAG for the simple model

    在圖5示例中,站點(diǎn)0上O0,O1,O2,O3,O4,O5先后到達(dá),在站點(diǎn)1,當(dāng)O4,O3到達(dá)時(shí)與用戶地意圖相違背,由站點(diǎn)1發(fā)出Undo(O3)命令,撤銷O3及O3操作所帶的子結(jié)構(gòu),重新調(diào)整操作O3,O4的操作順 序.同樣在站點(diǎn)2,當(dāng)O2到達(dá)時(shí),與用戶期望的O1→o2相違背,當(dāng)O4到達(dá)時(shí)也同樣違背了用戶的意圖,因此要撤銷O1和O3及Sub-DOAG(O1)和Sub-DOAG(O3).根據(jù)每個(gè)站點(diǎn)上的DOAG,可以很快找到目標(biāo)操作的子結(jié)構(gòu),并對(duì)其一起撤銷.撤銷過(guò)后,對(duì)Sub-DOAG(O1)和Sub-DOAG(O3)中的操作順序重新調(diào)整,重構(gòu)邊界模型.過(guò)程如圖6及圖7所示.

    圖5 協(xié)同建模過(guò)程的例子Fig.5 Example of the collaborative modeling process

    圖6 站點(diǎn)1上撤銷O3后操作重做過(guò)程 Fig.6 Operation rearrangement process after Undo(O3) on site1

    5.2 實(shí)驗(yàn)結(jié)果討論

    圖7 站點(diǎn)2上撤銷O3和O1后操作重做過(guò)程 Fig.7 Operation re-arrangemen process after Undo(O3) and Undo(O1)on site2

    通過(guò)上面的例子,站點(diǎn)0,站點(diǎn)1和站點(diǎn)2同時(shí)對(duì)同一工件進(jìn)行設(shè)計(jì),首先用戶通過(guò)DOAG來(lái)描繪出構(gòu)成工件的操作關(guān)系圖,將DOAG存放在每個(gè)站點(diǎn)上,到達(dá)站點(diǎn)0上的操作順序是O1,O2,O3,O4,O5,此操作順序滿足用戶的設(shè)計(jì)意圖和用戶設(shè)計(jì)的DOAG,O1→O2,(O3→O4)→O5,其中O1,O2和O3,O4都屬于屬性依賴,O3,O4和O5屬于相關(guān)依賴.當(dāng)站點(diǎn)1收到遠(yuǎn)程站點(diǎn)發(fā)過(guò)來(lái)的O4,O3和O5操作時(shí),操作的執(zhí)行順序O4,O3,O5違背了用戶設(shè)計(jì)的DOAG,因此要撤銷已經(jīng)做過(guò)但不能滿足用戶意愿的操作,通過(guò)算法2和算法1找到要撤銷的目標(biāo)操作O3以及O3的依賴集,一起進(jìn)行撤銷,O3的依賴集O4,O5一起撤銷后,構(gòu)造出新的并滿足DOAG但又不會(huì)影響其他操作構(gòu)成的子模型,通過(guò)算法3進(jìn)行重做.同樣在站點(diǎn)2上,當(dāng)O2,O1到來(lái)時(shí),該操作順序也違背了O1→O2,根據(jù)算法2和算法1找到要撤銷的目標(biāo)操作O1及目標(biāo)操作的依賴集O2,一起撤消后并構(gòu)造出新的子結(jié)構(gòu)模型,通過(guò)算法3進(jìn)行重做,但又不影響其他的操作構(gòu)成的子結(jié)構(gòu),同樣,當(dāng)O4,O3,O5到來(lái)時(shí),該情況和站點(diǎn)1的情況相同,通過(guò)算法1找到要撤銷的目標(biāo)操作O3及O3的依賴集,通過(guò)算法2對(duì)目標(biāo)操作進(jìn)行撤銷,撤銷過(guò)后,通過(guò)算法3對(duì)撤銷的操作進(jìn)行重構(gòu),再對(duì)重構(gòu)后的子結(jié)構(gòu)進(jìn)行重做.最后所有站點(diǎn)上的操作順序都滿足了用戶預(yù)先設(shè)計(jì)的DOAG,每個(gè)站點(diǎn)上都存有如圖8的模型關(guān)系圖,圖9和圖10表示撤銷目標(biāo)操作后的模型關(guān)系圖,用戶可以根據(jù)剩余的邊界模型進(jìn)行重構(gòu),使得各個(gè)站點(diǎn)上所有的模型都能達(dá)到一致.維護(hù)了用戶的意圖,所有站點(diǎn)上的最后設(shè)計(jì)出的模型相同,也滿足了一致性.

    圖8 每個(gè)站點(diǎn)上簡(jiǎn)單模型的關(guān)系圖Fig.8 Simple model at each site after the collaborative modeling process

    6 結(jié) 論

    我們?cè)趶?fù)制的協(xié)同三維建模系統(tǒng)中提出了選擇性多用戶的Undo/Redo方法.通過(guò)Site ID和Lamport 狀態(tài)向量在本地站點(diǎn)和遠(yuǎn)程站點(diǎn)上標(biāo)識(shí)要Undo/Redo的目標(biāo)操作,通過(guò)Undo/Redo來(lái)實(shí)現(xiàn)維護(hù)用戶設(shè)計(jì)意圖.摘要提出在設(shè)計(jì)操作聚合結(jié)構(gòu)圖的輔助下,詳細(xì)地說(shuō)明了操作之間的關(guān)系.通過(guò)這種方式,依賴于撤銷目標(biāo)的子結(jié)構(gòu)很容易的獲得,并且也將消除目標(biāo)操作而不影響其他沒(méi)有任何關(guān)系的操作或子結(jié)構(gòu),對(duì)撤銷后的子結(jié)構(gòu)重做來(lái)維護(hù)用戶的設(shè)計(jì)意圖,使得最后模型的一致性得到了維護(hù).最后,我們的算法的正確性得到了驗(yàn)證,并在我們構(gòu)建的原型中執(zhí)行了實(shí)驗(yàn).

    圖9 在站點(diǎn)1上撤銷O3后的模型關(guān)系圖Fig.9 Simple model after undo(O3) command at site1

    圖10 在站點(diǎn)2上撤銷O3和O1后的模型關(guān)系圖Fig.10 Simple model after undo(O3) and undo(O2) command at site2

    猜你喜歡
    子結(jié)構(gòu)意圖選擇性
    Keys
    原始意圖、對(duì)抗主義和非解釋主義
    法律方法(2022年2期)2022-10-20 06:42:20
    陸游詩(shī)寫(xiě)意圖(國(guó)畫(huà))
    完全對(duì)換網(wǎng)絡(luò)的結(jié)構(gòu)連通度和子結(jié)構(gòu)連通度
    制定法解釋與立法意圖的反事實(shí)檢驗(yàn)
    法律方法(2021年3期)2021-03-16 05:56:58
    選擇性聽(tīng)力
    鋼框架腹板雙角鋼連接梁柱子結(jié)構(gòu)抗倒塌性能分析
    選擇性應(yīng)用固定物治療浮膝損傷的療效分析
    基于子結(jié)構(gòu)的柴油機(jī)曲軸有限元建模方法研究
    選擇性執(zhí)法的成因及對(duì)策
    国产xxxxx性猛交| 90打野战视频偷拍视频| 欧美日韩成人在线一区二区| 婷婷丁香在线五月| 午夜福利影视在线免费观看| 午夜免费成人在线视频| 俄罗斯特黄特色一大片| 一区二区av电影网| 国产av国产精品国产| 一边摸一边做爽爽视频免费| 他把我摸到了高潮在线观看 | 自拍欧美九色日韩亚洲蝌蚪91| 免费一级毛片在线播放高清视频 | 中文欧美无线码| 法律面前人人平等表现在哪些方面| 欧美乱码精品一区二区三区| 久久久久久久大尺度免费视频| 亚洲,欧美精品.| 国产成人精品久久二区二区91| 99久久精品国产亚洲精品| av国产精品久久久久影院| 亚洲欧美激情在线| 一本一本久久a久久精品综合妖精| 一边摸一边抽搐一进一小说 | 国产精品国产高清国产av | 久久人妻熟女aⅴ| 国产精品秋霞免费鲁丝片| 日本av手机在线免费观看| 一级黄色大片毛片| 亚洲男人天堂网一区| 亚洲精品自拍成人| 最新美女视频免费是黄的| 精品福利观看| 久久精品aⅴ一区二区三区四区| 欧美激情高清一区二区三区| 精品一区二区三区四区五区乱码| 女人爽到高潮嗷嗷叫在线视频| 伊人久久大香线蕉亚洲五| 亚洲精品美女久久av网站| 免费人妻精品一区二区三区视频| 黄色a级毛片大全视频| 亚洲熟女毛片儿| 精品人妻在线不人妻| 丝袜美腿诱惑在线| 成人国语在线视频| 在线 av 中文字幕| 日韩欧美一区二区三区在线观看 | 91国产中文字幕| av一本久久久久| 亚洲色图av天堂| 巨乳人妻的诱惑在线观看| 久久中文字幕人妻熟女| 精品午夜福利视频在线观看一区 | 视频区欧美日本亚洲| 别揉我奶头~嗯~啊~动态视频| 人人澡人人妻人| 日韩一区二区三区影片| 国产一区二区三区综合在线观看| 久久精品亚洲av国产电影网| 我的亚洲天堂| 日韩欧美国产一区二区入口| 女人久久www免费人成看片| 免费观看a级毛片全部| 人人妻人人添人人爽欧美一区卜| 好男人电影高清在线观看| 啦啦啦 在线观看视频| 久9热在线精品视频| 久久99热这里只频精品6学生| 另类精品久久| 亚洲av日韩精品久久久久久密| 亚洲熟女精品中文字幕| 丝袜美足系列| 日本欧美视频一区| 纵有疾风起免费观看全集完整版| 亚洲欧洲精品一区二区精品久久久| 欧美精品亚洲一区二区| 99re6热这里在线精品视频| 国产色视频综合| 国产在线精品亚洲第一网站| 国产成人欧美| 精品久久久久久久毛片微露脸| 女警被强在线播放| 欧美人与性动交α欧美软件| 欧美亚洲日本最大视频资源| 天堂俺去俺来也www色官网| 欧美 亚洲 国产 日韩一| 亚洲自偷自拍图片 自拍| 日本黄色视频三级网站网址 | 欧美日韩亚洲综合一区二区三区_| 成人手机av| 国产人伦9x9x在线观看| 999精品在线视频| 99re6热这里在线精品视频| 国产av又大| 50天的宝宝边吃奶边哭怎么回事| 纯流量卡能插随身wifi吗| 国产三级黄色录像| 大码成人一级视频| 国产精品一区二区精品视频观看| 蜜桃在线观看..| 久久精品亚洲av国产电影网| 99久久99久久久精品蜜桃| 精品人妻1区二区| 欧美激情高清一区二区三区| 亚洲欧洲精品一区二区精品久久久| 日韩中文字幕欧美一区二区| 露出奶头的视频| 久久这里只有精品19| 久久精品国产综合久久久| videos熟女内射| 亚洲av第一区精品v没综合| 成人三级做爰电影| 一区二区三区激情视频| 大陆偷拍与自拍| 国产单亲对白刺激| 老熟妇乱子伦视频在线观看| 亚洲av美国av| 一进一出抽搐动态| 亚洲va日本ⅴa欧美va伊人久久| 国产真人三级小视频在线观看| 久久久久久久精品吃奶| 成人影院久久| 久久久久久久大尺度免费视频| 国产精品自产拍在线观看55亚洲 | 夜夜骑夜夜射夜夜干| 国产成人系列免费观看| 久久精品91无色码中文字幕| 窝窝影院91人妻| 韩国精品一区二区三区| 69av精品久久久久久 | 亚洲精品国产精品久久久不卡| bbb黄色大片| 午夜91福利影院| 国产成人系列免费观看| 中文欧美无线码| 丁香六月欧美| 亚洲国产看品久久| 欧美日韩视频精品一区| 一本大道久久a久久精品| 国产真人三级小视频在线观看| 久久精品91无色码中文字幕| 色播在线永久视频| 欧美黑人精品巨大| 91国产中文字幕| 丁香六月欧美| 天天躁狠狠躁夜夜躁狠狠躁| 中国美女看黄片| 国产99久久九九免费精品| 精品人妻1区二区| 69av精品久久久久久 | 亚洲av日韩精品久久久久久密| 女人精品久久久久毛片| 97人妻天天添夜夜摸| 18禁国产床啪视频网站| 亚洲伊人久久精品综合| 777久久人妻少妇嫩草av网站| 国产精品免费一区二区三区在线 | 18禁裸乳无遮挡动漫免费视频| 亚洲色图av天堂| 男女床上黄色一级片免费看| 亚洲人成伊人成综合网2020| 亚洲午夜精品一区,二区,三区| 他把我摸到了高潮在线观看 | 国产xxxxx性猛交| 一级,二级,三级黄色视频| 国产一区二区 视频在线| 成人av一区二区三区在线看| 天天操日日干夜夜撸| 国产人伦9x9x在线观看| 男女午夜视频在线观看| 一区二区三区精品91| 丁香六月欧美| av欧美777| 亚洲五月婷婷丁香| 我要看黄色一级片免费的| 久久久欧美国产精品| 精品国产乱码久久久久久小说| 我要看黄色一级片免费的| 在线永久观看黄色视频| aaaaa片日本免费| 激情在线观看视频在线高清 | 18在线观看网站| 久久青草综合色| 久久久国产欧美日韩av| 电影成人av| 国产精品一区二区免费欧美| 好男人电影高清在线观看| 性色av乱码一区二区三区2| 免费久久久久久久精品成人欧美视频| 在线亚洲精品国产二区图片欧美| 69av精品久久久久久 | 国产伦人伦偷精品视频| 国产在线精品亚洲第一网站| 欧美精品高潮呻吟av久久| 亚洲性夜色夜夜综合| 熟女少妇亚洲综合色aaa.| 999久久久精品免费观看国产| 国产成人精品在线电影| 精品第一国产精品| 国产成人欧美| 肉色欧美久久久久久久蜜桃| 久久人妻av系列| 久久人人97超碰香蕉20202| 久久人妻熟女aⅴ| av天堂久久9| 亚洲伊人色综图| 交换朋友夫妻互换小说| 9色porny在线观看| 国产一区有黄有色的免费视频| 高清黄色对白视频在线免费看| 国产一区二区 视频在线| 精品亚洲乱码少妇综合久久| 免费人妻精品一区二区三区视频| 成年人午夜在线观看视频| 91精品三级在线观看| 久久这里只有精品19| 老司机在亚洲福利影院| 露出奶头的视频| 亚洲国产中文字幕在线视频| 午夜免费成人在线视频| 日本av免费视频播放| 无限看片的www在线观看| 国产91精品成人一区二区三区 | 亚洲专区中文字幕在线| 深夜精品福利| 精品久久久久久久毛片微露脸| 丝袜人妻中文字幕| 热re99久久国产66热| 国产精品麻豆人妻色哟哟久久| 免费人妻精品一区二区三区视频| 99久久99久久久精品蜜桃| 午夜福利乱码中文字幕| 99久久国产精品久久久| 黄网站色视频无遮挡免费观看| 欧美日韩亚洲综合一区二区三区_| 最近最新中文字幕大全电影3 | 日韩欧美一区二区三区在线观看 | 桃花免费在线播放| 我要看黄色一级片免费的| 巨乳人妻的诱惑在线观看| 中文欧美无线码| 黄片播放在线免费| 免费看a级黄色片| 久久性视频一级片| 国产精品免费视频内射| 51午夜福利影视在线观看| 亚洲欧美日韩高清在线视频 | 国产日韩一区二区三区精品不卡| 国产在线观看jvid| 国产国语露脸激情在线看| 黄色视频在线播放观看不卡| 肉色欧美久久久久久久蜜桃| 国产成人精品久久二区二区免费| 老汉色av国产亚洲站长工具| 亚洲国产欧美在线一区| 日韩免费av在线播放| 一级片免费观看大全| 成人精品一区二区免费| 日本黄色日本黄色录像| 国产一区二区 视频在线| 精品一区二区三卡| 久久久久久亚洲精品国产蜜桃av| 亚洲精品国产区一区二| 一边摸一边抽搐一进一小说 | 91成人精品电影| 超色免费av| 亚洲专区字幕在线| 国产欧美日韩精品亚洲av| 欧美成人免费av一区二区三区 | 啦啦啦免费观看视频1| 欧美人与性动交α欧美精品济南到| 在线十欧美十亚洲十日本专区| 99国产精品免费福利视频| 亚洲精品乱久久久久久| 乱人伦中国视频| 嫁个100分男人电影在线观看| 搡老熟女国产l中国老女人| 国产伦理片在线播放av一区| av一本久久久久| 天天躁狠狠躁夜夜躁狠狠躁| 免费不卡黄色视频| 亚洲国产欧美日韩在线播放| 亚洲人成电影观看| 亚洲精品一卡2卡三卡4卡5卡| 少妇裸体淫交视频免费看高清 | 性少妇av在线| 国产欧美日韩一区二区三区在线| 如日韩欧美国产精品一区二区三区| 亚洲自偷自拍图片 自拍| 成年人免费黄色播放视频| 美女扒开内裤让男人捅视频| 午夜福利视频在线观看免费| 国产麻豆69| 欧美成人午夜精品| 交换朋友夫妻互换小说| 女性被躁到高潮视频| 一个人免费在线观看的高清视频| 人人妻人人添人人爽欧美一区卜| 欧美变态另类bdsm刘玥| 欧美成人免费av一区二区三区 | 久久亚洲精品不卡| 欧美黄色淫秽网站| 久久精品国产a三级三级三级| 最新的欧美精品一区二区| 高清欧美精品videossex| 国产三级黄色录像| 亚洲精品久久午夜乱码| 一区二区日韩欧美中文字幕| 欧美一级毛片孕妇| 极品少妇高潮喷水抽搐| 日本一区二区免费在线视频| 国产精品久久久久久精品古装| 精品福利永久在线观看| 亚洲va日本ⅴa欧美va伊人久久| 国产亚洲欧美在线一区二区| 人人澡人人妻人| 久久亚洲精品不卡| 久久久国产一区二区| 99国产极品粉嫩在线观看| 成年人黄色毛片网站| 老熟妇乱子伦视频在线观看| 天天操日日干夜夜撸| 咕卡用的链子| 午夜福利在线免费观看网站| 国产免费视频播放在线视频| 在线天堂中文资源库| 黑人欧美特级aaaaaa片| 人人妻人人爽人人添夜夜欢视频| 成人18禁高潮啪啪吃奶动态图| avwww免费| 首页视频小说图片口味搜索| 国产一区有黄有色的免费视频| 老司机午夜十八禁免费视频| www.自偷自拍.com| 99久久国产精品久久久| www.自偷自拍.com| 性少妇av在线| 在线观看人妻少妇| 国产97色在线日韩免费| 丝袜喷水一区| 狂野欧美激情性xxxx| 新久久久久国产一级毛片| 久久这里只有精品19| 三上悠亚av全集在线观看| 成人手机av| 亚洲三区欧美一区| 国产av又大| 天堂俺去俺来也www色官网| 国产黄色免费在线视频| 一边摸一边做爽爽视频免费| 久久精品亚洲av国产电影网| 欧美亚洲日本最大视频资源| 午夜久久久在线观看| 国产欧美日韩一区二区三区在线| 黄色片一级片一级黄色片| 日韩免费av在线播放| 欧美人与性动交α欧美精品济南到| 精品国产超薄肉色丝袜足j| 久久久久国内视频| 女同久久另类99精品国产91| 高清毛片免费观看视频网站 | 狂野欧美激情性xxxx| 无遮挡黄片免费观看| 日本vs欧美在线观看视频| 18禁观看日本| 久久久精品国产亚洲av高清涩受| 十八禁高潮呻吟视频| 精品一区二区三区四区五区乱码| 十八禁高潮呻吟视频| 精品一区二区三区四区五区乱码| 免费看a级黄色片| bbb黄色大片| 女性被躁到高潮视频| 天堂动漫精品| 国产成人影院久久av| 亚洲国产精品一区二区三区在线| 免费久久久久久久精品成人欧美视频| 妹子高潮喷水视频| 免费高清在线观看日韩| 亚洲国产中文字幕在线视频| 欧美 日韩 精品 国产| 狠狠狠狠99中文字幕| 一级毛片女人18水好多| 国产成人系列免费观看| 国产av又大| 大片免费播放器 马上看| 丁香欧美五月| 亚洲国产欧美一区二区综合| 精品国内亚洲2022精品成人 | 又大又爽又粗| 久久人妻av系列| 激情在线观看视频在线高清 | 香蕉国产在线看| 麻豆成人av在线观看| 日韩人妻精品一区2区三区| 成年版毛片免费区| 久久亚洲真实| 一级a爱视频在线免费观看| 69av精品久久久久久 | 黄片大片在线免费观看| 另类精品久久| 美女主播在线视频| 久久人人97超碰香蕉20202| bbb黄色大片| 91字幕亚洲| 18禁黄网站禁片午夜丰满| 老熟女久久久| 在线av久久热| 亚洲国产看品久久| 国产精品一区二区在线不卡| 亚洲久久久国产精品| 一级毛片女人18水好多| 老汉色av国产亚洲站长工具| 久久国产亚洲av麻豆专区| 午夜福利在线免费观看网站| 成人永久免费在线观看视频 | 激情视频va一区二区三区| 日韩大码丰满熟妇| 少妇粗大呻吟视频| 久久这里只有精品19| 亚洲伊人色综图| 色婷婷av一区二区三区视频| 亚洲国产毛片av蜜桃av| 色综合欧美亚洲国产小说| 欧美av亚洲av综合av国产av| 午夜成年电影在线免费观看| 亚洲男人天堂网一区| 啦啦啦中文免费视频观看日本| 成人免费观看视频高清| 黑人操中国人逼视频| 大陆偷拍与自拍| 国产成+人综合+亚洲专区| 免费女性裸体啪啪无遮挡网站| 超碰成人久久| 电影成人av| 变态另类成人亚洲欧美熟女 | 亚洲精品成人av观看孕妇| 黄色毛片三级朝国网站| 成人免费观看视频高清| 久久精品亚洲熟妇少妇任你| 中亚洲国语对白在线视频| 建设人人有责人人尽责人人享有的| 男人操女人黄网站| 亚洲伊人色综图| 亚洲第一欧美日韩一区二区三区 | 亚洲成a人片在线一区二区| 国产日韩欧美在线精品| 欧美国产精品一级二级三级| www.999成人在线观看| 日日夜夜操网爽| 人人妻人人澡人人爽人人夜夜| 国产成+人综合+亚洲专区| 交换朋友夫妻互换小说| 在线观看www视频免费| 免费在线观看黄色视频的| 新久久久久国产一级毛片| 午夜激情久久久久久久| a级片在线免费高清观看视频| 色视频在线一区二区三区| 十八禁网站网址无遮挡| 搡老熟女国产l中国老女人| 久久久国产精品麻豆| 国产一区二区 视频在线| 欧美变态另类bdsm刘玥| 老司机午夜福利在线观看视频 | 美女高潮到喷水免费观看| 国产精品一区二区免费欧美| 人妻 亚洲 视频| 精品欧美一区二区三区在线| 好男人电影高清在线观看| 这个男人来自地球电影免费观看| 免费在线观看视频国产中文字幕亚洲| 满18在线观看网站| 国产日韩欧美视频二区| 人人妻人人澡人人看| 午夜免费成人在线视频| 大片电影免费在线观看免费| 亚洲成人国产一区在线观看| 日日爽夜夜爽网站| 黄色视频,在线免费观看| 女性被躁到高潮视频| 十八禁人妻一区二区| 老熟妇仑乱视频hdxx| 最新在线观看一区二区三区| 久久狼人影院| 久久久久久久久免费视频了| 大陆偷拍与自拍| 欧美日韩精品网址| 精品熟女少妇八av免费久了| 亚洲欧美色中文字幕在线| 国产精品一区二区在线不卡| 人人妻人人澡人人爽人人夜夜| 老司机亚洲免费影院| 国产黄色免费在线视频| 国产精品影院久久| 夫妻午夜视频| 99国产精品免费福利视频| 丰满少妇做爰视频| 久久精品成人免费网站| 大型黄色视频在线免费观看| 成人三级做爰电影| 一二三四社区在线视频社区8| 亚洲av片天天在线观看| 国产精品 国内视频| 亚洲国产成人一精品久久久| 777米奇影视久久| 亚洲男人天堂网一区| 亚洲欧美一区二区三区久久| 亚洲精品自拍成人| 亚洲精品在线观看二区| 一级毛片电影观看| 国产欧美日韩精品亚洲av| 日韩免费高清中文字幕av| 丝袜人妻中文字幕| 人人妻,人人澡人人爽秒播| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲av美国av| 日韩免费高清中文字幕av| 18在线观看网站| 99久久人妻综合| 免费久久久久久久精品成人欧美视频| 亚洲精品粉嫩美女一区| 五月天丁香电影| 后天国语完整版免费观看| 天天躁狠狠躁夜夜躁狠狠躁| 久久人人爽av亚洲精品天堂| 亚洲九九香蕉| 国产日韩欧美视频二区| 国产成人免费观看mmmm| 黄片小视频在线播放| 黑人操中国人逼视频| 1024视频免费在线观看| 亚洲全国av大片| 美女扒开内裤让男人捅视频| 亚洲欧美日韩另类电影网站| 别揉我奶头~嗯~啊~动态视频| 少妇精品久久久久久久| 久久影院123| 国产精品一区二区在线观看99| 亚洲色图av天堂| bbb黄色大片| 美女午夜性视频免费| 青青草视频在线视频观看| 中文字幕人妻丝袜制服| 少妇 在线观看| 99riav亚洲国产免费| 纯流量卡能插随身wifi吗| 自拍欧美九色日韩亚洲蝌蚪91| www.999成人在线观看| 亚洲va日本ⅴa欧美va伊人久久| 成年人黄色毛片网站| 天天影视国产精品| 国产99久久九九免费精品| 国产福利在线免费观看视频| 亚洲专区国产一区二区| 国产精品美女特级片免费视频播放器 | 夜夜爽天天搞| 欧美+亚洲+日韩+国产| 夫妻午夜视频| 老司机影院毛片| 天堂俺去俺来也www色官网| 久久久久久亚洲精品国产蜜桃av| 欧美黄色片欧美黄色片| 日韩免费高清中文字幕av| 后天国语完整版免费观看| 欧美在线黄色| 国产成人免费无遮挡视频| 精品福利永久在线观看| 久久精品国产a三级三级三级| 正在播放国产对白刺激| 欧美日韩亚洲综合一区二区三区_| 手机成人av网站| 欧美日韩成人在线一区二区| 亚洲国产欧美日韩在线播放| 无人区码免费观看不卡 | a级毛片在线看网站| av免费在线观看网站| 久久这里只有精品19| 亚洲视频免费观看视频| 亚洲午夜理论影院| 国产精品偷伦视频观看了| 天天躁狠狠躁夜夜躁狠狠躁| 国产av国产精品国产| 51午夜福利影视在线观看| 三上悠亚av全集在线观看| 国产高清videossex| 黄色视频,在线免费观看| 欧美日韩黄片免| 国产亚洲欧美精品永久| 亚洲人成77777在线视频| 亚洲成人免费电影在线观看| 在线av久久热| 黄色视频不卡| 久久国产精品影院| 国产精品亚洲av一区麻豆| 19禁男女啪啪无遮挡网站| 下体分泌物呈黄色| 亚洲天堂av无毛| 精品人妻在线不人妻| 国产在视频线精品| av福利片在线| 18禁国产床啪视频网站| 757午夜福利合集在线观看| 国产精品秋霞免费鲁丝片| 日本精品一区二区三区蜜桃| 国产老妇伦熟女老妇高清| 国产精品秋霞免费鲁丝片| 亚洲成av片中文字幕在线观看| 黄色视频在线播放观看不卡| 女人精品久久久久毛片| 啦啦啦 在线观看视频| 国产精品一区二区精品视频观看| av片东京热男人的天堂| 国产欧美日韩精品亚洲av| 一级黄色大片毛片|