優(yōu)化圖表評估的制作方法
【專利摘要】公開了用于執(zhí)行圖形處理的系統(tǒng)??稍L問依賴圖。依賴圖可包括多個互連節(jié)點,每個節(jié)點具有一個或多個輸出屬性,其中依賴圖接收一個或多個輸入屬性。可訪問第一列表,其中第一列表包括針對依賴圖的每個污染輸出屬性的污染狀態(tài)??稍L問第二列表,其中第二列表將一個或多個輸入屬性的至少一個輸入屬性與受一個或多個輸入屬性的所述至少一個輸入屬性影響的輸出屬性關(guān)聯(lián)起來。可訪問第三列表,其中第三列表將至少一個輸出屬性與影響所述至少一個輸出屬性的輸出屬性關(guān)聯(lián)起來。接收針對被請求輸出屬性的評估請求。根據(jù)在第一列表中被指定為污染的一組輸出屬性以及在第三列表中被指定為與被請求輸出屬性關(guān)聯(lián)的一組輸出屬性選擇用于評估的一組輸出屬性。該組輸出屬性被評估。
【專利說明】優(yōu)化圖表評估
[0001]相關(guān)申請的交叉引用
[0002]本申請要求2011年9月6日向美國專利商標(biāo)局提交的美國臨時專利申請N0.61/531,606的優(yōu)先權(quán)(其整體內(nèi)容通過引用并入本文),并且要求2012年8月3日向美國專利商標(biāo)局提交的美國臨時專利申請N0.61/679,667的優(yōu)先權(quán)(其整體內(nèi)容通過引用并入本文)。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明涉及計算機產(chǎn)生的動畫,更具體地涉及對計算機產(chǎn)生的動畫的依賴圖的評估的優(yōu)化。
【背景技術(shù)】
[0004]媒體制作通常使用依賴圖來對動畫中的場景進行渲染、動畫化、或者描繪。依賴圖可包括互連節(jié)點,這些互連節(jié)點執(zhí)行諸如輸入屬性之類的輸入數(shù)據(jù)的計算,并且產(chǎn)生諸如輸出屬性之類的輸出數(shù)據(jù)。節(jié)點可具有多個輸入屬性和多個輸出屬性、以及其它屬性。
[0005]隨著媒體制作創(chuàng)建更真實的動畫,用來支持這些動畫的依賴圖中的節(jié)點的復(fù)雜性和數(shù)量也增大。于是,評估這些依賴圖所需的時間和計算資源通常增大。由此,需要優(yōu)化對依賴圖的評估。
【發(fā)明內(nèi)容】
[0006]描述了用于執(zhí)行圖形處理的系統(tǒng)和處理??稍L問依賴圖。依賴圖可包括多個互連節(jié)點,每個節(jié)點具有一個或多個輸出屬性,其中依賴圖接收一個或多個輸入屬性??稍L問第一列表,其中第一列表包括針對依賴圖的每個污染輸出屬性的污染狀態(tài)。可訪問第二列表,其中第二列表將一個或多個輸入屬性的至少一個輸入屬性與受一個或多個輸入屬性的所述至少一個輸入屬性影響的輸出屬性關(guān)聯(lián)起來。訪問第三列表,其中第三列表將至少一個輸出屬性與影響所述至少一個輸出屬性的輸出屬性關(guān)聯(lián)起來。接收針對被請求輸出屬性的評估請求。根據(jù)在第一列表中被指定為污染的一組輸出屬性以及在第三列表中被指定為與被請求輸出屬性關(guān)聯(lián)的一組輸出屬性選擇用于評估的一組輸出屬性。該組輸出屬性被評估。
[0007]可跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。可響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化,而跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性??身憫?yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化而根據(jù)第二列表更新第一列表。響應(yīng)于接收到評估請求,可更新第三列表以便將被請求輸出屬性與影響被請求輸出屬性的輸出屬性關(guān)聯(lián)起來。可跟隨依賴圖以確定第三列表中的關(guān)聯(lián)性??身憫?yīng)于該組輸出屬性的評估而更新第一列表中的輸出屬性的污染狀態(tài)。依賴圖可表示一個或多個三維對象。
【專利附圖】
【附圖說明】[0008]本專利或申請文件至少包含彩色下執(zhí)行的一個附圖。對具有彩色附圖的本專利或?qū)@暾埞_的復(fù)制由專利局根據(jù)申請并在支付必要費用后提供。
[0009]通過結(jié)合附圖參考后續(xù)說明能夠最好地理解本申請,其中相同數(shù)字可引用相同部分。
[0010]圖1圖示出由于轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)輸入屬性的值的變化而得到的一系列渲染圖像。
[0011]圖2圖示出用于評估依賴圖的輸出屬性的示例性處理。
[0012]圖3圖示出示例性依賴圖。
[0013]圖4圖示出用于追蹤輸出屬性的污染狀態(tài)的示例性污染列表。
[0014]圖5圖示出用于追蹤輸出屬性的污染狀態(tài)的另一示例性污染列表。
[0015]圖6圖示出針對輸入屬性的示例性輸入變化列表。
[0016]圖7圖示出針對多個輸入屬性的示例性輸入變化列表。
[0017]圖8圖示出針對一組輸入屬性的示例性輸入變化列表。
[0018]圖9圖示出針對受影響輸出屬性的示例性輸出依賴性列表。
[0019]圖10圖示出針對多個受影響輸出屬性的示例性輸出依賴性列表。
[0020]圖11圖示出示例性動畫系統(tǒng)。
【具體實施方式】
[0021]提供下面的描述以使得本領(lǐng)域普通技術(shù)人員能夠做出及實現(xiàn)各種實施例。具體裝置、技術(shù)和應(yīng)用的描述僅僅被提供作為示例。本領(lǐng)域普通技術(shù)人員很容易想到對此處描述的示例的各種修改,而且此處定義的總原理可適用于其它示例和應(yīng)用,而不脫離本技術(shù)的精神和范圍。因此,公開的技術(shù)并不限于此處描述和表示的示例,而是與權(quán)利要求一致的相應(yīng)范圍。
[0022]圖1圖示出來自利用下面詳細(xì)描述的處理渲染的動畫的示例性圖像。通過評估描繪了場景中的角色的依賴圖渲染動畫的每個幀。對于每個幀,至少角色的頸部的轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)輸入屬性的值在依賴圖中發(fā)生了變化,導(dǎo)致角色的頸部的運動。轉(zhuǎn)換節(jié)點可確定諸如角色的頸部之類的元素沿X、Y和Z軸的尺寸、旋轉(zhuǎn)和位置。
[0023]總體上,屬性指的可以是可通過系統(tǒng)控制的節(jié)點的參數(shù)。輸入屬性包括可由系統(tǒng)設(shè)置的或者可由另一節(jié)點設(shè)置的節(jié)點的屬性。在該示例中,角色的頸部的轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)輸入屬性的值的變化導(dǎo)致了該轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)顯示(rotation_display)輸出屬性的值的變化。節(jié)點的輸出屬性包括可由系統(tǒng)讀取的或者可被另一節(jié)點訪問的節(jié)點的屬性。為了確定轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)顯示輸出屬性的值,可評估節(jié)點。例如,評估可包括計算、執(zhí)行或算計。例如,轉(zhuǎn)換節(jié)點可利用矩陣乘法確定角色的頸部的位置。在請求節(jié)點的具體輸出屬性的值時,系統(tǒng)可評估節(jié)點以計算該具體輸出屬性。這可被稱為估計節(jié)點的輸出屬性。可替換地,節(jié)點可被評估來計算節(jié)點的所有輸出屬性。
[0024]在評估依賴圖時,角色的頸部的轉(zhuǎn)換節(jié)點的旋轉(zhuǎn)顯示輸出屬性的值的變化可通過依賴圖傳播。在該示例中,這可能導(dǎo)致角色的輸出屬性的值的變化,從而導(dǎo)致動畫渲染時角色的頸部的運動的出現(xiàn)。
[0025]參考圖1,由于還沒有在這些幀中通篇地改變角色腿部的轉(zhuǎn)換節(jié)點的輸入屬性,所以也沒有在動畫的幀中通篇地改變角色腿部的位置。因此,一旦已經(jīng)針對第一幀評估了角色腿部的轉(zhuǎn)換節(jié)點的輸出屬性,可以在下一幀中緩沖該值以便使用。角色腿部的轉(zhuǎn)換節(jié)點的輸出屬性的值不變化,因此角色腿部的轉(zhuǎn)換節(jié)點的輸出屬性的值不變化。由此,在針對第一幀進行評估之后,可能不需要針對每個幀重新評估角色腿部的轉(zhuǎn)換節(jié)點。
[0026]圖2圖示出用于評估被配置成緩存輸出屬性的依賴圖的示例性處理??赏ㄟ^各種觸發(fā)來啟動評估。例如,對顯示圖像的請求、動畫的回放、對節(jié)點輸出屬性值的請求等可啟動評估。
[0027]1.利用污染列表追蹤污染輸出屬性
[0028]參考圖2的塊202,可訪問污染列表中指定哪些緩沖的輸出屬性是無效的以及哪些緩沖的輸出屬性是有效的信息。可通過被配置成在污染列表中存儲與依賴圖的輸出屬性相關(guān)的污染信息的系統(tǒng)來產(chǎn)生污染列表。為了追蹤緩沖的輸出屬性的有效性,系統(tǒng)可使用污染列表來將無效的輸出屬性識別為“污染的”。例如,當(dāng)影響了輸出屬性的值的輸入屬性的值變化時,緩沖的輸出屬性可以是無效的,因此是污染的。因此,在輸出屬性的有效值取決于輸入屬性的值時,輸入屬性影響了輸出屬性??梢园凑斩鄠€方式配置污染列表。
[0029]在一個示例中,污染列表可以是僅僅對污染的輸出屬性的參考的列表。因此,在輸出屬性變成污染的時,它將被添加至該列表。當(dāng)輸出屬性被評估并且不再是污染的時,應(yīng)該將其從該列表移除。在另一示例中,污染列表可以是所有輸出屬性的綜合列表。綜合列表中識別的每個輸出屬性可具有污染標(biāo)志或與之相關(guān)的其它污染信息以表示輸出屬性是否是污染的。在又另一示例中,污染列表可包含輸出屬性的綜合列表的子集。列表中識別的每個輸出屬性可具有污染標(biāo)志或與之相關(guān)的其它污染信息以表示輸出屬性是否是污染的。在另一示例中,污染列表可以是“O”和“I”的陣列。陣列中的特定位置處的“O”可表示與該特定位置相關(guān)的輸出屬性是未污染的,陣列中的特定位置處的“ I”可表示與該特定位置相關(guān)的輸出屬性是污染的。該陣列可能比其它列表類型更有利于逐位運算,例如AND、OR、NOT 和 XOR。
[0030]對污染列表中的輸出屬性的污染狀態(tài)的追蹤可渲染節(jié)點級冗余處的輸出屬性的污染狀態(tài)的追蹤。相反,污染列表可被存儲在依賴圖外部。
[0031]圖3和圖4圖示出污染列表400的一個示例。圖3的依賴圖300包括五個節(jié)點:nodeA310, nodeB320, nodeC330, nodeD340,和 nodeE
[0032]_350。節(jié)點內(nèi)的虛線表示節(jié)點的輸出屬性基于節(jié)點的連接的輸入屬性。例如,
node_D340 具有三個輸入屬性:input_1341,input_2343,和 input_3345。Node_D340 也具有三個輸出屬性:output_1342, output_2344,和 output_3346。虛線 347 表明 node_D340的 input_1341 被用于計算 node_D340 的 output_1342。類似地,虛線 348 表明 node_D340的 input_1341 以及 node_D340 的 input_2343 被用于計算 node_D340 的 output_2344 ;虛線349表明node_D340的input_3345被用于計算node_D340的output_3346。這些關(guān)系不是必須顯示在依賴圖中,而是有助于圖示所討論的概念。
[0033]參考圖4,NODE.0UTPUT,屬性欄410包含依賴圖300的所有輸出屬性的綜合列表。依賴圖的每個輸出屬性與污染欄420中的污染標(biāo)志關(guān)聯(lián)。在該示例中,用于污染標(biāo)志的值“O”表示相關(guān)輸出屬性是未污染的。用于污染標(biāo)志的值“I”表示相關(guān)輸出屬性是污染的。本實施例中的命名方案已經(jīng)被選擇用于示例目的。名字node_A.0utput_1430表示名為“node_A”的節(jié)點的名為“output_l”的輸出屬性。與node_A.0utput_l相關(guān)的用于污染標(biāo)志的“O”值340表示該輸出屬性未污染。因此,可使用node_A的output_l處緩沖的值,而不重新估計node_A或重新估計node_A的output_l輸出屬性。類似地,node_A.0utput_2450與用于其污染標(biāo)志的“I”值460相關(guān)。這表明,node_A的輸出屬性output_2是污染的,并且可能需要被重新估計。圖4的剩余元素遵循類似規(guī)則。由于該列表表示了所有輸出屬性的當(dāng)前狀態(tài),所以其還可以被稱為當(dāng)前狀態(tài)緩沖器。
[0034]圖3和圖5圖示出污染列表500的另一示例。在該示例中,圖5的污染列表500包含依賴圖300的污染的所有輸出屬性的列表。因此,當(dāng)輸出屬性被重新評估并且不再是污染的時,應(yīng)該從污染列表500中去除對該輸出屬性的參考。類似地,當(dāng)輸出屬性被確定為污染的時,該輸出屬性應(yīng)該被加入污染列表500。由于該列表表示了所有輸出屬性的當(dāng)前狀態(tài),所以其同樣可被稱為當(dāng)前狀態(tài)緩沖器。
[0035]2.輸入變化列表
[0036]參考圖2的塊204,系統(tǒng)可檢測依賴圖的輸入屬性的值的變化。頻繁地在動畫中,必須在針對每個評估改變相同輸入屬性的值的同時重復(fù)地評估相同的依賴圖。每次輸入屬性變化,系統(tǒng)可能需要確定影響了哪個輸出屬性,因此應(yīng)該被標(biāo)記為污染的。為了減少所要求的計算資源,系統(tǒng)可被配置成訪問輸入變化列表以確定輸入變化列表是否包含將改變的輸入屬性與其所影響的輸出屬性關(guān)聯(lián)起來的信息。該輸入變化列表可存儲在依賴圖外部。
[0037]如果系統(tǒng)在塊206中確定可在輸入變化列表中獲取關(guān)聯(lián)信息,則在塊210中系統(tǒng)可響應(yīng)于檢測到輸入屬性的值的變化而使用關(guān)聯(lián)信息來快速地確定哪個輸出屬性應(yīng)該被標(biāo)記為污染的。然而,如果系統(tǒng)確定不可以在輸入變化列表中獲取用于改變的輸入屬性的關(guān)聯(lián)信息,貝1J在塊208中系統(tǒng)可跟隨圖表來確定哪個輸出屬性被改變的輸入屬性影響。
[0038]圖3的依賴圖300和圖6的輸入變化列表600圖示出了該概念??紤]用戶或系統(tǒng)修改輸入屬性node_A.1nput_1311的值時的示例,如依賴圖300所示。當(dāng)系統(tǒng)檢測到node_A.1nput_1311已經(jīng)變化時,系統(tǒng)可檢查所存儲的輸入變化列表600以確定其是否包括將改變的輸入屬性node_A.1nput_1311與其所影響的輸出屬性關(guān)聯(lián)起來的信息。在該示例中,輸入變化列表600僅僅表示了 node_C.1nput_2與其所影響的輸出之間的關(guān)聯(lián)。因此,系統(tǒng)將確定在輸入變化列表不能獲取針對改變的輸入屬性的關(guān)聯(lián)信息。
[0039]參考塊208,當(dāng)不能獲取針對改變的輸入屬性的關(guān)聯(lián)信息時,如針對輸入變化列表600和改變的輸入屬性node_A.1nput_1311的情況那樣,系統(tǒng)可通過“跟隨依賴圖”確定哪個輸出屬性被改變的輸入屬性影響。跟隨依賴圖一跟隨圖表或遍歷依賴圖一是其中系統(tǒng)通過依賴圖跟隨諸如輸入屬性之類的屬性以確定諸如輸出屬性之類的被輸入屬性影響的屬性的處理。因此,系統(tǒng)可從輸入屬性已經(jīng)發(fā)生變化的位置開始跟隨或遍歷依賴圖以確定被改變的輸入屬性影響的每個輸出屬性。這可被稱為跟隨圖表下游一或遍歷圖表下游一因為其跟隨了信息的流動。
[0040]因此,當(dāng)系統(tǒng)檢測到node_A.1nput_1311已經(jīng)變化并且確定不能在輸入變化列表600中獲得關(guān)聯(lián)信息時,系統(tǒng)可跟隨圖表以確定哪個輸出應(yīng)該被標(biāo)記為污染的。系統(tǒng)可確定node_A.0utput_1312未被改變所影響,但是node_A.0utput_2314應(yīng)該被識別為污染的。系統(tǒng)將繼續(xù)跟隨圖表并確定輸入屬性node_B.1nput_2323被連接至污染輸出屬性node_A.0utput_2314。繼而,node_B.0utput_1322 被 node_B.1nput_2323 處的變化影響。因此,輸出屬性node_B.0utput_1322也應(yīng)該被識別為污染的。系統(tǒng)接下來確定輸入屬性node_D.1nput_1341 和 node_E.1nput_1351 被連接至 node_B.0utput_1322。系統(tǒng)確定輸出屬性node_D.0utput_1342和輸出屬性node_D.0utput_2344應(yīng)該被識別為污染的,這是因為它們是基于node_D.1nput_1341計算出來的。系統(tǒng)還確定輸出屬性node_E.0utput_1352應(yīng)該被識別為污染的,這是因為它是基于node_E.1nput_1351計算出來的。因此,在跟隨圖表之后,由于改變的輸入屬性node_A.1nput_1311,系統(tǒng)已經(jīng)選擇如下的輸出屬性以識別為污染的:node_A.0utput_2314、node_B.0utput_1322、node_D.0utput_1342、node_D.0utput_2344和node_E.0utput_1352。隨后,系統(tǒng)可更新輸入變化列表600以添加新關(guān)聯(lián)。圖7圖示了示例性更新后的輸入變化列表700。系統(tǒng)還可以更新污染列表以將這些輸出屬性識別為污染的。
[0041]圖7描繪了已經(jīng)更新后的輸入變化列表700。NODE.1NPUT_屬性欄710包含已經(jīng)變化并導(dǎo)致系統(tǒng)跟隨依賴圖以確定受到影響的輸出屬性的所有或一些輸入屬性的列表。對于NODE.1NPUT_屬性欄710中列示的每個輸入屬性,輸入變化列表還包含被AFFECTEDN0DE.0UTPUT_屬性欄720中的輸入屬性影響的每個輸出屬性的列表。例如,在跟隨圖表以確定在依賴圖300的輸入屬性node_A.1nput_1311變化時受影響的輸出屬性之后,系統(tǒng)在輸入變化列表700中存儲受影響輸出屬性的列表,并將其與node_A.1nput_1311關(guān)聯(lián)起來。
[0042]參考塊210,系統(tǒng)下一次檢測到輸入屬性node_A.1nput_1311的變化時,系統(tǒng)可使用輸入變化列表700來確定哪個輸出屬性將被影響,而不跟隨圖表。具體地,系統(tǒng)可快速地確定node_A.1nput_l影響了輸出屬性740。污染列表可被更新以將這些受影響輸出屬性在污染列表中識別為污染的。
[0043]因此,當(dāng)系統(tǒng)檢測到輸入屬性值的變化時,系統(tǒng)可訪問輸入變化列表以確定哪個信息已經(jīng)被編譯成將改變的輸入屬性與其影響的輸出屬性關(guān)聯(lián)起來。如果輸入變化列表包含指定關(guān)系的信息,則無需跟隨圖表來確定哪個輸出屬性受到了影響。相反,系統(tǒng)可使用輸入變化列表中存儲的信息來更新污染列表。
[0044]期望減少系統(tǒng)跟隨圖表的次數(shù),因為跟隨圖表在計算上是資源密集的并且耗費時間的。例如,每次圖表被跟隨,可能需要接觸參考多個節(jié)點的多個指針,而且這些指針指向的存儲器位置可能分布在存儲器不同地方、處于不同物理存儲器芯片或裝置、或者甚至在不同計算系統(tǒng)上的存儲器內(nèi)。由此,系統(tǒng)可通過減少跟隨圖表的次數(shù)來保存計算資源。在針對多個幀、多次、多個間隔、多個評估或多個其它標(biāo)記重復(fù)地改變相同屬性時尤其如此。
[0045]可按照多種方式來填充輸入變化列表。如上所述,系統(tǒng)可被配置成在系統(tǒng)檢測到輸入屬性的值的變化時添加關(guān)聯(lián)性至輸入變化列表,而且系統(tǒng)確定輸入變化列表不包含針對改變的輸入屬性的關(guān)聯(lián)信息。在另一示例中,用戶可提供存儲在列表中的關(guān)聯(lián)性。在另一示例中,系統(tǒng)可被配置成在任意評估發(fā)生之前、在接收到任意評估請求之前、或者在系統(tǒng)檢測到輸入屬性的值的任意變化之前,填充一個或多個關(guān)聯(lián)性。還可以在依賴圖的結(jié)構(gòu)或依賴性變化時產(chǎn)生或更新輸入變化列表。例如,如果新節(jié)點被添加至依賴圖,輸入變化列表可被更新成反映新依賴性。
[0046]作為在檢測到輸入屬性的變化時產(chǎn)生并更新輸入變化列表的替換方案,系統(tǒng)可在系統(tǒng)要求信息之前產(chǎn)生依賴圖的每個屬性(例如每個輸入屬性、及其影響的輸出屬性)的完整的或部分的列表。如果這樣做了,在屬性第一次變化時,系統(tǒng)可能不需要跟隨圖表。
[0047]圖8圖示出將一組輸入屬性與它們影響的輸出屬性關(guān)聯(lián)起來的輸入變化列表的示例。例如,輸入變化列表800圖示出輸入屬性node_A.1nput_l、node_C.1nput_l、和node_C.1nput_2 與輸出屬性 node_A.0utput_2、node_B.0utput_l、node_C.0utput_l、node_C.0utput_2、node_D.0utput_l、node_D.0utput_2、node_D.0utput_3 和 node_E.0utput_l之間的關(guān)聯(lián)。在一組輸入屬性典型地一起(而不是獨立地)變化時存儲該類信息是有幫助的。
[0048]在另一示例中,系統(tǒng)可針對將輸入屬性與它們影響的屬性關(guān)聯(lián)起來的多個輸入屬性中的每個保持單獨的列表。列表可以是所有屬性的綜合列表、所有輸出屬性的綜合列表、屬性的部分列表、或者輸出屬性的部分列表。例如,輸入變化列表可以是“O”和“I”的陣列。陣列中的特定位置處的“I”可表示與該特定位置相關(guān)的輸出屬性受到與陣列相關(guān)的輸入屬性的影響,陣列中的特定位置處的“O”可表示與該特定位置相關(guān)的輸出屬性未受到影響。該陣列可能比其它列表類型更有利于逐位運算,例如AND、0R、N0T和X0R。
[0049]為了保存存儲器和其它計算資源,可在輸入變化列表上進行限制。一種限制可將輸入屬性與其影響的輸出屬性之間的關(guān)聯(lián)信息的存儲限制為n個輸入屬性。在一個示例中,利用先進先出系統(tǒng),可保留最后η個關(guān)聯(lián)信息。因此,當(dāng)新關(guān)聯(lián)性被添加時,最近最少訪問的、最近最少更新的、或者最早添加的關(guān)聯(lián)性可被移除。在另一示例中,系統(tǒng)可僅僅在確定或計算大量屬性值變化之后存儲關(guān)聯(lián)信息。這可防止最不常改變的屬性將最常改變的屬性從輸入依賴性列表中推出。
[0050]3.基于輸入變化列表更新污染列表
[0051]參考圖2的塊212,一旦系統(tǒng)已經(jīng)確定被改變的輸入屬性影響的輸出屬性,系統(tǒng)可更新污染列表以將受影響輸出屬性標(biāo)記為污染的??苫谳斎胱兓斜碇械年P(guān)聯(lián)信息更新污染列表。
[0052]在一個不例中,系統(tǒng)可對污染列表以及受變化的輸入影響的輸出屬性的列表的內(nèi)容執(zhí)行逐位OR運算。污染列表可被更新成將任意輸出屬性標(biāo)記為污染,如果其在污染列表中被標(biāo)記為污染或者在輸入變化列表中被標(biāo)記為受到改變的輸入屬性的影響。
[0053]4.接收針對輸出屬性的評估請求
[0054]在塊214中,系統(tǒng)可接收請求以評估輸出屬性。當(dāng)接收請求以評估依賴圖或依賴圖的一部分時,系統(tǒng)可通過僅僅重新評估那些不僅被標(biāo)記為污染而且影響評估的輸出屬性,節(jié)省時間和計算資源。這可被稱為“懈怠評估”。為了使用懈怠評估,系統(tǒng)可確定哪些輸出屬性影響了被請求輸出屬性以及影響輸出屬性中的哪些是污染的。影響評估但是未被標(biāo)記為污染的輸出屬性的任意緩沖的值可被使用,而不被重新評估。
[0055]例如,僅僅涉及在部分場景不可見對象的節(jié)點的污染輸出屬性可能不需要針對這些場景部分進行評估,因為它們不影響場景。類似地,當(dāng)用戶指出用戶不關(guān)注輸出屬性對評估的影響時,可能不需要評估污染輸出屬性。由此,當(dāng)采用懈怠評估時,無需在每次、幀、間隔、評估或其它標(biāo)記處評估依賴圖的每個污染輸出屬性。
[0056]利用輸入變化列表和污染列表,系統(tǒng)可確定哪些輸出屬性是污染的。為了確定哪些輸出屬性影響了被請求輸出屬性,系統(tǒng)可被配置成訪問輸出依賴性列表。輸出依賴性列表可包括被請求輸出屬性與影響被請求輸出屬性的一個或多個輸出屬性之間的關(guān)聯(lián)。該輸出依賴性列表可被存儲在依賴圖外部。
[0057]在塊216中,如果系統(tǒng)確定可以在輸出依賴性列表中獲取針對被請求輸出屬性的關(guān)聯(lián)信息,則系統(tǒng)可使用關(guān)聯(lián)信息來快速地確定需要針對所請求的輸出重新評估哪些輸出屬性,如果它們是污染的。然而,如果系統(tǒng)確定不可以在輸出依賴性列表中獲取針對被請求輸出屬性的關(guān)聯(lián)信息,系統(tǒng)可能需要跟隨圖表來確定哪些輸出屬性影響了被請求輸出屬性。
[0058]在塊218中,當(dāng)針對被請求輸出屬性無法獲取關(guān)聯(lián)信息時,系統(tǒng)可從被請求輸出屬性開始上游地跟隨圖表(例如,在與信息的流動方向相反的方向上跟隨圖表)以確定哪些輸出屬性影響了被請求輸出屬性。系統(tǒng)可通過存儲在從被請求輸出屬性開始上游地跟隨圖表的同時收集的關(guān)聯(lián)信息,產(chǎn)生或更新輸出依賴性列表。通過存儲該關(guān)聯(lián)信息,系統(tǒng)可能無需跟隨圖表以便后續(xù)評估來確定哪些輸出屬性影響了被請求輸出屬性。而且,輸出依賴性列表可存儲多個被請求輸出屬性,每個被請求輸出屬性與分別影響其的所有或一些輸出屬性關(guān)聯(lián)。
[0059]圖3的依賴圖300和圖9的示例輸出依賴性列表900圖示了該構(gòu)想。輸出依賴性列表900的NODE.0UTPUT,屬性欄910包含輸出屬性930。輸出依賴性列表900將輸出屬性930與影響它的每個輸出屬性940的列表關(guān)聯(lián)起來。AFFECTINGNODE.0UTPUT_屬性欄920包含影響輸出屬性940的列表。
[0060]考慮當(dāng)用戶或系統(tǒng)請求輸出屬性node_D.0utput_1342的值的示例。系統(tǒng)可首先查看輸出依賴性列表900以確定其是否包括被請求輸出屬性與影響它的輸出屬性之間的關(guān)聯(lián)。在這種情況下,輸出依賴性列表900不包括node_D.0utput_1342與影響它的輸出屬性之間的關(guān)聯(lián)。相反,輸出依賴性列表900包含node_D.0utput_2與影響它的輸出之間的關(guān)聯(lián)。因此,系統(tǒng)可在依賴圖300上上游地跟隨圖表以確定哪些輸出屬性影響了被請求輸出屬性node_D.0utput_1342。例如,系統(tǒng)可確定node_B.0utput_1322影響了 node_D.0utput_1342。然而,node_B.0utput_1322 被 node_A.0utput_1312 和 node_A.0utput_2314 影響。因此,系統(tǒng)確定輸出屬性 node_B.0utput_1322、node_A.0utput_1312和node_A.0utput_2314影響了 node_D.0utput_1342。系統(tǒng)可更新輸出依賴性列表900以存儲將被請求輸出屬性node_D.0utput_1342與影響它的輸出屬性關(guān)聯(lián)起來的信息。
[0061]圖10圖示出包括該關(guān)聯(lián)信息的更新的輸出依賴性列表1000。用戶或系統(tǒng)下一次請求輸出屬性node_D.0utput_1342的評估時,系統(tǒng)將無需跟隨圖表來確定哪些輸出屬性影響了它。相反,信息wiIlbeavaiIablein輸出依賴性列表1000。具體地,系統(tǒng)可查看NODE.0UTPUT_ 屬性欄 1010 和 AFFECTINGNODE.0UTPUT_ 屬性欄 1020 以確定 node_D.0utput_l 受到 node_A.0utput_l、node_A.0utput_2 和 node_B.0utput_l 的影響。
[0062]在圖2的塊220中,當(dāng)針對被請求輸出屬性可獲取關(guān)聯(lián)信息時,系統(tǒng)可能不需要跟隨圖表。相反,系統(tǒng)可快速地根據(jù)輸出依賴性列表確定哪些輸出屬性影響了被請求輸出屬性。
[0063]在一個不例中,輸出依賴性列表可包括多個關(guān)聯(lián),其中輸出屬性與影響它的輸出屬性關(guān)聯(lián)。在另一示例中,輸出依賴性列表可包括多個關(guān)聯(lián),其中輸出屬性與依賴圖的所有或部分輸出關(guān)聯(lián)并且每個相關(guān)輸出屬性被標(biāo)記為“影響”或“不影響”。這可以通過將“影響”標(biāo)志標(biāo)記為影響被請求輸出屬性的輸出屬性的“I”或不影響被請求輸出屬性的輸出屬性的“O”來完成。
[0064]為了保留存儲器和其它計算資源,可在輸出依賴性列表上進行限制。一種限制可將期望的或被請求的輸出屬性與影響期望輸出的輸出屬性之間的關(guān)聯(lián)信息的存儲限制為η個期望的或被請求的輸出屬性。在一個示例中,利用先進先出系統(tǒng),可保持最后η個關(guān)聯(lián)信息數(shù)據(jù)。因此,當(dāng)新關(guān)聯(lián)性被添加時,最近最少訪問的、最近最少更新的、或者最早添加的關(guān)聯(lián)性可被移除。在另一示例中,系統(tǒng)可僅僅在確定或計算針對輸出屬性的大量請求之后存儲關(guān)聯(lián)信息。這可防止最不常被請求的輸出屬性將最常被請求的輸出屬性從輸出依賴性列表中推出。
[0065]在一個示例中,系統(tǒng)可針對將輸出屬性與它們影響的屬性關(guān)聯(lián)起來的多個輸出屬性中的每個保持單獨的列表。列表可以是所有屬性的綜合列表、所有輸出屬性的綜合列表、屬性的部分列表、或者輸出屬性的部分列表。例如,輸入變化列表可以是“O”和“I”的陣列。陣列中的特定位置處的“I”可表示與該特定位置相關(guān)的屬性影響了所請求的屬性,陣列中的特定位置處的“O”可表示與該特定位置相關(guān)的屬性沒影響所請求的屬性。該陣列可能比其它列表類型更有利于逐位運算,例如AND、OR、NOT和XOR。
[0066]5.評估被請求輸出屬性
[0067]在塊222中,系統(tǒng)可評估被請求輸出屬性。一旦系統(tǒng)驅(qū)動哪些輸出屬性影響了被請求輸出屬性以及依賴圖的哪些輸出屬性是污染的,則系統(tǒng)可確定應(yīng)該根據(jù)懈怠評估來評估哪些輸出屬性。
[0068]在一個不例中,通過對污染列表和輸出依賴性列表中存儲的影響被請求輸出屬性的輸出屬性進行逐位AND運算,可以確定將針對被請求輸出屬性評估的輸出屬性的列表。在評估輸出屬性之后,系統(tǒng)可更新污染列表中輸出屬性的狀態(tài)以表明輸出屬性不再是污染的。該狀態(tài)可以在評估輸出屬性(或與輸出屬性相關(guān)的節(jié)點)之前、期間或之后改變。
[0069]因此,當(dāng)改變的輸入屬性包含在輸入變化列表中時,系統(tǒng)可利用受影響輸出屬性更新污染列表而不跟隨圖表。隨后,當(dāng)被請求輸出屬性已經(jīng)在輸出依賴性列表中時,系統(tǒng)可確定哪個輸出影響了被請求輸出屬性而不跟隨圖表。污染列表和針對被請求輸出屬性的輸出依賴性列表現(xiàn)在可以比較以確定哪些輸出屬性是污染并影響了被請求輸出屬性。因此,對這些污染輸出屬性的評估可開始而不跟隨圖表。由此,可適當(dāng)?shù)卦u估被請求輸出屬性。污染列表也可被更新來反映評估的輸出屬性不再是污染的。
[0070]在具體示例中,塊204至212可與塊214至222獨立地發(fā)生。
[0071]6.動畫系統(tǒng)
[0072]圖11圖示出可用來實施上述依賴性圖表評估處理的示例性動畫系統(tǒng)1100。例如,可以按照硬件或者存儲在非易失去性計算機可讀存儲介質(zhì)上的軟件的方式實現(xiàn)處理。系統(tǒng)可被配置成評估依賴圖、依賴圖內(nèi)的節(jié)點、或依賴圖的輸出屬性。系統(tǒng)還可被進一步配置成從用戶接收輸入并根據(jù)評估來顯示圖形、圖像、或動畫場景。
[0073]動畫系統(tǒng)1100可被配置成從輸入裝置1120接收用戶輸入。輸入裝置1120可以是從用戶接收輸入并將其傳遞至動畫系統(tǒng)1100的任意裝置。例如,輸入裝置可以是鍵盤、鼠標(biāo)、寫字板、尖筆等。本領(lǐng)域技術(shù)人員將認(rèn)識到其它類型的輸入裝置也是可以使用的。
[0074]動畫系統(tǒng)1100可被配置成向顯示裝置1130輸出圖形、圖像、或動畫。顯示裝置1130可以是從動畫系統(tǒng)接收數(shù)據(jù)并將其呈現(xiàn)給用戶的任意裝置。例如,顯示裝置可以是液晶顯示器、一組發(fā)光二極管、投影儀等。本領(lǐng)域技術(shù)人員將認(rèn)識到其它類型的輸出裝置也是可以使用的。[0075]動畫系統(tǒng)1100可包括中央處理單元1102。中央處理單元可包括一個或多個處理核。中央處理單元1102可被耦接至并能夠與輸入裝置1120通信。雖然動畫系統(tǒng)1100被圖示為具有一個中央處理單元1102,但是動畫系統(tǒng)1100可具有多個處理單元。動畫系統(tǒng)1100還可包括圖形處理單元1104。圖形處理單元1104可專用于處理圖形相關(guān)數(shù)據(jù)。圖形處理單元1104可包括單個處理核或多個處理核。雖然動畫系統(tǒng)1100被圖示為具有一個圖形處理單元1104,但是動畫系統(tǒng)1100可具有多個圖形處理單元。中央處理單元1102和/或圖形處理單元1104可被耦接至并能夠?qū)?shù)據(jù)傳輸給輸出裝置1130。
[0076]在一個示例中,動畫系統(tǒng)1100可包括一個或多個處理器和存儲在非易失性計算機可讀存儲介質(zhì)(例如存儲器或存儲裝置)上的指令,當(dāng)指令被一個或多個處理器執(zhí)行時,其執(zhí)行如上所述的用于評估依賴圖的輸出屬性的處理。在此處描述的實施例的情況下,“非易失性計算機可讀存儲介質(zhì)”可以是任意包含或存儲以便指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的介質(zhì)。非易失性計算機可讀存儲介質(zhì)可包括但不限于電子、磁性、光學(xué)、紅外或半導(dǎo)體系統(tǒng)、設(shè)備或裝置,便攜式計算機磁盤(磁性),隨機訪問存儲器(RAM)(磁性),只讀存儲器(ROM)(磁性),可擦可編程序只讀存儲器(EPROM)(磁性),便攜式光盤,例如CD、CD-R、CD-RW、DVD、DVD-R或DVD-RW,或者閃存,例如閃存卡,安全數(shù)位卡,USB存儲裝置,存儲棒等。
[0077]動畫系統(tǒng)1100可包括與中央處理單元1102通信的易失性存儲器1106(它是非易失性計算機可讀存儲介質(zhì))。例如,易失性存儲器1106可以是隨機訪問存儲器,例如動態(tài)隨機訪問存儲器或靜態(tài)隨機訪問存儲器,或者任意其它類型的易失性存儲器。易失性存儲器1106可用來在動畫系統(tǒng)1100的操作期間存儲數(shù)據(jù)或指令。本領(lǐng)域技術(shù)人員將認(rèn)識到其它類型的易失性存儲器也是可以使用的。
[0078]動畫系統(tǒng)1100還包括與中央處理單元1102通信的非易失性存儲器1108(它是非易失性計算機可讀存儲介質(zhì))。非易失性存儲器1108可包括閃存、硬盤、磁存儲裝置、只讀存儲器等。非易失性存儲器1108可用來存儲動畫數(shù)據(jù)、依賴圖數(shù)據(jù)、計算機指令或任意其它信息。本領(lǐng)域技術(shù)人員將認(rèn)識到其它類型的非易失性存儲器也是可以使用的。
[0079]動畫系統(tǒng)1100并不限于上述裝置、配置和功能。例如,雖然圖示了單個易失性存儲器1106、非易失性存儲器1108、中央處理單元1102、圖形處理單元1104、輸入裝置1120和輸出裝置1130,但是多個任意這些裝置可實現(xiàn)在動畫系統(tǒng)1100內(nèi)部或外部。此外,動畫系統(tǒng)1100可包括網(wǎng)絡(luò)訪問裝置以便訪問網(wǎng)絡(luò)(例如內(nèi)部網(wǎng)絡(luò)或因特網(wǎng))上的信息。本領(lǐng)域技術(shù)人員將認(rèn)識到動畫系統(tǒng)1100的其它配置也是可以使用的。
[0080]在此描述了各種示例性實施例。以非限制的方式參考這些示例。它們被提供來示例可更寬范圍應(yīng)用的公開的技術(shù)方面??勺鞒龈鞣N變化以及可以替換等效形式,而不脫離各種實施例的真實精神和范圍。此外,可作出各種變更以適應(yīng)具體情況、材料、主體成分、處理、對對象的處理動作或步驟、各種實施例的精神和范圍。而且,本領(lǐng)域技術(shù)人員可以理解的是,此處描述及示例的每個單獨的變形具有單獨的組成和特征,它們可容易地與其它一些實施例中的任意實施例的特征區(qū)分開或組合,而不脫離各種實施例的范圍或精神。
【權(quán)利要求】
1.一種用于執(zhí)行圖形處理的方法,所述方法包括: 訪問依賴圖,依賴圖包括多個互連節(jié)點,每個節(jié)點具有一個或多個輸出屬性,其中依賴圖接收一個或多個輸入屬性; 訪問第一列表,其中第一列表包括針對依賴圖的每個污染輸出屬性的污染狀態(tài);訪問第二列表,其中第二列表將一個或多個輸入屬性的至少一個輸入屬性與受一個或多個輸入屬性的所述至少一個輸入屬性影響的輸出屬性關(guān)聯(lián)起來; 訪問第三列表,其中第三列表將至少一個輸出屬性與影響所述至少一個輸出屬性的輸出屬性關(guān)聯(lián)起來; 接收針對被請求輸出屬性的評估請求;以及 利用處理器來評估一組輸出屬性,其中根據(jù)在第一列表中被指定為污染的一組輸出屬性以及在第三列表中被指定為與被請求輸出屬性關(guān)聯(lián)的一組輸出屬性選擇該組輸出屬性用于評估。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括: 跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
3.根據(jù)權(quán)利要求2所述的方法,其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化,而跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
4.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化而根據(jù)第二列表更新第一列表。
5.根據(jù)權(quán)利要求1所述的方法,進一步包括: 響應(yīng)于接收到評估請求,更新第三列表以便將被請求輸出屬性與影響被請求輸出屬性的輸出屬性關(guān)聯(lián)起來。
6.根據(jù)權(quán)利要求5所述的方法,進一步包括: 跟隨依賴圖以確定第三列表中的關(guān)聯(lián)性。
7.根據(jù)權(quán)利要求1所述的方法,進一步包括: 響應(yīng)于該組輸出屬性的評估而更新第一列表中的輸出屬性的污染狀態(tài)。
8.根據(jù)權(quán)利要求1所述的方法,其中依賴圖表示一個或多個三維對象。
9.一種非易失性計算機可讀存儲介質(zhì),包括計算機可執(zhí)行指令用于執(zhí)行圖形處理,該計算機可執(zhí)行指令包括指令,所述指令用于: 訪問依賴圖,依賴圖包括多個互連節(jié)點,每個節(jié)點具有一個或多個輸出屬性,其中依賴圖接收一個或多個輸入屬性; 訪問第一列表,其中第一列表包括針對依賴圖的每個污染輸出屬性的污染狀態(tài);訪問第二列表,其中第二列表將一個或多個輸入屬性的至少一個輸入屬性與受一個或多個輸入屬性的所述至少一個輸入屬性影響的輸出屬性關(guān)聯(lián)起來; 訪問第三列表,其中第三列表將至少一個輸出屬性與影響所述至少一個輸出屬性的輸出屬性關(guān)聯(lián)起來; 接收針對被請求輸出屬性的評估請求;以及 利用處理器來評估一組輸出屬性,其中根據(jù)在第一列表中被指定為污染的一組輸出屬性以及在第三列表中被指定為與被請求輸出屬性關(guān)聯(lián)的一組輸出屬性選擇該組輸出屬性用于評估。
10.根據(jù)權(quán)利要求9所述的計算機可讀存儲介質(zhì),進一步包括指令用于: 跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
11.根據(jù)權(quán)利要求10所述的計算機可讀存儲介質(zhì),其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化,而跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
12.根據(jù)權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化而根據(jù)第二列表更新第一列表。
13.根據(jù)權(quán)利要求9所述的計算機可讀存儲介質(zhì),進一步包括指令用于: 響應(yīng)于接收到評估請求,更新第三列表以便將被請求輸出屬性與影響被請求輸出屬性的輸出屬性關(guān)聯(lián)起來。
14.根據(jù)權(quán)利要求13所述的計算機可讀存儲介質(zhì),進一步包括指令用于: 跟隨依賴圖以確定第三列表中的關(guān)聯(lián)性。
15.根據(jù)權(quán)利要求9所述的計算機可讀存儲介質(zhì),進一步包括指令用于: 響應(yīng)于該組輸出屬性的評估而更新第一列表中的輸出屬性的污染狀態(tài)。
16.根據(jù)權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中依賴圖表示一個或多個三維對象。
17.一種設(shè)備,用于執(zhí)`行圖形處理,所述設(shè)備包括: 配置成存儲數(shù)據(jù)的存儲器;以及 計算機處理器,其被配置成: 訪問依賴圖,依賴圖包括多個互連節(jié)點,每個節(jié)點具有一個或多個輸出屬性,其中依賴圖接收一個或多個輸入屬性; 訪問第一列表,其中第一列表包括針對依賴圖的每個污染輸出屬性的污染狀態(tài);訪問第二列表,其中第二列表將一個或多個輸入屬性的至少一個輸入屬性與受一個或多個輸入屬性的所述至少一個輸入屬性影響的輸出屬性關(guān)聯(lián)起來; 訪問第三列表,其中第三列表將至少一個輸出屬性與影響所述至少一個輸出屬性的輸出屬性關(guān)聯(lián)起來; 接收針對被請求輸出屬性的評估請求;以及 評估一組輸出屬性,其中根據(jù)在第一列表中被指定為污染的一組輸出屬性以及在第三列表中被指定為與被請求輸出屬性關(guān)聯(lián)的一組輸出屬性選擇該組輸出屬性用于評估。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中計算機處理器被進一步配置成: 跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化,而跟隨依賴圖以確定第二列表中的關(guān)聯(lián)性。
20.根據(jù)權(quán)利要求17所述的設(shè)備,其中響應(yīng)于檢測到一個或多個輸入屬性的至少一個輸入屬性的值的變化而根據(jù)第二列表更新第一列表。
21.根據(jù)權(quán)利要求17所述的設(shè)備,其中計算機處理器被進一步配置成: 響應(yīng)于接收到評估請求,更新第三列表以便將被請求輸出屬性與影響被請求輸出屬性的輸出屬性關(guān)聯(lián)起來。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中計算機處理器被進一步配置成: 跟隨依賴圖以確定第三列表中的關(guān)聯(lián)性。
23.根據(jù)權(quán)利要求17所述的設(shè)備,其中計算機處理器被進一步配置成:響應(yīng)于該組輸出屬性的評估而更新第一列表中的輸出屬性的污染狀態(tài)。
24.根據(jù)權(quán)利要求17所`述的設(shè)備,其中依賴圖表示一個或多個三維對象。
【文檔編號】G09G5/00GK103875032SQ201280050157
【公開日】2014年6月18日 申請日期:2012年9月6日 優(yōu)先權(quán)日:2011年9月6日
【發(fā)明者】M·瓦特, A·P·鮑威爾 申請人:夢工廠動畫公司