Làm dynamic hay procedural với Houdini thì không thể thiếu wedging cho các attribute, để tự đó tạo ra các kết quả khác nhau mà lựa một cách hoàn toàn tự động.
Tops hay PDG network đã xuất hiện với phương án vô cùng nâng cao giúp Wedging trở nên dễ dàng hơn, mạnh mẽ hơn, không đơn thuần chỉ còn chạy serial parrallel các tác vụ. Nay nó còn giúp khởi động CPU, GPU để chạy riêng các tác vụ tính theo core, theo thread với rất nhiều những công cụ có cách thiết lập hiệu chỉnh mở dành cho người dùng.

PDG có nghĩa là: PROCEDURAL DEPENDENCY GRAPH
- Procedural: nghĩa là loạt các phương pháp, việc đã được sắp đặt trước. Ở đây trong môi trường Houdini nó là các tác vụ được liên kết nhau theo chuỗi gọi là network, trong network các node sẽ liên kết với nhau, mỗi node là một tác vụ/chức năng/lệnh thực thi có trình tự bên trong network. Điều này giúp hỗ trợ cho việc gia giảm thay đổi mỗi node cho dù là dòng trên hay dòng dưới của một network sẽ không làm ảnh hưởng cấu trúc toàn bộ network mà còn có thể tạo ra các kết quả khác nhau, tránh việc phải làm thủ công, làm đi làm lại.
- Depencdency: là các dữ kiện sẽ phải dựa trên nhau mà hoạt động một cách trình tự, việc này xong thì mới tới việc kết tiếp.
- Graph: đây sẽ được biểu diễn một cách trực quan, có giao diện đồ họa dễ dùng khác với các thao tác hoàn toàn kỹ thuật phải thông qua các giao diện chỉ toàn chữ kiểu lập trình.
PDG là một kỹ nghệ do Side FX tạo ra dành cho phần mềm Houdini. Kiến trúc hạ tầng này sẽ giúp giải quyết các công việc tạo tác trong lĩnh vực video games, truyền hình, điện ảnh, thiết kế nội dung VR, diễn họa hoàn toàn tự động hóa khi phát triển gia giảm qui mô, tách tác vụ, bớt thủ công. PDG còn có thể triển khai thông qua loạt các máy trạm, các dữ liệu dạng đám mây, hay còn được biết đến là các render farm do tính thực hiện tác vụ có trình tự và dựa vào nhau tuần tự.
PDG không chỉ duy trì xử lý các dữ liệu dạng tuần tự, song song mà còn có thể phân cấp theo tài nguyên phần cứng cho phép hoặc nếu theo các mô hình Cloud Service thì có thể phân bổ nguồn lực tùy ý.
Ví dụ phân bổ tài nguyên số phân luồng (threading) trên mỗi máy có thể dùng, số GPU tham gia, số CPU tham gia, hay số nhân số luồng tham gia vào việc tính toán, điều này giúp cho nhiều tác vụ chỉ có thể thực thi theo kiến trúc tác vụ đơn vô hình chung có thể thực hiện đa phân luồng “multi-thread” với tốc độ vô cùng nhanh.
TOPS: có nghĩa là Task Operators
Side FX định nghĩa các node bên trong Houdini khi sử dụng, đó là các Operator. Tức các đóng gói là một sản phẩm như một phần mềm nhỏ (HDA, OTL hay đơn giản hơn là một folder chứa chức năng xử lý) có thể xử lý một loại yêu cầu dữ kiện nhất định có đầu vào nhận thông tin và đầu ra trả kết quả. Trong lập trình thì thường sẽ được biết như là một Class, API, Procedure, hay đơn giản hơn là một hàm – function. Sở dĩ gọi là Operator vì nó có cả giao diện, các tham số người dùng có thể gia giảm hiệu chỉnh thủ công, tương tác trực quan theo giao diện đồ họa, phần xử lý bên trong được tập hợp các vấn đề kỹ thuật để xử lý hoặc có thể là một network chuỗi các Operator (node).

Cơ bản ban đầu định nghĩa của Houdini về operator là folder – khi người dùng mở màn hình technical workspace giao diện đồ họa, bên trái màn hình làm việc sẽ có cây thư mục, mỗi một set các network operator sẽ được thể hiện dạng folder, đó là ý tưởng đầu tiên về mặt cấu trúc thể hiện dữ liệu dạng cây của Houdini. Nó vẫn tồn tại và là cấu trúc chính tới ngày nay.
Vậy nên trong Houdini thường hay có các network operator như sau:
- Surface OPerator: SOP – đây là mặt trận chính của Houdini, tạo tác đồ họa 3D thông qua các operator/node ở trong phần network này
- Dynamic OPerator: DOP – đây là thế mạnh của Houdini với các chức năng xử lý hiệu ứng animation dynamic physic FX nổi tiếng như nước với FLIP, các rigid vật lý phá hủy như rigid body Bullet, vải vóc phần mềm tương tác như Vellum..
- Shading OPerator: SHOP nơi trước đây dùng làm tạo tác các vật liệu cho các đối tượng 3D geometry được tạo ra
- Vector OPerator: VOP đây là tập tất cả các node/operator dùng để xử lý mọi vấn đề theo cách kỹ thuật có giao diện đồ họa, chức năng xử lý từ hiệu chỉnh pixel, geometry mesh, volume, ..
- Composite OPerator: COPs đây là một network chứa các tập node/operator hậu kỳ hình ảnh từ texture tới các sản phẩm đã render
- Channel OPerator: CHOP xử lý các chuỗi dữ liệu dạng thô như motion data hoặc các dữ liệu âm thanh đầu vào, tính tới thời điểm ngày nay 2024 thì rất ít người dùng thật sự có nhu cầu âm mưu vào lĩnh vực này. Lời khuyên khi tiếp cận Houdini là có thể bỏ qua phần này, coi nó như là một mảng để dành xem sau
- Render OPerator: ROP các phần mềm render được đóng gói với các chức năng sẽ được thể hiện trong network này và làm việc ở đây, ví dụ ở 2024 ngoài Mantra đã rất cũ (vẫn dùng nhiều trong môi trường sản xuất điện ảnh thực tế) thì còn có phần mềm render mới là Karma hỗ trợ render cả CPU, GPU và kết hợp cả vừa CPU, GPU là XPU, ra mắt Houdini 20, Karma với XPU đã thật sự tỏa sáng khi có khả năng ứng dụng mạnh vật liệu materialX dùng cho các scene sử dụng open USD.
Cấu Trúc Chính Của PGD:
Kiến trúc của PDG để thực thi trong các Task Operator network là như sau:
- Processor: chính là các Task Operator (tức như HDA, OTL…), thể hiện bên trong Task Operator (Tops) còn được biết là tập hợp của nhiều Work Item do tính thực thi tác vụ đồng loạt của nó. Có thể hiểu nó là một phần mềm có thể xử lý được một hay nhiều tác vụ cụ thể có kết quả được lưu lại. Sử dụng nó trong Houdini là đại diện một “node”.
- Partitioner: như đã biết, PDG là procedural dependency graph, tính tuần tự có điều kiện của các operator tác vụ chính là sử dụng các Partitioners. Ví dụ anh làm hết cái operator/work item này rồi mới dùng tới cái kế tiếp phía dưới, có thể dùng work item gọi là “Wait For All”
- Mappers: đây là cấu trúc giúp hình thành việc liên kết chuỗi các tác vụ qua dữ liệu dạng attribute đầu vào đầu ra liên kết với nhau theo ứng dụng, theo chuỗi các node/work item/operator
Đây là giao diện đồ họa của một operator (node) chứa các work item thể hiện là các chấm xanh bên trong một node, thể hiện các tác vụ được thực thi hàng loạt:

Giải thích các chú thích Operator có trên hình như sau (chia theo 2 cột, trái và phải, từ trên xuống dưới):
- Bên Trái:
- Biểu tượng hiển thị trạng thái của operator/node này. Cái vòng tròn xanh lá bên ngoài thể hiện tiến trình.
- Các biểu diễn số này cho biết tổng số work item có, từ trên xuống: 40 cái đã làm xong, 8 cái đang làm – cooking, 52 chưa làm.
- Những dấu chấm xanh lá cho biết tình trạng của các work item (đang làm – cooking, báo sai, hoàn thiện ..).
- Nhấn vô sẽ đóng node lại (giấu mấy cái hiển thị work item là chấm xanh lá đi)
- Khi mà một node này có hơn 200 work item bên trong, nó sẽ được nhóm lại theo trang, nhấn vô cái thanh để qua trang.
- Bên phải:
- Bypass flag: Nhấn vô là ra chỉ thị bỏ qua không làm node này
- Lock flag: Nhấn vô là ra chỉ thị khóa không cho hiệu chỉnh node này
- Output flag: Nhấn vô là cho biết node này là đầu ra của toàn network up-stream (từ trên xuống) – nếu có down-stream (từ node này trở xuống) là bỏ qua không tính
- Nhấn chuột phải RMB (right mouse button) sẽ hiển thị thêm các thông tin menu cài đặt cho node, bao gồm cả các ra lệnh như thực thi, dừng lại, xóa kết quả của node operator
- Nhấn chuột giữa MMB (middle mouse button) vào các work item dấu xanh lá để coi thông tin của chúng. Click phải lên các dấu work item sẽ có menu
- Nếu nhấn vào sẽ cho ra một bảng biểu thông tin của các work item thể hiện chi tiết
- Mỗi một cái dấu chấm xanh lá cây biểu thị một work item cụ thể, click vào dấu chấm xanh này sẽ thấy tình trạng cụ thể của work item cũng như cho thấy mối liên kết của các tác vụ
Một giao diện cấu trúc setup chuỗi network Tops như sau (theo tài liệu: https://www.sidefx.com/docs/houdini/tops/intro.html):

- Ở đây sẽ demo tạo ra 4 giá trị pixel ngẫu nhiên khác nhau
- Sử dụng Mantra render 4 giá trị pixel này với mỗi một giá trị là 5 biến thể khác nhau được bỏ vào render frame từ frame bắt đầu là 1 tới 5
- Node Partition Theo Frame sẽ tham gia vào, tức đặc điều kiện (dependency) rằng phải chờ toàn bộ các operator up-stream tức các tác vụ phía trên, phải chờ cho làm xong hết
- Với mỗi frame, tạo một tập hình cho các biến thể đã tạo chung với nhau để xem kết quả mà so sánh
- Sau cùng là Wait For All node được để vào nhằm cho biết rằng, tất cả phải xong
Tư Liệu Tự Học Về PDG
Làm quen với PDG dành cho artist nói chung cũng hơi trừu tượng – vì ngoài thực thi tác vụ sáng tạo, tạo tác mỹ thuật, đây cũng là kiến trúc kỹ nghệ dùng nhiều trong các công việc ưu tiên xử lý về kỹ thuật, qui trình sản xuất …
Nhằm giúp cho cải thiện việc tự động hóa hỗ trợ các artist, tôi chia sẻ loạt tài liệu giúp artist dễ dàng hơn với PDG, tạo ra nhiều tạo tác đa dạng hơn, bớt thủ công hơn:
- PDG bên trong cốt lõi, tài liệu rất quan trọng sau cái cơ bản, hay một khi đã setup một mớ PGD Tops network nhưng vẫn muốn rõ ràng tường tận hơn để tự làm được network, không cần phải đi copy người ta: https://vimeo.com/348894483
- PDG foundation, tìm hiểu theo nền tảng để biết có PDG sẽ giúp cải thiện vụ gì, làm sao: https://www.sidefx.com/tutorials/foundations-build-a-city-with-pdg/
- Tài liệu hướng dẫn sử dụng của Side FX Houdini là cái nôi của mọi thứ kiến thức cơ bản, giới thiệu về PDG/Tops https://www.sidefx.com/docs/houdini/tops/intro.html
- Đây là một tutorial sử dụng PDG Tops dành cho tác vụ tạo hiệu ứng FX: https://www.sidefx.com/docs/houdini/tops/tutorial_pdgfxworkflow.html
- Danh sách và giải thích các file ví dụ của Side FX cung cấp về cách thiết lập PDG/Tops: https://www.sidefx.com/docs/houdini/tops/examples.html
- Tất cả các Tops node, giải thích chức năng: https://www.sidefx.com/docs/houdini/nodes/top/index.html
- Nguyên full playlist hướng dẫn làm PDG trong sản xuất từ cơ bản đến nâng cao, bao gồm cả trích xuất tài liệu đem qua phần mềm khác, cụ thể là Unreal Engine: https://www.youtube.com/playlist?list=PLQqW4NKIAzYV-cKuuhg3fERJe9X-ABhKY
- Danh sách tài liệu learning của chính Side FX cung cấp cho nhiều mặt trận, dùng PDG tạo tác cho thiết kế, procedural, fx, pipeline, workflow … :https://www.sidefx.com/learn/pipeline-pdg/
- Giải thích và sắc bén ngắn gọn về PDG/Tops bởi CG Wiki: https://www.tokeru.com/cgwiki/HoudiniTops.html
- Nhân viên đã từng làm việc ở Blue Skys Animation (công ty làm phim hoạt hình lớn đã được Disney mua về và xóa sổ – đỡ mắc công cạnh tranh, mệt !!) đã có viết một bài ứng dụng PDG vào workflow lúc đó của studios khi tích hợp với kỹ nghệ làm phim hoạt hình tại studios là Conduit: https://medium.com/blue-sky-tech-blog/integrating-conduit-in-houdini-5f77c7597bab
- Ở bên TQ các studio phương Tây cũng tới đây làm nên các hãng FX dữ dằn, nghành phát triển điện ảnh và video games của xứ này rất khủng, việc ứng dụng dùng Houdini vào trong sản xuất là điều dễ hiểu, các technical artist thường xuyên có bài trao đổi, thuyết trình về Houdini, ví dụ như nói về PDG ở đây một cách cơ bản tới ứng dụng vào sản xuất: https://zhuanlan.zhihu.com/p/65668825