PDG can't parse the special path tokens used by the bake texture node when determining expected outputs for the work item. If your bake texture output path has tokens like %(CHANNEL) or %(UDIM) then there's going to be a mis-match between the expected files on the work item, and the output files actually produced when the ROP cooks. That'll cause the message you're seeing -- it's a warning though, not an error. It just means that caching won't work because PDG can't tell what the outputs are ahead of time before it cooks the ROP.
When you say the file is created and then deleted, do you mean the texture file on disk itself is deleted?
Found 438 posts.
Search results Show results as topic list.
PDG/TOPs » Bake Texture and TOP, no output
- tpetrick
- 585 posts
- Online
PDG/TOPs » Maya PDG Service (pipeline) Sample
- tpetrick
- 585 posts
- Online
The exception itself is coming from Maya. It looks like the API has change slightly in the last few versions. You should be able to replace the last two lines of the script with:
instead of:
Current PDG does not support running Maya as a service out of the box, although the plan is to have that finished for H20.5. It would technically be possible to write your own custom Maya-based service and use it with the block in H20, which is why the option is still available on the block.
cmds.file( file_to_load.path, open=True, force=True)
instead of:
cmds.file( new=True, force=True) cmds.file( file_to_load.path, o=True )
JonasSorgenfrei
Another thing, when i change the Server Type from Shared Server (deprecated) to Service i get the issue
cmd command not found.
Does anyone has an working example of services with maya ?
Current PDG does not support running Maya as a service out of the box, although the plan is to have that finished for H20.5. It would technically be possible to write your own custom Maya-based service and use it with the block in H20, which is why the option is still available on the block.
PDG/TOPs » Pop-up windows for every work item when using TOP services
- tpetrick
- 585 posts
- Online
I haven't seen this happen before on either Windows or Linux. Can you provide a higher resolution image that actually shows the title bar/command line for the popup window -- the gif is too low resolution to tell what it's actually running. Additionally, please attach a Houdini info.txt (Help -> About Houdini -> Save). You can also log that as a bug with support instead of posting it on the forum if you prefer.
PDG/TOPs » Bake Texture and TOP, no output
- tpetrick
- 585 posts
- Online
Can you attach a .hip file demonstrating the issue you're seeing? The Bake Texture ROP cooks as expected for me, and lists output files on the work item.
The warning occurs because PDG needs to be able to determine the work item's output paths before cooking, and the Bake Texture ROP doesn't follow the standard output parameter naming conventions. You can either specify a custom path list or add vm_uvoutputpicture# as a custom output parm.
The warning occurs because PDG needs to be able to determine the work item's output paths before cooking, and the Bake Texture ROP doesn't follow the standard output parameter naming conventions. You can either specify a custom path list or add vm_uvoutputpicture# as a custom output parm.
PDG/TOPs » FFmpeg Command - Audio Trim - overwrite files
- tpetrick
- 585 posts
- Online
That's covered by the ffmpeg documentation: https://ffmpeg.org/ffmpeg.html#Main-options [ffmpeg.org]
-y (global)
Overwrite output files without asking.
PDG/TOPs » TOPs - Rop Fetch - Script
- tpetrick
- 585 posts
- Online
papsphilip
that didn't work unfortunately.
added hou.parm('/obj/EXPORTS/camera_to_points1/renderme').pressButton() as a pre-render script
but still when the TOP cooks the workitems the output images are all the same, from the same frame.
Your script is in the pre-render parameter, which runs once per render on the first frame of the render. It sounds like you want to have it in the pre-frame script instead, which runs once a frame.
Regarding the the reload parameter option on the ROP Fetch itself, the button specified in that parameter should be pushed every frame even when using a batch.
PDG/TOPs » TOPs - Rop Fetch - Script
- tpetrick
- 585 posts
- Online
The script parameters on the ROP Geometry Output are on the underlying Geometry ROP itself, and are just promoted onto the TOP node. If you want to run a pre/post script with a ROP Fetch you'll need to put them in the pre/post script field(s) of your ROP.
Edited by tpetrick - Feb. 13, 2024 13:34:55
PDG/TOPs » PDG nuke services in houdini 20
- tpetrick
- 585 posts
- Online
Nuke doesn't work with services yet in H20, and probably won't until H20.5, which is why the Nuke block still defaults to using shared servers.
Edited by tpetrick - Jan. 22, 2024 19:49:17
PDG/TOPs » anaconda Virtual environments in Python Script TOP
- tpetrick
- 585 posts
- Online
The Venv Path parameter is intended to be used with environments created using the Python Virtual Environment TOP, which uses Python's built-in venv module to initialize the environment. It currrently does not work with virtual environments that require initializing a custom shell environment, e.g. Conda.
PDG/TOPs » How to create referance to self in the python script node
- tpetrick
- 585 posts
- Online
When running out of process or using services, the script runs in a separate process that doesn't have access to the original .hip file. There are no nodes or scene at all -- just the script code and the work item data.
PDG/TOPs » Submit 1 task per work item to deadline.
- tpetrick
- 585 posts
- Online
How are you cooking your graph? If you're pressing the Submit button on the Deadline scheduler, that submits your entire scene file as job to the farm. If you want to cook interactively you should first set your Deadline scheduler as the default, which you can do by Right-mouse clicking on it and finding the option in the list. Then you can cook normally by using Shift+G on RMB->Cook Node on your output node.
PDG/TOPs » @pdg_input only returns first input
- tpetrick
- 585 posts
- Online
If you're using Python, you can use the Python API instead of HScript. There's an equivalent function in Python for all of the things available in HScript, for example: https://www.sidefx.com/docs/houdini/tops/pdg/WorkItem.html#inputFilesForTag [www.sidefx.com]
So for example from a Python parameter expression, you can use pdg.workItem().inputFilesForTag("file") to get a list of all input files, or pdg.workItem().inputFilesForTag("file/image") for all input image files.
If you're using a Python Script node, which already has the work item stored to a work_item local variable, you can use: work_item.inputFilesForTag("file").
So for example from a Python parameter expression, you can use pdg.workItem().inputFilesForTag("file") to get a list of all input files, or pdg.workItem().inputFilesForTag("file/image") for all input image files.
If you're using a Python Script node, which already has the work item stored to a work_item local variable, you can use: work_item.inputFilesForTag("file").
Edited by tpetrick - Nov. 14, 2023 13:36:18
PDG/TOPs » @pdg_input only returns first input
- tpetrick
- 585 posts
- Online
In that case, pdginputvals(..) returns the list of all inputs as a space-separated string: https://www.sidefx.com/docs/houdini/expressions/pdginputvals.html [www.sidefx.com]
And, you can also use pdginputsize(..) to get the actual number of input files with a particular tag: https://www.sidefx.com/docs/houdini/expressions/pdginputsize.html [www.sidefx.com]
And, you can also use pdginputsize(..) to get the actual number of input files with a particular tag: https://www.sidefx.com/docs/houdini/expressions/pdginputsize.html [www.sidefx.com]
Edited by tpetrick - Nov. 14, 2023 12:51:09
PDG/TOPs » @pdg_input only returns first input
- tpetrick
- 585 posts
- Online
@pdg_input is the same as @pdg_input.0, which is also the same as how it works for @attribs in SOPs.
You can use @pdg_input.2 to access the value at index=2, for example. Or, you can use the HScript function pdginput()[ which takes three arguments, one of which is the index: https://www.sidefx.com/docs/houdini/expressions/pdginput.html [www.sidefx.com]
You can use @pdg_input.2 to access the value at index=2, for example. Or, you can use the HScript function pdginput()[ which takes three arguments, one of which is the index: https://www.sidefx.com/docs/houdini/expressions/pdginput.html [www.sidefx.com]
Edited by tpetrick - Nov. 10, 2023 20:00:01
PDG/TOPs » Simplest way to add a dependency in the Python TOP
- tpetrick
- 585 posts
- Online
To add to that -- the setCommand API methods sets the command line string that gets run when the work is scheduled to cook out of process. It doesn't run immediately, it's just a string field on the work item, which is eventually run whenever the work item actually gets to cook. You can right-mouse button on the node and selected "Generate Node" to generate all tasks without running anything, and then inspect the dependencies of those work items, their command line string, etc.
As for traveling across TOPs, you might want to look into Feedback loops if you want the dependency relationship to be maintained. Feedback blocks create tasks that behave like a traditional for loop -- each iteration cooks all the way down to the bottom of the block, before beginning the next iteration at the top of the block. Iterations also cook in serial, whereas TOPs work items normally cook in parallel.
As for traveling across TOPs, you might want to look into Feedback loops if you want the dependency relationship to be maintained. Feedback blocks create tasks that behave like a traditional for loop -- each iteration cooks all the way down to the bottom of the block, before beginning the next iteration at the top of the block. Iterations also cook in serial, whereas TOPs work items normally cook in parallel.
PDG/TOPs » Simplest way to add a dependency in the Python TOP
- tpetrick
- 585 posts
- Online
The setCommand call is just there to add a delay to the work items -- it's done using Python so that doesn't rely on any particular shell features. It's basically just a command line string that causes the work item to sleep for 2 second as their "job", so the work items don't cook instantly.
PDG/TOPs » Simplest way to add a dependency in the Python TOP
- tpetrick
- 585 posts
- Online
You don't need to call the function, you can just paste the code in for adding dependencies. PDG invokes the callbacks automatically on the Python Processor for you, when needed. I've attached an example file that creates 10 work items in a Python Processor that sleep for 2 seconds each, and are sequentially dependent on one and other.
Edited by tpetrick - Aug. 17, 2023 23:48:17
PDG/TOPs » Simplest way to add a dependency in the Python TOP
- tpetrick
- 585 posts
- Online
In order to add dependencies between work items in the same node, you need to implement the Add Internal Dependencies callback on the Python Processor. The generation step can't add dependencies. The purpose of the different node callbacks is described here: https://www.sidefx.com/docs/houdini/tops/processors.html [www.sidefx.com]
For example, the implementation used by the Generic Generator looks like the following, when making work items cook in order:
For example, the implementation used by the Generic Generator looks like the following, when making work items cook in order:
def onAddInternalDependencies(self, dependency_holder, internal_items, is_static): if not self['sequential'].evaluateBool(): return pdg.result.Success previous_item = None for internal_item in internal_items: if previous_item: dependency_holder.addDependency(internal_item, previous_item) previous_item = internal_item return pdg.result.Success
PDG/TOPs » top create attributearray?
- tpetrick
- 585 posts
- Online
An expression with @attribute is the same as using @attribute.0, e.g. the first value of an array. This is behavior that's inherited from SOPs, which originally introduced the @attrib syntax. If you want to access all of the values in the array as a string, you need to use the pdgattribvals("attrib") function: https://www.sidefx.com/docs/houdini/expressions/pdgattribvals.html [www.sidefx.com]
PDG/TOPs » Changing a dropdown menu paramter via tops ?
- tpetrick
- 585 posts
- Online
You can right-mouse click on the Solid Type and go to Expression -> Edit Expression, and then put @pdg_index into the expression editor. I've attached a simple example that generates five work items and imports a different platonic solid type from SOPs for each item. The example was created in H19.5, but the same thing should work in any version.
-
- Quick Links