Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Houdini addon docs #83

Merged
merged 21 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 88 additions & 7 deletions website/docs/admin_hosts_houdini.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,46 @@ title: Houdini Admin docs
sidebar_label: Houdini
---

## General
### Update Houdini Vars on context change

Allows admins to have a list of vars (e.g. JOB) with (dynamic) values that will be updated on context changes, e.g. when switching to another asset or task.

Using template keys is supported but formatting keys capitalization variants is not, e.g. `{Asset}` and `{ASSET}` won't work


:::note
If `Treat as directory` toggle is activated, Ayon will consider the given value is a path of a folder.
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved

If the folder does not exist on the context change it will be created by this feature so that the path will always try to point to an existing folder.
:::

Disabling `Update Houdini vars on context change` feature will leave all Houdini vars unmanaged and thus no context update changes will occur.

> If `$JOB` is present in the Houdini var list and has an empty value, Ayon will set its value to `$HIP`


:::note
For consistency reasons we always force all vars to be uppercase.
e.g. `myvar` will be `MYVAR`
:::

![update-houdini-vars-context-change](assets/houdini/admin/update-houdini-vars-context-change.png)


## Color Management (ImageIO)

Allows admins to override the global color management settings, check [Host specific overrides](https://ayon.ynput.io/docs/admin_colorspace#host-specific-overrides)

![houdini-color-management](assets/houdini/admin/houdini-color-management.png)

## Shelves Manager
You can add your custom [Shelves](https://www.sidefx.com/docs/houdini/shelf/index.html) into Houdini by setting your shelf sets, shelves and tools in **Houdini -> Shelves Manager**.
![Custom menu definition](assets/houdini-admin_shelvesmanager.png)
![Custom menu definition](assets/houdini/admin/houdini-admin_shelvesmanager.png)

The Shelf Set Path is used to load a .shelf file to generate your shelf set. If the path is specified, you don't have to set the shelves and tools.


![Shelves Creation](assets/settings_project_houdini_shelves.png)
![Shelves Creation](assets/houdini/admin/settings_project_houdini_shelves.png)
1. **Shelf set name:** enter the name of the **shelf set** you want to import or create.
2. **Shelf Set Path (optional):** enter the Shelf set path (on Windows, MacOs or Linux) (optional).
3. **(+/-) :** add or delete a **shelf set**.
Expand All @@ -25,12 +57,61 @@ The Shelf Set Path is used to load a .shelf file to generate your shelf set. If
11. **⇅:** change the **shelf** order into the **shelf set**.
12. **⇅:** change the **tool** order in it **shelf**.

# Creator plugins
### Shelves Example

Using template keys is supported but formatting keys capitalization variants is not, e.g. `{Asset}` and `{ASSET}` won't work.

![Custom menu definition](assets/houdini/admin/houdini-shelf-example.png)

## Creator plugins
Enable or disable the plugins. Some of them have extra options such as defining the default subsets names.

**Plugins list:** Create Arnold Ass, Create Alembic Camera, Create Composite (Image Sequence), Create Point Cache, Create Redshift ROP, Create Remote Publish, Create VDB Cache, Create USD, Create USD Model, Create USD Shading Workspace, Create USD Render.
**Plugins list:** Create Alembic Camera, Create Arnold Ass, Create Arnold ROP, Create Composite (Image Sequence), Create Houdini Digital Asset, Create Karma ROP, Create Mantra ROP, Create PointCache (Abc), Create PointCache (Bgeo), Create Redshift Proxy, Create Redshift ROP, Create Review, Create Static Mesh, Create USD (experimental), Create USD render (experimental), Create VDB Cache, Create VRay ROP.
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved

# Publish plugings
## Publish plugings
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved
Enable or disable the plugins executed at publishing.

**Publish plugins list:** Validate Workfile Paths, ValidateContainers.
**Publish plugins list:** Validate Latest Containers, Validate Mesh is Static, Validate Review Colorspace, Validate Subset Name, Validate Unreal Static Mesh Name,Validate workfile paths settings.

---

## FAQ

### When will we need to modify Houdini addon code ?
We've spent a lot of time making it possible to customize Houdini addon from settings.
e.g. you can add your studio's menus, tools and digital assets from settings.

Still, you may need to modify Ayon addons only when :
- Adding/Modifying/Customizing Launch Hooks
- Registering new Callbacks
- Adding/Modifying/Customizing plugins (create, publish, load, Actions)
- Adding a new Ayon launcher tray tool

### How to add my menus, tools and digital assets to Houdini ?
Mostly, you'd only need to update Environment to share these tools with your team.
e.g.,
- `PYTHONPATH` to add a custom python library path
- `HOUDINI_MENU_PATH` to add a custom menu path
- `HOUDINI_OTL_PATH` to add a custom digital assets path

Ayon allows you to add environment variables as:
1. Global environment variable (it wil be available for all DCCs)
2. Application specific (it wil be available for a particular DCC)
3. Application variant specific (it wil be available for a particular DCC version)
4. Tool (it wil be available on demand per project per asset from project Editor)

For a detailed guide visit: [Ayon/Openpype Env Vars and Tools Configuration Explained](https://community.ynput.io/t/openpype-env-vars-and-tools-configuration-explained/540)
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved

### How to publish lookdev from Houdini ?

Publishing and managing Lookdev in Houdini is within our plan.
The current solution to publish materials is to use HDAs as you can publish most of Houdini nodes as hda.
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved

### How to submit houdini patch version to deadline ?

We don't have to as it can be done implicitly by our `GlobalJobPreLoad`.
you would only need to
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved
- update Houdini deadline config
![faq-deadline-config](assets/houdini/admin/faq-deadline-config.png)
- add Houdini dir to `PATH` environment variable and add `HOUDINI_VERSION` for each variant
![faq-houdini-ayon-update-path](assets/houdini/admin/faq-houdini-ayon-update-path.png)
74 changes: 65 additions & 9 deletions website/docs/artist_hosts_houdini.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,77 @@ sidebar_label: Houdini
- [Publish](artist_tools_publisher)
- [Library Loader](artist_tools_library_loader)

## Publishing Alembic Cameras
## Ayon Houdini Publish Process
:::note
Ayon shouldn't be opinionated on your workflow, it only ensures that your work meets your studio's technical specifications.
MustafaJafar marked this conversation as resolved.
Show resolved Hide resolved
:::

The current publishing process is
1. Create a publish instance using `Create` menu or tab menu
2. Click publish!

| Create Menu | Tab Menu |
|--|--|
| ![tab-menu](assets/houdini/artist/tab-menu.png) | ![create-menu](assets/houdini/artist/create-menu.png) |

| Publish |
|--|
| ![publish-button](assets/houdini/artist/publish-button.png) |

## Available Product Types

### Alembic Camera
You can publish baked camera in Alembic format. Select your camera and go **AYON -> Create** and select **Camera (abc)**.
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 **AYON -> Publish** and after some validations your camera will be published
assigned in the **Creator** menu. For example if you name the subset `Main`, output Alembic Driver will be named
`cameraMain`. After that, you can **AYON -> Publish** and after some validations your camera will be published
to `abc` file.

## Publishing Composites - Image Sequences
import alembic_camera from './assets/houdini/artist/alembic_camera.mp4'

<video controls style={{width: "75%" }}>
<source src={alembic_camera}/>
</video>

### Arnold Scene Source
### Arnold ROP
### Composite (Image Sequence)
You can publish image sequence directly from Houdini. You can use any `cop` network you have and publish image
sequence generated from it. For example I've created simple **cop** graph to generate some noise:
![Noise COP](assets/houdini_imagesequence_cop.png)
sequence generated from it.

to publish it, I'll select node I like - in this case `radialblur1` and go **AYON -> Create** and
select **Composite (Image Sequence)**. This will create `/out/imagesequenceNoise` with frame range set (you are free to change the default range set). When you hit **Publish** it will render image sequence from selected node.


If I want to publish it, I'll select node I like - in this case `radialblur1` and go **AYON -> 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.
import composite_seq from './assets/houdini/artist/composite.mp4'

<video controls style={{width: "75%" }}>
<source src={composite_seq}/>
</video>


### Houdini Digital Asset
### Karma ROP
### Mantra ROP
### PointCache (Abc)

import alembic_pointcache from './assets/houdini/artist/alembic_pointcache.mp4'

<video controls style={{width: "75%" }}>
<source src={alembic_pointcache}/>
</video>

### PointCache (Bgeo)
### Redshift Proxy
### Redshift ROP
### Review
### Static Mesh
### USD (experimental)
### USD render (experimental)
### VDB Cache
### VRay ROP

---

## Publishing Point Caches (alembic)
Publishing point caches in alembic format is pretty straightforward, but it is by default enforcing better compatibility
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file added website/docs/assets/houdini/artist/composite.mp4
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/docs/assets/houdini/artist/tab-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed website/docs/assets/houdini_imagesequence_cop.png
Binary file not shown.
20 changes: 19 additions & 1 deletion website/src/data/addons/data/houdini.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,25 @@ const addon: Addon = {
"libraryLoader",
"slates",
],
families: ["model", "pointcache", "VDBCache", "camera"],
families: [
"arnoldAss",
"arnoldRender",
"camera",
"imagesequence",
"hda",
"karmaRender",
"mantraRender",
"pointcache",
"redshiftProxy",
"redshiftRender",
"review",
"staticmesh",
"VDBCache",
"vrayRender",
"workfile",
"usd",
"usdRender"
],
docs: {
user: "artist_hosts_houdini",
admin: "admin_hosts_houdini",
Expand Down
50 changes: 49 additions & 1 deletion website/src/data/families/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,55 @@ const families: { [type in FamilyType]: Family } = {
},
maxScene: {
title: "Max Scene",
icon: "home_repair_service",
icon: "home_repair_service"
},
arnoldAss:{
title: "Arnold Scene Source",
icon: "grain"
},
arnoldRender:{
title: "Arnold Render",
icon: "photo_library"
},
imagesequence:{
title: "Composite (Image Sequence)" ,
icon: "photo_library"
},
hda:{
title: "Houdini Digital Asset (Hda)",
icon: "home_repair_service"
},
karmaRender:{
title: "Karma Render",
icon: "photo_library"
},
mantraRender:{
title: "Mantra Render",
icon: "photo_library"
},
redshiftProxy:{
title: "Redshift Proxy",
icon: "grain"
},
redshiftRender:{
title:"Redshift Render",
icon: "photo_library"
},
staticmesh:{
title: "Static Mesh",
icon: "grain"
},
vrayRender:{
title: "VRay Render",
icon: "photo_library"
},
usd:{
title: "USD (experimental)",
icon: "home_repair_service"
},
usdRender:{
title: "USD Render (experimental)",
icon: "photo_library"
}
};

Expand Down
14 changes: 13 additions & 1 deletion website/src/data/families/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,16 @@ export type FamilyType =
| "pointcache"
| "maxScene"
| "mayaScene"
| "pointCloud";
| "pointCloud"
| "arnoldAss"
| "arnoldRender"
| "imagesequence"
| "hda"
| "karmaRender"
| "mantraRender"
| "redshiftProxy"
| "redshiftRender"
| "staticmesh"
| "vrayRender"
| "usd"
| "usdRender";