diff --git a/openpype/hosts/houdini/plugins/create/create_pointcache.py b/openpype/hosts/houdini/plugins/create/create_pointcache.py index 28468bf073..feb683edf6 100644 --- a/openpype/hosts/houdini/plugins/create/create_pointcache.py +++ b/openpype/hosts/houdini/plugins/create/create_pointcache.py @@ -39,6 +39,7 @@ class CreatePointCache(plugin.Creator): parms.update({"sop_path": node.path()}) instance.setParms(parms) + instance.parm("trange").set(1) # Lock any parameters in this list to_lock = ["prim_to_detail_pattern"] diff --git a/openpype/hosts/houdini/plugins/create/create_usdrender.py b/openpype/hosts/houdini/plugins/create/create_usdrender.py index 5cf03a211f..9b98f59ac1 100644 --- a/openpype/hosts/houdini/plugins/create/create_usdrender.py +++ b/openpype/hosts/houdini/plugins/create/create_usdrender.py @@ -17,7 +17,7 @@ class CreateUSDRender(plugin.Creator): # Remove the active, we are checking the bypass flag of the nodes self.data.pop("active", None) - self.data.update({"node_type": "usdrender_rop"}) + self.data.update({"node_type": "usdrender"}) def _process(self, instance): """Creator main entry point. @@ -30,6 +30,9 @@ class CreateUSDRender(plugin.Creator): # Render frame range "trange": 1 } + if self.nodes: + node = self.nodes[0] + parms.update({"loppath": node.path()}) instance.setParms(parms) # Lock some Avalon attributes diff --git a/openpype/hosts/houdini/plugins/create/create_vbd_cache.py b/openpype/hosts/houdini/plugins/create/create_vbd_cache.py index 2047ae2e76..242c21fc72 100644 --- a/openpype/hosts/houdini/plugins/create/create_vbd_cache.py +++ b/openpype/hosts/houdini/plugins/create/create_vbd_cache.py @@ -28,6 +28,7 @@ class CreateVDBCache(plugin.Creator): parms = { "sopoutput": "$HIP/pyblish/%s.$F4.vdb" % self.name, "initsim": True, + "trange": 1 } if self.nodes: diff --git a/website/docs/artist_hosts_houdini.md b/website/docs/artist_hosts_houdini.md index d9d85394e2..f70eac625a 100644 --- a/website/docs/artist_hosts_houdini.md +++ b/website/docs/artist_hosts_houdini.md @@ -13,14 +13,66 @@ sidebar_label: Houdini - [Publish](artist_tools.md#publisher) - [Library Loader](artist_tools.md#library-loader) -## Publishing -### Publishing Alembic Cameras +## Publishing Alembic Cameras You can publish baked camera in Alembic format. Select your camera and go **OpenPype -> Create** and select **Camera (abc)**. -This will create Alembic Driver node in **out** with path and frame range already set. This node will have a name you've +This will create Alembic ROP in **out** with path and frame range already set. This node will have a name you've assigned in the **Creator** menu. For example if you name the subset `Default`, output Alembic Driver will be named `cameraDefault`. After that, you can **OpenPype -> Publish** and after some validations your camera will be published to `abc` file. -### Composite - Image Sequence +## Publishing Composites - Image Sequences You can publish image sequence directly from Houdini. You can use any `cop` network you have and publish image -sequence generated from it. \ No newline at end of file +sequence generated from it. For example I've created simple **cop** graph to generate some noise: +![Noise COP](assets/houdini_imagesequence_cop.png) + +If I want to publish it, I'll select node I like - in this case `radialblur1` and go **OpenPype -> Create** and +select **Composite (Image Sequence)**. This will create `/out/imagesequenceNoise` Composite ROP (I've named my subset +*Noise*) with frame range set. When you hit **Publish** it will render image sequence from selected node. + +## Publishing Point Caches (alembic) +Publishing point caches in alembic format is pretty straightforward, but it is by default enforcing better compatibility +with other DCCs, so it needs data do be exported prepared in certain way. You need to add `path` attribute so objects +in alembic are better structured. When using alembic round trip in Houdini (loading alembics, modifying then and +then publishing modifications), `path` is automatically resolved by alembic nodes. + +In this example, I've created this node graph on **sop** level, and I want to publish it as point cache. + +![Pointcache setup](assets/houdini_pointcache_path.png) + +*Note: `connectivity` will add index for each primitive and `primitivewrangle1` will add `path` attribute, so it will +be for each primitive (`sphere1` and `sphere2`) as Maya is expecting - `strange_GRP/strange0_GEO/strange0_GEOShape`. How +you handle `path` attribute is up to you, this is just an example.* + +Now select the `output0` node and go **OpenPype -> Create** and select **Point Cache**. It will create +Alembic ROP `/out/pointcacheStrange` + + +## Redshift +:::note Work in progress +This part of documentation is still work in progress. +::: + +## USD +### Publishing USD +You can publish your Solaris Stage as USD file. +![Solaris USD](assets/houdini_usd_stage.png) + +This is very simple test stage. I've selected `output` **lop** node and went to **OpenPype -> Create** where I've +selected **USD**. This created `/out/usdDefault` USD ROP node. + +### Publishing USD render + +USD Render works in similar manner as USD file, except it will create **USD Render** ROP node in out and will publish +images produced by it. If you have selected node in Solaris Stage it will by added as **lop path** to ROP. + +## Publishing VDB + +Publishing VDB files works as with other data types. In this example I've created simple PyroFX explosion from +sphere. In `pyro_import` I've converted the volume to VDB: + +![VDB Setup](assets/houdini_vdb_setup.png) + +I've selected `vdb1` and went **OpenPype -> Create** and selected **VDB Cache**. This will create +geometry ROP in `/out` and sets its paths to output vdb files. During the publishing process +whole dops are cooked. + diff --git a/website/docs/assets/houdini_imagesequence_cop.png b/website/docs/assets/houdini_imagesequence_cop.png new file mode 100644 index 0000000000..54ed5977b9 Binary files /dev/null and b/website/docs/assets/houdini_imagesequence_cop.png differ diff --git a/website/docs/assets/houdini_pointcache_path.png b/website/docs/assets/houdini_pointcache_path.png new file mode 100644 index 0000000000..3687a9c0dd Binary files /dev/null and b/website/docs/assets/houdini_pointcache_path.png differ diff --git a/website/docs/assets/houdini_usd_stage.png b/website/docs/assets/houdini_usd_stage.png new file mode 100644 index 0000000000..cba9428604 Binary files /dev/null and b/website/docs/assets/houdini_usd_stage.png differ diff --git a/website/docs/assets/houdini_vdb_setup.png b/website/docs/assets/houdini_vdb_setup.png new file mode 100644 index 0000000000..e27e0b6c36 Binary files /dev/null and b/website/docs/assets/houdini_vdb_setup.png differ