feat: Adds Arnold .ass export feature into Houdini Deadline Cloud submitter#341
feat: Adds Arnold .ass export feature into Houdini Deadline Cloud submitter#341skarpree wants to merge 8 commits intoaws-deadline:mainlinefrom
Conversation
- Add arnold_utils.py with ROP detection, configuration, and local export - Auto-configure Arnold ROPs before submit (enable .ass export, clear ar_picture) - Add Arnold settings UI section to SceneSettingsWidget (3 checkboxes) - Update _assets.py to detect .ass output directories (not just ar_picture) - Add Export .ass button to HDA for local export from Deadline Cloud node - Propagate ADSKFLEX_LICENSE_FILE to farm workers in job template - Add unit tests for arnold_utils and arnold callbacks Signed-off-by: skarpree <skarpree@amazon.com>
11fd153 to
1fb4b4b
Compare
Signed-off-by: skarpree <skarpree@amazon.com>
Signed-off-by: skarpree <skarpree@amazon.com>
Signed-off-by: skarpree <skarpree@amazon.com>
… rename test method Signed-off-by: skarpree <skarpree@amazon.com>
…ecurity hotspot Signed-off-by: skarpree <skarpree@amazon.com>
…ud S5443 Signed-off-by: skarpree <skarpree@amazon.com>
Signed-off-by: skarpree <skarpree@amazon.com>
|
|
High level comment, are alll of your commits functional in and of themself? They seem like they are iterative and this description is one feature so they can likely be re-based into a single commit. |
|
|
||
| def _arnold_outputs(node: hou.Node) -> set[str]: | ||
| """Get Arnold output directories, prioritizing .ass export path over ar_picture.""" | ||
| from .arnold_utils import get_arnold_ass_output_directories |
There was a problem hiding this comment.
Is this a common pattern with houdini plugins to do the import in the function here?
| def is_arnold_rop(node: "hou.Node") -> bool: | ||
| """Check if a node is an Arnold ROP (Driver/arnold).""" | ||
| try: | ||
| return node.type().name() == "arnold" |
There was a problem hiding this comment.
What kind of exceptions would we expect this operation to throw?
| return arnold_rops | ||
|
|
||
|
|
||
| def _set_parm_safe(parm: "hou.Parm", value) -> None: |
| try: | ||
| _set_parm_safe(parm, param_value) | ||
| except Exception as e: | ||
| logger.warning("Failed to set '%s' on '%s': %s", param_name, rop.path(), e) |
There was a problem hiding this comment.
Is this ok as just a warning? I would think we are losing information here.
| try: | ||
| parm.set(value) | ||
| except Exception: | ||
| logger.warning("Failed to restore '%s' on '%s'", name, rop.path()) |
There was a problem hiding this comment.
Do we actually just want to fail and continue here? A warning doesn't seem like a strong enough logging level.
| return int(parm.eval()) if parm else default | ||
|
|
||
|
|
||
| def _get_frame_range_from_node(node: hou.Node): |
| ) | ||
|
|
||
|
|
||
| def export_ass_callback(kwargs): |
There was a problem hiding this comment.
Missing type definitions.



"## Summary
Integrates Arnold .ass export support into the Houdini Deadline Cloud submitter as a pre-submit step. When Arnold ROPs are detected in the input network, the submitter automatically configures them for safe .ass file export before job submission.
Changes
New: `arnold_utils.py`
Modified: `submitter.py`
Modified: `_assets.py`
Modified: `hip_settings.py`
Modified: `houdini_submitter_widget.py`
Modified: HDA (`DialogScript` + `PythonModule`)
New: Unit Tests
Problem Solved
Arnold ROPs have several known pitfalls when used with hython/farm rendering:
This PR automatically detects and fixes all of these before submission.
Testing