rendering
rendering
¶
MCP tool definitions for Houdini rendering operations.
Provides tools for viewport capture, render node management, render execution, and render progress monitoring.
Functions:
| Name | Description |
|---|---|
create_render_node |
Create a new render (ROP) node in /out. |
get_render_progress |
Progress of a render or write started with start_render. |
get_render_settings |
Get render settings from a ROP node. |
list_render_nodes |
List all render (ROP/Driver) nodes in the scene. |
render_node_network |
Capture a screenshot of a node's network editor view. |
render_quad_view |
Capture all four viewport panes to separate images. |
render_sheet |
Render frames start..end with the OpenGL ROP and tile them into one image. |
render_viewport |
Capture the current 3D viewport to an image file. |
set_render_settings |
Set render parameters on a ROP node. |
start_render |
Execute any node that renders or writes files. |
Functions:¶
create_render_node
async
¶
create_render_node(
ctx: Context,
renderer: str,
name: str | None = None,
camera: str | None = None,
output_path: str | None = None,
) -> dict
Create a new render (ROP) node in /out.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
str
|
Renderer type ('karma', 'opengl', 'mantra', 'rop_geometry', 'rop_alembic', 'usdrender', 'fetch', 'merge', 'rop_fbx', 'rop_gltf'). |
required |
|
str | None
|
Node name. |
None
|
|
str | None
|
Camera node path. |
None
|
|
str | None
|
Output file path. |
None
|
get_render_progress
async
¶
Progress of a render or write started with start_render.
Accepts every node start_render accepts (a LOP usdrender_rop or Karma
LOP, a SOP ROP, a File Cache), not only /out ROPs. Reports the node's
errors with license_error singled out, the output files on disk, and
for a background render the process state and the tail of its log.
done is true when there is nothing left to wait for.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
str
|
The node given to start_render. |
required |
get_render_settings
async
¶
list_render_nodes
async
¶
list_render_nodes(ctx: Context) -> dict
List all render (ROP/Driver) nodes in the scene.
render_node_network
async
¶
render_node_network(
ctx: Context, node_path: str, output_path: str | None = None
) -> dict
render_quad_view
async
¶
render_quad_view(
ctx: Context,
output_path: str | None = None,
resolution: list[int] | None = None,
) -> dict
render_sheet
async
¶
render_sheet(
ctx: Context,
start: int,
end: int,
step: int = 1,
camera: str | None = None,
resolution: list[int] | None = None,
columns: int | None = None,
output_path: str | None = None,
) -> dict
Render frames start..end with the OpenGL ROP and tile them into one image.
One image shows motion a single frame cannot: a sim's spread, a camera move. Needs no viewport, so it works in a headless session too. A snapshot of the scene as it is now (unsaved edits included, the session untouched) renders in a separate hython, since a second OpenGL render in one hython crashes on Houdini 22; that hython takes a license seat while it runs. Frames are labelled. Objects (/obj) only, not a LOP stage.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
int
|
First frame. |
required |
|
int
|
Last frame. |
required |
|
int
|
Frame step; at most 64 frames in all. |
1
|
|
str | None
|
Camera object path. Default: the scene's only camera. |
None
|
|
list[int] | None
|
[width, height] of each tile. Default [320, 240]. |
None
|
|
int | None
|
Tiles per row. Default: about square. |
None
|
|
str | None
|
Sheet image path. Default: a new PNG in the temp dir. |
None
|
render_viewport
async
¶
render_viewport(
ctx: Context,
output_path: str | None = None,
resolution: list[int] | None = None,
camera: str | None = None,
settle_seconds: float = 0,
) -> dict
Capture the current 3D viewport to an image file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
str | None
|
Image file path. Default: a new PNG in the temp dir. |
None
|
|
list[int] | None
|
[width, height] in pixels. |
None
|
|
str | None
|
Camera node path. |
None
|
|
float
|
Wait this long before capturing, without blocking Houdini, so a Karma viewport can converge after a change. Use this instead of a shell sleep between calls. Capped at 120. |
0
|
set_render_settings
async
¶
start_render
async
¶
start_render(
ctx: Context,
node_path: str,
frame_range: list[float] | None = None,
background: bool = False,
overrides: dict[str, Any] | None = None,
) -> dict
Execute any node that renders or writes files.
Foreground by default: Houdini shows its own progress dialog and the user can cancel. The call holds until the render finishes, however long that is; a client that hands a long call to a background task notifies you with the verdict. Do nothing else in Houdini meanwhile and never poll the disk.
Not just /out ROPs: a LOP usdrender_rop (which is how Solaris renders), a SOP ROP Geometry, or a File Cache's Save to Disk all work, because what matters is whether the node can be executed rather than its category.
The result reports the output path it wrote to and whether anything is actually on disk there, so a render that succeeds and writes nowhere is visible instead of silent.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
str
|
Any node with a render() or an 'execute' button. |
required |
|
list[float] | None
|
[start, end] or [start, end, increment]. |
None
|
|
bool
|
Render in a separate hython on the saved hip and return at once with status "launched"; get_render_progress reports the process, its log tail and the files. The user sees no progress in Houdini, so use it only when asked to keep working while a render runs. |
False
|
|
dict[str, Any] | None
|
{parm_name: value} for this render only, e.g. a draft
{"resolutionx": 640, "resolutiony": 360}; a parm tuple takes a
list. Put back afterwards, expressions and keyframes included,
even if the render fails ( |
None
|