+
+
+| Token | Description |
+|---|---|
+|`{asset_name}` | Asset name |
+|`{asset_type}` | Asset type |
+|`{subset}` | Subset name |
+|`{family}` | Subset family |
+
+
+
+
+The namespace field can contain a single group of '#' number tokens to indicate where the namespace's unique index should go. The amount of tokens defines the zero padding of the number, e.g ### turns into 001.
+
+Warning: Note that a namespace will always be prefixed with a _ if it starts with a digit.
+
+Example:
+
+
+
+### Extract GPU Cache
+
+
+
+- **Step** Specifies how often samples are taken during file creation. By default, one sample of your object's transformations is taken every frame and saved to the Alembic file.
+
+ For example, a value of 2 caches the transformations of the current object at every other frame of the Cache Time Range.
+
+- **Step Save** Specifies which samples are saved during cache creation. For example, a value of 2 specifies that only every other sample specified by the Step # frame(s) option is saved to your Alembic file.
+
+- **Optimize Hierarchy** When on, nodes and objects in a selected hierarchy are consolidated to maximize the performance of the cache file during playback.
+- **Optimization Threshold** (Available only when Optimize Hierarchy is on.) Specifies the maximum number of vertices contained in a single draw primitive. The default value of 40000 may be ideal for most Maya supported graphics cards. When set to the default value, after optimization, each object in the GPU cache file(s) will have no more than 40000 vertices. This value can be set higher depending on the memory available on your system graphics card.
+
+- **Optimize Animations for Motion Blur** When on, objects with animated transform nodes display with motion blur when the cache is played back in Viewport 2.0 render mode. See Viewport 2.0 options.
+
+ Maya first determines if the GPU cache includes animation data. If the GPU cache is static and does not contain animation data, Maya does not optimize the GPU cache for motion blur.
+
+:::note Motion Blur does not support Cached Playback.
+:::
+
+- **Write Materials** When on, Maya exports the Lambert and Phong materials from source geometry to the GPU Cache file. These materials display when the GPU-cached file is played back in Viewport 2.0.
+
+ GPU-cached objects support all the high-quality lighting and shading effects provide by the Viewport 2.0 rendering mode. See Viewport 2.0 options.
+
+:::note Lambert and Phong materials do not display on GPU-cached files when they are played back in scene view's High Quality Rendering or Default Quality Rendering modes.
+:::
+
+- **Use Base Tessellation** Exports geometry with base tessellation and no smoothing applied. If this setting is turned off, the extractor will export geometry with the current Smooth Mesh Preview setting applied.
+
### Extract Playblast Settings (review)
These settings provide granular control over how the playblasts or reviews are produced in Maya.
@@ -144,6 +200,17 @@ Most settings to override in the viewport are self explanatory and can be found
These options are set on the camera shape when publishing the review. They correspond to attributes on the Maya camera shape node.

+## Include/exclude handles by task type
+You can include or exclude handles, globally or by task type.
+
+The "Include handles by default" defines whether by default handles are included. Additionally you can add a per task type override whether you want to include or exclude handles.
+
+For example, in this image you can see that handles are included by default in all task types, except for the 'Lighting' task, where the toggle is disabled.
+
+
+And here you can see that the handles are disabled by default, except in 'Animation' task where it's enabled.
+
+
## Custom Menu
You can add your custom tools menu into Maya by extending definitions in **Maya -> Scripts Menu Definition**.
@@ -207,3 +274,14 @@ Fill in the necessary fields (the optional fields are regex filters)
- Build your workfile

+
+## Explicit Plugins Loading
+You can define which plugins to load on launch of Maya here; `project_settings/maya/explicit_plugins_loading`. This can help improve Maya's launch speed, if you know which plugins are needed.
+
+By default only the required plugins are enabled. You can also add any plugin to the list to enable on launch.
+
+:::note technical
+When enabling this feature, the workfile will be launched post initialization no matter the setting on `project_settings/maya/open_workfile_post_initialization`. This is to avoid any issues with references needing plugins.
+
+Renderfarm integration is not supported for this feature.
+:::
diff --git a/website/docs/artist_concepts.md b/website/docs/artist_concepts.md
index 7582540811..1e55c8139d 100644
--- a/website/docs/artist_concepts.md
+++ b/website/docs/artist_concepts.md
@@ -14,17 +14,29 @@ OpenPype has a limitation regarding duplicated names. Name of assets must be uni
### Subset
-Usually, an asset needs to be created in multiple *'flavours'*. A character might have multiple different looks, model needs to be published in different resolutions, a standard animation rig might not be usable in a crowd system and so on. 'Subsets' are here to accommodate all this variety that might be needed within a single asset. A model might have subset: *'main'*, *'proxy'*, *'sculpt'*, while data of *'look'* family could have subsets *'main'*, *'dirty'*, *'damaged'*. Subsets have some recommendations for their names, but ultimately it's up to the artist to use them for separation of publishes when needed.
+A published output from an asset results in a subset.
+
+The subset type is referred to as [family](#family), for example a rig, pointcache, look.
+A single asset can have many subsets, even of a single family, named [variants](#variant).
+By default a subset is named as a combination of family + variant, sometimes prefixed with the task name (like workfile).
+
+### Variant
+
+Usually, an asset needs to be created in multiple *'flavours'*. A character might have multiple different looks, model needs to be published in different resolutions, a standard animation rig might not be usable in a crowd system and so on. 'Variants' are here to accommodate all this variety that might be needed within a single asset. A model might have variant: *'main'*, *'proxy'*, *'sculpt'*, while data of *'look'* family could have subsets *'main'*, *'dirty'*, *'damaged'*. Variants have some recommendations for their names, but ultimately it's up to the artist to use them for separation of publishes when needed.
### Version
-A numbered iteration of a given subset. Each version contains at least one [representation][daa74ebf].
+A numbered iteration of a given subset. Each version contains at least one [representation](#representation).
- [daa74ebf]: #representation "representation"
+#### Hero version
+
+A hero version is a version that is always the latest published version. When a new publish is generated its written over the previous hero version replacing it in-place as opposed to regular versions where each new publish is a higher version number.
+
+This is an optional feature. The generation of hero versions can be completely disabled in OpenPype by an admin through the Studio Settings.
### Representation
-Each published variant can come out of the software in multiple representations. All of them hold exactly the same data, but in different formats. A model, for example, might be saved as `.OBJ`, Alembic, Maya geometry or as all of them, to be ready for pickup in any other applications supporting these formats.
+Each published subset version can come out of the software in multiple representations. All of them hold exactly the same data, but in different formats. A model, for example, might be saved as `.OBJ`, Alembic, Maya geometry or as all of them, to be ready for pickup in any other applications supporting these formats.
#### Naming convention
@@ -33,18 +45,22 @@ At this moment names of assets, tasks, subsets or representations can contain on
### Family
-Each published [subset][3b89d8e0] can have exactly one family assigned to it. Family determines the type of data that the subset holds. Family doesn't dictate the file type, but can enforce certain technical specifications. For example OpenPype default configuration expects `model` family to only contain geometry without any shaders or joints when it is published.
+Each published [subset](#subset) can have exactly one family assigned to it. Family determines the type of data that the subset holds. Family doesn't dictate the file type, but can enforce certain technical specifications. For example OpenPype default configuration expects `model` family to only contain geometry without any shaders or joints when it is published.
+### Task
- [3b89d8e0]: #subset "subset"
+A task defines a work area for an asset where an artist can work in. For example asset *characterA* can have tasks named *modeling* and *rigging*. Tasks also have types. Multiple tasks of the same type may exist on an asset. A task with type `fx` could for example appear twice as *fx_fire* and *fx_cloth*.
+Without a task you cannot launch a host application.
+### Workfile
+
+The source scene file an artist works in within their task. These are versioned scene files and can be loaded and saved (automatically named) through the [workfiles tool](artist_tools_workfiles.md).
### Host
General term for Software or Application supported by OpenPype and Avalon. These are usually DCC applications like Maya, Houdini or Nuke, but can also be a web based service like Ftrack or Clockify.
-
### Tool
Small piece of software usually dedicated to a particular purpose. Most of OpenPype and Avalon tools have GUI, but some are command line only.
@@ -54,6 +70,10 @@ Small piece of software usually dedicated to a particular purpose. Most of OpenP
Process of exporting data from your work scene to versioned, immutable file that can be used by other artists in the studio.
+#### (Publish) Instance
+
+A publish instance is a single entry which defines a publish output. Publish instances persist within the workfile. This way we can expect that a publish from a newer workfile will produce similar consistent versioned outputs.
+
### Load
Process of importing previously published subsets into your current scene, using any of the OpenPype tools.
diff --git a/website/docs/artist_hosts_aftereffects.md b/website/docs/artist_hosts_aftereffects.md
index 939ef4034c..d9522d5765 100644
--- a/website/docs/artist_hosts_aftereffects.md
+++ b/website/docs/artist_hosts_aftereffects.md
@@ -90,7 +90,7 @@ If there is an option of automatic repair, there will be `Repair` button on the
There are currently 2 options of `render` item:
- Render of farm - allows offload rendering and publishing to Deadline - requires Deadline module being enabled
-- Validate Scene Settings - enables validation plugin which controls setting in DB (or asset control system like Ftrak) and scene itself
+- Validate Scene Settings - enables validation plugin which controls setting in DB (or asset control system like Ftrack) and scene itself

@@ -100,6 +100,23 @@ There are currently 2 options of `render` item:
- `Validate` - if you would like to run only collecting and validating phases (nothing will be published yet)
- `Publish` - standard way how to kick off full publishing process
+#### Support help
+If you would like to ask for help admin or support, you could use any of the three options on the `Note` button on bottom left:
+- `Go to details` - switches into a more detailed list of published instances and plugins.
+- `Copy report` - stash full publishing log to a clipboard
+- `Export report` - save log into a file for sending it via mail or any communication tool
+
+If you are able to fix the workfile yourself, use the first button on the right to set the UI to initial state before publish. (Click the `Publish` button to start again.)
+
+#### Legacy instances
+
+All screenshots from Publish are from updated dialog, before publishing was being done by regular `Pyblish` tool.
+New publishing process should be backward compatible, eg. if you have a workfile with instances created in the previous publishing approach, they will be translated automatically and
+could be used right away.
+
+If you hit on unexpected behaviour with old instances, contact support first, then you could try to delete and recreate instances from scratch.
+Nuclear option is to purge workfile metadata in `Window > Metadata > Basic > Label`. This is only for most determined daredevils though!
+
### Load
When you want to load existing published work, you can use the `Loader` tool. You can reach it in the extension's panel.
@@ -134,20 +151,3 @@ You can switch to a previous version of the image or update to the latest.


-
-#### Support help
-If you would like to ask for help admin or support, you could use any of the three options on the `Note` button on bottom left:
-- `Go to details` - switches into a more detailed list of published instances and plugins.
-- `Copy report` - stash full publishing log to a clipboard
-- `Export report` - save log into a file for sending it via mail or any communication tool
-
-If you are able to fix the workfile yourself, use the first button on the right to set the UI to initial state before publish. (Click the `Publish` button to start again.)
-
-#### Legacy instances
-
-All screenshots from Publish are from updated dialog, before publishing was being done by regular `Pyblish` tool.
-New publishing process should be backward compatible, eg. if you have a workfile with instances created in the previous publishing approach, they will be translated automatically and
-could be used right away.
-
-If you hit on unexpected behaviour with old instances, contact support first, then you could try to delete and recreate instances from scratch.
-Nuclear option is to purge workfile metadata in `Window > Metadata > Basic > Label`. This is only for most determined daredevils though!
diff --git a/website/docs/artist_hosts_houdini.md b/website/docs/artist_hosts_houdini.md
index f2b128ffc6..8874a0b5cf 100644
--- a/website/docs/artist_hosts_houdini.md
+++ b/website/docs/artist_hosts_houdini.md
@@ -14,20 +14,29 @@ sidebar_label: Houdini
- [Library Loader](artist_tools_library-loader)
## Publishing Alembic Cameras
-You can publish baked camera in Alembic format. Select your camera and go **OpenPype -> Create** and select **Camera (abc)**.
+You can publish baked camera in Alembic format.
+
+Select your camera and go **OpenPype -> 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 **OpenPype -> Publish** and after some validations your camera will be published
to `abc` file.
## 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. For example I've created simple **cop** graph to generate some noise:
+You can publish image sequences directly from Houdini's image COP networks.
+
+You can use any COP node and publish the image sequence generated from it. For example this simple graph to generate some noise:
+

-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.
+To publish the output of the `radialblur1` go to **OpenPype -> Create** and
+select **Composite (Image Sequence)**. If you name the variant *Noise* this will create the `/out/imagesequenceNoise` Composite ROP with the frame range set.
+
+When you hit **Publish** it will render image sequence from selected node.
+
+:::info Use selection
+With *Use selection* is enabled on create the node you have selected when creating will be the node used for published. (It set the Composite ROP node's COP path to it). If you don't do this you'll have to manually set the path as needed on e.g. `/out/imagesequenceNoise` to ensure it outputs what you want.
+:::
## Publishing Point Caches (alembic)
Publishing point caches in alembic format is pretty straightforward, but it is by default enforcing better compatibility
@@ -46,6 +55,16 @@ 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`
+## Publishing Reviews (OpenGL)
+To generate a review output from Houdini you need to create a **review** instance.
+Go to **OpenPype -> Create** and select **Review**.
+
+
+
+On create, with the **Use Selection** checkbox enabled it will set up the first
+camera found in your selection as the camera for the OpenGL ROP node and other
+non-cameras are set in **Force Objects**. It will then render those even if
+their display flag is disabled in your scene.
## Redshift
:::note Work in progress
diff --git a/website/docs/artist_hosts_maya_xgen.md b/website/docs/artist_hosts_maya_xgen.md
index ec5f2ed921..db7bbd0557 100644
--- a/website/docs/artist_hosts_maya_xgen.md
+++ b/website/docs/artist_hosts_maya_xgen.md
@@ -43,6 +43,10 @@ Create an Xgen instance to publish. This needs to contain only **one Xgen collec
You can create multiple Xgen instances if you have multiple collections to publish.
+:::note
+The Xgen publishing requires a namespace on the Xgen collection (palette) and the geometry used.
+:::
+
### Publish
The publishing process will grab geometry used for Xgen along with any external files used in the collection's descriptions. This creates an isolated Maya file with just the Xgen collection's dependencies, so you can use any nested geometry when creating the Xgen description. An Xgen version will consist of:
diff --git a/website/docs/assets/houdini_review_create_attrs.png b/website/docs/assets/houdini_review_create_attrs.png
new file mode 100644
index 0000000000..8735e79914
Binary files /dev/null and b/website/docs/assets/houdini_review_create_attrs.png differ
diff --git a/website/docs/assets/maya-admin_custom_namespace.png b/website/docs/assets/maya-admin_custom_namespace.png
new file mode 100644
index 0000000000..80707ea727
Binary files /dev/null and b/website/docs/assets/maya-admin_custom_namespace.png differ
diff --git a/website/docs/assets/maya-admin_exclude_handles.png b/website/docs/assets/maya-admin_exclude_handles.png
new file mode 100644
index 0000000000..9a50f2c287
Binary files /dev/null and b/website/docs/assets/maya-admin_exclude_handles.png differ
diff --git a/website/docs/assets/maya-admin_gpu_cache.png b/website/docs/assets/maya-admin_gpu_cache.png
new file mode 100644
index 0000000000..8b07b06c1e
Binary files /dev/null and b/website/docs/assets/maya-admin_gpu_cache.png differ
diff --git a/website/docs/assets/maya-admin_include_handles.png b/website/docs/assets/maya-admin_include_handles.png
new file mode 100644
index 0000000000..88d2270ddc
Binary files /dev/null and b/website/docs/assets/maya-admin_include_handles.png differ
diff --git a/website/docs/module_kitsu.md b/website/docs/module_kitsu.md
index 05cff87fcc..d79c78fecf 100644
--- a/website/docs/module_kitsu.md
+++ b/website/docs/module_kitsu.md
@@ -53,5 +53,5 @@ There are four settings available:
## Q&A
### Is it safe to rename an entity from Kitsu?
-Absolutely! Entities are linked by their unique IDs between the two databases.
+Absolutely! Entities are linked by their unique IDs between the two databases.
But renaming from the OP's Project Manager won't apply the change to Kitsu, it'll be overridden during the next synchronization.
diff --git a/website/docs/project_settings/settings_project_global.md b/website/docs/project_settings/settings_project_global.md
index 2de9038f3f..c17f707830 100644
--- a/website/docs/project_settings/settings_project_global.md
+++ b/website/docs/project_settings/settings_project_global.md
@@ -255,7 +255,7 @@ suffix is **"client"** then the final suffix is **"h264_client"**.
| resolution_height | Resolution height. |
| fps | Fps of an output. |
| timecode | Timecode by frame start and fps. |
- | focalLength | **Only available in Maya**