日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

翻译HoudiniEngine官方文档:PDG

發(fā)布時間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 翻译HoudiniEngine官方文档:PDG 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

官方文檔:《Houdini Engine 3.6: PDG》

介紹

PDG 是一套用于對任務(wù)進行分配管理程序化架構(gòu)

使用 Houdini Engine,PDG的功能可以輕松地在其他應(yīng)用程序中使用。 最值得注意的是,PDG可用于構(gòu)建由HDA網(wǎng)絡(luò)組成的復(fù)雜資產(chǎn)生成工具,以管理數(shù)據(jù)的依賴流動關(guān)系。

PDG網(wǎng)絡(luò)可以使用TOP節(jié)點嵌入到HDA中,并在 Houdini Engine 的 session 中使用。 Houdini Engine 提供了PDG 相關(guān)的API,以管理PDG的 cook 過程并獲取TOP節(jié)點的輸出結(jié)果。

在HDA中通過TOP節(jié)點使用PDG

有兩種方式在HDA中嵌入TOP節(jié)點:

  • TOP SOP 節(jié)點 ,這是一種 SOP節(jié)點。
  • TOP網(wǎng)絡(luò)節(jié)點,這是一種 Object節(jié)點

TOP SOP

這是讓PDG在 Houdini Engine 中工作的最簡單方法。 TOP SOP 節(jié)點 包含構(gòu)成PDG網(wǎng)絡(luò)的TOP節(jié)點,并將輸出的任何幾何體傳遞給下一個SOP節(jié)點。多個輸出將自動合并,并擁有 group。對 TOP SOP 節(jié)點 進行cook的時候,將自動 cook 其所包含的TOP網(wǎng)絡(luò),并且它的輸出與其他SOP節(jié)點是一樣的。 因此,這不需要顯式使用PDG相關(guān)API來對網(wǎng)絡(luò)進行 cook 和 dirty。

TOP網(wǎng)絡(luò)

TOP網(wǎng)絡(luò)節(jié)點 是包含TOP節(jié)點的 Object節(jié)點。必須使用 PDG 相關(guān)的 API 來顯式地對PDG網(wǎng)絡(luò)進行 cook。這允許宿主應(yīng)用程序為用戶提供對PDG進行 cook 的相關(guān)機制,例如 dirty 和 cook。每個 work item 的 cook 結(jié)果可以被查詢,并且宿主程序可以通過輸出結(jié)果的路徑來加載數(shù)據(jù)。

環(huán)境和路徑

確保在 Houdini Engine 的 session 中TOP節(jié)點所使用的“環(huán)境變量”與“非絕對路徑”有效是很重要的。

一個非常重要的設(shè)置是 scheduler 的工作目錄,該目錄是用于生成中間結(jié)果文件的根目錄,也可能是最終結(jié)果文件的根目錄。 默認情況下,所有的 TOP scheduler 都使用$HIP環(huán)境變量,而該變量在 Houdini Engine 的 session 中是無效的——因為根本不存在 .hip 文件。 因此應(yīng)使用以下解決方案之一:

  • 在 houdini.env 文件中指定一個全局的環(huán)境值,例如MY_HAPI_PDG_DIR=C:/projects/hapipdg,然后將 scheduler 的工作目錄參數(shù)設(shè)置為此值。
  • 將 scheduler 的工作目錄參數(shù)暴露給HDA,這樣宿主應(yīng)用程序就可以為每個HDA設(shè)置正確的工作目錄。

建議將所有其他路徑(尤其是結(jié)果文件)都基于公共的根路徑,例如工作目錄或其他全局環(huán)境路徑(例如$MY_ROOT_PATH/geometry/test1.bgeo)。 這使得可以用單個變量來管理所有 PDG work items 中所用的路徑。

Schedulers

默認情況下,“TOP SOP 節(jié)點” 和 “TOP網(wǎng)絡(luò)節(jié)點” 都使用 Local Scheduler,該 scheduler 計劃要在本地機器上執(zhí)行 PDG 的 work item。 為了在其他機器上分配工作,也可以創(chuàng)建相應(yīng)的 “farm scheduler ” 并在TOP網(wǎng)絡(luò)中指定使用。 在HDA中使用其他 scheduler 不需要任何特殊的考慮或額外的工作,但請確保在Houdini Engine 的 session 中設(shè)置了 scheduler 所需的任何環(huán)境。 通常,可以在創(chuàng)建 Houdini Engine 的 session 時通過houdini.env文件完成此操作。

Dirtying、Cooking、Events

PDG允許對TOP網(wǎng)絡(luò)進行 dirty 和 cook,這意味著對display節(jié)點及其隱含的依賴網(wǎng)絡(luò)進行 dirty 和 cook。 類似地,也可以將單個TOP節(jié)點及其依賴關(guān)系網(wǎng)絡(luò)進行 dirty 和 cook。 HAPI_DirtyPDGNode() 允許提供一個標志,并刪除 work item 先前的結(jié)果。

HAPI_CookPDG() 支持阻塞非阻塞的cook形式。 在 cook 時,將為依賴關(guān)系網(wǎng)絡(luò)中生成的TOP節(jié)點及其 work item 發(fā)出PDG事件(HAPI_PDG_EventType)。 這些事件代表了 cook 的實時狀態(tài),類似于Houdini編輯器中顯示的TOP節(jié)點中的 work item 的狀態(tài)。 要查詢特定PDG的事件,必須指定其 PDG graph context。 由于每個TOP節(jié)點都是PDG上下文的一部分,因此可以通過 HAPI_GetPDGGraphContextId() 檢索其ID。

以下HAPI_PDG_EventType可能會有用:

  • HAPI_PDG_EVENT_WORKITEM_ADD : 在圖中添加一個 work item。
  • HAPI_PDG_EVENT_WORKITEM_REMOVE : 從圖中移除一個 work item。
  • HAPI_PDG_EVENT_WORKITEM_STATE_CHANGE : 一個 work item 狀態(tài)發(fā)生改變。可以查看當前 work item 的狀態(tài)(HAPI_PDG_WorkitemState)。
  • HAPI_PDG_EVENT_COOK_WARNING : 節(jié)點的警告信息。
  • HAPI_PDG_EVENT_COOK_ERROR : PDG 完成 cook 但有 error。
  • HAPI_PDG_EVENT_COOK_COMPLETE: PDG 成功完成 cook。

work item 的狀態(tài)在 PDG 的 cook 過程中會發(fā)生改變。下面一些狀態(tài)(HAPI_PDG_WorkitemState)可能會有用:

  • HAPI_PDG_WORKITEM_DIRTY : Work item 被 dirty 了。
  • HAPI_PDG_WORKITEM_COOKING : Work item 正在 cook。
  • HAPI_PDG_WORKITEM_COOKED_SUCCESS : Work item 已經(jīng)成功完成 cook。
  • HAPI_PDG_WORKITEM_COOKED_CACHE : Work item 已經(jīng)完成 cook,但使用的是之前的緩存結(jié)果。
  • HAPI_PDG_WORKITEM_COOKED_FAIL : Work item cook 失敗了。
  • HAPI_PDG_WORKITEM_COOKED_CANCEL : Work item 已經(jīng)被取消。

當 work item 出現(xiàn)HAPI_PDG_WORKITEM_COOKED_SUCCESS和HAPI_PDG_WORKITEM_COOKED_CACHE狀態(tài)時,可以查詢生成的結(jié)果。 請參閱 PDG Cooking With Events 的代碼范例來看如何 cook 和監(jiān)聽事件。

PDG 代碼范例

可參閱 PDG Cooking Samples 來看如何在HAPI中使用PDG。

PDG API

以下函數(shù)讓你可以在HDA中管理和查詢PDG。 有關(guān)更多信息,請參見HAPI.h。

Cooking

  • HAPI_CookPDG
  • HAPI_DirtyPDGNode
  • HAPI_PausePDGCook
  • HAPI_CancelPDGCook

Context、Cook Events、State

  • HAPI_GetPDGGraphContexts
  • HAPI_GetPDGGraphContextId
  • HAPI_GetPDGEvents
  • HAPI_GetPDGState

Work Items

  • HAPI_CreateWorkitem
  • HAPI_GetWorkitemInfo
  • HAPI_SetWorkitemIntData
  • HAPI_SetWorkitemFloatData
  • HAPI_SetWorkitemStringData
  • HAPI_CommitWorkitems
  • HAPI_GetNumWorkitems
  • HAPI_GetWorkitems
  • HAPI_GetWorkitemDataLength
  • HAPI_GetWorkitemIntData
  • HAPI_GetWorkitemFloatData
  • HAPI_GetWorkitemStringData
  • HAPI_GetWorkitemResultInfo

總結(jié)

以上是生活随笔為你收集整理的翻译HoudiniEngine官方文档:PDG的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。