Skip to content

Commit

Permalink
Merge branch 'main' into add_info_for_template_format_for_setting_ass…
Browse files Browse the repository at this point in the history
…et_directories_in_unreal_docs
  • Loading branch information
moonyuet authored Oct 21, 2024
2 parents e25aadb + 9b78eb4 commit f23c8d5
Show file tree
Hide file tree
Showing 22 changed files with 249 additions and 19 deletions.
23 changes: 21 additions & 2 deletions website/docs/addon_applications_admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@ import versions from '@site/docs/assets/json/Ayon_addons_version.json'
{versions.Applications_Badge}
</ReactMarkdown>

## Introduction

The Applications addon streamlines the setup of applications and tools across your studio. It empowers you to set executable paths and startup environments, with support for various operating systems including Windows, Linux, and macOS.
## Applications Addon Features

### Applications, Tools and Filters

The Applications addon streamlines the setup of applications and tools across your studio. It allows you to set executable paths and startup environments, with support for various operating systems including Windows, Linux, and macOS.

:::info
Please note that the addon does not differentiate between different Linux distributions.
Expand All @@ -30,6 +33,22 @@ The Addon features two primary settings categories: Definitions and Filters:
1. **Definitions:** available only in studio settings, allows to define all possible applications and tools that can be used across all projects.
2. **Filters:** defines when certain applications and tools are used on project level. This filters whether a certain application or tool should be enabled in a certain launch context, like a specific task type or project-wide.


### Applications Web Actions

:::info
The web actions feature requires AYON Server version `1.3.0` or higher, core addon version `0.4.4` or higher, and Launcher version `1.1.0` or higher.

Web actions run through **shims**, which are automatically set up when users install the AYON launcher version `1.1.0` or higher.
:::

Web actions let you launch applications directly through the AYON web server. You can find these actions in the [details panel](artist_details_panel.md).

The application addon handles the logic for web actions. Currently, there are no specific settings for web actions.

The application web actions are generated from your application's definitions in your production or development bundles, depending on the developer mode setting, and they adhere to your application’s filter settings.


## Applications Addon Settings
### Show only available applications
![](assets/applications/show_only_available_apps.png)
Expand Down
8 changes: 5 additions & 3 deletions website/docs/addon_core_settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
id: addon_core_settings
title: Core addon settings
sidebar_label: Core addon settings
description: AYON core addon settings documentations for admins.
toc_max_heading_level: 5
---

import ReactMarkdown from "react-markdown";
Expand Down Expand Up @@ -206,15 +208,15 @@ Notable parameters:
- **`Colorspace`** - target colorspace, which must be available in used color config. (If `Transcoding type` is `Use Colorspace` value in configuration is used OR if empty value collected on instance from DCC).
- **`Display & View`** - display and viewer colorspace. (If `Transcoding type` is `Use Display&View` values in configuration is used OR if empty values collected on instance from DCC).
- **`Arguments`** - special additional command line arguments for `oiiotool`.
- **[`Tags`](#tags)**
- **[`Tags`](#tags)** - Add additional tags to representation.

#### Examples

Example here describes use case for creation of new color coded review of png image sequence. Original representation's files are kept intact, review is created from transcoded files, but these files are removed in cleanup process.
![core_oiio_transcode](assets/core_oiio_transcode.png)
![core_oiio_transcode](assets/core/admin/oiio_transcode_example.png)

Another use case is to transcode in Maya only `beauty` render layers and use collected `Display` and `View` colorspaces from DCC.
![core_oiio_transcode_in_Maya](assets/core_oiio_transcode2.png)
![core_oiio_transcode_in_Maya](assets/core/admin/oiio_transcode_example2.png)


### Extract Review
Expand Down
16 changes: 11 additions & 5 deletions website/docs/addon_resolve_admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ import TabItem from '@theme/TabItem';
## Resolve requirements
Resolve uses a separate Python interpreter (it does not come with Python itself). The interpreter needs to have installed PySide2 (or PySide6 if on MacOS) and OpenTimelineIO dependencies for Ayon to work correctly. Bellow you can find instructions on how to install them into an installed Python of your choice.

- Resolve 19 - our recommended version range `Python 3.9.x` (in complience with Ayon), also been tested with `Python 3.10.x`
- Resolve 18 - our recommended version range `Python 3.9.x` (in complience with Ayon)
- Resolve 17 - our recommended version `Python 3.6.2`
- Resolve 18 - our recommended version range `Python 3.10.x` (in complience with Ayon)

:::warning
Resolve Studio is the only version that works with the Ayon toolkit because of external scripting requirements which the free edition of Resolve is lacking.
Expand Down Expand Up @@ -78,11 +79,16 @@ python3 -m pip install PySide6

### OpenTimelineIO

:::warning Permissions
Installation guide for OpenTimelineIO in Python 3.6 can be found [here](https://github.com/ynput/OpenPype/blob/develop/openpype/hosts/resolve/README.markdown#basic-setup).
:::

AYON is using OpenTimelineIO for editorial publishing. OpenTimelineIO has to be installed into the python.
AYON is using OpenTimelineIO for editorial publishing. OpenTimelineIO has to be installed into the Resolve Python environment.
Tested versions:
- Resolve 19 - `OpenColorIO 0.17.0` with `Python 3.9.x` or `Python 3.10.x`
- Resolve 18 - `OpenColorIO 0.17.0` with `Python 3.9.x`
- Resolve 17 - `OpenColorIO 0.13.0` with `Python 3.6.2` (see special build instruction below)

:::tip OpenColorIO 0.13.0
Installation guide for OpenTimelineIO 0.13.0 in Python 3.6 can be found [here](https://github.com/ynput/ayon-resolve/blob/develop/client/ayon_resolve/README.markdown).
:::

<Tabs
groupId="platforms"
Expand Down
17 changes: 10 additions & 7 deletions website/docs/addon_resolve_artist.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ After all clips which are intended to be converted to publishable instances are

After the menu widget is opened (it can take while so be patient please :).

Hit `Create ...` and then set **Use selection** to active and select the family to **Create Publishable Clips**.
Hit `Create ...` and then select the product type to **Create Publishable Clip**.

You can leave `Use only clips with Chocolate clip colors` enabled to publish only the selection.

The Product name can stay as it is, it is not going to be used because each clip will generate it's own name.

Expand All @@ -129,7 +131,7 @@ The Product name can stay as it is, it is not going to be used because each clip
<div class="row markdown">
<div class="col col--6 markdown">

The new windows that opens, let's you define various attributes for your future products and shots.
The "Create options" section let you define various attributes for your future products and shots.

Set Rename clips to active if you wish to use different names of shots in pipeline then the original clip names conformed from EDL/XML.

Expand Down Expand Up @@ -233,13 +235,14 @@ There are two ways to create a publishable editorial package: by creating a new

### Create/Convert a Timeline from Media Pool into an Editorial Package

To create an editorial package, select a timeline in the media pool (1) and use the Create tool (2) to mark the timeline with Editorial Package (3) publishable product data. Keep _`Use selection`_ (5) active and choose _`Editorial Package`_ (3) as the product type. You can also use a Variant (4) to differentiate between different versions of timelines within the same target context. Hit Create (6).
To create an editorial package, select a timeline in the media pool (1) and use the AYON Create tool (2).
Then set the target folder (3) context and task (4).

![Create Editorial pkg01](assets/resolve/user_editorial_pkg_create01.png)
Choose _`Editorial Package`_ (5) as the product type. You can also use a Variant (6) to differentiate between different versions of timelines within the same target context. Hit Create (7).

In the next step, define the target folder (1) context and task (2) for the product to be published into and hit **OK** (3). Now, your timeline is ready to be published.
Now, your timeline is ready to be published.

![Create Editorial pkg02](assets/resolve/user_editorial_pkg_create02.png)
![Create Editorial pkg01](assets/resolve/user_editorial_pkg_create01.png)

:::warning Metadata storing
AYON is storing metadata for production tracking in the media pool clip's **VFX Notes**. The content of this key should not be changed or removed.
Expand All @@ -254,7 +257,7 @@ Loading a previously published package adds publishable product data to the time

### Publishing Editorial Package

Open the publisher (1) from the AYON menu. Ensure that only the Editorial Package product type (2) is activated (click the square icon (3) next to the name) in the left panel of the publisher window. You can then publish by clicking the _`Play`_ button (4).
Open the publisher (1) from the AYON menu. Ensure that your editorial package instance is enabled in the "Product to publish" section (2). You can then publish by clicking the _`Publish`_ button (3).

![Publishing editorial package 01](assets/resolve/user_editorial_pkg_publishing01.png)

Expand Down
33 changes: 33 additions & 0 deletions website/docs/artist_details_panel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
id: artist_details_panel
title: The Details Panel
sidebar_label: Details Panel
---

## Overview
When using the AYON production tracker, you'll encounter the details panel frequently. It's essential for team interactions.
As the name suggests, the details panel is packed with information, serving as a communication tool and offering useful actions.


## Panel Content

![](assets/details_panel/details_panel_overview.png)

- **Folder Path**: Displays the folder path to the entity.
- **Name & Thumbnail**: Shows the name and thumbnail of the entity.
:::tip Update Thumbnail
You can update the thumbnail by right-clicking the thumbnail and selecting Upload new thumbnail.
:::
- **Tags**: View and add tags.
- **Status**: View and update status.
- **Web Actions**: Access available web actions, e.g. applications, directly via the AYON web server.
- **[Activity Feed](artist_activity_feed.md)**: Leave comments and track activity.
- **[Watchers](artist_inbox.md#watchers)**: Update notification settings for the current folder or task and choose who receives updates.
- **Picture in Picture**: Open a panel that can stay open as you navigate to different pages.
- **Escape**: Close the current details panel.
- **Assigned Users**: Shows the assignees of the current task.
- **Priority**: View and update the priority of the current task.
- **Attributes**: Provides task details like `fps`, `Start frame`, `End frame`.
:::tip Attributes and Pipeline
These attributes are used within the pipeline and can be modified by the admin via the project editor.
:::
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 removed website/docs/assets/core_oiio_transcode.png
Binary file not shown.
Binary file removed website/docs/assets/core_oiio_transcode2.png
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.
Binary file modified website/docs/assets/resolve/user_editorial_pkg_create01.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 modified website/docs/assets/resolve/user_editorial_pkg_publishing01.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 modified website/docs/assets/resolve_create_clips.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 modified website/docs/assets/resolve_create_renaming_clips.png
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 modified website/docs/assets/resolve_create_template_filling.png
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 modified website/docs/assets/resolve_menu_openpype.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
162 changes: 160 additions & 2 deletions website/docs/dev_addon_creation.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,10 +275,168 @@ If you are curious, here's what happens when you access the api without logging


### Web Action
:::note TODO
Write about it and add an example.

Web actions let users trigger AYON Addons CLI actions directly from the AYON server to perform actions on their machines. They run through **shims**, which are automatically set up when users install the AYON launcher version `1.1.0` or higher.

Web actions are added in two steps:

1. **Client-Side CLI Actions**: Develop the addon CLI actions in the client-side code of the addon. More about them in the next section [CLI Interface](dev_addon_creation.md#cli-interface).
2. **Server-Side Web Actions**: Implement web actions in the server-side code of the addon and link them to their corresponding addon CLI actions.

<!-- TODO: We may expand later on `SimpleActionManifest` and `ActionExecutor`. -->

<details><summary>Simple Web Action Example</summary>

This simple example triggers a QT dialog on the user's machine, showing the folder path from which the action was triggered.

![](assets/addon_dev/web_action_example.png)

```python title="my_addon/client/my_addon/__init__.py"
from qtpy import QtWidgets
import ayon_api

from ayon_core.addon import AYONAddon, click_wrap
from .version import __version__


class MyAddonCode(AYONAddon):
"""My addon class."""

label = "My Addon"
name = "my_addon"
version = __version__

# Add CLI
def cli(self, click_group):
# Convert `cli_main` command to click object and add it to parent group
click_group.add_command(cli_main.to_click_obj())


@click_wrap.group(
MyAddonCode.name,
help="My Addon cli commands.")
def cli_main():
pass

@cli_main.command() # Add child command
@click_wrap.option(
"--project",
help="project name",
type=str,
required=False
)
@click_wrap.option(
"--entity-id",
help="entity id",
type=str,
required=False
)
def show_selected_path(project, entity_id):
"""Display a dialog showing the folder path from which the action was triggered."""

# Process the input arguments
con = ayon_api.get_server_api_connection()
entity = con.get_folder_by_id(project, entity_id)

folder_path = f"{project}{entity['path']}"

# Show Dialog
app = QtWidgets.QApplication()
QtWidgets.QMessageBox.information(
None,
"Triggered from AYON Server",
f"The action was triggered from folder: '{folder_path}'",
)
```

```python title="my_addon/server/__init__.py"
from ayon_server.actions import (
ActionExecutor,
ExecuteResponseModel,
SimpleActionManifest,
)

from ayon_server.addons import BaseServerAddon


IDENTIFIER_PREFIX = "myaddon.launch"


class MyAddonSettings(BaseServerAddon):
# Set settings
async def get_simple_actions(
self,
project_name: str | None = None,
variant: str = "production",
) -> list[SimpleActionManifest]:
"""Return a list of simple actions provided by the addon"""
output = []

# Add a web actions to folders.
label = "Trigger Simple Action"
icon = {
"type": "material-symbols",
"name": "switch_access_2",
}
output.append(
SimpleActionManifest(
identifier=f"{IDENTIFIER_PREFIX}.show_dialog",
label=label,
icon=icon,
order=100,
entity_type="folder",
entity_subtypes=None,
allow_multiselection=False,
)
)

return output

async def execute_action(
self,
executor: "ActionExecutor",
) -> "ExecuteResponseModel":
"""Execute an action provided by the addon.
Note:
Executes CLI actions defined in the addon's client code or other addons.
"""

project_name = executor.context.project_name
entity_id = executor.context.entity_ids[0]

if executor.identifier == f"{IDENTIFIER_PREFIX}.show_dialog":
return await executor.get_launcher_action_response(
args=[
"addon", "my_addon", "show-selected-path",
"--project", project_name,
"--entity-id", entity_id,
]
)

raise ValueError(f"Unknown action: {executor.identifier}")

```

:::tip icons
Icons support [material-symbols](https://fonts.google.com/icons) as well as addon static icons, more info check [Private and Public Dirs](dev_addon_creation.md#private-and-public-dirs).
```python
icon = {
"type": "url",
"url": "{addon_url}/public/icons/" + icon_name
}

```

:::tip entity_type
For `SimpleActionManifest`, you can use different entity types.
- `"folder"`: Any folder path that is not a task.
- `"task"`: Tasks.
:::

</details>

## Addon Client Code
Also, we can refer to this section as Unlock Pipeline Powers since client code is used to direct the pipeline!

Expand Down
8 changes: 8 additions & 0 deletions website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const config = {
stylesheets: [
"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200",
],

presets: [
[
"classic",
Expand Down Expand Up @@ -204,6 +205,13 @@ const config = {
],
"docusaurus-plugin-sass",
],
scripts: [
{
src: "https://plausible.io/js/script.js",
defer: true,
"data-domain": "ayon.ynput.io",
},
],
};

module.exports = config;
1 change: 1 addition & 0 deletions website/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ module.exports = {
label: "Production Tracking",
items: [
"artist_my_tasks_page",
"artist_details_panel",
"artist_activity_feed",
"artist_reviewables",
"artist_inbox",
Expand Down

0 comments on commit f23c8d5

Please sign in to comment.