亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

筆刷行為的真實(shí)實(shí)時(shí)模擬的制作方法

文檔序號(hào):6585630閱讀:320來源:國知局
專利名稱:筆刷行為的真實(shí)實(shí)時(shí)模擬的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)系統(tǒng),更具體地,涉及使用計(jì)算機(jī)系統(tǒng)模擬用于將顏料或墨水
堆積到虛擬畫布上的筆刷。
背景技術(shù)
數(shù)字圖像編輯是使用計(jì)算機(jī)系統(tǒng)創(chuàng)造和/或修改數(shù)字圖像的過程。使用專用軟件 程序,用戶能夠以多種方法處理和轉(zhuǎn)換圖像。這些數(shù)字圖像編輯器可以包括不同復(fù)雜程度 的程序,例如與獲取設(shè)備(例如,具有管理亮度和對(duì)比度的捆綁或內(nèi)置程序的數(shù)字照相機(jī) 和掃描儀)相關(guān)聯(lián)的用途有限的程序;適用于諸如旋轉(zhuǎn)和裁切圖片這樣相對(duì)簡(jiǎn)單操作的受 限編輯器;和具有廣泛和復(fù)雜的屬性設(shè)置的專業(yè)級(jí)程序。 數(shù)字圖像可包括光柵圖形、矢量圖形或者它們的組合。光柵圖形數(shù)據(jù)(此處也被 稱為位圖)可以作為被稱作像素的單個(gè)圖片元素的柵格進(jìn)行存儲(chǔ)和處理。位圖可通過其以 像素為單位的寬度和高度進(jìn)行描述,并且也可通過每個(gè)像素的比特?cái)?shù)來進(jìn)行描述。通常,對(duì) 于每個(gè)紅、綠和藍(lán)色通道中的每個(gè)像素,在RGB(紅、綠、藍(lán))顏色空間中定義的彩色位圖可 以包括1到8個(gè)比特。阿爾法通道可以用來存儲(chǔ)諸如每像素的透明度值的附加數(shù)據(jù)。矢量 圖形數(shù)據(jù)可作為由幾何圖原構(gòu)建的一個(gè)或多個(gè)的幾何對(duì)象進(jìn)行存儲(chǔ)和處理。這些幾何圖原 (例如點(diǎn)、線、路徑、多邊形、比塞爾曲線和文本字符)可基于數(shù)學(xué)等式建立,以表示數(shù)字圖 像中矢量圖形數(shù)據(jù)的部分。典型地,這些幾何對(duì)象可以位于二維或三維空間中。為了顯示 或者編輯對(duì)象,三維對(duì)象可以在二維空間中表示。 數(shù)字圖像編輯器所通常提供的操作是,使用虛擬"畫筆"(此處也被稱作筆刷)而 通過堆積虛擬顏料或虛擬墨水來修改數(shù)字圖像。各種在先方法已在此操作的環(huán)境下嘗試過 模擬真實(shí)世界中的筆刷及其行為。例如,可以創(chuàng)建二維(2D)光柵圖像來表示筆刷接觸畫布 時(shí)的形狀,而且該二維圖像可以沿著輸入路徑反復(fù)進(jìn)行圖章操作。在另一方法中,筆刷末端 的矢量表示用以替代二維光柵圖像。然而,這樣的方法會(huì)產(chǎn)生不期望的偽像,尤其是當(dāng)進(jìn)行 圖章操作的速度不夠高的時(shí)候。

發(fā)明內(nèi)容
本發(fā)明公開了用來模擬筆刷行為的系統(tǒng)、方法和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的多個(gè)實(shí)施 方式。在一個(gè)實(shí)施方式中,可以基本實(shí)時(shí)地模擬筆刷行為,以便采用真實(shí)方式將墨水或顏料 堆積到虛擬畫布上。在一個(gè)實(shí)施方式中,通過使用筆刷模型可以接收用戶輸入從而修改圖 像。該筆刷模型可包括存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中的數(shù)據(jù)。該筆刷模型可包括多個(gè)離散 的"虛擬"鬃毛,這里也被稱為鬃毛表示。用戶輸入可包括筆刷模型的動(dòng)作,例如介于第一 位置(例如在第一模擬步驟)和第二位置(例如在第二模擬步驟)之間的動(dòng)作。用戶輸 入還可以包括一個(gè)或多個(gè)顏料值,用以表示將被應(yīng)用的該"顏料"或"墨水"的顏色。
可以確定多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)動(dòng)作中對(duì)于圖像的效果。在一 個(gè)實(shí)施方式中,針對(duì)多個(gè)鬃毛表示中的每一個(gè)鬃毛表示(例如介于該第一模擬步驟和第
4二模擬步驟之間)可以確定連續(xù)的筆畫。在一個(gè)實(shí)施方式中,可以確定各個(gè)鬃毛表示在第 一模擬步驟和第二模擬步驟之間的滑動(dòng)量的近似值??梢酝ㄟ^四邊形來表示這個(gè)量的近似 值,該四邊形包括在第一模擬步驟和第二模擬步驟中接觸畫布的相應(yīng)鏈接的部分的端點(diǎn)。 可基于所確定的多個(gè)鬃毛表示中的每一個(gè)鬃毛表示對(duì)于圖像的效果來修改圖像。


圖1的框圖示出了配置用于筆刷模擬的數(shù)字圖像編輯程序的實(shí)施方式。
圖2的框圖示出了根據(jù)一個(gè)實(shí)施方式的筆刷模型。 圖3的框圖進(jìn)一步示出了根據(jù)一個(gè)實(shí)施方式的筆刷模型。 圖4A和4B的框圖示出了根據(jù)一個(gè)實(shí)施方式的筆刷模型的例子。 圖5A和5B的框圖示出了根據(jù)一個(gè)實(shí)施方式的筆刷行為模擬的例子。 圖6的流程圖示出了根據(jù)一個(gè)實(shí)施方式進(jìn)行筆刷行為模擬的方法。 圖7的框圖示出了一個(gè)計(jì)算機(jī)系統(tǒng)的組成元件,其配置用來實(shí)現(xiàn)筆刷模擬的系統(tǒng)
和方法的實(shí)施方式。 盡管允許本發(fā)明存在各種修改和替換形式,具體的實(shí)施方式通過圖示中的例子來 示出,并在此進(jìn)行詳細(xì)的描述。然而應(yīng)當(dāng)理解,此處的圖示和詳細(xì)描述并不用于限制本發(fā)明 所公開的特定形式;而是相反地,本發(fā)明將涵蓋落在通過所附權(quán)利要求所限定的本發(fā)明的 精神和范圍內(nèi)的全部修改、等同和替換。
具體實(shí)施例方式
通過在此描述的系統(tǒng)和方法的實(shí)施方式,可以在一個(gè)繪畫應(yīng)用中模擬真實(shí)筆刷行 為。在一個(gè)實(shí)施方式中,可以基本實(shí)時(shí)模擬筆刷行為,以將墨水或顏料堆積在虛擬畫布上。 筆刷模型可包括離散鬃毛的較大集合。鬃毛可以包括"虛擬"鬃毛,此處也可被稱作鬃毛表 示。筆刷行為的模擬會(huì)導(dǎo)致由掃動(dòng)各個(gè)鬃毛成為四邊形所產(chǎn)生的連續(xù)的筆畫。該筆刷模型 和筆刷行為模擬可以對(duì)在筆畫動(dòng)作中筆刷末端形狀的改變和從該動(dòng)作中產(chǎn)生的顏料或墨 水的堆積進(jìn)行建模。通過獨(dú)立于其他鬃毛地計(jì)算每個(gè)鬃毛的效果,可以在形成筆畫時(shí)實(shí)現(xiàn) 真實(shí)筆刷如何堆積顏料或墨水和形狀改變的可信再現(xiàn)。 圖1是示出了配置用于與此處描述的筆刷模擬技術(shù)一起使用的數(shù)字圖像編輯程 序100的實(shí)施方式的框圖。數(shù)字圖像編輯程序100(此處也稱為圖像編輯器100)可以用來 創(chuàng)造和/或修改數(shù)字圖像110(此處也稱為圖像110)。該數(shù)字圖像編輯程序100可以包括 多個(gè)編輯操作120。編輯操作120可以包括用于修改圖像110的元素的適合操作。例如,各 種效果例如濾鏡(例如高斯模糊、中值濾鏡、增加噪聲、降低噪聲、碎片、鈍化遮罩)、圖像 調(diào)節(jié)(例如,水平、曲線、亮度/對(duì)比度、陰影/高亮)和其他操作(例如,調(diào)整大小、裁切、閾 值化、旋轉(zhuǎn)、透視變形),可以將所述各種效果應(yīng)用于一個(gè)或多個(gè)圖像、圖像110內(nèi)的選取區(qū) 或與圖像110相關(guān)的其他適合數(shù)據(jù)。在一個(gè)實(shí)施方式中,可以將例如Adobe Photoshop 、 Adobe Hlustrator⑧或Adobe AfterEffectS (Adobe Systems公司提供)的適合產(chǎn)品用 作該圖像編輯器100。 使用圖像編輯器IOO,用戶可以設(shè)法對(duì)數(shù)字圖片110應(yīng)用像素值(在此也被稱為 "顏料"或"墨水"),該像素值例如像素顏色和阿爾法(例如透明度)值。例如,用戶可能希望使用圖像編輯器100的編輯操作120所提供的畫筆來繪制圖像110的一部分。數(shù)字圖 像編輯程序100可包括用來模仿此類畫筆的筆刷模型130。數(shù)字圖像編輯程序100也可包 括用來執(zhí)行筆刷行為模擬功能140的指令。正如后文更詳細(xì)描述的,該筆刷行為模擬功能 140可包括一個(gè)或多個(gè)用以模擬畫筆行為的操作。該筆刷行為模擬功能140可使用筆刷模 型130。 圖2的框圖示出了根據(jù)一個(gè)實(shí)施方式的簡(jiǎn)化筆刷模型。在一個(gè)實(shí)施方式中,筆刷 可以被模擬為離散的"虛擬"鬃毛的集合。正如圖2所示,筆刷模型130可包括多個(gè)鬃毛 131。該多個(gè)鬃毛131在此也稱作鬃毛表示131。在一個(gè)實(shí)施方式中,該筆刷模型也可包括 筆刷柄135。該筆刷柄135在此也可被稱為筆刷柄表示135。多個(gè)鬃毛131可以附接至筆 刷柄135的末端。在一個(gè)實(shí)施方式中,鬃毛131可包括足夠數(shù)量的單個(gè)鬃毛(例如50到 100),用以正確模擬真實(shí)筆刷的行為。 圖3的框圖進(jìn)一步描述了根據(jù)一個(gè)實(shí)施方式的筆刷模型。每個(gè)鬃毛可包括一系列 鏈接。每個(gè)鏈接可包括諸如具有最小(例如接近0)半徑的細(xì)圓柱。鬃毛中的鏈接可以 端到端地連接。鏈接間的連接可包括球窩接頭。介于每個(gè)鬃毛的第一鏈接和柄135之間的 連接也可包括球窩接頭。這些球窩接頭可以允許在3個(gè)自由度(3D0F)進(jìn)行任意旋轉(zhuǎn)運(yùn)動(dòng)。 如圖3中的例子所示,鬃毛可以包括如下鏈接的集合鏈接132A、132B、132C和132D。該鏈 接132A、132B、132C和132D可以通過窩球接頭133A、133B和133C彼此相連。鬃毛可以通 過附加的球窩接頭133D與筆刷柄135連接。在一個(gè)實(shí)施方式中,鬃毛中的鏈接數(shù)可以控制 鬃毛能夠形成的曲線的尺寸,而該尺寸與鬃毛的長(zhǎng)度成比例。更緊密的曲線可能會(huì)伴隨更 多的鏈接,更平滑的形狀通常伴隨更少的鏈接。因?yàn)?真實(shí)世界"的筆刷鬃毛通常不會(huì)形成 緊密的曲線或者小線圈,在一個(gè)實(shí)施方式中,每個(gè)鬃毛采用少數(shù)的鏈接。
在一個(gè)實(shí)施方式中,可以采用具有嚴(yán)格約束的標(biāo)準(zhǔn)組裝的剛體動(dòng)力學(xué)來確定筆刷 模型130的動(dòng)作。因此,對(duì)于每個(gè)將被模擬的對(duì)象(例如每個(gè)鏈接或柄),該動(dòng)作被當(dāng)作 受目標(biāo)間的接頭所采用的約束支配的6自由度(6D0F)的剛體來計(jì)算。真實(shí)的筆刷鬃毛往 往通過施力抵抗變形,從而恢復(fù)其在靜止(例如,在靜止形狀)時(shí)的形狀。為了模擬筆刷鬃 毛的剛度,筆刷模型130的每個(gè)接頭都可釋放一定的力量。鬃毛的靜止形狀可用每個(gè)接頭 的靜止角度來定義。例如,對(duì)于直線鬃毛,可以將每個(gè)角度設(shè)置為O。接頭限制可以用來限
定每個(gè)接頭的有效角度為o,并且剛度約束力可以用來恢復(fù)這個(gè)接頭限制。因?yàn)楣P刷鬃毛是
典型的剛度動(dòng)態(tài)系統(tǒng),其包括迅速改變的巨大力量,在一個(gè)實(shí)施方式中可采用固有求解方 式以確保穩(wěn)定性。 不同類型的筆刷可以通過改變筆刷模型130的參數(shù)來加以模擬??梢愿淖児P刷模 型130的參數(shù),從而產(chǎn)生不同的鬃毛材質(zhì)、不同的鬃毛配置(例如,排列)和不同類型的筆 刷變形行為(例如,鬃毛分離、鬃毛彎曲等)。圖4A和圖4B的框圖示出了根據(jù)一個(gè)實(shí)施方 式的不同筆刷類型的例子。例如,標(biāo)準(zhǔn)的圓形筆刷的鬃毛可以分布在柄的圓周內(nèi)、具有相同 方向的鬃毛并且具有一個(gè)錐形的末端。圖4A中所示的筆刷模型130A可以模擬附接在柄 135A上的鬃毛131A的圓形排列。扁形筆刷可以具有矩形橫截面,并且具有相同長(zhǎng)度的鬃 毛。圖4B中的筆刷模型130B可以模擬附接在矩形柄135B上的鬃毛131B的這種排列。扇 形筆刷的鬃毛可以沿著放射方向和統(tǒng)一長(zhǎng)度的弧進(jìn)行分布。另外,不同的鬃毛材質(zhì)(例如, 駱駝毛、獾毛、紫貂毛、尼龍等)可以通過改變沿鬃毛的每個(gè)接頭的剛度來模擬。例如,總體而言, 一些纖維類型更硬,而其他則在底部較硬而朝向末端變得硬度較小。 在一個(gè)實(shí)施方式中,筆刷模型130可以用于模擬筆刷行為(使用筆刷行為模擬功
能140)。通過鬃毛與畫布接觸形成的形狀可稱為筆刷接觸形狀。通常,筆刷行為的模擬可
以包括沿著模擬步驟之間由筆刷動(dòng)作所定義的2D曲線,來掃過筆刷接觸形狀的二維(2D)
圖像。采用現(xiàn)有方法來創(chuàng)造該被掃區(qū)域,沿著曲線在子步驟中對(duì)2D圖像進(jìn)行圖章操作,從
而對(duì)于由采樣速度所確定的多個(gè)子步驟進(jìn)行擬合求解。采用筆刷行為模擬功能140可以基
本避免在沿著路徑使用圖章的某些在先方法中所出現(xiàn)的采樣偽像。 在一個(gè)實(shí)施方式中,采用前述筆刷模型130可以在離散模擬步驟間產(chǎn)生連續(xù)的筆刷筆畫。因?yàn)槊總€(gè)鬃毛模擬為鏈接序列,鬃毛的掃過量(例如,在筆畫中由鬃毛筆刷掃過的量)可計(jì)算為每個(gè)鏈接的掃過量的總和。每個(gè)鏈接可包括可以由直線擬合的細(xì)圓柱。將細(xì)圓柱的掃過量正交地投影到2D上以確定最后的畫布標(biāo)記。因此,不同于掃過圓柱來產(chǎn)生量值,該最后的標(biāo)記通過對(duì)每個(gè)圓柱掃過一條線從而生成四邊形(在此也被稱為方塊)來近似。 為了將線掃動(dòng)為方塊,該方塊可以通過連接起始線段的端點(diǎn)和結(jié)束線段的端點(diǎn)來構(gòu)建。繼而,將每個(gè)方塊正交投影到畫布平面以產(chǎn)生最后的標(biāo)記。為了模擬每個(gè)鬃毛接觸畫布的部分,使用高度閾值來裁切每個(gè)鬃毛的沒有"接觸"畫布的部分(例如,超過高度閾值)。采用該裁切技術(shù),可以模擬如下行為越是用力朝向畫布推動(dòng)筆刷,產(chǎn)生的標(biāo)記越大。
圖5A和圖5B的框圖示出了根據(jù)一個(gè)實(shí)施方式的筆刷模擬的例子。圖5A表示了與畫布150 "接觸"的鬃毛的鏈接132A。該畫布150可表示更大畫布的一部分。根據(jù)一個(gè)特定動(dòng)作151,通過移動(dòng)鏈接132A來"繪制"畫布150。鏈接132A的兩個(gè)實(shí)例可對(duì)應(yīng)于筆刷模擬的兩個(gè)步驟。在圖5A所示的例子中,整個(gè)鏈接132A在開始位置和結(jié)束位置都與畫布接觸。圖5B示出了通過與畫布接觸的鏈接132A的動(dòng)作產(chǎn)生的方塊152。方塊152可通過連接與在這兩個(gè)位置接觸畫布時(shí)的鏈接所對(duì)應(yīng)的線段端點(diǎn)來產(chǎn)生。對(duì)應(yīng)于方塊152的標(biāo)記(也被稱為"顏料"或"墨水")包括一個(gè)或多個(gè)具有適當(dāng)顏色和透明度值的像素,該標(biāo)記可以在數(shù)字圖像110的相應(yīng)位置產(chǎn)生。以此方式為接觸畫布的每個(gè)鬃毛的每個(gè)鏈接產(chǎn)生方塊和相應(yīng)的標(biāo)記,使用筆刷模型130在離散的模擬步驟之間來產(chǎn)生連續(xù)的筆刷筆畫。在一個(gè)實(shí)施方式中,畫布的相同區(qū)域會(huì)被不止一次地用筆來畫,從而模擬顏料或墨水的累積,產(chǎn)生比單獨(dú)一次用筆來畫更深的顏色。 在一個(gè)實(shí)施方式中,如果因?yàn)樵诋嫴忌系耐队皼]有命中像素,對(duì)應(yīng)于幾乎垂直的鬃毛的四邊形太細(xì)而留不下印記,則鬃毛掃過區(qū)域的近似值可能是不準(zhǔn)確的。為了解決這種潛在的不準(zhǔn)確,可以在鬃毛的最后鏈接的末點(diǎn)之間,針對(duì)每個(gè)鬃毛來光柵化寬度為1的線段。以此方式,每個(gè)接觸畫布的鬃毛可以保證在任何變形下產(chǎn)生一個(gè)最小厚度標(biāo)記(例如,至少一個(gè)像素的標(biāo)記)。雖然沿著該筆刷的標(biāo)記邊緣產(chǎn)生的額外像素在鬃毛不垂直的時(shí)候可能不正確,但錯(cuò)誤非常小而不會(huì)顯著影響最后的輸出標(biāo)記。 可以經(jīng)由筆刷行為模擬功能140而捕捉適當(dāng)?shù)挠脩糨斎?。例如,用戶輸入可以包括選中的筆刷類型以及筆刷位置和與畫布相對(duì)的筆刷運(yùn)動(dòng)方向。用戶輸入還可以包括"壓力"值,其可以由適當(dāng)?shù)妮斎胙b置(例如寫字板和/或觸筆)獲取。輸入壓力可以用來模擬應(yīng)用到筆刷的壓力。采用前述筆刷模型130和筆刷行為模擬功能140,輸入壓力可以在鬃毛131接觸畫布時(shí)將其變形為大范圍的形狀。隨著輸入壓力變化,筆刷末端的形狀可以在
7筆畫中變化。 圖6的流程圖示出了根據(jù)一個(gè)實(shí)施方式模擬筆刷行為的方法。如610所示,接收用戶輸入以使用筆刷模型來修改圖像。如上所述,筆刷模型可以包括多個(gè)鬃毛表示,并且每個(gè)鬃毛表示可以包括一個(gè)或多個(gè)鏈接的序列。用戶輸入可以包括筆刷模型的動(dòng)作,例如在第一位置(例如,在第一模擬步驟)和第二位置(例如,在第二模擬步驟)之間的動(dòng)作。用戶輸入還可以包括一個(gè)或多個(gè)表示期望應(yīng)用的"顏料"或"墨水"的顏色的繪畫值。
如620所示,可以確定在整個(gè)動(dòng)作中多個(gè)鬃毛表示中的每一個(gè)鬃毛表示對(duì)圖像的效果(如果有的話)。在一個(gè)實(shí)施方式中,在第一模擬步驟和第二模擬步驟之間,在620中對(duì)多個(gè)鬃毛表示中的每一個(gè)鬃毛表示確定連續(xù)筆畫。在一個(gè)實(shí)施方式中,在第一模擬步驟和第二模擬步驟之間,在620中確定每個(gè)鬃毛表示所掃過的量的近似值。在一個(gè)實(shí)施方式中,在620中采用裁切操作來確定多個(gè)鬃毛表示中的在畫布和該畫布上的平面之間的部分。
在一個(gè)實(shí)施方式中,在620中確定第一模擬步驟和第二模擬步驟中接觸畫布的鏈接集合??蔀樵撴溄蛹现械拿總€(gè)鏈接確定四邊形。該四邊形可以包括在第一模擬步驟和第二模擬步驟中、相應(yīng)鏈接接觸畫布部分的端點(diǎn)。然后確定每個(gè)四邊形中繪制的效果。
如630中所示,可以基于所確定的、多個(gè)鬃毛表示中的每一個(gè)在整個(gè)動(dòng)作中對(duì)圖像的效果來修改圖像。例如,可以修改由筆刷筆畫影響的像素的顏色值。在一個(gè)實(shí)施方式中,與畫布"接觸"的每個(gè)鬃毛表示可以影響沿著從第一模擬步驟到第二模擬步驟的路徑的至少一個(gè)像素。 在一個(gè)實(shí)施方式中,諸如開放動(dòng)態(tài)引擎(ODE)的適當(dāng)模擬引擎可用來執(zhí)行上面討論的筆刷模型130和/或筆刷行為模擬140。 ODE可以包括用于限定動(dòng)態(tài)模擬的一個(gè)構(gòu)架。采用0DE,每個(gè)鬃毛131可模擬為一系列通過旋轉(zhuǎn)接點(diǎn)端到端連接的剛性加蓋圓柱(例如,封殼),其中每個(gè)鬃毛附接在筆刷柄135的一個(gè)末端。接頭可建模為3自由度的球窩接頭。畫布150可建模為單個(gè)平面。鬃毛131在一個(gè)筆畫中將碰觸畫布的平面,并且碰撞可以導(dǎo)致筆刷末端變形。用戶輸入可以使用在每個(gè)時(shí)間步驟中計(jì)算的明顯的恢復(fù)力來產(chǎn)生筆刷位置。給出了目標(biāo)姿態(tài)(例如,位置和朝向),可以直接計(jì)算將筆刷的當(dāng)前姿態(tài)和動(dòng)量改變到目標(biāo)姿態(tài)所需的力量和扭矩。所計(jì)算的力量和扭矩可通過模擬引擎(例如0DE)應(yīng)用為外力。 恢復(fù)力可以用于在嘗試回到靜止形狀時(shí)對(duì)鬃毛進(jìn)行建模。在一個(gè)實(shí)施方式中,采用模擬引擎(例如,0DE)可為對(duì)恢復(fù)力進(jìn)行建模來指定接頭限制。采用模擬引擎(例如,0DE)可以為每個(gè)接頭指定啟動(dòng)角度和停止角度。通過將所有角度設(shè)置為相同值,可以產(chǎn)生靜止角度的效果??梢栽O(shè)置接點(diǎn)的約束力混合(CFM)和錯(cuò)誤減少參數(shù)(ERP)以產(chǎn)生等同于彈簧減振器系統(tǒng)的行為,并且力量限制可以避免接頭一次給該模擬增加太多能量。在模擬彈簧減振器系統(tǒng)時(shí),可以被隱性整合力量,使得可以實(shí)時(shí)模擬剛性鬃毛行為。
在一個(gè)實(shí)施方式中,使用模擬引擎(例如,0DE)可以為恢復(fù)力的建模來指定明確的角度彈性力。使用模擬引擎(例如,0DE)可為每個(gè)接頭指定啟動(dòng)和停止角度。通過將所有角度設(shè)置為相同值,可以產(chǎn)生一個(gè)靜止角度的效果。鏈接的姿態(tài)可以用來在每個(gè)模擬步驟后手動(dòng)計(jì)算該角度彈性扭矩。繼而,該角度彈性扭矩可以作為外力施加給這些鏈接。
該模擬引擎(例如,0DE)可以被用來執(zhí)行受約束的動(dòng)態(tài)模擬。受約束的動(dòng)態(tài)模擬可以通過創(chuàng)建N N矩陣為約束力求解,N是受約束的自由度的數(shù)量。將其間沒有約束和沒有相互作用的部分稱作島,對(duì)每個(gè)島,矩陣可以分為針對(duì)每個(gè)島的單獨(dú)矩陣。每個(gè)矩陣可以對(duì)特定島獨(dú)立求解。因?yàn)榍蠼庠摼仃囀菑?fù)雜性為0(N3)的問題,分別求解島一般會(huì)比把相同部分作為相互聯(lián)系的系統(tǒng)求解更快。因此,如果筆刷鬃毛是分開的而彼此之間是獨(dú)立的,則筆刷行為的模擬在計(jì)算上更有效。 如上所述,每個(gè)鬃毛可以通過接頭連接到相同的筆刷柄135上。然而,因?yàn)楸牟糠州^之于鬃毛部分而言較大,在每幀中筆刷姿態(tài)的錯(cuò)誤可以非常小。因此,筆刷柄135可以使用模擬引擎(例如ODE)建模為多個(gè)分開的筆刷柄部分。每個(gè)鬃毛使用球窩接頭而附接在分開的筆刷柄部分。雖然移動(dòng)筆刷柄所需的力量和扭矩的計(jì)算可以針對(duì)每個(gè)筆刷柄單獨(dú)進(jìn)行,但這樣的計(jì)算相對(duì)而言并不昂貴。通過使用多個(gè)筆刷柄部分而允許鬃毛的分離,允許每個(gè)鬃毛被獨(dú)立求解。因此,可在多處理器或多核環(huán)境中既有效地又可擴(kuò)展地計(jì)算筆刷行為模擬140。在一個(gè)實(shí)施方式中,例如40個(gè)鬃毛可以在一個(gè)核中以60赫茲模擬;備選地,75個(gè)鬃毛可以在一個(gè)核中以30赫茲模擬。 在一個(gè)實(shí)施方式中,鬃毛間的力可以被模擬。通過包括鬃毛與鬃毛的碰撞,創(chuàng)建鬃毛間的接觸接頭來執(zhí)行穿透約束。通過模擬鬃毛間的力,當(dāng)向畫布按壓時(shí),鬃毛可以散開并顯現(xiàn)以更自然地保持筆刷末端的量。在一個(gè)實(shí)施方式中,筆刷行為模擬140可以包括鬃毛間的力的擬合值,從而通過更為計(jì)算有效的方式來達(dá)到類似效果。例如,可以施加明確的懲罰力來提供類似于鬃毛對(duì)鬃毛的碰撞行為而不需要附加的約束。 在一個(gè)實(shí)施方式中,模擬引擎(例如,ODE)可以在模擬中為執(zhí)行約束提供不同機(jī)制。 一種約束執(zhí)行機(jī)制可稱為dWorldSt印。dWorldSt印功能可以在0(N3)時(shí)間內(nèi)構(gòu)建和求解約束矩陣。另一約束執(zhí)行機(jī)制可稱為dWorldQuickSt印。dWorldQuickSt印功能可用來在O(麗)時(shí)間內(nèi)執(zhí)行迭代松弛,以逼近正確的約束力,其中M是迭代的數(shù)量(例如,20)。在一個(gè)實(shí)施方式中,在筆刷行為模擬中使用dWorldQuickSt印比使用dWorldSt印更快。例如,對(duì)于5鏈接的鬃毛,其中每個(gè)接頭是3自由度的,存在15個(gè)約束。使用dWorldSt印求解矩陣可以占用大約3375 (例如153)個(gè)時(shí)間單位,而使用dWorldQuickSt印可以占用大約300(例如15X20)個(gè)時(shí)間單位。當(dāng)考慮鬃毛間的力時(shí),dWorldQuickSt印的相對(duì)效率甚至更加明顯。 圖7的框圖示出了計(jì)算機(jī)系統(tǒng)900中的組成元件,其配置用來執(zhí)行這里描述的系統(tǒng)和方法的實(shí)施方式。計(jì)算機(jī)系統(tǒng)900可包括一個(gè)或多個(gè)使用任何期望的架構(gòu)或芯片組的處理器910,該架構(gòu)或芯片組例如SPARC 架構(gòu),英特爾公司或Advanced Micro Devices公司的X86兼容架構(gòu),或其他能夠處理數(shù)據(jù)的架構(gòu)或芯片組。任何期望的操作系統(tǒng)可以在計(jì)算機(jī)系統(tǒng)900上運(yùn)行,例如各種版本的Unix、Li皿x、徵軟公司的Wind0WS⑧、蘋果公司的
MacOS⑧、或任何其他能夠在硬件平臺(tái)上進(jìn)行軟件操作的操作系統(tǒng)。處理器910可以耦
合到一個(gè)或多個(gè)其他示出的組件,例如經(jīng)由至少通信總線耦合到存儲(chǔ)器920。
在一個(gè)實(shí)施方式中,專用圖形卡或其他圖形元件956耦合到處理器910。該圖形組件956可以包括圖形處理單元(GPU)958。另外,計(jì)算機(jī)系統(tǒng)900可以包括一個(gè)或多個(gè)成像設(shè)備952。該一個(gè)或多個(gè)圖像裝置952可以包括多種類型的基于光柵的成像設(shè)備,例如監(jiān)視器和打印機(jī)。在一個(gè)實(shí)施方式中,一個(gè)或多個(gè)顯示裝置952可以耦合到圖形組件956上來顯示由圖形組件956所提供的數(shù)據(jù)。在一個(gè)實(shí)施方式中,處理器910可以運(yùn)行程序指令940來執(zhí)行這里描述的技術(shù)的
9各方面,這些指令可以部分或完全地在任何時(shí)間點(diǎn)存放在計(jì)算機(jī)系統(tǒng)900的存儲(chǔ)器920中。例如,存儲(chǔ)器920可以存儲(chǔ)數(shù)字圖像編輯程序100和其組成元件和數(shù)據(jù)(例如,編輯操作120、筆刷模型130、和/或筆刷行為模擬功能140)的部分。存儲(chǔ)器920可以使用任何合適的介質(zhì)執(zhí)行,例如任何不同類型的ROM或RAM(例如,DRAM、 SDRAM、 RDRAM、 SRAM等),或以上的結(jié)合。程序指令也可存儲(chǔ)在處理器910可訪問的存儲(chǔ)裝置960中。在不同實(shí)施方式中,多種存儲(chǔ)裝置960的任何一種都可用來存儲(chǔ)程序指令940,包括任何期望類型的永久和/或易失性存儲(chǔ)裝置,例如個(gè)人硬盤、硬盤陣列、光學(xué)裝置(例如,CD-ROM、CD-RW驅(qū)動(dòng)器、DVD-ROM、DVD-RW驅(qū)動(dòng)器)、閃存裝置、不同類型的RAM、全息存儲(chǔ)器等。存儲(chǔ)器960可以通過一個(gè)或多個(gè)存儲(chǔ)或輸入/輸出接口耦合到處理器910。在一些實(shí)施方式中,程序指令940可以經(jīng)由任何合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)來提供至計(jì)算機(jī)系統(tǒng)900,包括上面描述的存儲(chǔ)器920和存儲(chǔ)裝置960。 計(jì)算機(jī)系統(tǒng)900也可包括一個(gè)或多個(gè)額外的輸入輸出接口,例如用于一個(gè)或多個(gè)用戶輸入裝置950的接口 。另外,計(jì)算機(jī)系統(tǒng)900可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口 954提供網(wǎng)絡(luò)接入。應(yīng)當(dāng)注意,計(jì)算機(jī)系統(tǒng)900的一個(gè)或多個(gè)組件可以遠(yuǎn)程定位并通過網(wǎng)絡(luò)接入。在不同實(shí)施方式中執(zhí)行的計(jì)算機(jī)指令可采用任何期望的程序語言、腳本語言或者程序語言和/或腳本語言的結(jié)合,例如C、 C++、 C#、 JavaTM、 Perl等。計(jì)算機(jī)系統(tǒng)900也可包括在圖7未示出的多個(gè)元件,在此省略描述。 在不同實(shí)施方式中,圖6中顯示的單元可以不同的順序進(jìn)行執(zhí)行,而不限于所描
述的順序。圖6中在單元中描述的任何操作可程序性地執(zhí)行(即,根據(jù)計(jì)算機(jī)程序通過計(jì)
算機(jī))。圖6中在單元中描述的任何操作可自動(dòng)地執(zhí)行(即,無需用戶干預(yù))。 雖然已經(jīng)詳細(xì)描述了以上實(shí)施方式,當(dāng)上述公開被充分了解后,眾多的變形和修
改對(duì)本領(lǐng)域的熟練人員而言是易見的。后文的權(quán)利要求書被解釋為包括所有這樣的變形和修改。
10
權(quán)利要求
一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括接收用戶輸入以使用筆刷模型修改圖像,其中所述筆刷模型包括存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中的數(shù)據(jù),其中所述筆刷模型包括多個(gè)鬃毛表示,并且其中所述用戶輸入包括所述筆刷模型的動(dòng)作;確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述圖像的效果;以及基于所確定的所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述圖像的效果,來修改所述圖像。
2. 如權(quán)利要求l中所述的方法,其中所述筆刷模型的動(dòng)作包括在第一模擬步驟和第二 模擬步驟之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中 對(duì)所述圖像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟之間的、針對(duì)所述多個(gè)鬃毛表示中的每 一個(gè)的連續(xù)筆畫。
3. 如權(quán)利要求l中所述的方法,其中所述筆刷模型的動(dòng)作包括在所述第一模擬步驟和 所述第二模擬步驟之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所 述動(dòng)作中對(duì)所述圖像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟之間的、由每個(gè)鬃毛表示掃過的量的近 似值。
4. 如權(quán)利要求l中所述的方法,其中每個(gè)鬃毛表示包括一系列一個(gè)或多個(gè)鏈接,其中 所述用戶輸入包括繪制值,其中所述筆刷模型的動(dòng)作包括在第一模擬步驟和第二模擬步驟 之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述圖 像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟中接觸畫布的鏈接的集合; 為所述鏈接的集合中的每個(gè)鏈接確定四邊形,其中所述四邊形包括相應(yīng)鏈接在所述第 一模擬步驟和所述第二模擬步驟中接觸所述畫布的部分的端點(diǎn);以及 確定在每個(gè)四邊形中所述繪制的效果。
5. 如權(quán)利要求1所述的方法,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè) 所述動(dòng)作中對(duì)所述圖像的效果包括使用裁切操作來確定所述多個(gè)鬃毛表示位于畫布和所 述畫布上的平面之間的一個(gè)部分。
6. 如權(quán)利要求1所述的方法,其中每個(gè)鬃毛表示包括一系列一個(gè)或多個(gè)鏈接,其中每 個(gè)鬃毛表示中的所述一個(gè)或多個(gè)鏈接通過球窩接頭進(jìn)行端到端連接,并且其中每個(gè)鬃毛表 示通過球窩接頭連接到筆刷柄表示。
7. 如權(quán)利要求6所述的方法,其中通過為每個(gè)所述接頭確定恢復(fù)力而模擬鬃毛剛度。
8. 如權(quán)利要求l所述的方法,進(jìn)一步包括 修改所述筆刷模型的鬃毛材質(zhì)。
9. 如權(quán)利要求l所述的方法,進(jìn)一步包括 修改所述筆刷模型的鬃毛配置。
10. 如權(quán)利要求l所述的方法,進(jìn)一步包括 修改所述筆刷模型的變形行為。
11. 一種系統(tǒng),包括用于接收用戶輸入以使用筆刷模型修改圖像的裝置,其中所述筆刷模型包括存儲(chǔ)在計(jì) 算機(jī)系統(tǒng)的存儲(chǔ)器中的數(shù)據(jù),其中所述筆刷模型包括多個(gè)鬃毛表示,并且其中所述用戶輸 入包括所述筆刷模型的動(dòng)作;用于確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述圖像的效 果的裝置;用于基于所確定的所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述 圖像的效果來修改所述圖像的裝置。
12. 如權(quán)利要求ll中所述的系統(tǒng),其中所述筆刷模型的動(dòng)作包括在第一模擬步驟和第 二模擬步驟之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作 中對(duì)所述圖像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟之間的、針對(duì)所述多個(gè)鬃毛表示中的每 一個(gè)的連續(xù)筆畫。
13. 如權(quán)利要求ll中所述的系統(tǒng),其中所述筆刷模型的動(dòng)作包括在所述第一模擬步驟 和所述第二模擬步驟之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè) 所述動(dòng)作中對(duì)所述圖像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟之間的、由每個(gè)鬃毛表示掃過的量的近 似值。
14. 如權(quán)利要求ll中所述的系統(tǒng),其中每個(gè)鬃毛表示包括一系列一個(gè)或多個(gè)鏈接,其 中所述用戶輸入包括繪制值,其中所述筆刷模型的動(dòng)作包括在第一模擬步驟和第二模擬步 驟之間的動(dòng)作,其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)所述動(dòng)作中對(duì)所述 圖像的效果包括確定在所述第一模擬步驟和所述第二模擬步驟中接觸畫布的鏈接的集合; 為所述鏈接集合中的每一個(gè)鏈接確定一個(gè)四邊形,其中所述四邊形包括相應(yīng)鏈接在所 述第一模擬步驟和所述第二模擬步驟中接觸所述畫布的部分的端點(diǎn);以及 確定在每個(gè)四邊形中所述繪制的效果。
15. 如權(quán)利要求11所述的系統(tǒng),其中確定所述多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整 個(gè)所述動(dòng)作中對(duì)所述圖像的效果包括使用裁切操作來確定所述多個(gè)鬃毛表示位于畫布和 所述畫布上的平面之間的部分。
16. 如權(quán)利要求11所述的系統(tǒng),其中每個(gè)鬃毛表示包括一系列一個(gè)或多個(gè)鏈接,其中 每個(gè)鬃毛表示中的所述一個(gè)或多個(gè)鏈接通過球窩接頭進(jìn)行端到端的連接,并且其中每個(gè)鬃 毛表示通過球窩接頭連接到筆刷柄表示。
17. 如權(quán)利要求16所述的系統(tǒng),其中通過為每個(gè)所述接頭確定恢復(fù)力而模擬鬃毛剛度。
18. 如權(quán)利要求ll所述的系統(tǒng),進(jìn)一步包括 用于修改所述筆刷模型的鬃毛材質(zhì)的裝置。
19. 如權(quán)利要求ll所述的系統(tǒng),進(jìn)一步包括 用于修改所述筆刷模型的鬃毛配置的裝置。
20. 如權(quán)利要求ll所述的系統(tǒng),進(jìn)一步包括 用于修改所述筆刷模型的變形行為的裝置。
全文摘要
本發(fā)明公開了一種筆刷行為的真實(shí)實(shí)時(shí)模擬的方法、系統(tǒng)和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一個(gè)實(shí)施方式中,接收用戶輸入來使用筆刷模型修改圖像,其中筆刷模型包括存儲(chǔ)在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器中的數(shù)據(jù)。筆刷模型可以包括多個(gè)鬃毛表示。用戶輸入可以包括筆刷模型的動(dòng)作??梢源_定多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)該動(dòng)作中對(duì)圖像的效果。可以基于所確定的多個(gè)鬃毛表示中的每一個(gè)鬃毛表示在整個(gè)該動(dòng)作中對(duì)圖像的效果來修改圖像。
文檔編號(hào)G06K11/06GK101789083SQ20091024686
公開日2010年7月28日 申請(qǐng)日期2009年10月30日 優(yōu)先權(quán)日2008年10月30日
發(fā)明者S·J·迪維爾迪, S·哈達(dá)普 申請(qǐng)人:奧多比公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1