diff --git a/docs/README.md b/docs/README.md index a4a73e3fd..3de1b6bda 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,7 +11,7 @@ The following folders exist: - `zh_CN` - Chinese translated content. - `all_langs` - Content which is intended for all languages (usually in english) should go here. - `images` - All images should be located in the images subfolder structure. -- `_data/en`, `_data/ja`, ... - Site metadata (e.g. landing page content), organized by language. +- `_data/en`, `_data/ja`, ... - Site metadata (e.g. landing page content), organized by language. ## Content Authoring diff --git a/docs/en/event-daemon/event-daemon-api.md b/docs/en/event-daemon/event-daemon-api.md index f644b4735..73adf619f 100644 --- a/docs/en/event-daemon/event-daemon-api.md +++ b/docs/en/event-daemon/event-daemon-api.md @@ -8,16 +8,17 @@ lang: en # API + ## registerCallbacks A global level function in all plugins that is used to tell the framework about event processing entry points in the plugin. **registerCallbacks(reg)** -* reg: The [`Registrar`](#Registrar) you will interact with to tell the framework which functions to call. - +- reg: The [`Registrar`](#Registrar) you will interact with to tell the framework which functions to call. + ## Registrar The Registrar is the object used to tell the framework how to interact with a plugin. It is passed to the [`registerCallbacks`](#registerCallbacks) function. @@ -36,9 +37,7 @@ See [`getLogger`](#getLogger). Get the python Logger object used to log messages from within the plugin. - - -__setEmails(*emails)__ +**setEmails(\*emails)** Set the emails that should receive error and critical notices when something bad happens in this plugin or any of its callbacks. @@ -71,12 +70,12 @@ reg.setEmails('user1@domain.com', 'user2@domain.com') Register a callback into the engine for this plugin. -* `sgScriptName`: The name of the script taken from the {% include product %} scripts page. -* `sgScriptKey`: The application key for the script taken from a {% include product %} script page. -* `callback`: A function or an object with a `__call__` method. See [`exampleCallback`](#exampleCallback). -* `matchEvents`: A filter of events you want to have passed to your callback. -* `args`: Any object you want the framework to pass back into your callback. -* `stopOnError`: Boolean, should an exception in this callback halt processing of events by all callbacks in this plugin. Default is `True`. +- `sgScriptName`: The name of the script taken from the {% include product %} scripts page. +- `sgScriptKey`: The application key for the script taken from a {% include product %} script page. +- `callback`: A function or an object with a `__call__` method. See [`exampleCallback`](#exampleCallback). +- `matchEvents`: A filter of events you want to have passed to your callback. +- `args`: Any object you want the framework to pass back into your callback. +- `stopOnError`: Boolean, should an exception in this callback halt processing of events by all callbacks in this plugin. Default is `True`. The `sgScriptName` is used to identify the plugin to {% include product %}. Any name can be shared across any number of callbacks or be unique for a single callback. @@ -125,7 +124,7 @@ matchEvents = { } ``` -When matching against non field specific event types such as "_New" or "_Retirement", you don't provide a list, instead you pass `None` as the value. +When matching against non field specific event types such as "\_New" or "\_Retirement", you don't provide a list, instead you pass `None` as the value. ```python matchEvents = { @@ -142,6 +141,7 @@ Another use of the `args` argument could be to pass in a common mutable, a `dict The `stopOnError` argument tells the system if an exception in this callback can cause event processing to stop for all callbacks in the plugin. By default this is `True` but can be switched to `False`. You will still get mail notifications of errors should there be any but processing of events will not stop. Being a per callback setting you can have some critical callbacks for whom this is `True` but others for whom this is `False`. + ## Callback Any plugin entry point registered by [`Registrar.registerCallback`](#registerCallback) is generally a global level function that looks like this: @@ -149,9 +149,9 @@ Any plugin entry point registered by [`Registrar.registerCallback`](#registerCal **exampleCallback(sg, logger, event, args)** -* `sg`: A {% include product %} connection instance. -* `logger`: A Python logging.Logger object preconfigured for you. -* `event`: A {% include product %} event to process. -* `args`: The args argument specified at callback registration time. +- `sg`: A {% include product %} connection instance. +- `logger`: A Python logging.Logger object preconfigured for you. +- `event`: A {% include product %} event to process. +- `args`: The args argument specified at callback registration time. {% include info title="Note" content="Implementing a callback as a `__call__` method on an object instance is possible but left as an exercise for the user." %} diff --git a/docs/en/event-daemon/event-daemon-configuration.md b/docs/en/event-daemon/event-daemon-configuration.md index 55b436262..25afb1d10 100644 --- a/docs/en/event-daemon/event-daemon-configuration.md +++ b/docs/en/event-daemon/event-daemon-configuration.md @@ -14,11 +14,12 @@ Most of the configuration for {% include product %}Events is controlled by the ` {% include info title="Note" content="**For Windows:** Windows users will need to change all the paths in the configuration file for Windows equivalents. We suggest keeping all paths, including logging, under one single location for the sake of simplicity. This documentation tends to refer to `C:\shotgun\shotgunEvents` when mentioning Windows paths." %} + ## Edit shotgunEventDaemon.conf -Once you have installed {% include product %}Events, the next step is to open the `shotgunEventDaemon.conf` file in a text editor and modify the settings to match your studio's needs. The defaults will be fine for most studios, however, there are some settings that have no defaults that will need to be provided by you before you can run the daemon. +Once you have installed {% include product %}Events, the next step is to open the `shotgunEventDaemon.conf` file in a text editor and modify the settings to match your studio's needs. The defaults will be fine for most studios, however, there are some settings that have no defaults that will need to be provided by you before you can run the daemon. -The items you *must* provide are: +The items you _must_ provide are: - your {% include product %} server URL - the Script name and Application key for connecting to {% include product %} @@ -29,6 +30,7 @@ Optionally, you can also specify an SMTP server and email-specific settings in o There is also a section for an optional timing log which can help with troubleshooting if you ever encounter performance issues with your daemon. Enabling timing logging will populate its own separate log file with the timing information. + ### {% include product %} Settings Underneath the `[{% include product %}]` section, replace the default tokens with the correct values for `server`, `name`, and `key`. These should be the same values you'd provide to a standard API script connecting to {% include product %}. @@ -42,9 +44,10 @@ key: e37d855e4824216573472846e0cb3e49c7f6f7b1 ``` + ### Plugin Settings -You will need to tell the {% include product %}EventDaemon where to look for plugins to run. Under the `[plugins]` section replace the default token with the correct value for `paths`. +You will need to tell the {% include product %}EventDaemon where to look for plugins to run. Under the `[plugins]` section replace the default token with the correct value for `paths`. You can specify multiple locations (which may be useful if you have multiple departments or repositories using the daemon). The value here must be a full path to a readable existing directory. @@ -57,6 +60,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins When you're first getting started, a good plugin to test with is the `logArgs.py` plugin located in the `/usr/local/shotgun/{% include product %}Events/src/examplePlugins` directory. Copy that into the plugins folder you specified and we'll use that for testing things. + ### Location of shotgunEventDaemon.conf By default, the daemon will look for the shotgunEventDaemon.conf file in the same directory that {% include product %}EventDaemon.py is in, and in the `/etc` directory. If you need to put the conf file in another directory, it's recommended you create a symlink to it from the current directory. @@ -66,6 +70,7 @@ By default, the daemon will look for the shotgunEventDaemon.conf file in the sam {% include info title="Note" content="**For Windows** The `/etc` doesn't exist on Windows so the configuration file should be put in the same directory as the Python files." %} + ## Testing the Daemon Daemons can be difficult to test since they run in the background. There isn't always an obvious way to see what they're doing. Lucky for us, the {% include product %}EventDaemon has an option to run it as a foreground process. Now that we have done the minimum required setup, let's go ahead and test the daemon and see how things go. @@ -81,11 +86,11 @@ INFO:engine:Last event id (248429) from the {% include product %} database. You should see the lines above when you start the script (some of the details may differ obviously). If you get any errors, the script will terminate since we opted to run it in the foreground we'll see that happen. Some common errors are displayed below if you get stuck. -The `logArgs.py` plugin simply takes the event that occurred in {% include product %} and passes it to the logger. Not very exciting but it's a simple way to ensure that the script is running and the plugin is working. If you're at a busy studio, you may have already noticed a rapid stream of messages flowing by. If not, login to your {% include product %} server in your web browser and change some values or create something. You should see log statements printed out to your terminal window corresponding to the type of event you generated with your changes. +The `logArgs.py` plugin simply takes the event that occurred in {% include product %} and passes it to the logger. Not very exciting but it's a simple way to ensure that the script is running and the plugin is working. If you're at a busy studio, you may have already noticed a rapid stream of messages flowing by. If not, login to your {% include product %} server in your web browser and change some values or create something. You should see log statements printed out to your terminal window corresponding to the type of event you generated with your changes. {% include info title="Note" content="There are variables in the logArgs.py file that need to be filled in with appropriate values. '$DEMO_SCRIPT_NAMES$' and '$DEMO_API_KEY$' must be edited to contain the same values that were used in the shotgunEventDaemon.conf file in order for the logging to function correctly." %} -If you don't see anything logged to the log file, check your log-related settings in {% include product %}EventDaemon.conf to ensure that the ``logging`` value is set to log INFO level messages +If you don't see anything logged to the log file, check your log-related settings in {% include product %}EventDaemon.conf to ensure that the `logging` value is set to log INFO level messages ``` logging: 20 @@ -100,6 +105,7 @@ reg.logger.setLevel(logging.INFO) Assuming all looks good, to stop the {% include product %}EventDaemon process, simply type `-c` in the terminal and you should see the script terminate. + ## Running the daemon Assuming all went well with your testing, we can now run the daemon as intended, in the background. @@ -116,7 +122,7 @@ kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 gre root 4020 0.0 0.1 2443824 4876 ?? S 9:36AM 0:00.02 /usr/bin/python ./{% include product %}EventDaemon.py start ``` -We can see by the second line returned that the daemon is running. The first line is matching the command we just ran. So we know it's running, but to ensure that it's *working* and the plugins are doing what they're supposed to, we can look at the log files and see if there's any output there. +We can see by the second line returned that the daemon is running. The first line is matching the command we just ran. So we know it's running, but to ensure that it's _working_ and the plugins are doing what they're supposed to, we can look at the log files and see if there's any output there. ``` $ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon @@ -134,14 +140,16 @@ Go back to your web browser and make some changes to an entity. Then head back t 2011-09-09 09:45:31,228 - plugin.logArgs.logArgs - INFO - {'attribute_name': 'sg_status_list', 'event_type': 'Shotgun_Shot_Change', 'entity': {'type': 'Shot', 'name': 'bunny_010_0010', 'id': 860}, 'project': {'type': 'Project', 'name': 'Big Buck Bunny', 'id': 65}, 'meta': {'entity_id': 860, 'attribute_name': 'sg_status_list', 'entity_type': 'Shot', 'old_value': 'omt', 'new_value': 'ip', 'type': 'attribute_change'}, 'user': {'type': 'HumanUser', 'name': 'Kevin Porterfield', 'id': 35}, 'session_uuid': '450e4da2-dafa-11e0-9ba7-0023dffffeab', 'type': 'EventLogEntry', 'id': 276560} ``` -The exact details of your output will differ, but what you should see is that the plugin has done what it is supposed to do, that is, log the event to the logfile. Again, if you don't see anything logged to the log file, check your log-related settings in {% include product %}EventDaemon.conf to ensure that the ``logging``value is set to log INFO level messages and your logArgs plugin is also configured to show INFO level messages. +The exact details of your output will differ, but what you should see is that the plugin has done what it is supposed to do, that is, log the event to the logfile. Again, if you don't see anything logged to the log file, check your log-related settings in {% include product %}EventDaemon.conf to ensure that the `logging`value is set to log INFO level messages and your logArgs plugin is also configured to show INFO level messages. + ### A Note About Logging It should be noted that log rotation is a feature of the {% include product %} daemon. Logs are rotated at midnight every night and ten daily files are kept per plugin. + ## Common Errors The following are a few of the common errors that you can run into and how to resolve them. If you get really stuck, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. @@ -160,12 +168,14 @@ You may need to run the daemon with `sudo` or as a user that has permissions to The {% include product %} API is not installed. Make sure it is either located in the current directory or it is in a directory in your `PYTHONPATH`. -If you have to run as sudo and you think you have the `PYTHONPATH` setup correctly, remember that sudo resets the environment variables. You can edit the sudoers file to preserve the `PYTHONPATH` or run sudo -e(?) +If you have to run as sudo and you think you have the `PYTHONPATH` setup correctly, remember that sudo resets the environment variables. You can edit the sudoers file to preserve the `PYTHONPATH` or run sudo -e(?) + ## List of Configuration File Settings + ### Daemon Settings The following are general daemon operational settings. @@ -182,9 +192,9 @@ pidFile: /var/log/shotgunEventDaemon.pid **eventIdFile** -The eventIdFile points to the location where the daemon will store the id of the last processed {% include product %} event. This will allow the daemon to pick up where it left off when it was last shutdown, thus it won't miss any events. If you want to ignore any events since the last daemon shutdown, remove this file before starting up the daemon and the daemon will process only new events created after startup. +The eventIdFile points to the location where the daemon will store the id of the last processed {% include product %} event. This will allow the daemon to pick up where it left off when it was last shutdown, thus it won't miss any events. If you want to ignore any events since the last daemon shutdown, remove this file before starting up the daemon and the daemon will process only new events created after startup. -This file keeps track of the last event id for *each* plugin and stores this information in pickle format. +This file keeps track of the last event id for _each_ plugin and stores this information in pickle format. ``` eventIdFile: /var/log/shotgunEventDaemon.id @@ -205,7 +215,7 @@ logMode: 1 **logPath** -The path where to put log files (both for the main engine and plugin log files). The name of the main log file is controlled by the ``logFile``setting below. +The path where to put log files (both for the main engine and plugin log files). The name of the main log file is controlled by the `logFile`setting below. ``` logPath: /var/log/shotgunEventDaemon @@ -215,7 +225,7 @@ logPath: /var/log/shotgunEventDaemon **logFile** -The name of the main daemon log file. Logging is configured to store up to 10 log files that rotate every night at midnight. +The name of the main daemon log file. Logging is configured to store up to 10 log files that rotate every night at midnight. ``` logFile: shotgunEventDaemon @@ -224,6 +234,7 @@ logFile: shotgunEventDaemon **logging** The threshold level for log messages sent to the log files. This value is the default for the main dispatching engine and can be overridden on a per plugin basis. This value is simply passed to the Python logging module. The most common values are: + - **10:** Debug - **20:** Info - **30:** Warnings @@ -259,7 +270,7 @@ conn_retry_sleep = 60 **max_conn_retries** -Number of times to retry the connection before logging an error level message(which potentially sends an email if email notification is configured below). +Number of times to retry the connection before logging an error level message(which potentially sends an email if email notification is configured below). ``` max_conn_retries = 5 @@ -274,6 +285,7 @@ fetch_interval = 5 ``` + ### {% include product %} Settings The following are settings related to your {% include product %} instance. @@ -295,7 +307,7 @@ The {% include product %} Script name the {% include product %}EventDaemon shoul ``` name: %(SG_ED_SCRIPT_NAME)s ``` - + {% include info title="Note" content="There is no default value here. Set the `SG_ED_SCRIPT_NAME` environment variable to the Script name for your ShotGrid server (ie. `shotgunEventDaemon`)" %} **key** @@ -305,7 +317,7 @@ The {% include product %} Application Key for the Script name specified above. ``` key: %(SG_ED_API_KEY)s ``` - + {% include info title="Note" content="There is no default value here. Set the `SG_ED_API_KEY` environment variable to the Application Key for your Script name above (ie:`0123456789abcdef0123456789abcdef01234567`)" %} **use_session_uuid** @@ -322,6 +334,7 @@ use_session_uuid: True {% include info title="Note" content="The ShotGrid UI will *only* show updates live for the browser session that spawned the original event. Other browser windows with the same page open will not see updates live." %} + ### Plugin Settings **paths** @@ -335,6 +348,7 @@ paths: /usr/local/shotgun/plugins {% include info title="Note" content="There is no default value here. You must set the value to the location(s) of your plugin files (ie:`/usr/local/shotgun/shotgunEvents/plugins` or `C:\shotgun\shotgunEvents\plugins` on Windows)" %} + ### Email Settings These are used for error reporting because we figured you wouldn't constantly be tailing the log and would rather have an active notification system. @@ -350,7 +364,7 @@ The server that should be used for SMTP connections. The username and password v ``` server: smtp.yourdomain.com ``` - + {% include info title="Note" content="There is no default value here. You must replace the smtp.yourdomain.com token with the address of your SMTP server (ie. `smtp.mystudio.com`)." %} **username** diff --git a/docs/en/event-daemon/event-daemon-example-plugins.md b/docs/en/event-daemon/event-daemon-example-plugins.md index 2a7c0b895..a47e9c14a 100644 --- a/docs/en/event-daemon/event-daemon-example-plugins.md +++ b/docs/en/event-daemon/event-daemon-example-plugins.md @@ -7,13 +7,16 @@ lang: en # Example Plugins -There is a [folder of example plugins](https://github.com/shotgunsoftware/shotgunEvents/tree/master/src/examplePlugins) in the source code. +There is a [folder of example plugins](https://github.com/shotgunsoftware/shotgunEvents/tree/master/src/examplePlugins) in the source code. This page includes a few more simple examples, for anyone looking to get started. You can copy/paste this code and it should run(Note: you'll have to update the `script_name`, and `script_key` values to something specific for your installation) First, here's a template upon which all SG event code should be written + ## 1. Code Template + ### Copy / Paste this to get started on new plugins + ```python """ Necessary Documentation of the code @@ -51,11 +54,15 @@ def registerCallbacks(reg): # } def entry_function_call(sg, logger, event, args): # Now do stuff - pass + pass ``` + ## 2. Note Subject Renaming + ### Working with `New` Entity Events -This is a great one to start with because it's simple, but it also deals with a rather tricky aspect of catching `Shotgun_Entity_New` events... + +This is a great one to start with because it's simple, but it also deals with a rather tricky aspect of catching `Shotgun_Entity_New` events... + ```python import time from pprint import pprint @@ -69,7 +76,7 @@ def registerCallbacks(reg): def Function_Name(sg, logger, event, args): - # Waiting here should allow the entity to be fully created + # Waiting here should allow the entity to be fully created # and all the necessary attributes to be added to the NOTE entity time.sleep(1) current_date = time.strftime("%Y-%m %b-%d") @@ -98,14 +105,18 @@ def Function_Name(sg, logger, event, args): logger.info('Dates are not prepended for notes in project id 116 - Software Development') return ``` + Note the `sleep` call as the very first line of the function body. The reason for this deals with the way that `new` events are handled. + 1. When a NEW entity is created in SG, it is still rather unformed - meaning that it doesn't possess all the attributes needed to fully define that entity as you're used to it. In fact, in this example, I can't even guarantee that the `subject` attribute will be on the Note entity when SG emits the `Shotgun_Note_New` event. 2. In order to add all of the necessary attributes, SG then publishes a series of `Shotgun_Note_Change` events wherein SG will add every single attribute to the entity and update the values of those attributes - if required. 3. This means that a multiplicity of events are created, which means that if you need two different attributes to be present and you didn't write a `sleep` aspect to your code, then you'd have to sift through ALL of the `Shotgun_Note_Change` events and the internal metadata looking for only those that have new attributes added and values set... This is a cumbersome process and will process many `Shotgun_Note_Change` events looking for - effectively - just one per note at time of creation. 4. The solution as I've found it is to rely on `Shotgun_Entity_New` and let the script sleep for a short period. At the end of the sleep, SG will have updated all the attributes required for the entity and then you can re-query that same entity for any of the fields you need ## 2. Field Deletion Warning + ### Generating Notes, Working with Fields as Entities, and Entity Retirement Events + ```python """ @@ -202,4 +213,5 @@ def trashedFieldWarning(sg, logger, event, args): CreateNote(sg, logger, event) ``` + This is a very simple script. There is no special logic in checking for deleted fields. If a field is deleted, then a note is created and sent to a group of people that need to know. In my department, we have the group id set to the 'programmers' group, and the project id of the note set to the 'development' project. diff --git a/docs/en/event-daemon/event-daemon-installation.md b/docs/en/event-daemon/event-daemon-installation.md index a3c08ac7b..1c80b0e0c 100644 --- a/docs/en/event-daemon/event-daemon-installation.md +++ b/docs/en/event-daemon/event-daemon-installation.md @@ -5,23 +5,24 @@ pagename: event-daemon-installation lang: en --- - # Installation The following guide will help you setup {% include product %}Events for your studio. + ## System Requirements The daemon can run on any machine that has Python installed and has network access to your {% include product %} server. It does **not** need to run on the {% include product %} server itself. In fact, if you are using the hosted version of {% include product %}, this isn't an option. However, you may run it on your {% include product %} server if you like. Otherwise, any server will do. -* Python v2.6, v2.7 or 3.7 -* [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) - * Use v3.0.37 or higher for Python v2.6 or v2.7 and use v3.1.0 or more for Python 3.7. - * In either case, we strongly suggest using [the most up to date Python API version](https://github.com/shotgunsoftware/python-api/releases) and keeping this dependency updated over time. -* Network access to your {% include product %} server +- Python v2.6, v2.7 or 3.7 +- [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) + - Use v3.0.37 or higher for Python v2.6 or v2.7 and use v3.1.0 or more for Python 3.7. + - In either case, we strongly suggest using [the most up to date Python API version](https://github.com/shotgunsoftware/python-api/releases) and keeping this dependency updated over time. +- Network access to your {% include product %} server + ## Installing the {% include product %} API Assuming Python is already installed on your machine, you now need to install the {% include product %} Python API so that the {% include product %} Event Daemon can use it to connect to your {% include product %} server. You can do this in a couple of ways: @@ -45,6 +46,7 @@ ImportError: No module named shotgun_api3 ``` + ## Installing {% include product %}Events The location you choose to install {% include product %}Events is really up to you. Again, as long as Python and the {% include product %} API are installed on the machine, and it has network access to your {% include product %} server, it can run from anywhere. However, it makes sense to install it somehwere that is logical to your studio, something like `/usr/local/shotgun/shotgunEvents` seems logical so we'll use that as the example from here on out. @@ -54,6 +56,7 @@ The source and archives are available on GitHub at [https://github.com/shotgunso {% include info title="Note" content="**For Windows:** You could use `C:\shotgun\shotgunEvents` if you have a Windows server but for this documentation we will be using the Linux path." %} + ### Cloning the source The easiest way to grab the source if you have `git` installed on the machine is to simply clone the project. This way you can also easily pull in any updates that are committed to ensure you stay up to date with bug fixes and new features. @@ -66,6 +69,7 @@ $ git clone git://github.com/shotgunsoftware/shotgunEvents.git {% include info title="Warning" content="Always make sure you backup your configuration, plugins, and any modifications you make to shotgunEvents before pulling in updates from GitHub so you don't lose anything. Or, fork the project yourself so you can maintain your own repository of changes :)" %} + ### Downloading the archive If you don't have `git` on your machine or you simply would rather download an archive of the source, you can get things rolling following these steps. @@ -108,6 +112,7 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src ``` + ### Installing Requirements A `requirements.txt` file is provided at the root of the repository. You should use this to install the required packages @@ -116,14 +121,14 @@ A `requirements.txt` file is provided at the root of the repository. You should $ pip install -r /path/to/requirements.txt ``` - + ### Windows specifics You will need one of the following on your Windows system: -* Python with [PyWin32](http://sourceforge.net/projects/pywin32/) installed -* [Active Python](http://www.activestate.com/activepython) +- Python with [PyWin32](http://sourceforge.net/projects/pywin32/) installed +- [Active Python](http://www.activestate.com/activepython) Active Python ships with the PyWin32 module which is required for integrating the {% include product %} Event Daemon with Windows' Service architecture. diff --git a/docs/en/event-daemon/event-daemon-plugins.md b/docs/en/event-daemon/event-daemon-plugins.md index 3c5a20027..4cdc7f43f 100644 --- a/docs/en/event-daemon/event-daemon-plugins.md +++ b/docs/en/event-daemon/event-daemon-plugins.md @@ -7,17 +7,18 @@ lang: en # Plugins Overview -A plugin file is any *.py* file in a plugin path as specified in the config file. +A plugin file is any _.py_ file in a plugin path as specified in the config file. There are some example plugins provided in the `src/examplePlugins` folder in your download of the code. These provide simple examples of how to build your own plugins to look for specific events generated, and act on them, changing other values on your {% include product %} instance. -You do not need to restart the daemon each time you make updates to a plugin, the daemon will detect that the plugin has been updated and reload it automatically. +You do not need to restart the daemon each time you make updates to a plugin, the daemon will detect that the plugin has been updated and reload it automatically. If a plugin generates an error, it will not cause the daemon to crash. The plugin will be disabled until it is updated again (hopefully fixed). Any other plugins will continue to run and events will continue to be processed. The daemon will keep track of the last event id that the broken plugin processed successfully. When it is updated (and fixed, hopefully), the daemon will reload it and attempt to process events starting from where that plugin left off. Assuming all is well again, the daemon will catch the plugin up to the current event and then continue to process events with all plugins as normal. - + A {% include product %} event processing plugin has two main parts: a callback registration function and any number of callbacks. + ## registerCallbacks function To be loaded by the framework, your plugin should at least implement the following function: @@ -38,6 +39,7 @@ For each of your functions that should process {% include product %} events, cal You can register as many functions as you wish and not all functions in the file need to be registered as event processing callbacks. + ## Callbacks A callback that will be registered with the system must take four arguments: @@ -50,6 +52,7 @@ A callback that will be registered with the system must take four arguments: {% include info title="Warning" content="You can do whatever you want in a plugin but if any exception raises back to the framework, the plugin within which the offending callback lives (and all contained callbacks) will be deactivated until the file on disk is changed (read: fixed)." %} + ## Logging Using the print statement in an event plugin is not recommended. It is prefered you use the standard logging module from the Python standard library. A logger object will be provided to your various functions @@ -71,6 +74,7 @@ def exampleCallback(sg, logger, event, args): If the event framework is running as a daemon this will be logged to a file otherwise it will be logged to stdout. + ## Building Robust plugins The daemon runs queries against {% include product %} but has built in functionality to retry find() commands should they fail, giving the daemon itself a certain degree of robustness. diff --git a/docs/en/event-daemon/event-daemon-technical-details.md b/docs/en/event-daemon/event-daemon-technical-details.md index 1e6eabe98..dcd9da62c 100644 --- a/docs/en/event-daemon/event-daemon-technical-details.md +++ b/docs/en/event-daemon/event-daemon-technical-details.md @@ -8,6 +8,7 @@ lang: en # Technical Overview + ## Event Types The event types your triggers can register to be notified of are generally respect the following form `Shotgun_[entity_type]_[New|Change|Retirement|Revival]`. Here are a few examples of this pattern: @@ -22,7 +23,7 @@ The event types your triggers can register to be notified of are generally respe Some notable departures from this pattern are used for events that aren't related to entity record activity but rather key points in application behavior. CRS_PlaylistShare_Create - CRS_PlaylistShare_Revoke + CRS_PlaylistShare_Revoke SG_RV_Session_Validate_Success Shotgun_Attachment_View Shotgun_Big_Query @@ -34,45 +35,53 @@ Some notable departures from this pattern are used for events that aren't relate Toolkit_Desktop_ProjectLaunch Toolkit_Desktop_AppLaunch Toolkit_Folders_Create - Toolkit_Folders_Delete + Toolkit_Folders_Delete This list is not exhaustive but is a good place to start. If you wish to know more about the activity and event types on your {% include product %} site, please consult a page of EventLogEntries where you can filter and search through like any other grid page of any other entity type. ### Event Log Entries for Thumbnails -When a new thumbnail is uploaded for an entity, an Event Log entry is created with ``` `Type` == `Shotgun__Change` ``` (e.g. `Shotgun_Shot_Change`). -1. The ```‘is_transient’``` field value is set to true: + +When a new thumbnail is uploaded for an entity, an Event Log entry is created with `` `Type` == `Shotgun__Change` `` (e.g. `Shotgun_Shot_Change`). + +1. The `‘is_transient’` field value is set to true: + ``` { "type": "attribute_change","attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", - "old_value": null, "new_value": 11656, - "is_transient": true + "old_value": null, "new_value": 11656, + "is_transient": true } ``` -2. When the thumbnail becomes available, a new Event Log entry is created with the ```‘is_transient’``` field value now set to false: + +2. When the thumbnail becomes available, a new Event Log entry is created with the `‘is_transient’` field value now set to false: + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", "old_value": null, "new_value": 11656, - "is_transient": false + "is_transient": false } ``` + 3. If we update the thumbnail again, we get these new Event Log entries: + ``` { "type": "attribute_change", "attribute_name": "image", - "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", - "old_value": 11656, "new_value": 11657, - "is_transient": true + "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", + "old_value": 11656, "new_value": 11657, + "is_transient": true } -{ "type": "attribute_change", "attribute_name": "image", - "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", - "old_value": null, "new_value": 11657, - "is_transient": false +{ "type": "attribute_change", "attribute_name": "image", + "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", + "old_value": null, "new_value": 11657, + "is_transient": false } ``` -4. Notice the ```‘old_value’``` field is set to null when the attachment’s thumbnail is the placeholder thumbnail. +4. Notice the `‘old_value’` field is set to null when the attachment’s thumbnail is the placeholder thumbnail. + ## Plugin Processing Order Each event is always processed in the same predictable order so that if any plugins or callbacks are co-dependant, you can safely organize their processing. @@ -88,6 +97,7 @@ Finally, each callback registered by a plugin is called in registration order. F We suggested keeping any functionality that needs to share state somehow in the same plugin as one or multiple callbacks. + ## Sharing state Many options exist for multiple callbacks that need to share state. @@ -97,8 +107,8 @@ Many options exist for multiple callbacks that need to share state. - A mutable passed in the `args` argument when calling [`Registrar.registerCallback`](API#wiki-registerCallback). A state object of your design or something as simple as a `dict`. Preferred. - Implement callbacks such as `__call__` on object instances and provide some shared state object at callback object initialization. Most powerful yet most convoluted method. May be redundant compared to the args argument method above. - + ## Event Backlogs The framework is designed to have every plugin process every single event they are interested in exactly once, without exception. To make sure this happens, the framework stores a backlog of unprocessed events for each plugin and remembers the last event each plugin was provided. Here is a description of situations in which a backlog may occur. diff --git a/docs/en/event-daemon/event-daemon.md b/docs/en/event-daemon/event-daemon.md index 66989236c..82a28027d 100644 --- a/docs/en/event-daemon/event-daemon.md +++ b/docs/en/event-daemon/event-daemon.md @@ -5,16 +5,15 @@ pagename: event-daemon lang: en --- +# {% include product %} Event Framework -# {% include product %} Event Framework -This software was originaly developed by [Patrick Boucher](http://www.patrickboucher.com) with support from [Rodeo Fx](http://rodeofx.com) and Oblique. It is now part of [{% include product %} Software](http://www.shotgridsoftware.com)'s [open source initiative](https://github.com/shotgunsoftware). +This software was originaly developed by [Patrick Boucher](http://www.patrickboucher.com) with support from [Rodeo Fx](http://rodeofx.com) and Oblique. It is now part of [{% include product %} Software](http://www.shotgridsoftware.com)'s [open source initiative](https://github.com/shotgunsoftware). This software is provided under the MIT License that can be found in the LICENSE file or at the [Open Source Initiative](http://www.opensource.org/licenses/mit-license.php) website. - ## Overview -When you want to access the {% include product %} event stream, the preferred way to do so it to monitor the events table, get any new events, process them and repeat. +When you want to access the {% include product %} event stream, the preferred way to do so it to monitor the events table, get any new events, process them and repeat. A lot of stuff is required for this process to work successfully, stuff that may not have any direct bearing on the business rules that need to be applied. @@ -27,12 +26,12 @@ The daemon handles: - Registering plugins from one or more specified paths. - Deactivate any crashing plugins. - Reloading plugins when they change on disk. -- Monitoring the {% include product %} event stream. +- Monitoring the {% include product %} event stream. - Remembering the last processed event id and any backlog. - Starting from the last processed event id on daemon startup. - Catching any connection errors. - Logging information to stdout, file or email as required. -- Creating a connection to {% include product %} that will be used by the callback. +- Creating a connection to {% include product %} that will be used by the callback. - Handing off events to registered callbacks. A plugin handles: @@ -40,11 +39,9 @@ A plugin handles: - Registering any number of callbacks into the framework. - Processing a single event when one is provided by the framework. - ## Advantages of the framework - Only deal with a single monitoring mechanism for all scripts, not one per script. - Minimize network and database load (only one monitor that supplies event to many event processing plugins). - \ No newline at end of file diff --git a/docs/en/guides/pipeline-integrations.md b/docs/en/guides/pipeline-integrations.md index 2ddfb2a1b..47b5cf1b3 100644 --- a/docs/en/guides/pipeline-integrations.md +++ b/docs/en/guides/pipeline-integrations.md @@ -7,6 +7,6 @@ lang: en # Pipeline Integrations -{% include product %}'s pipeline integrations bring {% include product %} data to your artists. Customizable UIs within popular content creation software give artists out-of-the-box tools to view information about their tasks, read and add notes, and share files with teammates. Pipeline integrations are build on the {% include product %} Toolkit platform, and developers can use the Toolkit API to extend functionality or create custom Toolkit apps. +{% include product %}'s pipeline integrations bring {% include product %} data to your artists. Customizable UIs within popular content creation software give artists out-of-the-box tools to view information about their tasks, read and add notes, and share files with teammates. Pipeline integrations are build on the {% include product %} Toolkit platform, and developers can use the Toolkit API to extend functionality or create custom Toolkit apps. -This section contains learning materials to help you get started as you administer a {% include product %} pipeline. You'll find guides to configuring your pipeline and managing your production file system, a tutorial for building a basic vfx pipeline, and resources for writing your own pipeline tools. +This section contains learning materials to help you get started as you administer a {% include product %} pipeline. You'll find guides to configuring your pipeline and managing your production file system, a tutorial for building a basic vfx pipeline, and resources for writing your own pipeline tools. diff --git a/docs/en/guides/pipeline-integrations/administration.md b/docs/en/guides/pipeline-integrations/administration.md index 518f1d59f..7214842a4 100644 --- a/docs/en/guides/pipeline-integrations/administration.md +++ b/docs/en/guides/pipeline-integrations/administration.md @@ -7,6 +7,6 @@ lang: en # Administration -{% include product %}'s pipeline integrations offer a vast set of customization options. Getting your studio's desired pipeline up and running can be a combination of configuration, running command line tools, and ensuring that the {% include product %} tools work in your studio environment. +{% include product %}'s pipeline integrations offer a vast set of customization options. Getting your studio's desired pipeline up and running can be a combination of configuration, running command line tools, and ensuring that the {% include product %} tools work in your studio environment. -This section contains information about administering your studio's {% include product %} Toolkit pipeline. +This section contains information about administering your studio's {% include product %} Toolkit pipeline. diff --git a/docs/en/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md b/docs/en/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md index 3bca477ac..d6d9f3264 100644 --- a/docs/en/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ b/docs/en/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md @@ -7,7 +7,7 @@ lang: en # Apps and Engines Configuration Reference -This document contains an overview of all the different options that you can include when creating configurations for Apps, Engines and Frameworks in the {% include product %} Pipeline Toolkit. It can be useful when doing advanced configuration of Apps, and it is important when you are doing development and need to add parameters to your App Configuration Manifest. +This document contains an overview of all the different options that you can include when creating configurations for Apps, Engines and Frameworks in the {% include product %} Pipeline Toolkit. It can be useful when doing advanced configuration of Apps, and it is important when you are doing development and need to add parameters to your App Configuration Manifest. _This document describes functionality only available if you have taken control over a Toolkit configuration. For more info, see [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ @@ -21,10 +21,10 @@ This document contains specifications for the various file formats that Sgtk use Three major components exists in Toolkit: -- _An engine_ provides a translation layer or an adapter between a host application (such as Maya or Nuke) and Sgtk Apps. Apps typically use python and PySide, and it is the responsibility of the engine to present the host application in a standardized fashion and for example add pyside on top of the host application if this doesn't exist already. -- _An app_ provides a piece of business logic, it is essentially a tool that does something. Apps can be hand crafted to work in a specific host application, or they can be designed to run in more than one host application. -- _A framework_ is a library which can be used by engines, apps or other frameworks. A framework makes it possible to more easily manage code or behaviour which is shared between multiple apps. - +- _An engine_ provides a translation layer or an adapter between a host application (such as Maya or Nuke) and Sgtk Apps. Apps typically use python and PySide, and it is the responsibility of the engine to present the host application in a standardized fashion and for example add pyside on top of the host application if this doesn't exist already. +- _An app_ provides a piece of business logic, it is essentially a tool that does something. Apps can be hand crafted to work in a specific host application, or they can be designed to run in more than one host application. +- _A framework_ is a library which can be used by engines, apps or other frameworks. A framework makes it possible to more easily manage code or behaviour which is shared between multiple apps. + An _environment file_ contains the configuration settings for a collection of engines, apps and frameworks. Such a collection is called an Environment. Sgtk launches different environments for different files or different people. You can for example have an environment for Shot production and environment for Rigging. Each environment is a single yaml file. Environment files are located at `//software/shotgun//config/env` @@ -36,29 +36,29 @@ The yaml file has the following basic format: tk-maya: location engine settings - + apps: tk-maya-publish: location app settings - + tk-maya-revolver: location app settings - + tk-nuke: location engine settings - + apps: tk-nuke-setframerange: location app settings - + tk-nuke-nukepub: location app settings - + frameworks: tk-framework-tools: location @@ -75,13 +75,13 @@ Each app, engine or framework defined in the environment file has got a `locatio Toolkit currently supports app installation and management using the following location _descriptors_: -- An **app_store** descriptor represents an item in the Toolkit App Store -- A **{% include product %}** descriptor represents an item stored in {% include product %} -- A **git** descriptor represents a tag in a git repository -- A **git_branch** descriptor represents a commit in a git branch -- A **path** descriptor represents a location on disk -- A **dev** descriptor represents a developer sandbox -- A **manual** descriptor that is used for custom deployment and rollout +- An **app_store** descriptor represents an item in the Toolkit App Store +- A **{% include product %}** descriptor represents an item stored in {% include product %} +- A **git** descriptor represents a tag in a git repository +- A **git_branch** descriptor represents a commit in a git branch +- A **path** descriptor represents a location on disk +- A **dev** descriptor represents a developer sandbox +- A **manual** descriptor that is used for custom deployment and rollout For documentation on how to use the different descriptors, please see the [Toolkit reference documentation](http://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types). @@ -90,16 +90,28 @@ For documentation on how to use the different descriptors, please see the [Toolk Sometimes it can be useful to temporarily disable an app or an engine. The recommended way of doing this is to to add a `disabled: true` parameter to the location dictionary that specifies where the app or engine should be loaded from. This syntax is supported by all the different location types. It may look like this for example: ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "disabled": true} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "disabled": true, + } ``` Alternatively, if you want an app to only run on certain platforms, you can specify this using the special `deny_platforms` setting: ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "deny_platforms": [windows, linux]} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "deny_platforms": [windows, linux], + } ``` -Possible values for the _deny_platforms_ parameter are `windows`, `linux`, and `mac`. +Possible values for the _deny_platforms_ parameter are `windows`, `linux`, and `mac`. ## Settings and parameters diff --git a/docs/en/guides/pipeline-integrations/administration/beyond-your-first-project.md b/docs/en/guides/pipeline-integrations/administration/beyond-your-first-project.md index e6c005b01..eb7d1dcd8 100644 --- a/docs/en/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ b/docs/en/guides/pipeline-integrations/administration/beyond-your-first-project.md @@ -5,177 +5,172 @@ pagename: beyond-your-first-project lang: en --- - -# Beyond your first project - -Here, we explain where to go once you have got your first project up and running using the {% include product %} Desktop. It covers useful common questions and topics and lists useful documentation resources. - - -# Welcome to Toolkit - -Welcome to Toolkit! If you are reading this, it probably means that you have managed to successfully install your first {% include product %} Pipeline Toolkit Project using the {% include product %} Desktop. - -![](images/Beyond-your-first-project/project_ready.png) - -At this stage, we are hoping you are up and running and have something looking like the screenshot above, a project page with several application launchers. At this stage, try opening Maya, Nuke or any of the other Applications. You should find a {% include product %} menu with further functionality for managing files and assets. - -So where do you go from here? Toolkit offers a lot of flexibility in terms of its configuration and how it works. This document tries to cover some of the next steps that we recommend that you carry out once you are up and running with your first project using the {% include product %} Desktop. - -# Basic Configuration - +# Beyond your first project + +Here, we explain where to go once you have got your first project up and running using the {% include product %} Desktop. It covers useful common questions and topics and lists useful documentation resources. + +# Welcome to Toolkit + +Welcome to Toolkit! If you are reading this, it probably means that you have managed to successfully install your first {% include product %} Pipeline Toolkit Project using the {% include product %} Desktop. + +![](images/Beyond-your-first-project/project_ready.png) + +At this stage, we are hoping you are up and running and have something looking like the screenshot above, a project page with several application launchers. At this stage, try opening Maya, Nuke or any of the other Applications. You should find a {% include product %} menu with further functionality for managing files and assets. + +So where do you go from here? Toolkit offers a lot of flexibility in terms of its configuration and how it works. This document tries to cover some of the next steps that we recommend that you carry out once you are up and running with your first project using the {% include product %} Desktop. + +# Basic Configuration + This section contains a collection of tweaks and useful things to configure. If you have just set up your very first Toolkit project, there are most likely a number of little tweaks and adjustments you need to do to get everything up and running properly. This section tries to explain these various steps. Please note that some of these things involve editing configuration files and going "under the hood" at the moment. If you have any questions about anything, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -## Setting up Application Paths - -Once you have set up your first project and click one of the launch buttons to launch Maya, Motionbuilder or Nuke, it is possible that you see an error message looking something like this: - -![](images/Beyond-your-first-project/failed_to_launch.png) - -In the toolkit project configuration, we store paths to the various executables that you can launch. If you are seeing the above message, it probably means that those paths are not matching your studio setup. You may also find that the wrong version of the application is being launched; for example, our default configuration may have a path to maya 2015 but your studio is running maya 2014. In this case, you also need to change the paths. - -In our default configurations, these paths are all stored in a single file called `paths.yml`. In order to change a path, locate your project configuration on disk and then navigate into the config folder until you find the `paths.yml` file: - -![](images/Beyond-your-first-project/paths_config.png) - -Open this file and make the necessary changes to the paths. Once you have saved the file, you need to leave the project inside of {% include product %} desktop and then click back into it. (but no need to restart the entire application). - -**Further Reading** - -For more information about applications, check out the following topics: - -- [The Toolkit Application Launcher](https://support.shotgunsoftware.com/hc/en-us/articles/219032968) -- [Passing Commandline Arguments](https://support.shotgunsoftware.com/hc/en-us/articles/219032968#Use%20Command%20Line%20Arguments%20at%20Launch) - - -## {% include product %} Integration - -Toolkit integrates with {% include product %} and extends the traditional interface by adding special toolkit action menu items to various parts of the UI: - -![](images/Beyond-your-first-project/shotgun_integration.png) - -This offers a way to launch Toolkit applications or custom tools that operate on data directly from {% include product %}. You can learn more about integrating with your {% include product %} site in [the Browser Integration section of the Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Browser%20Integration). - -## Adding Publishes to the {% include product %} UI - -Once you have toolkit installed, it usually makes sense to make some minor adjustments to the {% include product %} UI layouts. The {% include product %} Pipeline Toolkit creates _Publish Entities_ when you publish a file, so it is handy to add a _Publishes Tab_ to key Assets such as Shot and Asset. To do this, make sure that you are logged in as an admin user. Start by navigating to an Asset or Shot and enter into _Design Mode_: - -![](images/Beyond-your-first-project/design_mode.png) - -Now click the little menu triangle on one of the tabs, and select the _Add New Tab_ action. This will bring up a Dialog UI. Call the tab _Publishes_ and make sure that it is associated with _Published File_ Entities: - -![](images/Beyond-your-first-project/create_tab.png) - -Now click _Save_ to save your changes. You are all set! - -Note: {% include product %} will choose a couple of default fields to pull in when you create a new tab. You may want to add a couple of extra fields for publishes. This is done by clicking the little plus button in the top-right hand corner of the spreadsheet you can see under your new publishes tab. We recommend that you add the following fields: - -- **Description** - Holds a description of the changes in this publish -- **Created By** - The user who created the publish -- **Date Created** - When the publish was made - -If you make changes to your layouts, don't forget to save the page afterwards! - -## Multiple Operating Systems - -In some cases, you may be seeing a message popping up, informing that you **Python cannot be found** with a link to this section of the documentation. - -Toolkit executes its scripts and functionality using a language called [Python](https://www.python.org/). The {% include product %} Desktop comes with a complete Python installation built in, so normally you never need to worry about this. When you set up a new Toolkit project using the {% include product %} Desktop, the project will be set up by default to use the Python that comes bundled with the {% include product %} Desktop. However, sometimes you may explicitly have to tell Toolkit which Python you want it to use. This can happen in if you for example: - -- Use an older version of the {% include product %} Desktop which doesn't set up all Python defaults automatically. -- If you have installed the {% include product %} Desktop in a non-standard location on disk. -- If you a running a manual or more complex Toolkit project setup. - -The path to Python is stored in configuration files which you can manually edit: - -![](images/Beyond-your-first-project/interpreter.png) - -In order to find the right file, first navigate to your project configuration. In there, find the tree files starting with `interpreter_`. These contain the paths to the python interpreter for Linux, Windows and Mac ("Darwin"). These files contain the location of Python for each of the three operating systems. You now need to go in and manually add the python locations for any operating system you wish you use. - -If the files are blank, this indicates that you are using an older version of the {% include product %} Desktop. If this is the case, simply try to update the blank files with the default Python paths. They are as follows: - -- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` -- Windows: `C:\Program Files\Shotgun\Python\python.exe` -- Linux: `/opt/Shotgun/Python/bin/python` - -If you rather have installed the {% include product %} Desktop in a non-standard location or intend to use a custom python location, please ensure that the paths in the files point to a valid Python installation. It needs to be v2.6 or above (but not Python 3!). If you want to execute UI based applications and tools, please make sure that the Python you specify has either PyQt or PySide installed and is linked up to a QT v4.6 or higher. - + +## Setting up Application Paths + +Once you have set up your first project and click one of the launch buttons to launch Maya, Motionbuilder or Nuke, it is possible that you see an error message looking something like this: + +![](images/Beyond-your-first-project/failed_to_launch.png) + +In the toolkit project configuration, we store paths to the various executables that you can launch. If you are seeing the above message, it probably means that those paths are not matching your studio setup. You may also find that the wrong version of the application is being launched; for example, our default configuration may have a path to maya 2015 but your studio is running maya 2014. In this case, you also need to change the paths. + +In our default configurations, these paths are all stored in a single file called `paths.yml`. In order to change a path, locate your project configuration on disk and then navigate into the config folder until you find the `paths.yml` file: + +![](images/Beyond-your-first-project/paths_config.png) + +Open this file and make the necessary changes to the paths. Once you have saved the file, you need to leave the project inside of {% include product %} desktop and then click back into it. (but no need to restart the entire application). + +**Further Reading** + +For more information about applications, check out the following topics: + +- [The Toolkit Application Launcher](https://support.shotgunsoftware.com/hc/en-us/articles/219032968) +- [Passing Commandline Arguments](https://support.shotgunsoftware.com/hc/en-us/articles/219032968#Use%20Command%20Line%20Arguments%20at%20Launch) + +## {% include product %} Integration + +Toolkit integrates with {% include product %} and extends the traditional interface by adding special toolkit action menu items to various parts of the UI: + +![](images/Beyond-your-first-project/shotgun_integration.png) + +This offers a way to launch Toolkit applications or custom tools that operate on data directly from {% include product %}. You can learn more about integrating with your {% include product %} site in [the Browser Integration section of the Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Browser%20Integration). + +## Adding Publishes to the {% include product %} UI + +Once you have toolkit installed, it usually makes sense to make some minor adjustments to the {% include product %} UI layouts. The {% include product %} Pipeline Toolkit creates _Publish Entities_ when you publish a file, so it is handy to add a _Publishes Tab_ to key Assets such as Shot and Asset. To do this, make sure that you are logged in as an admin user. Start by navigating to an Asset or Shot and enter into _Design Mode_: + +![](images/Beyond-your-first-project/design_mode.png) + +Now click the little menu triangle on one of the tabs, and select the _Add New Tab_ action. This will bring up a Dialog UI. Call the tab _Publishes_ and make sure that it is associated with _Published File_ Entities: + +![](images/Beyond-your-first-project/create_tab.png) + +Now click _Save_ to save your changes. You are all set! + +Note: {% include product %} will choose a couple of default fields to pull in when you create a new tab. You may want to add a couple of extra fields for publishes. This is done by clicking the little plus button in the top-right hand corner of the spreadsheet you can see under your new publishes tab. We recommend that you add the following fields: + +- **Description** - Holds a description of the changes in this publish +- **Created By** - The user who created the publish +- **Date Created** - When the publish was made + +If you make changes to your layouts, don't forget to save the page afterwards! + +## Multiple Operating Systems + +In some cases, you may be seeing a message popping up, informing that you **Python cannot be found** with a link to this section of the documentation. + +Toolkit executes its scripts and functionality using a language called [Python](https://www.python.org/). The {% include product %} Desktop comes with a complete Python installation built in, so normally you never need to worry about this. When you set up a new Toolkit project using the {% include product %} Desktop, the project will be set up by default to use the Python that comes bundled with the {% include product %} Desktop. However, sometimes you may explicitly have to tell Toolkit which Python you want it to use. This can happen in if you for example: + +- Use an older version of the {% include product %} Desktop which doesn't set up all Python defaults automatically. +- If you have installed the {% include product %} Desktop in a non-standard location on disk. +- If you a running a manual or more complex Toolkit project setup. + +The path to Python is stored in configuration files which you can manually edit: + +![](images/Beyond-your-first-project/interpreter.png) + +In order to find the right file, first navigate to your project configuration. In there, find the tree files starting with `interpreter_`. These contain the paths to the python interpreter for Linux, Windows and Mac ("Darwin"). These files contain the location of Python for each of the three operating systems. You now need to go in and manually add the python locations for any operating system you wish you use. + +If the files are blank, this indicates that you are using an older version of the {% include product %} Desktop. If this is the case, simply try to update the blank files with the default Python paths. They are as follows: + +- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` +- Windows: `C:\Program Files\Shotgun\Python\python.exe` +- Linux: `/opt/Shotgun/Python/bin/python` + +If you rather have installed the {% include product %} Desktop in a non-standard location or intend to use a custom python location, please ensure that the paths in the files point to a valid Python installation. It needs to be v2.6 or above (but not Python 3!). If you want to execute UI based applications and tools, please make sure that the Python you specify has either PyQt or PySide installed and is linked up to a QT v4.6 or higher. + Please also note that in order to run Toolkit on multiple operating systems, you need to specify the paths to all your desired platforms when you are running the project setup wizard. If you haven't done this, and want to add an additional operating system to a storage path or configuration location, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -# Next Steps - -Hopefully at this point you now have the default {% include product %} setup working for a {% include product %} project (or test project). Applications are launching, Context menu actions and publishes are showing up in {% include product %} and things are working on all your desired operating system platforms. - -This next section is all about what to do next -- the process of starting to take that default configuration and adjust it to work more like the rest of your studio pipeline. Toolkit is flexible and highly configurable, and we have lots of documentation. But before you get started, to see it all in action, we recommend spending a couple of minutes checking out our various walkthrough videos. These show the {% include product %} Pipeline Toolkit in action, how it works inside applications such as Maya and Nuke. It also goes through basic concepts such as publishing, version control, loading etc. - -[{% include product %} Toolkit Video Collection](https://support.shotgunsoftware.com/hc/en-us/articles/219040678) - -## The anatomy of a Toolkit Project - -When you create a new Toolkit project, you end up with a couple of key locations. - -![](images/Beyond-your-first-project/storage.png) - -- The {% include product %} Desktop and its configuration is installed on your local machine. (If you want, it is possible to relocate both the application and the configuration to a shared storage). -- The data area where the Toolkit project will store textures, files, renders etc. This is normally on a shared storage, because you want to share this data with other users, however there are exceptions to this rule; user work areas can be stored on local (user only) storage, and integrations such as our perforce integration uses an external system to help distribute content. -- The toolkit configuration is a fully self contained bundle, including code, apps, core API etc. This is normally stored on a shared storage so that the configuration is easily accessible by all users. - -Your Project configuration on disk contains a couple of different items. - -![](images/Beyond-your-first-project/project_overview.png) - -In the following sections we'll walk through the various parts of the project configuration folder. - -### Command line access - -As well as using the {% include product %} Desktop, you can also access Toolkit via a terminal or shell. Each project that you create on disk comes with a special `tank` command which gives you command line based access to a lot of functionality, including starting up an API session and launching applications. - -If you navigate to your project configuration, you can see a `tank` and a `tank.bat` command in the root of the configuration. Running these commands without any options will give you a list of all the commands that are supported in your current configuration, including the following useful commands: - -- `tank shell` - Start an interactive python shell with tk api access -- `tank core` - Check if there are any core API updates available for this project -- `tank updates` - Check if any of the apps or engines in this configuration has got any updates available - -For more details on what you can do with the `tank` command, please see the in-depth technical documentation: - -[How to Administer Toolkit](https://support.shotgunsoftware.com/hc/en-us/articles/219033178) - -### Key Configuration Files - -The `config` folder contains a couple of key configuration files. - -![](images/Beyond-your-first-project/config_overview.png) - -Toolkit comes with a folder creation system which tries to automatically create folders on disk to make sure that when you start up an application, all the necessary structure on disk exists and has been prepared on beforehand! The configuration for this can be found in the `schema` folder indicated above. - -Hand in hand with this goes the Toolkit _template system_ which makes it easy to define the various paths to files that you can configure; your publishes, work files, renders etc. This is stored in the `templates.yml` file above. - + +# Next Steps + +Hopefully at this point you now have the default {% include product %} setup working for a {% include product %} project (or test project). Applications are launching, Context menu actions and publishes are showing up in {% include product %} and things are working on all your desired operating system platforms. + +This next section is all about what to do next -- the process of starting to take that default configuration and adjust it to work more like the rest of your studio pipeline. Toolkit is flexible and highly configurable, and we have lots of documentation. But before you get started, to see it all in action, we recommend spending a couple of minutes checking out our various walkthrough videos. These show the {% include product %} Pipeline Toolkit in action, how it works inside applications such as Maya and Nuke. It also goes through basic concepts such as publishing, version control, loading etc. + +[{% include product %} Toolkit Video Collection](https://support.shotgunsoftware.com/hc/en-us/articles/219040678) + +## The anatomy of a Toolkit Project + +When you create a new Toolkit project, you end up with a couple of key locations. + +![](images/Beyond-your-first-project/storage.png) + +- The {% include product %} Desktop and its configuration is installed on your local machine. (If you want, it is possible to relocate both the application and the configuration to a shared storage). +- The data area where the Toolkit project will store textures, files, renders etc. This is normally on a shared storage, because you want to share this data with other users, however there are exceptions to this rule; user work areas can be stored on local (user only) storage, and integrations such as our perforce integration uses an external system to help distribute content. +- The toolkit configuration is a fully self contained bundle, including code, apps, core API etc. This is normally stored on a shared storage so that the configuration is easily accessible by all users. + +Your Project configuration on disk contains a couple of different items. + +![](images/Beyond-your-first-project/project_overview.png) + +In the following sections we'll walk through the various parts of the project configuration folder. + +### Command line access + +As well as using the {% include product %} Desktop, you can also access Toolkit via a terminal or shell. Each project that you create on disk comes with a special `tank` command which gives you command line based access to a lot of functionality, including starting up an API session and launching applications. + +If you navigate to your project configuration, you can see a `tank` and a `tank.bat` command in the root of the configuration. Running these commands without any options will give you a list of all the commands that are supported in your current configuration, including the following useful commands: + +- `tank shell` - Start an interactive python shell with tk api access +- `tank core` - Check if there are any core API updates available for this project +- `tank updates` - Check if any of the apps or engines in this configuration has got any updates available + +For more details on what you can do with the `tank` command, please see the in-depth technical documentation: + +[How to Administer Toolkit](https://support.shotgunsoftware.com/hc/en-us/articles/219033178) + +### Key Configuration Files + +The `config` folder contains a couple of key configuration files. + +![](images/Beyond-your-first-project/config_overview.png) + +Toolkit comes with a folder creation system which tries to automatically create folders on disk to make sure that when you start up an application, all the necessary structure on disk exists and has been prepared on beforehand! The configuration for this can be found in the `schema` folder indicated above. + +Hand in hand with this goes the Toolkit _template system_ which makes it easy to define the various paths to files that you can configure; your publishes, work files, renders etc. This is stored in the `templates.yml` file above. + Together, these two parts of the project configuration makes it possible to adjust the various Apps that toolkit use to write out data to locations on disk which make sense are are understood by your existing pipeline. -Read more about this in our advanced documentation: - -- [Folder Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Creating%20folders%20on%20disk%20with%20Sgtk) -- [Filesystem Templates](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Configuring%20Templates) - -A toolkit configuration is essentially made up of a collection of configured **apps and engines**. This configuration is located in the `env` folder. If the file system configuration files discussed above define _where_ resources should be located on disk, the environment configuration with its apps and engines define _what_ the pipeline is supposed to do. - - -### Core API platform - -Each project configuration uses a collection of Apps and Engines. The configuration for these apps and engines are stored in the `env` folder inside the configuration. Toolkit will then automatically download and manage the various versions of the code needed to run these apps and engines. The code is placed inside the `install`folder. - -The configuration, apps and engines are all running on top of the Toolkit Core platform. For new projects, this is also stored inside the `install` folder. Essentially, a project configuration is fully self contained - all the necessary pieces required to run toolkit are in a single place. This also means that each project is independent and updating one project will not break another. - -Tech Notes: Using a shared Toolkit Core (Click to expand) - -### Further reading - -We also have a more technical document that goes through the high level concepts in the {% include product %} Pipeline Toolkit and explains 'bigger picture' things. Once you have a good grasp of what Toolkit does out of the box, we recommend that you move on to this document to get a deeper undestanding of how Toolkit could be adjusted to suit your particular studio needs. - -[An introduction to the high level concepts in the {% include product %} Toolkit](https://support.shotgunsoftware.com/hc/en-us/articles/219040648) - -## The Toolkit Community - -A part of Toolkit is its community of pipeline engineers and TDs! We are on a mission to create a vibrant, code sharing community where we all can help evolve Toolkit together to become a powerful and flexible pipeline environment. - -If you have any questions, or want to read through existing posts and conversations, please visit our [public forums section](https://support.shotgunsoftware.com/hc/en-us/community/topics/200682428-Pipeline-Toolkit-Common-Questions-and-Answers). - +Read more about this in our advanced documentation: + +- [Folder Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Creating%20folders%20on%20disk%20with%20Sgtk) +- [Filesystem Templates](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Configuring%20Templates) + +A toolkit configuration is essentially made up of a collection of configured **apps and engines**. This configuration is located in the `env` folder. If the file system configuration files discussed above define _where_ resources should be located on disk, the environment configuration with its apps and engines define _what_ the pipeline is supposed to do. + +### Core API platform + +Each project configuration uses a collection of Apps and Engines. The configuration for these apps and engines are stored in the `env` folder inside the configuration. Toolkit will then automatically download and manage the various versions of the code needed to run these apps and engines. The code is placed inside the `install`folder. + +The configuration, apps and engines are all running on top of the Toolkit Core platform. For new projects, this is also stored inside the `install` folder. Essentially, a project configuration is fully self contained - all the necessary pieces required to run toolkit are in a single place. This also means that each project is independent and updating one project will not break another. + +Tech Notes: Using a shared Toolkit Core (Click to expand) + +### Further reading + +We also have a more technical document that goes through the high level concepts in the {% include product %} Pipeline Toolkit and explains 'bigger picture' things. Once you have a good grasp of what Toolkit does out of the box, we recommend that you move on to this document to get a deeper undestanding of how Toolkit could be adjusted to suit your particular studio needs. + +[An introduction to the high level concepts in the {% include product %} Toolkit](https://support.shotgunsoftware.com/hc/en-us/articles/219040648) + +## The Toolkit Community + +A part of Toolkit is its community of pipeline engineers and TDs! We are on a mission to create a vibrant, code sharing community where we all can help evolve Toolkit together to become a powerful and flexible pipeline environment. + +If you have any questions, or want to read through existing posts and conversations, please visit our [public forums section](https://support.shotgunsoftware.com/hc/en-us/community/topics/200682428-Pipeline-Toolkit-Common-Questions-and-Answers). diff --git a/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md index d29fb1d6c..fdb069ad8 100644 --- a/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md +++ b/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md @@ -11,33 +11,33 @@ Here are projects that people in the Toolkit community have been gracious enough ### Engines ----------- - -| Integration | Engine | Information | -|:-----------:|:------:| ----------- | -|tk-katana | **tk-katana** | Project URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
Project Contributor: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
Project Maintainer:
Project Description: A {% include product %} Engine for Foundry's Katana | -|image_alpha.png | **tk-unreal** | Project URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
Project Contributor: [Epic Games](http://epicgames.com/)
Project Maintainer:
Project Description: A {% include product %} Engine for [Unreal Engine](https://www.unrealengine.com/en-US/) | -|Substance Painter logo | **tk-substancepainter** | Project URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for Adobe's Substance Painter | -|Substance Designer logo | **tk-substancedesigner** | Project URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for Adobe's Substance Designer
More info: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944)| -|tk-modo | **tk-modo** | Project URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
Project Contributor: Lutz Pälike and [Walking The Dog](http://www.walkingthedog.be/)
Project Maintainer:
Project Description: A {% include product %} Engine for Foundry's Modo | -|icon_256.png | **tk-clarisse** | Project URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Clarisse iFX](https://www.isotropix.com/products), a fully interactive CG toolset for set-dressing, look development, lighting and rendering. | -|1024px-Natron_icon.svg.png | **tk-natron** | Project URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Natron](https://natrongithub.github.io/), a free and open-source node-based software application. | -|icon_256.png | **tk-harmony** | Project URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Toon Boom Harmony](https://www.toonboom.com/products/harmony), industry leading production animation software.| -|Cinema 4D logo | **tk-cinema** | Project URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
Project Contributor: Mykhailo Datsyk
Project Maintainer: Mykhailo Datsyk
Project Description: A {% include product %} Engine for [Maxon Cinema 4D](https://www.maxon.net/en-us/products/cinema-4d/overview/), a designer-friendly toolset for modeling, animation, and rendering.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437)| -|krita logo | **tk-krita** | Project URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Krita](https://krita.org/en/), a free and open-source raster graphics editor designed primarily for digital painting and 2D animation.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | -|Blender logo | **tk-blender** | Project URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Blender](https://www.blender.org/), a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality and computer games.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/blender-shotgun-toolkit-engine-released/10773)| +--- + +| Integration | Engine | Information | +| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-katana | **tk-katana** | Project URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
Project Contributor: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
Project Maintainer:
Project Description: A {% include product %} Engine for Foundry's Katana | +| image_alpha.png | **tk-unreal** | Project URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
Project Contributor: [Epic Games](http://epicgames.com/)
Project Maintainer:
Project Description: A {% include product %} Engine for [Unreal Engine](https://www.unrealengine.com/en-US/) | +| Substance Painter logo | **tk-substancepainter** | Project URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for Adobe's Substance Painter | +| Substance Designer logo | **tk-substancedesigner** | Project URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for Adobe's Substance Designer
More info: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | +| tk-modo | **tk-modo** | Project URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
Project Contributor: Lutz Pälike and [Walking The Dog](http://www.walkingthedog.be/)
Project Maintainer:
Project Description: A {% include product %} Engine for Foundry's Modo | +| icon_256.png | **tk-clarisse** | Project URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Clarisse iFX](https://www.isotropix.com/products), a fully interactive CG toolset for set-dressing, look development, lighting and rendering. | +| 1024px-Natron_icon.svg.png | **tk-natron** | Project URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Natron](https://natrongithub.github.io/), a free and open-source node-based software application. | +| icon_256.png | **tk-harmony** | Project URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Toon Boom Harmony](https://www.toonboom.com/products/harmony), industry leading production animation software. | +| Cinema 4D logo | **tk-cinema** | Project URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
Project Contributor: Mykhailo Datsyk
Project Maintainer: Mykhailo Datsyk
Project Description: A {% include product %} Engine for [Maxon Cinema 4D](https://www.maxon.net/en-us/products/cinema-4d/overview/), a designer-friendly toolset for modeling, animation, and rendering.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | +| krita logo | **tk-krita** | Project URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Krita](https://krita.org/en/), a free and open-source raster graphics editor designed primarily for digital painting and 2D animation.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | +| Blender logo | **tk-blender** | Project URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
Project Contributor: [Factor64](https://www.factor64.com/)
Project Maintainer: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
Project Description: A {% include product %} Engine for [Blender](https://www.blender.org/), a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality and computer games.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | ### Apps ----------- - -| Integration | Engine | Information | -|:-----------:|:------:| ----------- | -|tk-maya-playblast | **tk-maya-playblast** | Project URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
Project Contributor: [BASE Studio](https://github.com/basestudio)
Project Maintainer:
Project Description: App to publish playblasts from Maya. See [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0)| -|tk-multi-renderfarm | **tk-multi-renderfarm** | Project URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
Project Contributor: [Bait Studio](http://www.baitstudio.com/)
Project Maintainer:
Project Description: App to submit work to the farm. See [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | -|tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | Project URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
Project Contributor:
Project Maintainer: [Dave Sisk](mailto:dave@janimation.com)
Project Description: This app searches the directory structure of a project to find existing published files or file sequences, then registers them in {% include product %} as published files if the published file objects don't already exist. | -|nuke-getShotgunData | **nuke-getShotgunData** | Project URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
Project Contributor: [Ricardo Musch](https://www.ricardo-musch.com/)
Project Maintainer: Ricardo Musch
Project Description: Getting {% include product %} data into nuke text nodes can be a bit of a pain. This node can be used to pipe that info into slates, burn-ins, or anywhere else. | -|sb-logo.png | **sb-shotgun-schema-introspection** | Project URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
Project Contributor: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
Project Maintainer: Scott Ballard
Project Description: This is a simple Toolkit app that allows {% include product %} and Toolkit developers to quickly navigate and inspect the {% include product %} entities, fields and the underlying schema. | -|griffith-logo.png | **foto-multi-namingconvention** | Project URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
Project Contributor: [Griffith Observatory](http://www.griffithobservatory.org/)
Project Maintainer: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
Project Description: This is a simple Toolkit app that allows {% include product %} and Toolkit developers to quickly navigate and inspect the {% include product %} entities, fields and the underlying schema. | -|tk-cpenv | **tk-cpenv** | Project URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
Project Contributor: [Dan Bradham](https://github.com/danbradham)
Project Maintainer: [Dan Bradham](https://github.com/danbradham)
Project Description: This app adds support for [cpenv](https://github.com/cpenv/cpenv), a tool that uses modules to manage software plugins, project dependencies and environment variables.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/rez-support/7350/7) | -|rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | Project URL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
Project Contributor: [Ricardo Musch](https://www.ricardo-musch.com/)
Project Maintainer: Ricardo Musch
Project Description: This app allows you to drop Versions and playlists from {% include product %} into Hiero.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/release-shotgundropper-for-hiero/4183) | +--- + +| Integration | Engine | Information | +| :----------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-maya-playblast | **tk-maya-playblast** | Project URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
Project Contributor: [BASE Studio](https://github.com/basestudio)
Project Maintainer:
Project Description: App to publish playblasts from Maya. See [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) | +| tk-multi-renderfarm | **tk-multi-renderfarm** | Project URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
Project Contributor: [Bait Studio](http://www.baitstudio.com/)
Project Maintainer:
Project Description: App to submit work to the farm. See [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | +| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | Project URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
Project Contributor:
Project Maintainer: [Dave Sisk](mailto:dave@janimation.com)
Project Description: This app searches the directory structure of a project to find existing published files or file sequences, then registers them in {% include product %} as published files if the published file objects don't already exist. | +| nuke-getShotgunData | **nuke-getShotgunData** | Project URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
Project Contributor: [Ricardo Musch](https://www.ricardo-musch.com/)
Project Maintainer: Ricardo Musch
Project Description: Getting {% include product %} data into nuke text nodes can be a bit of a pain. This node can be used to pipe that info into slates, burn-ins, or anywhere else. | +| sb-logo.png | **sb-shotgun-schema-introspection** | Project URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
Project Contributor: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
Project Maintainer: Scott Ballard
Project Description: This is a simple Toolkit app that allows {% include product %} and Toolkit developers to quickly navigate and inspect the {% include product %} entities, fields and the underlying schema. | +| griffith-logo.png | **foto-multi-namingconvention** | Project URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
Project Contributor: [Griffith Observatory](http://www.griffithobservatory.org/)
Project Maintainer: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
Project Description: This is a simple Toolkit app that allows {% include product %} and Toolkit developers to quickly navigate and inspect the {% include product %} entities, fields and the underlying schema. | +| tk-cpenv | **tk-cpenv** | Project URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
Project Contributor: [Dan Bradham](https://github.com/danbradham)
Project Maintainer: [Dan Bradham](https://github.com/danbradham)
Project Description: This app adds support for [cpenv](https://github.com/cpenv/cpenv), a tool that uses modules to manage software plugins, project dependencies and environment variables.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/rez-support/7350/7) | +| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | Project URL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
Project Contributor: [Ricardo Musch](https://www.ricardo-musch.com/)
Project Maintainer: Ricardo Musch
Project Description: This app allows you to drop Versions and playlists from {% include product %} into Hiero.
More Information: [{% include product %} Community Forums](https://community.shotgridsoftware.com/t/release-shotgundropper-for-hiero/4183) | diff --git a/docs/en/guides/pipeline-integrations/administration/config-staging-and-rollout.md b/docs/en/guides/pipeline-integrations/administration/config-staging-and-rollout.md index 63f6cfe50..f8b5c11c9 100644 --- a/docs/en/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ b/docs/en/guides/pipeline-integrations/administration/config-staging-and-rollout.md @@ -7,9 +7,9 @@ lang: en # Configuration Staging and Rollout -This document explains best practices for how to safely roll out changes to your production pipeline. It explains how you can create a staging sandbox, which is a copy of your production configuration, update this sandbox and do testing and then finally push your changes to the production config. +This document explains best practices for how to safely roll out changes to your production pipeline. It explains how you can create a staging sandbox, which is a copy of your production configuration, update this sandbox and do testing and then finally push your changes to the production config. -_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For the default setup, please see [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ +_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For the default setup, please see [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ # Introduction @@ -17,11 +17,11 @@ This document outlines how to manage your Toolkit configuration. Toolkit contain In this document, we'll describe how to: -- Safely upgrade the Toolkit Core API. -- Upgrading your Apps and Engines. -- Various ways to manage your config across multiple projects. -- Go through Toolkit's _Clone_ and _Push_ functionality that allows you to safely test upgrades and changes without disrupting production. -- How to work with `git` source control and Toolkit. +- Safely upgrade the Toolkit Core API. +- Upgrading your Apps and Engines. +- Various ways to manage your config across multiple projects. +- Go through Toolkit's _Clone_ and _Push_ functionality that allows you to safely test upgrades and changes without disrupting production. +- How to work with `git` source control and Toolkit. # Basics of configuration management @@ -29,13 +29,13 @@ Each Toolkit Project has one or more configurations associated with it. The conf If you are working with a large number of projects, this may become cumbersome and we offer several ways to make this process easy, safe and streamlined. -In {% include product %}, each project has a number of **Pipeline Configurations**. When a project is first set up with Toolkit, a Pipeline Configuration called `primary` is created. The pipeline configuration entity in {% include product %} points at a location on disk where the Toolkit configuration can be found. +In {% include product %}, each project has a number of **Pipeline Configurations**. When a project is first set up with Toolkit, a Pipeline Configuration called `primary` is created. The pipeline configuration entity in {% include product %} points at a location on disk where the Toolkit configuration can be found. During the course of a project, you often need to make changes to the configuration. This can be tweaks to the configuration, or perhaps you need to add additional apps or engines. We also release new app versions frequently and we recommend that you use the latest versions if possible. -While it is possible to upgrade your _primary_ project configuration straight away, this can be risky; since this configuration is used by everybody on the project, introducing a problem will affect everyone. A better approach is to create an isolated version of the configuration that a select group of people have access to. In this safe environment, upgrades, configuration changes and development can happen without impacting the rest of the production. Once the changes have been tested, they can be safely and confidently pushed to the primary configuration. +While it is possible to upgrade your _primary_ project configuration straight away, this can be risky; since this configuration is used by everybody on the project, introducing a problem will affect everyone. A better approach is to create an isolated version of the configuration that a select group of people have access to. In this safe environment, upgrades, configuration changes and development can happen without impacting the rest of the production. Once the changes have been tested, they can be safely and confidently pushed to the primary configuration. -This process is called _cloning_ and means that you make a personal copy of the primary configuration that only you (and other people you invite) have access to the clone. In here you can make changes safely and once you are happy you can push these changes back to the primary configuration. +This process is called _cloning_ and means that you make a personal copy of the primary configuration that only you (and other people you invite) have access to the clone. In here you can make changes safely and once you are happy you can push these changes back to the primary configuration. ## Cloning your Configuration @@ -43,19 +43,19 @@ Once you have set up Toolkit and configured a project, the setup will look somet ![](images/config-staging-and-rollout/config_overview.png) -There is a _studio_ install which holds the Core API for all projects. This _studio_ location also contains a `tank` command and a Toolkit Python API you can use to access any of your Toolkit-enabled {% include product %} projects. +There is a _studio_ install which holds the Core API for all projects. This _studio_ location also contains a `tank` command and a Toolkit Python API you can use to access any of your Toolkit-enabled {% include product %} projects. -In addition to this, there is a configuration folder for each project. This folder contains all the settings for that project. It also contains a `tank` command (and a Python API) which specifically operates on this configuration. When you are using this `tank` command or API code, you can strictly only operate on this configuration. +In addition to this, there is a configuration folder for each project. This folder contains all the settings for that project. It also contains a `tank` command (and a Python API) which specifically operates on this configuration. When you are using this `tank` command or API code, you can strictly only operate on this configuration. -When a new project is set up, a _Primary_ configuration is created. This is the configuration that Toolkit will use by default for the project. In addition to the primary configuration, you can create additional configurations for a project. These can exist in parallel and are useful if you for example want to privately test some modifications, upgrade some apps or do development without impacting the entire team. Additional configurations are created by a process called _cloning_, a process where a configuration is copied to a new location. +When a new project is set up, a _Primary_ configuration is created. This is the configuration that Toolkit will use by default for the project. In addition to the primary configuration, you can create additional configurations for a project. These can exist in parallel and are useful if you for example want to privately test some modifications, upgrade some apps or do development without impacting the entire team. Additional configurations are created by a process called _cloning_, a process where a configuration is copied to a new location. Once you have cloned your configuration, your setup may look something like this: ![](images/config-staging-and-rollout/pc_overview.png) -In addition to the studio level `tank` command and your primary project configuration `tank` command, you now have a new pipeline configuration which has its own `tank` command. If you run this `tank` command, you will operate exclusively on the configuration located in the staging sandbox. So if you want to test out some new things in Maya, you can simply navigate to your cloned sandbox, run `./tank Shot xyz launch_maya` and the {% include product %} menu which appears in Maya will reflect the configuration inside of your staging sandbox rather than your Primary configuration. +In addition to the studio level `tank` command and your primary project configuration `tank` command, you now have a new pipeline configuration which has its own `tank` command. If you run this `tank` command, you will operate exclusively on the configuration located in the staging sandbox. So if you want to test out some new things in Maya, you can simply navigate to your cloned sandbox, run `./tank Shot xyz launch_maya` and the {% include product %} menu which appears in Maya will reflect the configuration inside of your staging sandbox rather than your Primary configuration. -Note that the studio level `tank` command always uses the Primary config, so the only way to access a cloned configuration is by navigating to its location and using the `tank` command that is located in that folder. In {% include product %}, you can assign a specific set of users to a pipeline configuration entry, and any users that are associated with a configuration will now see menu entries appear in addition to those coming from the Primary config: +Note that the studio level `tank` command always uses the Primary config, so the only way to access a cloned configuration is by navigating to its location and using the `tank` command that is located in that folder. In {% include product %}, you can assign a specific set of users to a pipeline configuration entry, and any users that are associated with a configuration will now see menu entries appear in addition to those coming from the Primary config: ![](images/config-staging-and-rollout/pc_shotgun.png) @@ -73,15 +73,16 @@ When you press ok, Toolkit will copy the configuration across and set up the clo ### Pushing changes from your staging sandbox to Primary -Once you have applied the relevant updates and run any testing that you deem is necessary, you can push back your changes into the production configuration by executing the `tank push_configuration` command. This will transfer all the changes you have made in your staging sandbox to your Primary configuration. +Once you have applied the relevant updates and run any testing that you deem is necessary, you can push back your changes into the production configuration by executing the `tank push_configuration` command. This will transfer all the changes you have made in your staging sandbox to your Primary configuration. Please note that your current configuration is moved to a backup location when you run the `push_configuration` command. If you accidentally push or if there is a problem with the push, you can roll back simply by taking the content in the backup folder and copying into the config folder. -By default, this command will copy a collection of files into the `config` folder in the target pipeline configuration. If you are using unix and would like a more atomic update, you can add a `--symlink` flag to the `push_configuration` command. This will turn the `config` folder in the target pipeline configuration into a symbolic link which makes it easier to upgrade without running the risk of having configuration mismatches in currently running sessions. +By default, this command will copy a collection of files into the `config` folder in the target pipeline configuration. If you are using unix and would like a more atomic update, you can add a `--symlink` flag to the `push_configuration` command. This will turn the `config` folder in the target pipeline configuration into a symbolic link which makes it easier to upgrade without running the risk of having configuration mismatches in currently running sessions. ### Refreshing an old cloned configuration -If you have a old dev or staging sandbox set up, but it is out of date and you need to sync its contents with the latest production configuration, you do this by running the `push_configuration` command for the primary configuration: +If you have a old dev or staging sandbox set up, but it is out of date and you need to sync its contents with the latest production configuration, you do this by running the `push_configuration` command for the primary configuration: + ```shell tank push_configuration @@ -112,7 +113,8 @@ Push Complete! Your old configuration has been backed up into the following folder: /my/staging/sandbox/config.bak.20140108_093218 ``` -Note how we are pushing from the primary project config to the staging sandbox. We do this by running the _primary_ configuration's `tank` command. If you have multiple sandboxes set up, it is also possible to push data between those. + +Note how we are pushing from the primary project config to the staging sandbox. We do this by running the _primary_ configuration's `tank` command. If you have multiple sandboxes set up, it is also possible to push data between those. ### Deleting a cloned configuration @@ -120,7 +122,7 @@ If you want to delete a cloned configuration, simply delete the entry in {% incl ## Getting latest apps and engines -Inside your staging sandbox (or in any other config), you can run the `tank updates` command in order to check if there are any app updates available. This command has got rudimentary filters that you can use if you only want to check certain areas of your configuration: +Inside your staging sandbox (or in any other config), you can run the `tank updates` command in order to check if there are any app updates available. This command has got rudimentary filters that you can use if you only want to check certain areas of your configuration: ```shell ---------------------------------------------------------------------- @@ -161,13 +163,15 @@ Make sure the loader app is up to date everywhere: Make sure the loader app is up to date in maya: > tank updates ALL tk-maya tk-multi-loader ``` + ## Upgrading the Toolkit Core API This section explains how you can use a clone staging sandbox configuration to safely upgrade the Toolkit Core API. If you haven't got a staging sandbox prepared yet, just follow the instructions in the previous section! -If your staging sandbox was cloned from a pipeline configuration using a [shared studio Core API](https://support.shotgunsoftware.com/hc/en-us/articles/219040448), you'll want to update your sandbox to use it's own unique Core API code. This is called "localizing" the core and can be done by navigating to your staging sandbox and running `tank localize`. This command will copy the Core API from the studio install, into your sandbox, making it possible to run and test a different version of the Core API later on. +If your staging sandbox was cloned from a pipeline configuration using a [shared studio Core API](https://support.shotgunsoftware.com/hc/en-us/articles/219040448), you'll want to update your sandbox to use it's own unique Core API code. This is called "localizing" the core and can be done by navigating to your staging sandbox and running `tank localize`. This command will copy the Core API from the studio install, into your sandbox, making it possible to run and test a different version of the Core API later on. _The default behavior in Toolkit is to localize the core by default. If you haven't explicitly created a shared studio core previously, it's safe to assume your core is localized already._ + ```shell cd /my/staging/sandbox ./tank localize @@ -195,20 +199,23 @@ Localizing Engines: /mnt/software/shotgun/studio/install/engines -> /my/staging/ Localizing Frameworks: /mnt/software/shotgun/studio/install/frameworks -> /my/staging/sandbox/install/frameworks The Core API was successfully localized. -Localize complete! This pipeline configuration now has an independent API. -If you upgrade the API for this configuration (using the 'tank core' command), +Localize complete! This pipeline configuration now has an independent API. +If you upgrade the API for this configuration (using the 'tank core' command), no other configurations or projects will be affected. ``` + Now we are no longer sharing the Core API with the studio location but are running our own, independent version. We can now go ahead and perform a standard Core API upgrade, again using our local tank command: + ```shell cd /my/staging/sandbox ./tank core ``` + Toolkit will check if there is a new version available and offer you to download and install it. Once you have updated the Core API, make sure to test the installation. Launch some apps, either using the `tank` command in the sandbox or using the special menu entries in {% include product %}. Do a basic run-through of your pipeline and perform the tests you deem necessary. -Finally, once you are happy, it is time to go ahead and update the studio version of the Core API. Note that in the typical Toolkit setup, the Core API is shared between all projects, so by running the `tank core` command from your studio location `tank` command, you are updating the Core API for all projects. +Finally, once you are happy, it is time to go ahead and update the studio version of the Core API. Note that in the typical Toolkit setup, the Core API is shared between all projects, so by running the `tank core` command from your studio location `tank` command, you are updating the Core API for all projects. # Managing the Project Lifecycle @@ -216,9 +223,9 @@ Each Toolkit project contains an independent configuration which holds all the s Depending on the needs of your studio, different levels of complexity may be relevant. Toolkit offers three different approaches and we'll explain each one of them in detail: -- The most straightforward approach is to copy the config from the previous project when you set up a new project. This is good if you are a small studio and don't have a large number of projects. -- If you have a higher project turnover and if you run more than one project in parallel, the next level of integration that we recommend involves `git` version control. Toolkit has native support for git and once you are up and running with a git-based workflow you have a single configuration for your studio and are tracking all the changes you are making to that configuration over time. Each project can safely pull in configuration changes as and when they need to. -- If you are running a large-scale facility, it may be worth considering a setup where a single configuration is directly connected to all the currently-active projects in the studio. A single change to this configuration will have an immediate impact on all the projects. +- The most straightforward approach is to copy the config from the previous project when you set up a new project. This is good if you are a small studio and don't have a large number of projects. +- If you have a higher project turnover and if you run more than one project in parallel, the next level of integration that we recommend involves `git` version control. Toolkit has native support for git and once you are up and running with a git-based workflow you have a single configuration for your studio and are tracking all the changes you are making to that configuration over time. Each project can safely pull in configuration changes as and when they need to. +- If you are running a large-scale facility, it may be worth considering a setup where a single configuration is directly connected to all the currently-active projects in the studio. A single change to this configuration will have an immediate impact on all the projects. In the following sections we'll describe the different approaches in detail. @@ -230,9 +237,10 @@ When your second project comes around, you don't want to start with the default ![](images/config-staging-and-rollout/copy_config.png) -This is a very simple way to gradually evolve the configuration over time. Changes and improvements will flow from project to project in an ad hoc fashion. The first time you run the `setup_project` command, just hit enter when the setup process prompts for the configuration to use. This will download and install the default configuration. +This is a very simple way to gradually evolve the configuration over time. Changes and improvements will flow from project to project in an ad hoc fashion. The first time you run the `setup_project` command, just hit enter when the setup process prompts for the configuration to use. This will download and install the default configuration. For your second project, you will be presented with a list of paths to configurations for previous projects. Choose one of these paths and enter that when the setup process prompts for a config. This will copy that configuration to the new project: + ``` Welcome to the {% include product %} Pipeline Toolkit! For documentation, see https://support.shotgunsoftware.com @@ -272,9 +280,10 @@ clone this repository and base the config on its content. [tk-config-default]: /mnt/software/shotgun/first_project/config ``` + ## A studio configuration in git source control -Limitations with the first approach include the fact that the projects are not connected to each other. If you have 10 projects and you all need to update them because a critical bug fix has been released, you would have to manually go through each project and run the `tank updates` command. +Limitations with the first approach include the fact that the projects are not connected to each other. If you have 10 projects and you all need to update them because a critical bug fix has been released, you would have to manually go through each project and run the `tank updates` command. One way to resolve this is to create a master configuration and store it in git source control. Whenever you create a new project, simply type in the path to this git repository in the setup project dialog and Toolkit will clone it for you. Now all the projects are connected to the same "studio master" config. If you have made some good changes to a project configuration, you can commit them and push them to the studio master. Other projects can then easily pull these down. You also retain a history of all your changes via git. @@ -282,25 +291,30 @@ One way to resolve this is to create a master configuration and store it in git ![](images/config-staging-and-rollout/git_config.png) -The basic idea is that you set up a git repository which holds the git configuration. Whenever you run `tank setup_project`, you specify the git url to this repository (for example `username@someserver.com:/studio_config.git`) and the setup process will clone the repository so that the new project becomes a repository connected to the main studio repository. Once they are connected you can push and pull changes, and work in branches for finer granularity. +The basic idea is that you set up a git repository which holds the git configuration. Whenever you run `tank setup_project`, you specify the git url to this repository (for example `username@someserver.com:/studio_config.git`) and the setup process will clone the repository so that the new project becomes a repository connected to the main studio repository. Once they are connected you can push and pull changes, and work in branches for finer granularity. ### Setting up your studio config repository Before you do anything else, you need to create a studio config repository. This section shows how to take an existing toolkit configuration and creating a git repository from that. -First, you need to go to your git server and create a repository. This process may be different depending on your setup. If you are using something like GitHub, you would start a web browser and navigate to github.com. If you have access to the server you may do something like `git init --bare`. In our example, we assume that the git repository you create is called `username@someserver.com:/studio_config.git`. +First, you need to go to your git server and create a repository. This process may be different depending on your setup. If you are using something like GitHub, you would start a web browser and navigate to github.com. If you have access to the server you may do something like `git init --bare`. In our example, we assume that the git repository you create is called `username@someserver.com:/studio_config.git`. + +Now move the `config` folder of the project you want to use to seed your repo with into a `config.bak` location: -Now move the `config` folder of the project you want to use to seed your repo with into a `config.bak` location: ```shell cd /project_configs/studio_config mv config config.bak ``` -Clone your initialized git repository into the `config` location of your project that you want to base the studio config on. Once you have run the clone command, you will have an empty `config folder` which is also a git repository: + +Clone your initialized git repository into the `config` location of your project that you want to base the studio config on. Once you have run the clone command, you will have an empty `config folder` which is also a git repository: + ```shell cd /project_configs/studio_config git clone username@someserver.com:/studio_config.git config ``` -Copy all the files from your `config.bak` location back into the `config` folder. Once done, you can delete the empty `config.bak` folder. Your config files are now inside the git repository and we need to add them, commit them and push them to the server. But before doing that, we need to do some house keeping to handle some Toolkit system files correctly. In the `config` folder, create a `.gitignore` file and add the following lines to it: + +Copy all the files from your `config.bak` location back into the `config` folder. Once done, you can delete the empty `config.bak` folder. Your config files are now inside the git repository and we need to add them, commit them and push them to the server. But before doing that, we need to do some house keeping to handle some Toolkit system files correctly. In the `config` folder, create a `.gitignore` file and add the following lines to it: + ```shell install_location.yml pipeline_configuration.yml @@ -313,6 +327,7 @@ git add --all git commit -am "initial commit of our studio config!" git push ``` + ### Creating a new project from git When you create a new project, simply specify a valid git url when the setup process prompts you to enter the path to the configuration to use. Following our example above, we would enter `username@someserver.com:/studio_config.git`. As part of the project setup process, Toolkit will clone this repository into the `config` folder of your new project configuration. This means that you can later on go into this config folder and run git commands. Note that any cloned pipeline configurations will also clone the git repository and will work seamlessly. @@ -323,7 +338,7 @@ Whenever you have made changes to your primary config, you can simply go to your ### Updating a project to have the latest version -Alternatively, if you have updated your studio level config with some changes and you want to pull those down to your project, just go to your `config` folder and run a `git pull`. **Important**: Note that once you have done this, make sure you run a `tank cache_apps` to ensure that all the app versions that your changed config requires are present in the system! +Alternatively, if you have updated your studio level config with some changes and you want to pull those down to your project, just go to your `config` folder and run a `git pull`. **Important**: Note that once you have done this, make sure you run a `tank cache_apps` to ensure that all the app versions that your changed config requires are present in the system! ### Advanced git usage: Branches @@ -337,11 +352,12 @@ Since Toolkit keeps a list of all the different configurations for a {% include The git based approach above handles independent project configurations which are connected via git: Updates are not automatically reflected across projects but will have to be pulled and pushed. -For a fully centralized configuration, where the configuration truly resides in one place and where a single change immediately reflects a group of projects, you will need to make use of the `@include` functionality in the Toolkit configuration. This makes it possible to create references so that each project configuration points at a central location where the actual configuration is being kept. +For a fully centralized configuration, where the configuration truly resides in one place and where a single change immediately reflects a group of projects, you will need to make use of the `@include` functionality in the Toolkit configuration. This makes it possible to create references so that each project configuration points at a central location where the actual configuration is being kept. ![](images/config-staging-and-rollout/include_config.png) -The `@include` syntax allows you to chain together multiple files. For example, if you have a file `/tmp/stuff.yml`, which contains the following content: +The `@include` syntax allows you to chain together multiple files. For example, if you have a file `/tmp/stuff.yml`, which contains the following content: + ``` # paths to maya maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' @@ -369,7 +385,9 @@ file_manager: template_work: null template_work_area: null ``` + As you can see above, you can create include definitions at several different levels - in the case above, we have an app definition and three strings values. These can then be referenced from an environment file: + ``` includes: ['/tmp/stuff.yml'] @@ -378,13 +396,13 @@ engines: tk-maya: # First all our app definitions - apps: + apps: # normally, we would have the entire set of configuration parameters at this point. # because we are using an include, we can reference an entire sub-section of configuration - # using the @ keyword: + # using the @ keyword: tk-multi-workfiles: '@file_manager' - # alternatively, for simple values, we can use them as parameter values for apps: + # alternatively, for simple values, we can use them as parameter values for apps: tk-maya-launcher: mac_path: '@maya_mac' linux_path: '@maya_linux' @@ -398,9 +416,11 @@ engines: template_project: null use_sgtk_as_menu_name: false ``` + Furthermore, you can read in several include files, one after the other. If the same include definition exists in two different files, the most recently read file will take precedence. We could extend our example environment above: + ``` -includes: +includes: # first include a global config file which contains all the studio level app definitions - '/studio/configurations/studio_apps.yml' @@ -412,20 +432,22 @@ includes: engines: - tk-maya: - apps: + tk-maya: + apps: tk-multi-workfiles: '@file_manager' location: {name: tk-maya, type: app_store, version: v0.4.1} use_sgtk_as_menu_name: false ``` + With the approach just shown, it is possible to have a set of studio defaults which can be overridden by project type defaults which in turn can be overridden by specific project settings. You can either do it on the app level, as shown in the example above, or an engine level, as shown in the next section. ### Best practices when setting up a global config There are several ways to set up a global configuration. Our recommended best practices approach for setting this up breaks the configuration down on a per engine basis. Each environment file is completely empty and references engines (and apps) defined in separate files. This makes it easy to tweak and reconfigure things - one engine at a time. -Each of these include files are in a standard form, named after the engine. For example, if you have a Maya engine, an include file would contain just the engine and its apps. Its top level entry would simply be named `maya`: +Each of these include files are in a standard form, named after the engine. For example, if you have a Maya engine, an include file would contain just the engine and its apps. Its top level entry would simply be named `maya`: + ```yaml maya: apps: @@ -468,31 +490,34 @@ frameworks: tk-framework-shotgunutils_v1.x.x: location: {name: tk-framework-shotgunutils, type: app_store, version: v1.0.8} ``` -In your studio, you most likely don't have a single maya setup, but may have a number of different ones for different departments and types of things. We recommend that you set up a maya include file for each of these ones, organized in a file hierarchy. Each of these files has a top level `maya` entry just like the file above. + +In your studio, you most likely don't have a single maya setup, but may have a number of different ones for different departments and types of things. We recommend that you set up a maya include file for each of these ones, organized in a file hierarchy. Each of these files has a top level `maya` entry just like the file above. ![](images/config-staging-and-rollout/maya_include.png) Now each project will contain a number of environments. Each of these environment files will be a list of engine includes, linking that specific environment to a collection of engine and app setups. You can set up one (or several) default project configurations for your studio, all containing includes like this, thereby ensuring that the actual app and engine payload is completely contained within the include files and therefore global. If you make a change to your global include files, all projects will be affected. With this setup, your environment files will then be on the following form: + ```yaml -includes: - - '/studio/configurations/maya/asset.yml' - - '/studio/configurations/nuke/asset.yml' - - '/studio/configurations/houdini/generic.yml' +includes: + - "/studio/configurations/maya/asset.yml" + - "/studio/configurations/nuke/asset.yml" + - "/studio/configurations/houdini/generic.yml" engines: - tk-maya: '@maya' - tk-nuke: '@nuke' - tk-houdini: '@houdini' + tk-maya: "@maya" + tk-nuke: "@nuke" + tk-houdini: "@houdini" # we don't need any frameworks here because there are no apps or engines defined frameworks: null ``` -If you wanted to break out of the above setup and start defining some project specific entries, you would simply replace `@maya` with a series of app and engine definitions in the environment file itself. + +If you wanted to break out of the above setup and start defining some project specific entries, you would simply replace `@maya` with a series of app and engine definitions in the environment file itself. ### Managing a global configuration -Managing a global configuration is more involved than managing a normal one. Because you have effectively combined a number of projects into a single file structure, running the `tank updates` command from any project and choosing to update an app version will affect all other projects, so proceed with some caution here. +Managing a global configuration is more involved than managing a normal one. Because you have effectively combined a number of projects into a single file structure, running the `tank updates` command from any project and choosing to update an app version will affect all other projects, so proceed with some caution here. Furthermore, the standard clone workflow won't work out of the box, since what you are cloning is the project configuration, which now only contains includes. -For safe testing and maintenance, we recommend storing the global configuration in source control (e.g. `git`) and do updates in a separate test area with a special test project. Once the quality control passes, commit the changes and pull them down into the actual global configuration. +For safe testing and maintenance, we recommend storing the global configuration in source control (e.g. `git`) and do updates in a separate test area with a special test project. Once the quality control passes, commit the changes and pull them down into the actual global configuration. diff --git a/docs/en/guides/pipeline-integrations/administration/file-system-config-reference.md b/docs/en/guides/pipeline-integrations/administration/file-system-config-reference.md index e6de96d8d..d8c5c753d 100644 --- a/docs/en/guides/pipeline-integrations/administration/file-system-config-reference.md +++ b/docs/en/guides/pipeline-integrations/administration/file-system-config-reference.md @@ -8,43 +8,40 @@ lang: en # File System Configuration Reference This document is a complete reference of the file system centric configurations in the {% include product %} Pipeline Toolkit. It outlines how the template system works and which options are available. It also shows all the different parameters you can include in the folder creation configuration. -_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For details, see [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ +_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For details, see [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ # Introduction This document explains how to configure the part of Toolkit's configuration related to your file system, including examples. Toolkit handles a lot of files and directories, and you can leverage Toolkit's configuration as a way of expressing how paths are put together and what they mean. The file system is typically accessed in two different and completely separate ways: -1. **Folder Creation:** After an object has been created in {% include product %}, folders on disk need to be created before work can begin. This can be as simple as having a folder on disk representing the Shot, or can be more complex-for example setting up a user specific work sandbox so that each user that works on the shot will work in a separate area on disk. - - - Toolkit automates folder creation when you launch an application (for example you launch Maya for shot BECH_0010), Toolkit ensures that folders exist prior to launching Maya. If folders do not exist, they are created on the fly. Folders can also be created using API methods, using the [tank command in the shell](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#Useful%20tank%20commands) and via the [Create Folders menu in ShotGrid](https://support.shotgunsoftware.com/hc/en-us/articles/219040688-Beyond-your-first-project#Shotgun%20Integration). A special set of configuration files drives this folder creation process and this is outlined in [Part 1](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%201%20-%20Folder%20Creation%20Syntax) of the document below. -2. **Opening and Saving Work:** While working, files need to be opened from and saved into standardized locations on disk. These file locations typically exist within the folder structure created prior to work beginning. - - - Once a folder structure has been established, we can use that structure to identify key locations on disk. These locations are called [Templates](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates). For example, you can define a template called `maya_shot_publish` to refer to published Maya files for Shots. [Toolkit apps](https://support.shotgunsoftware.com/hc/en-us/articles/219039798) will then use this template-a publish app may use it to control where it should be writing its files, while a [Workfiles App](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files) may use the template to understand where to open files from. Inside Toolkit's environment configuration, you can control which templates each app uses. All the key file locations used by Toolkit are therefore defined in a single template file and are easy to overview. +1. **Folder Creation:** After an object has been created in {% include product %}, folders on disk need to be created before work can begin. This can be as simple as having a folder on disk representing the Shot, or can be more complex-for example setting up a user specific work sandbox so that each user that works on the shot will work in a separate area on disk. + + - Toolkit automates folder creation when you launch an application (for example you launch Maya for shot BECH_0010), Toolkit ensures that folders exist prior to launching Maya. If folders do not exist, they are created on the fly. Folders can also be created using API methods, using the [tank command in the shell](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#Useful%20tank%20commands) and via the [Create Folders menu in ShotGrid](https://support.shotgunsoftware.com/hc/en-us/articles/219040688-Beyond-your-first-project#Shotgun%20Integration). A special set of configuration files drives this folder creation process and this is outlined in [Part 1](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%201%20-%20Folder%20Creation%20Syntax) of the document below. + +2. **Opening and Saving Work:** While working, files need to be opened from and saved into standardized locations on disk. These file locations typically exist within the folder structure created prior to work beginning. + + - Once a folder structure has been established, we can use that structure to identify key locations on disk. These locations are called [Templates](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates). For example, you can define a template called `maya_shot_publish` to refer to published Maya files for Shots. [Toolkit apps](https://support.shotgunsoftware.com/hc/en-us/articles/219039798) will then use this template-a publish app may use it to control where it should be writing its files, while a [Workfiles App](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files) may use the template to understand where to open files from. Inside Toolkit's environment configuration, you can control which templates each app uses. All the key file locations used by Toolkit are therefore defined in a single template file and are easy to overview. # Part 1 - Folder Creation Syntax -The folder configuration maps entities in {% include product %} to locations on disk. Rather than using a single configuration file, the configuration is in the form of a "mini file system" which acts as a template for each unit that is configured-this is called the **schema configuration**. Folders and files will be copied across from this "mini file system" to their target location when Toolkit's folder creation executes. It is possible to create dynamic behavior. For example, a folder can represent a Shot in {% include product %}, and you can control the naming of that folder. More specifically, you can pull the name of that folder from several {% include product %} fields and then perform character conversions before the folder is created. +The folder configuration maps entities in {% include product %} to locations on disk. Rather than using a single configuration file, the configuration is in the form of a "mini file system" which acts as a template for each unit that is configured-this is called the **schema configuration**. Folders and files will be copied across from this "mini file system" to their target location when Toolkit's folder creation executes. It is possible to create dynamic behavior. For example, a folder can represent a Shot in {% include product %}, and you can control the naming of that folder. More specifically, you can pull the name of that folder from several {% include product %} fields and then perform character conversions before the folder is created. ![configuration](./images/file-system-config-reference/core_config.png) -The above image shows a schema configuration. When you run the Toolkit folder creation, a connection is established between an entity in {% include product %} and a folder on disk. Toolkit uses this folder schema configuration to generate a series of folders on disk and each of these folders are registered as a [`Filesystem Location`](https://developer.shotgridsoftware.com/cbbf99a4/) entity in {% include product %}. One way to think about this is that {% include product %} data (e.g., Shot and Asset names) and the configuration is "baked" out into actual folders on disk and in {% include product %}. Configurations always start with a folder named "project". This will always represent the connected project in {% include product %} and will be replaced with the Toolkit name for the project. Below this level are static folders. The folder creator will automatically create the **sequences**folder, for example. +The above image shows a schema configuration. When you run the Toolkit folder creation, a connection is established between an entity in {% include product %} and a folder on disk. Toolkit uses this folder schema configuration to generate a series of folders on disk and each of these folders are registered as a [`Filesystem Location`](https://developer.shotgridsoftware.com/cbbf99a4/) entity in {% include product %}. One way to think about this is that {% include product %} data (e.g., Shot and Asset names) and the configuration is "baked" out into actual folders on disk and in {% include product %}. Configurations always start with a folder named "project". This will always represent the connected project in {% include product %} and will be replaced with the Toolkit name for the project. Below this level are static folders. The folder creator will automatically create the **sequences**folder, for example. -Digging further inside the sequences folder, there is a **sequence** folder and a **sequence.yml** file. Whenever Toolkit detects a YAML file with the same name as a folder, it will read the contents of the YAML file and add the desired dynamic behavior. In this case, the **sequence.yml** file contains the structure underneath the project folder, which consists of three types of items: +Digging further inside the sequences folder, there is a **sequence** folder and a **sequence.yml** file. Whenever Toolkit detects a YAML file with the same name as a folder, it will read the contents of the YAML file and add the desired dynamic behavior. In this case, the **sequence.yml** file contains the structure underneath the project folder, which consists of three types of items: -1. **Normal folders and files:** these are simply copied across to the target location. -2. **A folder with a YAML file** (having the same name as the folder): this represents dynamic content. For example, there may be a **shot** and **shot.yml** and when folders are created, this **shot** folder is the template used to generate a number of folders-one folder per shot. -3. **A file named name.symlink.yml** which will generate a symbolic link as folders are being processed. [Symbolic links are covered later in this document](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Symbolic%20Links). +1. **Normal folders and files:** these are simply copied across to the target location. +2. **A folder with a YAML file** (having the same name as the folder): this represents dynamic content. For example, there may be a **shot** and **shot.yml** and when folders are created, this **shot** folder is the template used to generate a number of folders-one folder per shot. +3. **A file named name.symlink.yml** which will generate a symbolic link as folders are being processed. [Symbolic links are covered later in this document](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Symbolic%20Links). The dynamic configuration setup expressed in the YAML files currently supports the following modes: -- **[{% include product %} Query folders:](#shotgun-query-folders)** Dynamic folder names based on a {% include product %} Database Query. For example, this mode can be used to create a folder for every Shot in a project. - -- **[{% include product %} List Field folders:](#shotgun-list-field-folders)** Dynamic folder names based on a {% include product %} List Field. For example, this mode can be used to create a folder for every value in the {% include product %} List field "Asset Type", found on the Asset Entity in {% include product %}. - -- **[Deferred folders:](#workspaces-and-deferred-folder-creation)** Only executed when a second folder creation pass is requested via the create folders method of the Toolkit API, usually when an application (such as Maya) is launched. Typically, this method is executed by Toolkit's various application launchers just prior to starting up an application. - -- **[Current User Folders:](#current-user-folder)** A special folder, which represents the current user. - +- **[{% include product %} Query folders:](#shotgun-query-folders)** Dynamic folder names based on a {% include product %} Database Query. For example, this mode can be used to create a folder for every Shot in a project. +- **[{% include product %} List Field folders:](#shotgun-list-field-folders)** Dynamic folder names based on a {% include product %} List Field. For example, this mode can be used to create a folder for every value in the {% include product %} List field "Asset Type", found on the Asset Entity in {% include product %}. +- **[Deferred folders:](#workspaces-and-deferred-folder-creation)** Only executed when a second folder creation pass is requested via the create folders method of the Toolkit API, usually when an application (such as Maya) is launched. Typically, this method is executed by Toolkit's various application launchers just prior to starting up an application. +- **[Current User Folders:](#current-user-folder)** A special folder, which represents the current user. Let's dive deeper into these modes. @@ -55,15 +52,15 @@ For a dynamic folder which corresponds to a {% include product %} query, use the # the type of dynamic content type: shotgun_entity - + # the {% include product %} entity type to connect to entity_type: Asset - + # the {% include product %} field to use for the folder name name: code - + # {% include product %} filters to apply when getting the list of items @@ -74,17 +71,17 @@ For a dynamic folder which corresponds to a {% include product %} query, use the # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] - -- Set the value of dynamic content **type** field to be **shotgun_entity**. -- The **entity_type** field should be set to the {% include product %} entity from which we want to pull data from (e.g., "Asset", "Shot", "Sequence", "CustomEntity02", etc). -- The **name** field is the name that should be given to each folder based on the data in {% include product %}. - - - You can use a single field, like in the example above (e.g., `name: code`). - - You can use multiple fields in brackets (e.g., `name:` `"{asset_type}_{code}"`). - - If you want to include fields from other linked entities, you can use the standard {% include product %} dot syntax (e.g., `name: "{sg_sequence.Sequence.code}_{code}"`). -- The **filters** field is a {% include product %} Query. It follows the [{% include product %} API syntax](http://developer.shotgridsoftware.com/python-api/reference.html) relatively closely. It is a list of dictionaries, and each dictionary needs to have the keys _path_, _relation_, and _values_. Valid values for $syntax are any ancestor folder that has a corresponding {% include product %} entity (e.g., `"$project"` for the Project and `"$sequence"` if you have a sequence.yml higher up the directory hierarchy). For {% include product %} entity links, you can use the $syntax (e.g., `{ "path": "project", "relation": "is", "values": [ "$project" ] }`) to refer to a parent folder in the configuration-this is explained more in depth in the [examples below](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Examples). - + filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] + +- Set the value of dynamic content **type** field to be **shotgun_entity**. +- The **entity_type** field should be set to the {% include product %} entity from which we want to pull data from (e.g., "Asset", "Shot", "Sequence", "CustomEntity02", etc). +- The **name** field is the name that should be given to each folder based on the data in {% include product %}. + + - You can use a single field, like in the example above (e.g., `name: code`). + - You can use multiple fields in brackets (e.g., `name:` `"{asset_type}_{code}"`). + - If you want to include fields from other linked entities, you can use the standard {% include product %} dot syntax (e.g., `name: "{sg_sequence.Sequence.code}_{code}"`). + +- The **filters** field is a {% include product %} Query. It follows the [{% include product %} API syntax](http://developer.shotgridsoftware.com/python-api/reference.html) relatively closely. It is a list of dictionaries, and each dictionary needs to have the keys _path_, _relation_, and _values_. Valid values for $syntax are any ancestor folder that has a corresponding {% include product %} entity (e.g., `"$project"` for the Project and `"$sequence"` if you have a sequence.yml higher up the directory hierarchy). For {% include product %} entity links, you can use the $syntax (e.g., `{ "path": "project", "relation": "is", "values": [ "$project" ] }`) to refer to a parent folder in the configuration-this is explained more in depth in the [examples below](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Examples). ## Multiple folders @@ -93,15 +90,15 @@ Include a slash in your name definition in order to create an expression which c # the type of dynamic content type: shotgun_entity - + # the {% include product %} entity type to connect to entity_type: Asset - + # the {% include product %} field to use for the folder name name: "{sg_asset_type}/{code}" - + # {% include product %} filters to apply when getting the list of items @@ -112,13 +109,13 @@ Include a slash in your name definition in order to create an expression which c # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] + filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -When creating a file system template (see for a Part 2 of this document for details) for this kind of path, the _last_folder will represent the {% include product %} entity. The example above could for example be expressed with the following template +When creating a file system template (see for a Part 2 of this document for details) for this kind of path, the \_last_folder will represent the {% include product %} entity. The example above could for example be expressed with the following template asset_step_folder: assets/{asset_type}/{Asset}/{Step} -`{asset_type}` and `{Asset}` are both defined as string template keys and the `{Asset}` token will be used in context calculations when determining the context for a given path. +`{asset_type}` and `{Asset}` are both defined as string template keys and the `{Asset}` token will be used in context calculations when determining the context for a given path. ## Create With Parent Folder @@ -132,23 +129,23 @@ A shotgun_entity type folder supports an optional flag to control whether the fo # recurse down from parent folder - create_with_parent: true + create_with_parent: true -As mentioned, this setting is optional and set to false by default. If you set it to true, Toolkit create folders for any child entity it finds. To continue with our example, if you want Shots to be created whenever their parent Sequence is created, set `create_with_parent` to `true` for the Shot. +As mentioned, this setting is optional and set to false by default. If you set it to true, Toolkit create folders for any child entity it finds. To continue with our example, if you want Shots to be created whenever their parent Sequence is created, set `create_with_parent` to `true` for the Shot. {% include info title="Note" content="the default setting is `false`, meaning that if you create folders for a Sequence, shot folders will not be created automatically. Also, you will need to add this flag to make it true. There will not be a flag in the shotgun_entity folder specifying false since false is the default behavior." %} ## Optional fields -Typically, when you define the folder name (e.g., `{code}_{sg_extra_field}`), Toolkit requires all fields to have values in {% include product %}. For example, if the `sg_extra_field` is blank, an error message will be generated. If you have a field that is sometimes populated and sometimes not, you can mark it as optional. This means that Toolkit will include the field if it has a value, and exclude it if the value is blank-without error. +Typically, when you define the folder name (e.g., `{code}_{sg_extra_field}`), Toolkit requires all fields to have values in {% include product %}. For example, if the `sg_extra_field` is blank, an error message will be generated. If you have a field that is sometimes populated and sometimes not, you can mark it as optional. This means that Toolkit will include the field if it has a value, and exclude it if the value is blank-without error. -You define optional fields using square brackets, like: `{code}[_{sg_extra_field}]`. This will generate the following folder names: +You define optional fields using square brackets, like: `{code}[_{sg_extra_field}]`. This will generate the following folder names: -- If the `code` is BECH_0010 and the `sg_extra_field` is extra, the folder name will be `BECH_0010_extra`. +- If the `code` is BECH_0010 and the `sg_extra_field` is extra, the folder name will be `BECH_0010_extra`. ![optional_fields_BECH_0010_extra](images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png) -- If the `code` is BECH_0010 and the `sg_extra_field` is blank, the folder name will be `BECH_0010`. +- If the `code` is BECH_0010 and the `sg_extra_field` is blank, the folder name will be `BECH_0010`. ![optional_fields_BECH_0010](images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png) @@ -156,20 +153,20 @@ You define optional fields using square brackets, like: `{code}[_{sg_extra_fiel ## Regular expression token matching -Toolkit supports the extraction of parts of a {% include product %} field name using regular expressions. This makes it possible to create simple expressions where a value in {% include product %} can drive the folder creation. For example, if all assets in {% include product %} are named with a three letter prefix followed by an underscore (e.g `AAT_Boulder7`), this can split into two filesystem folder levels, e.g. `AAT/Boulder7`: +Toolkit supports the extraction of parts of a {% include product %} field name using regular expressions. This makes it possible to create simple expressions where a value in {% include product %} can drive the folder creation. For example, if all assets in {% include product %} are named with a three letter prefix followed by an underscore (e.g `AAT_Boulder7`), this can split into two filesystem folder levels, e.g. `AAT/Boulder7`: # the type of dynamic content type: shotgun_entity - + # the {% include product %} entity type to connect to entity_type: Asset - + # Extract parts of the name using regular expressions name: "{code:^([^_]+)}/{code^[^_]+_(.*)}" - + # {% include product %} filters to apply when getting the list of items @@ -182,34 +179,34 @@ Toolkit supports the extraction of parts of a {% include product %} field name u # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -The syntax is similar to the `subset` tokens in the Template system; Simply add a colon after the {% include product %} field name, then followed by a regular expression. Any groups (e.g. sections surrounded by `()`s) defined in the regular expression will be used to extract values. If there are multiple groups in the regex, these will be concatenated together. For example, the following expression would extract the intials for the user who created an object: `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` +The syntax is similar to the `subset` tokens in the Template system; Simply add a colon after the {% include product %} field name, then followed by a regular expression. Any groups (e.g. sections surrounded by `()`s) defined in the regular expression will be used to extract values. If there are multiple groups in the regex, these will be concatenated together. For example, the following expression would extract the intials for the user who created an object: `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` ## Examples Below are a collection of examples showing how to use the filters syntax. -To **find all shots which belong to the current project and are in progress**, use the syntax below. Note that the {% include product %} Shot entity has a link field called project which connects a shot to a project. We want to make sure that we only create folders for the shots that are associated with the current project. Since there is a project level higher up in the configuration file system, we can refer to this via the $syntax and Toolkit will automatically create to this {% include product %} entity link reference. Remember, valid values for $syntax are any ancestor folder that has a corresponding {% include product %} entity (e.g., `"$project"` for the Project and `"$sequence"` if you have a sequence.yml higher up the directory hierarchy). +To **find all shots which belong to the current project and are in progress**, use the syntax below. Note that the {% include product %} Shot entity has a link field called project which connects a shot to a project. We want to make sure that we only create folders for the shots that are associated with the current project. Since there is a project level higher up in the configuration file system, we can refer to this via the $syntax and Toolkit will automatically create to this {% include product %} entity link reference. Remember, valid values for $syntax are any ancestor folder that has a corresponding {% include product %} entity (e.g., `"$project"` for the Project and `"$sequence"` if you have a sequence.yml higher up the directory hierarchy). entity_type: Shot filters: - { "path": "project", "relation": "is", "values": [ "$project" ] } - { "path": "status", "relation": "is", "values": [ "ip" ] } -If you have a Sequence folder higher up the tree and want to **create folders for all Shots which belong to that Sequence**, you can create the following filters: +If you have a Sequence folder higher up the tree and want to **create folders for all Shots which belong to that Sequence**, you can create the following filters: entity_type: Shot filters: - { "path": "project", "relation": "is", "values": [ "$project" ] } - { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } -To **find all assets** use this syntax: +To **find all assets** use this syntax: entity_type: Asset filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] ## {% include product %} List Field Folders -[{% include product %} list field](https://support.shotgunsoftware.com/hc/en-us/articles/219031008) folders are useful if you want to create one folder for every asset type in {% include product %}, for instance. Asset types are list fields in {% include product %}, and this folder config type makes it possible to define a layer in the file system that reflects those asset type listings. +[{% include product %} list field](https://support.shotgunsoftware.com/hc/en-us/articles/219031008) folders are useful if you want to create one folder for every asset type in {% include product %}, for instance. Asset types are list fields in {% include product %}, and this folder config type makes it possible to define a layer in the file system that reflects those asset type listings. ![list_field_folders](images/file-system-config-reference/list_field_folders_02_DS.png) @@ -220,17 +217,17 @@ When you want a dynamic folder which corresponds to all the items in a {% includ # the type of dynamic content type: "shotgun_list_field" - + # the {% include product %} entity type to connect to entity_type: "Asset" - + # only create for values which are used in this project. # this is optional and will be set to false if not specified. skip_unused: false - + # by default, list fields are only created if they are needed by a child entity node @@ -238,35 +235,32 @@ When you want a dynamic folder which corresponds to all the items in a {% includ # nodes are always created create_with_parent: false - + # the {% include product %} field to use for the folder name field_name: "{sg_asset_type}_type" -- Set value of dynamic content **type** field to be `shotgun_list_field`. -- The `entity_type` field should be set to the {% include product %} entity from which we want to pull data (for instance, "Asset", "Sequence", "Shot", etc.). -- The `field_name` field should be set to the {% include product %} field from which the data is pulled from and must be a [list type field](https://support.shotgunsoftware.com/hc/en-us/articles/219031008). You can use expressions if you want to add static text alongside the dynamic content.`field_name: "{sg_asset_type}_type"` This example expression includes text as well as a template key. - -- The optional `skip_unused` parameter will prevent the creation of directories for list type field values which are not used (as covered under the [Optional Fields](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Optional%20fields) section above). {% include info title="Note" content="setting this to True may negatively affect folder creation performance. Also, the culling algorithm is currently crude and does not work in scenarios where complex filters have been applied to the associated entity." %} - -- The optional `create_with_parent` parameter forces the creation of the list_field node, even if there isn't a child entity level node that is currently being processed (see [Create With Parent Folder](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Create%20With%20Parent%20Folder) section above). - +- Set value of dynamic content **type** field to be `shotgun_list_field`. +- The `entity_type` field should be set to the {% include product %} entity from which we want to pull data (for instance, "Asset", "Sequence", "Shot", etc.). +- The `field_name` field should be set to the {% include product %} field from which the data is pulled from and must be a [list type field](https://support.shotgunsoftware.com/hc/en-us/articles/219031008). You can use expressions if you want to add static text alongside the dynamic content.`field_name: "{sg_asset_type}_type"` This example expression includes text as well as a template key. +- The optional `skip_unused` parameter will prevent the creation of directories for list type field values which are not used (as covered under the [Optional Fields](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Optional%20fields) section above). {% include info title="Note" content="setting this to True may negatively affect folder creation performance. Also, the culling algorithm is currently crude and does not work in scenarios where complex filters have been applied to the associated entity." %} +- The optional `create_with_parent` parameter forces the creation of the list_field node, even if there isn't a child entity level node that is currently being processed (see [Create With Parent Folder](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Create%20With%20Parent%20Folder) section above). ## Pipeline Step Folder -The Pipeline Step folder represents a [Pipeline Step](https://support.shotgunsoftware.com/hc/en-us/articles/219031288) in {% include product %}. Pipeline Steps are also referred to as Steps. +The Pipeline Step folder represents a [Pipeline Step](https://support.shotgunsoftware.com/hc/en-us/articles/219031288) in {% include product %}. Pipeline Steps are also referred to as Steps. ![pipeline_step_folder](images/file-system-config-reference/pipeline_step_folder_02_DS.png) # the type of dynamic content type: "shotgun_step" - + # the {% include product %} field to use for the folder name. This field needs to come from a step entity. name: "short_name" -You can use name expressions here, just like you can with the [{% include product %} entity described above](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Shotgun%20List%20Field%20Folders). The node will look at its parent, grandparent, etc., until a {% include product %} entity folder configuration is found. This entity folder will be associated with the Step and the type of the entity will be used to determine which Steps to create. +You can use name expressions here, just like you can with the [{% include product %} entity described above](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Shotgun%20List%20Field%20Folders). The node will look at its parent, grandparent, etc., until a {% include product %} entity folder configuration is found. This entity folder will be associated with the Step and the type of the entity will be used to determine which Steps to create. {% include info title="Note" content="If you want to create a top level folder with Pipeline Steps, just use the ShotGrid entity node and set the associated type to step." %} @@ -282,11 +276,11 @@ Adding this setting to the configuration means that no Step folders will be crea ### Different file system layouts for different pipeline steps -Imagine you want to have one folder structure for Lighting and Comp and one for everything else. If you want to have different file system layouts for different Pipeline Steps, you can achieve this by adding a `filter` clause to your config. This filter allows you to scope which Pipeline Steps will be covered by a particular Step's configuration. In our example, you can create two configuration files: `step_lightcomp.yml` and `step.yml`. In the first one, you would add the following filter: +Imagine you want to have one folder structure for Lighting and Comp and one for everything else. If you want to have different file system layouts for different Pipeline Steps, you can achieve this by adding a `filter` clause to your config. This filter allows you to scope which Pipeline Steps will be covered by a particular Step's configuration. In our example, you can create two configuration files: `step_lightcomp.yml` and `step.yml`. In the first one, you would add the following filter: - filters: [ { "path": "short_name", "relation": "in", "values": [ "Light", "Comp" ] } ] + filters: [ { "path": "short_name", "relation": "in", "values": [ "Light", "Comp" ] } ] -The above syntax will only be used when Step folders of the type `Light` or `Comp` are being created. For the other file, we want to create a rule for everything else: +The above syntax will only be used when Step folders of the type `Light` or `Comp` are being created. For the other file, we want to create a rule for everything else: filters: [ { "path": "short_name", "relation": "not_in", "values": [ "Light", "Comp" ] } ] @@ -294,35 +288,35 @@ Now you can define separate sub structures in each of these folders. ## Advanced: Specifying a parent -As part of the folder creation, Toolkit needs to associate a Pipeline Step with an entity (e.g., "Shot", "Asset", etc). Toolkit does this by default by looking up the folder tree and picking the first {% include product %} entity folder it finds. For example, if you have the hierarchy `Sequence > Shot > Step`, the Step folder will automatically be associated with the Shot, which is typically what you want. +As part of the folder creation, Toolkit needs to associate a Pipeline Step with an entity (e.g., "Shot", "Asset", etc). Toolkit does this by default by looking up the folder tree and picking the first {% include product %} entity folder it finds. For example, if you have the hierarchy `Sequence > Shot > Step`, the Step folder will automatically be associated with the Shot, which is typically what you want. -However, if you have a hierarchy with entities below your primary entity, for example `Sequence > Shot > Department > Step`, Toolkit will, by default, associate the Step with the Department level, which is not desired. In this case, we need to explicitly tell Toolkit where to look. We can do this by adding the following to the Step configuration: +However, if you have a hierarchy with entities below your primary entity, for example `Sequence > Shot > Department > Step`, Toolkit will, by default, associate the Step with the Department level, which is not desired. In this case, we need to explicitly tell Toolkit where to look. We can do this by adding the following to the Step configuration: associated_entity_type: Shot ## {% include product %} Task Folder -The Task folder represents a [Task](https://support.shotgunsoftware.com/hc/en-us/articles/219031248) in {% include product %}. By default, the Task folder will not will not be created with its parent. For example, if the folder creation is triggered for a Shot which has a Task node associated, the Task folders will not be created automatically. Instead, Task folders will only be created when the folder creation is executed for the Task (e.g., launching a Task from {% include product %}). +The Task folder represents a [Task](https://support.shotgunsoftware.com/hc/en-us/articles/219031248) in {% include product %}. By default, the Task folder will not will not be created with its parent. For example, if the folder creation is triggered for a Shot which has a Task node associated, the Task folders will not be created automatically. Instead, Task folders will only be created when the folder creation is executed for the Task (e.g., launching a Task from {% include product %}). ![task_folder](images/file-system-config-reference/task_folder_02_DS.png) # the type of dynamic content type: "shotgun_task" - + # the {% include product %} field to use for the folder name. This field needs to come from a task entity. - name: "content" - + name: "content" + You can, however, turn on creation so that Tasks are created with their parent entity by using the following syntax: - + # recurse down from parent folder create_with_parent: true -Similar to a Step, you can also optionally supply a `filter` parameter if you want to filter which Tasks your folder configuration should operate on. +Similar to a Step, you can also optionally supply a `filter` parameter if you want to filter which Tasks your folder configuration should operate on. -Once again, you can use name expressions, just like you can with the [{% include product %} entity described above](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Shotgun%20List%20Field%20Folders), where static text can be used alongside dynamic content so that you can create a name that has both dynamic and static context. +Once again, you can use name expressions, just like you can with the [{% include product %} entity described above](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Shotgun%20List%20Field%20Folders), where static text can be used alongside dynamic content so that you can create a name that has both dynamic and static context. `name: "task_{content}"` @@ -330,33 +324,33 @@ The node will look at its parent, grandparent etc., until a {% include product % ### Advanced: Specifying a parent -As part of the folder creation, Toolkit needs to associate a Task with an entity (e.g., a Shot, an Asset, etc.). Toolkit does this by default by looking up the folder tree and picking the first {% include product %} entity folder it finds. For example, if you have the hierarchy `Sequence > Shot > Task`, the Task folder will automatically be associated with the Shot, which is typically what you want. +As part of the folder creation, Toolkit needs to associate a Task with an entity (e.g., a Shot, an Asset, etc.). Toolkit does this by default by looking up the folder tree and picking the first {% include product %} entity folder it finds. For example, if you have the hierarchy `Sequence > Shot > Task`, the Task folder will automatically be associated with the Shot, which is typically what you want. -However, if you have a hierarchy with entities below your primary entity (e.g., below Shot), like `Sequence > Shot > Department > Task,` Toolkit would by default associate the Task with the department level, which is not desired. In this case, we need to explicitly tell Toolkit where to look, similarly to how we updated this with Steps in the [previous section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Create%20With%20Parent%20Folder). We can do this by adding the following to the Task configuration: +However, if you have a hierarchy with entities below your primary entity (e.g., below Shot), like `Sequence > Shot > Department > Task,` Toolkit would by default associate the Task with the department level, which is not desired. In this case, we need to explicitly tell Toolkit where to look, similarly to how we updated this with Steps in the [previous section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#Create%20With%20Parent%20Folder). We can do this by adding the following to the Task configuration: -`associated_entity_type: Shot` +`associated_entity_type: Shot` ## Workspaces and Deferred Folder Creation -Deferred folder creation means that creation will only be executed when a second folder creation pass is requested via the optional `engine` parameter in the create folders method of the Toolkit API. Typically, this method is executed by Toolkit's various application launchers just prior to starting up an application. Most folder types support a deferred flag, which is `false` by default. To make deferred folder creation `true`, you can add this flag: +Deferred folder creation means that creation will only be executed when a second folder creation pass is requested via the optional `engine` parameter in the create folders method of the Toolkit API. Typically, this method is executed by Toolkit's various application launchers just prior to starting up an application. Most folder types support a deferred flag, which is `false` by default. To make deferred folder creation `true`, you can add this flag: # only create this folder when tk.create_filesystem_structure is # called with tk-maya, tk-nuke or any-custom-string. defer_creation: ["tk-maya", "tk-nuke", "any-custom-string] - + # create this folder when any application launches, but not when normal folder # creation runs defer_creation: true -This flag makes it possible to split the folder creation in half-one part that runs in a first "global" pass and a second pass that runs at a later point. Typically, the second pass is associated with the engine launching (although it does not happen automatically since the default is `false`) and allows for a user to create folders just before engine startup. This allows for two primary workflows: +This flag makes it possible to split the folder creation in half-one part that runs in a first "global" pass and a second pass that runs at a later point. Typically, the second pass is associated with the engine launching (although it does not happen automatically since the default is `false`) and allows for a user to create folders just before engine startup. This allows for two primary workflows: -1. **Workspaces:** Application specific folder setups. Folders can be created just before an application launches. +1. **Workspaces:** Application specific folder setups. Folders can be created just before an application launches. 2. A common workflow for this is to have a Pipeline Step that might require Houdini, Maya, and another Engine, depending on what the shot requires and how an Artist chooses to tackle it. The Artist can create maya/, houdini/, and other directories for that Pipeline Step initially, but if the Artist on a given shot only ever works in Maya, empty folders for Houdini and any other Engine are unnecessary. So, if you defer the folder creation to happen at the time of the launch of individual engines, then if an Artist never uses Houdini, the houdini/ folder will not be created for that shot. -3. **User folders:** A user folder is created just before application launch. The user folder config construct (described above) is deferred by default. +3. **User folders:** A user folder is created just before application launch. The user folder config construct (described above) is deferred by default. 4. This can happen so that instead of basing a user folder on the assigned user in {% include product %}, you can create a folder for the current user whenever they launch an Engine. For instance, if you start working on a shot, and you launch Maya, a username folder will be created for you (based on your username in {% include product %}), and you will not interfere with anyone else's work. _Tip: If you prefer a normal, static folder to be created when an application (like Maya) launches, just create a config YAML file named the same as the folder and add the following:_ @@ -364,43 +358,43 @@ _Tip: If you prefer a normal, static folder to be created when an application (l # type of content type: "static" - + # only create this folder for maya defer_creation: "tk-maya" - + :::yaml # type of content type: "static" - + # only create this folder when tk.create_filesystem_structure is # called with any-custom-string. - defer_creation: "any-custom-string" + defer_creation: "any-custom-string" ## Current User Folder -The current user folder is a special construct that lets you set up work areas for different users. A common scenario is if you have multiple artists from a department working on the same shot. User folders can be used so that artists can store their workfiles in their own directories and be able to filter just for their files in the [Workfiles App](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files). In this case, the configuration file needs to include the following options: +The current user folder is a special construct that lets you set up work areas for different users. A common scenario is if you have multiple artists from a department working on the same shot. User folders can be used so that artists can store their workfiles in their own directories and be able to filter just for their files in the [Workfiles App](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files). In this case, the configuration file needs to include the following options: # the type of dynamic content type: "user_workspace" - + name: "login" -- Set value of **type** field to be `user_workspace`. -- The **name** field is the name that should be given to a user folder. It must consist of a combination of fields fetched from People in {% include product %} (`HumanUser` in {% include product %}). -- You can use a single field, like in the example above (e.g., `name: login`). -- You can use multiple fields in brackets (e.g., `name: "{firstname}_{lastname}"`). -- If you want to include fields from other linked entities, you can use the standard {% include product %} dot syntax (e.g., `name: "{sg_group.Group.code}_{login}"`). +- Set value of **type** field to be `user_workspace`. +- The **name** field is the name that should be given to a user folder. It must consist of a combination of fields fetched from People in {% include product %} (`HumanUser` in {% include product %}). +- You can use a single field, like in the example above (e.g., `name: login`). +- You can use multiple fields in brackets (e.g., `name: "{firstname}_{lastname}"`). +- If you want to include fields from other linked entities, you can use the standard {% include product %} dot syntax (e.g., `name: "{sg_group.Group.code}_{login}"`). -The current user folder is created as a deferred folder by default, meaning that it will only be executed when a second folder creation pass is requested via the optional `engine` parameter in the create folders method of the Toolkit API. +The current user folder is created as a deferred folder by default, meaning that it will only be executed when a second folder creation pass is requested via the optional `engine` parameter in the create folders method of the Toolkit API. ## Static folders -Static folders (and files) are the most simple type. You can drop them into the configuration structure, and they will automatically get copied across when the folder creation process executes. [Here are some examples of static folders](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) (https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) in the default configuration (note that static folders do not have a corresponding YAML file). +Static folders (and files) are the most simple type. You can drop them into the configuration structure, and they will automatically get copied across when the folder creation process executes. [Here are some examples of static folders](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) (https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) in the default configuration (note that static folders do not have a corresponding YAML file). Often, you will not need to go beyond this for static folders; however, Toolkit does support some more advanced functionality for static folders. It is possible to define dynamic conditions to determine if a static folder should get created. For example, you may want to have special static folders that only get created for Pipeline Steps of the Editorial type. In this case, you need to add a YAML configuration file next to the static folder and give it the same name, with the extension "yml". Then, use the following syntax: @@ -417,7 +411,7 @@ Often, you will not need to go beyond this for static folders; however, Toolkit # static folder should be created or not. constrain_by_entity: "$step" - + # we can now define constraints for this step. Constraints are simple @@ -432,27 +426,27 @@ Often, you will not need to go beyond this for static folders; however, Toolkit # it (and its children) will be ignored by the folder creation process. constraints: - - { "path": "short_name", "relation": "is", "values": [ "edit" ] } + - { "path": "short_name", "relation": "is", "values": [ "edit" ] } By default, static folders will automatically get created together with their parent folder. There may be cases where this is not desirable, and in those cases you can add a special flag to indicate that the static folder should not be created together with its parent: # do not recurse down automatically - create_with_parent: false + create_with_parent: false ## Symbolic Links -You can create symbolic links (symlink) as part of the dynamic folder creation. If you want to create a symbolic link with the name `artwork`, create a file in your schema configuration named `artwork.symlink.yml`. This will be identified by the system as a symbolic link request and will not be copied across, but will instead be processed. +You can create symbolic links (symlink) as part of the dynamic folder creation. If you want to create a symbolic link with the name `artwork`, create a file in your schema configuration named `artwork.symlink.yml`. This will be identified by the system as a symbolic link request and will not be copied across, but will instead be processed. -The `artwork.symlink.yml` file must, at the very least, contain a `target` key: +The `artwork.symlink.yml` file must, at the very least, contain a `target` key: # Example of a .symlink.yml file - + # A target parameter is required. target: "../Stuff/$Project/$Shot" - + # Additional parameters will be passed to the hook as metadata @@ -460,21 +454,21 @@ The `artwork.symlink.yml` file must, at the very least, contain a `target` k # that you may need for advanced customization additional_param1: abc - additional_param2: def + additional_param2: def -If the target parameter contains `$EntityType` tokens such as `$Asset`, `$Shot`, or `$Project`, these will attempt to be resolved with the name of the folder representing that entity (Asset, Shot, Project, etc.). Toolkit will look up the filesystem tree for these values and if they are not defined higher up in the tree, an error will be reported. +If the target parameter contains `$EntityType` tokens such as `$Asset`, `$Shot`, or `$Project`, these will attempt to be resolved with the name of the folder representing that entity (Asset, Shot, Project, etc.). Toolkit will look up the filesystem tree for these values and if they are not defined higher up in the tree, an error will be reported. -List fields, such as asset type on assets, are expressed with a syntax that includes the entity type, e.g. `$Asset.sg_asset_type`. For example: +List fields, such as asset type on assets, are expressed with a syntax that includes the entity type, e.g. `$Asset.sg_asset_type`. For example: # Example of a .symlink.yml file - + # A target parameter is required. target: "../renders/$Project/$Asset.sg_asset_type/$Asset" - -Symlink creation happens (like all input/output, or I/O) inside the folder processing hook. A special `symlink`action is passed from the system into the hook, and you will get the name of the symlink, the fully resolved target, and all the YAML metadata contained within the definition file along with this request. For our `artwork`example above, we create the folder under the Shot like this: - + +Symlink creation happens (like all input/output, or I/O) inside the folder processing hook. A special `symlink`action is passed from the system into the hook, and you will get the name of the symlink, the fully resolved target, and all the YAML metadata contained within the definition file along with this request. For our `artwork`example above, we create the folder under the Shot like this: + {'action': 'symlink', 'path': '/mnt/projects/chasing_the_light/Sequences/AA/AA001/artwork' 'target': '../Stuff/chasing_the_light/AA001', @@ -487,20 +481,20 @@ Files that are placed in the schema scaffold will be copied across into the targ {% include info title="Note" content="There are more details on this kind of handling in the [Customizing I/O and Permissions section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Simple%20customization%20of%20how%20folders%20are%20created)Customizing I/O and Permissions section under Simple Customization. We have a [process_folder_creation core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71) (https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71) that handles a lot of folder setup. You can add chmod calls into this hook (and/or set permissions as you mkdir), thereby setting permissions for the folders you are creating." %} -Sometimes it can be useful to exclude certain files and folders from being copied across as part of the folder creation. For example, if you store your folder creation configs in Git or SVN, you will have `.git` and `.svn`folders that you will not want to copy to each Shot or Asset folder. If there are files which you do not want to have copied, a file named `ignore_files` can be placed in the `config/core/schema` folder inside the project configuration. This file should contain glob-style patterns to define files not to copy. Each pattern should be on a separate line: +Sometimes it can be useful to exclude certain files and folders from being copied across as part of the folder creation. For example, if you store your folder creation configs in Git or SVN, you will have `.git` and `.svn`folders that you will not want to copy to each Shot or Asset folder. If there are files which you do not want to have copied, a file named `ignore_files` can be placed in the `config/core/schema` folder inside the project configuration. This file should contain glob-style patterns to define files not to copy. Each pattern should be on a separate line: # This is a good example of a standard ignore_files file - + .svn # no svn temp files to be copied across at folder creation time .git # no git temp files to be copied across at folder creation time - .DS_Store # no mac temp files to be copied across at folder creation time + .DS_Store # no mac temp files to be copied across at folder creation time -You can also use wildcards. For example, if you need to exclude all files with the TMP extension, just add a *.tmp line to the file. +You can also use wildcards. For example, if you need to exclude all files with the TMP extension, just add a \*.tmp line to the file. # This is a good example of a standard ignore_files file - + .svn # no svn temp files to be copied across at folder creation time .git # no git temp files to be copied across at folder creation time *.tmp # no files with tmp extension to be copied across at folder creation time @@ -511,7 +505,7 @@ Shot and Asset folders often need to be created with special permissions and par It is also common that folders on different levels in the file system tree need to have different permissions; a work area folder is typically writeable for everybody, whereas a shot folder may have much stricter permissions. -Toolkit allows for customization of the folder creation via a single hook. This is a core hook and it is named `process_folder_creation.py`. As the folder creation API call is traversing the folder configuration and deciding which folders should be created, it builds up a list of items that could be created. These items can be both files and folders. As the final step of the folder creation, this list is passed to a hook to handle the actual folder processing. You can examine the default [process_folder_creation core hook here](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71)(https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71). +Toolkit allows for customization of the folder creation via a single hook. This is a core hook and it is named `process_folder_creation.py`. As the folder creation API call is traversing the folder configuration and deciding which folders should be created, it builds up a list of items that could be created. These items can be both files and folders. As the final step of the folder creation, this list is passed to a hook to handle the actual folder processing. You can examine the default [process_folder_creation core hook here](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71)(https://github.com/shotgunsoftware/tk-core/blob/master/hooks/process_folder_creation.py#L62-L71). ### Data passed to the hook @@ -520,16 +514,16 @@ The folder creation hook is executed just once for each folder creation request. The data in the list is always a depth first recursion, starting with the top level folders and files and then traversing deeper and deeper. Here is an example of what the data passed to the hook may look like: [ - + {'action': 'entity_folder', 'entity': {'id': 88, 'name': 'Chasing the Light', 'type': 'Project'}, 'metadata': {'root_name': 'primary', 'type': 'project'}, 'path': '/mnt/projects/chasing_the_light'}, - + {'action': 'folder', 'metadata': {'type': 'static'}, 'path': '/mnt/projects/chasing_the_light/sequences'}, - + {'action': 'entity_folder', 'entity': {'id': 32, 'name': 'aa2', 'type': 'Sequence'}, 'metadata': {'entity_type': 'Sequence', @@ -539,7 +533,7 @@ The data in the list is always a depth first recursion, starting with the top le 'name': 'code', 'type': 'shotgun_entity'}, 'path': '/mnt/projects/chasing_the_light/sequences/aa2'}, - + {'action': 'entity_folder', 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, 'metadata': {'entity_type': 'Shot', @@ -549,7 +543,7 @@ The data in the list is always a depth first recursion, starting with the top le 'name': 'code', 'type': 'shotgun_entity'}, 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'}, - + {'action': 'copy', 'metadata': {'entity_type': 'Shot', 'filters': [{'path': 'sg_sequence', @@ -559,7 +553,7 @@ The data in the list is always a depth first recursion, starting with the top le 'type': 'shotgun_entity'}, 'source_path': '/mnt/software/tank/chasing_the_light/config/core/schema/project/sequences/sequence/shot/sgtk_overrides.yml', 'target_path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87/sgtk_overrides.yml'}, - + {'action': 'create_file', 'metadata': {'entity_type': 'Shot', 'filters': [{'path': 'sg_sequence', @@ -569,26 +563,26 @@ The data in the list is always a depth first recursion, starting with the top le 'type': 'shotgun_entity'}, 'content': 'foo bar', 'target_path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87/automatic_content.txt'}, - + {'action': 'symlink', 'path': '/mnt/projects/chasing_the_light/Sequences/AA/AA001/artwork' 'target': '../Stuff/chasing_the_light/AA001', 'metadata': {'target': '../Stuff/$Project/$Shot', 'additional_param1': 'abc', 'additional_param2': 'def'} }, - + ] -The data is a list of dictionaries. Each dictionary has a key called `action`. This key denotes the type of I/O item that is requested. If you are implementing the folder creation hook, you need to add support for the following different actions: +The data is a list of dictionaries. Each dictionary has a key called `action`. This key denotes the type of I/O item that is requested. If you are implementing the folder creation hook, you need to add support for the following different actions: -- `entity_folder`: A folder on disk which is associated with a {% include product %} entity. -- `folder`: A folder on disk. -- `copy`: A file that needs to be copied from a source location to a target location. -- `create_file`:- A file that needs to be created on disk. -- `symlink`: A symbolic link should be created. +- `entity_folder`: A folder on disk which is associated with a {% include product %} entity. +- `folder`: A folder on disk. +- `copy`: A file that needs to be copied from a source location to a target location. +- `create_file`:- A file that needs to be created on disk. +- `symlink`: A symbolic link should be created. -Each of the actions have a different set of dictionary keys. For example, the `entity_folder` action has an `entity key` which contains the details of the entity that it is connected to. The `create_file` has a `source_path` and a `target_path` key which inform the hook which file to copy and where. +Each of the actions have a different set of dictionary keys. For example, the `entity_folder` action has an `entity key` which contains the details of the entity that it is connected to. The `create_file` has a `source_path` and a `target_path` key which inform the hook which file to copy and where. -All `actions` also have a key called `metadata`. This key represents the YAML configuration data that comes from the associated configuration file in the schema setup. You can see in the example above how the `metadata` key for a {% include product %} folder contains all the filter and naming information that is set up within the schema configuration. For example, here is the metadata for the Shot folder in the example above: +All `actions` also have a key called `metadata`. This key represents the YAML configuration data that comes from the associated configuration file in the schema setup. You can see in the example above how the `metadata` key for a {% include product %} folder contains all the filter and naming information that is set up within the schema configuration. For example, here is the metadata for the Shot folder in the example above: {'action': 'entity_folder', 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, @@ -598,9 +592,9 @@ All `actions` also have a key called `metadata`. This key represents the YAML 'values': []}], 'name': 'code', 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} + 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} -...which corresponds to the `shot.yml` schema configuration file: +...which corresponds to the `shot.yml` schema configuration file: # Copyright (c) 2013 {% include product %} Software Inc. @@ -618,19 +612,19 @@ All `actions` also have a key called `metadata`. This key represents the YAML # agreement to the {% include product %} Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by {% include product %} Software Inc. - + # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "Shot" - + # {% include product %} filters to apply when getting the list of items @@ -641,35 +635,35 @@ All `actions` also have a key called `metadata`. This key represents the YAML # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } ] + filters: [ { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } ] -_Note that the dynamic token `$sequence` has been resolved into an actual object at runtime._ +_Note that the dynamic token `$sequence` has been resolved into an actual object at runtime._ ### Passing your own folder creation directives to the hook -In addition to the various configuration directives required by Toolkit, you can also define your own configuration items as part of the schema configuration. These are passed into the hook via the `metadata` key described above, and can be used to drive folder creation. +In addition to the various configuration directives required by Toolkit, you can also define your own configuration items as part of the schema configuration. These are passed into the hook via the `metadata` key described above, and can be used to drive folder creation. For example, if you had the following structure in your schema setup: # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "Shot" - + # {% include product %} filters to apply when getting the list of items filters: [ { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } ] - + # user settings - studio_permissions_level: "admin" + studio_permissions_level: "admin" ...the data passed via the folder creation hook would be: @@ -682,15 +676,15 @@ For example, if you had the following structure in your schema setup: 'name': 'code', 'type': 'shotgun_entity', 'studio_permissions_level': 'admin'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} + 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} -Now the special parameter `studio_permissions_level` is passed into the hook and you can use that, for example, to control file permissions. You can also pass arbitrarily complex data structures using this method. A typical usecase for this would be to control permissions at a very detailed level. +Now the special parameter `studio_permissions_level` is passed into the hook and you can use that, for example, to control file permissions. You can also pass arbitrarily complex data structures using this method. A typical usecase for this would be to control permissions at a very detailed level. ### Adding custom configuration to static folders Typically, when you create a folder inside the folder schema configuration, and it does not have a corresponding YAML file, Toolkit will assume that it is a static folder and will simply create it. -If you would like to associate custom configuration metadata with a static folder, you have to create a YAML configuration file with the `static` type. For example, let's say you have a static `assets` folder just under the project root and would like to group together assets and add custom configuration metadata. To achieve this, create the following `assets.yml` file: +If you would like to associate custom configuration metadata with a static folder, you have to create a YAML configuration file with the `static` type. For example, let's say you have a static `assets` folder just under the project root and would like to group together assets and add custom configuration metadata. To achieve this, create the following `assets.yml` file: type: static studio_permissions_level: "admin" @@ -701,7 +695,6 @@ The configuration data passed to the hook will then contain the following: 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, 'path': '/mnt/projects/chasing_the_light/assets'}, - Again, arbitrarily complex data can be passed from the YAML configuration file into the hook in this way. ## Simple customization of how folders are created @@ -709,68 +702,68 @@ Again, arbitrarily complex data can be passed from the YAML configuration file i A simple folder creation hook could look something like this: class ProcessFolderCreation(Hook): - + def execute(self, items, preview_mode, **kwargs): """ The default implementation creates folders recursively using open permissions. - + This hook should return a list of created items. - + Items is a list of dictionaries. Each dictionary can be of the following type: - + Standard Folder --------------- This represents a standard folder in the file system which is not associated with anything in {% include product %}. It contains the following keys: - + * "action": "folder" * "metadata": The configuration yaml data for this item * "path": path on disk to the item - + Entity Folder ------------- This represents a folder in the file system which is associated with a {% include product %} entity. It contains the following keys: - + * "action": "entity_folder" * "metadata": The configuration yaml data for this item * "path": path on disk to the item * "entity": {% include product %} entity link dict with keys type, id and name. - + File Copy --------- This represents a file copy operation which should be carried out. It contains the following keys: - + * "action": "copy" * "metadata": The configuration yaml data associated with the directory level on which this object exists. * "source_path": location of the file that should be copied * "target_path": target location to where the file should be copied. - + File Creation ------------- This is similar to the file copy, but instead of a source path, a chunk of data is specified. It contains the following keys: - + * "action": "create_file" * "metadata": The configuration yaml data associated with the directory level on which this object exists. * "content": file content * "target_path": target location to where the file should be copied. - + """ - + # set the umask so that we get true permissions old_umask = os.umask(0) folders = [] try: - + # loop through our list of items for i in items: - + action = i.get("action") - + if action == "entity_folder" or action == "folder": # folder creation path = i.get("path") @@ -779,7 +772,7 @@ A simple folder creation hook could look something like this: # create the folder using open permissions os.makedirs(path, 0777) folders.append(path) - + elif action == "copy": # a file copy source_path = i.get("source_path") @@ -791,7 +784,7 @@ A simple folder creation hook could look something like this: # set permissions to open os.chmod(target_path, 0666) folders.append(target_path) - + elif action == "create_file": # create a new file based on content path = i.get("path") @@ -808,27 +801,27 @@ A simple folder creation hook could look something like this: # and set permissions to open os.chmod(path, 0666) folders.append(path) - + else: raise Exception("Unknown folder hook action '%s'" % action) - + finally: # reset umask os.umask(old_umask) - - return folders + + return folders # Part 2 - Configuring File System Templates -The Toolkit templates file is one of the hubs of the Toolkit configuration. There is always one of these files per project and it resides inside the **config/core** folder inside your pipeline configuration. +The Toolkit templates file is one of the hubs of the Toolkit configuration. There is always one of these files per project and it resides inside the **config/core** folder inside your pipeline configuration. ![configuration](images/file-system-config-reference/templates_file.png) -This file contains definitions for _templates_ and their _keys_. +This file contains definitions for _templates_ and their _keys_. -A **key** is a dynamic field we defined. It can be a name, a version number, a screen resolution, a shot name etc. Keys are configured with types, so we can define that a key should be a string or an int for example. They are also formatted, so we can define that a string should only contain alpha numeric characters, or that all integers should be padded with eight zeroes. +A **key** is a dynamic field we defined. It can be a name, a version number, a screen resolution, a shot name etc. Keys are configured with types, so we can define that a key should be a string or an int for example. They are also formatted, so we can define that a string should only contain alpha numeric characters, or that all integers should be padded with eight zeroes. -A **template** is a dynamic path. An example of a template is `shots/{shot}/publish/{name}.{version}.ma`. This template could for represent maya publishes for a shot - the bracketed fields are keys. +A **template** is a dynamic path. An example of a template is `shots/{shot}/publish/{name}.{version}.ma`. This template could for represent maya publishes for a shot - the bracketed fields are keys. The templates file is divided into three sections: keys, paths and strings. @@ -839,42 +832,28 @@ Keys define what values are acceptable for fields. In the template config file k key_name: type: key_type option: option_value - option: option_value + option: option_value -Key type is either `str`, `int`, or `sequence`. Str keys are keys whose values are strings, int keys are keys whose values are integers, and sequence keys are keys whose values are sequences of integers. +Key type is either `str`, `int`, or `sequence`. Str keys are keys whose values are strings, int keys are keys whose values are integers, and sequence keys are keys whose values are sequences of integers. In addition to specifying the type, you can also specify additional options. The following options exist: -- `default: default_value` - Value used if no value was supplied. This can happen if you are using the Toolkit API and trying to resolve a set of field values into a path for example. - -- `choices: [choice1, choice2, etc]` - An enumeration of possible values for this key. - -- `exclusions: [bad1, bad2, etc]` - An enumeration of forbidden values for this key. If key is of type sequence, frame spec values cannot be invalidated with this setting. - -- `length: 12` - This key needs to be of an exact length. - -- `alias: new_name` - Provides a name which will be used by templates using this key rather than the key_name. For example if you have two concepts of a version number, one is four zero padded because that is how the client wants it, and one is three zero padded because that how it is handled internally - in this case you really want both keys named "version" but this is not really possible since key names need to be unique. In this case you can create an alias. See one of the examples below for more information. - -- `filter_by: alphanumeric` - Only works for keys of type string. If this option is specified, only strings containing alphanumeric values (typically a-z, A-Z and 0-9 for ascii strings but may include other characters if your input data is unicode) will be considered valid values. - -- `filter_by: alpha` - Only works for keys of type string. If this option is specified, only strings containing alpha values (typically a-z, A-Z for ascii strings but may include other characters if your input data is unicode) will be considered valid values. - -- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - Only works for keys of type string. You can define a regular expression as a validation mask. The above example would for example require the key to have four digits, then an underscore and finally three lower case letters. - -- `format_spec: "04"` - For keys of type int and sequence, this setting means that the int or sequence number will be zero or space padded. Specifying "04" like in the example will result in a four digit long zero padded number (e.g. 0003). Specifying "03" would result in three digit long zero padded number (e.g. 042), etc. Specifying "3" would result in three digit long space padded number (e.g. " 3"). For keys of type timestamp, the format_spec follows the [strftime and strptime convention](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior). - -- `strict_matching: true` - Only works for keys of type type int. This settings means that the field will only match numbers that have been properly formatted. For example, given "003" and strict_matching set to true, we would match "002", "12345" and "042", but not "00003" or "2". If you need the matching to be less strict, set strict_matching to false. The default behavior is to strictly match. - -- `shotgun_entity_type` - When used in conjunction with the `shotgun_field_name` option, will cause contexts to query {% include product %} directly for values. This allows using values from fields not seen in the folder structure to be used in file names. - -- `shotgun_field_name` - Only used in conjunction with `shotgun_entity_type`. - -- `abstract` - Denotes that the field is abstract. Abstract fields are used when a pattern is needed to describe a path - for example image sequences (%04d) or stereo (%V). Abstract fields require a default value. - -- `subset` and `subset_format` - Extracts a subset of the given input string and makes that the key value, allowing you to create for example an initials key from a full username or a key that holds the three first letters of every shot name. - - -For technical details about template keys, see the [API reference](http://developer.shotgridsoftware.com/tk-core/core.html#template-system). +- `default: default_value` - Value used if no value was supplied. This can happen if you are using the Toolkit API and trying to resolve a set of field values into a path for example. +- `choices: [choice1, choice2, etc]` - An enumeration of possible values for this key. +- `exclusions: [bad1, bad2, etc]` - An enumeration of forbidden values for this key. If key is of type sequence, frame spec values cannot be invalidated with this setting. +- `length: 12` - This key needs to be of an exact length. +- `alias: new_name` - Provides a name which will be used by templates using this key rather than the key_name. For example if you have two concepts of a version number, one is four zero padded because that is how the client wants it, and one is three zero padded because that how it is handled internally - in this case you really want both keys named "version" but this is not really possible since key names need to be unique. In this case you can create an alias. See one of the examples below for more information. +- `filter_by: alphanumeric` - Only works for keys of type string. If this option is specified, only strings containing alphanumeric values (typically a-z, A-Z and 0-9 for ascii strings but may include other characters if your input data is unicode) will be considered valid values. +- `filter_by: alpha` - Only works for keys of type string. If this option is specified, only strings containing alpha values (typically a-z, A-Z for ascii strings but may include other characters if your input data is unicode) will be considered valid values. +- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - Only works for keys of type string. You can define a regular expression as a validation mask. The above example would for example require the key to have four digits, then an underscore and finally three lower case letters. +- `format_spec: "04"` - For keys of type int and sequence, this setting means that the int or sequence number will be zero or space padded. Specifying "04" like in the example will result in a four digit long zero padded number (e.g. 0003). Specifying "03" would result in three digit long zero padded number (e.g. 042), etc. Specifying "3" would result in three digit long space padded number (e.g. " 3"). For keys of type timestamp, the format_spec follows the [strftime and strptime convention](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior). +- `strict_matching: true` - Only works for keys of type type int. This settings means that the field will only match numbers that have been properly formatted. For example, given "003" and strict_matching set to true, we would match "002", "12345" and "042", but not "00003" or "2". If you need the matching to be less strict, set strict_matching to false. The default behavior is to strictly match. +- `shotgun_entity_type` - When used in conjunction with the `shotgun_field_name` option, will cause contexts to query {% include product %} directly for values. This allows using values from fields not seen in the folder structure to be used in file names. +- `shotgun_field_name` - Only used in conjunction with `shotgun_entity_type`. +- `abstract` - Denotes that the field is abstract. Abstract fields are used when a pattern is needed to describe a path - for example image sequences (%04d) or stereo (%V). Abstract fields require a default value. +- `subset` and `subset_format` - Extracts a subset of the given input string and makes that the key value, allowing you to create for example an initials key from a full username or a key that holds the three first letters of every shot name. + +For technical details about template keys, see the [API reference](http://developer.shotgridsoftware.com/tk-core/core.html#template-system). ### Example - An alphanumeric name @@ -884,8 +863,8 @@ A name that defaults to "comp" and that is alphanumeric: type: str default: "comp" filter_by: alphanumeric - - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk + + nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk ### Example - Version number @@ -893,25 +872,25 @@ A version number that would match numbers such as 002, 102, 034, 12341 version: type: int - format_spec: "03" + format_spec: "03" A version number that would match numbers such as 002, 102, 034, 12341, but also 0002, 2 and 0102 version: type: int format_spec: "03" - strict_matching: false + strict_matching: false ### Example - A stereo eye -A typical stereo eye setup. The eye field is either L or R, but when used in software, it is often referred to in a generic, abstract fashion as %V. Since %V does not really refer to a file name but rather a collection of files, we set the _abstract_ flag. Abstract fields need to have a default value that is pulled in whenever the abstract representation is being requested. +A typical stereo eye setup. The eye field is either L or R, but when used in software, it is often referred to in a generic, abstract fashion as %V. Since %V does not really refer to a file name but rather a collection of files, we set the _abstract_ flag. Abstract fields need to have a default value that is pulled in whenever the abstract representation is being requested. eye: type: str choices: ["L", "R", "%V"] default: "%V" abstract: true - + nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{eye}_v{version}.{SEQ}.exr ### Example - Image sequences @@ -921,12 +900,12 @@ Image sequences are abstract by definition and they have a default value set to SEQ: type: sequence format_spec: "04" - - nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{channel}_{eye}_v{version}.{SEQ}.exr + + nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{channel}_{eye}_v{version}.{SEQ}.exr ### Example - Two fields both named version via an alias -Two definitions of version number that can both be used by code that expects a key which is named "version". This is useful if you have two Toolkit apps that both need a _version_ field but you want these version field to be formatted differently. +Two definitions of version number that can both be used by code that expects a key which is named "version". This is useful if you have two Toolkit apps that both need a _version_ field but you want these version field to be formatted differently. nuke_version: type: int @@ -936,7 +915,7 @@ Two definitions of version number that can both be used by code that expects a k type: int format_spec: "04" alias: version - + # nuke versions are using numbers on the form 003, 004, 005 @@ -946,10 +925,10 @@ Two definitions of version number that can both be used by code that expects a k # because it has an alias defined nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{nuke_version}.nk - + # maya versions are using numbers on the form 0004, 0005, 0006 - maya_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{maya_version}.ma + maya_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{maya_version}.ma ### Example - Timestamp @@ -958,21 +937,21 @@ A timestamp that defaults to the current local time and is formatted as YYYY-MM- now: type: timestamp format_spec: "%Y-%m-%d-%H-%M-%S" - default: now + default: now A timestamp that defaults to the current utc time and is formatted as YYYY.MM.DD. year_month_day: type: timestamp format_spec: "%Y.%m.%d" - default: utc_now + default: utc_now A timestamp that defaults to 9:00:00 and is formatted as HH-MM-SS. nine_am_time: type: timestamp format_spec: "%H-%M-%S" - default: "09-00-00" + default: "09-00-00" ### Example - {% include product %} mappings @@ -982,10 +961,10 @@ This is useful when you would like to to add {% include product %} fields to a f type: str shotgun_entity_type: HumanUser shotgun_field_name: login - + nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{current_user_name}_{name}.v{version}.nk -When a Toolkit app populates all the context fields (via the `context.as_template_fields()` method, it will populate the higher level fields `Shot`, `Sequence` and `Step` automatically. It will also scan through all fields which have `shotgun_entity_type` defined (like our `current_user_name` field above). If the {% include product %} Entity is defined in the context, it will be able to automatically resolve the value. The current user is always tracked in the context, and in the above example, it would also be possible to pull data from fields on Shot, Sequence and Step since these are defined as part of the higher level path and therefore part of the context. However, trying to refer to an Asset entity in a field wouldn't work in the above example since Toolkit would have no way of knowing which asset in {% include product %} to pull the data from. +When a Toolkit app populates all the context fields (via the `context.as_template_fields()` method, it will populate the higher level fields `Shot`, `Sequence` and `Step` automatically. It will also scan through all fields which have `shotgun_entity_type` defined (like our `current_user_name` field above). If the {% include product %} Entity is defined in the context, it will be able to automatically resolve the value. The current user is always tracked in the context, and in the above example, it would also be possible to pull data from fields on Shot, Sequence and Step since these are defined as part of the higher level path and therefore part of the context. However, trying to refer to an Asset entity in a field wouldn't work in the above example since Toolkit would have no way of knowing which asset in {% include product %} to pull the data from. ### Example - String field with two valid values @@ -993,21 +972,21 @@ Often times a studio will have a project that needs to save out ASCII and Binary maya_file_extension: type: str - choices: ["ma", "mb"] + choices: ["ma", "mb"] {% include info title="Note" content="the default apps use either `.ma` or `.mb` based on what's configured in the `templates.yml`. So, for example, if you want to change the work files app to save `.mb` instead of `.ma` in a project, you can change these three templates (for Shots):" %} maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.ma' - + If you instead end them with .mb, then the apps will save out as Maya binary: - + maya_shot_work: '@shot_root/work/maya/{name}.v{version}.mb' maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.mb' - maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.mb' + maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.mb' -Check out [The Paths Section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#The%20Paths%20Section) below for more details. +Check out [The Paths Section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Reference#The%20Paths%20Section) below for more details. ### Example - Disallowing a value @@ -1017,18 +996,18 @@ A string field for which the value "assets" is not allowed. This is useful if yo |--- sequence1 |--- sequence2 |--- sequence3 - \--- assets + \--- assets In order for Toolkit to correctly understand that the assets folder is not just another sequence, we can define that "assets" is not a valid value for the sequence template. sequence: type: str - exclusions: ["assets"] + exclusions: ["assets"] The exclusions field above allows us to define two templates that both correctly resolves: sequence_work_area: {sequence}/{shot}/work - asset_work_area: assets/{asset}/work + asset_work_area: assets/{asset}/work ### Example - Subsets of strings @@ -1041,19 +1020,19 @@ The following example extends a previous example and shows how to prefix filenam subset: '([A-Z])[a-z]* ([A-Z])[a-z]*' subset_format: '{0}{1}' - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{user_initials}_{name}.v{version}.nk + nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{user_initials}_{name}.v{version}.nk ## The Paths Section The Paths section specifies where work will be saved. All paths consist of at least a name and a definition, where the definition is a combination of key names in brackets interspersed with non-key values representing a path. For example, a definition for a shot work file might look like: - shot_work: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma + shot_work: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma With Sequence, Shot, Step and version being keys defined in the same template file. {% include info title="Note" content="If a string key's name matches the entity type of a dynamic schema folder that has an associated ShotGrid entity, then that folder name will be substituted in for the token. For example, if you are using a {Sequence} template key of type 'string' like the above snippet, and in your schema, you have a dynamic folder named 'sequence', and in its corresponding `sequence.yml` file, it's defined to be of type `shotgun_entity`, and is connected to the 'Sequence' entity type in ShotGrid. Toolkit will recognize that your template key corresponds to this dynamic folder's entity type (in that they are both Sequence). So, Toolkit will take the resulting folder name (i.e., the name of the specific sequence in question), and substitutes that in for the template key." %} -This form is required if any optional attributes need to be defined. Currently, the only optional attribute is `root_name`, which can be used to specify a project root for a path in a project that has multiple roots. [Multiple roots](https://developer.shotgridsoftware.com/9ea9dd4e/) are used when you'd like to add a new storage root to store some of your project files. +This form is required if any optional attributes need to be defined. Currently, the only optional attribute is `root_name`, which can be used to specify a project root for a path in a project that has multiple roots. [Multiple roots](https://developer.shotgridsoftware.com/9ea9dd4e/) are used when you'd like to add a new storage root to store some of your project files. `root_name: name_of_project_root` @@ -1061,7 +1040,7 @@ For example, it may look like this: shot_work: definition: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - root_name: primary + root_name: primary You need to use the above format if you want to use another storage root than the primary one. In this example, using this simple format implies that you are using the primary root for all entries. @@ -1079,16 +1058,16 @@ With name and version as key names defined in the same file. ## Using Optional Keys in Templates -Optional keys in templates are useful for a number of reasons. One common case is when `{SEQ}` is optional for rendered images. In this example, there can be a set of exrs that that are comprised of frame numbers, like `/path/to/render/shot.101.exr` (and 102, 103, etc), while you are also able to use the same template for quicktime movies, like `/path/to/render/shot.qt`. Another more common case is when you are rendering stereo images. If you are in a studio where the convention is: `left eye: file.LFT.exr, right eye: file.RGT.exr, stereo image: file.exr?`, you can make `{eye}` optional. +Optional keys in templates are useful for a number of reasons. One common case is when `{SEQ}` is optional for rendered images. In this example, there can be a set of exrs that that are comprised of frame numbers, like `/path/to/render/shot.101.exr` (and 102, 103, etc), while you are also able to use the same template for quicktime movies, like `/path/to/render/shot.qt`. Another more common case is when you are rendering stereo images. If you are in a studio where the convention is: `left eye: file.LFT.exr, right eye: file.RGT.exr, stereo image: file.exr?`, you can make `{eye}` optional. Optional sections can be defined using square brackets: - shot_work: sequences/{Shot}/work/{Shot}.[v{version}.]ma + shot_work: sequences/{Shot}/work/{Shot}.[v{version}.]ma The optional section must contain at least one key. If the path is resolved with no value for the key(s) in an optional section, the path will resolve as if that section did not exist in the definition. The example above can be thought of as two templates baked into a single definition: shot_work: sequences/{Shot}/work/{Shot}.v{version}.ma - shot_work: sequences/{Shot}/work/{Shot}.ma + shot_work: sequences/{Shot}/work/{Shot}.ma As you pass in a dictionary of fields, Toolkit will choose the right version of the template depending on the values: @@ -1096,13 +1075,13 @@ As you pass in a dictionary of fields, Toolkit will choose the right version of >>> template.apply_fields({"Shot":"ABC_123", "version": 12} /project/sequences/ABC_123/work/ABC_123.v12.ma >>> template.apply_fields({"Shot":"ABC_123"} - /project/sequences/ABC_123/work/ABC_123.ma + /project/sequences/ABC_123/work/ABC_123.ma # Advanced questions and troubleshooting ## How can I add a new entity type to my file structure? -Let's say you have been working on feature animations and shorts on your {% include product %} site, and now you have been awarded episodic work. Let's walk through how you can incorporate an episodic workflow to Toolkit. The first thing to do is to set up your hierarchy in {% include product %} for episodic work following the instructions [here](https://support.shotgunsoftware.com/hc/en-us/articles/115000019414). +Let's say you have been working on feature animations and shorts on your {% include product %} site, and now you have been awarded episodic work. Let's walk through how you can incorporate an episodic workflow to Toolkit. The first thing to do is to set up your hierarchy in {% include product %} for episodic work following the instructions [here](https://support.shotgunsoftware.com/hc/en-us/articles/115000019414). ![episode_hierarchy](images/file-system-config-reference/episode_hierarchy.jpg) @@ -1110,25 +1089,24 @@ Let's say you have been working on feature animations and shorts on your {% incl **Additional Reference:** -- [How does the Episode entity work?](https://support.shotgunsoftware.com/hc/en-us/articles/115000019414) -- [Customizing an entity's hierarchy](https://support.shotgunsoftware.com/hc/en-us/articles/219030828) - +- [How does the Episode entity work?](https://support.shotgunsoftware.com/hc/en-us/articles/115000019414) +- [Customizing an entity's hierarchy](https://support.shotgunsoftware.com/hc/en-us/articles/219030828) ### {% include product %} fields required for the Episode > Sequence > Shot hierarchy [You can choose to use any Custom Entity](https://support.shotgunsoftware.com/hc/en-us/articles/114094182834) for `Episode` (Site Preferences > Entities), or you can use the official Episode entity that was made available in {% include product %} [7.0.7.0](https://support.shotgunsoftware.com/hc/en-us/articles/220062367-7-0-Release-Notes#7_0_7_0). If you signed up for {% include product %} pre-7.0.7.0 (before 2017), the "TV Show" template uses `CustomEntity02` for Episodes. If you decide to use another entity that is not `CustomEntity02` or the official Episode entity, no worries! {% include product %} and Toolkit are flexible. Let's walk through both cases. -For the purpose of this exercise, we will use Episode (`CustomEntity02`) and the official Episode entity as examples of how to incorporate Episodes with the project hierarchy update (you can use either/or). First, the way to properly set up our Project's **Episode > Sequence > Shot** hierarchy is to ensure the following fields are in {% include product %}: +For the purpose of this exercise, we will use Episode (`CustomEntity02`) and the official Episode entity as examples of how to incorporate Episodes with the project hierarchy update (you can use either/or). First, the way to properly set up our Project's **Episode > Sequence > Shot** hierarchy is to ensure the following fields are in {% include product %}: #### Episode -a) **Using the official Episode entity:** the "Episode" entity may be the entity used when creating a TV Show project from the Project Template. +a) **Using the official Episode entity:** the "Episode" entity may be the entity used when creating a TV Show project from the Project Template. ![official_episode_entity](images/file-system-config-reference/official_episode_entity.png) **OR** -b) **Using a custom entity:** `CustomEntity02` may be the custom entity used when creating a TV Show project from the Project Template. _As noted previously, you can enable another custom entity and use it instead of `CustomEntity02`—just make sure to replace all `CustomEntity02`'s with the specific one that you have enabled._ +b) **Using a custom entity:** `CustomEntity02` may be the custom entity used when creating a TV Show project from the Project Template. _As noted previously, you can enable another custom entity and use it instead of `CustomEntity02`—just make sure to replace all `CustomEntity02`'s with the specific one that you have enabled._ ![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) @@ -1136,11 +1114,11 @@ b) **Using a custom entity:** `CustomEntity02` may be the custom entity used A single entity link called Episode (`sg_episode`) that links to the Episode entity is required. -**Using the official `Episode` Entity** +**Using the official `Episode` Entity** -**Using `CustomEntity02`** +**Using `CustomEntity02`** @@ -1148,17 +1126,17 @@ A single entity link called Episode (`sg_episode`) that links to the Episode ent A single entity field called Sequence (`sg_sequence`) that links to the Sequence entity. This should already exist as part of the TV Show Project Template in {% include product %}. -**Using the official `Episode` Entity** +**Using the official `Episode` Entity** -**Using `CustomEntity02`** +**Using `CustomEntity02`** ### Toolkit schema definition -Let's assume a hierarchy as follows (where the folders in `{}`s are dynamically named based on their name in {% include product %}): +Let's assume a hierarchy as follows (where the folders in `{}`s are dynamically named based on their name in {% include product %}): - {project_name} - shots @@ -1175,26 +1153,26 @@ Let's assume a hierarchy as follows (where the folders in `{}`s are dynamically #### Episodes -In your `config/core/schema/project/shots` folder, create a folder named `episode` with a corresponding `episode.yml` file in the same directory with the following content: +In your `config/core/schema/project/shots` folder, create a folder named `episode` with a corresponding `episode.yml` file in the same directory with the following content: -**Using the official `Episode` Entity** +**Using the official `Episode` Entity** # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "Episode" - + # {% include product %} filters to apply when getting the list of items - # this should be a list of dicts, each dict containing + # this should be a list of dicts, each dict containing # three fields: path, relation and values @@ -1203,92 +1181,91 @@ In your `config/core/schema/project/shots` folder, create a folder named `epi # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -**Using `CustomEntity02`** +**Using `CustomEntity02`** # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "CustomEntity02" - + # {% include product %} filters to apply when getting the list of items - # this should be a list of dicts, each dict containing + # this should be a list of dicts, each dict containing # three fields: path, relation and values # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] + filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] This tells Toolkit to create folders for every Episode in this project. #### Sequence -In your `config/core/schema/project/shots/episode` folder, create a folder named `sequence` with a corresponding `sequence.yml` file in the same directory with the following content: +In your `config/core/schema/project/shots/episode` folder, create a folder named `sequence` with a corresponding `sequence.yml` file in the same directory with the following content: # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "Sequence" - + # {% include product %} filters to apply when getting the list of items - # this should be a list of dicts, each dict containing + # this should be a list of dicts, each dict containing # three fields: path, relation and values # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "sg_episode", "relation": "is", "values": [ "$episode" ] } ]` + filters: [ { "path": "sg_episode", "relation": "is", "values": [ "$episode" ] } ]` This tells Toolkit to create folders for every Sequence that is linked to the Episode above it in the directory tree. #### Shots -In your `config/core/schema/project/shots/episode/sequence` folder, create a folder named `shot` with a corresponding `shot.yml` file in the same directory with the following content: - +In your `config/core/schema/project/shots/episode/sequence` folder, create a folder named `shot` with a corresponding `shot.yml` file in the same directory with the following content: # the type of dynamic content type: "shotgun_entity" - + # the {% include product %} field to use for the folder name name: "code" - + # the {% include product %} entity type to connect to entity_type: "Shot" - + # {% include product %} filters to apply when getting the list of items - # this should be a list of dicts, each dict containing + # this should be a list of dicts, each dict containing # three fields: path, relation and values # (this is std {% include product %} API syntax) # any values starting with $ are resolved into path objects - filters: [ { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } ]` + filters: [ { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } ]` This tells Toolkit to create folders for every Shot that is linked to the Sequence above it in the directory tree. @@ -1298,24 +1275,24 @@ After you've done this, your schema should reflect the following: #### Toolkit template definitions -In order to tell Toolkit that you are using Episodes in your schema, you need to create a new key in the [keys section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868#The%20Keys%20Section) at the top to define it: +In order to tell Toolkit that you are using Episodes in your schema, you need to create a new key in the [keys section](https://support.shotgunsoftware.com/hc/en-us/articles/219039868#The%20Keys%20Section) at the top to define it: -**Using the official `Episode` Entity** +**Using the official `Episode` Entity** keys: ... Episode: type: str - ... + ... -Then, in your template paths below, update the `shot_root` template, as well as any other template paths that are in the shot hierarchy, to match your episodic hierarchy by inserting `{Episode}` in the proper place to specify the episode in the directory structure: +Then, in your template paths below, update the `shot_root` template, as well as any other template paths that are in the shot hierarchy, to match your episodic hierarchy by inserting `{Episode}` in the proper place to specify the episode in the directory structure: ... paths: shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} - … + … -**Using `CustomEntity02`** +**Using `CustomEntity02`** keys: ... @@ -1323,47 +1300,45 @@ Then, in your template paths below, update the `shot_root` template, as well a type: str ... -Then, in your template paths below, update the `shot_root` template, as well as any other template paths that are in the shot hierarchy, to match your episodic hierarchy by inserting `{CustomEntity02}` in the proper place to specify the episode in the directory structure: +Then, in your template paths below, update the `shot_root` template, as well as any other template paths that are in the shot hierarchy, to match your episodic hierarchy by inserting `{CustomEntity02}` in the proper place to specify the episode in the directory structure: ... paths: shot_root: shots/{CustomEntity02}/{Sequence}/{Shot}/{Step} - … + … -That's all you need for the basic **Episode > Sequence > Shot** workflow! +That's all you need for the basic **Episode > Sequence > Shot** workflow! ## How can I set up a branch in my structure? -This relates to [Different file system layouts for different Pipeline Steps](https://support.shotgunsoftware.com/hc/en-us/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps), more specifically, if you are looking to add a branch to your structure. For example, you can have one structure for "Pipeline Step A" and another for all other Pipeline Steps. +This relates to [Different file system layouts for different Pipeline Steps](https://support.shotgunsoftware.com/hc/en-us/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps), more specifically, if you are looking to add a branch to your structure. For example, you can have one structure for "Pipeline Step A" and another for all other Pipeline Steps. -Let's say you are adding another kind of [Asset Type](https://support.shotgunsoftware.com/hc/en-us/articles/219030738-Customizing-existing-fields) to your Pipeline, and that new Asset Type is a Vehicle. You want to change the file structure for Vehicles so that it has different folders for different Pipeline Steps; for example, "geoprep" and "lookdev", with additional folders inside each of those Pipeline Step folders. In parallel to this update, the way that you create Assets currently should remain the same. Let's walk through how to update your pipeline to accommodate this new flow. +Let's say you are adding another kind of [Asset Type](https://support.shotgunsoftware.com/hc/en-us/articles/219030738-Customizing-existing-fields) to your Pipeline, and that new Asset Type is a Vehicle. You want to change the file structure for Vehicles so that it has different folders for different Pipeline Steps; for example, "geoprep" and "lookdev", with additional folders inside each of those Pipeline Step folders. In parallel to this update, the way that you create Assets currently should remain the same. Let's walk through how to update your pipeline to accommodate this new flow. **Step 1: Modify the schema** First, modify your schema to reflect the way your folder structure will look with the new Asset Type. -- Start by creating a new branch in the schema for this new Asset Type: vehicle. -- At the same level as `asset/` and `asset.yml`, add an `asset_vehicle/` folder and `asset_vehicle.yml`. -- These YAML files also have a filter setting in them. Modify the filter in your `asset.yml` so that it applies to all assets _except for_ vehicle, and then modify `asset_vehicle.yml` to apply _only to_ assets of type vehicle. [Here is an example of what those filters look like](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Configuration-Reference#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps). -- Now that you have two folders to represent `asset` and `asset_vehicles`, add all the folders underneath `asset_vehicle` that you expect to be created for those assets (e.g., `geoprep`, `lookdev`, etc.). - -- If you are saving and publishing files for these assets, you'll want to create templates, in `core/templates.yml`, that describe the file paths for saved and publish files. For example, in addition to [`maya_asset_work`](https://github.com/shotgunsoftware/tk-config-default/blob/v0.17.3/core/templates.yml#L480), you may create a template called `maya_asset_work_vehicle`, and its definition will be the templated path where you want to save Maya work files for vehicle assets. - +- Start by creating a new branch in the schema for this new Asset Type: vehicle. +- At the same level as `asset/` and `asset.yml`, add an `asset_vehicle/` folder and `asset_vehicle.yml`. +- These YAML files also have a filter setting in them. Modify the filter in your `asset.yml` so that it applies to all assets _except for_ vehicle, and then modify `asset_vehicle.yml` to apply _only to_ assets of type vehicle. [Here is an example of what those filters look like](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-File-System-Configuration-Reference#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps). +- Now that you have two folders to represent `asset` and `asset_vehicles`, add all the folders underneath `asset_vehicle` that you expect to be created for those assets (e.g., `geoprep`, `lookdev`, etc.). +- If you are saving and publishing files for these assets, you'll want to create templates, in `core/templates.yml`, that describe the file paths for saved and publish files. For example, in addition to [`maya_asset_work`](https://github.com/shotgunsoftware/tk-config-default/blob/v0.17.3/core/templates.yml#L480), you may create a template called `maya_asset_work_vehicle`, and its definition will be the templated path where you want to save Maya work files for vehicle assets. **Step 2: Create a new environment file** At this point, you have a directory structure for the new Asset Type, and you have templates that describe where to save and publish files in the new directory structure. Now, you need to tell Toolkit when to use these new templates. To do this, create a new environment file. -- Create a copy of `env/asset_step.yml` called `env/asset_vehicle_step.yml`. These two files will be identical, except `env/asset_vehicle_step.yml` will use your new templates. Replace any instances of `maya_asset_work` with `maya_asset_work_vehicle`. Do the same for any other vehicle templates you've created. -- Finally, you'll need to teach Toolkit when to pick your new environment. To do this, modify the [pick_environment](https://github.com/shotgunsoftware/tk-config-default/blob/master/core/hooks/pick_environment.py) core hook to return `asset_vehicle` or `asset_vehicle_step` when the asset in context is of type `vehicle` . Now, when you are working with an Asset of this new type (vehicle), Toolkit will know to use its environment configuration, and to therefore save and publish files to its alternate file system structure. +- Create a copy of `env/asset_step.yml` called `env/asset_vehicle_step.yml`. These two files will be identical, except `env/asset_vehicle_step.yml` will use your new templates. Replace any instances of `maya_asset_work` with `maya_asset_work_vehicle`. Do the same for any other vehicle templates you've created. +- Finally, you'll need to teach Toolkit when to pick your new environment. To do this, modify the [pick_environment](https://github.com/shotgunsoftware/tk-config-default/blob/master/core/hooks/pick_environment.py) core hook to return `asset_vehicle` or `asset_vehicle_step` when the asset in context is of type `vehicle` . Now, when you are working with an Asset of this new type (vehicle), Toolkit will know to use its environment configuration, and to therefore save and publish files to its alternate file system structure. ## How can I create a custom Pipeline Step using a custom entity? -In {% include product %} 7.0.6.0, [managing Pipeline Steps via the Admin menu](https://support.shotgunsoftware.com/hc/en-us/articles/222766227#managing_pipeline_steps) was introduced. With this feature, you can easily add custom fields to Pipeline Steps. **Pro Tip: In most cases, utilizing custom fields on Pipeline Steps helps keep your pipeline more organized than creating a custom entity to manage those Pipeline Steps.** +In {% include product %} 7.0.6.0, [managing Pipeline Steps via the Admin menu](https://support.shotgunsoftware.com/hc/en-us/articles/222766227#managing_pipeline_steps) was introduced. With this feature, you can easily add custom fields to Pipeline Steps. **Pro Tip: In most cases, utilizing custom fields on Pipeline Steps helps keep your pipeline more organized than creating a custom entity to manage those Pipeline Steps.** -However, in more advanced cases, it may be useful to have an alternative Pipeline Step. For instance, you might like to have the flexibility of different naming conventions and structures for production versus pipeline in the area of Pipeline Steps, as well as flexibility in naming and structuring them independently. While typically {% include product %}'s built-in Pipeline Steps are used for scheduling purposes, you may want to use another [Custom Entity](https://support.shotgunsoftware.com/hc/en-us/articles/114094182834) to structure the file system and group individual tasks together in the pipeline. You can accomplish this by creating a custom link field from a Task to a custom entity. This is then used by the system to group tasks together, via the step node. +However, in more advanced cases, it may be useful to have an alternative Pipeline Step. For instance, you might like to have the flexibility of different naming conventions and structures for production versus pipeline in the area of Pipeline Steps, as well as flexibility in naming and structuring them independently. While typically {% include product %}'s built-in Pipeline Steps are used for scheduling purposes, you may want to use another [Custom Entity](https://support.shotgunsoftware.com/hc/en-us/articles/114094182834) to structure the file system and group individual tasks together in the pipeline. You can accomplish this by creating a custom link field from a Task to a custom entity. This is then used by the system to group tasks together, via the step node. In the folder configuration, add two special options to tell it to use your custom step setup rather than {% include product %}'s built-in Pipeline Step: entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file + task_link_field: "sg_task_type" diff --git a/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md index f9abcb7c3..4d2f354a7 100644 --- a/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ b/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md @@ -9,7 +9,7 @@ lang: en ## Introduction -This document serves as a guide for administrators of {% include product %} integrations. It's one of three: user, admin, and developer. Our [User Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574) is intended for artists who will be the end users of {% include product %} integrations in their daily workflow, and our [Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513) is technical documentation for those writing Python code to extend the functionality. This document falls between those two: it's intended for those who are implementing {% include product %} integrations for a studio, managing software versions, and making storage decisions for published files. +This document serves as a guide for administrators of {% include product %} integrations. It's one of three: user, admin, and developer. Our [User Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574) is intended for artists who will be the end users of {% include product %} integrations in their daily workflow, and our [Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513) is technical documentation for those writing Python code to extend the functionality. This document falls between those two: it's intended for those who are implementing {% include product %} integrations for a studio, managing software versions, and making storage decisions for published files. ## Standard Pipeline Configurations @@ -17,23 +17,23 @@ At the heart of any Toolkit setup is the Pipeline Configuration, a set of YAML f ### The Basic Config -Our out-of-the-box integrations are designed to run without the need to set up or modify any configuration files. When you use our out-of-the-box integrations, there's nothing to administer, but Toolkit uses an implied Pipeline Configuration under the hood, and we call this Pipeline Configuration the Basic Config. The Basic Config makes three Toolkit apps – The Panel, Publisher, and Loader – available in all supported software packages, and looks to your Software Entities in {% include product %} to determine which software packages to display in {% include product %} Desktop. The Basic Config does not include filesystem location support. When you use out-of-the-box integrations on a project, your copy of the Basic Config is auto-updated whenever you launch Desktop, so you'll always have the latest version of our integrations. You can [subscribe to release notes here](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations), and [see the Basic Config in Github here](https://github.com/shotgunsoftware/tk-config-basic/). +Our out-of-the-box integrations are designed to run without the need to set up or modify any configuration files. When you use our out-of-the-box integrations, there's nothing to administer, but Toolkit uses an implied Pipeline Configuration under the hood, and we call this Pipeline Configuration the Basic Config. The Basic Config makes three Toolkit apps – The Panel, Publisher, and Loader – available in all supported software packages, and looks to your Software Entities in {% include product %} to determine which software packages to display in {% include product %} Desktop. The Basic Config does not include filesystem location support. When you use out-of-the-box integrations on a project, your copy of the Basic Config is auto-updated whenever you launch Desktop, so you'll always have the latest version of our integrations. You can [subscribe to release notes here](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations), and [see the Basic Config in Github here](https://github.com/shotgunsoftware/tk-config-basic/). ### The Default Config -This is the default starting point for our Advanced project setup. It includes [filesystem location support](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference) and a wider array of Toolkit apps and engines. +This is the default starting point for our Advanced project setup. It includes [filesystem location support](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference) and a wider array of Toolkit apps and engines. -You can [see the Default Config in Github here](https://github.com/shotgunsoftware/tk-config-default2). For a detailed description of the Default Config's structure, see the `config/env/README.md` file in your Pipeline Configuration, or [view it here in Github](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md). +You can [see the Default Config in Github here](https://github.com/shotgunsoftware/tk-config-default2). For a detailed description of the Default Config's structure, see the `config/env/README.md` file in your Pipeline Configuration, or [view it here in Github](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md). -If you're familiar with the old structure of the Default Config, take a look at the [Default Config Update FAQ](https://support.shotgunsoftware.com/hc/en-us/community/posts/115003376154-Default-Configuration-Update-FAQ). +If you're familiar with the old structure of the Default Config, take a look at the [Default Config Update FAQ](https://support.shotgunsoftware.com/hc/en-us/community/posts/115003376154-Default-Configuration-Update-FAQ). {% include info title="Note" content="Looking for the old config structure? With the v1.1 release of Integrations, we reorganized the structure of the Default Config to help maximize efficiency and readability, and to make it match the Basic Config's structure more closely You can still base projects on the legacy Default Config. Just choose 'Legacy Default' when prompted to select a configuration in the Desktop Set Up Project Wizard." %} ## The Publisher -The Publisher is designed to ease the transition between the out-of-the-box workflow and the full pipeline configuration. In the out-of-the-box setup, files are published in place, which avoids the need to define templates or filesystem schema. Once a project has gone through the advanced setup and has a full Pipeline Configuration, the same publish plugins will recognize the introduction of templates to the app settings and begin copying files to their designated publish location prior to publishing. Studios can therefore introduce template-based settings on a per-environment or per-DCC basis as needed for projects with full configurations. The Default Config comes fully configured for template-based workflows and is a good reference to see how templates can be configured for the Publish app. See the [tk-multi-publish2.yml file](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-multi-publish2.yml) in the Default Config in Github for more info. +The Publisher is designed to ease the transition between the out-of-the-box workflow and the full pipeline configuration. In the out-of-the-box setup, files are published in place, which avoids the need to define templates or filesystem schema. Once a project has gone through the advanced setup and has a full Pipeline Configuration, the same publish plugins will recognize the introduction of templates to the app settings and begin copying files to their designated publish location prior to publishing. Studios can therefore introduce template-based settings on a per-environment or per-DCC basis as needed for projects with full configurations. The Default Config comes fully configured for template-based workflows and is a good reference to see how templates can be configured for the Publish app. See the [tk-multi-publish2.yml file](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-multi-publish2.yml) in the Default Config in Github for more info. -For details on writing plugins for the Publisher, see the [Publisher section of our Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513-Integrations-Developer-Guide#Publisher). +For details on writing plugins for the Publisher, see the [Publisher section of our Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513-Integrations-Developer-Guide#Publisher). ## Configuring software launches @@ -41,22 +41,22 @@ It’s simple to rely on {% include product %}’s auto-detection of host applic When you create a new {% include product %} site, it will have a set of default Software entities—one for each supported host application. You can modify these and add your own to manage the software that shows up in Desktop exactly how you want it. -To see your Software entities in {% include product %}, open the Admin menu by clicking on the profile icon in the upper right corner of the screen, and choose `Software`. +To see your Software entities in {% include product %}, open the Admin menu by clicking on the profile icon in the upper right corner of the screen, and choose `Software`. The Software entity has the following fields: -- **Software Name:** The display name of the Software in Desktop. -- **Thumbnail:** Uploaded image file for Desktop icon. -- **Status:** Controls whether or not the Software is available. -- **Engine:** The name of the integration for the content creation tool. -- **Products:** For Software packages that include variants (e.g., Houdini vs. Houdini FX), you can specify a comma separated list here. Valid only in auto-detect mode, not manual mode. -- **Versions:** Specific versions of the software to display. You can specify a comma separated list here. Valid only in auto-detect mode, not manual mode. -- **Group:** Entities with the same value for the `Group` field will be grouped under a single icon in Desktop and a single menu in {% include product %}. For example, you could create an FX group that includes Houdini and Nuke. -- **Group Default**: When one member of a group has `Group Default` checked, clicking the icon or menu item for the group will launch this software. -- **Projects:** A way to restrict software to certain projects. -- **User Restrictions:** A way to restrict software to certain users or groups. -- **Linux/Mac/Windows Path:** Use these fields to explicitly specify an OS-specific path to software. -- **Linux/Mac/Windows Args:** Commandline args to append to the command when launching the Software. +- **Software Name:** The display name of the Software in Desktop. +- **Thumbnail:** Uploaded image file for Desktop icon. +- **Status:** Controls whether or not the Software is available. +- **Engine:** The name of the integration for the content creation tool. +- **Products:** For Software packages that include variants (e.g., Houdini vs. Houdini FX), you can specify a comma separated list here. Valid only in auto-detect mode, not manual mode. +- **Versions:** Specific versions of the software to display. You can specify a comma separated list here. Valid only in auto-detect mode, not manual mode. +- **Group:** Entities with the same value for the `Group` field will be grouped under a single icon in Desktop and a single menu in {% include product %}. For example, you could create an FX group that includes Houdini and Nuke. +- **Group Default**: When one member of a group has `Group Default` checked, clicking the icon or menu item for the group will launch this software. +- **Projects:** A way to restrict software to certain projects. +- **User Restrictions:** A way to restrict software to certain users or groups. +- **Linux/Mac/Windows Path:** Use these fields to explicitly specify an OS-specific path to software. +- **Linux/Mac/Windows Args:** Commandline args to append to the command when launching the Software. We can learn a lot about how these fields work together by demonstrating some ways of using them. @@ -70,8 +70,8 @@ If these three versions of Maya are installed in the standard location on your f A few things to note here: -- When {% include product %} auto-detects your software, a single Software entity generates the menu items for all versions. -- None of the Path fields have values specified. The Software entity is in auto-detect mode, so the App is assumed to be in the standard location. +- When {% include product %} auto-detects your software, a single Software entity generates the menu items for all versions. +- None of the Path fields have values specified. The Software entity is in auto-detect mode, so the App is assumed to be in the standard location. These will show up in Desktop as you see here: one icon for Maya, with a drop-down listing all the available versions. If you click on the icon itself, you’ll launch the latest version of Maya. @@ -83,22 +83,22 @@ It’s perfectly fine to store Maya in a non-standard location in your studio. Y Some notes here: -- Unlike in auto-detect mode, here you have a Software entity for each version of a given software package. -- In order to group them together, use the `Group` and `Group Default` fields. Software entities that share the same value for `Group` will be grouped in Desktop in a dropdown under a single icon, which uses the `Group` value as its name. -- When you click on that icon itself, you’ll launch the software within the group with `Group Default`checked. -- **When you specify a value for _any_ of Linux Path, Mac Path, or Windows Path on a Software entity, that entity will shift to Manual mode.** Unlike auto-detect mode, where the software _would_ show up in Desktop when a path field is empty, in manual mode, a software package will _only_ show up on a given operating system if a path is specified for it and the file exists at the specified path. -- In this example, none of the three Maya versions would show up in Desktop on Windows because no `Windows Path` has been specified. +- Unlike in auto-detect mode, here you have a Software entity for each version of a given software package. +- In order to group them together, use the `Group` and `Group Default` fields. Software entities that share the same value for `Group` will be grouped in Desktop in a dropdown under a single icon, which uses the `Group` value as its name. +- When you click on that icon itself, you’ll launch the software within the group with `Group Default`checked. +- **When you specify a value for _any_ of Linux Path, Mac Path, or Windows Path on a Software entity, that entity will shift to Manual mode.** Unlike auto-detect mode, where the software _would_ show up in Desktop when a path field is empty, in manual mode, a software package will _only_ show up on a given operating system if a path is specified for it and the file exists at the specified path. +- In this example, none of the three Maya versions would show up in Desktop on Windows because no `Windows Path` has been specified. ### Example: Restrict by users or groups -Now, say with that last example that we’re not ready to make Maya 2018 available to all users just yet. But we do want TDs, Devs, and our QA engineer, Tessa Tester, to be able to access it. We can achieve this with the `User Restrictions` field. Here’s an example: +Now, say with that last example that we’re not ready to make Maya 2018 available to all users just yet. But we do want TDs, Devs, and our QA engineer, Tessa Tester, to be able to access it. We can achieve this with the `User Restrictions` field. Here’s an example: ![](images/Integration-admin-guide/maya_software_restrictions.png) We made a couple changes from the last example: -- The group default is now Maya 2017. We want that to be the production version, so with that box checked, clicking the icon for Maya will now go to this version. -- We’ve added a few values to the `User Restrictions` field: It can take both users and groups, and we’ve added our Dev and TD groups, as well as the user Tessa Tester. Now, only those people will see Maya 2018 in Desktop. +- The group default is now Maya 2017. We want that to be the production version, so with that box checked, clicking the icon for Maya will now go to this version. +- We’ve added a few values to the `User Restrictions` field: It can take both users and groups, and we’ve added our Dev and TD groups, as well as the user Tessa Tester. Now, only those people will see Maya 2018 in Desktop. ### Example: Restrict software versions by project @@ -108,100 +108,94 @@ Sometimes you want to do more complex version management across projects in your A few important things to note: -- We’ve removed the `Group` and `Group Default` values here, as only one Maya version will ever show up in Desktop for a given environment. -- We’ve set the `Software Name` for all three versions to “Maya”. This way, on every project, users will have an icon with the same name, but it will point to different versions depending on what’s configured here. -- We’ve set Maya 2016’s `Status` field to `Disabled`. We are no longer using this version in our studio, and this field toggles global visibility across all projects. -- We’ve specified values for `Projects` for Maya 2017 and Maya 2018. This `Projects` field acts as a restriction. Maya 2017 will _only_ show up in the Chicken Planet project, and Maya 2018 will only show up in Chicken Planet II. -- Note that once you’ve specified a value for `Projects` for a Software entity, that Software will only show up in the projects you've specified. So, if you have other projects in your studio in addition to the Chicken Planet series, you’ll need to specify software for them explicitly. +- We’ve removed the `Group` and `Group Default` values here, as only one Maya version will ever show up in Desktop for a given environment. +- We’ve set the `Software Name` for all three versions to “Maya”. This way, on every project, users will have an icon with the same name, but it will point to different versions depending on what’s configured here. +- We’ve set Maya 2016’s `Status` field to `Disabled`. We are no longer using this version in our studio, and this field toggles global visibility across all projects. +- We’ve specified values for `Projects` for Maya 2017 and Maya 2018. This `Projects` field acts as a restriction. Maya 2017 will _only_ show up in the Chicken Planet project, and Maya 2018 will only show up in Chicken Planet II. +- Note that once you’ve specified a value for `Projects` for a Software entity, that Software will only show up in the projects you've specified. So, if you have other projects in your studio in addition to the Chicken Planet series, you’ll need to specify software for them explicitly. ### Example: Add your own Software There are several reasons you might add a new software entity in addition to those that {% include product %} Desktop has auto-detected on your system: -- You want to make an application for which there is no engine available to your users through Desktop. -- You have in-house software, or third-party software that we don’t have an integration for, for which you’ve written your own engine. -- Your software doesn’t live in a standard location, so you want to point {% include product %} to it manually. (This case was described in the “Grouping versions of the same Application, Manual mode” example above.) +- You want to make an application for which there is no engine available to your users through Desktop. +- You have in-house software, or third-party software that we don’t have an integration for, for which you’ve written your own engine. +- Your software doesn’t live in a standard location, so you want to point {% include product %} to it manually. (This case was described in the “Grouping versions of the same Application, Manual mode” example above.) -In these cases, you can add your own Software entities. You'll need to have a value for the `Software Name`field. If you're using an in-house engine for your software, specify the engine name in the `Engine` field. Some studios may want to include apps in Desktop that don’t have {% include product %} integrations, as a convenience for artists. Your artists can launch the app straight from Desktop. You can even use all of the settings above to manage versions and usage restrictions. In this case, leave the `Engine` field empty, but you'll need to specify a value for at least one of `Mac Path`, `Linux Path`, and `Windows Path`. +In these cases, you can add your own Software entities. You'll need to have a value for the `Software Name`field. If you're using an in-house engine for your software, specify the engine name in the `Engine` field. Some studios may want to include apps in Desktop that don’t have {% include product %} integrations, as a convenience for artists. Your artists can launch the app straight from Desktop. You can even use all of the settings above to manage versions and usage restrictions. In this case, leave the `Engine` field empty, but you'll need to specify a value for at least one of `Mac Path`, `Linux Path`, and `Windows Path`. ## Configuring published file path resolution -When you publish a file, the Publisher creates a PublishedFile entity in {% include product %}, which includes a [File/Link](https://support.shotgunsoftware.com/hc/en-us/articles/219031008-Field-types) field called `Path`. Later on, a different user may try to load this file into their own work session using the Loader. The Loader uses complex logic to resolve a valid local path to the PublishedFile across operating systems. +When you publish a file, the Publisher creates a PublishedFile entity in {% include product %}, which includes a [File/Link](https://support.shotgunsoftware.com/hc/en-us/articles/219031008-Field-types) field called `Path`. Later on, a different user may try to load this file into their own work session using the Loader. The Loader uses complex logic to resolve a valid local path to the PublishedFile across operating systems. -The way in which the Loader attempts to resolve the publish data into a path depends on whether the the publish is associated with a local file link or a `file://` URL. +The way in which the Loader attempts to resolve the publish data into a path depends on whether the the publish is associated with a local file link or a `file://` URL. ### Resolving local file links -Local file links are generated automatically at publish time if the path you are publishing matches any local storage defined in the {% include product %} Site Preferences. If the publish is a local file link, its local operating system representation will be used. Read more about local file links [here](https://support.shotgunsoftware.com/hc/en-us/articles/219030938-Linking-to-local-files). +Local file links are generated automatically at publish time if the path you are publishing matches any local storage defined in the {% include product %} Site Preferences. If the publish is a local file link, its local operating system representation will be used. Read more about local file links [here](https://support.shotgunsoftware.com/hc/en-us/articles/219030938-Linking-to-local-files). -If a local storage doesn’t define a path for the operating system you are currently using, you can use an environment variable to specify your local storage root. The name of the environment variable should take the form of `SHOTGUN_PATH__`. So, if you wanted to define a path on a Mac for a storage root called "Renders", you'd create a `SHOTGUN_PATH_MAC_RENDERS` environment variable. Let's go deeper with that example: +If a local storage doesn’t define a path for the operating system you are currently using, you can use an environment variable to specify your local storage root. The name of the environment variable should take the form of `SHOTGUN_PATH__`. So, if you wanted to define a path on a Mac for a storage root called "Renders", you'd create a `SHOTGUN_PATH_MAC_RENDERS` environment variable. Let's go deeper with that example: -- Say your {% include product %} site has a storage root called "Renders", with the following paths specified: -- Linux path: `/studio/renders/` -- Windows path: `S:\renders\` -- Mac path: `` - -- You are on a Mac. - -- You want to load a publish with the path `/studio/renders/sq100/sh001/bg/bg.001.exr` into your session. +- Say your {% include product %} site has a storage root called "Renders", with the following paths specified: +- Linux path: `/studio/renders/` +- Windows path: `S:\renders\` +- Mac path: `` +- You are on a Mac. +- You want to load a publish with the path `/studio/renders/sq100/sh001/bg/bg.001.exr` into your session. -The Loader can parse the path and deduce that `/studio/renders/` is the storage root part of it, but no storage root is defined for Mac. So, it will look for a `SHOTGUN_PATH_MAC_RENDERS` environment variable, and if it finds one, it will replace `/studio/renders` in the path with its value. +The Loader can parse the path and deduce that `/studio/renders/` is the storage root part of it, but no storage root is defined for Mac. So, it will look for a `SHOTGUN_PATH_MAC_RENDERS` environment variable, and if it finds one, it will replace `/studio/renders` in the path with its value. -**Note:** If you define a `SHOTGUN_PATH_MAC_RENDERS` environment variable, and the local storage Renders _does_have Mac path set, the local storage value will be used and a warning will be logged. +**Note:** If you define a `SHOTGUN_PATH_MAC_RENDERS` environment variable, and the local storage Renders \_does_have Mac path set, the local storage value will be used and a warning will be logged. -**Note:** If no storage can be resolved for the current operating system, a `PublishPathNotDefinedError` is raised. +**Note:** If no storage can be resolved for the current operating system, a `PublishPathNotDefinedError` is raised. ### Resolving file URLs -The Loader also supports the resolution of `file://` URLs. At publish time, if the path you are publishing does not match any of your site's local storages, the path is saved as a `file://` URL. Contrary to local file links, these paths are not stored in a multi-OS representation, but are just defined for the operating system where they were created. +The Loader also supports the resolution of `file://` URLs. At publish time, if the path you are publishing does not match any of your site's local storages, the path is saved as a `file://` URL. Contrary to local file links, these paths are not stored in a multi-OS representation, but are just defined for the operating system where they were created. -If you are trying to resolve a `file://` URL on a different operating system from the one where where the URL was created, the Loader will attempt to resolve it into a valid path using a series of approaches: +If you are trying to resolve a `file://` URL on a different operating system from the one where where the URL was created, the Loader will attempt to resolve it into a valid path using a series of approaches: -- First, it will look for the three environment variables `SHOTGUN_PATH_WINDOWS`, `SHOTGUN_PATH_MAC`, and `SHOTGUN_PATH_LINUX`. If these are defined, the method will attempt to translate the path this way. For example, if you are trying to resolve `file:///prod/proj_x/assets/bush/file.txt` on Windows, you could set up `SHOTGUN_PATH_WINDOWS=P:\prod` and `SHOTGUN_PATH_LINUX=/prod` in order to hint the way the path should be resolved. -- If you want to use more than one set of environment variables, in order to represent multiple storages, this is possible by extending the above variable name syntax with a suffix: -- If you have a storage for renders, you could for example define `SHOTGUN_PATH_LINUX_RENDERS`, `SHOTGUN_PATH_MAC_RENDERS`, and `SHOTGUN_PATH_WINDOWS_RENDERS` in order to provide a translation mechanism for all `file://` URLs published that refer to data inside your render storage. -- Then, if you also have a storage for editorial data, you could define `SHOTGUN_PATH_LINUX_EDITORIAL`, `SHOTGUN_PATH_MAC_EDITORIAL`, and `SHOTGUN_PATH_WINDOWS_EDITORIAL`, in order to provide a translation mechanism for your editorial storage roots. +- First, it will look for the three environment variables `SHOTGUN_PATH_WINDOWS`, `SHOTGUN_PATH_MAC`, and `SHOTGUN_PATH_LINUX`. If these are defined, the method will attempt to translate the path this way. For example, if you are trying to resolve `file:///prod/proj_x/assets/bush/file.txt` on Windows, you could set up `SHOTGUN_PATH_WINDOWS=P:\prod` and `SHOTGUN_PATH_LINUX=/prod` in order to hint the way the path should be resolved. +- If you want to use more than one set of environment variables, in order to represent multiple storages, this is possible by extending the above variable name syntax with a suffix: +- If you have a storage for renders, you could for example define `SHOTGUN_PATH_LINUX_RENDERS`, `SHOTGUN_PATH_MAC_RENDERS`, and `SHOTGUN_PATH_WINDOWS_RENDERS` in order to provide a translation mechanism for all `file://` URLs published that refer to data inside your render storage. +- Then, if you also have a storage for editorial data, you could define `SHOTGUN_PATH_LINUX_EDITORIAL`, `SHOTGUN_PATH_MAC_EDITORIAL`, and `SHOTGUN_PATH_WINDOWS_EDITORIAL`, in order to provide a translation mechanism for your editorial storage roots. Once you have standardized on these environment variables, you could consider converting them into a {% include product %} local storage. Once they are defined in the {% include product %} preferences, they will be automatically picked up and no environment variables will be needed. -- In addition to the above, all local storages defined in the {% include product %} preferences will be handled the same way. -- If a local storage has been defined, but an operating system is missing, this can be supplied via an environment variable. For example, if there is a local storage named `Renders` that is defined on Linux and Windows, you can extend to support mac by creating an environment variable named `SHOTGUN_PATH_MAC_RENDERS`. The general syntax for this is `SHOTGUN_PATH__`. -- If no root matches, the file path will be returned as is. +- In addition to the above, all local storages defined in the {% include product %} preferences will be handled the same way. +- If a local storage has been defined, but an operating system is missing, this can be supplied via an environment variable. For example, if there is a local storage named `Renders` that is defined on Linux and Windows, you can extend to support mac by creating an environment variable named `SHOTGUN_PATH_MAC_RENDERS`. The general syntax for this is `SHOTGUN_PATH__`. +- If no root matches, the file path will be returned as is. Here's an example: -Say you've published the file `/projects/some/file.txt` on Linux, and a {% include product %} publish with the URL `file:///projects/some/file.txt` was generated. In your studio, the Linux path `/projects` equates to `Q:\projects` on Windows, and hence you expect the full path to be translated to `Q:\projects\some\file.txt`. +Say you've published the file `/projects/some/file.txt` on Linux, and a {% include product %} publish with the URL `file:///projects/some/file.txt` was generated. In your studio, the Linux path `/projects` equates to `Q:\projects` on Windows, and hence you expect the full path to be translated to `Q:\projects\some\file.txt`. All of the following setups would handle this: -- A general environment-based override: -- `SHOTGUN_PATH_LINUX=/projects` -- `SHOTGUN_PATH_WINDOWS=Q:\projects` -- `SHOTGUN_PATH_MAC=/projects` - -- A {% include product %} local storage called “Projects”, set up with: - -- Linux Path: `/projects` -- Windows Path: `Q:\projects` -- Mac Path: `/projects` - -- A {% include product %} local storage called “Projects”, augmented with an environment variable: - -- Linux Path: `/projects` -- `Windows Path:`` -- `Mac Path:`/projects` -- `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` - -**Note:** If you have a local storage `Renders` defined in {% include product %} with `Linux path` set, and also a `SHOTGUN_PATH_LINUX_RENDERS` environment variable defined, the storage will take precedence, the environment variable will be ignored, and a warning will be logged. Generally speaking, local storage definitions always take precedence over environment variables. +- A general environment-based override: +- `SHOTGUN_PATH_LINUX=/projects` +- `SHOTGUN_PATH_WINDOWS=Q:\projects` +- `SHOTGUN_PATH_MAC=/projects` +- A {% include product %} local storage called “Projects”, set up with: +- Linux Path: `/projects` +- Windows Path: `Q:\projects` +- Mac Path: `/projects` +- A {% include product %} local storage called “Projects”, augmented with an environment variable: +- Linux Path: `/projects` +- `Windows Path:`` +- `Mac Path:`/projects` +- `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` + +**Note:** If you have a local storage `Renders` defined in {% include product %} with `Linux path` set, and also a `SHOTGUN_PATH_LINUX_RENDERS` environment variable defined, the storage will take precedence, the environment variable will be ignored, and a warning will be logged. Generally speaking, local storage definitions always take precedence over environment variables. ### Advanced configuration -For information on the underlying method that performs the resolution of PublishedFile paths, take a look at our [developer reference docs](http://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.resolve_publish_path). +For information on the underlying method that performs the resolution of PublishedFile paths, take a look at our [developer reference docs](http://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.resolve_publish_path). -If you are using Advanced Project Setup, you can add support beyond local file links and `file://` URLs by customizing the `resolve_publish` core hook. Possible customizations include: +If you are using Advanced Project Setup, you can add support beyond local file links and `file://` URLs by customizing the `resolve_publish` core hook. Possible customizations include: -- Publishes with associated uploaded files could be automatically downloaded into an appropriate cache location by the core hook and the path would be be returned. -- Custom URL schemes (such as `perforce://`) could be resolved into local paths. +- Publishes with associated uploaded files could be automatically downloaded into an appropriate cache location by the core hook and the path would be be returned. +- Custom URL schemes (such as `perforce://`) could be resolved into local paths. ## Browser Integration @@ -227,7 +221,7 @@ Hosting a websocket server within the {% include product %} Desktop app was, and **Websockets v2 via {% include product %} Desktop** -The second iteration of the websocket server’s RPC API changes the underlying mechanism used to get, cache, and execute Toolkit actions. This implementation addresses a number of performance issues related to the earlier browser integration implementations, improves the visual organization of the action menus, and adds support for [out-of-the-box {% include product %} Integrations](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-User-Guide#Getting%20started%20with%20Shotgun%20Desktop), which work without explicitly configuring Toolkit. This is the current implementation of browser integration. +The second iteration of the websocket server’s RPC API changes the underlying mechanism used to get, cache, and execute Toolkit actions. This implementation addresses a number of performance issues related to the earlier browser integration implementations, improves the visual organization of the action menus, and adds support for [out-of-the-box {% include product %} Integrations](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-User-Guide#Getting%20started%20with%20Shotgun%20Desktop), which work without explicitly configuring Toolkit. This is the current implementation of browser integration. ### Configuration @@ -235,23 +229,23 @@ To control what actions are presented to the user for each entity type, you modi **Which engine configuration?** -The Toolkit engine that manages Toolkit actions within the {% include product %} web app is `tk-shotgun`, so it’s this engine’s configuration that controls what shows up in the action menus. +The Toolkit engine that manages Toolkit actions within the {% include product %} web app is `tk-shotgun`, so it’s this engine’s configuration that controls what shows up in the action menus. ![](images/Integration-admin-guide/tk-shotgun_config.png) -In the above example from [tk-config-basic](https://github.com/shotgunsoftware/tk-config-basic/), there are two apps configured that will result in a number of engine commands turned into menu actions. Toolkit apps will register commands that are to be included in the action menu, including launcher commands for each software package found on the local system that correspond to the list of [Software entities](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493#Configuring%20software%20launches) in the {% include product %} site. The result is the list of menu actions shown here: +In the above example from [tk-config-basic](https://github.com/shotgunsoftware/tk-config-basic/), there are two apps configured that will result in a number of engine commands turned into menu actions. Toolkit apps will register commands that are to be included in the action menu, including launcher commands for each software package found on the local system that correspond to the list of [Software entities](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493#Configuring%20software%20launches) in the {% include product %} site. The result is the list of menu actions shown here: ![](images/Integration-admin-guide/action_menu.png) -The browser integration code found installations of Houdini, Maya, Nuke, and Photoshop on the user's system, which resulted in menu actions for launching each of those integrations. Note that in a given environment configuration file, the _engine_ for a Software entity needs to be present in order for that Software's launcher to show up for entities of that environment. So, in this example, the `tk-houdini`, `tk-maya`, `tk-nuke`, and `tk-photoshopcc` engines must all be present in the file from which this snippet was taken. If you wanted to remove, for example, Maya from the list of launchers on this entity, you could just remove the `tk-maya` engine block from the environment config file. +The browser integration code found installations of Houdini, Maya, Nuke, and Photoshop on the user's system, which resulted in menu actions for launching each of those integrations. Note that in a given environment configuration file, the _engine_ for a Software entity needs to be present in order for that Software's launcher to show up for entities of that environment. So, in this example, the `tk-houdini`, `tk-maya`, `tk-nuke`, and `tk-photoshopcc` engines must all be present in the file from which this snippet was taken. If you wanted to remove, for example, Maya from the list of launchers on this entity, you could just remove the `tk-maya` engine block from the environment config file. In addition to these launchers, the Publish app’s “Publish…” command is included in the menu. **Which YML file?** -You can take one of two paths: making use of the primary environment configuration (`config/env/*.yml`), as controlled by the config’s [pick_environment.py core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py), or the legacy approach employed by [tk-config-default](https://github.com/shotgunsoftware/tk-config-default/), which uses `config/env/shotgun_.yml` files. +You can take one of two paths: making use of the primary environment configuration (`config/env/*.yml`), as controlled by the config’s [pick_environment.py core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py), or the legacy approach employed by [tk-config-default](https://github.com/shotgunsoftware/tk-config-default/), which uses `config/env/shotgun_.yml` files. -In the case where the standard environment files are used, browser integration uses the `pick_environment`core hook to determine which environment configuration file to use for a given entity’s action menu. In the simplest case, the environment corresponds to the entity type. For example, if you right-click on a Shot, the resulting action menu will be configured by the `tk-shotgun` block in `config/env/shot.yml`. You can customize the `pick_environment` hook to use more complex logic. Should there be no `tk-shotgun` engine configured in the standard environment file, a fallback occurs if a `shotgun_.yml` file exists. This allows browser integration to work with legacy configurations that make use of the entity-specific environment files. +In the case where the standard environment files are used, browser integration uses the `pick_environment`core hook to determine which environment configuration file to use for a given entity’s action menu. In the simplest case, the environment corresponds to the entity type. For example, if you right-click on a Shot, the resulting action menu will be configured by the `tk-shotgun` block in `config/env/shot.yml`. You can customize the `pick_environment` hook to use more complex logic. Should there be no `tk-shotgun` engine configured in the standard environment file, a fallback occurs if a `shotgun_.yml` file exists. This allows browser integration to work with legacy configurations that make use of the entity-specific environment files. **_Tip: Removing Software from the Browser Launchers with tk-config-default2_** @@ -261,9 +255,10 @@ With tk-config-default2, updates should be applied to config/env/includes/settin As an example, let’s remove Mari from the list of options when launching from an Asset through the browser. -First, navigate to [`config/env/asset.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47) and notice how the `tk-shotgun` engine engine block is pointing to [`@settings.tk-shotgun.asset`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47). The `@` symbol signifies that the value for the configuration is coming from an included file. This means you'll need to go to your [env/includes/settings/`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml) to make the update. +First, navigate to [`config/env/asset.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47) and notice how the `tk-shotgun` engine engine block is pointing to [`@settings.tk-shotgun.asset`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47). The `@` symbol signifies that the value for the configuration is coming from an included file. This means you'll need to go to your [env/includes/settings/`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml) to make the update. + +While in your `env/includes/settings/tk-shotgun.yml`, notice how each block is per Entity. So, for instance, Asset first: -While in your `env/includes/settings/tk-shotgun.yml`, notice how each block is per Entity. So, for instance, Asset first: ``` # asset @@ -277,7 +272,7 @@ settings.tk-shotgun.asset: tk-shotgun-folders: "@settings.tk-shotgun-folders" tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" location: "@engines.tk-shotgun.location" - ``` +``` To remove Mari from the list of options on an Asset in the browser, remove the Mari line ([`tk-multi-launchmari: "@settings.tk-multi-launchapp.mari"`](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-shotgun.yml#L29)): @@ -317,15 +312,15 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop ### Hook Methods -A `browser_integration.py` hook is included in `tk-framework-desktopserver`, which provides the following hook methods: +A `browser_integration.py` hook is included in `tk-framework-desktopserver`, which provides the following hook methods: -- `get_cache_key`: This method determines the cache entry's key for the given configuration URI, project entity, and entity type. The default implementation combines the configuration URI and entity type. -- `get_site_state_data`: This method can be used to include additional queried data from {% include product %} into the hash that's used to test the validity of cached data. By default, the state of all Software entities that exist on the site are used, but if additional data should be included in the hash, that can be implemented in this hook method. -- `process_commands`: This method provides a place to customize or alter the commands that are to be returned to the {% include product %} web application. The data structure provided to the method is a list of dictionaries, with each dictionary representing a single menu action. Data can be altered, filtered out, or added into the list as is necessary and will be reflected in the menu requesting Toolkit actions immediately. +- `get_cache_key`: This method determines the cache entry's key for the given configuration URI, project entity, and entity type. The default implementation combines the configuration URI and entity type. +- `get_site_state_data`: This method can be used to include additional queried data from {% include product %} into the hash that's used to test the validity of cached data. By default, the state of all Software entities that exist on the site are used, but if additional data should be included in the hash, that can be implemented in this hook method. +- `process_commands`: This method provides a place to customize or alter the commands that are to be returned to the {% include product %} web application. The data structure provided to the method is a list of dictionaries, with each dictionary representing a single menu action. Data can be altered, filtered out, or added into the list as is necessary and will be reflected in the menu requesting Toolkit actions immediately. ### Logs -Logs for browser integration can be found in Toolkit’s [standard log location](https://developer.shotgridsoftware.com/38c5c024/). The relevant log files are `tk-desktop.log` and `tk-shotgun.log`. In addition, if you are using Google Chrome, some relevant log output is sometimes available in the developer console within the browser. +Logs for browser integration can be found in Toolkit’s [standard log location](https://developer.shotgridsoftware.com/38c5c024/). The relevant log files are `tk-desktop.log` and `tk-shotgun.log`. In addition, if you are using Google Chrome, some relevant log output is sometimes available in the developer console within the browser. ### Troubleshooting @@ -338,13 +333,11 @@ The complex nature of communicating from a web application with the local deskto This likely means one of three things: 1. {% include product %} Desktop is not currently running on the local machine. It seems obvious, but it is definitely worth double checking. - 2. Chrome or the Python websocket server has refused the connection, resulting in the {% include product %} web application being unable to communicate with {% include product %} Desktop. This situation is most likely related to the self-signed certificates that allow the connection to proceed when requested. Regenerating these certificates from scratch often resolves the issue, and can be triggered from {% include product %} Desktop, as shown below. - ![](images/Integration-admin-guide/regenerate_certs.png) -1. {% include product %} Desktop’s websocket server failed to start on launch. This situation is likely limited to situations where a bad release of the websocket server has gone out to the public, which should be exceedingly rare. In this situation, logging will be present in [tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) explaining the error, which can be [sent to {% include product %}’s support team](https://support.shotgunsoftware.com/hc/en-us/requests/new). +1. {% include product %} Desktop’s websocket server failed to start on launch. This situation is likely limited to situations where a bad release of the websocket server has gone out to the public, which should be exceedingly rare. In this situation, logging will be present in [tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) explaining the error, which can be [sent to {% include product %}’s support team](https://support.shotgunsoftware.com/hc/en-us/requests/new). **No actions are shown in the action menu** @@ -352,17 +345,14 @@ This likely means one of three things: This is indicative of a configuration problem if actions were expected for this entity type. Some possible issues: -1. The `tk-shotgun` engine is configured in the correct environment YAML file, but there are no apps present in that configuration. In this case, it’s likely that the intention was for no actions to be present for this entity type. - -2. The `tk-shotgun` engine is configured in the correct environment YML file, and apps are present, but actions still do not appear in the menu. This is likely due to apps failing to initialize. In this case, there will be information in [tk-shotgun.log and tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) describing the problems. - -3. The environment that corresponds to this entity type does not contain configuration for `tk-shotgun`. The end result here is the same as #1 on this list. In this case, you can look at the pipeline configuration’s `pick_environment` hook to determine which environment is being loaded for this entity type, and the configuration of `tk-shotgun` can be verified there. - +1. The `tk-shotgun` engine is configured in the correct environment YAML file, but there are no apps present in that configuration. In this case, it’s likely that the intention was for no actions to be present for this entity type. +2. The `tk-shotgun` engine is configured in the correct environment YML file, and apps are present, but actions still do not appear in the menu. This is likely due to apps failing to initialize. In this case, there will be information in [tk-shotgun.log and tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) describing the problems. +3. The environment that corresponds to this entity type does not contain configuration for `tk-shotgun`. The end result here is the same as #1 on this list. In this case, you can look at the pipeline configuration’s `pick_environment` hook to determine which environment is being loaded for this entity type, and the configuration of `tk-shotgun` can be verified there. 4. There is an empty list of menu actions cached on disk. To force the cache to be regenerated, there are a few options: - - - Update the modification time of a YAML file in your project's configuration. This will trigger a recache of menu actions when they are next requested by {% include product %}. Worth noting is that this will trigger a recache for _all_ users working in the project. - - Update the value of a field in any of the Software entities on your {% include product %} site. The behavior here is the same as the above option concerning YAML file modification time, but will invalidate cached data for all users in _all_ projects on your {% include product %} site. Software entities are non-project entities, which means they're shared across all projects. If data in any of the Software entities is altered, all projects are impacted. - - The cache file can be deleted on the host suffering from the problem. It is typically safe to remove the cache, and since it is stored locally on each host, it will only cause data to be recached from scratch on that one system. The cache is stored in the following SQLite file within your {% include product %} cache location: `/site.basic.desktop/tk-desktop/shotgun_engine_commands_v1.sqlite` + + - Update the modification time of a YAML file in your project's configuration. This will trigger a recache of menu actions when they are next requested by {% include product %}. Worth noting is that this will trigger a recache for _all_ users working in the project. + - Update the value of a field in any of the Software entities on your {% include product %} site. The behavior here is the same as the above option concerning YAML file modification time, but will invalidate cached data for all users in _all_ projects on your {% include product %} site. Software entities are non-project entities, which means they're shared across all projects. If data in any of the Software entities is altered, all projects are impacted. + - The cache file can be deleted on the host suffering from the problem. It is typically safe to remove the cache, and since it is stored locally on each host, it will only cause data to be recached from scratch on that one system. The cache is stored in the following SQLite file within your {% include product %} cache location: `/site.basic.desktop/tk-desktop/shotgun_engine_commands_v1.sqlite` **“Toolkit: Retrieving actions…” is never replaced with menu actions** @@ -370,62 +360,57 @@ This is indicative of a configuration problem if actions were expected for this There are a few possibilities for this one: -1. The websocket server has not yet finished caching actions. If this is the first time actions are being retrieved after a significant update to the project’s config, the process can take some time to complete. Wait longer, and observe the contents of `tk-desktop.log` to see if processing is still occurring. - -2. The websocket server has failed to respond and never will. This situation should be rare, but if it becomes obvious that there is no additional processing occurring as a result of the request for actions, as seen in `tk-desktop.log`, [contact ShotGrid support](https://support.shotgunsoftware.com/hc/en-us/requests/new), providing relevant log data. - +1. The websocket server has not yet finished caching actions. If this is the first time actions are being retrieved after a significant update to the project’s config, the process can take some time to complete. Wait longer, and observe the contents of `tk-desktop.log` to see if processing is still occurring. +2. The websocket server has failed to respond and never will. This situation should be rare, but if it becomes obvious that there is no additional processing occurring as a result of the request for actions, as seen in `tk-desktop.log`, [contact ShotGrid support](https://support.shotgunsoftware.com/hc/en-us/requests/new), providing relevant log data. 3. The user is working in more than one {% include product %} site. With {% include product %} Desktop authenticated against a single site, requesting menu actions from a second {% include product %} site results in the user being queried about restarting {% include product %} Desktop and logging into the new site. If that request is ignored, the second site will never receive a list of menu actions. - ## Toolkit Configuration File -If your studio is using a proxy server, if you want to pre-populate the initial login screen with some values, or if you want to tweak how the browser-based application launcher integrates with {% include product %} Desktop, there is a special configuration file called `toolkit.ini`. {% include product %} Desktop does not require this file in order to run; it’s only needed if you need to configure its behavior. Toolkit looks for the file in multiple locations, in the following order: +If your studio is using a proxy server, if you want to pre-populate the initial login screen with some values, or if you want to tweak how the browser-based application launcher integrates with {% include product %} Desktop, there is a special configuration file called `toolkit.ini`. {% include product %} Desktop does not require this file in order to run; it’s only needed if you need to configure its behavior. Toolkit looks for the file in multiple locations, in the following order: -1. An environment variable named `SGTK_PREFERENCES_LOCATION` that points to a file path. +1. An environment variable named `SGTK_PREFERENCES_LOCATION` that points to a file path. 2. Inside the {% include product %} Toolkit preferences folder: (Note that this file does not exist by default in these locations; you must create it.) - - Windows: `%APPDATA%\Shotgun\Preferences\toolkit.ini` - - macOS: `~/Library/Preferences/Shotgun/toolkit.ini` - - Linux: `~/.shotgun/preferences/toolkit.ini` + - Windows: `%APPDATA%\Shotgun\Preferences\toolkit.ini` + - macOS: `~/Library/Preferences/Shotgun/toolkit.ini` + - Linux: `~/.shotgun/preferences/toolkit.ini` -The `SGTK_PREFERENCES_LOCATION` environment variable option allows you to store your configuration file somewhere else on your computer or on your network. Please note that `toolkit.ini` is the current standard file name. If you were using `config.ini`, check below in the _“Legacy Locations”_ section. +The `SGTK_PREFERENCES_LOCATION` environment variable option allows you to store your configuration file somewhere else on your computer or on your network. Please note that `toolkit.ini` is the current standard file name. If you were using `config.ini`, check below in the _“Legacy Locations”_ section. -You can see a documented example of a configuration file [here](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example). +You can see a documented example of a configuration file [here](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example). -Please note that this example file is called `config.ini` but it can be just renamed to `toolkit.ini` +Please note that this example file is called `config.ini` but it can be just renamed to `toolkit.ini` Please also note that you can use environment variables as well as hard coded values in this file, so that you could, for example, pick up the default user name to suggest to a user via the USERNAME variable that exists on Windows. - - **Legacy Locations (DEPRECATED)** -Although `toolkit.ini` is the current standard file name, we previously used a `config.ini` file for same purpose. The contents of `toolkit.ini` and `config.ini` are the same. The `config.ini` will be searched for using the following deprecated locations: +Although `toolkit.ini` is the current standard file name, we previously used a `config.ini` file for same purpose. The contents of `toolkit.ini` and `config.ini` are the same. The `config.ini` will be searched for using the following deprecated locations: -1. An environment variable named `SGTK_DESKTOP_CONFIG_LOCATION` that points to a file. +1. An environment variable named `SGTK_DESKTOP_CONFIG_LOCATION` that points to a file. 2. In the following paths: - - Windows: `%APPDATA%\Shotgun\desktop\config\config.ini` - - macOS: `~/Library/Caches/Shotgun/desktop/config/config.ini` - - Linux: `~/shotgun/desktop/config/config.ini` + - Windows: `%APPDATA%\Shotgun\desktop\config\config.ini` + - macOS: `~/Library/Caches/Shotgun/desktop/config/config.ini` + - Linux: `~/shotgun/desktop/config/config.ini` **Proxy Configuration** -If your studio is accessing the internet through a proxy, you’ll need to tell Toolkit to use this proxy when it accesses the Internet. Do so by specifying your proxy as the value of the `http_proxy` setting: +If your studio is accessing the internet through a proxy, you’ll need to tell Toolkit to use this proxy when it accesses the Internet. Do so by specifying your proxy as the value of the `http_proxy` setting: `http_proxy: ` **Running {% include product %} Desktop with a locally hosted site** -If your {% include product %} site URL does not end with `shotgunstudio.com` or `shotgrid.autodesk.com`, it means that you are running a local {% include product %} site. In this case, it is possible that your site has not yet been fully prepared for {% include product %} integrations and the {% include product %} team may need to go in and do some small adjustments before you can get going! In this case, [please submit a ticket](https://support.shotgunsoftware.com/hc/en-us/requests/new) and we'll help sort you out. +If your {% include product %} site URL does not end with `shotgunstudio.com` or `shotgrid.autodesk.com`, it means that you are running a local {% include product %} site. In this case, it is possible that your site has not yet been fully prepared for {% include product %} integrations and the {% include product %} team may need to go in and do some small adjustments before you can get going! In this case, [please submit a ticket](https://support.shotgunsoftware.com/hc/en-us/requests/new) and we'll help sort you out. **Connecting to the app store with a locally hosted site** -If you are using a local {% include product %} site with access to the Internet through a proxy, you might want to set an HTTP proxy for accessing the app store, but not the local {% include product %} website. To do this, simply add the following line to `toolkit.ini`: +If you are using a local {% include product %} site with access to the Internet through a proxy, you might want to set an HTTP proxy for accessing the app store, but not the local {% include product %} website. To do this, simply add the following line to `toolkit.ini`: `app_store_http_proxy: ` -where `` is a string that follows the convention documented [in our developer docs.](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=reference%20methods#shotgun-methods) +where `` is a string that follows the convention documented [in our developer docs.](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=reference%20methods#shotgun-methods) -If you need to override this setting on a per-project basis, you can do so in `config/core/shotgun.yml` in your project’s Pipeline Configuration. +If you need to override this setting on a per-project basis, you can do so in `config/core/shotgun.yml` in your project’s Pipeline Configuration. ## Offline Usage Scenarios @@ -433,7 +418,7 @@ In general use, {% include product %} Desktop automatically checks for updates f ### {% include product %} Create -The approaches to resolving offline usage scenarios outlined in this document also apply to the integration features provided by [{% include product %} Create](https://support.shotgunsoftware.com/hc/en-us/articles/360012554734). The various environment variables used to tailor the behavior of {% include product %} Toolkit, such as `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`, apply when using {% include product %} Create in the same ways as {% include product %} Desktop. +The approaches to resolving offline usage scenarios outlined in this document also apply to the integration features provided by [{% include product %} Create](https://support.shotgunsoftware.com/hc/en-us/articles/360012554734). The various environment variables used to tailor the behavior of {% include product %} Toolkit, such as `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`, apply when using {% include product %} Create in the same ways as {% include product %} Desktop. ### Running integrations while offline @@ -441,13 +426,13 @@ _Scenario: I want to run {% include product %} integrations, but I am not connec **Solution** -- If you can temporarily connect to the internet, just download {% include product %} Desktop. It comes prepackaged with a set of [integrations](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-User-Guide#Introduction), and pre-bundled with all the apps and engines needed for the {% include product %} integrations for all supported DCCs. When you start it up, it will automatically try to look for upgrades, but if it cannot connect to the {% include product %} App Store, it will simply run the most recent version that exists locally. +- If you can temporarily connect to the internet, just download {% include product %} Desktop. It comes prepackaged with a set of [integrations](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-User-Guide#Introduction), and pre-bundled with all the apps and engines needed for the {% include product %} integrations for all supported DCCs. When you start it up, it will automatically try to look for upgrades, but if it cannot connect to the {% include product %} App Store, it will simply run the most recent version that exists locally. **Good to know** -- Some Toolkit operations (such as registering a Publish) require access to your {% include product %} site. So, this solution only works for locally hosted sites. -- Updates are downloaded to your local machine. -- If you switch between being connected and disconnected, Desktop, as well as in-app integrations like those inside Maya and Nuke, will download upgrades at startup whenever they are connected. +- Some Toolkit operations (such as registering a Publish) require access to your {% include product %} site. So, this solution only works for locally hosted sites. +- Updates are downloaded to your local machine. +- If you switch between being connected and disconnected, Desktop, as well as in-app integrations like those inside Maya and Nuke, will download upgrades at startup whenever they are connected. ### Managing updates via manual download @@ -455,18 +440,18 @@ _Scenario: Our artist workstations are disconnected from the internet, so we can **Solution** -- Run {% include product %} Desktop on a workstation connected to the internet. When it starts up, the latest upgrades are automatically downloaded at launch time. -- Option 1: Shared Desktop bundle -- Copy the [bundle cache](https://developer.shotgridsoftware.com/7c9867c0/) to a shared location where all machines can access it. -- Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. -- When Desktop starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. -- Option 2: Local deployment -- Distribute the updated bundle cache to the correct bundle cache location on each local machine. +- Run {% include product %} Desktop on a workstation connected to the internet. When it starts up, the latest upgrades are automatically downloaded at launch time. +- Option 1: Shared Desktop bundle +- Copy the [bundle cache](https://developer.shotgridsoftware.com/7c9867c0/) to a shared location where all machines can access it. +- Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. +- When Desktop starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. +- Option 2: Local deployment +- Distribute the updated bundle cache to the correct bundle cache location on each local machine. **Good to know** -- With Option 1, the Toolkit code will be loaded from the location defined in `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`. If this location is on a shared storage, make sure that it is performant enough to load many small files. -- For Windows setups, this is often not the case. Here we would instead recommend Option 2. +- With Option 1, the Toolkit code will be loaded from the location defined in `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`. If this location is on a shared storage, make sure that it is performant enough to load many small files. +- For Windows setups, this is often not the case. Here we would instead recommend Option 2. ## Locking off updates @@ -478,33 +463,31 @@ _Scenario: My project is about to wrap and I would like to freeze it so that no **Solution** -- Determine the version you want to lock your project to. [You can find the integration releases here.](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations) -- In {% include product %}, create a Pipeline Configuration entity for the project you want to lock down, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): -- Name: `Primary` -- Project: The project you want to lock down -- Plugin ids: `basic.*` -- Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - -- Anyone starting {% include product %} Desktop on the project will now always use v1.0.36. Any new users starting to work on the project will also get v1.0.36. - +- Determine the version you want to lock your project to. [You can find the integration releases here.](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations) +- In {% include product %}, create a Pipeline Configuration entity for the project you want to lock down, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): +- Name: `Primary` +- Project: The project you want to lock down +- Plugin ids: `basic.*` +- Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` +- Anyone starting {% include product %} Desktop on the project will now always use v1.0.36. Any new users starting to work on the project will also get v1.0.36. ![](images/Integration-admin-guide/freeze_single_project.png) **Good to know** -- Updates are downloaded to your local machine. -- The next time a user launches Desktop while connected to the Internet, `v1.0.36` of the basic config, and all of its related code, will be downloaded to their machine. -- `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya, basic.nuke`. -- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. +- Updates are downloaded to your local machine. +- The next time a user launches Desktop while connected to the Internet, `v1.0.36` of the basic config, and all of its related code, will be downloaded to their machine. +- `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya, basic.nuke`. +- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. **Known issues** -- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. -- The solution would be to create an additional Pipeline Configuration override specifically for flame: -- Name: `Primary` -- Project: The project you want to lock down (or None for all projects) -- Plugin ids: `basic.flame` -- Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. +- The solution would be to create an additional Pipeline Configuration override specifically for flame: +- Name: `Primary` +- Project: The project you want to lock down (or None for all projects) +- Plugin ids: `basic.flame` +- Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### Freezing updates for your site @@ -512,18 +495,18 @@ _Scenario: I don’t want any updates. I want full control over what is being do **Solution** -- Follow the steps in the above example, but leave the `Project` field blank. With no override in the `Project` field, this Pipeline Configuration entity will apply to all projects, including the “site” project, i.e., the site configuration that is used by Desktop outside of any project. +- Follow the steps in the above example, but leave the `Project` field blank. With no override in the `Project` field, this Pipeline Configuration entity will apply to all projects, including the “site” project, i.e., the site configuration that is used by Desktop outside of any project. ![](images/Integration-admin-guide/freeze_site.jpg) **Good to know** -- This is the workflow to use if you want to “lock down the site config”. This would lock down everything, and you can then proceed with the advanced project setup via the Desktop menu. -- If you lock down your entire site to use, for example, `v1.2.3`, you can still lock down an individual project to use another config. +- This is the workflow to use if you want to “lock down the site config”. This would lock down everything, and you can then proceed with the advanced project setup via the Desktop menu. +- If you lock down your entire site to use, for example, `v1.2.3`, you can still lock down an individual project to use another config. **Known issues** -- Flame would be affected by this. See the ‘Known Issues’ section of the above scenario for a solution. +- Flame would be affected by this. See the ‘Known Issues’ section of the above scenario for a solution. ### Freezing updates for all but one project @@ -533,30 +516,30 @@ _Scenario: I’d like to lock down all projects in our site, except for our test **Solution** -- Freeze updates for your site as described in the above section. -- Configure the exception project’s Pipeline Configuration entity to have the following field values: -- Name: `Primary` -- Project: The project you want _not_ to lock down -- Plugin ids: `basic.*` -- Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` +- Freeze updates for your site as described in the above section. +- Configure the exception project’s Pipeline Configuration entity to have the following field values: +- Name: `Primary` +- Project: The project you want _not_ to lock down +- Plugin ids: `basic.*` +- Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` **Good to know** -- Note that you’ve omitted the version number from the Descriptor field for the project. This will mean that the project is tracking the latest release of the basic config. +- Note that you’ve omitted the version number from the Descriptor field for the project. This will mean that the project is tracking the latest release of the basic config. ### Safely Upgrading a locked off site -- Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.* +- Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.\* **Solution** -- Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting "Duplicate Selected". -- Name the cloned config “update test”, and assign yourself to the User Restrictions field. -- You will now begin to use this Pipeline Configuration. -- Change the descriptor to point to the version you wish to test. -- You can invite any users you want to partake in testing by adding them to the User Restrictions field. -- Once you are happy with testing, simply update the main Pipeline Configuration to use that version. -- Once users restart Desktop or DCCs, the update will be picked up. +- Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting "Duplicate Selected". +- Name the cloned config “update test”, and assign yourself to the User Restrictions field. +- You will now begin to use this Pipeline Configuration. +- Change the descriptor to point to the version you wish to test. +- You can invite any users you want to partake in testing by adding them to the User Restrictions field. +- Once you are happy with testing, simply update the main Pipeline Configuration to use that version. +- Once users restart Desktop or DCCs, the update will be picked up. ## Taking over a Pipeline Configuration @@ -574,11 +557,11 @@ Once you have navigated to a project there will be an "Advanced Project Setup... ![](images/Integration-admin-guide/wizard_select.png) -When you start configuring a new project, the first thing to decide is _which configuration template to use_. A configuration template is essentially the complete project configuration with all settings, file system templates, apps and logic needed to run the project. +When you start configuring a new project, the first thing to decide is _which configuration template to use_. A configuration template is essentially the complete project configuration with all settings, file system templates, apps and logic needed to run the project. -- If this is your very first project, head over to the {% include product %} defaults to get you started. -- If you already have configured projects and configurations for previous projects, you can easily reuse these by basing your new project on an existing project -- For advanced workflows, you can use external configurations or configs stored in git repositories. +- If this is your very first project, head over to the {% include product %} defaults to get you started. +- If you already have configured projects and configurations for previous projects, you can easily reuse these by basing your new project on an existing project +- For advanced workflows, you can use external configurations or configs stored in git repositories. #### Default configuration templates @@ -594,9 +577,9 @@ This is the default Toolkit VFX configuration and usually a great starting point The configuration contains a number of different pieces: -- A file system setup -- A set of templates to identify key locations on disk -- A set of preconfigured engines and apps which are chained together into a workflow. +- A file system setup +- A set of templates to identify key locations on disk +- A set of preconfigured engines and apps which are chained together into a workflow. **File System Overview** @@ -608,12 +591,12 @@ The standard config handles Assets and Shots in {% include product %}. It breaks The config contains the following components: -- Maya, Mari, Nuke, 3dsmax, Flame, Houdini, Photoshop, and Motionbuilder support -- {% include product %} Application Launchers -- Publishing, Snapshotting, and Version Control -- A Nuke custom Write Node -- {% include product %} integration -- A number of other tools and utilities +- Maya, Mari, Nuke, 3dsmax, Flame, Houdini, Photoshop, and Motionbuilder support +- {% include product %} Application Launchers +- Publishing, Snapshotting, and Version Control +- A Nuke custom Write Node +- {% include product %} integration +- A number of other tools and utilities In addition to the apps above, you can easily install additional apps and engines once the config has been installed. @@ -631,11 +614,11 @@ For more ways and documentation on how to evolve and maintain your pipeline conf ![](images/Integration-admin-guide/wizard_git.png) -Use this option if you want to keep your project's configuration connected to source control. Specify a url to a remote git or github repository and the setup process will clone it for you. Note that this is not just github, but works with any git repository. Just make sure that the path to the repository ends with `.git`, and Toolkit will try to process it as a git setup. Because your project configuration is a git repository, you can commit and push any changes you make to your master repository and beyond that to other projects. Using a github based configuration makes it easy to keep multiple Toolkit projects in sync. You can read more about it here: +Use this option if you want to keep your project's configuration connected to source control. Specify a url to a remote git or github repository and the setup process will clone it for you. Note that this is not just github, but works with any git repository. Just make sure that the path to the repository ends with `.git`, and Toolkit will try to process it as a git setup. Because your project configuration is a git repository, you can commit and push any changes you make to your master repository and beyond that to other projects. Using a github based configuration makes it easy to keep multiple Toolkit projects in sync. You can read more about it here: [Managing your project configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219033168#A%20studio%20configuration%20in%20git%20source%20control) -Please note that if you are running on Windows, you need to have git installed on your machine and accessible in your `PATH`. On Linux and Mac OS X, it is usually installed by default. +Please note that if you are running on Windows, you need to have git installed on your machine and accessible in your `PATH`. On Linux and Mac OS X, it is usually installed by default. #### Browsing for a configuration template @@ -645,21 +628,21 @@ Use this option if you have a configuration on disk, either as a folder or zippe #### Setting up a storage -Each Toolkit project writes all its files and data to one or more shared storage locations on disk. For example, a configuration may require one storage where it keeps textures, one where it keeps renders and one where it stores scene files. Normally, these storages are controlled from within the {% include product %} Site Preferences, under the _File Management_ tab. +Each Toolkit project writes all its files and data to one or more shared storage locations on disk. For example, a configuration may require one storage where it keeps textures, one where it keeps renders and one where it stores scene files. Normally, these storages are controlled from within the {% include product %} Site Preferences, under the _File Management_ tab. The Toolkit Setup wizard will ask you to map each storage root required by the configuration to a local storage in {% include product %}. ![](images/Integration-admin-guide/wizard_storage.png) -The required root is listed on the left with its description (as defined in the configuration's `roots.yml` file). On the right, a list of existing {% include product %} local storages is listed. You must select a storage for each required root and enter a path for the current OS if one does not already exist in {% include product %}. +The required root is listed on the left with its description (as defined in the configuration's `roots.yml` file). On the right, a list of existing {% include product %} local storages is listed. You must select a storage for each required root and enter a path for the current OS if one does not already exist in {% include product %}. You can also add paths for other operating systems that have not been defined. Existing paths are locked to ensure you don't accidentally affect other projects that may be relying on that storage path. The mapping page in the wizard will ensure that you've mapped each required root and that each mapping is valid. -You can create a new local storage in the wizard as well by selecting the `+New` item at the end of the storage selection list. You will be prompted for a local storage name and path for the current OS. +You can create a new local storage in the wizard as well by selecting the `+New` item at the end of the storage selection list. You will be prompted for a local storage name and path for the current OS. -Once the project is being set up, Toolkit will create a folder for each new project in each of the storage locations. For example, if your primary storage location is `/mnt/projects`, a project called _The Edwardian Cry_ would end up in `/mnt/projects/the_edwardian_cry`. And if the config is using more than just the primary storage, each of the storages would end up with an `the_edwardian_cry` folder. +Once the project is being set up, Toolkit will create a folder for each new project in each of the storage locations. For example, if your primary storage location is `/mnt/projects`, a project called _The Edwardian Cry_ would end up in `/mnt/projects/the_edwardian_cry`. And if the config is using more than just the primary storage, each of the storages would end up with an `the_edwardian_cry` folder. -Your primary storage location is typically something like `/mnt/projects` or `\\studio\projects` and is typically a location where you are already storing project data, grouped by projects. It is almost always on a shared network storage. +Your primary storage location is typically something like `/mnt/projects` or `\\studio\projects` and is typically a location where you are already storing project data, grouped by projects. It is almost always on a shared network storage. #### Choosing a project folder name @@ -675,9 +658,10 @@ Lastly, please decide where to put your configuration files on disk. Toolkit wil The configuration normally resides on a shared storage or disk, so that it can be accessed by all users in the studio who needs it. If you are planning on using more than one operating system for this project, make sure to enter all the necessary paths. All paths should represent the same location on disk. Often, the path can be the same on Mac OS X and Linux but will be different on Windows. -If this is your first project, you typically want to identify a shared area on disk where you store all your future pipeline configurations. This is typically a location where you store software or software settings shared across the studio. This could be something like `/mnt/software/shotgun`. It may vary depending on your studio network and file naming conventions. +If this is your first project, you typically want to identify a shared area on disk where you store all your future pipeline configurations. This is typically a location where you store software or software settings shared across the studio. This could be something like `/mnt/software/shotgun`. It may vary depending on your studio network and file naming conventions. + +When you set up your first configuration, set it up with paths for all the platforms you use in your studio. This will make it easier later on to create an environment which is accessible from all machines. As a hypothetical example, if your project name is _Golden Circle_ you may type in the following three paths: -When you set up your first configuration, set it up with paths for all the platforms you use in your studio. This will make it easier later on to create an environment which is accessible from all machines. As a hypothetical example, if your project name is _Golden Circle_ you may type in the following three paths: ``` linux: /mnt/software/shotgun/golden_circle macosx: /servers/production/software/shotgun/golden_circle @@ -690,7 +674,7 @@ Once you are up and running with your first configuration, please navigate to ou [Beyond your first project](https://support.shotgunsoftware.com/hc/en-us/articles/219040688) -You can also learn more in our [Advanced Project Setup documentation](https://support.shotgunsoftware.com/hc/en-us/articles/219039808-Index-of-Documentation). +You can also learn more in our [Advanced Project Setup documentation](https://support.shotgunsoftware.com/hc/en-us/articles/219039808-Index-of-Documentation). ## Advanced functionality diff --git a/docs/en/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md b/docs/en/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md index 24188f8bf..84d8b4993 100644 --- a/docs/en/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ b/docs/en/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md @@ -8,17 +8,18 @@ lang: en # Offline usage and disabling auto updates - [Auto updates](#auto-updates) - - [What parts auto update?](#what-parts-auto-update) - - [What doesn't auto update?](#what-doesnt-auto-update) + - [What parts auto update?](#what-parts-auto-update) + - [What doesn't auto update?](#what-doesnt-auto-update) - [Running the integrations offline](#running-the-integrations-offline) - - [Initial Setup](#initial-setup) - - [Managing updates](#managing-updates) + - [Initial Setup](#initial-setup) + - [Managing updates](#managing-updates) - [Disabling auto updates](#disabling-auto-updates) - - [Disabling updates at a project or site level](#disabling-updates-at-a-project-or-site-level) - - [Disabling updates for all but one project](#disabling-updates-for-all-but-one-project) - - [Upgrading](#upgrading) + - [Disabling updates at a project or site level](#disabling-updates-at-a-project-or-site-level) + - [Disabling updates for all but one project](#disabling-updates-for-all-but-one-project) + - [Upgrading](#upgrading) ## Auto updates + ### What parts auto update? By default {% include product %} Desktop will automatically check for updates, and install them to the local machine if it finds any. @@ -41,8 +42,8 @@ However the integration features provided in {% include product %} Create work i - Any projects that aren't using the default site configuration (I.e. a project where the Toolkit advanced setup wizard has been run on it.), will not have their configuration auto updated. -- Resources such as Python and QT that come bundled with {% include product %} Desktop, don't auto update. -We occasionally release new {% include product %} Desktop installers when we need to update these parts. +- Resources such as Python and QT that come bundled with {% include product %} Desktop, don't auto update. + We occasionally release new {% include product %} Desktop installers when we need to update these parts. ## Running the integrations offline @@ -51,14 +52,14 @@ We occasionally release new {% include product %} Desktop installers when we nee If your studio has restricted internet access or no internet access then you will need to ensure that you have all the required parts cached locally. You will still need one machine that can connect to the internet in order to download {% include product %} Create or {% include product %} Desktop. -{% include product %} Desktop comes prepackaged with all the dependencies required to run the basic integrations. +{% include product %} Desktop comes prepackaged with all the dependencies required to run the basic integrations. Whilst {% include product %} Create also comes bundled with the dependencies, it requires you to follow the steps mentioned in [managing updates](#managing-updates) as well. - + When you start either of them up, it will automatically try to look for updates, but if it cannot connect to the {% include product %} App Store, it will simply run the most recent version that exists locally. It is recommended that you follow the [managing updates](#managing-updates) steps bellow after installing {% include product %} Desktop, as the components bundled with the installer may not be the latest. -{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} {% include info title="Note" content="You will still need to be able to connect to your ShotGrid site. When we say offline we are talking about not being able to connect to our app store to download updates." %} @@ -66,17 +67,17 @@ In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE ### Managing updates To update the `tk-framework-desktopstartup` component, you will need to [download the latest version](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases), and set the environment variable -`SGTK_DESKTOP_STARTUP_LOCATION` to point to its location on disk, (This only applies to {% include product %} Desktop.) +`SGTK_DESKTOP_STARTUP_LOCATION` to point to its location on disk, (This only applies to {% include product %} Desktop.) For the `tk-config-basic` component it's a bit more tricky, due to all its dependencies. 1. Run {% include product %} Desktop or {% include product %} Create on a workstation connected to the internet. When it starts up, the latest upgrades will be automatically downloaded. -(Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) + (Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) 2. Copy the bundle cache to a shared location where all machines can access it. 3. Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. 4. When {% include product %} Desktop or {% include product %} Create starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. -{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} ## Disabling auto updates @@ -94,33 +95,31 @@ Follow these steps to disable automatic updates for the integrations. 2. Project: Leave empty if you want updates disabled for all projects, or pick a specific project if you only want to lock down a single project. 3. Plugin ids: `basic.*` 4. Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - + ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze-all-projects.jpg) + 3. Start {% include product %} Desktop, and if you left the project field empty then {% include product %} Desktop will have switched over to using this version if it wasn't already doing so. - ![{% include product %} Desktop About](images/offline-and-disabled-auto-updates/shotgun-desktop-about.png) + ![{% include product %} Desktop About](images/offline-and-disabled-auto-updates/shotgun-desktop-about.png) + + If you set a project, then only that project will be affected and you won't see a change in the {% include product %} Desktop about window. - If you set a project, then only that project will be affected and you won't see a change in the {% include product %} Desktop about window. 4. [Optional] To lock the version of `tk-framework-desktopstartup` you will need to [download the latest version](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases), and set the environment variable -`SGTK_DESKTOP_STARTUP_LOCATION` to point to its location on disk, (This only applies to {% include product %} Desktop.) + `SGTK_DESKTOP_STARTUP_LOCATION` to point to its location on disk, (This only applies to {% include product %} Desktop.) -It's The majority for the functionality is controlled by the config which can be locked down with the previous steps, however as mentioned in the "what parts auto update?" section, the - component is also updated and that is handled separately from the config. This also only applies to {% include product %} Desktop. +It's The majority for the functionality is controlled by the config which can be locked down with the previous steps, however as mentioned in the "what parts auto update?" section, the +component is also updated and that is handled separately from the config. This also only applies to {% include product %} Desktop. #### Good to know - You don't need to download the release of the configuration manually, {% include product %} Desktop will handle this when it launches or you enter the project. - `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya`, `basic.nuke`. - To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. -- Leaving the project field blank is what we call a site configuration. {% include product %} Desktop uses the site configuration, as it operates outside of projects. When you select a project in {% include product %} Desktop it then loads the project configuration as well. +- Leaving the project field blank is what we call a site configuration. {% include product %} Desktop uses the site configuration, as it operates outside of projects. When you select a project in {% include product %} Desktop it then loads the project configuration as well. -- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. -However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. -The solution would be to create an additional Pipeline Configuration override specifically for flame: - - Name: `Primary` - - Project: The project you want to lock down (or None for all projects) - - Plugin ids: `basic.flame` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. + However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. + The solution would be to create an additional Pipeline Configuration override specifically for flame: - Name: `Primary` - Project: The project you want to lock down (or None for all projects) - Plugin ids: `basic.flame` - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### Disabling updates for all but one project @@ -129,12 +128,12 @@ You can 1. Disabling updates for your site as described in the above section. 2. Configure the exception project’s Pipeline Configuration entity to have the following field values: - - Name: `Primary` - - Project: The project you want not to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` - ![Two Pipeline Configurations, one disabling updates to the whole site, and the other enabling updates on a single project](images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg) - With the version number omitted from the Descriptor field, the project is now tracking the latest release of the basic config. + - Name: `Primary` + - Project: The project you want not to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` + ![Two Pipeline Configurations, one disabling updates to the whole site, and the other enabling updates on a single project](images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg) + With the version number omitted from the Descriptor field, the project is now tracking the latest release of the basic config. ### Upgrading @@ -144,6 +143,6 @@ When it comes to updating your configuration, you may wish to test out the newer 2. Name the cloned config “update test”, and assign yourself to the User Restrictions field. 3. You will now begin to use this Pipeline Configuration. 4. Change the descriptor to point to the version you wish to test. -4. You can invite any users you want to partake in testing by adding them to the `User Restrictions` field. -5. Once you are happy with testing, simply update the main Pipeline Configuration to use that version. -6. Once users restart {% include product %} Desktop and relaunch any currently open software with the {% include product %} integration running, the update will be picked up. +5. You can invite any users you want to partake in testing by adding them to the `User Restrictions` field. +6. Once you are happy with testing, simply update the main Pipeline Configuration to use that version. +7. Once users restart {% include product %} Desktop and relaunch any currently open software with the {% include product %} integration running, the update will be picked up. diff --git a/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md index 08aa9ed40..975804b74 100644 --- a/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md +++ b/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md @@ -11,9 +11,9 @@ lang: en # An overview of the different concepts in the {% include product %} Pipeline Toolkit. -Here, we cover the main concepts in detail: How apps and Engines work, how Toolkit is launched and manages the current context (work area), how folders are created on disk, etc. We recommend that anyone involved in configuration or development start here. +Here, we cover the main concepts in detail: How apps and Engines work, how Toolkit is launched and manages the current context (work area), how folders are created on disk, etc. We recommend that anyone involved in configuration or development start here. -_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For details, see the [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ +_Please note that this document describes functionality only available if you have taken control over a Toolkit configuration. For details, see the [{% include product %} Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493)._ # Introduction @@ -23,10 +23,10 @@ This document explains some of the key features in more depth. With explanations Below is a brief description of Toolkit (SGTK): -- Toolkit is a _Pipeline Toolkit_ based on the {% include product %} platform - it makes it easier to write and install tools for a studio. -- Toolkit is filesystem based - it helps you organize where things are stored on disk so that what you have on disk is nicely structured. -- Toolkit is an assistant - it does not try to take over or abstract the data in your pipeline, but rather is there to provide artists with compelling tools to make finding information easier and avoid making mistakes. -- Toolkit is helping you to share work by storing all of its publishes in {% include product %}. Toolkit makes it easy to share updates and work that is going on across a production. +- Toolkit is a _Pipeline Toolkit_ based on the {% include product %} platform - it makes it easier to write and install tools for a studio. +- Toolkit is filesystem based - it helps you organize where things are stored on disk so that what you have on disk is nicely structured. +- Toolkit is an assistant - it does not try to take over or abstract the data in your pipeline, but rather is there to provide artists with compelling tools to make finding information easier and avoid making mistakes. +- Toolkit is helping you to share work by storing all of its publishes in {% include product %}. Toolkit makes it easy to share updates and work that is going on across a production. In the following sections, we will be looking in depth at the Toolkit and how it works. @@ -38,9 +38,9 @@ In Toolkit, everything is project centric. A project typically starts its lifecy When you set up a new project, you use a _template configuration_. This is a predefined config containing engines and apps, filesystem configuration, and other settings. If you are just starting with Toolkit, you can use our example configuration as a starting point for your exploration. If you have already been using Toolkit on another project, we suggest that you take that configuration and use that as the starting point for your new project. That way, you will be evolving a studio configuration and it will be refined with each new project. Of course, you can also maintain a studio configuration separately and use this as a template for all new projects. -Each configuration defines a number of _storage points_. For the standard sample configuration, `tk-config-default`, we define a single storage point called _primary_. This means that all your production data will be under a single filesystem project root. You can also set up configs with more than a single file system root. We call these _multi-root configurations_. Examples of when you might need multi-root configurations include having a separate storage for renders, a separate storage for editorial, etc. Each of these storage points need to exist as a _Local File Storage_ in {% include product %}, which can be set up in the Site Preferences, under the _File Management_ tab. +Each configuration defines a number of _storage points_. For the standard sample configuration, `tk-config-default`, we define a single storage point called _primary_. This means that all your production data will be under a single filesystem project root. You can also set up configs with more than a single file system root. We call these _multi-root configurations_. Examples of when you might need multi-root configurations include having a separate storage for renders, a separate storage for editorial, etc. Each of these storage points need to exist as a _Local File Storage_ in {% include product %}, which can be set up in the Site Preferences, under the _File Management_ tab. -Toolkit will install the actual project configuration in any location you like. Typically this will go into a _software install_ area on disk and not into the project data area itself. +Toolkit will install the actual project configuration in any location you like. Typically this will go into a _software install_ area on disk and not into the project data area itself. ## Let your studio configuration evolve @@ -68,7 +68,7 @@ Example: Similar to other App stores out there, the Toolkit app store constantly gets new versions for apps and engines. These new versions may contain important bug fixes or interesting new features. Upgrading your apps and engines is completely optional. It is normally a quick process and the upgrade scripts will always prompt you before making any changes. Likewise, it is straightforward to roll back should you have accidentally installed an unsatisfactory version. -A single command handles the upgrade process. Simply run the `tank` command located in your project configuration folder and add an `updates` parameter: +A single command handles the upgrade process. Simply run the `tank` command located in your project configuration folder and add an `updates` parameter: ```shell /software/shotgun/bug_buck_bunny/tank updates @@ -85,12 +85,13 @@ tank updates [environment_name] [engine_name] [app_name] The special keyword `ALL` can be used to denote all items in a category. Examples: -- Check everything: `tank updates` -- Check the Shot environment: `tank updates Shot` -- Check all maya apps in all environments: `tank updates ALL tk-maya` -- Check all maya apps in the Shot environment: `tank updates Shot tk-maya` -- Make sure the loader app is up to date everywhere: `tank updates ALL ALL tk-multi-loader` -- Make sure the loader app is up to date in maya: `tank updates ALL tk-maya tk-multi-loader` + +- Check everything: `tank updates` +- Check the Shot environment: `tank updates Shot` +- Check all maya apps in all environments: `tank updates ALL tk-maya` +- Check all maya apps in the Shot environment: `tank updates Shot tk-maya` +- Make sure the loader app is up to date everywhere: `tank updates ALL ALL tk-multi-loader` +- Make sure the loader app is up to date in maya: `tank updates ALL tk-maya tk-multi-loader` In addition to checking the app store, this script checks all other registered locations too, so it may query your local git, a GitHub repository, a file on disk and the app store, depending on where you have deployed your apps. @@ -126,10 +127,10 @@ The context can be created either from a {% include product %} object, such as a The Toolkit Core contains a system for handling file paths. It is called the _Templates System_. Since Toolkit is filesystem based, apps will need to resolve file paths whenever they need to read or write data from disk. Apps are filesystem-structure agnostic, meaning that they don't know how the filesystem is organized. The template system handles all this for them. -At the heart of the template system, there is a _Templates Configuration File_. This file contains all the important filesystem locations for a project. A _Template_ looks something like this: +At the heart of the template system, there is a _Templates Configuration File_. This file contains all the important filesystem locations for a project. A _Template_ looks something like this: ```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "shots/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` It defines a path which contains certain dynamic fields. Each field can be configured with validation and typing, so that, for example, you can define that the `{version}` field in the template above is an integer padded with three zeros (e.g. `001`, `012`, `132`). Whenever and app needs to write or read something from disk, a template is added to the templates file to describe that location. Since apps often are set up to form a pipeline, the output template of one app (e.g. a publishing app) is often the input template of another app (e.g. a loading app). This is why all of the filesystem locations are kept in a single file. @@ -161,7 +162,7 @@ When we develop an app that does publishing, we obviously don't want to have a s ![](images/toolkit-overview/templates.png) -This is where the _Toolkit Context_ comes into play. The Toolkit Context allows us to split the template fields into two distinct groups: the Context fields (`Shot`, `Step`, `Asset`, etc) are fields that we want to ensure are resolved outside of the app in such a way that the app's logic will not have to have code that specifically handles concepts such as Shots and Assets. Instead, the app should only populate the fields that are directly associated with the particular _business logic_ of the app. In our example of a publish app, the business logic consists of the `name` and the `version` fields. As the figure above illustrates, Toolkit therefore splits the field resolution into two distinct phases: some fields are populated by the context and some fields are populated by the business logic inside the app. This way, apps can be designed that are not tied to a particular filesystem layout. We believe this is an important aspect of building good pipeline tools. +This is where the _Toolkit Context_ comes into play. The Toolkit Context allows us to split the template fields into two distinct groups: the Context fields (`Shot`, `Step`, `Asset`, etc) are fields that we want to ensure are resolved outside of the app in such a way that the app's logic will not have to have code that specifically handles concepts such as Shots and Assets. Instead, the app should only populate the fields that are directly associated with the particular _business logic_ of the app. In our example of a publish app, the business logic consists of the `name` and the `version` fields. As the figure above illustrates, Toolkit therefore splits the field resolution into two distinct phases: some fields are populated by the context and some fields are populated by the business logic inside the app. This way, apps can be designed that are not tied to a particular filesystem layout. We believe this is an important aspect of building good pipeline tools. The App Code that would deal with the path resolve would typically look something like this: @@ -181,6 +182,7 @@ fields["version"] = 234 # order to save out the file path = publish_template_obj.apply_fields(fields) ``` + For more details of how you can configure and use the Templates API, see the following: [File System Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868) @@ -203,18 +205,18 @@ This makes it possible to configure separate collections of apps for different p To give you a practical example of how environments work and can be structured, let's take a look at the environments that come with the default configuration: -- `project.yml` - Apps and Engines to run when the context only contains a project. -- `shot_and_asset.yml` - Apps and Engines to run when the context contains a shot or an asset. -- `shot_step.yml` - Apps ane Engines when the context contains a Shot and a Pipeline Step. -- `asset_step.yml` - Apps and Engines when the context contains an Asset and a Pipeline Step. +- `project.yml` - Apps and Engines to run when the context only contains a project. +- `shot_and_asset.yml` - Apps and Engines to run when the context contains a shot or an asset. +- `shot_step.yml` - Apps ane Engines when the context contains a Shot and a Pipeline Step. +- `asset_step.yml` - Apps and Engines when the context contains an Asset and a Pipeline Step. The default config has organized its filesystem based on pipeline steps. This means that under a Shot location, you can find folders for modeling, rigging, etc. Essentially, there is one folder for each pipeline step you work on. Each of these folders have its own work and publish areas on disk. This means that a publish template may look like this: ```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` -In order to use this template, the context needs to contain both an entity and a Pipeline Step. For Shot `1122`, parented under Sequence `ABC` and pipeline step `Modeling`, the above template would resolve to `sequences/ABC/1122/Modeling/...`. This means that a context that contains a Shot but not a Pipeline Step is not enough to populate the above template. You cannot launch Maya for a Shot-only context and use the above template. In order for it to be functional, a Step is required. +In order to use this template, the context needs to contain both an entity and a Pipeline Step. For Shot `1122`, parented under Sequence `ABC` and pipeline step `Modeling`, the above template would resolve to `sequences/ABC/1122/Modeling/...`. This means that a context that contains a Shot but not a Pipeline Step is not enough to populate the above template. You cannot launch Maya for a Shot-only context and use the above template. In order for it to be functional, a Step is required. This leads us to the environment breakdown shown above. Because the filesystem structure defined in the default configuration is centered around steps, all the main apps need to run in a context which has a step defined. We define two such environments in the default config: the `asset_step.yml` file and the `shot_step.yml` file. Each of these files contain engines for a number of DCCs, such as Maya, Nuke, 3dsmax, Motionbuilder, and Photoshop to mention a few. When you launch Maya from a Task inside of {% include product %}, the pick environment hook will choose the `shot_step` environment, start Maya and load up the Maya app configuration. @@ -254,10 +256,10 @@ This situation is handled in Toolkit using a _hook_. The hook is a customizable Once Toolkit is installed, you can access it from several primary entry points: -- {% include product %} Actions will appear on the right-click menus inside of {% include product %} -- Launch icons will appear for the project in the {% include product %} Desktop app -- You can use the `tank` command in a console. -- The Toolkit Python API is available both inside applications and in the shell. +- {% include product %} Actions will appear on the right-click menus inside of {% include product %} +- Launch icons will appear for the project in the {% include product %} Desktop app +- You can use the `tank` command in a console. +- The Toolkit Python API is available both inside applications and in the shell. Running the Toolkit from within {% include product %} is a common way of starting applications and carrying out tasks. {% include product %} will use {% include product %} Desktop to communicate with the Toolkit install that is local on your machine and use a local Python to execute a Toolkit command. This means that you can run local operations such as folder creation right from inside of {% include product %}. @@ -281,10 +283,10 @@ As a starting point, however, we recommend our Publish App: Toolkit is not just a collection of apps and engines. It is also a framework that you can use to develop your own tools and technologies! We have included a lot of features to make Toolkit a rich studio development platform. With Toolkit as a foundation, you can focus on the problems at hand rather than building the underlying platform yourself. We have tried to make it easy for developers to build, evaluate and release software without accidentally breaking the pipeline for artists. -- The engines ensure that apps can be written in Python and Qt (PySide/PySide2) regardless of the underlying foundation. This means that some engines are very simple, while some engines are more complex depending on their provided APIs. This means that there is a straightforward, consistent way to develop tools for the studio. In our experience, Python and Qt is often found being the development environment studios use and many TDs are familiar with it. -- The engine layer also means that apps can be written once and then be deployed in multiple environments. We have developed the standard app suite as _Multi Apps_, meaning that the same app is used in all engines. There will inevitably be specific code that needs to be tailored to work with the specific API that each DCC application exposes, but this is typically contained in one or more hooks, making it easy to reuse an app. Another consequence of being able to create multi apps like this is that when a new engine is being developed, all the standard apps can be easily configured to work with that new engine. -- Via Pipeline Configurations and Cloning, it is easy to create a development sandbox, allowing developers to do work on a production without interfering with the day-to-day production activity. Once the tools are ready to be deployed, the main project configuration can be easily updated and the tool is rolled out to all artists. -- Since apps run inside an engine, it is easy to reload them. Instead of having to restart Nuke or Maya every time you want to test a new code change, simply hit the reload button in Toolkit and the latest code is loaded in. +- The engines ensure that apps can be written in Python and Qt (PySide/PySide2) regardless of the underlying foundation. This means that some engines are very simple, while some engines are more complex depending on their provided APIs. This means that there is a straightforward, consistent way to develop tools for the studio. In our experience, Python and Qt is often found being the development environment studios use and many TDs are familiar with it. +- The engine layer also means that apps can be written once and then be deployed in multiple environments. We have developed the standard app suite as _Multi Apps_, meaning that the same app is used in all engines. There will inevitably be specific code that needs to be tailored to work with the specific API that each DCC application exposes, but this is typically contained in one or more hooks, making it easy to reuse an app. Another consequence of being able to create multi apps like this is that when a new engine is being developed, all the standard apps can be easily configured to work with that new engine. +- Via Pipeline Configurations and Cloning, it is easy to create a development sandbox, allowing developers to do work on a production without interfering with the day-to-day production activity. Once the tools are ready to be deployed, the main project configuration can be easily updated and the tool is rolled out to all artists. +- Since apps run inside an engine, it is easy to reload them. Instead of having to restart Nuke or Maya every time you want to test a new code change, simply hit the reload button in Toolkit and the latest code is loaded in. For an more extensive introduction to App Development, see the following documents: diff --git a/docs/en/guides/pipeline-integrations/development.md b/docs/en/guides/pipeline-integrations/development.md index be70c031d..401bc7c35 100644 --- a/docs/en/guides/pipeline-integrations/development.md +++ b/docs/en/guides/pipeline-integrations/development.md @@ -9,7 +9,7 @@ lang: en ## What is Toolkit? -Toolkit is the platform that underpins our pipeline integrations. +Toolkit is the platform that underpins our pipeline integrations. For example, If you are using the {% include product %} Panel app in Maya or launching the Publish app from {% include product %} Create, you are using tools built upon the Toolkit platform. ## How can I develop with Toolkit? @@ -23,6 +23,7 @@ There are a number of different ways in which you can develop with Toolkit. To do any of these things it's important to understand how to work with the Toolkit API. {% include product %} as a whole has three main API's + - [{% include product %} Python API](https://developer.shotgridsoftware.com/python-api) - [{% include product %} REST API](https://developer.shotgridsoftware.com/rest-api/) - [{% include product %} Toolkit API](https://developer.shotgridsoftware.com/tk-core) @@ -31,6 +32,6 @@ The Toolkit API is a Python API, designed to be used alongside the {% include pr Although the Toolkit API does have some wrapper methods, in general whenever you need to access data from your {% include product %} site you will use the {% include product %} Python or REST APIs instead. The Toolkit API instead focuses on the integrations and management of file paths. -Some Toolkit apps and frameworks also [have their own APIs](../../reference/pipeline-integrations.md). +Some Toolkit apps and frameworks also [have their own APIs](../../reference/pipeline-integrations.md). -These articles will guide you through how you can develop with Toolkit. \ No newline at end of file +These articles will guide you through how you can develop with Toolkit. diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md index 59f6df930..bd3e1e80e 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md @@ -16,20 +16,22 @@ This guide outlines what a Toolkit app is, covers how to create one, and explain - [Creating your own app](#creating-your-own-app) Steps: + 1. [Creating a development sandbox](#part-1-creating-a-development-sandbox) 2. [Forking or downloading the starter app repository](#part-2-forking-or-downloading-the-starter-app-repository) 3. [Adding the app to your config](#part-3-adding-the-app-to-your-config) 4. [Developing the app](#part-4-developing-the-app) - - [Anatomy of the Template Starter App](#anatomy-of-the-template-starter-app) - - [Configuration settings](#configuration-settings) - - [Frameworks](#frameworks) - - [Reloading your changes](#reloading-your-changes) + - [Anatomy of the Template Starter App](#anatomy-of-the-template-starter-app) + - [Configuration settings](#configuration-settings) + - [Frameworks](#frameworks) + - [Reloading your changes](#reloading-your-changes) 5. [Testing](#part-5-testing) 6. [Preparing your first release](#part-6-preparing-your-first-release) Additional info: + - [Modifying an existing app](#modifying-an-existing-app) - - [Contributing](#contributing) + - [Contributing](#contributing) ## What is a Toolkit app? @@ -47,27 +49,30 @@ Toolkit apps are initialized by Toolkit engines. [Engines](https://developer.sho This means the app only needs to focus on providing the functionality to fulfill its purpose and doesn't need to, for example, handle window parenting, keeping track of the user's context, or providing a shortcut for launching itself. ## Creating your own app. + All apps and engines maintained and released by {% include product %} Software are open source and you can find them in [GitHub](https://github.com/shotgunsoftware). -This section goes through how to create a new app using our starter template. +This section goes through how to create a new app using our starter template. We assume that you are familiar with GitHub and git workflows, but please note that you can do Toolkit development even if you are not using git as your source control solution. - ## Part 1: Creating a development sandbox + Before you do anything else, we recommend that you set up a [development sandbox by cloning the project configuration](../getting-started/installing_app.md#clone-the-pipeline-configuration-you-want-to-add-an-app-to) by cloning your project's configuration. -This will result in a separate configuration where you can develop your code and test changes without affecting anyone else on the production. +This will result in a separate configuration where you can develop your code and test changes without affecting anyone else on the production. ## Part 2: Forking or downloading the starter app repository + We provide a [template starter app](https://github.com/shotgunsoftware/tk-multi-starterapp) that you can use as a starting point for your own app. By using this app you get all the standard Toolkit boilerplate code set up for you, and a basic example GUI. ![Toolkit starter app default GUI](./images/starter-app.png) -To use it, you can either fork the git repository and then clone it to your local dev area on disk, +To use it, you can either fork the git repository and then clone it to your local dev area on disk, or if you don't want to use git source control at this stage, you can just download the files from GitHub as a zip file, and unzip them locally (you can always set up a git repository later). Either way, the goal is to have a local copy of the starter app code so you can start making changes. ## Part 3: Adding the app to your config + We recommend reading the "[Adding an app](../getting-started/installing_app.md)" guide, as it explains in more detail how to add an app to your configuration. When adding the app to your config, you need to consider where your app will be used, i.e. perhaps only in Nuke or in multiple different software, or standalone from {% include product %} Desktop. @@ -75,7 +80,7 @@ You also need to think about the context that your app will depend on. For example, can your app only run when you know the task the user is working on, or can it run with just the project known? Knowing this will dictate which environment YAMLs and engines you need to add your app settings to. -If you're not sure right now, it's a good idea to start by adding it to the `tk-shell` engine in the project environment. +If you're not sure right now, it's a good idea to start by adding it to the `tk-shell` engine in the project environment. That way you can [run it from your IDE](./sgtk-developer-bootstrapping.md) or via the command line with the tank command if you have a [centralized config](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations). This will make it quicker to develop with. To start, use a [dev descriptor](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk) for the location of your app. @@ -86,6 +91,7 @@ tk-multi-starterapp: type: dev path: /path/to/source_code/tk-multi-starterapp ``` + This instructs Toolkit to load the app code directly from disk in the given location, which is great for development, where you want to change the code all the time. Later when you add the app to your production config, you may want to use a different descriptor. @@ -102,37 +108,41 @@ The [template starter app](https://github.com/shotgunsoftware/tk-multi-starterap ![](./images/tk-multi-starterapp-directory.png) - **app.py** - The app entry point and menu registration can be found in the `app.py` file. This is where you typically set up your classes, get things initialized, and get menu items registered. -- **info.yml** - Also known as the manifest file. It defines all the different settings that this app requires when it is installed, along with their default values if supplied. -Settings are often useful if you want reusable apps and you don't want to hard code any values in the app itself. +- **info.yml** - Also known as the manifest file. It defines all the different settings that this app requires when it is installed, along with their default values if supplied. + Settings are often useful if you want reusable apps and you don't want to hard code any values in the app itself. - **python/app/dialog.py** - This contains the logic, event callbacks, etc. that produce the main app window. - **python/app/ui** - This folder contains the automatically generated UI code and resource file. You don't edit this directly; instead, you edit the Qt UI file in the `resources` folder. -- **resources/** - In the resources folder, the `dialog.ui` file is a Qt Designer file that you can open up and use to rapidly design and define the look and feel of the app. -Once you have made changes, you have to execute the `build_resources.sh` script, which will convert the UI file to python code and store it as `/python/app/ui/dialog.py`. +- **resources/** - In the resources folder, the `dialog.ui` file is a Qt Designer file that you can open up and use to rapidly design and define the look and feel of the app. + Once you have made changes, you have to execute the `build_resources.sh` script, which will convert the UI file to python code and store it as `/python/app/ui/dialog.py`. - **style.qss** - You can define QSS (Qt style sheets) for your UI in this file. {% include info title="Note" content="An app doesn't need to have a UI however, and the minimum requirements for a valid app are an `app.py` containing an `Application` class and an `info.yml`." %} ### Configuration settings + Inside the manifest file, there should be a `configuration` section where you can define app settings. Defining a setting in the manifest file allows you to configure different setting values for your app in the environment YAML files. This is useful if your app needs to behave differently depending on the environment it is in. -For example, you may wish to have a setting that defines a template to use when saving a file. +For example, you may wish to have a setting that defines a template to use when saving a file. + ```yaml save_template: - type: template - default_value: "maya_asset_work" - description: The template to use when building the path to save the file into - allows_empty: False + type: template + default_value: "maya_asset_work" + description: The template to use when building the path to save the file into + allows_empty: False ``` -Creating a setting for this means you don't have to hard code the template name in your app code, -and [can instead get the value](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting) + +Creating a setting for this means you don't have to hard code the template name in your app code, +and [can instead get the value](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting) from the settings defined either by default in the `info.yml` or overridden in the environment YAML file settings. ```python template = app.get_setting("save_template") ``` + This means that you could configure your app to use a different template depending on the environment the app is running in. You can read more on configuration settings [in the reference documentation](https://developer.shotgridsoftware.com/tk-core/platform.html#the-configuration-section). @@ -151,6 +161,7 @@ frameworks: ``` #### Minimum required framework versions + If there is a required minimum version for a framework, the minimum_version setting can be used in the `info.yml`: ```python @@ -160,8 +171,8 @@ frameworks: - {"name": "tk-framework-qtwidgets", "version": "v1.x.x", "minimum_version": "v1.5.0"} ``` -The above will ensure that `v1.5.0` of `tk-framework-qtwidgets` is available for the app to use. -If it is not, the app will not be loaded at startup time and an error will be printed to the console. +The above will ensure that `v1.5.0` of `tk-framework-qtwidgets` is available for the app to use. +If it is not, the app will not be loaded at startup time and an error will be printed to the console. When the app is updated using `tank updates`, any configured frameworks not meeting their required minimum versions will be automatically updated along with the app. For more information about frameworks and how they can be useful, check out the following links: @@ -171,17 +182,18 @@ For more information about frameworks and how they can be useful, check out the ### Reloading your changes -If you are testing your app within software such as Maya, then as soon as you have one or more dev items in your configuration, +If you are testing your app within software such as Maya, then as soon as you have one or more dev items in your configuration, Toolkit will automatically add a **Reload and Restart** option to the {% include product %} menu. ![{% include product %} menu Reload and Restart option](./images/reload-restart.png) -Clicking this will reload your configuration and code and then restart your engine. -This means that you can iterate quickly: start Maya once, and then each time you make code or configuration changes that you want to try out, simply hit the **Reload and Restart** button and your changes will be pulled in. +Clicking this will reload your configuration and code and then restart your engine. +This means that you can iterate quickly: start Maya once, and then each time you make code or configuration changes that you want to try out, simply hit the **Reload and Restart** button and your changes will be pulled in. {% include info title="Note" content="If you have any UIs active on screen, these will not automatically update, but you have to go in and re-launch the UIs from the menu." %} ## Part 5: Testing -When you want to test your code, you can easily invite other users to your dev sandbox by adding them to the `User Restrictions` field on the `PipelineConfiguration` entity in {% include product %}. + +When you want to test your code, you can easily invite other users to your dev sandbox by adding them to the `User Restrictions` field on the `PipelineConfiguration` entity in {% include product %}. As soon as you have added a user, they will see new entries on their menus inside of {% include product %} Create and the browser actions, as well as an option to pick the configuration inside of {% include product %} Desktop. ![Dev configuration selectable in {% include product %} Desktop](./images/dev-configuration.png) @@ -197,11 +209,12 @@ All apps provided by {% include product %} use the Toolkit app store to track up ```yaml location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 + name: tk-multi-setframerange + type: app_store + version: v0.1.7 ``` -This allows Toolkit (for example the `tank updates` command) to check when updates are available, update and maintain configurations in a very safe way. + +This allows Toolkit (for example the `tank updates` command) to check when updates are available, update and maintain configurations in a very safe way. Whenever the updates command is run and a new version is available, Toolkit will download the code and place it in a local "bundle cache" on disk and ensure that users have access to it. There are a few different options for sourcing your app releases. @@ -222,37 +235,39 @@ The requirements for this are: - Your git repo needs to contain just a single app - Your git repo should have the same structure as the [starter app repository](https://github.com/shotgunsoftware/tk-multi-starterapp). -- You use [Semantic Versioning](http://semver.org) when creating your tags. -Toolkit will use these version numbers to try to determine which version is the most recent, and by following the convention `vX.Y.Z`. +- You use [Semantic Versioning](http://semver.org) when creating your tags. + Toolkit will use these version numbers to try to determine which version is the most recent, and by following the convention `vX.Y.Z`. Once you have created your first tag in git (eg. `v1.0.0`), you could then set up your config to use a git descriptor that points to your tag. -Then you can simply run `tank updates`, and if new tags have been created, you will be prompted if you want to upgrade. +Then you can simply run `tank updates`, and if new tags have been created, you will be prompted if you want to upgrade. The workflow is now identical to the one which happens with official app store apps. {% include warning title="Caution" content="The git descriptor works well with [centralized configs](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations), where the caching of apps is usually run by an admin and is stored to a central location where all users can access it. However, if you are using a [distributed config](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations), then it may not be as suitable. Your app will be downloaded per user, which means each user will need to have git installed and setup to authenticate with your repo and access the code." %} ## Modifying an existing app -Rather than starting from an empty starter template, it is sometimes necessary to add a minor feature to an existing app, for example, one of {% include product %} Software's standard apps. + +Rather than starting from an empty starter template, it is sometimes necessary to add a minor feature to an existing app, for example, one of {% include product %} Software's standard apps. When you work with a modified version of an app, you typically want to 'track' against the source app and make sure to regularly pull in changes and bug fixes. -When you do this type of development, you pick up the parent code, then apply some of your changes, then release this to your pipeline. -Your release effectively consists of the base version of the app PLUS your applied local changes. -We recommend that you add a version suffix to the existing version number. -This will work seamlessly with Toolkit and is relatively straight forward. +When you do this type of development, you pick up the parent code, then apply some of your changes, then release this to your pipeline. +Your release effectively consists of the base version of the app PLUS your applied local changes. +We recommend that you add a version suffix to the existing version number. +This will work seamlessly with Toolkit and is relatively straight forward. The following workflow illustrates how to proceed: -- You fork the parent app and create your own repository. With the fork, you get all the git tags. -Let's say the latest tag is called `v0.2.12` and the master branch basically equals the contents in this tag. -- You apply your changes and commit to your master branch. You now have `v0.2.12` PLUS your changes. -When you release this to production you need to create a tag. Name the tag `v0.2.12.1`, to indicate that your code is based on `v0.2.12` and it is the first release. +- You fork the parent app and create your own repository. With the fork, you get all the git tags. + Let's say the latest tag is called `v0.2.12` and the master branch basically equals the contents in this tag. +- You apply your changes and commit to your master branch. You now have `v0.2.12` PLUS your changes. + When you release this to production you need to create a tag. Name the tag `v0.2.12.1`, to indicate that your code is based on `v0.2.12` and it is the first release. - Now someone finds a bug in your modifications. Fix the bug and tag up and release `v0.2.12.2`. -- A number of important bug fixes have been released in the parent repository. -Pull them down to your repository. The most recent tag is now `v0.2.15` due to releases that have happened in the parent repository. -Now merge your changes with master and test. You now basically have parent app `v0.2.15` merged with your changes. Tag up `v0.2.15.1`. +- A number of important bug fixes have been released in the parent repository. + Pull them down to your repository. The most recent tag is now `v0.2.15` due to releases that have happened in the parent repository. + Now merge your changes with master and test. You now basically have parent app `v0.2.15` merged with your changes. Tag up `v0.2.15.1`. The tagging scheme outlined above guarantees that the Toolkit updates work correctly and make it easy to quickly see what code each tag in your fork is based on. ### Contributing + We love pull requests! If you feel you have made a change that can benefit others, don't hesitate to feed it back to us as a pull request. We may then fold it back into the main version of the app. Alternatively, add a suggestion for a new idea on our [roadmap page](https://www.shotgunsoftware.com/roadmap/). diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md index e897ada4f..3e42177d5 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md @@ -15,7 +15,6 @@ Or you may wish to be able to run your Toolkit app from your favorite IDE. {% include info title="Note" content="If you are using a [distributed config](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations), a Toolkit engine must be initialized before running Toolkit API methods. It is possible to use the API without bootstrapping an engine if you are using a [centralized config](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations), using the [factory methods](https://developer.shotgridsoftware.com/tk-core/initializing.html#factory-methods), however, you will need to manually find the path to the correct core API for your project when importing `sgtk`." %} - ### Requirements - An understanding of Python programming fundamentals. @@ -43,10 +42,10 @@ The bootstrap process will swap out the currently imported sgtk package for the To start, you need to import an `sgtk` API package which is found in [`tk-core`](https://github.com/shotgunsoftware/tk-core/tree/v0.18.172/python). You could import one from an existing project, however, this might be tricky to conveniently locate. -A recommended approach would be to download a standalone copy +A recommended approach would be to download a standalone copy of the [latest core API](https://github.com/shotgunsoftware/tk-core/releases) which will be used purely for the purpose of bootstrapping. -You should store it in a convenient place where it can be imported. -Make sure that the path you add points to the `python` folder inside the `tk-core` folder as this is where the `sgtk` package is located. +You should store it in a convenient place where it can be imported. +Make sure that the path you add points to the `python` folder inside the `tk-core` folder as this is where the `sgtk` package is located. ### Code @@ -65,7 +64,7 @@ If you are running this script via an IDE or shell, then you will most likely wa To do this you need to run [`LogManager().initialize_custom_handler()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.initialize_custom_handler). You don't need to provide a custom handler for this purpose, as not providing one will set up a standard stream-based logging handler. -Optionally you can also set the [`LogManager().global_debug = True`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.global_debug) to give you more verbose output. +Optionally you can also set the [`LogManager().global_debug = True`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.global_debug) to give you more verbose output. This means that any `logger.debug()` calls in our code or yours will now be output. Logging can have an impact on performance, so you should only enable debug logging when developing, and try to limit the amount of `logger.info()` method calls to those that are important to have visibility over during normal operation. @@ -86,7 +85,7 @@ So before you can perform the bootstrapping, you need to authenticate the Toolki You can authenticate with user credentials or with script credentials. - If the purpose is to bootstrap for a user-facing process like launching an app, or running some code that will require user input, -then user authentication is the best way to go, (This is how all our integrations work by default). + then user authentication is the best way to go, (This is how all our integrations work by default). - If you're writing a script to automate something and a user is not present to authenticate then you should use script credentials. Authentication is handled via the [`{% include product %}Authenticator`](https://developer.shotgridsoftware.com/tk-core/authentication.html?highlight=shotgunauthenticator#sgtk.authentication.ShotgunAuthenticator) class. @@ -144,17 +143,16 @@ You can find a lot of information on the bootstrap API in our [reference docs](h The bootstrapping process at a high level essentially performs the following steps: 1. Retrieves or locates the Toolkit configuration folder. -2. Ensures that the configuration dependencies such as the apps and engines are present in the [bundle cache](../../../quick-answers/administering/where-is-my-cache.md#bundle-cache). -If they are not present, and they are using cloud-based descriptors such as [`app_store`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#the-shotgun-app-store), or [`{% include product %}`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) then it will download them to the bundle cache. +2. Ensures that the configuration dependencies such as the apps and engines are present in the [bundle cache](../../../quick-answers/administering/where-is-my-cache.md#bundle-cache). + If they are not present, and they are using cloud-based descriptors such as [`app_store`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#the-shotgun-app-store), or [`{% include product %}`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) then it will download them to the bundle cache. 3. Swaps out the current loaded sgtk core for the one appropriate to the config. 4. Initializes the engine, apps, and frameworks. - {% include info title="Note" content="Usually bootstrapping should take care of everything that is needed for that engine to run successfully. However, in some situations, the engine may have specific setup requirements that fall outside of the bootstrap process, and must be handled separately." %} - ### Bootstrap Preparation + To bootstrap, you must first create a [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) instance. ```python @@ -167,25 +165,28 @@ This guide won't cover all the available parameters and options, as they are cov #### Plugin ID You can define the plugin id by passing a string to the `ToolkitManager.plugin_id` parameter before calling the bootstrap method. -In this guide, you will be bootstrapping the `tk-shell` engine so you should provide a suitable plugin id name following the conventions described in the reference docs. +In this guide, you will be bootstrapping the `tk-shell` engine so you should provide a suitable plugin id name following the conventions described in the reference docs. + ```python mgr.plugin_id = "basic.shell" ``` #### Engine -If your goal is to launch an app or run Toolkit code in a standalone python environment outside of software such as Maya or Nuke, then `tk-shell` is the engine you will want to bootstrap into. + +If your goal is to launch an app or run Toolkit code in a standalone python environment outside of software such as Maya or Nuke, then `tk-shell` is the engine you will want to bootstrap into. If you are wanting to run Toolkit apps within supported Software, then you will want to pick the appropriate engine, such as `tk-maya` or `tk-nuke`. This parameter is passed directly to the [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) method. See the example in the [entity section](#entity) bellow. #### Entity + The [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) methods `entity` parameter, is used to set the [context](https://developer.shotgridsoftware.com/tk-core/core.html#context) and therefore [environment](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=environment#module-pick_environment) for the launched engine. -The entity can be of any entity type that the configuration is set up to work with. +The entity can be of any entity type that the configuration is set up to work with. For example, if you provide a `Project` entity, the engine will start up in a project context, using the project environment settings. Likewise, you could provide a `Task` entity (where the task is linked to an `Asset`), and it will start up using the `asset_step.yml` environment. This is based on the default configuration behavior, [the environment that is chosen](https://developer.shotgridsoftware.com/487a9f2c/?title=Environment+Configuration+Reference#how-toolkit-determines-the-current-environment) is controlled via the core hook, [`pick_environment.py`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.11/core/hooks/pick_environment.py), and so could be changed to pick a different environment based on the context or other parameters. -You need to provide the entity in the format of a {% include product %} entity dictionary which must contain at least the type and id: +You need to provide the entity in the format of a {% include product %} entity dictionary which must contain at least the type and id: ```python task = {"type": "Task", "id": 17264} @@ -211,12 +212,11 @@ def pre_engine_start_callback(ctx): mgr.pre_engine_start_callback = pre_engine_start_callback ``` - #### Choice of configuration You have the choice of explicitly defining which configuration to bootstrap, or leaving the bootstrap logic to [autodetect an appropriate configuration](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations). You can even set a fallback configuration in case one is not automatically found. -In this guide, we assume that your project has a configuration already setup and that it will be found automatically. +In this guide, we assume that your project has a configuration already setup and that it will be found automatically. ### Bootstrapping @@ -252,7 +252,7 @@ sgtk.set_authenticated_user(user) # Bootstrap ########### -# create an instance of the ToolkitManager which we will use to set a bunch of settings before initiating the bootstrap. +# create an instance of the ToolkitManager which we will use to set a bunch of settings before initiating the bootstrap. mgr = sgtk.bootstrap.ToolkitManager() mgr.plugin_id = "basic.shell" @@ -272,14 +272,16 @@ engine.context engine.sgtk engine.shotgun ``` + Whilst the end goal of this guide is to show you how to launch an app, you could from this point make use of the above attributes and test some code snippets or run some automation that makes use of the Toolkit API. ### Launching the App -When the engine starts, it initializes all the apps defined for the environment. +When the engine starts, it initializes all the apps defined for the environment. The apps in turn register commands with the engine, and the engine usually displays these as actions in a menu, if running in Software like Maya. #### Finding the commands + To first see what commands have been registered, you can print out the [`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) property: ```python @@ -355,7 +357,7 @@ sgtk.set_authenticated_user(user) # Bootstrap ########### -# create an instance of the ToolkitManager which we will use to set a bunch of settings before initiating the bootstrap. +# create an instance of the ToolkitManager which we will use to set a bunch of settings before initiating the bootstrap. mgr = sgtk.bootstrap.ToolkitManager() mgr.plugin_id = "basic.shell" @@ -371,4 +373,4 @@ engine = mgr.bootstrap_engine("tk-shell", entity=project) if "Publish..." in engine.commands: # Launch the Publish app, and it doesn't require any arguments to run so provide an empty list. engine.execute_command("Publish...",[]) -``` \ No newline at end of file +``` diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md index 5277d148a..824bc95a1 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md @@ -8,27 +8,30 @@ lang: en # Developing your own engine ## Introduction + This document outlines some of the technical details relating to Toolkit engine development. Table of Contents: + - [What is a Toolkit engine?](#what-is-a-toolkit-engine) - [Things to know before you start](#things-to-know-before-you-start) - [Approaches to engine integration](#approaches-to-engine-integration) - - [Host software includes Qt, PyQt/PySide and Python](#host-software-includes-qt-pyqtpyside-and-python) - - [Host software includes Qt and Python but not PySide/PyQt](#host-software-includes-qt-and-python-but-not-pysidepyqt) - - [Host software includes Python](#host-software-includes-python) - - [Host software does not contain Python but you can write plugins](#host-software-does-not-contain-python-but-you-can-write-plugins) - - [Host software provides no scriptability at all](#host-software-provides-no-scriptability-at-all) + - [Host software includes Qt, PyQt/PySide and Python](#host-software-includes-qt-pyqtpyside-and-python) + - [Host software includes Qt and Python but not PySide/PyQt](#host-software-includes-qt-and-python-but-not-pysidepyqt) + - [Host software includes Python](#host-software-includes-python) + - [Host software does not contain Python but you can write plugins](#host-software-does-not-contain-python-but-you-can-write-plugins) + - [Host software provides no scriptability at all](#host-software-provides-no-scriptability-at-all) - [Qt window parenting](#qt-window-parenting) - [Startup behavior](#startup-behavior) - [Host software wish list](#host-software-wish-list) ## What is a Toolkit engine? -When developing an engine, you effectively establish a bridge between the host software and the various Toolkit apps and frameworks that are loaded into the engine. + +When developing an engine, you effectively establish a bridge between the host software and the various Toolkit apps and frameworks that are loaded into the engine. The engine makes it possible to abstract the differences between software so that apps can be written in more of a software-agnostic manner using Python and Qt. -The engine is a collection of files, [similar in structure to an app](sgtk-developer-app.md#anatomy-of-the-template-starter-app). It has an `engine.py` file and this must derive from the core [`Engine` base class](https://github.com/shotgunsoftware/tk-core/blob/master/python/tank/platform/engine.py). -Different engines then re-implement various aspects of this base class depending on their internal complexity. +The engine is a collection of files, [similar in structure to an app](sgtk-developer-app.md#anatomy-of-the-template-starter-app). It has an `engine.py` file and this must derive from the core [`Engine` base class](https://github.com/shotgunsoftware/tk-core/blob/master/python/tank/platform/engine.py). +Different engines then re-implement various aspects of this base class depending on their internal complexity. An engine typically handles or provides the following services: - Menu management. At engine startup, once the apps have been loaded, the engine needs to create its {% include product %} menu and add the various apps to this menu. @@ -38,25 +41,25 @@ An engine typically handles or provides the following services: - The base class exposes various init and destroy methods that are executed at various points in the startup process. These can be overridden to control startup and shutdown execution. - Startup logic that gets called by the `tk-multi-launchapp` at launch time, as well as automatic software discovery. -Engines are launched by the Toolkit platform using the [`sgtk.platform.start_engine()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.start_engine) or the [`sgtk.bootstrap.ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) methods. +Engines are launched by the Toolkit platform using the [`sgtk.platform.start_engine()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.start_engine) or the [`sgtk.bootstrap.ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) methods. This command will read the configuration files, launch the engines, load all apps, etc. -The goal with the engine is that once it has launched, it will provide a consistent Python/Qt interface to the apps. -Since all engines implement the same base class, apps can call methods on the engines, for example, to create UIs. +The goal with the engine is that once it has launched, it will provide a consistent Python/Qt interface to the apps. +Since all engines implement the same base class, apps can call methods on the engines, for example, to create UIs. It is up to each engine to implement these methods so that they work nicely inside the host software. ## Things to know before you start we provide [integrations](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) for the most commonly used content creation software. -There are also [engines that Toolkit Community members have built and shared back](https://support.shotgunsoftware.com/hc/en-us/articles/219039828-Community-Shared-Integrations). But sometimes you'll need pipeline integrations for software that doesn't have a Toolkit engine yet. +There are also [engines that Toolkit Community members have built and shared back](https://support.shotgunsoftware.com/hc/en-us/articles/219039828-Community-Shared-Integrations). But sometimes you'll need pipeline integrations for software that doesn't have a Toolkit engine yet. If you have the time and resources, we encourage you to help the Toolkit Community (and yourselves) in writing a missing engine you would like to use! -Before embarking on writing code, [talk to us!](https://knowledge.autodesk.com/contact-support) We can't promise anything, but we will be happy to discuss your plans with you. +Before embarking on writing code, [talk to us!](https://knowledge.autodesk.com/contact-support) We can't promise anything, but we will be happy to discuss your plans with you. We may also be able to connect you to other users who are interested in or have done work on the same engine. -If you can, open a channel of communication with a technical contact or developer of the software you are looking to integrate Toolkit into. -This helps gain insight into what the possibilities and/or roadblocks are for getting something going. +If you can, open a channel of communication with a technical contact or developer of the software you are looking to integrate Toolkit into. +This helps gain insight into what the possibilities and/or roadblocks are for getting something going. Once you establish a contact and talk through the basics of what you are trying to do, you can bring us into the conversation and set up a meeting with all of us to talk through some of the specifics of the engine. -Also, you can engage directly with the Toolkit community in the [{% include product %} community forum](https://community.shotgridsoftware.com/c/pipeline). +Also, you can engage directly with the Toolkit community in the [{% include product %} community forum](https://community.shotgridsoftware.com/c/pipeline). We love to see new integrations, and are always eternally grateful for people's generous contributions to the Toolkit Community! @@ -64,58 +67,60 @@ We love to see new integrations, and are always eternally grateful for people's ## Approaches to engine integration -Depending on what the capabilities of the host app are, engine development may be more or less complex. +Depending on what the capabilities of the host app are, engine development may be more or less complex. This section outlines a couple of different complexity levels that we have noticed during engine development. - ### Host software includes Qt, PyQt/PySide, and Python -This is the best setup for Toolkit and implementing an engine on top of a host software that supports Qt, Python, and PySide is very straight forward. -The [Nuke engine](https://github.com/shotgunsoftware/tk-nuke) or the [Maya engine](https://github.com/shotgunsoftware/tk-maya) is a good example of this. Integration is merely a matter of hooking up some log file management and write code to set up the {% include product %} menu. +This is the best setup for Toolkit and implementing an engine on top of a host software that supports Qt, Python, and PySide is very straight forward. +The [Nuke engine](https://github.com/shotgunsoftware/tk-nuke) or the [Maya engine](https://github.com/shotgunsoftware/tk-maya) is a good example of this. Integration is merely a matter of hooking up some log file management and write code to set up the {% include product %} menu. ### Host software includes Qt and Python but not PySide/PyQt -This class of software includes for example [Motionbuilder](https://github.com/shotgunsoftware/tk-motionbuilder) and is relatively easy to integrate. + +This class of software includes for example [Motionbuilder](https://github.com/shotgunsoftware/tk-motionbuilder) and is relatively easy to integrate. Since the host software itself was written in Qt and contains a Python interpreter, it is possible to compile a version of PySide or PyQt and distribute it with the engine. -This PySide is then added to the Python environment and will allow access to the Qt objects using Python. +This PySide is then added to the Python environment and will allow access to the Qt objects using Python. Commonly, the exact compiler settings that were used when compiling the shot application must be used when compiling PySide, to guarantee it to work. - ### Host software includes Python + This class of software includes for example, the third party integration [Unreal](https://github.com/ue4plugins/tk-unreal). -These host software have a non-Qt UI but contain a Python interpreter. -This means that Python code can execute inside of the environment, but there is no existing Qt event loop running. -In this case, Qt and PySide will need to be included with the engine and the Qt message pump (event) loop must be hooked up with the main event loop in the UI. -Sometimes the host software may contain special methods for doing precisely this. +These host software have a non-Qt UI but contain a Python interpreter. +This means that Python code can execute inside of the environment, but there is no existing Qt event loop running. +In this case, Qt and PySide will need to be included with the engine and the Qt message pump (event) loop must be hooked up with the main event loop in the UI. +Sometimes the host software may contain special methods for doing precisely this. If not, arrangements must be made so that the Qt event loop runs regularly, for example via an on-idle call. - ### Host software does not contain Python but you can write plugins + This class includes [Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) and [After Effects](https://github.com/shotgunsoftware/tk-aftereffects). -There is no Python scripting, but C++ plugins can be created. +There is no Python scripting, but C++ plugins can be created. In this case, the strategy is often to create a plugin that contains an IPC layer and launches Qt and Python in a separate process at startup. - Once the secondary process is running, commands are sent back and forth using the IPC layer. - This type of host software usually means significant work to get a working engine solution. - - {% include info title="Tip" content="With the Photoshop and After Effects engines we actually created [a framework that handles the adobe plugin](https://github.com/shotgunsoftware/tk-framework-adobe). - Both engine make use of the framework to communicate with the host software, and it makes it easier to build other engines for the rest of the adobe family." %} +Once the secondary process is running, commands are sent back and forth using the IPC layer. +This type of host software usually means significant work to get a working engine solution. +{% include info title="Tip" content="With the Photoshop and After Effects engines we actually created [a framework that handles the adobe plugin](https://github.com/shotgunsoftware/tk-framework-adobe). + Both engine make use of the framework to communicate with the host software, and it makes it easier to build other engines for the rest of the adobe family." %} ### Host software provides no scriptability at all -If the host software cannot be accessed programmatically in any way, it is not possible to create an engine for it. +If the host software cannot be accessed programmatically in any way, it is not possible to create an engine for it. ## Qt window parenting -Special attention typically needs to be paid to window parenting. -Usually, the PySide windows will not have a natural parent in the widget hierarchy and this needs to be explicitly called out. + +Special attention typically needs to be paid to window parenting. +Usually, the PySide windows will not have a natural parent in the widget hierarchy and this needs to be explicitly called out. The window parenting is important to provide a consistent experience and without it implemented, Toolkit app windows may appear behind the main window, which can be quite confusing. ## Startup behavior -The engine is also responsible for handling how the software is launched and its integration is started. + +The engine is also responsible for handling how the software is launched and its integration is started. This logic will be called when the `tk-multi-launchapp` tries to launch the software with your engine. You can read more about how this is set up in the [core documentation](https://developer.shotgridsoftware.com/tk-core/initializing.html?highlight=create_engine_launcher#launching-software). ## Host software wish list -The following host software traits can be taken advantage of by Toolkit engines. + +The following host software traits can be taken advantage of by Toolkit engines. The more of them that are supported, the better the engine experience will be! - Built-in Python interpreter, Qt, and PySide! @@ -124,12 +129,13 @@ The more of them that are supported, the better the engine experience will be! - API commands that wrap filesystem interaction: Open, Save, Save As, Add reference, etc. - API commands to add UI elements - - Add a custom Qt widget as a panel to the app (ideally via a bundled PySide) - - Add custom Menu / Context Menu items - - Custom nodes in node-based packages (with an easy way to integrate a custom UI for interaction) - - Introspection to get at things like selected items/nodes + - Add a custom Qt widget as a panel to the app (ideally via a bundled PySide) + - Add custom Menu / Context Menu items + - Custom nodes in node-based packages (with an easy way to integrate a custom UI for interaction) + - Introspection to get at things like selected items/nodes + - Flexible event system - - "Interesting" events can trigger custom code + - "Interesting" events can trigger custom code - Support for running UI asynchronously - - For example, pop up a dialog when a custom menu item is triggered that does not lock up the interface - - Provide a handle to a top-level window so custom UI windows can be parented correctly \ No newline at end of file + - For example, pop up a dialog when a custom menu item is triggered that does not lock up the interface + - Provide a handle to a top-level window so custom UI windows can be parented correctly diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md index a83360be3..5d49657a9 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md @@ -8,9 +8,11 @@ lang: en # Developing your own framework ## Introduction + This document outlines some of the technical details relating to Toolkit framework development. Table of Contents: + - [What is a Toolkit framework?](#what-is-a-toolkit-framework) - [Pre-made {% include product %} frameworks](#pre-made-shotgun-frameworks) - [Creating a Framework](#creating-a-framework) @@ -18,11 +20,11 @@ Table of Contents: ## What is a Toolkit framework? -Toolkit [frameworks](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks) are very similar to Toolkit apps. +Toolkit [frameworks](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks) are very similar to Toolkit apps. The main difference is that a framework is not something you would run on its own. Instead, you would import a framework into your app or engine. It allows you to keep reusable logic separate so that it can be used in multiple engines and apps. An example of a framework would be a library of reusable UI components, that might contain a playlist picker component. -You could then import that framework in your app, and plug in the playlist picker component to your main app UI. +You could then import that framework in your app, and plug in the playlist picker component to your main app UI. ## Pre-made {% include product %} frameworks @@ -42,6 +44,7 @@ To access them, you would import the framework, and then use the [`import_module The API docs contain examples on how to [import frameworks](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks). ## Using Frameworks from hooks + It can be useful to create a framework so that you can share some common logic across hooks. A framework can be used in an app, or other framework hooks, even if the app/framework doesn't explicitly require it in the manifest file, via the [`Hook.load_framework()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Hook.load_framework) method. Note frameworks can't be used in core hooks even with this method. diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md index 486122db2..32568412e 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md @@ -13,7 +13,7 @@ The purpose of this guide is to walk through a basic example of how you can use ### Requirements -- An understanding of Python programming fundamentals. +- An understanding of Python programming fundamentals. - A project with an advanced configuration. If you haven't set up a configuration before you can follow the ["Getting started with configurations"](need link) guide. ### Steps @@ -29,7 +29,7 @@ The purpose of this guide is to walk through a basic example of how you can use ## Part 1: Importing sgtk -The Toolkit API is contained in a python package called `sgtk`. +The Toolkit API is contained in a python package called `sgtk`. Each Toolkit configuration has its own copy of the API, which comes as part of [`tk-core`](https://developer.shotgridsoftware.com/tk-core/overview.html). To use the API on a project's configuration, you must import the `sgtk` package from the configuration you wish to work with; importing it from a different configuration will lead to errors. @@ -44,7 +44,8 @@ When running your code in an environment where {% include product %} is already ```python import sgtk -``` +``` + If you want to use the API outside of a {% include product %} integration, for example, if you're testing it in your favorite IDE, then you will need to set the path to the API first: ```python @@ -68,27 +69,27 @@ As the API documentation states, you don't create an instance of `Sgtk` directly 1. You can get an `Sgtk` instance from the current engine, if you are running the Python code within an environment where the {% include product %} integrations are already running, (such as the Maya Python console, if Maya was launched from {% include product %}.) The `Engine.sgtk` property holds the engine's `Sgtk` instance. So for example, in Maya, you could run the following: - - ```python - # Get the engine that is currently running. - current_engine = sgtk.platform.current_engine() - - # Grab the already created Sgtk instance from the current engine. - tk = current_engine.sgtk - ``` - - You can access the `Sgtk` instance through the [`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) property. - - *Note: The `Engine.sgtk` property should not be confused with or considered the same as the `sgtk` package that you imported in part 1.* - -2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity) - - If you are running in an environment where an engine hasn't already been started, you can use this method to get an `Sgtk` instance based upon an entity id. - The entity whose id you are supplying must belong to the project that the `sgtk` API was imported from. - *This doesn't work with distributed configs, please see the [bootstrapping guide](sgtk-developer-bootstrapping.md) for more details.* - + + ```python + # Get the engine that is currently running. + current_engine = sgtk.platform.current_engine() + + # Grab the already created Sgtk instance from the current engine. + tk = current_engine.sgtk + ``` + + You can access the `Sgtk` instance through the [`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) property. + + _Note: The `Engine.sgtk` property should not be confused with or considered the same as the `sgtk` package that you imported in part 1._ + +2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity) - + If you are running in an environment where an engine hasn't already been started, you can use this method to get an `Sgtk` instance based upon an entity id. + The entity whose id you are supplying must belong to the project that the `sgtk` API was imported from. + _This doesn't work with distributed configs, please see the [bootstrapping guide](sgtk-developer-bootstrapping.md) for more details._ + 3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path) - - much like the `sgtk_from_entity()` except this will accept a path to a configuration or a path to or inside the project root folder, for example, a work file or shot folder. - *This doesn't work with distributed configs, please see the [bootstrapping guide](sgtk-developer-bootstrapping.md) for more details.* + much like the `sgtk_from_entity()` except this will accept a path to a configuration or a path to or inside the project root folder, for example, a work file or shot folder. + _This doesn't work with distributed configs, please see the [bootstrapping guide](sgtk-developer-bootstrapping.md) for more details._ Throughout this guide we will assume you are running this code in an environment where an engine has already been started, so we'll use option 1. Also you will store the `Sgtk` class instance in a variable called `tk`. @@ -135,7 +136,8 @@ Instead of creating a new context however, you could [grab the current context f ```python context = current_engine.context ``` -Since you will be using the context to help resolve a file path for a Task on a Shot in later steps, you need to be certain the context contains the relevant information. + +Since you will be using the context to help resolve a file path for a Task on a Shot in later steps, you need to be certain the context contains the relevant information. If your code was running as part of a Toolkit app, and your app was configured to only run in a shot_step environment then you could safely assume you would get an appropriate current context. However, for the sake of avoiding ambiguity in this guide, you will create a context explicitly from a `Task`, (that must belong to a `Shot`), using the `Sgtk.context_from_entity()`. @@ -163,11 +165,11 @@ print(repr(context)) ``` -Even though you only provided the task, it should have filled in the other related details. +Even though you only provided the task, it should have filled in the other related details. The publish script should now look like this: -```python +```python import sgtk # Get the engine instance that is currently running. @@ -176,7 +178,7 @@ current_engine = sgtk.platform.current_engine() # Grab the pre-created Sgtk instance from the current engine. tk = current_engine.sgtk -# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. +# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. context = tk.context_from_entity("Task", 13155) ``` @@ -195,6 +197,7 @@ You will use the [Sgtk.create_filesystem_structure()](https://developer.shotgrid ```python tk.create_filesystem_structure("Task", context.task["id"]) ``` + You can use the context object to get the task id to generate the folders. Your code should now look like this: @@ -208,7 +211,7 @@ current_engine = sgtk.platform.current_engine() # Grab the pre-created Sgtk instance from the current engine. tk = current_engine.sgtk -# Get a context object from a Task, this Task must belong to a Shot for the future steps to work. +# Get a context object from a Task, this Task must belong to a Shot for the future steps to work. context = tk.context_from_entity("Task", 13155) # Create the required folders based upon the task. @@ -224,7 +227,7 @@ You've now completed all the preparation steps and are ready to move onto genera Whenever you need to know where a file should be placed or found in Toolkit you can use the templates to resolve an absolute path on disk. [Templates](https://developer.shotgridsoftware.com/tk-core/core.html#templates) are essentially tokenized strings that when you apply the context and other data to, can be resolved into filesystem paths. -They are customizable via your [project's pipeline configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates), and their purpose is to provide a standardized method for working out where files should be stored. +They are customizable via your [project's pipeline configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates), and their purpose is to provide a standardized method for working out where files should be stored. The first thing you need to do is get a template instance for the path you wish to generate. Using the `Sgtk` instance you created, you can access the desired `Template` instance via the `Sgtk.templates` attribute, which is a dictionary where the keys are the template names, and the values are [`Template`](https://developer.shotgridsoftware.com/tk-core/core.html#template) instances. @@ -233,11 +236,11 @@ Using the `Sgtk` instance you created, you can access the desired `Template` ins template = tk.templates["maya_shot_publish"] ``` -In this example, you will use the `maya_shot_publish` template. +In this example, you will use the `maya_shot_publish` template. In the [Default Configuration](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.12/core/templates.yml#L305-L306) the unresolved template path looks like this: ```yaml -'sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}' +"sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}" ``` The template is made up of keys that you will need to resolve into actual values. @@ -248,7 +251,8 @@ fields = context.as_template_fields(template) >> {'Sequence': 'seq01_chase', 'Shot': 'shot01_running_away', 'Step': 'comp'} ``` -The [`Context.as_template_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) method gives you a dictionary with the correct values to resolve the template keys. + +The [`Context.as_template_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) method gives you a dictionary with the correct values to resolve the template keys. However, it hasn't provided values for all the keys. The `name`, `version` and `maya_extension` are still missing. The `maya_extension` key [defines a default value](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.8/core/templates.yml#L139) in the template keys section so you don't need to provide a value for that, although you could if you wanted a value other than the default. @@ -282,12 +286,12 @@ Make sure to only create the folders for the directory and not the full file pat You can import the [`os`](https://docs.python.org/3/library/os.html) module and run [`os.path.dirname(publish_path)`](https://docs.python.org/3/library/os.path.html#os.path.dirname) to extract the folder portion of the full file path. ### Creating or copying a file using the path -At this point you have a path, and you could use this, for example, to tell Maya to save a file there, or perhaps copy the file from a different location. + +At this point you have a path, and you could use this, for example, to tell Maya to save a file there, or perhaps copy the file from a different location. It's not important for the sake of this guide that you implement any behavior that actually creates a file on disk in that location. -You can still publish the path even if there is no file there. +You can still publish the path even if there is no file there. However, you can use [`sgtk.util.filesystem.touch_file()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file) to get Toolkit to create an empty file on disk. - ### Bringing it all together so far ```python @@ -300,7 +304,7 @@ current_engine = sgtk.platform.current_engine() # Grab the pre-created Sgtk instance from the current engine. tk = current_engine.sgtk -# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. +# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. context = tk.context_from_entity("Task", 13155) # Create the required folders based upon the task. @@ -330,11 +334,11 @@ The next step is to dynamically work out the next version number rather than har ## Part 6: Finding existing files and getting the latest version number -There two methods you could use here. +There two methods you could use here. 1. Since in this particular example you are resolving a publish file, you could use the [{% include product %} API](https://developer.shotgridsoftware.com/python-api/) to query for the next available version number on `PublishedFile` entities. -2. You can scan the files on disk and work out what versions already exist, and extract the next version number. -This is helpful if the files you're working with aren't tracked in {% include product %} (such as work files). +2. You can scan the files on disk and work out what versions already exist, and extract the next version number. + This is helpful if the files you're working with aren't tracked in {% include product %} (such as work files). While the first option would probably be most suitable for the example in this guide, both approaches have their uses so we'll cover them both. @@ -358,7 +362,7 @@ fields["version"] = r["summaries"]["version_number"] + 1 Using the Toolkit API you can gather a list of existing files, extract the template field values from them, and then figure out the next version. -In the example below, it's gathering the latest version from the work file template. +In the example below, it's gathering the latest version from the work file template. Assuming the work file template and publish file template have the same fields, you could call the method below twice with the same fields to work out the highest publish and work file version and decide using a combination of the two. ```python @@ -380,11 +384,11 @@ def get_next_version_number(tk, template_name, fields): # extract the values from the path so we can read the version. path_fields = template.get_fields(a_file) versions.append(path_fields["version"]) - + # find the highest version in the list and add one. return max(versions) + 1 -# Set the version number in the fields dictionary, that will be used to resolve the template into a path. +# Set the version number in the fields dictionary, that will be used to resolve the template into a path. fields["version"] = get_next_version_number(tk, "maya_shot_work", fields) ``` @@ -432,7 +436,7 @@ current_engine = sgtk.platform.current_engine() # Grab the pre-created Sgtk instance from the current engine. tk = current_engine.sgtk -# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. +# Get a context object from a Task. This Task must belong to a Shot for the future steps to work. context = tk.context_from_entity("Task", 13155) # Create the required folders based upon the task @@ -503,4 +507,4 @@ sgtk.util.register_publish(tk, This guide has hopefully left you with a foundational understanding of how to get started with the Toolkit API. There are of course many other uses for the API, so we recommend reading through the [tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html) for more information. -Also our [forums](https://community.shotgridsoftware.com/c/pipeline/6) are an excellent place to discuss API questions and get answers, and even leave feedback for us about the this guide. \ No newline at end of file +Also our [forums](https://community.shotgridsoftware.com/c/pipeline/6) are an excellent place to discuss API questions and get answers, and even leave feedback for us about the this guide. diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md index 5ed2992f6..71dbac656 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md @@ -9,7 +9,7 @@ lang: en ## Panels -See [https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks) for examples of panel actions. +See [https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks) for examples of panel actions. ### Configuring what is being displayed @@ -21,11 +21,9 @@ The hook supports a simple templating language, allowing for great flexibility. The template language works in the following way: -- {% include product %} values are enclosed in `{brackets}`, for example `Description: {description}`. When this template is rendered, the `{description}` part will be replaced with the description field value. - -- If you want an optional pre- or post-fix for a value which is only shown if the value is not empty, you can use the syntax `{[Prefix]sg_field[suffix]}`. The template `{[Start: ]start_date} {[End: ]end_date}` will render `Start: 12 July 2009 End: 14 July 2012` if both values are populated but `Start: 12 July 2009` if end date isn't set. - -- You can define fallbacks in the case some values are not set. For {% include product %} Versions, the `artist` fields takes precedence over the `created_by` field in order to support a workflow where a producer submits versions on behalf of an artist. In this case, the Version will be created by the producer but the `artist` field will be set to the artist. This, however, is not always the case - in some cases, artist is left blank in pipelines where artists submit their own work. When displaying versions, it is therefore useful to be able to check the `artist` field first, and in case this isn't set, fall back on the `created_by` field. This is done using the `{field1|field2}` syntax, for example: `Created By: {artist|created_by}`. You can combine this with optional fields too, e.g. `{[Created By: ]artist|created_by}`. +- {% include product %} values are enclosed in `{brackets}`, for example `Description: {description}`. When this template is rendered, the `{description}` part will be replaced with the description field value. +- If you want an optional pre- or post-fix for a value which is only shown if the value is not empty, you can use the syntax `{[Prefix]sg_field[suffix]}`. The template `{[Start: ]start_date} {[End: ]end_date}` will render `Start: 12 July 2009 End: 14 July 2012` if both values are populated but `Start: 12 July 2009` if end date isn't set. +- You can define fallbacks in the case some values are not set. For {% include product %} Versions, the `artist` fields takes precedence over the `created_by` field in order to support a workflow where a producer submits versions on behalf of an artist. In this case, the Version will be created by the producer but the `artist` field will be set to the artist. This, however, is not always the case - in some cases, artist is left blank in pipelines where artists submit their own work. When displaying versions, it is therefore useful to be able to check the `artist` field first, and in case this isn't set, fall back on the `created_by` field. This is done using the `{field1|field2}` syntax, for example: `Created By: {artist|created_by}`. You can combine this with optional fields too, e.g. `{[Created By: ]artist|created_by}`. This hook contains the following methods: @@ -60,25 +58,25 @@ The `get_all_fields()` methods returns a list of fields to display for a given e Actions are little snippets of code that operate on a piece of {% include product %} data. Examples include: -- An action that launches RV for a given {% include product %} Version -- An action that allows a user to assign herself to a given Task -- An action that loads a {% include product %} publish into Maya as a Maya reference. +- An action that launches RV for a given {% include product %} Version +- An action that allows a user to assign herself to a given Task +- An action that loads a {% include product %} publish into Maya as a Maya reference. -The actual payload of an action is defined in an _action hook_. Once you have defined the action logic, you can then map that action to {% include product %} objects in the app configuration. These action mappings may for example look like this: +The actual payload of an action is defined in an _action hook_. Once you have defined the action logic, you can then map that action to {% include product %} objects in the app configuration. These action mappings may for example look like this: ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` In the above example, we use the actions `reference`, `import`, `texture_node`, `assign_task` and `play_in_rv`. We then map the actions to various {% include product %} objects and conditions. For example, we are requesting the `import` action to appear for all publishes of type Maya Scene. @@ -92,7 +90,7 @@ For each application that the panel supports, there is an actions hook which imp The panel uses Toolkit's second generation hooks interface, allowing for greater flexibility. This hook format uses an improved syntax. You can see this in the default configuration settings, looking something like this: ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` The `{self}` keyword tells Toolkit to look in the app's `hooks` folder for the hook. If you are overriding this hook with your implementation, change the value to `{config}/panel/maya_actions.py`. This will tell Toolkit to use a hook called `hooks/panel/maya_actions.py` in your configuration folder. @@ -116,7 +114,7 @@ class MyActions(HookBaseClass): def generate_actions(self, sg_data, actions, ui_area): """ Returns a list of action instances for a particular object. - The data returned from this hook will be used to populate the + The data returned from this hook will be used to populate the actions menu. The mapping between {% include product %} objects and actions are kept in a different place @@ -126,12 +124,12 @@ class MyActions(HookBaseClass): This method needs to return detailed data for those actions, in the form of a list of dictionaries, each with name, params, caption and description keys. - Because you are operating on a particular object, you may tailor the output + Because you are operating on a particular object, you may tailor the output (caption, tooltip etc) to contain custom information suitable for this publish. - The ui_area parameter is a string and indicates where the publish is to be shown. + The ui_area parameter is a string and indicates where the publish is to be shown. - - If it will be shown in the main browsing area, "main" is passed. + - If it will be shown in the main browsing area, "main" is passed. - If it will be shown in the details area, "details" is passed. :param sg_data: {% include product %} data dictionary with all the standard publish fields. @@ -175,11 +173,11 @@ We could then bind this new action to a set of publish types in the configuratio ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` By deriving from the hook as shown above, the custom hook code only need to contain the actual added business logic which makes it easier to maintain and update. @@ -188,7 +186,7 @@ By deriving from the hook as shown above, the custom hook code only need to cont The Publish app is highly customizable by way of hooks that control how items are presented to artists for publishing and how those items are then processed. -The full developer documentation for the publisher app can now be found on the [Toolkit Developer Site](http://developer.shotgridsoftware.com/tk-multi-publish2). +The full developer documentation for the publisher app can now be found on the [Toolkit Developer Site](http://developer.shotgridsoftware.com/tk-multi-publish2). For more information on how to use the Publish app, see the [User Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513-Integrations-Developer-Guide#User_guide_link). If you are looking for more information about the first generation Publisher, please visit the [classic Publisher docs](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513-Integrations-Developer-Guide#classic_publisher_link). @@ -202,4 +200,4 @@ See [https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks](http Did we mention that you can write your own Apps? Each Engine exposes a consistent interface based on Python and PySide, so you can write a single App that works in both Nuke, Photoshop and 3dsmax. With the Core API functionality, there is no need to build a big pipeline stack for the studio - instead focus dev resources on solving production problems. Reusing tools between projects is easy with our Toolkit - if file naming conventions or other requirements are changing, simply reconfigure the app. Roll out tools safely via the Toolkit's built-in Git and Github support and quickly hot-load your code when doing development. Work in your own Dev Sandbox and invite TDs and early adopters to test your code without having to roll it out to everyone on the project. -![](images/develop.png) \ No newline at end of file +![](images/develop.png) diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md b/docs/en/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md index 06c4a1442..9e463cef3 100644 --- a/docs/en/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ b/docs/en/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md @@ -29,9 +29,9 @@ Make sure you add detailed comments about what it is you're doing any why you're Remember that other users will have a wide variety of environments and variables in play that may not match what you have at your studio. Toolkit tries to minimize the impact of these types of things for users but there are always things that could be different in other users' environments. Some examples: -- Will your code work the same on OS X, Windows, and Linux? -- Will it work in all supported versions of a Software? -- Will it work the same whether the user launches from a terminal, SG Desktop, {% include product %}, or perhaps their own custom app? +- Will your code work the same on OS X, Windows, and Linux? +- Will it work in all supported versions of a Software? +- Will it work the same whether the user launches from a terminal, SG Desktop, {% include product %}, or perhaps their own custom app? ## Create a Pull Request diff --git a/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md index b732d32e0..543585b75 100644 --- a/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md +++ b/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md @@ -10,52 +10,52 @@ lang: en After completing this guide, you will have the knowledge fundamental to adding your project information to a configuration, associating that configuration with your project, and preparing your pipeline configuration to be customized. ## About the guide - -This guide describes how to use the **Advanced Project Setup Wizard** in {% include product %} Desktop to create a configuration for a digital content creation pipeline. You will quickly become acquainted with the configuration tools, learn how to use the Wizard, and be presented with opportunities to learn more. Using the Wizard creates a pipeline configuration for your project and prepares it to be edited and extended to support each step in the pipeline. The configuration controls aspects of the UI, {% include product %} Apps, and various tools necessary to support a production pipeline. Using the Wizard is just one way to extend a configuration. Along with adding specific settings for each step in a pipeline, it will add integrations with software applications. In this guide, we'll be basing our project's configuration on Toolkit's Default Configuration. -This guide assumes the user: +This guide describes how to use the **Advanced Project Setup Wizard** in {% include product %} Desktop to create a configuration for a digital content creation pipeline. You will quickly become acquainted with the configuration tools, learn how to use the Wizard, and be presented with opportunities to learn more. Using the Wizard creates a pipeline configuration for your project and prepares it to be edited and extended to support each step in the pipeline. The configuration controls aspects of the UI, {% include product %} Apps, and various tools necessary to support a production pipeline. Using the Wizard is just one way to extend a configuration. Along with adding specific settings for each step in a pipeline, it will add integrations with software applications. In this guide, we'll be basing our project's configuration on Toolkit's Default Configuration. + +This guide assumes the user: 1. Has never used the Advanced Project Setup Wizard 2. Has some basic knowledge of how to use {% include product %} 3. Is new to {% include product %} Toolkit ### Using this document - + To use this guide and create a customizable configuration for your project, the following is required: -1. An active {% include product %} site. You can [register for {% include product %} here](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) and get a 30-day trial to begin exploring. -2. {% include product %} Desktop. If Desktop is not installed, you can [begin by following this link.]( https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-Integrations-user-guide#Installation%20of%20Desktop) +1. An active {% include product %} site. You can [register for {% include product %} here](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) and get a 30-day trial to begin exploring. +2. {% include product %} Desktop. If Desktop is not installed, you can [begin by following this link.](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-Integrations-user-guide#Installation%20of%20Desktop) 3. Access to a filesystem where you can store project files and a pipeline configuration. On the filesystem, create a folder called `Shotgun`, with two folders, `projects` and `configs`, within it. ## About the Advanced Project Setup Wizard The Advanced Project Setup Wizard in {% include product %} Desktop generates a pipeline configuration based on the Default Configuration. The Default Configuration provides a solid base to build on, complete with customizable settings, apps, and UI elements that support the pipeline process. It creates a configuration you can edit and extend to meet your project’s pipeline needs. -The Default Configuration includes: -* A basic filesystem schema and templates that determine where files live on disk -* All of the supported [software integrations](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) allowing interaction with {% include product %} and pipeline functions from directly inside the user’s software applications. +The Default Configuration includes: + +- A basic filesystem schema and templates that determine where files live on disk +- All of the supported [software integrations](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) allowing interaction with {% include product %} and pipeline functions from directly inside the user’s software applications. Customizations are only limited by imagination, cleverness, and programming knowledge or the ability to borrow from what others in the {% include product %} community have created. - -### Creating the configuration -A configuration is required for every project. The first time a project is accessed through {% include product %} Desktop, a Basic Configuration is downloaded and configured. This Basic Configuration automatically detects the supported content creation software a user has on their system and associates the configuration with the project. Settings in the pipeline configuration govern the integrations within the supported software applications. The [Panel]( https://support.shotgunsoftware.com/hc/en-us/articles/219033098-Shotgun-Panel) app displays project information from {% include product %} and allows artists to reply to notes and view Versions without leaving their work session. The [Publisher](https://support.shotgunsoftware.com/hc/en-us/articles/219032998-Publishing-your-work) app allows artists to make their work available for others on their team, and through the [Loader](https://support.shotgunsoftware.com/hc/en-us/articles/219033078-Load-Published-Files-) app, artists can load their teammates' published files. The Basic Configuration does not include file system management setup or the development of templates for specifying how files and directories are named on disk. It also doesn’t have the plethora of Apps that are added when a Default Configuration is configured. It is a simple configuration that allows Toolkit to run without any manual editing of configuration files. The Wizard replaces the Basic Configuration with a Default Configuration. It provides more apps and software integrations to support you on your journey. While the Basic Configuration can be edited as well, it's not until you have an advanced setup that your project will be set up for customization. +### Creating the configuration +A configuration is required for every project. The first time a project is accessed through {% include product %} Desktop, a Basic Configuration is downloaded and configured. This Basic Configuration automatically detects the supported content creation software a user has on their system and associates the configuration with the project. Settings in the pipeline configuration govern the integrations within the supported software applications. The [Panel](https://support.shotgunsoftware.com/hc/en-us/articles/219033098-Shotgun-Panel) app displays project information from {% include product %} and allows artists to reply to notes and view Versions without leaving their work session. The [Publisher](https://support.shotgunsoftware.com/hc/en-us/articles/219032998-Publishing-your-work) app allows artists to make their work available for others on their team, and through the [Loader](https://support.shotgunsoftware.com/hc/en-us/articles/219033078-Load-Published-Files-) app, artists can load their teammates' published files. The Basic Configuration does not include file system management setup or the development of templates for specifying how files and directories are named on disk. It also doesn’t have the plethora of Apps that are added when a Default Configuration is configured. It is a simple configuration that allows Toolkit to run without any manual editing of configuration files. The Wizard replaces the Basic Configuration with a Default Configuration. It provides more apps and software integrations to support you on your journey. While the Basic Configuration can be edited as well, it's not until you have an advanced setup that your project will be set up for customization. ### Differences between the Basic and Default Configurations -| FEATURE | BASIC CONFIGURATION | DEFAULT CONFIGURATION | -| ------- | ------------------- | --------------------- | -| Download | Automatically downloaded when a project is accessed | Created via Advanced Setup Wizard | -| Accessibility | Stored in a system location | Manually editable files | -| Updates | Automatically updated | Manually updated | -| File System Support | No support for filesystem schema | Includes tools to support folder structure and file naming standards | -| Software Integrations | 3ds Max, Houdini, Maya, Nuke, Photoshop, Flame | Basic + Hiero, Motionbulder, Mari | -| Toolkit Apps | {% include product %} Panel, Publisher, Loader | Basic + Workfiles, Snap Shot, Scene breakdown, Nuke write node, Houdini Mantra node, and more | +| FEATURE | BASIC CONFIGURATION | DEFAULT CONFIGURATION | +| --------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| Download | Automatically downloaded when a project is accessed | Created via Advanced Setup Wizard | +| Accessibility | Stored in a system location | Manually editable files | +| Updates | Automatically updated | Manually updated | +| File System Support | No support for filesystem schema | Includes tools to support folder structure and file naming standards | +| Software Integrations | 3ds Max, Houdini, Maya, Nuke, Photoshop, Flame | Basic + Hiero, Motionbulder, Mari | +| Toolkit Apps | {% include product %} Panel, Publisher, Loader | Basic + Workfiles, Snap Shot, Scene breakdown, Nuke write node, Houdini Mantra node, and more | In this guide, you will use the Wizard in {% include product %} Desktop to generate a pipeline configuration for your project based on the Default Configuration. Generating this configuration sets you up to make the customizations necessary to support a proprietary production pipeline. -## Begin Exercise +## Begin Exercise ### Prepare to use a Default Configuration @@ -77,19 +77,19 @@ In this guide, you will use the Wizard in {% include product %} Desktop to gener ### Accessing the Default Configuration -A Basic Configuration was downloaded and configured when the project was accessed. The Publish app and supported software packages were detected and automatically added to the **Apps** pane in {% include product %} Desktop. +A Basic Configuration was downloaded and configured when the project was accessed. The Publish app and supported software packages were detected and automatically added to the **Apps** pane in {% include product %} Desktop. **Step 4:** Once the project is loaded, select your profile **avatar** at the bottom right of the screen. In the popup menu, select **Advanced project setup…** to initiate the Wizard. ![Advanced project setup](./images/advanced_config/6_advanced_project_setup.png) -A dialog box will be displayed with four options and {% include product %} Default selected. At this point, you can choose to base your project's pipeline configuration on the configuration of an existing project, on a configuration in a git repository, or on a path on disk. +A dialog box will be displayed with four options and {% include product %} Default selected. At this point, you can choose to base your project's pipeline configuration on the configuration of an existing project, on a configuration in a git repository, or on a path on disk. For this exercise, we'll choose **{% include product %} Default**. This option will create a pipeline configuration for your project that's based on {% include product %}'s Default Configuration. ![Select config](./images/advanced_config/7_select_config.png) -**Step 5:** Select **Continue**. +**Step 5:** Select **Continue**. A dialog box will be displayed with two options and **Default** selected. At this point there’s an option to select a Legacy Default Configuration setup. This configuration setup is from an older version of {% include product %} for studios who still use that version. We will use the Default for this exercise. @@ -103,7 +103,7 @@ A dialog box will appear displaying a drop-down menu next to the word `Storage:` ![Define storage](./images/advanced_config/9_define_storage1.png) -**Step 7:** Identify where to store project data for this project. From the dropdown at the top of the dialogue box select **+ New** and type **projects** in the field. +**Step 7:** Identify where to store project data for this project. From the dropdown at the top of the dialogue box select **+ New** and type **projects** in the field. ![Define storage](./images/advanced_config/10_define_storage2.png) @@ -113,7 +113,7 @@ A dialog box will appear displaying a drop-down menu next to the word `Storage:` ![Storage root folder](./images/advanced_config/11_storage_root_folder.png) -This setup allows {% include product %} to have access to only the folder you identify for storing production data. When preparing for this exercise you added a `projects/` directory within your {% include product %} root directory. The `projects/` directory is where Toolkit will store any local project related information. +This setup allows {% include product %} to have access to only the folder you identify for storing production data. When preparing for this exercise you added a `projects/` directory within your {% include product %} root directory. The `projects/` directory is where Toolkit will store any local project related information. ![Define storage](./images/advanced_config/12_define_Storage3.png) @@ -125,7 +125,7 @@ The operating system path is automatically updated to identify the path where th **Step 10:** Select **Continue**. -### Name the Project Folder +### Name the Project Folder A dialog box is displayed with the name of the project populating the text field. The name is automatically populated pulling from the project information and the path is automatically updated. @@ -133,15 +133,15 @@ A dialog box is displayed with the name of the project populating the text field Toolkit can work in either a Distributed Setup, where the pipeline configuration is uploaded to {% include product %} and cached locally for each user, or a Centralized Setup, where users access a single configuration in a shared location on disk. For this exercise we will use a Centralized Setup. You can [learn more about Distributed Setups here](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations). -The final step generates the appropriate folders, files, and data necessary to create the configuration specific to a project. +The final step generates the appropriate folders, files, and data necessary to create the configuration specific to a project. ![Centralized storage](./images/advanced_config/15_centralized_storage.png) -**Step 11:** Under the appropriate operating system, select **Browse...** and navigate to the configuration folder you created when preparing for this exercise, `configs`, and enter the project name **the_other_side**. This creates the folder where the project configuration is stored. Select **Run Setup** and wait for it to complete the setup. +**Step 11:** Under the appropriate operating system, select **Browse...** and navigate to the configuration folder you created when preparing for this exercise, `configs`, and enter the project name **the_other_side**. This creates the folder where the project configuration is stored. Select **Run Setup** and wait for it to complete the setup. ![Project setup](./images/advanced_config/16_project_setup_config.png) -**Step 12:** Select **Done** to display the new icons populating the project windows. +**Step 12:** Select **Done** to display the new icons populating the project windows. ![Setup complete](./images/advanced_config/17_project_setup_complete.png) @@ -157,17 +157,17 @@ And now the real fun begins, learning all the things you can do with the Configu ## Advanced topics -{% include product %} Toolkit provides many convenient ways to edit, clone, or take over a configuration. Extending existing configurations will save time and allow you access to all of the cool stuff that others within your network have created. You can take advantage of the vast {% include product %} [community](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) that may have the exact configuration you need. The {% include product %} community is a sharing community, so be kind, say thank you, and recognize the person who created the configuration that helped you get the job done. Oh, and don’t forget to give back, it’s how we help our fellow {% include product %} gurus and what makes it so special to be a part of this community! +{% include product %} Toolkit provides many convenient ways to edit, clone, or take over a configuration. Extending existing configurations will save time and allow you access to all of the cool stuff that others within your network have created. You can take advantage of the vast {% include product %} [community](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) that may have the exact configuration you need. The {% include product %} community is a sharing community, so be kind, say thank you, and recognize the person who created the configuration that helped you get the job done. Oh, and don’t forget to give back, it’s how we help our fellow {% include product %} gurus and what makes it so special to be a part of this community! Below are some ways you can have fun with configurations. ### Using the command line to create a default configuration -From inside any project configuration, the `tank` command lets you run administrative commands from a terminal. Each project has its own dedicated `tank` command. The `tank setup_project` command's functionality is analogous to the Advanced Setup Wizard's: it creates an editable configuration on disk for your project based either on an existing project's configuration or the Default Configuration. You can learn more about running [`tank setup_project` here](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#setup_project), and more about the [`tank` command here](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#Using%20the%20tank%20command). +From inside any project configuration, the `tank` command lets you run administrative commands from a terminal. Each project has its own dedicated `tank` command. The `tank setup_project` command's functionality is analogous to the Advanced Setup Wizard's: it creates an editable configuration on disk for your project based either on an existing project's configuration or the Default Configuration. You can learn more about running [`tank setup_project` here](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#setup_project), and more about the [`tank` command here](https://support.shotgunsoftware.com/hc/en-us/articles/219033178-Administering-Toolkit#Using%20the%20tank%20command). ### Editing a configuration that's in production -There will be times when you want to modify a configuration that is currently in production, but you won't want to edit it while artists are using it. With just a few commands, {% include product %} provides a way to copy an existing configuration where you can test your modifications safely before pushing them into production. This process replaces the production configuration with the new one and automatically backs up the old one. +There will be times when you want to modify a configuration that is currently in production, but you won't want to edit it while artists are using it. With just a few commands, {% include product %} provides a way to copy an existing configuration where you can test your modifications safely before pushing them into production. This process replaces the production configuration with the new one and automatically backs up the old one. The reasons you would want work on a copy of a configuration are: @@ -184,6 +184,6 @@ This guide walks through creating a **centralized configuration**: a single copy ### Working with more than one root folder -Ideally your facility would want to be optimized for specific tasks. You can work with more than one root folder to optimize things such as video playback for dailies on one server and interactive processing on another. Toolkit allows you to work with more than one storage root in order to facilitate workflows such as these. Check out how to convert from a [single root to a multi-root configuration](../../../quick-answers/administering/convert-from-single-root-to-multi.md). +Ideally your facility would want to be optimized for specific tasks. You can work with more than one root folder to optimize things such as video playback for dailies on one server and interactive processing on another. Toolkit allows you to work with more than one storage root in order to facilitate workflows such as these. Check out how to convert from a [single root to a multi-root configuration](../../../quick-answers/administering/convert-from-single-root-to-multi.md). Now that you have a pipeline configuration for your project, get started on editing it! Jump into the next guide, [Editing a Pipeline Configuration](editing_app_setting.md), to learn how. diff --git a/docs/en/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md b/docs/en/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md index 100efc0f3..c95ca38cf 100644 --- a/docs/en/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ b/docs/en/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md @@ -5,48 +5,48 @@ pagename: toolkit-guides-filesystem-configuration lang: en --- -# Dynamic filesystem configuration +# Dynamic filesystem configuration -In this guide, you will learn how to modify your Toolkit pipeline configuration to customize your production folder structure and file naming. +In this guide, you will learn how to modify your Toolkit pipeline configuration to customize your production folder structure and file naming. ## About the guide -One of the hardest things about managing a pipeline is keeping track of the myriad files that will be created. Your Toolkit pipeline automates filesystem management: by creating folders based on data in {% include product %} and a configured folder structure, and automatically writing files to the right place and with standardized naming, artists can focus on content creation. Your pipeline configuration comes with a default set of folder and file naming conventions, but productions often customize them. This guide will provide the knowledge necessary to make those customizations. +One of the hardest things about managing a pipeline is keeping track of the myriad files that will be created. Your Toolkit pipeline automates filesystem management: by creating folders based on data in {% include product %} and a configured folder structure, and automatically writing files to the right place and with standardized naming, artists can focus on content creation. Your pipeline configuration comes with a default set of folder and file naming conventions, but productions often customize them. This guide will provide the knowledge necessary to make those customizations. -In the Default Configuration, assets are managed in a folder structure like `asset_type/asset/pipeline_step`. In this guide, we’ll be using a custom entity called “Set” to organize them further by the production set on which each asset is used. We will first set up the custom entity in {% include product %}, then use it to manage the assets created for any given set, so that the folder structure looks like `set/asset_type/asset/pipeline_step`. +In the Default Configuration, assets are managed in a folder structure like `asset_type/asset/pipeline_step`. In this guide, we’ll be using a custom entity called “Set” to organize them further by the production set on which each asset is used. We will first set up the custom entity in {% include product %}, then use it to manage the assets created for any given set, so that the folder structure looks like `set/asset_type/asset/pipeline_step`. -We can demonstrate the idea behind organizing assets by set with an example: say you have a project where some scenes take place in a garage, while others take place in a dining room. With our setup, files for assets like “wrench”, “oilcan”, or “workbench” would be organized in a “garage” folder, while “plate”, “winebottle”, or “tablecloth” would be organized in a “dining_room” folder. In our example, we'll be ensuring that a juicy "filet" asset is properly placed in the dining room. +We can demonstrate the idea behind organizing assets by set with an example: say you have a project where some scenes take place in a garage, while others take place in a dining room. With our setup, files for assets like “wrench”, “oilcan”, or “workbench” would be organized in a “garage” folder, while “plate”, “winebottle”, or “tablecloth” would be organized in a “dining_room” folder. In our example, we'll be ensuring that a juicy "filet" asset is properly placed in the dining room. -As part of our example, we’ll also edit the filenaming templates for the project, such that Maya work files for assets will include the set in their name. The dynamically generated name of the file will distinguish files for the dining room from files used in other sets. +As part of our example, we’ll also edit the filenaming templates for the project, such that Maya work files for assets will include the set in their name. The dynamically generated name of the file will distinguish files for the dining room from files used in other sets. ### There are three parts to this guide -* Creating a **custom entity** in {% include product %} called “Set”, which you will use to associate with the dining room elements the artists are creating. -* Editing the folder **schema**, enabling Toolkit to include a dynamically named folder based on the current set in the folder structure. -* Editing the **template** used for naming asset work files, enabling Toolkit to include the name of the associated set in the file name. +- Creating a **custom entity** in {% include product %} called “Set”, which you will use to associate with the dining room elements the artists are creating. +- Editing the folder **schema**, enabling Toolkit to include a dynamically named folder based on the current set in the folder structure. +- Editing the **template** used for naming asset work files, enabling Toolkit to include the name of the associated set in the file name. + +### Prerequisites -### Prerequisites - To use this guide, the following is required: -1. An active [{% include product %}](https://www.shotgridsoftware.com/signup/) site. You should have a project with at least one Asset created. The asset should have a Model task. +1. An active [{% include product %}](https://www.shotgridsoftware.com/signup/) site. You should have a project with at least one Asset created. The asset should have a Model task. 2. A basic understanding of how a {% include product %} site is used to manage assets 3. [{% include product %} Desktop](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-Integrations-user-guide#Installation%20of%20Desktop) installed on your system. 4. A cloned pipeline configuration for the identified project, or complete the [Getting started with configurations](./advanced_config.md) guide and clone the configuration created in that exercise. -5. Basic familiarity with YAML. +5. Basic familiarity with YAML. 6. Read and write permissions set appropriately for the filesystem where the Pipeline Configuration is stored. 7. Read and write permissions set appropriately to allow Toolkit to read and write to the production filesystem. -8. An active subscription for Maya. Get a 30 day trial of [Maya](https://www.autodesk.com/products/maya/free-trial-dts?adobe_mc_ref=https%3A%2F%2Fwww.google.com%2F&adobe_mc_sdid=SDID%3D577C0A84DDF5D35D-50E96EA2052056FE%7CMCORGID%3D6DC7655351E5696B0A490D44%2540AdobeOrg%7CTS%3D1543444689) +8. An active subscription for Maya. Get a 30 day trial of [Maya](https://www.autodesk.com/products/maya/free-trial-dts?adobe_mc_ref=https%3A%2F%2Fwww.google.com%2F&adobe_mc_sdid=SDID%3D577C0A84DDF5D35D-50E96EA2052056FE%7CMCORGID%3D6DC7655351E5696B0A490D44%2540AdobeOrg%7CTS%3D1543444689) {% include info title="Note" content="This guide is based on the `tk-config-default2` pipeline configuration. If your config was modified, the location of files, folders, and blocks of YAML settings may vary from what is described here." %} ### About file schemas and templates -The schema and templates in the Toolkit pipeline configuration allow you to take advantage of your {% include product %} data for managing production files on disk. The schema in the Default Configuration includes entities like **Shot**, **Sequence**, **Asset**, **Asset Type**, etc. Other entities like **Level**, **Episode**, **Season**, or in our case, custom entities like **Set** can be added. +The schema and templates in the Toolkit pipeline configuration allow you to take advantage of your {% include product %} data for managing production files on disk. The schema in the Default Configuration includes entities like **Shot**, **Sequence**, **Asset**, **Asset Type**, etc. Other entities like **Level**, **Episode**, **Season**, or in our case, custom entities like **Set** can be added. -The Toolkit platform allows you to build your folder structure dynamically by using a **schema**, a miniature version of a production folder structure that will be used as a template when building out your actual production filesystem. The schema is an explicit guide for the dynamic creation of folders, and uses YAML files to define the rules for dynamically created folders. The Default Configuration includes a pre-configured schema that supports folder creation for both asset and shot pipelines. You will be modifying the portion of the schema that supports creating the asset folder structure, `/assets///`, to add support for the new **Set** entity you’re creating. +The Toolkit platform allows you to build your folder structure dynamically by using a **schema**, a miniature version of a production folder structure that will be used as a template when building out your actual production filesystem. The schema is an explicit guide for the dynamic creation of folders, and uses YAML files to define the rules for dynamically created folders. The Default Configuration includes a pre-configured schema that supports folder creation for both asset and shot pipelines. You will be modifying the portion of the schema that supports creating the asset folder structure, `/assets///`, to add support for the new **Set** entity you’re creating. -**Templates** allow you to dynamically name and save files as they’re created using {% include product %} data and information from the schema structure. The Default Configuration provides a set of starter templates that you can edit to meet the needs of your pipeline. +**Templates** allow you to dynamically name and save files as they’re created using {% include product %} data and information from the schema structure. The Default Configuration provides a set of starter templates that you can edit to meet the needs of your pipeline. {% include info title="Note" content="The Basic setup for ShotGrid integrations doesn’t include filesystem management. In order to configure filesystem management for your project, your project will need an Advanced setup. The first guide, [Getting started with configurations](./advanced_config.md) goes through the Advanced setup process" %} @@ -60,7 +60,7 @@ Customizing your schema and templates will allow you to dynamically manage the f ![Python app](./images/dynamic_filesystem_configuration/1_site_preferences.png) -Displayed is a list of entity types that are available in {% include product %}. At the top of the list in the image below are some entity types that are configured for the current {% include product %} site. Underneath these entity types are several **Custom Entities** that are not configured or enabled. +Displayed is a list of entity types that are available in {% include product %}. At the top of the list in the image below are some entity types that are configured for the current {% include product %} site. Underneath these entity types are several **Custom Entities** that are not configured or enabled. ### Choose one of the custom entity types, configure it, and enable it. @@ -70,7 +70,7 @@ Displayed is a list of entity types that are available in {% include product %}. ![Python app](./images/dynamic_filesystem_configuration/4_enable_entity.png) -Doing this makes that custom entity active in {% include product %} and gives it the display name *Set*. Essentially you are creating an alias for the custom entity because the system name of the entity remains `CustomEntity01`. In this example, we're using `CustomEntity01`; you might use a different custom entity. +Doing this makes that custom entity active in {% include product %} and gives it the display name _Set_. Essentially you are creating an alias for the custom entity because the system name of the entity remains `CustomEntity01`. In this example, we're using `CustomEntity01`; you might use a different custom entity. {% include info title="Note" content="Remember the system name of the custom entity you chose." %} @@ -78,9 +78,9 @@ Doing this makes that custom entity active in {% include product %} and gives it Adding a data field to the Asset entity enables us to link assets to the new entity. The assets the artists create for the dining room will be associated with the **Dining Room** set entity. -**Step 3:** Select the **Projects** dropdown at the top of the page to open the project you want to use for this exercise. +**Step 3:** Select the **Projects** dropdown at the top of the page to open the project you want to use for this exercise. -**Step 4:** Select **Assets** in your project menu bar to go to an Assets page. In the Assets menu, select **Fields > Manage Asset Fields…** +**Step 4:** Select **Assets** in your project menu bar to go to an Assets page. In the Assets menu, select **Fields > Manage Asset Fields…** ![Python app](./images/dynamic_filesystem_configuration/5_manage_asset_fields.png) @@ -96,7 +96,7 @@ In **New Field Name**, type “Set”. In the **GENERAL** menu under **Field Typ ![Python app](./images/dynamic_filesystem_configuration/7_field_parameters.png) -For this guide, apply it to **Only the current project** and select **Create Field**. +For this guide, apply it to **Only the current project** and select **Create Field**. {% include product %} will configure the new field. @@ -106,7 +106,7 @@ Your change has been applied and you can select **Done**. ### Creating the **Dining Room** Set entity -**Step 5:** Select the new **Set** field of an asset and start typing Dining Room. A dialog box is displayed stating, **No matches found. Create “Dining Room”** +**Step 5:** Select the new **Set** field of an asset and start typing Dining Room. A dialog box is displayed stating, **No matches found. Create “Dining Room”** ![Python app](./images/dynamic_filesystem_configuration/11_create_set.png) @@ -116,15 +116,15 @@ Select **Create “Dining Room”**. Select **Create Set**. -Adding **Dining Room** in the Set field of an asset creates an [association](https://support.shotgunsoftware.com/hc/en-us/articles/115000010973-Linking-a-custom-entity) with the Dining Room set entity. +Adding **Dining Room** in the Set field of an asset creates an [association](https://support.shotgunsoftware.com/hc/en-us/articles/115000010973-Linking-a-custom-entity) with the Dining Room set entity. ![Python app](./images/dynamic_filesystem_configuration/13_dining_room_associated.png) -**Step 6:** Assign the Model task on the **filet** asset to yourself, so you can find it easily for testing purposes. +**Step 6:** Assign the Model task on the **filet** asset to yourself, so you can find it easily for testing purposes. ### Setting up the schema -You’ve now enabled a Set custom entity, created a Set entity called “Dining Room”, and linked an Asset entity to the Dining Room set. You’ve got all the pieces in place in your {% include product %} site to now modify your folder structure. When an artist starts working on a task, Toolkit uses the associated {% include product %} data to determine what folders to create in the filesystem. New folders are created and named automatically based on the pipeline configuration’s schema. +You’ve now enabled a Set custom entity, created a Set entity called “Dining Room”, and linked an Asset entity to the Dining Room set. You’ve got all the pieces in place in your {% include product %} site to now modify your folder structure. When an artist starts working on a task, Toolkit uses the associated {% include product %} data to determine what folders to create in the filesystem. New folders are created and named automatically based on the pipeline configuration’s schema. Now it’s time to define the folder structure you want Toolkit to dynamically generate as artists step through the production pipeline. This is done by editing the schema. @@ -150,7 +150,7 @@ To achieve this, you would set up the schema like this: `/assets////` -The Set entity is represented as `CustomEntity01`. While we gave CustomEntity01 the *display name* of Set in {% include product %}, in our configuration, we’ll always refer to it by its system name, `CustomEntity01`. +The Set entity is represented as `CustomEntity01`. While we gave CustomEntity01 the _display name_ of Set in {% include product %}, in our configuration, we’ll always refer to it by its system name, `CustomEntity01`. ### How the schema uses YAML files @@ -160,13 +160,12 @@ A schema can contain static and dynamic folders. If you have a static folder in The schema has a `project` folder that contains folders relative to the different entities {% include product %} tracks. You are adding the new asset entity, CustomEntity01, to enable {% include product %} to track the items in a Set. These items are assets, so you will edit the folders and YAML files under assets. -Again, our goal is to go from an `asset_type/asset/step` folder structure to `set/asset_type/asset/step`. So, we’ll want to add a folder to represent set in our schema, with a corresponding YAML file. Since we need to use the system name for custom entities, we’ll be creating the `CustomEntity01/` folder and `CustomEntity01.yml`. +Again, our goal is to go from an `asset_type/asset/step` folder structure to `set/asset_type/asset/step`. So, we’ll want to add a folder to represent set in our schema, with a corresponding YAML file. Since we need to use the system name for custom entities, we’ll be creating the `CustomEntity01/` folder and `CustomEntity01.yml`. **Step 8:** Add a `CustomEntity01` folder inside the `project/assets` folder of your schema. ![Python app](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - **Step 9:** Create a file called `CustomEntity01.yml` file next to the `CustomEntity01` folder, with the following contents: ```yaml @@ -177,16 +176,16 @@ name: "code" entity_type: "CustomEntity01" filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } ``` -The YAML file will give the instructions to Toolkit for what to name the `CustomEntity01` folder. In this case, we’re making a folder of type `{% include product %}_entity`, which means that it corresponds to a {% include product %} query. The `entity_type` field tells us to query the `CustomEntity01` entity in {% include product %}, and the `name` field tells us which *field* on the entity to query – in this case we’re getting the `code` field from `CustomEntity01`. +The YAML file will give the instructions to Toolkit for what to name the `CustomEntity01` folder. In this case, we’re making a folder of type `{% include product %}_entity`, which means that it corresponds to a {% include product %} query. The `entity_type` field tells us to query the `CustomEntity01` entity in {% include product %}, and the `name` field tells us which _field_ on the entity to query – in this case we’re getting the `code` field from `CustomEntity01`. The `filters` field limits the cases in which this dynamic folder should be created. **Step 10:** Move `asset_type/` and `asset_type.yml` into the `CustomEntity01` folder -As we want our folder structure to look like `Dining-Room/Prop/filet`, the `asset_type` folder should be *below* the `CustomEntity01` folder in our hierarchy. Move `asset_type/` and `asset_type.yml` into the `CustomEntity01` folder. +As we want our folder structure to look like `Dining-Room/Prop/filet`, the `asset_type` folder should be _below_ the `CustomEntity01` folder in our hierarchy. Move `asset_type/` and `asset_type.yml` into the `CustomEntity01` folder. ![Python app](./images/dynamic_filesystem_configuration/17_schema.png) @@ -196,8 +195,8 @@ The `filters` field limits which entities have folders created for them at a giv ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } ``` When we decide to make a folder for an asset, we want to make sure that we’re in the correct project folder, and in the correct asset_type folder. Now that we’ve added a set folder, we’ll want to add a third filter. Without it, we’d end up with folders like the following, which of course would be incorrect: @@ -207,28 +206,28 @@ assets/Dining-Room/Prop/spoon assets/Garage/Prop/spoon assets/Classroom/Prop/spoon ``` + To prevent that, we’ll add a third filter, which will ensure that an asset’s folder will only be created in the correct set’s folder. **Step 11:** Modify the `filters` field in `asset.yml` to look like this: ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - - { "path": "sg_set", "relation": "is", "values": [ "$CustomEntity01" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } + - { "path": "sg_set", "relation": "is", "values": ["$CustomEntity01"] } ``` - ## Test folder creation -You’ve now successfully modified your schema to organize assets by a Set custom entity. Now, let’s test it out. +You’ve now successfully modified your schema to organize assets by a Set custom entity. Now, let’s test it out. Folders are created at a few points in Toolkit pipeline workflows: -* **Application launchers**: Every time a user launches a DCC for a task, Toolkit will create the directories for that task if they’re not already there. Since launching a DCC tends to be the first thing someone does with Toolkit, this is the usual way directories get created. This can happen via the right-click menus in {% include product %}, or from {% include product %} Desktop or Create apps. -* **{% include product %} menu**: The most direct way to create folders for a task is to right-click on it in {% include product %} and choose the “Create Folders” menu item. -* **Toolkit API**: You can trigger the directory creation logic directly through the Toolkit API. This can be used to plug Toolkit into a custom launcher, or for something like an event trigger for a workflow where you want to automatically create the directories for a Shot as it is created in {% include product %}. -* **tank command**: Analogous to the menu item in {% include product %}, the `tank folders` terminal command will also create folders for a task. +- **Application launchers**: Every time a user launches a DCC for a task, Toolkit will create the directories for that task if they’re not already there. Since launching a DCC tends to be the first thing someone does with Toolkit, this is the usual way directories get created. This can happen via the right-click menus in {% include product %}, or from {% include product %} Desktop or Create apps. +- **{% include product %} menu**: The most direct way to create folders for a task is to right-click on it in {% include product %} and choose the “Create Folders” menu item. +- **Toolkit API**: You can trigger the directory creation logic directly through the Toolkit API. This can be used to plug Toolkit into a custom launcher, or for something like an event trigger for a workflow where you want to automatically create the directories for a Shot as it is created in {% include product %}. +- **tank command**: Analogous to the menu item in {% include product %}, the `tank folders` terminal command will also create folders for a task. We’ll test with the `tank` command. @@ -265,58 +264,57 @@ The final structure matches what was expected, and Toolkit is so smart that it e `/the_other_side/assets/Dining-Room/Prop/Filet/model` - ![Python app](./images/dynamic_filesystem_configuration/folders_done.png) ### Toolkit templates for reading and writing files -Now that we’ve set up our folder structure, the next step is to edit the *templates*, so production files will be named appropriately and put in the correct folder when they're created. +Now that we’ve set up our folder structure, the next step is to edit the _templates_, so production files will be named appropriately and put in the correct folder when they're created. ### How Toolkit apps use templates -You first created a way to associate an asset with a set in {% include product %} by enabling CustomEntity01 to represent sets, then adding a link field to the Asset entity to represent the link between an asset and a set. After establishing the relationship between assets and sets, you set up your folder schema to use that association to place all asset *folders* within a folder for their associated set. Now you’re going to create a way to dynamically name *files* and allow Toolkit Apps to manage the files automatically. +You first created a way to associate an asset with a set in {% include product %} by enabling CustomEntity01 to represent sets, then adding a link field to the Asset entity to represent the link between an asset and a set. After establishing the relationship between assets and sets, you set up your folder schema to use that association to place all asset _folders_ within a folder for their associated set. Now you’re going to create a way to dynamically name _files_ and allow Toolkit Apps to manage the files automatically. -As artists start working on tasks in a project, the necessary folder structure is generated. Then, when they initiate the Workfiles app’s **File Save** action, the file is named automatically. A template accessed through Toolkit’s Workfiles app is used to name that file. Render apps like Nuke Write node and Houdini Mantra node use templates to name and save rendered files, as does the Publisher app for published files. +As artists start working on tasks in a project, the necessary folder structure is generated. Then, when they initiate the Workfiles app’s **File Save** action, the file is named automatically. A template accessed through Toolkit’s Workfiles app is used to name that file. Render apps like Nuke Write node and Houdini Mantra node use templates to name and save rendered files, as does the Publisher app for published files. When files are accessed using the Workfiles **File Open** action, it uses a template to find the appropriate file to load. The Publisher, Loader, and Nuke Studio Export apps also use templates to find and manage files. The artist doesn’t have to worry about file names or locations; Toolkit manages it all based on the template and the task being performed. -Templates are managed by the configuration file `//config/core/templates.yml`. In the last two guides, you managed and created settings that were specific to work environments. The schema and template settings are stored in the `config/core` folder and are not specific to an environment. While all templates are stored in a single file, they are referenced from this file in app settings in the different environment configuration files. For example, `template_work` is the setting for the Workfiles app that specifies which template in `templates.yml` to use for work files. Depending on the environment and engine in which Workfiles is configured, you might use this configuration setting to point to the `maya_shot_work` template or the `houdini_asset_work` template from `templates.yml`. +Templates are managed by the configuration file `//config/core/templates.yml`. In the last two guides, you managed and created settings that were specific to work environments. The schema and template settings are stored in the `config/core` folder and are not specific to an environment. While all templates are stored in a single file, they are referenced from this file in app settings in the different environment configuration files. For example, `template_work` is the setting for the Workfiles app that specifies which template in `templates.yml` to use for work files. Depending on the environment and engine in which Workfiles is configured, you might use this configuration setting to point to the `maya_shot_work` template or the `houdini_asset_work` template from `templates.yml`. **Step 13:** Open `config/core/templates.yml` in your pipeline configuration. This file is broken down into three sections: -* **Keys:** A set of tokens (like `{version}`, `{Asset}`, etc.) to be used to build templates. They will be replaced with real values when the template is actually used. Each key has a required name and type and other optional parameters. -* **Paths:** Named strings that use keys to represent paths to folders and files on disk. Note that templates in the `paths` section are validated and must actually exist on disk. -* **Strings:** Similar to the paths section, but these are templates for arbitrary text. While items in the paths section are validated and must correspond with actual paths on disk, strings can be used to store any text data that you want to refer to in your Toolkit workflows. +- **Keys:** A set of tokens (like `{version}`, `{Asset}`, etc.) to be used to build templates. They will be replaced with real values when the template is actually used. Each key has a required name and type and other optional parameters. +- **Paths:** Named strings that use keys to represent paths to folders and files on disk. Note that templates in the `paths` section are validated and must actually exist on disk. +- **Strings:** Similar to the paths section, but these are templates for arbitrary text. While items in the paths section are validated and must correspond with actual paths on disk, strings can be used to store any text data that you want to refer to in your Toolkit workflows. ### Add a template key for the Set entity The first thing to do is define a new key for the Set entity, using the entity’s system name. -**Step 14:** Add the following lines to the `keys` section of `templates.yml`, being mindful of proper indentation: +**Step 14:** Add the following lines to the `keys` section of `templates.yml`, being mindful of proper indentation: ```yaml - CustomEntity01: - type: str +CustomEntity01: + type: str ``` ### Modifying the template -Since templates define where Toolkit reads and writes files, it’s crucial that the paths we define here stay in step with the folder structure defined in the schema. After all, production files should go into the filesystem we’re creating. So, we’re going to modify all of our asset-related templates to match the new folder structure we defined in the schema. +Since templates define where Toolkit reads and writes files, it’s crucial that the paths we define here stay in step with the folder structure defined in the schema. After all, production files should go into the filesystem we’re creating. So, we’re going to modify all of our asset-related templates to match the new folder structure we defined in the schema. -Then, we’ll modify the template for work files on asset steps in Maya to also include the set in the file name. In the Default Config, the template in question is `maya_asset_work`, and that’s where we’ll start. +Then, we’ll modify the template for work files on asset steps in Maya to also include the set in the file name. In the Default Config, the template in question is `maya_asset_work`, and that’s where we’ll start. {% include info title="Note" content="Using a template called `maya_asset_work` for asset-based Workfiles in Maya is a convention of the Default Configuration. To confirm that that’s the right template, check the value of the `template_work` setting for `tk-multi-workfiles2` in the `tk-maya` engine, in the `asset_step` environment ([here it is in Github](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.4/env/includes/settings/tk-multi-workfiles2.yml#L217))." %} -**Step 15:** Open `templates.yml` and search for `maya_asset_work`. +**Step 15:** Open `templates.yml` and search for `maya_asset_work`. ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{name}.v{version}.{maya_extension}" ``` -The `definition` value for `maya_asset_work` begins with `@asset_root`. The `@` symbol signifies that the value of `@asset_root` is defined elsewhere. +The `definition` value for `maya_asset_work` begins with `@asset_root`. The `@` symbol signifies that the value of `@asset_root` is defined elsewhere. {% include info title="Note" content="A leading `@` symbol does not denote an *include* in `templates.yml` as it does in the environment configuration files." %} @@ -336,24 +334,24 @@ Add `CustomEntity01` to the `asset_root` path to match the schema modifications: ### Add set to the file name -We’ve changed the folder structure for our files to reflect our schema changes, and now files will be read and written to the proper location. Now, let’s modify the file *name* for the Maya asset work file template, so that it also includes the set. +We’ve changed the folder structure for our files to reflect our schema changes, and now files will be read and written to the proper location. Now, let’s modify the file _name_ for the Maya asset work file template, so that it also includes the set. -Find the `maya_asset_work` template definition again. In its current state, the file *name* is +Find the `maya_asset_work` template definition again. In its current state, the file _name_ is `{name}.v{version}.{maya_extension}` -The `{name}` template key is a special key that represents user input in the Workfiles app’s File Save action. Let’s modify the template so that it doesn’t include any user input, and instead just consists of the current set and asset. +The `{name}` template key is a special key that represents user input in the Workfiles app’s File Save action. Let’s modify the template so that it doesn’t include any user input, and instead just consists of the current set and asset. **Step 17:** Modify the `maya_asset_work` template definition so that it looks like this: ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}" ``` This action allows you to use the Dining-Room entity proper name in the file name. The result will be something like `Dining-Room_Filet.v1.mb`. -You’ve now modified `templates.yml` to reflect the new set folder in your production folder structure, and to include the name of the set in work files for asset tasks in Maya. Let’s test out the changes. +You’ve now modified `templates.yml` to reflect the new set folder in your production folder structure, and to include the name of the set in work files for asset tasks in Maya. Let’s test out the changes. ### Test it @@ -361,7 +359,7 @@ You’ve now modified `templates.yml` to reflect the new set folder in your prod ![Python app](images/dynamic_filesystem_configuration/23_test_file_creation.png) -In Maya, go to **{% include product %} > File Open**, and in the resulting dialog, select a task on an asset for which you’ve specified a Set in {% include product %}. +In Maya, go to **{% include product %} > File Open**, and in the resulting dialog, select a task on an asset for which you’ve specified a Set in {% include product %}. ![Python app](images/dynamic_filesystem_configuration/24_test_new_file.png) @@ -381,15 +379,13 @@ The **Work Area**: is displaying **.../{% include product %}/projects/the_other_ ### Extending the example -In this example, we modified a single template, but there’s plenty more you can do with your filesystem configuration. In a real world example, you’d likely change *all* asset-related files to have the same file naming conventions. You can make modifications based on other entities (Season, Episode, Level, etc.), create user folders, name your folders based on {% include product %} data manipulated with regular expressions, and much more. You can learn about all of Toolkit’s folder and schema options in the [Filesystem Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868). +In this example, we modified a single template, but there’s plenty more you can do with your filesystem configuration. In a real world example, you’d likely change _all_ asset-related files to have the same file naming conventions. You can make modifications based on other entities (Season, Episode, Level, etc.), create user folders, name your folders based on {% include product %} data manipulated with regular expressions, and much more. You can learn about all of Toolkit’s folder and schema options in the [Filesystem Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868). ### The Path Cache At folder creation time, a mapping is created between a folder on disk and a {% include product %} entity. These mappings are stored as FilesystemLocation entities in {% include product %}, and cached in an SQLite database on user machines. To learn more about how the path cache works and how to work with it, see [this document](../../../quick-answers/administering/what-is-path-cache.md). - ### Additional Resources -* [Filesystem Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868) -* [Intro to Toolkit Configuration webinar video](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) - +- [Filesystem Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868) +- [Intro to Toolkit Configuration webinar video](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) diff --git a/docs/en/guides/pipeline-integrations/getting-started/editing_app_setting.md b/docs/en/guides/pipeline-integrations/getting-started/editing_app_setting.md index 98d18a8bb..f10ac21fd 100644 --- a/docs/en/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ b/docs/en/guides/pipeline-integrations/getting-started/editing_app_setting.md @@ -6,14 +6,15 @@ lang: en --- # Editing a pipeline configuration -After completing this guide, you will have the knowledge fundamental to: -* Finding a configuration setting for a specific Toolkit app -* Editing the settings -* Exploring what other functions the configuration settings can extend. +After completing this guide, you will have the knowledge fundamental to: + +- Finding a configuration setting for a specific Toolkit app +- Editing the settings +- Exploring what other functions the configuration settings can extend. ## About the guide - + This guide describes how to edit settings within an existing Pipeline Configuration to meet the needs of a project pipeline. The first guide, **[Getting started with configurations](./advanced_config.md)**, described how to prepare a pipeline configuration for editing. If you aren’t familiar with how to create an editable configuration for your project, complete **Getting started with configurations** before proceeding. Through extending the Default Configuration, {% include product %} Toolkit allows for customizing tasks within pipeline workflows. An example of a customization might be as simple as enabling or disabling a button in a Toolkit app within one or more software packages, changing the way users interact with Toolkit's features. Toolkit allows proprietary configurations that enable you to work smarter and faster by: creating custom workflows, automating repetitive and mundane tasks, modifying hooks, and even adding custom tools built on the Toolkit platform. Unfortunately, it’s only accessible through {% include product %} software integrations, and not yet released for everyday tasks like washing your clothes. @@ -21,7 +22,7 @@ Through extending the Default Configuration, {% include product %} Toolkit allow The exercises in this guide will teach you how to find what configuration settings control actions within the {% include product %} software integrations, where the settings live, and how to edit them. Specifically, we will edit a setting in the Workfiles app that manages the behavior of the **+New Task** button, preventing artists from creating a new task when working on a project inside Maya. ## Using this document - + To use this guide and perform an edit on a pipeline configuration, the following is required: 1. An active [{% include product %}](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) site. @@ -29,14 +30,14 @@ To use this guide and perform an edit on a pipeline configuration, the following 3. A pipeline configuration for the identified project, or complete the [Getting started with configurations](./advanced_config.md) guide and use the configuration created in that exercise. 4. Read and write permissions set appropriately for the filesystem where the Pipeline Configuration is stored. 5. {% include product %} Desktop installed on your system. -6. An active subscription for Maya. Get a 30 day trial of Maya [here](https://www.autodesk.com/products/maya/free-trial-dts?adobe_mc_ref=https%3A%2F%2Fwww.google.com%2F&adobe_mc_sdid=SDID%3D577C0A84DDF5D35D-50E96EA2052056FE%7CMCORGID%3D6DC7655351E5696B0A490D44%2540AdobeOrg%7CTS%3D1543444689) +6. An active subscription for Maya. Get a 30 day trial of Maya [here](https://www.autodesk.com/products/maya/free-trial-dts?adobe_mc_ref=https%3A%2F%2Fwww.google.com%2F&adobe_mc_sdid=SDID%3D577C0A84DDF5D35D-50E96EA2052056FE%7CMCORGID%3D6DC7655351E5696B0A490D44%2540AdobeOrg%7CTS%3D1543444689) {% include info title="Note" content="This guide is based on the `tk-config-default2` pipeline configuration. If your config was modified, the location of files, folders, and blocks of YAML settings may vary from what is described here." %} ## About the Workfiles app The Workfiles app governs file management in a {% include product %} software integration and controls access to functionality for browsing, opening, and saving work files. The **+New Task** button is an action of the Workfiles app that allows a user to add a task without having to go to {% include product %} to do so. The configuration is broken down into per-environment files. This allows you to manage functionality relative to different stages in the pipeline, controlling when a user can create, name and save files, execute tasks, or perform certain functions. This is relevant for all the functions in the Workfiles app and it also applies to modifying settings for any app or engine. Find more details in the [Advanced Topics](#advanced-topics) at the end of this document. - + ## Getting familiar with the configuration files Use the Pipeline Configuration List in {% include product %} to locate where the pipeline configuration is stored for the project you’re working with. If you know where it’s stored, you can skip to Step 5. @@ -54,16 +55,16 @@ Use the Pipeline Configuration List in {% include product %} to locate where the ![Pipeline Configuration](./images/editing_app_setting/2_pipeline_configuration.png) **Step 4:** Once the **Pipeline Configuration List** is displayed, select the **+** sign on the far right of the column headers to add another column. In the dropdown list, choose the appropriate path for your operating system. - + ![OS path](./images/editing_app_setting/3_mac_path.png) The path will be displayed in a new field. ![OS path2](./images/editing_app_setting/4_mac_path2.png) -**Step 5:** In a terminal or file manager, browse to the folder where the project’s pipeline configuration is stored and open the folder. +**Step 5:** In a terminal or file manager, browse to the folder where the project’s pipeline configuration is stored and open the folder. -There are three subfolders in a Toolkit configuration root folder: **cache**, **config** and **install**. Open the **config** folder and nested inside you will find several subfolders and a few files. +There are three subfolders in a Toolkit configuration root folder: **cache**, **config** and **install**. Open the **config** folder and nested inside you will find several subfolders and a few files. ![Config content](./images/editing_app_setting/5_config_content.png) @@ -81,19 +82,19 @@ Toolkit uses YAML files to configure functionality. YAML was chosen as the langu **Step 7:** Open **{% include product %} Desktop**. -**Step 8:** Select the project whose configuration you are going to edit. +**Step 8:** Select the project whose configuration you are going to edit. ![Load project](./images/editing_app_setting/6_load_project.png) -**Step 9:** Launch Maya from {% include product %} Desktop. +**Step 9:** Launch Maya from {% include product %} Desktop. ![Load project](./images/editing_app_setting/7_view_project.png) Wait for the **{% include product %}** menu to fully load. If you have a slow internet connection, this would be the time to run the configuration that makes you that perfect shot of espresso with just the right amount of crema. -Once Maya and {% include product %} are fully loaded, the **File Open** dialog box will open automatically. When you launch Maya from {% include product %} Desktop, you will enter Maya in the **project** environment; the configuration of your Toolkit workflows will be driven by the file `config/env/project.yml`. The environments that are identified in the Default Configuration are `project`, `sequence`, `shot`, `shot_step`, `asset`, `asset_step`. +Once Maya and {% include product %} are fully loaded, the **File Open** dialog box will open automatically. When you launch Maya from {% include product %} Desktop, you will enter Maya in the **project** environment; the configuration of your Toolkit workflows will be driven by the file `config/env/project.yml`. The environments that are identified in the Default Configuration are `project`, `sequence`, `shot`, `shot_step`, `asset`, `asset_step`. -**Step 10:** Select the **Assets** tab in the left pane of the **File Open** dialog box. Select any asset inside the folder displayed in the search results. +**Step 10:** Select the **Assets** tab in the left pane of the **File Open** dialog box. Select any asset inside the folder displayed in the search results. ![View task button](./images/editing_app_setting/8_21_view_task_button.png) @@ -103,13 +104,13 @@ The **+New Task** button is enabled. Toolkit pipeline configurations are used to customize environments to meet your pipeline's needs. A pipeline configuration can override default {% include product %} integration settings, varying as much or as little as necessary to meet the needs of a project’s pipeline. This structure allows configurations to be lightweight, adding only the settings that are different from the default values in the {% include product %} core code. In this exercise, we want to turn off the Workfiles app's **+New Task** button, but before we can do so, we need to figure out which configuration setting controls it. -**Step 11:** Select the **>** at the top right of the **File Open** window next to **Project (name of project)**. +**Step 11:** Select the **>** at the top right of the **File Open** window next to **Project (name of project)**. This reference box shows details about the configuration settings that control the functions of the **File Open** window. Some apps in Toolkit have a reference box to show what settings are used for the app and what the default settings are. Notice the **Location:**: identifier is **tk-multi-workfiles2**. This is the identifier for the bundle of code that creates the Workfiles app. When searching a pipeline configuration this name will identify where the settings live for the app. There’s an [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) that lists all the configuration settings, apps, and engines for what’s available in a {% include product %} Integration. ![Current_work_area](./images/editing_app_setting/9_current_work_area.png) -Look under the **Configuration** header to find the settings for this specific environment. +Look under the **Configuration** header to find the settings for this specific environment. ![Configuration_ref](./images/editing_app_setting/10_configuration_ref.png) @@ -121,19 +122,19 @@ Scroll down to **Setting allow_task_creation**. The default value of this settin When searching for a setting there are several things to consider: -* What software application you are running. -* What file you are working on and what environment you are working in. This is found in the App’s reference box. -* What the specific setting is called. This is found in the App’s reference box or on the [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) page. -* What YAML file to extend. There are identifiers and a roadmap detailed in the YAML files to guide you to where the settings live. -* What specific blocks within the YAML file to extend. This is identified in the roadmap. -* What identifiers and symbols are used in the YAML files. -* And, most importantly, where the configuration is stored for the current project. +- What software application you are running. +- What file you are working on and what environment you are working in. This is found in the App’s reference box. +- What the specific setting is called. This is found in the App’s reference box or on the [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) page. +- What YAML file to extend. There are identifiers and a roadmap detailed in the YAML files to guide you to where the settings live. +- What specific blocks within the YAML file to extend. This is identified in the roadmap. +- What identifiers and symbols are used in the YAML files. +- And, most importantly, where the configuration is stored for the current project. -A setting can be utilized in multiple places within a pipeline configuration. What determines where it goes are: which software integration you want to affect and where in the pipeline process you want to impact a change. +A setting can be utilized in multiple places within a pipeline configuration. What determines where it goes are: which software integration you want to affect and where in the pipeline process you want to impact a change. ## Find where to set the value for `allow_task_creation` -**Step 12:** Bring the main Maya window forward. +**Step 12:** Bring the main Maya window forward. **Step 13:** Find the **{% include product %}** menu item in the upper right of the Maya window. @@ -145,7 +146,7 @@ A setting can be utilized in multiple places within a pipeline configuration. Wh ![Work area info](./images/editing_app_setting/13_work_area_info.png) -The **Work Area Info** dialog box shows what’s under the hood and details about your current work area. This includes the environment that you are is working in and the path to the environment configuration file where the settings are located. +The **Work Area Info** dialog box shows what’s under the hood and details about your current work area. This includes the environment that you are is working in and the path to the environment configuration file where the settings are located. **Step 15:** In the **Your Current Work Area** dialog box, select the **Environment** tab at the bottom. @@ -163,18 +164,18 @@ description: Apps and Engines when launching with a project only context. ################################################################################ includes: -- ./includes/frameworks.yml -- ./includes/settings/tk-3dsmaxplus.yml -- ./includes/settings/tk-desktop.yml -- ./includes/settings/tk-flame.yml -- ./includes/settings/tk-houdini.yml -- ./includes/settings/tk-mari.yml -- ./includes/settings/tk-maya.yml -- ./includes/settings/tk-motionbuilder.yml -- ./includes/settings/tk-nuke.yml -- ./includes/settings/tk-photoshopcc.yml -- ./includes/settings/tk-shell.yml -- ./includes/settings/tk-shotgun.yml + - ./includes/frameworks.yml + - ./includes/settings/tk-3dsmaxplus.yml + - ./includes/settings/tk-desktop.yml + - ./includes/settings/tk-flame.yml + - ./includes/settings/tk-houdini.yml + - ./includes/settings/tk-mari.yml + - ./includes/settings/tk-maya.yml + - ./includes/settings/tk-motionbuilder.yml + - ./includes/settings/tk-nuke.yml + - ./includes/settings/tk-photoshopcc.yml + - ./includes/settings/tk-shell.yml + - ./includes/settings/tk-shotgun.yml ################################################################################ # configuration for all engines to load in a project context @@ -198,26 +199,25 @@ engines: # reference all of the common frameworks frameworks: "@frameworks" - ``` -Inside `project.yml`, there are three sections below the description: `includes`, `engines`, and `frameworks`. The `includes` section is a list of file pointers that *reference* other YAML files in the configuration. The architecture of the Default Configuration takes advantage of nesting files and using pointers as another way to keep the files lightweight. Following the **includes** will bring you through one file to the next until you find the configuration setting you are looking for. It’s a bit like Russian Matryoshka dolls: you open up each doll that’s nested inside the next until you find the appropriate configuration setting. +Inside `project.yml`, there are three sections below the description: `includes`, `engines`, and `frameworks`. The `includes` section is a list of file pointers that _reference_ other YAML files in the configuration. The architecture of the Default Configuration takes advantage of nesting files and using pointers as another way to keep the files lightweight. Following the **includes** will bring you through one file to the next until you find the configuration setting you are looking for. It’s a bit like Russian Matryoshka dolls: you open up each doll that’s nested inside the next until you find the appropriate configuration setting. Every engine is identified as `tk-`. You know you want to affect settings in Maya, so the identifier we’re looking for is `tk-maya`. Look under the `includes:` section of the `project.yml` file and find this line, `./includes/settings/tk-maya.yml`. This line indicates the configurations controlling the **settings** for the Maya engine, `tk-maya`, are nested inside the **includes** folder within the **settings** folder. -In the `engines:` section find the `tk-maya` value. +In the `engines:` section find the `tk-maya` value. `tk-maya: "@settings.tk-maya.project"` -The `@` signifies that a value is coming from an included file. +The `@` signifies that a value is coming from an included file. -The `settings` and `project` reference indicate it’s a project’s settings. These are naming conventions within the Default Configuration that help to guide you. +The `settings` and `project` reference indicate it’s a project’s settings. These are naming conventions within the Default Configuration that help to guide you. -This complete line tells us to look for the `settings.tk-maya.project` block in the included file to find the configuration settings for the Maya engine, `tk-maya`. +This complete line tells us to look for the `settings.tk-maya.project` block in the included file to find the configuration settings for the Maya engine, `tk-maya`. {% include product %} Toolkit uses simple terms in the YAML files to indicate the names of the settings and what paths will lead you to them. You already know from looking in the Maya **File Open** reference box that the bundle of code which controls how the **+New Task** button performs, is identified by `tk-multi-workfiles2`. Toolkit bundles are referenced in the YAML files using these identifiers. ‘tk-multi-workfiles2’ is the identifier for the Workfiles app code bundle, and the **+New Task** button is a function of the Workfiles app. @@ -227,7 +227,7 @@ Looking for the Workfiles App settings in tk-maya.yml ![tk maya workfiles](./images/editing_app_setting/16_tk_maya_workfiles.png) -**Step 18:** Following the include from `project.yml`, search the `tk-maya.yml` file for `settings.tk-maya.project`. You are specifically looking to disable the **+New Task** button in the project environment of a specific project. You are in the configuration for that project and obtained the location information while you were in the project environment. +**Step 18:** Following the include from `project.yml`, search the `tk-maya.yml` file for `settings.tk-maya.project`. You are specifically looking to disable the **+New Task** button in the project environment of a specific project. You are in the configuration for that project and obtained the location information while you were in the project environment. ```yaml # project @@ -239,13 +239,13 @@ settings.tk-maya.project: tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" menu_favourites: - - {app_instance: tk-multi-workfiles2, name: File Open...} + - { app_instance: tk-multi-workfiles2, name: File Open... } location: "@engines.tk-maya.location" ``` -Under `settings.tk-maya.projects`, the `tk-multi-workfiles2` app settings are listed as +Under `settings.tk-maya.projects`, the `tk-multi-workfiles2` app settings are listed as `tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup"` @@ -253,7 +253,7 @@ The `@` symbol tells us that that the value for `tk-multi-workfiles2` is coming ```yaml includes: -... +--- - ./tk-multi-workfiles2.yml ``` @@ -267,12 +267,12 @@ settings.tk-multi-workfiles2.launch_at_startup: launch_at_startup: true entities: ``` - + -The Maya reference box indicated the `allow_task_creation` setting has a default value of `true`. As a best practice, no default settings are reflected in a pipeline configuration. This allows for a **sparse** format, adding only the settings that differ from the default code to the configuration. If a setting isn’t explicitly provided, any calls accessing that setting will receive the default value. When Toolkit reads the configuration and builds an environment, the apps, engines, and frameworks running in that environment use that project’s pipeline configuration settings and override any default settings based on what’s in the configuration. +The Maya reference box indicated the `allow_task_creation` setting has a default value of `true`. As a best practice, no default settings are reflected in a pipeline configuration. This allows for a **sparse** format, adding only the settings that differ from the default code to the configuration. If a setting isn’t explicitly provided, any calls accessing that setting will receive the default value. When Toolkit reads the configuration and builds an environment, the apps, engines, and frameworks running in that environment use that project’s pipeline configuration settings and override any default settings based on what’s in the configuration. -**Step 20:** In `tk-multi-workfiles2.yml`, add `allow_task_creation` under `settings.tk-multi-workfiles2.launch_at_startup:` and set the value to `false` +**Step 20:** In `tk-multi-workfiles2.yml`, add `allow_task_creation` under `settings.tk-multi-workfiles2.launch_at_startup:` and set the value to `false` ```yaml # launches at startup. @@ -281,7 +281,7 @@ settings.tk-multi-workfiles2.launch_at_startup: launch_at_startup: true entities: ``` - + **NOTE:** Toolkit Default Configuration settings are organized alphabetically as an easy way to find specific settings. Keeping this convention will make your life a lot easier as the configuration gets a little heavier. @@ -304,7 +304,7 @@ This will reload the configuration settings. Notice that the **+New Task** button is not visible. -You’ve modified a configuration setting for the Workfiles app, changing the behavior of a button in a project environment. Since you only modified that setting in the project environment, if you start working in another environment the settings for the **+New Task** button will still be active. In a real production example, you'd likely make the change we made here for *all* environments. +You’ve modified a configuration setting for the Workfiles app, changing the behavior of a button in a project environment. Since you only modified that setting in the project environment, if you start working in another environment the settings for the **+New Task** button will still be active. In a real production example, you'd likely make the change we made here for _all_ environments. ## Changing environments @@ -318,13 +318,13 @@ By selecting **+New File**, you began to work on a new asset and the `asset_step ## Discover what environment you are working in -**Step 26:** In the upper right of the Maya menu select **{% include product %}**. +**Step 26:** In the upper right of the Maya menu select **{% include product %}**. ![Art asset env](./images/editing_app_setting/23_Art_Asset.png) **Art, Asset** tells you’re working on and what environment you’re in. -**Step 27:** Select **Art, Asset > Work Area Info…** to display what the parameters are in your current work area. +**Step 27:** Select **Art, Asset > Work Area Info…** to display what the parameters are in your current work area. **Step 28:** Select the **Environment** tab at the bottom. @@ -334,7 +334,7 @@ Each environment will display the information necessary to determine where the s NOTE: Each environment is independent, a project has a dedicated configuration, and the software integrations only read settings for their specific software from the pipeline configuration when a project is loaded. -You've now edited your pipeline configuration, making a change to the settings for an app. And now the real fun begins: learning all the things you can do with {% include product %} Toolkit environments. Here are some advanced topics to explore. +You've now edited your pipeline configuration, making a change to the settings for an app. And now the real fun begins: learning all the things you can do with {% include product %} Toolkit environments. Here are some advanced topics to explore. ## Advanced topics @@ -350,11 +350,11 @@ We disabled task creation in the project environment, but in a real studio envir ### Creating custom environments -The Default Configuration comes with a set of pre-defined pipeline steps: `project`, `sequence`, `shot`, `shot_step`, `asset`, and `asset_step`. However, a studio might want different configuration settings for every stage in the pipeline – say `asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light`, and so on. Toolkit supports custom environments. See the ["Custom environments" section of the Environment Configuration Reference](../../../reference/pipeline-integrations/env-config-ref.md#custom-environments) for details. +The Default Configuration comes with a set of pre-defined pipeline steps: `project`, `sequence`, `shot`, `shot_step`, `asset`, and `asset_step`. However, a studio might want different configuration settings for every stage in the pipeline – say `asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light`, and so on. Toolkit supports custom environments. See the ["Custom environments" section of the Environment Configuration Reference](../../../reference/pipeline-integrations/env-config-ref.md#custom-environments) for details. ### Video Resources -* [Intro to Toolkit configurations](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) from our SIGGRAPH 2018 Developer Day -* [Demystifying the Default Configuration webinar](https://www.youtube.com/watch?v=eKHaC1dZCeE) +- [Intro to Toolkit configurations](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) from our SIGGRAPH 2018 Developer Day +- [Demystifying the Default Configuration webinar](https://www.youtube.com/watch?v=eKHaC1dZCeE) Now that you’ve learned how to modify an app configuration setting, try [adding an app to your Toolkit configuration](installing_app.md). diff --git a/docs/en/guides/pipeline-integrations/getting-started/installing_app.md b/docs/en/guides/pipeline-integrations/getting-started/installing_app.md index c9b54ba72..a6b15b857 100644 --- a/docs/en/guides/pipeline-integrations/getting-started/installing_app.md +++ b/docs/en/guides/pipeline-integrations/getting-started/installing_app.md @@ -6,31 +6,31 @@ lang: en --- # Adding an app - + By completing this guide, you will quickly become acquainted with the configuration management tools in Toolkit and learn how to: -* Safely create a copy of an active pipeline configuration -* Add an app to a configuration -* Add the settings necessary to use that app in specific environments -* Push your changes back to the active configuration +- Safely create a copy of an active pipeline configuration +- Add an app to a configuration +- Add the settings necessary to use that app in specific environments +- Push your changes back to the active configuration ## About the guide -This guide will demonstrate how to add a {% include product %} Toolkit app to an existing pipeline configuration. You will quickly become acquainted with the configuration management tools. +This guide will demonstrate how to add a {% include product %} Toolkit app to an existing pipeline configuration. You will quickly become acquainted with the configuration management tools. -The app we will be adding is the {% include product %} Python Console app. Maya has its own Python console, but there are some features in the Toolkit app that don’t exist in the Maya console. +The app we will be adding is the {% include product %} Python Console app. Maya has its own Python console, but there are some features in the Toolkit app that don’t exist in the Maya console. This guide utilizes the pipeline configuration we created in the [Editing a Pipeline Configuration](./editing_app_setting.md) guide. If you haven’t completed this guide, you can use an existing pipeline configuration and add the app there. ## Using this document - + To use this guide and install a Toolkit app, the following is required: 1. An active [{% include product %}](https://www.shotgridsoftware.com/signup/) site. 2. A pipeline configuration for the identified project, or complete the [Getting Started with Configurations guide](./advanced_config.md) and use the configuration created in that exercise. 3. Read and write permissions set appropriately for the filesystem where the pipeline configuration is stored. 4. {% include product %} Desktop installed on your system. -5. An active subscription for Maya. Get a 30 day trial of Maya [here](https://www.autodesk.com/products/maya/free-trial-dts). +5. An active subscription for Maya. Get a 30 day trial of Maya [here](https://www.autodesk.com/products/maya/free-trial-dts). {% include info title="Note" content="This guide is based on the tk-config-default2 pipeline configuration. If your config was modified, the location of files, folders, and blocks of YAML settings may vary from what is described here." %} @@ -79,7 +79,7 @@ Cloning a pipeline configuration automates the process of creating a copy, build ## Clone the Pipeline Configuration you want to add an app to -### Go to the Pipeline Configuration list. +### Go to the Pipeline Configuration list. **Step 3:** Open {% include product %} and in the upper right, select the **Admin Menu (your avatar) > Default Layouts > Pipeline Configuration > Pipeline Configuration List**. @@ -93,7 +93,7 @@ This action displays a detailed list of all of your {% include product %} site's ### Review where the project’s configuration is located -**Step 5:** Additionally, add the the appropriate **Path** field for your operating system. +**Step 5:** Additionally, add the the appropriate **Path** field for your operating system. ![Path to_config](./images/installing_app/6_path_to_config.png) @@ -105,7 +105,7 @@ This displays the paths to the configuration files. ![Clone_complete](./images/installing_app/8_clone_complete.png) -**Step 7:** Name the configuration in the Configuration List and name the file in the directory: "Primary Clone Config 2" and “the_other_side_clone2,” respectively. Select **OK**. +**Step 7:** Name the configuration in the Configuration List and name the file in the directory: "Primary Clone Config 2" and “the_other_side_clone2,” respectively. Select **OK**. ![Name clone](./images/installing_app/9_name_clone.png) @@ -137,7 +137,7 @@ If an app that you want to use isn’t referenced in the little black book, you ## Tell Toolkit where to find the app -**Step 10:** Search the file for `pythonconsole`. If you used the Default Configuration for the project, you will find that the descriptor for the Python Console app is listed in this file. It should match the description we found in the [list](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) of Maya apps we looked at when we started on our journey. Check to make sure the version matches what we looked at in the list of Maya apps. +**Step 10:** Search the file for `pythonconsole`. If you used the Default Configuration for the project, you will find that the descriptor for the Python Console app is listed in this file. It should match the description we found in the [list](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) of Maya apps we looked at when we started on our journey. Check to make sure the version matches what we looked at in the list of Maya apps. ```yaml apps.tk-multi-pythonconsole.location: @@ -174,10 +174,9 @@ engines: tk-photoshopcc: "@settings.tk-photoshopcc.project" tk-shell: "@settings.tk-shell.project" tk-shotgun: "@settings.tk-shotgun.project" - ``` -The `tk-maya: “@settings.tk-maya.project”` line using the `@settings` tells you that the settings are in an included file. The `tk-maya` identifies the Maya engine and the `project` identifies the environment. +The `tk-maya: “@settings.tk-maya.project”` line using the `@settings` tells you that the settings are in an included file. The `tk-maya` identifies the Maya engine and the `project` identifies the environment. ### YAML files @@ -185,12 +184,12 @@ The {% include product %} Toolkit pipeline configuration uses simple terms in [Y For this specific block: -* `settings` is what was chosen for the Default Configuration as a reference for the settings folder -* `project` is what was chosen for the Default Configuration as a reference for the project environment -* `tk-maya` is the identifier for Toolkit's engine for Maya -* `@` is a Toolkit term used to denote that a setting value is coming from an included file +- `settings` is what was chosen for the Default Configuration as a reference for the settings folder +- `project` is what was chosen for the Default Configuration as a reference for the project environment +- `tk-maya` is the identifier for Toolkit's engine for Maya +- `@` is a Toolkit term used to denote that a setting value is coming from an included file -The YAML files are the windows into {% include product %}’s integrations and make it easier to configure working environments that meet the needs of your pipeline. +The YAML files are the windows into {% include product %}’s integrations and make it easier to configure working environments that meet the needs of your pipeline. ### How the configuration references Toolkit bundles @@ -204,18 +203,18 @@ For this specific block in the Default Configuration, ‘tk-maya.project’ is t `./includes/settings/tk-maya.yml` -**Step 14:** In your cloned configuration, open `config/env/includes/settings/tk-maya.yml` in a text editor, and search for `settings.tk-maya.project`. +**Step 14:** In your cloned configuration, open `config/env/includes/settings/tk-maya.yml` in a text editor, and search for `settings.tk-maya.project`. ![tk-maya](./images/installing_app/13_tk-maya.png) -**Step 15:** Add the location descriptor under +**Step 15:** Add the location descriptor under ```yaml settings.tk-maya.project: apps: ``` -Use the `about` app, `tk-multi-about:`, as a guide for how to add the location descriptor, then save the file. +Use the `about` app, `tk-multi-about:`, as a guide for how to add the location descriptor, then save the file. {% include info title="Note" content="Make sure your [YAML](https://www.tutorialspoint.com/yaml/yaml_indentation_and_separation.htm) files are formatted correctly using spaces and not tabs." %} @@ -231,7 +230,7 @@ settings.tk-maya.project: tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" ``` - + You will notice the **Screening Room, {% include product %} Panel, and Workfiles2** app’s location identifiers are listed in a different included file and accessed differently than the **About** app. To keep things tidy, these apps were split off to the included settings folder because they have additional settings. {% include info title="Note" content="The python console app already exists in the Default Configuration, however if you are adding an app that has never been added to your configuration before or if you have changed the version of an app, and you are using a [centralized configuration](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations), then there is an additional step you need to take. Open your terminal and browse to where your cloned configuration is stored. From your cloned configuration’s root folder, run the following command:
@@ -248,9 +247,9 @@ This will scan your configuration for apps, engines and frameworks and ensure th ## View the changes in Maya -**Step 16:** Open {% include product %} Desktop, select the project you were working with, and confirm you are using the cloned configuration. +**Step 16:** Open {% include product %} Desktop, select the project you were working with, and confirm you are using the cloned configuration. -There will be a blue bar with the name of the clone that you created under the name of the project. +There will be a blue bar with the name of the clone that you created under the name of the project. {% include info title="Note" content="If you’re using the primary, there will be no blue bar and the configuration name won’t be visible." %} @@ -260,11 +259,11 @@ There will be a blue bar with the name of the clone that you created under the n If: -* You’re using the cloned configuration that you just edited -* The cloned configuration was extended correctly -* You saved the extended files -* You chose to associate the project with the cloned configuration -* You relaunched Maya from {% include product %} Desktop +- You’re using the cloned configuration that you just edited +- The cloned configuration was extended correctly +- You saved the extended files +- You chose to associate the project with the cloned configuration +- You relaunched Maya from {% include product %} Desktop The Python Console app will be available in Maya. @@ -274,7 +273,7 @@ The Python Console app will be available in Maya. After confirming you added the Python Console app correctly, you’re ready to push the changes live. -**Step 18:** Open your terminal and browse to where your cloned configuration is stored. From your cloned configuration's root folder, run the following command: +**Step 18:** Open your terminal and browse to where your cloned configuration is stored. From your cloned configuration's root folder, run the following command: On Linux or Mac: @@ -284,7 +283,7 @@ On Windows: `tank.bat push_configuration` -Follow the prompts and type in the ID for your project’s Primary configuration, the configuration you want to push the changes to. +Follow the prompts and type in the ID for your project’s Primary configuration, the configuration you want to push the changes to. ``` @@ -318,7 +317,7 @@ Your existing configuration will be backed up. The following pipeline configurations are available to push to: - [1] Primary (/Users/michelle/Documents/Shotgun/configs/the_other_side) -Please type in the id of the configuration to push to (ENTER to exit): +Please type in the id of the configuration to push to (ENTER to exit): ``` @@ -330,11 +329,11 @@ There will be a list of the available pipeline configurations that the cloned co After you enter the ID, {% include product %} will: -* Backup the Primary configuration -* Copy the cloned configuration -* Associate the copied cloned configuration with the project leaving the clone intact -* Displaying where the Primary config was saved -* Check to see if there are any apps that need to be downloaded and cached +- Backup the Primary configuration +- Copy the cloned configuration +- Associate the copied cloned configuration with the project leaving the clone intact +- Displaying where the Primary config was saved +- Check to see if there are any apps that need to be downloaded and cached ``` Please type in the id of the configuration to push to (ENTER to exit): 1 @@ -346,7 +345,7 @@ Checking if there are any apps that need downloading… Push Complete! ``` -## View the changes you made in the primary configuration +## View the changes you made in the primary configuration **Step 19:** In {% include product %} Desktop, click on the arrow in the upper right and choose **Primary** in the **CONFIGURATION** list. @@ -356,7 +355,7 @@ Push Complete! ![App in Maya](./images/installing_app/19_app_in_maya.png) -The Python Console app was added to the Project environment for the chosen project. We discussed in the second guide, “[Editing a configuration](./editing_app_setting.md), that each environment is independent, a project has a dedicated configuration, and the software integrations gather settings from the pipeline configuration when a project is loaded. For the Python Console to be available in an environment, that environment will need instructions to look in the `app_locations.yml` file for the location descriptor. Given this, at any point in the pipeline where you want the Python Console app to be available will need the settings that say, “use the Python Console app here.” +The Python Console app was added to the Project environment for the chosen project. We discussed in the second guide, “[Editing a configuration](./editing_app_setting.md), that each environment is independent, a project has a dedicated configuration, and the software integrations gather settings from the pipeline configuration when a project is loaded. For the Python Console to be available in an environment, that environment will need instructions to look in the `app_locations.yml` file for the location descriptor. Given this, at any point in the pipeline where you want the Python Console app to be available will need the settings that say, “use the Python Console app here.” ## Advanced topics @@ -368,7 +367,7 @@ Standard Toolkit apps and apps created by the loving {% include product %} commu ### Investigate how to extend a configuration -You may have noticed when we were selecting which configuration to use for the project, the Python Console App was available in the {% include product %} Desktop dropdown. +You may have noticed when we were selecting which configuration to use for the project, the Python Console App was available in the {% include product %} Desktop dropdown. ![Desktop python console](./images/installing_app/20_desktop_python_console.png) @@ -376,7 +375,7 @@ If there’s an environment that is using an app you want to add to your pipelin The Desktop app opens in the project environment, so find `tk-desktop` in the `project.yml` file. -Open `config/env/project.yml`. +Open `config/env/project.yml`. {% include info title="Note" content='In the engine block, `tk-desktop` points to included content: @@ -396,11 +395,11 @@ apps: location: "@apps.tk-multi-pythonconsole.location" ``` -These blocks add the Python Console app to the Desktop engine in the project step. +These blocks add the Python Console app to the Desktop engine in the project step. Follow that include further to `../includes/app_locations.yml` and search for `apps.tk-multi-pythonconsole.location` to find the following:

-```yaml +````yaml # pythonconsole apps.tk-multi-pythonconsole.location: type: app_store @@ -410,8 +409,9 @@ apps.tk-multi-pythonconsole.location: Every app, engine, and framework has a location descriptor that is used to tell Toolkit where to access the specific bundle. Many app descriptors exist in the `app_locations.yml` file, but may not be referenced where you want them, as we saw with the Python Console app. All the standard Apps and Engines are listed on the [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines). -You can add any app to any appropriate software integration that ShotGrid supports, or add your own proprietary application to your Toolkit arsenal. All the supported software applications are also listed on the Integrations [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) page. +You can add any app to any appropriate software integration that ShotGrid supports, or add your own proprietary application to your Toolkit arsenal. All the supported software applications are also listed on the Integrations [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219039798-Integrations-Apps-and-Engines) page. -If you can’t find the exact app you are looking for, you can create one. There’s a good chance that other ShotGrid users will need the same function and sharing new apps is one way to give back to the ShotGrid community. +If you can’t find the exact app you are looking for, you can create one. There’s a good chance that other ShotGrid users will need the same function and sharing new apps is one way to give back to the ShotGrid community. -In the next guide, you will learn how to customize your production folder structure to reflect how your facility is structured](./dynamic_filesystem_configuration.md). +In the next guide, you will learn how to customize your production folder structure to reflect how your facility is structured](./dynamic_filesystem_configuration.md). +```` diff --git a/docs/en/guides/pipeline-integrations/getting_started.md b/docs/en/guides/pipeline-integrations/getting_started.md index d847cbd4b..86a3bead6 100644 --- a/docs/en/guides/pipeline-integrations/getting_started.md +++ b/docs/en/guides/pipeline-integrations/getting_started.md @@ -7,4 +7,4 @@ lang: en # Getting Started -{% include product %} Toolkit provides a set of highly customizable tools for creating studio pipelines where artists can access info from {% include product %} and share their work with each other, without ever leaving their content creation software. These guides are designed to get you started with setting up your custom Toolkit pipeline via hands-on exercises: you'll use the {% include product %} Desktop app to generate an editable configuration for your project, modify settings on existing apps, and even add Toolkit apps to different artist environments, getting you on the path to designing your custom pipeline. Each guide builds on the ones before it, but they include instructions for jumping in from anywhere. +{% include product %} Toolkit provides a set of highly customizable tools for creating studio pipelines where artists can access info from {% include product %} and share their work with each other, without ever leaving their content creation software. These guides are designed to get you started with setting up your custom Toolkit pipeline via hands-on exercises: you'll use the {% include product %} Desktop app to generate an editable configuration for your project, modify settings on existing apps, and even add Toolkit apps to different artist environments, getting you on the path to designing your custom pipeline. Each guide builds on the ones before it, but they include instructions for jumping in from anywhere. diff --git a/docs/en/guides/pipeline-integrations/workflows.md b/docs/en/guides/pipeline-integrations/workflows.md index feebb0757..622e71273 100644 --- a/docs/en/guides/pipeline-integrations/workflows.md +++ b/docs/en/guides/pipeline-integrations/workflows.md @@ -7,6 +7,6 @@ lang: en # Workflows -The customizations in {% include product %}'s pipeline integrations allow you to use the tools to create a variety of workflows: from feature animation to episodic workflows, from visual effects to games. +The customizations in {% include product %}'s pipeline integrations allow you to use the tools to create a variety of workflows: from feature animation to episodic workflows, from visual effects to games. -This section contains resources for building specific workflows. +This section contains resources for building specific workflows. diff --git a/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md index 7a49b956c..b671070ef 100644 --- a/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ b/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md @@ -7,11 +7,11 @@ lang: en # Animation Pipeline Tutorial -This tutorial covers building a simplified, yet typical, pipeline for animation or visual effects production. By following this tutorial you will build a pipeline that provides all of the pieces necessary to push Assets from modeling through look development, and then into and through a production scene. +This tutorial covers building a simplified, yet typical, pipeline for animation or visual effects production. By following this tutorial you will build a pipeline that provides all of the pieces necessary to push Assets from modeling through look development, and then into and through a production scene. Much of the workflows covered in this pipeline work out-of-the-box with {% include product %}'s built-in integrations. For the portions of the pipeline where studios are more often building custom solutions the tutorial will walk you through the process of customizing the artists workflow using the Toolkit platform. -Here is a high level view of the pipeline you will build in this tutorial: +Here is a high level view of the pipeline you will build in this tutorial: {% include figure src="./images/tutorial/image_0.png" caption="Pipeline Overview" %} @@ -23,43 +23,43 @@ For simplicity, the digital content creation (DCC) software used will be kept to ## Prerequisites -* **A working {% include product %} Project** - This tutorial assumes you have experience using {% include product %} for tracking and managing production data. +- **A working {% include product %} Project** - This tutorial assumes you have experience using {% include product %} for tracking and managing production data. -* **Understanding of {% include product %} Integrations** - {% include product %} ships with integrations that provide some simple production workflows without requiring any manual configuration. You should understand the features and scope of these workflows before diving into the manual configuration and customizations outlined in this tutorial. More information about {% include product %} Integrations can be found [here](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574). +- **Understanding of {% include product %} Integrations** - {% include product %} ships with integrations that provide some simple production workflows without requiring any manual configuration. You should understand the features and scope of these workflows before diving into the manual configuration and customizations outlined in this tutorial. More information about {% include product %} Integrations can be found [here](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574). -* **Maya & Nuke Experience** - This tutorial is designed to build a simple pipeline using Maya and Nuke. You should have a basic understanding of these packages in order to customize the integrations provided by {% include product %}. +- **Maya & Nuke Experience** - This tutorial is designed to build a simple pipeline using Maya and Nuke. You should have a basic understanding of these packages in order to customize the integrations provided by {% include product %}. -* **Working knowledge of Python** - The tutorial requires modifying the functionality of {% include product %} integrations via "hooks" that are written in Python. +- **Working knowledge of Python** - The tutorial requires modifying the functionality of {% include product %} integrations via "hooks" that are written in Python. -* **Familiarity with YAML** - Much of the configuration of the pipeline you will be building is handled by modifying YAML files. +- **Familiarity with YAML** - Much of the configuration of the pipeline you will be building is handled by modifying YAML files. ## Additional Resources -* [{% include product %} Support Site](https://support.shotgunsoftware.com) +- [{% include product %} Support Site](https://support.shotgunsoftware.com) -* [{% include product %} Integrations](https://www.shotgridsoftware.com/integrations/) +- [{% include product %} Integrations](https://www.shotgridsoftware.com/integrations/) - * [User Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574) + - [User Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574) - * [Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493) + - [Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493) - * [Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513) + - [Developer Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067513) # Project Creation & Setup For this Tutorial, you will need to create a new project in {% include product %} and configure it as if you were preparing for production to begin. This includes ensuring all of the necessary {% include product %} entities are in place and linked up properly. For this tutorial, the Asset, Sequence, Shot, and Task entities are required and should be available by default in a new project. You will create: -* Two **Assets**: +- Two **Assets**: - * **_Teapot_** character + - **_Teapot_** character - * **_Table_** prop + - **_Table_** prop -* One **Sequence** +- One **Sequence** -* One **Shot** linked to the **Sequence** you created +- One **Shot** linked to the **Sequence** you created -* A **Task** per pipeline step +- A **Task** per pipeline step Here are some screenshots of what your configured project entities should look like in {% include product %}: @@ -71,25 +71,25 @@ Here are some screenshots of what your configured project entities should look l ## Software Launchers -Next, you'll need to ensure that Maya and Nuke are available to launch in {% include product %} Desktop. In Desktop, make sure that each of these packages can be launched by clicking on their icon. Be sure that the proper version of each package is launched. +Next, you'll need to ensure that Maya and Nuke are available to launch in {% include product %} Desktop. In Desktop, make sure that each of these packages can be launched by clicking on their icon. Be sure that the proper version of each package is launched. -If either application does not show up in Desktop or the expected version does not launch, you may need to manually configure the launch in {% include product %} via the Software entity. +If either application does not show up in Desktop or the expected version does not launch, you may need to manually configure the launch in {% include product %} via the Software entity. {% include figure src="./images/tutorial/image_4.png" caption="The default Software entities defined in ShotGrid" %} -The Software entity is used to drive which DCC packages to use on your production. By default, the integrations will search for these packages in standard installation locations and make them launchable via Desktop. If you have more than one version installed or you have them installed in a non-standard location, it is possible you need to update the corresponding Software entity entry in {% include product %} to curate the launch experience for your artists. +The Software entity is used to drive which DCC packages to use on your production. By default, the integrations will search for these packages in standard installation locations and make them launchable via Desktop. If you have more than one version installed or you have them installed in a non-standard location, it is possible you need to update the corresponding Software entity entry in {% include product %} to curate the launch experience for your artists. For complete details on the Software entity and how to properly configure it, please see the [Integrations Admin Guide](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Configuring%20software%20launches). Once you have your DCCs launching the way you expect, you can continue to the next section. # Configuration -The configuration (config) defines the artist workflow for your project. This includes specifying which {% include product %} integrations to include within the DCCs your artists are launching, how your project's folder structure is defined, and the naming conventions for files and folders created as artists share data. +The configuration (config) defines the artist workflow for your project. This includes specifying which {% include product %} integrations to include within the DCCs your artists are launching, how your project's folder structure is defined, and the naming conventions for files and folders created as artists share data. By default, all new projects are configured to use the basic [{% include product %} Integrations](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574) which provide a basic workflow for sharing files between artists using many off-the-shelf software packages. The following sections outline how to take over your project's pipeline configuration (config) and customize it for your studio. ## Taking Over the Project Config -Use {% include product %} Desktop (Desktop) to take over your project's configuration. RMB click within Desktop or click the user icon in the bottom right to show the popup menu. Select the **Advanced project setup…** option and follow the wizard to locally install your project configuration. The images below show the required steps. You can also follow the steps outlined in the Integrations Admin Guide for [Taking over a Pipeline Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Taking%20over%20a%20Pipeline%20Configuration). +Use {% include product %} Desktop (Desktop) to take over your project's configuration. RMB click within Desktop or click the user icon in the bottom right to show the popup menu. Select the **Advanced project setup…** option and follow the wizard to locally install your project configuration. The images below show the required steps. You can also follow the steps outlined in the Integrations Admin Guide for [Taking over a Pipeline Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Taking%20over%20a%20Pipeline%20Configuration). {% include figure src="./images/tutorial/image_5.png" caption="Select the **Advanced project setup…** in the Desktop popup menu" %} @@ -97,7 +97,7 @@ Use {% include product %} Desktop (Desktop) to take over your project's configur {% include figure src="./images/tutorial/wizard_02.png" caption="Choose the **Default configuration**" %} -If this is your first time setting up a {% include product %} project, you'll also be prompted to define a storage location for your project data. Otherwise, you can select an existing storage location. +If this is your first time setting up a {% include product %} project, you'll also be prompted to define a storage location for your project data. Otherwise, you can select an existing storage location. {% include figure src="./images/tutorial/wizard_03.png" caption="Create a new storage." %} @@ -105,23 +105,23 @@ If this is your first time setting up a {% include product %} project, you'll al {% include figure src="./images/tutorial/wizard_05.png" caption="Set the path(s) where this storage will be accessible on the operating systems you intend to use." %} -You can view and edit the storages for your {% include product %} site in your **Site Preferences**, under the **File Management** section. You can learn more about these settings [here](https://support.shotgunsoftware.com/hc/en-us/articles/219030938). +You can view and edit the storages for your {% include product %} site in your **Site Preferences**, under the **File Management** section. You can learn more about these settings [here](https://support.shotgunsoftware.com/hc/en-us/articles/219030938). Now that you have a storage location selected, you'll choose the name of the directory in that location for your new project. {% include figure src="./images/tutorial/wizard_06.png" caption="Enter the name of the folder where your project's files will live." %} -For this tutorial, we'll be using a centralized configuration. The **Distributed Setup** option provides an alternate option that can provide a different set of benefits, and may be the preferred option for studios without fast shared storage. You can learn more about the pro and cons of different configuration setups in the [Toolkit Administration](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2) presentation. +For this tutorial, we'll be using a centralized configuration. The **Distributed Setup** option provides an alternate option that can provide a different set of benefits, and may be the preferred option for studios without fast shared storage. You can learn more about the pro and cons of different configuration setups in the [Toolkit Administration](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2) presentation. Unlike the storages, which are site-wide, the configuration will be project specific, and so the directory you choose here will be used directly to store your configuration. {% include figure src="./images/tutorial/wizard_07.png" caption="Make a note of the configuration path you select for the current operating system." %} -The folder you select on the screen above is where your configuration will be installed. You will explore and modify the contents of the configuration in this folder throughout this tutorial. +The folder you select on the screen above is where your configuration will be installed. You will explore and modify the contents of the configuration in this folder throughout this tutorial. When you click **Run Setup** on the above screen, Desktop will begin to download and install all of the required components of your configuration. The installation process could take several minutes to complete. Once complete, you will have a local copy of the entire project configuration that you will modify in the following steps. -The configuration location you specified during the Desktop installation tutorial is recorded in {% include product %} in the Pipeline Configurations page for your project. +The configuration location you specified during the Desktop installation tutorial is recorded in {% include product %} in the Pipeline Configurations page for your project. {% include figure src="./images/tutorial/image_10.png" caption="The Pipeline Configuration entity in ShotGrid" %} @@ -133,7 +133,7 @@ Before beginning the process of building your simple pipeline, you need to under {% include figure src="./images/tutorial/image_11.png" %} -### Project Schema +### Project Schema The simple pipeline you will build in this tutorial uses the project schema provided by the Default configuration. You can browse the **`config/core/schema`** folder to get a feel for the structure that will be created as Toolkit Apps write files to disk. For additional information about configuring the project directory structure, see the [File System Configuration Reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868) documentation. @@ -143,11 +143,11 @@ This tutorial also uses the templates defined in the Default pipeline configurat ### Hooks -Much of this tutorial will involve modifying App hooks in order to customize the artist workflows. Before diving into that customization, you should have a basic understanding of what hooks are, how they work, and where they live. Read through the Hooks section of the [Administration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Hooks) and [Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Hooks) documentation. +Much of this tutorial will involve modifying App hooks in order to customize the artist workflows. Before diving into that customization, you should have a basic understanding of what hooks are, how they work, and where they live. Read through the Hooks section of the [Administration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Hooks) and [Configuration](https://support.shotgunsoftware.com/hc/en-us/articles/219033178#Hooks) documentation. As you progress through the tutorial, you will be asked to "take over" a hook defined by one of the Toolkit Apps. The process of taking over an app hook is straightforward. Each time you're asked to do so, simply follow these steps: -1. **Locate the app** containing the hook you want to override in your configuration's install folder. Find the **`hooks`** subdirectory for that app and locate the hook file you want to override. +1. **Locate the app** containing the hook you want to override in your configuration's install folder. Find the **`hooks`** subdirectory for that app and locate the hook file you want to override. 2. **Copy the hook** (renaming it if necessary) into your configuration's top-level **`hooks`** directory. @@ -157,7 +157,7 @@ Once the file is in your configuration's **`hooks`** folder, you will be ready t # Building the Pipeline -At this point you should be ready to begin building a pipeline. You have a project set up in {% include product %}, you can launch Maya & Nuke via Desktop, and you've taken control of the project's configuration. You also have a basic understanding of the structure of the config and are ready to begin fleshing out the artist workflow. +At this point you should be ready to begin building a pipeline. You have a project set up in {% include product %}, you can launch Maya & Nuke via Desktop, and you've taken control of the project's configuration. You also have a basic understanding of the structure of the config and are ready to begin fleshing out the artist workflow. The following sections will walk through each step of the pipeline, highlighting the features that are available out-of-the-box and walking you through the process of customizing the {% include product %} integrations. By the end of these sections, you will have a simple, fully functional, end-to-end production pipeline. You will also get a feel for the steps artists will take as they work on production. @@ -165,17 +165,17 @@ The following sections will walk through each step of the pipeline, highlighting ## Modeling Workflow -The first step in the simple pipeline is Modeling. In this section you will create the first iteration of the Teapot Asset in your project. You will save it to disk in your project's folder structure and then publish it. +The first step in the simple pipeline is Modeling. In this section you will create the first iteration of the Teapot Asset in your project. You will save it to disk in your project's folder structure and then publish it. -First, launch Maya from {% include product %} Desktop. +First, launch Maya from {% include product %} Desktop. -Once Maya has full loaded, you will see the File Open Dialog appear. This dialog allows you to browse existing Maya files within the project. It also allows you to create new files that the {% include product %} integrations will be aware of. +Once Maya has full loaded, you will see the File Open Dialog appear. This dialog allows you to browse existing Maya files within the project. It also allows you to create new files that the {% include product %} integrations will be aware of. -Select the Assets tab and drill down into the Teapot's modeling task. Since there are no artist work files for this task yet, click the **+ New File** button. +Select the Assets tab and drill down into the Teapot's modeling task. Since there are no artist work files for this task yet, click the **+ New File** button. {% include figure src="./images/tutorial/image_13.png" %} -Clicking this button will create a new, empty Maya session and set your current working context to the Teapot Asset's Model task. +Clicking this button will create a new, empty Maya session and set your current working context to the Teapot Asset's Model task. {%include info title="Note" content="At any time during this tutorial you can launch the ShotGrid Panel via the ShotGrid menu in Maya or Nuke. This panel provides a view into your project data without leaving your DCC. It will show you your current working context and any recent activity within that context. You can also add notes for feedback directly into the panel. See the [ShotGrid Panel documentation](https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-Integrations-user-guide#The%20Shotgun%20Panel) for more info." %} @@ -195,15 +195,15 @@ The tokenized fields, **`{name}`**, **`{version}`**, and **`{maya_extension}`** **`assets/{sg_asset_type}/{Asset}/{Step}`** -The tokenized fields here can be automatically inferred by the Toolkit platform, given the current working context that you set when you created the new file above. +The tokenized fields here can be automatically inferred by the Toolkit platform, given the current working context that you set when you created the new file above. Also notice the preview of the file name and path to be written at the bottom of the dialog. Note the primary storage and project folder you defined while taking over the project configuration make up the root of the template path. -Click the **Save** button to save the teapot model. +Click the **Save** button to save the teapot model. -An important thing to note at this point is that the steps you just completed will be the same steps artists take when opening and saving workfiles throughout the pipeline. The File Open and File Save dialogs are part of Workfiles App. This "multi" app runs in all of the DCCs supported by the {% include product %} integrations and provides a consistent workflow for all artists. +An important thing to note at this point is that the steps you just completed will be the same steps artists take when opening and saving workfiles throughout the pipeline. The File Open and File Save dialogs are part of Workfiles App. This "multi" app runs in all of the DCCs supported by the {% include product %} integrations and provides a consistent workflow for all artists. -The next step is to make some changes to your teapot. Make sure the lid geometry is separate from the rest of the model so that it can be rigged later on. +The next step is to make some changes to your teapot. Make sure the lid geometry is separate from the rest of the model so that it can be rigged later on. {% include figure src="./images/tutorial/image_16.png" %} @@ -211,21 +211,21 @@ Once you're satisfied with your work, run the **{% include product %} > File Sav {% include figure src="./images/tutorial/image_17.png" %} -Once you have saved the Teapot model to version 2, you are ready for the last step in this section of the tutorial. +Once you have saved the Teapot model to version 2, you are ready for the last step in this section of the tutorial. -Now that your Teapot model is ready, you need to publish it so that it can be surfaced and rigged. To publish, click the **{% include product %} > Publish…** menu action. You will be presented with the Publish App dialog. +Now that your Teapot model is ready, you need to publish it so that it can be surfaced and rigged. To publish, click the **{% include product %} > Publish…** menu action. You will be presented with the Publish App dialog. {% include figure src="./images/tutorial/image_18.png" %} -The dialog shows a tree of items representing what will be published. The tree includes some entries that represent the items to be published and some entries represent the actions that will be performed during the publish operation. +The dialog shows a tree of items representing what will be published. The tree includes some entries that represent the items to be published and some entries represent the actions that will be performed during the publish operation. -On the left side of the dialog you will see an item representing the current Maya session. Underneath it, you will see a **Publish to ShotGrid** child action. An additional item representing **All Session Geometry** is shown as a child item of the current session. It also has a **Publish to ShotGrid** child action. +On the left side of the dialog you will see an item representing the current Maya session. Underneath it, you will see a **Publish to ShotGrid** child action. An additional item representing **All Session Geometry** is shown as a child item of the current session. It also has a **Publish to ShotGrid** child action. {% include info title="Note" content="If the **All Session Geometry** item doesn't show up, ensure that the [Alembic export plugin is enabled](https://support.shotgunsoftware.com/hc/en-us/articles/219039928-Publishing-Alembic-From-Maya#Before%20You%20Begin) in Maya." %} -Explore the Publish App by clicking on the items on the left side of the tree. You'll notice that the items to be acted upon, when selected, allow you to enter a description of what is being published. You can also take a screenshot to be associated with the item by clicking the camera icon on the right. +Explore the Publish App by clicking on the items on the left side of the tree. You'll notice that the items to be acted upon, when selected, allow you to enter a description of what is being published. You can also take a screenshot to be associated with the item by clicking the camera icon on the right. -When you are ready, click the **Publish** button in the bottom right corner to publish the current work file and the teapot geometry. Once complete, you can browse to the Teapot Asset in {% include product %} to verify that the publish completed successfully. +When you are ready, click the **Publish** button in the bottom right corner to publish the current work file and the teapot geometry. Once complete, you can browse to the Teapot Asset in {% include product %} to verify that the publish completed successfully. {% include figure src="./images/tutorial/image_19.png" %} @@ -237,23 +237,23 @@ Like the work file created when using the File Save dialog, the output paths of **`@asset_root/publish/maya/{name}.v{version}.{maya_extension}`** -This template is very similar to the work file template by default, the only difference being the **`publish`** folder. +This template is very similar to the work file template by default, the only difference being the **`publish`** folder. **Asset publish:** **`@asset_root/publish/caches/{name}.v{version}.abc`** -This template is similar to the maya session publish template, but the file is written to a **`caches`** folder. +This template is similar to the maya session publish template, but the file is written to a **`caches`** folder. Unlike the File Save dialog, when publishing, you don't have to supply the name, version, or file extension values. This is because by default the publisher pulls these values from the work file path. Under the hood it is extracting these values through the work template and then applying them to the publish templates. This is an important concept with regard to the Toolkit platform and how templates are used to connect the output of one pipeline step to the input of another. You will look at this in more depth in subsequent sections. -Browse to the files on disk to ensure they've been created in the correct location. +Browse to the files on disk to ensure they've been created in the correct location. Congratulations! You have successfully created the first published iteration of the Teapot. See if you can use what you've learned to publish a model of a table from the Table prop's modeling task. The result should look something like this: {% include figure src="./images/tutorial/image_20.png" %} -Next up, the surfacing workflow. +Next up, the surfacing workflow. ## Surfacing Workflow @@ -263,25 +263,25 @@ Start by launching Maya from Desktop. If you still have Maya open after working {% include figure src="./images/tutorial/image_21.png" width="450px" %} -You are now working in the Teapot's surfacing task. An easy way to verify that you are in the right production context is to check the first entry in the {% include product %} menu. +You are now working in the Teapot's surfacing task. An easy way to verify that you are in the right production context is to check the first entry in the {% include product %} menu. -{% include figure src="./images/tutorial/image_22.png" %} +{% include figure src="./images/tutorial/image_22.png" %} Next you need to load the teapot model into your new surfacing work file. To do this, launch the Loader app via the **{% include product %} > Load…** menu item in Maya. {% include figure src="./images/tutorial/image_23.png" %} -The layout of the Loader app is similar to the Workfiles app, but now you are browsing for published files to load rather than work files to open. +The layout of the Loader app is similar to the Workfiles app, but now you are browsing for published files to load rather than work files to open. -In the Assets tab, browse to the Teapot character to show the teapot publishes you created in the previous section. You should see a Maya Scene and an Alembic Cache publish. Select the Alembic Cache publish to show details about it on the right side of the dialog. Next, click the **Create Reference** item in the Actions menu of the Alembic Cache publish. The loader will remain open by default to allow additional actions to be performed, but you can close it to continue. You should see in Maya that a reference has been created pointing to the Teapot publish from the modeling task. +In the Assets tab, browse to the Teapot character to show the teapot publishes you created in the previous section. You should see a Maya Scene and an Alembic Cache publish. Select the Alembic Cache publish to show details about it on the right side of the dialog. Next, click the **Create Reference** item in the Actions menu of the Alembic Cache publish. The loader will remain open by default to allow additional actions to be performed, but you can close it to continue. You should see in Maya that a reference has been created pointing to the Teapot publish from the modeling task. {% include figure src="./images/tutorial/image_24.png" %} -Next, add a simple procedural shader to the teapot. +Next, add a simple procedural shader to the teapot. {% include figure src="./images/tutorial/image_25.png" %} -Shader management can be a time consuming and complex task when building a pipeline. It is often very specific to a studio. It is for these reasons that the shipped Maya integration does not handle shader or texture management out-of-the-box. +Shader management can be a time consuming and complex task when building a pipeline. It is often very specific to a studio. It is for these reasons that the shipped Maya integration does not handle shader or texture management out-of-the-box. Use the **{% include product %} > File Save…** menu action to save the current session before continuing. @@ -289,7 +289,6 @@ Use the **{% include product %} > File Save…** menu action to save the current For the purposes of this simple pipeline, you will customize the Publisher app to export Maya shader networks as additional publish items from the surfacing step. Later in the tutorial, you will put together a quick and dirty solution that allows the shaders to be reconnected to the Alembic geometry caches when referenced downstream. - {% include info title="Note" content="The customization you'll be adding is, admittedly, very simple and fragile. A more robust solution might take into account alternate representations of a surfaced character as well as the asset management side of using external images as texture maps. This example presents only a starting point for building a real-world solution." %} {% include info title="Note" content="You can see the full details of how to write publisher plugins [here](https://developer.shotgridsoftware.com/tk-multi-publish2/)." %} @@ -304,23 +303,23 @@ This file defines how the Publish app will be used within all of the artist envi {% include figure src="./images/tutorial/image_26.png" %} -The collector setting defines the hook where the publisher's collection logic lives. By default, the value is: +The collector setting defines the hook where the publisher's collection logic lives. By default, the value is: **`collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py"`** -This definition includes two files. When multiple files are listed in a hook setting, it implies inheritance. The first file contains the **`{self}`** token which will evaluate to the installed Publish app's hooks folder. The second file contains the **`{engine}`** token which will evaluate to the current engine's (in this case the installed Maya engine's) hooks folder. To summarize, this value says the Maya-specific collector inherits the Publish app's collector. This is a common pattern for Publisher configuration since the app's collector hook has logic that is useful regardless of the DCC that is running. The DCC-specific logic inherits from that base logic and extends it to collect items that are specific to the current session. +This definition includes two files. When multiple files are listed in a hook setting, it implies inheritance. The first file contains the **`{self}`** token which will evaluate to the installed Publish app's hooks folder. The second file contains the **`{engine}`** token which will evaluate to the current engine's (in this case the installed Maya engine's) hooks folder. To summarize, this value says the Maya-specific collector inherits the Publish app's collector. This is a common pattern for Publisher configuration since the app's collector hook has logic that is useful regardless of the DCC that is running. The DCC-specific logic inherits from that base logic and extends it to collect items that are specific to the current session. {% include info title="Note" content="We're only changing the collector setting for the Asset step environment, so our modifications won't be seen by artists working in other contexts, like Shot steps. They will continue to use the shipped, default Maya collector." %} -In the **Configuration** section you learned how to take over a hook. Begin the customization process by taking over the Maya engine's collector hook in your configuration. +In the **Configuration** section you learned how to take over a hook. Begin the customization process by taking over the Maya engine's collector hook in your configuration. {% include figure src="./images/tutorial/image_27.png" %} -The image above shows how to do this. First, create a folder structure in your project configuration's **hooks** folder. This will provide some namespacing to the collector plugin since you may override the same hook for other DCCs later on. Next, copy the Maya engine's collector hook from the install folder into your new hook folder structure. You should now have a copy of the Maya collector in your configuration with the path: +The image above shows how to do this. First, create a folder structure in your project configuration's **hooks** folder. This will provide some namespacing to the collector plugin since you may override the same hook for other DCCs later on. Next, copy the Maya engine's collector hook from the install folder into your new hook folder structure. You should now have a copy of the Maya collector in your configuration with the path: **`config/hooks/tk-multi-publish2/maya/collector.py`** -Next, update the publish2 settings file to point to your new hook location. Your collector setting should now have this value: +Next, update the publish2 settings file to point to your new hook location. Your collector setting should now have this value: **`collector: "{self}/collector.py:{config}/tk-multi-publish2/maya/collector.py"`** @@ -332,7 +331,7 @@ Now you need to open up your copy of the collector in your preferred IDE or text **`self._collect_meshes(item)`** -This is a new method that you will add to collect any meshes found in the current session. The method will create mesh items that a shader publish plugin (that you'll create later) can act upon. The item being passed in is the session item that will be the parent for our mesh items. +This is a new method that you will add to collect any meshes found in the current session. The method will create mesh items that a shader publish plugin (that you'll create later) can act upon. The item being passed in is the session item that will be the parent for our mesh items. {% include info title="Note" content="This is a very directed approach to modifying existing publish plugins. For a deeper dive into the structure of the publisher and all of its moving parts, please [see the developer docs](http://developer.shotgridsoftware.com/tk-multi-publish2/)." %} @@ -376,7 +375,7 @@ Now add the new method definition below to the bottom of the file: "Mesh", object ) - + # set the icon for the item mesh_item.set_icon_from_path(icon_path) @@ -385,7 +384,7 @@ Now add the new method definition below to the bottom of the file: mesh_item.properties["object"] = object ``` -The code is commented and should give you an idea of what is being done. The main point is that you've now added logic to collect mesh items for any top-level meshes in the current session. If you were to execute the publisher at this point however, you would not see any mesh items in the item tree. This is because there are no publish plugins defined to act on them. Next, you'll write a new shader publish plugin that will attach to these mesh items and handle publishing them for use downstream. +The code is commented and should give you an idea of what is being done. The main point is that you've now added logic to collect mesh items for any top-level meshes in the current session. If you were to execute the publisher at this point however, you would not see any mesh items in the item tree. This is because there are no publish plugins defined to act on them. Next, you'll write a new shader publish plugin that will attach to these mesh items and handle publishing them for use downstream. {% include info title="Note" content="You probably saw the call to set an icon for the mesh item in the code above. For this to work, you will need to add an icon to your configuration at the specified path:" %} @@ -424,8 +423,7 @@ The last step before being able to publish shaders is to add the template and co return plugin_settings ``` - -This method defines the configuration interface for the plugin. A **"Publish Template"** setting is required to tell the plugin where to write the shader networks to disk. Add the new publish plugin to the publisher configuration and include the template setting. This is the same configuration block you modified before when taking over the collector. It is defined in this file: +This method defines the configuration interface for the plugin. A **"Publish Template"** setting is required to tell the plugin where to write the shader networks to disk. Add the new publish plugin to the publisher configuration and include the template setting. This is the same configuration block you modified before when taking over the collector. It is defined in this file: **`env/includes/settings/tk-multi-publish2.yml`** @@ -441,13 +439,13 @@ Find the section where asset related Maya templates are defined and add the new {% include figure src="./images/tutorial/image_29.png" %} -That should be everything. You have overridden the Publish app's collector hook to find meshes to publish shaders for. You have implemented a new publish plugin to attach to the collected shader items, and you have defined and configured a new publish template where the shader networks will be written to disk. +That should be everything. You have overridden the Publish app's collector hook to find meshes to publish shaders for. You have implemented a new publish plugin to attach to the collected shader items, and you have defined and configured a new publish template where the shader networks will be written to disk. {% include info title="Note" content="If you closed Maya while making the customizations to your configuration, do not worry. You can simply launch Maya again and use the File Open dialog to open your surfacing work file. You can skip the reloading step below." %} ##### Reloading the {% include product %} Integrations -In order to try out your customizations, you'll need to reload the integrations in your Maya session. To do this, click the **{% include product %} > [Task Name] > Work Area Info…** menu action. +In order to try out your customizations, you'll need to reload the integrations in your Maya session. To do this, click the **{% include product %} > [Task Name] > Work Area Info…** menu action. {% include figure src="./images/tutorial/image_30.png" %} @@ -463,12 +461,11 @@ Now it is time to see the results of your changes to the project configuration. Enter a description of your work and capture a thumbnail of your surfaced Teapot to associate with the published files. Finally, click publish to export the Teapot shaders to disk and register the file as a publish in {% include product %}. When finished, notice that the session publish plugin has automatically saved your work file to the next available version. This is the default behavior within all of the DCCs supported by {% include product %} integrations. - You can now browse to the Teapot asset in {% include product %} to verify that everything worked as expected. {% include figure src="./images/tutorial/image_33.png" %} -Congratulations! You have successfully customized your pipeline and published shaders for the Teapot. See if you can use what you've learned to publish shaders from the Table prop's surfacing task. The result should look something like this: +Congratulations! You have successfully customized your pipeline and published shaders for the Teapot. See if you can use what you've learned to publish shaders from the Table prop's surfacing task. The result should look something like this: {% include figure src="./images/tutorial/image_34.png" %} @@ -478,21 +475,21 @@ Next up, the rigging workflow. At this point, you should feel pretty comfortable opening (or creating), saving, and publishing workfiles using the Workfile and Publish apps provided by {% include product %}. You've also had a chance to use the Loader app to load a publish from upstream. Use what you've learned to complete the following tasks: -* Launch Maya from {% include product %} Desktop +- Launch Maya from {% include product %} Desktop -* Create a new workfile in the Teapot asset's rigging step +- Create a new workfile in the Teapot asset's rigging step -* Load (reference) Teapot alembic cache publish from the modeling step +- Load (reference) Teapot alembic cache publish from the modeling step -* Rig the teapot's lid to open and close (keep it simple) +- Rig the teapot's lid to open and close (keep it simple) -* Save and publish the Teapot rig +- Save and publish the Teapot rig You should end up with something like this in {% include product %}: {% include figure src="./images/tutorial/image_35.png" %} -Next, let's see how artists handle upstream changes in their workflow. Open up the modeling work file and make some changes to the teapot model. Then publish the updated work. The result should be something like this: +Next, let's see how artists handle upstream changes in their workflow. Open up the modeling work file and make some changes to the teapot model. Then publish the updated work. The result should be something like this: {% include figure src="./images/tutorial/image_36.png" %} @@ -500,39 +497,39 @@ Open the work file in the Teapot's rigging step again (via **{% include product {% include figure src="./images/tutorial/image_37.png" width="400px" %} -For each reference, the app shows you one of two indicators -- a green check to show that the referenced publish is the latest version, or a red "x" to indicate that there is a newer publish available. In this case, we can see that there is a newer publish available. +For each reference, the app shows you one of two indicators -- a green check to show that the referenced publish is the latest version, or a red "x" to indicate that there is a newer publish available. In this case, we can see that there is a newer publish available. Now select the referenced Teapot alembic cache item (or click the **Select All Red** button at the bottom), then click **Update Selected**. -The app will update the Maya reference to the latest iteration of the Teapot alembic cache. You should now see your new model in the file. +The app will update the Maya reference to the latest iteration of the Teapot alembic cache. You should now see your new model in the file. {% include figure src="./images/tutorial/image_40.png" width="400px" %} -Make any adjustments to your rigging setup that you need to account for the new model and then publish your changes. +Make any adjustments to your rigging setup that you need to account for the new model and then publish your changes. In the following sections, you'll be working in a shot context. Next up, shot layout. ## Layout Workflow -In this section, you will begin working in the Shot you created for your project. You will load the assets created in the previous sections and block out the shot. You will then customize the publisher again, this time to publish the shot camera. +In this section, you will begin working in the Shot you created for your project. You will load the assets created in the previous sections and block out the shot. You will then customize the publisher again, this time to publish the shot camera. Begin by using what you learned in the previous sections to complete the following tasks: -* Launch Maya from {% include product %} Desktop +- Launch Maya from {% include product %} Desktop -* Create a new workfile in your Shot's layout step (Hint: use the Shots tab in the Loader) +- Create a new workfile in your Shot's layout step (Hint: use the Shots tab in the Loader) -* Load (reference) the Teapot publish from the Teapot's rigging step +- Load (reference) the Teapot publish from the Teapot's rigging step -* Load (reference) the Table publish from the Table's model step +- Load (reference) the Table publish from the Table's model step -Now block your simple scene with the Teapot on the Table. Add a camera to your scene called **camMain** and animate a few frames to create your shot's camera move. +Now block your simple scene with the Teapot on the Table. Add a camera to your scene called **camMain** and animate a few frames to create your shot's camera move. {% include figure src="./images/tutorial/image_41.gif" %} -Once you are happy with your shot layout, save the file via the **{% include product %} > File Save…** menu action. If you were to go ahead and publish at this point, you would only see the entire maya session as an available item to publish. +Once you are happy with your shot layout, save the file via the **{% include product %} > File Save…** menu action. If you were to go ahead and publish at this point, you would only see the entire maya session as an available item to publish. -An easy customization to add, and one that provides a lot of flexibility to a pipeline, is the ability to publish stand-alone cameras to a file format that is easy to import into other packages. This makes it possible to generate the camera once, typically in layout, and then have all other pipeline steps, such as animation, lighting, and compositing, consume it directly. +An easy customization to add, and one that provides a lot of flexibility to a pipeline, is the ability to publish stand-alone cameras to a file format that is easy to import into other packages. This makes it possible to generate the camera once, typically in layout, and then have all other pipeline steps, such as animation, lighting, and compositing, consume it directly. ### Collecting cameras @@ -540,7 +537,7 @@ As with shader publishing, the first step is to customize the collector hook. Yo {% include figure src="./images/tutorial/image_42.png" %} -Now, when working in a task within a Shot context, your custom collector logic will run. The next step is to add the custom camera collection logic. +Now, when working in a task within a Shot context, your custom collector logic will run. The next step is to add the custom camera collection logic. Open your custom collector hook and add the following method call at the bottom of the **`process_current_session`** method where you added the call to collect meshes in the surfacing section: @@ -610,7 +607,7 @@ The next step is to connect the newly collected mesh items to a publish plugin t ### Camera publish configuration -Finally, you need to update the Publish app's configuration for the Shot steps. Edit the settings file to add your new plugin. +Finally, you need to update the Publish app's configuration for the Shot steps. Edit the settings file to add your new plugin. **`env/includes/settings/tk-multi-publish2.yml`** @@ -618,13 +615,13 @@ Your configuration should look like this now: {% include figure src="./images/tutorial/image_43.png" %} -You'll notice the two settings added to the file as defined by the **`settings`** method of the new plugin. As with the shader plugin, there is a **Publish Template** setting which defines where the camera files will be written. The Cameras setting is a list of camera strings that drive which cameras the plugin should act on. The expectation is that there is some type of camera naming convention and this setting prevents the user from being presented with publish items for cameras that don't match the convention. In the image above, only the **`camMain`** camera will be presented for publishing. The implementation of the plugin you added will also work with wildcard patterns like **`cam*`**. +You'll notice the two settings added to the file as defined by the **`settings`** method of the new plugin. As with the shader plugin, there is a **Publish Template** setting which defines where the camera files will be written. The Cameras setting is a list of camera strings that drive which cameras the plugin should act on. The expectation is that there is some type of camera naming convention and this setting prevents the user from being presented with publish items for cameras that don't match the convention. In the image above, only the **`camMain`** camera will be presented for publishing. The implementation of the plugin you added will also work with wildcard patterns like **`cam*`**. The last step before testing your changes is to add the definition for the new camera publish template. Edit the **`config/core/templates.yml`** file and add the template definition to the maya shot template section: {% include figure src="./images/tutorial/image_44.png" %} -At this point, you should be ready to publish your camera with the new plugin. Use the **Work Area Info** app to reload the integrations, then launch the publisher. +At this point, you should be ready to publish your camera with the new plugin. Use the **Work Area Info** app to reload the integrations, then launch the publisher. {% include figure src="./images/tutorial/image_45.png" %} @@ -634,23 +631,23 @@ As you can see in the image, the new camera item is collected and the publish pl You should see something like this in {% include product %}: -{% include figure src="./images/tutorial/image_46.png" %} +{% include figure src="./images/tutorial/image_46.png" %} That's it! Next up, animation. ## Animation Workflow -Up to this point, you've only customized the Publish app in order to write custom file types/contents to disk and share them with other pipeline steps. In this section, you will customize the Loader app's configuration to complete the round trip to make it possible to import/reference custom publishes. +Up to this point, you've only customized the Publish app in order to write custom file types/contents to disk and share them with other pipeline steps. In this section, you will customize the Loader app's configuration to complete the round trip to make it possible to import/reference custom publishes. -Use what you've learned in previous sections to complete the following tasks. +Use what you've learned in previous sections to complete the following tasks. -* Launch Maya from {% include product %} Desktop +- Launch Maya from {% include product %} Desktop -* Create a new workfile in your Shot's animation step +- Create a new workfile in your Shot's animation step -* Load (reference) the maya session publish from the Shot's layout step +- Load (reference) the maya session publish from the Shot's layout step -{% include info title="Note" content="You'll notice that the camera was included in the layout session publish file. In a robust pipeline, the camera might be explicitly hidden or excluded from the session publish in order to allow the separate camera publish file to be the one true camera definition. Go ahead and delete or hide the camera included by the reference." %} +{% include info title="Note" content="You'll notice that the camera was included in the layout session publish file. In a robust pipeline, the camera might be explicitly hidden or excluded from the session publish in order to allow the separate camera publish file to be the one true camera definition. Go ahead and delete or hide the camera included by the reference." %} ### Custom camera Loader action @@ -668,13 +665,13 @@ Your app settings should now look like this: {% include figure src="./images/tutorial/image_47.png" width="400px" %} -Now reload the integrations via the **Work Area Info** app to pick up the new setting, then browse to the published camera from layout. +Now reload the integrations via the **Work Area Info** app to pick up the new setting, then browse to the published camera from layout. {% include figure src="./images/tutorial/image_48.png" %} Filter by the new publish type, then create a reference to the camera. Close the Loader and you should be able to play back the camera motion you created in the previous section with the newly reference camera. -Next, animate your Teapot model to do something (keep it simple). +Next, animate your Teapot model to do something (keep it simple). {% include figure src="./images/tutorial/image_49.gif" %} @@ -684,25 +681,25 @@ Next up, lighting. ## Lighting Workflow -In this section, you will bring together everything you published in the previous sections and render your shot. To do this, you will customize the Loader app to load the published shaders from the Teapot asset's surfacing step. +In this section, you will bring together everything you published in the previous sections and render your shot. To do this, you will customize the Loader app to load the published shaders from the Teapot asset's surfacing step. -First, use what you've learned in previous sections to complete the following tasks. +First, use what you've learned in previous sections to complete the following tasks. -* Launch Maya from {% include product %} Desktop +- Launch Maya from {% include product %} Desktop -* Create a new workfile in your Shot's lighting step +- Create a new workfile in your Shot's lighting step -* Load (reference) the maya session publish from the Shot's animation step +- Load (reference) the maya session publish from the Shot's animation step -* Load (reference) the camera publish from the Shot's layout step +- Load (reference) the camera publish from the Shot's layout step ### Custom shader Loader action -In order to load the shaders you published in the surfacing step, you will need to take over the **`tk-maya-actions.py`** hook mentioned in the previous section. Copy that hook from the install location into your configuration. +In order to load the shaders you published in the surfacing step, you will need to take over the **`tk-maya-actions.py`** hook mentioned in the previous section. Copy that hook from the install location into your configuration. {% include figure src="./images/tutorial/image_50.png" %} -This hook is responsible for generating a list of actions that can be performed for a given publish. The Loader app defines a different version of this hook for each DCC supported by the shipped integrations. +This hook is responsible for generating a list of actions that can be performed for a given publish. The Loader app defines a different version of this hook for each DCC supported by the shipped integrations. The shaders published in the surfacing workflow section are just Maya files, so like the exported cameras, they can be referenced by the Loader without changing the existing logic. The only change required is to add new logic to the actions hook to connect shaders to the appropriate mesh after they are referenced into the file. @@ -740,7 +737,6 @@ Add the following method at the end of the actions hook (outside the class). cmds.hyperShade(assign=shader) ``` - Now add the following 2 lines at the end of the **`_create_reference`** method to call the shader hookup logic: ```python @@ -748,8 +744,7 @@ Now add the following 2 lines at the end of the **`_create_reference`** method t _hookup_shaders(reference_node) ``` - -The code runs whenever a new reference is created, so it should assign the shader when referencing new geometry if the shader already exists in the file. Similarly, it should work when referencing the shader and the geometry already exists. +The code runs whenever a new reference is created, so it should assign the shader when referencing new geometry if the shader already exists in the file. Similarly, it should work when referencing the shader and the geometry already exists. {% include info title="Note" content="This hookup logic is very brute force and does not properly handle namespaces and other Maya-related subtleties that should be considered when implementing a production-ready pipeline." %} @@ -759,15 +754,15 @@ Finally, point your shot's loader settings to your new hook by editing this file While, there, also associate the Maya Shader Network publish type with the reference action. Your Loader settings should now look like this: -{% include figure src="./images/tutorial/image_51.png" %} +{% include figure src="./images/tutorial/image_51.png" %} Now reload the integrations via the **Work Area Info** app to pick up the new settings, then browse to the published shaders from surfacing. -Create a reference to the Teapot shader network publish. +Create a reference to the Teapot shader network publish. -{% include figure src="./images/tutorial/image_52.png" %} +{% include figure src="./images/tutorial/image_52.png" %} -Now load the Table shader network. If you turn on Hardware Texturing in Maya, your shaders should have been automatically connected to the meshes reference from the animation step. +Now load the Table shader network. If you turn on Hardware Texturing in Maya, your shaders should have been automatically connected to the meshes reference from the animation step. {% include figure src="./images/tutorial/image_53.png" %} @@ -777,13 +772,13 @@ Now add some lights to your scene (keep it simple). ### Publishing Maya Renders -Render your shot to disk. +Render your shot to disk. {% include figure src="./images/tutorial/image_54_5.gif" %} {% include info title="Note" content="As you can see, there are issues with the surfacing of both the Teapot and the Table asset. For the purposes of this tutorial, assume these were intentional, artistic choices. If you want to address these issues, you can always load the surfacing work files for these assets and adjust the shaders and re-publish them. If you do, remember to update the references in the lighting work file and re-render. If you go through the steps, you may find that the breakdown app does not reconnect your updated shaders after reloading the reference. Based on your experience modifying the loader to hook up shader references, you should be able to update the breakdown app's scene operations hook to add the required logic. HINT: See the update method in [this file](https://github.com/shotgunsoftware/tk-multi-breakdown/blob/master/hooks/tk-maya_scene_operations.py#L69)." %} -The shipped {% include product %} integrations will collect image sequences by looking at the render layers defined in the file. Once your render is complete, launch the publisher. You will see the rendered sequence as an item in the tree. +The shipped {% include product %} integrations will collect image sequences by looking at the render layers defined in the file. Once your render is complete, launch the publisher. You will see the rendered sequence as an item in the tree. {% include figure src="./images/tutorial/image_55.png" %} @@ -797,18 +792,17 @@ Next up, compositing! In this final section of the tutorial, you will be introduced to some of the default integrations provided by Nuke. In addition to the app's you have seen in previous sections, you will learn about the ShotGrid-aware Write node and an app that allows you to quickly send your renders to others for review. -Start by following these steps to prepare your work file. - -* Launch Nuke from {% include product %} Desktop +Start by following these steps to prepare your work file. -* Just like in Maya, use the {% include product %} > File Open… menu action to create a new work file in the Shot's compositing step. +- Launch Nuke from {% include product %} Desktop +- Just like in Maya, use the {% include product %} > File Open… menu action to create a new work file in the Shot's compositing step. Load the image sequence you rendered and published in the previous section via the Loader app. {% include figure src="./images/tutorial/image_57.png" %} -The action defined for the **`Image`** and **`Rendered Image`** publish types (the type depends on the file extension) is **Create Read Node**. Click this action to create a new **`Read`** node in your nuke session. +The action defined for the **`Image`** and **`Rendered Image`** publish types (the type depends on the file extension) is **Create Read Node**. Click this action to create a new **`Read`** node in your nuke session. Make sure your Nuke Project Settings output format matches your rendered images. Create a Constant color to use as your background and merge it with your Read node. Attach a viewer to see your composite. @@ -820,7 +814,7 @@ Next, click the {% include product %} logo in the left hand menu in Nuke. Click {% include figure src="./images/tutorial/image_59.png" width="400px" %} -The {% include product %} Write Node app provides a layer on top of the built-in Nuke Write node that automatically evaluates the output path based on your current {% include product %} context. +The {% include product %} Write Node app provides a layer on top of the built-in Nuke Write node that automatically evaluates the output path based on your current {% include product %} context. {% include figure src="./images/tutorial/image_60.png" %} @@ -836,7 +830,7 @@ Create a Quick Review node, then click the Upload button to render the input to {% include figure src="./images/tutorial/image_63.png" %} -Check the media tab in {% include product %} to see both of the uploaded quicktimes. +Check the media tab in {% include product %} to see both of the uploaded quicktimes. {% include figure src="./images/tutorial/image_64.png" %} @@ -846,7 +840,7 @@ For more information on reviewing media in {% include product %}, see the [offic Congratulations, you're done! Hopefully this tutorial has given you a starting point for building your own custom pipeline using the {% include product %} integrations. You should have an understanding of how to extend the default integrations to meet the specific needs of your studio. -Ask questions and learn how other studios are using Toolkit over at the [shotgun-dev Google Group](https://groups.google.com/a/shotgunsoftware.com/forum/#!forum/shotgun-dev). Be sure to subscribe to stay up to date with the latest posts! +Ask questions and learn how other studios are using Toolkit over at the [shotgun-dev Google Group](https://groups.google.com/a/shotgunsoftware.com/forum/#!forum/shotgun-dev). Be sure to subscribe to stay up to date with the latest posts! If there are features or workflows that you feel are outside of the default integrations, then you can always write your own apps. [Here is an excellent document](https://support.shotgunsoftware.com/entries/95440137) to help you get started writing your first app. diff --git a/docs/en/guides/python-3-best-practices.md b/docs/en/guides/python-3-best-practices.md index 6151ba4f8..102da2a01 100644 --- a/docs/en/guides/python-3-best-practices.md +++ b/docs/en/guides/python-3-best-practices.md @@ -7,88 +7,87 @@ lang: en # Python 3 Porting Best Practices - ## Why the move to Python 3? -There are a few compelling reasons to make the leap to Python 3. Perhaps the most dramatic is the Python 2 end of life, which occurred on January 1, 2020[^1]. With the sunsetting of Python 2, all support for Python 2 ceases, meaning that even new security vulnerabilities found in Python 2 will not be addressed. +There are a few compelling reasons to make the leap to Python 3. Perhaps the most dramatic is the Python 2 end of life, which occurred on January 1, 2020[^1]. With the sunsetting of Python 2, all support for Python 2 ceases, meaning that even new security vulnerabilities found in Python 2 will not be addressed. -For CY2020, the [VFX reference platform](https://vfxplatform.com/) makes the switch as well, targeting Python version 3.7.x. As a practical matter for many of us, all of this will mean we don't have much choice in when to add support for Python 3 -- as DCCs (digital content creation applications) that we develop for begin to move to Python 3 interpreters, it will become a necessity to support them. +For CY2020, the [VFX reference platform](https://vfxplatform.com/) makes the switch as well, targeting Python version 3.7.x. As a practical matter for many of us, all of this will mean we don't have much choice in when to add support for Python 3 -- as DCCs (digital content creation applications) that we develop for begin to move to Python 3 interpreters, it will become a necessity to support them. ## Things to Consider Before Starting -When considering moving to support Python 3, it's good to look at the requirements and application of your codebase to set expectations. Obviously, any host applications your code runs in will help drive this decision. Knowing whether you need to support many different Python interpreter versions and, if so, which ones, will be important information as you decide on the porting process that makes sense for you. +When considering moving to support Python 3, it's good to look at the requirements and application of your codebase to set expectations. Obviously, any host applications your code runs in will help drive this decision. Knowing whether you need to support many different Python interpreter versions and, if so, which ones, will be important information as you decide on the porting process that makes sense for you. -Next, take an audit of what libraries your code depends on. If any of these libraries do not have Python 3 compatible versions, you'll need to find an alternative library, or fork the library to provide compatibility yourself. Both of these options could potentially be costly decisions and are important to consider early on. Additionally, even libraries that do offer Python 3 compatible versions may not be drop-in replacements, and some libraries choose to fork for Python 3 support rather than maintain compatibility for both Python 2 and 3 as a single source. We'll discuss this in more depth in the "Porting Options" section below. +Next, take an audit of what libraries your code depends on. If any of these libraries do not have Python 3 compatible versions, you'll need to find an alternative library, or fork the library to provide compatibility yourself. Both of these options could potentially be costly decisions and are important to consider early on. Additionally, even libraries that do offer Python 3 compatible versions may not be drop-in replacements, and some libraries choose to fork for Python 3 support rather than maintain compatibility for both Python 2 and 3 as a single source. We'll discuss this in more depth in the "Porting Options" section below. -Finally, it's worth noting that while it is possible to continue to support Python versions older than 2.5 and Python 3 simultaneously[^2], this will make your life much harder. Since Python 2.5 is very old and not used in modern DCC versions, this guide will work under the assumption that Python 2.5 and earlier will not be targeted. If you do need to support older versions of Python, a branching approach as described in the "Porting Options" section below may be your best option. +Finally, it's worth noting that while it is possible to continue to support Python versions older than 2.5 and Python 3 simultaneously[^2], this will make your life much harder. Since Python 2.5 is very old and not used in modern DCC versions, this guide will work under the assumption that Python 2.5 and earlier will not be targeted. If you do need to support older versions of Python, a branching approach as described in the "Porting Options" section below may be your best option. ## What's Different in Python 3 -Python 3 comes with some slight syntax changes, changes to builtin functions, new features, and small behavior changes. There are [many](https://docs.python.org/3.0/whatsnew/3.0.html#overview-of-syntax-changes) [great](https://portingguide.readthedocs.io/en/latest/) [guides](https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html) that enumerate these specific changes and provide examples. Rather than dive into specifics here, the goal of this guide will be to describe the porting process from a higher-level perspective, with a few small deep dives where compatibility may be more complicated than just matching syntax. +Python 3 comes with some slight syntax changes, changes to builtin functions, new features, and small behavior changes. There are [many](https://docs.python.org/3.0/whatsnew/3.0.html#overview-of-syntax-changes) [great](https://portingguide.readthedocs.io/en/latest/) [guides](https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html) that enumerate these specific changes and provide examples. Rather than dive into specifics here, the goal of this guide will be to describe the porting process from a higher-level perspective, with a few small deep dives where compatibility may be more complicated than just matching syntax. ## Porting Options -For most of us, porting our code to only support Python 3 is not yet an option. Many DCCs still require Python 2 support, and this is unlikely to change overnight. This means that in the real world, it will be a necessity to be able to support both Python 2 and 3. +For most of us, porting our code to only support Python 3 is not yet an option. Many DCCs still require Python 2 support, and this is unlikely to change overnight. This means that in the real world, it will be a necessity to be able to support both Python 2 and 3. -There are two major approaches to supporting Python 2 and 3 simultaneously. We'll discuss both of them briefly: +There are two major approaches to supporting Python 2 and 3 simultaneously. We'll discuss both of them briefly: ### Branching -In this approach, a new Python 3 compatible branch of your code is maintained in parallel with the current (Python 2 compatible) branch. This has the advantage of letting you write cleaner, easier to read Python 3 code, and allows you to fully leverage new features without needing branching logic to maintain Python 2 support. It also means that when the time comes to drop support for Python 2, you'll be left with a cleaner, more modern starting point in your Python 3 branch. The obvious downside here is that maintaining two branches can be unwieldy and mean more work, especially if the Python 3 and Python 2 code starts to diverge as the Python 3 branch can leverage new features that can significantly change how your code looks (e.g. [`asyncio`](https://docs.python.org/3.6/library/asyncio.html).) +In this approach, a new Python 3 compatible branch of your code is maintained in parallel with the current (Python 2 compatible) branch. This has the advantage of letting you write cleaner, easier to read Python 3 code, and allows you to fully leverage new features without needing branching logic to maintain Python 2 support. It also means that when the time comes to drop support for Python 2, you'll be left with a cleaner, more modern starting point in your Python 3 branch. The obvious downside here is that maintaining two branches can be unwieldy and mean more work, especially if the Python 3 and Python 2 code starts to diverge as the Python 3 branch can leverage new features that can significantly change how your code looks (e.g. [`asyncio`](https://docs.python.org/3.6/library/asyncio.html).) ### Cross-Compatibility -In this approach, a single branch is maintained that uses the subset of syntax and builtins that are compatible with both Python 2 and 3. This allows for a graceful transition from Python 2 to 3 without maintaining multiple branches of your code. There are a few popular libraries designed to help with this approach, and it's a commonly-used solution to the problem of transition from Python 2 to 3. In addition to the reduced complexity compared to maintaining multiple branches, this approach also means you don't need to change your code distribution mechanisms or worry about using the correct (Python 2 or 3) version of your code at import time. +In this approach, a single branch is maintained that uses the subset of syntax and builtins that are compatible with both Python 2 and 3. This allows for a graceful transition from Python 2 to 3 without maintaining multiple branches of your code. There are a few popular libraries designed to help with this approach, and it's a commonly-used solution to the problem of transition from Python 2 to 3. In addition to the reduced complexity compared to maintaining multiple branches, this approach also means you don't need to change your code distribution mechanisms or worry about using the correct (Python 2 or 3) version of your code at import time. The two most commonly used libraries for this approach are `future` and `six`. #### `future` -The future module is probably the most popular choice for Python 2 + 3 compatibility. It backports many Python 3 libraries to Python 2, and aims to allow you to move your codebase to a pure Python 3 syntax. Because it backports modules and works by shadowing builtins, it is slightly more invasive than `six`. Given the variety of DCCs and unknown client code in VFX environments, future may be too invasive and in an environment like this may pose a greater risk of causing problems down the road. For this reason, we will focus on using `six` instead. +The future module is probably the most popular choice for Python 2 + 3 compatibility. It backports many Python 3 libraries to Python 2, and aims to allow you to move your codebase to a pure Python 3 syntax. Because it backports modules and works by shadowing builtins, it is slightly more invasive than `six`. Given the variety of DCCs and unknown client code in VFX environments, future may be too invasive and in an environment like this may pose a greater risk of causing problems down the road. For this reason, we will focus on using `six` instead. #### `six` -The `six` module does not attempt to backport Python 3 modules, or allow you to write pure Python 3 syntax, but instead unifies renamed modules and changed interfaces inside the `six.moves` namespace. This allows you to update imports and use `six`'s helper functions to write code that is both Python 2 and 3 compatible. +The `six` module does not attempt to backport Python 3 modules, or allow you to write pure Python 3 syntax, but instead unifies renamed modules and changed interfaces inside the `six.moves` namespace. This allows you to update imports and use `six`'s helper functions to write code that is both Python 2 and 3 compatible. ## Testing and Linting ### Black -The porting process requires an examination of the entire python codebase, and introduces a fair amount of noise in the revision control history. This makes it a good opportunity to take care of any other housekeeping that may have similar impacts. We took this opportunity to apply [`black`](https://black.readthedocs.io/en/stable/) to our code. This is not strictly necessary or directly related to Python 3 compatibility (unless your code is mixing tabs and spaces[^3]), but given the reasons identified above, we decided this was a good opportunity to modernize our code formatting. +The porting process requires an examination of the entire python codebase, and introduces a fair amount of noise in the revision control history. This makes it a good opportunity to take care of any other housekeeping that may have similar impacts. We took this opportunity to apply [`black`](https://black.readthedocs.io/en/stable/) to our code. This is not strictly necessary or directly related to Python 3 compatibility (unless your code is mixing tabs and spaces[^3]), but given the reasons identified above, we decided this was a good opportunity to modernize our code formatting. ### Tests -Test coverage was incredibly valuable during the porting process since it allowed us to quickly find problems that still needed to be addressed, and verify that large sections of code were working as expected without as much manual intervention. In many cases, we found it worthwhile to increase test coverage as part of the porting process to ensure that Python 2/3 specific cases (e.g. unicode handling) were being addressed correctly. This being said, we recognize that in many cases the realities of production mean that test coverage is sparse, and that adding tests to code that has little or no coverage may be too time consuming to be worthwhile as part of a project like adding Python 3 compatibility. For those in this situation, there may still be some value in using coverage measurement tools and some more basic testing code during the porting process, as these tools can provide fast feedback on what code has been covered and what may still need attention. +Test coverage was incredibly valuable during the porting process since it allowed us to quickly find problems that still needed to be addressed, and verify that large sections of code were working as expected without as much manual intervention. In many cases, we found it worthwhile to increase test coverage as part of the porting process to ensure that Python 2/3 specific cases (e.g. unicode handling) were being addressed correctly. This being said, we recognize that in many cases the realities of production mean that test coverage is sparse, and that adding tests to code that has little or no coverage may be too time consuming to be worthwhile as part of a project like adding Python 3 compatibility. For those in this situation, there may still be some value in using coverage measurement tools and some more basic testing code during the porting process, as these tools can provide fast feedback on what code has been covered and what may still need attention. ### Porting Procedure Automated Porting using `modernize` -[`python-modernize`](https://python-modernize.readthedocs.io/en/latest/) is a tool that can be very useful for automatically generating Python 3 compatible code. `modernize` usually produces runnable code with minimal human intervention, and because of this can be a great tool to get most of the way to Python 3 compatibility very quickly. Of course, as an automated tool it does come with the drawbacks one would expect. It frequently produces less readable and less efficient code (e.g. wrapping all iterables in a `list()` instantiation.) In some cases, modernize can even introduce regressions that might be difficult to spot. There are also some areas where you'll find `modernize` is not much help at all, like when dealing with bytes and text. Since these decisions require a bit more understanding of context, you'll likely have to spend some time manually addressing the handling of strings in your code even if you do rely on `modernize` for the bulk of the compatibility work. +[`python-modernize`](https://python-modernize.readthedocs.io/en/latest/) is a tool that can be very useful for automatically generating Python 3 compatible code. `modernize` usually produces runnable code with minimal human intervention, and because of this can be a great tool to get most of the way to Python 3 compatibility very quickly. Of course, as an automated tool it does come with the drawbacks one would expect. It frequently produces less readable and less efficient code (e.g. wrapping all iterables in a `list()` instantiation.) In some cases, modernize can even introduce regressions that might be difficult to spot. There are also some areas where you'll find `modernize` is not much help at all, like when dealing with bytes and text. Since these decisions require a bit more understanding of context, you'll likely have to spend some time manually addressing the handling of strings in your code even if you do rely on `modernize` for the bulk of the compatibility work. -The alternative to using an automated tool like modernize, of course, is to go through code manually to fix incompatibilities. This can be tedious, but in our experience generally produces nicer looking code. +The alternative to using an automated tool like modernize, of course, is to go through code manually to fix incompatibilities. This can be tedious, but in our experience generally produces nicer looking code. -For our process we went with a hybrid approach, using `modernize` with a select set of fixers, and doing some of the work manually. We also broke the process into two stages; first doing a pure syntax compatibility and code formatting pass, and then doing a more manual Python 3 port. Our process was as follows: +For our process we went with a hybrid approach, using `modernize` with a select set of fixers, and doing some of the work manually. We also broke the process into two stages; first doing a pure syntax compatibility and code formatting pass, and then doing a more manual Python 3 port. Our process was as follows: In a branch: 1. Run modernize with the `except`, `numliterals`, and `print` fixers - ```python-modernize --no-diffs --nobackups -f except -f numliterals -f print -w .``` -2. Make sure the resulting code is Python 3 syntax compliant by compiling it with Python 3. The goal here is not to have your code work in Python 3, but to ensure that the basic formatting and automatable syntax fixes are in place. If your code does not successfully compile after this step, you’ll need to find the source of the problem and either add additional fixers to the above step, or manually fix the incompatibilities. Ensure that any changes you make manually at this stage are syntax only and will not change the behavior of the code in Python 2. - ```python3 -m compileall .``` + `python-modernize --no-diffs --nobackups -f except -f numliterals -f print -w .` +2. Make sure the resulting code is Python 3 syntax compliant by compiling it with Python 3. The goal here is not to have your code work in Python 3, but to ensure that the basic formatting and automatable syntax fixes are in place. If your code does not successfully compile after this step, you’ll need to find the source of the problem and either add additional fixers to the above step, or manually fix the incompatibilities. Ensure that any changes you make manually at this stage are syntax only and will not change the behavior of the code in Python 2. + `python3 -m compileall .` 3. Run `black` on the resulting code -This branch should not change any behavior or functionality, and should not introduce regressions, so it is considered safe to merge at this point. This helps keep the history easier to read, and means that the Python 3 compatibility branch and master will diverge less during the porting process, making for an easier merge once the work is done. +This branch should not change any behavior or functionality, and should not introduce regressions, so it is considered safe to merge at this point. This helps keep the history easier to read, and means that the Python 3 compatibility branch and master will diverge less during the porting process, making for an easier merge once the work is done. In a new branch, the actual Python 3 port can now begin: -1. Search for method names that may require some work to deal with list/view/iterator differences between Python 2 and 3. In Python 3 `.values()`, `.items()` and `.keys()` return an iterator or view instead of a list, so in cases where these methods are called the code should be able to handle both iterator and list returns, otherwise the result will need to be cast to a list. Similarly, the `filter()` method returned a list in Python 2, but now returns an iterator. -2. Change calls from `dict.iteritems()` and `dict.itervalues()` to `dict.items()` and `dict.values()` if the returned collection won't be too big. In these cases, the resulting cleaner code at the cost of a slight performance hit in Python 2 is preferable. In cases where the collection might contain thousands of items or more, use `six.iteritems` and `six.itervalues` instead. If `dict.iterkeys()` was used, simply replace the code with something like `for key in dictionary:`, since this will iterate on keys in both Python versions. Watch out that returning an iterator in Python 3 doesn't change the semantics of the code however. If a method used to return `dict.values()`, you'll need to wrap the call inside `list(dict.values())` to ensure the method always returns a list in all versions on Python. -3. Search for `str`, `basestring`, `unicode`, `open`, `pickle`, `encode`, `decode` since these will be areas of the code that likely require some attention to handling of bytes and strings. We used the coercion helper methods provided by six (e.g. `ensure_string`) where needed. See the sections on `bytes` and `pickle` below. +1. Search for method names that may require some work to deal with list/view/iterator differences between Python 2 and 3. In Python 3 `.values()`, `.items()` and `.keys()` return an iterator or view instead of a list, so in cases where these methods are called the code should be able to handle both iterator and list returns, otherwise the result will need to be cast to a list. Similarly, the `filter()` method returned a list in Python 2, but now returns an iterator. +2. Change calls from `dict.iteritems()` and `dict.itervalues()` to `dict.items()` and `dict.values()` if the returned collection won't be too big. In these cases, the resulting cleaner code at the cost of a slight performance hit in Python 2 is preferable. In cases where the collection might contain thousands of items or more, use `six.iteritems` and `six.itervalues` instead. If `dict.iterkeys()` was used, simply replace the code with something like `for key in dictionary:`, since this will iterate on keys in both Python versions. Watch out that returning an iterator in Python 3 doesn't change the semantics of the code however. If a method used to return `dict.values()`, you'll need to wrap the call inside `list(dict.values())` to ensure the method always returns a list in all versions on Python. +3. Search for `str`, `basestring`, `unicode`, `open`, `pickle`, `encode`, `decode` since these will be areas of the code that likely require some attention to handling of bytes and strings. We used the coercion helper methods provided by six (e.g. `ensure_string`) where needed. See the sections on `bytes` and `pickle` below. 4. Unless generating a super long range, `xrange` can be changed to `range` for simplicity, otherwise `six.range` can be used. -5. After committing the manual changes from above, run a full `python-modernize` and go through the diff manually. Many of the resulting changes will be unwanted, as discussed above, however this is a good way to catch potential problems that were overlooked in the manual porting process. - ```python-modernize --no-diffs --nobackups -f default . -w && git diff HEAD``` -6. Test the resulting code to find the remaining problems. There are some incompatibilities that don’t have fixers ([this](https://portingguide.readthedocs.io/en/latest/core-obj-misc.html) is a good resource to look at to get an idea of what those changes entail), and it’s easy to overlook text/binary problems during the port process. +5. After committing the manual changes from above, run a full `python-modernize` and go through the diff manually. Many of the resulting changes will be unwanted, as discussed above, however this is a good way to catch potential problems that were overlooked in the manual porting process. + `python-modernize --no-diffs --nobackups -f default . -w && git diff HEAD` +6. Test the resulting code to find the remaining problems. There are some incompatibilities that don’t have fixers ([this](https://portingguide.readthedocs.io/en/latest/core-obj-misc.html) is a good resource to look at to get an idea of what those changes entail), and it’s easy to overlook text/binary problems during the port process. We chose to use this process because we believe it allowed us to maintain a standard of more readable, efficient code than would have been automatically generated by using `modernize` on its own. @@ -96,7 +95,7 @@ We chose to use this process because we believe it allowed us to maintain a stan ### Bytes Woes -Python 3 introduces a strict separation between binary and textual data. This is a long-called-for addition that most see as an improvement, but for Python 2 + 3 compatible code it adds some headaches. Since Python 2 does not enforce this separation, and Python 3 introduces new types to do so, code that deals with data and strings will likely need some attention. For the most part this just means making sure that strings are encoded / decoded properly, for which the `six.ensure_binary` and `six.ensure_text` helper functions are invaluable. See the examples below for common applications of these methods. In some cases, however, this can be more complicated. For an example of this, see the pickle section below. +Python 3 introduces a strict separation between binary and textual data. This is a long-called-for addition that most see as an improvement, but for Python 2 + 3 compatible code it adds some headaches. Since Python 2 does not enforce this separation, and Python 3 introduces new types to do so, code that deals with data and strings will likely need some attention. For the most part this just means making sure that strings are encoded / decoded properly, for which the `six.ensure_binary` and `six.ensure_text` helper functions are invaluable. See the examples below for common applications of these methods. In some cases, however, this can be more complicated. For an example of this, see the pickle section below. ```python # base64.encodestring expects str in Python 2, and bytes in Python 3. @@ -119,7 +118,7 @@ category_type = six.ensure_str(category_type) ### The `pickle` Pickle -Pickle in Python 3 returns a `bytes` object from `dumps()`, where previously it had returned a `str`. Additionally, the output of `pickle.dumps()` in Python 3 contains `\x00` bytes, which cannot be decoded. This is not a problem if the data is being stored in a file, but if the pickled data is being stored in, for example, an environment variable, this can become problematic. As a workaround, we found that by forcing pickle to use protocol 0, no 0 bytes were included, and the output is once again decodable. This comes at the cost of the slightly less efficient and fewer-featured older protocol. +Pickle in Python 3 returns a `bytes` object from `dumps()`, where previously it had returned a `str`. Additionally, the output of `pickle.dumps()` in Python 3 contains `\x00` bytes, which cannot be decoded. This is not a problem if the data is being stored in a file, but if the pickled data is being stored in, for example, an environment variable, this can become problematic. As a workaround, we found that by forcing pickle to use protocol 0, no 0 bytes were included, and the output is once again decodable. This comes at the cost of the slightly less efficient and fewer-featured older protocol. ```python # Dumping data to a pickle string: @@ -135,26 +134,23 @@ pickled_data = six.ensure_str(cPickle.dumps(data, **DUMP_KWARGS)) LOAD_KWARGS = {"encoding": "bytes"} if six.PY3 else {} data = cPickle.loads(six.ensure_binary(data), **LOAD_KWARGS) ``` + ### Regex `\W` flag -In Python 3, regular expression metacharacters match unicode characters where in Python 2 they do not. To reproduce the previous behavior, Python 3 introduces a new `re.ASCII` flag, which does not exist in Python 2. To maintain consistent behavior across Python 2 and 3, we wrapped `re` functions to include this flag across the board in Python 3. +In Python 3, regular expression metacharacters match unicode characters where in Python 2 they do not. To reproduce the previous behavior, Python 3 introduces a new `re.ASCII` flag, which does not exist in Python 2. To maintain consistent behavior across Python 2 and 3, we wrapped `re` functions to include this flag across the board in Python 3. ### Dictionary Order -Prior to Python 3.7, dictionary order was not guaranteed. As of Python 3.7, insertion order is preserved in dictionaries[11]. In practice, on Python 2.7 dictionary order was random but deterministic (though this was not guaranteed), on some versions of Python (including some version of Python 3) dictionary order is non-deterministic[10]. While code prior to Python 3.7 should not rely on dictionary key order being deterministic, there were instances where this assumption was made in our unit tests. These tests broke in Python 3.7, and needed to be updated to ensure that dictionary key order was not relied upon. +Prior to Python 3.7, dictionary order was not guaranteed. As of Python 3.7, insertion order is preserved in dictionaries[11]. In practice, on Python 2.7 dictionary order was random but deterministic (though this was not guaranteed), on some versions of Python (including some version of Python 3) dictionary order is non-deterministic[10]. While code prior to Python 3.7 should not rely on dictionary key order being deterministic, there were instances where this assumption was made in our unit tests. These tests broke in Python 3.7, and needed to be updated to ensure that dictionary key order was not relied upon. ### `sys.platform` -In Python 3.3+ `sys.platform` on Linux returns `linux`, where previously it had returned "linux" appended with the kernel major version (i.e. `linux2`). Of course when testing for Linux it is easy enough to check `sys.platform.startswith('linux')`. We chose to centralize these tests and platform "normalization", and introduced functions `sgtk.util.is_windows()`, `sgtk.util.is_linux()`, `sgtk.util.is_macos()`, as well as a `sgsix.platform` constant that contains a normalized platform string that can be used for consistent mapping to platform names across python versions. +In Python 3.3+ `sys.platform` on Linux returns `linux`, where previously it had returned "linux" appended with the kernel major version (i.e. `linux2`). Of course when testing for Linux it is easy enough to check `sys.platform.startswith('linux')`. We chose to centralize these tests and platform "normalization", and introduced functions `sgtk.util.is_windows()`, `sgtk.util.is_linux()`, `sgtk.util.is_macos()`, as well as a `sgsix.platform` constant that contains a normalized platform string that can be used for consistent mapping to platform names across python versions. -## Notes -[^1]: - [https://www.python.org/doc/sunset-python-2/](https://www.python.org/doc/sunset-python-2/) - -[^2]: - [https://docs.python.org/3/howto/pyporting.html#drop-support-for-python-2-6-and-older](https://docs.python.org/3/howto/pyporting.html#drop-support-for-python-2-6-and-older) +## Notes -[^3]: - [https://portingguide.readthedocs.io/en/latest/syntax.html#tabs-and-spaces](https://portingguide.readthedocs.io/en/latest/syntax.html#tabs-and-spaces) \ No newline at end of file +[^1]: [https://www.python.org/doc/sunset-python-2/](https://www.python.org/doc/sunset-python-2/) +[^2]: [https://docs.python.org/3/howto/pyporting.html#drop-support-for-python-2-6-and-older](https://docs.python.org/3/howto/pyporting.html#drop-support-for-python-2-6-and-older) +[^3]: [https://portingguide.readthedocs.io/en/latest/syntax.html#tabs-and-spaces](https://portingguide.readthedocs.io/en/latest/syntax.html#tabs-and-spaces) diff --git a/docs/en/guides/review.md b/docs/en/guides/review.md index 99b1de39d..480d3d55c 100644 --- a/docs/en/guides/review.md +++ b/docs/en/guides/review.md @@ -7,7 +7,7 @@ lang: en # Review -Learn to how to get the most out of RV, the award-winning suite of digital review tools that allows you to play back, compare, and convert digital media with collaboration tools and many deep integrations. +Learn to how to get the most out of RV, the award-winning suite of digital review tools that allows you to play back, compare, and convert digital media with collaboration tools and many deep integrations. Dig into RV's Reference Manuals for a complete understanding of node graphs, custom shaders, event handling, and networking. diff --git a/docs/en/guides/webhooks.md b/docs/en/guides/webhooks.md index 19711af77..98cf27780 100644 --- a/docs/en/guides/webhooks.md +++ b/docs/en/guides/webhooks.md @@ -31,7 +31,7 @@ Webhooks and the [{% include product %} event daemon](https://github.com/shotgun ## Creating a webhook -To get started creating a webhook, go to a Webhooks page, then navigate to the button above the webhooks list. Access to webhooks is controlled by the "Advanced -> Show Webhooks" permission. It is enabled for default Admin and Manager roles. +To get started creating a webhook, go to a Webhooks page, then navigate to the button above the webhooks list. Access to webhooks is controlled by the "Advanced -> Show Webhooks" permission. It is enabled for default Admin and Manager roles. ![Create Webhook Button](./images/webhooks/create_webhook_button.png) @@ -74,12 +74,12 @@ A webhook can have one of several different statuses, indicating its health and ![Create Webhook Dialog](./images/webhooks/webhook_selected_status.png) -| Status | Example | Description | -|--------|:-------:|:-----------:| -| Active | ![Active](./images/webhooks/webhook_status_active.png) | The webhook is operating in a stable fashion. No deliveries to this webhook's consumer URL have failed to reach their destination in the past 24 hours. | -| Unstable | ![Unstable](./images/webhooks/webhook_status_unstable.png) | The webhook is operating in an unstable fashion. Some deliveries have failed to reach their destination in the past 24 hours, but not enough to cause {% include product %} to consider the webhook to be dead. | -| Failed | ![Failed](./images/webhooks/webhook_status_failed.png) | The webhook is considered to be dead, and no further deliveries will be attempted. This is a result of too many delivery failures in a short period of time, and the system has determined that the webhook should no longer be considered viable. **A webhook is considered failed if it has 10 failed deliveries in the past 24 hours**. | -| Disabled | ![Disabled](./images/webhooks/webhook_status_disabled.png) | The webhook is in a disabled state, and no further deliveries will be attempted until it is re-enabled. | +| Status | Example | Description | +| -------- | :--------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| Active | ![Active](./images/webhooks/webhook_status_active.png) | The webhook is operating in a stable fashion. No deliveries to this webhook's consumer URL have failed to reach their destination in the past 24 hours. | +| Unstable | ![Unstable](./images/webhooks/webhook_status_unstable.png) | The webhook is operating in an unstable fashion. Some deliveries have failed to reach their destination in the past 24 hours, but not enough to cause {% include product %} to consider the webhook to be dead. | +| Failed | ![Failed](./images/webhooks/webhook_status_failed.png) | The webhook is considered to be dead, and no further deliveries will be attempted. This is a result of too many delivery failures in a short period of time, and the system has determined that the webhook should no longer be considered viable. **A webhook is considered failed if it has 10 failed deliveries in the past 24 hours**. | +| Disabled | ![Disabled](./images/webhooks/webhook_status_disabled.png) | The webhook is in a disabled state, and no further deliveries will be attempted until it is re-enabled. | ## Deliveries @@ -152,7 +152,7 @@ A webhook consumer service must respond to deliveries in order for the system to {% include warning title="Response timeouts" content="A response must be received within six seconds of delivery to a webhook’s URL, after which the connection will be closed. Failure to respond in time will result in a failed delivery." %} -Process time is recorded for each delivery and can be viewed in the Response details tab. +Process time is recorded for each delivery and can be viewed in the Response details tab. #### Throttling @@ -160,17 +160,18 @@ Your consumer response times to deliveries will impact webhooks throughput for y Each site is allowed 1 minute of response time per minute. So if all configured consumer endpoints for a site take the full 6 seconds to respond, webhooks deliveries for that site will be throttled to 10 per a minute. Where a high rate of overall throughput is needed, then consumer endpoints should be designed according to the following model: - 1. Receive the request - 2. Spawn another process/thread to handle it the way you want - 3. Answer an acknowledging 200 immediately + +1. Receive the request +2. Spawn another process/thread to handle it the way you want +3. Answer an acknowledging 200 immediately #### Status codes -| Status | Code | Description | -|--------|:----:|:-----------:| -| Success | < 400 | The delivery was received and processed successfully. | -| Error | >= 400 | The delivery was received but was not processed successfully. | -| Redirect | 3xx | The delivery was received, but should be redirected to another URL. | +| Status | Code | Description | +| -------- | :----: | :-----------------------------------------------------------------: | +| Success | < 400 | The delivery was received and processed successfully. | +| Error | >= 400 | The delivery was received but was not processed successfully. | +| Redirect | 3xx | The delivery was received, but should be redirected to another URL. | ### Acknowledgements diff --git a/docs/en/guides/webhooks/batch-deliveries.md b/docs/en/guides/webhooks/batch-deliveries.md index 18e2a722a..007bb3090 100644 --- a/docs/en/guides/webhooks/batch-deliveries.md +++ b/docs/en/guides/webhooks/batch-deliveries.md @@ -23,11 +23,13 @@ If enabling batched deliveries, we recommend that your receiving service is desi {% include info title="Note" content="For a receiving service that takes on order of 1 second to respond to a single event, the response time is the main performance factor, not delivery overhead. There will not be any significant benefit in batching." %} #### Non-batched-deliveries Webhooks -* timeout allowance is 6 seconds per delivery. i.e. a webhook endpoint must respond to each request within 6 seconds. + +- timeout allowance is 6 seconds per delivery. i.e. a webhook endpoint must respond to each request within 6 seconds. #### Batched-deliveries Webhooks -* timeout allowance is the maximum of: 6 seconds, or, 1 second per event in the batch. -* throttling limits still apply: 1 minute of webhook endpoint response time per minute per ShotGrid site, across all webhooks. + +- timeout allowance is the maximum of: 6 seconds, or, 1 second per event in the batch. +- throttling limits still apply: 1 minute of webhook endpoint response time per minute per ShotGrid site, across all webhooks. ## Comparison of Webhook Delivery Formats @@ -35,82 +37,82 @@ If enabling batched deliveries, we recommend that your receiving service is desi ```json { - "data":{ - "id":"119.110.0", - "event_log_entry_id":479004, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1419}, - "project":{"type":"Project","id":127}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1419, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "data": { + "id": "119.110.0", + "event_log_entry_id": 479004, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1419 }, + "project": { "type": "Project", "id": 127 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1419, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 17:40:23.202136", + "attribute_name": "code", + "session_uuid": null }, - "timestamp":"2021-02-22T17:40:27Z" + "timestamp": "2021-02-22T17:40:27Z" } ``` #### Batched-Deliveries Webhook Message Body (may contain 1 to 50 deliveries) -When batching is enabled, a `deliveries` key is always present, even if there is only 1 event in the batch. Its value is an array of individual event delivery data, where the information provided for each delivery is identical to un-batched mode. +When batching is enabled, a `deliveries` key is always present, even if there is only 1 event in the batch. Its value is an array of individual event delivery data, where the information provided for each delivery is identical to un-batched mode. ```json { - "timestamp":"2021-02-22T18:04:40.140Z", - "data":{ - "deliveries":[ + "timestamp": "2021-02-22T18:04:40.140Z", + "data": { + "deliveries": [ { - "id":"170.141.0", - "event_log_entry_id":480850, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "id": "170.141.0", + "event_log_entry_id": 480850, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 18:04:39.198641", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 18:04:39.198641", + "attribute_name": "code", + "session_uuid": null }, { - "id":"170.141.1", - "event_log_entry_id":480851, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"description", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":null, - "new_value":"Some other *description*" + "id": "170.141.1", + "event_log_entry_id": 480851, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "description", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": null, + "new_value": "Some other *description*" }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, + "created_at": "2021-02-22 18:04:39.212032", + "attribute_name": "description", + "session_uuid": null + } ] } } diff --git a/docs/en/index.md b/docs/en/index.md index bad4fec9f..f9f18da4d 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -4,4 +4,3 @@ title: Overview pagename: index lang: en --- - diff --git a/docs/en/quick-answers/administering.md b/docs/en/quick-answers/administering.md index 624446216..9ddf0d071 100644 --- a/docs/en/quick-answers/administering.md +++ b/docs/en/quick-answers/administering.md @@ -5,12 +5,12 @@ pagename: quick-answers-administering lang: en --- -Administering -===== +# Administering A collection of quick answers based around administering and configuring your Toolkit setup. #### {% include product %} Desktop: + - [How do I re-setup a Toolkit project using {% include product %} Desktop?](./administering/resetup-project-with-sg-desktop.md) - [How do I install the {% include product %} Desktop silently on Windows?](./administering/install-desktop-silent.md) - [How do I set up a desktop/launcher icon for {% include product %} Desktop on Linux?](./administering/create-shotgun-desktop-shortcut.md) diff --git a/docs/en/quick-answers/administering/convert-from-single-root-to-multi.md b/docs/en/quick-answers/administering/convert-from-single-root-to-multi.md index 96469a4de..5500f130c 100644 --- a/docs/en/quick-answers/administering/convert-from-single-root-to-multi.md +++ b/docs/en/quick-answers/administering/convert-from-single-root-to-multi.md @@ -15,7 +15,7 @@ Let’s say you want to add another root named “secondary”. Here are the ste - In {% include product %}, navigate to the **Admin > Site Preferences** page - Open up the **File Management** section - Click on **[+] Add Local File Storage** -- Fill out the name ("secondary") and the paths to the storage root on all of the relevant platforms. *If you're not using a particular platform, you can simply leave it blank.* +- Fill out the name ("secondary") and the paths to the storage root on all of the relevant platforms. _If you're not using a particular platform, you can simply leave it blank._ - Click on the **Save Page** button on the top or the bottom of the page ![{% include product %} file management prefs](images/shotgun-pref-file-management.png) @@ -25,13 +25,13 @@ Let’s say you want to add another root named “secondary”. Here are the ste Toolkit caches information about the local storages used in a pipeline configuration in the `config/core/roots.yml` file. Edit this file to add the new **secondary** storage root you just created in {% include product %}: primary: { - linux_path: /mnt/hgfs/sgtk/projects, - mac_path: /sgtk/projects, + linux_path: /mnt/hgfs/sgtk/projects, + mac_path: /sgtk/projects, windows_path: 'z:\sgtk\projects' } secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, + linux_path: /mnt/hgfs/sgtk/secondaries, + mac_path: /sgtk/secondaries, windows_path: 'z:\sgtk\secondaries' } @@ -39,8 +39,8 @@ Toolkit caches information about the local storages used in a pipeline configura Example: secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, + linux_path: /mnt/hgfs/sgtk/secondaries, + mac_path: /sgtk/secondaries, windows_path: 'z:\sgtk\secondaries' shotgun_storage_id: 123 } @@ -90,4 +90,4 @@ You should follow this same pattern for each template path in your `config/core/ {% include info title="Note" content="You do not need to specify a `root_name` for templates that use the default storage root. The default root is indicated by specifying `default: true` in the `roots.yml` file. If a default is not explicitly defined in `roots.yml`, the root named **primary** will be considered the default." %} -1 *It is worth noting that updating the paths might not be ideal, since any old files that were created using the previous value will not be accessible by Toolkit once the new value is set (e.g. old work files won't be found by Toolkit after changing their template path). If this is a concern, you may then create a new template (e.g. houdini_shot_publish_v2) with the new location and upgrade your apps to use that new version. Not all apps handle a fallback concept like this, but this will allow some apps to recognize the old files. This does not affect publishes, as these are always linked to their publish in {% include product %}.* +1 _It is worth noting that updating the paths might not be ideal, since any old files that were created using the previous value will not be accessible by Toolkit once the new value is set (e.g. old work files won't be found by Toolkit after changing their template path). If this is a concern, you may then create a new template (e.g. houdini_shot_publish_v2) with the new location and upgrade your apps to use that new version. Not all apps handle a fallback concept like this, but this will allow some apps to recognize the old files. This does not affect publishes, as these are always linked to their publish in {% include product %}._ diff --git a/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md b/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md index ee27d627a..1e0625c9c 100644 --- a/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ b/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md @@ -7,8 +7,8 @@ lang: en # How do I set up a desktop/launcher icon for {% include product %} Desktop on Linux? -The current {% include product %} Desktop installer doesn't automatically create shortcuts and launch entries, so you have to manually go in and do this afterwards. It's straightforward and may differ depending on which flavour of Linux you are using. +The current {% include product %} Desktop installer doesn't automatically create shortcuts and launch entries, so you have to manually go in and do this afterwards. It's straightforward and may differ depending on which flavour of Linux you are using. Once you have run the {% include product %} desktop installer, the {% include product %} Desktop executable will be located in the `/opt/Shotgun folder`. The name of the executable is {% include product %}. No icon is distributed with the installer. Download it from the [{% include product %} Desktop engine github repository](https://github.com/shotgunsoftware/tk-desktop/blob/aac6fe004bd003bf26316b9859bd4ebc42eb82dc/resources/default_systray_icon.png). -Once you have downloaded the icon and have the path to the executable (`/opt/Shotgun/Shotgun`), please manually create any desktop or menu launchers you may require. The process for doing this varies depending on the version of Linux, but you can typically create a desktop launcher by right clicking on the Desktop and looking for a suitable menu option there. \ No newline at end of file +Once you have downloaded the icon and have the path to the executable (`/opt/Shotgun/Shotgun`), please manually create any desktop or menu launchers you may require. The process for doing this varies depending on the version of Linux, but you can typically create a desktop launcher by right clicking on the Desktop and looking for a suitable menu option there. diff --git a/docs/en/quick-answers/administering/disable-browser-integration.md b/docs/en/quick-answers/administering/disable-browser-integration.md index 38a60f257..5dd092983 100644 --- a/docs/en/quick-answers/administering/disable-browser-integration.md +++ b/docs/en/quick-answers/administering/disable-browser-integration.md @@ -9,13 +9,13 @@ lang: en To disable browser integration, follow these two simple steps. -1. Create or open the text file at: +1. Create or open the text file at: Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini Linux: ~/.{% include product %}/preferences/toolkit.ini -2. Add the following section: +2. Add the following section: [BrowserIntegration] enabled=0 @@ -24,4 +24,4 @@ See complete instructions on how to configure the browser integration in our [Ad **Alternate method** -If you've taken over your Toolkit pipeline configuration, an alternative would be to remove the [`tk-{% include product %}` engine from your environments](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48) so that it can't load any actions. \ No newline at end of file +If you've taken over your Toolkit pipeline configuration, an alternative would be to remove the [`tk-{% include product %}` engine from your environments](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48) so that it can't load any actions. diff --git a/docs/en/quick-answers/administering/install-desktop-silent.md b/docs/en/quick-answers/administering/install-desktop-silent.md index 70d370a4b..84d4a3b9e 100644 --- a/docs/en/quick-answers/administering/install-desktop-silent.md +++ b/docs/en/quick-answers/administering/install-desktop-silent.md @@ -15,4 +15,4 @@ If you wish to also specify the installation folder, launch it with the `/D` arg `ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` -{% include info title="Note" content="The `/D` argument must be the last argument and no `\"` should be used in the path, even if there are spaces in it." %} \ No newline at end of file +{% include info title="Note" content="The `/D` argument must be the last argument and no `\"` should be used in the path, even if there are spaces in it." %} diff --git a/docs/en/quick-answers/administering/move-configuration-location.md b/docs/en/quick-answers/administering/move-configuration-location.md index e7fdab6b9..7c752d6e6 100644 --- a/docs/en/quick-answers/administering/move-configuration-location.md +++ b/docs/en/quick-answers/administering/move-configuration-location.md @@ -9,9 +9,9 @@ lang: en {% include info title="Note" content="The contents of this doc only apply to [centralized configuration setups](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations). [Distributed configurations](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations) are cached locally to the individual client machines and are managed automatically by Toolkit." %} -The easiest way to move your pipeline configuration to a new location is by using the `tank move_configuration` command. This will take care of moving your files, updating {% include product %}, and updating your config files to point to the new location. +The easiest way to move your pipeline configuration to a new location is by using the `tank move_configuration` command. This will take care of moving your files, updating {% include product %}, and updating your config files to point to the new location. -This command is also useful if you are only moving the location for a single operating system, or were not previously using a certain operating system but would like to add it now. Toolkit will detect what needs to be moved or added and what doesn’t, and will show you what it is about to do to allow you to confirm before progressing. +This command is also useful if you are only moving the location for a single operating system, or were not previously using a certain operating system but would like to add it now. Toolkit will detect what needs to be moved or added and what doesn’t, and will show you what it is about to do to allow you to confirm before progressing. - [Using the tank move_configuration command](#using-the-tank-move_configuration-command) - [Manually moving your pipeline configuration](#manually-moving-your-pipeline-configuration) @@ -24,7 +24,7 @@ This command is also useful if you are only moving the location for a single ope ## Using the tank move_configuration command: - $ cd /sgtk/software/shotgun/scarlet + $ cd /sgtk/software/shotgun/scarlet $ ./tank move_configuration Welcome to the {% include product %} Pipeline Toolkit! @@ -64,11 +64,10 @@ This command is also useful if you are only moving the location for a single ope you want a configuration which only works on windows, do like this: > tank move_configuration "" "p:\configs\my_config" "" - ### Example: - $ cd /sgtk/software/shotgun/scarlet + $ cd /sgtk/software/shotgun/scarlet $ ./tank move_configuration "/mnt/hgfs/sgtk/software/shotgun/scarlet_new" "z:\sgtk\software\shotgun\scarlet_new" "/sgtk/software/shotgun/scarlet_new" Welcome to the {% include product %} Pipeline Toolkit! @@ -133,8 +132,6 @@ This command is also useful if you are only moving the location for a single ope Deleting original configuration files... All done! Your configuration has been successfully moved. - - ## Manually moving your pipeline configuration @@ -142,11 +139,11 @@ This command is also useful if you are only moving the location for a single ope If you've already started moving things manually and are stuck, here's a rundown of what you need to change to ensure Toolkit continues to work with your pipeline configuration now in a new location. -1. Move your pipeline configuration files to their new location +1. Move your pipeline configuration files to their new location $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new -2. Edit your `install_location.yml`, which helps Toolkit find where the pipeline configuration is located: +2. Edit your `install_location.yml`, which helps Toolkit find where the pipeline configuration is located: $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml @@ -163,10 +160,10 @@ If you've already started moving things manually and are stuck, here's a rundown # End of file. -3. Locate the corresponding PipelineConfiguration entity in {% include product %} for this project and modify the Linux Path, Mac Path, and Windows Path field values to match the changes you made above. +3. Locate the corresponding PipelineConfiguration entity in {% include product %} for this project and modify the Linux Path, Mac Path, and Windows Path field values to match the changes you made above. ![Pipeline Configuration locations in ShotGrid.](images/new-pipeline-configuration-locations.png) Now your pipeline configuration should work as expected from the new location. -{% include info title="Note" content="If you're using SG Desktop, you'll need to navigate out of your project and then click on the project icon again in order to reload the pipeline configuration from its new location." %} \ No newline at end of file +{% include info title="Note" content="If you're using SG Desktop, you'll need to navigate out of your project and then click on the project icon again in order to reload the pipeline configuration from its new location." %} diff --git a/docs/en/quick-answers/administering/move-project-directories.md b/docs/en/quick-answers/administering/move-project-directories.md index 348191460..9c60622ce 100644 --- a/docs/en/quick-answers/administering/move-project-directories.md +++ b/docs/en/quick-answers/administering/move-project-directories.md @@ -13,7 +13,7 @@ Sometimes it's necessary to move your project files (scene files, renders, etc.) - Copy (or move) your project files from the old location to the new location. - In {% include product %}, navigate to the **Admin > Site Preferences** page and open the **File Management** section. - ![{% include product %} storage roots section in the site preferences.](./images/shotgun-storage-roots.png) + ![{% include product %} storage roots section in the site preferences.](./images/shotgun-storage-roots.png) - Update the Local File Storage named "primary" with the paths for each platform to the new storage for your project files. If you're not using a specific platform, leave it blank. - Click on the **"Save Changes"** button on the top or bottom of the page. - Update your `config/core/roots.yml` file in your project configuration to match the new path values you just saved in {% include product %}. @@ -26,7 +26,7 @@ With the new storage root definition, the path is now expanded like this: [asset-storage]/assets/Character/betty => /mnt/bigdrive/foo/assets/Character/betty -and we don't need to worry about updating any other publish information in {% include product %} or Toolkit! +and we don't need to worry about updating any other publish information in {% include product %} or Toolkit! {% include warning title="Warning" content="The above steps assume that you are re-pathing the existing storage root. If instead you trash the existing one or create a new one then you will need to re-register all your folders and re-publish your `PublishedFiles` entities." %} @@ -36,4 +36,4 @@ If any of your scene files have references in them that are pointing to the old ## Versions -If you have Version entities in {% include product %} that store information in the Path to Movie or Path to Frames fields that are affected by this change, these will also have to be updated to point to the new location since these fields are string fields that contain an absolute path to the media. \ No newline at end of file +If you have Version entities in {% include product %} that store information in the Path to Movie or Path to Frames fields that are affected by this change, these will also have to be updated to point to the new location since these fields are string fields that contain an absolute path to the media. diff --git a/docs/en/quick-answers/administering/resetup-project-with-sg-desktop.md b/docs/en/quick-answers/administering/resetup-project-with-sg-desktop.md index 8760a803b..1d109daac 100644 --- a/docs/en/quick-answers/administering/resetup-project-with-sg-desktop.md +++ b/docs/en/quick-answers/administering/resetup-project-with-sg-desktop.md @@ -7,20 +7,18 @@ lang: en # How do I re-setup a Toolkit project using {% include product %} Desktop? -If you’ve already set up a Toolkit configuration for a project and need to start fresh, the Advanced Setup Wizard in {% include product %} Desktop will not allow you to re-setup the project unless you’ve removed the previously setup configuration. +If you’ve already set up a Toolkit configuration for a project and need to start fresh, the Advanced Setup Wizard in {% include product %} Desktop will not allow you to re-setup the project unless you’ve removed the previously setup configuration. Here are the steps for manually removing those settings: 1. Delete any `PipelineConfiguration` entities linked to your Project in {% include product %}..

![Access to the PipelineConfiguration entity page](images/pipeline-configuration-entity-page.png)

2. Set the `Tank Name` field on your `Project` entity in {% include product %} to a blank value.

![Clear the project tank name field](images/clear-project-tank-name.png)

3. Remove any corresponding pipeline configuration directories on disk.. -4. In {% include product %} Desktop select the project you wish to set up. *If you were already viewing the project, jump out to the project list view and then back into your project again.* -6. Now you can run the project setup process again. +4. In {% include product %} Desktop select the project you wish to set up. _If you were already viewing the project, jump out to the project list view and then back into your project again._ +5. Now you can run the project setup process again. **Alternate method** -If you are used to using the command line to set up your project with the `tank setup_project` command then you can add a `--force` argument to the end of the command. This allows you to set up a previously setup project without following the manual steps listed above. - - tank setup_project --force" +If you are used to using the command line to set up your project with the `tank setup_project` command then you can add a `--force` argument to the end of the command. This allows you to set up a previously setup project without following the manual steps listed above. - \ No newline at end of file + tank setup_project --force" diff --git a/docs/en/quick-answers/administering/share-assets-between-projects.md b/docs/en/quick-answers/administering/share-assets-between-projects.md index 153c2bf99..857c5b282 100644 --- a/docs/en/quick-answers/administering/share-assets-between-projects.md +++ b/docs/en/quick-answers/administering/share-assets-between-projects.md @@ -18,11 +18,11 @@ caption: Asset Library hierarchy: [project, sg_asset_type, code] entity_type: Asset filters: -- [project, is, {'type': 'Project', 'id': 207}] + - [project, is, { "type": "Project", "id": 207 }] ``` replacing `207` with your library project's ID. When you're working in the shot step environment in Maya now, this will add a new tab that will display all the available publishes in that project. If you want to add this tab to the Loader in other engines (e.g., Nuke, 3dsmax, etc.) you'll have to modify the `tk-multi-loader2` settings for each of those engines as well. If you want to enable this in other environments, you'll have to go through the same steps in the asset step environment, and any other environments you want it to be in. A bit tedious, but it allows some fine-grain control. -With these settings, you should get the Loader app to show a tab that lists publishes from your generic project. \ No newline at end of file +With these settings, you should get the Loader app to show a tab that lists publishes from your generic project. diff --git a/docs/en/quick-answers/administering/uninstalling-an-app-or-engine.md b/docs/en/quick-answers/administering/uninstalling-an-app-or-engine.md index b5c35d0cd..b22e35a3d 100644 --- a/docs/en/quick-answers/administering/uninstalling-an-app-or-engine.md +++ b/docs/en/quick-answers/administering/uninstalling-an-app-or-engine.md @@ -7,11 +7,11 @@ lang: en # How do I uninstall an app or engine? -You can remove an app or engine by editing your configuration's environment YAML files, so that the app or engine is no longer present. +You can remove an app or engine by editing your configuration's environment YAML files, so that the app or engine is no longer present. The environment files allow you to configure apps to only be available in certain contexts or engines instead of removing them entirely. To find out more about editing environment files in general, take a look at [this guide](../../guides/pipeline-integrations/getting-started/editing_app_setting.md). -## Example +## Example Here is an example on how to entirely remove the Publish app from our Default Configuration. Apps are added to engines inside the environment settings, so we must remove the Publish app from all engines that its been added to. @@ -28,7 +28,6 @@ The app is also being included in the Maya engine when in an Asset Step context: As well as a line adding it to the menu favourites:
[`.../env/includes/settings/tk-maya.yml L56`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L56) - Then you have a repeat of these lines under the Shot Step settings:
[`.../env/includes/settings/tk-maya.yml L106`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L106)
[`.../env/includes/settings/tk-maya.yml L115`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L115) @@ -41,10 +40,11 @@ You would then repeat these steps for all the other engine environment yml files All those engines YAML files were including [the `tk-multi-publish2.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-publish2.yml) settings file. Now that you have removed reference to it in your engine YAML files, you can remove this file entirely. -{% include warning title="Important" content="If you remove the `tk-multi-publish2.yml` but still have engine files pointing at it then you will likely get an error along the lines of this: +{% include warning title="Important" content="If you remove the `tk-multi-publish2.yml` but still have engine files pointing at it then you will likely get an error along the lines of this: Error Include resolve error in '/configs/my_project/env/./includes/settings/tk-desktop2.yml': './tk-multi-publish2.yml' resolved to '/configs/my_project/env/./includes/settings/./tk-multi-publish2.yml' which does not exist! + " %} ### Removing the App Location diff --git a/docs/en/quick-answers/administering/update-configuration-core-locations.md b/docs/en/quick-answers/administering/update-configuration-core-locations.md index 1da7a2055..0c190c491 100644 --- a/docs/en/quick-answers/administering/update-configuration-core-locations.md +++ b/docs/en/quick-answers/administering/update-configuration-core-locations.md @@ -9,13 +9,13 @@ lang: en ## How do I update my pipeline configuration to use a local core? -If your pipeline configuration has been setup to use a shared Toolkit core, you can essentially undo that process, or "unshare" your core, installing a copy of the Toolkit Core API inside your pipeline configuration using the tank localize command. We refer to this as "localizing" your core. +If your pipeline configuration has been setup to use a shared Toolkit core, you can essentially undo that process, or "unshare" your core, installing a copy of the Toolkit Core API inside your pipeline configuration using the tank localize command. We refer to this as "localizing" your core. -1. Open a terminal and navigate to the pipeline configuration you wish to install the Toolkit core into. +1. Open a terminal and navigate to the pipeline configuration you wish to install the Toolkit core into. $ cd /sgtk/software/shotgun/scarlet -2. Run the following tank command: +2. Run the following tank command: $ ./tank localize @@ -25,16 +25,15 @@ If your pipeline configuration has been setup to use a shared Toolkit core, you ---------------------------------------------------------------------- Command: Localize ---------------------------------------------------------------------- - + This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline configuration /sgtk/software/shotgun/scarlet. Do you want to proceed [yn] Toolkit will confirm everything before continuing. A copy of the Toolkit core, which your pipeline configuration is currently pointing at, will be copied locally into your pipeline configuration. - -3. Toolkit will now copy all of the apps, engines, and frameworks in use by your pipeline configuration locally into the `install` folder. It will then copy the Toolkit core and update the configuration files in your pipeline configuration to use the newly installed local Toolkit core. +3. Toolkit will now copy all of the apps, engines, and frameworks in use by your pipeline configuration locally into the `install` folder. It will then copy the Toolkit core and update the configuration files in your pipeline configuration to use the newly installed local Toolkit core. Copying 59 apps, engines and frameworks... 1/59: Copying tk-multi-workfiles v0.6.15... @@ -61,15 +60,16 @@ If your pipeline configuration has been setup to use a shared Toolkit core, you {% include info title="Note" content="Your output will vary depending on which apps, engines, and framework versions you have installed." %} ## How do I update my pipeline configuration to use an existing shared core? + If you have an existing shared Toolkit core, you can update any existing "localized" pipeline configurations to use the shared core using the tank command. -1. Open a terminal and navigate to the pipeline configuration you wish to update. +1. Open a terminal and navigate to the pipeline configuration you wish to update. $ cd /sgtk/software/shotgun/scarlet -2. Next you'll run the `tank attach_to_core` command and provide the valid path to the shared core on the current platform. - - $ ./tank attach_to_core /sgtk/software/shotgun/studio +2. Next you'll run the `tank attach_to_core` command and provide the valid path to the shared core on the current platform. + + $ ./tank attach_to_core /sgtk/software/shotgun/studio ... ... ---------------------------------------------------------------------- @@ -78,7 +78,7 @@ If you have an existing shared Toolkit core, you can update any existing "locali After this command has completed, the configuration will not contain an embedded copy of the core but instead it will be picked up from the following locations: - + - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' - Windows: 'z:\sgtk\software\shotgun\studio' - Mac: '/sgtk/software/shotgun/studio' @@ -87,17 +87,17 @@ If you have an existing shared Toolkit core, you can update any existing "locali have no configurations that are using the core embedded in this configuration. Do you want to proceed [yn] - + Toolkit will confirm everything before continuing. Since this shared core was already set up for multiple platforms, it shows you the location for each. - - *If you need to add the location for a new platform, update the config/core/install_location.yml file in the shared core configuration and add the necessary path(s).* -3. Toolkit will now back up the local core API in your pipeline configuration, remove localized core, and add the necessary configurations to point your pipeline configuration at the shared core. + _If you need to add the location for a new platform, update the config/core/install_location.yml file in the shared core configuration and add the necessary path(s)._ + +3. Toolkit will now back up the local core API in your pipeline configuration, remove localized core, and add the necessary configurations to point your pipeline configuration at the shared core. Backing up local core install... Removing core system files from configuration... Creating core proxy... - The Core API was successfully processed. + The Core API was successfully processed. If you decide later you would like to localize the Toolkit core inside your pipeline configuration (i.e., detaching your pipeline configuration from the shared core and using a locally installed version), you can do so using the `tank localize` command. @@ -107,22 +107,22 @@ If you have an existing shared Toolkit core, you can update any existing "locali Currently when you set up a project with SG Desktop, the Toolkit core API is "localized", which means it's installed inside the pipeline configuration. This means every pipeline configuration is a fully self-contained Toolkit installation. You may prefer to have version of the Toolkit Core API that is shared between projects which can minimize maintenance and ensure all of your projects are using the same core code. We sometimes refer to this as a **"shared studio core"**. -Here's how to create a new Toolkit Core API configuration that can be shared between different project pipeline configurations. +Here's how to create a new Toolkit Core API configuration that can be shared between different project pipeline configurations. -1. Open a terminal and navigate to an existing pipeline configuration that contains the Toolkit Core version you wish to share. Once the process is complete, this pipeline configuration will no longer be localized, but will use the newly created shared core. +1. Open a terminal and navigate to an existing pipeline configuration that contains the Toolkit Core version you wish to share. Once the process is complete, this pipeline configuration will no longer be localized, but will use the newly created shared core. $ cd /sgtk/software/shotgun/pied_piper -2. Run the following tank command to copy the Toolkit core to an external location on disk. You need to provide the location this path can be found on all platforms (linux_path, windows_path, mac_path). We recommend using quotes for each path. If you don't use Toolkit on a particular platform, you can simply specify an empty string `""`. +2. Run the following tank command to copy the Toolkit core to an external location on disk. You need to provide the location this path can be found on all platforms (linux_path, windows_path, mac_path). We recommend using quotes for each path. If you don't use Toolkit on a particular platform, you can simply specify an empty string `""`. $ ./tank share_core "/mnt/sgtk/software/shotgun/studio" "Z:\sgtk\software\shotgun\studio" \ "/sgtk/software/shotgun/studio" - -3. You will be shown a summary of the change that is about to be made before Toolkit will proceed. + +3. You will be shown a summary of the change that is about to be made before Toolkit will proceed. ---------------------------------------------------------------------- Command: Share core ---------------------------------------------------------------------- - This will move the embedded core API in the configuration + This will move the embedded core API in the configuration '/sgtk/software/shotgun/pied_piper'. After this command has completed, the configuration will not contain an embedded copy of the core but instead it will be picked up from the following @@ -134,7 +134,7 @@ Here's how to create a new Toolkit Core API configuration that can be shared bet have no configurations that are using the core embedded in this configuration. Do you want to proceed [yn] -4. Toolkit will copy the core installation to your new shared location and will update your existing pipeline configuration to point to the new shared core. +4. Toolkit will copy the core installation to your new shared location and will update your existing pipeline configuration to point to the new shared core. Setting up base structure... Copying configuration files... @@ -143,5 +143,5 @@ Here's how to create a new Toolkit Core API configuration that can be shared bet Removing core system files from configuration... Creating core proxy... The Core API was successfully processed. - -You can now use this new shared core from other pipeline configurations. In order to update a pipeline configuration to use an existing shared core (like the one you just created), you can use the `tank attach_to_core` command. \ No newline at end of file + +You can now use this new shared core from other pipeline configurations. In order to update a pipeline configuration to use an existing shared core (like the one you just created), you can use the `tank attach_to_core` command. diff --git a/docs/en/quick-answers/administering/what-is-path-cache.md b/docs/en/quick-answers/administering/what-is-path-cache.md index 5bf165f18..2809ea712 100644 --- a/docs/en/quick-answers/administering/what-is-path-cache.md +++ b/docs/en/quick-answers/administering/what-is-path-cache.md @@ -7,19 +7,19 @@ lang: en # What is the Path Cache? What are Filesystem Locations? -The path cache is used by Toolkit to track the associations between folders on disk and entities in {% include product %}. -The master cache is stored in {% include product %} using the `FilesystemLocation` entity type. Each user then has their own version -of the path cache [stored locally in the Toolkit cache directory on disk](./where-is-my-cache.md), which is synchronized in the background +The path cache is used by Toolkit to track the associations between folders on disk and entities in {% include product %}. +The master cache is stored in {% include product %} using the `FilesystemLocation` entity type. Each user then has their own version +of the path cache [stored locally in the Toolkit cache directory on disk](./where-is-my-cache.md), which is synchronized in the background whenever applications are launched or folders are created. -Typically, we don't advise modifying the path cache manually. Our internal processes not only sync your local cache +Typically, we don't advise modifying the path cache manually. Our internal processes not only sync your local cache with the FilesystemLocation entities in {% include product %}, but also create event log entries that allow all users' - machines to stay in sync with {% include product %}. +machines to stay in sync with {% include product %}. There are a couple tank commands that can be used to modify the path cache: - - `tank unregister_folders` removes path cache associations. - - `tank synchronize_folders` forces a sync of the local path cache with {% include product %}. - +- `tank unregister_folders` removes path cache associations. +- `tank synchronize_folders` forces a sync of the local path cache with {% include product %}. + Typically you won't need to run either of these commands, but in certain circumstances, they can be useful. - For example, `unregister_folders` should be run before renaming or recreating an entity in your project. \ No newline at end of file +For example, `unregister_folders` should be run before renaming or recreating an entity in your project. diff --git a/docs/en/quick-answers/administering/where-is-my-cache.md b/docs/en/quick-answers/administering/where-is-my-cache.md index e290d9d33..d7b3524a7 100644 --- a/docs/en/quick-answers/administering/where-is-my-cache.md +++ b/docs/en/quick-answers/administering/where-is-my-cache.md @@ -7,10 +7,9 @@ lang: en # Where is my cache? - ## Root Cache Location -Toolkit stores some data in a local cache to prevent unnecessary calls to the {% include product %} server. This includes the [path cache](./what-is-path-cache.md), bundle cache, and thumbnails. While the default location should work for most users, it is configurable using the [cache_location core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py) should you need to change it. +Toolkit stores some data in a local cache to prevent unnecessary calls to the {% include product %} server. This includes the [path cache](./what-is-path-cache.md), bundle cache, and thumbnails. While the default location should work for most users, it is configurable using the [cache_location core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py) should you need to change it. The default cache root location is: @@ -36,7 +35,7 @@ The path cache is located at: **Distributed Configurations** -The bundle cache is a cached collection of all the applications, engines, and frameworks used across all of the +The bundle cache is a cached collection of all the applications, engines, and frameworks used across all of the projects on your {% include product %} site. The bundle cache for distributed configs is stored in the following location: Mac: @@ -54,12 +53,12 @@ Linux: The bundle cache for centralized configs are located inside the centralized configuration. -`...{project configuration}/install/` +`...{project configuration}/install/` If your configuration uses a shared core, then this will be located inside your shared core's install folder instead. ## Thumbnails - + Thumbnails used by Toolkit apps (like the [Loader](https://support.shotgunsoftware.com/entries/95442527)) are stored in the local Toolkit cache. They are stored per Project, Pipeline Configuration, and App (as needed). The structure beneath the root cache directory is as follows: `/pc//thumbs/` diff --git a/docs/en/quick-answers/developing.md b/docs/en/quick-answers/developing.md index 4cd0c978f..8f296d42f 100644 --- a/docs/en/quick-answers/developing.md +++ b/docs/en/quick-answers/developing.md @@ -5,8 +5,7 @@ pagename: quick-answers-developing lang: en --- -Developing -=== +# Developing A collection of quick answers based around development with Toolkit. diff --git a/docs/en/quick-answers/developing/create-publishes-via-api.md b/docs/en/quick-answers/developing/create-publishes-via-api.md index 13e854958..98d364dea 100644 --- a/docs/en/quick-answers/developing/create-publishes-via-api.md +++ b/docs/en/quick-answers/developing/create-publishes-via-api.md @@ -9,11 +9,12 @@ lang: en Our sgtk API provides a [convenience method](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish) for registering `PublishedFiles` entities in ShotGrid. -In addition we also have a Publish app, that comes with [its own API](https://developer.shotgridsoftware.com/tk-multi-publish2/). +In addition we also have a Publish app, that comes with [its own API](https://developer.shotgridsoftware.com/tk-multi-publish2/). The Publish API ultimately uses the core sgtk API method to register the PublishedFile, but it also provides a framework around collection, validation, and publishing, which can be customized In addition to the the Publish API documentation, we have examples of writing your own publish plugins in our [pipeline tutorial](https://developer.shotgridsoftware.com/cb8926fc/?title=Pipeline+Tutorial). ## Using the register_publish() API method + While it is possible to create publish records in {% include product %} using a raw {% include product %} API call, we would strongly recommend using Toolkit's convenience method. All toolkit apps that create publishes are using a API utility method method called [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish). @@ -34,7 +35,7 @@ file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk" # without any version number or extension name = "foreground" -# initialize an API object. If you have used the Toolkit folder creation +# initialize an API object. If you have used the Toolkit folder creation # to create the folders where the published file resides, you can use this path # to construct the API object. Alternatively you can create it from any ShotGrid # entity using the sgtk_from_entity() method. @@ -55,17 +56,17 @@ ctx = tk.context_from_entity("Task", 123) # the third parameter (file.nk) is typically the file name, without a version number. # this makes grouping inside of ShotGrid easy. The last parameter is the version number. sgtk.util.register_publish( - tk, - ctx, - file_to_publish, - name, + tk, + ctx, + file_to_publish, + name, published_file_type="Nuke Script", version_number=34 ) ``` -There are several options you can populate in addition to the basic ones shown above. -For a full list of parameters and what they do, see the [Core API documentation](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish). +There are several options you can populate in addition to the basic ones shown above. +For a full list of parameters and what they do, see the [Core API documentation](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish). {% include info title="Tip" content="If your code is running from within a Toolkit app you can grab the sgtk instance via `self.sgtk` and the context with `self.context`. If it's not in an app, but will be running within software where a Toolkit integration is present, you can access the current context and sgtk instance with the following code: @@ -76,4 +77,5 @@ currentEngine = sgtk.platform.current_engine() tk = currentEngine.sgtk ctx = currentEngine.context ``` -" %} \ No newline at end of file + +" %} diff --git a/docs/en/quick-answers/developing/maya-shelf-app-launcher.md b/docs/en/quick-answers/developing/maya-shelf-app-launcher.md index dfe542a3c..b8bb2a5f2 100644 --- a/docs/en/quick-answers/developing/maya-shelf-app-launcher.md +++ b/docs/en/quick-answers/developing/maya-shelf-app-launcher.md @@ -7,37 +7,37 @@ lang: en # How do I add a shelf button to launch a Toolkit app in Maya? -Adding a shelf button in Maya to launch Toolkit apps in Maya is pretty straightforward. Here is an example of how to add a custom shelf button that opens the [Loader app](https://support.shotgunsoftware.com/entries/95442527). +Adding a shelf button in Maya to launch Toolkit apps in Maya is pretty straightforward. Here is an example of how to add a custom shelf button that opens the [Loader app](https://support.shotgunsoftware.com/entries/95442527). {% include info title="Note" content="This assumes Toolkit is currently enabled in your Maya session. This example code does not bootstrap Toolkit." %} -Open your Script Editor in Maya and paste in the following Python code: +Open your Script Editor in Maya and paste in the following Python code: ```python -import maya.cmds as cmds +import maya.cmds as cmds # Define the name of the app command we want to run. # If your not sure on the actual name you can print the current_engine.commands to get a full list, see below. tk_app = "Publish..." -try: +try: import sgtk - # get the current engine (e.g. tk-maya) - current_engine = sgtk.platform.current_engine() - if not current_engine: - cmds.error("ShotGrid integration is not available!") + # get the current engine (e.g. tk-maya) + current_engine = sgtk.platform.current_engine() + if not current_engine: + cmds.error("ShotGrid integration is not available!") # find the current instance of the app. # You can print current_engine.commands to list all available commands. - command = current_engine.commands.get(tk_app) - if not app: - cmds.error("The Toolkit app '%s' is not available!" % tk_app) + command = current_engine.commands.get(tk_app) + if not app: + cmds.error("The Toolkit app '%s' is not available!" % tk_app) # now we have the command we need to call the registered callback command['callback']() -except Exception, e: +except Exception, e: msg = "Unable to launch Toolkit app '%s': %s" % (tk_app, e) cmds.confirmDialog(title="Toolkit Error", icon="critical", message=msg) cmds.error(msg) diff --git a/docs/en/quick-answers/developing/setting-software-environment-variables.md b/docs/en/quick-answers/developing/setting-software-environment-variables.md index ebc2bf1b8..6ae6e7f13 100644 --- a/docs/en/quick-answers/developing/setting-software-environment-variables.md +++ b/docs/en/quick-answers/developing/setting-software-environment-variables.md @@ -14,7 +14,7 @@ This app is responsible for launching the software and ensuring the {% include p ## before_app_launch.py -The [`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) hook is called just before the software is launched. +The [`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) hook is called just before the software is launched. This provides a perfect opportunity to set any custom environment variables to be passed onto the launched software. Example: @@ -26,23 +26,24 @@ import tank class BeforeAppLaunch(tank.Hook): def execute(self, app_path, app_args, version, engine_name, **kwargs): - + if engine_name == "tk-maya": os.environ["MY_CUSTOM_MAYA_ENV_VAR"] = "Some Maya specific setting" ``` -{% include warning title="Warning" content="Be careful not to completely redefine environment variables set by ShotGrid. +{% include warning title="Warning" content="Be careful not to completely redefine environment variables set by ShotGrid. For example, if you need to add a path to `NUKE_PATH` (for Nuke), or `PYTHONPATH` (for Maya), make sure you append your path to the existing value, rather than replace it. You can use our convenience method for this: ```python tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") ``` + " %} ## Custom wrapper -Some studios have custom wrappers that handle setting the environment variables and launching the software. +Some studios have custom wrappers that handle setting the environment variables and launching the software. If you prefer to use custom code like this to set the environment, you can point the `Software` entity's [path fields](https://support.shotgunsoftware.com/hc/en-us/articles/115000067493-Integrations-Admin-Guide#Example:%20Add%20your%20own%20Software) to your executable wrapper, and `tk-multi-launchapp` will run that instead. -{% include warning title="Warning" content="Take care with this approach to preserve the environment variables set by ShotGrid other wise the integration will not start." %} \ No newline at end of file +{% include warning title="Warning" content="Take care with this approach to preserve the environment variables set by ShotGrid other wise the integration will not start." %} diff --git a/docs/en/quick-answers/developing/sgtk-script-authentication.md b/docs/en/quick-answers/developing/sgtk-script-authentication.md index b22f5ac89..e7531f691 100644 --- a/docs/en/quick-answers/developing/sgtk-script-authentication.md +++ b/docs/en/quick-answers/developing/sgtk-script-authentication.md @@ -8,16 +8,19 @@ lang: en # How do I work with authentication and login credentials in custom scripts? ## Error Message + If you're seeing an error like the one below coming from your script, then it means your script is not authorized to talk to your {% include product %} site. ```text tank.errors.TankError: Missing required script user in config '/path/to/your/project/config/core/shotgun.yml' ``` + If user authentication or script authentication is not provided up front, then Toolkit falls back to checking credentials have been defined in the config's `shotgun.yml` file. Defining credentials in your `shotgun.yml` file is the old method of handling authentication. You should avoid defining them in the `shotgun.yml` file, and instead use one of the approaches detailed below: ## User-facing scripts + If the script is user-facing, you can add this at the beginning, before creating a `Sgtk` instance: ```python @@ -69,7 +72,8 @@ If `QApplication` is available, you'll get something akin to this: ![](./images/sign_in_window.png) {% include info title="Note" content="If you are importing a Toolkit API (`sgtk` package) that isn't associated with a configuration, for example one that you have downloaded to use to bootstrap into a different configuration, then you shouldn't attempt to create a `CoreDefaultsManager`. Instead, create a `ShotgunAuthenticator()` instance without passing a defaults manager. -```python + +````python authenticator = ShotgunAuthenticator() ```" %} @@ -102,7 +106,7 @@ user = authenticator.create_script_user( # Tells Toolkit which user to use for connecting to ShotGrid. sgtk.set_authenticated_user(user) -``` +```` {% include info title="Note" content="As noted at the end of the [user facing scripts](#user-facing-scripts) section, you shouldn't create a defaults manager if the `sgtk` package you imported is standalone/isn't from a configuration. Also you should provide the `host` kwarg to the `create_script_user()` method: @@ -113,4 +117,5 @@ user = authenticator.create_script_user( api_key=\"4e48f....\" ) ``` - " %} + +" %} diff --git a/docs/en/quick-answers/developing/toolkit-core-event-daemon.md b/docs/en/quick-answers/developing/toolkit-core-event-daemon.md index f1ce54219..312b6924f 100644 --- a/docs/en/quick-answers/developing/toolkit-core-event-daemon.md +++ b/docs/en/quick-answers/developing/toolkit-core-event-daemon.md @@ -41,7 +41,7 @@ Example of how to import the correct sgtk core code in a script where a different instance of the module may have already been imported. The original import is unloaded and removed from memory in Python so the new instance of the module can be imported and used successfully. - + Thanks to Benoit Leveau @ Milk VFX for sharing this. """ @@ -60,7 +60,7 @@ def import_sgtk(project): """ # where all our pipeline configurations are located shotgun_base = os.getenv("SHOTGUN_BASE", "/mnt/sgtk/configs") - + # delete existing core modules in the environment for mod in filter(lambda mod: mod.startswith("tank") or mod.startswith("sgtk"), sys.modules): sys.modules.pop(mod) @@ -88,7 +88,7 @@ def import_sgtk(project): # tweak sys.path to add the core API to the beginning so it will be picked up if sys.path[0] != "": sys.path.pop(0) - sys.path = [core_python_path] + sys.path + sys.path = [core_python_path] + sys.path # Remove the TANK_CURRENT_PC env variable so that it can be populated by the new import if "TANK_CURRENT_PC" in os.environ: @@ -101,13 +101,12 @@ def import_sgtk(project): ## Distributed Configs -The above example is assuming you are using a [centralized config](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations), however, things are a bit different if you are using a [distributed config](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations). Importing the sgtk API for a distributed config requires you to use the [bootstrap API](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api). When using the bootstrap API, you usually start by importing a non-project centric sgtk API and then use that to bootstrap an engine for a given project. +The above example is assuming you are using a [centralized config](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations), however, things are a bit different if you are using a [distributed config](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations). Importing the sgtk API for a distributed config requires you to use the [bootstrap API](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api). When using the bootstrap API, you usually start by importing a non-project centric sgtk API and then use that to bootstrap an engine for a given project. The bootstrap process handles the swapping out of the sgtk modules so that at the end of the bootstrap process you have an engine object. If you import sgtk after bootstrap, it will import the relevant sgtk module appropriate to your project. Given the example above of needing to load sgtk for multiple projects, you would need to bootstrap for multiple projects instead. The small catch here is that you can only have one engine running at a time, so you must destroy it before you load another. {% include warning title="Warning" content="Bootstrapping a config can be slow, as the process needs to ensure the config is cached locally and all the dependencies are downloaded. Bootstrapping in an Event Daemon plugin could severely affect performance. One potential approach would be to spawn off separate Python instances for each project bootstrap to communicate and send commands from the plugins. This will avoid needing to re-bootstrap a project each time it is needed." %} - -Here is an example: +Here is an example: ```python # insert the path to the non project centric sgtk API @@ -138,4 +137,4 @@ engine.destroy() ... ``` -{% include info title="Note" content="Centralized configs can be bootstrapped as well, so you don't need a different method if you're using a mix." %} \ No newline at end of file +{% include info title="Note" content="Centralized configs can be bootstrapped as well, so you don't need a different method if you're using a mix." %} diff --git a/docs/en/quick-answers/developing/update-config-with-api.md b/docs/en/quick-answers/developing/update-config-with-api.md index 3f7a3e445..71bc619ab 100644 --- a/docs/en/quick-answers/developing/update-config-with-api.md +++ b/docs/en/quick-answers/developing/update-config-with-api.md @@ -8,6 +8,7 @@ lang: en # How do I update my Toolkit config programmatically with the API? ## Updating apps, engines, and frameworks + If you want to programmatically update all of the engines, apps, and frameworks to their latest versions, you can do so using the following code: ```python @@ -20,9 +21,9 @@ tk = sgtk.sgtk_from_entity('Project', 161) c=tk.get_command("updates") # setup authentication -if hasattr(sgtk, "set_authenticated_user"): +if hasattr(sgtk, "set_authenticated_user"): from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() + user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() sgtk.set_authenticated_user(user) # finally, execute the command @@ -45,9 +46,9 @@ tk = sgtk.sgtk_from_entity('Project', 161) c=tk.get_command("core") # setup authentication -if hasattr(sgtk, "set_authenticated_user"): +if hasattr(sgtk, "set_authenticated_user"): from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() + user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() sgtk.set_authenticated_user(user) # finally, execute the command diff --git a/docs/en/quick-answers/troubleshooting.md b/docs/en/quick-answers/troubleshooting.md index d9652a07a..7c8253ff6 100644 --- a/docs/en/quick-answers/troubleshooting.md +++ b/docs/en/quick-answers/troubleshooting.md @@ -5,8 +5,7 @@ pagename: quick-answers-troubleshooting lang: en --- -Troubleshooting -=== +# Troubleshooting A collection of quick answers aimed at troubleshooting issues. @@ -19,6 +18,7 @@ A collection of quick answers aimed at troubleshooting issues. - [Fixing the SSL: CERTIFICATE_VERIFY_FAILED issues with the Python API](./troubleshooting/fix-ssl-certificate-verify-failed.md) #### Software integrations. + - [Why are my Houdini {% include product %} integrations not starting?](./troubleshooting/houdini-integrations-not-starting.md) - [I've launched Nuke/Maya/etc. from {% include product %} Desktop, but the {% include product %} menu is missing entries](./troubleshooting/menu-entries-missing-in-launched-dcc.md) - [Why does the Nuke integration fail to start when I set the NUKE_PATH environment variable?](./troubleshooting/nuke-path-environment-variable.md) @@ -26,7 +26,7 @@ A collection of quick answers aimed at troubleshooting issues. - [Why does 3ds Max crashes on startup when using {% include product %} Toolkit?](./troubleshooting/3dsmax-crashes-on-startup.md) #### Browser integration + - [I can't use local file linking and launch Toolkit applications from Chrome](./troubleshooting/cant-use-file-linking-toolkit-app-chrome.md) - [I can't use local file linking and launch Toolkit applications from Firefox](./troubleshooting/cant-use-file-linking-toolkit-app-firefox.md) - [{% include product %} Desktop / browser integration fails to launch on Linux](./troubleshooting/browser-integration-fails-linux.md) - diff --git a/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md index 3b8a9e823..9e28fb017 100644 --- a/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ b/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md @@ -16,7 +16,7 @@ When launching 3ds Max from {% include product %} Desktop or the {% include prod An Application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. -This is generally due to a version of `msvcr90.dll` in your path that conflicts with the version of Python that is bundled with 3ds Max. +This is generally due to a version of `msvcr90.dll` in your path that conflicts with the version of Python that is bundled with 3ds Max. ## Solution diff --git a/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md index ae87f1bbb..0171dccab 100644 --- a/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ b/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md @@ -11,6 +11,7 @@ When running the {% include product %} Desktop on Linux for the first time, you If you're still stuck, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. ###Contents + - [OPENSSL_1.0.1_EC or HTTPSConnection related issues](#openssl_101_ec-or-httpsconnection-related-issues) - [libffi.so.5 related issues](#libffiso5-related-issues) - [Certificate validation failed related issues](#certificate-validation-failed-related-issues) @@ -57,7 +58,7 @@ If you've installed libffi and it still doesn't work, try creating the following sudo ln -s /usr/lib64/libffi.so.6.0.1 /usr/lib64/libffi.so.5 ``` -Some users have reported success with the above. Others still have issues. The latest version of {% include product %} Desktop added some additional dependencies with the web socket server which we're currently looking into. +Some users have reported success with the above. Others still have issues. The latest version of {% include product %} Desktop added some additional dependencies with the web socket server which we're currently looking into. ## Certificate validation failed related issues @@ -65,11 +66,11 @@ Some users have reported success with the above. Others still have issues. The l ``` Browser Integration failed to start. It will not be available if you continue. -Error: There was a problem validating if the certificate was installed. +Error: There was a problem validating if the certificate was installed. certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database. ``` -**Solution** +**Solution** If you have Google Chrome installed on your computer, launch it and then relaunch the {% include product %} Desktop. If you still have the issue, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. @@ -91,6 +92,7 @@ If the search did come up empty, then type the following: $ mkdir --parents ~/.pki/nssdb $ certutil -N -d "sql:$HOME/.pki/nssdb" ``` + Do not enter any password. Launching the {% include product %} Desktop should now work correctly. @@ -108,4 +110,4 @@ You can try modifying your environment with this command to keep that from happe ``` unset QT_PLUGIN_PATH -``` \ No newline at end of file +``` diff --git a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md b/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md index f07979d0a..0018e8e4b 100644 --- a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ b/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md @@ -1,7 +1,7 @@ --- layout: default title: I can't use local file linking and launch Toolkit applications from Chrome -pagename: cant-use-file-linking-toolkit-app-chrome +pagename: cant-use-file-linking-toolkit-app-chrome lang: en --- @@ -36,7 +36,7 @@ You can verify that Chrome accepts the certificate by browsing to https://localh ![Autobahn Python message](images/autobahn-python.png) -On the other hand, if you are greeted by one of these messages, it means there was a problem with the certificate registration process: +On the other hand, if you are greeted by one of these messages, it means there was a problem with the certificate registration process: ![Your connection is not private message](images/your-connection-is-not-private-chrome.png) @@ -44,7 +44,7 @@ On the other hand, if you are greeted by one of these messages, it means there w ## How to quickly fix certificate issues -The easiest way to circumvent those issues is to click **ADVANCED** and **Proceed to localhost (unsafe)**. This will let Chrome know that you are accepting the certificate nonetheless and will allow the {% include product %} website to communicate with {% include product %} Desktop. +The easiest way to circumvent those issues is to click **ADVANCED** and **Proceed to localhost (unsafe)**. This will let Chrome know that you are accepting the certificate nonetheless and will allow the {% include product %} website to communicate with {% include product %} Desktop. {% include info title="Note" content="This only enables the connection between your web browser and ShotGrid Desktop. The trust setting lets traffic flow between these two applications, **it does not imply trust of any other server on the internet**. Unfortunately, this process needs to be repeated on every single computer with the problem. If this doesn't solve the issue or you feel it would be too complicated to deploy to all your users, we recommend you take a look at the following steps." %} @@ -54,7 +54,7 @@ The easiest way to circumvent those issues is to click **ADVANCED** and **Procee Chrome regularly upgrades its security around self-signed certificates and our browser integration is sometimes broken by these updates. Unfortunately, these sorts of issues can only be remediated by regenerating the certificate’s certificate_path. -To regenerate the certificates, you can pick the **Regenerate Certificates** option under the **Advanced** section of {% include product %} Desktop's user menu. (If you don't see this option, please make sure you update the `tk-desktop` engine to unlock it.) +To regenerate the certificates, you can pick the **Regenerate Certificates** option under the **Advanced** section of {% include product %} Desktop's user menu. (If you don't see this option, please make sure you update the `tk-desktop` engine to unlock it.) After confirming that you want to regenerate the certificates, a series of dialogs will pop-up just like the first time you've generated the certificates. On Windows and macOS, you will be prompted to update the Windows Certificate Store or the macOS keychain twice: once to remove the old certificate and once to register the new one. On Linux, the registration is done silently. Once this is done, let {% include product %} Desktop restart. @@ -98,4 +98,4 @@ If you still encounter issues using the browser integration after these changes, ## Troubleshooting on other OSes -If you have issues with the {% include product %} Desktop integration on other OSes, please contact our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) so that we can assist you and update this article. \ No newline at end of file +If you have issues with the {% include product %} Desktop integration on other OSes, please contact our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) so that we can assist you and update this article. diff --git a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md b/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md index c96fa322a..bc098d72e 100644 --- a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ b/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md @@ -1,7 +1,7 @@ --- layout: default title: I can't use local file linking and launch Toolkit applications from Firefox -pagename: cant-use-file-linking-toolkit-app-firefox +pagename: cant-use-file-linking-toolkit-app-firefox lang: en --- @@ -58,4 +58,4 @@ In the **Servers** section, click on any item and start typing `localhost` or si At this point, you need to follow the step documented above to add an exception. -If this is not the screen you are getting, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. \ No newline at end of file +If this is not the screen you are getting, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. diff --git a/docs/en/quick-answers/troubleshooting/context-missing-task-step.md b/docs/en/quick-answers/troubleshooting/context-missing-task-step.md index d794cf64d..a9ec07ab0 100644 --- a/docs/en/quick-answers/troubleshooting/context-missing-task-step.md +++ b/docs/en/quick-answers/troubleshooting/context-missing-task-step.md @@ -17,10 +17,10 @@ Take the default schema structure below; `Asset` and `Step` folders will be regi ![Default Asset schema](./images/asset-schema.png) -If you generated a file path using a template like this: +If you generated a file path using a template like this: assets/{sg_asset_type}/{Asset}/{Step}/work/maya/{task_name}_{name}.v{version}.{maya_extension}` - + And then attempted to figure out the context from that generated path, it would only be able to establish the `Asset` and the `Step` and **not** the `Task` despite the task's name being in the file path. **Solution** @@ -32,4 +32,4 @@ However, there are situations where it may be important to be able to get the co - Using our automatic context switching feature; this is a feature that allows Toolkit to detect when you open a file in a software's native open dialog (rather than via the Workfiles app) and switch the current context accordingly. - Using the API in a standalone process where it needs to figure out the context for a given file. -The solution in these situations would be to either introduce a `Task` folder into your schema or not use automatic context switching, or in the case of the API script, ensure that your process already has the required context information up front, to save it from having to do this lookup. \ No newline at end of file +The solution in these situations would be to either introduce a `Task` folder into your schema or not use automatic context switching, or in the case of the API script, ensure that your process already has the required context information up front, to save it from having to do this lookup. diff --git a/docs/en/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md b/docs/en/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md index 7579c7279..226dac6b9 100644 --- a/docs/en/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ b/docs/en/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md @@ -9,7 +9,7 @@ lang: en The Python API relies on a list of certificates that is bundled with the API and on your machine in order to connect to the various webservices {% include product %} uses. Unfortunately, new certificate authorities can be released and those might not be bundled with the Python API or OS. -While our Python API comes with a very recent copy of the certificates, as of February 21st 2019, there’s a bug that prevents the API from using those certificates for Amazon S3 uploads, even if you are using the latest version of the API. For background please see [this AWS blog post](https://aws.amazon.com/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/). To remediate the situation temporarily, you can try the following solutions. +While our Python API comes with a very recent copy of the certificates, as of February 21st 2019, there’s a bug that prevents the API from using those certificates for Amazon S3 uploads, even if you are using the latest version of the API. For background please see [this AWS blog post](https://aws.amazon.com/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/). To remediate the situation temporarily, you can try the following solutions. {% include info title="Note" content="These are temporary workarounds and we're looking into a long-term solution." %} @@ -17,16 +17,16 @@ While our Python API comes with a very recent copy of the certificates, as of Fe Add the required CA certificate to the Windows Certificate Store. Windows 7 users may have to first [upgrade to PowerShell 3.0](https://docs.microsoft.com/en-us/office365/enterprise/powershell/manage-office-365-with-office-365-powershell) in order to use this solution, or alternatively use [certutil](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil) to add the [required certificate](https://www.amazontrust.com/repository/SFSRootCAG2.cer). -1. Start an elevated PowerShell by right-clicking **Start** and then left-clicking **Windows PowerShell (Admin)** +1. Start an elevated PowerShell by right-clicking **Start** and then left-clicking **Windows PowerShell (Admin)** -2. Paste the following commands into the PowerShell window and then press Return to execute: +2. Paste the following commands into the PowerShell window and then press Return to execute: $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" $cert_file = New-TemporaryFile Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root -3. If details of the added certificate bearing thumbprint `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` are displayed then the operation is complete and PowerShell can be closed. +3. If details of the added certificate bearing thumbprint `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` are displayed then the operation is complete and PowerShell can be closed. ## Alternative Solutions @@ -37,13 +37,13 @@ Add the required CA certificate to the Windows Certificate Store. Windows 7 user 2. a. Set `{% include product %}_API_CACERTS` to `/path/to/shotgun_api3/lib/httplib2/cacerts.txt` or - + b. Update your scripts and set the `ca_certs=/path/to/shotgun_api3/lib/httplib2/cacerts.txt` when instantiating the `Shotgun` object. ### If you are using Toolkit 1. Upgrade to the latest version of the Toolkit API via the `tank core` command or by updating -the `core/core_api.yml` file of your pipeline configuration, depending on how you deploy Toolkit. + the `core/core_api.yml` file of your pipeline configuration, depending on how you deploy Toolkit. 2. Download an up-to-date list of certificates at [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem). @@ -51,6 +51,6 @@ the `core/core_api.yml` file of your pipeline configuration, depending on how yo ### If you can’t update the Python API or Toolkit -1. Download an up-to-date list of certificates at [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem). +1. Download an up-to-date list of certificates at [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem). 2. Set the `SSL_CERT_FILE` environment variable to the location where you saved this file. diff --git a/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md index 24276cb63..359f608c0 100644 --- a/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ b/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md @@ -7,13 +7,12 @@ lang: en # Why are my Houdini {% include product %} integrations not starting? - This covers the most common reason we’ve seen for the {% include product %} integrations not starting in Houdini. In this case, Houdini launches without error from {% include product %} Desktop, your {% include product %} website, or the tank command. However, once Houdini is launched, the {% include product %} menu or shelf does not appear. Often the reason for this is that the `HOUDINI_PATH` environment variable has been overridden, and {% include product %} relies on that - for passing the startup script path. +for passing the startup script path. When Houdini is launched from {% include product %}, the launch app logic adds the {% include product %} bootstrap script path to the `HOUDINI_PATH` environment variable. However, the problem can arise when Houdini has a @@ -34,10 +33,10 @@ Then you should add `$HOUDINI_PATH;` to the end of the path defined in the file This will allow the {% include product %} set value to persist when Houdini launches. -{% include warning title="Caution" content="On Windows we've seen `$HOUDINI_PATH` causing issues. It sometimes tries to bootstrap the Shotgun integration multiple times generating an error like this: +{% include warning title="Caution" content="On Windows we've seen `$HOUDINI_PATH` causing issues. It sometimes tries to bootstrap the Shotgun integration multiple times generating an error like this: Toolkit bootstrap is missing a required variable : TANK_CONTEXT If you get this you should try using `%HOUDINI_PATH%` instead." %} -If this does not fix your problem please reach out to our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) and they will help you diagnose the issue. \ No newline at end of file +If this does not fix your problem please reach out to our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) and they will help you diagnose the issue. diff --git a/docs/en/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md b/docs/en/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md index 417733d21..1d3f6fdc4 100644 --- a/docs/en/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ b/docs/en/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md @@ -25,4 +25,4 @@ You can use the [{% include product %} Workfiles app](https://support.shotgunsof ![{% include product %} Menu project actions](images/shotgun-menu-asset-step-actions.png) If you believe you're in the correct environment and the actions are still not showing, then the next step is to check the relevant [log](where-are-my-log-files.md), and see if there are any errors. -You may need to [enable debug logging](turn-debug-logging-on.md) to get the full output. \ No newline at end of file +You may need to [enable debug logging](turn-debug-logging-on.md) to get the full output. diff --git a/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md index f8fba09c1..7014a94e6 100644 --- a/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ b/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md @@ -8,7 +8,7 @@ lang: en # Why does the Nuke integration fail to start when I set the NUKE_PATH environment variable? Our integrations set the `NUKE_PATH` environment variable when launching Nuke so that our bootstrap script runs during the Nuke startup process. -It's the [`tk-multi-launchapp`](https://support.shotgunsoftware.com/hc/en-us/articles/219032968-Application-Launcher#Set%20Environment%20Variables%20and%20Automate%20Behavior%20at%20Launch) that specifically defines the `NUKE_PATH` prior to it executing the [`before_launch_app.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) hook. +It's the [`tk-multi-launchapp`](https://support.shotgunsoftware.com/hc/en-us/articles/219032968-Application-Launcher#Set%20Environment%20Variables%20and%20Automate%20Behavior%20at%20Launch) that specifically defines the `NUKE_PATH` prior to it executing the [`before_launch_app.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) hook. If you're setting this environment variable during the launch process using something like `os.environ['NUKE_PATH'] = "/my/custom/path"`, then the {% include product %} integration won't ever be started, because you'll have removed our startup script path from the environment variable. @@ -18,4 +18,4 @@ Use this function in `tank.util` to append or prepend your path to the `NUKE_PAT tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") ``` -Alternately, you can prepend your path using `prepend_path_to_env_var()`. \ No newline at end of file +Alternately, you can prepend your path using `prepend_path_to_env_var()`. diff --git a/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md index 909a7dbf5..9b5895e74 100644 --- a/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md +++ b/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md @@ -21,32 +21,33 @@ Here is a quick list of things to check which we cover in further detail below: Below is a list of good practices and common slow down scenarios. This is not an exhaustive list and we will try to add to it as and when we see new patterns. If this guide doesn’t help you get to the bottom of the problem you’re facing, then please feel free to submit a [support ticket](https://support.shotgunsoftware.com/hc/en-us/requests/new) in and our team will be happy to assist you further. Table of Contents: + - [General good practice](#general-good-practice) - - [Cache Location](#cache-location) - - [Keeping up to date](#keeping-up-to-date) - - [Centralized configs vs distributed configs](#centralized-configs-vs-distributed-configs) - - [Debugging](#debugging) + - [Cache Location](#cache-location) + - [Keeping up to date](#keeping-up-to-date) + - [Centralized configs vs distributed configs](#centralized-configs-vs-distributed-configs) + - [Debugging](#debugging) - [Launching software is slow](#launching-software-is-slow) - - [Diagnosis](#diagnosis) - - [Is the issue pre or post launch?](#is-the-issue-pre-or-post-launch) - - [Checking the logs](#checking-the-logs) - - [Common causes of slow software launches](#common-causes-of-slow-software-launches) + - [Diagnosis](#diagnosis) + - [Is the issue pre or post launch?](#is-the-issue-pre-or-post-launch) + - [Checking the logs](#checking-the-logs) + - [Common causes of slow software launches](#common-causes-of-slow-software-launches) - [File Open, File Save, or the Loader app is slow?](#file-open-file-save-or-the-loader-app-is-slow) - [Folder Creation is slow](#folder-creation-is-slow) - - [Tackling I/O usage](#tackling-io-usage) - - [Registering folders](#registering-folders) + - [Tackling I/O usage](#tackling-io-usage) + - [Registering folders](#registering-folders) ## General good practice ### Cache Location -{% include product %} Toolkit [caches data to the user’s home directory](../administering/where-is-my-cache.md). This cache can include a number of different SQLite databases as well as cached apps and configs. Normally the user’s home directory is stored on the machine’s local hard drives, but it's fairly common for studios to redirect them to network storage. Doing this can impact performance—most notably to the SQLite databases, which are used for browser integration and folder creation/lookup among other things. +{% include product %} Toolkit [caches data to the user’s home directory](../administering/where-is-my-cache.md). This cache can include a number of different SQLite databases as well as cached apps and configs. Normally the user’s home directory is stored on the machine’s local hard drives, but it's fairly common for studios to redirect them to network storage. Doing this can impact performance—most notably to the SQLite databases, which are used for browser integration and folder creation/lookup among other things. If your user directories are stored on a server location, we recommend repathing the {% include product %} Toolkit cache using the [`{% include product %}_HOME` environment variable](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables). The `{% include product %}_HOME` environment variable is used to set the location where Toolkit caches various data, such as the bundle cache, thumbnails, SQLite databases used for fast lookup of data and other things. ### Debugging -You can enable debug logging in {% include product %} Toolkit, so that you can get more verbose output from the various processes. This can be incredibly useful when trying to diagnose issues, however, the debug setting is not designed to be enabled during normal everyday use. The increase in logging output can significantly impact performance. +You can enable debug logging in {% include product %} Toolkit, so that you can get more verbose output from the various processes. This can be incredibly useful when trying to diagnose issues, however, the debug setting is not designed to be enabled during normal everyday use. The increase in logging output can significantly impact performance. When encountering performance issues, especially ones that are localized to specific machines or users, first check that [debug logging](./turn-debug-logging-on.md) isn’t enabled. @@ -56,12 +57,12 @@ If you’re encountering performance issues, check that your core, apps, engines ### Centralized configs vs distributed configs -There are two different ways of setting up advanced Toolkit configurations: [centralized and distributed](https://developer.shotgridsoftware.com/tk-core/initializing.html#the-toolkit-startup). The key differences are that the centralized configs typically live on your studio’s network storage where they can be accessed by all users, and the distributed configs are usually stored in the cloud and get cached locally per user. +There are two different ways of setting up advanced Toolkit configurations: [centralized and distributed](https://developer.shotgridsoftware.com/tk-core/initializing.html#the-toolkit-startup). The key differences are that the centralized configs typically live on your studio’s network storage where they can be accessed by all users, and the distributed configs are usually stored in the cloud and get cached locally per user. Whilst the differences between these two methods extend beyond performance, they can both bring performance benefits and disadvantages. Here is a table showing the pros and cons, purely from a performance standpoint. | | Advantages | Disadvantages | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Centralized Configs** | - Once the initial setup process is complete, it will have everything it needs already downloaded and ready to go for all users. | - Centralized configs are usually kept on network storage; therefore the performance can be degraded during normal Toolkit usage. | | | - Future updates only need to be downloaded once to the centralized location. | - Toolkit configurations contain many small files, and handling metadata operations on lots of small files can be a lot slower and harder for servers. Also, heavy read operations both through the use of Toolkit or through general use of the server may impact Toolkit’s performance by not being able to read the configuration as quickly. | | **Distributed Configs** | - The cached apps, engines, frameworks, and cores are stored in such a way that they can be shared with other locally cached configs. This means subsequent loading of different projects will likely be faster to cache if they share the same dependencies. | - Distributed configs need to be cached locally per user. Usually, this involves downloading the config and all the required apps, engines, frameworks, and core. | @@ -79,6 +80,7 @@ When using distributed configs, a user will only have to download something if i You may notice that when launching software such as Maya, Nuke, Houdini, or others, they take longer to start up than without {% include product %}. It is normal that they may take a short while longer than without {% include product %}, but sometimes these times can increase to unacceptable levels, (normally depending on the software we would expect them to startup in under a minute). This can be one of the more tricky areas to diagnose as there are many processes involved in launching the software. ### Diagnosis + The first thing you should do is figure out under what conditions this is happening. 1. **Is it slow when launching without {% include product %}?** - This might seem obvious, but it’s worth checking that the issue only occurs when launching with {% include product %}. @@ -86,7 +88,7 @@ The first thing you should do is figure out under what conditions this is happen 3. **Does it happen on all projects?** - If it doesn't, then it’s likely to be something specific to the way the configuration is setup. 4. **Does this happen at specific points in the day?** - If so, then this could point to high demand on the infrastructure, such as server usage being higher at certain times of the day. 5. **Does this happen for all Machines/OSs used?** - If a particular machine is slow, then it's possible there is something outside of Toolkit that is causing the issues. However, clearing the Toolkit cache on that machine is a good first step. Different OSs come with different versions of software and Python packages, and sometimes performance issues can crop up on specific builds. Specifically we have seen issues with performance on Windows using Samba (SMB) shares. There isn’t a fix for this as such, but it’s good to be aware of if you are using it. -If you believe the issue is limited to a certain OS, Python package, or software version then please let our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) know so they can investigate further. + If you believe the issue is limited to a certain OS, Python package, or software version then please let our [support team](https://support.shotgunsoftware.com/hc/en-us/requests/new) know so they can investigate further. 6. **Does this happen for all users?** - Similar to above, it’s possible that as a different user on the same machine, the issue might disappear. In this situation, start by clearing the user’s local {% include product %} cache. Also, make sure debug logging is not enabled for normal production use, as this will impact performance. 7. **Is the slow launching exclusive to a specific app/software or are all apps/software launched abnormally slow?** - If specific software is slow to launch, this might mean that there is a configuration issue. It may be worth checking to see if you have any custom hooks set up to run either before or after launch that might be impacting performance. Common hooks used in start up are [`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/hooks/before_app_launch.py), [`app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/hooks/app_launch.py), and the core hook [`engine_init.py`](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/engine_init.py). There can also be occurrences from time to time where a newer version of software is released and our integrations are suddenly much slower to start. In this situation, you should reach out to [support](https://support.shotgunsoftware.com/hc/en-us/requests/new) to check if they are aware of this, and if there is any known fix. Please provide the version number of the software your using (including patches/service pack if applicable) and the version of the tk engine and core you’re running. @@ -116,8 +118,7 @@ For example, here are a few lines where a 5 second jump in time occurs during fo 2019-05-01 11:27:56,835 [82801 DEBUG sgtk.core.path_cache] Path cache syncing not necessary - local folders already up to date! 2019-05-01 11:28:01,847 [82801 INFO sgtk.env.asset.tk-shotgun.tk-shotgun-folders] 1 Asset processed - Processed 66 folders on disk. - -Once you locate the jumps in time, the log line will hopefully give you some idea about what was happening at that stage, such as if it occurred during folder creation, or if it was trying to get a {% include product %} connection. +Once you locate the jumps in time, the log line will hopefully give you some idea about what was happening at that stage, such as if it occurred during folder creation, or if it was trying to get a {% include product %} connection. Reading logs can be tricky though and the contents may not always make sense, so again you can reach out to [support](https://support.shotgunsoftware.com/hc/en-us/requests/new) to assist you with this bit. @@ -125,29 +126,30 @@ Reading logs can be tricky though and the contents may not always make sense, so |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Slow internet speed** | Pretty much every aspect of Toolkit usage where it needs to connect and communicate with the {% include product %} site will be affected by slow internet speeds. In this case, typically, you will see speed issues in other situations in addition to launching software. However, if the connection is unstable rather than slow, you’re more likely to run into performance issues during launch (as there is quite a bit of {% include product %} communication going on throughout the process). | -| **Slow server access** | This can certainly affect launch times. If you're using a [centralized config](#centralized-configs-vs-distributed-configs), (i.e., your config is stored on a central server) there can be a lot of I/O as it reads your configuration files. On top of that, launching the software will trigger folder creation for the context it’s being launched in. This means that it will be checking to see if your folders are created, and creating them if not. | -| **Folder creation** | As mentioned above, folder creation can be a common cause of slowdown. [See the folder creation performance troubleshooting below for more details.](#folder-creation-is-slow) | +| **Slow server access** | This can certainly affect launch times. If you're using a [centralized config](#centralized-configs-vs-distributed-configs), (i.e., your config is stored on a central server) there can be a lot of I/O as it reads your configuration files. On top of that, launching the software will trigger folder creation for the context it’s being launched in. This means that it will be checking to see if your folders are created, and creating them if not. | +| **Folder creation** | As mentioned above, folder creation can be a common cause of slowdown. [See the folder creation performance troubleshooting below for more details.](#folder-creation-is-slow) | ## File Open, File Save, or the Loader app is slow? The first thing to do is to narrow down to certain aspects of where the app in question is slow. - **Is it slow to launch the app or navigate through the tabs?** - - It's possible that the app is currently configured to show too much information. The My Tasks tab and others can be configured to filter out unneeded entities from the list. For example, you could filter out tasks that are of a certain status, such as On Hold (`hld`) or Final (`fin`). Not only does this offer performance benefits, but it also lets the artist see only the information that is important to them. Both the [Loader app](https://support.shotgunsoftware.com/hc/en-us/articles/219033078-Load-Published-Files-#The%20tree%20view) and the Workfiles app can be filtered, however, Workfiles doesn’t currently have a specific doc section on filtering but filters can be applied as part of the [hierarchy settings](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files#Step%20filtering). - - The hierarchy on the File Open app can also be configured to defer the loading of the [sub items until it is expanded](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files#Deferred%20queries). This is now the default configuration setup, however, if you have older configs you may wish to transition over to using this. - - Check that debug logging isn’t enabled. This can cause a lot of additional I/O and therefore slow things down; these apps do contain a lot of debugging output. + - It's possible that the app is currently configured to show too much information. The My Tasks tab and others can be configured to filter out unneeded entities from the list. For example, you could filter out tasks that are of a certain status, such as On Hold (`hld`) or Final (`fin`). Not only does this offer performance benefits, but it also lets the artist see only the information that is important to them. Both the [Loader app](https://support.shotgunsoftware.com/hc/en-us/articles/219033078-Load-Published-Files-#The%20tree%20view) and the Workfiles app can be filtered, however, Workfiles doesn’t currently have a specific doc section on filtering but filters can be applied as part of the [hierarchy settings](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files#Step%20filtering). + - The hierarchy on the File Open app can also be configured to defer the loading of the [sub items until it is expanded](https://support.shotgunsoftware.com/hc/en-us/articles/219033088-Your-Work-Files#Deferred%20queries). This is now the default configuration setup, however, if you have older configs you may wish to transition over to using this. + - Check that debug logging isn’t enabled. This can cause a lot of additional I/O and therefore slow things down; these apps do contain a lot of debugging output. - **Is it slow opening, saving, or creating a new file?** - - Check to see if you’ve taken over scene operations or actions hooks, and see if there is any custom behavior around these functions that might slow things down. - - When creating or saving a file, Workfiles will ensure that all the required folders for the context are created. Folder creation can be a common point at which performance [issues](#folder-creation-is-slow) can occur. + - Check to see if you’ve taken over scene operations or actions hooks, and see if there is any custom behavior around these functions that might slow things down. + - When creating or saving a file, Workfiles will ensure that all the required folders for the context are created. Folder creation can be a common point at which performance [issues](#folder-creation-is-slow) can occur. ## Folder Creation is slow Folder creation has many parts to it, which can contribute to the process being slow when an issue arises. Folder creation will: + - Synchronise your local path cache. - Read your config’s schema. -- Generate a list of paths that should be created given a certain context. +- Generate a list of paths that should be created given a certain context. - Check the paths against path registries stored locally. - Attempt to register the new paths both on your SG site and locally, if not already registered. - Check to see if the folders actually exist on disk regardless of if they have already been registered, and create the folders if they are not. @@ -158,7 +160,7 @@ In short, folder creation will have potentially significant I/O usage on the dis It may be possible that your storage is slow or inefficient at handling many small read-write operations, so anything that can be done to improve the infrastructure will help speed up the folder creation operations. However, there are steps that can be taken on the Toolkit configuration side to try and reduce the strain as much as possible. -The first thing is to limit the folders that are created to the ones that are important to that context and thus the environment you would be working in. For example, if you're working on a Task on a Shot in Maya, then you would ideally only want it to check and create the folders for your specific Shot and software. +The first thing is to limit the folders that are created to the ones that are important to that context and thus the environment you would be working in. For example, if you're working on a Task on a Shot in Maya, then you would ideally only want it to check and create the folders for your specific Shot and software. Basically, create the minimum required folders that allow you to save and publish your work. @@ -169,13 +171,14 @@ Setting it to true will cause the folder to be created at the same time as it’ **Example** -If you had a Sequence/Shot folder hierarchy and you set your Shot folder to create with its parent Sequence, then whenever a Sequence folder gets created, it will check for all associated Shots and create folders for them. +If you had a Sequence/Shot folder hierarchy and you set your Shot folder to create with its parent Sequence, then whenever a Sequence folder gets created, it will check for all associated Shots and create folders for them. -Whilst this might be convenient in some situations, it is causing a lot more folders to be checked and potentially created at once. In this scenario, if you were to create a new file in workfiles on a Task on a Shot, it would trigger the creation of the Shot’s parent Sequence folder and that in turn would create all children Shot folders, not just the Shot you’re working on. +Whilst this might be convenient in some situations, it is causing a lot more folders to be checked and potentially created at once. In this scenario, if you were to create a new file in workfiles on a Task on a Shot, it would trigger the creation of the Shot’s parent Sequence folder and that in turn would create all children Shot folders, not just the Shot you’re working on. {% include info title="Note" content="The setting for step schema folders defaults to true." %} #### Defer creation + The [`defer_creation` setting](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Workspaces%20and%20Deferred%20Folder%20Creation) allows you to further refine when folders should be created by restricting the creation of folders to only happen when a certain engine is running. You can even use custom names, and then trigger the creation of them using the [sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure). **Example** @@ -196,22 +199,23 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") **Extended Example** -Taking the idea of deferring folders further, if you have a number of non-dynamic folders at the root of your project, these typically only ever need to be created once. For example, the [“editorial” and “reference”](https://github.com/shotgunsoftware/tk-config-default2/tree/master/core/schema/project) folders in the root of the Default Configuration’s schema would only likely need creating once at the start of the project, but by default, the folder creation will check for their existence every time. +Taking the idea of deferring folders further, if you have a number of non-dynamic folders at the root of your project, these typically only ever need to be created once. For example, the [“editorial” and “reference”](https://github.com/shotgunsoftware/tk-config-default2/tree/master/core/schema/project) folders in the root of the Default Configuration’s schema would only likely need creating once at the start of the project, but by default, the folder creation will check for their existence every time. -To limit this, you could create [yml files](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Static%20folders) for them, where you can set a defer keyword so that they only get created when the folder creation is run in a certain engine or passed the keyword. You could set the defer keyword to `tk-shell` and then run the folder creation via the tank command like `tank folders`. +To limit this, you could create [yml files](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference#Static%20folders) for them, where you can set a defer keyword so that they only get created when the folder creation is run in a certain engine or passed the keyword. You could set the defer keyword to `tk-shell` and then run the folder creation via the tank command like `tank folders`. This would mean that these folders would only get created if the folder creation was run via the tank command, which a Toolkit administrator could do when setting up the project for the first time. Alternatively, you could write a small script that ran the folder creation with a custom keyword a bit like the example above. ### Registering folders -During the folder creation process the folders are [registered](../administering/what-is-path-cache.md) so that the paths can be used to look up the context in the future. [As mentioned before](#folder-creation-is-slow), part of this process requires talking to the {% include product %} site, which is the central location where the registries are stored. However, these registries are also cached locally to enable faster lookup by the tools. +During the folder creation process the folders are [registered](../administering/what-is-path-cache.md) so that the paths can be used to look up the context in the future. [As mentioned before](#folder-creation-is-slow), part of this process requires talking to the {% include product %} site, which is the central location where the registries are stored. However, these registries are also cached locally to enable faster lookup by the tools. #### SQLite database The local [path cache](../administering/what-is-path-cache.md) uses an SQLite database to store the data. The performance of reading and writing to the database can be severely impacted if the database is stored on network storage. #### Initial synchronization -There can be situations where a local cache needs to be generated from scratch for a project (such as when a new user joins an already in progress project) that has a lot of folders registered. This process can take noticeably longer, but the good news here is that this should only happen once for that project. + +There can be situations where a local cache needs to be generated from scratch for a project (such as when a new user joins an already in progress project) that has a lot of folders registered. This process can take noticeably longer, but the good news here is that this should only happen once for that project. Subsequent syncs will only pull the differences between the local cache and the site registry. If the user infrequently works on the project and a lot of folders get created between sessions, then they may experience a noticeable wait whilst everything caches. @@ -219,8 +223,8 @@ One method we’ve seen people employ here is to transfer a reasonably up to dat {% include info title="Note" content="This approach is only necessary in situations where there is an extremely large amount of folders being created on a project." %} -This update process can be achieved automatically through the use of the core hook cache_location.py. This hook can be used to set the location of the cache, but rather than changing the location, you can use this hook to copy a version of the path_cache.db file from a central location to the user’s default location, thus cutting out the need for it to do an expensive full sync. +This update process can be achieved automatically through the use of the core hook cache_location.py. This hook can be used to set the location of the cache, but rather than changing the location, you can use this hook to copy a version of the path_cache.db file from a central location to the user’s default location, thus cutting out the need for it to do an expensive full sync. -The centrally stored path cache could then be updated periodically by either manually copying from someone's cache, or perhaps having a script transfer it on a regular basis. +The centrally stored path cache could then be updated periodically by either manually copying from someone's cache, or perhaps having a script transfer it on a regular basis. -{% include warning title="WARNING" content="The cache_location.py hook can be used to set the location of the cache, but setting this to point to a single location for all users should be avoided, as this can lead to database locks when one or more processes try to edit the database at the same time." %} \ No newline at end of file +{% include warning title="WARNING" content="The cache_location.py hook can be used to set the location of the cache, but setting this to point to a single location for all users should be avoided, as this can lead to database locks when one or more processes try to edit the database at the same time." %} diff --git a/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md index e557d5126..02f64dc3e 100644 --- a/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md +++ b/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md @@ -7,7 +7,7 @@ lang: en # How do I turn on debug logging? -Sometimes you want to see more logging data than Toolkit tools output by default. You can enable **debug logging** to get more verbose log output, and there are a few methods to do so. +Sometimes you want to see more logging data than Toolkit tools output by default. You can enable **debug logging** to get more verbose log output, and there are a few methods to do so. {% include info title="Note" content="Not sure where to find your log files? Take a look at our [Where are my log files?](./where-are-my-log-files.md) doc." %} @@ -22,6 +22,7 @@ It should also be noted that when this is toggled on, apps launched from {% incl ## Setting up an environment variable ### Permanently turning on debug logging + First, you will need to set up a new environment variable: `TK_DEBUG=1` {% include info title="Note" content="We suggest discussing how to set up environment variables with a technical expert at your studio since instructions are platform specific. However, the example below includes setting up an environment variable on a Windows 7 machine." %} @@ -32,7 +33,6 @@ First, you will need to set up a new environment variable: `TK_DEBUG=1` ![Setting Windows environment variables](images/windows-setting-environment-variable.png) - - **Variable name**: `TK_DEBUG` - **Variable value**: `1` - Select OK @@ -63,8 +63,6 @@ Then, launch the Desktop through your terminal. {% include info title="Note" content="Once you close ShotGrid Desktop and your terminal, debug logging is no longer turned on." %} - - ## Advanced configuration debug logging options If you are in an advanced setup, there are a few more options for you. This functionality is only available if you have taken control over a Toolkit configuration. @@ -80,7 +78,7 @@ As an example, to turn on debugging output for the Nuke engine in the shot step Edit `config/env/shot_step.yml`. ```yaml -engines: +engines: ... ... tk-nuke: @@ -95,7 +93,7 @@ engines: ... ``` -Save the file and relaunch Nuke in the shot step environment. You will now see the debug output in the script editor window. +Save the file and relaunch Nuke in the shot step environment. You will now see the debug output in the script editor window. {% include info title="Note" content="If debug logging is enabled via any one of the ShotGrid Desktop checkbox, environment variable, or engine configuration setting, debug logging will be output. Additionally, each of these three is modified independently of the others: the checkbox value a persistent app setting, totally independent of the engine setting or environment variable. This means that while the Desktop checkbox may be unchecked, debug logging might still be enabled by way of one of the other methods." %} @@ -129,7 +127,7 @@ If you’re running the tank command and want to see debug output in your termin /sgtk/software/shotgun/scarlet DEBUG [10:11:38 620.270967484]: Location of this script (__file__): /sgtk/software/shotgun/scarlet/install/core/scripts/tank_cmd.py - + Welcome to the Shotgun Pipeline Toolkit! For documentation, see https://toolkit.shotgunsoftware.com Starting Toolkit for your current path '/sgtk/software/shotgun/scarlet' @@ -144,27 +142,26 @@ If you’re running the tank command and want to see debug output in your termin DEBUG [10:11:39 129.276990891]: No need to load up the engine for this command. - Running command core... - - + + ---------------------------------------------------------------------- Command: Core ---------------------------------------------------------------------- - - + + Welcome to the {% include product %} Pipeline Toolkit update checker! This script will check if the Toolkit Core API installed in /sgtk/software/shotgun/scarlet is up to date. - - + + Please note that when you upgrade the core API, you typically affect more than one project. If you want to test a Core API upgrade in isolation prior to rolling it out to multiple projects, we recommend creating a special *localized* pipeline configuration. For more information about this, please see the Toolkit documentation. - - + + You are currently running version v0.15.18 of the Shotgun Pipeline Toolkit No need to update the Toolkit Core API at this time! DEBUG [10:11:39 981.74405098]: Exiting with exit code None - diff --git a/docs/en/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/en/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md index b23a3dfcb..e3c08239e 100644 --- a/docs/en/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ b/docs/en/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md @@ -28,4 +28,4 @@ To get rid of the older extension, you can remove it from the Adobe install loca If you quit Photoshop and remove that directory, then you should have just the one extension on relaunch. -{% include info title="Note" content="If you have the Photoshop integration in multiple environments or multiple configurations and there is a mixture of old and new plugins, then the old plugin will return when somebody launches Photoshop with that older integration. It is good to update Photoshop across the board so that you only need to do this cleanup once." %} \ No newline at end of file +{% include info title="Note" content="If you have the Photoshop integration in multiple environments or multiple configurations and there is a mixture of old and new plugins, then the old plugin will return when somebody launches Photoshop with that older integration. It is good to update Photoshop across the board so that you only need to do this cleanup once." %} diff --git a/docs/en/quick-answers/workflow.md b/docs/en/quick-answers/workflow.md index ae4ae5382..f948affd7 100644 --- a/docs/en/quick-answers/workflow.md +++ b/docs/en/quick-answers/workflow.md @@ -5,10 +5,8 @@ pagename: quick-answers-workflow lang: en --- -Workflow -===== +# Workflow A collection of related quick answers based around Toolkit workflows. - [What's the difference between a Version and a PublishedFile?](./workflow/version-publishedfile-difference.md) - diff --git a/docs/en/quick-answers/workflow/version-publishedfile-difference.md b/docs/en/quick-answers/workflow/version-publishedfile-difference.md index c89074fa2..63e304b06 100644 --- a/docs/en/quick-answers/workflow/version-publishedfile-difference.md +++ b/docs/en/quick-answers/workflow/version-publishedfile-difference.md @@ -14,4 +14,3 @@ A **"Version"** (the `Version` entity in ShotGrid) is the visual representation The ultimate idea is that when you publish, you may generate a collection of files — sometimes different file formats but effectively the same content (a Maya file, an obj, an alembic, etc.) — and these are all different representations of the same thing. They are then associated with a single review `Version` for previewing the publish data and taking notes. This idea becomes a little bit redundant when the published data is an image sequence. Effectively the image sequence is both the thing you want to review and the thing that will be sent down the pipe. In this case you may have to "double up" and create both a publish and a `Version`. This allows you to load the published data (e.g. via the Loader app) that represents the `Version`. - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md index 2028a3db6..1d560e90b 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md @@ -40,7 +40,6 @@ Once the two steps above have been carried out, you have the basic structure to - Quicktimes are generated and uploaded to {% include product %} for review. - ## Sending batch renders to Review Once you have published a Flame batch file for a Shot, you can launch Flare directly from that Shot in order to open up the batch file with render and output settings pre-populated. In order to render out a new version, simply click the Render Range Button. @@ -68,11 +67,12 @@ Below you'll find more advanced details relating to configuration and customizat ## Using export presets -The exporter uses a concept of *Export Presets* in its configuration. When you launch the Export UI inside of Flame you see a dropdown with the available export presets. Each preset is a configuration option which allows you to configure how files are written to disk and uploaded to {% include product %}. High level settings such as file locations on disk are controlled directly in the environment configuration, making it easy to adjust the default configuration options to work with your pipeline. +The exporter uses a concept of _Export Presets_ in its configuration. When you launch the Export UI inside of Flame you see a dropdown with the available export presets. Each preset is a configuration option which allows you to configure how files are written to disk and uploaded to {% include product %}. High level settings such as file locations on disk are controlled directly in the environment configuration, making it easy to adjust the default configuration options to work with your pipeline. More advanced settings and control over the actual export xml content that is being passed to flame in order to control Flame, is handled by a hook where the behaviour is defined for each preset. In the hook, you have complete control over how media is being generated by the exporter. ## Bypassing {% include product %} server side transcoding + By default, Quicktimes are uploaded to {% include product %} review by setting the `Version.sg_uploaded_movie` field. This in turn will trigger {% include product %} server side transcoding; the uploaded quicktime will be further converted to `mp4` and `webm` representations tailored for playback in browsers and mobile. Sometimes, it can be beneficial to bypass this server side transcoding. This is possible by setting the `bypass_shotgun_transcoding` configuration setting. When this is set to true, the integration will upload directly to the `Version.sg_uploaded_movie_mp4` field in {% include product %}, thereby bypassing the server side transcoding. In this case, no `webm` version is generated, so review playback will not be possible in Firefox. For more information, see https://support.shotgunsoftware.com/entries/26303513-Transcoding @@ -141,4 +141,3 @@ For the local {% include product %} transcode, we recommend basing your settings def get_local_quicktime_ffmpeg_encode_parameters(self): return "-vcodec libx264 -pix_fmt yuv420p -g 30 -b:v 6000k -vprofile high -bf 0" ``` - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md index 7e7ddbd8b..f5d4bce0e 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md @@ -43,4 +43,3 @@ The Flame Review app can be customized in a couple of different ways: - You can customize which tasks the app should automatically add to new items created in {% include product %}. This is done via a task template setting and allows you to standardize the structure that's created. - Via a hook, you get complete control over the xml preset that the app uses to generate a quicktime out of Flame. - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md index 6a4ee6c6b..9443b8157 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md @@ -9,7 +9,7 @@ lang: en ### Introduction -This app adds {% include product %} awareness to Hiero's export dialog for sequences. +This app adds {% include product %} awareness to Hiero's export dialog for sequences. #### Overview Video & Demo @@ -38,10 +38,12 @@ At the top of the dialog, there is extra UI that helps control how shots get cre ![shotgun_ui](../images/apps/hiero-shotgun_ui.png) ### Tags -By adjusting the dropdowns you can map various Hiero tags into {% include product %} shot statuses and shot task templates. Thus via Hiero's tagging workflow you can set a {% include product %} shot to being in progress or setup the tasks for the Shot for a green screen, cg extra, or whatever makes sense for your configuration. This UI is populated via a hook and is easy to configure for extra functionality. + +By adjusting the dropdowns you can map various Hiero tags into {% include product %} shot statuses and shot task templates. Thus via Hiero's tagging workflow you can set a {% include product %} shot to being in progress or setup the tasks for the Shot for a green screen, cg extra, or whatever makes sense for your configuration. This UI is populated via a hook and is easy to configure for extra functionality. ### Collating -There are also options to control collating track items together that mirror Hiero's built in logic. If you have multiple items that make up a shot (either overlapping, on different tracks or with the same shot name on multiple tracks) then you should turn these options on. This will cause the {% include product %} Toolkit Shot updater to treat the matching collated items as a single Shot. + +There are also options to control collating track items together that mirror Hiero's built in logic. If you have multiple items that make up a shot (either overlapping, on different tracks or with the same shot name on multiple tracks) then you should turn these options on. This will cause the {% include product %} Toolkit Shot updater to treat the matching collated items as a single Shot. ![collate](../images/apps/hiero-collate.png) @@ -50,21 +52,23 @@ For example, assume we have two track items representing shots 010 and 020. 010 ![collate_ext](../images/apps/hiero-collate_ex.png) ### Paths -Below the {% include product %} UI is the standard paths dialog. There are three items that are added to Shots via Hiero by default... a default Nuke script, a default Nuke write location, and a default location for a plate transcode. The locations of these items are determined by the app configuration and can make full use of the templating system: + +Below the {% include product %} UI is the standard paths dialog. There are three items that are added to Shots via Hiero by default... a default Nuke script, a default Nuke write location, and a default location for a plate transcode. The locations of these items are determined by the app configuration and can make full use of the templating system: ![paths](../images/apps/hiero-paths.png) This app adds a `{tk_version}` token to Hiero which will be replaced by the version string, correctly formatted for {% include product %} Toolkit. ### Custom Template Fields -Any tokens you define in the `custom_template_fields` setting that are resolved by the `resolve_custom_strings` hook will automatically be added to Hiero's list of valid replacement tokens and will be considered valid replacements in your Toolkit template paths. + +Any tokens you define in the `custom_template_fields` setting that are resolved by the `resolve_custom_strings` hook will automatically be added to Hiero's list of valid replacement tokens and will be considered valid replacements in your Toolkit template paths. For example, in your Toolkit `templates.yml` file, say you define a key with the following: ``` - resolution: - type: str - filter_by: alphanumeric + resolution: + type: str + filter_by: alphanumeric ``` In your `project.yml` settings for `tk-hiero-export` you have: @@ -117,21 +121,21 @@ class HieroResolveCustomStrings(Hook): return translated_value - # Handle the {resolution_fs} token - def _clip_resolution_string(self, task): - """ returns sequence resolution or task format override""" - width = "" + # Handle the {resolution_fs} token + def _clip_resolution_string(self, task): + """ returns sequence resolution or task format override""" + width = "" height = "" sequence_format = task._sequence.format() - width = sequence_format.width() + width = sequence_format.width() height = sequence_format.height() - if "reformat" in task._preset.properties(): - task_reformat_settings = task._preset.properties()["reformat"] - if task_reformat_settings['to_type'] != "None": - width = task_reformat_settings['width'] + if "reformat" in task._preset.properties(): + task_reformat_settings = task._preset.properties()["reformat"] + if task_reformat_settings['to_type'] != "None": + width = task_reformat_settings['width'] height = task_reformat_settings['height'] return "%sx%s" % (width, height) @@ -143,14 +147,16 @@ You can now not only use the `resolution` token in Hiero but it will validate ag hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov" ``` - ### {% include product %} Tasks -There are two new task types registered. + +There are two new task types registered. ##### {% include product %} Transcode Images -This is a subclass of the standard Hiero transcoding task, which will register the results of the transcode as a Publish in {% include product %}. Optionally a Version will also be created in {% include product %}. If a Version is created, then a Quicktime will also be created and uploaded as Screening Room media. + +This is a subclass of the standard Hiero transcoding task, which will register the results of the transcode as a Publish in {% include product %}. Optionally a Version will also be created in {% include product %}. If a Version is created, then a Quicktime will also be created and uploaded as Screening Room media. ##### {% include product %} Nuke Project File + This is a subclass of the standard Hiero Nuke script exporter, which registers the resulting Nuke script as a PublishedFile in {% include product %} linked to the Shot. The settings allow you to specify which Toolkit-enabled WriteNodes to include in the file on export. ![nuke_project_file_settings](../images/apps/hiero-nuke_project_file_settings.png) @@ -168,30 +174,32 @@ Each shot will run a {% include product %}ShotUpdater tasks that is responsible ![finder](../images/apps/hiero-finder.png) ### Sequence and Shot updates in {% include product %} + The name of the Hiero sequence will be used for the sequence name, and the shots will have their cut info filled in (Cut Order, Head In, Cut In, Cut Out, -Tail Out, Cut Duration, and Working Duration). In addition if poster frames +Tail Out, Cut Duration, and Working Duration). In addition if poster frames were selected for the sequence or the items that make up the shot, they will be uploaded as the thumbnails for the shots. If your workflow uses an entity other than **Sequence** as the shot parent (like **Episode**), then you can override the `get_shot_parent` method in the `hook_get_shot` hook. The default implementation creates (if necessary) and -returns a **Sequence**. +returns a **Sequence**. ### Cut Schema Support + If your {% include product %} site supports the Cuts schema (v7.0.0 or later), then this app will automatically generate a **Cut** with corresponding **CutItems** in -{% include product %}. The **Cut** entity corresponds to the Hiero sequence and the +{% include product %}. The **Cut** entity corresponds to the Hiero sequence and the **CutItems** correspond to the items in the sequence. The **Cut** will be linked to the parent entity (**Sequence** by default) as returned by the `get_shot_parent` method in the `hook_get_shot` hook. The **CutItems** will be associated with a **Shot** entity and linked to the reviewable **Version** created during the export. After exporting, the **Cut** will be playable in the -**Media** tab in {% include product %} and in **RV**. +**Media** tab in {% include product %} and in **RV**. All of the meta data associated with the **Cut** and **CutItem** entities is -inferred from Hiero except the *Cut Type* field which can be specified in the +inferred from Hiero except the _Cut Type_ field which can be specified in the export UI. ![cut_type](../images/apps/hiero-cut_type.png) @@ -200,9 +208,10 @@ The value here will show up in the **Type** field of the **Cut**. It should be noted that the Cut schema is not supported when either of the Collate options are selected, and creation of **Cut** and **CutItem** entries -will be skipped. +will be skipped. In addition, the Cut schema does not handle retimed clips. A debug warning will be logged when exporting retimed clips. ### Alternate Shot Hierarchies -For studios that don't work in the standard Sequence > Shot hierarchy, but perhaps use Episodes and/or Scenes, there is a hook `hiero_get_shot` that allows you to configure the app to work with whatever Shot hierarchy is in use at your studio. + +For studios that don't work in the standard Sequence > Shot hierarchy, but perhaps use Episodes and/or Scenes, there is a hook `hiero_get_shot` that allows you to configure the app to work with whatever Shot hierarchy is in use at your studio. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md index 5f996200a..e7b86a803 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md @@ -7,20 +7,27 @@ lang: en # Hiero/Nuke Studio Open in {% include product %} -This app adds a context menu to the Hiero spreadsheet and timeline that allows you to +This app adds a context menu to the Hiero spreadsheet and timeline that allows you to open a given track item in {% include product %} if there is a Shot for that item. ![open_in_shotgun](../images/apps/hiero-open_in_shotgun.png) -You typically configure this app by adding it to the time line and spreadsheet menus in +You typically configure this app by adding it to the time line and spreadsheet menus in Hiero by adding the following to the {% include product %} Engine for Nuke configuration: ```yaml - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} +timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } +spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } ``` - - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md index 0bd39a42a..5a72d4cb0 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md @@ -7,7 +7,7 @@ lang: en # Houdini Alembic Node -The Houdini Alembic Node App provides a custom {% include product %} Alembic Output node which makes it easy to standardise the location where alembic files are output. It can be configured for each environment. +The Houdini Alembic Node App provides a custom {% include product %} Alembic Output node which makes it easy to standardise the location where alembic files are output. It can be configured for each environment. ## General Use @@ -15,11 +15,11 @@ In order to use the {% include product %} Alembic Output, save your script as a ![Alembic Node](../images/apps/houdini-alembicnode-create_node.png) -The node can be configured with multiple output profiles, each using a different template path for where the alembic cache should be written to disk. +The node can be configured with multiple output profiles, each using a different template path for where the alembic cache should be written to disk. ![Alembic Node](../images/apps/houdini-alembicnode-output_profile.png) -Rather than entering a path by hand, you just specify which output profile to use and the node will compute the rest of the path automatically. You can see the computed path in the UI. +Rather than entering a path by hand, you just specify which output profile to use and the node will compute the rest of the path automatically. You can see the computed path in the UI. ![Alembic Node](../images/apps/houdini-alembicnode-computed_path.png) @@ -50,4 +50,4 @@ The Toolkit alembic node provides the ability to specify multiple output profile output_cache_template: houdini_shot_local_alembic_cache -You can use the output profiles to alter the look of the node via the `color` field, and you can adjust individual parms on the underlying Alembic node by supplying key/value pairs matching those parms in the `settings` field. Finally, the `output_cache_template` field drives the output path for the alembic cache written to disk. +You can use the output profiles to alter the look of the node via the `color` field, and you can adjust individual parms on the underlying Alembic node by supplying key/value pairs matching those parms in the `settings` field. Finally, the `output_cache_template` field drives the output path for the alembic cache written to disk. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md index 72984f85e..d6272836a 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md @@ -7,7 +7,7 @@ lang: en # Houdini Mantra Node -The Houdini Mantra Node App provides a custom {% include product %} Mantra Output node which makes it easy to standardise the location where render files are output. It can be configured for each environment. +The Houdini Mantra Node App provides a custom {% include product %} Mantra Output node which makes it easy to standardise the location where render files are output. It can be configured for each environment. ## General Use @@ -19,7 +19,7 @@ The node can be configured with multiple output profiles, each using a different ![Mantra Node](../images/apps/houdini-mantranode-output_profile.png) -Rather than entering a path by hand, you just specify which configuration to use and the node will compute the rest of the path automatically. You can see the computed path in the UI. +Rather than entering a path by hand, you just specify which configuration to use and the node will compute the rest of the path automatically. You can see the computed path in the UI. ![Mantra Node](../images/apps/houdini-mantranode-computed_path.png) @@ -56,4 +56,4 @@ The Toolkit mantra node provides the ability to specify multiple output profiles output_extra_plane_template: houdini_shot_local_extra_plane -You can use the output profiles to alter the look of the node via the `color` field, and you can adjust individual parms on the underlying Alembic node by supplying key/value pairs matching those parms in the `settings` field. Finally, the `output_*_template` fields drive the output paths for the files written to disk by the mantra renderer. \ No newline at end of file +You can use the output profiles to alter the look of the node via the `color` field, and you can adjust individual parms on the underlying Alembic node by supplying key/value pairs matching those parms in the `settings` field. Finally, the `output_*_template` fields drive the output paths for the files written to disk by the mantra renderer. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md index 5288ae69c..a67b38a9b 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md @@ -6,4 +6,3 @@ lang: en --- # Mari Project Manager - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md index 916c5b92c..d8ba602ab 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md @@ -12,8 +12,8 @@ This app gives a graphical breakdown of the current work area and all the apps r ![screenshot](../images/apps/multi-about-menu.png) ## Reload all apps -There is a handy button this app that reloads the entire environment. This is useful if you are doing development and have made some code changes you want to try out! No need to restart Maya or Nuke, just hit the reload button! +There is a handy button this app that reloads the entire environment. This is useful if you are doing development and have made some code changes you want to try out! No need to restart Maya or Nuke, just hit the reload button! In addition to the reload feature, this apps shows a breakdown of your current work area and all the apps that are currently loaded. @@ -31,9 +31,8 @@ This shows the current Shot or Asset, the current Task etc. If you double click A view of all the currently running apps, along with their version and description. Double clicking an app will launch the documentation page for that app. - ## Current Environment ![screenshot](../images/apps/multi-about-about3.png) -A view of the currently loaded environment file and engine. This can be useful for debugging purposes 🎀 \ No newline at end of file +A view of the currently loaded environment file and engine. This can be useful for debugging purposes 🎀 diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md index 093ad4a8c..972bd2fdc 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md @@ -102,10 +102,10 @@ Here is an example of what a dictionary in the return data typically looks like: 'version': 1, 'width': 2048}, 'template': , - + 'node_name': 'Read2', 'node_type': 'Read', - + 'sg_data': {'code': 'aaa_00010_test_output_v001.%04d.dpx', 'entity': {'id': 1660, 'name': 'aaa_00010', 'type': 'Shot'}, 'id': 1424, @@ -128,7 +128,6 @@ for item in breakdown_items: path = item["template"].apply_fields(item["fields"]) ``` - ### Computing the highest version for an item ``` @@ -139,19 +138,15 @@ In order to figure out the highest version for an item, use the `compute_highest This will perform a scan on disk to determine the highest version. The method returns the highest version number found on disk. See the usage example below for more details. - ### Updating a scene item ``` app_object.update_item(node_type, node_name, template, fields) ``` -In order to update an item, you can use the `update_item(node_type, node_name, template, fields)` method. The `template` and `fields` parameters represent a path that should be updated to. The `node_name` and `node_type` parameters are used to identify which node in the scene should be modified. Typically, these values are grabbed from the output of the `analyze_scene()` method. +In order to update an item, you can use the `update_item(node_type, node_name, template, fields)` method. The `template` and `fields` parameters represent a path that should be updated to. The `node_name` and `node_type` parameters are used to identify which node in the scene should be modified. Typically, these values are grabbed from the output of the `analyze_scene()` method. This is similar to running the update in the breakdown UI. The actual update call will be dispatched to a hook which handles the DCC specific logic. See the usage example below for more details. - - - ### Breakdown API example @@ -171,16 +166,16 @@ for item in items: # get the latest version on disk latest_version = breakdown_app.compute_highest_version(item["template"], item["fields"]) - + # if our current version is out of date, update it! current_version = item["fields"]["version"] if latest_version > current_version: - + # make a fields dictionary representing the latest version latest_fields = copy.copy(item["fields"]) latest_fields["version"] = latest_version - + # request that the breakdown updates to the latest version breakdown_app.update_item(item["node_type"], item["node_name"], item["template"], latest_fields) -``` \ No newline at end of file +``` diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md index d25b840af..4d8f3c0b0 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md @@ -7,15 +7,15 @@ lang: en # Demo -The Demo App provides live demonstrations of {% include product %}'s native developer platform components including the {% include product %} Utilities framework, the Qt Widgets frameworks and Toolkit core. +The Demo App provides live demonstrations of {% include product %}'s native developer platform components including the {% include product %} Utilities framework, the Qt Widgets frameworks and Toolkit core. ![Demo App](../images/apps/multi-demo-demo_app.png) -Each demo displayed in the app includes a working, interactive UI that shows how to use one or more components of the native platform. In addition, the code that is running is readily available to copy and paste into your own app. +Each demo displayed in the app includes a working, interactive UI that shows how to use one or more components of the native platform. In addition, the code that is running is readily available to copy and paste into your own app. ![Demo Basics](../images/apps/multi-demo-help_demo.png) -The app is simple to use. Just select a demo from the list on the left and then interact with the components on the right. Some demos are as simple as displaying a single widget from the Qt Widgets framework. Other demos provide examples of how {% include product %} platform components are commonly wired up for use in production apps. +The app is simple to use. Just select a demo from the list on the left and then interact with the components on the right. Some demos are as simple as displaying a single widget from the Qt Widgets framework. Other demos provide examples of how {% include product %} platform components are commonly wired up for use in production apps. ![Example Demo](../images/apps/multi-demo-delegate_demo.png) diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md index 5b4727e56..dbfdd55d6 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md @@ -19,20 +19,20 @@ For example, this screenshot comes from a site who's configuration uses this app Currently supported applications and engines are: -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame +- 3DSMax +- Hiero +- Maya +- MotionBuilder +- Nuke +- Photoshop +- Mari +- Houdini +- Softimage +- Flame ### Use Command Line Arguments at Launch -Many applications have command line options that can be called to choose a different edition of the application (ex. Nuke vs. NukeX) or to specify other various usage aspects. The launcher app has an 'args' setting for each OS that can be configured for this purpose. For example if you put '--nukex' there, it will add that to the command line launch and NukeX will run instead of regular Nuke: +Many applications have command line options that can be called to choose a different edition of the application (ex. Nuke vs. NukeX) or to specify other various usage aspects. The launcher app has an 'args' setting for each OS that can be configured for this purpose. For example if you put '--nukex' there, it will add that to the command line launch and NukeX will run instead of regular Nuke: ---FOLD--- Launch NukeX Example @@ -43,15 +43,16 @@ launch_nuke: extra: {} hook_app_launch: default hook_before_app_launch: default - linux_args: '--nukex' - linux_path: '@nuke_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.15} - mac_args: '--nukex' - mac_path: '@nuke_mac' + linux_args: "--nukex" + linux_path: "@nuke_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.2.15 } + mac_args: "--nukex" + mac_path: "@nuke_mac" menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' + windows_args: "--nukex" + windows_path: "@nuke_windows" ``` + ---FOLD--- ### Set Environment Variables and Automate Behavior at Launch @@ -66,7 +67,7 @@ Set Environment Variables Example ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # Example to show how to set env vars on Maya launch @@ -79,6 +80,7 @@ def execute(self, **kwargs): # with $PYTHONPATH if already defined in your pipeline os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" ``` + ---FOLD--- You can also use the 'before_app_launch' to automate other behavior, including {% include product %} updates. For example, you can configure the launch app to update the Task status (in this case, to "in progress") each time it's run (as long as the launch is from a Task, of course), as follows: @@ -89,7 +91,7 @@ Automate Task Status Update Example ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # If there is a Task in the context, set its status to 'ip' @@ -101,13 +103,14 @@ def execute(self, **kwargs): } self.parent.shotgun.update("Task", task_id, data) ``` + ---FOLD--- As you can imagine, there are many possibilities here, and the launch app aims to provide the flexibility your pipeline needs. ### Launching Applications that do not have an Engine Yet -You can also use the launch app to start up applications that do not have a Toolkit engine yet. In this case, folders will be created on disk for the shot, task or asset you are launching from and the application will be launched, but no code will run after application startup and no {% include product %} menu will appear inside the application. This means that you can launch applications that are not yet supported by Toolkit from within {% include product %}. +You can also use the launch app to start up applications that do not have a Toolkit engine yet. In this case, folders will be created on disk for the shot, task or asset you are launching from and the application will be launched, but no code will run after application startup and no {% include product %} menu will appear inside the application. This means that you can launch applications that are not yet supported by Toolkit from within {% include product %}. In order to do this, configure the app with paths to the application you wish to launch, but leave the engine option as an empty string. @@ -121,37 +124,37 @@ When 3DSMax is booting, the following will happen: 1. 3DSMax will run `init_tank.ms` upon starting 1. `init_tank.ms` makes sure a Python interpreter is available and runs `tank_startup.py` -1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. +1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. 1. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. ### Maya -This app registers a `userSetup.py` auto start script with Maya which Maya will call as part of its boot process. +This app registers a `userSetup.py` auto start script with Maya which Maya will call as part of its boot process. When Maya is booting, the following will happen: 1. Maya starts execution of the `userSetup.py` startup script -1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. +1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. 1. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. ### MotionBuilder -This app registers a `init_tank.py` auto start script with MotionBuilder which MotionBuilder will call as part of its boot process. +This app registers a `init_tank.py` auto start script with MotionBuilder which MotionBuilder will call as part of its boot process. When MotionBuilder is booting, the following will happen: 1. MotionBuilder starts execution of the `init_tank.py` startup script -1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. +1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. 1. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. ### Nuke -This app registers a `menu.py` auto start script with Nuke which Nuke will call as part of its boot process. +This app registers a `menu.py` auto start script with Nuke which Nuke will call as part of its boot process. When Nuke is booting, the following will happen: 1. Nuke starts execution of the `menu.py` startup script -1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. +1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. 1. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. ### Photoshop @@ -161,7 +164,7 @@ This app will use the Adobe Extension Manager to install or make sure the Tank p When Photoshop is booting, the following will happen: 1. Photoshop will start the execution of the Tank Plugin -1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. +1. Using the {% include product %} Toolkit Context API, the entity id passed from {% include product %} is converted into a Toolkit Context. 1. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. #### Extra configs @@ -173,4 +176,4 @@ mac_python_path: "/usr/bin/python" windows_python_path: "C:\\Python27\\python.exe" mac_extension_manager_path: "/Applications/Adobe Extension Manager CS6/Adobe Extension Manager CS6.app" windows_extension_manager_path: "C:\\Program Files (x86)\\Adobe\\Adobe Extension Manager CS6\\XManCommand.exe" -``` \ No newline at end of file +``` diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md index 71cfb16d3..9992197a7 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md @@ -55,11 +55,11 @@ filters: ### Filtering publishes -It is possible to apply a {% include product %} filter to the publish query that the loader carries out when it loads publish data from {% include product %}. This is controlled via the `publish_filters` parameter and can be used for example to hide publishes that have not been approved or where their associated review version has not been approved. +It is possible to apply a {% include product %} filter to the publish query that the loader carries out when it loads publish data from {% include product %}. This is controlled via the `publish_filters` parameter and can be used for example to hide publishes that have not been approved or where their associated review version has not been approved. ### Help, no actions are showing up! -The loader comes with a number of different *actions* for each engine. For example, in the case of Nuke, there are two actions: "import script" and "create read node". Actions are defined in hooks, meaning that you can modify their behaviour or add additional actions if you wanted to. Then, in the configuration for the loader, you can bind these actions to certain *publish types* you have. Binding an action to a publish type basically means that the action will appear on the actions menu for all items of that type inside the loader. +The loader comes with a number of different _actions_ for each engine. For example, in the case of Nuke, there are two actions: "import script" and "create read node". Actions are defined in hooks, meaning that you can modify their behaviour or add additional actions if you wanted to. Then, in the configuration for the loader, you can bind these actions to certain _publish types_ you have. Binding an action to a publish type basically means that the action will appear on the actions menu for all items of that type inside the loader. As an example, by default, the mappings for Nuke are set up like this: @@ -75,7 +75,7 @@ If you are finding that no action menus are showing up, it may be because you ha For each application that the loader supports, there is an actions hook which implements the actions that are supported for that application. For example, with something like Maya, the default hook will implement the `reference`, `import` and `texture_node` actions, each carrying out specific Maya commands to bring content into the current Maya scene. As with all hooks, it is perfectly possible to override and change these, and it is also possible to create a hook that derives from the built in hook, making it easy to add additional actions to a built-in hook without having to duplicate lots of code. -Once you have defined a list of actions in your actions hook, you can then bind these actions to Publish File types. For example, if you have a Publish File type in your pipeline named "Maya Scene" you can bind this in the configuration to the `reference` and `import` actions that are defined in the hook. By doing this, Toolkit will add a reference and an import action to each Maya Scene publish that is being shown. Separating the Publish Types from the actual hook like this makes it easier to reconfigure the loader for use with a different publish type setup than the one that comes with the default configuration. +Once you have defined a list of actions in your actions hook, you can then bind these actions to Publish File types. For example, if you have a Publish File type in your pipeline named "Maya Scene" you can bind this in the configuration to the `reference` and `import` actions that are defined in the hook. By doing this, Toolkit will add a reference and an import action to each Maya Scene publish that is being shown. Separating the Publish Types from the actual hook like this makes it easier to reconfigure the loader for use with a different publish type setup than the one that comes with the default configuration. The loader uses Toolkit's second generation hooks interface, allowing for greater flexibility. This hook format uses an improved syntax. You can see this in the default configuration settings that are installed for the loader, looking something like this: @@ -199,15 +199,17 @@ By deriving from the hook as shown above, the custom hook code only need to cont The following methods are available on the app instance. ### open_publish() -Presents an 'Open File' style version of the Loader that allows the user to select a publish. The selected publish is then returned. The normal actions configured for the app are not permitted when run in this mode. + +Presents an 'Open File' style version of the Loader that allows the user to select a publish. The selected publish is then returned. The normal actions configured for the app are not permitted when run in this mode. app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) **Parameters and Return Value** -* `str` **title** - The title to be displayed in the open publish dialog. -* `str` **action** - The name of the action to be used for the 'open' button. -* `list` **publish_types** - A list of publish types to use to filter the available list of publishes. If this is empty/None then all publishes will be shown. -* **Returns:** A list of {% include product %} entity dictionaries that were selected by the user. + +- `str` **title** - The title to be displayed in the open publish dialog. +- `str` **action** - The name of the action to be used for the 'open' button. +- `list` **publish_types** - A list of publish types to use to filter the available list of publishes. If this is empty/None then all publishes will be shown. +- **Returns:** A list of {% include product %} entity dictionaries that were selected by the user. **Example** diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md index 3236b5381..755e5eb47 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md @@ -45,16 +45,16 @@ The output area displays the results of the executed python. Echoing the source ### Output -* **Clear** - Clear the contents of the output browser. -* **Echo** - Toggle echoing the executed commands in the output browser. +- **Clear** - Clear the contents of the output browser. +- **Echo** - Toggle echoing the executed commands in the output browser. ### Editor -* **Execute** - Execute the contents of the editor -* **Save** - Save the current contents of the editor to a file. -* **Open** - Open a file in the editor. -* **Clear** - Clear the contents of the editor. -* **Lines** - Toggle line numbers for the current tab +- **Execute** - Execute the contents of the editor +- **Save** - Save the current contents of the editor to a file. +- **Open** - Open a file in the editor. +- **Clear** - Clear the contents of the editor. +- **Lines** - Toggle line numbers for the current tab ## Globals @@ -62,10 +62,10 @@ The output area displays the results of the executed python. Echoing the source Some {% include product %}/Toolkit globals are pre-defined in the console, similar to what is available in the [{% include product %} Engine for the shell](https://support.shotgunsoftware.com/entries/95441287). - * Tk API handle is available via the `tk` variable - * {% include product %} API handle is available via the `shotgun` variable - * The current context is stored in the `context` variable - * The shell engine can be accessed via the `engine` variable +- Tk API handle is available via the `tk` variable +- {% include product %} API handle is available via the `shotgun` variable +- The current context is stored in the `context` variable +- The shell engine can be accessed via the `engine` variable ## External sources @@ -75,13 +75,13 @@ The app comes with a hook that can be implemented to load python source from an ## Hotkeys -* Execute selected with `Ctrl + Enter` -* Create a new tab with `Ctrl + T` -* Navigate tabs with `Ctrl + Shift + [` or `Ctrl + Shift + ]` -* Resize input/output font via `Ctrl + Wheel` +- Execute selected with `Ctrl + Enter` +- Create a new tab with `Ctrl + T` +- Navigate tabs with `Ctrl + Shift + [` or `Ctrl + Shift + ]` +- Resize input/output font via `Ctrl + Wheel` **NOTE:** These hotkeys may not be available in all DCCs. ## Other notes -* In some older versions of DCCs, leaving the python console open when closing the session may cause a crash. We believe this may be a bug in some older versions of PySide. More recent versions of DCCs, bundled with newer versions of PySide, do not appear to crash on exit. If you encounter this issue with a recent DCC release, please [submit a ticket](https://support.shotgunsoftware.com/hc/en-us/requests/new) so that we can investigate further. \ No newline at end of file +- In some older versions of DCCs, leaving the python console open when closing the session may cause a crash. We believe this may be a bug in some older versions of PySide. More recent versions of DCCs, bundled with newer versions of PySide, do not appear to crash on exit. If you encounter this issue with a recent DCC release, please [submit a ticket](https://support.shotgunsoftware.com/hc/en-us/requests/new) so that we can investigate further. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md index 8fa61b156..e40e35a01 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md @@ -17,9 +17,9 @@ This mode creates quicktimes from image sequences and submits them as Versions t Here are a the current default formats for slate and burnin: -![Main Menu](../images/apps/multi-reviewsubmission-quicktime_slate.png) +![Main Menu](../images/apps/multi-reviewsubmission-quicktime_slate.png) -![Main Menu](../images/apps/multi-reviewsubmission-quicktime_burnin.png) +![Main Menu](../images/apps/multi-reviewsubmission-quicktime_burnin.png) Should you want to leverage this app from within your own apps or hooks here is a quick rundown of the simple way to go about it. @@ -48,16 +48,16 @@ if review_submission_app: The arguments that you need to pass to `render_and_submit_version` are as follows: -* `template`: A template that defines where the files to publish are located -* `fields`: Fields that will be used to fill out the template -* `first_frame`: The first frame of the image sequence to process -* `last_frame`: The last frame of the image sequence to process -* `sg_publishes`: A list of {% include product %} Published File objects to link the version to. -* `sg_task`: A {% include product %} Task link dictionary to link the version to. -* `comment`: Text to add to the Version's description. -* `thumbnail_path`: The path to a thumbnail to use for the version when the movie isn't being uploaded to {% include product %} (this is set in the config) -* `progress_cb`: A callback to report progress with. This should be of the form: `callback(percent, message)` -* `color_space`: The color space that the input frames are in. In Nuke, this would be one of the enumeration values on the colorspace knob for the Write node. +- `template`: A template that defines where the files to publish are located +- `fields`: Fields that will be used to fill out the template +- `first_frame`: The first frame of the image sequence to process +- `last_frame`: The last frame of the image sequence to process +- `sg_publishes`: A list of {% include product %} Published File objects to link the version to. +- `sg_task`: A {% include product %} Task link dictionary to link the version to. +- `comment`: Text to add to the Version's description. +- `thumbnail_path`: The path to a thumbnail to use for the version when the movie isn't being uploaded to {% include product %} (this is set in the config) +- `progress_cb`: A callback to report progress with. This should be of the form: `callback(percent, message)` +- `color_space`: The color space that the input frames are in. In Nuke, this would be one of the enumeration values on the colorspace knob for the Write node. ### As a menu item @@ -66,19 +66,20 @@ This mode adds a menu item to the {% include product %} menu inside the DCC.  This mode creates a quick snapshot of the current viewport and sends it to {% include product %} Create as a Version draft. Then, the user can extend the review submission inside of {% include product %} Create by adding annotations, text or comparison notes. In order to add this functionality to your context, you need to: -* Set the `display_name` field to have it in the menu item. -* Set the `render_media_hook` field to a hook that tells how to render media in your DCC (tk-photoshopcc and tk-maya have a default implementation) -* Set the `submitter_hook` field to `{self}/submitter_create.py` + +- Set the `display_name` field to have it in the menu item. +- Set the `render_media_hook` field to a hook that tells how to render media in your DCC (tk-photoshopcc and tk-maya have a default implementation) +- Set the `submitter_hook` field to `{self}/submitter_create.py` Like this: ```yaml tk-multi-reviewsubmission: display_name: Send for review - render_media_hook: '{self}/render_media.py:{self}/{engine_name}/render_media.py' - submitter_hook: '{self}/submitter_create.py' - location: + render_media_hook: "{self}/render_media.py:{self}/{engine_name}/render_media.py" + submitter_hook: "{self}/submitter_create.py" + location: type: app_store name: tk-multi-reviewsubmission version: v1.0.1 -``` \ No newline at end of file +``` diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md index f390a7b0b..383de90c3 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md @@ -35,6 +35,7 @@ tk-multi-setframerange_handles: sg_out_frame_field: sg_handle_out location: "@apps.tk-multi-setframerange.location" ``` + These should then appear as separate options in the {% include product %} menu: ![Multiple instances](../images/apps/multi-setframerange-multiple_instances.png) @@ -45,4 +46,4 @@ Note: this is new to version `v0.4.0` of the app. The software specific logic for getting the current scene frame range or setting the frame range is handled in the frame operations hook. If you are wanting to add support for a new engine or want to change how the behaviour is implemented, you can take over the frame operations hook by setting the `hook_frame_operation` app property and implementing your own get and set logic. -Note: this is new to version `v0.4.0` of the app. \ No newline at end of file +Note: this is new to version `v0.4.0` of the app. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md index 0ea96b075..ae17b2691 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md @@ -29,7 +29,6 @@ The hook supports a simple templating language, allowing for great flexibility. - You can define fallbacks in the case some values are not set. For {% include product %} Versions, the `artist` fields takes precedence over the `created_by` field in order to support a workflow where a producer submits versions on behalf of an artist. In this case, the Version will be created by the producer but the `artist` field will be set to the artist. This, however, is not always the case - in some cases, artist is left blank in pipelines where artists submit their own work. When displaying versions, it is therefore useful to be able to check the `artist` field first, and in case this isn't set, fall back on the `created_by` field. This is done using the `{field1|field2}` syntax, for example: `Created By: {artist|created_by}`. You can combine this with optional fields too, e.g. `{[Created By: ]artist|created_by}` - This hook contains the following methods: **Controlling items appearing in lists** @@ -41,7 +40,7 @@ The `get_list_item_definition()` method returns a dictionary that controls the a "top_left": "{code}", "top_right": "{updated_at}", "body": "By: {created_by}
Description: {description}" -} +} ``` **Controlling the top detail area** @@ -52,7 +51,7 @@ The `get_main_view_definition()` method returns a dictionary with the keys `titl { "title": "{type} {code}", "body": "By: {created_by}
Description: {description}" -} +} ``` **Controlling the fields shown in the Info tab** @@ -67,21 +66,21 @@ Actions are little snippets of code that operate on a piece of {% include produc - An action that allows a user to assign herself to a given Task - An action that loads a {% include product %} publish into Maya as a Maya reference. -The actual payload of an action is defined in an *action hook*. Once you have defined the action logic, you can then map that action to {% include product %} objects in the app configuration. These action mappings may for example look like this: +The actual payload of an action is defined in an _action hook_. Once you have defined the action logic, you can then map that action to {% include product %} objects in the app configuration. These action mappings may for example look like this: ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` In the above example, we use the actions `reference`, `import`, `texture_node`, `assign_task` and `play_in_rv`. We then map the actions to various {% include product %} objects and conditions. For example, we are requesting the `import` action to appear for all publishes of type Maya Scene. @@ -95,7 +94,7 @@ For each application that the panel supports, there is an actions hook which imp The panel uses Toolkit's second generation hooks interface, allowing for greater flexibility. This hook format uses an improved syntax. You can see this in the default configuration settings, looking something like this: ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` The `{self}` keyword tells Toolkit to look in the app's `hooks` folder for the hook. If you are overriding this hook with your implementation, change the value to `{config}/panel/maya_actions.py`. This will tell Toolkit to use a hook called `hooks/panel/maya_actions.py` in your configuration folder. @@ -119,24 +118,24 @@ class MyActions(HookBaseClass): def generate_actions(self, sg_data, actions, ui_area): """ Returns a list of action instances for a particular object. - The data returned from this hook will be used to populate the + The data returned from this hook will be used to populate the actions menu. - + The mapping between {% include product %} objects and actions are kept in a different place (in the configuration) so at the point when this hook is called, the app has already established *which* actions are appropriate for this object. - + This method needs to return detailed data for those actions, in the form of a list of dictionaries, each with name, params, caption and description keys. - - Because you are operating on a particular object, you may tailor the output + + Because you are operating on a particular object, you may tailor the output (caption, tooltip etc) to contain custom information suitable for this publish. - - The ui_area parameter is a string and indicates where the publish is to be shown. - - - If it will be shown in the main browsing area, "main" is passed. + + The ui_area parameter is a string and indicates where the publish is to be shown. + + - If it will be shown in the main browsing area, "main" is passed. - If it will be shown in the details area, "details" is passed. - + :param sg_data: {% include product %} data dictionary with all the standard publish fields. :param actions: List of action strings which have been defined in the app configuration. :param ui_area: String denoting the UI Area (see above). @@ -160,7 +159,7 @@ class MyActions(HookBaseClass): """ Execute a given action. The data sent to this be method will represent one of the actions enumerated by the generate_actions method. - + :param name: Action name string representing one of the items returned by generate_actions. :param params: Params data, as specified by generate_actions. :param sg_data: {% include product %} data dictionary with all the standard publish fields. @@ -182,13 +181,12 @@ We could then bind this new action to a set of publish types in the configuratio ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` By deriving from the hook as shown above, the custom hook code only need to contain the actual added business logic which makes it easier to maintain and update. - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md index 4bc72bf8d..3be19b4cd 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md @@ -65,12 +65,12 @@ With the new file save dialog, it is possible to pick the extension of the file ```yaml maya_extension: - type: str - choices: - ma: Maya Ascii (.ma) - mb: Maya Binary (.mb) - default: ma - alias: extension + type: str + choices: + ma: Maya Ascii (.ma) + mb: Maya Binary (.mb) + default: ma + alias: extension ``` `maya_extension` is the token's name. `choices` is a dictionary of file types that will be displayed in the dropdown. The keys (`ma` and `mb`) are the possible values that this template token can have. The values (`Maya Ascii (.ma)` and `Maya Binary (.mb)`) are UI friendly descriptions that can be used by a Toolkit application. The `alias` is an hint that is required by the workfiles application. It tells the application that this token is an extension and should be displayed in the dropdown widget. @@ -79,8 +79,8 @@ Then, this token can be added to any Maya specific template. ```yaml maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' + definition: "@shot_root/work/maya/{name}.v{version}.{maya_extension}" + root_name: "primary" ``` ## Context Change dialog @@ -100,18 +100,18 @@ The list of Steps displayed in a tab is controlled with the `step_filter_on` set The example below defines two tabs, respectively displaying Tasks for Assets and Shots: ```yaml - - caption: Assets Tasks - entity_type: Task - step_filter_on: Asset - filters: +- caption: Assets Tasks + entity_type: Task + step_filter_on: Asset + filters: - [entity, type_is, Asset] - hierarchy: [entity.Asset.sg_asset_type, entity, step, content] - - caption: Shots Tasks - entity_type: Task - step_filter_on: Shot - filters: + hierarchy: [entity.Asset.sg_asset_type, entity, step, content] +- caption: Shots Tasks + entity_type: Task + step_filter_on: Shot + filters: - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] + hierarchy: [entity.Shot.sg_sequence, entity, step, content] ``` ![step filter](../images/apps/multi-workfiles2-step_filter.png) @@ -119,13 +119,14 @@ The example below defines two tabs, respectively displaying Tasks for Assets and ## Deferred queries For better performances, building the Entities tree can be broken into two step queries: + - A first query is used to retrieve records from {% include product %} and populate the top of the tree. - A second query is used to retrieve children as the user expand the tree. With the following settings, Assets and Shots would be retrieved from {% include product %} when the app is started. And then Tasks linked to a particular Asset or Shot would only be retrieved when this Asset or Shot is selected or expanded in the tree view. ```yaml - entities: +entities: - caption: Assets entity_type: Asset hierarchy: [sg_asset_type, code] diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md index e0ac352cf..728308e42 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md @@ -29,9 +29,8 @@ Once you press the Upload button, a quicktime will be generated in nuke and then By default, the app will generate a Quicktime with a slate and burn-ins: ![Slate Example](../images/apps/nuke-quickreview-slate.png) -![Burnins Example](../images/apps/nuke-quickreview-burnins.png) +![Burnins Example](../images/apps/nuke-quickreview-burnins.png) ## Customization Most aspects of the review submission can be adjusted using hooks. Documentation can be found [here](http://developer.shotgridsoftware.com/tk-nuke-quickreview). - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md index 89855ce75..6e702d9b9 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md @@ -7,7 +7,7 @@ lang: en # Nuke Write Node -The Nuke Write Node App provides a custom {% include product %} Write node which makes it easy to standardise the location where images are rendered to. It can be configured for each environment. In addition to the path, the configuration will also determine the render format to be used. +The Nuke Write Node App provides a custom {% include product %} Write node which makes it easy to standardise the location where images are rendered to. It can be configured for each environment. In addition to the path, the configuration will also determine the render format to be used. ## General Use @@ -15,13 +15,13 @@ In order to use the {% include product %} Write Node, save your script as a Tool ![Write Node](../images/apps/nuke-writenode-write_node_creation.png) -Rather than entering a path by hand, you just specify an output name and Toolkit will then compute the rest of the path automatically. You can see the computed path in the UI and open up the location on disk by clicking the *Show in File System* button. The location where the renders are written to depends on the Toolkit configuration. +Rather than entering a path by hand, you just specify an output name and Toolkit will then compute the rest of the path automatically. You can see the computed path in the UI and open up the location on disk by clicking the _Show in File System_ button. The location where the renders are written to depends on the Toolkit configuration. The renders will be versioned and the version number will always follow the current nuke script version which will be incremented automatically when you publish using Multi Publish. ## Resetting the render path -The Write Node will cache the current path so that it is still valid if the file is opened outside a Toolkit Work Area. Occasionally, this can mean that the path becomes out of sync and 'locked'. If the render path is locked then renders created with this Write Node cannot be published. +The Write Node will cache the current path so that it is still valid if the file is opened outside a Toolkit Work Area. Occasionally, this can mean that the path becomes out of sync and 'locked'. If the render path is locked then renders created with this Write Node cannot be published. To reset a render path, either version-up the scene using the Work-files app's 'Version Up Scene' command or select the Write node individually and in the properties, click **Reset Path**: @@ -29,7 +29,7 @@ To reset a render path, either version-up the scene using the Work-files app's ' ## Adding Another Write Node Profile -The {% include product %} Write Node wraps Nuke's built-in write node, so any format supported by Nuke can be used with the app and additional nodes can be added via configuration. The simplest way to start is to set up a simple Nuke write node with the parameters you want. For the example, let's imagine you are doing 16-bit tifs with LZW compression. If you look at your Nuke script in a text editor, the write node will look something like this: +The {% include product %} Write Node wraps Nuke's built-in write node, so any format supported by Nuke can be used with the app and additional nodes can be added via configuration. The simplest way to start is to set up a simple Nuke write node with the parameters you want. For the example, let's imagine you are doing 16-bit tifs with LZW compression. If you look at your Nuke script in a text editor, the write node will look something like this: ``` Write { @@ -44,7 +44,7 @@ Write { } ``` -The text will tell you what the parameter names and values you need are. In this case it's `datatype` and `compression`. Next, go into your environment configuration (for example: `/path/to/pipeline/config/env/shot_step.yml`) and find the area where the `tk-nuke-writenode` app is configured. Add another Write Node, with these two parameters in the `settings`: +The text will tell you what the parameter names and values you need are. In this case it's `datatype` and `compression`. Next, go into your environment configuration (for example: `/path/to/pipeline/config/env/shot_step.yml`) and find the area where the `tk-nuke-writenode` app is configured. Add another Write Node, with these two parameters in the `settings`: ```yaml tk-nuke-writenode: @@ -72,7 +72,7 @@ The updated configuration will then result in the additional {% include product ![Add New](../images/apps/nuke-writenode-write_node_add_new.png) -__Note:__ Be sure to add any new templates (e.g. nuke_shot_render_mono_tif) to your `templates.yml` file which can be found in your project's configuration (`/config/core/templates.yml`). +**Note:** Be sure to add any new templates (e.g. nuke_shot_render_mono_tif) to your `templates.yml` file which can be found in your project's configuration (`/config/core/templates.yml`). Another example, showing how to add a {% include product %} Write Node that outputs to JPEG with 0.5 compression and a 4:2:2 sub-sampling is shown below. This profile also makes use of the "promote_write_knobs" option to promote the jpeg quality knob to the gizmo's user interface. This allows the profile to set the default value for quality, but also provide the user the slider to alter that setting themselves: @@ -85,7 +85,7 @@ tk-nuke-writenode: render_template: nuke_shot_render_jpeg proxy_publish_template: null proxy_render_template: null - settings: {_jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2"} + settings: { _jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2" } tank_type: Rendered Image tile_color: [] promote_write_knobs: [_jpeg_quality] @@ -97,7 +97,7 @@ As shown in the profile example above, knobs from the encapsulated write node ca ## Render Farm Integration -It's common for studios to use a render farm that runs job management tools such as [Deadline](https://deadline.thinkboxsoftware.com/), which typically launch Nuke directly when rendering. Because these tools do not launch Nuke in a {% include product %}-aware way (e.g., via Desktop or the `tank` command), the {% include product %} write node does not have the information it needs to run. We offer a couple options to get around this limitation. +It's common for studios to use a render farm that runs job management tools such as [Deadline](https://deadline.thinkboxsoftware.com/), which typically launch Nuke directly when rendering. Because these tools do not launch Nuke in a {% include product %}-aware way (e.g., via Desktop or the `tank` command), the {% include product %} write node does not have the information it needs to run. We offer a couple options to get around this limitation. ### Convert {% include product %} write nodes to standard Nuke write nodes @@ -105,7 +105,7 @@ A simple solution is to convert the {% include product %} write nodes to regular #### Enabling the convert menu options -There is a configuration option called `show_convert_actions` that can be added to the app's settings in the environment yml files. When you add the setting `show_convert_actions: True`, the *Convert SG Write Nodes to Write Nodes...* and *Convert Write Nodes back to SG format...* menu options become available. +There is a configuration option called `show_convert_actions` that can be added to the app's settings in the environment yml files. When you add the setting `show_convert_actions: True`, the _Convert SG Write Nodes to Write Nodes..._ and _Convert Write Nodes back to SG format..._ menu options become available. ![write node convert menu options](../images/apps/nuke-writenode-write_node_convert_menu_options.png) @@ -122,12 +122,12 @@ import sgtk eng = sgtk.platform.current_engine() app = eng.apps["tk-nuke-writenode"] if app: - app.convert_to_write_nodes() + app.convert_to_write_nodes() ``` This will remove the {% include product %} write nodes from the scene, so our suggested workflow is that you make a copy of the script to be rendered, perform the conversions on the copy, and submit the copy to the farm. The scene no longer has any Toolkit references and thus Toolkit is not required when the nuke script opened on the render farm. -**Note:** There is a corresponding `convert_from_write_nodes()` method available, but to ensure data integrity, we recommend that it only be used for debugging and not as part of your pipeline. +**Note:** There is a corresponding `convert_from_write_nodes()` method available, but to ensure data integrity, we recommend that it only be used for debugging and not as part of your pipeline. ### Bootstrap the {% include product %} Pipeline Toolkit engine using init.py @@ -197,8 +197,8 @@ TK_CORE_PATH = os.environ["SHOTGUN_SGTK_MODULE_PATH"] if TK_CORE_PATH not in sys.path: sys.path.append(TK_CORE_PATH) -# If your render nodes don’t have access to the Toolkit Core API in the same filesystem location as artist workstations, you have to make sure that it is available in the PYTHONPATH, so that render nodes can import it. An easy way -# to install tk-core in a centralized location is with pip. You can read more +# If your render nodes don’t have access to the Toolkit Core API in the same filesystem location as artist workstations, you have to make sure that it is available in the PYTHONPATH, so that render nodes can import it. An easy way +# to install tk-core in a centralized location is with pip. You can read more # about it here: # http://developer.shotgridsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip @@ -225,7 +225,7 @@ mgr = sgtk.bootstrap.ToolkitManager(sg_user=user) # Set the base pipeline configuration from the environment variable: mgr.base_configuration = os.environ["SHOTGUN_CONFIG_URI"] -# Disable {% include product %} lookup to ensure that we are getting the Pipeline +# Disable {% include product %} lookup to ensure that we are getting the Pipeline # Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override # Pipeline Configuration defined in {% include product %}. mgr.do_shotgun_config_lookup = False @@ -250,7 +250,7 @@ You may need to extend this if your configuration is more complex than this exam Deadline can copy Nuke scripts to a temporary location when rendering. This will cause problems with Toolkit as the files will no longer be in a disk location that it recognizes. To disable this behavior and load the scripts from their original location: -1. In Deadline, navigate to Tools > Configure Plugin (In the super user mode) +1. In Deadline, navigate to Tools > Configure Plugin (In the super user mode) 2. Disable the 'Enable Path Mapping' option ## Technical Details @@ -263,9 +263,9 @@ Return a list of all {% include product %} Write Nodes in the current scene. `list` app.get_write_nodes() -**Parameters & Return Value** +**Parameters & Return Value** -* **Returns:** `list` - a list of Toolkit Write nodes found in the scene +- **Returns:** `list` - a list of Toolkit Write nodes found in the scene **Example** @@ -282,12 +282,13 @@ Return the name of the specified Write Node. `string` get_node_name(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the name of the node. +- `node` **node** - the Write Node to query +- **Returns:** `string` - the name of the node. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -302,12 +303,13 @@ Get the name of the configuration profile used by the specified Write node. `string` get_node_profile_name(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the profile name for this Write Node as defined by the configuration +- `node` **node** - the Write Node to query +- **Returns:** `string` - the profile name for this Write Node as defined by the configuration **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -322,18 +324,19 @@ Get the path that the specified Write node will render images to. `string` get_node_render_path(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the render path for this node +- `node` **node** - the Write Node to query +- **Returns:** `string` - the render path for this node **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_render_path(nodes[0]) +>>> app.get_node_render_path(nodes[0]) ``` ### get_node_render_files() @@ -342,12 +345,13 @@ Get a list of all image files that have been rendered for the specified Write No `list` get_node_render_files(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `list` - a list of the image files rendered by this Write node. +- `node` **node** - the Write Node to query +- **Returns:** `list` - a list of the image files rendered by this Write node. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -362,18 +366,19 @@ Get the template that determines where rendered images will be written to for th `template` get_node_render_template(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `template` - the render template this node is configured to use. +- `node` **node** - the Write Node to query +- **Returns:** `template` - the render template this node is configured to use. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_render_template(nodes[0]) +>>> app.get_node_render_template(nodes[0]) ``` ### get_node_publish_template() @@ -382,18 +387,19 @@ Get the template that determines where rendered images will be published to for `template` get_node_publish_template(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `template` - the publish template this node is configured to use. +- `node` **node** - the Write Node to query +- **Returns:** `template` - the publish template this node is configured to use. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_publish_template(nodes[0]) +>>> app.get_node_publish_template(nodes[0]) ``` ### get_node_proxy_render_path() @@ -402,18 +408,19 @@ Get the path that the specified Write node will render proxy images to. `string` get_node_proxy_render_path(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the proxy render path for this node +- `node` **node** - the Write Node to query +- **Returns:** `string` - the proxy render path for this node **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_path(nodes[0]) +>>> app.get_node_proxy_render_path(nodes[0]) ``` ### get_node_proxy_render_files() @@ -422,12 +429,13 @@ Get a list of all proxy image files that have been rendered for the specified Wr `list` get_node_proxy_render_files(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `list` - a list of the proxy image files rendered by this Write node. +- `node` **node** - the Write Node to query +- **Returns:** `list` - a list of the proxy image files rendered by this Write node. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -444,18 +452,19 @@ If there is no proxy render template configured for the specified node then this `template` get_node_proxy_render_template(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `template` - the proxy render template this node is configured to use. +- `node` **node** - the Write Node to query +- **Returns:** `template` - the proxy render template this node is configured to use. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_template(nodes[0]) +>>> app.get_node_proxy_render_template(nodes[0]) ``` ### get_node_proxy_publish_template() @@ -466,18 +475,19 @@ If there is no proxy publish template configured for the specified node then thi `template` get_node_proxy_publish_template(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `template` - the proxy publish template this node is configured to use. +- `node` **node** - the Write Node to query +- **Returns:** `template` - the proxy publish template this node is configured to use. **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_publish_template(nodes[0]) +>>> app.get_node_proxy_publish_template(nodes[0]) ``` ### get_node_published_file_type() @@ -486,38 +496,40 @@ Get the Published File Type to be used when Published files are created for imag `string` get_node_published_file_type(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the Published File Type this node is configured to use +- `node` **node** - the Write Node to query +- **Returns:** `string` - the Published File Type this node is configured to use **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.get_node_published_file_type(nodes[0]) +>>> app.get_node_published_file_type(nodes[0]) ``` ### generate_node_thumbnail() -Generate a thumbnail for the specified Write Node. This will render a frame from the middle of the sequence with a maximum size of 800x800px to a temp file (.png). It is the responsibility of the caller to clean up this file when it is no longer needed. +Generate a thumbnail for the specified Write Node. This will render a frame from the middle of the sequence with a maximum size of 800x800px to a temp file (.png). It is the responsibility of the caller to clean up this file when it is no longer needed. `string` generate_node_thumbnail(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `string` - the path to the rendered thumbnail image on disk +- `node` **node** - the Write Node to query +- **Returns:** `string` - the path to the rendered thumbnail image on disk **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.generate_node_thumbnail(nodes[0]) +>>> app.generate_node_thumbnail(nodes[0]) ``` ### reset_node_render_path() @@ -526,18 +538,19 @@ Reset the render path for the specified Write Node to match the current script. `None` reset_node_render_path(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `None` - no value is returned +- `node` **node** - the Write Node to query +- **Returns:** `None` - no value is returned **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.reset_node_render_path(nodes[0]) +>>> app.reset_node_render_path(nodes[0]) ``` ### is_node_render_path_locked() @@ -546,32 +559,34 @@ Determine if the render path for the specified Write node is locked or not. `bool` is_node_render_path_locked(`node` node) -**Parameters & Return Value** +**Parameters & Return Value** -* `node` **node** - the Write Node to query -* **Returns:** `bool` - True if the render path is locked, otherwise False +- `node` **node** - the Write Node to query +- **Returns:** `bool` - True if the render path is locked, otherwise False **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] >>> nodes = app.get_write_nodes() ->>> app.is_node_render_path_locked(nodes[0]) +>>> app.is_node_render_path_locked(nodes[0]) ``` ### convert_to_write_nodes() -Convert all {% include product %} write nodes found in the current Script to regular Nuke Write nodes. Additional toolkit information will be stored on user knobs named 'tk_*' +Convert all {% include product %} write nodes found in the current Script to regular Nuke Write nodes. Additional toolkit information will be stored on user knobs named 'tk\_\*' `None` convert_to_write_nodes() **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_to_write_nodes() +>>> app.convert_to_write_nodes() ``` ### convert_from_write_nodes() @@ -581,23 +596,25 @@ Convert all regular Nuke Write nodes that have previously been converted from {% `None` convert_from_write_nodes() **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_from_write_nodes() +>>> app.convert_from_write_nodes() ``` ### process_placeholder_nodes() -Convert any placeholder nodes into full {% include product %} Write Nodes. This is primarily used to convert placeholder nodes created by the Hiero Toolkit script exporter when a script is first opened in Nuke. +Convert any placeholder nodes into full {% include product %} Write Nodes. This is primarily used to convert placeholder nodes created by the Hiero Toolkit script exporter when a script is first opened in Nuke. `None` process_placeholder_nodes() **Example** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() >>> app = eng.apps["tk-nuke-writenode"] ->>> app.process_placeholder_nodes() +>>> app.process_placeholder_nodes() ``` diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md index aa2f8403b..b346801b8 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md @@ -9,13 +9,12 @@ lang: en {% include product %} Toolkit has a built in system that handles the creation of standardized directory structures based on a configuration. This makes it easy to quickly produce consistent file system layouts for multiple shots. -This App hooks up the file system creation API methods in the Sgtk Core API with {% include product %}. This makes folder creation an easy task; just select a collection of Shots or assets and click the Create Folders action. +This App hooks up the file system creation API methods in the Sgtk Core API with {% include product %}. This makes folder creation an easy task; just select a collection of Shots or assets and click the Create Folders action. ## How it works + Simply select one or more Tasks, Shots or other entities (depending on the configuration). Now select create folders from the action menu. Once the process has completed, you will get a report of how many folders were created. ![{% include product %} create folder 1](../images/apps/shotgun-folders-create_folders_1.png) -![{% include product %} create folder 2](../images/apps/shotgun-folders-create_folders_2.png) - - +![{% include product %} create folder 2](../images/apps/shotgun-folders-create_folders_2.png) diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md index 643ec2e80..21694fc45 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md @@ -10,10 +10,9 @@ lang: en The Launch Folder App is a {% include product %} utility which allows you to jump from {% include product %} into the File System. ## How it works + The Launch Folder App allows you to jump from {% include product %} into the File System. You can register it for {% include product %} entity types such as Shots, Assets and Sequences. Once activated, it will appear on the Action menu: ![launch folder show in fs](../images/apps/shotgun-launchfoldershow_in_fs.png) You can select a single or multiple entries in {% include product %} and when you click the menu action a standard file browser will be launched (Explorer on Windows, Finder on Mac etc.) - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md index 58caa0957..4727a019c 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md @@ -11,4 +11,4 @@ This app adds an "Open in Associated Application" action to the Published File e ![Work FS](../images/apps/shotgun-launchpublish-open_assoc.png) -The app makes it easy to configure different app launch sequences for different files -- all this is done inside a hook. It also dispatches image sequences to a viewer (such as RV). Files not recognized by the hook will be dispatched to the os-level app. \ No newline at end of file +The app makes it easy to configure different app launch sequences for different files -- all this is done inside a hook. It also dispatches image sequences to a viewer (such as RV). Files not recognized by the hook will be dispatched to the os-level app. diff --git a/docs/en/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md b/docs/en/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md index 31c58fda3..26551e190 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ b/docs/en/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md @@ -9,33 +9,31 @@ lang: en ## Introduction -At the heart of a Toolkit pipeline is the environment configuration. Within a Toolkit pipeline configuration, the environment configuration files are where you define which Toolkit apps are available within different DCCs and customize the settings for each. This document is a complete reference to the structure and function of the environment configuration files. It covers the Toolkit concept of *environments* for configuring different workflows within a project, configuration structure, file referencing, and ways to discover what customizations are available. +At the heart of a Toolkit pipeline is the environment configuration. Within a Toolkit pipeline configuration, the environment configuration files are where you define which Toolkit apps are available within different DCCs and customize the settings for each. This document is a complete reference to the structure and function of the environment configuration files. It covers the Toolkit concept of _environments_ for configuring different workflows within a project, configuration structure, file referencing, and ways to discover what customizations are available. {% include info title="Note" content="While this document acts as a reference to the environment configuration files, you can see a step-by-step example of editing a configuration setting in the [Toolkit Basics Guide on Editing a pipeline configuration](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)." %} - - ## What is an environment? The {% include product %} Toolkit platform provides a fully customizable set of integrations for commonly used content creation software with which you can build your studio pipeline. Within a project’s configuration, you can specify which software packages have integrations, which specific Toolkit apps are available in each, and your options for each app—building out artists workflows to suit your studio’s needs. -But often in studio pipelines, it’s common for different types of artists to have different workflows. As a simple example, for artists working on assets, you might want to make texture painting software such as Mari available, whereas for artists working on shots, you might want to make compositing software such as Nuke available. +But often in studio pipelines, it’s common for different types of artists to have different workflows. As a simple example, for artists working on assets, you might want to make texture painting software such as Mari available, whereas for artists working on shots, you might want to make compositing software such as Nuke available. -Beyond just software packages, you might have different settings for the same Toolkit app for different artists. For example, both shot artists and asset artists might use the [Workfiles app](https://support.shotgunsoftware.com/hc/en-us/articles/219033088), but you might want to limit the file navigation to files associated with Shot entities for the former and Asset entities for the latter. +Beyond just software packages, you might have different settings for the same Toolkit app for different artists. For example, both shot artists and asset artists might use the [Workfiles app](https://support.shotgunsoftware.com/hc/en-us/articles/219033088), but you might want to limit the file navigation to files associated with Shot entities for the former and Asset entities for the latter. -To support these different workflows within a project, Toolkit divides its app and engine configurations across environments. An environment contains the integrations and their settings for a set of software packages, all with a certain context in common. +To support these different workflows within a project, Toolkit divides its app and engine configurations across environments. An environment contains the integrations and their settings for a set of software packages, all with a certain context in common. -In the above example, artists working on assets would be working in an asset step environment, whereas artists working on shots would be working in a shot step environment. Each environment is configured independent of any others, allowing you to have distinct workflows within a project. +In the above example, artists working on assets would be working in an asset step environment, whereas artists working on shots would be working in a shot step environment. Each environment is configured independent of any others, allowing you to have distinct workflows within a project. ## A note on Toolkit’s Default Configuration -Toolkit gives you a lot of freedom in the way you structure your environment configuration. This document is a reference for all of the options that are available to you, so that you’ll have the necessary knowledge to make choices that best suit the needs of your pipeline. +Toolkit gives you a lot of freedom in the way you structure your environment configuration. This document is a reference for all of the options that are available to you, so that you’ll have the necessary knowledge to make choices that best suit the needs of your pipeline. -This document will also occasionally cover some of the specific choices we’ve made in the pipeline configuration provided as a starting point, known as [the Default Configuration](https://github.com/shotgunsoftware/tk-config-default2). When you’re ready to customize your pipeline, the first step is to [create an editable pipeline configuration for your project](../../guides/pipeline-integrations/getting-started/editing_app_setting.md). +This document will also occasionally cover some of the specific choices we’ve made in the pipeline configuration provided as a starting point, known as [the Default Configuration](https://github.com/shotgunsoftware/tk-config-default2). When you’re ready to customize your pipeline, the first step is to [create an editable pipeline configuration for your project](../../guides/pipeline-integrations/getting-started/editing_app_setting.md). While these choices are only conventions and not hardcoded into the Toolkit workflow, it’s helpful to refer to the Default Configuration as an example for learning what features are available once you start customizing your pipeline and best practices for structuring your own configurations. And, since it's the suggested starting point for new Toolkit users, it’s helpful to know some of its conventions. We will always distinguish between general features of the Toolkit environment configuration and specific choices in the Default Configuration in this document. For specific details on the Default Configuration’s environment structure, see [its README file](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md). -## File locations +## File locations Within your Pipeline Configuration, the `config/` directory contains all the files and folders that are meant to be customized. In `config/`, you’ll find three sub-directories: `cache`, `core`, and `env`. The `env` directory holds the environment configuration files, so this document will refer to the files in `config/env`. @@ -60,9 +58,9 @@ Toolkit uses a core hook called [pick_environment](https://github.com/shotgunsof ## Custom environments -The environment configuration files listed above are the ones provided with the Default Configuration. However, some studios may want to employ different or additional environments. For example, a studio might want different configuration settings for every stage in the pipeline—`asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light`, and so on. Fortunately, you can fully customize the available environments. +The environment configuration files listed above are the ones provided with the Default Configuration. However, some studios may want to employ different or additional environments. For example, a studio might want different configuration settings for every stage in the pipeline—`asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light`, and so on. Fortunately, you can fully customize the available environments. -To do so, add the desired environment config files to the `config/env` directory. Then, override the `pick_environment` core hook, adding to it the logic that defines when to use your new environments. +To do so, add the desired environment config files to the `config/env` directory. Then, override the `pick_environment` core hook, adding to it the logic that defines when to use your new environments. ## Basic structure @@ -73,9 +71,9 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value - location: + location: type: descriptor_type descriptor_setting1: value descriptor_setting2: value @@ -93,39 +91,38 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### The engines block Every environment configuration file starts with an `engines` block. Nested within it are all of the engines defined for that environment. -In our example, only a single engine is defined, `tk-maya`. It has two settings listed, `apps` and `location`. - -`location` is a special setting that every bundle requires. The `apps` setting is a list of all the apps defined for the engine, each with its own settings. In this case, only one app is defined for the engine, `tk-multi-workfiles2`. +In our example, only a single engine is defined, `tk-maya`. It has two settings listed, `apps` and `location`. +`location` is a special setting that every bundle requires. The `apps` setting is a list of all the apps defined for the engine, each with its own settings. In this case, only one app is defined for the engine, `tk-multi-workfiles2`. ### The location descriptor -Every Toolkit bundle has a `location` setting, which we refer to as the bundle’s *descriptor*. The descriptor tells Toolkit where to find the given bundle, and depending on its type, whether to access it directly or cache it locally. Some examples of locations that a Toolkit bundle can come from are the {% include product %} App Store, a git repository, a path on disk, or a zip file uploaded to your {% include product %} site. Each of these has a corresponding descriptor type, with settings specific to that type. Here again is the descriptor for the `tk-maya` engine from the example above: +Every Toolkit bundle has a `location` setting, which we refer to as the bundle’s _descriptor_. The descriptor tells Toolkit where to find the given bundle, and depending on its type, whether to access it directly or cache it locally. Some examples of locations that a Toolkit bundle can come from are the {% include product %} App Store, a git repository, a path on disk, or a zip file uploaded to your {% include product %} site. Each of these has a corresponding descriptor type, with settings specific to that type. Here again is the descriptor for the `tk-maya` engine from the example above: ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` -This is a descriptor of type `app_store`, which tells Toolkit to get the given bundle from the {% include product %} App Store. Descriptors of type `app_store` have the settings `name` and `version`. +This is a descriptor of type `app_store`, which tells Toolkit to get the given bundle from the {% include product %} App Store. Descriptors of type `app_store` have the settings `name` and `version`. -In contrast, if you are actively developing a custom bundle—say you’re working on writing a Toolkit app for a specific workflow in your studio, you may want to get it directly from a path on disk. In this case you’d use a descriptor of type `dev`, which might look like this: +In contrast, if you are actively developing a custom bundle—say you’re working on writing a Toolkit app for a specific workflow in your studio, you may want to get it directly from a path on disk. In this case you’d use a descriptor of type `dev`, which might look like this: ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` The `dev` descriptor has different settings from the `app_store` descriptor. While it can take other settings, it can be set up simply with a `path` setting pointing to where the app lives on disk. @@ -149,7 +146,7 @@ engines: version: v0.11.8 ``` -You can see that we have a single app defined, the `tk-multi-workfiles2` app. It currently only has a single setting defined: its descriptor. +You can see that we have a single app defined, the `tk-multi-workfiles2` app. It currently only has a single setting defined: its descriptor. If you wanted to make other apps available in the `tk-maya` engine in the `project` environment, you’d add them here. Let’s add the Panel, `tk-multi-shotgunpanel`, and the About app, `tk-multi-about`, to our engine. Our example `project.yml` file now looks like this: @@ -173,29 +170,29 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` -There are a few important things to note at this time: +There are a few important things to note at this time: -* The Default Config lists bundles in alphabetical order, and this example follows that convention. -* The file is beginning to get long, and we haven’t even added any configuration settings yet. -* You might imagine that you’ll be using these same apps in other engines and other environments. For example, you’ll probably have all three of these apps—the Panel, the About app, and the Workfiles app—in different engines (say, Houdini, Nuke, or Photoshop), and in different environments (like `asset_step` or `shot_step`). Defining common app settings in many places in your config means that when it comes time to make a change, you’ll have to make the modification in many places. +- The Default Config lists bundles in alphabetical order, and this example follows that convention. +- The file is beginning to get long, and we haven’t even added any configuration settings yet. +- You might imagine that you’ll be using these same apps in other engines and other environments. For example, you’ll probably have all three of these apps—the Panel, the About app, and the Workfiles app—in different engines (say, Houdini, Nuke, or Photoshop), and in different environments (like `asset_step` or `shot_step`). Defining common app settings in many places in your config means that when it comes time to make a change, you’ll have to make the modification in many places. -To mitigate the last two issues, Toolkit configurations support *includes*. +To mitigate the last two issues, Toolkit configurations support _includes_. ### Includes -*Includes* allow you to reference a section of one file in another file in your configuration. Using includes allows you set a configuration setting in one place, but use it in multiple environments. +_Includes_ allow you to reference a section of one file in another file in your configuration. Using includes allows you set a configuration setting in one place, but use it in multiple environments. Includes consist of two parts: -* The `includes` list: a YAML dictionary whose key is `includes`, and whose value is a list of all files we want to include from. -* A reference within your configuration settings, prefixed by the `@` symbol, and named to point to the name of the section you want to reference from the included file. +- The `includes` list: a YAML dictionary whose key is `includes`, and whose value is a list of all files we want to include from. +- A reference within your configuration settings, prefixed by the `@` symbol, and named to point to the name of the section you want to reference from the included file. -To flesh out our above example, you might have a single file where you hold the location descriptors for all of your engines. Let’s put that file in an `includes` subfolder, and call it `engine_locations.yml`. +To flesh out our above example, you might have a single file where you hold the location descriptors for all of your engines. Let’s put that file in an `includes` subfolder, and call it `engine_locations.yml`. The contents of `engine_locations.yml` would look like this: @@ -211,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` This file can act as a single source for all engine locations, and all of your environment configurations can reference it. Using this include file, our example now looks like this: @@ -246,7 +241,7 @@ engines: ![engine_locations include file](./images/env-config-ref/2.png) -You can see here that the value of the `location` setting for the `tk-maya` engine is now a reference to a key from the included YAML file. +You can see here that the value of the `location` setting for the `tk-maya` engine is now a reference to a key from the included YAML file. {% include info title="Note" content="Having all engine locations in a `config/env/includes/engine_locations.yml` file, as we do in this example, follows the convention of the Default Configuration." %} @@ -271,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -295,10 +289,9 @@ We’re now getting the `tk-maya` engine’s descriptor from the included `engin {% include info title="Note" content="The Default Configuration employs a second level of nesting that’s not demonstrated here. Every app or engine that has settings beyond just a descriptor has a settings file in `includes/settings` (e.g., `includes/settings/tk-maya.yml`, `includes/settings/tk-multi-workfiles2.yml`). The engine settings files include app settings from the app settings files, and the environment configuration files include from the engine settings files. For details on the Default Configuration’s structure, see [its README file](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md). For a detailed walkthrough of modifying a configuration setting, see the [Toolkit Basics Guide on Editing a Configuration Setting](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)." %} - ## Sparse configurations -Every Toolkit bundle has a set of available configuration settings, with a default value for each. Toolkit allows *sparse* configurations: if a configuration setting is not explicitly specified in the environment config files (and/or the files they include), then the default value from the bundle will be used. +Every Toolkit bundle has a set of available configuration settings, with a default value for each. Toolkit allows _sparse_ configurations: if a configuration setting is not explicitly specified in the environment config files (and/or the files they include), then the default value from the bundle will be used. In our example, we haven’t specified any settings for our apps aside from `location`. So, in our configuration’s current state, our three apps will use the default values for all of their settings. So, how do we know what configuration settings are available? @@ -308,12 +301,12 @@ In our example, we haven’t specified any settings for our apps aside from `loc With sparse configurations, it’s not immediately evident what configuration settings are available for an app simply by looking at your configuration files. To find out what configuration settings an app has available, you have two choices: -* **App documentation:** Each of our apps has its own documentation page, and each of these pages has a “Configuration Options” section. This section lists all of the available configuration settings for the app, with description and default values for each. You can [see the Workfiles documentation page](https://support.shotgunsoftware.com/hc/en-us/articles/219033088) as an example. The [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219033088) lists the documentation pages for all apps and engines. -* **The manifest:** Every Toolkit bundle includes a file called `info.yml` in its root directory. We refer to this file as the bundle’s *manifest*, and it defines all of the available configuration settings for the bundle, with a description and default value for each. You can find the manifest in your own cache of the bundle (e.g., `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` within your pipeline configuration), or in Github ([here it is for Workfiles as an example](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml)). +- **App documentation:** Each of our apps has its own documentation page, and each of these pages has a “Configuration Options” section. This section lists all of the available configuration settings for the app, with description and default values for each. You can [see the Workfiles documentation page](https://support.shotgunsoftware.com/hc/en-us/articles/219033088) as an example. The [Apps and Engines page](https://support.shotgunsoftware.com/hc/en-us/articles/219033088) lists the documentation pages for all apps and engines. +- **The manifest:** Every Toolkit bundle includes a file called `info.yml` in its root directory. We refer to this file as the bundle’s _manifest_, and it defines all of the available configuration settings for the bundle, with a description and default value for each. You can find the manifest in your own cache of the bundle (e.g., `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` within your pipeline configuration), or in Github ([here it is for Workfiles as an example](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml)). -## Modifying configuration settings +## Modifying configuration settings -To modify a configuration from the default value, simply add it to the proper block, in the proper environment in your Pipeline Configuration, and set its value. +To modify a configuration from the default value, simply add it to the proper block, in the proper environment in your Pipeline Configuration, and set its value. Going back to our example, let’s say that we want to configure `tk-multi-workfiles2` so that it launches automatically when Maya is launched in the project environment. We can see [in the app’s manifest](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25) that there is a `launch_at_startup` setting that controls whether to launch the Workfiles UI at application startup time, and that its default value is `False`. So, we’ll just add the `launch_at_startup` option, and set it to `True`. Our `project.yml` file now looks like this: @@ -339,13 +332,12 @@ engines: Note that if the settings for `tk-multi-workfiles2` were coming from an included file, we’d make this change in that file. - ## Additional resources -* [Toolkit Basics Guide: Editing a pipeline configuration](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) -* [Toolkit Basics Guide: Adding an app](../../guides/pipeline-integrations/getting-started/installing_app.md) -* [Animation pipeline tutorial](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [Descriptor reference documentation](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [Webinar: Toolkit administration](https://youtu.be/7qZfy7KXXX0) -* [File system configuration reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference) -* [Default Configuration environment structure README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [Toolkit Basics Guide: Editing a pipeline configuration](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) +- [Toolkit Basics Guide: Adding an app](../../guides/pipeline-integrations/getting-started/installing_app.md) +- [Animation pipeline tutorial](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [Descriptor reference documentation](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [Webinar: Toolkit administration](https://youtu.be/7qZfy7KXXX0) +- [File system configuration reference](https://support.shotgunsoftware.com/hc/en-us/articles/219039868-Integrations-File-System-Reference) +- [Default Configuration environment structure README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md index d9aa560c7..3d5513d70 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md @@ -121,10 +121,10 @@ The **Favorites Shelf** can be configured to display any of the registered comma ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` The value of the setting is a list of dictionaries identifying a registered command provided by one of the installed apps in the configuration. The `app_instance` key identifies a particular installed app and the `name` key matches the command's display name registered by that app. In the example above, you can see four favorited commands: the file open and save dialogs from the `tk-multi-workfiles2` app as well as the standard Toolkit publish and snapshot dialogs. These four commands will now show in the favorites shelf. @@ -142,7 +142,6 @@ To aid in debugging, there are a set of environment variables that change some o Note: Additional environment variables exist in the Adobe Framework. For details, please see the [developer documentation](https://developer.shotgridsoftware.com/tk-framework-adobe/). - ## Context fields display hook The engine comes with a hook to control the fields displayed in the **Context Header** section of the panel. There are two methods in the hook that can be overridden to customize what is displayed. @@ -164,5 +163,3 @@ The [default hook implementation](https://github.com/shotgunsoftware/tk-aftereff ## After Effects API Please see the [developer documentation](https://developer.shotgridsoftware.com/tk-aftereffects) for details on the After Effects API. - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-alias.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-alias.md index 02abf8bb0..430193e31 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-alias.md @@ -10,16 +10,16 @@ lang: en The {% include product %} engine for Alias contains a standard platform for integrating {% include product %} Apps into Alias. It is lightweight and straight forward and adds a {% include product %} menu to the Alias menu. # Information for App Developers - + ## PySide -The {% include product %} engine for Alias uses a PySide installation shipped with the {% include product %} Desktop and will activate this whenever this is necessary. +The {% include product %} engine for Alias uses a PySide installation shipped with the {% include product %} Desktop and will activate this whenever this is necessary. ## Alias Project Management Whenever the {% include product %} engine for Alias starts, it will set the Alias Project to point at a location defined in the settings for this engine. This means that the Project may also change when a new file is opened. The details relating to how the Alias project is set based on a file can be configured in the configuration file, using the template system. -*** +--- # Working with tk-alias @@ -29,7 +29,6 @@ When Alias opens, a {% include product %} menu (the Alias engine) is added to th ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunOtherApps.png) - ### File Open and Save Use the My Tasks and Assets tabs to see all your assigned tasks and browse for assets. To the right, use these tabs to view all files, working or published files associated with what is selected to the left. @@ -38,21 +37,18 @@ Use the My Tasks and Assets tabs to see all your assigned tasks and br ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunFileSave.png) - ### Snapshot -Opens the Snapshot dialog to create a quick backup of the current scene. +Opens the Snapshot dialog to create a quick backup of the current scene. ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunSnapshot.png) - ### Publish -Opens the Publish dialog for publishing the file to {% include product %}, which can then be used by artists downstream. For more information, see [Publishing in Alias](https://github.com/shotgunsoftware/tk-alias/wiki/Publishing).  +Opens the Publish dialog for publishing the file to {% include product %}, which can then be used by artists downstream. For more information, see [Publishing in Alias](https://github.com/shotgunsoftware/tk-alias/wiki/Publishing). ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunPublish.png) - ### Loader Opens the Content Loader app, allowing you to load data into Alias. For more information see [Loading in Alias](https://github.com/shotgunsoftware/tk-alias/wiki/Loading) @@ -64,4 +60,3 @@ Opens the Content Loader app, allowing you to load data into Alias. For more inf Opens the Breakdown dialog, which displays a list of referenced (WREF References) content, along with what in the scene is out-of-date. Select one or more items and click Update Selected to switch and use the latest version of the content. For more information see [Scene Breakdown in Alias](https://github.com/shotgunsoftware/tk-alias/wiki/Scene-Breakdown) ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunBreakdown.png) - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md index c6be0c194..77b99b4bc 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md @@ -13,17 +13,17 @@ The tk-desktop engine is an application to let you easily run your Toolkit apps. ![Processes](../images/engines/processes.png) -When you launch the desktop application, it will startup the tk-desktop engine for your site configuration. This configuration is usually automatically managed, although it is possible to disable that behavior and take control over what is in that environment. +When you launch the desktop application, it will startup the tk-desktop engine for your site configuration. This configuration is usually automatically managed, although it is possible to disable that behavior and take control over what is in that environment. -One of the fundamental principles of Toolkit is that projects can be completely isolated from each other. This is usually done to make sure that changes made to one project cannot adversely effect another project (possibly nearing delivery). In order to offer this project isolation, the desktop engine makes sure that whenever you are looking at the commands for a particular project, you will run them in a separate python interpreter that has been initialized just for that project. +One of the fundamental principles of Toolkit is that projects can be completely isolated from each other. This is usually done to make sure that changes made to one project cannot adversely effect another project (possibly nearing delivery). In order to offer this project isolation, the desktop engine makes sure that whenever you are looking at the commands for a particular project, you will run them in a separate python interpreter that has been initialized just for that project. -When you click on a project, a python interpreter is launched in the background. This python interpreter is the one the project has been configured to use and on startup will initialize the tk-desktop for that project. That instance of the engine will communicate back to the GUI what commands it can launch. +When you click on a project, a python interpreter is launched in the background. This python interpreter is the one the project has been configured to use and on startup will initialize the tk-desktop for that project. That instance of the engine will communicate back to the GUI what commands it can launch. -When you click on a command, that background python process is responsible for launching the command. This makes it possible (for example) to have one project running python 2.6 while testing python 2.7 on another project. +When you click on a command, that background python process is responsible for launching the command. This makes it possible (for example) to have one project running python 2.6 while testing python 2.7 on another project. ## Registering custom panels -Toolkit apps which have [panel based UI](http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.show_panel) will be automatically docked in tabs inside of Desktop when they execute. +Toolkit apps which have [panel based UI](http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.show_panel) will be automatically docked in tabs inside of Desktop when they execute. If you have a panel based app such as the {% include product %} Panel, and want it to appear as a tab in {% include product %} Desktop, just configure it to run at startup. When Desktop starts up in its site context mode (where it displays all projects), it will launch all items registered to auto start. If any of these items are panels, these will get docked. Items will be processed in the order they are defined in the configuration and this will dictate the tab order. @@ -38,9 +38,8 @@ tk-desktop: location: ... location: ... run_at_startup: - - {app_instance: '', name: Apps} - - {app_instance: tk-multi-shotgunpanel, name: ''} + - { app_instance: "", name: Apps } + - { app_instance: tk-multi-shotgunpanel, name: "" } ``` Please note that the special `Apps` entry controls where (in the tab order) the default `Apps` tab should appear. - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-flame.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-flame.md index e9eaeab8d..8bb9371b7 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-flame.md @@ -9,22 +9,22 @@ lang: en ## Installation -The {% include product %} engine for Flame relies on new integration hooks that were added in Flame 2015 Extension 2. This version of Flame *must* be used in order for the engine to function. For more info on Flame 2015 Extension 2 (including how to get it), reach out to [Flame Support](http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html). +The {% include product %} engine for Flame relies on new integration hooks that were added in Flame 2015 Extension 2. This version of Flame _must_ be used in order for the engine to function. For more info on Flame 2015 Extension 2 (including how to get it), reach out to [Flame Support](http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html). The simplest way to get started with the {% include product %} engine for Flame is to set up a new test project with our example pipeline configuration. You can do this by launching the {% include product %} Desktop, running the Project Setup for a new project and choosing the default Flame configuration (in the default configurations section). ## Flame Project Setup -The {% include product %} engine for Flame also helps associate the {% include product %} project with a Flame project, and creates it if need be. This is key to the integration, as it ensures data from Flame gets associated with the right things in {% include product %}. As an added feature, the engine provides functionality for managing the naming conventions of Flame projects as well as the other various settings for the project. +The {% include product %} engine for Flame also helps associate the {% include product %} project with a Flame project, and creates it if need be. This is key to the integration, as it ensures data from Flame gets associated with the right things in {% include product %}. As an added feature, the engine provides functionality for managing the naming conventions of Flame projects as well as the other various settings for the project. When Flame is launched via {% include product %} for the first time, a Flame project creation UI will appear that lets the artist edit the usual settings from the standard Flame project creation screen: ![Project](../images/engines/flame_project.png) -But with the {% include product %} integration, the settings can be pre-populated with pipeline-friendly values, helping artists quickly get the right thing without having to think about it. The defaults can be customized via the `project_setup_hook`, which supports the following options: +But with the {% include product %} integration, the settings can be pre-populated with pipeline-friendly values, helping artists quickly get the right thing without having to think about it. The defaults can be customized via the `project_setup_hook`, which supports the following options: `use_project_settings_ui` -If set to `True`, the project creation UI will appear. If `False`, the Flame project will automatically be created based on the rest of the defaults in the hook. +If set to `True`, the project creation UI will appear. If `False`, the Flame project will automatically be created based on the rest of the defaults in the hook. `get_server_hostname` By default this is set to 'localhost', but it can be overridden if desired. @@ -42,15 +42,14 @@ By default Flame will create a default workspace according to its standard works This will try to associate the user logged into the Flame machine with a user in {% include product %}. `get_project_settings` -This is where the main Flame settings are configured and the hook helps build the Flame project XML stream. The following parameters *must* be supplied: +This is where the main Flame settings are configured and the hook helps build the Flame project XML stream. The following parameters _must_ be supplied: -* FrameWidth (e.g. `1280`) -* FrameHeight (e.g. `1080`) -* FrameDepth (`16-bit fp`, `12-bit`, `12-bit u`, `10-bit`, `8-bit`) -* FieldDominance (`PROGRESSIVE`, `FIELD_1`, `FIELD_2`) -* AspectRatio (`4:3`, `16:9`, or floating point value as string) +- FrameWidth (e.g. `1280`) +- FrameHeight (e.g. `1080`) +- FrameDepth (`16-bit fp`, `12-bit`, `12-bit u`, `10-bit`, `8-bit`) +- FieldDominance (`PROGRESSIVE`, `FIELD_1`, `FIELD_2`) +- AspectRatio (`4:3`, `16:9`, or floating point value as string) -Proxy settings can also be supplied. For more info, see the [Autodesk Wiretap SDK docs](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)! - -To view the entire codebase for the project_setup hook, please see our [Github repo for the engine](https://github.com/shotgunsoftware/tk-flame/blob/master/hooks/project_startup.py). +Proxy settings can also be supplied. For more info, see the [Autodesk Wiretap SDK docs](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)! +To view the entire codebase for the project_setup hook, please see our [Github repo for the engine](https://github.com/shotgunsoftware/tk-flame/blob/master/hooks/project_startup.py). diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-houdini.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-houdini.md index 5e24d39a3..52ae4f540 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-houdini.md @@ -11,7 +11,6 @@ The {% include product %} Engine for Houdini contains a standard platform for in ![{% include product %} Engine for Houdini](../images/engines/houdini_engine.png) - # Information for App Developers ## Supported platforms @@ -26,7 +25,7 @@ For older versions of Houdini (13 and older) an external build of PySide is requ ![{% include product %} menu](../images/engines/houdini_menu.png) -A dynamic menu system was introduced by Side Effects as of Houdini 15, so the engine now supports rebuilding of the {% include product %} menu on context switches. +A dynamic menu system was introduced by Side Effects as of Houdini 15, so the engine now supports rebuilding of the {% include product %} menu on context switches. In Houdini 14 and older, the {% include product %} menu in Houdini is generated before Houdini starts and is static throughout the session. Due to this, the toolkit commands registered in the menu will not update on context changes. @@ -47,27 +46,27 @@ tk-houdini: apps: # ... other app definitions tk-multi-workfiles: - # ... other app settings - sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets - # ... other app settings + # ... other app settings + sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets + # ... other app settings enable_sg_shelf: true enable_sg_menu: false # ... other engine settings ``` -Once you've enabled the {% include product %} shelf, you need to manually add it to a shelf set inside houdini. +Once you've enabled the {% include product %} shelf, you need to manually add it to a shelf set inside houdini. ![Add the {% include product %} shelf](../images/engines/add_shelf.png) -Once added to a shelf set the {% include product %} shelf will remain there between houdini sessions and will update dynamically as your {% include product %} context changes. +Once added to a shelf set the {% include product %} shelf will remain there between houdini sessions and will update dynamically as your {% include product %} context changes. ## Panels As of **v0.2.8** the engine adds support for embedded toolkit panels. -The panel support currently requires Houdini version **15.0.272** or later for proper embedded panels. Registered panels will show up as panes in the pane menu for supported versions of Houdini. +The panel support currently requires Houdini version **15.0.272** or later for proper embedded panels. Registered panels will show up as panes in the pane menu for supported versions of Houdini. -Older versions of Houdini will display the registered panels as dialogs. SESI may backport some bug fixes to newer builds of Houdini 14. If and when that happens, we will make embedded panels work for those versions as well. +Older versions of Houdini will display the registered panels as dialogs. SESI may backport some bug fixes to newer builds of Houdini 14. If and when that happens, we will make embedded panels work for those versions as well. ## Apps with OTLs @@ -94,24 +93,24 @@ Next, you can make a copy of the `tk-multi-launchapp` app's `app_launch` hook in ```yaml launch_houdini: - defer_keyword: '' + defer_keyword: "" engine: tk-houdini extra: {} - hook_app_launch: app_launch # <----- use a custom app_launch hook + hook_app_launch: app_launch # <----- use a custom app_launch hook hook_before_app_launch: default - icon: '{target_engine}/icon_256.png' - linux_args: '' - linux_path: '@houdini_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.6.6} - mac_args: '' - mac_path: '@houdini_mac' + icon: "{target_engine}/icon_256.png" + linux_args: "" + linux_path: "@houdini_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.6.6 } + mac_args: "" + mac_path: "@houdini_mac" menu_name: Launch Houdini versions: [] - windows_args: '' - windows_path: '@houdini_windows' + windows_args: "" + windows_path: "@houdini_windows" ``` -Then all you have to do is modify the launch logic to launch the executable directly. As an example, you could keep the old behavior for directories (application bundles) and otherwise execute the command directly. Here's an example: +Then all you have to do is modify the launch logic to launch the executable directly. As an example, you could keep the old behavior for directories (application bundles) and otherwise execute the command directly. Here's an example: ```python elif system == "darwin": diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md index eba255499..74097ba38 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md @@ -23,8 +23,8 @@ It adds {% include product %} shortcuts to the file dialogs which makes it easy You can add your own shortcuts based on template paths in your current environment with the `favourite_directories` setting. The setting expects a list of dictionaries, with each item in the list representing a new favourite directory. Here is an example of the format you would use: (the icon can also be left unspecified by providing "" as the value.) -``` yaml - favourite_directories: +```yaml +favourite_directories: - display_name: "Shot Publish Path" template_directory: "shot_publish_area_nuke" icon: "icons/custom_publish_icon.png" @@ -35,18 +35,15 @@ You can add your own shortcuts based on template paths in your current environme The "{% include product %} Current Project" favourite is added automatically for each root defined. You can customize the name with the `project_favourite_name` setting, or disable these favourites by setting the value to an empty string `''` - - -*** +--- _Note: There is currently a bug in Nuke 8.0 running specifically on CentOS 6.5 that causes Nuke to crash when running Toolkit. Other versions of CentOS are unaffected. The Foundry is aware of this issue (bug 43766). If you are running into this, please contact us so we can try and help you workaround it until it is resolved in a future update of Nuke._ - ## Information for App Developers - + ### Context Tracking -The {% include product %} engine for Nuke will switch context automatically when files are loaded. Whenever a file is loaded, the engine will look at the file, try and resolve a context from it. +The {% include product %} engine for Nuke will switch context automatically when files are loaded. Whenever a file is loaded, the engine will look at the file, try and resolve a context from it. ### Apps with custom gizmos @@ -56,7 +53,7 @@ The {% include product %} engine for Nuke makes it easy to handle custom gizmos. You can then easily access your gizmo via the create node functionality: -* `nuke.createNode("WriteTank")` +- `nuke.createNode("WriteTank")` {% include info title="Warning" content="Please note that while the use of gizmos may be convenient, it is typically NOT the right solution if you want to create nodes that persist in a scene. The reason for this is because as soon as you have put a gizmo in the scene, you have introduced a dependency between that scene and the gizmo code. Not only will you need to load the ShotGrid Toolkit every time you load the scene, but you also need to carefully manage your code so that any updates to the code does not break old gizmos being used in scenes." %} @@ -84,7 +81,7 @@ At app startup, register app handle as part of the nuke namespace: If you for example have a button on your group node and want to call some {% include product %} app code, try to gracefully fail if the {% include product %} Toolkit cannot be found. The below code is code that is associated with a python button knob that belongs to the group node that the app can create: ```python -# have to gracefully support the case when +# have to gracefully support the case when # sgtk is not in the system at all! import nuke try: @@ -109,26 +106,60 @@ It allows you to place {% include product %} App actions in several places in th Because Hiero has several different menus, there are more options to configure where menu items go than in Maya or Nuke, for example. The {% include product %} engine for Nuke's Hiero workflow configuration may look like this: ```yaml - - tk-hiero: - location: {name: tk-nuke, type: app_store, version: v0.6.9} - debug_logging: false - - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - bin_context_menu: - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "Version up Current Scene...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot History...", requires_selection: true} - - {app_instance: tk-multi-publish, keep_in_menu: false, name: "Publish Project...", requires_selection: true} - - menu_favourites: - - {app_instance: tk-multi-workfiles, name: Shotgun File Manager...} +tk-hiero: + location: { name: tk-nuke, type: app_store, version: v0.6.9 } + debug_logging: false + + timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + bin_context_menu: + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "Version up Current Scene...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot History...", + requires_selection: true, + } + - { + app_instance: tk-multi-publish, + keep_in_menu: false, + name: "Publish Project...", + requires_selection: true, + } + + menu_favourites: + - { app_instance: tk-multi-workfiles, name: Shotgun File Manager... } ``` Most engines have a `menu_favourites` option, a list where you can specify "shortcuts" which are put on the main {% include product %} menu. In addition to this, the Hiero-specific configuration has three special sections: @@ -150,7 +181,6 @@ Some Toolkit Apps requires a notion of a default scene or default project. For e Because Hiero does not have the notion of a current project, we have added more powerful tools so that Apps can easily find out what is being clicked on inside of Hiero. Therefore, two methods have been added to the {% include product %} engine for Hiero: - #### get_menu_selection() Returns the list of Hiero objects selected in the most recent menu click. @@ -168,7 +198,7 @@ Examples of objects that are being returned are: **Parameters & Return Value** -* **Returns:** List of Hiero Objects +- **Returns:** List of Hiero Objects **Example** @@ -212,7 +242,7 @@ Returns one of the following constants: #### How to configure your hooks to work with Hiero -Multi Apps configured for Hiero will typically need to find out which project was being clicked on. For example, the `tk-multi-workfiles` App needs to do a "{% include product %} Save As" of a project. We therefore add the Tank Save As command to the bin menu in Hiero so that a user can right click a project in the bin view and select the *Save As* option. +Multi Apps configured for Hiero will typically need to find out which project was being clicked on. For example, the `tk-multi-workfiles` App needs to do a "{% include product %} Save As" of a project. We therefore add the Tank Save As command to the bin menu in Hiero so that a user can right click a project in the bin view and select the _Save As_ option. ![menu](../images/engines/nuke-hiero-bin_menu.png) @@ -220,7 +250,12 @@ The engine configuration would look like this: ```yaml bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } ``` Now, in the app itself, each engine needs to configure a hook which handles scene events such as @@ -315,4 +350,3 @@ just turn on the engine debug mode. In the script editor you get a summary of th that are selected with each click: ![menu](../images/engines/nuke-hiero-engine_debug.png) - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md index 39975cb28..787315bfb 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md @@ -121,10 +121,10 @@ The **Favorites Shelf** can be configured to display any of the registered comma ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` The value of the setting is a list of dictionaries identifying a registered command provided by one of the installed apps in the configuration. The `app_instance` key identifies a particular installed app and the `name` key matches the command's display name registered by that app. In the example above, you can see four favorited commands: the file open and save dialogs from the `tk-multi-workfiles2` app as well as the standard Toolkit publish and snapshot dialogs. These four commands will now show in the favorites shelf. @@ -148,6 +148,7 @@ The engine exposes the Javascript API for Photoshop CC to Python. The full docs The Photoshop API object is exposed as `engine.adobe`. The examples below show how it is possible to directly manipulate the Photoshop DOM from within Toolkit apps and hooks. The standard Toolkit apps also contain working examples of how to interact with Photoshop documents. #### Examples + Load a file: ```python @@ -216,5 +217,5 @@ Note: Additional environment variables exist in the Adobe Framework. For details ### App Developer notes -* Because the python process is separate from the Photoshop CC process, there is some work done within the engine to try to make the app windows show above the Photoshop window in as clean a manner as possible. One gotcha with this setup is the default option to use native OS windows for `QFileDialog`. If you are developing an app for use with this engine, be sure -to set the option to not use the native dialog. [See an example of this in the tk-multi-pythonconsole app](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218). +- Because the python process is separate from the Photoshop CC process, there is some work done within the engine to try to make the app windows show above the Photoshop window in as clean a manner as possible. One gotcha with this setup is the default option to use native OS windows for `QFileDialog`. If you are developing an app for use with this engine, be sure + to set the option to not use the native dialog. [See an example of this in the tk-multi-pythonconsole app](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218). diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md index ebe3550aa..f10d08a92 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md @@ -7,7 +7,7 @@ lang: en # {% include product %} -The {% include product %} engine manages apps that can be launched from within {% include product %}. Sometimes we refer to these Toolkit Apps as *Actions*. They typically appear as items on menus inside of {% include product %}. +The {% include product %} engine manages apps that can be launched from within {% include product %}. Sometimes we refer to these Toolkit Apps as _Actions_. They typically appear as items on menus inside of {% include product %}. ## Using {% include product %} Pipeline Toolkit Actions @@ -28,10 +28,10 @@ Developing apps that run inside of {% include product %} is easy! If you are not As of Core v0.13, you can use all the multi apps with the {% include product %} Engine. Technically speaking there is little difference between the {% include product %} engine and other engines. There are, however, some subtle differences: -* You will need to manually install PySide or PyQt into your standard python environment if you want to +- You will need to manually install PySide or PyQt into your standard python environment if you want to execute QT based apps in the {% include product %} Engine. -* It is possible in the {% include product %} engine to make an action visible to a user depending on which - permissions group they belong to. This is useful if you want example want to add a command to +- It is possible in the {% include product %} engine to make an action visible to a user depending on which + permissions group they belong to. This is useful if you want example want to add a command to the {% include product %} Action menu and you only want admins to see it. A hello-world style {% include product %} App, only visible to admins, would look something like this: @@ -40,21 +40,20 @@ A hello-world style {% include product %} App, only visible to admins, would loo from tank.platform import Application class LaunchPublish(Application): - + def init_app(self): """ Register menu items with {% include product %} - """ + """ params = { "title": "Hello, World!", "deny_permissions": ["Artist"], } - + self.engine.register_command("hello_world_cmd", self.do_stuff, params) - + def do_stuff(self, entity_type, entity_ids): # this message will be displayed to the user - self.engine.log_info("Hello, World!") + self.engine.log_info("Hello, World!") ``` - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md index c59396f60..163ae41e7 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md @@ -10,10 +10,10 @@ lang: en The {% include product %} engine for VRED contains a standard platform for integrating {% include product %} Apps into VRED. It is lightweight and straight forward and adds a {% include product %} menu to the VRED menu. ## Information for App Developers - + ### PySide -The {% include product %} engine for VRED contains a PySide installation, and will activate this whenever this is necessary. +The {% include product %} engine for VRED contains a PySide installation, and will activate this whenever this is necessary. ### VRED Project Management @@ -26,7 +26,6 @@ This {% include product %} integration supports the VRED product family (Pro & D When VRED opens, a {% include product %} menu (the VRED engine) is added to the menu bar. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunMenuVRED.png) - ### File Open and Save Use the My Tasks and Assets tabs to see all your assigned tasks and browse for assets. To the right, use these tabs to view all files, working or published files associated with what is selected to the left. @@ -34,22 +33,23 @@ Use the My Tasks and Assets tabs to see all your assigned tasks and br ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunFileSaveVRED.png) - ### Snapshot -Snapshot: Opens the Snapshot dialog to create a quick backup of the current scene. + +Snapshot: Opens the Snapshot dialog to create a quick backup of the current scene. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunSnapshotVRED.png) +### Publish -### Publish Publish: Opens the Publish dialog for publishing the file to {% include product %}, which can then be used by artists downstream. For more information on VRED Publishing, [see here](https://github.com/shotgunsoftware/tk-vred/wiki/Publishing) ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunPublishVRED.png) +### Loader -### Loader Load: Opens the Content Loader app, along with instructional slides explaining how it works. To see more info about VRED loading [see here](https://github.com/shotgunsoftware/tk-vred/wiki/Loading) ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunLoaderVRED.png) -### Scene Breakdown +### Scene Breakdown + Scene Breakdown: Opens the Breakdown dialog, which displays a list of "referenced" files (and their links), along with what in the scene is out-of-date. Select one or more items and click Update Selected to switch and use the latest version of the content. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunBreakdownVRED.png) diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md index 63136b1c4..35fe4640d 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md @@ -17,7 +17,7 @@ Currently the only interface is for the setup_project command. ![](images/setup_project_wizard.png) This is a QWizard implementation that walks somebody through setting up a Project -from their {% include product %} instance for Toolkit. To use the wizard, simply create an +from their {% include product %} instance for Toolkit. To use the wizard, simply create an instance of the class, passing in the project to setup (as a standard {% include product %} API entity dictionary) and the window to parent to. @@ -31,7 +31,7 @@ This will run the wizard and return a standard QDialog Accepted or Rejected valu ### SetupProjectWizard Constructor -Initialize a SetupProjectWizard. This is a subclass of QtGui.QWizard. +Initialize a SetupProjectWizard. This is a subclass of QtGui.QWizard. ```python SetupProjectWizard() diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md index 699b1fe3d..9e711df72 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md @@ -8,24 +8,24 @@ lang: en # Toolkit Desktop Server Framework The desktopserver framework provides the functionality behind {% include product %}'s local file linking -and Toolkit integration. It provides a local websocket server that securely listens for +and Toolkit integration. It provides a local websocket server that securely listens for requests from {% include product %} websites for an action that requires desktop access. -For local file linking, these requests allow {% include product %} access to local file paths from the -web interface and the ability to open those files directly from {% include product %} pages when requested. -For Toolkit, they allow {% include product %} to determine what pipeline actions have been registered for a +For local file linking, these requests allow {% include product %} access to local file paths from the +web interface and the ability to open those files directly from {% include product %} pages when requested. +For Toolkit, they allow {% include product %} to determine what pipeline actions have been registered for a given entity and to execute them. ## How to get desktop integration running For these {% include product %} features to work, some supported desktop integration must be running. [This page](https://support.shotgunsoftware.com/entries/95402178) covers the various options for how -{% include product %} can integrate with your desktop. The Websocket Server section covers the functionality that +{% include product %} can integrate with your desktop. The Websocket Server section covers the functionality that this framework provides. ### {% include product %} Desktop -This framework is bundled with {% include product %} Desktop, which can be downloaded [here](https://support.shotgunsoftware.com/entries/95442748#Downloading%20Shotgun%20Desktop). When {% include product %} Desktop is run it will automatically start up the websocket server. If you +This framework is bundled with {% include product %} Desktop, which can be downloaded [here](https://support.shotgunsoftware.com/entries/95442748#Downloading%20Shotgun%20Desktop). When {% include product %} Desktop is run it will automatically start up the websocket server. If you are already running {% include product %} Desktop then your setup process is complete. ### Configuring the server @@ -45,10 +45,10 @@ custom wrapper. If that is set, the wrapper will be called with the path as its ## Certificates -The first time you run the server it will generate the certificate required to establish a secure +The first time you run the server it will generate the certificate required to establish a secure connection. These certificates are stored local to your machine and are never shared with the public. -They allow the encrypted connection that websockets requires, which is necessary despite all traffic -remaining local (from your browser to the server); {% include product %}'s websocket traffic is never made available +They allow the encrypted connection that websockets requires, which is necessary despite all traffic +remaining local (from your browser to the server); {% include product %}'s websocket traffic is never made available over the Internet. When the certificates are registered with the system you will see dialogs appear like the following. @@ -58,7 +58,6 @@ Click "Ok" to allow the registration to proceed. ![](images/windows_warning_1.jpg) ![](images/windows_warning_2.jpg) - When using the {% include product %} Desktop, the generated certificates will be stored in the following locations: **OS X**: ~/Library/Caches/Shotgun/desktop/config/certificates
@@ -68,11 +67,11 @@ When using the {% include product %} Desktop, the generated certificates will be ## Security Setup - Local {% include product %} Installs By default, the websocket server is setup to listen to hosted {% include product %} sites on port 9000. -If you run a local {% include product %} server, you will need to update the configuration for the {% include product %} server +If you run a local {% include product %} server, you will need to update the configuration for the {% include product %} server to allow connections from your websocket server. -When running {% include product %} Desktop, you will need to setup a ```config.ini``` file that lives with the -{% include product %} binary. There are detailed instructions for where this file needs to live +When running {% include product %} Desktop, you will need to setup a `config.ini` file that lives with the +{% include product %} binary. There are detailed instructions for where this file needs to live [here](https://support.shotgunsoftware.com/entries/95442748#Advanced%20Installation%20Topics). Within that file there is a section that controls the functionality of the websocket server. @@ -88,9 +87,9 @@ whitelist=*.shotgunstudio.com ## Troubleshooting -On Linux the server introduces a dependency on libffi. If Desktop crashes on startup and you see a message about libffi not found in your logs, then you need to install this package. +On Linux the server introduces a dependency on libffi. If Desktop crashes on startup and you see a message about libffi not found in your logs, then you need to install this package. -Visit our [support site](https://knowledge.autodesk.com/contact-support) if you have any issues or questions during setup. If there is a problem +Visit our [support site](https://knowledge.autodesk.com/contact-support) if you have any issues or questions during setup. If there is a problem running the server, please set **debug** to **1** in the **config.ini** file and include Desktop's log file. diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md index 3cafc67dc..7b8859f43 100644 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ b/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md @@ -6,6 +6,7 @@ lang: en --- # Toolkit Desktop Startup Framework + The Desktop Startup framework implements the startup logic of the {% include product %} Desktop. Its main function is to: 1. initialize the browser integration @@ -21,7 +22,7 @@ The Desktop Startup framework implements the startup logic of the {% include pro > Note, this requires the {% include product %} Desktop app version `1.3.4`. If you are unsure of your application version, launch the {% include product %} Desktop. Once you are logged in, click on the user icon at the bottom right and click `About...`. The `App Version` should be `1.3.4` or greater. -By default, {% include product %} Desktop downloads `tk-framework-desktopstartup` updates locally on the user's machine and uses it during the launch sequence of the application. When you launch the application, Toolkit automatically checks for updates to the framework. If an update is available, it will also download and install it automatically. +By default, {% include product %} Desktop downloads `tk-framework-desktopstartup` updates locally on the user's machine and uses it during the launch sequence of the application. When you launch the application, Toolkit automatically checks for updates to the framework. If an update is available, it will also download and install it automatically. Alternately, you can configure the {% include product %} Desktop to use a specific copy of the framework instead of using the local copy. This will disable the auto-update function and you will now be responsible for updating your the startup logic. In order to be kept up to date with updates, we suggest you subscribe to [this page](https://support.shotgunsoftware.com/entries/97454918). diff --git a/docs/en/shotgun.md b/docs/en/shotgun.md index 9d3f5d17c..1666dfd98 100644 --- a/docs/en/shotgun.md +++ b/docs/en/shotgun.md @@ -11,9 +11,6 @@ Managing a production takes a lot of work to keep all the moving pieces in sync. Use our {% include product %} REST API or Python API to connect directly to your data, the Event Trigger Framework to automate repetitive tasks, and Action Menu Items to launch your apps directly from {% include product %}'s web interface. -We encourage you to use {% include product %} APIs to develop your own services, applications, modules, and components that operate on or with the Service for your own and your Authorized Users’ use. +We encourage you to use {% include product %} APIs to develop your own services, applications, modules, and components that operate on or with the Service for your own and your Authorized Users’ use. {% include warning title="Authentication Keys" content="We ask that you do not disclose (and do not permit your Authorized Users to disclose) API Information that includes authentication keys or other means that could allow users to access the Service or its functionality without a log on, or use the APIs yourself to access or allow users to access the Service or its functionality without a log on." %} - - - diff --git a/docs/en/toolkit.md b/docs/en/toolkit.md index c4bfd238e..5b92f857d 100644 --- a/docs/en/toolkit.md +++ b/docs/en/toolkit.md @@ -9,4 +9,4 @@ lang: en {% include product %} includes integrations that bring the {% include product %} experience into the creative tools artists use every day. Out of the box, you get plugin within artists’ tools that give you the foundation for a basic publish pipeline. -These integrations are built on the Toolkit platform, a set of APIs, UIs, and configurations that give studios the tools to build custom workflows. +These integrations are built on the Toolkit platform, a set of APIs, UIs, and configurations that give studios the tools to build custom workflows. diff --git a/docs/en/trusted-solutions/cloud.md b/docs/en/trusted-solutions/cloud.md index 67e10418c..2f9b36cd0 100644 --- a/docs/en/trusted-solutions/cloud.md +++ b/docs/en/trusted-solutions/cloud.md @@ -13,4 +13,4 @@ lang: en ## Further Reading -Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). \ No newline at end of file +Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). diff --git a/docs/en/trusted-solutions/tier1.md b/docs/en/trusted-solutions/tier1.md index 794358a37..aae8baea4 100644 --- a/docs/en/trusted-solutions/tier1.md +++ b/docs/en/trusted-solutions/tier1.md @@ -18,38 +18,45 @@ Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation ## In This Section ### Getting Started + -* [About Isolation](./tier1/getting_started/about.md) -* [Client Responsibilities](./tier1/getting_started/responsibilities.md) -* [Onboarding Process](./tier1/getting_started/onboarding.md) -* [Planning your Setup](./tier1/setup/planning.md) + +- [About Isolation](./tier1/getting_started/about.md) +- [Client Responsibilities](./tier1/getting_started/responsibilities.md) +- [Onboarding Process](./tier1/getting_started/onboarding.md) +- [Planning your Setup](./tier1/setup/planning.md) ### Features Description + -* [Media Isolation](./tier1/features/media_isolation.md) -* [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) -* [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) -* [Media Replication](./tier1/features/media_replication.md) + +- [Media Isolation](./tier1/features/media_isolation.md) +- [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) +- [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) +- [Media Replication](./tier1/features/media_replication.md) ### Setup + -* [Setup Overview](./tier1/setup/setup.md) -* [Migration Test Site](./tier1/setup/shotgun_poc_site.md) -* [Media Isolation](./tier1/setup/s3_bucket.md) -* [Media Traffic Isolation](./tier1/setup/media_segregation.md) -* [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) -* [Media Replication](./tier1/setup/s3_replication.md) -* [Isolation Fine Tuning](./tier1/setup/tuning.md) -* [Migration](./tier1/setup/migration.md) +- [Setup Overview](./tier1/setup/setup.md) +- [Migration Test Site](./tier1/setup/shotgun_poc_site.md) +- [Media Isolation](./tier1/setup/s3_bucket.md) +- [Media Traffic Isolation](./tier1/setup/media_segregation.md) +- [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) +- [Media Replication](./tier1/setup/s3_replication.md) +- [Isolation Fine Tuning](./tier1/setup/tuning.md) +- [Migration](./tier1/setup/migration.md) ### AWS Knowledge + -* [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) -* [{% include product %} AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) -* [S3](./tier1/knowledge/s3.md) -* [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) -* [Direct Connect](./tier1/knowledge/direct_connect.md) -* [Private Link](./tier1/knowledge/private_link.md) -* [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) -* [AWS Knowledge](./tier1/knowledge/aws.md) + +- [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) +- [{% include product %} AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) +- [S3](./tier1/knowledge/s3.md) +- [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) +- [Direct Connect](./tier1/knowledge/direct_connect.md) +- [Private Link](./tier1/knowledge/private_link.md) +- [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) +- [AWS Knowledge](./tier1/knowledge/aws.md) diff --git a/docs/en/trusted-solutions/tier1/features/features.md b/docs/en/trusted-solutions/tier1/features/features.md index e51276b67..b8673e7e6 100644 --- a/docs/en/trusted-solutions/tier1/features/features.md +++ b/docs/en/trusted-solutions/tier1/features/features.md @@ -16,8 +16,10 @@ To get the onboarding process started, go to [Onboarding Process](../getting_sta To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md). ## In This Section + -* [Media Isolation](./media_isolation.md) -* [Media Traffic Isolation](./media_traffic_isolation.md) -* [Web Traffic Isolation](./web_traffic_isolation.md) -* [Media Replication](./media_replication.md) \ No newline at end of file + +- [Media Isolation](./media_isolation.md) +- [Media Traffic Isolation](./media_traffic_isolation.md) +- [Web Traffic Isolation](./web_traffic_isolation.md) +- [Media Replication](./media_replication.md) diff --git a/docs/en/trusted-solutions/tier1/features/media_isolation.md b/docs/en/trusted-solutions/tier1/features/media_isolation.md index a50d57fdf..724cc5049 100644 --- a/docs/en/trusted-solutions/tier1/features/media_isolation.md +++ b/docs/en/trusted-solutions/tier1/features/media_isolation.md @@ -6,17 +6,21 @@ lang: en --- # Media Isolation + Media Isolation allows your studio to retain ownership and control of the media and attachments that you upload to {% include product %}. With Media Isolation, all the content that you upload to {% include product %} is stored in your studio's private S3 Bucket. Access to the media is provided to the {% include product %} services only, using [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). media-isolation-overview ## Client-Owned S3 Bucket + Storing media and attachments in an S3 bucket that you own means that you remain the legal owner of these artifacts, allowing you to comply with your company's security and legal policies. Your studio retains control of asset storage and access, access that you can revoke at will. media-isolation-arch ## More about Access + When using {% include product %} to upload and download media it is transferred directly to / from AWS S3 without transiting through Autodesk infrastructure. {% include product %} will only access media in two situations: + 1. The {% include product %} Transcoding service will get read/write access once, soon after upload, when transcoding the media. See [Ephemeral Transcoding](../getting_started/about.md#ephemeral-transcoding) for details. 2. When the {% include product %} service generates S3 Links to your sources and transcoded media. @@ -25,9 +29,12 @@ This is rendered possible by leveraging [AWS AssumeRole keyless Security Token S {% include product %} Support staff do not have access to your S3 Bucket under any circumstances. ## Costs + When activating Media Isolation the following costs, previously covered by Autodesk, become the responsibility of the client: + 1. **S3 Costs.** All the S3 storage costs will be assumed by the customer. See [Media Isolation](../setup/tuning.md) for more details about how to reduce costs. 2. **S3 Bandwidth.** Bandwidth out of the S3 bucket will be assumed by the customer. ## What Media Isolation is not providing -Activating Media Isolation doesn't guarantee that the access to your {% include product %} site or media takes place within a closed network. \ No newline at end of file + +Activating Media Isolation doesn't guarantee that the access to your {% include product %} site or media takes place within a closed network. diff --git a/docs/en/trusted-solutions/tier1/features/media_replication.md b/docs/en/trusted-solutions/tier1/features/media_replication.md index 5fde47dbb..c0218a0a3 100644 --- a/docs/en/trusted-solutions/tier1/features/media_replication.md +++ b/docs/en/trusted-solutions/tier1/features/media_replication.md @@ -12,14 +12,17 @@ lang: en media-replication-overview ## Pre-requisites + Media Isolation is required in order to elect Media Replication. ## Configuration by users + When using Media Replication, each user can customize which region data is read from. A user can either specify the region to use, or use automatic mode. In automatic mode {% include product %} selects the replica determined by the user's IP address using IP ranges specified in the Isolation Preferences. media-replication-preferences ## How it works + {% include product %} can be configured to read from up to two different buckets. Using the [AWS S3 Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) feature, you can configure replication between buckets in different regions, and then consume media from the region closest to your users. It is important to underline that media is always uploaded to the main bucket. media-replication-arch @@ -27,12 +30,16 @@ When using Media Replication, each user can customize which region data is read Following AWS service level agreement, S3 guarantees the replication of 99.99% of the object within 15 minutes. ### Replication Delay + A small amount of time, typically under 15 minutes, is required before replication happens. The replication time depends on the size of the object to replicate. In order to alleviate that replication delay, {% include product %} will, for a small period of time, generate links from to object in the source bucket instead of the replica. The duration of this transitional state in configurable in the Isolation Preferences. ## Costs + Activating the Media Replication feature can increase your AWS costs considerabibly. Before activating, be aware that: + 1. Your S3 cost linked to {% include product %} usage will more or less double, because the media is now stored in two regions. 2. You will be charged for the transfer cost between the source and the destination region. See [AWS S3 CRR and the destination region](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-and-other-bucket-configs.html#replication-and-dest-region) for more details. ## Next Steps + See [Media Replication Setup](../setup/s3_replication.md) for setup instructions. diff --git a/docs/en/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/en/trusted-solutions/tier1/features/media_traffic_isolation.md index 1b6d36037..8bd45ba3e 100644 --- a/docs/en/trusted-solutions/tier1/features/media_traffic_isolation.md +++ b/docs/en/trusted-solutions/tier1/features/media_traffic_isolation.md @@ -12,20 +12,26 @@ Communication between your client systems and S3 bucket targets a number of AWS media-traffic-isolation-overview ## Configuration -An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. + +An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. ## How it works + {% include product %} can be configured to use an S3 Proxy address to communicate with your S3 bucket. Deploying the S3 Proxy component within your VPC makes it possible to isolate traffic from the public Internet completely, or to allow more tightly controlled access from the Internet to your media. media-traffic-isolation-arch ### Secure communication + You are responsible for supplying and renewing SSL certificates for the S3 Proxy component. ## Costs + Activating the Media Traffic Isolation feature will increase your AWS costs. Before activating, be aware that: + 1. There are costs associated with running the S3 Proxy component. See [AWS Fargate Pricing](https://aws.amazon.com/fargate/pricing/) for more details. 2. If you choose to make your S3 Proxy publicly accessible, there are also additional costs associated with AWS Global Accelerator. See [AWS Global Accelerator Pricing](https://aws.amazon.com/global-accelerator/pricing) for more details. ## Next Steps + See [Media Traffic Isolation](../setup/media_segregation.md) for setup instructions. diff --git a/docs/en/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/en/trusted-solutions/tier1/features/web_traffic_isolation.md index e062739bc..9b7d3cb72 100644 --- a/docs/en/trusted-solutions/tier1/features/web_traffic_isolation.md +++ b/docs/en/trusted-solutions/tier1/features/web_traffic_isolation.md @@ -12,15 +12,19 @@ Communication between your client systems and your {% include product %} site wi web-traffic-isolation-overview ## Configuration + A unique VPC endpoint is provided by Autodesk. Access to the endpoint must be configured from your VPC, and the relevant DNS configuration must be completed to allow your client systems to reach the new endpoint. ## How it works + By using the provided VPC endpoint, web traffic is isolated from the public Internet completely. All web traffic transits between your AWS VPC and Autodesk's AWS VPC, rather than the public Internet. web-traffic-isolation-arch ## Costs + The only cost associated with Web Traffic Isolation are those related to web traffic transiting to/from your AWS VPC. See [AWS VPC Pricing](https://aws.amazon.com/vpc/pricing) for more details. ## Next Steps + See [Web Traffic Isolation](../setup/traffic_segregation.md) for setup instructions. diff --git a/docs/en/trusted-solutions/tier1/getting_started/about.md b/docs/en/trusted-solutions/tier1/getting_started/about.md index 2798bcb09..ce1b1418f 100644 --- a/docs/en/trusted-solutions/tier1/getting_started/about.md +++ b/docs/en/trusted-solutions/tier1/getting_started/about.md @@ -11,48 +11,49 @@ The isolation feature set combines our Cloud Hosted Platform with client-managed Leveraging the isolation feature set has the following advantages over the Standard offering: -* **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** -* **Web Traffic Isolation** from the public internet -* **Media Traffic Isolation** from the public internet -* **Media Replication** allowing you to replicate media in one additional AWS Region -* Access to fully managed {% include product %} Cloud Services -* Automatic and continuous version upgrades -* Ephemeral compute + in-memory segration between clients +- **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** +- **Web Traffic Isolation** from the public internet +- **Media Traffic Isolation** from the public internet +- **Media Replication** allowing you to replicate media in one additional AWS Region +- Access to fully managed {% include product %} Cloud Services +- Automatic and continuous version upgrades +- Ephemeral compute + in-memory segration between clients In a nutshell, this means that with the isolation features, your {% include product %} site and the data related to it cannot be reached by anyone outside of your studio network. The isolation feature set is a solution that requires less upkeep, as well as less IT/System Administrator knowledge and skills, than hosting {% include product %} on-premise. The list of advantages compared to on-premise includes, but is not limited to: -* No {% include product %} specific knowledge required -* No manual {% include product %} updates required -* Very low level of maintenance required for the AWS components +- No {% include product %} specific knowledge required +- No manual {% include product %} updates required +- Very low level of maintenance required for the AWS components ## Media isolation feature + Media Isolation allows your studio to keep the ownership and control of the media and attachments that you upload to {% include product %}. With Media Isolation, all the content that you upload to {% include product %} can be store in your studio private S3 bucket. Access to the media is provided to the {% include product %} service only, using AWS AssumeRole keyless Security Token Service. Your studio remains in control of the assets and the access to the assets, access that you can revoke at will. ## Traffic isolation features + Media and Web traffic isolation features can be enabled to prevent your traffic from being routed on the public internet, limiting it to the AWS backbone and your studio network. The traffic between {% include product %} Services and your studio stays in closed network, never going outside AWS or your Studio network. With the Media Traffic Isolation feature activated, the media will only leave your studio infrastructure once to get transcoded. ## Media Replication -{% include product %} is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. +{% include product %} is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. # Eligibility The Isolation feature set is available for all Super Awesome clients. See [Getting Started](./getting_started.md) for more details about how to active the different features. The activation of the isolation feature set is not instantaneous, and requires manual setup involving your AWS account. - # What the Isolation Feature Set is not The isolation feature set is not a completely isolated solution. Both the compute services and the database services are shared amongst clients, and managed by {% include product %}. From a hardware standpoint, the isolation features does not guarantee complete physical isolation. However, {% include product %} services are guaranteeing isolation at the memory level. Processes are never reused to answer requests from different clients during their lifetime. Client metadata is stored in different databases. Client media is individually stored on S3. - # High Level Architecture + ![tier1-arch](../images/tier1-about-arch.png) -The {% include product %} cloud service can be decoupled at a high level in 3 parts: +The {% include product %} cloud service can be decoupled at a high level in 3 parts: **Compute Stack:** The part of the {% include product %} Service that handles client requests and serves data to the client. @@ -63,9 +64,11 @@ The {% include product %} cloud service can be decoupled at a high level in 3 p Please read [Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk {% include product %}](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) for more details about the architecture. ## Ephemeral compute and memory isolation + Even if clients share the same infrastructure, {% include product %} guarantees a complete memory isolation, both in transit and at rest, of client data. This makes {% include product %} less prone to data leaking due to architecture flaws or software vulnerabilities exploiting memory, like buffer overflow. ## Ephemeral transcoding + ![tier1-transcoding](../images/tier1-about-transcoding.png) Everytime media is uploaded to {% include product %}, the transcoding service is invoked to create a web friendly versions of your assets. That process happens only once, after the initial upload. The media is directly uploaded from the client to S3, from where it is fetched by the {% include product %} Transcoding Service. Each transcoding job is handled by a single container, which is killed after that unique job. The only place the media temporarily lives is in the container memory. The {% include product %} Transcoding service doesn't store permanently a copy of your media. diff --git a/docs/en/trusted-solutions/tier1/getting_started/getting_started.md b/docs/en/trusted-solutions/tier1/getting_started/getting_started.md index 9d70df760..04ebf5cf9 100644 --- a/docs/en/trusted-solutions/tier1/getting_started/getting_started.md +++ b/docs/en/trusted-solutions/tier1/getting_started/getting_started.md @@ -7,17 +7,18 @@ lang: en # Isolation Feature Set - Getting Started -Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. +Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. **The Isolation feature set is available only to Super Awesome clients. Before starting, make sure to upgrade your subscription to Super Awesome.** - To get the onboarding process started, go to [Onboarding Process](./onboarding.md). To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md) ## In This Section + -* [About the Isolation Feature Set](./about.md) -* [Client Responsibilities](./responsibilities.md) -* [Onboarding Process](./onboarding.md) -* [Planning Your Setup](../setup/setup.md) \ No newline at end of file + +- [About the Isolation Feature Set](./about.md) +- [Client Responsibilities](./responsibilities.md) +- [Onboarding Process](./onboarding.md) +- [Planning Your Setup](../setup/setup.md) diff --git a/docs/en/trusted-solutions/tier1/getting_started/onboarding.md b/docs/en/trusted-solutions/tier1/getting_started/onboarding.md index 3796b9709..9120619ea 100644 --- a/docs/en/trusted-solutions/tier1/getting_started/onboarding.md +++ b/docs/en/trusted-solutions/tier1/getting_started/onboarding.md @@ -19,13 +19,13 @@ To start the on-boarding process for any of the Isolation features, please open During the onboarding process, you'll have direct access to Autodesk and AWS Leaders who will support you during the implementation. -**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. +**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. -**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. +**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. -**Kickoff Meeting:** AWS and {% include product %} Leaders review the setup process with the you. +**Kickoff Meeting:** AWS and {% include product %} Leaders review the setup process with the you. -**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to {% include product %}, and activate the isolation features. +**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to {% include product %}, and activate the isolation features. **Training:** OPTIONAL. Help sessions, if needed, as you ramp up on the AWS/{% include product %} technologies required to securely set-up the isolation features for your site. @@ -39,4 +39,4 @@ During the onboarding process, you'll have direct access to Autodesk and AWS Lea ## Next Steps -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file +Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) diff --git a/docs/en/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/en/trusted-solutions/tier1/getting_started/responsibilities.md index 6459b59cc..5720c319f 100644 --- a/docs/en/trusted-solutions/tier1/getting_started/responsibilities.md +++ b/docs/en/trusted-solutions/tier1/getting_started/responsibilities.md @@ -4,15 +4,15 @@ title: Client Responsibilities pagename: tier1-getting_started-responsibilities lang: en --- - + # Client Responsibilities -Below, we have outlined setup responsibilities between Autodesk and You. +Below, we have outlined setup responsibilities between Autodesk and You. ## Isolation Setup You are entirely responsible for the validity, security, and execution of the Isolation setup in Your AWS Account. Autodesk should not, under any circumstances, be granted access to Your AWS environment. - + Autodesk is available during the process for assistance, but the configuration of Isolation features in Your AWS Account is to be executed by You on Your own. Isolation feature set activation requires the {% include product %} Support team's intervention. Activation delays are to be expected and will depend on demand. You understand that an estimated period of 2-8 weeks is usually required to complete the setup necessary to implement the isolation feature set. The setup time is highly dependent on your cooperation, so please plan to dedicate resources for the setup before beginning the onboarding process. @@ -21,16 +21,16 @@ Autodesk does not guarantee any timeline for setup completion. ## Onboarding -|Type| Description / Agreement | Responsibility | Available for Assistance| -|--------|-----|----------|---------| -|AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. |You |N/A| -|S3|Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) |You |{% include product %} and *AWS| -|Closed VPC |Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. |You |*AWS | -|Media Isolation |Creating the S3 end-points. Deploying the S3 Proxy. |You| {% include product %} and *AWS | -|Traffic Isolation |Creating VPCs. Creating Subnets.| You|{% include product %}| -|Private Access Point|Checking that the access point is only available from Your network.| {% include product %}| N/A| -|Monitoring and Reliability|Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. |{% include product %}|N/A| -|Service Level Objective|Maintaining {% include product %} target RPO and RTO (See [{% include product %} Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).|{% include product %}| N/A| -|Security and Governance |Maintaining the {% include product %} Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [{% include product %} Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).| {% include product %} |N/A| - -*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. +| Type | Description / Agreement | Responsibility | Available for Assistance | +| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------- | ------------------------------- | +| AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. | You | N/A | +| S3 | Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) | You | {% include product %} and \*AWS | +| Closed VPC | Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. | You | \*AWS | +| Media Isolation | Creating the S3 end-points. Deploying the S3 Proxy. | You | {% include product %} and \*AWS | +| Traffic Isolation | Creating VPCs. Creating Subnets. | You | {% include product %} | +| Private Access Point | Checking that the access point is only available from Your network. | {% include product %} | N/A | +| Monitoring and Reliability | Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. | {% include product %} | N/A | +| Service Level Objective | Maintaining {% include product %} target RPO and RTO (See [{% include product %} Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | {% include product %} | N/A | +| Security and Governance | Maintaining the {% include product %} Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [{% include product %} Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | {% include product %} | N/A | + +\*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. diff --git a/docs/en/trusted-solutions/tier1/knowledge/aws.md b/docs/en/trusted-solutions/tier1/knowledge/aws.md index 4047e2782..65042c3e9 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/aws.md +++ b/docs/en/trusted-solutions/tier1/knowledge/aws.md @@ -9,15 +9,15 @@ lang: en Below you can find links to additional reading material from AWS, including documentation on technologies leveraged by the Isolation feature set, as well as compliance information: -* [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) -* [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) -* [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) -* [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) - * [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) -* [**[AWS S3]** Overview](https://aws.amazon.com/s3/) - * [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) -* [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) - * [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) -* [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) - * [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) -* [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) +- [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) +- [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) +- [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) +- [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) + - [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) +- [**[AWS S3]** Overview](https://aws.amazon.com/s3/) + - [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) +- [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) + - [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) +- [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) + - [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) +- [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) diff --git a/docs/en/trusted-solutions/tier1/knowledge/connecting.md b/docs/en/trusted-solutions/tier1/knowledge/connecting.md index aa9aad9dd..3d2ffb368 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/connecting.md +++ b/docs/en/trusted-solutions/tier1/knowledge/connecting.md @@ -15,8 +15,6 @@ Some of the common options our clients have used include: Using a VPN appliance - AWS-managed or client-managed - your studio can establish a secure connection between your data center (or offices) to your AWS private VPC. - ## AWS Direct Connect [AWS Direct Connect](./direct_connect.md) creates a dedicated link between your studio and your AWS VPC. This will help segregate your studio's network traffic to your private AWS VPC from general internet traffic. - diff --git a/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md index acf1ab748..f06777428 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ b/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md @@ -7,10 +7,9 @@ lang: en # {% include product %} AWS Direct Connect Onboarding - ## Introduction -AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. +AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. ## Review of Shogun Configuration in AWS @@ -22,16 +21,14 @@ AWS Direct Connect (DX) is used to establish private connectivity between AWS an 2. Customer has equipment and network presence in an AWS Direct Connect location 3. Customer does not have equipment or presence in an AWS Direct Connect location - ## Setup Options 1. Request a dedicated Direct Connect connection through AWS Console - 1. Provision the required connectivity yourself - 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment + 1. Provision the required connectivity yourself + 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment 2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - -## Criteria to Determine Setup Path +## Criteria to Determine Setup Path If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console (Option 1a): @@ -50,11 +47,12 @@ If you answer “yes” to the following, then you should work with an AWS Direc - Are you already working with an AWS Direct Connect Partner? - Do you want a Partner to facilitate the setup? - Are you looking for a port less than 1Gbps or a hosted connection? -***Disclaimer:*** *All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria.* + **_Disclaimer:_** _All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria._ ## Setup Directions ### Request through AWS Console - Option 1 (a and b) + 1. [Create a Connection in the AWS Console](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest) 1. [Download the LOA-CFA](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#DedicatedConnection). The LOA is the authorization to connect to AWS and is required to establish the cross-network connection. 1. (Option 1a only) Request cross-connects at AWS Direct Connect locations. Find contact information [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html). @@ -64,9 +62,9 @@ If you answer “yes” to the following, then you should work with an AWS Direc ### Request through AWS Direct Connect Partner - Option 2 1. [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/). The criteria for choosing an AWS Partner are: - - AWS Region - - Providers - - If you are already working with an AWS Direct Connect Partner + - AWS Region + - Providers + - If you are already working with an AWS Direct Connect Partner 1. If hosted connection, [accept a hosted connection](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest). More information can be found [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/accept-hosted-connection.html). 1. Once the hosted connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). @@ -80,8 +78,6 @@ Short Answer - It depends. A lot of factors go into the time it takes to set up [AWS Direct Connect FAQs](https://aws.amazon.com/directconnect/faqs/?nc=sn&loc=6) - - ## VPN A site-to-site VPN can be used as an alternative to AWS Direct Connect. Learn more about [AWS VPN here](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). diff --git a/docs/en/trusted-solutions/tier1/knowledge/endpoints.md b/docs/en/trusted-solutions/tier1/knowledge/endpoints.md index 12d99d191..5ea551886 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/endpoints.md +++ b/docs/en/trusted-solutions/tier1/knowledge/endpoints.md @@ -7,4 +7,4 @@ lang: en # VPC Endpoints -Coming soon. \ No newline at end of file +Coming soon. diff --git a/docs/en/trusted-solutions/tier1/knowledge/knowledge.md b/docs/en/trusted-solutions/tier1/knowledge/knowledge.md index 6eaae7b9d..41efa1853 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/knowledge.md +++ b/docs/en/trusted-solutions/tier1/knowledge/knowledge.md @@ -8,12 +8,14 @@ lang: en # Generic Knowledge ## In This Section + -* [Connecting Your Studio With Your AWS VPC](./connecting.md) -* [{% include product %} AWS Direct Connect Onboarding](./direct_connect_onboarding.md) -* [S3](./s3.md) -* [VPC / IAM / Security Group](./vpc_iam_sec.md) -* [Direct Connect](./direct_connect.md) -* [Private Link](./private_link.md) -* [VPC Endpoints](./vpc_endpoints.md) -* [AWS Knowledge](./aws.md) \ No newline at end of file + +- [Connecting Your Studio With Your AWS VPC](./connecting.md) +- [{% include product %} AWS Direct Connect Onboarding](./direct_connect_onboarding.md) +- [S3](./s3.md) +- [VPC / IAM / Security Group](./vpc_iam_sec.md) +- [Direct Connect](./direct_connect.md) +- [Private Link](./private_link.md) +- [VPC Endpoints](./vpc_endpoints.md) +- [AWS Knowledge](./aws.md) diff --git a/docs/en/trusted-solutions/tier1/knowledge/private_link.md b/docs/en/trusted-solutions/tier1/knowledge/private_link.md index daa50aa49..0c756386a 100644 --- a/docs/en/trusted-solutions/tier1/knowledge/private_link.md +++ b/docs/en/trusted-solutions/tier1/knowledge/private_link.md @@ -7,6 +7,6 @@ lang: en # Private Link -[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. +[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. In conjunction with [AWS Direct Connect](./direct_connect.md), PrivateLink helps create a dedicated connection between your studio and {% include product %}'s infrastructure. diff --git a/docs/en/trusted-solutions/tier1/learn/learn.md b/docs/en/trusted-solutions/tier1/learn/learn.md index fc1364ac6..7194e05aa 100644 --- a/docs/en/trusted-solutions/tier1/learn/learn.md +++ b/docs/en/trusted-solutions/tier1/learn/learn.md @@ -7,4 +7,4 @@ lang: en # {% include product %} Isolation - Learn -This section will host a learning curriculum for {% include product %} Isolation features n the near future. \ No newline at end of file +This section will host a learning curriculum for {% include product %} Isolation features n the near future. diff --git a/docs/en/trusted-solutions/tier1/setup/media_segregation.md b/docs/en/trusted-solutions/tier1/setup/media_segregation.md index b87edd896..b4e0c87e4 100644 --- a/docs/en/trusted-solutions/tier1/setup/media_segregation.md +++ b/docs/en/trusted-solutions/tier1/setup/media_segregation.md @@ -17,21 +17,22 @@ Media Isolation activation is a pre-requisite to enable this feature. If you hav You will need to deploy a VPC with the required VPC endpoint. We provide a [private VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc-s3-privatelink.yml) CloudFormation templates as starting points. This template create the necessary VPC, subnets and VPC endpoint. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL to [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc-s3-privatelink.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc-s3-privatelink.yml) -* Click Next -* Set a stack name. Eg. `{% include product %}-vpc` -* Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly -* Set your S3 bucket name -* Click Next -* Click Next +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL to [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc-s3-privatelink.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc-s3-privatelink.yml) +- Click Next +- Set a stack name. Eg. `{% include product %}-vpc` +- Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly +- Set your S3 bucket name +- Click Next +- Click Next ## Set up access from your site network to your AWS VPC Options provided by AWS: -* [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) -* [AWS Direct Connect](https://aws.amazon.com/directconnect/) + +- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +- [AWS Direct Connect](https://aws.amazon.com/directconnect/) {% include info title="Note" content="If Direct Connect is chosen, we recommend testing with a simpler / faster solution in the meantime to validate your Isolation setup. You can then replace that solution with Direct Connect once it is available." %} @@ -57,10 +58,10 @@ Use the endpoint URL to list objects in your bucket using AWS CLI. In the follow ### Configure your test site to use your S3 VPC endpoint -* Navigate to the Site Preferences menu within {% include product %} and expand the Isolation section -* Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes -* Confirm that you are still able to access existing media -* Attempt to upload new media +- Navigate to the Site Preferences menu within {% include product %} and expand the Isolation section +- Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes +- Confirm that you are still able to access existing media +- Attempt to upload new media ## Next Steps diff --git a/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md b/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md index 3de278e64..0bc30f116 100644 --- a/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md +++ b/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md @@ -21,25 +21,26 @@ Media Isolation activation is a pre-requisite to enable this feature. If you hav You will need to deploy a VPC with the required VPC endpoints. We provide both [private VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) and [public VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) CloudFormation templates as starting points. These template create the necessary VPCs, subnets and VPC endpoints. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private VPC (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private VPC (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) - * Public VPC: + - Public VPC: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml) -* Click Next -* Set a stack name. Eg. `shotgun-vpc` -* Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly -* Set your S3 bucket name -* Click Next -* Click Next +- Click Next +- Set a stack name. Eg. `shotgun-vpc` +- Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly +- Set your S3 bucket name +- Click Next +- Click Next ## Set up access from your site network to your AWS VPC Options provided by AWS: -* [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) -* [AWS Direct Connect](https://aws.amazon.com/directconnect/) + +- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +- [AWS Direct Connect](https://aws.amazon.com/directconnect/) {% include info title="Note" content="If Direct Connect is chosen, we recommend testing with a simpler / faster solution in the meantime to validate your Isolation setup. You can then replace that solution with Direct Connect once it is available." %} @@ -57,12 +58,12 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC ### Make the Docker image available from a private AWS ECR repository -* Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) -* Name the repository `s3-proxy` -* Upload the s3-proxy Docker image to the newly created ECR repository - * [Install Docker](https://docs.docker.com/get-docker/) on your workstation - * Follow the `docker login` instructions shown by clicking the *View push commands* button - * Run the following commands, substituting the ECR endpoint in the example for yours: +- Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) +- Name the repository `s3-proxy` +- Upload the s3-proxy Docker image to the newly created ECR repository + - [Install Docker](https://docs.docker.com/get-docker/) on your workstation + - Follow the `docker login` instructions shown by clicking the _View push commands_ button + - Run the following commands, substituting the ECR endpoint in the example for yours: ``` docker pull quay.io/shotgun/s3-proxy:1.0.6 docker tag quay.io/shotgun/s3-proxy:1.0.6 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 @@ -73,43 +74,43 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC Create a new stack in AWS Console using either the [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) or [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) CloudFormation template. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private S3 proxy (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private S3 proxy (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) - * Public S3 proxy: + - Public S3 proxy: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) -* Click Next -* Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` -* Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously -* Click Next -* Accept `I acknowledge that AWS CloudFormation might create IAM resources` -* Click Next +- Click Next +- Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` +- Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously +- Click Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Click Next ### Configure HTTPS ShotGrid requires that the S3 proxy be accessed via HTTPS, therefore the AWS ALB handling requests for your newly created S3 proxy stack must be configured to accept HTTPS requests. -* Create a DNS entry pointing to your S3 proxy, depending upon whether public or private - * Private S3 proxy (default): - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name - * Add a DNS CNAME record pointing to the DNS name of the ALB +- Create a DNS entry pointing to your S3 proxy, depending upon whether public or private + - Private S3 proxy (default): + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name + - Add a DNS CNAME record pointing to the DNS name of the ALB Eg. `s3-proxy.mystudio.com. 300 IN CNAME s3proxy-12R1MXX0MFFAV-2025360147.us-east-1.elb.amazonaws.com.` - * Public S3 proxy: - * Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator - * Add a DNS CNAME record pointing to the DNS name of the Global Accelerator + - Public S3 proxy: + - Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator + - Add a DNS CNAME record pointing to the DNS name of the Global Accelerator Eg. `s3-proxy.mystudio.com. 300 IN CNAME a48a2a8de7cfd28d3.awsglobalaccelerator.com.` -* Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this -* Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab - * Click Add listener - * Select HTTPS from the Protocol dropdown menu - * Click Add action -> Forward to... - * Select your S3 proxy's target group from the Target group dropdown menu - * Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) - * Select the SSL certificate you'd like to use from ACM or import a new certificate - * Click Save +- Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this +- Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab + - Click Add listener + - Select HTTPS from the Protocol dropdown menu + - Click Add action -> Forward to... + - Select your S3 proxy's target group from the Target group dropdown menu + - Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) + - Select the SSL certificate you'd like to use from ACM or import a new certificate + - Click Save ### Add S3 proxy VPC to S3 bucket policy @@ -123,10 +124,10 @@ Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio ### Configure your test site to use the S3 proxy -* Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section -* Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes -* Confirm that you are still able to access existing media -* Attempt to upload new media +- Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section +- Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes +- Confirm that you are still able to access existing media +- Attempt to upload new media ## Next Steps diff --git a/docs/en/trusted-solutions/tier1/setup/migration.md b/docs/en/trusted-solutions/tier1/setup/migration.md index fcada3bf8..7f9e4bf0b 100644 --- a/docs/en/trusted-solutions/tier1/setup/migration.md +++ b/docs/en/trusted-solutions/tier1/setup/migration.md @@ -13,15 +13,14 @@ Once everything is configured and properly tested with the migration test site, Ask the {% include product %} team to start the migration process in support ticket/slack. - * {% include product %} will clone your production site database to your migration test site. - * You will do a first sync of the media from {% include product %}'s S3 bucket to your bucket. {% include product %} will provide the exact instructions. - * You can now test your site to be sure your existing media is available. +- {% include product %} will clone your production site database to your migration test site. +- You will do a first sync of the media from {% include product %}'s S3 bucket to your bucket. {% include product %} will provide the exact instructions. +- You can now test your site to be sure your existing media is available. ## Final migration The second test is to definitly migrate your site to use your own S3 bucket. - * You will do a second sync of the media from {% include product %}'s S3 bucket to your bucket. - * {% include product %} will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. - * You will do a final media sync. - +- You will do a second sync of the media from {% include product %}'s S3 bucket to your bucket. +- {% include product %} will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. +- You will do a final media sync. diff --git a/docs/en/trusted-solutions/tier1/setup/planning.md b/docs/en/trusted-solutions/tier1/setup/planning.md index e365d92b6..098ebfdde 100644 --- a/docs/en/trusted-solutions/tier1/setup/planning.md +++ b/docs/en/trusted-solutions/tier1/setup/planning.md @@ -12,10 +12,11 @@ lang: en ## Pick your options Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication + +- Media Isolation +- Media Traffic Isolation +- Web Traffic Isolation +- Media Replication ## AWS Account Creation @@ -33,20 +34,19 @@ Plan your AWS VPC and subnets IP ranges. ### IP Range Example -| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | -|--------|-----|----------|----------|----------| +| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | +| -------------- | ----------- | ----------- | ----------- | ----------- | | ap-southeast-2 | 10.1.0.0/16 | 10.1.0.0/24 | 10.1.1.0/24 | 10.1.2.0/24 | - ### Plan how you will privately access your AWS VPC If you plan to activate any of the Traffic Isolation feature, you will need a way to connect your AWS VPC and your network infrastructure. The main options are: - * AWS Direct Connect - * Other VPN solution +- AWS Direct Connect +- Other VPN solution We highly recommand you to leverage Direct Connect. Direct Connect guarantees the lowest latency possible to the {% include product %} services, a consistent network experience, and allow you to leverage the optimization AWS is relying on to guarantee an optimal performance across the globe. ## Next Step -With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) \ No newline at end of file +With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) diff --git a/docs/en/trusted-solutions/tier1/setup/s3_bucket.md b/docs/en/trusted-solutions/tier1/setup/s3_bucket.md index 91339137f..3d7c3400c 100644 --- a/docs/en/trusted-solutions/tier1/setup/s3_bucket.md +++ b/docs/en/trusted-solutions/tier1/setup/s3_bucket.md @@ -20,15 +20,15 @@ It's possible to start from the [Private S3 bucket AWS CloudFormation template]( {% include info title="Disclaimer" content="This template is provided as an example only. It is your responsibility to validate that running the template will result in the [configuration/policy/security settings your studio requires](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - * Go the CloudFormation service in AWS Console - * Select Template is ready - * Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml - * Next - * Set a stack name like {% include product %}-s3-bucket - * Set your S3 bucket name and your {% include product %} site name - * Next - * Accept `I acknowledge that AWS CloudFormation might create IAM resources` - * Next +- Go the CloudFormation service in AWS Console +- Select Template is ready +- Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml +- Next +- Set a stack name like {% include product %}-s3-bucket +- Set your S3 bucket name and your {% include product %} site name +- Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Next ### CORS Configuration @@ -38,15 +38,16 @@ CORS policy on your S3 bucket will be minimally configured, allowing only the re The template will create an AWS Role with the following permissions on your bucket: -* Allow {% include product %} to access your S3 bucket. -* Allow the {% include product %} account to assume the role by setting the role Trust Relationship. +- Allow {% include product %} to access your S3 bucket. +- Allow the {% include product %} account to assume the role by setting the role Trust Relationship. ## Media Isolation Activation Please contact {% include product %} support via the dedicated Slack channel and provide the following information: - * S3 bucket name - * AWS Region - * {% include product %} Role ARN + +- S3 bucket name +- AWS Region +- {% include product %} Role ARN {% include product %} will configure your test site to use your own S3 bucket. @@ -70,4 +71,3 @@ See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffi See [Media Replication](./s3_replication.md) to activate the Web Traffic Isolation feature. Go to [Setup](./setup.md) for an overview of the possible next steps. - diff --git a/docs/en/trusted-solutions/tier1/setup/s3_replication.md b/docs/en/trusted-solutions/tier1/setup/s3_replication.md index 20b465ada..b549b7bdb 100644 --- a/docs/en/trusted-solutions/tier1/setup/s3_replication.md +++ b/docs/en/trusted-solutions/tier1/setup/s3_replication.md @@ -15,7 +15,7 @@ It's possible to add S3 replication between two S3 buckets in different regions ## Features - * Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +- Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) ## How it works @@ -23,30 +23,30 @@ When S3 bucket replication is activated, users will be able download media files For each user, the S3 replication is activated by the `Use S3 Replication` field. -| Value| Behavior | -|------|----------------------------------------------| -|`no` | Never use replica S3 bucket (default)| -|`yes` | Use replica S3 bucket when delay is over| -|`auto`| Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range| +| Value | Behavior | +| ------ | ------------------------------------------------------------------------------------------------------- | +| `no` | Never use replica S3 bucket (default) | +| `yes` | Use replica S3 bucket when delay is over | +| `auto` | Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range | The `IP Adresses for S3 replication` preference can be edited in Site Preferences under the Isolation category. ## Limitations - * Only one replica S3 bucket can be configured - * Only downloading from the replica bucket is supported - * Configurable delay for new media to be replicated before being made available to users +- Only one replica S3 bucket can be configured +- Only downloading from the replica bucket is supported +- Configurable delay for new media to be replicated before being made available to users # Setup steps - * Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) - * Update your existing {% include product %} role policy to allow {% include product %} to also access the replica bucket - * Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) - * Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) - * Contact {% include product %} Support to configure your site to use the new S3 replica bucket, providing the following information: - * Replica Bucket Name - * Replica Bucket Region - * Replica S3 proxy URL +- Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) +- Update your existing {% include product %} role policy to allow {% include product %} to also access the replica bucket +- Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) +- Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) +- Contact {% include product %} Support to configure your site to use the new S3 replica bucket, providing the following information: + - Replica Bucket Name + - Replica Bucket Region + - Replica S3 proxy URL ## FAQ @@ -58,4 +58,4 @@ S3 replication only applies to media uploaded after the feature has been enabled See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/en/trusted-solutions/tier1/setup/setup.md b/docs/en/trusted-solutions/tier1/setup/setup.md index 759f5637f..32a2b2d60 100644 --- a/docs/en/trusted-solutions/tier1/setup/setup.md +++ b/docs/en/trusted-solutions/tier1/setup/setup.md @@ -9,18 +9,20 @@ lang: en Isolation the isolation features are independent of each other, and can be activated independently of each other. Media replication have as pre-requisite for Media Isolation to be implemented. -The setup process will depend on which feature you want to activate for your site. +The setup process will depend on which feature you want to activate for your site. ## In This Section + -* [Planning your Setup](./planning.md) -* [Migration Test Site](./shotgun_poc_site.md) -* [Media Isolation](./s3_bucket.md) -* [Media Traffic Isolation](./media_segregation.md) -* [Web Traffic Isolation](./traffic_segregation.md) -* [Media Replication](./s3_replication.md) -* [Isolation Fine Tuning](./tuning.md) -* [Migration](./migration.md) + +- [Planning your Setup](./planning.md) +- [Migration Test Site](./shotgun_poc_site.md) +- [Media Isolation](./s3_bucket.md) +- [Media Traffic Isolation](./media_segregation.md) +- [Web Traffic Isolation](./traffic_segregation.md) +- [Media Replication](./s3_replication.md) +- [Isolation Fine Tuning](./tuning.md) +- [Migration](./migration.md) # Setup Overview diff --git a/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md index 18a4cfd1d..a910dcd29 100644 --- a/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ b/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md @@ -21,4 +21,4 @@ See [Media Isolation](./s3_bucket.md) for activating the Media Isolation feature See [Web Traffic Isolation](./traffic_segregation.md) for activating the Web Traffic Isolation feature. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md index bdeb2f1bf..292b273be 100644 --- a/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md +++ b/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md @@ -11,19 +11,18 @@ The goal is to set up an AWS PrivateLink to privately access your {% include pro ## Set up PrivateLink to ShotGrid - * Ask {% include product %} support to provide you with the {% include product %} PrivateLink service name for your AWS region. +- Ask {% include product %} support to provide you with the {% include product %} PrivateLink service name for your AWS region. - * Update the private VPC CloudFormation stack you created earlier and set {% include product %}PrivateServiceName parameter. +- Update the private VPC CloudFormation stack you created earlier and set {% include product %}PrivateServiceName parameter. ### Manual steps if needed - * Add a new VPC Endpoint in your VPC +- Add a new VPC Endpoint in your VPC - * For the security group, {% include product %} service only requires the inbound port tcp/443 to be open. +- For the security group, {% include product %} service only requires the inbound port tcp/443 to be open. ![Create endpoint](../images/tier1-endpoint-create_privatelink.png) - ## DNS Configuration Provide your PrivateLink DNS name to {% include product %} support. We will setup a new private URL for your site that will look like `mystudio-staging.priv.shotgunstudio.com`. @@ -42,4 +41,4 @@ Try to access your test site from inside your office ie https://mystudio-staging See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/en/trusted-solutions/tier1/setup/tuning.md b/docs/en/trusted-solutions/tier1/setup/tuning.md index c06d6ef05..2997fc3dc 100644 --- a/docs/en/trusted-solutions/tier1/setup/tuning.md +++ b/docs/en/trusted-solutions/tier1/setup/tuning.md @@ -75,8 +75,8 @@ We recommend setting a VPC endpoint policy on your S3 endpoint to allow access t ## Application Load Balancer - * We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. - * We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. +- We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. +- We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. ## Next Steps diff --git a/docs/ja/event-daemon/event-daemon-api.md b/docs/ja/event-daemon/event-daemon-api.md index 3956df383..210ea6e25 100644 --- a/docs/ja/event-daemon/event-daemon-api.md +++ b/docs/ja/event-daemon/event-daemon-api.md @@ -8,16 +8,17 @@ lang: ja # API + ## registerCallbacks プラグインのイベント処理エントリ ポイントをフレームワークに伝えるために使用する、すべてのプラグインのグローバル レベル関数。 **registerCallbacks(reg)** -* reg: 呼び出す関数をフレームワークに伝えるために使用する [`Registrar`](#Registrar)。 - +- reg: 呼び出す関数をフレームワークに伝えるために使用する [`Registrar`](#Registrar)。 + ## Registrar Registrar はプラグインの操作方法をフレームワークに伝えるために使用するオブジェクトです。これは、[`registerCallbacks`](#registerCallbacks) 関数に渡されます。 @@ -36,9 +37,7 @@ Registrar はプラグインの操作方法をフレームワークに伝える プラグイン内からメッセージをログに記録するために使用する python Logger オブジェクトを取得します。 - - -__setEmails(*emails)__ +**setEmails(\*emails)** このプラグインまたはそのコールバックのいずれかで問題が発生した場合に、エラーや重要な通知を受け取る電子メールを設定します。 @@ -71,12 +70,12 @@ reg.setEmails('user1@domain.com', 'user2@domain.com') このプラグインのエンジンにコールバックを登録します。 -* `sgScriptName`: {% include product %} スクリプト ページから取得したスクリプトの名前。 -* `sgScriptKey`: {% include product %} スクリプト ページから取得したスクリプトのアプリケーション キー。 -* `callback`: `__call__` メソッドを使用する関数またはオブジェクト。「[`exampleCallback`](#exampleCallback)」を参照してください。 -* `matchEvents`: コールバックに渡すイベントのフィルタ。 -* `args`: フレームワークをコールバックに戻す任意のオブジェクト。 -* `stopOnError`: ブール型。このコールバックの例外は、このプラグイン内のすべてのコールバックによるイベントの処理を停止します。既定値は `True` です。 +- `sgScriptName`: {% include product %} スクリプト ページから取得したスクリプトの名前。 +- `sgScriptKey`: {% include product %} スクリプト ページから取得したスクリプトのアプリケーション キー。 +- `callback`: `__call__` メソッドを使用する関数またはオブジェクト。「[`exampleCallback`](#exampleCallback)」を参照してください。 +- `matchEvents`: コールバックに渡すイベントのフィルタ。 +- `args`: フレームワークをコールバックに戻す任意のオブジェクト。 +- `stopOnError`: ブール型。このコールバックの例外は、このプラグイン内のすべてのコールバックによるイベントの処理を停止します。既定値は `True` です。 `sgScriptName` は、{% include product %} のプラグインを特定するために使用します。任意の名前を任意の数のコールバックで共有することも、1 つののコールバックに 1 つのみにすることもできます。 @@ -125,7 +124,7 @@ matchEvents = { } ``` -「_New」や「_Retirement」などのフィールド固有でないイベント タイプと照合する場合には、リストを指定するのではなく、`None` という値を渡します。 +「\_New」や「\_Retirement」などのフィールド固有でないイベント タイプと照合する場合には、リストを指定するのではなく、`None` という値を渡します。 ```python matchEvents = { @@ -142,6 +141,7 @@ matchEvents = { `stopOnError` 引数は、このコールバックの例外によってプラグインのすべてのコールバックのイベント処理を停止するかどうかを伝えます。既定では `True` ですが、`False` に切り替えることもできます。イベントの処理を停止しない場合でも、エラーの通知メールが送信されます。コールバックごとに設定するため、重要なコールバックをユーザによって `True` または `False` にすることができます。 + ## コールバック [`Registrar.registerCallback`](#registerCallback) によって登録するプラグイン エントリ ポイントは通常、次のようなグローバル レベル関数です。 @@ -149,9 +149,9 @@ matchEvents = { **exampleCallback(sg, logger, event, args)** -* `sg`: {% include product %} の接続インスタンス。 -* `logger`: Python logging.Logger オブジェクトがあらかじめ設定されています。 -* `event`: 処理する {% include product %} イベント。 -* `args`: コールバックの登録時に指定する args 引数。 +- `sg`: {% include product %} の接続インスタンス。 +- `logger`: Python logging.Logger オブジェクトがあらかじめ設定されています。 +- `event`: 処理する {% include product %} イベント。 +- `args`: コールバックの登録時に指定する args 引数。 {% include info title="注" content="オブジェクト インスタンスで `__call__` メソッドとしてコールバックを使用できますが、ユーザの演習のみに使用するものとしておきます。"%} diff --git a/docs/ja/event-daemon/event-daemon-configuration.md b/docs/ja/event-daemon/event-daemon-configuration.md index e33228834..4ee2ad355 100644 --- a/docs/ja/event-daemon/event-daemon-configuration.md +++ b/docs/ja/event-daemon/event-daemon-configuration.md @@ -14,6 +14,7 @@ lang: ja {% include info title="注" content="**Windows の場合:** Windows ユーザは、環境設定ファイル内のすべてのパスを Windows 用に変更する必要があります。ログを含むすべてのパスを、単純化のために 1 つの場所に保持することをお勧めします。このドキュメントでは、Windows のパスについて説明する際に、`C:\shotgun\shotgunEvents` を参照する傾向があります。"%} + ## shotgunEventDaemon.conf を編集する {% include product %}Events をインストールしたら、次に `shotgunEventDaemon.conf` ファイルをテキスト エディタで開き、スタジオのニーズに合わせて設定を変更します。ほとんどのスタジオでは既定値をそのまま使用できますが、一部の設定には既定値がなく、デーモンを実行する前にユーザが設定する必要があります。 @@ -29,6 +30,7 @@ lang: ja また、デーモンでパフォーマンスの問題が発生した場合のトラブルシューティングに役立つオプションのタイミング ログのセクションもあります。タイミング ログを有効にすると、個別のログ ファイルにタイミング情報が入力されます。 + ### {% include product %} 設定 `[{% include product %}]` セクションの下で、既定のトークンを `server`、`name`、および `key` の正しい値に置き換えます。これらは、{% include product %} に接続する標準 API スクリプトに指定した値と同じである必要があります。 @@ -42,6 +44,7 @@ key: e37d855e4824216573472846e0cb3e49c7f6f7b1 ``` + ### プラグイン設定 実行するプラグインを検索する場所を {% include product %}EventDaemon に指示する必要があります。`[plugins]` セクションで、既定のトークンを `paths` の正しい値に置き換えます。 @@ -57,6 +60,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins 初めて起動する場合、`/usr/local/shotgun/{% include product %}Events/src/examplePlugins` ディレクトリにある `logArgs.py` プラグインを使用してテストを行うことをお勧めします。これを指定したプラグイン フォルダにコピーし、テストに使用します。 + ### shotgunEventDaemon.conf の場所 既定では、デーモンは {% include product %}EventDaemon.py と同じディレクトリおよび `/etc` ディレクトリで shotgunEventDaemon.conf ファイルを検索します。conf ファイルを別のディレクトリに配置する必要がある場合は、現在のディレクトリから別のディレクトリへの symlink を作成することをお勧めします。 @@ -66,6 +70,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins {% include info title="注" content="**Windows の場合**`/etc`は Windows に存在しないため、環境設定ファイルは Python ファイルと同じディレクトリに配置する必要があります。"%} + ## デーモンをテストする デーモンはバックグラウンドで実行されるためテストが困難な場合があります。デーモンの動作を確認するための明確な方法はありません。幸い、{% include product %}EventDaemon には、デーモンをフォアグラウンド プロセスとして実行するオプションがあります。最低限必要な設定が完了したので、次にデーモンをテストして、どのように動作するかを確認します。 @@ -85,7 +90,7 @@ INFO:engine:Last event id (248429) from the {% include product %} database. {% include info title="注" content="logArgs.py ファイルには、適切な値を入力する必要のある変数があります。ログを正しく機能させるには、shotgunEventDaemon.conf ファイルで使用された値と同じ値が含まれるように '$DEMO_SCRIPT_NAMES$' および '$DEMO_API_KEY$' を編集する必要があります。"%} -ログ ファイルに何も記録されていない場合は、{% include product %}EventDaemon.conf のログ関連設定を調べて、``logging`` 値が情報レベルのメッセージを記録するように設定されていること、 +ログ ファイルに何も記録されていない場合は、{% include product %}EventDaemon.conf のログ関連設定を調べて、`logging` 値が情報レベルのメッセージを記録するように設定されていること、 ``` logging: 20 @@ -100,6 +105,7 @@ reg.logger.setLevel(logging.INFO) すべてが正常だと仮定し、{% include product %}EventDaemon プロセスを停止するには、ターミナルに `-c` と入力し、スクリプトの終了を確認します。 + ## デーモンを実行する テストがすべて成功したと仮定し、バックグラウンドで目的どおりにデーモンを実行できるようになりました。 @@ -134,14 +140,16 @@ Web ブラウザに戻り、エンティティに変更を加えます。次に 2011-09-09 09:45:31,228 - plugin.logArgs.logArgs - INFO - {'attribute_name': 'sg_status_list', 'event_type': 'Shotgun_Shot_Change', 'entity': {'type': 'Shot', 'name': 'bunny_010_0010', 'id': 860}, 'project': {'type': 'Project', 'name': 'Big Buck Bunny', 'id': 65}, 'meta': {'entity_id': 860, 'attribute_name': 'sg_status_list', 'entity_type': 'Shot', 'old_value': 'omt', 'new_value': 'ip', 'type': 'attribute_change'}, 'user': {'type': 'HumanUser', 'name': 'Kevin Porterfield', 'id': 35}, 'session_uuid': '450e4da2-dafa-11e0-9ba7-0023dffffeab', 'type': 'EventLogEntry', 'id': 276560} ``` -出力の正確な詳細は実際とは異なりますが、プラグインが想定した通り、イベントをログ ファイルに記録したことが分かります。ここでも、ログ ファイルに何も記録されていない場合は、{% include product %}EventDaemon.conf のログ関連設定を調べて、``logging`` 値が情報レベルのメッセージを記録するように設定されていること、また、logArgs プラグインも情報レベルのメッセージを表示するように設定されていることを確認します。 +出力の正確な詳細は実際とは異なりますが、プラグインが想定した通り、イベントをログ ファイルに記録したことが分かります。ここでも、ログ ファイルに何も記録されていない場合は、{% include product %}EventDaemon.conf のログ関連設定を調べて、`logging` 値が情報レベルのメッセージを記録するように設定されていること、また、logArgs プラグインも情報レベルのメッセージを表示するように設定されていることを確認します。 + ### ログの記録に関する注意事項 ログ ローテーションは {% include product %} デーモンの機能であることに注意してください。ログは毎日深夜にローテーションされ、プラグインごとに 10 個のファイルが毎日保持されます。 + ## 一般的なエラー 次に、発生する一般的なエラーとその解決方法をいくつか示します。完全に行き詰ってしまった場合は、{% include product %} ソフトウェア チーム (support@shotgunsoftware.com) までお気軽にお問い合わせください。弊社がサポートいたします。 @@ -163,9 +171,11 @@ shotgunEventDaemon.conf ファイル内のプラグインへのパスを指定 sudo として実行する必要があり、`PYTHONPATH` が正しく設定されている場合は、sudo によって環境変数がリセットされることに注意してください。sudoers ファイルを編集して `PYTHONPATH` を保持するか、sudo -e(?) を実行することができます + ## 環境設定ファイルの設定のリスト + ### デーモンの設定 次に、一般的なデーモンの操作設定を示します。 @@ -184,7 +194,7 @@ pidFile: /var/log/shotgunEventDaemon.pid eventIdFile は、デーモンが最後に処理された {% include product %} イベントの ID を保存する場所を参照します。これにより、デーモンは最後にシャットダウンされたときに停止した場所を取得できるため、イベントが見逃されることはありません。最後のデーモンのシャットダウン以降のイベントを無視する場合は、デーモンを開始する前にこのファイルを削除します。これにより、デーモンは起動時に作成された新しいイベントのみを処理します。 -このファイルは、* の各 * プラグインの最後のイベント ID を記録し、この情報を pickle 形式で保存します。 +このファイルは、_ の各 _ プラグインの最後のイベント ID を記録し、この情報を pickle 形式で保存します。 ``` eventIdFile: /var/log/shotgunEventDaemon.id @@ -205,7 +215,7 @@ logMode: 1 **logPath** -ログ ファイルを配置するパス(メイン エンジンとプラグインの両方のログ ファイル)。メイン ログ ファイルの名前は、以下の ``logFile`` 設定によってコントロールされます。 +ログ ファイルを配置するパス(メイン エンジンとプラグインの両方のログ ファイル)。メイン ログ ファイルの名前は、以下の `logFile` 設定によってコントロールされます。 ``` logPath: /var/log/shotgunEventDaemon @@ -224,6 +234,7 @@ logFile: shotgunEventDaemon **logging** ログ ファイルに送信されるログ メッセージのしきい値レベル。この値はメインのディスパッチ エンジンの既定値で、プラグインごとにオーバーライドできます。この値は、単に Python のロギング モジュールに渡されます。よく使われる値は次のとおりです。 + - **10:** デバッグ - **20:** 情報 - **30:** 警告 @@ -274,6 +285,7 @@ fetch_interval = 5 ``` + ### {% include product %} 設定 {% include product %} インスタンスに関連する設定は次のとおりです。 @@ -322,6 +334,7 @@ use_session_uuid: True {% include info title="注" content="ShotGrid UI は、元のイベントを生成したブラウザ セッションの更新*のみ*をライブで表示します。同じページを開いている他のブラウザ ウィンドウでは、更新がライブで表示されません。"%} + ### プラグイン設定 **paths** @@ -335,6 +348,7 @@ paths: /usr/local/shotgun/plugins {% include info title="注" content="既定値はありません。値をプラグイン ファイルの場所(Windows では `/usr/local/shotgun/shotgunEvents/plugins` または `C:\shotgun\shotgunEvents\plugins`)に設定する必要があります" %} + ### 電子メール設定 ユーザが常にログをテーリングすることはなく、アクティブな通知システムを使用することがわかっているので、これらはエラー報告に使用されます。 diff --git a/docs/ja/event-daemon/event-daemon-example-plugins.md b/docs/ja/event-daemon/event-daemon-example-plugins.md index b8240ef7a..9ed753bbb 100644 --- a/docs/ja/event-daemon/event-daemon-example-plugins.md +++ b/docs/ja/event-daemon/event-daemon-example-plugins.md @@ -12,8 +12,11 @@ lang: ja このページには、作業を開始するユーザのためのいくつかの簡単なサンプルが含まれています。このコードはコピーと貼り付けによって実行できます(注: `script_name` と `script_key` の値をインストールに合わせて更新する必要があります)。 まず、ここに SG イベント コードを記述するテンプレートがあります。 + ## 1. コード テンプレート + ### 新規プラグインを開始するには、これをコピーして貼り付けます + ```python """ Necessary Documentation of the code @@ -51,11 +54,15 @@ def registerCallbacks(reg): # } def entry_function_call(sg, logger, event, args): # Now do stuff - pass + pass ``` + ## 2. ノートの件名の名前変更 + ### `New` エンティティ イベントを使用する + これは単純ですが、`Shotgun_Entity_New` イベントを捕捉するという複雑な処理も実行できるので、開始点として優れています... + ```python import time from pprint import pprint @@ -98,14 +105,18 @@ def Function_Name(sg, logger, event, args): logger.info('Dates are not prepended for notes in project id 116 - Software Development') return ``` + `sleep` の呼び出しが、関数本体の最初の行であることに注意してください。この理由は、`new` イベントの処理方法に関係があります。 + 1. SG で新しいエンティティを作成すると、そのエンティティにはまだ形式はありません。つまり、使い慣れたエンティティを完全に定義するために必要なアトリビュートのすべてが設定されていません。実際、この例では、SG が `subject` イベントを発行する場合に、`Shotgun_Note_New` アトリビュートがノート エンティティ上に存在するという保証さえもできません。 2. 必要なすべてのアトリビュートを追加するために、SG は次に一連の `Shotgun_Note_Change` イベントをパブリッシュします。このイベントでは、SG はそれぞれの単一のアトリビュートをエンティティに追加し、必要に応じてこれらのアトリビュートの値を更新します。 3. これは、さまざまなイベントが作成されることを意味します。つまり、2 つの異なるアトリビュートが存在する必要があり、コードに `sleep` の側面を記述していない場合、すべての `Shotgun_Note_Change` イベントと内部メタデータを調べて、新しいアトリビュートが追加され、値が設定されたイベントのみを検索する必要があります。これは面倒なプロセスであり、作成時にノートごとに 1 つのイベントを効果的に見つけるために数多くの `Shotgun_Note_Change` イベントを処理します。 4. この問題に対する解決策は、`Shotgun_Entity_New` を利用してスクリプトを短時間スリープ状態にすることです。スリープ状態の最後に、SG はエンティティに必要なすべてのアトリビュートを更新し、必要な任意のフィールドに対して同じエンティティを再クエリーできます。 ## 2. フィールド削除の警告 + ### ノートの生成、エンティティとしてのフィールドの操作、エンティティの廃棄イベント + ```python """ @@ -202,4 +213,5 @@ def trashedFieldWarning(sg, logger, event, args): CreateNote(sg, logger, event) ``` + これは非常に単純なスクリプトです。削除されたフィールドをチェックする場合、特別なロジックはありません。フィールドが削除されると、ノートが作成され、それを必要とするユーザのグループに送信されます。ある部署では、グループ ID を「programmers」グループに設定し、ノートのプロジェクト ID を「development」プロジェクトに設定しています。 diff --git a/docs/ja/event-daemon/event-daemon-installation.md b/docs/ja/event-daemon/event-daemon-installation.md index 592590198..d4e5e5ffc 100644 --- a/docs/ja/event-daemon/event-daemon-installation.md +++ b/docs/ja/event-daemon/event-daemon-installation.md @@ -5,23 +5,24 @@ pagename: event-daemon-installation lang: ja --- - # インストール 以下のガイドは、スタジオの {% include product %}Events をセットアップする場合に役に立ちます。 + ## 動作環境 デーモンは、Python がインストールされ、{% include product %} サーバにネットワーク アクセスできる任意のマシン上で実行できます。** サーバ上で実行する必要は**ありません{% include product %}。実際、ホストされているバージョンの {% include product %} を使用している場合、これはオプションではありません。ただし、必要に応じて {% include product %} サーバ上で実行することもできます。そうでなければ、任意のサーバで実行できます。 -* Python v2.6、v2.7 または 3.7 -* [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) - * Python v2.6 または v2.7 には v3.0.37 以降を使用し、Python 3.7 には v3.1.0 以降を使用します。 - * いずれの場合も、[最新の Python API バージョン](https://github.com/shotgunsoftware/python-api/releases)を使用し、この依存関係を継続して更新することを強くお勧めします。 -* {% include product %} サーバへのネットワーク アクセス +- Python v2.6、v2.7 または 3.7 +- [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) + - Python v2.6 または v2.7 には v3.0.37 以降を使用し、Python 3.7 には v3.1.0 以降を使用します。 + - いずれの場合も、[最新の Python API バージョン](https://github.com/shotgunsoftware/python-api/releases)を使用し、この依存関係を継続して更新することを強くお勧めします。 +- {% include product %} サーバへのネットワーク アクセス + ## {% include product %} API のインストール Python が既にマシンにインストールされている場合は、{% include product %} Python API をインストールして、{% include product %} イベント デーモンが {% include product %} サーバに接続するために使用できるようにする必要があります。これを実行するにはいくつかの方法があります。 @@ -45,6 +46,7 @@ ImportError: No module named shotgun_api3 ``` + ## {% include product %}Events のインストール {% include product %}Events のインストール先は、ユーザが自由に選択できます。ここでも、Python と {% include product %} API がコンピュータにインストールされ、{% include product %} サーバへのネットワーク アクセス権がある限り、任意の場所から実行することができます。ただし、スタジオにとって論理的な場所にインストールすることが自然です。`/usr/local/shotgun/shotgunEvents` などは論理的であるため、ここからは、これを例として使用します。 @@ -54,6 +56,7 @@ ImportError: No module named shotgun_api3 {% include info title="注" content="**Windows の場合:** Windows サーバを使用している場合は `C:\shotgun\shotgunEvents` を使用できますが、このドキュメントでは Linux パスを使用します。" %} + ### ソースのクローンの作成 `git` がコンピュータにインストールされている場合にソースを取得する最も簡単な方法は、プロジェクトのクローンを作成することです。この方法では、コミットされた更新を簡単に取り込んで、常に最新のバグ修正と新機能を手に入れることができます。 @@ -66,6 +69,7 @@ $ git clone git://github.com/shotgunsoftware/shotgunEvents.git {% include info title="警告" content="GitHub から更新を取得する前に、構成、プラグイン、および shotgunEvents に加えた変更を必ずバックアップして、何も失われないようにしてください。または、自分でプロジェクトをフォークして、自分自身で変更のリポジトリを維持することもできます。" %} + ### アーカイブのダウンロード コンピュータに `git` がない場合、またはソースのアーカイブをダウンロードするだけの場合は、次の手順を実行します。 @@ -108,6 +112,7 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src ``` + ### インストール要件 `requirements.txt` ファイルはリポジトリのルートに配置されています。必要なパッケージをインストールするには、これを使用する必要があります @@ -116,14 +121,14 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src $ pip install -r /path/to/requirements.txt ``` - + ### Windows の場合 Windows システムでは、次のいずれかが必要です。 -* [PyWin32](http://sourceforge.net/projects/pywin32/) がインストールされた Python -* [Active Python](http://www.activestate.com/activepython) +- [PyWin32](http://sourceforge.net/projects/pywin32/) がインストールされた Python +- [Active Python](http://www.activestate.com/activepython) Active Python には {% include product %} イベント デーモンと Windows のサービス アーキテクチャを統合するために必要な PyWin32 モジュールが付属しています。 diff --git a/docs/ja/event-daemon/event-daemon-plugins.md b/docs/ja/event-daemon/event-daemon-plugins.md index a38814abc..9f909fdb7 100644 --- a/docs/ja/event-daemon/event-daemon-plugins.md +++ b/docs/ja/event-daemon/event-daemon-plugins.md @@ -7,7 +7,7 @@ lang: ja # プラグインの概要 -プラグイン ファイルは、環境設定ファイルで指定されたプラグイン パス内の *.py* ファイルです。 +プラグイン ファイルは、環境設定ファイルで指定されたプラグイン パス内の _.py_ ファイルです。 コードのダウンロード先の `src/examplePlugins` フォルダには、サンプル プラグインがいくつか用意されています。これらは、生成された特定のイベントを検索して処理し、{% include product %} インスタンスの他の値を変更するための独自のプラグインを構築する方法の簡単な例を示します。 @@ -18,6 +18,7 @@ lang: ja {% include product %} イベント処理プラグインは、コールバック登録関数と任意の数のコールバックという 2 つの主要な部分で構成されます。 + ## registerCallbacks 関数 フレームワークによってロードするには、プラグインは少なくとも次の関数を実装する必要があります。 @@ -38,6 +39,7 @@ def registerCallbacks(reg): 関数は必要な数だけ登録できます。また、ファイル内のすべての関数をイベント処理コールバックとして登録する必要はありません。 + ## コールバック システムに登録されるコールバックは、次の 4 つの引数を取る必要があります。 @@ -50,6 +52,7 @@ def registerCallbacks(reg): {% include info title="警告" content="プラグインでは必要なすべての処理を実行できますが、例外がフレームワークに戻った場合、問題のあるコールバック(および含まれているすべてのコールバック)が存在するプラグインは、ディスク上のファイルが変更されるまで非アクティブ化されます(読み取り: 修正)。" %} + ## ログ記録 イベント プラグインで print 文を使用することはお勧めしません。Python 標準ライブラリの標準ロギング モジュールを使用することをお勧めします。ロガー オブジェクトは、さまざまな関数に提供されます。 @@ -71,6 +74,7 @@ def exampleCallback(sg, logger, event, args): イベント フレームワークがデーモンとして実行されている場合、これはファイルに記録されます。それ以外の場合は stdout に記録されます。 + ## 堅牢なプラグインの構築 デーモンは {% include product %} に対してクエリーを実行しますが、find() コマンドが失敗した場合に再試行する機能が組み込まれているため、デーモン自体には一定の堅牢性があります。 diff --git a/docs/ja/event-daemon/event-daemon-technical-details.md b/docs/ja/event-daemon/event-daemon-technical-details.md index 836753d27..a658b5e07 100644 --- a/docs/ja/event-daemon/event-daemon-technical-details.md +++ b/docs/ja/event-daemon/event-daemon-technical-details.md @@ -8,6 +8,7 @@ lang: ja # 技術的な概要 + ## イベント タイプ トリガを登録して通知するイベント タイプは、通常、次の `Shotgun_[entity_type]_[New|Change|Retirement|Revival]` 形式を使用します。以下に、この形式の例をいくつか示します。 @@ -34,13 +35,16 @@ lang: ja Toolkit_Desktop_ProjectLaunch Toolkit_Desktop_AppLaunch Toolkit_Folders_Create - Toolkit_Folders_Delete + Toolkit_Folders_Delete このリストはすべてを網羅しているわけではありませんが、糸口にしてください。{% include product %} サイトのアクティビティやイベントのタイプに関する詳細を確認したい場合は、他のエンティティ タイプの他のグリッド ページのようにフィルタや検索が可能な EventLogEntries のページを参照してください。 ### サムネイルのイベント ログ エントリ -エンティティの新しいサムネイルをアップロードすると、``` `Type` == `Shotgun__Change` ``` でイベント ログ エントリが作成されます(例: `Shotgun_Shot_Change`)。 -1. ```‘is_transient’``` フィールドの値は true に設定されています。 + +エンティティの新しいサムネイルをアップロードすると、`` `Type` == `Shotgun__Change` `` でイベント ログ エントリが作成されます(例: `Shotgun_Shot_Change`)。 + +1. `‘is_transient’` フィールドの値は true に設定されています。 + ``` { "type": "attribute_change","attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -48,7 +52,9 @@ lang: ja "is_transient": true } ``` -2. サムネイルが使用できるようになると、```‘is_transient’``` フィールドの値が false に設定された新しいイベント ログ エントリが作成されます。 + +2. サムネイルが使用できるようになると、`‘is_transient’` フィールドの値が false に設定された新しいイベント ログ エントリが作成されます。 + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -56,7 +62,9 @@ lang: ja "is_transient": false } ``` + 3. サムネイルをもう一度更新すると、次のような新しいイベント ログ エントリが取得されます。 + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -69,10 +77,11 @@ lang: ja "is_transient": false } ``` -4. 添付ファイルのサムネイルがプレースホルダのサムネイルである場合、```‘old_value’``` フィールドは null に設定されることに注意してください。 +4. 添付ファイルのサムネイルがプレースホルダのサムネイルである場合、`‘old_value’` フィールドは null に設定されることに注意してください。 + ## プラグインの処理順序 各イベントは常に同じ予測可能な順序で処理されるため、プラグインやコールバックが共依存している場合は、処理を支障なく整理することができます。 @@ -88,6 +97,7 @@ lang: ja 1 つまたは複数のコールバックと同じプラグインで状態を共有する必要がある機能を保持することをお勧めします。 + ## 状態を共有する 状態を共有する必要がある複数のコールバックに設定できる多くのオプションがあります。 @@ -97,8 +107,8 @@ lang: ja - [`Registrar.registerCallback`](API#wiki-registerCallback) を呼び出すときに `args` 引数で渡される可変値。設計の状態オブジェクト、または `dict` のような単純な関数。推奨します。 - オブジェクト インスタンスで `__call__` などのコールバックを使用して、コールバック オブジェクトの初期化時に共有状態オブジェクトをいくつか指定します。最も強力な方法ですが、最も複雑な方法でもあります。上記の args 引数メソッドと比較すると、煩雑になる場合があります。 - + ## イベント バックログ フレームワークの仕様により、すべてのプラグインは、対象のすべてのイベントそれぞれを例外なく 1 回のみ処理します。必ずこのように処理されるように、フレームワークは各プラグインの未処理イベントのバックログを保存し、各プラグインが提供された最後のイベントを記憶します。バックログが発生する可能性のある状況は、以下のとおりです。 diff --git a/docs/ja/event-daemon/event-daemon.md b/docs/ja/event-daemon/event-daemon.md index 503d5fa2a..185031e54 100644 --- a/docs/ja/event-daemon/event-daemon.md +++ b/docs/ja/event-daemon/event-daemon.md @@ -5,13 +5,12 @@ pagename: event-daemon lang: ja --- - # {% include product %} イベント フレームワーク + このソフトウェアは、[Rodeo Fx](http://rodeofx.com) と Oblique のサポートを受けて [Patrick Boucher](http://www.patrickboucher.com) により開発されました。これは現在、[{% include product %}ソフトウェア](http://www.shotgunsoftware.com)の[オープン ソース イニシアチブ](https://github.com/shotgunsoftware)の一部になっています。 このソフトウェアは、LICENSE ファイルまたは[オープン ソース イニシアチブ](http://www.opensource.org/licenses/mit-license.php)の Web サイトにある MIT ライセンスの下で提供されます。 - ## 概要 {% include product %} イベント ストリームにアクセスする場合の望ましい方法として、イベント テーブルを監視し、新しいイベントを取得し、イベントを処理して、また同じ手順を繰り返します。 @@ -40,9 +39,7 @@ lang: ja - 任意の数のコールバックをフレームワークに登録する。 - フレームワークによって提供された 1 つのイベントを処理する。 - ## フレームワークの利点 - スクリプトごとに 1 つではなく、すべてのスクリプトに対して単一の監視メカニズムのみを扱います。 - ネットワークおよびデータベースのロードを最小限に抑えます(多くのイベント処理プラグインにイベントを提供するただ 1 つのモニタ)。 - diff --git a/docs/ja/guides/pipeline-integrations.md b/docs/ja/guides/pipeline-integrations.md index 38dbe5500..99ecd041d 100644 --- a/docs/ja/guides/pipeline-integrations.md +++ b/docs/ja/guides/pipeline-integrations.md @@ -7,4 +7,4 @@ lang: ja # Pipeline Integrations -Here you'll find guides, tutorials, videos and other content to help you get started as a toolkit developer. \ No newline at end of file +Here you'll find guides, tutorials, videos and other content to help you get started as a toolkit developer. diff --git a/docs/ja/guides/pipeline-integrations/administration.md b/docs/ja/guides/pipeline-integrations/administration.md index ebb0b1816..94b055233 100644 --- a/docs/ja/guides/pipeline-integrations/administration.md +++ b/docs/ja/guides/pipeline-integrations/administration.md @@ -5,4 +5,4 @@ pagename: toolkit-administration lang: ja --- -# Administration \ No newline at end of file +# Administration diff --git a/docs/ja/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md b/docs/ja/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md index 44af9bf84..20a47ec40 100644 --- a/docs/ja/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ b/docs/ja/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md @@ -21,11 +21,11 @@ _このドキュメントは、Toolkit の設定を管理するユーザのみ Toolkit の主要なコンポーネントは次の 3 つです。 -- __「エンジン」はホスト アプリケーション(Maya や Nuke など)と Sgtk アプリケーション間の変換レイヤまたはアダプタを提供します。アプリケーションは通常、Python と PySide を使用しますが、標準化された方法でホスト アプリケーションを提供するのはエンジンの責任です。たとえば、PySide がまだ存在しない場合は、ホスト アプリケーションの最上位に PySide を追加します。 -- __「アプリ」はビジネス ロジックを提供します。基本的に、これは何かを処理するツールです。アプリケーションは特定のホスト アプリケーションで動作するように作成したり、複数のホスト アプリケーションで動作するように設計できます。 -- __「フレームワーク」は、エンジン、アプリ、または他のフレームワークで使用されるライブラリです。フレームワークにより、複数のアプリ間で共有されるコードまたは動作を簡単に管理できます。 +- \_\_「エンジン」はホスト アプリケーション(Maya や Nuke など)と Sgtk アプリケーション間の変換レイヤまたはアダプタを提供します。アプリケーションは通常、Python と PySide を使用しますが、標準化された方法でホスト アプリケーションを提供するのはエンジンの責任です。たとえば、PySide がまだ存在しない場合は、ホスト アプリケーションの最上位に PySide を追加します。 +- \_\_「アプリ」はビジネス ロジックを提供します。基本的に、これは何かを処理するツールです。アプリケーションは特定のホスト アプリケーションで動作するように作成したり、複数のホスト アプリケーションで動作するように設計できます。 +- \_\_「フレームワーク」は、エンジン、アプリ、または他のフレームワークで使用されるライブラリです。フレームワークにより、複数のアプリ間で共有されるコードまたは動作を簡単に管理できます。 -__「環境ファイル」には、エンジン、アプリ、およびフレームワークのコレクションの環境設定が含まれています。このコレクションは「環境」と呼ばれます。Sgtk はさまざまなファイルまたはユーザに対して異なる環境を起動します。たとえば、ショット制作の環境とリギングの環境を設定できます。各環境は 1 つの yaml ファイルです。 +\_\_「環境ファイル」には、エンジン、アプリ、およびフレームワークのコレクションの環境設定が含まれています。このコレクションは「環境」と呼ばれます。Sgtk はさまざまなファイルまたはユーザに対して異なる環境を起動します。たとえば、ショット制作の環境とリギングの環境を設定できます。各環境は 1 つの yaml ファイルです。 環境ファイルは `//software/shotgun//config/env` に格納されています。 @@ -73,7 +73,7 @@ yaml ファイルの基本的な形式は次のとおりです。 環境ファイルで定義された各アプリ、エンジン、またはフレームワークには、実行するアプリのバージョンとダウンロード元を定義した `location` パラメータがあります。多くの場合、これは `tank updates` と `tank install` コマンドで自動的に処理されます。ただし、環境設定を手動で編集する場合は、Toolkit の展開と構成用のさまざまなオプションを使用できます。 -現在、Toolkit は次の場所の「記述子」を使用してアプリのインストールと管理をサポートします。__ +現在、Toolkit は次の場所の「記述子」を使用してアプリのインストールと管理をサポートします。\_\_ - 記述子 **app_store** は Toolkit アプリ ストアの項目を表します - 記述子 **{% include product %}** は {% include product %} に保存された項目を表します @@ -90,13 +90,25 @@ yaml ファイルの基本的な形式は次のとおりです。 アプリまたはエンジンを一時的に無効にすると、役に立つ場合があります。無効にするには、アプリまたはエンジンのロード元を指定する場所のディクショナリに `disabled: true` パラメータを追加することをお勧めします。この構文はさまざまな場所のタイプすべてでサポートされています。たとえば、次のようになります。 ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "disabled": true} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "disabled": true, + } ``` また、特定のプラットフォームのみでアプリを実行する場合は、特別な `deny_platforms` 設定を使用して指定することができます。 ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "deny_platforms": [windows, linux]} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "deny_platforms": [windows, linux], + } ``` _deny_platforms_ の有効値は、`windows`、`linux`、および `mac` です。 diff --git a/docs/ja/guides/pipeline-integrations/administration/beyond-your-first-project.md b/docs/ja/guides/pipeline-integrations/administration/beyond-your-first-project.md index 0f755172e..629635800 100644 --- a/docs/ja/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ b/docs/ja/guides/pipeline-integrations/administration/beyond-your-first-project.md @@ -5,12 +5,10 @@ pagename: beyond-your-first-project lang: ja --- - # 最初のプロジェクトの作成後 ここでは、{% include product %} Desktop を使用して最初のプロジェクトを設定および実行した後の作業について説明します。ここには、よくある質問、トピック、役に立つドキュメントが掲載されています。 - # Toolkit へようこそ Toolkit へようこそ! このドキュメントを読んでいるということは、{% include product %} Desktop を使用して最初の {% include product %} Pipeline Toolkit プロジェクトのインストールに成功したことになります。 @@ -31,8 +29,8 @@ Toolkit へようこそ! このドキュメントを読んでいるというこ ![](images/Beyond-your-first-project/failed_to_launch.png) -Toolkit プロジェクト設定には、起動可能なさまざまな実行可能ファイルへのパスが保存されています。上記のメッセージが表示された場合は、このパスがスタジオのセットアップと一致していない可能性があります。 - この場合、異なるバージョンのアプリケーションが起動されていることもあります。たとえば、既定では Maya 2015 へのパスが設定されていますが、スタジオで Maya 2014 を使っている場合などです。この場合、このパスも変更する必要があります。 +Toolkit プロジェクト設定には、起動可能なさまざまな実行可能ファイルへのパスが保存されています。上記のメッセージが表示された場合は、このパスがスタジオのセットアップと一致していない可能性があります。 +この場合、異なるバージョンのアプリケーションが起動されていることもあります。たとえば、既定では Maya 2015 へのパスが設定されていますが、スタジオで Maya 2014 を使っている場合などです。この場合、このパスも変更する必要があります。 既定の設定では、このようなパスはすべて、`paths.yml` と呼ばれる 1 つのファイルに保存されています。パスを変更するためには、ディスク上のプロジェクト設定を特定し、`paths.yml` ファイルが見つかるまで設定フォルダを移動します。 @@ -47,7 +45,6 @@ Toolkit プロジェクト設定には、起動可能なさまざまな実行可 - [Toolkit Application Launcher](https://support.shotgunsoftware.com/hc/ja/articles/219032968) - [コマンドライン引数を渡す](https://support.shotgunsoftware.com/hc/ja/articles/219032968#Use%20Command%20Line%20Arguments%20at%20Launch) - ## {% include product %} 統合 Toolkit は {% include product %} と統合し、特別なツールキット アクション メニュー アイテムを UI のさまざまな部分に追加することで従来のインタフェースを拡張します。 @@ -58,15 +55,15 @@ Toolkit は {% include product %} と統合し、特別なツールキット ア ## {% include product %} UI にパブリッシュを追加する -Toolkit をインストールしたら、通常は {% include product %} UI レイアウトに微調整を加える必要があります。ファイルをパブリッシュすると、{% include product %} Pipeline Toolkit は_パブリッシュ エンティティ_を作成するため、ショットやアセットなどのキー アセットに _Publishes タブ_を簡単に追加できます。このためには、管理者ユーザとしてログインする必要があります。アセットまたはショットを選択し、_[デザイン モード](Design Mode)_を選択して開始します。 +Toolkit をインストールしたら、通常は {% include product %} UI レイアウトに微調整を加える必要があります。ファイルをパブリッシュすると、{% include product %} Pipeline Toolkit は*パブリッシュ エンティティ*を作成するため、ショットやアセットなどのキー アセットに *Publishes タブ*を簡単に追加できます。このためには、管理者ユーザとしてログインする必要があります。アセットまたはショットを選択し、*[デザイン モード](Design Mode)*を選択して開始します。 ![](images/Beyond-your-first-project/design_mode.png) -ここで、タブ上の小さな三角形のメニューをクリックし、_[新しいタブを追加](Add New Tab)_アクションを選択します。これでダイアログ UI が表示されます。_[パブリッシュ] (Publishes)_タブを呼び出し、_[パブリッシュ ファイル](Published File)_エンティティと関連付けられていることを確認します。 +ここで、タブ上の小さな三角形のメニューをクリックし、*[新しいタブを追加](Add New Tab)*アクションを選択します。これでダイアログ UI が表示されます。*[パブリッシュ] (Publishes)*タブを呼び出し、*[パブリッシュ ファイル](Published File)*エンティティと関連付けられていることを確認します。 ![](images/Beyond-your-first-project/create_tab.png) -ここで_[保存] (Save)_をクリックして変更内容を保存します。設定がすべて完了しました。 +ここで*[保存] (Save)*をクリックして変更内容を保存します。設定がすべて完了しました。 注: 新しいタブを作成すると、{% include product %} は取り込むいくつかの既定のフィールドを選択します。パブリッシュ用にいくつかのフィールドを追加する場合があります。このためには、新しいパブリッシュ タブの下に表示されるスプレッドシートの右上隅にある小さなプラス ボタンをクリックします。次のフィールドを追加することをお勧めします。 @@ -148,7 +145,7 @@ Python へのパスは設定ファイルに保存されており、手動で編 Toolkit には、アプリケーションの起動時に必要なすべての構造がディスク上に用意され、事前に設定が完了するようディスク上にフォルダを自動的に作成するフォルダ作成システムが付属します。この設定は上記の `schema` フォルダ内にあります。 -このフォルダにアクセスすると、パブリッシュ、作業ファイル、レンダリングなど、設定可能なファイルへのさまざまなパスを簡単に定義できる Toolkit の「テンプレート システム」__があります。これは上記の `templates.yml` ファイルに保存されています。 +このフォルダにアクセスすると、パブリッシュ、作業ファイル、レンダリングなど、設定可能なファイルへのさまざまなパスを簡単に定義できる Toolkit の「テンプレート システム」\_\_があります。これは上記の `templates.yml` ファイルに保存されています。 プロジェクト設定のこれら 2 つを組み合わせると、既存のパイプラインで認識されるディスク上の場所にデータを書き込むために Toolkit が使用するさまざまなアプリを調整できます。 @@ -157,8 +154,7 @@ Toolkit には、アプリケーションの起動時に必要なすべての構 - [フォルダ設定](https://support.shotgunsoftware.com/hc/ja/articles/219033178#Creating%20folders%20on%20disk%20with%20Sgtk) - [ファイルシステム テンプレート](https://support.shotgunsoftware.com/hc/ja/articles/219033178#Configuring%20Templates) -Toolkit の基本設定では、一連の**アプリとエンジン**が既に設定されています。この設定は `env` フォルダ内に格納されています。上記のファイル システム設定ファイルでディスク上のリソースの格納場所を定義する場合、そのアプリとエンジンを含む環境設定はパイプラインの動作内容を定義します。____ - +Toolkit の基本設定では、一連の**アプリとエンジン**が既に設定されています。この設定は `env` フォルダ内に格納されています。上記のファイル システム設定ファイルでディスク上のリソースの格納場所を定義する場合、そのアプリとエンジンを含む環境設定はパイプラインの動作内容を定義します。\_\_\_\_ ### Core API プラットフォーム @@ -179,4 +175,3 @@ Toolkit の基本設定では、一連の**アプリとエンジン**が既に Toolkit にはパイプライン エンジニアと TD のコミュニティがあります。当社は、Toolkit と組み合わせて強力で柔軟性に優れたパイプライン環境を展開できるようにコードを積極的に共有するコミュニティの作成に取り組んでいます。 質問がある場合や過去の投稿や会話を確認する場合は、[公開フォーラム セクション](https://support.shotgunsoftware.com/hc/ja/community/topics/200682428)にアクセスしてください。 - diff --git a/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md index d1835da06..a4979979f 100644 --- a/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md +++ b/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md @@ -7,37 +7,37 @@ lang: ja # コミュニティで共有されている統合 -以下に示すものは、Toolkit コミュニティのユーザが共有しているプロジェクトです。{% include product %} の開発チームが作成したものではないため、保証は適用されませんが、質問にはお答えします。 このリストに自分のプロジェクトを追加したいと思う方は、support@shotgunsoftware.com までご連絡ください。 +以下に示すものは、Toolkit コミュニティのユーザが共有しているプロジェクトです。{% include product %} の開発チームが作成したものではないため、保証は適用されませんが、質問にはお答えします。  このリストに自分のプロジェクトを追加したいと思う方は、support@shotgunsoftware.com までご連絡ください。 ### エンジン ----------- - -| 統合 | エンジン | 情報 | -|:-----------:|:------:| ----------- | -| tk-katana | **tk-katana** | プロジェクトの URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
プロジェクト投稿者: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio) 社
プロジェクト管理者:
プロジェクトの説明: Foundry 社の Katana 用の {% include product %} エンジン | -| image_alpha.png | **tk-unreal** | プロジェクトの URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/ja-JP/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
プロジェクト投稿者: [Epic Games](https://www.epicgames.com/store/ja/) 社
プロジェクト管理者:
プロジェクトの説明: [Unreal Engine](https://www.unrealengine.com/ja/?lang=ja) 用の {% include product %} エンジン | -| Substance Painter ロゴ | **tk-substancepainter** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: Adobe 社の Substance Painter 用の {% include product %} エンジン | -| Substance Designer ロゴ | **tk-substancedesigner** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: Adobe 社の Substance Designer 用の {% include product %} エンジン
詳細: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | -| tk-modo | **tk-modo** | プロジェクトの URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
プロジェクト投稿者: Lutz Ptälike 氏、[Walking The Dog](http://www.walkingthedog.be/) 社
プロジェクト管理者:
プロジェクトの説明: Foundry 社の Modo 用の {% include product %} エンジン | -| icon_256.png | **tk-clarisse** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: セットドレッサー、ルック開発、照明、レンダリング用の完全にインタラクティブな CG ツールセット [Clarisse iFX](https://www.isotropix.com/products) 用の {% include product %} エンジンです。 | -| 1024px-Natron_icon.svg.png | **tk-natron** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 無償のオープンソース ノードベースのソフトウェア アプリケーション [Natron](https://natrongithub.github.io/) 用の {% include product %} エンジンです。 | -| icon_256.png | **tk-harmony** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Hueta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 業界をリードするアニメーション制作ソフトウェア [Toon Boom Harmony](https://www.toonboom.com/products/harmony) 用の {% include product %} エンジンです。 | -| Cinema 4D のロゴ | **tk-cinema** | プロジェクトの URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
プロジェクト投稿者: Mykhailo Datsyk 氏
プロジェクト管理者: Mykhailo Datsyk 氏
プロジェクトの説明: モデリング、アニメーション、レンダリングに使いやすいデザイナー向けのツールセット [Maxon Cinema 4D](https://www.maxon.net/ja/cinema-4d/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | -| krita ロゴ | **tk-krita** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 主にデジタル ペインティングや 2D アニメーション用に設計されている無償のオープンソース ラスター グラフィックス エディタ [Krita](https://krita.org/en/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | -| Blender ロゴ | **tk-blender** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: アニメーション映画、ビジュアル エフェクト、アート、3D プリント モデル、モーション グラフィックス、インタラクティブな 3D アプリケーション、バーチャル リアリティ、コンピュータ ゲームの作成に使用する無償のオープンソース 3D コンピュータ グラフィックス ソフトウェア ツールセット [Blender](https://www.blender.org/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | +--- + +| 統合 | エンジン | 情報 | +| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-katana | **tk-katana** | プロジェクトの URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
プロジェクト投稿者: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio) 社
プロジェクト管理者:
プロジェクトの説明: Foundry 社の Katana 用の {% include product %} エンジン | +| image_alpha.png | **tk-unreal** | プロジェクトの URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/ja-JP/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
プロジェクト投稿者: [Epic Games](https://www.epicgames.com/store/ja/) 社
プロジェクト管理者:
プロジェクトの説明: [Unreal Engine](https://www.unrealengine.com/ja/?lang=ja) 用の {% include product %} エンジン | +| Substance Painter ロゴ | **tk-substancepainter** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: Adobe 社の Substance Painter 用の {% include product %} エンジン | +| Substance Designer ロゴ | **tk-substancedesigner** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: Adobe 社の Substance Designer 用の {% include product %} エンジン
詳細: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | +| tk-modo | **tk-modo** | プロジェクトの URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
プロジェクト投稿者: Lutz Ptälike 氏、[Walking The Dog](http://www.walkingthedog.be/) 社
プロジェクト管理者:
プロジェクトの説明: Foundry 社の Modo 用の {% include product %} エンジン | +| icon_256.png | **tk-clarisse** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: セットドレッサー、ルック開発、照明、レンダリング用の完全にインタラクティブな CG ツールセット [Clarisse iFX](https://www.isotropix.com/products) 用の {% include product %} エンジンです。 | +| 1024px-Natron_icon.svg.png | **tk-natron** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 無償のオープンソース ノードベースのソフトウェア アプリケーション [Natron](https://natrongithub.github.io/) 用の {% include product %} エンジンです。 | +| icon_256.png | **tk-harmony** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Hueta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 業界をリードするアニメーション制作ソフトウェア [Toon Boom Harmony](https://www.toonboom.com/products/harmony) 用の {% include product %} エンジンです。 | +| Cinema 4D のロゴ | **tk-cinema** | プロジェクトの URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
プロジェクト投稿者: Mykhailo Datsyk 氏
プロジェクト管理者: Mykhailo Datsyk 氏
プロジェクトの説明: モデリング、アニメーション、レンダリングに使いやすいデザイナー向けのツールセット [Maxon Cinema 4D](https://www.maxon.net/ja/cinema-4d/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | +| krita ロゴ | **tk-krita** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: 主にデジタル ペインティングや 2D アニメーション用に設計されている無償のオープンソース ラスター グラフィックス エディタ [Krita](https://krita.org/en/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | +| Blender ロゴ | **tk-blender** | プロジェクトの URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
プロジェクト投稿者: [Factor64](https://www.factor64.com/) 社
プロジェクト管理者: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/) 氏
プロジェクトの説明: アニメーション映画、ビジュアル エフェクト、アート、3D プリント モデル、モーション グラフィックス、インタラクティブな 3D アプリケーション、バーチャル リアリティ、コンピュータ ゲームの作成に使用する無償のオープンソース 3D コンピュータ グラフィックス ソフトウェア ツールセット [Blender](https://www.blender.org/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | ### アプリ ----------- - -| 統合 | エンジン | 情報 | -|:-----------:|:------:| ----------- | -| tk-maya-playblast | **tk-maya-playblast** | プロジェクトの URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
プロジェクト投稿者: [BASE Studio](https://github.com/basestudio) 社
プロジェクト管理者:
プロジェクトの説明: Maya からプレイブラストをパブリッシュするアプリです。 [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) を参照してください | -| tk-multi-renderfarm | **tk-multi-renderfarm** | プロジェクトの URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
プロジェクト投稿者: [Bait Studio](http://www.baitstudio.com/) 社
プロジェクト管理者:
プロジェクトの説明: ファームに作業を送信するアプリです。 [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) を参照してください | -| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | プロジェクトの URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
プロジェクト投稿者:
プロジェクト管理者: [Dave Sisk](mailto:dave@janimation.com) 氏
プロジェクトの説明: このアプリは、既存のパブリッシュ ファイルまたはファイル シーケンスを検出するためにプロジェクトのディレクトリ構造を検索し、パブリッシュ ファイル オブジェクトが存在しない場合は、パブリッシュ ファイルとして {% include product %} にこのオブジェクトを登録します。 | -| nuke-getShotgunData | **nuke-getShotgunData** | プロジェクトの URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
プロジェクト投稿者: [Ricardo Musch](https://www.ricardo-musch.com/) 氏
プロジェクト管理者: Ricardo Musch 氏
プロジェクトの説明: {% include product %} のデータを Nuke のテキスト ノードに取り込むのは、少し面倒な場合があります。このノードは、スレート内のパイプやバーンインなど、さまざまな場所で使用できます。 | -| sb-logo.png | **sb-shotgun-schema-introspection** | プロジェクトの URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
プロジェクト投稿者: [Scott Ballard](https://www.linkedin.com/in/scottballard/) 氏
プロジェクト管理者: Scott Ballard 氏
プロジェクトの説明: シンプルな Toolkit アプリです。{% include product %} や Toolkit の開発者が、{% include product %} のエンティティ、フィールド、基礎となるスキーマに素早く移動して検査できます。 | -| griffith-logo.png | **foto-multi-namingconvention** | プロジェクトの URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
プロジェクト投稿者: [Griffith Observatory](http://www.griffithobservatory.org/) 社
プロジェクト管理者: [Scott Ballard](https://www.linkedin.com/in/scottballard/) 氏
プロジェクトの説明: シンプルな Toolkit アプリです。{% include product %} や Toolkit の開発者が、{% include product %} のエンティティ、フィールド、基盤となるスキーマに素早く移動して検査できます。 | -| tk-cpenv | **tk-cpenv** | プロジェクトの URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
プロジェクト投稿者: [Dan Bradham](https://github.com/danbradham) 氏
プロジェクト管理者: [Dan Bradham](https://github.com/danbradham) 氏
プロジェクトの説明: このアプリは、ソフトウェア プラグイン、プロジェクトの依存関係、環境変数を管理するモジュールを使用するツール [cpenv](https://github.com/cpenv/cpenv) のサポートを追加します。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/rez-support/7350/7) | -| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | プロジェクトのURL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
プロジェクト投稿者: [Ricardo Musch](https://www.ricardo-musch.com/) 社
プロジェクト管理者: Ricardo Musch 社
プロジェクトの説明: このアプリを使用すると、{% include product %} のバージョンとプレイリストを Hiero に読み込むことができます。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | +--- + +| 統合 | エンジン | 情報 | +| :----------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-maya-playblast | **tk-maya-playblast** | プロジェクトの URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
プロジェクト投稿者: [BASE Studio](https://github.com/basestudio) 社
プロジェクト管理者:
プロジェクトの説明: Maya からプレイブラストをパブリッシュするアプリです。 [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) を参照してください | +| tk-multi-renderfarm | **tk-multi-renderfarm** | プロジェクトの URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
プロジェクト投稿者: [Bait Studio](http://www.baitstudio.com/) 社
プロジェクト管理者:
プロジェクトの説明: ファームに作業を送信するアプリです。 [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) を参照してください | +| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | プロジェクトの URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
プロジェクト投稿者:
プロジェクト管理者: [Dave Sisk](mailto:dave@janimation.com) 氏
プロジェクトの説明: このアプリは、既存のパブリッシュ ファイルまたはファイル シーケンスを検出するためにプロジェクトのディレクトリ構造を検索し、パブリッシュ ファイル オブジェクトが存在しない場合は、パブリッシュ ファイルとして {% include product %} にこのオブジェクトを登録します。 | +| nuke-getShotgunData | **nuke-getShotgunData** | プロジェクトの URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
プロジェクト投稿者: [Ricardo Musch](https://www.ricardo-musch.com/) 氏
プロジェクト管理者: Ricardo Musch 氏
プロジェクトの説明: {% include product %} のデータを Nuke のテキスト ノードに取り込むのは、少し面倒な場合があります。このノードは、スレート内のパイプやバーンインなど、さまざまな場所で使用できます。 | +| sb-logo.png | **sb-shotgun-schema-introspection** | プロジェクトの URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
プロジェクト投稿者: [Scott Ballard](https://www.linkedin.com/in/scottballard/) 氏
プロジェクト管理者: Scott Ballard 氏
プロジェクトの説明: シンプルな Toolkit アプリです。{% include product %} や Toolkit の開発者が、{% include product %} のエンティティ、フィールド、基礎となるスキーマに素早く移動して検査できます。 | +| griffith-logo.png | **foto-multi-namingconvention** | プロジェクトの URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
プロジェクト投稿者: [Griffith Observatory](http://www.griffithobservatory.org/) 社
プロジェクト管理者: [Scott Ballard](https://www.linkedin.com/in/scottballard/) 氏
プロジェクトの説明: シンプルな Toolkit アプリです。{% include product %} や Toolkit の開発者が、{% include product %} のエンティティ、フィールド、基盤となるスキーマに素早く移動して検査できます。 | +| tk-cpenv | **tk-cpenv** | プロジェクトの URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
プロジェクト投稿者: [Dan Bradham](https://github.com/danbradham) 氏
プロジェクト管理者: [Dan Bradham](https://github.com/danbradham) 氏
プロジェクトの説明: このアプリは、ソフトウェア プラグイン、プロジェクトの依存関係、環境変数を管理するモジュールを使用するツール [cpenv](https://github.com/cpenv/cpenv) のサポートを追加します。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/rez-support/7350/7) | +| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | プロジェクトの URL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
プロジェクト投稿者: [Ricardo Musch](https://www.ricardo-musch.com/) 社
プロジェクト管理者: Ricardo Musch 社
プロジェクトの説明: このアプリを使用すると、{% include product %} のバージョンとプレイリストを Hiero に読み込むことができます。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | diff --git a/docs/ja/guides/pipeline-integrations/administration/config-staging-and-rollout.md b/docs/ja/guides/pipeline-integrations/administration/config-staging-and-rollout.md index 85b5b78c8..370612a3e 100644 --- a/docs/ja/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ b/docs/ja/guides/pipeline-integrations/administration/config-staging-and-rollout.md @@ -20,7 +20,7 @@ _このドキュメントは、Toolkit の設定を管理するユーザのみ - Toolkit Core API の安全なアップグレード方法 - アプリとエンジンの更新方法 - 複数のプロジェクト間で設定を管理するためのさまざまな方法 -- プロダクションを中断せずにアップグレードと変更を安全にテストできるように、Toolkit の_クローン_機能と_プッシュ_機能にアクセスする方法 +- プロダクションを中断せずにアップグレードと変更を安全にテストできるように、Toolkit の*クローン*機能と*プッシュ*機能にアクセスする方法 - `git` ソース コントロールと Toolkit の連携方法 # 設定管理の基本 @@ -35,7 +35,7 @@ _このドキュメントは、Toolkit の設定を管理するユーザのみ _primary_ プロジェクト設定は簡単にアップグレードできますが、これにはリスクがあります。この設定はプロジェクトのすべてのユーザが使用するため、問題が発生すると、すべてのユーザに影響を与えてしまいます。ある特定のグループのユーザだけがアクセスできるように、個別のバージョンの設定を作成するのが最適です。この安全な環境では、残りの制作環境に影響を与えることなく、アップグレード、設定変更、および開発を行うことができます。変更のテストが完了したら、安全かつ確実に変更をプライマリ環境設定に適用できます。 -このプロセスは「クローン作成」__と呼ばれます。自分(および招待したその他のユーザ)のみがクローンにアクセスできるようにプライマリ環境設定のコピーを個別に作成するという操作です。ここでは、安全に変更を追加し、特に問題がなければ、この変更をプライマリ環境設定に適用することができます。 +このプロセスは「クローン作成」\_\_と呼ばれます。自分(および招待したその他のユーザ)のみがクローンにアクセスできるようにプライマリ環境設定のコピーを個別に作成するという操作です。ここでは、安全に変更を追加し、特に問題がなければ、この変更をプライマリ環境設定に適用することができます。 ## 環境設定のクローンを作成する @@ -47,7 +47,7 @@ _studio_ インストールにはすべてのプロジェクトの Core API が これに加え、各プロジェクトの設定フォルダもあります。このフォルダには当該プロジェクトのすべての設定が含まれます。この設定で特別に動作する `tank` コマンド(および Python API)も含まれます。この `tank` コマンドまたは API コードを使用している場合は、この設定のみを操作できます。 -新しいプロジェクトをセットアップすると、「プライマリ環境設定」__が作成されます。これは Toolkit がプロジェクトに既定で使用する環境設定です。このプライマリ環境設定に加えて、プロジェクトに追加の環境設定を作成できます。これらの環境設定は共存でき、チーム全体に影響を与えずに、変更のテスト、アプリのアップグレード、または開発などを少しずつ個別に行う場合に役立ちます。追加の環境設定は、クローン作成と呼ばれる設定を新しい場所にコピーするプロセスによって作成されます。__ +新しいプロジェクトをセットアップすると、「プライマリ環境設定」**が作成されます。これは Toolkit がプロジェクトに既定で使用する環境設定です。このプライマリ環境設定に加えて、プロジェクトに追加の環境設定を作成できます。これらの環境設定は共存でき、チーム全体に影響を与えずに、変更のテスト、アプリのアップグレード、または開発などを少しずつ個別に行う場合に役立ちます。追加の環境設定は、クローン作成と呼ばれる設定を新しい場所にコピーするプロセスによって作成されます。** 環境設定のクローンが作成されると、セットアップは次のように表示されます。 @@ -82,6 +82,7 @@ _studio_ インストールにはすべてのプロジェクトの Core API が ### クローン作成した古い環境設定を更新する 以前の開発サンドボックスまたはステージング サンドボックスをセットアップしているが、それが古いためそのコンテンツと最新のプロダクション環境を同期する必要がある場合は、プライマリ環境設定で `push_configuration` コマンドを実行します。 + ```shell tank push_configuration @@ -112,7 +113,8 @@ Push Complete! Your old configuration has been backed up into the following folder: /my/staging/sandbox/config.bak.20140108_093218 ``` -プライマリ プロジェクト設定からステージング サンドボックスに適用する方法にご注目ください。プライマリ環境設定の__ `tank` コマンドを実行しています。複数のサンドボックスをセットアップしている場合は、サンドボックス間にデータを適用することもできます。 + +プライマリ プロジェクト設定からステージング サンドボックスに適用する方法にご注目ください。プライマリ環境設定の\_\_ `tank` コマンドを実行しています。複数のサンドボックスをセットアップしている場合は、サンドボックス間にデータを適用することもできます。 ### クローン作成した環境設定を削除する @@ -161,6 +163,7 @@ Make sure the loader app is up to date everywhere: Make sure the loader app is up to date in maya: > tank updates ALL tk-maya tk-multi-loader ``` + ## Toolkit Core API をアップグレードする このセクションでは、クローンのステージング サンドボックス設定を使用して Toolkit Core API を安全にアップグレードする方法について説明します。ステージング サンドボックスをまだ準備していない場合は、前のセクションの手順に従ってください。 @@ -168,6 +171,7 @@ Make sure the loader app is up to date in maya: ステージング サンドボックスのクローンが[共有スタジオ Core API](https://support.shotgunsoftware.com/hc/ja/articles/219040448) を使用してパイプライン設定から作成された場合、固有の Core API コードを使用できるようにサンドボックスを更新します。これはコアの「ローカライズ」と呼ばれ、ステージング サンドボックスにアクセスして `tank localize` を実行します。このコマンドにより、スタジオ インストールからサンドボックスに Core API がコピーされるため、後で Core API の別のバージョンを実行およびテストすることができます。 Toolkit の既定の動作は、コアを既定でローカライズすることです。_事前に共有スタジオ コアを明示的に作成していない場合は、コアが既にローカライズされていると見なした方が間違いありません。_ + ```shell cd /my/staging/sandbox ./tank localize @@ -199,11 +203,14 @@ Localize complete! This pipeline configuration now has an independent API. If you upgrade the API for this configuration (using the 'tank core' command), no other configurations or projects will be affected. ``` + Core API をスタジオの場所で共有しなくなりますが、独自のバージョンを実行しています。ここで、ローカルの Tank コマンドを再び使用して、標準的な Core API アップグレードを実行することができます。 + ```shell cd /my/staging/sandbox ./tank core ``` + Toolkit は新しいバージョンが利用可能かどうかを確認して、ダウンロードとインストールを通知します。 Core API を更新したら、このインストールを必ずテストしてください。サンドボックスで `tank` コマンドを使用するか、{% include product %} の特別なメニュー項目を使用して、いくつかのアプリを起動します。パイプラインの概要を確認し、必要に応じてテストを実行します。 @@ -233,6 +240,7 @@ Core API を更新したら、このインストールを必ずテストして これは、時間の経過とともに環境設定を徐々に発展させることができる、非常に簡単な方法です。変更と改良は、その場その場でプロジェクトからプロジェクトへと受け継がれていきます。初めて `setup_project` コマンドを実行したとき、セットアップ プロセスで使用する環境設定の指定を求められたら[Enter]キーを押します。これで既定の環境設定のダウンロードおよびインストールが行われます。 2 つ目のプロジェクトの場合、以前のプロジェクトの環境設定へのパスのリストが表示されます。これらのいずれかのパスを選択し、セットアップ プロセスで環境設定の指定を求められたら[Enter]キーを押します。これで新しいプロジェクトにこの環境設定がコピーされます。 + ``` Welcome to the {% include product %} Pipeline Toolkit! For documentation, see https://support.shotgunsoftware.com @@ -272,6 +280,7 @@ clone this repository and base the config on its content. [tk-config-default]: /mnt/software/shotgun/first_project/config ``` + ## git ソース コントロールでのスタジオ設定 最初の方法には制限事項があります。プロジェクト同士の接続は行われません。10 個のプロジェクトがあり、重要なバグ修正がリリースされたためすべてを更新する必要がある場合、各プロジェクトに手動でアクセスして `tank updates` コマンドを実行する必要があります。 @@ -291,16 +300,21 @@ clone this repository and base the config on its content. 最初に git サーバにアクセスしてリポジトリを作成します。このプロセスは、設定によって異なる場合があります。GitHub などを使用している場合は、Web ブラウザを起動して github.com にアクセスします。サーバにアクセスできる場合は、`git init --bare` のようなコードを実行できます。ここで作成する git リポジトリは `username@someserver.com:/studio_config.git`と呼ばれます。 これで、リポジトリのシード設定に使用するプロジェクトの `config` フォルダを `config.bak` の場所に移動します。 + ```shell cd /project_configs/studio_config mv config config.bak ``` + スタジオ設定のベースにするプロジェクトの `config` の場所に初期化した git リポジトリのクローンを作成します。クローン作成コマンドを実行したら、git リポジトリにもなる空の `config folder` が作成されます。 + ```shell cd /project_configs/studio_config git clone username@someserver.com:/studio_config.git config ``` + `config.bak` の場所から `config` フォルダにすべてのファイルをコピーします。完了したら、空の `config.bak` フォルダは削除できます。設定ファイルが git リポジトリ内に格納されるため、サーバに対してそのファイルの追加、コミット、および適用を実行する必要があります。その前に、Toolkit のいくつかのシステム ファイルを正しく処理するために下準備を実行する必要があります。`config` フォルダで `.gitignore` ファイルを作成し、以下の行を追加します。 + ```shell install_location.yml pipeline_configuration.yml @@ -313,6 +327,7 @@ git add --all git commit -am "initial commit of our studio config!" git push ``` + ### git で新しいプロジェクトを作成する 新しいプロジェクトを作成する場合は、セットアップ プロセスで使用する環境設定のパスの入力を求めるプロンプトが表示されたときに有効な git URL を指定するだけです。上記の例では、`username@someserver.com:/studio_config.git` と入力します。プロジェクト セットアップ プロセスの一環として、Toolkit は新しいプロジェクト設定の `config` フォルダにこのリポジトリのクローンを作成します。つまり、後でこの設定フォルダにアクセスし、git コマンドを実行できるということです。クローン作成されたパイプライン設定も git リポジトリのクローンを作成し、シームレスに動作します。 @@ -342,6 +357,7 @@ Toolkit はパイプライン設定エンティティを介して {% include pro ![](images/config-staging-and-rollout/include_config.png) `@include` 構文を使用すると、複数のファイルを 1 つに連結できます。たとえば、ファイル `/tmp/stuff.yml` を使用する場合は、次のコンテンツが含まれます。 + ``` # paths to maya maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' @@ -369,7 +385,9 @@ file_manager: template_work: null template_work_area: null ``` + 上記のとおり、複数の異なるレベルでインクルードの定義を作成できます。上の例ではアプリの定義を 1 つと文字列の値を 3 つ設定しています。これらは環境ファイルから参照できます。 + ``` includes: ['/tmp/stuff.yml'] @@ -398,7 +416,9 @@ engines: template_project: null use_sgtk_as_menu_name: false ``` + さらに、複数のインクルード ファイルを相互に読み取ることができます。同じインクルード定義が 2 つの異なるファイルに存在する場合は、最新の読み込みファイルが優先されます。上記の環境例は、次のように拡張できます。 + ``` includes: @@ -412,21 +432,23 @@ includes: engines: - tk-maya: + tk-maya: apps: tk-multi-workfiles: '@file_manager' location: {name: tk-maya, type: app_store, version: v0.4.1} use_sgtk_as_menu_name: false ``` -上記の方法を使用すると、スタジオの既定値セットを指定し、それをプロジェクト タイプの既定値によってオーバーライドして、さらにそれを特定のプロジェクト設定でオーバーライドできます。 - 上記の例で示すようにアプリ レベルで実行したり、または次のセクションに示すようにエンジン レベルで実行したりできます。 + +上記の方法を使用すると、スタジオの既定値セットを指定し、それをプロジェクト タイプの既定値によってオーバーライドして、さらにそれを特定のプロジェクト設定でオーバーライドできます。 +上記の例で示すようにアプリ レベルで実行したり、または次のセクションに示すようにエンジン レベルで実行したりできます。 ### グローバル設定のセットアップ時のベスト プラクティス グローバル設定にはいくつかのセットアップ方法があります。セットアップの推奨ベスト プラクティスでは、エンジンごとに環境設定を分割します。各環境ファイルは完全に空で、個別のファイルで定義されるエンジン(およびアプリ)を参照します。これにより、エンジンを 1 つずつ簡単に調整および再設定できます。 このインクルード ファイルは標準的な形式で、エンジンに基づいた名前がそれぞれのファイルに付けられます。たとえば、Maya エンジンを使用する場合、インクルード ファイルにはエンジンとそのアプリのみが含まれます。その上位エントリには `maya` という名前だけが付けられます。 + ```yaml maya: apps: @@ -469,25 +491,28 @@ frameworks: tk-framework-shotgunutils_v1.x.x: location: {name: tk-framework-shotgunutils, type: app_store, version: v1.0.8} ``` + スタジオで Maya のみをセットアップすることはほとんどなく、さまざまな部門やタイプで異なるアプリを多数使用しているかと思います。それぞれに対して Maya インクルード ファイルをセットアップして、ファイル階層で整理することをお勧めします。これらの各ファイルでは、上記のファイルのように上位エントリとして `maya` が指定されます。 ![](images/config-staging-and-rollout/maya_include.png) 各プロジェクトには数多くの環境ファイルが含まれています。この環境ファイルはそれぞれエンジンのインクルードのリストで、この特定の環境とエンジンやアプリの一連のセットアップを関連付けています。スタジオで 1 つ(または複数)の既定のプロジェクト設定をセットアップすると、すべてにインクルードがこのように含まれるため、実際のアプリとエンジンのペイロードがインクルード ファイル内に完全に含まれ、グローバル ファイル内にも含まれます。グローバル インクルード ファイルに変更を加えると、すべてのプロジェクトに影響します。このセットアップを使用すると、環境ファイルは次のような形式になります。 + ```yaml -includes: - - '/studio/configurations/maya/asset.yml' - - '/studio/configurations/nuke/asset.yml' - - '/studio/configurations/houdini/generic.yml' +includes: + - "/studio/configurations/maya/asset.yml" + - "/studio/configurations/nuke/asset.yml" + - "/studio/configurations/houdini/generic.yml" engines: - tk-maya: '@maya' - tk-nuke: '@nuke' - tk-houdini: '@houdini' + tk-maya: "@maya" + tk-nuke: "@nuke" + tk-houdini: "@houdini" # we don't need any frameworks here because there are no apps or engines defined frameworks: null ``` + 上記のセットアップを分割し、いくつかのプロジェクト固有のエントリを定義する場合は、環境ファイル自身で `@maya` をアプリとエンジンの一連の定義で置き換えるだけです。 ### グローバル設定を管理する diff --git a/docs/ja/guides/pipeline-integrations/administration/file-system-config-reference.md b/docs/ja/guides/pipeline-integrations/administration/file-system-config-reference.md index ae8c31493..a73e250e5 100644 --- a/docs/ja/guides/pipeline-integrations/administration/file-system-config-reference.md +++ b/docs/ja/guides/pipeline-integrations/administration/file-system-config-reference.md @@ -17,6 +17,7 @@ _このドキュメントは、Toolkit の設定を管理するユーザのみ 1. **フォルダの作成:**{% include product %} でオブジェクトを作成したら、作業開始前にディスク上にフォルダを作成する必要があります。これは、ショットを表すディスク上にフォルダを作成するという簡単な作業であることも、ショットで作業する各ユーザがディスク上の個別の領域で作業できるようにユーザ固有の作業サンドボックスなどをセットアップするという複雑な作業であることもあります。 - Toolkit はアプリケーションの起動時にフォルダを自動的に作成し(ショット BECH_0010 の Maya を起動する場合など)、Maya の起動前にフォルダが作成されるようにします。フォルダが存在しない場合はすぐに作成されます。また、フォルダは、API メソッド、[シェルの tank コマンド](https://support.shotgunsoftware.com/hc/ja/articles/219033178#Useful%20tank%20commands)、[ShotGrid の Create Folders](https://support.shotgunsoftware.com/hc/ja/articles/219040688#Shotgun%20Integration) を使用して作成することもできます。一連の特別な設定ファイルによってこのフォルダ作成プロセスが制御されます。これについては、次のセクションの「[パート 1](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference#Part%201%20-%20Folder%20Creation%20Syntax)」で説明します。 + 2. **作業の表示と保存:** 作業中、ディスク上の標準的な場所からファイルを開いてそこに保存する必要があります。通常、このファイルの場所は作業開始前に作成されたフォルダ構造内になります。 - フォルダ構造を作成すると、この構造を使用してディスク上の主要な場所を特定できます。これらの場所は「[テンプレート](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates)」と呼ばれます。たとえば、ショットのパブリッシュした Maya ファイルを参照するように `maya_shot_publish` と呼ばれるテンプレートを定義します。次に、[Toolkit アプリ](https://support.shotgunsoftware.com/hc/ja/articles/219039798)でこのテンプレートを使用します。パブリッシュ アプリがこのテンプレートを使用してファイルの書き込み場所を制御し、[作業ファイル アプリ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)がこのテンプレートを使用して開くファイルの場所を把握できます。Toolkit の環境設定内では、各アプリが使用するテンプレートを制御できます。Toolkit で使用される主なファイルの場所はすべて 1 つのテンプレート ファイルで定義されるため、概要を簡単に表示できます。 @@ -45,7 +46,6 @@ yaml ファイルで表される動的な設定セットアップは次のモー - **[現在のユーザ フォルダ:](#current-user-folder)**現在のユーザを表す特別なフォルダ。 - ここで各モードの詳細を見ていきましょう。 ## {% include product %} クエリー フォルダ @@ -80,11 +80,11 @@ yaml ファイルで表される動的な設定セットアップは次のモー - **entity_type** フィールドは、データの取得元の {% include product %} エンティティ(「Asset」、「Shot」、「Sequence」、「CustomEntity02」など)に設定する必要があります。 - **name** フィールドは、{% include product %} のデータに基づいて各フォルダに付与される名前です。 - - 上記の例のように(`name: code` など)、1 つのフィールドを使用できます。 - - 括弧内に複数のフィールド(`name:``"{asset_type}_{code}"` など)を使用できます。 - - 他にリンクされたエンティティのフィールドを追加する場合は、標準の {% include product %} ドット シンタックス(`name: "{sg_sequence.Sequence.code}_{code}"` など)を使用できます。 -- **filters** フィールドは {% include product %} クエリーです。これは [{% include product %} API 構文](http://developer.shotgridsoftware.com/python-api/reference.html)に比較的近くなります。ディクショナリのリストで、各ディクショナリには、_path_、_relation_、および _values_ の各キーを指定する必要があります。$syntax の有効値は、{% include product %} エンティティ(ディレクトリ階層上位に sequence.yml がある場合はプロジェクトの `"$project"` と `"$sequence"` など)に対応した親フォルダです。{% include product %} エンティティ リンクの場合、$syntax (`{ "path": "project", "relation": "is", "values": [ "$project" ] }` など)を使用すると、環境設定内の親フォルダを参照できます。この詳細については、[以下の例](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference#Examples)で説明します。 + - 上記の例のように(`name: code` など)、1 つのフィールドを使用できます。 + - 括弧内に複数のフィールド(` name:``"{asset_type}_{code}" ` など)を使用できます。 + - 他にリンクされたエンティティのフィールドを追加する場合は、標準の {% include product %} ドット シンタックス(`name: "{sg_sequence.Sequence.code}_{code}"` など)を使用できます。 +- **filters** フィールドは {% include product %} クエリーです。これは [{% include product %} API 構文](http://developer.shotgridsoftware.com/python-api/reference.html)に比較的近くなります。ディクショナリのリストで、各ディクショナリには、_path_、_relation_、および _values_ の各キーを指定する必要があります。$syntax の有効値は、{% include product %} エンティティ(ディレクトリ階層上位に sequence.yml がある場合はプロジェクトの `"$project"`と`"$sequence"` など)に対応した親フォルダです。{% include product %} エンティティ リンクの場合、$syntax (`{ "path": "project", "relation": "is", "values": [ "$project" ] }` など)を使用すると、環境設定内の親フォルダを参照できます。この詳細については、[以下の例](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference#Examples)で説明します。 ## 複数のフォルダ @@ -114,7 +114,7 @@ yaml ファイルで表される動的な設定セットアップは次のモー # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -この種類のパスのファイル システム テンプレートを作成する場合(詳細については、このドキュメントのパート 2 を参照)、_last_folder は {% include product %} のエンティティを表します。上の例は、たとえば、次のテンプレートを使用して表すことができます。 +この種類のパスのファイル システム テンプレートを作成する場合(詳細については、このドキュメントのパート 2 を参照)、\_last_folder は {% include product %} のエンティティを表します。上の例は、たとえば、次のテンプレートを使用して表すことができます。 asset_step_folder: assets/{asset_type}/{Asset}/{Step} @@ -251,7 +251,6 @@ Toolkit では、正規表現を使用して、{% include product %} フィー - オプションの `create_with_parent` パラメータを指定すると、子エンティティ レベル ノードを現在処理していなくても、list_field ノードを強制的に作成します(上記の「[親フォルダを使用して作成する](https://support.shotgunsoftware.com/hc/ja/articles/219039868#Create%20With%20Parent%20Folder)」セクションを参照)。 - ## パイプライン ステップ フォルダ パイプライン ステップ フォルダは [{% include product %} のパイプライン ステップ](https://support.shotgunsoftware.com/hc/ja/articles/219031288)を表します。パイプライン ステップはステップとも呼ばれています。 @@ -495,7 +494,7 @@ symlink の作成は(すべての入力/出力(I/O)のように)フックを処 .git # no git temp files to be copied across at folder creation time .DS_Store # no mac temp files to be copied across at folder creation time -また、ワイルドカードを使用することもできます。たとえば、拡張子が TMP のすべてのファイルを除外する必要がある場合は、ファイルに *.tmp の行を追加するだけです。 +また、ワイルドカードを使用することもできます。たとえば、拡張子が TMP のすべてのファイルを除外する必要がある場合は、ファイルに \*.tmp の行を追加するだけです。 # This is a good example of a standard ignore_files file @@ -700,7 +699,6 @@ Toolkit で必要になるさまざまな設定指示とは別に、スキーマ 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, 'path': '/mnt/projects/chasing_the_light/assets'}, - 任意の複雑なデータはこの方法で YAML 設定ファイルからフックに渡すことができます。 ## フォルダの作成方法の簡単なカスタマイズ @@ -823,7 +821,7 @@ Toolkit テンプレート ファイルは Toolkit 設定のハブの 1 つで ![configuration](images/file-system-config-reference/templates_file.png) -このファイルには「テンプレート」の定義とその「キー」が含まれます。____ +このファイルには「テンプレート」の定義とその「キー」が含まれます。\_\_\_\_ **キー**は定義された動的フィールドです。これには、名前、バージョン番号、スクリーン解像度、ショット名などを指定できます。キーには型が設定されるため、キーに文字列または整数などを定義できます。また、キーにはフォーマットを設定することもできるため、文字列に含められるのは英数字のみと定義したり、すべての整数にゼロを 8 個追加する必要があると定義したりできます。 @@ -860,7 +858,7 @@ Toolkit テンプレート ファイルは Toolkit 設定のハブの 1 つで - `filter_by: '^[0-9]{4}_[a-z]{3}$'` : キーのタイプが文字列の場合にのみ動作します。検証マスクとして正規表現を定義できます。上記の例で 4 桁のキーを指定する必要がある場合などは、アンダースコアとその後に 3 つの小文字を指定します。 -- `format_spec: "04"` : キーのタイプが int または sequence の場合、int または sequence の番号にはゼロまたはスペースが追加されます。例のように「04」を指定すると、ゼロが追加されて長さが 4 桁になります(例: 0003)。「03」を指定すると、ゼロが追加されて長さが 3 桁になります(例: 042)。「3」を指定すると、スペースが追加されて長さが 3 桁になります(例: 「__3」)。キーのタイプがタイムスタンプの場合、format_spec は [strftime と strptime の規則](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior) に従います。 +- `format_spec: "04"` : キーのタイプが int または sequence の場合、int または sequence の番号にはゼロまたはスペースが追加されます。例のように「04」を指定すると、ゼロが追加されて長さが 4 桁になります(例: 0003)。「03」を指定すると、ゼロが追加されて長さが 3 桁になります(例: 042)。「3」を指定すると、スペースが追加されて長さが 3 桁になります(例: 「\_\_3」)。キーのタイプがタイムスタンプの場合、format_spec は [strftime と strptime の規則](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior) に従います。 - `strict_matching: true` : キーのタイプが整数の場合にのみ動作します。この設定は、フィールドが正しくフォーマット化された番号のみに一致することを表しています。たとえば、「003」と指定して strict_matching を true に設定すると、「002」、「12345」、および「042」は一致しますが、「00003」または「2」は一致しません。一致の厳密性を緩めるには、strict_matching を false に設定します。既定の動作は厳密な一致を採用します。 @@ -872,7 +870,6 @@ Toolkit テンプレート ファイルは Toolkit 設定のハブの 1 つで - `subset` と `subset_format`: 指定した入力文字列のサブセットを抽出し、完全なユーザ名からイニシャルのキーを作成したり、すべてのショット名の最初の 3 文字を保持するキーを作成したりできるキーの値を作成します。 - テンプレート キーの技術的詳細については、「[API リファレンス](http://developer.shotgridsoftware.com/tk-core/core.html#template-system)」を参照してください。 ### 例: 英数字の名前 @@ -1112,7 +1109,6 @@ assets フォルダが単なる別のシーケンスではないことを Toolki - [エピソード エンティティはどのように動作するのですか?](https://support.shotgunsoftware.com/hc/ja/articles/115000019414) - [エンティティの階層をカスタマイズする](https://support.shotgunsoftware.com/hc/ja/articles/219030828) - ### 「エピソード > シーケンス > ショット」の階層に必要な {% include product %} フィールド [ `Episode` ([サイト基本設定](Site Preferences) > [エンティティ] (Entities))のカスタム エンティティ](https://support.shotgunsoftware.com/hc/ja/articles/114094182834)を使用したり、{% include product %} [7.0.7.0](https://support.shotgunsoftware.com/hc/en-us/articles/220062367-7-0-Release-Notes#7_0_7_0) で利用可能な正式なエピソード エンティティを使用したりできます。{% include product %} 7.0.7.0 以前(2017 より前)に登録している場合、「TV Show」テンプレートはエピソードに `CustomEntity02` を使用します。`CustomEntity02` または正式なエピソード エンティティではない別のエンティティを使用する場合も心配しないでください。{% include product %} と Toolkit には柔軟性があります。両方の場合について説明します。 @@ -1264,7 +1260,6 @@ b) **カスタム エンティティを使用する:** `CustomEntity02` は、 `config/core/schema/project/shots/episode/sequence` フォルダで、次のコンテンツと同じディレクトリ内に対応する `shot.yml` ファイルを含む `shot` という名前のフォルダを作成します。 - # the type of dynamic content type: "shotgun_entity" @@ -1343,12 +1338,11 @@ b) **カスタム エンティティを使用する:** `CustomEntity02` は、 - スキーマでこの新しいアセット タイプ vehicle の新しいブランチを作成します。 - `asset/` と `asset.yml` と同じレベルで、`asset_vehicle/` フォルダと `asset_vehicle.yml` を追加します。 -- この YAML ファイルにもフィルタ設定があります。vehicle 以外のすべてのアセットに適用されるように `asset.yml` 内のフィルタを修正してから、__タイプ vehicle のアセットのみに適用されるように `asset_vehicle.yml` を修正します。__[ここでは、このフィルタの例を示します](https://support.shotgunsoftware.com/hc/ja/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps)。 +- この YAML ファイルにもフィルタ設定があります。vehicle 以外のすべてのアセットに適用されるように `asset.yml` 内のフィルタを修正してから、**タイプ vehicle のアセットのみに適用されるように `asset_vehicle.yml` を修正します。**[ここでは、このフィルタの例を示します](https://support.shotgunsoftware.com/hc/ja/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps)。 - これで `asset` と `asset_vehicles` を表す 2 つのフォルダが作成されました。アセット(`geoprep` や `lookdev` など)に対して作成するすべてのフォルダを `asset_vehicle` の下に追加します。 - このアセットのファイルを保存およびパブリッシュする場合は、`core/templates.yml` 内に保存およびパブリッシュしたファイルのファイル パスを定義するテンプレートを作成します。たとえば、[`maya_asset_work`](https://github.com/shotgunsoftware/tk-config-default/blob/v0.17.3/core/templates.yml#L480) とは別に、`maya_asset_work_vehicle` と呼ばれるテンプレートを作成すると、その定義は vehicle アセットの Maya 作業ファイルを保存するテンプレート化したパスになります。 - **手順 2: 新しい環境ファイルを作成する** この時点で、新しいアセット タイプのディレクトリ構造が作成されており、ファイルを保存およびパブリッシュする新しいフォルダ構造内の場所を定義したテンプレートがあります。ここで、この新しいテンプレートを使用するタイミングを Toolkit に指示する必要があります。このためには、新しい環境ファイルを作成します。 @@ -1365,4 +1359,4 @@ b) **カスタム エンティティを使用する:** `CustomEntity02` は、 フォルダ設定で、{% include product %} の組み込みパイプライン ステップではなくカスタム ステップ セットアップを使用するように指示する特別な 2 つのオプションを追加します。 entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file + task_link_field: "sg_task_type" diff --git a/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md index 5b6175544..3b6e56dcc 100644 --- a/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ b/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md @@ -86,7 +86,7 @@ Publisher のプラグインの作成に関する詳細については、[開発 - 自動検出モードとは異なり、任意のソフトウェア パッケージのバージョンごとにソフトウェア エンティティがあります。 - これをグループ化するには、`Group` フィールドと `Group Default` フィールドを使用します。`Group` で同じ値を共有するソフトウェア エンティティは Desktop で 1 つのアイコンのドロップダウンにグループ化されます。その名前には `Group` の値が使用されます。 - このアイコン自体をクリックすると、`Group Default` を選択しているグループ内のソフトウェアが起動します。 -- **ソフトウェア エンティティで Linux のパス、Mac のパス、または Windows のパスのいずれか__に値を指定すると、このエンティティは手動モードに移行します。**自動検出モードとは異なり、パス フィールドが空のときにソフトウェアが Desktop に表示されます__。手動モードでは、ソフトウェア パッケージのパスが指定されており、そのファイルが指定されたパスに存在する場合、ソフトウェア パッケージは任意のオペレーティング システム上でのみ__表示されます。 +- **ソフトウェア エンティティで Linux のパス、Mac のパス、または Windows のパスのいずれか\_\_に値を指定すると、このエンティティは手動モードに移行します。**自動検出モードとは異なり、パス フィールドが空のときにソフトウェアが Desktop に表示されます**。手動モードでは、ソフトウェア パッケージのパスが指定されており、そのファイルが指定されたパスに存在する場合、ソフトウェア パッケージは任意のオペレーティング システム上でのみ**表示されます。 - 上記の例では、`Windows Path` を指定していないため、Windows にインストールされている Desktop には、Maya のバージョンは 3 つとも表示されません。 ### 例: ユーザまたはグループ別に制限する @@ -111,7 +111,7 @@ Publisher のプラグインの作成に関する詳細については、[開発 - 任意の環境の Desktop で表示される Maya のバージョンを 1 つにするため、ここでは `Group` と `Group Default` の値を削除しています。 - 3 つすべてのバージョンの `Software Name` を「Maya」に設定しています。この方法では、すべてのプロジェクトでユーザに同一名のアイコンが表示されますが、アイコンにはここで設定した内容に応じて異なるバージョンが指定されます。 - Maya 2016 の `Status` フィールドを `Disabled` に設定しています。このバージョンはもう使用しません。このフィールドですべてのプロジェクトのグローバル表示が切り替わります。 -- Maya 2017 と Maya 2018 の `Projects` に値を指定しています。`Projects` は制限事項として機能します。Maya 2017 が表示されるのは Chicken Planet プロジェクトのみ__で、Maya 2018 は Chicken Planet II にしか表示されません。 +- Maya 2017 と Maya 2018 の `Projects` に値を指定しています。`Projects` は制限事項として機能します。Maya 2017 が表示されるのは Chicken Planet プロジェクトのみ\_\_で、Maya 2018 は Chicken Planet II にしか表示されません。 - ソフトウェア エンティティの `Projects` に値を指定すると、ソフトウェアは指定したプロジェクトでしか表示されなくなります。そのため、スタジオに Chicken Planet シリーズとは別のプロジェクトがある場合は、そのプロジェクトのソフトウェアを明示的に指定する必要があります。 ### 例: 独自のソフトウェアを追加する @@ -243,7 +243,7 @@ Websocket サーバの RPC API のバージョン 2 では、Toolkit アクシ ![](images/Integration-admin-guide/action_menu.png) -ブラウザ統合コードにより、ユーザのシステムで Houdini、Maya、Nuke、および Photoshop のインストールが検出されたため、それぞれの統合を起動するためのメニュー アクションが作成されました。特定の環境設定ファイルでは、その環境のエンティティにソフトウェアのランチャーを表示するために、ソフトウェア エンティティのエンジン__が必要になります。そのため、この例では、`tk-houdini`、`tk-maya`、`tk-nuke`、および `tk-photoshopcc` エンジンのすべてが、このスニペットの取得元であるファイルに含まれている必要があります。たとえば、このエンティティのランチャーのリストから Maya を削除する場合は、環境設定ファイルから `tk-maya` エンジン ブロックを削除するだけです。 +ブラウザ統合コードにより、ユーザのシステムで Houdini、Maya、Nuke、および Photoshop のインストールが検出されたため、それぞれの統合を起動するためのメニュー アクションが作成されました。特定の環境設定ファイルでは、その環境のエンティティにソフトウェアのランチャーを表示するために、ソフトウェア エンティティのエンジン\_\_が必要になります。そのため、この例では、`tk-houdini`、`tk-maya`、`tk-nuke`、および `tk-photoshopcc` エンジンのすべてが、このスニペットの取得元であるファイルに含まれている必要があります。たとえば、このエンティティのランチャーのリストから Maya を削除する場合は、環境設定ファイルから `tk-maya` エンジン ブロックを削除するだけです。 また、Publish アプリの Publish... コマンドもメニューに含まれています。 @@ -264,6 +264,7 @@ tk-config-default2 では、更新は config/env/includes/settings/[`tk-shotgun. まず、[`config/env/asset.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47) に移動し、`tk-shotgun` エンジン ブロックがどのように [`@settings.tk-shotgun.asset`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47) を参照しているかを確認します。`@` の記号は、設定の値がインクルードされたファイルのものであることを示します。これは、[env/includes/settings/`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml) に移動して更新する必要があることを意味します。 `env/includes/settings/tk-shotgun.yml` で、エンティティごとのブロックの状態を確認します。たとえば、最初にアセットが次のようになっているとします。 + ``` # asset @@ -341,7 +342,6 @@ Web アプリケーションとローカル デスクトップとの通信は複 2. Chrome または Python の Websocket サーバが接続を拒否したため、{% include product %} Web アプリケーションが {% include product %} Desktop と通信できなくなった。この状況は、要求時に接続を続行できる自己署名証明書に関連している可能性が高いです。多くの場合、これらの証明書を最初から再生成することで問題が解決します。再生成は、次に示すように {% include product %} Desktop からトリガできます。 - ![](images/Integration-admin-guide/regenerate_certs.png) 1. {% include product %} Desktop の Websocket サーバが起動に失敗した。この状況は、Websocket サーバの問題のあるリリースが一般に公開された場合にほぼ限定され、非常にまれです。この場合、[tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) にエラーを説明するログが表示されます。このログを [{% include product %} のサポート チーム](https://support.shotgunsoftware.com/hc/ja/requests/new)に送信してください。 @@ -360,8 +360,8 @@ Web アプリケーションとローカル デスクトップとの通信は複 4. ディスクに空のメニュー アクション リストがキャッシュされています。キャッシュを強制的に再生成するには、次のいくつかの方法の中から選択できます。 - - プロジェクトの環境設定で YAML ファイルの変更時刻を更新します。こうすると、次回に {% include product %} からメニュー アクションが要求されたときに、メニュー アクションの再キャッシュがトリガされます。注目する必要があるのは、これによってプロジェクトで作業しているすべてのユーザに対して再キャッシュがトリガされることです。__ - - {% include product %} サイトで、いずれかのソフトウェア エンティティのフィールド値を更新します。この場合の動作は、上記の YAML ファイルの変更時刻を更新した場合と同じですが、{% include product %} サイトのすべてのプロジェクトで、すべてのユーザのキャッシュされたデータが無効になります。__ソフトウェア エンティティは非プロジェクト エンティティであるため、すべてのプロジェクトで共有されます。いずれかのソフトウェア エンティティのデータが変更された場合は、すべてのプロジェクトが影響を受けます。 + - プロジェクトの環境設定で YAML ファイルの変更時刻を更新します。こうすると、次回に {% include product %} からメニュー アクションが要求されたときに、メニュー アクションの再キャッシュがトリガされます。注目する必要があるのは、これによってプロジェクトで作業しているすべてのユーザに対して再キャッシュがトリガされることです。\_\_ + - {% include product %} サイトで、いずれかのソフトウェア エンティティのフィールド値を更新します。この場合の動作は、上記の YAML ファイルの変更時刻を更新した場合と同じですが、{% include product %} サイトのすべてのプロジェクトで、すべてのユーザのキャッシュされたデータが無効になります。\_\_ソフトウェア エンティティは非プロジェクト エンティティであるため、すべてのプロジェクトで共有されます。いずれかのソフトウェア エンティティのデータが変更された場合は、すべてのプロジェクトが影響を受けます。 - 問題の影響を受けるホストのキャッシュ ファイルを削除できます。キャッシュを削除しても、通常は問題ありません。各ホストにキャッシュがローカルに保存されているため、この特定のシステム上のデータが最初から再キャッシュされるだけです。キャッシュは、{% include product %} のキャッシュ場所にある SQLite ファイル(`/site.basic.desktop/tk-desktop/shotgun_engine_commands_v1.sqlite`)に格納されます。 **[Toolkit: アクションを取得中...](Toolkit: Retrieving actions...)がメニュー アクションと置き換わらない** @@ -376,7 +376,6 @@ Web アプリケーションとローカル デスクトップとの通信は複 3. ユーザが複数の {% include product %} サイトで作業している。{% include product %} Desktop が 1 つのサイトに対して認証されているときに、2 番目の {% include product %} サイトからメニュー アクションを要求すると、{% include product %} Desktop を再起動して新しいサイトにログインするかどうかを尋ねられます。この要求が無視されると、2 番目のサイトはメニュー アクションのリストを受け取らなくなります。 - ## Toolkit 環境設定ファイル プロキシ サーバを使用している場合、最初のログイン画面のいくつかの値を事前に指定する場合や、ブラウザベースのアプリケーション ランチャーと {% include product %} Desktop を統合する方法を調整する場合は、`toolkit.ini` と呼ばれる特別な設定ファイルを使用します。{% include product %} Desktop の実行にこのファイルは必要ありません。必要になるのは、その動作を設定する必要がある場合のみです。Toolkit は、次の順序で複数の場所にあるファイルを検索します。 @@ -395,8 +394,6 @@ Web アプリケーションとローカル デスクトップとの通信は複 このファイルで環境変数とハードコードされた値を使用すれば、Windows 上に存在する変数 USERNAME を介し、既定のユーザ名などを選択してユーザに候補を表示することもできます。 - - **従来の場所(廃止済み)** `toolkit.ini` は現在の標準ファイル名ですが、以前は `config.ini` ファイルを同じ目的で使用していました。`toolkit.ini` と `config.ini` の内容は同じです。`config.ini` は、次の廃止された場所を使用する場合に検索されます。 @@ -474,7 +471,7 @@ Desktop の自動更新は常に最新の状態を保つために役立ちます ### 単一のプロジェクトの更新をフリーズする -シナリオ: プロジェクトがもうすぐ完了するため、{% include product %} の統合の更新プログラムが自動的にダウンロードされないようにフリーズしたいと考えています。__ +シナリオ: プロジェクトがもうすぐ完了するため、{% include product %} の統合の更新プログラムが自動的にダウンロードされないようにフリーズしたいと考えています。\_\_ **ソリューション** @@ -487,7 +484,6 @@ Desktop の自動更新は常に最新の状態を保つために役立ちます - このプロジェクトでは、誰が {% include product %} Desktop を起動しても v1.0.36 が使用されるようになります。このプロジェクトで作業を開始する新しいユーザも v1.0.36 を取得することになります。 - ![](images/Integration-admin-guide/freeze_single_project.png) **知っておきたい情報** @@ -536,7 +532,7 @@ _シナリオ: 自動更新を許可するテスト プロジェクトを除い - 上記のセクションで説明したように、サイトの更新をフリーズします。 - 例外にするプロジェクトのパイプライン設定エンティティに、次のフィールド値を設定します。 - 名前: `Primary` -- プロジェクト: ロックしない__プロジェクト +- プロジェクト: ロックしない\_\_プロジェクト - プラグインの ID: `basic.*` - 記述子: `sgtk:descriptor:app_store?name=tk-config-basic` @@ -546,7 +542,7 @@ _シナリオ: 自動更新を許可するテスト プロジェクトを除い ### ロックされたサイトを安全に更新する -- シナリオ: v1.0.0 にロックされており、v2.0.0 へのアップグレードを予定していますが、スタジオに配置する前にまず新しいバージョンをテストしたいと考えています。* +- シナリオ: v1.0.0 にロックされており、v2.0.0 へのアップグレードを予定していますが、スタジオに配置する前にまず新しいバージョンをテストしたいと考えています。\* **解決策** @@ -574,7 +570,7 @@ _シナリオ: 自動更新を許可するテスト プロジェクトを除い ![](images/Integration-admin-guide/wizard_select.png) -新しいプロジェクトの設定を開始する場合、まずは使用する設定テンプレート__を決定します。基本的に、設定テンプレートは、プロジェクトの実行に必要なすべての設定、ファイル システム テンプレート、アプリ、およびロジックが設定された完全なプロジェクト設定です。 +新しいプロジェクトの設定を開始する場合、まずは使用する設定テンプレート\_\_を決定します。基本的に、設定テンプレートは、プロジェクトの実行に必要なすべての設定、ファイル システム テンプレート、アプリ、およびロジックが設定された完全なプロジェクト設定です。 - これが最初のプロジェクトである場合は、{% include product %} の既定値を使用して開始してみてください。 - プロジェクトおよび以前のプロジェクトの環境設定を既に設定している場合は、既存のプロジェクトをベースにして新しいプロジェクトを作成することで既定値を簡単に再利用できます。 @@ -645,7 +641,7 @@ Windows 上で実行している場合は、使用するマシンに git をイ #### ストレージをセットアップする -それぞれの Toolkit プロジェクトでは、すべてのファイルとデータがディスク上の 1 つ以上の共有ストレージの場所に書き込まれます。たとえば、環境設定には、テクスチャを保存するストレージ、レンダリングを保存するストレージ、シーン ファイルを保存するストレージが必要です。通常、これらのストレージは、{% include product %} の[サイト基本設定](Site Preferences)の[ファイル管理](File Management)タブでコントロールします。__ +それぞれの Toolkit プロジェクトでは、すべてのファイルとデータがディスク上の 1 つ以上の共有ストレージの場所に書き込まれます。たとえば、環境設定には、テクスチャを保存するストレージ、レンダリングを保存するストレージ、シーン ファイルを保存するストレージが必要です。通常、これらのストレージは、{% include product %} の[サイト基本設定](Site Preferences)の[ファイル管理](File Management)タブでコントロールします。\_\_ Toolkit セットアップ ウィザードに、設定に必要な各ストレージのルートを {% include product %} のローカル ストレージにマップするよう求めるメッセージが表示されます。 @@ -678,6 +674,7 @@ Toolkit セットアップ ウィザードに、設定に必要な各ストレ これが最初のプロジェクトになる場合は、一般的に、今後のパイプラインのすべての環境設定を保存するディスク上の共有領域を決定します。通常、これはスタジオで共有するソフトウェアやソフトウェア設定を保存する場所です。場所は `/mnt/software/shotgun` のようになります。これは、スタジオのネットワークやファイル命名規則によって異なる場合があります。 初めて環境設定をセットアップする場合、スタジオで使用するすべてのプラットフォームのパスをセットアップします。これにより、後ですべてのマシンからアクセスできる環境を簡単に作成できます。たとえば、プロジェクト名が _Golden Circle_ の場合、入力可能なパスは次の 3 つです。 + ``` linux: /mnt/software/shotgun/golden_circle macosx: /servers/production/software/shotgun/golden_circle diff --git a/docs/ja/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md b/docs/ja/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md index 0c8051bd2..0619e638c 100644 --- a/docs/ja/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ b/docs/ja/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md @@ -8,6 +8,7 @@ lang: ja # Disabling auto updates and offline usage ## Auto updates + ### What parts auto update? By default {% include product %} Desktop will automatically check for updates, and install them to the local machine if it finds any. @@ -51,7 +52,7 @@ When you start either of them up, it will automatically try to look for updates, It is recommended that you follow the "Managing updates" steps bellow after installing {% include product %} Desktop, as the components bundled with the installer may not be the latest. -{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `shotgun_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} {% include info title="Note" content="You will still need to be able to connect to your ShotGrid site. When we say offline we are talking about not being able to connect to our app store to download updates." %} @@ -64,12 +65,12 @@ To update the `tk-framework-desktopstartup` component, you will need to [downloa For the `tk-config-basic` component it's a bit more tricky, due to all its dependencies. 1. Run {% include product %} Desktop on a workstation connected to the internet. When it starts up, the latest upgrades will be automatically downloaded. -(Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) + (Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) 2. Copy the bundle cache to a shared location where all machines can access it. 3. Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. 4. When Desktop starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. -{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} **CREATE does come with it's own bundled config, however it doesn't seem to have the engines, or atleast doesn't share them when launching Maya for example.** @@ -80,29 +81,26 @@ In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE 1. Determine the version you want to lock your project to. You can find the integration releases [here](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations). 2. In {% include product %}, create a Pipeline Configuration entity for the project you want to lock down, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): - - Name: `Primary` - - Project: The project you want to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) - + + - Name: `Primary` + - Project: The project you want to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` + ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) + 3. Anyone starting {% include product %} Desktop on the project will now always use `v1.0.36`. Any new users starting to work on the project will also get `v1.0.36`. #### Good to know - The next time a user launches Desktop while connected to the Internet, `v1.0.36` of the basic config, and all of its related code, will be downloaded to their machine. - `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya`, `basic.nuke`. -- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. +- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. #### Known issues -- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. -However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. -The solution would be to create an additional Pipeline Configuration override specifically for flame: - - Name: `Primary` - - Project: The project you want to lock down (or None for all projects) - - Plugin ids: `basic.flame` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. + However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. + The solution would be to create an additional Pipeline Configuration override specifically for flame: - Name: `Primary` - Project: The project you want to lock down (or None for all projects) - Plugin ids: `basic.flame` - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### Disabling updates for all projects @@ -127,10 +125,10 @@ You can - Disabling updates for your site as described in the above section. - Configure the exception project’s Pipeline Configuration entity to have the following field values: - - Name: `Primary` - - Project: The project you want not to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` + - Name: `Primary` + - Project: The project you want not to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` ![Two Pipeline Configurations, one disabling updates to the whole site, and the other enabling updates on a single project](images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg) #### Good to know @@ -138,7 +136,8 @@ You can Note that you’ve omitted the version number from the Descriptor field for the project. This will mean that the project is tracking the latest release of the basic config. ### Upgrading -Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.* + +Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.\* Solution Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting "Duplicate Selected". @@ -147,4 +146,4 @@ You will now begin to use this Pipeline Configuration. Change the descriptor to point to the version you wish to test. You can invite any users you want to partake in testing by adding them to the User Restrictions field. Once you are happy with testing, simply update the main Pipeline Configuration to use that version. -Once users restart Desktop or DCCs, the update will be picked up. \ No newline at end of file +Once users restart Desktop or DCCs, the update will be picked up. diff --git a/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md index e0c44fab4..60d0da039 100644 --- a/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md +++ b/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md @@ -23,7 +23,7 @@ _このドキュメントは、Toolkit の設定を管理するユーザのみ 以下に、Toolkit (SGTK)の簡単な説明を示します。 -- Toolkit は {% include product %} プラットフォームを使用する Pipeline Toolkit です。このツールキットを使用すると、簡単にツールを作成してインストールできます。__ +- Toolkit は {% include product %} プラットフォームを使用する Pipeline Toolkit です。このツールキットを使用すると、簡単にツールを作成してインストールできます。\_\_ - Toolkit はファイル システム ベースのツールです。ディスク上の格納場所を整理できるため、ディスク上で管理するものを適切に構造化できます。 - Toolkit は支援ツールです。パイプラインでデータを引き継いだり抽出化することはありませんが、アーティストが情報を見つけやすく、ミスを防ぐことができるようにする優れたツールです。 - Toolkit は、パブリッシュしたものをすべて {% include product %} に保存して作業を共有できるようにします。Toolkit を使用すると、制作上の更新や作業を簡単に共有できます。 @@ -36,15 +36,15 @@ Toolkit の環境設定は、すべてプロジェクト中心に行います。 ![](images/toolkit-overview/new_project.png) -新しいプロジェクトをセットアップする場合は、__テンプレート設定を使用します。テンプレート設定には、エンジンとアプリ、ファイル システムの設定、およびその他の設定があらかじめ定義されています。Toolkit を初めて使用する場合は、まずはサンプルの設定を使用して吟味してみてください。別のプロジェクトで Toolkit を既に使用したことがある場合は、新しいプロジェクトでもまずはその設定を使用してみることをお勧めします。この方法では、スタジオの設定を展開して、それぞれの新しいプロジェクトに合わせて調整できます。もちろん、スタジオの設定を個別に管理し、新しいプロジェクトすべてのテンプレートとして使用することもできます。 +新しいプロジェクトをセットアップする場合は、\_\_テンプレート設定を使用します。テンプレート設定には、エンジンとアプリ、ファイル システムの設定、およびその他の設定があらかじめ定義されています。Toolkit を初めて使用する場合は、まずはサンプルの設定を使用して吟味してみてください。別のプロジェクトで Toolkit を既に使用したことがある場合は、新しいプロジェクトでもまずはその設定を使用してみることをお勧めします。この方法では、スタジオの設定を展開して、それぞれの新しいプロジェクトに合わせて調整できます。もちろん、スタジオの設定を個別に管理し、新しいプロジェクトすべてのテンプレートとして使用することもできます。 -それぞれの設定を使用して、数多くのストレージ ポイント__を定義します。標準のサンプル設定「`tk-config-default`」の場合、__プライマリと呼ばれる 1 つのストレージ ポイントを定義します。つまり、すべてのプロダクション データは 1 つのファイル システムのプロジェクト ルート内に格納されます。また、複数のファイル システムのルートを使用して設定をセットアップすることもできます。これは__「マルチルート設定」と呼ばれます。マルチルート設定が必要な例としては、レンダリングや編集用の個別ストレージを設定する場合などがあります。各ストレージ ポイントは、 {% include product %} のローカル ファイル ストレージにする必要があります。これは、[サイト基本設定](Site Preferences)の[ファイル管理](File Management)タブで設定できます。____ +それぞれの設定を使用して、数多くのストレージ ポイント**を定義します。標準のサンプル設定「`tk-config-default`」の場合、**プライマリと呼ばれる 1 つのストレージ ポイントを定義します。つまり、すべてのプロダクション データは 1 つのファイル システムのプロジェクト ルート内に格納されます。また、複数のファイル システムのルートを使用して設定をセットアップすることもできます。これは**「マルチルート設定」と呼ばれます。マルチルート設定が必要な例としては、レンダリングや編集用の個別ストレージを設定する場合などがあります。各ストレージ ポイントは、 {% include product %} のローカル ファイル ストレージにする必要があります。これは、[サイト基本設定](Site Preferences)の[ファイル管理](File Management)タブで設定できます。\_\_** -Toolkit は、任意の場所に実際のプロジェクト設定をインストールします。通常、このインストール場所は、プロジェクトのデータを格納する場所ではなく、ソフトウェアをインストールした場所になります。__ +Toolkit は、任意の場所に実際のプロジェクト設定をインストールします。通常、このインストール場所は、プロジェクトのデータを格納する場所ではなく、ソフトウェアをインストールした場所になります。\_\_ ## 独自の環境設定を展開する -新しいプロジェクトをセットアップする場合は、既存のプロジェクトをベースにすることができます。Toolkit は、既存のプロジェクトから新しいプロジェクトに設定フォルダをコピーします。つまり、新しいプロジェクトは、アプリとエンジンのバージョン、設定、およびカスタマイズが元のプロジェクトとまったく同じになります。これは、パイプラインを展開し__、既存のプロダクションの一部として行った改善と調整を活用する場合に役立ちます。 +新しいプロジェクトをセットアップする場合は、既存のプロジェクトをベースにすることができます。Toolkit は、既存のプロジェクトから新しいプロジェクトに設定フォルダをコピーします。つまり、新しいプロジェクトは、アプリとエンジンのバージョン、設定、およびカスタマイズが元のプロジェクトとまったく同じになります。これは、パイプラインを展開し\_\_、既存のプロダクションの一部として行った改善と調整を活用する場合に役立ちます。 また、プロジェクトのセットアップに問題がなく、一元的に保存する場合は、プロジェクトの設定フォルダを使用するだけです。この設定はスタジオのテンプレートとして使用することができ、新しいプロジェクトを作成するたびにこの設定をベースにすることができます。必要に応じて、git などのリビジョン制御システムを使用すると、このスタジオ テンプレート設定をソース制御することもできます。時間の経過とともにパイプライン設定テンプレートがどのように変化をしているかを、簡単かつ透明性を確保した上でトラッキングできます。更新する場合は、1 つのプロジェクトから設定をコピーして変更をコミットするだけです。 @@ -85,6 +85,7 @@ tank updates [environment_name] [engine_name] [app_name] 特別なキーワードである `ALL` を使用すると、カテゴリ内のすべての項目を指定できます。 以下に例を示します。 + - すべてをチェックする: `tank updates` - ショット環境をチェックする: `tank updates Shot` - すべての環境内のあらゆる Maya アプリをチェックする: `tank updates ALL tk-maya` @@ -116,7 +117,7 @@ Toolkit のフォルダは 2 つのパスで作成されます。すべてのユ # 現在のコンテキスト -ファイル システム構成が作成されると、Toolkit はディスク上のフォルダとフォルダが属する {% include product %} オブジェクト間の関係を認識します。これにより、パスのパブリッシュ、ロード、解決を行うときに、{% include product %} のオブジェクトとフォルダ、ディスク、またはファイルを簡単に関連付けることができるため重要です。また、「コンテキスト」__や「現在の作業領域」__と呼ばれる場所にも関連付けられます。コンテキスト オブジェクトは Toolkit Core の一部で、作業している現在のコンテキストをトラックします。Toolkit がファイル システムのパスを解決する場合の中心的なメカニズムです。 +ファイル システム構成が作成されると、Toolkit はディスク上のフォルダとフォルダが属する {% include product %} オブジェクト間の関係を認識します。これにより、パスのパブリッシュ、ロード、解決を行うときに、{% include product %} のオブジェクトとフォルダ、ディスク、またはファイルを簡単に関連付けることができるため重要です。また、「コンテキスト」**や「現在の作業領域」**と呼ばれる場所にも関連付けられます。コンテキスト オブジェクトは Toolkit Core の一部で、作業している現在のコンテキストをトラックします。Toolkit がファイル システムのパスを解決する場合の中心的なメカニズムです。 ![](images/toolkit-overview/context.png) @@ -124,12 +125,12 @@ Toolkit のフォルダは 2 つのパスで作成されます。すべてのユ # ファイル システム テンプレート -Toolkit Core にはファイル パスを処理するためのシステムが含まれます。これは「テンプレート システム」__と呼ばれています。Toolkit はファイル システム ベースであるため、アプリがディスクからデータを読み取ったり、ディスクにデータを書き込んだりする場合はファイル パスを解決する必要があります。アプリはファイル システム構成に依存しません。つまり、ファイル システムの整理方法を認識しません。テンプレート システムはこれらすべてを処理します。 +Toolkit Core にはファイル パスを処理するためのシステムが含まれます。これは「テンプレート システム」\_\_と呼ばれています。Toolkit はファイル システム ベースであるため、アプリがディスクからデータを読み取ったり、ディスクにデータを書き込んだりする場合はファイル パスを解決する必要があります。アプリはファイル システム構成に依存しません。つまり、ファイル システムの整理方法を認識しません。テンプレート システムはこれらすべてを処理します。 -テンプレート システムの中心は「テンプレート設定ファイル」__です。このファイルには、プロジェクトの重要なすべてのファイル システムの場所が含まれています。__テンプレートは次のようになっています。 +テンプレート システムの中心は「テンプレート設定ファイル」**です。このファイルには、プロジェクトの重要なすべてのファイル システムの場所が含まれています。**テンプレートは次のようになっています。 ```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "shots/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` 特定の動的フィールドが含まれるパスを定義します。各フィールドの設定には検証と入力が必要です。たとえば、上記テンプレートの `{version}` フィールドが 3 つのゼロ(`001`、`012`、`132` など)を使用した整数となるように定義します。アプリがディスクに何かを読み書きする必要がある場合は、その場所を示すテンプレートがテンプレート ファイルに追加されます。多くの場合、アプリはパイプラインを形成するように設定されているため、あるアプリ(パブリッシュ アプリなど)の出力テンプレートが、別のアプリ(ロード アプリなど)の入力テンプレートになることがよくあります。そのため、ファイル システムの場所は、すべて 1 つのファイルに保存されます。 @@ -161,7 +162,7 @@ maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' ![](images/toolkit-overview/templates.png) -ここで Toolkit のコンテキスト__が必要になります。Toolkit のコンテキストを使用すると、テンプレート フィールドを 2 つの異なるグループに分割できます。コンテキスト フィールド(`Shot`、`Step`、`Asset` など)は、アプリ外でアプリのロジックを使用して解決するためのフィールドです。ショットやアセットなどのコンセプトを処理する専用コードを設定する必要はありません。アプリには、このアプリに固有のビジネス ロジック__に直接関連付けられたフィールドのみを入力する必要があります。たとえば、Publish アプリでは、ビジネス ロジックは `name` フィールドと `version` フィールドで構成されます。したがって、上の図に示すとおり、Toolkit はフィールド解決を 2 つの異なるフェーズに分割します。一部のフィールドはコンテキストによって解決され、他のフィールドはアプリのビジネス ロジックによって処理されます。この方法では、アプリが特定のファイル システム レイアウトに関連付けられない仕様にすることができます。これは優れたパイプライン ツールを作成する上で重要な要素だと考えています。 +ここで Toolkit のコンテキスト**が必要になります。Toolkit のコンテキストを使用すると、テンプレート フィールドを 2 つの異なるグループに分割できます。コンテキスト フィールド(`Shot`、`Step`、`Asset` など)は、アプリ外でアプリのロジックを使用して解決するためのフィールドです。ショットやアセットなどのコンセプトを処理する専用コードを設定する必要はありません。アプリには、このアプリに固有のビジネス ロジック**に直接関連付けられたフィールドのみを入力する必要があります。たとえば、Publish アプリでは、ビジネス ロジックは `name` フィールドと `version` フィールドで構成されます。したがって、上の図に示すとおり、Toolkit はフィールド解決を 2 つの異なるフェーズに分割します。一部のフィールドはコンテキストによって解決され、他のフィールドはアプリのビジネス ロジックによって処理されます。この方法では、アプリが特定のファイル システム レイアウトに関連付けられない仕様にすることができます。これは優れたパイプライン ツールを作成する上で重要な要素だと考えています。 通常、パス解決を処理するアプリ コードは次のようになります。 @@ -181,6 +182,7 @@ fields["version"] = 234 # order to save out the file path = publish_template_obj.apply_fields(fields) ``` + テンプレート API の設定方法と使用方法に関する詳細については、次を参照してください。 [ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868) @@ -189,11 +191,11 @@ path = publish_template_obj.apply_fields(fields) # 実行するエンジンとアプリを選択する -Toolkit Core にはユーザに表示するアプリを決定する上で__重要な役割があります。キャラクタ リギングの作業時に Maya を起動する場合、ショットのライトを処理するときに別のアプリ コレクションが必要になることがあります。さらに、操作方法に応じてアプリを個別に設定できるため、リギングのレビュー アプリでターンテーブルを生成する一方で、アニメータが実行したときには同じレビュー アプリでショット カメラを使用してプレイブラストを実行できます。 +Toolkit Core にはユーザに表示するアプリを決定する上で\_\_重要な役割があります。キャラクタ リギングの作業時に Maya を起動する場合、ショットのライトを処理するときに別のアプリ コレクションが必要になることがあります。さらに、操作方法に応じてアプリを個別に設定できるため、リギングのレビュー アプリでターンテーブルを生成する一方で、アニメータが実行したときには同じレビュー アプリでショット カメラを使用してプレイブラストを実行できます。 -このような柔軟性を実現するために、Toolkit プロジェクト設定には一連の「環境」__が含まれます。環境とは、一連のアプリ、エンジン、およびそれらすべての設定パラメータを定義する設定ファイルです。 +このような柔軟性を実現するために、Toolkit プロジェクト設定には一連の「環境」\_\_が含まれます。環境とは、一連のアプリ、エンジン、およびそれらすべての設定パラメータを定義する設定ファイルです。 -Toolkit の起動時に、初期化する環境__を決定する必要があります。このためには、独自のビジネス ロジックを追加できる「フック」__と呼ばれる Python コードを使用します。__コンテキスト オブジェクトはこのコードに渡され、多くの場合、使用する環境を決定するために使用されます。 +Toolkit の起動時に、初期化する環境**を決定する必要があります。このためには、独自のビジネス ロジックを追加できる「フック」**と呼ばれる Python コードを使用します。\_\_コンテキスト オブジェクトはこのコードに渡され、多くの場合、使用する環境を決定するために使用されます。 ![](images/toolkit-overview/environment.png) @@ -211,16 +213,16 @@ Toolkit の起動時に、初期化する環境__を決定する必要があり 既定の設定のファイル システムはパイプライン ステップに基づいて整理されます。つまり、ショットの場所にモデリングやリギングなどのフォルダが配置されます。基本的に、作業するパイプライン ステップごとにフォルダが 1 つあります。各フォルダには、ディスク上の独自の作業領域とパブリッシュ領域が含まれます。そのため、パブリッシュ テンプレートは次のようになります。 ```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` このテンプレートを使用するには、コンテキストにエンティティとパイプライン ステップの両方を含める必要があります。シーケンス `ABC` とパイプライン ステップ `Modeling` の子であるショット `1122` の場合、上記のテンプレートは `sequences/ABC/1122/Modeling/...` に解決されます。これは、ショットが含まれ、パイプライン ステップが含まれないコンテキストは、上記のテンプレートの入力値が不足していることを意味します。ショットのみのコンテキストでは Maya を起動できないため、上記のテンプレートを使用することはできません。このテンプレートを使用するには、ステップが必要です。 これにより、上記のように環境の内容が設定されます。既定の設定で定義されたファイル システム構成はステップ中心であるため、すべての主要なアプリは、ステップが定義されたコンテキストで実行する必要があります。既定の設定では、`asset_step.yml` と `shot_step.yml` の 2 種類の環境ファイルを定義します。各ファイルには、Maya、Nuke、3dsmax、Motionbuilder、Photoshop といった数多くの DCC 用のエンジンが含まれています。{% include product %} 内のタスクから Maya を起動する場合、選択環境フックは環境 `shot_step` を選択し、Maya を起動して Maya のアプリ設定をロードします。 -これは、{% include product %} 内のショット オブジェクトから Maya を直接起動する際にも役立ちます。さらに重要なのは、これはコンソール `tank Shot 1122 launch_maya` で入力できるようにする際に本当に役立つということです。`shot` 環境と `asset` 環境が関係するのはこの段階です。ショットまたはアセットが含まれ、パイプライン ステップが含まれないコンテキストを使用して Maya をロードすると、これらの環境のいずれかがロードされます。ファイル システム構成はパイプライン ステップごとにすべて整理されるため、コンテキストにパイプライン ステップの情報がない場合、ロードやパブリッシュの実行は非常に困難です。Maya は、作業ファイル__ アプリのみが含まれる最小設定で起動されます。このアプリを使用すると、作業するタスクを選択できます。タスクを選択すると、Toolkit はコンテキストを切り替えてエンジンを再起動し、すべてのアプリが搭載された環境 `shot_step` をロードします。 +これは、{% include product %} 内のショット オブジェクトから Maya を直接起動する際にも役立ちます。さらに重要なのは、これはコンソール `tank Shot 1122 launch_maya` で入力できるようにする際に本当に役立つということです。`shot` 環境と `asset` 環境が関係するのはこの段階です。ショットまたはアセットが含まれ、パイプライン ステップが含まれないコンテキストを使用して Maya をロードすると、これらの環境のいずれかがロードされます。ファイル システム構成はパイプライン ステップごとにすべて整理されるため、コンテキストにパイプライン ステップの情報がない場合、ロードやパブリッシュの実行は非常に困難です。Maya は、作業ファイル\_\_ アプリのみが含まれる最小設定で起動されます。このアプリを使用すると、作業するタスクを選択できます。タスクを選択すると、Toolkit はコンテキストを切り替えてエンジンを再起動し、すべてのアプリが搭載された環境 `shot_step` をロードします。 -同様に、環境 `project` は、作業ファイル アプリのみが含まれる汎用的なフォールバックになります。__このため、プロジェクト内のほとんどの場所から Maya を起動できます。最小状態で Toolkit が初期化されるため、作業ファイル アプリを使用して有効な作業領域にジャンプできます。__ +同様に、環境 `project` は、作業ファイル アプリのみが含まれる汎用的なフォールバックになります。**このため、プロジェクト内のほとんどの場所から Maya を起動できます。最小状態で Toolkit が初期化されるため、作業ファイル アプリを使用して有効な作業領域にジャンプできます。** # アプリを設定する @@ -240,13 +242,13 @@ maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' ## フック -Toolkit は、テンプレートを使用したアプリ設定に加えて、フックと呼ばれるコンセプトもサポートしています。__フックは Python コードの小型スニペットであるため、設定の一環としてアプリを部分的にカスタマイズできます。 +Toolkit は、テンプレートを使用したアプリ設定に加えて、フックと呼ばれるコンセプトもサポートしています。\_\_フックは Python コードの小型スニペットであるため、設定の一環としてアプリを部分的にカスタマイズできます。 次に、その動作と仕組みについて説明します。 -アプリは複数のエンジンとプロジェクト間で再利用できるため優れています。ただし、アプリにはエンジン固有のロジックの小型スニペットがいくつか必要です。たとえば、Nuke と Maya の両方で動作するローダー アプリを作成する場合、実際のファイル ロード__を処理するコードが必要です。このコードは Nuke と Maya では別のものにする必要があります。さらに、すべてのエンジンでこのアプリを使用できれば便利です。また、スタジオが異なればシーンに項目をロードする方法も異なります。スタジオによって、カスタムの Maya リファレンス ノードをサポートする必要がある場合や、読み込みのみができれば良い場合もあります。 +アプリは複数のエンジンとプロジェクト間で再利用できるため優れています。ただし、アプリにはエンジン固有のロジックの小型スニペットがいくつか必要です。たとえば、Nuke と Maya の両方で動作するローダー アプリを作成する場合、実際のファイル ロード\_\_を処理するコードが必要です。このコードは Nuke と Maya では別のものにする必要があります。さらに、すべてのエンジンでこのアプリを使用できれば便利です。また、スタジオが異なればシーンに項目をロードする方法も異なります。スタジオによって、カスタムの Maya リファレンス ノードをサポートする必要がある場合や、読み込みのみができれば良い場合もあります。 -このような違いは、Toolkit でフック__を使用すれば解決できます。フックはカスタマイズ可能なコードです。アプリには、基本的な設定が実装されている既定のフックが含まれているため、アプリはすぐに正常に動作します。ただし、動作をカスタマイズする場合は、フック ファイルを設定にコピーすると、Toolkit がこのコードを使用するようになります。 +このような違いは、Toolkit でフック\_\_を使用すれば解決できます。フックはカスタマイズ可能なコードです。アプリには、基本的な設定が実装されている既定のフックが含まれているため、アプリはすぐに正常に動作します。ただし、動作をカスタマイズする場合は、フック ファイルを設定にコピーすると、Toolkit がこのコードを使用するようになります。 [フックの操作方法を管理者ガイドで確認する](https://support.shotgunsoftware.com/hc/ja/articles/219033178) @@ -282,7 +284,7 @@ Toolkit をインストールすると、複数のプライマリ エントリ Toolkit は、単にアプリとエンジンをまとめたものではありません。独自のツールと技術の開発に使用するフレームワークでもあります。Toolkit を豊富な機能を備えたスタジオの開発プラットフォームにするための機能が多数含まれています。Toolkit を基盤にすると、自分で基本的なプラットフォームを構築する必要がなく、身近な問題に集中することができます。開発者がアーティストのパイプラインを間違って破壊しないようにソフトウェアの作成、評価、およびリリースを簡単に行えるようにしました。 - エンジンは、基盤に関係なく、アプリを Python や Qt (PySide/PySide2)で作成できるようにするものです。非常に単純なエンジンもありますが、使用できる API によっては複雑なエンジンもあります。エンジンによって、簡単で一貫性のある方法を使用してスタジオ用のツールを開発できます。これまでの経験から、開発環境スタジオでは Python と Qt を使用することが多く、TD の多くはこれらのプログラミング言語に慣れています。 -- また、エンジン レイヤによって、アプリを一度作成すれば複数の環境で展開できます。オートデスクは、標準的なアプリ スイートを「マルチ アプリ」__として開発しているため、すべてのエンジンで同じアプリを使用します。各 DCC アプリケーションで公開される特定の API と連携するように調整する必要がある特定のコードが必ずありますが、通常、これは 1 つ以上のフックに含まれるため、アプリケーションを簡単に再利用できます。このようにマルチ アプリを作成できるため、新しいエンジンを開発する場合、この新しいエンジンと連携するように標準的なすべてのアプリを簡単に設定できます。 +- また、エンジン レイヤによって、アプリを一度作成すれば複数の環境で展開できます。オートデスクは、標準的なアプリ スイートを「マルチ アプリ」\_\_として開発しているため、すべてのエンジンで同じアプリを使用します。各 DCC アプリケーションで公開される特定の API と連携するように調整する必要がある特定のコードが必ずありますが、通常、これは 1 つ以上のフックに含まれるため、アプリケーションを簡単に再利用できます。このようにマルチ アプリを作成できるため、新しいエンジンを開発する場合、この新しいエンジンと連携するように標準的なすべてのアプリを簡単に設定できます。 - パイプライン設定とクローン作成により、開発サンドボックスを簡単に作成できるため、開発者は日常の制作活動に影響を受けることなく制作上の開発を行うことができます。ツールを展開する準備が完了すると、メインのプロジェクト設定は簡単に更新でき、このツールはすべてのアーティストに展開されます。 - アプリはエンジン内で実行されるため、簡単に再ロードできます。新しいコード変更をテストするたびに Nuke や Maya を再起動する必要はなく、Toolkit の再ロード ボタンをクリックするだけで、最新のコードがロードされます。 diff --git a/docs/ja/guides/pipeline-integrations/development.md b/docs/ja/guides/pipeline-integrations/development.md index 229880946..cfffa0094 100644 --- a/docs/ja/guides/pipeline-integrations/development.md +++ b/docs/ja/guides/pipeline-integrations/development.md @@ -22,6 +22,7 @@ Toolkit を使用して開発する場合は、複数の方法を使用できま これらのいずれかの操作を行うには、Toolkit API の使用方法を理解することが重要です。 ShotGrid 全体には、3 つの主な API があります + - [ShotGrid Python API](https://developer.shotgridsoftware.com/python-api) - [ShotGrid REST API](https://developer.shotgridsoftware.com/rest-api/) - [ShotGrid Toolkit API](https://developer.shotgridsoftware.com/tk-core) @@ -30,4 +31,4 @@ Toolkit API は、ShotGrid Python API または ShotGrid REST API と一緒に Toolkit API は主に、ファイル パスの統合と管理を行います。一部の Toolkit アプリおよびフレームワークには、[独自の API](../../reference/pipeline-integrations.md) も含まれています。 -これらの記事では、Toolkit を使用した開発方法について説明します。 \ No newline at end of file +これらの記事では、Toolkit を使用した開発方法について説明します。 diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md index 04ab1e00b..b86e5c598 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md @@ -15,6 +15,7 @@ lang: ja - [独自のアプリを作成する](#creating-your-own-app) 手順: + 1. [開発サンドボックスを作成する](#part-1-creating-a-development-sandbox) 2. [スターター アプリ リポジトリのフォークまたはダウンロード](#part-2-forking-or-downloading-the-starter-app-repository) 3. [アプリを環境設定に追加する](#part-3-adding-the-app-to-your-config) @@ -27,8 +28,9 @@ lang: ja 6. [最初のリリースを準備する](#part-6-preparing-your-first-release) 追加情報: + - [既存のアプリを変更する](#modifying-an-existing-app) - - [支援する](#contributing) + - [支援する](#contributing) ## Toolkit アプリとは何か? @@ -45,17 +47,19 @@ Toolkit アプリは、次のように定義されます。 Toolkit アプリは Toolkit エンジンによって初期化されます。[エンジン](https://developer.shotgridsoftware.com/tk-core/platform.html#engines)は特定のソフトウェア環境内で実行するように設計されていて、この環境から Toolkit アプリを実行するインタフェースが提供されます。エンジンを使用すると、アプリでさまざまなソフトウェア環境を処理するという複雑な作業が不要になります。つまり、アプリに必要なことは目的を達成するための機能を提供することであり、ウィンドウのペアレント化の処理、ユーザのコンテキストのトラッキング、自分自身を起動するためのショートカットなどを提供する必要はありません。 ## 独自のアプリを作成する + ShotGrid Software によって維持およびリリースされるすべてのアプリとエンジンはオープン ソースであり、[GitHub](https://github.com/shotgunsoftware) から入手できます。 このセクションでは、スターター テンプレートを使用して新しいアプリを作成する方法について説明します。 ユーザは GitHub と git のワークフローに精通していることが前提となりますが、ソース管理ソリューションとして git を使用していなくても、Toolkit の開発は可能です。 - ## パート 1: 開発サンドボックスを作成する + 他の作業を開始する前に、[プロジェクト設定のクローンを作成して開発サンドボックスを設定する](../getting-started/installing_app.md#clone-the-pipeline-configuration-you-want-to-add-an-app-to)ことをお勧めします。 これにより、個別の設定が作成され、プロダクション環境の他のユーザに影響を与えることなく、コードを開発して変更をテストできるようになります。 ## パート 2: スターター アプリ リポジトリのフォークまたはダウンロード + オートデスクは、独自のアプリを作成する際の第一歩として使用できる[テンプレート スターター アプリ](https://github.com/shotgunsoftware/tk-multi-starterapp)を提供しています。このアプリを使用すると、ユーザ用に設定されたすべての標準的なツールキット定型コード、および基本的なサンプル GUI が使用できるようになります。 ![Toolkit スターター アプリの既定の GUI](./images/starter-app.png) @@ -63,6 +67,7 @@ ShotGrid Software によって維持およびリリースされるすべての このプラグインを使用するには、git リポジトリをフォークしてディスク上のローカル開発領域にクローンを作成します。この段階で git ソース コントロールを使用しない場合は、zip ファイルとして GitHub からファイルをダウンロードし、ローカルに解凍します(git リポジトリは後でいつでもセットアップできます)。いずれの場合も、目標となるのは、変更を開始できるよう、スターター アプリ コードのローカル コピーを作成することです。 ## パート 3: アプリを環境設定に追加する + 「[アプリを追加する](../getting-started/installing_app.md)」ガイドを参照することをお勧めします。このガイドには、環境設定にアプリを追加する詳細な方法が示されています。 アプリを環境設定に追加する場合は、アプリの使用場所を考慮する必要があります。たとえば、Nuke だけで使用する場合、複数の異なるソフトウェアで使用する場合、または ShotGrid Desktop からスタンドアロンで使用する場合があります。アプリが依存するコンテキストについても考慮する必要があります。たとえば、ユーザが作業しているタスクがわかっている場合に限ってアプリを実行できるのか、または既知のプロジェクトに限定してアプリを実行できるのかを検討します。この情報がわかれば、アプリの設定を追加する必要がある YAML 環境ファイルおよびエンジンが決まります。 @@ -77,6 +82,7 @@ tk-multi-starterapp: type: dev path: /path/to/source_code/tk-multi-starterapp ``` + 開発記述子は、Toolkit に対して、指定された場所のディスクから直接アプリ コードをロードするよう指示します。これは、コードを常に変更する必要がある開発に最適です。 後でプロダクション設定にアプリを追加する場合は、別の記述子を使用できます。 @@ -97,29 +103,33 @@ tk-multi-starterapp: - **python/app/dialog.py**: このフォルダには、メイン アプリ ウィンドウを生成するロジックやイベント コールバックなどが格納されます。 - **python/app/ui**: このフォルダには、自動的に生成された UI コードおよびリソース ファイルが格納されます。このフォルダを直接編集しないで、代わりに `resources` フォルダ内の Qt UI ファイルを編集してください。 - **resources/**: リソース フォルダにある `dialog.ui` ファイルは Qt Designer ファイルです。これを開いて使用することで、アプリのルック アンド フィールをすばやく設計および定義することができます。 - 変更の後、`build_resources.sh` スクリプトを実行して UI ファイルを Python コードに変換し、`/python/app/ui/dialog.py` として保存する必要があります。 + 変更の後、`build_resources.sh` スクリプトを実行して UI ファイルを Python コードに変換し、`/python/app/ui/dialog.py` として保存する必要があります。 - **style.qss**: このファイルで UI の QSS (Qt スタイルシート)を定義できます。 {% include info title="注" content="アプリに UI はなくてもかまいませんが、有効なアプリの最低限の要件は、`app.py` に `Application` クラスおよび `info.yml` が含まれていることです。"%} ### 環境設定 + マニフェスト ファイル内に、アプリの設定を定義できる `configuration` セクションが含まれている必要があります。 マニフェスト ファイル内で設定を定義すると、YAML 環境ファイル内のアプリにさまざまな値を設定できます。これは、アプリが配置されている環境に応じて動作を変更する必要がある場合に便利です。 たとえば、ファイルを保存するときに使用するテンプレートを定義する設定が必要な場合があります。 + ```yaml save_template: - type: template - default_value: "maya_asset_work" - description: The template to use when building the path to save the file into - allows_empty: False + type: template + default_value: "maya_asset_work" + description: The template to use when building the path to save the file into + allows_empty: False ``` + この設定を作成すると、アプリ コード内にテンプレート名をハード コード化する必要がなくなり、代わりに `info.yml` 内で既定で定義された設定、または YAML 環境ファイルの設定でオーバーライドされた設定から[値を取得](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting)できるようになります。 ```python template = app.get_setting("save_template") ``` + つまり、アプリが実行されている環境に応じて、異なるテンプレートを使用するようにアプリを設定できます。 環境設定の詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/platform.html#the-configuration-section)を参照してください。 @@ -138,6 +148,7 @@ frameworks: ``` #### フレームワークの必要最小バージョン + フレームワークに必要最低限のバージョンがある場合は、`info.yml` で minimum_version 設定を使用できます。 ```python @@ -165,6 +176,7 @@ Maya などのソフトウェア内でアプリをテストする場合に、設 {% include info title="注" content="UI が画面上でアクティブになっている場合は、自動的に更新されず、メニューから UI を呼び出して再起動する必要があります。"%} ## パート 5: テスト + コードをテストする場合は、他のユーザを ShotGrid の `PipelineConfiguration` エンティティの `User Restrictions` フィールドに追加することで、自分の開発サンドボックスに簡単に招待できます。 ユーザを追加するとすぐに、ShotGrid Create 内のメニューに関する新しいエントリ、ブラウザ アクション、および ShotGrid Desktop 内で設定を選択するオプションが表示されます。 @@ -180,10 +192,11 @@ ShotGrid に付属しているすべてのアプリは、Toolkit App Store を ```yaml location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 + name: tk-multi-setframerange + type: app_store + version: v0.1.7 ``` + これにより、Toolkit (たとえば、`tank updates` コマンド)は更新が利用可能になる時期を確認し、設定を非常に安全な方法で更新および維持することができます。 更新コマンドの実行中に新しいバージョンが利用可能になると、Toolkit はコードをダウンロードし、ディスク上のローカルな「バンドル キャッシュ」に配置し、ユーザがコードにアクセスできるようにします。 @@ -213,6 +226,7 @@ git で最初のタグ(例: `v1.0.0`)を作成した後で、タグを指す git {% include warning title="注意" content="git 記述子は[中央設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)で適切に機能します。中央設定では、通常、管理者がアプリのキャッシュを実行して、すべてのユーザがアクセスできる中央の場所に格納します。ただし、[分散設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)を使用している場合は、適切に機能しない可能性があります。アプリはユーザごとにダウンロードされるため、それぞれのユーザが git をインストールするとともに、リポジトリを使用して認証し、コードにアクセスするように設定する必要があります。"%} ## 既存のアプリを変更する + 場合によっては、空のスターター テンプレートから開始するのではなく、ShotGrid Software の標準アプリの 1 つなどの既存のアプリに、マイナー機能を追加する必要があります。 変更したバージョンのアプリを使用する場合は通常、ソース アプリを「トラック」し、定期的に変更とバグ修正を取得します。 @@ -223,17 +237,18 @@ git で最初のタグ(例: `v1.0.0`)を作成した後で、タグを指す git 次のワークフローに実行の手順を示します。 - 親アプリをフォークして、自分専用のリポジトリを作成します。フォークを使用してすべての git タグを取得します。 - 最新のタグは `v0.2.12` と呼ばれ、マスター ブランチは基本的にこのタグのコンテンツと同じです。 + 最新のタグは `v0.2.12` と呼ばれ、マスター ブランチは基本的にこのタグのコンテンツと同じです。 - 変更を適用し、マスター ブランチにコミットします。これで、`v0.2.12` に変更が加えられた状態になります。 - これをプロダクション構成にリリースするときは、タグを作成する必要があります。タグに `v0.2.12.1` という名前を付け、コードが `v0.2.12` に基づいていること、そしてこれが最初のリリースであることを示します。 + これをプロダクション構成にリリースするときは、タグを作成する必要があります。タグに `v0.2.12.1` という名前を付け、コードが `v0.2.12` に基づいていること、そしてこれが最初のリリースであることを示します。 - 誰かが変更部分にバグを見つけました。バグを修正し、タグを付けて `v0.2.12.2` をリリースします。 - 親リポジトリではいくつかの重要なバグ修正がリリースされました。 - それらをリポジトリにプル ダウンします。親リポジトリで発生したリリースにより、現在の最新のタグは `v0.2.15` です。 - 変更をマスターとマージして、テストします。これで、基本的に親アプリ `v0.2.15` が変更にマージされました。`v0.2.15.1` にタグを付けます。 + それらをリポジトリにプル ダウンします。親リポジトリで発生したリリースにより、現在の最新のタグは `v0.2.15` です。 + 変更をマスターとマージして、テストします。これで、基本的に親アプリ `v0.2.15` が変更にマージされました。`v0.2.15.1` にタグを付けます。 上記のタグ付けスキームにより、Toolkit の更新が正しく実行され、フォーク内の各タグがどのコードに基づいているかを簡単に確認できるようになります。 ### 支援する + プル リクエストを歓迎します。他のユーザにとっても有益と思われる変更を行った場合には、プル リクエストとしてフィードバックしていただくようお願いいたします。 フィードバックは、アプリのメイン バージョンに反映させていただく場合があります。 あるいは、[ロードマップ ページ](https://www.shotgunsoftware.com/roadmap/)に新しいアイデアに関する提案を追加してください。 diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md index 5efd7e409..dcd7249a2 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md @@ -13,7 +13,6 @@ lang: ja {% include info title="注" content="[分散設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)を使用している場合は、Toolkit エンジンを初期化してから、Toolkit API メソッドを実行する必要があります。[中央設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)を使用している場合は、エンジンをブートストラップしなくても API を使用できます。ただし、[ファクトリ メソッド](https://developer.shotgridsoftware.com/tk-core/initializing.html#factory-methods)を使用している場合は、`sgtk` を読み込むときに、プロジェクトに適した Core API のパスを手動で特定する必要があります。"%} - ### 要件 - Python プログラミングの基礎についての理解。 @@ -133,11 +132,10 @@ sgtk.set_authenticated_user(user) 3. 現在ロードされている sgtk コアを、環境設定に適したコアに入れ替えます。 4. エンジン、アプリ、およびフレームワークを初期化します。 - {% include info title="注" content="通常は、ブートストラップする際に、このエンジンを正常に実行するために必要なあらゆる要件に注意する必要があります。ただし、場合によっては、ブートストラップ プロセスに含まれない特定の設定要件があり、個別に処理しなければならないことがあります。"%} - ### ブートストラップの準備 + ブートストラップを実行するには、まず [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) インスタンスを作成する必要があります。 ```python @@ -149,16 +147,19 @@ Toolkit でブートストラップを行うには、少なくともエンティ #### プラグイン ID プラグイン ID を定義するには、ブートストラップ メソッドを呼び出す前に文字列を `ToolkitManager.plugin_id` パラメータに渡します。このガイドでは、`tk-shell` エンジンをブートストラップするため、リファレンス ドキュメントに記載されている規則に従って、適切なプラグイン ID 名を指定する必要があります。 + ```python mgr.plugin_id = "basic.shell" ``` #### エンジン + Maya や Nuke などのソフトウェアの外部にあるスタンドアロン Python 環境でアプリを起動したり、Toolkit コードを実行したりする場合は、`tk-shell` がブートストラップ先のエンジンになります。 サポート対象ソフトウェア内で Toolkit アプリを実行する場合は、`tk-maya` または `tk-nuke`などの適切なエンジンを選択します。このパラメータは、[`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) メソッドに直接渡されます。以下の[エンティティ セクション](#entity)の例を参照してください。 #### エンティティ + [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) メソッドの `entity` パラメータを使用する目的は、[コンテキスト](https://developer.shotgridsoftware.com/tk-core/core.html#context)、つまり、起動したエンジンの[環境](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=environment#module-pick_environment)を設定することです。エンティティには、環境設定が機能する任意のエンティティ タイプを指定できます。たとえば、`Project` エンティティを指定した場合、エンジンはプロジェクトの環境設定を使用してプロジェクト コンテキスト内で起動します。同様に、(タスクが `Asset` にリンクされている) `Task` エンティティを指定して、エンジンが `asset_step.yml` 環境を使用して起動するように設定できます。この動作は既定の設定動作に基づいて決まり、[選択した環境](https://developer.shotgridsoftware.com/ja/487a9f2c/#toolkit-%E3%81%8C%E7%8F%BE%E5%9C%A8%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E5%88%A4%E6%96%AD%E3%81%99%E3%82%8B%E4%BB%95%E7%B5%84%E3%81%BF)はコア フック [`pick_environment.py`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.11/core/hooks/pick_environment.py) によってコントロールされます。したがって、コンテキストやその他のパラメータに基づいて異なる環境を選択するよう変更することができます。 エンティティは、タイプと ID が最低限必要となる ShotGrid エンティティ ディクショナリの形式で指定する必要があります。 @@ -184,7 +185,6 @@ def pre_engine_start_callback(ctx): mgr.pre_engine_start_callback = pre_engine_start_callback ``` - #### 設定の選択 ブートストラップする設定を明示的に定義するか、ブートストラップ ロジックを終了して[適切な設定を自動検出](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations)することができます。設定が自動検出されない場合に備えて、フォールバック設定を行うこともできます。このガイドでは、プロジェクトに設定が既に行われていて、この設定が自動検出されると想定しています。 @@ -243,6 +243,7 @@ engine.context engine.sgtk engine.shotgun ``` + このガイドの最終的な目標はアプリの起動方法を示すことですが、この時点で上記のアトリビュートを利用して、コード スニペットをテストしたり、Toolkit API を利用するする自動化を行ったりできます。 ### アプリを起動する @@ -250,6 +251,7 @@ engine.shotgun エンジンが起動すると、環境用に定義されたすべてのアプリが初期化されます。次に、アプリによってエンジンにコマンドが登録されます。Maya などのソフトウェア内で実行されているコマンドは、通常、メニューにアクションとして表示されます。 #### コマンドを検索する + 登録されたコマンドを最初に確認するには、[`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) プロパティを出力します。 ```python diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md index 99144f629..f986474a3 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md @@ -8,22 +8,25 @@ lang: ja # 独自のエンジンを開発する ## はじめに + このドキュメントでは、Toolkit エンジンの開発に関するいくつかの技術的詳細について簡単に説明します。 目次: + - [Toolkit エンジンとは何か?](#what-is-a-toolkit-engine) - [開始する前に必要な情報](#things-to-know-before-you-start) - [エンジン統合へのアプローチ](#approaches-to-engine-integration) - - [Qt、PyQt/PySide および Python が含まれているホスト ソフトウェア](#host-software-includes-qt-pyqtpyside-and-python) - - [Qt および Python が含まれているが PySide/PyQt は含まれていないホスト ソフトウェア](#host-software-includes-qt-and-python-but-not-pysidepyqt) - - [Python が含まれているホスト ソフトウェア](#host-software-includes-python) - - [Python が含まれていないが、プラグインを書き込むことができるホスト ソフトウェア](#host-software-does-not-contain-python-but-you-can-write-plugins) - - [スクリプト機能を提供しないホスト ソフトウェア](#host-software-provides-no-scriptability-at-all) + - [Qt、PyQt/PySide および Python が含まれているホスト ソフトウェア](#host-software-includes-qt-pyqtpyside-and-python) + - [Qt および Python が含まれているが PySide/PyQt は含まれていないホスト ソフトウェア](#host-software-includes-qt-and-python-but-not-pysidepyqt) + - [Python が含まれているホスト ソフトウェア](#host-software-includes-python) + - [Python が含まれていないが、プラグインを書き込むことができるホスト ソフトウェア](#host-software-does-not-contain-python-but-you-can-write-plugins) + - [スクリプト機能を提供しないホスト ソフトウェア](#host-software-provides-no-scriptability-at-all) - [Qt ウィンドウのペアレント化](#qt-window-parenting) - [起動動作](#startup-behavior) - [ホスト ソフトウェアの推奨機能リスト](#host-software-wish-list) ## Toolkit エンジンとは何か? + エンジンを開発する場合は、ホスト ソフトウェアと、エンジンにロードされている各種の Toolkit アプリおよびフレームワークの間で効果的にブリッジを確立します。 エンジンを使用すると、ソフトウェア間の相違を抽象化することができるため、Python と Qt を使用してソフトウェアに依存しない方法でアプリを作成できるようになります。 @@ -60,26 +63,26 @@ lang: ja ホスト アプリの機能によっては、エンジン開発が多少複雑になる場合があります。 このセクションでは、エンジン開発中に見られた、さまざまなレベルの複雑さについて説明します。 - ### Qt、PyQt/PySide および Python が含まれているホスト ソフトウェア + これは Toolkit を設定する最善の方法であり、Qt、Python、および PySide をサポートするホスト ソフトウェア上にエンジンを実装する方法は非常に簡単です。 この例として適切なのは、[Nuke エンジン](https://github.com/shotgunsoftware/tk-nuke)または [Maya エンジン](https://github.com/shotgunsoftware/tk-maya)などです。統合とは、実際にはログ ファイル管理に接続して ShotGrid メニューを設定するためのコードを記述することです。 - ### Qt および Python が含まれているが PySide/PyQt は含まれていないホスト ソフトウェア + このクラスのソフトウェアには [Motionbuilder](https://github.com/shotgunsoftware/tk-motionbuilder) などがあり、比較的簡単に統合できます。ホスト ソフトウェア自身は Qt で記述され、Python インタープリタを含んでいるので、PySide または PyQt のバージョンをコンパイルし、エンジンとともに配布することができます。 この PySide は Python 環境に追加されるため、Python を使用して Qt オブジェクトにアクセスすることが可能になります。一般に、PySide をコンパイルするときは、正常な動作を保証するために、ショット アプリケーションをコンパイルしたときに使用したものとまったく同じコンパイラ設定を使用する必要があります。 - ### Python が含まれているホスト ソフトウェア + このクラスのソフトウェアには、サードパーティの統合 [Unreal](https://github.com/ue4plugins/tk-unreal) などがあります。これらのホスト ソフトウェアには Qt 以外の UI が使用されていますが、Python インタープリタが組み込まれています。 これは、Python コードを環境の内部で実行できることを意味しますが、既存の Qt イベント ループは実行されません。 この場合、Qt と PySide をエンジンに組み込んで、Qt メッセージ ポンプ(イベント)ループを UI のメイン イベント ループに接続する必要があります。 ホスト ソフトウェアには、これを正確に実行するための特殊なメソッドが含まれている場合があります。 含まれていない場合は、Qt イベント ループがアイドル時呼び出しなどを介して定期的に実行されるように、調整する必要があります。 - ### Python が含まれていないが、プラグインを書き込むことができるホスト ソフトウェア + このクラスには、[Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) と [After Effects](https://github.com/shotgunsoftware/tk-aftereffects) が含まれます。Python スクリプティングはありませんが、C++ プラグインを作成することができます。 この場合、IPC レイヤを含むプラグインを作成し、起動時に Qt と Python を別のプロセスで起動するという方法がしばしば用いられます。 セカンダリ プロセスが実行状態になると、IPC レイヤを使用してコマンドが送受信されます。 @@ -87,20 +90,22 @@ lang: ja {% include info title="ヒント" content="オートデスクは Photoshop および After Effects エンジンを使用して、[Adobe プラグインを処理するフレームワーク](https://github.com/shotgunsoftware/tk-framework-adobe)を実際に作成しました。どちらのエンジンも、ホスト ソフトウェアとの通信にフレームワークを利用しているため、残りの Adobe ファミリ用の他のエンジンを構築する作業が容易になります。"%} - ### スクリプト機能を提供しないホスト ソフトウェア -どんな方法でもホスト ソフトウェアにプログラムを介してアクセスできない場合は、そのホスト ソフトウェアのためのエンジンを作成することはできません。 +どんな方法でもホスト ソフトウェアにプログラムを介してアクセスできない場合は、そのホスト ソフトウェアのためのエンジンを作成することはできません。 ## Qt ウィンドウのペアレント化 + 一般に、ウィンドウのペアレント化には特別な注意が必要です。 通常、PySide ウィンドウはウィジェット階層内に自然の親を持たないため、明示的に呼び出す必要があります。 ウィンドウのペアレント化は、一貫性のあるエクスペリエンスを提供するために重要です。実装されていないと、Toolkit アプリ ウィンドウがメイン ウィンドウに隠れてしまい、非常に見にくくなることがあります。 ## 起動動作 + エンジンは、ソフトウェアの起動方法や統合の開始方法の処理も行います。このロジックは、`tk-multi-launchapp` がエンジンを使用してソフトウェアを起動するときに呼び出されます。この設定方法の詳細については、[コア ドキュメント](https://developer.shotgridsoftware.com/tk-core/initializing.html?highlight=create_engine_launcher#launching-software)を参照してください。 ## ホスト ソフトウェアの推奨機能リスト + Toolkit エンジンは、次のようなホスト ソフトウェアの特性を活用できます。 対応可能な項目が多いほど、エンジンのエクスペリエンスが向上します。 @@ -110,12 +115,13 @@ Toolkit エンジンは、次のようなホスト ソフトウェアの特性 - ファイルシステムのインタラクションをラップする API コマンド: Open、Save、Save As、Add reference など。 - UI 要素を追加するための API コマンド - - カスタム Qt ウィジェットをパネルとしてアプリに追加する(バンドルされた PySide 経由が理想) - - カスタム メニュー/コンテキスト メニュー項目の追加 - - ノードベース パッケージのカスタム ノード(インタラクションのための独自の UI を簡単な方法で統合可能) - - 選択した項目またはノードなどを取得するイントロスペクション + - カスタム Qt ウィジェットをパネルとしてアプリに追加する(バンドルされた PySide 経由が理想) + - カスタム メニュー/コンテキスト メニュー項目の追加 + - ノードベース パッケージのカスタム ノード(インタラクションのための独自の UI を簡単な方法で統合可能) + - 選択した項目またはノードなどを取得するイントロスペクション + - 柔軟なイベント システム - - 「関心を引く」イベントがカスタム コードをトリガする場合がある + - 「関心を引く」イベントがカスタム コードをトリガする場合がある - UI の非同期実行のサポート - - たとえば、インタフェースをロックしないカスタム メニュー項目がトリガされたときにダイアログを表示する - - カスタム UI ウィンドウが正しくペアレント化されるように、トップ レベル ウィンドウのハンドルを提供する \ No newline at end of file + - たとえば、インタフェースをロックしないカスタム メニュー項目がトリガされたときにダイアログを表示する + - カスタム UI ウィンドウが正しくペアレント化されるように、トップ レベル ウィンドウのハンドルを提供する diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md index 38132296b..69a3be6bf 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md @@ -8,9 +8,11 @@ lang: ja # 独自のフレームワークを開発する ## はじめに + このドキュメントでは、Toolkit のフレームワークの開発に関するいくつかの技術的詳細について簡単に説明します。 目次: + - [Toolkit のフレームワークとは何か?](#what-is-a-toolkit-framework) - [既製の ShotGrid フレームワーク](#pre-made-shotgun-frameworks) - [フレームワークを作成する](#creating-a-framework) @@ -35,4 +37,5 @@ ShotGrid には、独自のアプリを作成するときに役立つことが API ドキュメントには、[フレームワークの読み込み](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)方法の例が示されています。 ## フックからフレームワークを使用する + これは、フック間で共通のロジックをいくつか共有できるようにするためのフレームワークを作成する場合に便利です。アプリ/フレームワークがマニフェスト ファイル内で明示的に要求していない場合でも、[`Hook.load_framework()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Hook.load_framework) メソッドを介して、アプリやその他のフレームワークのフックでフレームを使用することができます。このメソッドを使用しても、コア フック内でフレームワークを使用することはできません。 diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md index eb97a1e20..f077f97ef 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md @@ -40,6 +40,7 @@ ShotGrid が既に起動されている環境でコードを実行する場合 ```python import sgtk ``` + お気に入りの IDE でテストしている場合のように、ShotGrid の統合の外部で API を使用する場合は、最初に API のパスを設定する必要があります。 ```python @@ -71,11 +72,11 @@ API ドキュメントに示されているように、`Sgtk` のインスタン `Sgtk` インスタンスには、[`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) プロパティを通してアクセスできます。 - *注: `Engine.sgtk` プロパティを、パート 1 で読み込んだ `sgtk` パッケージと混同したり、同じであるとみなしたりしないでください。* + _注: `Engine.sgtk` プロパティを、パート 1 で読み込んだ `sgtk` パッケージと混同したり、同じであるとみなしたりしないでください。_ -2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity): エンジンがまだ起動されていない環境で実行している場合は、このメソッドを使用して、エンティティ ID に基づいて `Sgtk` インスタンスを取得することができます。指定した ID を持つエンティティは、`sgtk` API の読み込み元のプロジェクトに属している必要があります。*このメソッドは、分散環境設定では機能しません。詳細については、[ブートストラップ ガイド](sgtk-developer-bootstrapping.md)を参照してください。* +2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity): エンジンがまだ起動されていない環境で実行している場合は、このメソッドを使用して、エンティティ ID に基づいて `Sgtk` インスタンスを取得することができます。指定した ID を持つエンティティは、`sgtk` API の読み込み元のプロジェクトに属している必要があります。_このメソッドは、分散環境設定では機能しません。詳細については、[ブートストラップ ガイド](sgtk-developer-bootstrapping.md)を参照してください。_ -3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path): `sgtk_from_entity()` と同様ですが、環境設定のパス、またはプロジェクトのルート フォルダのパスやその内部(作業ファイルやショット フォルダなど)を使用することができます。*このメソッドは、分散環境設定では機能しません。詳細については、[ブートストラップ ガイド](sgtk-developer-bootstrapping.md)を参照してください。* +3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path): `sgtk_from_entity()` と同様ですが、環境設定のパス、またはプロジェクトのルート フォルダのパスやその内部(作業ファイルやショット フォルダなど)を使用することができます。_このメソッドは、分散環境設定では機能しません。詳細については、[ブートストラップ ガイド](sgtk-developer-bootstrapping.md)を参照してください。_ このガイドでは、エンジンが既に起動されている環境でこのコードを実行していることが前提となっているため、オプション 1 を使用します。また、`tk` という名前の変数に `Sgtk` クラス インスタンスを格納します。ShotGrid Python コンソールを使用している場合、`tk` 変数はグローバル変数として既に定義されています。 @@ -114,6 +115,7 @@ Toolkit の多くの機能は、コンテキストに関するものです。つ ```python context = current_engine.context ``` + 後の手順では、このコンテキストを使用してショット上にあるタスクのファイル パスを解決するため、コンテキストに関連情報が含まれていることを確認する必要があります。 コードが Toolkit アプリの一部として実行されていて、アプリが shot_step 環境でのみ実行されるよう設定されている場合は、現在のコンテキストが適切に取得されると想定しても安全面で問題はありません。ただし、このガイドからあいまいさを排除するために、`Sgtk.context_from_entity()` を使用して、`Task` (`Shot` に属している必要がある)からコンテキストを明示的に作成します。 @@ -171,6 +173,7 @@ Toolkit は、プロジェクト エンティティに基づいて、ディス ```python tk.create_filesystem_structure("Task", context.task["id"]) ``` + コンテキスト オブジェクトを使用して、フォルダを生成するタスクの ID を取得できます。 これで、コードは次のようになります。 @@ -210,7 +213,7 @@ template = tk.templates["maya_shot_publish"] この例では、`maya_shot_publish` テンプレートを使用します。[既定の設定](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.12/core/templates.yml#L305-L306)では、未解決のテンプレート パスは次のようになります。 ```yaml -'sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}' +"sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}" ``` テンプレートは、実際の値に解決する必要があるキーで構成されています。コンテキストには、大部分のキーに関する十分な情報が含まれているため、これを使用して値を抽出することができます。 @@ -220,6 +223,7 @@ fields = context.as_template_fields(template) >> {'Sequence': 'seq01_chase', 'Shot': 'shot01_running_away', 'Step': 'comp'} ``` + [`Context.as_template_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) メソッドは、テンプレート キーを解決するための正しい値を含むディクショナリを提供します。ただし、すべてのキーの値が提供されるわけではありません。`name`、`version`、および `maya_extension` は含まれていません。 `maya_extension` キーは、テンプレート キー セクションで[既定値を定義](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.8/core/templates.yml#L139)します。そのため、この値を指定する必要はありませんが、既定値以外の値が必要な場合は指定することができます。 @@ -246,8 +250,8 @@ publish_path = template.apply_fields(fields) これを行うための便利なメソッドがいくつかあります。コードが Toolkit アプリまたはフックで実行されている場合は、[`Application.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.ensure_folder_exists) メソッドを使用できます。エンジンが存在する場合は、[`Engine.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.ensure_folder_exists) メソッドを使用できます。エンジンの外部でコードを実行している場合は、[`sgtk.util.filesystem.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.filesystem.ensure_folder_exists) を使用できます。フォルダを作成する場合は、ファイルのフル パスではなく、フォルダのみを指定してください。[`os`](https://docs.python.org/3/library/os.html) モジュールを読み込んで、[`os.path.dirname(publish_path)`](https://docs.python.org/3/library/os.path.html#os.path.dirname) を実行し、ファイルのフル パスのフォルダ部分を抽出することができます。 ### パスを使用してファイルを作成またはコピーする -この時点でパスが存在するため、このパスを使用して、このパスにファイルを保存するよう Maya に指示したり、別の場所からファイルをコピーしたりできます。このガイドにおいて、ディスク上のこの場所にファイルを実際に作成する動作を実行することは、重要ではありません。ファイルがパス上にない場合でも、パスをパブリッシュすることはできます。ただし、[`sgtk.util.filesystem.touch_file()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file) を使用して、ディスク上に空のファイルを作成するよう Toolkit に指示することができます。 +この時点でパスが存在するため、このパスを使用して、このパスにファイルを保存するよう Maya に指示したり、別の場所からファイルをコピーしたりできます。このガイドにおいて、ディスク上のこの場所にファイルを実際に作成する動作を実行することは、重要ではありません。ファイルがパス上にない場合でも、パスをパブリッシュすることはできます。ただし、[`sgtk.util.filesystem.touch_file()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file) を使用して、ディスク上に空のファイルを作成するよう Toolkit に指示することができます。 ### 作業を統合する @@ -459,4 +463,4 @@ sgtk.util.register_publish(tk, このガイドを参照するには、Toolkit API の使用方法の基本について理解しておくことをお勧めします。API には他にも多くの用途があります。詳細については、[tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html) を参照してください。 -また、オートデスクの[フォーラム](https://community.shotgunsoftware.com/c/pipeline/6)で、API に関する疑問点についてディスカッションし、回答を得ることができます。このガイドに関するフィードバックを送信することもできます。 \ No newline at end of file +また、オートデスクの[フォーラム](https://community.shotgunsoftware.com/c/pipeline/6)で、API に関する疑問点についてディスカッションし、回答を得ることができます。このガイドに関するフィードバックを送信することもできます。 diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md index a3886d12e..06da7fbf6 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md @@ -64,21 +64,21 @@ lang: ja - 任意のタスクに自分に割り当てることができるアクション - Maya リファレンスとして Maya に {% include product %} パブリッシュをロードするアクション -アクションの実際のペイロードはアクション フック__で定義されます。アクションのロジックを定義したら、アプリ設定の {% include product %} オブジェクトにこのアクションをマップすることができます。次に、このアクション マッピングの例を示します。 +アクションの実際のペイロードはアクション フック\_\_で定義されます。アクションのロジックを定義したら、アプリ設定の {% include product %} オブジェクトにこのアクションをマップすることができます。次に、このアクション マッピングの例を示します。 ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 上記の例では、`reference`、`import`、`texture_node`、`assign_task`、および `play_in_rv` といったアクションを使用します。次に、さまざまな {% include product %} のオブジェクトと条件にこのアクションをマップします。たとえば `import` アクションは、タイプが「Maya Scene」であるすべてのパブリッシュに表示されるよう要求しています。 @@ -92,11 +92,11 @@ action_mappings: パネルは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これは既定の構成設定で次のように表示されます。 ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` キーワード `{self}` は、フックのアプリの `hooks` フォルダを確認するように Toolkit に指示します。 - このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 +このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。 @@ -176,11 +176,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。 @@ -203,4 +203,4 @@ Publish アプリの使用方法の詳細については、[ユーザ ガイド] 独自のアプリを作成できることをご存じですか。各エンジンは、Python および PySide に基づく一貫性のあるインタフェースを公開しているため、Nuke、Photoshop、および 3dsmax で動作する 1 つのアプリを作成できます。Core API 機能を使用すれば、スタジオ用に大規模なパイプライン スタックを構築する必要がなくなり、代わりに開発リソースを制作上の問題解決に集中させることができます。当社の Toolkit を使用すると、プロジェクト間でツールを容易に再利用できます。命名規則やその他の要件が変化する場合には、アプリを再構成するだけで済みます。Toolkit に組み込まれた GIT と Github のサポートによってツールを安全に展開し、開発時にコードをすばやくホットロードしましょう。独自の開発サンドボックスで作業し、TD と早期採用者を招いてテストしてください。プロジェクトに関わるすべての人にコードを適用する必要はありません。 -![](images/develop.png) \ No newline at end of file +![](images/develop.png) diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md b/docs/ja/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md index 0128ca68b..baaac0b40 100644 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ b/docs/ja/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md @@ -33,7 +33,7 @@ Toolkit エンジン、アプリ、フレーム ワークコードのほとん - すべてのサポートされているバージョンのソフトウェアで動作しますか? - ターミナル、SG Desktop、{% include product %}、または独自のカスタム アプリのどこから起動していても同じように動作しますか? -## プル リクエストを作成する  +## プル リクエストを作成する   準備ができたら、変更を Github にプッシュしてプル リクエストを作成します。プル リクエストは詳細に記述し、コードの実行内容と変更が必要な理由を含める必要があります。プル リクエストを書くときには、このコード領域に関する知識をほとんど持たないユーザのことを考慮してください。一般のユーザがプル リクエストを見て、丁寧な記述を読み、理解できる内容であることに満足するでしょう。 diff --git a/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md index ceba041ec..d581ad04d 100644 --- a/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md +++ b/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md @@ -32,8 +32,9 @@ lang: ja {% include product %} Desktop の[Advanced Project Setup]ウィザードは、既定の設定に基づいてパイプライン設定を生成します。既定の設定により、パイプライン プロセスをサポートするカスタマイズ可能な設定、アプリ、UI 要素を備えた、構築のための強固な基盤が提供されます。ユーザはプロジェクトのパイプラインに関するニーズに合わせて、このウィザードで作成される設定を編集したり、拡張したりできます。 既定の設定は、次のとおりです。 -* ディスク上のファイルの配置場所を決定する、ファイルシステムの基本的なスキーマおよびテンプレート -* ユーザのソフトウェア アプリケーション内から {% include product %} およびパイプラインの機能を直接操作できる、サポート対象のすべての[ソフトウェア統合](https://support.shotgunsoftware.com/hc/ja/articles/219039798-Integrations-Apps-and-Engines) + +- ディスク上のファイルの配置場所を決定する、ファイルシステムの基本的なスキーマおよびテンプレート +- ユーザのソフトウェア アプリケーション内から {% include product %} およびパイプラインの機能を直接操作できる、サポート対象のすべての[ソフトウェア統合](https://support.shotgunsoftware.com/hc/ja/articles/219039798-Integrations-Apps-and-Engines) カスタマイズするには、想像力、賢さ、プログラミング上の知識の他に、{% include product %} コミュニティ内の他のユーザが作成した作品から借用する能力が必要です。 @@ -41,17 +42,16 @@ lang: ja 設定はプロジェクトごとに必要です。{% include product %} Desktop を介してプロジェクトに初めてアクセスするときに、基本設定がダウンロードされて、設定されます。この基本設定により、ユーザがシステムにインストールしているサポート対象のコンテンツ作成ソフトウェアが自動的に検出され、その設定がプロジェクトに関連付けられます。サポート対象ソフトウェア アプリケーション内の統合は、パイプライン設定内の設定値によって管理されます。[Panel](https://support.shotgunsoftware.com/hc/ja/articles/219033098-Shotgun-Panel) アプリには {% include product %} のプロジェクト情報が表示されるため、アーティストは作業セッションから移動しなくてもノートに返信し、バージョンを確認することができます。[Publisher](https://support.shotgunsoftware.com/hc/ja/articles/219032998-Publishing-your-work) アプリを使用すると、アーティストはチーム内の他のメンバーに自分の作品を公開することができます。また、[Loader](https://support.shotgunsoftware.com/hc/ja/articles/219033078-Load-Published-Files-) アプリを使用すると、アーティストはチームメイトがパブリッシュしたファイルをロードすることができます。基本設定には、ファイルシステムの管理に関する設定や、ディスク上のファイルおよびフォルダの命名方法を指定するためのテンプレートの開発は含まれていません。また、既定の設定を行ったときに追加された多数のアプリも含まれていません。基本設定は、設定ファイルを手動で編集しなくても Toolkit で実行できるシンプルな設定です。ウィザードを使用すると、基本設定が既定の設定に置き換わります。また、作業中のユーザをサポートするアプリおよびソフトウェアが幅広く統合されます。基本設定を編集することもできますが、プロジェクトを設定してカスタマイズするには、高度な設定を行うことが必要になります。 - ### 基本設定と既定の設定の違い -| 機能 | 基本設定 | 既定の設定 | -| ------- | ------------------- | --------------------- | -| ダウンロード | プロジェクトにアクセスしたときに自動的にダウンロードされる | [Advanced Project Setup]ウィザードで作成される | -| アクセシビリティ | システムの場所に格納される | 手動で編集可能なファイル形式 | -| 更新 | 自動的に更新 | 手動で更新 | -| ファイルシステムのサポート | ファイルシステム スキーマはサポートされない | フォルダ構造とファイルの命名基準をサポートするためのツールが付属 | -| ソフトウェア統合 | 3ds Max、Houdini、Maya、Nuke、Photoshop、Flame | 基本設定に加えて、Hiero、Motionbulder、Mari | -| Toolkit アプリ | {% include product %} Panel、Publisher、Loader | 基本設定に加えて、Workfiles、Snapshot、Scene Breakdown、Nuke 書き込みノード、Houdini Mantra ノードなど | +| 機能 | 基本設定 | 既定の設定 | +| -------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| ダウンロード | プロジェクトにアクセスしたときに自動的にダウンロードされる | [Advanced Project Setup]ウィザードで作成される | +| アクセシビリティ | システムの場所に格納される | 手動で編集可能なファイル形式 | +| 更新 | 自動的に更新 | 手動で更新 | +| ファイルシステムのサポート | ファイルシステム スキーマはサポートされない | フォルダ構造とファイルの命名基準をサポートするためのツールが付属 | +| ソフトウェア統合 | 3ds Max、Houdini、Maya、Nuke、Photoshop、Flame | 基本設定に加えて、Hiero、Motionbulder、Mari | +| Toolkit アプリ | {% include product %} Panel、Publisher、Loader | 基本設定に加えて、Workfiles、Snapshot、Scene Breakdown、Nuke 書き込みノード、Houdini Mantra ノードなど | このガイドでは、{% include product %} Desktop のウィザードを使用し、既定の設定に基づいてプロジェクトのパイプライン設定を生成します。この設定を生成すると、独自のプロダクション パイプラインをサポートするために必要なカスタマイズを実行できるようになります。 diff --git a/docs/ja/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md b/docs/ja/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md index 2b579077e..eb9c53eba 100644 --- a/docs/ja/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ b/docs/ja/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md @@ -21,9 +21,9 @@ lang: ja ### このガイドの次の 3 つの手順 -* {% include product %} で、「Set」とよばれる**カスタム エンティティ**を作成します。これは、アーティストが作成しているダイニング ルームの要素と関連付けるために使用します。 -* フォルダの**スキーマ**を編集します。これによって、Toolkit はフォルダ構造内の現在のセットに基づいて動的に名前が付けられたフォルダを含めることができます。 -* アセット ワーク ファイルの命名に使用される**テンプレート**を編集します。これによって、Toolkit はファイル名に関連付けられたセットの名前を含めることができます。 +- {% include product %} で、「Set」とよばれる**カスタム エンティティ**を作成します。これは、アーティストが作成しているダイニング ルームの要素と関連付けるために使用します。 +- フォルダの**スキーマ**を編集します。これによって、Toolkit はフォルダ構造内の現在のセットに基づいて動的に名前が付けられたフォルダを含めることができます。 +- アセット ワーク ファイルの命名に使用される**テンプレート**を編集します。これによって、Toolkit はファイル名に関連付けられたセットの名前を含めることができます。 ### 前提条件 @@ -70,7 +70,7 @@ Toolkit プラットフォームでは**スキーマ**を使用してフォル ![Python アプリ](./images/dynamic_filesystem_configuration/4_enable_entity.png) -これによって、カスタム エンティティが {% include product %} でアクティブになり、表示名が *Set* になります。エンティティのシステム名は `CustomEntity01` のままなので、基本的にここではカスタム エンティティの別名を作成していることになります。この例では、`CustomEntity01` を使用していますが、別のカスタム エンティティを使用することもできます。 +これによって、カスタム エンティティが {% include product %} でアクティブになり、表示名が _Set_ になります。エンティティのシステム名は `CustomEntity01` のままなので、基本的にここではカスタム エンティティの別名を作成していることになります。この例では、`CustomEntity01` を使用していますが、別のカスタム エンティティを使用することもできます。 {% include info title="注" content="選択したカスタム エンティティのシステム名はメモしておきます。" %} @@ -166,7 +166,6 @@ Set エンティティは `CustomEntity01` として表されます。{% include ![Python アプリ](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - **手順 9:** 以下の内容で、`CustomEntity01` フォルダの隣に `CustomEntity01.yml` という名前のファイルを作成します。 ```yaml @@ -177,7 +176,7 @@ name: "code" entity_type: "CustomEntity01" filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } ``` YAML ファイルは、`CustomEntity01` フォルダに付ける名前を Toolkit に指示します。この場合は、タイプ `{% include product %}_entity` のフォルダを作成しています。これは、{% include product %} クエリに対応していることを意味します。`entity_type` フィールドは {% include product %} の `CustomEntity01` エンティティをクエリするように指示し、`name` フィールドはエンティティのどの*フィールド*をクエリするのかを指示します。この場合は `CustomEntity01` から `code` フィールドを取得します。 @@ -196,39 +195,39 @@ YAML ファイルは、`CustomEntity01` フォルダに付ける名前を Toolki ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } ``` -アセットのフォルダを作成するときは、正しいプロジェクト フォルダと正しいasset_type フォルダが選択されていることを確認する必要があります。セットのフォルダを追加したので、3 番目のフィルタを追加します。追加しないと、次のようなフォルダとなり、これはもちろん正しくありません。 +アセットのフォルダを作成するときは、正しいプロジェクト フォルダと正しい asset_type フォルダが選択されていることを確認する必要があります。セットのフォルダを追加したので、3 番目のフィルタを追加します。追加しないと、次のようなフォルダとなり、これはもちろん正しくありません。 ``` assets/Dining-Room/Prop/spoon assets/Garage/Prop/spoon assets/Classroom/Prop/spoon ``` + これを防ぐために、3 番目のフィルタを追加します。これにより、アセットのフォルダは正しいセットのフォルダにのみ作成されるようになります。 **手順 11:** `asset.yml` の `filters` フィールドを次のように変更します。 ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - - { "path": "sg_set", "relation": "is", "values": [ "$CustomEntity04" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } + - { "path": "sg_set", "relation": "is", "values": ["$CustomEntity04"] } ``` - ## フォルダ作成のテスト これで、アセットを Set カスタム エンティティで整理するためにスキーマが正しく修正されました。それでは、テストしてみましょう。 フォルダは、Toolkit パイプライン ワークフローのいくつかの時点で作成されます。 -* **アプリケーション ランチャー**: ユーザがタスクの DCC を起動するたびに、Toolkit はそのタスクのディレクトリを作成します(まだ作成されていない場合)。Toolkit ではまず最初に DCC の起動を行う傾向があるので、通常はこの方法でディレクトリが作成されます。これは、{% include product %} の右クリック メニュー、または {% include product %} Desktop あるいは Create アプリで実行できます。 -* **{% include product %} メニュー**: タスク用のフォルダを作成する最も直接的な方法は、{% include product %} で右クリックして[フォルダを作成](Create Folders)メニュー項目を選択することです。 -* **Toolkit API**: Toolkit API を介して直接ディレクトリ作成ロジックを起動できます。この方法によって、Toolkit をカスタム ランチャーにプラグインしたり、{% include product %} で作成される Shot のディレクトリを自動的に作成するためのワークフローのイベント トリガとして使用することができます。 -* **tank コマンド**: {% include product %} のメニュー項目と同様、`tank folders` 端末コマンドからもタスク用のフォルダを作成できます。 +- **アプリケーション ランチャー**: ユーザがタスクの DCC を起動するたびに、Toolkit はそのタスクのディレクトリを作成します(まだ作成されていない場合)。Toolkit ではまず最初に DCC の起動を行う傾向があるので、通常はこの方法でディレクトリが作成されます。これは、{% include product %} の右クリック メニュー、または {% include product %} Desktop あるいは Create アプリで実行できます。 +- **{% include product %} メニュー**: タスク用のフォルダを作成する最も直接的な方法は、{% include product %} で右クリックして[フォルダを作成](Create Folders)メニュー項目を選択することです。 +- **Toolkit API**: Toolkit API を介して直接ディレクトリ作成ロジックを起動できます。この方法によって、Toolkit をカスタム ランチャーにプラグインしたり、{% include product %} で作成される Shot のディレクトリを自動的に作成するためのワークフローのイベント トリガとして使用することができます。 +- **tank コマンド**: {% include product %} のメニュー項目と同様、`tank folders` 端末コマンドからもタスク用のフォルダを作成できます。 `tank` コマンドでテストします。 @@ -265,7 +264,6 @@ In total, 23 folders were processed. `/the_other_side/assets/Dining-Room/Prop/Filet/model` - ![Python アプリ](./images/dynamic_filesystem_configuration/folders_done.png) ### ファイルを読み書きするための Toolkit テンプレート @@ -274,7 +272,7 @@ In total, 23 folders were processed. ### Toolkit アプリがテンプレートを使用する方法 -まず、{% include product %} でアセットをセットに関連付ける方法を作成しました。すなわち CustomEntity01 がセットを表すようにして、Asset エンティティにアセットとセットの間のリンクを表すリンク フィールドを追加しました。アセットとセット間の関係を確立したら、その関連付けを使用するようにフォルダ スキーマを設定し、すべてのアセットの*フォルダ*をその関連付けられたセットのフォルダ内に配置します。次に、*ファイル*に動的に名前を付ける方法を作成し、Toolkitアプリ でファイルを自動的に管理できるようにします。 +まず、{% include product %} でアセットをセットに関連付ける方法を作成しました。すなわち CustomEntity01 がセットを表すようにして、Asset エンティティにアセットとセットの間のリンクを表すリンク フィールドを追加しました。アセットとセット間の関係を確立したら、その関連付けを使用するようにフォルダ スキーマを設定し、すべてのアセットの*フォルダ*をその関連付けられたセットのフォルダ内に配置します。次に、*ファイル*に動的に名前を付ける方法を作成し、Toolkit アプリ でファイルを自動的に管理できるようにします。 アーティストがプロジェクト内のタスクを実行し始めると、必要なフォルダ構造が生成されます。その後、Workfiles アプリの**[File Save]**アクションを開始すると、ファイルに自動的に名前が付けられます。Toolkit の Workfiles アプリを通じてアクセスされるテンプレートは、そのファイルに名前を付けるために使用されます。Nuke Write ノードや Houdini Mantra ノードなどのレンダリング アプリは、パブリッシュ ファイル用のパブリッシャー アプリと同様に、テンプレートを使用してレンダリングされたファイルに名前を付けて保存します。 @@ -286,9 +284,9 @@ Workfiles の**[File Open]**アクションを使用してファイルにアク このファイルは 3 つのセクションに分かれています。 -* **キー:** トークンのセット(`{version}`、`{Asset}` など)。テンプレートを構築するために使用されます。テンプレートが使用されると、実際の値に置き換えられます。各キーには、必須の名前とタイプ、およびオプションのパラメータがあります。 -* **パス:** キーを使用してディスク上のフォルダおよびファイルへのパスを表す名前付き文字列。`paths` セクションのテンプレートは検証済みで、実際にディスク上に存在する必要があります。 -* **文字列:** パス セクションと似ていますが、これらは任意のテキストのテンプレートです。パス セクションの項目は検証済みで、ディスク上の実際のパスと対応している必要がありますが、Toolkit ワークフローで参照するテキスト データを格納するために文字列を使用できます。 +- **キー:** トークンのセット(`{version}`、`{Asset}` など)。テンプレートを構築するために使用されます。テンプレートが使用されると、実際の値に置き換えられます。各キーには、必須の名前とタイプ、およびオプションのパラメータがあります。 +- **パス:** キーを使用してディスク上のフォルダおよびファイルへのパスを表す名前付き文字列。`paths` セクションのテンプレートは検証済みで、実際にディスク上に存在する必要があります。 +- **文字列:** パス セクションと似ていますが、これらは任意のテキストのテンプレートです。パス セクションの項目は検証済みで、ディスク上の実際のパスと対応している必要がありますが、Toolkit ワークフローで参照するテキスト データを格納するために文字列を使用できます。 ### Set エンティティのテンプレート キーを追加する @@ -297,8 +295,8 @@ Workfiles の**[File Open]**アクションを使用してファイルにアク **手順 14:** 適切なインデントを使用し、`templates.yml` の `keys` セクションに次の行を追加します。 ```yaml - CustomEntity01: - type: str +CustomEntity01: + type: str ``` ### テンプレートを修正する @@ -312,8 +310,8 @@ Toolkit がファイルを読み書きする場所はテンプレートが定義 **手順 15:** `templates.yml` を開いて、`maya_asset_work` を検索します。 ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{name}.v{version}.{maya_extension}" ``` `maya_asset_work` の `definition` 値は `@asset_root` で始まります。`@` 記号は、`@asset_root` の値が他の場所で定義されていることを意味します。 @@ -347,8 +345,8 @@ Toolkit がファイルを読み書きする場所はテンプレートが定義 **手順 17:** `maya_asset_work`テンプレート定義を次のように変更します。 ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}" ``` このアクションにより、ファイル名に Dining-Room エンティティの適切な名前を使用できます。結果は次のようになります。`Dining-Room_Filet.v1.mb` @@ -381,15 +379,13 @@ Maya で、**[{% include product %}] > [File Open](ファイルを開く)** ### 例を拡張する -この例では 1 つのテンプレートを変更しましたが、ファイルシステムの設定については他にもさまざまな操作を実行できます。現実の例では、*すべての*アセット関連のファイルを同じファイル命名規則に従うように変更します。他のエンティティ(Season、Episode、Level など)に基づいて変更を加えたり、ユーザ フォルダを作成したり、正規表現で操作した {% include product %} のデータに基づいてフォルダに名前を付けたりすることができます。Toolkit のすべてのフォルダおよびスキーマ オプションについては、『[ファイル システム設定リファレンス]( https://support.shotgunsoftware.com/hc/ja/articles/219039868 )』を参照してください。 +この例では 1 つのテンプレートを変更しましたが、ファイルシステムの設定については他にもさまざまな操作を実行できます。現実の例では、*すべての*アセット関連のファイルを同じファイル命名規則に従うように変更します。他のエンティティ(Season、Episode、Level など)に基づいて変更を加えたり、ユーザ フォルダを作成したり、正規表現で操作した {% include product %} のデータに基づいてフォルダに名前を付けたりすることができます。Toolkit のすべてのフォルダおよびスキーマ オプションについては、『[ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868)』を参照してください。 ### パス キャッシュ フォルダ作成時に、ディスク上のフォルダと {% include product %} エンティティの間にマッピングが作成されます。これらのマッピングは {% include product %} の FilesystemLocation エンティティとして保存され、ユーザのマシンの SQLite データベースにキャッシュされます。パス キャッシュの仕組みと、その使用方法の詳細については、[このドキュメント](../../../quick-answers/administering/what-is-path-cache.md)を参照してください。 - ### その他のリソース -* 『[ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868)』 -* [Toolkit 設定紹介のウェビナー ビデオ](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) - +- 『[ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868)』 +- [Toolkit 設定紹介のウェビナー ビデオ](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) diff --git a/docs/ja/guides/pipeline-integrations/getting-started/editing_app_setting.md b/docs/ja/guides/pipeline-integrations/getting-started/editing_app_setting.md index 99005d426..7b9bec294 100644 --- a/docs/ja/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ b/docs/ja/guides/pipeline-integrations/getting-started/editing_app_setting.md @@ -6,11 +6,12 @@ lang: ja --- # パイプライン設定を編集する + このガイドを読み終えると、以下に関する基本的な知識を習得できます。 -* 特定の Toolkit アプリの構成設定を見つける -* 設定を編集する -* 構成設定によって拡張できるその他の機能を調べる +- 特定の Toolkit アプリの構成設定を見つける +- 設定を編集する +- 構成設定によって拡張できるその他の機能を調べる ## このガイドについて @@ -121,13 +122,13 @@ Toolkit のパイプライン設定は、パイプラインに対するユーザ 設定を検索する際に、考慮すべき点がいくつかあります。 -* 実行しているソフトウェア アプリケーション。 -* 作業を行っているファイル、および作業している環境。これはアプリの参照ボックスに表示されています。 -* 特定の設定の名前。これはアプリの参照ボックス、または「[アプリとエンジンの概要](https://support.shotgunsoftware.com/hc/ja/articles/219039798-Integrations-Apps-and-Engines)」ページに表示されています。 -* 拡張する YAML ファイル。設定の配置場所を示す識別子およびロードマップの詳細は、YAML ファイルに記述されています。 -* YAML ファイル内の拡張する特定のブロック。これはロードマップで識別されています。 -* YAML ファイル内で使用されている識別子および記号、 -* および現在のプロジェクトの設定の保存場所(これが最も重要)。 +- 実行しているソフトウェア アプリケーション。 +- 作業を行っているファイル、および作業している環境。これはアプリの参照ボックスに表示されています。 +- 特定の設定の名前。これはアプリの参照ボックス、または「[アプリとエンジンの概要](https://support.shotgunsoftware.com/hc/ja/articles/219039798-Integrations-Apps-and-Engines)」ページに表示されています。 +- 拡張する YAML ファイル。設定の配置場所を示す識別子およびロードマップの詳細は、YAML ファイルに記述されています。 +- YAML ファイル内の拡張する特定のブロック。これはロードマップで識別されています。 +- YAML ファイル内で使用されている識別子および記号、 +- および現在のプロジェクトの設定の保存場所(これが最も重要)。 設定は、パイプライン設定内の複数の場所で利用できます。配置場所を判別するには、設定を反映させるソフトウェア統合、および変更を反映させるパイプライン プロセス内の場所を考慮します。 @@ -163,18 +164,18 @@ description: Apps and Engines when launching with a project only context. ################################################################################ includes: -- ./includes/frameworks.yml -- ./includes/settings/tk-3dsmaxplus.yml -- ./includes/settings/tk-desktop.yml -- ./includes/settings/tk-flame.yml -- ./includes/settings/tk-houdini.yml -- ./includes/settings/tk-mari.yml -- ./includes/settings/tk-maya.yml -- ./includes/settings/tk-motionbuilder.yml -- ./includes/settings/tk-nuke.yml -- ./includes/settings/tk-photoshopcc.yml -- ./includes/settings/tk-shell.yml -- ./includes/settings/tk-shotgun.yml + - ./includes/frameworks.yml + - ./includes/settings/tk-3dsmaxplus.yml + - ./includes/settings/tk-desktop.yml + - ./includes/settings/tk-flame.yml + - ./includes/settings/tk-houdini.yml + - ./includes/settings/tk-mari.yml + - ./includes/settings/tk-maya.yml + - ./includes/settings/tk-motionbuilder.yml + - ./includes/settings/tk-nuke.yml + - ./includes/settings/tk-photoshopcc.yml + - ./includes/settings/tk-shell.yml + - ./includes/settings/tk-shotgun.yml ################################################################################ # configuration for all engines to load in a project context @@ -198,7 +199,6 @@ engines: # reference all of the common frameworks frameworks: "@frameworks" - ``` @@ -239,7 +239,7 @@ settings.tk-maya.project: tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" menu_favourites: - - {app_instance: tk-multi-workfiles2, name: File Open...} + - { app_instance: tk-multi-workfiles2, name: File Open... } location: "@engines.tk-maya.location" ``` @@ -253,7 +253,7 @@ settings.tk-maya.project: ```yaml includes: -... +--- - ./tk-multi-workfiles2.yml ``` @@ -304,7 +304,7 @@ settings.tk-multi-workfiles2.launch_at_startup: **[+New Task]**ボタンが表示されないことに注目してください。 -これで、Workfiles アプリの構成設定を変更して、プロジェクト環境内のボタンの動作を変更できました。この設定はプロジェクト環境内で変更しただけなので、別の環境で作業を開始した場合は、**[+New Task]**ボタンの設定は引き続き有効になります。実際のプロダクションでも同様の変更を行うには、ここで行った変更をすべての環境に反映する必要があります。** +これで、Workfiles アプリの構成設定を変更して、プロジェクト環境内のボタンの動作を変更できました。この設定はプロジェクト環境内で変更しただけなので、別の環境で作業を開始した場合は、**[+New Task]**ボタンの設定は引き続き有効になります。実際のプロダクションでも同様の変更を行うには、ここで行った変更をすべての環境に反映する必要があります。\*\* ## 環境を変更する @@ -354,7 +354,7 @@ Workfiles アプリのシステム名は `tk-multi-workfiles2` です。名前 ### ビデオのリソース -* [Toolkit 設定の概要](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s)(SIGGRAPH 2018 Developer Day で収録) -* [既定の設定の概要ウェビナー](https://www.youtube.com/watch?v=eKHaC1dZCeE) +- [Toolkit 設定の概要](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s)(SIGGRAPH 2018 Developer Day で収録) +- [既定の設定の概要ウェビナー](https://www.youtube.com/watch?v=eKHaC1dZCeE) アプリの構成設定の変更に関する学習は以上です。次は、[Toolkit の構成にアプリを追加](./installing_app.md)してみましょう。 diff --git a/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md b/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md index a1e85336b..547c0ec69 100644 --- a/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md +++ b/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md @@ -9,10 +9,10 @@ lang: ja このガイドを読み終えると、Toolkit の設定管理ツールに関する知識を短時間で得ることができます。次の内容について学習します。 -* アクティブなパイプライン設定のコピーを安全に作成する -* 設定にアプリを追加する -* 特定の環境でこのアプリを使用するために必要な設定を追加する -* 変更をアクティブな設定にプッシュする +- アクティブなパイプライン設定のコピーを安全に作成する +- 設定にアプリを追加する +- 特定の環境でこのアプリを使用するために必要な設定を追加する +- 変更をアクティブな設定にプッシュする ## このガイドについて @@ -174,7 +174,6 @@ engines: tk-photoshopcc: "@settings.tk-photoshopcc.project" tk-shell: "@settings.tk-shell.project" tk-shotgun: "@settings.tk-shotgun.project" - ``` `@settings` を使用する `tk-maya: “@settings.tk-maya.project”` 行は、設定がインクルードされたファイルに含まれていることを示します。`tk-maya` は Maya エンジンを識別し、`project` は環境を識別します。 @@ -185,10 +184,10 @@ engines: この特定のブロックの各要素は、次のとおりです。 -* `settings` は、既定の設定で、設定フォルダの参照として選択された内容を表します。 -* `project` は、既定の設定で、プロジェクト環境の参照として選択された内容を表します。 -* `tk-maya` は、Maya 用の Toolkit エンジンの識別子です。 -* `@` は、設定値がインクルードされたファイルから取得されたことを示すために使用される Toolkit 用語です。 +- `settings` は、既定の設定で、設定フォルダの参照として選択された内容を表します。 +- `project` は、既定の設定で、プロジェクト環境の参照として選択された内容を表します。 +- `tk-maya` は、Maya 用の Toolkit エンジンの識別子です。 +- `@` は、設定値がインクルードされたファイルから取得されたことを示すために使用される Toolkit 用語です。 YAML ファイルは {% include product %} の統合の窓口であり、パイプラインの要求を満たす作業環境を簡単に設定できるようにします。 @@ -260,11 +259,11 @@ Windows の場合: 次の場合: -* 直前に編集した、クローン作成した設定を使用している場合 -* クローン作成した設定が正しく拡張された場合 -* 拡張したファイルを保存した場合 -* プロジェクトにクローン作成した設定を関連付けるよう選択した場合 -* {% include product %} Desktop から Maya を再起動した場合 +- 直前に編集した、クローン作成した設定を使用している場合 +- クローン作成した設定が正しく拡張された場合 +- 拡張したファイルを保存した場合 +- プロジェクトにクローン作成した設定を関連付けるよう選択した場合 +- {% include product %} Desktop から Maya を再起動した場合 Maya で Python コンソール アプリを使用できるようになります。 @@ -330,11 +329,11 @@ Please type in the id of the configuration to push to (ENTER to exit): ID を入力した後、{% include product %} は以下の処理を行います。 -* プライマリ設定をバックアップする -* クローン作成した設定をコピーする -* クローンされた設定のコピーにプロジェクトを関連付けて、クローンをそのまま残す -* プライマリ設定の保存場所を表示する -* ダウンロードしてキャッシュに入れなければならないアプリがあるかどうかを確認する +- プライマリ設定をバックアップする +- クローン作成した設定をコピーする +- クローンされた設定のコピーにプロジェクトを関連付けて、クローンをそのまま残す +- プライマリ設定の保存場所を表示する +- ダウンロードしてキャッシュに入れなければならないアプリがあるかどうかを確認する ``` Please type in the id of the configuration to push to (ENTER to exit): 1 @@ -400,7 +399,7 @@ apps: インクルードの内容に沿って `../includes/app_locations.yml` に進み、`apps.tk-multi-pythonconsole.location` を検索します。次のようになっています。

-```yaml +````yaml # pythonconsole apps.tk-multi-pythonconsole.location: type: app_store @@ -417,3 +416,4 @@ apps.tk-multi-pythonconsole.location: 次のガイドでは、[会社の構成方法に合わせて制作用フォルダの構成をカスタマイズする方法について学習します](./dynamic_filesystem_configuration.md)。 +```` diff --git a/docs/ja/guides/pipeline-integrations/getting_started.md b/docs/ja/guides/pipeline-integrations/getting_started.md index 4a92f6f49..7a6634f0b 100644 --- a/docs/ja/guides/pipeline-integrations/getting_started.md +++ b/docs/ja/guides/pipeline-integrations/getting_started.md @@ -7,4 +7,4 @@ lang: ja # Getting Started -{% include product %} Toolkit には、スタジオのパイプラインを作成するための高度にカスタマイズ可能な一連のツールが用意されています。アーティストは、コンテンツ作成ソフトウェアから移動しなくても、{% include product %} から情報にアクセスし、他のユーザと作品を共有できます。これらのガイドは、実践的な演習を通して、独自の Toolkit パイプラインを設定できるように設計されています。{% include product %} Desktop アプリを使用すると、プロジェクト用の編集可能な設定を生成したり、既存のアプリの設定を変更したり、さまざまなアーティストの環境に Toolkit アプリを追加してカスタム パイプラインを設計したりできます。各ガイドは以前のガイドを基に作成されていますが、記載されている手順はどこから読み進めてもかまいません。 +{% include product %} Toolkit には、スタジオのパイプラインを作成するための高度にカスタマイズ可能な一連のツールが用意されています。アーティストは、コンテンツ作成ソフトウェアから移動しなくても、{% include product %} から情報にアクセスし、他のユーザと作品を共有できます。これらのガイドは、実践的な演習を通して、独自の Toolkit パイプラインを設定できるように設計されています。{% include product %} Desktop アプリを使用すると、プロジェクト用の編集可能な設定を生成したり、既存のアプリの設定を変更したり、さまざまなアーティストの環境に Toolkit アプリを追加してカスタム パイプラインを設計したりできます。各ガイドは以前のガイドを基に作成されていますが、記載されている手順はどこから読み進めてもかまいません。 diff --git a/docs/ja/guides/pipeline-integrations/workflows.md b/docs/ja/guides/pipeline-integrations/workflows.md index b9225fdaf..ddbb49d4b 100644 --- a/docs/ja/guides/pipeline-integrations/workflows.md +++ b/docs/ja/guides/pipeline-integrations/workflows.md @@ -5,4 +5,4 @@ pagename: toolkit-workflows lang: ja --- -# Workflows \ No newline at end of file +# Workflows diff --git a/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md index 415e15b48..9da5be1f8 100644 --- a/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ b/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md @@ -23,43 +23,43 @@ lang: ja ## 前提条件 -* **作業用の {% include product %} プロジェクト** - このチュートリアルでは、{% include product %} を使用してプロダクション データのトラッキングや管理を行った経験があることが前提となります。 +- **作業用の {% include product %} プロジェクト** - このチュートリアルでは、{% include product %} を使用してプロダクション データのトラッキングや管理を行った経験があることが前提となります。 -* **{% include product %} 統合の概要** - {% include product %} には統合機能が付属していて、手動設定が不要な、単純なプロダクション ワークフローがいくつか用意されています。このチュートリアルで説明されている手動設定やカスタマイズについて調べる前に、これらのワークフローの機能や範囲について理解する必要があります。{% include product %} 統合の詳細については、[こちら](https://support.shotgunsoftware.com/hc/ja/articles/115000068574)を参照してください。 +- **{% include product %} 統合の概要** - {% include product %} には統合機能が付属していて、手動設定が不要な、単純なプロダクション ワークフローがいくつか用意されています。このチュートリアルで説明されている手動設定やカスタマイズについて調べる前に、これらのワークフローの機能や範囲について理解する必要があります。{% include product %} 統合の詳細については、[こちら](https://support.shotgunsoftware.com/hc/ja/articles/115000068574)を参照してください。 -* **Maya と Nuke の経験** - このチュートリアルは、Maya および Nuke を使用して単純なパイプラインを作成することを目的としています。{% include product %} の統合機能をカスタマイズするには、これらのパッケージの基本について理解する必要があります。 +- **Maya と Nuke の経験** - このチュートリアルは、Maya および Nuke を使用して単純なパイプラインを作成することを目的としています。{% include product %} の統合機能をカスタマイズするには、これらのパッケージの基本について理解する必要があります。 -* **Python の操作に関する知識** - このチュートリアルでは、Python で記述された「フック」を使用して、{% include product %} 統合の機能を変更する必要があります。 +- **Python の操作に関する知識** - このチュートリアルでは、Python で記述された「フック」を使用して、{% include product %} 統合の機能を変更する必要があります。 -* **YAML に対する知識** - 作成しているパイプラインの設定のほとんどは、YAML ファイルを変更して処理されます。 +- **YAML に対する知識** - 作成しているパイプラインの設定のほとんどは、YAML ファイルを変更して処理されます。 ## その他のリソース -* [{% include product %} サポート サイト](https://support.shotgunsoftware.com/hc/ja) +- [{% include product %} サポート サイト](https://support.shotgunsoftware.com/hc/ja) -* [{% include product %} 統合](https://www.shotgunsoftware.com/jp/integrations/) +- [{% include product %} 統合](https://www.shotgunsoftware.com/jp/integrations/) - * [ユーザ ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000068574) + - [ユーザ ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000068574) - * [管理者ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000067493) + - [管理者ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000067493) - * [開発者ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000067513) + - [開発者ガイド](https://support.shotgunsoftware.com/hc/ja/articles/115000067513) # プロジェクトの作成とセットアップ このチュートリアルでは、{% include product %} で新しいプロジェクトを作成して、プロダクション開始の準備に合わせて設定する必要があります。ここで、すべての必要な {% include product %} エンティティが所定の場所にあり、正しくリンクされていることを確認します。このチュートリアルの場合、アセット、シーケンス、ショット、およびタスクの各エンティティが必要で、既定で新しいプロジェクトで使用できる必要があります。作成する項目は次のとおりです。 -* 2 つの**アセット**: +- 2 つの**アセット**: - * **_ティーポット_** キャラクタ + - **_ティーポット_** キャラクタ - * **_テーブル_** プロップ + - **_テーブル_** プロップ -* **シーケンス** 1 つ +- **シーケンス** 1 つ -* 作成した**シーケンス**にリンクした**ショット** 1 つ +- 作成した**シーケンス**にリンクした**ショット** 1 つ -* パイプラインの手順ごとの**タスク** +- パイプラインの手順ごとの**タスク** 次に、{% include product %} で設定したプロジェクト エンティティのスクリーンショットを示します。 @@ -289,7 +289,6 @@ Loader アプリのレイアウトは作業ファイル アプリと似ていま この単純なパイプラインの目的に合わせて、サーフェス作成ステップで Maya シェーダ ネットワークを追加のパブリッシュ項目として書き出すように、Publisher アプリをカスタマイズします。チュートリアルの後半では、下流工程の参照時にシェーダが Alembic ジオメトリ キャッシュに再接続できるスピード重視のソリューションを作成します。 - {% include info title="注" content="追加するカスタマイズは、明らかに、非常に単純かつ不安定です。より堅牢なソリューションを作成する場合は、サーフェス キャラクタの代替表現と、テクスチャ マップとして外部イメージを使用するというアセット管理の側面を取り入れることができます。この例は、実際のソリューションを作成する際の第一歩として使用してください。" %} {% include info title="注" content="パブリッシャー プラグインの作成方法の詳細については[こちら](https://developer.shotgridsoftware.com/tk-multi-publish2/)を参照してください。" %} @@ -424,7 +423,6 @@ Loader アプリのレイアウトは作業ファイル アプリと似ていま return plugin_settings ``` - このメソッドは、プラグインの設定インタフェースを定義します。シェーダ ネットワークをディスクに書き込む場所をプラグインに指示するには、**「パブリッシュ テンプレート」**の設定が必要です。パブリッシャーの設定に新しいパブリッシュ プラグインを追加して、テンプレートの設定を含めます。これは、コレクタを引き継ぐ前に修正されたのと同じ設定ブロックです。これは、次のファイルで定義されます。 **`env/includes/settings/tk-multi-publish2.yml`** @@ -463,7 +461,6 @@ Loader アプリのレイアウトは作業ファイル アプリと似ていま 作業の説明を入力し、サーフェス ティーポットのサムネイルを取り込んで、パブリッシュされたファイルに関連付けます。最後に、パブリッシュをクリックして、ティーポット シェーダをディスクに書き出して、このファイルをパブリッシュとして {% include product %} に登録します。完了すると、セッションのパブリッシュ プラグインによって、作業ファイルが次に使用可能なバージョンに自動的に保存されます。これが、{% include product %} 統合でサポートされているすべての DCC の既定の動作です。 - これで、{% include product %} 内のティーポット アセットを参照して、すべてが予測どおりに機能したことを確認できるようになりました。 {% include figure src="./images/tutorial/image_33.png" %} @@ -478,15 +475,15 @@ Loader アプリのレイアウトは作業ファイル アプリと似ていま 現在、{% include product %} に付属している Workfile アプリおよび Publish アプリを使用すると、作業ファイルを開く(または作成する)、保存する、パブリッシュする操作を極めて快適に行うことができます。また、上流工程からパブリッシュをロードする Loader アプリを使用する機会もありました。学習した内容を使用して、次のタスクを完了します。 -* {% include product %} Desktop から Maya を起動する +- {% include product %} Desktop から Maya を起動する -* ティーポット アセットのリギング ステップで、新しい作業ファイルを作成する +- ティーポット アセットのリギング ステップで、新しい作業ファイルを作成する -* モデリング ステップでティーポット Alembic キャッシュ パブリッシュをロード(参照)する +- モデリング ステップでティーポット Alembic キャッシュ パブリッシュをロード(参照)する -* 開け閉めするティーポットのふたをリギングする(単純にする) +- 開け閉めするティーポットのふたをリギングする(単純にする) -* ティーポットのふたを保存してパブリッシュする +- ティーポットのふたを保存してパブリッシュする 最終的には、{% include product %} で次のようになります。 @@ -518,13 +515,13 @@ Maya 参照がティーポット Alembic キャッシュの最新の繰り返し まず、以前のセクションで学習した内容に基づいて、次のタスクを完了します。 -* {% include product %} Desktop から Maya を起動する +- {% include product %} Desktop から Maya を起動する -* ショットのレイアウト ステップで新しい作業ファイルを作成する(ヒント: ローダー内の[Shots]タブを使用する) +- ショットのレイアウト ステップで新しい作業ファイルを作成する(ヒント: ローダー内の[Shots]タブを使用する) -* ティーポットのリギング ステップでティーポットのパブリッシュをロード(参照)する +- ティーポットのリギング ステップでティーポットのパブリッシュをロード(参照)する -* テーブルのモデル ステップでティーポットのパブリッシュをロード(参照)する +- テーブルのモデル ステップでティーポットのパブリッシュをロード(参照)する ここで、テーブルに置かれたティーポットを含む、単純なシーンをブロックします。**camMain** という名前のシーンにカメラを追加して、いくつかのフレームをアニメートし、ショットのカメラ移動を作成します。 @@ -644,11 +641,11 @@ Maya 参照がティーポット Alembic キャッシュの最新の繰り返し 以前のセクションで学習した内容に基づいて、次の作業を完了します。 -* {% include product %} Desktop から Maya を起動する +- {% include product %} Desktop から Maya を起動する -* ショットのアニメーション ステップで新しい作業ファイルを作成する +- ショットのアニメーション ステップで新しい作業ファイルを作成する -* ショットのレイアウト ステップで Maya セッションのパブリッシュをロード(参照)する +- ショットのレイアウト ステップで Maya セッションのパブリッシュをロード(参照)する {% include info title="注" content=" レイアウト セッションのパブリッシュ ファイルに、このカメラが含まれていました。堅牢なパイプラインでは、カメラを明示的に非表示にするか、またはセッションのパブリッシュから除外して、独立したカメラ パブリッシュ ファイルを実際のカメラ定義の 1つに設定することができます。先に進んで、参照によって含まれているカメラを削除または非表示にします。" %} @@ -688,13 +685,13 @@ Maya のアプリが設定されているセクションを見つけて、**`act 最初に、以前のセクションで学習した内容に基づいて、次の作業を完了します。 -* {% include product %} Desktop から Maya を起動する +- {% include product %} Desktop から Maya を起動する -* ショットの照明ステップで新しい作業ファイルを作成する +- ショットの照明ステップで新しい作業ファイルを作成する -* ショットの照明ステップで Maya セッションのパブリッシュをロード(参照)する +- ショットの照明ステップで Maya セッションのパブリッシュをロード(参照)する -* ショットのレイアウト ステップでカメラ パブリッシュをロード(参照)する +- ショットのレイアウト ステップでカメラ パブリッシュをロード(参照)する ### カスタム シェーダのローダー アクション @@ -740,7 +737,6 @@ Maya のアプリが設定されているセクションを見つけて、**`act cmds.hyperShade(assign=shader) ``` - ここで、**`_create_reference`** メソッドの末尾に次の 2 行を追加して、シェーダ フック ロジックを呼び出します。 ```python @@ -748,7 +744,6 @@ Maya のアプリが設定されているセクションを見つけて、**`act _hookup_shaders(reference_node) ``` - 新しい参照が作成されると、必ずコードが実行されるため、ファイル内にシェーダが既に存在する場合に新しいジオメトリを参照すると、シェーダが割り当てられます。同様に、ジオメトリが既に存在するときにシェーダを参照した場合は、コードが機能します。 {% include info title="注" content="このフック ロジックは非常に力任せであるため、プロダクション対応パイプラインを実装するときに考慮する必要がある名前空間やその他の Maya 関連の微妙な動作は、適切に処理されません。" %} @@ -799,10 +794,9 @@ Maya のアプリが設定されているセクションを見つけて、**`act 最初に、次に示す手順を行って作業ファイルを準備します。 -* {% include product %} Desktop から Nuke を起動する - -* Maya と同様に、[{% include product %}] > [File Open]メニュー アクションを使用して、ショットのコンポジット ステップ内で新しい作業ファイルを作成します。 +- {% include product %} Desktop から Nuke を起動する +- Maya と同様に、[{% include product %}] > [File Open]メニュー アクションを使用して、ショットのコンポジット ステップ内で新しい作業ファイルを作成します。 Loader アプリを使用して前のセクションでレンダリングおよびパブリッシュしたイメージ シーケンスをロードします。 diff --git a/docs/ja/guides/webhooks.md b/docs/ja/guides/webhooks.md index 24dada9d8..5afebb910 100644 --- a/docs/ja/guides/webhooks.md +++ b/docs/ja/guides/webhooks.md @@ -74,12 +74,12 @@ Web フックはさまざまなステータスを取ることができます(健 ![Web フック ダイアログを作成する](./images/webhooks/webhook_selected_status.png) -| ステータス | 例 | 説明 | -|--------|:-------:|:-----------:| -| アクティブ | ![アクティブ](./images/webhooks/webhook_status_active.png) | Web フックの動作は安定しています。過去 24 時間以内に、この Web フックに対する配信が宛先に到達しなかったことはありません。 | -| 不安定 | ![不安定](./images/webhooks/webhook_status_unstable.png) | Web フックの動作は不安定です。過去 24 時間以内に、一部の配信が宛先に到達しませんでしたが、Web フックが停止していると {% include product %} が判断するには不十分です。 | -| 失敗 | ![失敗](./images/webhooks/webhook_status_failed.png) | Web フックは停止していると判断されていて、配信はこれ以上試行されません。この原因は、短期間に発生した配信失敗の数が多すぎたことです。システムは、Web フックが使用できなくなったと判断しました。**過去 24 時間以内に配信が 10 回失敗すると、Web フックに障害があると見なされます**。 | -| 無効 | ![無効](./images/webhooks/webhook_status_disabled.png) | Web フックは無効な状態です。再度有効になるまで、配信はこれ以上試行されません。 | +| ステータス | 例 | 説明 | +| ---------- | :--------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| アクティブ | ![アクティブ](./images/webhooks/webhook_status_active.png) | Web フックの動作は安定しています。過去 24 時間以内に、この Web フックに対する配信が宛先に到達しなかったことはありません。 | +| 不安定 | ![不安定](./images/webhooks/webhook_status_unstable.png) | Web フックの動作は不安定です。過去 24 時間以内に、一部の配信が宛先に到達しませんでしたが、Web フックが停止していると {% include product %} が判断するには不十分です。 | +| 失敗 | ![失敗](./images/webhooks/webhook_status_failed.png) | Web フックは停止していると判断されていて、配信はこれ以上試行されません。この原因は、短期間に発生した配信失敗の数が多すぎたことです。システムは、Web フックが使用できなくなったと判断しました。**過去 24 時間以内に配信が 10 回失敗すると、Web フックに障害があると見なされます**。 | +| 無効 | ![無効](./images/webhooks/webhook_status_disabled.png) | Web フックは無効な状態です。再度有効になるまで、配信はこれ以上試行されません。 | ## 配信 @@ -99,7 +99,7 @@ Web フック リスト内の Web フックを選択すると、この Web フ ![配信の詳細](./images/webhooks/delivery_details.png) -#### ペイロード +#### ペイロード Web フックの URL に送信されるペイロードには、{% include product %} で発生したイベントと、それをトリガしたユーザを示す情報が格納されています。この情報は、JSON 形式で提供されます。 @@ -191,9 +191,8 @@ webhook.site サービスの速度は積極的に制限されます。つまり #### ステータス コード -| ステータス | コード | 説明 | -|--------|:----:|:-----------:| -| 成功 | < 400 | 配信は受信されて、正常に処理されました。 | -| エラー | >= 400 | 配信は受信されましたが、正常に処理されませんでした。 | -| リダイレクト | 3xx | 配信は受信されましたが、別の URL にリダイレクトする必要があります。 | - +| ステータス | コード | 説明 | +| ------------ | :----: | :-----------------------------------------------------------------: | +| 成功 | < 400 | 配信は受信されて、正常に処理されました。 | +| エラー | >= 400 | 配信は受信されましたが、正常に処理されませんでした。 | +| リダイレクト | 3xx | 配信は受信されましたが、別の URL にリダイレクトする必要があります。 | diff --git a/docs/ja/guides/webhooks/batch-deliveries.md b/docs/ja/guides/webhooks/batch-deliveries.md index 01606d865..2636cf40e 100644 --- a/docs/ja/guides/webhooks/batch-deliveries.md +++ b/docs/ja/guides/webhooks/batch-deliveries.md @@ -22,11 +22,13 @@ lang: ja {% include info title="注" content="1 つのイベントへの応答に 1 秒程度かかる受信サービスを使用している場合、パフォーマンスを決定する主な要因は、配信のオーバーヘッドではなく、応答時間です。バッチ配信しても、あまりメリットはありません。" %} #### 非バッチ配信型の Webhook -* タイムアウトの許容時間は、配信あたり 6 秒です。つまり、Webhook エンドポイントは、6 秒以内に各要求に応答する必要があります。 + +- タイムアウトの許容時間は、配信あたり 6 秒です。つまり、Webhook エンドポイントは、6 秒以内に各要求に応答する必要があります。 #### バッチ配信型の Webhook -* タイムアウトの許容値は、最大で 6 秒、またはバッチ内のイベントあたり 1 秒です。 -* スロットル制限は引き続き適用されます。ShotGrid サイトごとに許可される 1 分間あたりの Webhook エンドポイント応答時間は、Webhook 全体で 1 分です。 + +- タイムアウトの許容値は、最大で 6 秒、またはバッチ内のイベントあたり 1 秒です。 +- スロットル制限は引き続き適用されます。ShotGrid サイトごとに許可される 1 分間あたりの Webhook エンドポイント応答時間は、Webhook 全体で 1 分です。 ## Webhook 配信形式の比較 @@ -34,28 +36,28 @@ lang: ja ```json { - "data":{ - "id":"119.110.0", - "event_log_entry_id":479004, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1419}, - "project":{"type":"Project","id":127}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1419, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "data": { + "id": "119.110.0", + "event_log_entry_id": 479004, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1419 }, + "project": { "type": "Project", "id": 127 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1419, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 17:40:23.202136", + "attribute_name": "code", + "session_uuid": null }, - "timestamp":"2021-02-22T17:40:27Z" + "timestamp": "2021-02-22T17:40:27Z" } ``` @@ -65,51 +67,51 @@ lang: ja ```json { - "timestamp":"2021-02-22T18:04:40.140Z", - "data":{ - "deliveries":[ + "timestamp": "2021-02-22T18:04:40.140Z", + "data": { + "deliveries": [ { - "id":"170.141.0", - "event_log_entry_id":480850, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "id": "170.141.0", + "event_log_entry_id": 480850, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 18:04:39.198641", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 18:04:39.198641", + "attribute_name": "code", + "session_uuid": null }, { - "id":"170.141.1", - "event_log_entry_id":480851, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"description", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":null, - "new_value":"Some other *description*" + "id": "170.141.1", + "event_log_entry_id": 480851, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "description", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": null, + "new_value": "Some other *description*" }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, + "created_at": "2021-02-22 18:04:39.212032", + "attribute_name": "description", + "session_uuid": null + } ] } } diff --git a/docs/ja/index.md b/docs/ja/index.md index 9f159914f..f8846ab39 100644 --- a/docs/ja/index.md +++ b/docs/ja/index.md @@ -4,4 +4,3 @@ title: 概要 pagename: index lang: ja --- - diff --git a/docs/ja/quick-answers/administering.md b/docs/ja/quick-answers/administering.md index 1c76db80d..2d288027e 100644 --- a/docs/ja/quick-answers/administering.md +++ b/docs/ja/quick-answers/administering.md @@ -5,12 +5,12 @@ pagename: quick-answers-administering lang: ja --- -管理 -===== +# 管理 Toolkit セットアップの管理および設定に基づくクイック アンサーのコレクションです。 #### {% include product %} Desktop: + - [{% include product %} Desktop を使用して Toolkit プロジェクトを再セットアップするにはどうすればいいですか?](./administering/resetup-project-with-sg-desktop.md) - [Windows で {% include product %} Desktop をサイレント インストールするにはどうすればいいですか?](./administering/install-desktop-silent.md) - [Linux で {% include product %} Desktop のデスクトップ/ランチャー アイコンをセットアップするにはどうすればいいですか?](./administering/create-shotgun-desktop-shortcut.md) diff --git a/docs/ja/quick-answers/administering/convert-from-single-root-to-multi.md b/docs/ja/quick-answers/administering/convert-from-single-root-to-multi.md index c7208ab47..1ae91cd9b 100644 --- a/docs/ja/quick-answers/administering/convert-from-single-root-to-multi.md +++ b/docs/ja/quick-answers/administering/convert-from-single-root-to-multi.md @@ -15,7 +15,7 @@ lang: ja - {% include product %} で、**[管理者](Admin)> [サイト基本設定](Site Preferences)**ページに移動します - **[ファイル管理](File Management)**セクションを開きます - **[[+] ローカル ファイル ストレージを追加]([+] Add Local File Storage)**をクリックします -- 名前(「secondary」)と関連するすべてのプラットフォーム上のストレージ ルートへのパスを入力します。*特定のプラットフォームを使用していない場合は、空白のままにすることができます。* +- 名前(「secondary」)と関連するすべてのプラットフォーム上のストレージ ルートへのパスを入力します。_特定のプラットフォームを使用していない場合は、空白のままにすることができます。_ - ページの上部または下部にある**[ページを保存](Save Page)**ボタンをクリックします ![{% include product %} ファイル管理の基本設定](images/shotgun-pref-file-management.png) @@ -88,4 +88,4 @@ Toolkit は、`config/core/roots.yml` ファイルのパイプライン設定で {% include info title="注" content="既定のストレージルートを使用するテンプレートには `root_name` を指定する必要はありません。既定のルートは、`roots.yml` ファイルで `default: true` を指定することによって示されます。`roots.yml` で既定値が明示的に定義されていない場合は、ルート **primary** が既定値と見なされます。"%} -1 *新しい値が設定されると、以前の値を使用して作成された古いファイルに Toolkit からアクセスできなくなるため、パスの更新が最適な方法ではない場合があります(テンプレート パスの変更後は Toolkit で古い作業ファイルは表示されません)。これが問題になる場合は、新しい場所を設定した新しいテンプレート(houdini_shot_publish_v2 など)を作成し、この新しいバージョンを使用するようにアプリをアップグレードすることができます。すべてのアプリがこのようなフォールバックの考え方に対応しているわけではありませんが、古いファイルを認識できるアプリもあります。アプリは {% include product %} 内のパブリッシュと常にリンクされているため、これはパブリッシュに影響しません。* +1 _新しい値が設定されると、以前の値を使用して作成された古いファイルに Toolkit からアクセスできなくなるため、パスの更新が最適な方法ではない場合があります(テンプレート パスの変更後は Toolkit で古い作業ファイルは表示されません)。これが問題になる場合は、新しい場所を設定した新しいテンプレート(houdini_shot_publish_v2 など)を作成し、この新しいバージョンを使用するようにアプリをアップグレードすることができます。すべてのアプリがこのようなフォールバックの考え方に対応しているわけではありませんが、古いファイルを認識できるアプリもあります。アプリは {% include product %} 内のパブリッシュと常にリンクされているため、これはパブリッシュに影響しません。_ diff --git a/docs/ja/quick-answers/administering/create-shotgun-desktop-shortcut.md b/docs/ja/quick-answers/administering/create-shotgun-desktop-shortcut.md index 69e9c84d8..8809def3c 100644 --- a/docs/ja/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ b/docs/ja/quick-answers/administering/create-shotgun-desktop-shortcut.md @@ -10,4 +10,4 @@ lang: ja 現在の {% include product %} Desktop インストーラはショートカットと起動のエントリを自動的に作成しないため、インストール後に手動で作業する必要があります。手順は簡単ですが、使用する Linux の種類によって手順が異なる場合があります。 {% include product %} Desktop インストーラを実行すると、{% include product %} Desktop の実行可能なファイルは `/opt/Shotgun folder` 内に格納されます。実行可能ファイルの名前は {% include product %} です。インストーラはアイコンを配置しません。[{% include product %} Desktop エンジンの github リポジトリ](https://github.com/shotgunsoftware/tk-desktop/blob/aac6fe004bd003bf26316b9859bd4ebc42eb82dc/resources/default_systray_icon.png)からダウンロードしてください。 -アイコンをダウンロードして、実行可能ファイルのパス(`/opt/Shotgun/Shotgun`)を指定したら、必要なデスクトップまたはメニューのランチャーを手動で作成してください。この操作のプロセスは Linux のバージョンによって異なりますが、通常、Desktop を右クリックして適切なメニュー オプションを選べば、デスクトップ ランチャーを作成できます。 \ No newline at end of file +アイコンをダウンロードして、実行可能ファイルのパス(`/opt/Shotgun/Shotgun`)を指定したら、必要なデスクトップまたはメニューのランチャーを手動で作成してください。この操作のプロセスは Linux のバージョンによって異なりますが、通常、Desktop を右クリックして適切なメニュー オプションを選べば、デスクトップ ランチャーを作成できます。 diff --git a/docs/ja/quick-answers/administering/disable-browser-integration.md b/docs/ja/quick-answers/administering/disable-browser-integration.md index f90d9cbdd..e4f9cd6ff 100644 --- a/docs/ja/quick-answers/administering/disable-browser-integration.md +++ b/docs/ja/quick-answers/administering/disable-browser-integration.md @@ -9,13 +9,13 @@ lang: ja ブラウザの統合を無効にするには、次の簡単な 2 つの手順を実行します。 -1. 次のテキスト ファイルを作成または開く +1. 次のテキスト ファイルを作成または開く Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini Linux: ~/.{% include product %}/preferences/toolkit.ini -2. 次のセクションを追加する +2. 次のセクションを追加する [BrowserIntegration] enabled=0 @@ -24,4 +24,4 @@ lang: ja **別の方法** -Toolkit のパイプライン設定を引き継いだ場合は、代わりに [`tk-{% include product %}` エンジンを環境から削除](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)し、アクションがロードされないようにすることができます。 \ No newline at end of file +Toolkit のパイプライン設定を引き継いだ場合は、代わりに [`tk-{% include product %}` エンジンを環境から削除](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)し、アクションがロードされないようにすることができます。 diff --git a/docs/ja/quick-answers/administering/install-desktop-silent.md b/docs/ja/quick-answers/administering/install-desktop-silent.md index f7232b8cc..26341562a 100644 --- a/docs/ja/quick-answers/administering/install-desktop-silent.md +++ b/docs/ja/quick-answers/administering/install-desktop-silent.md @@ -15,4 +15,4 @@ lang: ja `ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` -{% include info title="注" content="引数 `/D` は最後の引数として指定する必要があります。パスの中にスペースがある場合でも、`\"` は使用しないでください。" %} \ No newline at end of file +{% include info title="注" content="引数 `/D` は最後の引数として指定する必要があります。パスの中にスペースがある場合でも、`\"` は使用しないでください。" %} diff --git a/docs/ja/quick-answers/administering/move-configuration-location.md b/docs/ja/quick-answers/administering/move-configuration-location.md index f02b33ac0..24954d800 100644 --- a/docs/ja/quick-answers/administering/move-configuration-location.md +++ b/docs/ja/quick-answers/administering/move-configuration-location.md @@ -9,7 +9,7 @@ lang: ja {% include info title="注" content="このドキュメントのコンテンツは[一元管理設定のセットアップ](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)にのみ適用されます。[分散設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)は個々のクライアント マシンにローカルにキャッシュされ、Toolkit によって自動的に管理されます。" %} -パイプライン設定を新しい場所に簡単に移動するには、`tank move_configuration` コマンドを使用します。これにより、ファイルを移動したり、{% include product %} を更新したり、新しい場所を指すように設定ファイルを更新したりします。  +パイプライン設定を新しい場所に簡単に移動するには、`tank move_configuration` コマンドを使用します。これにより、ファイルを移動したり、{% include product %} を更新したり、新しい場所を指すように設定ファイルを更新したりします。 またこのコマンドは、1 つのオペレーティング システムで場所を移動するだけの場合や、以前は特定のオペレーティング システムを使用していなかったがこれから追加する場合などにも役立ちます。Toolkit は、移動する項目、追加する項目、またはそれ以外の項目を検出し、適用前に確認できるように実行内容が表示されます。 @@ -65,7 +65,6 @@ lang: ja > tank move_configuration "" "p:\configs\my_config" "" - ### 例: $ cd /sgtk/software/shotgun/scarlet @@ -134,38 +133,37 @@ lang: ja All done! Your configuration has been successfully moved. - ## パイプライン設定を手動で移動する {% include warning title="重要" content="パイプライン設定をまだ移動していない場合は、上記の[組み込み tank コマンド](#using-the-tank-move_configuration-command)を使用して自動的に移動することを強くお勧めします。"%} 既に手動で移動を開始したが正しく動作しない場合は、新しい場所に移動されたパイプライン設定で Toolkit が引き続き動作するようにするために、変更が必要な内容を以下に示します。 -1. パイプライン設定を新しい場所に移動します。 +1. パイプライン設定を新しい場所に移動します。 $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new -2. Toolkit でパイプライン設定が格納されている場所を見つけられるように `install_location.yml` を編集します。 +2. Toolkit でパイプライン設定が格納されている場所を見つけられるように `install_location.yml` を編集します。 - $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml + $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml - 適用可能なプラットフォームすべてで、パイプライン設定の新しい場所を示すようにこのファイル内のパスを更新します。プラットフォームを使用していない場合は、空の文字列 `''` を入力します。 + 適用可能なプラットフォームすべてで、パイプライン設定の新しい場所を示すようにこのファイル内のパスを更新します。プラットフォームを使用していない場合は、空の文字列 `''` を入力します。 - # {% include product %} Pipeline Toolkit configuration file - # This file was automatically created by setup_project - # This file reflects the paths in the primary pipeline + # {% include product %} Pipeline Toolkit configuration file + # This file was automatically created by setup_project + # This file reflects the paths in the primary pipeline - # configuration defined for this project. - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' + # configuration defined for this project. + Windows: 'Y:\sgtk\software\shotgun\scarlet_new' + Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' + Linux: '' - # End of file. + # End of file. -3. {% include product %} でこのプロジェクトに対応する PipelineConfiguration エンティティを特定し、上記の変更と一致するように、[Mac のパス](Mac Path)、[Windows のパス](Windows Path)、[Linux のパス](Linux Path)の各フィールドの値を修正します。 +3. {% include product %} でこのプロジェクトに対応する PipelineConfiguration エンティティを特定し、上記の変更と一致するように、[Mac のパス](Mac Path)、[Windows のパス](Windows Path)、[Linux のパス](Linux Path)の各フィールドの値を修正します。 ![{% include product %} のパイプライン設定の場所。](images/new-pipeline-configuration-locations.png) これでパイプライン設定が新しい場所から予想どおりに機能するようになりました。 -{% include info title="注" content="SG Desktop を使用している場合、プロジェクトから移動して、この新しい場所のパイプライン設定をリロードするためにプロジェクト アイコンを再びクリックする必要があります。"%} \ No newline at end of file +{% include info title="注" content="SG Desktop を使用している場合、プロジェクトから移動して、この新しい場所のパイプライン設定をリロードするためにプロジェクト アイコンを再びクリックする必要があります。"%} diff --git a/docs/ja/quick-answers/administering/move-project-directories.md b/docs/ja/quick-answers/administering/move-project-directories.md index b314a635b..8d36cb64e 100644 --- a/docs/ja/quick-answers/administering/move-project-directories.md +++ b/docs/ja/quick-answers/administering/move-project-directories.md @@ -35,4 +35,4 @@ Toolkit はパブリッシュ パスをストレージ ルートの相対パス ## バージョン -この変更の影響を受ける[ムービーのパス](Path to Movie)フィールドまたは[フレームのパス](Path to Frames)フィールドに情報を持つバージョン エンティティを {% include product %} で使用する場合、これらのフィールドも新しい場所をポイントするように更新する必要があります。これらのフィールドは、メディアへの絶対パスを含む文字列フィールドであるためです。 \ No newline at end of file +この変更の影響を受ける[ムービーのパス](Path to Movie)フィールドまたは[フレームのパス](Path to Frames)フィールドに情報を持つバージョン エンティティを {% include product %} で使用する場合、これらのフィールドも新しい場所をポイントするように更新する必要があります。これらのフィールドは、メディアへの絶対パスを含む文字列フィールドであるためです。 diff --git a/docs/ja/quick-answers/administering/resetup-project-with-sg-desktop.md b/docs/ja/quick-answers/administering/resetup-project-with-sg-desktop.md index f6dc35723..ec9fbf399 100644 --- a/docs/ja/quick-answers/administering/resetup-project-with-sg-desktop.md +++ b/docs/ja/quick-answers/administering/resetup-project-with-sg-desktop.md @@ -14,13 +14,11 @@ lang: ja 1. {% include product %} でプロジェクトにリンクされているすべての `PipelineConfiguration` エンティティを削除します。

![PipelineConfiguration エンティティ ページへのアクセス](images/pipeline-configuration-entity-page.png)

2. {% include product %} の `Project` エンティティの `Tank Name` フィールドを空白の値に設定します。

![プロジェクト タンク名フィールドをクリア](images/clear-project-tank-name.png)

3. ディスク上で対応するパイプライン設定ディレクトリをすべて削除します。 -4. {% include product %} Desktop で、セットアップするプロジェクトを選択します。*既にプロジェクトを表示していた場合は、プロジェクト リスト ビューに移動してから、もう一度プロジェクトに戻ります。* -6. これでプロジェクト セットアップ プロセスを再び実行できます。 +4. {% include product %} Desktop で、セットアップするプロジェクトを選択します。_既にプロジェクトを表示していた場合は、プロジェクト リスト ビューに移動してから、もう一度プロジェクトに戻ります。_ +5. これでプロジェクト セットアップ プロセスを再び実行できます。 **別の方法** コマンド ラインで `tank setup_project` コマンドを使用してプロジェクトをセットアップすることに慣れている場合は、コマンドの最後に `--force` 引数を追加します。これにより、上記の手動での手順に従わずに、以前にセットアップしたプロジェクトをセットアップできます。 tank setup_project --force" - - diff --git a/docs/ja/quick-answers/administering/sg-desktop-run-on-ubuntu.md b/docs/ja/quick-answers/administering/sg-desktop-run-on-ubuntu.md index 081cfba47..ef0b1deac 100644 --- a/docs/ja/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ b/docs/ja/quick-answers/administering/sg-desktop-run-on-ubuntu.md @@ -14,5 +14,3 @@ Python 自体が多くのシステム レベル ライブラリの最上部に 現在、Debian をサポートする正式な予定はありません。Ubuntu 向けの開発を行うのには問題があります。変更ごとに追加オペレーティング システムの QA とサポートを更新する必要があり、これが大きな負担になります。 {% include product %} Desktop を使用せずに Toolkit を手動で実行して有効にする場合([このドキュメントの説明を参照](https://support.shotgunsoftware.com/hc/ja-jp/articles/219033208#Step%208.%20Run%20the%20activation%20script)) - そのドキュメントのページから `activate_shotgun_pipeline_toolkit.py` スクリプトをダウンロードしてください。ガイドの手順 8 にある「クリックして {% include product %} Pipeline Toolkit アクティベーション パッケージをダウンロード」という見出しをクリックします。 - - diff --git a/docs/ja/quick-answers/administering/share-assets-between-projects.md b/docs/ja/quick-answers/administering/share-assets-between-projects.md index 5646f6cbf..c9b036743 100644 --- a/docs/ja/quick-answers/administering/share-assets-between-projects.md +++ b/docs/ja/quick-answers/administering/share-assets-between-projects.md @@ -18,11 +18,11 @@ caption: Asset Library hierarchy: [project, sg_asset_type, code] entity_type: Asset filters: -- [project, is, {'type': 'Project', 'id': 207}] + - [project, is, { "type": "Project", "id": 207 }] ``` `207` をライブラリ プロジェクトの ID と置き換えます。 Maya のショットのステップ環境で作業している場合、このプロジェクトで使用可能なすべてのパブリッシュを表示する新しいタブが追加されます。他のエンジンのローダーにこのタブを追加する場合(Nuke や 3dsmax)、各エンジンで `tk-multi-loader2` 設定を変更する必要があります。他の環境でこの設定を有効にする場合は、アセットのステップ環境と設定する他の環境で同じ手順を実行する必要があります。手間が少しかかりますが、詳細に制御できるようになります。 -これらの設定を使用すると、Loader アプリで一般的なプロジェクトのパブリッシュをリストするタブを表示できます。 \ No newline at end of file +これらの設定を使用すると、Loader アプリで一般的なプロジェクトのパブリッシュをリストするタブを表示できます。 diff --git a/docs/ja/quick-answers/administering/uninstalling-an-app-or-engine.md b/docs/ja/quick-answers/administering/uninstalling-an-app-or-engine.md index 63273e87a..9fa982c31 100644 --- a/docs/ja/quick-answers/administering/uninstalling-an-app-or-engine.md +++ b/docs/ja/quick-answers/administering/uninstalling-an-app-or-engine.md @@ -25,7 +25,6 @@ lang: ja 次の行を使用して、Favorites メニューにもこのアプリを追加します。
[`.../env/includes/settings/tk-maya.yml L56`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L56) - 次に、ショット ステップの設定で次の行を繰り返します。
[`.../env/includes/settings/tk-maya.yml L106`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L106)
[`.../env/includes/settings/tk-maya.yml L115`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L115) @@ -45,4 +44,4 @@ lang: ja ### アプリの場所を削除する -既定の設定では、[.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) ファイル内にすべてのアプリの場所記述子が保存されています。`tk-multi-publish2.yml` はこの記述子を参照しているため、[この記述子の行](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)を削除する必要があります。 \ No newline at end of file +既定の設定では、[.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) ファイル内にすべてのアプリの場所記述子が保存されています。`tk-multi-publish2.yml` はこの記述子を参照しているため、[この記述子の行](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)を削除する必要があります。 diff --git a/docs/ja/quick-answers/administering/update-configuration-core-locations.md b/docs/ja/quick-answers/administering/update-configuration-core-locations.md index 06bb4fb3b..0145703a6 100644 --- a/docs/ja/quick-answers/administering/update-configuration-core-locations.md +++ b/docs/ja/quick-answers/administering/update-configuration-core-locations.md @@ -9,32 +9,31 @@ lang: ja ## ローカル コアを使用するようにパイプライン設定を更新するにはどうすればいいですか? -共有 Toolkit コアを使用するようにパイプラインが設定されている場合は、基本的に、このプロセスを元に戻すことができます。つまり、コアの「共有を解除」し、tank localize コマンドを使用してパイプライン設定内に Toolkit Core API のコピーをインストールできます。これをコアの「ローカライズ」と呼んでいます。  +共有 Toolkit コアを使用するようにパイプラインが設定されている場合は、基本的に、このプロセスを元に戻すことができます。つまり、コアの「共有を解除」し、tank localize コマンドを使用してパイプライン設定内に Toolkit Core API のコピーをインストールできます。これをコアの「ローカライズ」と呼んでいます。 -1. ターミナルを開いて、Toolkit コアのインストール先のパイプライン設定に移動します。 +1. ターミナルを開いて、Toolkit コアのインストール先のパイプライン設定に移動します。 $ cd /sgtk/software/shotgun/scarlet -2. 次の tank コマンドを実行します。 +2. 次の tank コマンドを実行します。 - $ ./tank localize + $ ./tank localize - ... - ... - - ---------------------------------------------------------------------- - Command: Localize - ---------------------------------------------------------------------- + ... + ... - This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline - configuration /sgtk/software/shotgun/scarlet. + ---------------------------------------------------------------------- + Command: Localize + ---------------------------------------------------------------------- - Do you want to proceed [yn] + This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline + configuration /sgtk/software/shotgun/scarlet. - 続行する前に、Toolkit がすべてを確認します。パイプライン設定が現在指定している Toolkit コアのコピーは、パイプライン設定にローカルにコピーされます。 + Do you want to proceed [yn] -3. Toolkit は、パイプライン設定で使用中のすべてのアプリ、エンジン、フレームワークを `install` フォルダにローカルにコピーします。次に Toolkit コアがコピーされ、新たにインストールされたローカルな Toolkit コアを使用するようにパイプライン設定内の設定ファイルが更新されます。 + 続行する前に、Toolkit がすべてを確認します。パイプライン設定が現在指定している Toolkit コアのコピーは、パイプライン設定にローカルにコピーされます。 +3. Toolkit は、パイプライン設定で使用中のすべてのアプリ、エンジン、フレームワークを `install` フォルダにローカルにコピーします。次に Toolkit コアがコピーされ、新たにインストールされたローカルな Toolkit コアを使用するようにパイプライン設定内の設定ファイルが更新されます。 Copying 59 apps, engines and frameworks... 1/59: Copying tk-multi-workfiles v0.6.15... @@ -61,45 +60,46 @@ lang: ja {% include info title="注" content="出力は、インストールしたアプリ、エンジン、およびフレームワークのバージョンによって異なります。" %} ## 既存の共有コアを使用するようにパイプライン設定を更新するにはどうすればいいですか? + 既存の共有 Toolkit コアを使用する場合は、tank コマンドを使用して共有コアを使用するように「ローカライズされた」既存のパイプライン設定を更新できます。 -1. ターミナルを開いて、更新するパイプライン設定に移動します。 +1. ターミナルを開いて、更新するパイプライン設定に移動します。 $ cd /sgtk/software/shotgun/scarlet -2. 次に、`tank attach_to_core` コマンドを実行して、現在のプラットフォーム上の共有コアへの有効なパスを指定します。 +2. 次に、`tank attach_to_core` コマンドを実行して、現在のプラットフォーム上の共有コアへの有効なパスを指定します。 - $ ./tank attach_to_core /sgtk/software/shotgun/studio - ... - ... - ---------------------------------------------------------------------- - Command: Attach to core - ---------------------------------------------------------------------- - After this command has completed, the configuration will not contain an - embedded copy of the core but instead it will be picked up from the following - locations: + $ ./tank attach_to_core /sgtk/software/shotgun/studio + ... + ... + ---------------------------------------------------------------------- + Command: Attach to core + ---------------------------------------------------------------------- + After this command has completed, the configuration will not contain an + embedded copy of the core but instead it will be picked up from the following + locations: - - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' - - Windows: 'z:\sgtk\software\shotgun\studio' - - Mac: '/sgtk/software/shotgun/studio' + - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' + - Windows: 'z:\sgtk\software\shotgun\studio' + - Mac: '/sgtk/software/shotgun/studio' - Note for expert users: Prior to executing this command, please ensure that you - have no configurations that are using the core embedded in this configuration. + Note for expert users: Prior to executing this command, please ensure that you + have no configurations that are using the core embedded in this configuration. - Do you want to proceed [yn] + Do you want to proceed [yn] - 続行する前に、Toolkit がすべてを確認します。この共有コアは複数のプラットフォーム用に既にセットアップされているため、それぞれの場所を示します。 + 続行する前に、Toolkit がすべてを確認します。この共有コアは複数のプラットフォーム用に既にセットアップされているため、それぞれの場所を示します。 - *新しいプラットフォームに場所を追加する必要がある場合、共有コア設定内の config/core/install_location.yml を更新して、必要なパスを追加します。* + _新しいプラットフォームに場所を追加する必要がある場合、共有コア設定内の config/core/install_location.yml を更新して、必要なパスを追加します。_ -3. Toolkit は、パイプライン設定のローカル コア API をバックアップし、ローカライズされたコアを削除し、共有コアでパイプライン設定を指定するために必要な設定を追加します。 +3. Toolkit は、パイプライン設定のローカル コア API をバックアップし、ローカライズされたコアを削除し、共有コアでパイプライン設定を指定するために必要な設定を追加します。 - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. + Backing up local core install... + Removing core system files from configuration... + Creating core proxy... + The Core API was successfully processed. - 後で、パイプライン設定内で Toolkit コアをローカライズする(つまり、共有コアからパイプライン設定を切り離して、ローカルにインストールされたバージョンを使用する)場合は、`tank localize` コマンドを使用してこの操作を行うことができます。 + 後で、パイプライン設定内で Toolkit コアをローカライズする(つまり、共有コアからパイプライン設定を切り離して、ローカルにインストールされたバージョンを使用する)場合は、`tank localize` コマンドを使用してこの操作を行うことができます。 {% include info title="注" content="スタジオの共有コアは、現在のパイプライン設定のコアと同じかそれ以降のバージョンである必要があります。" %} @@ -109,15 +109,15 @@ lang: ja 次に、異なるプロジェクト パイプライン設定間で共有できる新しい Toolkit Core API 設定を作成する方法を示します。 -1. ターミナルを開いて、共有する Toolkit Core バージョンが含まれる既存のパイプライン設定に移動します。プロセスが完了すると、このパイプライン設定はローカライズされなくなりますが、新しく作成した共有コアは使用されます。 +1. ターミナルを開いて、共有する Toolkit Core バージョンが含まれる既存のパイプライン設定に移動します。プロセスが完了すると、このパイプライン設定はローカライズされなくなりますが、新しく作成した共有コアは使用されます。 $ cd /sgtk/software/shotgun/pied_piper -2. 次の tank コマンドを実行して、Toolkit core をディスクの外部の場所にコピーします。このパスがすべてのプラットフォームで見つかるように、場所を指定する必要があります(inux_path、windows_path, mac_path)。各パスに引用符を使用することをお勧めします。特定のプラットフォームで Toolkit を使用しない場合は、空の文字列 `""` を指定するだけです。  +2. 次の tank コマンドを実行して、Toolkit core をディスクの外部の場所にコピーします。このパスがすべてのプラットフォームで見つかるように、場所を指定する必要があります(inux_path、windows_path, mac_path)。各パスに引用符を使用することをお勧めします。特定のプラットフォームで Toolkit を使用しない場合は、空の文字列 `""` を指定するだけです。 $ ./tank share_core "/mnt/sgtk/software/shotgun/studio" "Z:\sgtk\software\shotgun\studio" \ "/sgtk/software/shotgun/studio" -3. Toolkit が処理を続ける前に、加えられる変更の概要が表示されます。 +3. Toolkit が処理を続ける前に、加えられる変更の概要が表示されます。 ---------------------------------------------------------------------- Command: Share core @@ -134,7 +134,7 @@ lang: ja have no configurations that are using the core embedded in this configuration. Do you want to proceed [yn] -4. Toolkit は新しい共有場所にコア インストールをコピーし、新しい共有コアを指定するように既存のパイプライン設定を更新します。 +4. Toolkit は新しい共有場所にコア インストールをコピーし、新しい共有コアを指定するように既存のパイプライン設定を更新します。 Setting up base structure... Copying configuration files... @@ -144,4 +144,4 @@ lang: ja Creating core proxy... The Core API was successfully processed. -これで他のパイプライン設定からこの新しい共有コアを使用できます。既存の共有コア(先ほど作成したコアなど)を使用するようにパイプライン設定を更新するには、`tank attach_to_core` コマンドを使用します。 \ No newline at end of file +これで他のパイプライン設定からこの新しい共有コアを使用できます。既存の共有コア(先ほど作成したコアなど)を使用するようにパイプライン設定を更新するには、`tank attach_to_core` コマンドを使用します。 diff --git a/docs/ja/quick-answers/administering/what-is-path-cache.md b/docs/ja/quick-answers/administering/what-is-path-cache.md index e23099cd6..d20842ed7 100644 --- a/docs/ja/quick-answers/administering/what-is-path-cache.md +++ b/docs/ja/quick-answers/administering/what-is-path-cache.md @@ -18,4 +18,4 @@ lang: ja - `tank synchronize_folders`   は、ローカル パス キャッシュと {% include product %} を強制的に同期します。 通常、これらのコマンドのいずれかを実行する必要はありませんが、状況によっては、これらが役立つことがあります。 -たとえば、プロジェクト内のエンティティの名前を変更するか、エンティティを再作成する場合は、その前に `unregister_folders` を実行する必要があります。 \ No newline at end of file +たとえば、プロジェクト内のエンティティの名前を変更するか、エンティティを再作成する場合は、その前に `unregister_folders` を実行する必要があります。 diff --git a/docs/ja/quick-answers/administering/where-is-my-cache.md b/docs/ja/quick-answers/administering/where-is-my-cache.md index 117b62cc1..b12b1f43f 100644 --- a/docs/ja/quick-answers/administering/where-is-my-cache.md +++ b/docs/ja/quick-answers/administering/where-is-my-cache.md @@ -7,7 +7,6 @@ lang: ja # キャッシュの場所 - ## ルート キャッシュの場所 Toolkit は、{% include product %} サーバに対する不要な呼び出しを防止するために、一部のデータをローカル キャッシュに保存します。ローカル キャッシュには[パス キャッシュ](./what-is-path-cache.md)、バンドル キャッシュ、およびサムネイルが含まれます。ほとんどのユーザは既定の場所を使用しますが、変更の必要がある場合は、[cache_location コア フック](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py)を使用して設定可能です。 diff --git a/docs/ja/quick-answers/developing.md b/docs/ja/quick-answers/developing.md index ccd3aa0ce..a3a914c43 100644 --- a/docs/ja/quick-answers/developing.md +++ b/docs/ja/quick-answers/developing.md @@ -5,8 +5,7 @@ pagename: quick-answers-developing lang: ja --- -開発 -=== +# 開発 Toolkit を使用した開発に基づくクイック アンサーのコレクションです。 diff --git a/docs/ja/quick-answers/developing/create-publishes-via-api.md b/docs/ja/quick-answers/developing/create-publishes-via-api.md index 563dcf4c6..6c51eca5e 100644 --- a/docs/ja/quick-answers/developing/create-publishes-via-api.md +++ b/docs/ja/quick-answers/developing/create-publishes-via-api.md @@ -13,10 +13,11 @@ lang: ja Publish API は最終的にコア sgtk API メソッドを使用して PublishedFile を登録しますが、カスマイズ可能な、コレクション、検証、およびパブリッシュに関するフレームワークも用意されています。Publish API ドキュメントだけでなく、[パイプライン チュートリアル](https://developer.shotgridsoftware.com/ja/cb8926fc/)にも、独自のパブリッシュ プラグインを記述する例が記載されています。 ## register_publish() API メソッドを使用する + 未処理の {% include product %} API 呼び出しを使用して {% include product %} でパブリッシュ レコードを作成することは可能ですが、Toolkit の便利なメソッドを使用することをお勧めします。 パブリッシュを作成する Toolkit アプリはすべて、[`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)と呼ばれる API ユーティリティ メソッドを使用しています。 -基本的に、このメソッドは {% include product %} で新しい PublishedFile エンティティを作成し、ツールキットの概念を使用してその作業を容易にするよう試行します。 以下の行に従ってコードを実行する必要があります。 +基本的に、このメソッドは {% include product %} で新しい PublishedFile エンティティを作成し、ツールキットの概念を使用してその作業を容易にするよう試行します。  以下の行に従ってコードを実行する必要があります。 ```python # Get access to the Toolkit API @@ -74,4 +75,5 @@ currentEngine = sgtk.platform.current_engine() tk = currentEngine.sgtk ctx = currentEngine.context ``` -" %} \ No newline at end of file + +" %} diff --git a/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md b/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md index 15eed526f..152e12914 100644 --- a/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md +++ b/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md @@ -11,7 +11,7 @@ Maya で Toolkit アプリを起動するシェルフ ボタンを Maya に追 {% include info title="注" content="これは、Toolkit が現在の Maya セッションで有効であることが前提です。このコード例では Toolkit をブートストラップしません。"%} -Maya でスクリプト エディタを開き、次の Python コードを貼り付けます。  +Maya でスクリプト エディタを開き、次の Python コードを貼り付けます。 ```python import maya.cmds as cmds diff --git a/docs/ja/quick-answers/developing/setting-software-environment-variables.md b/docs/ja/quick-answers/developing/setting-software-environment-variables.md index c706a3f9d..1b6bbbf04 100644 --- a/docs/ja/quick-answers/developing/setting-software-environment-variables.md +++ b/docs/ja/quick-answers/developing/setting-software-environment-variables.md @@ -35,10 +35,11 @@ class BeforeAppLaunch(tank.Hook): ```python tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") ``` + " %} ## カスタム ラッパー スタジオによっては、環境変数の設定とソフトウェアの起動を処理するカスタム ラッパーが用意されている場合があります。このようなカスタム コードを使用する場合は、`Software` エンティティの[パス フィールド](https://support.shotgunsoftware.com/hc/ja/articles/115000067493-Integrations-Admin-Guide#Example:%20Add%20your%20own%20Software)が実行可能なラッパーを示すように指定すると、`tk-multi-launchapp` が代わりに実行されます。 -{% include warning title="警告" content="この方法を使用する場合は、ShotGrid で設定された環境変数を保持するよう注意してください。そうしないと、統合が起動しなくなります。" %} \ No newline at end of file +{% include warning title="警告" content="この方法を使用する場合は、ShotGrid で設定された環境変数を保持するよう注意してください。そうしないと、統合が起動しなくなります。" %} diff --git a/docs/ja/quick-answers/developing/sgtk-script-authentication.md b/docs/ja/quick-answers/developing/sgtk-script-authentication.md index de0ef0a59..9d52e689a 100644 --- a/docs/ja/quick-answers/developing/sgtk-script-authentication.md +++ b/docs/ja/quick-answers/developing/sgtk-script-authentication.md @@ -8,14 +8,17 @@ lang: ja # カスタム スクリプトで認証とログイン資格情報を使用するにはどうすればよいですか? ## エラー メッセージ + スクリプトで次のようなエラーが表示された場合は、スクリプトと ShotGrid サイトの通信が許可されていないことを意味します。 ```text tank.errors.TankError: Missing required script user in config '/path/to/your/project/config/core/shotgun.yml' ``` + ユーザ認証またはスクリプト認証が事前に行われていない場合、Toolkit は環境設定の `shotgun.yml` ファイルで定義された資格情報を確認するためにフォールバックします。`shotgun.yml` ファイル内で資格情報を定義することは、旧式の認証処理方法です。資格情報を `shotgun.yml` ファイル内で定義しないで、次に示すいずれかの方法を使用してください。 ## ユーザ向けスクリプト + スクリプトがユーザ向けの場合は、`Sgtk` インスタンスを作成する前に、先頭に以下を追加します。 ```python @@ -67,7 +70,8 @@ authenticator.clear_default_user() ![](./images/sign_in_window.png) {% include info title="注" content="ダウンロードした Toolkit API (`sgtk` パッケージ)を使用して別の環境設定にブートストラップする場合のように、環境設定に関連付けられていない Toolkit API を読み込む場合は、`CoreDefaultsManager` を作成しないでください。代わりに、既定のマネージャを渡さずに、`ShotgunAuthenticator()` のインスタンスを作成します。 -```python + +````python authenticator = ShotgunAuthenticator() ```" %} @@ -100,7 +104,7 @@ user = authenticator.create_script_user( # Tells Toolkit which user to use for connecting to Shotgun. sgtk.set_authenticated_user(user) -``` +```` {% include info title="注" content="[ユーザ向けのスクリプト](#user-facing-scripts)のセクションの末尾で示したように、読み込んだ `sgtk` パッケージがスタンドアロンである場合や、環境設定から取得したものでない場合は、既定のマネージャを作成しないでください。また、`create_script_user()` メソッドに `host` kwarg を指定する必要があります。 @@ -111,4 +115,5 @@ user = authenticator.create_script_user( api_key=\"4e48f....\" ) ``` + " %} diff --git a/docs/ja/quick-answers/developing/toolkit-core-event-daemon.md b/docs/ja/quick-answers/developing/toolkit-core-event-daemon.md index f7b856573..e41dace4d 100644 --- a/docs/ja/quick-answers/developing/toolkit-core-event-daemon.md +++ b/docs/ja/quick-answers/developing/toolkit-core-event-daemon.md @@ -104,7 +104,6 @@ def import_sgtk(project): {% include warning title="警告" content="設定をブートストラップする場合、設定をローカルにキャッシュし、すべての依存関係をダウンロードする必要があるため、処理が遅くなる可能性があります。Event デーモン プラグインのブートストラップはパフォーマンスに深刻な影響を与える可能性があります。考えられるアプローチの 1 つは、プロジェクトのブートストラップごとに別々の Python インスタンスを生成し、プラグインからの通信によりコマンドを送信することです。これにより、必要になるたびにプロジェクトをブートストラップし直す必要がなくなります。"%} - 次に例を示します。 ```python @@ -136,4 +135,4 @@ engine.destroy() ... ``` -{% include info title="注" content="一元管理設定もブートストラップすることができるので、両方の設定が混在する場合は別の方法は必要ありません。"%} \ No newline at end of file +{% include info title="注" content="一元管理設定もブートストラップすることができるので、両方の設定が混在する場合は別の方法は必要ありません。"%} diff --git a/docs/ja/quick-answers/developing/update-config-with-api.md b/docs/ja/quick-answers/developing/update-config-with-api.md index c601961a0..a3f654959 100644 --- a/docs/ja/quick-answers/developing/update-config-with-api.md +++ b/docs/ja/quick-answers/developing/update-config-with-api.md @@ -8,6 +8,7 @@ lang: ja # API を使用して Toolkit の設定をプログラムによって更新するにはどうすればいいですか? ## アプリ、エンジン、およびフレームワークを更新する + エンジン、アプリ、およびフレームワークのすべてをプログラムによって最新バージョンに更新する場合は、次のコードを使用できます。 ```python diff --git a/docs/ja/quick-answers/troubleshooting.md b/docs/ja/quick-answers/troubleshooting.md index bc9ab01c7..10db19399 100644 --- a/docs/ja/quick-answers/troubleshooting.md +++ b/docs/ja/quick-answers/troubleshooting.md @@ -5,8 +5,7 @@ pagename: quick-answers-troubleshooting lang: ja --- -トラブルシューティング -=== +# トラブルシューティング 問題のトラブルシューティングを目的としたクイック アンサーのコレクションです。 @@ -19,6 +18,7 @@ lang: ja - [Python API で発生する SSL: CERTIFICATE_VERIFY_FAILED の問題の解決](./troubleshooting/fix-ssl-certificate-verify-failed.md) #### ソフトウェア統合 + - [Houdini {% include product %} 統合が起動しないのはなぜですか。](./troubleshooting/houdini-integrations-not-starting.md) - [SG Desktop から Nuke や Maya などを起動したが {% include product %} のメニューにエントリが表示されない](./troubleshooting/menu-entries-missing-in-launched-dcc.md) - [環境変数 NUKE_PATH を設定すると Nuke 統合の起動に失敗するのはなぜですか?](./troubleshooting/nuke-path-environment-variable.md) @@ -26,7 +26,7 @@ lang: ja - [{% include product %} Toolkit を使用すると 3ds Max の起動時にクラッシュするのはなぜですか?](./troubleshooting/3dsmax-crashes-on-startup.md) #### ブラウザの統合 + - [ローカル ファイル リンクを使用できず、Chrome から Toolkit アプリケーションを起動できない](./troubleshooting/cant-use-file-linking-toolkit-app-chrome.md) - [ローカル ファイル リンクを使用できず、Firefox から Toolkit アプリケーションを起動できない](./troubleshooting/cant-use-file-linking-toolkit-app-firefox.md) - [Linux で {% include product %} Desktop/ブラウザ統合の起動に失敗する](./troubleshooting/browser-integration-fails-linux.md) - diff --git a/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md index d0903dad7..de9bbdd50 100644 --- a/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ b/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md @@ -16,7 +16,7 @@ lang: ja An Application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. -通常、これは、パス内の `msvcr90.dll` のバージョンと 3ds Max にバンドルされている Python のバージョンの競合が原因です。  +通常、これは、パス内の `msvcr90.dll` のバージョンと 3ds Max にバンドルされている Python のバージョンの競合が原因です。 ## 解決策 diff --git a/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md index 438ec96d9..ca694d6e1 100644 --- a/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ b/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md @@ -11,6 +11,7 @@ Linux で {% include product %} Desktop を初めて実行すると、次のい 問題が解決しない場合は、support@shotgunsoftware.com までお気軽にお問い合わせください。 ### 目次 + - [OPENSSL_1.0.1_EC または HTTPSConnection に関連する問題](#openssl_101_ec-or-httpsconnection-related-issues) - [libffi.so.5 に関連する問題](#libffiso5-related-issues) - [証明書検証の失敗に関連する問題](#certificate-validation-failed-related-issues) @@ -91,6 +92,7 @@ ls -al $HOME/.pki/nssdb $ mkdir --parents ~/.pki/nssdb $ certutil -N -d "sql:$HOME/.pki/nssdb" ``` + パスワードは入力しないでください。 これで、{% include product %} Desktop が正しく起動されるようになります。 diff --git a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md b/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md index 1e934d5ea..29fe87477 100644 --- a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ b/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md @@ -36,7 +36,7 @@ Chrome が証明書を受け入れていることを確認するには、https:/ ![Autobahn Python メッセージ](images/autobahn-python.png) -または、次のいずれかのメッセージが表示された場合は、証明書の登録プロセスに問題があったことを示しています。  +または、次のいずれかのメッセージが表示された場合は、証明書の登録プロセスに問題があったことを示しています。 ![接続はプライベート メッセージではありません](images/your-connection-is-not-private-chrome.png) @@ -98,4 +98,4 @@ Chrome は自己署名証明書のセキュリティを定期的に更新しま ## 他の OS でのトラブルシューティング -他の OS での {% include product %} Desktop 統合に問題がある場合は、この記事を更新してサポートできるように、[サポート チーム](https://support.shotgunsoftware.com/hc/ja/requests/new)までご連絡ください。 \ No newline at end of file +他の OS での {% include product %} Desktop 統合に問題がある場合は、この記事を更新してサポートできるように、[サポート チーム](https://support.shotgunsoftware.com/hc/ja/requests/new)までご連絡ください。 diff --git a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md b/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md index 8a1a26ad6..f87c726f1 100644 --- a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ b/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md @@ -16,7 +16,7 @@ lang: ja ### {% include product %} Desktop は動作していますか? -もちろん、そうだと思います。 既に確認済みだと思いますが、 念のためお尋ねしました。  +もちろん、そうだと思います。 既に確認済みだと思いますが、 念のためお尋ねしました。 ### ファイアウォール ソフトウェアを使用していますか? @@ -40,7 +40,7 @@ Firefox が証明書を受け入れていることを確認するには、https: ![Firefox に例外を追加](images/add-exception-firefox.png) -****[証明書を取得](Get Certificate)**、**[セキュリティ例外を承認](Confirm Security Exception)の順にクリックします。 証明書を信頼できないというメッセージは無視します。証明書は認証局ではなく {% include product %} Desktop によって生成されているため、問題ありません。 +\***\*[証明書を取得](Get Certificate)**、\*\*[セキュリティ例外を承認](Confirm Security Exception)の順にクリックします。 証明書を信頼できないというメッセージは無視します。証明書は認証局ではなく {% include product %} Desktop によって生成されているため、問題ありません。 これで {% include product %} サイトからローカル ファイル リンクにアクセスし、Toolkit アプリケーションを起動できるようになるはずです。 例外を追加しても問題が解決しない場合は、support@shotgunsoftware.com までご連絡ください。 @@ -52,10 +52,10 @@ Firefox が証明書を受け入れていることを確認するには、https: ![Firefox ビューの証明書](images/firefox-view-certificates.png) -**[サーバー証明書](Servers)**セクションで項目をクリックし、`localhost` と入力するか、または単に **localhost:9000** という名前のエントリが表示されるまでスクロールします。このエントリを削除します。次に、**[認証局証明書](Authorities)**タブに移動して `localhost` と再び入力します。もう一度、**localhost** エントリを持つ **Autodesk** セクションが表示されるまでスクロールします。**localhost** エントリを削除します。これが完了したら、**[OK]** をクリックして Firefox を再起動します。 Firefox の再起動が完了したら、**https://localhost:9000** にアクセスします。次のメッセージが表示されます。 +**[サーバー証明書](Servers)**セクションで項目をクリックし、`localhost` と入力するか、または単に **localhost:9000** という名前のエントリが表示されるまでスクロールします。このエントリを削除します。次に、**[認証局証明書](Authorities)**タブに移動して `localhost` と再び入力します。もう一度、**localhost** エントリを持つ **Autodesk** セクションが表示されるまでスクロールします。**localhost** エントリを削除します。これが完了したら、**[OK]**  をクリックして Firefox を再起動します。 Firefox の再起動が完了したら、**https://localhost:9000** にアクセスします。次のメッセージが表示されます。 ![接続は安全なメッセージではありません](images/connection-is-not-secure.png) ここで、例外を追加するために上記の手順を実行する必要があります。 -この画面が表示されない場合は、support@shotgunsoftware.com までご連絡ください。 \ No newline at end of file +この画面が表示されない場合は、support@shotgunsoftware.com までご連絡ください。 diff --git a/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md b/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md index 7da6aac12..9b433a040 100644 --- a/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md +++ b/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md @@ -28,6 +28,6 @@ Toolkit でフォルダを作成すると、エンティティに対する[パ ただし、次のような場合は、パスからコンテキストを取得できることが重要になります。 - 当社の自動コンテキスト切り替え機能を使用する場合。この機能を使用すると、Toolkit はユーザーが(Workfiles アプリを介さずに)ソフトウェアのネイティブの開くダイアログでファイルを開いたことを検出し、それに応じて現在のコンテキストを切り替えることができます。 -- 特定のファイルのコンテキストを知る必要があるスタンドアロン プ​​ロセスで API を使用する場合。 +- 特定のファイルのコンテキストを知る必要があるスタンドアロン プ ​​ ロセスで API を使用する場合。 -このような場合の解決策は、スキーマに `Task` フォルダを導入するか、自動コンテキスト切り替え機能を使用しないことです。API スクリプトの場合は、プロセスに必要なコンテキスト情報が既に存在し、この検索を実行する必要がないことを確認します。 \ No newline at end of file +このような場合の解決策は、スキーマに `Task` フォルダを導入するか、自動コンテキスト切り替え機能を使用しないことです。API スクリプトの場合は、プロセスに必要なコンテキスト情報が既に存在し、この検索を実行する必要がないことを確認します。 diff --git a/docs/ja/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md b/docs/ja/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md index 33e2d76ec..91a8aa55b 100644 --- a/docs/ja/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ b/docs/ja/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md @@ -17,16 +17,16 @@ Python API は、API にバンドルされ、マシンに格納されている Windows 証明書ストアに必要な CA 証明書を追加します。Windows 7 ユーザがこの解決策を使用する場合は、最初に [PowerShell 3.0 にアップグレード](https://docs.microsoft.com/ja-jp/office365/enterprise/powershell/manage-office-365-with-office-365-powershell)するか、[certutil](https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/certutil) を使用して[必要な証明書](https://www.amazontrust.com/repository/SFSRootCAG2.cer)を追加しなければならない可能性があります。 -1. **[スタート]**を右クリックしてから、**[Windows PowerShell (管理者)]**を左クリックして、昇格された PowerShell を起動します。 +1. **[スタート]**を右クリックしてから、**[Windows PowerShell (管理者)]**を左クリックして、昇格された PowerShell を起動します。 -2. 次のコマンドを PowerShell ウィンドウに貼り付けて、[Return]キーを押して実行します。 +2. 次のコマンドを PowerShell ウィンドウに貼り付けて、[Return]キーを押して実行します。 $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" $cert_file = New-TemporaryFile Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root -3. サムプリント `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` を保持している追加証明書の詳細が表示されたら操作は完了しているので、PowerShell を閉じることができます。 +3. サムプリント `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` を保持している追加証明書の詳細が表示されたら操作は完了しているので、PowerShell を閉じることができます。 ## 代わりの解決策 diff --git a/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md index b871ba499..3cc5c1f67 100644 --- a/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ b/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md @@ -7,7 +7,6 @@ lang: ja # Houdini {% include product %} 統合が起動しないのはなぜですか。 - ここでは、{% include product %} の統合で Houdini が起動しない場合に見られる、最も一般的な理由について説明します。この場合、Houdini は {% include product %} Desktop、{% include product %} の Web サイト、または tank コマンドからエラーなしで起動します。 ただし、Houdini が起動すると、{% include product %} メニューまたはシェルフが表示されなくなります。 この問題は、`HOUDINI_PATH` 環境変数がオーバーライドされていて、{% include product %} がその環境変数に基づいて起動スクリプト パスを渡そうとしているために発生することがよくあります。 @@ -32,4 +31,4 @@ Houdini を {% include product %} から起動すると、起動アプリケー このエラーが表示される場合は、代わりに `%HOUDINI_PATH%` を使用してください。"%} -問題が解決しない場合は、[サポート チーム](https://support.shotgunsoftware.com/hc/ja/requests/new)に問い合わせて問題の診断を依頼してください。 \ No newline at end of file +問題が解決しない場合は、[サポート チーム](https://support.shotgunsoftware.com/hc/ja/requests/new)に問い合わせて問題の診断を依頼してください。 diff --git a/docs/ja/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md b/docs/ja/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md index a39173e7b..f7fa2b3ef 100644 --- a/docs/ja/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ b/docs/ja/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md @@ -23,4 +23,4 @@ lang: ja ![{% include product %} メニューのプロジェクト アクション](images/shotgun-menu-asset-step-actions.png) -環境が正しいにもかかわらずアクションが表示されない場合は、関連する[ログ](where-are-my-log-files.md)を調べ、エラーがないかどうかを確認します。完全な出力を取得するには、[デバッグ ログを有効に](turn-debug-logging-on.md)しなければならない可能性があります。 \ No newline at end of file +環境が正しいにもかかわらずアクションが表示されない場合は、関連する[ログ](where-are-my-log-files.md)を調べ、エラーがないかどうかを確認します。完全な出力を取得するには、[デバッグ ログを有効に](turn-debug-logging-on.md)しなければならない可能性があります。 diff --git a/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md index cbe39526d..4619fb92a 100644 --- a/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ b/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md @@ -17,4 +17,4 @@ lang: ja tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") ``` -または、`prepend_path_to_env_var()` を使用してパスを先頭に追加できます。 \ No newline at end of file +または、`prepend_path_to_env_var()` を使用してパスを先頭に追加できます。 diff --git a/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md index 251ae4e93..f8b43ffaf 100644 --- a/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md +++ b/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md @@ -21,20 +21,21 @@ Toolkit の使用速度が低下することがあります。速度が低下す 次に、適切な方法と、速度が低下する一般的なシナリオを示します。このリストは、まだすべてを網羅するものではありません。新しいパターンが見つかったときに、適宜追加されます。このガイドを参照しても、現在発生している問題の根本的な原因が見つからない場合は、[サポート チケット](https://support.shotgunsoftware.com/hc/ja/requests/new)をお送りください。担当チームがサポートいたします。 目次: + - [一般的なお勧めの方法](#general-good-practice) - - [キャッシュの場所](#cache-location) - - [最新の状態を保つ](#keeping-up-to-date) - - [一元管理設定と分散設定](#centralized-configs-vs-distributed-configs) - - [デバッグ](#debugging) + - [キャッシュの場所](#cache-location) + - [最新の状態を保つ](#keeping-up-to-date) + - [一元管理設定と分散設定](#centralized-configs-vs-distributed-configs) + - [デバッグ](#debugging) - [ソフトウェアの起動速度が遅い](#launching-software-is-slow) - - [診断](#diagnosis) - - [問題が発生するタイミング(起動前または起動後)](#is-the-issue-pre-or-post-launch) - - [ログを調べる](#checking-the-logs) - - [ソフトウェアの起動速度が低下する一般的な原因](#common-causes-of-slow-software-launches) + - [診断](#diagnosis) + - [問題が発生するタイミング(起動前または起動後)](#is-the-issue-pre-or-post-launch) + - [ログを調べる](#checking-the-logs) + - [ソフトウェアの起動速度が低下する一般的な原因](#common-causes-of-slow-software-launches) - [[File Open]、[File Save]、Loader アプリのいずれかで速度が低下する場合](#file-open-file-save-or-the-loader-app-is-slow) - [フォルダ作成速度が低下する](#folder-creation-is-slow) - - [I/O 使用量を制御する](#tackling-io-usage) - - [フォルダを登録する](#registering-folders) + - [I/O 使用量を制御する](#tackling-io-usage) + - [フォルダを登録する](#registering-folders) ## 一般的なお勧めの方法 @@ -60,13 +61,13 @@ Toolkit の詳細設定は、[一元管理設定と分散設定](https://develop この 2 つの方法の違いはパフォーマンス以外にもありますが、パフォーマンスに関しては長所と短所の両面があります。次の表に、純粋にパフォーマンスの観点から見た長所と短所を示します。 -| | 利点 | 欠点 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **一元管理設定** | - 初期設定プロセスが完了すると、必要なすべてのものが既にダウンロードされていて、すべてのユーザが使用できる状態になっています。 | - 一元管理設定は通常、ネットワーク ストレージに保存されるため、Toolkit の一般的な用途のときにパフォーマンスが低下することがあります。 | -| | - 将来の更新は、一元管理された場所に 1 回ダウンロードするだけで済みます。 | - Toolkit の設定には多数の小さなファイルが含まれています。多数の小さなファイルにメタデータ操作を行うと、処理速度が大幅に低下し、サーバの負荷が増大することがあります。また、Toolkit を使用する読み取り操作と、サーバの一般的な用途における読み取り操作の負荷が増大すると、設定をすばやく読み取ることができなくなって、Toolkit のパフォーマンスが低下することがあります。 | -| **分散設定** | - キャッシュされたアプリ、エンジン、フレームワーク、およびコアは、他のローカルにキャッシュされた設定と共有できるような方法で保存されます。つまり、複数のプロジェクトを今後ロードするときに、これらが同じ依存関係を共有していれば、キャッシュ速度が上がる可能性があります。 | - 分散設定はユーザ単位でローカルにキャッシュする必要があります。この操作を行うには、通常、設定、および必要なすべてのアプリ、エンジン、フレームワーク、コアをダウンロードします。 | -| | - これらはローカル ハード ドライブ上のユーザ キャッシュに保存されるため、通常はサーバ速度よりもパフォーマンスが向上します。つまり、最初のキャッシュ以降のパフォーマンスは一元管理設定よりも高くなります。 | - このプロセスはシーンの背後でシームレスに行われますが、これらをダウンロードする初期コストがかかります。 | -| | | - 新しいバージョンの依存関係を指定するように設定を更新するたびに、設定と新しい依存関係の両方をキャッシュする必要があります。 | +| | 利点 | 欠点 | +| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **一元管理設定** | - 初期設定プロセスが完了すると、必要なすべてのものが既にダウンロードされていて、すべてのユーザが使用できる状態になっています。 | - 一元管理設定は通常、ネットワーク ストレージに保存されるため、Toolkit の一般的な用途のときにパフォーマンスが低下することがあります。 | +| | - 将来の更新は、一元管理された場所に 1 回ダウンロードするだけで済みます。 | - Toolkit の設定には多数の小さなファイルが含まれています。多数の小さなファイルにメタデータ操作を行うと、処理速度が大幅に低下し、サーバの負荷が増大することがあります。また、Toolkit を使用する読み取り操作と、サーバの一般的な用途における読み取り操作の負荷が増大すると、設定をすばやく読み取ることができなくなって、Toolkit のパフォーマンスが低下することがあります。 | +| **分散設定** | - キャッシュされたアプリ、エンジン、フレームワーク、およびコアは、他のローカルにキャッシュされた設定と共有できるような方法で保存されます。つまり、複数のプロジェクトを今後ロードするときに、これらが同じ依存関係を共有していれば、キャッシュ速度が上がる可能性があります。 | - 分散設定はユーザ単位でローカルにキャッシュする必要があります。この操作を行うには、通常、設定、および必要なすべてのアプリ、エンジン、フレームワーク、コアをダウンロードします。 | +| | - これらはローカル ハード ドライブ上のユーザ キャッシュに保存されるため、通常はサーバ速度よりもパフォーマンスが向上します。つまり、最初のキャッシュ以降のパフォーマンスは一元管理設定よりも高くなります。 | - このプロセスはシーンの背後でシームレスに行われますが、これらをダウンロードする初期コストがかかります。 | +| | | - 新しいバージョンの依存関係を指定するように設定を更新するたびに、設定と新しい依存関係の両方をキャッシュする必要があります。 | 手短に言えば、ストレージは低速だが妥当な速度のインターネット接続を使用している場合は、分散設定が最適な設定になる可能性がありますが、サーバ ストレージのパフォーマンスが高く、インターネットのパフォーマンスが低い場合は、一元管理設定が適している可能性があります。 @@ -79,6 +80,7 @@ Toolkit の詳細設定は、[一元管理設定と分散設定](https://develop Maya、Nuke、Houdini などのソフトウェアを起動するときに、{% include product %} を使用しない場合に比べて起動時間が長くなることがあります。{% include product %} を使用しない場合に比べて起動時間が長くなるのは通常のことですが、これらの時間が許容できないレベルまで増大することがあります(ソフトウェアによって異なりますが、通常は起動時間が 1 分未満であると予測しています)。ソフトウェアの起動には多くのプロセスが関係しているため、この問題を診断するのは面倒なことがあります。 ### 診断 + 最初に行う必要があるのは、この問題が発生する場合の条件を特定することです。 1. **{% include product %} を使用しないで起動したときに低速になりますか?** - 明らかなことかもしれませんが、{% include product %} を使用して起動した場合のみ問題が発生することを確認することが重要です。 @@ -114,7 +116,6 @@ Maya、Nuke、Houdini などのソフトウェアを起動するときに、{% i 2019-05-01 11:27:56,835 [82801 DEBUG sgtk.core.path_cache] Path cache syncing not necessary - local folders already up to date! 2019-05-01 11:28:01,847 [82801 INFO sgtk.env.asset.tk-shotgun.tk-shotgun-folders] 1 Asset processed - Processed 66 folders on disk. - 時間が急に変化している場所を特定したら、そのログの行を調べると、その段階で何が起こっていたのかを把握することができます。たとえば、フォルダの作成中や、{% include product %} 接続の取得中に問題が発生していることがあります。 ただし、ログを参照するのは面倒な作業であり、内容に意味があるとは限らないため、[サポート](https://support.shotgunsoftware.com/hc/ja/requests/new)に問い合わせて、この作業のサポートを依頼することができます。 @@ -131,18 +132,19 @@ Maya、Nuke、Houdini などのソフトウェアを起動するときに、{% i 最初に、問題となっているアプリの速度が低下する状況を絞り込んで、特定します。 - **アプリを起動するときに速度が低下しますか、それともタブ間で移動するときに低下しますか?** - - アプリは現在、極端に多くの情報を表示するように設定されている可能性があります。[マイ タスク](My Tasks)タブやその他のタブは、リスト内の不要なエンティティ除外するように設定できます。たとえば、[保留中](On Hold) (`hld`)や[最終](Final) (`fin`)などの特定のステータスを持つタスクを除外できます。このようにすると、パフォーマンスが向上するだけでなく、アーティストは自分が必要としている情報のみを表示することができます。[Loader アプリ](https://support.shotgunsoftware.com/hc/ja/articles/219033078-Load-Published-Files-#The%20tree%20view)と Workfiles アプリの両方を除外できます。Workfiles のドキュメントには現在、フィルタに関する特定のセクションが用意されていませんが、[階層設定](https://support.shotgunsoftware.com/hc/ja/articles/219033088-Your-Work-Files#Step%20filtering)の一環としてフィルタを適用することができます。 - - File Open アプリの階層を、[この階層が展開されるまでサブ項目のロードを遅らせる](https://support.shotgunsoftware.com/hc/ja/articles/219033088-Your-Work-Files#Deferred%20queries)ように設定することもできます。これが既定の設定になっていますが、古い設定を使用している場合は、この設定を使用するように移行することができます。 - - デバッグ ログが有効になっていないことを確認します。デバッグ ログが有効になっていると、追加の I/O が大量に発生するため、速度が低下することがあります。これらのアプリには、大量のデバッグ出力が含まれています。 + - アプリは現在、極端に多くの情報を表示するように設定されている可能性があります。[マイ タスク](My Tasks)タブやその他のタブは、リスト内の不要なエンティティ除外するように設定できます。たとえば、[保留中](On Hold) (`hld`)や[最終](Final) (`fin`)などの特定のステータスを持つタスクを除外できます。このようにすると、パフォーマンスが向上するだけでなく、アーティストは自分が必要としている情報のみを表示することができます。[Loader アプリ](https://support.shotgunsoftware.com/hc/ja/articles/219033078-Load-Published-Files-#The%20tree%20view)と Workfiles アプリの両方を除外できます。Workfiles のドキュメントには現在、フィルタに関する特定のセクションが用意されていませんが、[階層設定](https://support.shotgunsoftware.com/hc/ja/articles/219033088-Your-Work-Files#Step%20filtering)の一環としてフィルタを適用することができます。 + - File Open アプリの階層を、[この階層が展開されるまでサブ項目のロードを遅らせる](https://support.shotgunsoftware.com/hc/ja/articles/219033088-Your-Work-Files#Deferred%20queries)ように設定することもできます。これが既定の設定になっていますが、古い設定を使用している場合は、この設定を使用するように移行することができます。 + - デバッグ ログが有効になっていないことを確認します。デバッグ ログが有効になっていると、追加の I/O が大量に発生するため、速度が低下することがあります。これらのアプリには、大量のデバッグ出力が含まれています。 - **ファイルを開く、保存する、または新規作成するときに速度が低下しますか?** - - シーンの操作やアクションのフックを引き継いで処理したかどうか、およびこれらの関数の前後に速度低下の原因となるカスタム動作が行われているかどうかを確認します。 - - ファイルを作成するときや、保存するときに、Workfiles はこのコンテキストに必要なすべてのフォルダが作成されていることを確認します。パフォーマンスの[問題](#folder-creation-is-slow)が発生する一般的な原因は、フォルダの作成です。 + - シーンの操作やアクションのフックを引き継いで処理したかどうか、およびこれらの関数の前後に速度低下の原因となるカスタム動作が行われているかどうかを確認します。 + - ファイルを作成するときや、保存するときに、Workfiles はこのコンテキストに必要なすべてのフォルダが作成されていることを確認します。パフォーマンスの[問題](#folder-creation-is-slow)が発生する一般的な原因は、フォルダの作成です。 ## フォルダ作成速度が低下する フォルダの作成は多くの要素で構成されていて、問題が発生したときに処理速度が低下する原因となることがあります。 フォルダの作成では、次の処理が行われます。 + - ローカル パス キャッシュを同期する - 設定のスキーマを読み取る - 状況に応じて作成する必要があるパスのリストを生成する @@ -173,6 +175,7 @@ Maya、Nuke、Houdini などのソフトウェアを起動するときに、{% i {% include info title="注" content="ステップ スキーマ フォルダの設定は、既定で true になっています。" %} #### 作成の遅延 + [ `defer_creation`設定](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference#Workspaces%20and%20Deferred%20Folder%20Creation)により、特定のエンジンが実行されている場合に限ってフォルダが作成されるように制限することで、フォルダの作成時期を調整することができます。カスタム名を使用し、[sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure) を使用してこの名前のフォルダが作成されるようにすることもできます。 **例** @@ -208,6 +211,7 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") ローカルな[パス キャッシュ](../administering/what-is-path-cache.md)は SQLite データベースを使用してデータを保存します。ネットワーク上のストレージにデータベースが保存されている場合は、データベースに対する読み取りおよび書き込みのパフォーマンスが大幅に低下することがあります。 #### 初期同期 + プロジェクトに多数のフォルダが登録されている場合は(進行中のプロジェクトに新しいユーザが参加する場合など)、状況に応じて、ローカル キャッシュをゼロから生成しなければならないことがあります。この処理には非常に長い時間がかかることがあるため、このようなプロジェクトにはこの処理が 1 回だけ行われるように効率化されました。 以降の同期では、ローカル キャッシュとサイトのレジストリの間の差分のみが取得されます。ユーザがプロジェクトを操作する頻度が少なく、セッションの合間に多数のフォルダが作成されている場合は、すべてのデータをキャッシュする間の待ち時間が非常に長くなることがあります。 @@ -220,4 +224,4 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") 一元的に保存されたパス キャッシュを定期的に更新するには、他のユーザのキャッシュから手動でコピーすることができますが、通常はスクリプトを使用して定期的に転送します。 -{% include warning title="警告" content="cache_location.py フックを使用するとキャッシュの場所を設定できますが、すべてのユーザに単一の場所を指定する設定は避けてください。1 つまたは複数のプロセッサがデータベースを同時に編集しようとすると、データベースがロックされることがあります。"%} \ No newline at end of file +{% include warning title="警告" content="cache_location.py フックを使用するとキャッシュの場所を設定できますが、すべてのユーザに単一の場所を指定する設定は避けてください。1 つまたは複数のプロセッサがデータベースを同時に編集しようとすると、データベースがロックされることがあります。"%} diff --git a/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md index 4430d27f5..8111a0310 100644 --- a/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md +++ b/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md @@ -18,6 +18,7 @@ lang: ja ## 環境変数をセットアップする ### デバッグ ログを常にオンにする + 最初に、新しい環境変数 `TK_DEBUG=1` をセットアップする必要があります。 {% include info title="注" content="手順はプラットフォームによって異なるため、スタジオ内の専門家を集めて環境変数をセットアップする方法について話し合うことをお勧めします。次の例では、Windows 7 マシンで環境変数をセットアップする方法について説明しています。"%} @@ -28,7 +29,6 @@ lang: ja ![Windows の環境変数の設定](images/windows-setting-environment-variable.png) - - **変数名**: `TK_DEBUG` - **変数の値**: `1` - [OK]を選択します。 diff --git a/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md index b4e6ffc68..43fa8cdde 100644 --- a/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ b/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md @@ -28,4 +28,4 @@ After Effects 統合のリリースに伴い、{% include product %} と統合 Photoshop を終了してそのディレクトリを削除すると、再起動時の拡張拡張は 1 つだけになります。 -{% include info title="注" content="複数の環境または複数の設定に Photoshop 統合があり、古いプラグインと新しいプラグインが混在している場合、あるユーザがその古い統合で Photoshop を起動すると、古いプラグインが返されます。このクリーンアップが一度で済むよう、Photoshop を組織全体で更新することを推奨します。" %} \ No newline at end of file +{% include info title="注" content="複数の環境または複数の設定に Photoshop 統合があり、古いプラグインと新しいプラグインが混在している場合、あるユーザがその古い統合で Photoshop を起動すると、古いプラグインが返されます。このクリーンアップが一度で済むよう、Photoshop を組織全体で更新することを推奨します。" %} diff --git a/docs/ja/quick-answers/workflow.md b/docs/ja/quick-answers/workflow.md index 7b11d205a..c4c5dcb20 100644 --- a/docs/ja/quick-answers/workflow.md +++ b/docs/ja/quick-answers/workflow.md @@ -5,10 +5,8 @@ pagename: quick-answers-workflow lang: ja --- -ワークフロー -===== +# ワークフロー Toolkit ワークフローベースの関連するクイック アンサーの集まりです。 - [バージョンと Published File の違いは何ですか?](./workflow/version-publishedfile-difference.md) - diff --git a/docs/ja/quick-answers/workflow/version-publishedfile-difference.md b/docs/ja/quick-answers/workflow/version-publishedfile-difference.md index 8b4a23eba..789a98d98 100644 --- a/docs/ja/quick-answers/workflow/version-publishedfile-difference.md +++ b/docs/ja/quick-answers/workflow/version-publishedfile-difference.md @@ -7,11 +7,10 @@ lang: ja # バージョンと Published File の違いは何ですか? -「**パブリッシュ**」は、アプリケーション内で使用可能なディスク上のファイル(またはイメージ シーケンス)またはデータを表します。これには、exr シーケンス、abc、Maya ファイルなどがあります。パブリッシュは {% include product %} の `PublishedFile` エンティティによって表されます。 +「**パブリッシュ**」は、アプリケーション内で使用可能なディスク上のファイル(またはイメージ シーケンス)またはデータを表します。これには、exr シーケンス、abc、Maya ファイルなどがあります。パブリッシュは {% include product %} の  `PublishedFile`  エンティティによって表されます。 -「**バージョン**」({% include product %} の `Version` エンティティ)はパブリッシュの視覚表現で、レビューやノートの作成に使用されます。`Version` エンティティ上に Published Files という名前のフィールドがあり、互いに接続する任意の数のパブリッシュ レコードを入力することができます。このフィールドを使用して、パブリッシュ グループに関連付けられているレビュー `Version` をトラックできます。パブリッシュ時にこの関係を設定することをお勧めします。バージョンは {% include product %} の `Version` エンティティによって表されます。 +「**バージョン**」({% include product %} の `Version` エンティティ)はパブリッシュの視覚表現で、レビューやノートの作成に使用されます。`Version` エンティティ上に Published Files という名前のフィールドがあり、互いに接続する任意の数のパブリッシュ レコードを入力することができます。このフィールドを使用して、パブリッシュ グループに関連付けられているレビュー `Version` をトラックできます。パブリッシュ時にこの関係を設定することをお勧めします。バージョンは {% include product %} の  `Version`  エンティティによって表されます。 究極的には、ファイル形式は異なるが実際は同じコンテンツを表す(Maya ファイル、obj、alembic などの)一連のファイルをパブリッシュ時に生成できることが理想です。これらのファイルは、同じ内容をすべて異なる形式で表現しています。その後、パブリッシュ データをプレビューしてノートを作成するために、1 つのレビュー `Version` に関連付けます。 パブリッシュされたデータがイメージ シーケンスの場合、これは少し冗長な考え方になります。実際イメージ シーケンスは、レビュー対象であり、かつパイプラインに送信する対象でもあります。この場合、パブリッシュと `Version` の両方を「1 つにまとめて」作成する必要があります。この操作を行うと、(Loader アプリを使用するなどの方法により)パブリッシュされたデータのうち、`Version` を表すものがロードされます。 - diff --git a/docs/ja/reference/pipeline-integrations/env-config-ref.md b/docs/ja/reference/pipeline-integrations/env-config-ref.md index 515aad528..95f70bef1 100644 --- a/docs/ja/reference/pipeline-integrations/env-config-ref.md +++ b/docs/ja/reference/pipeline-integrations/env-config-ref.md @@ -9,7 +9,7 @@ lang: ja ## はじめに -Toolkit パイプラインの中心にあるのは環境設定です。Toolkit パイプライン設定内の環境構成ファイルでは、さまざまな DCC 内で使用可能な Toolkit アプリを定義し、それぞれの設定をカスタマイズできます。このドキュメントは環境設定ファイルの構造と機能についての完全なリファレンスです。ここでは、プロジェクト内のさまざまなワークフローを設定するための Toolkit の**「環境」の概念、環境設定の構成、ファイル参照、そしてどのようなカスタマイズが行えるかを確認する方法について説明します。 +Toolkit パイプラインの中心にあるのは環境設定です。Toolkit パイプライン設定内の環境構成ファイルでは、さまざまな DCC 内で使用可能な Toolkit アプリを定義し、それぞれの設定をカスタマイズできます。このドキュメントは環境設定ファイルの構造と機能についての完全なリファレンスです。ここでは、プロジェクト内のさまざまなワークフローを設定するための Toolkit の\*\*「環境」の概念、環境設定の構成、ファイル参照、そしてどのようなカスタマイズが行えるかを確認する方法について説明します。 {% include info title="注" content="このドキュメントは環境設定ファイルのリファレンスとして使用しますが、『[パイプライン設定の編集に関する Toolkit の基本ガイド](./learning-resources/guides/editing_app_setting.md)』には、構成設定を編集するステップバイステップの手順が例として記載されています。" %} @@ -54,7 +54,7 @@ shot_step.yml ## Toolkit が現在の環境を判断する仕組み -Toolkitは [pick_environment](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py) というコア フックを使用し、現在の[コンテキスト](https://developer.shotgridsoftware.com/tk-core/core.html#context)に基づいて特定の時点で使用する環境ファイルを決定します。`pick_environment` フックの戻り値は環境設定ファイルに対応しています。たとえば、`pick_environment` が `shot_step` を返した場合、Toolkit は `config/env/shot_step.yml` を使用して Toolkit 環境を設定します。 +Toolkit は [pick_environment](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py) というコア フックを使用し、現在の[コンテキスト](https://developer.shotgridsoftware.com/tk-core/core.html#context)に基づいて特定の時点で使用する環境ファイルを決定します。`pick_environment` フックの戻り値は環境設定ファイルに対応しています。たとえば、`pick_environment` が `shot_step` を返した場合、Toolkit は `config/env/shot_step.yml` を使用して Toolkit 環境を設定します。 ## カスタム環境 @@ -71,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -91,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### エンジン ブロック @@ -104,16 +104,15 @@ engines: `location` はすべてのバンドルに必要な特別な設定です。`apps` 設定はエンジンに定義されたすべてのアプリのリストで、それぞれ独自の設定があります。この場合、エンジンに対して定義されるアプリは 1 つのみです(`tk-multi-workfiles2`)。 - ### ロケーション ディスクリプタ -すべての Toolkit バンドルには `location` 設定があり、これをバンドルの**「ディスクリプタ」と呼びます。ディスクリプタは、特定のバンドルの入手元、およびそのタイプに応じて直接アクセスするかローカルにキャッシュするかを Toolkit に指示します。Toolkit バンドルを入手できる場所の例としては、{% include product %} App Store、GIT リポジトリ、ディスク上のパス、または {% include product %} サイトにアップロードされた zip ファイルなどがあります。これらには、それぞれ対応するディスクリプタ タイプがあり、そのタイプに固有の設定があります。以下に、上記の例の `tk-maya` エンジンのディスクリプタをもう一度示します。 +すべての Toolkit バンドルには `location` 設定があり、これをバンドルの\*\*「ディスクリプタ」と呼びます。ディスクリプタは、特定のバンドルの入手元、およびそのタイプに応じて直接アクセスするかローカルにキャッシュするかを Toolkit に指示します。Toolkit バンドルを入手できる場所の例としては、{% include product %} App Store、GIT リポジトリ、ディスク上のパス、または {% include product %} サイトにアップロードされた zip ファイルなどがあります。これらには、それぞれ対応するディスクリプタ タイプがあり、そのタイプに固有の設定があります。以下に、上記の例の `tk-maya` エンジンのディスクリプタをもう一度示します。 ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` これはタイプ `app_store` のディスクリプタで、指定されたバンドルを {% include product %} App Store から入手するよう Toolkit に指示します。タイプ `app_store` のディスクリプタの設定は `name` と `version` です。 @@ -121,9 +120,9 @@ engines: 対照的に、スタジオでカスタム バンドルをアクティブに開発している場合、たとえば特定のワークフロー用の Toolkit アプリを作成している場合は、ディスク上のパスから直接入手することができます。この場合、以下に示すようにタイプ `dev` のディスクリプタを使用します。 ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` ディスクリプタは `app_store` ディスクリプタとは設定が異なります。他の設定を使用することもできますが、ディスク上のアプリの場所を参照する `path` 設定を使用して簡単にセットアップすることができます。 @@ -171,16 +170,16 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ここでは、いくつかの重要な注意事項があります。 -* 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 -* ファイルが長くなり始めていますが、構成設定はまだ追加していません。 -* 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 +- 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 +- ファイルが長くなり始めていますが、構成設定はまだ追加していません。 +- 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 最後の 2 つの問題を軽減するために、Toolkit 設定は*インクルード*をサポートします。 @@ -190,8 +189,8 @@ engines: インクルードは次の 2 つの部分で構成されます。 -* `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 -* 構成設定内のリファレンス。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 +- `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 +- 構成設定内のリファレンス。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 上記の例を具体化するために、すべてのエンジンのロケーション ディスクリプタを保持する単一のファイルを作成しているとします。そのファイルを `includes` サブフォルダに置き、`engine_locations.yml` という名前を付けます。 @@ -209,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` このファイルはすべてのエンジンの場所に対する単一のソースとして機能し、すべての環境設定から参照することができます。このインクルード ファイルを使用した場合、この例は次のようになります。 @@ -269,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -293,10 +289,9 @@ engines: {% include info title="注" content="既定の設定では、この例では示されていない 2 番目のネスト レベルを使用しています。単なるディスクリプタ以上の設定を持つすべてのアプリまたはエンジンは、`includes/settings` に設定ファイルがあります(例: `includes/settings/tk-maya.yml`、`includes/settings/tk-multi-workfiles2.yml`)。エンジン設定ファイルには、アプリ設定ファイルからのアプリ設定が含まれ、環境設定ファイルにはエンジン設定ファイルからの設定が含まれています。既定の設定の構造の詳細については、[README ファイル](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)を参照してください。構成設定の変更に関する詳細な手順については、『[構成設定の編集に関する Toolkit の基本ガイド](./learning-resources/guides/editing_app_setting.md)』を参照してください。" %} - ## スパース構成 -すべての Toolkit バンドルには、使用可能な構成設定のセットがあり、それぞれの設定に既定値があります。Toolkit は**「スパース構成」を許可します: 構成設定が環境設定ファイル(またはそこに含まれるファイル)で明示的に指定されていない場合、バンドルの既定値が使用されます。 +すべての Toolkit バンドルには、使用可能な構成設定のセットがあり、それぞれの設定に既定値があります。Toolkit は\*\*「スパース構成」を許可します: 構成設定が環境設定ファイル(またはそこに含まれるファイル)で明示的に指定されていない場合、バンドルの既定値が使用されます。 この例では、`location` 以外にアプリの設定を指定していません。したがって、設定の現在の状態では、3 つのアプリはすべての設定に既定値を使用します。それでは、どの構成設定が利用可能であるかを知るにはどうすれば良いでしょうか。 @@ -306,8 +301,8 @@ engines: スパース構成では、単に設定ファイルを見ただけでは、どの構成設定がアプリに使用できるかをすぐに判断することはできません。アプリで利用可能な構成設定を確認する場合、2 つの選択肢があります。 -* **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)を参照することができます。[アプリとエンジンのページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 -* **マニフェスト:** すべての Toolkit バンドルは、そのルート ディレクトリに `info.yml` というファイルを含んでいます。このファイルをバンドルの**「マニフェスト」と呼び、バンドルで利用可能なすべての設定を、それぞれの説明と既定値と共に定義します。マニフェストは、バンドルの独自のキャッシュ(パイプライン設定内の `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` など)、または Github ([ここでは Workfiles の場合の例を示します](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))にあります。 +- **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)を参照することができます。[アプリとエンジンのページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 +- **マニフェスト:** すべての Toolkit バンドルは、そのルート ディレクトリに `info.yml` というファイルを含んでいます。このファイルをバンドルの\*\*「マニフェスト」と呼び、バンドルで利用可能なすべての設定を、それぞれの説明と既定値と共に定義します。マニフェストは、バンドルの独自のキャッシュ(パイプライン設定内の `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` など)、または Github ([ここでは Workfiles の場合の例を示します](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))にあります。 ## 構成設定を修正する @@ -337,13 +332,12 @@ engines: `tk-multi-workfiles2` の設定がインクルード ファイルからのものである場合は、そのファイルでこの変更を行います。 - ## その他の参考情報 -* [Toolkit の基本ガイド: パイプライン設定を編集する](./learning-resources/guides/editing_app_setting.md) -* [Toolkit の基本ガイド: アプリを追加する](./learning-resources/guides/installing_app.md) -* [アニメーション パイプラインのチュートリアル](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [ディスクリプタのリファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [ウェビナー: Toolkit の管理](https://youtu.be/7qZfy7KXXX0) -* [ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference) -* [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [Toolkit の基本ガイド: パイプライン設定を編集する](./learning-resources/guides/editing_app_setting.md) +- [Toolkit の基本ガイド: アプリを追加する](./learning-resources/guides/installing_app.md) +- [アニメーション パイプラインのチュートリアル](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [ディスクリプタのリファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [ウェビナー: Toolkit の管理](https://youtu.be/7qZfy7KXXX0) +- [ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference) +- [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md index f017b553e..ed07b5b9c 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md @@ -39,7 +39,6 @@ Flame でシーケンスのコンフォームをセットアップし、タイ - QuickTime が生成され、レビュー用に {% include product %} にアップロードされます。 - ## レビューにバッチ レンダリングを送信する ショットの Flame バッチ ファイルをパブリッシュしたら、レンダリングと出力の設定が事前に入力されたバッチ ファイルを開くために、このショットから Flare を直接起動できます。新しいバージョンをレンダリングするには、単純に Render Range ボタンをクリックします。 @@ -66,11 +65,12 @@ LINKBOX_ENGINE:{% include product %}software/tk-flame:Flame エンジン ## 書き出しプリセットを使用する -書き出し機能は、設定の「書き出しプリセット」**の概念を使用します。Flame 内で書き出し UI を起動すると、ドロップダウンに利用可能な書き出しプリセットが表示されます。各プリセットは、ファイルをディスクに書き込む方法と {% include product %} にアップロードする方法を設定できる設定オプションです。ディスク上のファイルの場所など、高度な設定は環境設定で直接制御するため、パイプラインに合わせて既定の設定オプションを簡単に調整できます。 +書き出し機能は、設定の「書き出しプリセット」\*\*の概念を使用します。Flame 内で書き出し UI を起動すると、ドロップダウンに利用可能な書き出しプリセットが表示されます。各プリセットは、ファイルをディスクに書き込む方法と {% include product %} にアップロードする方法を設定できる設定オプションです。ディスク上のファイルの場所など、高度な設定は環境設定で直接制御するため、パイプラインに合わせて既定の設定オプションを簡単に調整できます。 Flame を制御するために Flame に渡される実際の書き出し XML コンテンツに関する高度な設定と制御は、プリセットごとの動作が定義されているフックによって処理されます。フックでは、書き出し機能によってメディアを生成する方法を完全に制御できます。 ## {% include product %} サーバ側のトランスコーディングを回避する + 既定では、`Version.sg_uploaded_movie` フィールドを設定すると、QuickTime が {% include product %} Review にアップロードされます。これにより、{% include product %} サーバ側のトランスコーディングがトリガされます。アップロードされた QuickTime は、ブラウザやモバイルで再生できるように `mp4` と `webm` の各形式に変換されます。場合によっては、このサーバ側のトランスコーディングを回避すると有用なときがあります。回避するには `bypass_shotgun_transcoding` 構成設定を指定します。true に設定すると、統合により {% include product %} の `Version.sg_uploaded_movie_mp4` フィールドに直接アップロードされるため、サーバ側のトランスコーディングが回避されます。この場合、`webm` バージョンが生成されないため、Firefox でレビューを再生できなくなります。 詳細については、https://support.shotgunsoftware.com/hc/ja/articles/219030418 を参照してください。 @@ -139,4 +139,3 @@ def get_ffmpeg_quicktime_encode_parameters(self): def get_local_quicktime_ffmpeg_encode_parameters(self): return "-vcodec libx264 -pix_fmt yuv420p -g 30 -b:v 6000k -vprofile high -bf 0" ``` - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md index 791442fc1..a564a0280 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md @@ -43,4 +43,3 @@ Flame レビュー アプリはいくつかの異なる方法でカスタマイ - {% include product %} で作成された新しい項目に、アプリが自動的に追加するタスクをカスタマイズできます。このためにタスク テンプレート設定を使用すると、作成された構造を標準化できます。 - フックを使用すると、アプリが Flame 以外で QuickTime を生成するために使用する XML プリセットを完全に制御できます。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md index 4ec62f83b..40ff775cc 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md @@ -38,9 +38,11 @@ Toolkit と Hiero を既に使用している場合は、以降の説明をお ![ShotGrid UI](../images/apps/hiero-shotgun_ui.png) ### タグ + ドロップダウンを調整すると、さまざまな Hiero タグを {% include product %} ショット ステータスとショット タスクのテンプレートにマッピングできます。そのため、Hiero のタグ設定ワークフローを実行して、{% include product %} ショットを処理中に設定したり、グリーン スクリーンや CG などの任意の目的に合うようにショットのタスクを設定したりできます。この UI はフックを介して統合されるため、追加機能として簡単に設定できます。 ### 照合 + また、Hiero に組み込まれたロジックをミラーリングするトラック項目の照合を共に制御するオプションもあります。ショットを構成する複数の項目がある場合(異なるトラックでのオーバーラップまたは複数のトラック上の同一ショット名)、このオプションをオンにする必要があります。これにより、{% include product %} Toolkit のショット更新ツールは、一致した照合項目を 1 つのショットとして処理します。 ![照合](../images/apps/hiero-collate.png) @@ -50,6 +52,7 @@ Toolkit と Hiero を既に使用している場合は、以降の説明をお ![照合拡張機能](../images/apps/hiero-collate_ex.png) ### パス + 次の {% include product %} の UI は標準的なパス ダイアログです。既定で Hiero を介してショットに追加される項目は 3 つあります。既定の Nuke スクリプト、既定の Nuke 書き込み場所、プレート トランスコード用の既定の場所です。これらの項目の場所はアプリの設定によって決まり、テンプレート作成システムの機能をフル活用できます。 ![パス](../images/apps/hiero-paths.png) @@ -57,6 +60,7 @@ Toolkit と Hiero を既に使用している場合は、以降の説明をお このアプリによって、Hiero で `{tk_version}` トークンを使用できるようになります。このトークンはバージョン文字列で置き換えられ、{% include product %} Toolkit 用に正しくフォーマットされます。 ### カスタム テンプレートのフィールド + `custom_template_fields` 設定で定義されて `resolve_custom_strings` フックで解決されるトークンは、有効な置き換えトークンの Hiero のリストに自動的に追加され、Toolkit テンプレートパスで有効な置き換えとみなされます。 たとえば、Toolkit `templates.yml` ファイルで次のようにキーを定義するとします。 @@ -64,7 +68,7 @@ Toolkit と Hiero を既に使用している場合は、以降の説明をお ``` resolution: type: str - filter_by: alphanumeric + filter_by: alphanumeric ``` `tk-hiero-export` の `project.yml` 設定は次のようになります。 @@ -143,14 +147,16 @@ Hiero で `resolution` トークンを使用できるだけでなく、Toolkit hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov" ``` - ### {% include product %} タスク + 2 つの新しいタスク タイプが登録されました。 ##### {% include product %} トランスコード イメージ + これは、標準的な Hiero トランスコーディング タスクのサブクラス タスクです。トランスコードの結果をパブリッシュとして {% include product %} に登録します。必要に応じて、{% include product %} でバージョンも作成されます。バージョンが作成されると、QuickTime も作成され、Screening Room メディアとしてアップロードされます。 ##### {% include product %} Nuke プロジェクト ファイル + これは、標準的な Hiero Nuke スクリプト書き出しのサブクラス タスクです。生成される Nuke スクリプトを PublishedFile としてショットにリンクされた {% include product %} に登録します。この設定を使用すると、書き出し時にファイルに含める Toolkit 対応 WriteNode を指定できます。 ![Nuke プロジェクト ファイル設定](../images/apps/hiero-nuke_project_file_settings.png) @@ -168,11 +174,13 @@ Hiero で `resolution` トークンを使用できるだけでなく、Toolkit ![Finder](../images/apps/hiero-finder.png) ### {% include product %} でのシーケンスとショットの更新 + Hiero シーケンスの名前はシーケンス名として使用され、ショットにはカット情報が設定されます([カットの順序](Cut Order)、[ヘッド(イン)](Head In)、[カット(イン)](Cut In)、[カット(アウト)](Cut Out)、[テール(アウト)](Tail Out)、[カットの長さ](Cut Duration)、[作業期間](Working Duration))。また、ショットを構成するシーケンスまたは項目のポスター フレームが選択されている場合は、ショットのサムネイルとしてアップロードされます。 ワークフローでショットの親として**シーケンス**以外のエンティティ(**エピソード**など)を使用する場合は、`hook_get_shot` フックの `get_shot_parent` メソッドをオーバーライドできます。既定の実装は**シーケンス**を(必要に応じて)作成し、返します。 ### カット スキーマのサポート + {% include product %} サイトがカット スキーマ(v7.0.0 以降)をサポートしている場合、このアプリは {% include product %} で対応する**カット項目**を使用して**カット**を自動的に生成します。この**カット**エンティティは Hiero シーケンスに対応し、**カット項目**はシーケンス内の項目に対応します。**カット**は、`hook_get_shot` フックの `get_shot_parent` メソッドで返される親エンティティ(既定では**シーケンス**)にリンクされています。**カット項目**は**ショット**エンティティと関連付けられ、書き出し時に作成されるレビュー可能な**バージョン**にリンクされます。書き出し後、**カット**は {% include product %} と **RV** の**[メディア] (Media)**タブで再生可能になります。 **カット**と**カット項目**エンティティに関連付けられたすべてのメタデータは、書き出し UI で指定可能な*[カット タイプ](Cut Type)*フィールドを除いて Hiero から推定されます。 @@ -186,4 +194,5 @@ Hiero シーケンスの名前はシーケンス名として使用され、シ また、カット スキーマはリタイム クリップを処理しません。リタイム クリップを書き出すと、デバッグの警告がログに記録されます。 ### 代わりのショット階層 + 標準的な「シーケンス > ショット」階層では作業しないが、エピソードやシーンを使用する可能性がある場合は、どのようなショット階層が使用されていてもアプリが連携するように設定可能な `hiero_get_shot` フックがあります。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md index 52d306ba9..6d7bae8d7 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md @@ -14,11 +14,18 @@ lang: ja 通常、このアプリを設定する場合は、{% include product %} Engine for Nuke の環境設定に次のコードを追加すると、Hiero のタイムラインとスプレッドシートのメニューにアプリが表示されます。 ```yaml - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} +timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } +spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } ``` - - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md index e23a08bb6..92d3bc3db 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md @@ -56,4 +56,4 @@ Toolkit Mantra Node は、環境設定ごとに複数の出力プロファイル output_extra_plane_template: houdini_shot_local_extra_plane -`color` フィールドを介してノードの外観を変更するために出力プロファイルを使用したり、基本の Alembic ノードで個別のパラメータを調整するために `settings` フィールドにそのパラメータと一致するキーと値のペアを入力したりできます。最後に、`output_*_template` フィールドは、Mantra レンダラによってディスクに書き込まれるファイルの出力パスを操作します。 \ No newline at end of file +`color` フィールドを介してノードの外観を変更するために出力プロファイルを使用したり、基本の Alembic ノードで個別のパラメータを調整するために `settings` フィールドにそのパラメータと一致するキーと値のペアを入力したりできます。最後に、`output_*_template` フィールドは、Mantra レンダラによってディスクに書き込まれるファイルの出力パスを操作します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md index 5a95f5c54..e944e093f 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md @@ -6,4 +6,3 @@ lang: ja --- # Mari プロジェクト マネージャ - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md index 20b940810..c1a845e17 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md @@ -12,8 +12,8 @@ lang: ja ![スクリーンショット](../images/apps/multi-about-menu.png) ## すべてのアプリをリロードする -このアプリには、環境全体をリロードする便利なボタンがあります。これは、開発中に一部のコードを変更する場合に便利です。Maya や Nuke を再起動せず、リロード ボタンをクリックするだけです。 +このアプリには、環境全体をリロードする便利なボタンがあります。これは、開発中に一部のコードを変更する場合に便利です。Maya や Nuke を再起動せず、リロード ボタンをクリックするだけです。 リロード機能とは別に、このアプリは、現在の作業領域と現在ロードされているすべてのアプリの詳細情報を表示します。 @@ -31,9 +31,8 @@ lang: ja 現在実行中のすべてのアプリおよびそのバージョンと説明を表示します。アプリをダブル クリックすると、そのアプリのマニュアル ページが開きます。 - ## 現在の環境 ![スクリーンショット](../images/apps/multi-about-about3.png) -現在ロードされている環境ファイルとエンジンを表示します。これはデバッグの際に便利です。 \ No newline at end of file +現在ロードされている環境ファイルとエンジンを表示します。これはデバッグの際に便利です。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md index c1598ab5b..cb7bd08dd 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md @@ -128,7 +128,6 @@ for item in breakdown_items: path = item["template"].apply_fields(item["fields"]) ``` - ### 項目の最新バージョンを計算する ``` @@ -139,7 +138,6 @@ highest_version = app_object.compute_highest_version(template, fields) これにより、ディスクをスキャンして最新バージョンを判断します。このメソッドはディスク上の最新バージョン番号を返します。詳細については、次の使用例を参照してください。 - ### シーン項目を更新する ``` @@ -150,9 +148,6 @@ app_object.update_item(node_type, node_name, template, fields) これは、Breakdown の UI で更新を実行する場合に似ています。実際の更新の呼び出しは、DCC 固有のロジックを処理するフックにディスパッチされます。詳細については、次の使用例を参照してください。 - - - ### Breakdown の API の例 次の例では、シーンの内訳を取得し、最新バージョンを使用していないすべての項目を更新する方法について説明します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md index d53e7c209..06f8402e2 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md @@ -19,16 +19,16 @@ lang: ja 現在サポートされているアプリケーションとエンジンは次のとおりです。 -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame +- 3DSMax +- Hiero +- Maya +- MotionBuilder +- Nuke +- Photoshop +- Mari +- Houdini +- Softimage +- Flame ### 起動時にコマンド ライン引数を使用する @@ -43,15 +43,16 @@ launch_nuke: extra: {} hook_app_launch: default hook_before_app_launch: default - linux_args: '--nukex' - linux_path: '@nuke_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.15} - mac_args: '--nukex' - mac_path: '@nuke_mac' + linux_args: "--nukex" + linux_path: "@nuke_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.2.15 } + mac_args: "--nukex" + mac_path: "@nuke_mac" menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' + windows_args: "--nukex" + windows_path: "@nuke_windows" ``` + ---FOLD--- ### 環境変数を設定して起動時に動作を自動化する @@ -66,7 +67,7 @@ launch_nuke: ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # Example to show how to set env vars on Maya launch @@ -79,6 +80,7 @@ def execute(self, **kwargs): # with $PYTHONPATH if already defined in your pipeline os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" ``` + ---FOLD--- 「before_app_launch」を使用すると、{% include product %} の更新など、他の動作を自動化することもできます。たとえば、起動アプリが実行されるたびに(タスクからの起動のみ)タスク ステータスが更新されるように起動アプリを設定できます。次の例では「in progress」に更新するよう設定しています。 @@ -89,7 +91,7 @@ def execute(self, **kwargs): ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # If there is a Task in the context, set its status to 'ip' @@ -101,6 +103,7 @@ def execute(self, **kwargs): } self.parent.shotgun.update("Task", task_id, data) ``` + ---FOLD--- ご想像のとおり、多くの選択肢があります。起動アプリの目的は、パイプラインのニーズに合わせた柔軟性を提供することです。 @@ -166,7 +169,7 @@ Photoshop が起動すると、次のプロセスが実行されます。 #### 追加の設定 -このアプリを使用して Photoshop を起動する場合、追加の__セクションで 4 つの設定値を指定する必要があります。次に、システムとインストールの場所に合わせた調整が必要な設定および適切な既定値を示します。 +このアプリを使用して Photoshop を起動する場合、追加の\_\_セクションで 4 つの設定値を指定する必要があります。次に、システムとインストールの場所に合わせた調整が必要な設定および適切な既定値を示します。 ```yaml mac_python_path: "/usr/bin/python" diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md index 29b5644e1..5a93a18d2 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md @@ -198,15 +198,17 @@ action_mappings: 次のメソッドがアプリ インスタンスで利用可能です。 ### open_publish() + ユーザがパブリッシュを選択できる[ファイルを開く](Open File)スタイルのバージョンのローダーを表示します。選択したパブリッシュが返されます。アプリ用に設定された通常のアクションは、このモードでは許可されていません。 app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) **パラメータと戻り値** -* `str`**title**: open publish ダイアログで表示するタイトルです。 -* `str` **action**: [開く] (Open)ボタンで使用するアクションの名前です。 -* `list` **publish_types**: パブリッシュの利用可能なリストのフィルタリングに使用するパブリッシュ タイプのリストです。これが空または None の場合は、すべてのパブリッシュが表示されます。 -* **戻り値:** ユーザによって選択された {% include product %} エンティティ ディクショナリのリストです。 + +- `str`**title**: open publish ダイアログで表示するタイトルです。 +- `str` **action**: [開く] (Open)ボタンで使用するアクションの名前です。 +- `list` **publish_types**: パブリッシュの利用可能なリストのフィルタリングに使用するパブリッシュ タイプのリストです。これが空または None の場合は、すべてのパブリッシュが表示されます。 +- **戻り値:** ユーザによって選択された {% include product %} エンティティ ディクショナリのリストです。 **例** diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md index 48dff8df2..4aaf203a0 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md @@ -45,16 +45,16 @@ Python コンソールには 1 つまたは複数のタブが表示され、そ ### 出力 -* **[クリア] (Clear)** - 出力ブラウザの内容をクリアします。 -* **[エコー] (Echo)** - 実行されたコマンドを出力ブラウザにエコーするかどうかを切り替えます。 +- **[クリア] (Clear)** - 出力ブラウザの内容をクリアします。 +- **[エコー] (Echo)** - 実行されたコマンドを出力ブラウザにエコーするかどうかを切り替えます。 ### エディタ -* **[実行] (Execute)** - エディタの内容を実行します。 -* **[保存] (Save)** - エディタの現在の内容をファイルに保存します。 -* **[開く] (Open)** - エディタでファイルを開きます。 -* **[クリア] (Clear)** - エディタの内容をクリアします。 -* **[行番号] (Lines)** - 現在のタブの行番号を切り替えます。 +- **[実行] (Execute)** - エディタの内容を実行します。 +- **[保存] (Save)** - エディタの現在の内容をファイルに保存します。 +- **[開く] (Open)** - エディタでファイルを開きます。 +- **[クリア] (Clear)** - エディタの内容をクリアします。 +- **[行番号] (Lines)** - 現在のタブの行番号を切り替えます。 ## グローバル @@ -62,10 +62,10 @@ Python コンソールには 1 つまたは複数のタブが表示され、そ 一部の {% include product %}/Toolkit グローバル変数は、[シェルの {% include product %} エンジン](https://support.shotgunsoftware.com/hc/ja/articles/219039898)で利用可能なグローバル変数と同様、コンソールにあらかじめ定義されています。 -* Tk API ハンドルは `tk` 変数を介して利用できます -* {% include product %} API ハンドルは `shotgun` 変数を介して利用できます -* 現在のコンテキストは `context` 変数に格納されます -* シェル エンジンは `engine` 変数を介してアクセスできます +- Tk API ハンドルは `tk` 変数を介して利用できます +- {% include product %} API ハンドルは `shotgun` 変数を介して利用できます +- 現在のコンテキストは `context` 変数に格納されます +- シェル エンジンは `engine` 変数を介してアクセスできます ## 外部ソース @@ -75,13 +75,13 @@ Python コンソールには 1 つまたは複数のタブが表示され、そ ## ホットキー -* `Ctrl + Enter` で選択内容を実行 -* `Ctrl + T` を押して新しいタブを作成 -* `Ctrl + Shift + [` または `Ctrl + Shift + ]` でタブ間を移動 -* `Ctrl + Wheel` によって入力/出力フォントのサイズを調整 +- `Ctrl + Enter` で選択内容を実行 +- `Ctrl + T` を押して新しいタブを作成 +- `Ctrl + Shift + [` または `Ctrl + Shift + ]` でタブ間を移動 +- `Ctrl + Wheel` によって入力/出力フォントのサイズを調整 **注:** これらのホットキーはすべての DCC で使用できるわけではありません。 ## その他の注意事項 -* 一部の古いバージョンの DCC では、セッションを閉じるときに Python コンソールを開いたままにしておくとクラッシュする可能性があります。これは一部の古いバージョンの PySide のバグの可能性があります。新しいバージョンの PySide にバンドルされている最新バージョンの DCC は終了時にクラッシュしないようです。最新の DCC リリースでこの問題が発生する場合は、[サポート リクエストを送信](https://support.shotgunsoftware.com/hc/ja/requests/new)してください。調査にご協力をお願いいたします。 \ No newline at end of file +- 一部の古いバージョンの DCC では、セッションを閉じるときに Python コンソールを開いたままにしておくとクラッシュする可能性があります。これは一部の古いバージョンの PySide のバグの可能性があります。新しいバージョンの PySide にバンドルされている最新バージョンの DCC は終了時にクラッシュしないようです。最新の DCC リリースでこの問題が発生する場合は、[サポート リクエストを送信](https://support.shotgunsoftware.com/hc/ja/requests/new)してください。調査にご協力をお願いいたします。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md index 45a1531b7..7ef7aec45 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md @@ -47,16 +47,16 @@ if review_submission_app: `render_and_submit_version` に渡す必要のある引数は次のとおりです。 -* `template`: パブリッシュするファイルが格納される場所を定義するテンプレート -* `fields`: テンプレートの入力に使用されるフィールド -* `first_frame`: 処理するイメージ シーケンスの最初のフレーム -* `last_frame`: 処理するイメージ シーケンスの最後のフレーム -* `sg_publishes`: バージョンのリンク先の {% include product %} パブリッシュ ファイル オブジェクトのリスト -* `sg_task`: バージョンのリンク先の {% include product %} タスク リンク ディクショナリ -* `comment`: バージョンの説明に追加するテキスト。 -* `thumbnail_path`: ムービーが {% include product %} にアップロードされていない場合にバージョンで使用するサムネイルのパス(設定ファイルで指定) -* `progress_cb`: 進行状況を一緒に報告するコールバック。`callback(percent, message)` のような形式になります。 -* `color_space`: 入力フレームのカラースペース。Nuke では、書き込みノードに使用するカラースペース ノブの列挙値のいずれかになります。 +- `template`: パブリッシュするファイルが格納される場所を定義するテンプレート +- `fields`: テンプレートの入力に使用されるフィールド +- `first_frame`: 処理するイメージ シーケンスの最初のフレーム +- `last_frame`: 処理するイメージ シーケンスの最後のフレーム +- `sg_publishes`: バージョンのリンク先の {% include product %} パブリッシュ ファイル オブジェクトのリスト +- `sg_task`: バージョンのリンク先の {% include product %} タスク リンク ディクショナリ +- `comment`: バージョンの説明に追加するテキスト。 +- `thumbnail_path`: ムービーが {% include product %} にアップロードされていない場合にバージョンで使用するサムネイルのパス(設定ファイルで指定) +- `progress_cb`: 進行状況を一緒に報告するコールバック。`callback(percent, message)` のような形式になります。 +- `color_space`: 入力フレームのカラースペース。Nuke では、書き込みノードに使用するカラースペース ノブの列挙値のいずれかになります。 ### メニュー項目として使用する場合 @@ -65,17 +65,18 @@ if review_submission_app: また、現在のビューポートのクイック スナップショットを作成して、バージョンのドラフトとして {% include product %} Create に送信します。これにより、{% include product %} Create 内で注釈、文字、比較のメモを追加できるため、詳しいレビューを提出できます。 この機能をコンテキストに追加するには、次の操作を行う必要があります。 -* `display_name` フィールドがメニュー項目に含まれるように設定します。 -* `render_media_hook` フィールドを、DCC でのメディアのレンダリング方法を指示するフックに設定します(tk-photoshopcc と tk-maya で既定の実装は異なります)。 -* `submitter_hook` フィールドを `{self}/submitter_create.py` に設定します。 + +- `display_name` フィールドがメニュー項目に含まれるように設定します。 +- `render_media_hook` フィールドを、DCC でのメディアのレンダリング方法を指示するフックに設定します(tk-photoshopcc と tk-maya で既定の実装は異なります)。 +- `submitter_hook` フィールドを `{self}/submitter_create.py` に設定します。 例: ```yaml tk-multi-reviewsubmission: display_name: Send for review - render_media_hook: '{self}/render_media.py:{self}/{engine_name}/render_media.py' - submitter_hook: '{self}/submitter_create.py' + render_media_hook: "{self}/render_media.py:{self}/{engine_name}/render_media.py" + submitter_hook: "{self}/submitter_create.py" location: type: app_store name: tk-multi-reviewsubmission diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md index 47fe93f2e..06e14062b 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md @@ -35,6 +35,7 @@ tk-multi-setframerange_handles: sg_out_frame_field: sg_handle_out location: "@apps.tk-multi-setframerange.location" ``` + {% include product %} メニューには、別個のオプションとして表示されます。 ![複数インスタンス](../images/apps/multi-setframerange-multiple_instances.png) @@ -45,4 +46,4 @@ tk-multi-setframerange_handles: 現在のシーン フレーム範囲の取得、またはフレーム範囲の設定に使用するソフトウェア固有のロジックは、フレーム操作フックで処理されます。新しいエンジンのサポートを追加する場合、または動作の実装方法を変更する場合は、`hook_frame_operation` アプリ プロパティを設定して取得と設定の独自のロジックを実装すると、フレーム操作フックを引き継ぐことができます。 -注: この機能は、バージョン `v0.4.0` のアプリで新しく導入されました。 \ No newline at end of file +注: この機能は、バージョン `v0.4.0` のアプリで新しく導入されました。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md index df37a48a8..ec7b5976c 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md @@ -29,7 +29,6 @@ lang: ja - 一部の値が設定されていない場合はフォールバックを定義することができます。{% include product %} のバージョンについては、プロデューサがアーティストの代わりにバージョンを送信するというワークフローをサポートするため、`created_by` フィールドが `artist` フィールドよりも優先されます。この場合、バージョンはプロデューサによって作成されますが、`artist` フィールドはアーティストに設定されます。ただし、いつもそういうわけではありません。アーティストが自分の作業を送信するパイプラインでは、アーティスト欄は空欄になります。バージョンを表示する場合、最初に `artist` フィールドを確認できるようにしておくと役立ちます。今回このフィールドは設定されていないため、`created_by` フィールドにフォールバックします。このようにするには、`Created By: {artist|created_by}` のように構文 `{field1|field2}` を使用します。`{[Created By: ]artist|created_by}` のようにオプション フィールドを組み合わせることができます。 - このフックには次のメソッドが含まれます。 **リストに表示される項目を制御する** @@ -67,21 +66,21 @@ lang: ja - 任意のタスクに自分に割り当てることができるアクション - Maya リファレンスとして Maya に {% include product %} パブリッシュをロードするアクション -アクションの実際のペイロードはアクション フック**で定義されます。アクションのロジックを定義したら、アプリ設定の {% include product %} オブジェクトにこのアクションをマップすることができます。次に、このアクション マッピングの例を示します。 +アクションの実際のペイロードはアクション フック\*\*で定義されます。アクションのロジックを定義したら、アプリ設定の {% include product %} オブジェクトにこのアクションをマップすることができます。次に、このアクション マッピングの例を示します。 ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 上記の例では、`reference`、`import`、`texture_node`、`assign_task`、および `play_in_rv` といったアクションを使用します。次に、さまざまな {% include product %} のオブジェクトと条件にこのアクションをマップします。たとえば `import` アクションは、タイプが「Maya Scene」であるすべてのパブリッシュに表示されるよう要求しています。 @@ -95,11 +94,11 @@ action_mappings: パネルは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これは既定の構成設定で次のように表示されます。 ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` キーワード `{self}` は、フックのアプリの `hooks` フォルダを確認するように Toolkit に指示します。 - このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 +このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。 @@ -183,12 +182,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md index 93ea153ca..168418db7 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md @@ -65,12 +65,12 @@ lang: ja ```yaml maya_extension: - type: str - choices: - ma: Maya Ascii (.ma) - mb: Maya Binary (.mb) - default: ma - alias: extension + type: str + choices: + ma: Maya Ascii (.ma) + mb: Maya Binary (.mb) + default: ma + alias: extension ``` `maya_extension` はトークン名です。`choices` は、ドロップダウンに表示されるファイル タイプのディクショナリです。キー(`ma` と `mb`)は、このテンプレート トークンに指定できる有効な値です。値(`Maya Ascii (.ma)` と `Maya Binary (.mb)`)は、Toolkit アプリケーションで使用できる UI に適した説明です。`alias` は作業ファイル アプリケーションで必要なヒントです。このトークンが拡張子であり、ドロップダウン ウィジェットに表示されるということがアプリケーションに通知されます。 @@ -79,8 +79,8 @@ maya_extension: ```yaml maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' + definition: "@shot_root/work/maya/{name}.v{version}.{maya_extension}" + root_name: "primary" ``` ## [コンテキスト変更](Context Change)ダイアログ @@ -100,18 +100,18 @@ maya_shot_work: 次の例では、アセットおよびショットのタスクをそれぞれ表示する 2 つのタブを定義します。 ```yaml - - caption: Assets Tasks - entity_type: Task - step_filter_on: Asset - filters: +- caption: Assets Tasks + entity_type: Task + step_filter_on: Asset + filters: - [entity, type_is, Asset] - hierarchy: [entity.Asset.sg_asset_type, entity, step, content] - - caption: Shots Tasks - entity_type: Task - step_filter_on: Shot - filters: + hierarchy: [entity.Asset.sg_asset_type, entity, step, content] +- caption: Shots Tasks + entity_type: Task + step_filter_on: Shot + filters: - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] + hierarchy: [entity.Shot.sg_sequence, entity, step, content] ``` ![ステップのフィルタ](../images/apps/multi-workfiles2-step_filter.png) @@ -119,13 +119,14 @@ maya_shot_work: ## 遅延クエリー エンティティ ツリーを次のように 2 つのステップ クエリーに分割して構築すると、パフォーマンスを向上させることができます。 + - 最初のクエリーは、{% include product %} からレコードを取得し、ツリーの上部に入力するために使用します。 - 2 番目のクエリーは、ツリーを展開するときに子を取得するために使用します。 次の設定では、アプリを起動するときに {% include product %} からアセットおよびショットを取得します。特定のアセットまたはショットを選択した場合、またはツリー ビューで展開した場合は、このアセットまたはショットにリンクされたタスクのみが取得されます。 ```yaml - entities: +entities: - caption: Assets entity_type: Asset hierarchy: [sg_asset_type, code] diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md index cfc33840c..f5659af76 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md @@ -33,4 +33,3 @@ Quickreview アプリを使用すると、Nuke でレンダリングしたファ ## カスタマイズ レビュー提出のほとんどの要素は、フックを使用して調整できます。詳細な説明については、[こちら](http://developer.shotgridsoftware.com/tk-nuke-quickreview)を参照してください。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md index 74e01f139..8c6731e32 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md @@ -15,7 +15,7 @@ Nuke Write Node アプリは、イメージのレンダリング先を簡単に ![Write Node](../images/apps/nuke-writenode-write_node_creation.png) -手動でパスを入力するのではなく、出力名を指定するだけで、Toolkit が残りのパスを自動的に計算してくれます。計算されたパスが UI に表示されます。*Show in File System* ボタンをクリックすると、ディスク上の該当する場所が開きます。レンダリングの書き込み先は Toolkit の設定に応じて異なります。 +手動でパスを入力するのではなく、出力名を指定するだけで、Toolkit が残りのパスを自動的に計算してくれます。計算されたパスが UI に表示されます。_Show in File System_ ボタンをクリックすると、ディスク上の該当する場所が開きます。レンダリングの書き込み先は Toolkit の設定に応じて異なります。 レンダリングはバージョンで管理され、バージョン番号は、Multi Publish を使用してパブリッシュする場合に自動的に増分される現在の Nuke スクリプト バージョンに常に準拠します。 @@ -72,7 +72,7 @@ tk-nuke-writenode: ![新規追加](../images/apps/nuke-writenode-write_node_add_new.png) -__注:__ 新しいテンプレート(nuke_shot_render_mono_tif など)はプロジェクト設定(`/config/core/templates.yml`)内の `templates.yml` ファイルに必ず追加してください。 +**注:** 新しいテンプレート(nuke_shot_render_mono_tif など)はプロジェクト設定(`/config/core/templates.yml`)内の `templates.yml` ファイルに必ず追加してください。 別の例として、圧縮を 0.5、サブサンプリングを 4:2:2 に設定した JPEG に出力する {% include product %} Write Node を追加する方法を以下に示します。また、このプロファイルは JPEG 品質ノブをギズモのユーザ インタフェースにまでプロモートする「promote_write_knobs」オプションも使用します。これにより、プロファイルの品質に既定の値が設定され、この設定自体を変更するためのスライダもユーザに表示されます。 @@ -85,7 +85,7 @@ tk-nuke-writenode: render_template: nuke_shot_render_jpeg proxy_publish_template: null proxy_render_template: null - settings: {_jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2"} + settings: { _jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2" } tank_type: Rendered Image tile_color: [] promote_write_knobs: [_jpeg_quality] @@ -265,7 +265,7 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* **戻り値: **`list` - シーン内で見つかった Toolkit 書き込みノードのリスト +- **戻り値: **`list` - シーン内で見つかった Toolkit 書き込みノードのリスト **例** @@ -284,10 +284,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - ノードの名前 +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - ノードの名前 **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -304,10 +305,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - 設定で定義されたこの書き込みノードのプロファイル名 +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - 設定で定義されたこの書き込みノードのプロファイル名 **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -324,10 +326,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードのレンダリング パス +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - このノードのレンダリング パス **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -344,10 +347,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `list` - この書き込みノードでレンダリングされるイメージ ファイルのリスト +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `list` - この書き込みノードでレンダリングされるイメージ ファイルのリスト **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -364,10 +368,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているレンダリング テンプレート +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `template` - このノードが使用するように設定されているレンダリング テンプレート **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -384,10 +389,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているパブリッシュ テンプレート +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `template` - このノードが使用するように設定されているパブリッシュ テンプレート **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -404,10 +410,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードのプロキシ レンダリング パス +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - このノードのプロキシ レンダリング パス **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -424,10 +431,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `list` - この書き込みノードでレンダリングされるプロキシ イメージ ファイルのリスト +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `list` - この書き込みノードでレンダリングされるプロキシ イメージ ファイルのリスト **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -446,10 +454,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているプロキシ レンダリング テンプレート +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `template` - このノードが使用するように設定されているプロキシ レンダリング テンプレート **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -468,10 +477,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているプロキシ パブリッシュ テンプレート +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `template` - このノードが使用するように設定されているプロキシ パブリッシュ テンプレート **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -488,10 +498,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードが使用するように設定されているパブリッシュ ファイル タイプ +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - このノードが使用するように設定されているパブリッシュ ファイル タイプ **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -508,10 +519,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - ディスク上にあるレンダリングされたサムネイル イメージのパス +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `string` - ディスク上にあるレンダリングされたサムネイル イメージのパス **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -528,10 +540,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `None` - 値は何も返されません。 +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `None` - 値は何も返されません。 **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -548,10 +561,11 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 **パラメータと戻り値** -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `bool` - レンダリング パスがロックされている場合は True で、それ以外の場合は False です +- `node` **ノード**: クエリーする書き込みノード +- **戻り値:** `bool` - レンダリング パスがロックされている場合は True で、それ以外の場合は False です **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -562,11 +576,12 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 ### convert_to_write_nodes() -現在のスクリプトで見つかったすべての {% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換します。追加の Toolkit 情報は「tk_*」という名前のユーザ ノブに保存されます。 +現在のスクリプトで見つかったすべての {% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換します。追加の Toolkit 情報は「tk\_\*」という名前のユーザ ノブに保存されます。 `None` convert_to_write_nodes() **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -581,6 +596,7 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 `None` convert_from_write_nodes() **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -595,6 +611,7 @@ Deadline は、レンダリング時に Nuke スクリプトを一時的な場 `None` process_placeholder_nodes() **例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md index 994a24dc5..e1ee2a11b 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md @@ -12,10 +12,9 @@ lang: ja このアプリは、Sgtk Core API のファイル システム作成 API メソッドを {% include product %} に接続します。これにより、一連のショットまたはアセットをクリックして、Create Folders アクションをクリックするだけで簡単にフォルダを作成できます。 ## 仕組み + 1 つまたは複数のタスク、ショット、または(設定に応じて)他のエンティティを選択します。ここでアクション メニューから作成フォルダを選択します。処理が完了したら、作成したフォルダの数が報告されます。 ![{% include product %} のフォルダの作成 1](../images/apps/shotgun-folders-create_folders_1.png) ![{% include product %} のフォルダの作成 2](../images/apps/shotgun-folders-create_folders_2.png) - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md index 2ff0245a4..88a649070 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md @@ -10,10 +10,9 @@ lang: ja Launch Folder アプリは {% include product %} ユーティリティです。{% include product %} からファイル システムにジャンプできるようにします。 ## 仕組み + Launch Folder アプリを使用すると、{% include product %} からファイル システムにジャンプできます。このアプリは、ショット、アセット、シーケンスなどの {% include product %} エンティティに登録できます。有効にすると、Action メニューに表示されます。 ![ファイル システムで起動ファイルを表示](../images/apps/shotgun-launchfoldershow_in_fs.png) 1 つまたは複数のエントリを {% include product %} で選択できます。メニュー アクションを選択すると、標準のファイル ブラウザ(Windows のエクスプローラーや Mac の Finder など)が起動されます。 - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md index de8dfda13..7b35c2941 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md @@ -11,4 +11,4 @@ lang: ja ![作業ファイル システム](../images/apps/shotgun-launchpublish-open_assoc.png) -このアプリにより、異なるファイルに別々のアプリ起動シーケンスを簡単に設定できます。このすべての操作はフック内から実行します。また、ビューア(RV など)にイメージ シーケンスを割り当てることもできます。このフックで認識されないファイルは、OS レベルのアプリに割り当てられます。 \ No newline at end of file +このアプリにより、異なるファイルに別々のアプリ起動シーケンスを簡単に設定できます。このすべての操作はフック内から実行します。また、ビューア(RV など)にイメージ シーケンスを割り当てることもできます。このフックで認識されないファイルは、OS レベルのアプリに割り当てられます。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md b/docs/ja/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md index cada27215..0d496a384 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md @@ -13,8 +13,6 @@ Toolkit パイプラインの中心にあるのは環境設定です。Toolkit {% include info title="注" content="このドキュメントは環境設定ファイルのリファレンスとして使用しますが、『[パイプライン設定の編集に関する Toolkit の基本ガイド](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)』には、構成設定を編集するステップバイステップの手順が例として記載されています。"%} - - ## 環境について {% include product %} Toolkit プラットフォームは、一般的に使用されるコンテンツ作成ソフトウェア用に、完全にカスタマイズ可能な統合セットを提供するため、これを使用してスタジオのパイプラインを構築できます。プロジェクトの構成において、統合されているソフトウェア パッケージはどれか、そのそれぞれで利用可能な Toolkit アプリはどれかを指定し、さらに各アプリのオプションを指定することにより、スタジオのニーズに合わせてアーティストのワークフローを構築できます。 @@ -56,7 +54,7 @@ shot_step.yml ## Toolkit が現在の環境を判断する仕組み -Toolkitは [pick_environment](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py) というコア フックを使用し、現在の[コンテキスト](https://developer.shotgridsoftware.com/tk-core/core.html#context)に基づいて特定の時点で使用する環境ファイルを決定します。`pick_environment` フックの戻り値は環境設定ファイルに対応しています。たとえば、`pick_environment` が `shot_step` を返した場合、Toolkit は `config/env/shot_step.yml` を使用して Toolkit 環境を設定します。 +Toolkit は [pick_environment](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py) というコア フックを使用し、現在の[コンテキスト](https://developer.shotgridsoftware.com/tk-core/core.html#context)に基づいて特定の時点で使用する環境ファイルを決定します。`pick_environment` フックの戻り値は環境設定ファイルに対応しています。たとえば、`pick_environment` が `shot_step` を返した場合、Toolkit は `config/env/shot_step.yml` を使用して Toolkit 環境を設定します。 ## カスタム環境 @@ -73,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -93,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### エンジン ブロック @@ -106,16 +104,15 @@ engines: `location` はすべてのバンドルに必要な特別な設定です。`apps` 設定はエンジンに定義されたすべてのアプリのリストで、それぞれ独自の設定があります。この場合、エンジンに対して定義されるアプリは 1 つのみです(`tk-multi-workfiles2`)。 - ### ロケーション ディスクリプタ すべての Toolkit バンドルには `location` 設定があり、これをバンドルの*「ディスクリプタ」*と呼びます。ディスクリプタは、特定のバンドルの入手元、およびそのタイプに応じて直接アクセスするかローカルにキャッシュするかを Toolkit に指示します。Toolkit バンドルは、{% include product %} App Store、git リポジトリ、ディスク上のパス、{% include product %} サイトにアップロードされた zip ファイルなどから入手できます。これらには、それぞれ対応するディスクリプタ タイプがあり、そのタイプに固有の設定があります。以下に、上記の例の `tk-maya` エンジンのディスクリプタをもう一度示します。 ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` これは、タイプが `app_store` のディスクリプタです。指定したバンドルを {% include product %} App Store から入手するように Toolkit に指示します。タイプ `app_store` のディスクリプタの設定は `name` と `version` です。 @@ -123,9 +120,9 @@ engines: 対照的に、スタジオでカスタム バンドルをアクティブに開発している場合、たとえば特定のワークフロー用の Toolkit アプリを作成している場合は、ディスク上のパスから直接入手することができます。この場合、以下に示すようにタイプ `dev` のディスクリプタを使用します。 ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` ディスクリプタは `app_store` ディスクリプタとは設定が異なります。他の設定を使用することもできますが、ディスク上のアプリの場所を参照する `path` 設定を使用して簡単にセットアップすることができます。 @@ -173,16 +170,16 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ここでは、いくつかの重要な注意事項があります。 -* 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 -* ファイルが長くなり始めていますが、構成設定はまだ追加していません。 -* 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 +- 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 +- ファイルが長くなり始めていますが、構成設定はまだ追加していません。 +- 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 最後の 2 つの問題を軽減するために、Toolkit 設定は*インクルード*をサポートします。 @@ -192,8 +189,8 @@ engines: インクルードは次の 2 つの部分で構成されます。 -* `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 -* 構成設定内の参照。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 +- `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 +- 構成設定内の参照。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 上記の例を具体化するために、すべてのエンジンのロケーション ディスクリプタを保持する単一のファイルを作成しているとします。そのファイルを `includes` サブフォルダに置き、`engine_locations.yml` という名前を付けます。 @@ -211,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` このファイルはすべてのエンジンの場所に対する単一のソースとして機能し、すべての環境設定から参照することができます。このインクルード ファイルを使用した場合、この例は次のようになります。 @@ -271,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -295,7 +289,6 @@ engines: {% include info title="注" content="既定の設定では、この例では示されていない 2 番目のネスト レベルを使用しています。単なるディスクリプタ以上の設定を持つすべてのアプリまたはエンジンは、`includes/settings` に設定ファイルがあります(例: `includes/settings/tk-maya.yml`、`includes/settings/tk-multi-workfiles2.yml`)。エンジン設定ファイルには、アプリ設定ファイルからのアプリ設定が含まれ、環境設定ファイルにはエンジン設定ファイルからの設定が含まれています。既定の設定の構造の詳細については、[README ファイル](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)を参照してください。構成設定の変更に関する詳細な手順については、『[構成設定の編集に関する Toolkit の基本ガイド](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)』を参照してください。"%} - ## スパース構成 すべての Toolkit バンドルには、使用可能な構成設定のセットがあり、それぞれの設定に既定値があります。Toolkit は*「スパース構成」*を許可します: 構成設定が環境設定ファイル(またはそこに含まれるファイル)で明示的に指定されていない場合、バンドルの既定値が使用されます。 @@ -308,8 +301,8 @@ engines: スパース構成では、単に設定ファイルを見ただけでは、どの構成設定がアプリに使用できるかをすぐに判断することはできません。アプリで利用可能な構成設定を確認する場合、2 つの選択肢があります。 -* **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)を参照することができます。[アプリとエンジンのページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 -* **マニフェスト:** すべての Toolkit バンドルは、そのルート ディレクトリに `info.yml` というファイルを含んでいます。このファイルをバンドルの*「マニフェスト」*と呼び、バンドルで利用可能なすべての設定を、それぞれの説明と既定値と共に定義します。マニフェストは、バンドルの独自のキャッシュ(パイプライン設定内の `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` など)、または Github ([ここでは Workfiles の場合の例を示します](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))にあります。 +- **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)を参照することができます。[アプリとエンジンのページ](https://support.shotgunsoftware.com/hc/ja/articles/219033088)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 +- **マニフェスト:** すべての Toolkit バンドルは、そのルート ディレクトリに `info.yml` というファイルを含んでいます。このファイルをバンドルの*「マニフェスト」*と呼び、バンドルで利用可能なすべての設定を、それぞれの説明と既定値と共に定義します。マニフェストは、バンドルの独自のキャッシュ(パイプライン設定内の `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml` など)、または Github ([ここでは Workfiles の場合の例を示します](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))にあります。 ## 構成設定を修正する @@ -339,13 +332,12 @@ engines: `tk-multi-workfiles2` の設定がインクルード ファイルからのものである場合は、そのファイルでこの変更を行います。 - ## その他の参考情報 -* [Toolkit の基本ガイド: パイプライン設定を編集する](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) -* [Toolkit の基本ガイド: アプリを追加する](../../guides/pipeline-integrations/getting-started/installing_app.md) -* [アニメーション パイプラインのチュートリアル](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [ディスクリプタのリファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [ウェビナー: Toolkit の管理](https://youtu.be/7qZfy7KXXX0) -* [ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference) -* [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [Toolkit の基本ガイド: パイプライン設定を編集する](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) +- [Toolkit の基本ガイド: アプリを追加する](../../guides/pipeline-integrations/getting-started/installing_app.md) +- [アニメーション パイプラインのチュートリアル](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [ディスクリプタのリファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [ウェビナー: Toolkit の管理](https://youtu.be/7qZfy7KXXX0) +- [ファイル システム設定リファレンス](https://support.shotgunsoftware.com/hc/ja/articles/219039868-Integrations-File-System-Reference) +- [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md index 5dea967d1..597cdf85e 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md @@ -121,10 +121,10 @@ After Effects が起動するたびに、エンジン ブートストラップ ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 設定の値は、環境設定にインストールされたアプリの 1 つで提供される、登録済みコマンドを識別するディクショナリのリストです。`app_instance` キーは特定のインストール済みアプリを識別し、`name` キーはこのアプリによって登録されたコマンドの表示名に一致します。上記の例では、4 つのお気に入りコマンドが表示されています。`tk-multi-workfiles2` アプリのファイルの表示と保存のダイアログと、標準の Toolkit のパブリッシュとスナップショットのダイアログです。これら 4 つのコマンドはお気に入りシェルフに表示されます。 @@ -142,7 +142,6 @@ shelf_favorites: 注: 追加の環境変数が Adobe のフレームワークに存在します。詳細については、[開発者用ドキュメント](https://developer.shotgridsoftware.com/tk-framework-adobe/)を参照してください。 - ## コンテキスト フィールド表示フック エンジンには、パネルの**コンテキスト ヘッダ** セクションに表示されるフィールドを制御するフックがあります。フックには表示する内容をカスタマイズするためにオーバーライドできる 2 つのメソッドがあります。 @@ -164,5 +163,3 @@ shelf_favorites: ## After Effects の API After Effects の API に関する詳細については、[開発者用ドキュメント](https://developer.shotgridsoftware.com/tk-aftereffects)を参照してください。 - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-alias.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-alias.md index 10ef62c53..c32e80f8d 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-alias.md @@ -19,7 +19,7 @@ lang: ja {% include product %} Engine for Alias が起動すると、このエンジンの設定で定義された場所を Alias プロジェクトが参照するように設定されます。つまり、新しいファイルを開くと、このプロジェクトも変更される場合があります。ファイルに基づく Alias プロジェクトの設定方法に関連する詳細設定は、テンプレート システムを使用して設定ファイルで指定できます。 -*** +--- # tk-alias を使用する @@ -29,7 +29,6 @@ Alias を開くと、{% include product %} のメニュー(Alias エンジン) ![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunOtherApps.png) - ### ファイルの表示と保存 [マイ タスク](My Tasks)タブと[アセット] (Assets)タブを使用すると、割り当てられたすべてのタスクを表示して、アセットを参照できます。右側では、これらのタブを使用してすべてのファイル、作業ファイル、またはパブリッシュ ファイルを表示します。これらのファイルは、左側で選択されているものに関連付けられています。 @@ -38,21 +37,18 @@ Alias を開くと、{% include product %} のメニュー(Alias エンジン) ![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunFileSave.png) - ### スナップショット [スナップショット] (Snapshot)ダイアログを開き、現在のシーンの簡易バックアップを作成します。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunSnapshot.png) - ### パブリッシュ [パブリッシュ] (Publish)ダイアログを開き、ファイルを {% include product %} にパブリッシュします。パブリッシュ ファイルは、下流工程でアーティストが使用します。詳細については、「[Alias でパブリッシュする](https://github.com/shotgunsoftware/tk-alias/wiki/Publishing)」を参照してください。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunPublish.png) - ### ローダー Content Loader アプリを開いて、Alias にデータをロードできます。詳細については、「[Alias でロードする](https://github.com/shotgunsoftware/tk-alias/wiki/Loading)」を参照してください。 @@ -64,4 +60,3 @@ Content Loader アプリを開いて、Alias にデータをロードできま [詳細情報] (Breakdown)ダイアログが開き、シーン内の古い内容とともに、参照される(WREF 参照)コンテンツのリストが表示されます。1 つまたは複数のアイテムを選択し、[選択した内容を更新](Update Selected)をクリックして切り替え、最新バージョンのコンテンツを使用します。詳細については、「[Alias の Scene Breakdown](https://github.com/shotgunsoftware/tk-alias/wiki/Scene-Breakdown)」を参照してください。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunBreakdown.png) - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md index 0de9b7332..750d03d31 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md @@ -38,9 +38,8 @@ tk-desktop: location: ... location: ... run_at_startup: - - {app_instance: '', name: Apps} - - {app_instance: tk-multi-shotgunpanel, name: ''} + - { app_instance: "", name: Apps } + - { app_instance: tk-multi-shotgunpanel, name: "" } ``` `Apps` エントリは特別であり、既定の `Apps` タブが表示される場所(タブの順序)をコントロールすることに注意してください。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-flame.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-flame.md index 9702a49a6..33de036b2 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-flame.md @@ -9,7 +9,7 @@ lang: ja ## インストール -{% include product %} Engine for Flame は、Flame 2015 Extension 2 に追加されている新しい統合フックを使用します。エンジンを機能させるためには、このバージョンの Flame を使用する必要**があります。Flame 2015 Extension 2 の詳細(取得方法など)については、「[Flame サポート](https://knowledge.autodesk.com/ja/support/flame-products/troubleshooting/caas/sfdcarticles/sfdcarticles/JPN/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)」を参照してください。 +{% include product %} Engine for Flame は、Flame 2015 Extension 2 に追加されている新しい統合フックを使用します。エンジンを機能させるためには、このバージョンの Flame を使用する必要\*\*があります。Flame 2015 Extension 2 の詳細(取得方法など)については、「[Flame サポート](https://knowledge.autodesk.com/ja/support/flame-products/troubleshooting/caas/sfdcarticles/sfdcarticles/JPN/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)」を参照してください。 {% include product %} Engine for Flame の最も簡単な開始方法は、パイプライン設定例を使用して新しいテスト プロジェクトをセットアップすることです。それには、{% include product %} Desktop を起動して、新しいプロジェクトのプロジェクト セットアップを実行し、(既定の設定セクションで)既定の Flame 設定を選択します。 @@ -42,15 +42,14 @@ Flame を {% include product %} から初めて起動すると、Flame プロジ : Flame マシンにログインしたユーザと {% include product %} のユーザの関連付けを試行します。 `get_project_settings` -: Flame のメイン設定を指定し、フックで Flame プロジェクト XML ストリームを構築する場所です。次のパラメータを指定する必要**があります。 +: Flame のメイン設定を指定し、フックで Flame プロジェクト XML ストリームを構築する場所です。次のパラメータを指定する必要\*\*があります。 -* FrameWidth (例: `1280`) -* FrameHeight (例: `1080`) -* FrameDepth (`16-bit fp`、`12-bit`、`12-bit u`、`10-bit`、`8-bit`) -* FieldDominance (`PROGRESSIVE`、`FIELD_1`、`FIELD_2`) -* AspectRatio (`4:3`、`16:9`、または文字列として浮動小数点値) +- FrameWidth (例: `1280`) +- FrameHeight (例: `1080`) +- FrameDepth (`16-bit fp`、`12-bit`、`12-bit u`、`10-bit`、`8-bit`) +- FieldDominance (`PROGRESSIVE`、`FIELD_1`、`FIELD_2`) +- AspectRatio (`4:3`、`16:9`、または文字列として浮動小数点値) プロキシ設定を指定することもできます。詳細については、[Autodesk Wiretap SDK のマニュアル](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)を参照してください。 project_setup フックのコードベース全体を確認するには、[該当のエンジン向けの Github リポジトリ](https://github.com/shotgunsoftware/tk-flame/blob/master/hooks/project_startup.py)を参照してください。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-houdini.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-houdini.md index 38b361a1f..63c8bdc88 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-houdini.md @@ -11,7 +11,6 @@ lang: ja ![{% include product %} Engine for Houdini](../images/engines/houdini_engine.png) - # アプリ開発者向けの情報 ## サポート対象プラットフォーム @@ -47,9 +46,9 @@ tk-houdini: apps: # ... other app definitions tk-multi-workfiles: - # ... other app settings - sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets - # ... other app settings + # ... other app settings + sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets + # ... other app settings enable_sg_shelf: true enable_sg_menu: false # ... other engine settings @@ -94,21 +93,21 @@ houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/Ma ```yaml launch_houdini: - defer_keyword: '' + defer_keyword: "" engine: tk-houdini extra: {} - hook_app_launch: app_launch # <----- use a custom app_launch hook + hook_app_launch: app_launch # <----- use a custom app_launch hook hook_before_app_launch: default - icon: '{target_engine}/icon_256.png' - linux_args: '' - linux_path: '@houdini_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.6.6} - mac_args: '' - mac_path: '@houdini_mac' + icon: "{target_engine}/icon_256.png" + linux_args: "" + linux_path: "@houdini_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.6.6 } + mac_args: "" + mac_path: "@houdini_mac" menu_name: Launch Houdini versions: [] - windows_args: '' - windows_path: '@houdini_windows' + windows_args: "" + windows_path: "@houdini_windows" ``` その後は実行可能ファイルを直接起動するように起動ロジックを修正するだけです。たとえば、ディレクトリの古い動作(アプリケーション バンドル)を維持し、それ以外のコマンドを直接実行するとします。次に例を示します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md index d651c27d2..21e7a133a 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md @@ -24,7 +24,7 @@ Nuke に **{% include product %} ノード メニュー**が作成され、さ `favourite_directories` 設定を使用すると、現在の環境のテンプレート パスに基づいて独自のショートカットを追加できます。この設定は、リスト内の各項目が新しいお気に入りのディレクトリを表す、ディクショナリのリストを必要とします。次に、使用するフォーマットの例を示します(値として「""」と指定すると、アイコンを未指定のまま残すこともできます)。 ```yaml - favourite_directories: +favourite_directories: - display_name: "Shot Publish Path" template_directory: "shot_publish_area_nuke" icon: "icons/custom_publish_icon.png" @@ -35,13 +35,10 @@ Nuke に **{% include product %} ノード メニュー**が作成され、さ [{% include product %} の現在のプロジェクト](ShotGrid Current Project)というお気に入りが、定義済みの各ルートに自動的に追加されます。`project_favourite_name` 設定を使用して名前をカスタマイズするか、値を空の文字列 `''` に設定してお気に入りを無効にします。 - - -*** +--- _注: 現在、CentOS 6.5 上で実行される Nuke 8.0 に限り、バグによって Toolkit の実行時に Nuke がクラッシュしてしまいます。他のバージョンの CentOS には影響ありません。Foundry はこの問題を認識しています(バグ 43766)。この問題が発生した場合は、当社までお問い合わせください。Nuke の今後の更新で解決されるまで、問題の回避をお手伝いします。_ - ## アプリ開発者向けの情報 ### コンテキストのトラッキング @@ -56,7 +53,7 @@ _注: 現在、CentOS 6.5 上で実行される Nuke 8.0 に限り、バグに これでノード作成機能からギズモに簡単にアクセスできます。 -* `nuke.createNode("WriteTank")` +- `nuke.createNode("WriteTank")` {% include info title="警告" content="ギズモを使用すると便利ですが、ノードを作成してシーン内で保持する場合、一般的には適切な方法ではありません。その理由は、シーン内にギズモを配置するとすぐに、このシーンとギズモ コードの間に依存関係が生まれるためです。シーンのロードのたびに ShotGrid Toolkit をロードする必要があるだけでなく、コードを更新するときにシーン内で使用されている古いギズモが分割されないように慎重に管理する必要もあります。"%} @@ -109,26 +106,60 @@ except: Hiero にはいくつかの異なるメニューがあるため、Maya や Nuke などよりも、メニュー項目の配置先を設定するオプションがたくさんあります。{% include product %} Engine for Nuke の Hiero ワークフロー設定は次のようになります。 ```yaml - - tk-hiero: - location: {name: tk-nuke, type: app_store, version: v0.6.9} - debug_logging: false - - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - bin_context_menu: - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "Version up Current Scene...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot History...", requires_selection: true} - - {app_instance: tk-multi-publish, keep_in_menu: false, name: "Publish Project...", requires_selection: true} - - menu_favourites: - - {app_instance: tk-multi-workfiles, name: Shotgun File Manager...} +tk-hiero: + location: { name: tk-nuke, type: app_store, version: v0.6.9 } + debug_logging: false + + timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + bin_context_menu: + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "Version up Current Scene...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot History...", + requires_selection: true, + } + - { + app_instance: tk-multi-publish, + keep_in_menu: false, + name: "Publish Project...", + requires_selection: true, + } + + menu_favourites: + - { app_instance: tk-multi-workfiles, name: Shotgun File Manager... } ``` ほとんどのエンジンには `menu_favourites` オプションがあります。これは、{% include product %} のメイン メニューに登録する「ショートカット」を指定するリストです。これとは別に、Hiero 固有の設定には次の 3 つの特別なセクションがあります。 @@ -147,7 +178,6 @@ Hiero にはいくつかの異なるメニューがあるため、Maya や Nuke Hiero には現在のプロジェクトという概念がないため、アプリが Hiero 内でクリックされた内容を簡単に確認できるようにするため、たくさんの強力なツールが追加されています。{% include product %} Engine for Hiero には、次の 2 つのメソッドが追加されています。 - #### get_menu_selection() 最後にクリックしたメニューで選択された Hiero オブジェクトのリストを返します。 @@ -163,7 +193,7 @@ Hiero には現在のプロジェクトという概念がないため、アプ **パラメータと戻り値** -* **戻り値:** Hiero オブジェクトのリスト +- **戻り値:** Hiero オブジェクトのリスト **例** @@ -210,7 +240,12 @@ if project is None: ```yaml bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } ``` ここでは、アプリ自体の各エンジンで保存やロードなどのシーン イベントを処理するフックを設定する必要があります。Maya や Nuke などのアプリケーションの場合、通常は保存やロードなどを実行するだけです。 @@ -301,4 +336,3 @@ class SceneOperation(Hook): 特定の選択項目がクリックされた場合に Hiero から返されるオブジェクトを確認するには、エンジン デバッグ モードをオンにするだけです。スクリプト エディタで、各クリックで選択したオブジェクトの概要を取得します。 ![メニュー](../images/engines/nuke-hiero-engine_debug.png) - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md index 560d9332f..588d4885c 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md @@ -121,10 +121,10 @@ Photoshop CC を起動すると、エンジン ブートストラップ コー ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 設定の値は、環境設定にインストールされたアプリの 1 つで提供される、登録済みコマンドを識別するディクショナリのリストです。`app_instance` キーは特定のインストール済みアプリを識別し、`name` キーはこのアプリによって登録されたコマンドの表示名に一致します。上記の例では、4 つのお気に入りコマンドが表示されています。`tk-multi-workfiles2` アプリのファイルの表示と保存のダイアログと、標準の Toolkit のパブリッシュとスナップショットのダイアログです。これら 4 つのコマンドはお気に入りシェルフに表示されます。 @@ -148,6 +148,7 @@ shelf_favorites: Photoshop API オブジェクトは `engine.adobe` として公開されます。次の例では、Toolkit のアプリやフック内から Photoshop DOM を直接操作する方法を示します。標準的な Toolkit アプリには、Photoshop マニュアルの操作方法に関する作業例が含まれています。 #### 例 + ファイルをロードする。 ```python @@ -215,4 +216,4 @@ for (i, layer) in enumerate(layers): ### アプリ開発者メモ -* Python プロセスは Photoshop CC プロセスから独立しているため、アプリ ウィンドウで上記の Photoshop ウィンドウをできるだけ整理して表示するには、エンジン内でいくつかの作業を行います。このセットアップの注意点の 1 つに、`QFileDialog` にネイティブ OS Windows を使用する既定のオプションがあります。このエンジンを使用してアプリを開発する場合は、ネイティブのダイアログを使用しないオプションを設定してください。[tk-multi-pythonconsole アプリでの例を参照してください](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218)。 +- Python プロセスは Photoshop CC プロセスから独立しているため、アプリ ウィンドウで上記の Photoshop ウィンドウをできるだけ整理して表示するには、エンジン内でいくつかの作業を行います。このセットアップの注意点の 1 つに、`QFileDialog` にネイティブ OS Windows を使用する既定のオプションがあります。このエンジンを使用してアプリを開発する場合は、ネイティブのダイアログを使用しないオプションを設定してください。[tk-multi-pythonconsole アプリでの例を参照してください](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218)。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md index 889afb7b0..70a604263 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md @@ -7,7 +7,7 @@ lang: ja # {% include product %} -{% include product %} Engine は {% include product %} 内から起動できるアプリを管理します。この Toolkit アプリをアクション**として参照することもあります。通常、このアプリは {% include product %} 内のメニュー項目として表示されます。 +{% include product %} Engine は {% include product %} 内から起動できるアプリを管理します。この Toolkit アプリをアクション\*\*として参照することもあります。通常、このアプリは {% include product %} 内のメニュー項目として表示されます。 ## {% include product %} Pipeline Toolkit アクションを使用する @@ -27,8 +27,8 @@ lang: ja Core v0.13 以降では、{% include product %} Engine ですべてのマルチ アプリを使用できます。技術的には、{% include product %} Engine と他のエンジンの違いはほとんどありません。ただし、微妙な違いがあります。 -* {% include product %} Engine で QT ベースのアプリを実行する場合は、標準的な Python 環境に PySide や PyQt を手動でインストールする必要があります。 -* {% include product %} Engine では、ユーザが属する権限グループに応じてアクションを表示することができます。これは、{% include product %} アクション メニューにコマンドを追加して、このコマンドを管理者にのみ表示する場合などに便利です。 +- {% include product %} Engine で QT ベースのアプリを実行する場合は、標準的な Python 環境に PySide や PyQt を手動でインストールする必要があります。 +- {% include product %} Engine では、ユーザが属する権限グループに応じてアクションを表示することができます。これは、{% include product %} アクション メニューにコマンドを追加して、このコマンドを管理者にのみ表示する場合などに便利です。 {% include product %} アプリで、管理者にのみ「Hello, World!」と表示する場合は、次のように記述します。 @@ -40,7 +40,7 @@ class LaunchPublish(Application): def init_app(self): """ Register menu items with {% include product %} - """ + """ params = { "title": "Hello, World!", "deny_permissions": ["Artist"], @@ -51,6 +51,5 @@ class LaunchPublish(Application): def do_stuff(self, entity_type, entity_ids): # this message will be displayed to the user - self.engine.log_info("Hello, World!") + self.engine.log_info("Hello, World!") ``` - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md index 3a8acb87d..32551f7ed 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md @@ -26,7 +26,6 @@ lang: ja VRED を開くと、{% include product %} メニュー(VRED エンジン)がメニュー バーに追加されます。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunMenuVRED.png) - ### ファイルの表示と保存 [マイ タスク](My Tasks)タブと[アセット] (Assets)タブを使用すると、割り当てられたすべてのタスクを表示して、アセットを参照できます。右側では、これらのタブを使用してすべてのファイル、作業ファイル、またはパブリッシュ ファイルを表示します。これらのファイルは、左側で選択されているものに関連付けられています。 @@ -34,20 +33,21 @@ VRED を開くと、{% include product %} メニュー(VRED エンジン)がメ ![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunFileSaveVRED.png) - ### スナップショット + Snapshot: [スナップショット] (Snapshot)ダイアログを開き、現在のシーンの簡易バックアップを作成します。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunSnapshotVRED.png) - ### パブリッシュ -Publish: [パブリッシュ] (Publish)ダイアログを開き、ファイルを {% include product %} にパブリッシュします。パブリッシュ ファイルは、下流工程でアーティストが使用します。VRED のパブリッシュの詳細については、[こちら](https://github.com/shotgunsoftware/tk-vred/wiki/Publishing)![https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunPublishVRED.png](を参照してください。) +Publish: [パブリッシュ] (Publish)ダイアログを開き、ファイルを {% include product %} にパブリッシュします。パブリッシュ ファイルは、下流工程でアーティストが使用します。VRED のパブリッシュの詳細については、[こちら](https://github.com/shotgunsoftware/tk-vred/wiki/Publishing)![https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunPublishVRED.png](を参照してください。) ### ローダー + Loader: コンテンツ ローダ アプリを開きます。動作について説明するスライドも含まれています。 VRED のロードの詳細については、[こちら](https://github.com/shotgunsoftware/tk-vred/wiki/Loading)![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunLoaderVRED.png)を参照してください。 ### Scene Breakdown + Scene Breakdown: [詳細情報] (Breakdown)ダイアログが開き、シーン内の古い内容とともに、「参照される」ファイル(およびそのリンク)が表示されます。1 つまたは複数のアイテムを選択し、[選択した内容を更新](Update Selected)をクリックして切り替え、最新バージョンのコンテンツを使用します。 ![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunBreakdownVRED.png) diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md index 1b08f5f50..ecf7a72e8 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md @@ -44,7 +44,6 @@ lang: ja ![](images/windows_warning_1.jpg) ![](images/windows_warning_2.jpg) - {% include product %} Desktop を使用する場合、生成された証明書は次の場所に保存されます。 **OS X**: ~/Library/Caches/Shotgun/desktop/config/certificates
@@ -56,7 +55,7 @@ lang: ja 既定では、Websocket サーバはポート 9000 でホストされる {% include product %} サイトをリッスンするようにセットアップされます。 ローカルで {% include product %} サーバを実行する場合、Websocket サーバからの接続を許可するように、{% include product %} サーバの設定を更新する必要があります。 -{% include product %} Desktop を実行する場合は、{% include product %} のバイナリ ファイルを含む ```config.ini``` ファイルを設定する必要があります。このファイルの格納場所の詳細については、[こちら](https://support.shotgunsoftware.com/hc/ja/articles/219040668#Advanced%20Installation%20Topics)を参照してください。 +{% include product %} Desktop を実行する場合は、{% include product %} のバイナリ ファイルを含む `config.ini` ファイルを設定する必要があります。このファイルの格納場所の詳細については、[こちら](https://support.shotgunsoftware.com/hc/ja/articles/219040668#Advanced%20Installation%20Topics)を参照してください。 このファイル内に Websocket サーバの機能を制御するセクションがあります。 一般的な設定は次のようになります。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md index 7778155b3..8d46ba241 100644 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md @@ -6,6 +6,7 @@ lang: ja --- # Toolkit デスクトップ起動フレームワーク + デスクトップ起動フレームワークには、{% include product %} Desktop の起動ロジックが実装されています。主な機能は次のとおりです。 1. ブラウザの統合の初期化 diff --git a/docs/ja/shotgun.md b/docs/ja/shotgun.md index 5b35a7224..d9ea542a5 100644 --- a/docs/ja/shotgun.md +++ b/docs/ja/shotgun.md @@ -14,6 +14,3 @@ lang: ja 独自のサービスまたは許可されたユーザ用のサービスを基に動作する、または一緒に動作するサービス、アプリケーション、モジュール、およびコンポーネントを独自に開発するには、{% include product %} API を使用することをお勧めします。 {% include warning title="認証キー" content="オートデスクからユーザのみなさまにお願いしたいことは、API 情報を開示しないこと(および許可されたユーザに開示を許可しないこと)ことのみです。ユーザは API 情報に含まれている認証キーなどを使用することで、ログオンしなくても、サービスやその機能にアクセスできるようになります。また、ログオンすることなくサービスまたはその機能にアクセスできる権限を、API を使用して自分自身に与えることや、ユーザに与えることも行わないでください。"%} - - - diff --git a/docs/ja/toolkit.md b/docs/ja/toolkit.md index a0c199adc..550bf69f0 100644 --- a/docs/ja/toolkit.md +++ b/docs/ja/toolkit.md @@ -10,4 +10,3 @@ lang: ja Toolkit は、アーティスト向けアプリケーションおよびパイプライン ツールを {% include product %} と統合するための拡張可能なプラットフォームです。 Toolkit のコア API は、すべての統合を構築するためのプラットフォームです。Core API は、アプリケーション、エンジンおよびプラットフォームの基本、ファイル システムの整理とツールの配置を処理します。 - diff --git a/docs/ja/trusted-solutions/cloud.md b/docs/ja/trusted-solutions/cloud.md index ac0fbca13..e9fd21738 100644 --- a/docs/ja/trusted-solutions/cloud.md +++ b/docs/ja/trusted-solutions/cloud.md @@ -13,4 +13,4 @@ ShotGrid Cloud is our default offering, hosted on AWS and built on top of Autode ## Further Reading -Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). \ No newline at end of file +Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). diff --git a/docs/ja/trusted-solutions/tier1.md b/docs/ja/trusted-solutions/tier1.md index 0e5a25823..dc0e110ee 100644 --- a/docs/ja/trusted-solutions/tier1.md +++ b/docs/ja/trusted-solutions/tier1.md @@ -18,38 +18,45 @@ Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation ## In This Section ### Getting Started + -* [About Isolation](./tier1/getting_started/about.md) -* [Client Responsibilities](./tier1/getting_started/responsibilities.md) -* [Onboarding Process](./tier1/getting_started/onboarding.md) -* [Planning your Setup](./tier1/setup/planning.md) + +- [About Isolation](./tier1/getting_started/about.md) +- [Client Responsibilities](./tier1/getting_started/responsibilities.md) +- [Onboarding Process](./tier1/getting_started/onboarding.md) +- [Planning your Setup](./tier1/setup/planning.md) ### Features Description + -* [Media Isolation](./tier1/features/media_isolation.md) -* [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) -* [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) -* [Media Replication](./tier1/features/media_replication.md) + +- [Media Isolation](./tier1/features/media_isolation.md) +- [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) +- [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) +- [Media Replication](./tier1/features/media_replication.md) ### Setup + -* [Setup Overview](./tier1/setup/setup.md) -* [Migration Test Site](./tier1/setup/shotgun_poc_site.md) -* [Media Isolation](./tier1/setup/s3_bucket.md) -* [Media Traffic Isolation](./tier1/setup/media_segregation.md) -* [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) -* [Media Replication](./tier1/setup/s3_replication.md) -* [Isolation Fine Tuning](./tier1/setup/tuning.md) -* [Migration](./tier1/setup/migration.md) +- [Setup Overview](./tier1/setup/setup.md) +- [Migration Test Site](./tier1/setup/shotgun_poc_site.md) +- [Media Isolation](./tier1/setup/s3_bucket.md) +- [Media Traffic Isolation](./tier1/setup/media_segregation.md) +- [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) +- [Media Replication](./tier1/setup/s3_replication.md) +- [Isolation Fine Tuning](./tier1/setup/tuning.md) +- [Migration](./tier1/setup/migration.md) ### AWS Knowledge + -* [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) -* [S3](./tier1/knowledge/s3.md) -* [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) -* [Direct Connect](./tier1/knowledge/direct_connect.md) -* [Private Link](./tier1/knowledge/private_link.md) -* [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) -* [AWS Knowledge](./tier1/knowledge/aws.md) + +- [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) +- [S3](./tier1/knowledge/s3.md) +- [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) +- [Direct Connect](./tier1/knowledge/direct_connect.md) +- [Private Link](./tier1/knowledge/private_link.md) +- [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) +- [AWS Knowledge](./tier1/knowledge/aws.md) diff --git a/docs/ja/trusted-solutions/tier1/features/features.md b/docs/ja/trusted-solutions/tier1/features/features.md index e51276b67..b8673e7e6 100644 --- a/docs/ja/trusted-solutions/tier1/features/features.md +++ b/docs/ja/trusted-solutions/tier1/features/features.md @@ -16,8 +16,10 @@ To get the onboarding process started, go to [Onboarding Process](../getting_sta To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md). ## In This Section + -* [Media Isolation](./media_isolation.md) -* [Media Traffic Isolation](./media_traffic_isolation.md) -* [Web Traffic Isolation](./web_traffic_isolation.md) -* [Media Replication](./media_replication.md) \ No newline at end of file + +- [Media Isolation](./media_isolation.md) +- [Media Traffic Isolation](./media_traffic_isolation.md) +- [Web Traffic Isolation](./web_traffic_isolation.md) +- [Media Replication](./media_replication.md) diff --git a/docs/ja/trusted-solutions/tier1/features/media_isolation.md b/docs/ja/trusted-solutions/tier1/features/media_isolation.md index 2db4f3627..8ff5b3903 100644 --- a/docs/ja/trusted-solutions/tier1/features/media_isolation.md +++ b/docs/ja/trusted-solutions/tier1/features/media_isolation.md @@ -6,17 +6,21 @@ lang: en --- # Media Isolation + Media Isolation allows your studio to retain ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid is stored in your studio's private S3 Bucket. Access to the media is provided to the ShotGrid services only, using [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). media-isolation-overview ## Client-Owned S3 Bucket + Storing media and attachments in an S3 bucket that you own means that you remain the legal owner of these artifacts, allowing you to comply with your company's security and legal policies. Your studio retains control of asset storage and access, access that you can revoke at will. media-isolation-arch ## More about Access + When using ShotGrid to upload and download media it is transferred directly to / from AWS S3 without transiting through Autodesk infrastructure. ShotGrid will only access media in two situations: + 1. The ShotGrid Transcoding service will get read/write access once, soon after upload, when transcoding the media. See [Ephemeral Transcoding](../getting_started/about.md#ephemeral-transcoding) for details. 2. When the ShotGrid service generates S3 Links to your sources and transcoded media. @@ -25,9 +29,12 @@ This is rendered possible by leveraging [AWS AssumeRole keyless Security Token S ShotGrid Support staff do not have access to your S3 Bucket under any circumstances. ## Costs + When activating Media Isolation the following costs, previously covered by Autodesk, become the responsibility of the client: + 1. **S3 Costs.** All the S3 storage costs will be assumed by the customer. See [Media Isolation](../setup/tuning.md) for more details about how to reduce costs. 2. **S3 Bandwidth.** Bandwidth out of the S3 bucket will be assumed by the customer. ## What Media Isolation is not providing -Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. \ No newline at end of file + +Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. diff --git a/docs/ja/trusted-solutions/tier1/features/media_replication.md b/docs/ja/trusted-solutions/tier1/features/media_replication.md index 0b4bbefeb..f991da0ca 100644 --- a/docs/ja/trusted-solutions/tier1/features/media_replication.md +++ b/docs/ja/trusted-solutions/tier1/features/media_replication.md @@ -12,14 +12,17 @@ ShotGrid is compatible with the S3 Cross-Region replication feature, allowing yo media-replication-overview ## Pre-requisites + Media Isolation is required in order to elect Media Replication. ## Configuration by users + When using Media Replication, each user can customize which region data is read from. A user can either specify the region to use, or use automatic mode. In automatic mode ShotGrid selects the replica determined by the user's IP address using IP ranges specified in the Isolation Preferences. media-replication-preferences ## How it works + ShotGrid can be configured to read from up to two different buckets. Using the [AWS S3 Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) feature, you can configure replication between buckets in different regions, and then consume media from the region closest to your users. It is important to underline that media is always uploaded to the main bucket. media-replication-arch @@ -27,12 +30,16 @@ ShotGrid can be configured to read from up to two different buckets. Using the [ Following AWS service level agreement, S3 guarantees the replication of 99.99% of the object within 15 minutes. ### Replication Delay + A small amount of time, typically under 15 minutes, is required before replication happens. The replication time depends on the size of the object to replicate. In order to alleviate that replication delay, ShotGrid will, for a small period of time, generate links from to object in the source bucket instead of the replica. The duration of this transitional state in configurable in the Isolation Preferences. ## Costs + Activating the Media Replication feature can increase your AWS costs considerabibly. Before activating, be aware that: + 1. Your S3 cost linked to ShotGrid usage will more or less double, because the media is now stored in two regions. 2. You will be charged for the transfer cost between the source and the destination region. See [AWS S3 CRR and the destination region](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-and-other-bucket-configs.html#replication-and-dest-region) for more details. ## Next Steps + See [Media Replication Setup](../setup/s3_replication.md) for setup instructions. diff --git a/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md index 74f0b9601..f399e9275 100644 --- a/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md +++ b/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md @@ -12,20 +12,26 @@ Communication between your client systems and S3 bucket targets a number of AWS media-traffic-isolation-overview ## Configuration -An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. + +An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. ## How it works + ShotGrid can be configured to use an S3 Proxy address to communicate with your S3 bucket. Deploying the S3 Proxy component within your VPC makes it possible to isolate traffic from the public Internet completely, or to allow more tightly controlled access from the Internet to your media. media-traffic-isolation-arch ### Secure communication + You are responsible for supplying and renewing SSL certificates for the S3 Proxy component. ## Costs + Activating the Media Traffic Isolation feature will increase your AWS costs. Before activating, be aware that: + 1. There are costs associated with running the S3 Proxy component. See [AWS Fargate Pricing](https://aws.amazon.com/fargate/pricing/) for more details. 2. If you choose to make your S3 Proxy publicly accessible, there are also additional costs associated with AWS Global Accelerator. See [AWS Global Accelerator Pricing](https://aws.amazon.com/global-accelerator/pricing) for more details. ## Next Steps + See [Media Traffic Isolation](../setup/media_segregation.md) for setup instructions. diff --git a/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md index 839d0666f..2fd3baf07 100644 --- a/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md +++ b/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md @@ -12,15 +12,19 @@ Communication between your client systems and your ShotGrid site will traverse t web-traffic-isolation-overview ## Configuration + A unique VPC endpoint is provided by Autodesk. Access to the endpoint must be configured from your VPC, and the relevant DNS configuration must be completed to allow your client systems to reach the new endpoint. ## How it works + By using the provided VPC endpoint, web traffic is isolated from the public Internet completely. All web traffic transits between your AWS VPC and Autodesk's AWS VPC, rather than the public Internet. web-traffic-isolation-arch ## Costs + The only cost associated with Web Traffic Isolation are those related to web traffic transiting to/from your AWS VPC. See [AWS VPC Pricing](https://aws.amazon.com/vpc/pricing) for more details. ## Next Steps + See [Web Traffic Isolation](../setup/traffic_segregation.md) for setup instructions. diff --git a/docs/ja/trusted-solutions/tier1/getting_started/about.md b/docs/ja/trusted-solutions/tier1/getting_started/about.md index 8d4b0dcd9..bbde8470e 100644 --- a/docs/ja/trusted-solutions/tier1/getting_started/about.md +++ b/docs/ja/trusted-solutions/tier1/getting_started/about.md @@ -11,48 +11,49 @@ The isolation feature set combines our Cloud Hosted Platform with client-managed Leveraging the isolation feature set has the following advantages over the Standard offering: -* **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** -* **Web Traffic Isolation** from the public internet -* **Media Traffic Isolation** from the public internet -* **Media Replication** allowing you to replicate media in one additional AWS Region -* Access to fully managed ShotGrid Cloud Services -* Automatic and continuous version upgrades -* Ephemeral compute + in-memory segration between clients +- **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** +- **Web Traffic Isolation** from the public internet +- **Media Traffic Isolation** from the public internet +- **Media Replication** allowing you to replicate media in one additional AWS Region +- Access to fully managed ShotGrid Cloud Services +- Automatic and continuous version upgrades +- Ephemeral compute + in-memory segration between clients In a nutshell, this means that with the isolation features, your ShotGrid site and the data related to it cannot be reached by anyone outside of your studio network. The isolation feature set is a solution that requires less upkeep, as well as less IT/System Administrator knowledge and skills, than hosting ShotGrid on-premise. The list of advantages compared to on-premise includes, but is not limited to: -* No ShotGrid specific knowledge required -* No manual ShotGrid updates required -* Very low level of maintenance required for the AWS components +- No ShotGrid specific knowledge required +- No manual ShotGrid updates required +- Very low level of maintenance required for the AWS components ## Media isolation feature + Media Isolation allows your studio to keep the ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid can be store in your studio private S3 bucket. Access to the media is provided to the ShotGrid service only, using AWS AssumeRole keyless Security Token Service. Your studio remains in control of the assets and the access to the assets, access that you can revoke at will. ## Traffic isolation features + Media and Web traffic isolation features can be enabled to prevent your traffic from being routed on the public internet, limiting it to the AWS backbone and your studio network. The traffic between ShotGrid Services and your studio stays in closed network, never going outside AWS or your Studio network. With the Media Traffic Isolation feature activated, the media will only leave your studio infrastructure once to get transcoded. ## Media Replication -ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. +ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. # Eligibility The Isolation feature set is available for all Super Awesome clients. See [Getting Started](./getting_started.md) for more details about how to active the different features. The activation of the isolation feature set is not instantaneous, and requires manual setup involving your AWS account. - # What the Isolation Feature Set is not The isolation feature set is not a completely isolated solution. Both the compute services and the database services are shared amongst clients, and managed by ShotGrid. From a hardware standpoint, the isolation features does not guarantee complete physical isolation. However, ShotGrid services are guaranteeing isolation at the memory level. Processes are never reused to answer requests from different clients during their lifetime. Client metadata is stored in different databases. Client media is individually stored on S3. - # High Level Architecture + ![tier1-arch](../images/tier1-about-arch.png) -The ShotGrid cloud service can be decoupled at a high level in 3 parts: +The ShotGrid cloud service can be decoupled at a high level in 3 parts: **Compute Stack:** The part of the ShotGrid Service that handles client requests and serves data to the client. @@ -63,9 +64,11 @@ The ShotGrid cloud service can be decoupled at a high level in 3 parts: Please read [Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk ShotGrid](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) for more details about the architecture. ## Ephemeral compute and memory isolation + Even if clients share the same infrastructure, ShotGrid guarantees a complete memory isolation, both in transit and at rest, of client data. This makes ShotGrid less prone to data leaking due to architecture flaws or software vulnerabilities exploiting memory, like buffer overflow. ## Ephemeral transcoding + ![tier1-transcoding](../images/tier1-about-transcoding.png) Everytime media is uploaded to ShotGrid, the transcoding service is invoked to create a web friendly versions of your assets. That process happens only once, after the initial upload. The media is directly uploaded from the client to S3, from where it is fetched by the ShotGrid Transcoding Service. Each transcoding job is handled by a single container, which is killed after that unique job. The only place the media temporarily lives is in the container memory. The ShotGrid Transcoding service doesn't store permanently a copy of your media. diff --git a/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md b/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md index 9d70df760..04ebf5cf9 100644 --- a/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md +++ b/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md @@ -7,17 +7,18 @@ lang: en # Isolation Feature Set - Getting Started -Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. +Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. **The Isolation feature set is available only to Super Awesome clients. Before starting, make sure to upgrade your subscription to Super Awesome.** - To get the onboarding process started, go to [Onboarding Process](./onboarding.md). To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md) ## In This Section + -* [About the Isolation Feature Set](./about.md) -* [Client Responsibilities](./responsibilities.md) -* [Onboarding Process](./onboarding.md) -* [Planning Your Setup](../setup/setup.md) \ No newline at end of file + +- [About the Isolation Feature Set](./about.md) +- [Client Responsibilities](./responsibilities.md) +- [Onboarding Process](./onboarding.md) +- [Planning Your Setup](../setup/setup.md) diff --git a/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md b/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md index 63dd91dcd..19bfc213d 100644 --- a/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md +++ b/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md @@ -19,13 +19,13 @@ To start the on-boarding process for any of the Isolation features, please open During the onboarding process, you'll have direct access to Autodesk and AWS Leaders who will support you during the implementation. -**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. +**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. -**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. +**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. -**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. +**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. -**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. +**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. **Training:** OPTIONAL. Help sessions, if needed, as you ramp up on the AWS/ShotGrid technologies required to securely set-up the isolation features for your site. @@ -39,4 +39,4 @@ During the onboarding process, you'll have direct access to Autodesk and AWS Lea ## Next Steps -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file +Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) diff --git a/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md index 528aa0bbc..30d8e9508 100644 --- a/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md +++ b/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md @@ -4,15 +4,15 @@ title: Client Responsibilities pagename: tier1-getting_started-responsibilities lang: en --- - + # Client Responsibilities -Below, we have outlined setup responsibilities between Autodesk and You. +Below, we have outlined setup responsibilities between Autodesk and You. ## Isolation Setup You are entirely responsible for the validity, security, and execution of the Isolation setup in Your AWS Account. Autodesk should not, under any circumstances, be granted access to Your AWS environment. - + Autodesk is available during the process for assistance, but the configuration of Isolation features in Your AWS Account is to be executed by You on Your own. Isolation feature set activation requires the ShotGrid Support team's intervention. Activation delays are to be expected and will depend on demand. You understand that an estimated period of 2-8 weeks is usually required to complete the setup necessary to implement the isolation feature set. The setup time is highly dependent on your cooperation, so please plan to dedicate resources for the setup before beginning the onboarding process. @@ -21,16 +21,16 @@ Autodesk does not guarantee any timeline for setup completion. ## Onboarding -|Type| Description / Agreement | Responsibility | Available for Assistance| -|--------|-----|----------|---------| -|AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. |You |N/A| -|S3|Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) |You |ShotGrid and *AWS| -|Closed VPC |Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. |You |*AWS | -|Media Isolation |Creating the S3 end-points. Deploying the S3 Proxy. |You| ShotGrid and *AWS | -|Traffic Isolation |Creating VPCs. Creating Subnets.| You|ShotGrid| -|Private Access Point|Checking that the access point is only available from Your network.| ShotGrid| N/A| -|Monitoring and Reliability|Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. |ShotGrid|N/A| -|Service Level Objective|Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).|ShotGrid| N/A| -|Security and Governance |Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).| ShotGrid |N/A| - -*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. +| Type | Description / Agreement | Responsibility | Available for Assistance | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------ | +| AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. | You | N/A | +| S3 | Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) | You | ShotGrid and \*AWS | +| Closed VPC | Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. | You | \*AWS | +| Media Isolation | Creating the S3 end-points. Deploying the S3 Proxy. | You | ShotGrid and \*AWS | +| Traffic Isolation | Creating VPCs. Creating Subnets. | You | ShotGrid | +| Private Access Point | Checking that the access point is only available from Your network. | ShotGrid | N/A | +| Monitoring and Reliability | Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. | ShotGrid | N/A | +| Service Level Objective | Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | +| Security and Governance | Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | + +\*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. diff --git a/docs/ja/trusted-solutions/tier1/knowledge/aws.md b/docs/ja/trusted-solutions/tier1/knowledge/aws.md index 4047e2782..65042c3e9 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/aws.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/aws.md @@ -9,15 +9,15 @@ lang: en Below you can find links to additional reading material from AWS, including documentation on technologies leveraged by the Isolation feature set, as well as compliance information: -* [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) -* [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) -* [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) -* [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) - * [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) -* [**[AWS S3]** Overview](https://aws.amazon.com/s3/) - * [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) -* [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) - * [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) -* [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) - * [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) -* [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) +- [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) +- [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) +- [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) +- [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) + - [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) +- [**[AWS S3]** Overview](https://aws.amazon.com/s3/) + - [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) +- [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) + - [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) +- [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) + - [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) +- [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) diff --git a/docs/ja/trusted-solutions/tier1/knowledge/connecting.md b/docs/ja/trusted-solutions/tier1/knowledge/connecting.md index aa9aad9dd..3d2ffb368 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/connecting.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/connecting.md @@ -15,8 +15,6 @@ Some of the common options our clients have used include: Using a VPN appliance - AWS-managed or client-managed - your studio can establish a secure connection between your data center (or offices) to your AWS private VPC. - ## AWS Direct Connect [AWS Direct Connect](./direct_connect.md) creates a dedicated link between your studio and your AWS VPC. This will help segregate your studio's network traffic to your private AWS VPC from general internet traffic. - diff --git a/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md index b5e332630..3e87c2ce6 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md @@ -6,10 +6,9 @@ pagename: tier1-knowledge-direct_connect_onboarding # ShotGrid AWS Direct Connect Onboarding - ## Introduction -AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. +AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. ## Review of Shogun Configuration in AWS @@ -21,16 +20,14 @@ AWS Direct Connect (DX) is used to establish private connectivity between AWS an 2. Customer has equipment and network presence in an AWS Direct Connect location 3. Customer does not have equipment or presence in an AWS Direct Connect location - ## Setup Options 1. Request a dedicated Direct Connect connection through AWS Console - 1. Provision the required connectivity yourself - 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment + 1. Provision the required connectivity yourself + 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment 2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - -## Criteria to Determine Setup Path +## Criteria to Determine Setup Path If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console (Option 1a): @@ -49,11 +46,12 @@ If you answer “yes” to the following, then you should work with an AWS Direc - Are you already working with an AWS Direct Connect Partner? - Do you want a Partner to facilitate the setup? - Are you looking for a port less than 1Gbps or a hosted connection? -***Disclaimer:*** *All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria.* + **_Disclaimer:_** _All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria._ ## Setup Directions ### Request through AWS Console - Option 1 (a and b) + 1. [Create a Connection in the AWS Console](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest) 1. [Download the LOA-CFA](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#DedicatedConnection). The LOA is the authorization to connect to AWS and is required to establish the cross-network connection. 1. (Option 1a only) Request cross-connects at AWS Direct Connect locations. Find contact information [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html). @@ -63,9 +61,9 @@ If you answer “yes” to the following, then you should work with an AWS Direc ### Request through AWS Direct Connect Partner - Option 2 1. [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/). The criteria for choosing an AWS Partner are: - - AWS Region - - Providers - - If you are already working with an AWS Direct Connect Partner + - AWS Region + - Providers + - If you are already working with an AWS Direct Connect Partner 1. If hosted connection, [accept a hosted connection](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest). More information can be found [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/accept-hosted-connection.html). 1. Once the hosted connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). @@ -79,8 +77,6 @@ Short Answer - It depends. A lot of factors go into the time it takes to set up [AWS Direct Connect FAQs](https://aws.amazon.com/directconnect/faqs/?nc=sn&loc=6) - - ## VPN A site-to-site VPN can be used as an alternative to AWS Direct Connect. Learn more about [AWS VPN here](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). diff --git a/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md b/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md index 12d99d191..5ea551886 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md @@ -7,4 +7,4 @@ lang: en # VPC Endpoints -Coming soon. \ No newline at end of file +Coming soon. diff --git a/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md b/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md index 6010add78..296365dd8 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md @@ -8,12 +8,14 @@ lang: en # Generic Knowledge ## In This Section + -* [Connecting Your Studio With Your AWS VPC](./connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) -* [S3](./s3.md) -* [VPC / IAM / Security Group](./vpc_iam_sec.md) -* [Direct Connect](./direct_connect.md) -* [Private Link](./private_link.md) -* [VPC Endpoints](./vpc_endpoints.md) -* [AWS Knowledge](./aws.md) \ No newline at end of file + +- [Connecting Your Studio With Your AWS VPC](./connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) +- [S3](./s3.md) +- [VPC / IAM / Security Group](./vpc_iam_sec.md) +- [Direct Connect](./direct_connect.md) +- [Private Link](./private_link.md) +- [VPC Endpoints](./vpc_endpoints.md) +- [AWS Knowledge](./aws.md) diff --git a/docs/ja/trusted-solutions/tier1/knowledge/private_link.md b/docs/ja/trusted-solutions/tier1/knowledge/private_link.md index 836c2bbaf..dadd2afcd 100644 --- a/docs/ja/trusted-solutions/tier1/knowledge/private_link.md +++ b/docs/ja/trusted-solutions/tier1/knowledge/private_link.md @@ -7,6 +7,6 @@ lang: en # Private Link -[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. +[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. In conjunction with [AWS Direct Connect](./direct_connect.md), PrivateLink helps create a dedicated connection between your studio and ShotGrid's infrastructure. diff --git a/docs/ja/trusted-solutions/tier1/learn/learn.md b/docs/ja/trusted-solutions/tier1/learn/learn.md index 0b7f7f939..979527a18 100644 --- a/docs/ja/trusted-solutions/tier1/learn/learn.md +++ b/docs/ja/trusted-solutions/tier1/learn/learn.md @@ -7,4 +7,4 @@ lang: en # ShotGrid Isolation - Learn -This section will host a learning curriculum for ShotGrid Isolation features n the near future. \ No newline at end of file +This section will host a learning curriculum for ShotGrid Isolation features n the near future. diff --git a/docs/ja/trusted-solutions/tier1/setup/media_segregation.md b/docs/ja/trusted-solutions/tier1/setup/media_segregation.md index 693920d74..447a36923 100644 --- a/docs/ja/trusted-solutions/tier1/setup/media_segregation.md +++ b/docs/ja/trusted-solutions/tier1/setup/media_segregation.md @@ -19,25 +19,26 @@ Media Isolation activation is a pre-requisite to enable this feature. If you hav You will need to deploy a VPC with the required VPC endpoints. We provide both [private VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) and [public VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) CloudFormation templates as starting points. These template create the necessary VPCs, subnets and VPC endpoints. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private VPC (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private VPC (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) - * Public VPC: + - Public VPC: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml) -* Click Next -* Set a stack name. Eg. `shotgun-vpc` -* Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly -* Set your S3 bucket name -* Click Next -* Click Next +- Click Next +- Set a stack name. Eg. `shotgun-vpc` +- Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly +- Set your S3 bucket name +- Click Next +- Click Next ## Set up access from your site network to your AWS VPC Options provided by AWS: -* [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) -* [AWS Direct Connect](https://aws.amazon.com/directconnect/) + +- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +- [AWS Direct Connect](https://aws.amazon.com/directconnect/) {% include info title="Note" content="If Direct Connect is chosen, we recommend testing with a simpler / faster solution in the meantime to validate your Isolation setup. You can then replace that solution with Direct Connect once it is available." %} @@ -55,12 +56,12 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC ### Make the Docker image available from a private AWS ECR repository -* Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) -* Name the repository `s3-proxy` -* Upload the s3-proxy Docker image to the newly created ECR repository - * [Install Docker](https://docs.docker.com/get-docker/) on your workstation - * Follow the `docker login` instructions shown by clicking the *View push commands* button - * Run the following commands, substituting the ECR endpoint in the example for yours: +- Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) +- Name the repository `s3-proxy` +- Upload the s3-proxy Docker image to the newly created ECR repository + - [Install Docker](https://docs.docker.com/get-docker/) on your workstation + - Follow the `docker login` instructions shown by clicking the _View push commands_ button + - Run the following commands, substituting the ECR endpoint in the example for yours: ``` docker pull quay.io/shotgun/s3-proxy:1.0.6 docker tag quay.io/shotgun/s3-proxy:1.0.6 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 @@ -71,43 +72,43 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC Create a new stack in AWS Console using either the [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) or [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) CloudFormation template. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private S3 proxy (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private S3 proxy (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) - * Public S3 proxy: + - Public S3 proxy: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) -* Click Next -* Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` -* Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously -* Click Next -* Accept `I acknowledge that AWS CloudFormation might create IAM resources` -* Click Next +- Click Next +- Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` +- Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously +- Click Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Click Next ### Configure HTTPS ShotGrid requires that the S3 proxy be accessed via HTTPS, therefore the AWS ALB handling requests for your newly created S3 proxy stack must be configured to accept HTTPS requests. -* Create a DNS entry pointing to your S3 proxy, depending upon whether public or private - * Private S3 proxy (default): - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name - * Add a DNS CNAME record pointing to the DNS name of the ALB +- Create a DNS entry pointing to your S3 proxy, depending upon whether public or private + - Private S3 proxy (default): + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name + - Add a DNS CNAME record pointing to the DNS name of the ALB Eg. `s3-proxy.mystudio.com. 300 IN CNAME s3proxy-12R1MXX0MFFAV-2025360147.us-east-1.elb.amazonaws.com.` - * Public S3 proxy: - * Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator - * Add a DNS CNAME record pointing to the DNS name of the Global Accelerator + - Public S3 proxy: + - Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator + - Add a DNS CNAME record pointing to the DNS name of the Global Accelerator Eg. `s3-proxy.mystudio.com. 300 IN CNAME a48a2a8de7cfd28d3.awsglobalaccelerator.com.` -* Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this -* Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab - * Click Add listener - * Select HTTPS from the Protocol dropdown menu - * Click Add action -> Forward to... - * Select your S3 proxy's target group from the Target group dropdown menu - * Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) - * Select the SSL certificate you'd like to use from ACM or import a new certificate - * Click Save +- Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this +- Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab + - Click Add listener + - Select HTTPS from the Protocol dropdown menu + - Click Add action -> Forward to... + - Select your S3 proxy's target group from the Target group dropdown menu + - Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) + - Select the SSL certificate you'd like to use from ACM or import a new certificate + - Click Save ### Add S3 proxy VPC to S3 bucket policy @@ -121,10 +122,10 @@ Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio ### Configure your test site to use the S3 proxy -* Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section -* Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes -* Confirm that you are still able to access existing media -* Attempt to upload new media +- Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section +- Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes +- Confirm that you are still able to access existing media +- Attempt to upload new media ## Next Steps diff --git a/docs/ja/trusted-solutions/tier1/setup/migration.md b/docs/ja/trusted-solutions/tier1/setup/migration.md index d0f0d69f5..89cb3258f 100644 --- a/docs/ja/trusted-solutions/tier1/setup/migration.md +++ b/docs/ja/trusted-solutions/tier1/setup/migration.md @@ -13,15 +13,14 @@ Once everything is configured and properly tested with the migration test site, Ask the ShotGrid team to start the migration process in support ticket/slack. - * ShotGrid will clone your production site database to your migration test site. - * You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. - * You can now test your site to be sure your existing media is available. +- ShotGrid will clone your production site database to your migration test site. +- You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. +- You can now test your site to be sure your existing media is available. ## Final migration The second test is to definitly migrate your site to use your own S3 bucket. - * You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. - * ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. - * You will do a final media sync. - +- You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. +- ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. +- You will do a final media sync. diff --git a/docs/ja/trusted-solutions/tier1/setup/planning.md b/docs/ja/trusted-solutions/tier1/setup/planning.md index 25183478e..14c564880 100644 --- a/docs/ja/trusted-solutions/tier1/setup/planning.md +++ b/docs/ja/trusted-solutions/tier1/setup/planning.md @@ -12,10 +12,11 @@ lang: en ## Pick your options Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication + +- Media Isolation +- Media Traffic Isolation +- Web Traffic Isolation +- Media Replication ## AWS Account Creation @@ -33,20 +34,19 @@ Plan your AWS VPC and subnets IP ranges. ### IP Range Example -| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | -|--------|-----|----------|----------|----------| +| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | +| -------------- | ----------- | ----------- | ----------- | ----------- | | ap-southeast-2 | 10.1.0.0/16 | 10.1.0.0/24 | 10.1.1.0/24 | 10.1.2.0/24 | - ### Plan how you will privately access your AWS VPC If you plan to activate any of the Traffic Isolation feature, you will need a way to connect your AWS VPC and your network infrastructure. The main options are: - * AWS Direct Connect - * Other VPN solution +- AWS Direct Connect +- Other VPN solution We highly recommand you to leverage Direct Connect. Direct Connect guarantees the lowest latency possible to the ShotGrid services, a consistent network experience, and allow you to leverage the optimization AWS is relying on to guarantee an optimal performance across the globe. ## Next Step -With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) \ No newline at end of file +With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) diff --git a/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md b/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md index 9aeff3531..60461db9e 100644 --- a/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md +++ b/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md @@ -20,15 +20,15 @@ It's possible to start from the [Private S3 bucket AWS CloudFormation template]( {% include info title="Disclaimer" content="This template is provided as an example only. It is your responsibility to validate that running the template will result in the [configuration/policy/security settings your studio requires](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - * Go the CloudFormation service in AWS Console - * Select Template is ready - * Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml - * Next - * Set a stack name like shotgun-s3-bucket - * Set your S3 bucket name and your ShotGrid site name - * Next - * Accept `I acknowledge that AWS CloudFormation might create IAM resources` - * Next +- Go the CloudFormation service in AWS Console +- Select Template is ready +- Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml +- Next +- Set a stack name like shotgun-s3-bucket +- Set your S3 bucket name and your ShotGrid site name +- Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Next ### CORS Configuration @@ -38,15 +38,16 @@ CORS policy on your S3 bucket will be minimally configured, allowing only the re The template will create an AWS Role with the following permissions on your bucket: -* Allow ShotGrid to access your S3 bucket. -* Allow the ShotGrid account to assume the role by setting the role Trust Relationship. +- Allow ShotGrid to access your S3 bucket. +- Allow the ShotGrid account to assume the role by setting the role Trust Relationship. ## Media Isolation Activation Please contact ShotGrid support via the dedicated Slack channel and provide the following information: - * S3 bucket name - * AWS Region - * ShotGrid Role ARN + +- S3 bucket name +- AWS Region +- ShotGrid Role ARN ShotGrid will configure your test site to use your own S3 bucket. @@ -70,4 +71,3 @@ See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffi See [Media Replication](./s3_replication.md) to activate the Web Traffic Isolation feature. Go to [Setup](./setup.md) for an overview of the possible next steps. - diff --git a/docs/ja/trusted-solutions/tier1/setup/s3_replication.md b/docs/ja/trusted-solutions/tier1/setup/s3_replication.md index 253d586f4..ca5d3dd45 100644 --- a/docs/ja/trusted-solutions/tier1/setup/s3_replication.md +++ b/docs/ja/trusted-solutions/tier1/setup/s3_replication.md @@ -15,7 +15,7 @@ It's possible to add S3 replication between two S3 buckets in different regions ## Features - * Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +- Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) ## How it works @@ -23,30 +23,30 @@ When S3 bucket replication is activated, users will be able download media files For each user, the S3 replication is activated by the `Use S3 Replication` field. -| Value| Behavior | -|------|----------------------------------------------| -|`no` | Never use replica S3 bucket (default)| -|`yes` | Use replica S3 bucket when delay is over| -|`auto`| Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range| +| Value | Behavior | +| ------ | ------------------------------------------------------------------------------------------------------- | +| `no` | Never use replica S3 bucket (default) | +| `yes` | Use replica S3 bucket when delay is over | +| `auto` | Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range | The `IP Adresses for S3 replication` preference can be edited in Site Preferences under the Isolation category. ## Limitations - * Only one replica S3 bucket can be configured - * Only downloading from the replica bucket is supported - * Configurable delay for new media to be replicated before being made available to users +- Only one replica S3 bucket can be configured +- Only downloading from the replica bucket is supported +- Configurable delay for new media to be replicated before being made available to users # Setup steps - * Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) - * Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket - * Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) - * Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) - * Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: - * Replica Bucket Name - * Replica Bucket Region - * Replica S3 proxy URL +- Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) +- Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket +- Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) +- Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) +- Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: + - Replica Bucket Name + - Replica Bucket Region + - Replica S3 proxy URL ## FAQ @@ -58,4 +58,4 @@ S3 replication only applies to media uploaded after the feature has been enabled See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ja/trusted-solutions/tier1/setup/setup.md b/docs/ja/trusted-solutions/tier1/setup/setup.md index ba2a55aff..259fcf035 100644 --- a/docs/ja/trusted-solutions/tier1/setup/setup.md +++ b/docs/ja/trusted-solutions/tier1/setup/setup.md @@ -9,18 +9,20 @@ lang: en Isolation the isolation features are independent of each other, and can be activated independently of each other. Media replication have as pre-requisite for Media Isolation to be implemented. -The setup process will depend on which feature you want to activate for your site. +The setup process will depend on which feature you want to activate for your site. ## In This Section + -* [Planning your Setup](./planning.md) -* [Migration Test Site](./shotgun_poc_site.md) -* [Media Isolation](./s3_bucket.md) -* [Media Traffic Isolation](./media_segregation.md) -* [Web Traffic Isolation](./traffic_segregation.md) -* [Media Replication](./s3_replication.md) -* [Isolation Fine Tuning](./tuning.md) -* [Migration](./migration.md) + +- [Planning your Setup](./planning.md) +- [Migration Test Site](./shotgun_poc_site.md) +- [Media Isolation](./s3_bucket.md) +- [Media Traffic Isolation](./media_segregation.md) +- [Web Traffic Isolation](./traffic_segregation.md) +- [Media Replication](./s3_replication.md) +- [Isolation Fine Tuning](./tuning.md) +- [Migration](./migration.md) # Setup Overview diff --git a/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md index c7743da2c..f2bebd159 100644 --- a/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ b/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md @@ -21,4 +21,4 @@ See [Media Isolation](./s3_bucket.md) for activating the Media Isolation feature See [Web Traffic Isolation](./traffic_segregation.md) for activating the Web Traffic Isolation feature. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md index f3deacb4e..f49ea8d39 100644 --- a/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md +++ b/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md @@ -11,19 +11,18 @@ The goal is to set up an AWS PrivateLink to privately access your ShotGrid site. ## Set up PrivateLink to ShotGrid - * Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. +- Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. - * Update the private VPC CloudFormation stack you created earlier and set ShotgunPrivateServiceName parameter. +- Update the private VPC CloudFormation stack you created earlier and set ShotgunPrivateServiceName parameter. ### Manual steps if needed - * Add a new VPC Endpoint in your VPC +- Add a new VPC Endpoint in your VPC - * For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. +- For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. ![Create endpoint](../images/tier1-endpoint-create_privatelink.png) - ## DNS Configuration Provide your PrivateLink DNS name to ShotGrid support. We will setup a new private URL for your site that will look like `mystudio-staging.priv.shotgunstudio.com`. @@ -42,4 +41,4 @@ Try to access your test site from inside your office ie https://mystudio-staging See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ja/trusted-solutions/tier1/setup/tuning.md b/docs/ja/trusted-solutions/tier1/setup/tuning.md index df4b6060f..ce0bc5047 100644 --- a/docs/ja/trusted-solutions/tier1/setup/tuning.md +++ b/docs/ja/trusted-solutions/tier1/setup/tuning.md @@ -74,8 +74,8 @@ We recommend setting a VPC endpoint policy on your S3 endpoint to allow access t ## Application Load Balancer - * We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. - * We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. +- We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. +- We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. ## Next Steps diff --git a/docs/ko/event-daemon/event-daemon-api.md b/docs/ko/event-daemon/event-daemon-api.md index 3bb8ffe53..c194572c5 100644 --- a/docs/ko/event-daemon/event-daemon-api.md +++ b/docs/ko/event-daemon/event-daemon-api.md @@ -8,16 +8,17 @@ lang: ko # API + ## registerCallbacks 프레임워크에 플러그인의 이벤트 처리 진입점에 대해 알리는 데 사용되는 모든 플러그인의 전역 수준 함수입니다. **registerCallbacks(reg)** -* reg: [`Registrar`](#Registrar)과 상호 작용하여 프레임워크에 호출할 함수를 알립니다. - +- reg: [`Registrar`](#Registrar)과 상호 작용하여 프레임워크에 호출할 함수를 알립니다. + ## Registrar Registrar은 프레임워크에 플러그인과 상호 작용하는 방법을 알리는 데 사용되는 객체이며 [`registerCallbacks`](#registerCallbacks) 함수로 전달됩니다. @@ -36,9 +37,7 @@ Registrar은 프레임워크에 플러그인과 상호 작용하는 방법을 플러그인 내에서 메시지를 기록하는 데 사용되는 python Logger 객체를 가져옵니다. - - -__setEmails(*emails)__ +**setEmails(\*emails)** 이 플러그인 또는 해당 콜백 중 하나에서 잘못된 상황이 발생하는 경우 오류 및 중요한 알림을 수신해야 하는 이메일을 설정합니다. @@ -71,12 +70,12 @@ reg.setEmails('user1@domain.com', 'user2@domain.com') 이 플러그인에 대해 엔진에 콜백을 등록합니다. -* `sgScriptName`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 이름입니다. -* `sgScriptKey`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 응용프로그램 키입니다. -* `callback`: `__call__` 메서드가 있는 함수 또는 객체입니다. [`exampleCallback`](#exampleCallback)을 참조하십시오. -* `matchEvents`: 콜백에 전달하려는 이벤트 필터입니다. -* `args`: 프레임워크가 콜백으로 다시 전달되게 하려는 모든 객체입니다. -* `stopOnError`: 부울이며 이 콜백의 예외가 이 플러그인의 모든 콜백에 의한 이벤트 처리를 중단해야 합니다. 기본값은 `True`입니다. +- `sgScriptName`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 이름입니다. +- `sgScriptKey`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 응용프로그램 키입니다. +- `callback`: `__call__` 메서드가 있는 함수 또는 객체입니다. [`exampleCallback`](#exampleCallback)을 참조하십시오. +- `matchEvents`: 콜백에 전달하려는 이벤트 필터입니다. +- `args`: 프레임워크가 콜백으로 다시 전달되게 하려는 모든 객체입니다. +- `stopOnError`: 부울이며 이 콜백의 예외가 이 플러그인의 모든 콜백에 의한 이벤트 처리를 중단해야 합니다. 기본값은 `True`입니다. `sgScriptName`은 {% include product %}에 대한 플러그인을 식별하는 데 사용됩니다. 모든 이름은 여러 콜백에서 공유되거나, 단일 콜백에 대해 고유할 수 있습니다. @@ -125,7 +124,7 @@ matchEvents = { } ``` -“_New” 또는 “_Retirement” 등 필드용이 아닌 특정 이벤트 유형에 대해 일치시키는 경우 목록을 제공하지 않고 대신 `None`을 값으로 전달합니다. +“\_New” 또는 “\_Retirement” 등 필드용이 아닌 특정 이벤트 유형에 대해 일치시키는 경우 목록을 제공하지 않고 대신 `None`을 값으로 전달합니다. ```python matchEvents = { @@ -142,6 +141,7 @@ matchEvents = { `stopOnError` 인수는 이 콜백의 예외가 플러그인 내 모든 콜백에 대한 이벤트 처리가 중지될 수 있는지 여부를 시스템에 알려 줍니다. 기본적으로 이 값은 `True`이지만 `False`로 전환할 수 있습니다. 오류가 있는 경우 오류에 대한 메일 알림이 계속 표시되지만 이벤트 처리는 중지되지 않습니다. 콜백당 설정이므로 `True`인 중요한 콜백을 사용할 수 있지만 `False`인 다른 콜백을 사용할 수 있습니다. + ## 콜백 [`Registrar.registerCallback`](#registerCallback)에 의해 등록된 모든 플러그인 진입점은 일반적으로 다음과 같은 전역 수준 함수입니다. @@ -149,9 +149,9 @@ matchEvents = { **exampleCallback(sg, logger, event, args)** -* `sg`: {% include product %} 연결 인스턴스 -* `logger`: 사용자를 위해 미리 구성된 Python logging.Logger 객체 -* `event`: 처리할 {% include product %} 이벤트 -* `args`: 콜백 등록 시간에 지정된 args 인수 +- `sg`: {% include product %} 연결 인스턴스 +- `logger`: 사용자를 위해 미리 구성된 Python logging.Logger 객체 +- `event`: 처리할 {% include product %} 이벤트 +- `args`: 콜백 등록 시간에 지정된 args 인수 {% include info title="참고" content="콜백을 객체 인스턴스에 대한 `__call__` 메서드로 구현할 수 있지만 사용자를 위한 연습으로 남겨둡니다." %} diff --git a/docs/ko/event-daemon/event-daemon-configuration.md b/docs/ko/event-daemon/event-daemon-configuration.md index bbcc81170..d0da82c38 100644 --- a/docs/ko/event-daemon/event-daemon-configuration.md +++ b/docs/ko/event-daemon/event-daemon-configuration.md @@ -14,11 +14,12 @@ lang: ko {% include info title="참고" content="**Windows:** Windows 사용자는 Windows에서 해당하는 구성 파일의 모든 경로를 변경해야 합니다. 로깅을 포함한 모든 경로를 단일 위치로 유지해 단순하게 관리하는 것이 좋습니다. 이 문서에서는 Windows 경로를 설명할 때 `C:\shotgun\shotgunEvents`를 주로 사용합니다." %} + ## Edit shotgunEventDaemon.conf {% include product %}Events를 설치했다면 다음 단계는 텍스트 편집기에서 `shotgunEventDaemon.conf` 파일을 열고 스튜디오의 요구사항에 맞게 설정을 수정하는 것입니다. 대부분의 스튜디오에는 기본값이 적합하지만, 데몬을 실행하기 위해서 반드시 제공해야 할 기본값이 없는 설정도 일부 있습니다. -*반드시* 제공해야 하는 항목은 다음과 같습니다. +_반드시_ 제공해야 하는 항목은 다음과 같습니다. - {% include product %} 서버 URL - {% include product %}에 연결하기 위한 스크립트 이름 및 응용프로그램 키 @@ -29,6 +30,7 @@ lang: ko 데몬에서 성능 문제가 발생한 경우 문제 해결에 도움이 될 수 있는 선택적 타이밍 로그에 대한 섹션도 있습니다. 타이밍 로깅을 활성화하면 자체 개별 로그 파일에 타이밍 정보가 입력됩니다. + ### {% include product %} 설정 `[{% include product %}]` 섹션 아래에서 기본 토큰을 `server`, `name` 및 `key`에 대한 올바른 값으로 변경합니다. 이러한 값은 {% include product %}에 연결하는 표준 API 스크립트에 제공한 값과 같아야 합니다. @@ -42,6 +44,7 @@ key: e37d855e4824216573472846e0cb3e49c7f6f7b1 ``` + ### 플러그인 설정 실행할 플러그인을 찾을 위치를 {% include product %}EventDaemon에 알려야 합니다. `[plugins]` 섹션 아래에서 기본 토큰을 `paths`에 대한 올바른 값으로 변경합니다. @@ -57,6 +60,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins 처음 시작할 때 테스트하기에 적절한 플러그인은 `logArgs.py` 디렉토리에 있는 `/usr/local/shotgun/{% include product %}Events/src/examplePlugins` 플러그인입니다. 이를 지정한 플러그인 폴더로 복사하고 이 폴더를 사용하여 테스트를 진행합니다. + ### shotgunEventDaemon.conf의 위치 기본적으로 데몬은 {% include product %}EventDaemon.py가 있는 디렉토리와 `/etc` 디렉토리에서 shotgunEventDaemon.conf 파일을 찾습니다. conf 파일을 다른 디렉토리에 저장해야 하는 경우 현재 디렉토리에서 해당 위치에 대한 심볼릭 링크를 생성하는 것이 좋습니다. @@ -66,6 +70,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins {% include info title="참고" content="**Windows의 경우** Windows에 `/etc`가 존재하지 않으므로 구성 파일은 Python 파일과 동일한 디렉터리에 있어야 합니다." %} + ## 데몬 테스트 데몬은 백그라운드에서 실행되기 때문에 테스트하기가 어려울 수 있습니다. 항상 어떻게 작동하고 있는지 확인할 수 있는 명확한 방법이 없습니다. 다행스럽게도 {% include product %}EventDaemon에는 이를 포그라운드 프로세스로 실행할 수 있는 옵션이 있습니다. 이제 최소 필수 설정을 완료했으므로 데몬을 테스트하고 어떻게 되는지 확인해 보겠습니다. @@ -85,7 +90,7 @@ INFO:engine:Last event id (248429) from the {% include product %} database. {% include info title="참고" content="logArgs.py 파일에는 적절한 값을 입력해야 하는 변수가 있습니다. 로깅이 올바르게 작동하려면 shotgunEventDaemon.conf 파일에 사용된 것과 동일한 값을 포함하도록 '$DEMO_SCRIPT_NAMES$' 및 '$DEMO_API_KEY$'를 편집해야 합니다." %} -로그 파일에 로깅된 내용이 보이지 않는 경우 {% include product %}EventDaemon.conf에서 로그 관련 설정을 확인하여 ``logging`` 값이 로그 INFO 수준 메시지로 설정되어 있고 +로그 파일에 로깅된 내용이 보이지 않는 경우 {% include product %}EventDaemon.conf에서 로그 관련 설정을 확인하여 `logging` 값이 로그 INFO 수준 메시지로 설정되어 있고 ``` logging: 20 @@ -100,6 +105,7 @@ reg.logger.setLevel(logging.INFO) 모두 올바르게 표시된다고 가정하면, {% include product %}EventDaemon 프로세스를 중지하려는 경우 터미널에 `-c`을 입력하면 스크립트가 종료되는 것을 확인할 수 있습니다. + ## 데몬 실행 테스트 시 모든 것이 순조로웠다고 가정하면, 이제 의도대로 백그라운드에서 데몬을 실행할 수 있습니다. @@ -116,7 +122,7 @@ kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 gre root 4020 0.0 0.1 2443824 4876 ?? S 9:36AM 0:00.02 /usr/bin/python ./{% include product %}EventDaemon.py start ``` -반환된 두 번째 행에서 데몬이 실행 중임을 알 수 있습니다. 첫 번째 행은 방금 실행한 명령과 일치합니다. 따라서 실행되고 있음을 알 수는 있지만 플러그인이 *제대로* 작동하고 있으며 의도된 역할을 수행하고 있는지 확인하기 위해 로그 파일을 확인해 출력된 내용이 있는지 알아볼 수 있습니다. +반환된 두 번째 행에서 데몬이 실행 중임을 알 수 있습니다. 첫 번째 행은 방금 실행한 명령과 일치합니다. 따라서 실행되고 있음을 알 수는 있지만 플러그인이 _제대로_ 작동하고 있으며 의도된 역할을 수행하고 있는지 확인하기 위해 로그 파일을 확인해 출력된 내용이 있는지 알아볼 수 있습니다. ``` $ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon @@ -134,14 +140,16 @@ $ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon 2011-09-09 09:45:31,228 - plugin.logArgs.logArgs - INFO - {'attribute_name': 'sg_status_list', 'event_type': 'Shotgun_Shot_Change', 'entity': {'type': 'Shot', 'name': 'bunny_010_0010', 'id': 860}, 'project': {'type': 'Project', 'name': 'Big Buck Bunny', 'id': 65}, 'meta': {'entity_id': 860, 'attribute_name': 'sg_status_list', 'entity_type': 'Shot', 'old_value': 'omt', 'new_value': 'ip', 'type': 'attribute_change'}, 'user': {'type': 'HumanUser', 'name': 'Kevin Porterfield', 'id': 35}, 'session_uuid': '450e4da2-dafa-11e0-9ba7-0023dffffeab', 'type': 'EventLogEntry', 'id': 276560} ``` -출력의 정확한 세부 정보는 다를 수 있지만, 플러그인이 의도된 작업을 수행해 이벤트가 로그 파일에 로깅된 것이 확인되어야 합니다. 로그 파일에 로깅된 내역이 보이지 않을 경우, ``logging`` 값이 INFO 수준 메시지를 로깅하도록 설정되어 있고 logArgs 플러그인도 INFO 수준 메시지를 표시하도록 구성되어 있는지 확인하기 위해 {% include product %}EventDaemon.conf에서 로그 관련 설정을 확인하십시오. +출력의 정확한 세부 정보는 다를 수 있지만, 플러그인이 의도된 작업을 수행해 이벤트가 로그 파일에 로깅된 것이 확인되어야 합니다. 로그 파일에 로깅된 내역이 보이지 않을 경우, `logging` 값이 INFO 수준 메시지를 로깅하도록 설정되어 있고 logArgs 플러그인도 INFO 수준 메시지를 표시하도록 구성되어 있는지 확인하기 위해 {% include product %}EventDaemon.conf에서 로그 관련 설정을 확인하십시오. + ### 로깅에 대한 참고 사항 로그 회전은 {% include product %} 데몬의 기능이라는 점에 유의하십시오. 로그는 매일 밤 자정에 회전되며 플러그인당 10개의 일일 파일이 보관됩니다. + ## 일반적인 오류 다음은 직면할 수 있는 몇몇 일반적인 오류와 그 해결 방법에 대한 몇 가지 설명입니다. 문제가 해결되지 않을 경우 언제든지 {% include product %} 소프트웨어 팀(support@shotgunsoftware.com)으로 문의해 주십시오. 저희가 도와드리겠습니다. @@ -163,9 +171,11 @@ shotgunEventDaemon.conf 파일에서 플러그인 경로를 지정해야 합니 sudo로 실행해야 하는데 `PYTHONPATH`가 올바르게 설정되어 있는 경우, sudo가 환경 변수를 재설정한다는 점을 기억하십시오. `PYTHONPATH`를 유지하거나 sudo -e(?)를 실행하도록 sudoers 파일을 편집할 수 있습니다. + ## 구성 파일 설정 리스트 + ### 데몬 설정 다음은 일반적인 데몬 작동 설정입니다. @@ -184,7 +194,7 @@ pidFile: /var/log/shotgunEventDaemon.pid eventIdFile은 데몬이 마지막으로 처리된 {% include product %} 이벤트의 ID를 저장할 위치를 나타냅니다. 이를 통해 데몬은 마지막 종료 시 중지된 지점으로 복귀할 수 있으므로 이벤트가 누락되지 않습니다. 데몬이 마지막으로 종료된 이후의 이벤트를 무시하려면 데몬을 시작하기 전에 이 파일을 제거해 시작된 후 새로 생성된 이벤트만 데몬이 처리하게 합니다. -이 파일은 *각* 플러그인에 대한 마지막 이벤트 ID를 추적하여 이 정보를 pickle 형식으로 저장합니다. +이 파일은 _각_ 플러그인에 대한 마지막 이벤트 ID를 추적하여 이 정보를 pickle 형식으로 저장합니다. ``` eventIdFile: /var/log/shotgunEventDaemon.id @@ -205,7 +215,7 @@ logMode: 1 **logPath** -로그 파일을 저장할 경로(기본 엔진 및 플러그인 로그 파일 모두) 기본 로그 파일의 이름은 아래의 ``logFile`` 설정에 의해 제어됩니다. +로그 파일을 저장할 경로(기본 엔진 및 플러그인 로그 파일 모두) 기본 로그 파일의 이름은 아래의 `logFile` 설정에 의해 제어됩니다. ``` logPath: /var/log/shotgunEventDaemon @@ -224,6 +234,7 @@ logFile: shotgunEventDaemon **logging** 로그 파일로 전송된 로그 메시지의 임계값 수준입니다. 이 값은 기본 디스패치 엔진의 기본값이며 플러그인별 기준으로 재정의될 수 있습니다. 이 값은 Python 로깅 모듈로 전달됩니다. 가장 일반적인 값은 다음과 같습니다. + - **10:** 디버그 - **20:** 정보 - **30:** 경고 @@ -274,6 +285,7 @@ fetch_interval = 5 ``` + ### {% include product %} 설정 다음은 {% include product %} 인스턴스와 관련된 설정입니다. @@ -322,6 +334,7 @@ use_session_uuid: True {% include info title="참고" content="ShotGrid UI는 원래 이벤트를 생성한 브라우저 세션에 *대해서만* 업데이트를 실시간으로 표시합니다. 동일한 페이지가 열려 있는 다른 브라우저 창에는 실시간 업데이트가 표시되지 않습니다." %} + ### 플러그인 설정 **paths** @@ -335,6 +348,7 @@ paths: /usr/local/shotgun/plugins {% include info title="참고" content="여기에는 기본값이 없습니다. 플러그인 파일(예: Windows의 경우 `/usr/local/shotgun/shotgunEvents/plugins` 또는 `C:\shotgun\shotgunEvents\plugins`)의 위치로 값을 설정해야 합니다." %} + ### 이메일 설정 로그를 지속적으로 추적하기보다는 활성 알림 시스템을 가지고 있을 것이라는 점을 알고 있으므로 이 방식이 오류 보고에 사용됩니다. diff --git a/docs/ko/event-daemon/event-daemon-example-plugins.md b/docs/ko/event-daemon/event-daemon-example-plugins.md index 7d7d8a0b8..f9feaf1b1 100644 --- a/docs/ko/event-daemon/event-daemon-example-plugins.md +++ b/docs/ko/event-daemon/event-daemon-example-plugins.md @@ -12,8 +12,11 @@ lang: ko 이 페이지에는 누구나 시작할 수 있는 몇 가지 간단한 예제가 나와 있습니다. 이 코드를 복사해서 붙여넣으면 실행됩니다(참고: `script_name` 및 `script_key` 값을 설치에 해당되는 값으로 업데이트해야 함). 먼저, 다음은 SG 이벤트 코드를 기록해야 하는 템플릿입니다. + ## 1. 코드 템플릿 + ### 이를 복사하여 붙여넣으면 새 플러그인을 시작할 수 있습니다. + ```python """ Necessary Documentation of the code @@ -51,11 +54,15 @@ def registerCallbacks(reg): # } def entry_function_call(sg, logger, event, args): # Now do stuff - pass + pass ``` + ## 2. 노트 제목 이름 바꾸기 + ### `New` 엔티티 이벤트 작업 + 이 작업은 간단해서 시작하기 좋지만 `Shotgun_Entity_New` 이벤트를 포착하는 것은 매우 까다로운 측면이기도 합니다. + ```python import time from pprint import pprint @@ -98,14 +105,18 @@ def Function_Name(sg, logger, event, args): logger.info('Dates are not prepended for notes in project id 116 - Software Development') return ``` + 함수 본문의 첫 번째 줄인 `sleep` 호출에 주목합니다. `new` 이벤트가 처리되는 방식을 다루기 때문입니다. + 1. SG에서 새 엔티티가 생성될 때는 완전한 형태를 갖추지 않습니다. 즉, 엔티티를 사용할 때 해당 엔티티를 완전히 정의하는 데 필요한 모든 속성이 포함되어 있지 않습니다. 실제로 이 예제에서는 SG가 `subject` 이벤트를 내보내는 경우 `Shotgun_Note_New` 속성이 노트 엔티티에 있음을 보장할 수 없습니다. 2. 필요한 모든 속성을 추가하기 위해 SG는 필요한 경우 SG가 모든 단일 속성을 엔티티에 추가하고 해당 속성의 값을 업데이트하는 일련의 `Shotgun_Note_Change` 이벤트를 게시합니다. 3. 이렇게 하면 여러 개의 이벤트가 생성됩니다. 즉, 서로 다른 두 개의 속성이 있어야 하고 `sleep` 요소를 코드에 기록하지 않은 경우에는, 새로운 속성이 추가되고 값이 설정된 이벤트만 검색하는 내부 메타데이터 및 `Shotgun_Note_Change` 이벤트를 모두 거쳐야 합니다. 이 작업은 복잡한 프로세스이며 많은 `Shotgun_Note_Change` 이벤트 검색을 효과적으로 처리합니다(생성 시 노트별로 하나씩만). 4. 적합한 솔루션은 `Shotgun_Entity_New`를 사용하고 짧은 기간 동안 스크립트가 절전 모드로 전환되도록 하는 것입니다. 절전 모드가 끝나면 SG는 해당 엔티티에 필요한 모든 속성을 업데이트한 다음 필요한 필드에 대해 동일한 엔티티를 다시 쿼리할 수 있습니다. ## 2. 필드 삭제 경고 + ### 노트 생성, 필드를 엔티티로 사용, 엔티티 삭제 이벤트 + ```python """ @@ -202,4 +213,5 @@ def trashedFieldWarning(sg, logger, event, args): CreateNote(sg, logger, event) ``` + 매우 간단한 스크립트입니다. 삭제된 필드를 확인하는 특별한 로직이 없습니다. 필드가 삭제된 경우 노트가 생성되어 해당 정보를 알아야 하는 사용자 그룹으로 전송됩니다. 내 부서에서 그룹 ID를 'programmers' 그룹으로 설정하고 노트의 프로젝트 ID는 'development' 프로젝트로 설정했습니다. diff --git a/docs/ko/event-daemon/event-daemon-installation.md b/docs/ko/event-daemon/event-daemon-installation.md index 5cff5a0c1..91bb503a2 100644 --- a/docs/ko/event-daemon/event-daemon-installation.md +++ b/docs/ko/event-daemon/event-daemon-installation.md @@ -5,23 +5,24 @@ pagename: event-daemon-installation lang: ko --- - # 설치 다음 안내서는 스튜디오에 대한 {% include product %}Events 구성을 지원합니다. + ## 시스템 요구사항 데몬은 Python이 설치되어 있고 {% include product %} 서버에 대한 네트워크 액세스 권한이 있는 모든 시스템에서 실행할 수 있습니다. ** 서버 자체에서 실행할 필요가 **없습니다{% include product %}. 실제로 {% include product %}의 호스트된 버전을 사용하는 경우 이는 옵션이 아닙니다. 그러나 원하는 경우 {% include product %} 서버에서 실행할 수 있습니다. 그렇지 않으면 서버가 해당 작업을 수행합니다. -* Python v2.6, v2.7 또는 3.7 -* [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) - * Python v2.6 또는 v2.7의 경우 v3.0.37 이상을 사용하고 Python 3.7의 경우 v3.1.0 이상을 사용합니다. - * 어떤 경우든 [최신 Python API 버전](https://github.com/shotgunsoftware/python-api/releases)을 사용하고 이 종속성을 시간이 지남에 따라 계속 업데이트하는 것이 좋습니다. -* {% include product %} 서버에 대한 네트워크 액세스 +- Python v2.6, v2.7 또는 3.7 +- [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) + - Python v2.6 또는 v2.7의 경우 v3.0.37 이상을 사용하고 Python 3.7의 경우 v3.1.0 이상을 사용합니다. + - 어떤 경우든 [최신 Python API 버전](https://github.com/shotgunsoftware/python-api/releases)을 사용하고 이 종속성을 시간이 지남에 따라 계속 업데이트하는 것이 좋습니다. +- {% include product %} 서버에 대한 네트워크 액세스 + ## {% include product %} API 설치 Python이 이미 컴퓨터에 설치되어 있다고 가정하면 {% include product %} 이벤트 데몬에서 Python API를 사용하여 {% include product %} 서버에 연결할 수 있도록 {% include product %} Python API를 설치해야 합니다. 다음과 같은 방법으로 이 작업을 수행할 수 있습니다. @@ -45,6 +46,7 @@ ImportError: No module named shotgun_api3 ``` + ## {% include product %}Events 설치 {% include product %}Events 설치 위치는 사용자가 임의로 선택할 수 있습니다. 다시 말하지만 Python 및 {% include product %} API가 컴퓨터에 설치되어 있고 {% include product %} 서버에 대한 네트워크 액세스 권한이 있는 경우 어디에서나 실행할 수 있습니다. 그러나 스튜디오에 적합한 위치(예: `/usr/local/shotgun/shotgunEvents`)에 설치하는 것이 타당하므로 이 위치를 예제에서 사용합니다. @@ -54,6 +56,7 @@ ImportError: No module named shotgun_api3 {% include info title="참고" content="**Windows:** Windows 서버가 있는 경우 `C:\shotgun\shotgunEvents`를 사용할 수 있지만 이 설명서에서는 Linux 경로를 사용합니다." %} + ### 소스 복제 컴퓨터에 `git`가 설치된 경우 소스를 가져오는 가장 쉬운 방법은 프로젝트를 복제하는 것입니다. 이러한 방식으로 업데이트를 쉽게 가져와 버그 수정 및 새로운 기능으로 최신 상태를 유지할 수도 있습니다. @@ -66,6 +69,7 @@ $ git clone git://github.com/shotgunsoftware/shotgunEvents.git {% include info title="경고" content="아무 것도 손실되지 않도록 GitHub에서 업데이트를 가져오기 전에 항상 shotgunEvents의 구성, 플러그인 및 모든 수정 사항을 백업해야 합니다. 또는 자체 변경 리포지토리를 유지할 수 있도록 프로젝트를 직접 분기(fork)합니다. :)" %} + ### 아카이브 다운로드 컴퓨터에 `git`가 없거나 단순히 소스 아카이브를 다운로드하려는 경우에는 다음 단계를 수행하여 시작할 수 있습니다. @@ -108,6 +112,7 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src ``` + ### 설치 요구사항 리포지토리의 루트에 `requirements.txt` 파일이 제공됩니다. 이 파일을 사용하여 필요한 패키지를 설치해야 합니다. @@ -116,14 +121,14 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src $ pip install -r /path/to/requirements.txt ``` - + ### Windows 세부 사항 Windows 시스템에 다음 중 하나가 필요합니다. -* [PyWin32](http://sourceforge.net/projects/pywin32/)와 함께 Python이 설치됨 -* [Active Python](http://www.activestate.com/activepython) +- [PyWin32](http://sourceforge.net/projects/pywin32/)와 함께 Python이 설치됨 +- [Active Python](http://www.activestate.com/activepython) 활성 Python은 {% include product %} 이벤트 데몬을 Windows 서비스 아키텍처와 통합하는 데 필요한 PyWin32 모듈과 함께 제공됩니다. diff --git a/docs/ko/event-daemon/event-daemon-plugins.md b/docs/ko/event-daemon/event-daemon-plugins.md index 4a88407b5..67ef57cf8 100644 --- a/docs/ko/event-daemon/event-daemon-plugins.md +++ b/docs/ko/event-daemon/event-daemon-plugins.md @@ -7,7 +7,7 @@ lang: ko # 플러그인 개요 -플러그인 파일은 구성 파일에 지정된 플러그인 경로의 *.py* 파일입니다. +플러그인 파일은 구성 파일에 지정된 플러그인 경로의 _.py_ 파일입니다. 코드 다운로드 시 `src/examplePlugins` 폴더에 몇 가지 예시 플러그인이 제공됩니다. 이러한 플러그인은 생성된 특정 이벤트를 찾기 위해 자체 플러그인을 빌드하고 해당 이벤트에 작동하여 {% include product %} 인스턴스에서 다른 값을 변경하는 방법에 대한 간단한 예제를 제공합니다. @@ -18,6 +18,7 @@ lang: ko {% include product %} 이벤트 처리 플러그인에는 두 가지 주요 부분이 있습니다. 콜백 등록 함수와 콜백 수입니다. + ## registerCallbacks 함수 프레임워크에서 로드하려면 플러그인이 최소한 다음 함수를 구현해야 합니다. @@ -38,6 +39,7 @@ def registerCallbacks(reg): 원하는 수만큼 함수를 등록할 수 있으며, 파일의 모든 함수를 이벤트 처리 콜백으로 등록해야 하는 것은 아닙니다. + ## 콜백 시스템에 등록할 콜백은 다음 4개의 인수를 사용해야 합니다. @@ -50,6 +52,7 @@ def registerCallbacks(reg): {% include info title="경고" content="플러그인에서 원하는 모든 작업을 수행할 수 있지만 예외가 프레임워크에 다시 발생하면 디스크의 파일이 변경될 때까지(읽기: 수정) 잘못된 콜백(및 포함된 모든 콜백)이 있는 플러그인이 비활성화됩니다." %} + ## 로깅 이벤트 플러그인에서 print 문을 사용하는 것은 권장되지 않습니다. Python 표준 라이브러리에서 표준 로깅 모듈을 사용하는 것이 좋습니다. 로거 객체는 다양한 함수로 제공됩니다. @@ -71,6 +74,7 @@ def exampleCallback(sg, logger, event, args): 이벤트 프레임워크가 데몬으로 실행 중인 경우 이 프레임워크가 파일에 로깅되며, 그렇지 않으면 stdout에 로깅됩니다. + ## 강력한 플러그인 빌드 데몬은 {% include product %}에 대해 쿼리를 실행하지만 실패할 경우 find() 명령을 재시도하는 기본 기능이 포함되어 있어 데몬 자체에 특정한 수준의 안전성을 제공합니다. diff --git a/docs/ko/event-daemon/event-daemon-technical-details.md b/docs/ko/event-daemon/event-daemon-technical-details.md index eb35346d2..3273053df 100644 --- a/docs/ko/event-daemon/event-daemon-technical-details.md +++ b/docs/ko/event-daemon/event-daemon-technical-details.md @@ -8,6 +8,7 @@ lang: ko # 기술 개요 + ## 이벤트 유형 알림을 받을 수 있게 트리거를 등록할 수 있는 이벤트 유형은 일반적으로 다음 양식을 따릅니다. `Shotgun_[entity_type]_[New|Change|Retirement|Revival]`. 다음은 이 패턴의 몇 가지 예입니다. @@ -34,13 +35,16 @@ lang: ko Toolkit_Desktop_ProjectLaunch Toolkit_Desktop_AppLaunch Toolkit_Folders_Create - Toolkit_Folders_Delete + Toolkit_Folders_Delete 이 목록은 완벽하지는 않지만 시작하기에 적합합니다. {% include product %} 사이트의 활동 및 이벤트 유형에 대해 자세히 알아보려면 다른 엔티티 유형의 다른 그리드 페이지를 통해 필터링하고 검색할 수 있는 EventLogEntries 페이지를 참조하십시오. ### 썸네일의 이벤트 로그 항목 -엔티티에 대한 새 썸네일이 업로드되면 ``` `Type` == `Shotgun__Change` ```인 이벤트 로그 항목이 생성됩니다(예: `Shotgun_Shot_Change`). -1. ```‘is_transient’``` 필드 값은 true로 설정됩니다. + +엔티티에 대한 새 썸네일이 업로드되면 `` `Type` == `Shotgun__Change` ``인 이벤트 로그 항목이 생성됩니다(예: `Shotgun_Shot_Change`). + +1. `‘is_transient’` 필드 값은 true로 설정됩니다. + ``` { "type": "attribute_change","attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -48,7 +52,9 @@ lang: ko "is_transient": true } ``` -2. 썸네일을 사용할 수 있게 되면 이제 ```‘is_transient’``` 필드 값을 false로 설정하여 새 이벤트 로그 항목이 생성됩니다. + +2. 썸네일을 사용할 수 있게 되면 이제 `‘is_transient’` 필드 값을 false로 설정하여 새 이벤트 로그 항목이 생성됩니다. + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -56,7 +62,9 @@ lang: ko "is_transient": false } ``` + 3. 썸네일을 다시 업데이트하면 다음 새 이벤트 로그 항목이 표시됩니다. + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -69,10 +77,11 @@ lang: ko "is_transient": false } ``` -4. 첨부 파일의 썸네일이 자리 표시자 썸네일인 경우 ```‘old_value’``` 필드는 null로 설정됩니다. +4. 첨부 파일의 썸네일이 자리 표시자 썸네일인 경우 `‘old_value’` 필드는 null로 설정됩니다. + ## 플러그인 처리 순서 각 이벤트는 항상 동일한 예측 가능한 순서로 처리되므로 플러그인이나 콜백이 상호 종속적인 경우 처리를 안전하게 구성할 수 있습니다. @@ -88,6 +97,7 @@ lang: ko 하나 이상의 콜백과 같은 플러그인에서 상태를 공유해야 하는 기능을 유지하는 것이 좋습니다. + ## 상태 공유 여러 콜백에 대해 상태를 공유해야 하는 여러 옵션이 있습니다. @@ -97,8 +107,8 @@ lang: ko - `args`[`Registrar.registerCallback`API#wiki-registerCallback](을 호출할 때 ) 인수로 전달된 변경 가능한 것. 설계의 상태 객체 또는 `dict`처럼 간단한 것. 선호. - 객체 인스턴스에 대해 `__call__`과 같은 콜백을 구현하고 콜백 객체 초기화 시 일부 공유 상태 객체를 제공합니다. 가장 강력하면서도 가장 어려운 방법입니다. 위의 args 인수 방법에 비해 중복될 수 있습니다. - + ## 이벤트 백로그 이 프레임워크는 모든 플러그인이 관심 있는 모든 단일 이벤트를 예외 없이 정확히 한 번만 처리하도록 설계되었습니다. 이를 위해, 프레임워크는 각 플러그인에 대해 처리되지 않은 이벤트의 백로그를 저장하고 각 플러그인이 제공된 마지막 이벤트를 기억합니다. 다음은 백로그가 발생할 수 있는 상황에 대한 설명입니다. diff --git a/docs/ko/event-daemon/event-daemon.md b/docs/ko/event-daemon/event-daemon.md index 20b4a3129..913240f6c 100644 --- a/docs/ko/event-daemon/event-daemon.md +++ b/docs/ko/event-daemon/event-daemon.md @@ -5,13 +5,12 @@ pagename: event-daemon lang: ko --- - # {% include product %} 이벤트 프레임워크 + 이 소프트웨어는 [Rodeo Fx](http://rodeofx.com) 및 Oblique의 지원을 받아 [Patrick Boucher](http://www.patrickboucher.com)에서 처음 개발했습니다. 이제 [{% include product %} 소프트웨어](http://www.shotgunsoftware.com) [오픈 소스 이니셔티브](https://github.com/shotgunsoftware)의 일부가 되었습니다. 이 소프트웨어는 라이선스 파일 또는 [오픈 소스 이니셔티브](http://www.opensource.org/licenses/mit-license.php) 웹 사이트에서 찾을 수 있는 MIT 라이선스로 제공됩니다. - ## 개요 {% include product %} 이벤트 스트림에 액세스하려면 이벤트 테이블을 모니터링하고 새로운 이벤트를 파악하여 처리하는 작업을 반복하는 것이 좋습니다. @@ -40,9 +39,7 @@ lang: ko - 콜백의 번호를 프레임워크에 등록 - 프레임워크에서 이벤트를 제공하는 경우 단일 이벤트 처리 - ## 프레임워크의 이점 - 스크립트당이 아니라 모든 스크립트에 대해 하나의 모니터링 메커니즘만 처리합니다. - 네트워크 및 데이터베이스 로드를 최소화합니다(단일 모니터만으로 여러 이벤트 처리 플러그인에 이벤트 공급). - diff --git a/docs/ko/guides/pipeline-integrations.md b/docs/ko/guides/pipeline-integrations.md index e167cd24c..8dd284375 100644 --- a/docs/ko/guides/pipeline-integrations.md +++ b/docs/ko/guides/pipeline-integrations.md @@ -7,4 +7,4 @@ lang: ko # Pipeline Integrations -여기서는 툴킷 개발자가 시작할 수 있는 안내서, 튜토리얼, 동영상 및 기타 컨텐츠를 확인할 수 있습니다. \ No newline at end of file +여기서는 툴킷 개발자가 시작할 수 있는 안내서, 튜토리얼, 동영상 및 기타 컨텐츠를 확인할 수 있습니다. diff --git a/docs/ko/guides/pipeline-integrations/administration.md b/docs/ko/guides/pipeline-integrations/administration.md index 3b750c112..84c2e993c 100644 --- a/docs/ko/guides/pipeline-integrations/administration.md +++ b/docs/ko/guides/pipeline-integrations/administration.md @@ -5,4 +5,4 @@ pagename: toolkit-administration lang: ko --- -# Administration \ No newline at end of file +# Administration diff --git a/docs/ko/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md b/docs/ko/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md index a600db73a..b6c41a592 100644 --- a/docs/ko/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ b/docs/ko/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md @@ -21,11 +21,11 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에 툴킷에는 세 가지 주요 구성요소가 있습니다. -- _엔진_은 호스트 응용프로그램(예: Maya 또는 Nuke)과 Sgtk 앱 간에 전환 계층 또는 어댑터를 제공합니다. 앱은 일반적으로 Python과 PySide를 사용하고 엔진은 호스트 응용프로그램을 표준화된 방식으로 표시하는 작업을 담당합니다. 예를 들어 호스트 응용프로그램 상위에 PySide가 없으면 추가합니다. -- _앱_은 비즈니스 로직을 제공하며 본질적으로 특정 작업을 수행하는 도구입니다. 앱은 특정 호스트 응용프로그램에서 작업하거나 둘 이상의 호스트 응용프로그램에서 실행되도록 설계할 수 있습니다. -- _프레임워크_는 엔진, 앱 또는 기타 프레임워크에서 사용할 수 있는 라이브러리입니다. 프레임워크를 사용하면 여러 앱 간에 공유되는 코드 또는 동작을 보다 쉽게 관리할 수 있습니다. +- *엔진*은 호스트 응용프로그램(예: Maya 또는 Nuke)과 Sgtk 앱 간에 전환 계층 또는 어댑터를 제공합니다. 앱은 일반적으로 Python과 PySide를 사용하고 엔진은 호스트 응용프로그램을 표준화된 방식으로 표시하는 작업을 담당합니다. 예를 들어 호스트 응용프로그램 상위에 PySide가 없으면 추가합니다. +- *앱*은 비즈니스 로직을 제공하며 본질적으로 특정 작업을 수행하는 도구입니다. 앱은 특정 호스트 응용프로그램에서 작업하거나 둘 이상의 호스트 응용프로그램에서 실행되도록 설계할 수 있습니다. +- *프레임워크*는 엔진, 앱 또는 기타 프레임워크에서 사용할 수 있는 라이브러리입니다. 프레임워크를 사용하면 여러 앱 간에 공유되는 코드 또는 동작을 보다 쉽게 관리할 수 있습니다. -_환경 파일_에는 엔진, 앱 및 프레임워크 컬렉션에 대한 구성 설정이 있습니다. 이러한 컬렉션을 환경이라고 합니다. Sgtk는 파일이나 작업자별로 다른 환경을 시작합니다. 예를 들어 샷 프로덕션용 환경과 리깅용 환경을 구성할 수 있습니다. 각 환경은 단일 yaml 파일입니다. +*환경 파일*에는 엔진, 앱 및 프레임워크 컬렉션에 대한 구성 설정이 있습니다. 이러한 컬렉션을 환경이라고 합니다. Sgtk는 파일이나 작업자별로 다른 환경을 시작합니다. 예를 들어 샷 프로덕션용 환경과 리깅용 환경을 구성할 수 있습니다. 각 환경은 단일 yaml 파일입니다. 환경 파일은 `//software/shotgun//config/env`에 있습니다. @@ -73,7 +73,7 @@ yaml 파일의 기본 형식은 다음과 같습니다. 환경 파일에 정의된 각 앱, 엔진 또는 프레임워크에는 실행할 앱 버전과 다운로드 위치를 정의하는 `location` 매개변수가 있습니다. 대부분의 경우 `tank updates` 및 `tank install` 명령에 의해 자동으로 처리됩니다. 그러나 구성을 직접 편집하는 경우 툴킷을 배포하고 구조화할 수 있도록 하는 다양한 옵션을 사용할 수 있습니다. -툴킷은 현재 다음 위치 _디스크립터_를 사용한 앱 설치 및 관리를 지원합니다. +툴킷은 현재 다음 위치 *디스크립터*를 사용한 앱 설치 및 관리를 지원합니다. - **app_store** 디스크립터는 툴킷 App Store의 항목을 나타냅니다. - **{% include product %}** 디스크립터는 {% include product %}에 저장된 항목을 나타냅니다. @@ -90,13 +90,25 @@ yaml 파일의 기본 형식은 다음과 같습니다. 때로는 앱이나 엔진을 일시적으로 비활성화하는 것이 유용할 수 있습니다. 이 작업을 수행할 때는 앱 또는 엔진을 로드해야 하는 위치를 지정하는 위치 사전에 `disabled: true` 매개변수를 추가하는 것이 좋습니다. 이 구문은 서로 다른 위치 유형 모두에서 지원됩니다. 예를 들어 다음과 같이 표시될 수 있습니다. ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "disabled": true} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "disabled": true, + } ``` 또는 특정 플랫폼에서만 앱을 실행하려면 특별한 `deny_platforms` 설정을 사용하여 지정할 수 있습니다. ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "deny_platforms": [windows, linux]} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "deny_platforms": [windows, linux], + } ``` _deny_platforms_ 매개변수의 가능한 값은 `windows`, `linux` 및 `mac`입니다. diff --git a/docs/ko/guides/pipeline-integrations/administration/beyond-your-first-project.md b/docs/ko/guides/pipeline-integrations/administration/beyond-your-first-project.md index 87d18b532..bfb9498df 100644 --- a/docs/ko/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ b/docs/ko/guides/pipeline-integrations/administration/beyond-your-first-project.md @@ -5,12 +5,10 @@ pagename: beyond-your-first-project lang: ko --- - # 첫 번째 프로젝트 실행 이후 작업 이제 {% include product %} 데스크톱을 사용하여 첫 번째 프로젝트를 실행한 후의 작업에 대해 설명하겠습니다. 여기서는 공통 질문 및 주제를 다루고 유용한 문서 리소스를 소개합니다. - # 툴킷 소개 툴킷 소개 이 문서를 읽고 있다면 {% include product %} 데스크톱을 사용하여 첫 번째 {% include product %} Pipeline Toolkit 프로젝트를 성공적으로 설치했다는 것을 의미합니다. @@ -46,7 +44,6 @@ lang: ko - [툴킷 응용프로그램 시작 관리자](https://support.shotgunsoftware.com/hc/ko/articles/219032968) - [명령행 인수 전달](https://support.shotgunsoftware.com/hc/ko/articles/219032968#Use%20Command%20Line%20Arguments%20at%20Launch) - ## {% include product %} 통합 툴킷은 {% include product %}와 통합되며 UI의 다양한 부분에 특별한 툴킷 액션 메뉴 항목을 추가하여 기존 인터페이스를 확장합니다. @@ -57,7 +54,7 @@ lang: ko ## {% include product %} UI에 게시 추가 -툴킷을 설치한 후에는 일반적으로 {% include product %} UI 레이아웃을 약간 조정하는 것이 좋습니다. {% include product %} Pipeline Toolkit은 파일을 게시할 때 _게시 엔티티_를 만들므로 에셋 및 샷과 같은 주요 에셋에 _게시(Publishes) 탭_을 추가하기에 편리합니다. 이렇게 하려면 관리자(admin)로 로그인해야 합니다. 에셋 또는 샷으로 이동하고 _디자인 모드_를 시작합니다. +툴킷을 설치한 후에는 일반적으로 {% include product %} UI 레이아웃을 약간 조정하는 것이 좋습니다. {% include product %} Pipeline Toolkit은 파일을 게시할 때 *게시 엔티티*를 만들므로 에셋 및 샷과 같은 주요 에셋에 *게시(Publishes) 탭*을 추가하기에 편리합니다. 이렇게 하려면 관리자(admin)로 로그인해야 합니다. 에셋 또는 샷으로 이동하고 *디자인 모드*를 시작합니다. ![](images/Beyond-your-first-project/design_mode.png) @@ -65,7 +62,7 @@ lang: ko ![](images/Beyond-your-first-project/create_tab.png) -이제 _저장(Save)_을 클릭하여 변경 사항을 저장합니다. 설정이 끝났습니다. +이제 *저장(Save)*을 클릭하여 변경 사항을 저장합니다. 설정이 끝났습니다. 참고: 사용자가 새 탭을 만들 때 {% include product %}는 몇 개의 기본 필드를 선택하여 가져옵니다. 게시할 필드를 몇 개 더 추가할 수 있습니다. 새 게시 탭에서 볼 수 있는 스프레드시트의 오른쪽 상단에 있는 작은 더하기 버튼을 클릭하면 됩니다. 다음 필드를 추가하는 것이 좋습니다. @@ -147,7 +144,7 @@ Python 경로는 수동으로 편집할 수 있는 구성 파일에 저장됩니 응용프로그램을 시작할 때 필요한 모든 구조가 디스크상에 있고 사전에 준비되도록 하기 위해 디스크에 폴더를 자동으로 만드는 폴더 생성 시스템이 툴킷과 함께 제공됩니다. 이에 대한 구성은 위에 표시된 `schema` 폴더에서 찾을 수 있습니다. -또한 툴킷 _템플릿 시스템_을 함께 사용하면 게시, 작업 파일, 렌더링 등 구성할 수 있는 파일에 대한 다양한 경로를 쉽게 정의할 수 있습니다. 이 항목은 위의 `templates.yml` 파일에 저장됩니다. +또한 툴킷 *템플릿 시스템*을 함께 사용하면 게시, 작업 파일, 렌더링 등 구성할 수 있는 파일에 대한 다양한 경로를 쉽게 정의할 수 있습니다. 이 항목은 위의 `templates.yml` 파일에 저장됩니다. 프로젝트 구성의 이 두 부분을 함께 사용하면 툴킷이 기존 파이프라인에서 이해할 수 있도록 디스크의 위치에 데이터를 기록하는 데 사용되는 다양한 앱을 조정할 수 있습니다. @@ -156,8 +153,7 @@ Python 경로는 수동으로 편집할 수 있는 구성 파일에 저장됩니 - [폴더 구성](https://support.shotgunsoftware.com/hc/ko/articles/219033178#Creating%20folders%20on%20disk%20with%20Sgtk) - [파일 시스템 템플릿](https://support.shotgunsoftware.com/hc/ko/articles/219033178#Configuring%20Templates) -기본적으로 툴킷은 구성된 **앱 및 엔진**의 모음으로 구성됩니다. 이 구성은 `env` 폴더에 있습니다. 위에 설명된 파일 시스템 구성 파일이 디스크상에서의 리소스 _위치_를 정의하면 해당 앱 및 엔진이 있는 환경 구성이 파이프라인이 수행해야 할 _작업_을 정의합니다. - +기본적으로 툴킷은 구성된 **앱 및 엔진**의 모음으로 구성됩니다. 이 구성은 `env` 폴더에 있습니다. 위에 설명된 파일 시스템 구성 파일이 디스크상에서의 리소스 *위치*를 정의하면 해당 앱 및 엔진이 있는 환경 구성이 파이프라인이 수행해야 할 *작업*을 정의합니다. ### Core API 플랫폼 @@ -178,4 +174,3 @@ Python 경로는 수동으로 편집할 수 있는 구성 파일에 저장됩니 TD 및 파이프라인 엔지니어의 커뮤니티는 툴킷의 한 부분을 구성합니다. 우리는 강력하고 유연한 파이프라인 환경으로 툴킷을 함께 개선할 수 있는 역동적인 코드 공유 커뮤니티를 만드는 데 주력하고 있습니다. 궁금한 점이 있거나 기존 게시물 및 논의를 살펴보고 싶다면 [공개 포럼 섹션](https://support.shotgunsoftware.com/hc/en-us/community/topics/200682428-Pipeline-Toolkit-Common-Questions-and-Answers)을 방문하십시오. - diff --git a/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md index 5b466a692..fa07a4069 100644 --- a/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md +++ b/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md @@ -11,33 +11,33 @@ lang: ko ### 엔진 ----------- - -| 통합 | 엔진 | 정보 | -|:-----------:|:------:| ----------- | -| tk-katana | **tk-katana** | 프로젝트 URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
프로젝트 기여: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
프로젝트 유지보수:
프로젝트 설명: Foundry Katana용 {% include product %} 엔진 | -| image_alpha.png | **tk-unreal** | 프로젝트 URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
프로젝트 기여: [Epic Games](http://epicgames.com/)
프로젝트 유지보수:
프로젝트 설명: [Unreal Engine](https://www.unrealengine.com/en-US/)용 {% include product %} 엔진 | -| Substance Painter 로고 | **tk-substancepainter** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: Adobe Substance Painter용 {% include product %} 엔진 | -| Substance Designer 로고 | **tk-substancedesigner** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: Adobe Substance Designer용 {% include product %} 엔진
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | -| tk-modo | **tk-modo** | 프로젝트 URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
프로젝트 기여: Lutz Pälike 및 [Walking The Dog](http://www.walkingthedog.be/)
프로젝트 유지보수:
프로젝트 설명: Foundry Modo용 {% include product %} 엔진 | -| icon_256.png | **tk-clarisse** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Clarisse iFX](https://www.isotropix.com/products)용 {% include product %} 엔진으로, 인공배경 배치, 룩 디벨롭먼트, 조명 및 렌더링을 위한 완전한 대화식 CG 툴셋입니다. | -| 1024px-Natron_icon.svg.png | **tk-natron** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Natron](https://natrongithub.github.io/)용 {% include product %} 엔진으로, 무료 오픈 소스 노드 기반 소프트웨어 응용프로그램입니다. | -| icon_256.png | **tk-harmony** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Toon Boom Harmony](https://www.toonboom.com/products/harmony)용 {% include product %} 엔진으로, 업계 최고의 프로덕션 애니메이션 소프트웨어입니다. | -| Cinema 4D 로고 | **tk-cinema** | 프로젝트 URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
프로젝트 기여: Mykhailo Datsyk
프로젝트 유지보수: Mykhailo Datsyk
프로젝트 설명: [Maxon Cinema 4D](https://www.maxon.net/en-us/products/cinema-4d/overview/)용 {% include product %} 엔진으로, 모델링, 애니메이션 및 렌더링을 위한 디자이너 친화적인 툴셋입니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | -| krita 로고 | **tk-krita** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Krita](https://krita.org/en/)용 {% include product %} 엔진으로, 주로 디지털 페인팅 및 2D 애니메이션용으로 설계된 무료 오픈 소스 래스터 그래픽 편집기입니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | -| Blender 로고 | **tk-blender** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Blender](https://www.blender.org/)용 {% include product %} 엔진으로, 애니메이션 영화, 시각 효과, 예술, 3D 프린트 모델, 모션 그래픽, 대화형 3D 응용프로그램, 가상 현실 및 컴퓨터 게임에 사용되는 무료 오픈 소스 3D 컴퓨터 그래픽 소프트웨어 툴셋입니다.
자세한 내용: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | +--- + +| 통합 | 엔진 | 정보 | +| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-katana | **tk-katana** | 프로젝트 URL: [https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
프로젝트 기여: [Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
프로젝트 유지보수:
프로젝트 설명: Foundry Katana용 {% include product %} 엔진 | +| image_alpha.png | **tk-unreal** | 프로젝트 URL: [https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/en-US/Engine/Content/UsingUnrealEnginewithAutodeskShotgun/index.html)
프로젝트 기여: [Epic Games](http://epicgames.com/)
프로젝트 유지보수:
프로젝트 설명: [Unreal Engine](https://www.unrealengine.com/en-US/)용 {% include product %} 엔진 | +| Substance Painter 로고 | **tk-substancepainter** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: Adobe Substance Painter용 {% include product %} 엔진 | +| Substance Designer 로고 | **tk-substancedesigner** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: Adobe Substance Designer용 {% include product %} 엔진
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | +| tk-modo | **tk-modo** | 프로젝트 URL: [https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
프로젝트 기여: Lutz Pälike 및 [Walking The Dog](http://www.walkingthedog.be/)
프로젝트 유지보수:
프로젝트 설명: Foundry Modo용 {% include product %} 엔진 | +| icon_256.png | **tk-clarisse** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Clarisse iFX](https://www.isotropix.com/products)용 {% include product %} 엔진으로, 인공배경 배치, 룩 디벨롭먼트, 조명 및 렌더링을 위한 완전한 대화식 CG 툴셋입니다. | +| 1024px-Natron_icon.svg.png | **tk-natron** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Natron](https://natrongithub.github.io/)용 {% include product %} 엔진으로, 무료 오픈 소스 노드 기반 소프트웨어 응용프로그램입니다. | +| icon_256.png | **tk-harmony** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Toon Boom Harmony](https://www.toonboom.com/products/harmony)용 {% include product %} 엔진으로, 업계 최고의 프로덕션 애니메이션 소프트웨어입니다. | +| Cinema 4D 로고 | **tk-cinema** | 프로젝트 URL: [https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
프로젝트 기여: Mykhailo Datsyk
프로젝트 유지보수: Mykhailo Datsyk
프로젝트 설명: [Maxon Cinema 4D](https://www.maxon.net/en-us/products/cinema-4d/overview/)용 {% include product %} 엔진으로, 모델링, 애니메이션 및 렌더링을 위한 디자이너 친화적인 툴셋입니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | +| krita 로고 | **tk-krita** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Krita](https://krita.org/en/)용 {% include product %} 엔진으로, 주로 디지털 페인팅 및 2D 애니메이션용으로 설계된 무료 오픈 소스 래스터 그래픽 편집기입니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | +| Blender 로고 | **tk-blender** | 프로젝트 URL: [https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
프로젝트 기여: [Factor64](https://www.factor64.com/)
프로젝트 유지보수: [Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
프로젝트 설명: [Blender](https://www.blender.org/)용 {% include product %} 엔진으로, 애니메이션 영화, 시각 효과, 예술, 3D 프린트 모델, 모션 그래픽, 대화형 3D 응용프로그램, 가상 현실 및 컴퓨터 게임에 사용되는 무료 오픈 소스 3D 컴퓨터 그래픽 소프트웨어 툴셋입니다.
자세한 내용: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | ### 앱 ----------- - -| 통합 | 엔진 | 정보 | -|:-----------:|:------:| ----------- | -| tk-maya-playblast | **tk-maya-playblast** | 프로젝트 URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
프로젝트 기여: [BASE Studio](https://github.com/basestudio)
프로젝트 유지보수:
프로젝트 설명: Maya에서 playblast를 게시하기 위한 앱입니다.  참조: [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) | -| tk-multi-renderfarm | **tk-multi-renderfarm** | 프로젝트 URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
프로젝트 기여: [Bait Studio](http://www.baitstudio.com/)
프로젝트 유지보수:
프로젝트 설명: 팜에 작업을 제출하기 위한 앱입니다.  참조: [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | -| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | 프로젝트 URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
프로젝트 기여:
프로젝트 유지보수: [Dave Sisk](mailto:dave@janimation.com)
프로젝트 설명: 이 앱은 프로젝트의 디렉토리 구조를 검색하여 기존에 게시된 파일 또는 파일 시퀀스를 찾은 다음, 게시된 파일 객체가 이미 존재하지 않는 경우 이를 {% include product %}에 게시된 파일로 등록합니다. | -| nuke-getShotgunData | **nuke-getShotgunData** | 프로젝트 URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
프로젝트 기여: [Ricardo Musch](https://www.ricardo-musch.com/)
프로젝트 유지보수: Ricardo Musch
프로젝트 설명: {% include product %} 데이터를 nuke 텍스트 노드로 가져오는 것은 쉽지 않은 일일 수 있습니다. 이 노드는 슬레이트, 번인 또는 다른 곳에 정보를 제공하는 데 사용될 수 있습니다. | -| sb-logo.png | **sb-shotgun-schema-introspection** | 프로젝트 URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
프로젝트 기여: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
프로젝트 유지보수: Scott Ballard
프로젝트 설명: {% include product %} 및 툴킷 개발자가 {% include product %}엔티티, 필드 및 기본 스키마를 신속하게 탐색하고 검사할 수 있는 간단한 툴킷 앱입니다. | -| griffith-logo.png | **foto-multi-namingconvention** | 프로젝트 URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
프로젝트 기여: [Griffith Observatory](http://www.griffithobservatory.org/)
프로젝트 유지보수: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
프로젝트 설명: {% include product %} 및 툴킷 개발자가 {% include product %} 엔티티, 필드 및 기본 스키마를 신속하게 탐색하고 검사할 수 있는 간단한 툴킷 앱입니다. | -| tk-cpenv | **tk-cpenv** | 프로젝트 URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
프로젝트 기여: [Dan Bradham](https://github.com/danbradham)
프로젝트 유지보수: [Dan Bradham](https://github.com/danbradham)
프로젝트 설명: 이 앱은 모듈을 사용하여 소프트웨어 플러그인, 프로젝트 종속성 및 환경 변수를 관리하는 도구인 [cpenv](https://github.com/cpenv/cpenv)에 대한 지원을 추가합니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/rez-support/7350/7) | -| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | 프로젝트 URL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
프로젝트 기여: [Ricardo Musch](https://www.ricardo-musch.com/)
프로젝트 유지보수: Ricardo Musch
프로젝트 설명: 이 앱을 사용하면 {% include product %}의 버전 및 재생 목록을 Hiero에 드롭할 수 있습니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | +--- + +| 통합 | 엔진 | 정보 | +| :----------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-maya-playblast | **tk-maya-playblast** | 프로젝트 URL: [https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
프로젝트 기여: [BASE Studio](https://github.com/basestudio)
프로젝트 유지보수:
프로젝트 설명: Maya에서 playblast를 게시하기 위한 앱입니다.  참조: [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) | +| tk-multi-renderfarm | **tk-multi-renderfarm** | 프로젝트 URL: [https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
프로젝트 기여: [Bait Studio](http://www.baitstudio.com/)
프로젝트 유지보수:
프로젝트 설명: 팜에 작업을 제출하기 위한 앱입니다.  참조: [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | +| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | 프로젝트 URL: [https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
프로젝트 기여:
프로젝트 유지보수: [Dave Sisk](mailto:dave@janimation.com)
프로젝트 설명: 이 앱은 프로젝트의 디렉토리 구조를 검색하여 기존에 게시된 파일 또는 파일 시퀀스를 찾은 다음, 게시된 파일 객체가 이미 존재하지 않는 경우 이를 {% include product %}에 게시된 파일로 등록합니다. | +| nuke-getShotgunData | **nuke-getShotgunData** | 프로젝트 URL: [https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
프로젝트 기여: [Ricardo Musch](https://www.ricardo-musch.com/)
프로젝트 유지보수: Ricardo Musch
프로젝트 설명: {% include product %} 데이터를 nuke 텍스트 노드로 가져오는 것은 쉽지 않은 일일 수 있습니다. 이 노드는 슬레이트, 번인 또는 다른 곳에 정보를 제공하는 데 사용될 수 있습니다. | +| sb-logo.png | **sb-shotgun-schema-introspection** | 프로젝트 URL: [https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
프로젝트 기여: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
프로젝트 유지보수: Scott Ballard
프로젝트 설명: {% include product %} 및 툴킷 개발자가 {% include product %}엔티티, 필드 및 기본 스키마를 신속하게 탐색하고 검사할 수 있는 간단한 툴킷 앱입니다. | +| griffith-logo.png | **foto-multi-namingconvention** | 프로젝트 URL: [https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
프로젝트 기여: [Griffith Observatory](http://www.griffithobservatory.org/)
프로젝트 유지보수: [Scott Ballard](https://www.linkedin.com/in/scottballard/)
프로젝트 설명: {% include product %} 및 툴킷 개발자가 {% include product %} 엔티티, 필드 및 기본 스키마를 신속하게 탐색하고 검사할 수 있는 간단한 툴킷 앱입니다. | +| tk-cpenv | **tk-cpenv** | 프로젝트 URL: [https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
프로젝트 기여: [Dan Bradham](https://github.com/danbradham)
프로젝트 유지보수: [Dan Bradham](https://github.com/danbradham)
프로젝트 설명: 이 앱은 모듈을 사용하여 소프트웨어 플러그인, 프로젝트 종속성 및 환경 변수를 관리하는 도구인 [cpenv](https://github.com/cpenv/cpenv)에 대한 지원을 추가합니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/rez-support/7350/7) | +| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | 프로젝트 URL: [https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
프로젝트 기여: [Ricardo Musch](https://www.ricardo-musch.com/)
프로젝트 유지보수: Ricardo Musch
프로젝트 설명: 이 앱을 사용하면 {% include product %}의 버전 및 재생 목록을 Hiero에 드롭할 수 있습니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | diff --git a/docs/ko/guides/pipeline-integrations/administration/config-staging-and-rollout.md b/docs/ko/guides/pipeline-integrations/administration/config-staging-and-rollout.md index 1a4c9b15f..f8d6cf4f4 100644 --- a/docs/ko/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ b/docs/ko/guides/pipeline-integrations/administration/config-staging-and-rollout.md @@ -35,7 +35,7 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한을 갖고 있는 경 _기본_ 프로젝트 구성을 즉시 업그레이드할 수는 있지만 위험할 수 있습니다. 이 구성은 프로젝트의 모든 사람이 사용하므로 문제가 발생할 경우 모든 사람에게 영향을 미칩니다. 그러므로 해당 그룹의 작업자가 액세스할 수 있는 격리된 버전의 구성을 만드는 것이 좋습니다. 이렇게 설정된 안전한 환경에서는 업그레이드, 구성 변경 및 개발 시에 다른 프로덕션에 영향을 주지 않습니다. 변경 사항을 테스트한 후에 안전하고 확실하게 기본 구성으로 푸시할 수 있습니다. -이 프로세스를 _복제_라고 하며, 해당 사용자(및 해당 사용자가 초대한 다른 사용자)만 복제본에 액세스할 수 있도록 기본 구성의 개인 복사본을 만드는 것을 의미합니다. 이 환경에서 안전하게 변경할 수 있으며, 성공적으로 변경한 후 기본 구성으로 변경 사항을 다시 푸시할 수 있습니다. +이 프로세스를 *복제*라고 하며, 해당 사용자(및 해당 사용자가 초대한 다른 사용자)만 복제본에 액세스할 수 있도록 기본 구성의 개인 복사본을 만드는 것을 의미합니다. 이 환경에서 안전하게 변경할 수 있으며, 성공적으로 변경한 후 기본 구성으로 변경 사항을 다시 푸시할 수 있습니다. ## 구성 복제 @@ -81,7 +81,8 @@ _스튜디오_ 설치에는 모든 프로젝트의 Core API가 포함되어 있 ### 이전 복제 구성 새로 고침 -이전 dev 또는 스테이징 샌드박스 설정이 있고 컨텐츠를 최신 프로덕션 구성과 동기화해야 하는 경우에는 기본 구성에 대해 `push_configuration` 명령을 실행합니다. +이전 dev 또는 스테이징 샌드박스 설정이 있고 컨텐츠를 최신 프로덕션 구성과 동기화해야 하는 경우에는 기본 구성에 대해 `push_configuration` 명령을 실행합니다. + ```shell tank push_configuration @@ -112,6 +113,7 @@ Push Complete! Your old configuration has been backed up into the following folder: /my/staging/sandbox/config.bak.20140108_093218 ``` + 기본 프로젝트 구성에서 스테이징 샌드박스로 푸시하는 방법을 확인하십시오. _기본_ 구성의 `tank` 명령을 실행하여 이 작업을 수행합니다. 여러 샌드박스가 설정된 경우 해당 샌드박스 간에 데이터를 푸시할 수도 있습니다. ### 복제한 구성 삭제 @@ -161,6 +163,7 @@ Make sure the loader app is up to date everywhere: Make sure the loader app is up to date in maya: > tank updates ALL tk-maya tk-multi-loader ``` + ## Toolkit Core API 업그레이드 이 섹션에서는 복제 스테이징 샌드박스 구성을 사용하여 Toolkit Core API를 안전하게 업그레이드하는 방법에 대해 설명합니다. 스테이징 샌드박스가 아직 준비되지 않았다면 이전 섹션의 지침을 따르십시오. @@ -168,6 +171,7 @@ Make sure the loader app is up to date in maya: 스테이징 샌드박스가 [공유 스튜디오 Core API](https://support.shotgunsoftware.com/hc/ko/articles/219040448)를 사용하는 파이프라인 구성에서 복제된 경우 고유한 Core API 코드를 사용하도록 샌드박스를 업데이트합니다. 이러한 작업을 일컬어 코어를 "현지화"한다고 하며 스테이징 샌드박스로 이동한 다음 `tank localize`를 실행하여 수행할 수 있습니다. 이 명령은 스튜디오 설치에서 Core API를 샌드박스에 복사하며 나중에 다른 버전의 Core API를 실행하고 테스트할 수 있습니다. _툴킷의 기본 동작은 기본적으로 코어를 현지화하는 것입니다. 이전에 공유 스튜디오 코어를 명시적으로 만들지 않은 경우 코어가 이미 현지화되어 있다고 가정하는 것이 안전합니다._ + ```shell cd /my/staging/sandbox ./tank localize @@ -199,14 +203,17 @@ Localize complete! This pipeline configuration now has an independent API. If you upgrade the API for this configuration (using the 'tank core' command), no other configurations or projects will be affected. ``` + 이제 더 이상 Core API를 스튜디오 위치에서 공유하지 않고 자체 독립적인 버전을 실행합니다. 그런 다음 로컬 tank 명령을 다시 사용하여 표준 Core API 업그레이드를 수행할 수 있습니다. + ```shell cd /my/staging/sandbox ./tank core ``` + 툴킷을 통해 사용 가능한 새 버전이 있는지 확인하여 다운로드하고 설치합니다. -Core API를 업데이트했으면 설치를 테스트해야 합니다. 샌드박스의 `tank` 명령을 사용하거나 {% include product %}의 특수 메뉴 항목을 사용하여 일부 앱을 실행합니다. 파이프라인에 대한 기본적인 연습을 수행하고 필요에 따라 테스트를 수행합니다. +Core API를 업데이트했으면 설치를 테스트해야 합니다. 샌드박스의 `tank` 명령을 사용하거나 {% include product %}의 특수 메뉴 항목을 사용하여 일부 앱을 실행합니다. 파이프라인에 대한 기본적인 연습을 수행하고 필요에 따라 테스트를 수행합니다. 결과에 만족한 경우 Core API의 스튜디오 버전 업데이트를 진행할 수 있습니다. 일반적인 툴킷 설정에서는 모든 프로젝트 간에 Core API가 공유되므로 스튜디오 위치 `tank` 명령에서의 `tank core` 명령을 실행하여 모든 프로젝트의 Core API를 업데이트합니다. @@ -233,6 +240,7 @@ Core API를 업데이트했으면 설치를 테스트해야 합니다. 샌드박 이 간단한 방법으로 시간이 지남에 따라 구성을 점차 개선시킬 수 있습니다. 변경과 개선 사항은 프로젝트 간에 필요에 따라 전달됩니다. `setup_project` 명령을 처음 실행하려면 설정 프로세스에서 사용할 구성을 묻는 메시지가 나타날 때 Enter 키를 누릅니다. 이렇게 하면 기본 구성이 다운로드되어 설치됩니다. 두 번째 프로젝트의 경우 이전 프로젝트 구성에 대한 경로 목록이 제공됩니다. 이러한 경로 중 하나를 선택하여 설정 프로세스에서 구성을 묻는 메시지가 표시될 때 입력합니다. 이렇게 하면 해당 구성이 새 프로젝트에 복사됩니다. + ``` Welcome to the {% include product %} Pipeline Toolkit! For documentation, see https://support.shotgunsoftware.com @@ -272,6 +280,7 @@ clone this repository and base the config on its content. [tk-config-default]: /mnt/software/shotgun/first_project/config ``` + ## git 소스 제어의 스튜디오 구성 첫 번째 접근 방식에는 프로젝트가 서로 연결되지 않는다는 제한이 있습니다. 10개의 프로젝트가 있고 중요한 버그 수정이 릴리즈되어 업데이트해야 하는 경우 각 프로젝트를 수동으로 확인하고 `tank updates` 명령을 실행해야 합니다. @@ -291,16 +300,21 @@ clone this repository and base the config on its content. 먼저 git 서버로 가서 리포지토리를 만들어야 합니다. 이 프로세스는 설정에 따라 달라질 수 있습니다. GitHub 등을 사용하는 경우에는 웹 브라우저를 시작하고 github.com로 이동합니다. 서버에 액세스할 수 있으면 `git init --bare` 등을 수행할 수 있습니다. 위의 예에서 만든 git 리포지토리를 `username@someserver.com:/studio_config.git`라고 가정합니다. 이제 리포지토리를 시드하는 데 사용하려는 프로젝트의 `config` 폴더를 `config.bak` 위치로 이동합니다. + ```shell cd /project_configs/studio_config mv config config.bak ``` + 초기화된 git 리포지토리를 스튜디오 구성을 기반으로 할 프로젝트의 `config` 위치에 복제합니다. clone 명령을 실행하면 git 리포지토리인 빈 `config folder` 폴더가 생성됩니다. + ```shell cd /project_configs/studio_config git clone username@someserver.com:/studio_config.git config ``` + `config.bak` 위치의 모든 파일을 `config` 폴더로 다시 복사합니다. 그러면 빈 `config.bak` 폴더를 삭제할 수 있습니다. 구성 파일은 이제 git 리포지토리 내에 있습니다. 이 파일을 추가하고 커밋한 다음 서버로 푸시해야 합니다. 하지만 먼저 일부 툴킷 시스템 파일을 올바르게 처리하도록 정리해야 합니다. `config` 폴더에서 `.gitignore` 파일을 만들어 다음 줄을 추가합니다. + ```shell install_location.yml pipeline_configuration.yml @@ -313,6 +327,7 @@ git add --all git commit -am "initial commit of our studio config!" git push ``` + ### git에서 새 프로젝트 만들기 새 프로젝트를 만들 때 설치 프로세스에서 사용할 구성의 경로를 입력하라는 메시지가 표시되면 유효한 git URL을 지정하기만 하면 됩니다. 위의 예시에 따라 `username@someserver.com:/studio_config.git`를 입력합니다. 프로젝트 설정 프로세스의 일부로 툴킷이 이 리포지토리를 새 프로젝트 구성의 `config` 폴더에 복제합니다. 이는 나중에 이 구성 폴더로 가서 git 명령을 실행할 수 있음을 의미합니다. 복제된 파이프라인 구성도 git 리포지토리를 복제하므로 완벽하게 작동합니다. @@ -323,7 +338,7 @@ git push ### 프로젝트를 최신 버전으로 업데이트 -또한 일부를 변경하여 스튜디오 레벨 구성을 업데이트하여 프로젝트로 가져오려는 경우 `config` 폴더에서 `git pull`을 실행합니다. **중요**: 이 작업을 완료한 후에는 `tank cache_apps`를 실행하여 변경된 구성에 필요한 모든 앱 버전이 시스템에 있는지 확인하십시오. +또한 일부를 변경하여 스튜디오 레벨 구성을 업데이트하여 프로젝트로 가져오려는 경우 `config` 폴더에서 `git pull`을 실행합니다. **중요**: 이 작업을 완료한 후에는 `tank cache_apps`를 실행하여 변경된 구성에 필요한 모든 앱 버전이 시스템에 있는지 확인하십시오. ### 고급 git 사용: 분기 @@ -342,6 +357,7 @@ git push ![](images/config-staging-and-rollout/include_config.png) `@include` 구문을 사용하면 여러 파일을 함께 연결할 수 있습니다. 예를 들어 다음 컨텐츠가 포함된 `/tmp/stuff.yml` 파일이 있는 경우 다음과 같습니다. + ``` # paths to maya maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' @@ -369,7 +385,9 @@ file_manager: template_work: null template_work_area: null ``` + 위에서 볼 수 있듯이 서로 다른 여러 레벨에서 include 정의를 만들 수 있습니다. 위의 경우에는 앱 정의와 세 개의 문자열 값이 있습니다. 그런 다음 환경 파일에서 이를 참조할 수 있습니다. + ``` includes: ['/tmp/stuff.yml'] @@ -398,7 +416,9 @@ engines: template_project: null use_sgtk_as_menu_name: false ``` + 또한 여러 include 파일을 차례로 읽을 수 있습니다. 두 개의 다른 파일에 동일한 include 정의가 존재하면 가장 최근에 읽은 파일이 우선합니다. 위 예시 환경을 확장할 수 있습니다. + ``` includes: @@ -412,13 +432,14 @@ includes: engines: - tk-maya: + tk-maya: apps: tk-multi-workfiles: '@file_manager' location: {name: tk-maya, type: app_store, version: v0.4.1} use_sgtk_as_menu_name: false ``` + 방금 설명한 방법으로 프로젝트 유형 기본값에 의해 재정의될 수 있는 스튜디오 기본값을 설정할 수 있으며 이 기본값은 특정 프로젝트 설정에 의해 재정의될 수 있습니다. 위의 예와 같이 앱 레벨에서 수행하거나 다음 섹션에서와 같이 엔진 레벨에서 수행할 수 있습니다. ### 전역 구성 설정 모범 사례 @@ -426,6 +447,7 @@ engines: 전역 구성을 설정하는 몇 가지 방법이 있습니다. 이를 설정하기 위한 모범 사례 접근 방식으로서 구성을 엔진별로 세분화하는 것이 좋습니다. 각 환경 파일은 완전히 비어 있으며 별도의 파일에 정의된 엔진(및 앱)을 참조합니다. 따라서 한 번에 엔진 하나씩 쉽게 조정하고 재구성할 수 있습니다. 이러한 각 include 파일은 표준 형식으로 되어 있으며 엔진 이름을 따서 명명됩니다. 예를 들어, Maya 엔진을 사용하는 경우 include 파일에는 엔진과 해당 앱만 포함됩니다. 최상위 항목의 이름은 간단히 `maya`로 지정됩니다. + ```yaml maya: apps: @@ -468,25 +490,28 @@ frameworks: tk-framework-shotgunutils_v1.x.x: location: {name: tk-framework-shotgunutils, type: app_store, version: v1.0.8} ``` + 스튜디오에서는 대부분 단일 Maya 설정이 없지만 다양한 부서 및 유형에 따라 수많은 다른 Maya 설정이 있을 수 있습니다. 파일 계층 구조로 구성된 각각에 대해 Maya include 파일을 설정하는 것이 좋습니다. 이 파일에는 위의 파일과 같이 최상위 `maya` 항목이 있습니다. ![](images/config-staging-and-rollout/maya_include.png) 이제 각 프로젝트에 여러 환경이 포함됩니다. 이러한 각 환경 파일은 특정 환경을 엔진 및 앱 설정 컬렉션에 연결하는 엔진 include 목록입니다. 스튜디오(이와 같은 include를 포함하는 모든 파일)에 대해 하나 이상의 기본 프로젝트 구성을 설정할 수 있으며, 이를 통해 이 실제 앱 및 엔진 페이로드가 include 파일 내에 완전히 포함되어 전역적으로 됩니다. 전역 include 파일을 변경하면 모든 프로젝트가 영향을 받습니다. 이 설정을 사용하면 환경 파일의 형식이 다음과 같이 됩니다. + ```yaml -includes: - - '/studio/configurations/maya/asset.yml' - - '/studio/configurations/nuke/asset.yml' - - '/studio/configurations/houdini/generic.yml' +includes: + - "/studio/configurations/maya/asset.yml" + - "/studio/configurations/nuke/asset.yml" + - "/studio/configurations/houdini/generic.yml" engines: - tk-maya: '@maya' - tk-nuke: '@nuke' - tk-houdini: '@houdini' + tk-maya: "@maya" + tk-nuke: "@nuke" + tk-houdini: "@houdini" # we don't need any frameworks here because there are no apps or engines defined frameworks: null ``` + 위의 설정을 세분화하여 일부 프로젝트 관련 항목을 정의하기 시작하려면 `@maya`를 환경 파일 자체에 있는 일련의 앱 및 엔진 정의로 간단하게 대체합니다. ### 전역 구성 관리 diff --git a/docs/ko/guides/pipeline-integrations/administration/file-system-config-reference.md b/docs/ko/guides/pipeline-integrations/administration/file-system-config-reference.md index 8286a8730..20148133d 100644 --- a/docs/ko/guides/pipeline-integrations/administration/file-system-config-reference.md +++ b/docs/ko/guides/pipeline-integrations/administration/file-system-config-reference.md @@ -17,9 +17,10 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에 1. **폴더 생성:** {% include product %}에서 객체를 만든 후에는 작업이 시작될 수 있도록 디스크에 폴더를 만들어야 합니다. 이 작업은 디스크에 샷을 나타내는 폴더를 만드는 것처럼 간단할 수도 있고, 샷에 대해 작업하는 각 사용자가 디스크의 개별 영역에서 작업할 수 있도록 사용자별 작업 샌드박스를 설정하는 것처럼 복잡할 수 있습니다. - 툴킷은 응용프로그램을 시작할 때(예: 샷 BECH_0010을 위해 Maya를 시작할 때) 폴더 생성을 자동화하며 Maya를 시작하기 전에 폴더가 있는지 확인합니다. 폴더가 없으면 즉시 만들어집니다. 폴더는 [셸에서의 tank 명령](https://support.shotgunsoftware.com/hc/ko/articles/219033178-Administering-Toolkit#Useful%20tank%20commands) 및 [ShotGrid의 폴더 만들기](https://support.shotgunsoftware.com/hc/ko/articles/219040688-Beyond-your-first-project#Shotgun%20Integration)(Create Folders) 메뉴를 통해 API 방식을 사용하여 만들 수도 있습니다. 이 폴더 생성 프로세스는 특별한 구성 파일 세트를 통해 진행됩니다. 자세한 정보는 아래 문서의 [1부](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Part%201%20-%20Folder%20Creation%20Syntax)를 참조하십시오. + 2. **작업 열기 및 저장:** 작업하는 동안 디스크의 표준화된 위치에서 파일을 열고 저장해야 합니다. 이러한 파일 위치는 일반적으로 작업 시작 전에 만들어진 폴더 구조 내에 있습니다. - - 폴더 구조가 설정되면 해당 구조를 사용하여 디스크의 주요 위치를 식별할 수 있습니다. 이러한 위치를 [템플릿](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates)이라고 합니다. 예를 들어 `maya_shot_publish`라는 템플릿을 정의하여 샷을 위해 게시된 Maya 파일을 참조할 수 있습니다. [툴킷 앱](https://support.shotgunsoftware.com/hc/ko/articles/219039798)은 이 템플릿을 사용합니다. Publish 앱은 이 템플릿을 사용하여 파일을 작성해야 할 위치를 제어할 수 있으며 [Workfiles 앱](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files)은 템플릿을 사용하여 파일을 열 위치를 확인할 수 있습니다. 툴킷의 환경 구성 내에서 각 앱이 사용하는 템플릿을 제어할 수 있습니다. 툴킷에서 사용되는 모든 주요 파일 위치는 단일 템플릿 파일에 정의되므로 쉽게 확인할 수 있습니다. + - 폴더 구조가 설정되면 해당 구조를 사용하여 디스크의 주요 위치를 식별할 수 있습니다. 이러한 위치를 [템플릿](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Part%202%20-%20Configuring%20File%20System%20Templates)이라고 합니다. 예를 들어 `maya_shot_publish`라는 템플릿을 정의하여 샷을 위해 게시된 Maya 파일을 참조할 수 있습니다. [툴킷 앱](https://support.shotgunsoftware.com/hc/ko/articles/219039798)은 이 템플릿을 사용합니다. Publish 앱은 이 템플릿을 사용하여 파일을 작성해야 할 위치를 제어할 수 있으며 [Workfiles 앱](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files)은 템플릿을 사용하여 파일을 열 위치를 확인할 수 있습니다. 툴킷의 환경 구성 내에서 각 앱이 사용하는 템플릿을 제어할 수 있습니다. 툴킷에서 사용되는 모든 주요 파일 위치는 단일 템플릿 파일에 정의되므로 쉽게 확인할 수 있습니다. # 1부 - 폴더 생성 구문 @@ -27,24 +28,23 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에 ![구성](./images/file-system-config-reference/core_config.png) -위의 이미지는 스키마 구성을 보여 줍니다. 툴킷 폴더 생성을 실행하면 {% include product %}의 엔티티와 디스크의 폴더 간에 연결이 설정됩니다. 툴킷은 이 폴더 스키마 구성을 사용하여 디스크에 일련의 폴더를 생성하고 각 폴더는 {% include product %}에 [`Filesystem Location`](https://developer.shotgridsoftware.com/cbbf99a4/) 엔티티로 등록됩니다. 즉, {% include product %} 데이터(예: 샷 및 에셋 이름) 및 구성이 디스크 및 {% include product %}의 실제 폴더에 "지정"된다고 생각할 수 있습니다. 구성은 항상 "project"라는 폴더에서 시작됩니다. 이 폴더는 항상 {% include product %}의 연결된 프로젝트를 나타내며 프로젝트의 툴킷 이름으로 대체됩니다. 이 레벨 아래에는 정적 폴더가 있습니다. 폴더 작성자는 자동으로 **sequences**와 같은 폴더를 만듭니다. +위의 이미지는 스키마 구성을 보여 줍니다. 툴킷 폴더 생성을 실행하면 {% include product %}의 엔티티와 디스크의 폴더 간에 연결이 설정됩니다. 툴킷은 이 폴더 스키마 구성을 사용하여 디스크에 일련의 폴더를 생성하고 각 폴더는 {% include product %}에 [`Filesystem Location`](https://developer.shotgridsoftware.com/cbbf99a4/) 엔티티로 등록됩니다. 즉, {% include product %} 데이터(예: 샷 및 에셋 이름) 및 구성이 디스크 및 {% include product %}의 실제 폴더에 "지정"된다고 생각할 수 있습니다. 구성은 항상 "project"라는 폴더에서 시작됩니다. 이 폴더는 항상 {% include product %}의 연결된 프로젝트를 나타내며 프로젝트의 툴킷 이름으로 대체됩니다. 이 레벨 아래에는 정적 폴더가 있습니다. 폴더 작성자는 자동으로 **sequences**와 같은 폴더를 만듭니다. sequences 폴더 내에는 **sequence** 폴더와 **sequence.yml** 파일이 있습니다. 툴킷은 폴더와 같은 이름을 가진 YAML 파일을 발견할 때마다 YAML 파일의 컨텐츠를 읽고 원하는 동적 동작을 추가합니다. 이 경우, **sequence.yml** 파일에는 project 폴더 아래 세 가지 유형의 항목으로 구성된 구조가 있습니다. 1. **일반 폴더 및 파일:** 대상 위치로 간단히 복사됩니다. 2. **YAML 파일이 있는 폴더**(폴더와 같은 이름): 동적 컨텐츠를 나타냅니다. 예를 들어, **shot** 및 **shot.yml**이 있을 수 있으며 폴더가 만들어질 때 이 **shot** 폴더는 여러 폴더(샷당 하나의 폴더)를 생성하는 데 사용되는 템플릿입니다. -3. **name.symlink.yml 파일**은 폴더가 처리될 때 기호 링크를 생성합니다. [기호 링크는 이 문서](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Reference#Symbolic%20Links)의 뒷부분에서 설명합니다. +3. **name.symlink.yml 파일**은 폴더가 처리될 때 기호 링크를 생성합니다. [기호 링크는 이 문서](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Reference#Symbolic%20Links)의 뒷부분에서 설명합니다. 현재 YAML 파일에 표시된 동적 구성 설정은 다음 모드를 지원합니다. - **[{% include product %} 쿼리 폴더:](#shotgun-query-folders)** {% include product %} 데이터베이스 쿼리를 기반으로 하는 동적 폴더. 예를 들어 이 모드는 프로젝트의 모든 샷에 대한 폴더를 만드는 데 사용할 수 있습니다. -- **[{% include product %} 목록 필드 폴더: ](#shotgun-list-field-folders)** {% include product %} 목록 필드를 기반으로 하는 동적 폴더 이름입니다. 예를 들어 이 모드는 {% include product %}의 에셋 엔티티에 있는 {% include product %} 목록 필드 "Asset Type"의 모든 값에 대한 폴더를 만드는 데 사용할 수 있습니다. +- **[{% include product %} 목록 필드 폴더: ](#shotgun-list-field-folders)** {% include product %} 목록 필드를 기반으로 하는 동적 폴더 이름입니다. 예를 들어 이 모드는 {% include product %}의 에셋 엔티티에 있는 {% include product %} 목록 필드 "Asset Type"의 모든 값에 대한 폴더를 만드는 데 사용할 수 있습니다. - **[유예된 폴더:](#workspaces-and-deferred-folder-creation)** 툴킷 API의 폴더 생성 방식을 통해 두 번째 폴더 생성 패스가 요청될 때(일반적으로 Maya와 같은 응용프로그램이 시작될 때)만 실행됩니다. 일반적으로 이 방식은 응용프로그램을 시작하기 직전에 툴킷의 다양한 응용프로그램 시작 관리자에 의해 실행됩니다. -- **[현재 사용자 폴더:](#current-user-folder)** 현재 사용자를 나타내는 특수 폴더입니다. - +- **[현재 사용자 폴더:](#current-user-folder)** 현재 사용자를 나타내는 특수 폴더입니다. 이러한 모드에 대해 자세히 살펴보겠습니다. @@ -80,11 +80,11 @@ sequences 폴더 내에는 **sequence** 폴더와 **sequence.yml** 파일이 있 - **entity_type** 필드는 데이터를 가져올 {% include product %} 엔티티(예: "에셋", "샷", "시퀀스", "CustomEntity02" 등)로 설정해야 합니다. - **name** 필드는 {% include product %}의 데이터를 기반으로 각 폴더에 지정해야 하는 이름입니다. - - 위의 예와 같이 단일 필드를 사용할 수 있습니다(예: `name: code`). - - 여러 필드를 괄호로 묶어 사용할 수 있습니다(예: `name:``"{asset_type}_{code}"`). - - 링크된 다른 엔티티의 필드를 포함하려면 표준 `name: "{sg_sequence.Sequence.code}_{code}"` 도트 구문을 사용할 수 있습니다(예: {% include product %}). -- **filters** 필드는 {% include product %} 쿼리이며 [{% include product %} API 구문](http://developer.shotgridsoftware.com/python-api/reference.html)을 비슷하게 따릅니다. 이는 사전 목록이며 각 사전에는 _path_, _relation_ 및 _values_ 키가 있어야 합니다. 유효한 $syntax 값은 상응하는 {% include product %} 엔티티(예: 프로젝트의 경우 `"$project"`, sequence.yml이 상위 디렉토리 계층에 있는 경우 `"$sequence"`)가 있는 모든 상위 폴더입니다. {% include product %} 엔티티 링크의 경우 $syntax(예: `{ "path": "project", "relation": "is", "values": [ "$project" ] }`)를 사용하여 구성에서 상위 폴더를 참조할 수 있습니다. [아래 예](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Examples)에서 자세히 설명합니다. + - 위의 예와 같이 단일 필드를 사용할 수 있습니다(예: `name: code`). + - 여러 필드를 괄호로 묶어 사용할 수 있습니다(예: ` name:``"{asset_type}_{code}" `). + - 링크된 다른 엔티티의 필드를 포함하려면 표준 `name: "{sg_sequence.Sequence.code}_{code}"` 도트 구문을 사용할 수 있습니다(예: {% include product %}). +- **filters** 필드는 {% include product %} 쿼리이며 [{% include product %} API 구문](http://developer.shotgridsoftware.com/python-api/reference.html)을 비슷하게 따릅니다. 이는 사전 목록이며 각 사전에는 _path_, _relation_ 및 _values_ 키가 있어야 합니다. 유효한 $syntax 값은 상응하는 {% include product %} 엔티티(예: 프로젝트의 경우 `"$project"`, sequence.yml이 상위 디렉토리 계층에 있는 경우 `"$sequence"`)가 있는 모든 상위 폴더입니다. {% include product %} 엔티티 링크의 경우 $syntax(예: `{ "path": "project", "relation": "is", "values": [ "$project" ] }`)를 사용하여 구성에서 상위 폴더를 참조할 수 있습니다. [아래 예](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Examples)에서 자세히 설명합니다. ## 다중 폴더 @@ -118,7 +118,7 @@ sequences 폴더 내에는 **sequence** 폴더와 **sequence.yml** 파일이 있 asset_step_folder: assets/{asset_type}/{Asset}/{Step} -`{asset_type}` 및 `{Asset}`은 모두 문자열 템플릿 키로 정의되며 `{Asset}` 토큰은 지정된 경로의 컨텍스트를 결정할 때 컨텍스트 계산에서 사용합니다. +`{asset_type}` 및 `{Asset}`은 모두 문자열 템플릿 키로 정의되며 `{Asset}` 토큰은 지정된 경로의 컨텍스트를 결정할 때 컨텍스트 계산에서 사용합니다. ## 상위 폴더를 사용하여 만들기 @@ -182,7 +182,7 @@ shotgun_entity 유형 폴더는 폴더 생성 프로세스에서 상위 항목 # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -구문은 템플릿 시스템의 `subset` 토큰과 유사합니다. {% include product %} 필드 이름 다음에 콜론에 이어서 일반 표현식을 추가하기만 하면 됩니다. 정규식으로 정의된 모든 그룹(예: `()`로 둘러싸인 섹션)은 값을 추출하는 데 사용됩니다. 정규식에 여러 그룹이 있는 경우 이 그룹이 함께 연결됩니다. 예를 들어 다음 표현식은 객체를 만든 사용자의 이니셜을 추출합니다. `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` +구문은 템플릿 시스템의 `subset` 토큰과 유사합니다. {% include product %} 필드 이름 다음에 콜론에 이어서 일반 표현식을 추가하기만 하면 됩니다. 정규식으로 정의된 모든 그룹(예: `()`로 둘러싸인 섹션)은 값을 추출하는 데 사용됩니다. 정규식에 여러 그룹이 있는 경우 이 그룹이 함께 연결됩니다. 예를 들어 다음 표현식은 객체를 만든 사용자의 이니셜을 추출합니다. `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` ## 예 @@ -245,13 +245,12 @@ shotgun_entity 유형 폴더는 폴더 생성 프로세스에서 상위 항목 - 동적 컨텐츠 **type** 필드의 값을 `shotgun_list_field`로 설정합니다. - `entity_type` 필드는 데이터를 가져올 {% include product %} 엔티티(예: "에셋", "시퀀스", "샷" 등)로 설정해야 합니다. -- `field_name` 필드는 데이터를 가져온 {% include product %} 필드로 설정해야 하며 [목록 유형 필드](https://support.shotgunsoftware.com/hc/ko/articles/219031008)여야 합니다. 표현식을 사용하여 정적 텍스트를 동적 컨텐츠와 함께 추가할 수 있습니다.`field_name: "{sg_asset_type}_type"` 이 표현식 예는 텍스트와 템플릿 키를 포함합니다. +- `field_name` 필드는 데이터를 가져온 {% include product %} 필드로 설정해야 하며 [목록 유형 필드](https://support.shotgunsoftware.com/hc/ko/articles/219031008)여야 합니다. 표현식을 사용하여 정적 텍스트를 동적 컨텐츠와 함께 추가할 수 있습니다.`field_name: "{sg_asset_type}_type"` 이 표현식 예는 텍스트와 템플릿 키를 포함합니다. -- 선택적 `skip_unused` 매개변수는 사용되지 않는 목록 유형 필드 값에 대해 디렉토리가 생성되는 것을 방지합니다(위의 [선택 필드](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Reference#Optional%20fields) 섹션 참조). {% include info title="참고" content="이 값을 True로 설정하면 폴더 생성 성능에 부정적인 영향을 줄 수 있습니다. 또한, 컬링 알고리즘은 현재 완전하지 않아 관련 엔티티에 복잡한 필터가 적용된 시나리오에서는 작동하지 않습니다." %} +- 선택적 `skip_unused` 매개변수는 사용되지 않는 목록 유형 필드 값에 대해 디렉토리가 생성되는 것을 방지합니다(위의 [선택 필드](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Reference#Optional%20fields) 섹션 참조). {% include info title="참고" content="이 값을 True로 설정하면 폴더 생성 성능에 부정적인 영향을 줄 수 있습니다. 또한, 컬링 알고리즘은 현재 완전하지 않아 관련 엔티티에 복잡한 필터가 적용된 시나리오에서는 작동하지 않습니다." %} - 선택적 `create_with_parent` 매개변수는 현재 처리 중인 하위 엔티티 레벨 노드가 없는 경우에도 list_field 노드를 강제로 만듭니다(위의 [상위 폴더를 사용하여 만들기](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Reference#Create%20With%20Parent%20Folder) 섹션 참조). - ## 파이프라인 단계 폴더 파이프라인 단계 폴더는 {% include product %}의 [파이프라인 단계](https://support.shotgunsoftware.com/hc/ko/articles/219031288)를 나타냅니다. 파이프라인 단계는 단계라고도 합니다. @@ -400,7 +399,7 @@ _팁: Maya와 같은 응용프로그램이 시작될 때 일반적이고 정적 ## 정적 폴더 -정적 폴더(및 파일)는 가장 간단한 유형입니다. 폴더를 구성 구조에 놓을 수 있으며 폴더 생성 프로세스가 실행될 때 자동으로 복사됩니다. [다음은 정적 폴더의 몇 가지 예](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)(https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)이며 이는 기본 구성에 있습니다(정적 폴더에는 해당 YAML 파일이 없음). +정적 폴더(및 파일)는 가장 간단한 유형입니다. 폴더를 구성 구조에 놓을 수 있으며 폴더 생성 프로세스가 실행될 때 자동으로 복사됩니다. [다음은 정적 폴더의 몇 가지 예](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)(https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)이며 이는 기본 구성에 있습니다(정적 폴더에는 해당 YAML 파일이 없음). 대개 정적 폴더에서는 이 작업 이외에 수행해야 할 작업이 없지만, 툴킷은 정적 폴더에 대한 몇 가지 고급 기능을 지원합니다. 동적 조건을 정의하여 정적 폴더를 만들지 여부를 결정할 수 있습니다. 예를 들어 편집 유형의 파이프라인 단계에 대해서만 생성되는 특별한 정적 폴더가 필요할 수 있습니다. 이 경우 정적 폴더 옆에 YAML 구성 파일을 추가하고 동일한 이름(확장자는 "yml")을 지정해야 합니다. 이제 다음 구문을 사용합니다. @@ -496,7 +495,7 @@ _팁: Maya와 같은 응용프로그램이 시작될 때 일반적이고 정적 .git # no git temp files to be copied across at folder creation time .DS_Store # no mac temp files to be copied across at folder creation time -와일드카드를 사용할 수도 있습니다. 예를 들어 TMP 익스텐션이 있는 모든 파일을 제외해야 하는 경우 *.tmp 줄을 파일에 추가하기만 하면 됩니다. +와일드카드를 사용할 수도 있습니다. 예를 들어 TMP 익스텐션이 있는 모든 파일을 제외해야 하는 경우 \*.tmp 줄을 파일에 추가하기만 하면 됩니다. # This is a good example of a standard ignore_files file @@ -701,7 +700,6 @@ _동적 토큰 `$sequence`는 런타임에 실제 객체로 해석되었습니 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, 'path': '/mnt/projects/chasing_the_light/assets'}, - 다시 말하지만, 임의로 복잡한 데이터는 YAML 구성 파일에서 이런 방법으로 후크에 전달될 수 있습니다. ## 간단한 폴더 생성 방법 커스터마이즈 @@ -824,7 +822,7 @@ _동적 토큰 `$sequence`는 런타임에 실제 객체로 해석되었습니 ![configuration](images/file-system-config-reference/templates_file.png) -이 파일에는 _템플릿_과 해당 _키_에 대한 정의가 있습니다. +이 파일에는 *템플릿*과 해당 *키*에 대한 정의가 있습니다. **키**는 정의된 동적 필드로서 이름, 버전 번호, 화면 해상도, 샷 이름 등이 될 수 있습니다. 키는 유형으로 구성되므로 예를 들어 키를 문자열 또는 정수로 정의할 수 있습니다. 또한 형식화되어 있기 때문에 문자열에 영숫자만 포함하거나 모든 정수를 8개의 0으로 채우도록 정의할 수 있습니다. @@ -845,34 +843,33 @@ _동적 토큰 `$sequence`는 런타임에 실제 객체로 해석되었습니 유형을 지정하는 것 외에도 추가 옵션을 지정할 수 있습니다. 다음과 같은 옵션이 있습니다. -- `default: default_value` - 값이 제공되지 않은 경우 사용되는 값입니다. 예를 들어 툴킷 API를 사용하는 중 필드 값 세트를 경로로 해석하려고 하는 경우 발생할 수 있습니다. - -- `choices: [choice1, choice2, etc]` - 이 키에 사용할 수 있는 값의 열거입니다. +- `default: default_value` - 값이 제공되지 않은 경우 사용되는 값입니다. 예를 들어 툴킷 API를 사용하는 중 필드 값 세트를 경로로 해석하려고 하는 경우 발생할 수 있습니다. -- `exclusions: [bad1, bad2, etc]` - 이 키에 사용할 수 없는 값의 열거입니다. 키가 sequence 유형인 경우, 이 설정으로 프레임 사양 값을 무효화할 수 없습니다. +- `choices: [choice1, choice2, etc]` - 이 키에 사용할 수 있는 값의 열거입니다. -- `length: 12` - 이 키는 정확한 길이여야 합니다. +- `exclusions: [bad1, bad2, etc]` - 이 키에 사용할 수 없는 값의 열거입니다. 키가 sequence 유형인 경우, 이 설정으로 프레임 사양 값을 무효화할 수 없습니다. -- `alias: new_name` - key_name 대신 이 키를 사용하여 템플릿에서 사용할 이름을 제공합니다. 예를 들어 버전 번호에 대한 두 가지 개념이 있는 경우 하나는 클라이언트가 원하는 방식대로 4개의 0으로 채워지고, 다른 하나는 내부적으로 처리되는 방식대로 3개의 0으로 채워집니다. 이 경우 키 이름은 고유해야 하므로 두 키의 이름을 "version"으로 지정하는 것은 실제 가능하지 않습니다. 이 경우 별칭을 만들 수 있습니다. 자세한 정보는 아래 예 중 하나를 참조하십시오. +- `length: 12` - 이 키는 정확한 길이여야 합니다. -- `filter_by: alphanumeric` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영숫자 값(일반적으로 ASCII 문자열의 경우 a-z, A-Z 및 0-9이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. +- `alias: new_name` - key_name 대신 이 키를 사용하여 템플릿에서 사용할 이름을 제공합니다. 예를 들어 버전 번호에 대한 두 가지 개념이 있는 경우 하나는 클라이언트가 원하는 방식대로 4개의 0으로 채워지고, 다른 하나는 내부적으로 처리되는 방식대로 3개의 0으로 채워집니다. 이 경우 키 이름은 고유해야 하므로 두 키의 이름을 "version"으로 지정하는 것은 실제 가능하지 않습니다. 이 경우 별칭을 만들 수 있습니다. 자세한 정보는 아래 예 중 하나를 참조하십시오. -- `filter_by: alpha` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영문자 값(일반적으로 ASCII 문자열의 경우 a-z 및 A-Z이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. +- `filter_by: alphanumeric` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영숫자 값(일반적으로 ASCII 문자열의 경우 a-z, A-Z 및 0-9이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. -- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - string 유형의 키에만 작동합니다. 정규식을 유효성 확인 마스크로 정의할 수 있습니다. 예를 들어, 위의 예에서는 키에 4자리 숫자, 밑줄 및 3개의 소문자가 필요합니다. +- `filter_by: alpha` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영문자 값(일반적으로 ASCII 문자열의 경우 a-z 및 A-Z이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. -- `format_spec: "04"` - int 및 sequence 유형의 키의 경우 이 설정은 int 또는 sequence 숫자가 0이거나 공백으로 채워짐을 의미합니다. 이 예에서와 같이 "04"를 지정하면 0으로 채워진 4자리 숫자(예: 0003)가 됩니다. "03"을 지정하면 0으로 채워진 3자리 숫자(예: 042)가 됩니다. "3"을 지정하면 공백으로 채워진 3자리 숫자(예: " 3")가 됩니다. timestamp 유형 키의 경우 format_spec은 [strftime 및 strptime 규칙](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)을 따릅니다. +- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - string 유형의 키에만 작동합니다. 정규식을 유효성 확인 마스크로 정의할 수 있습니다. 예를 들어, 위의 예에서는 키에 4자리 숫자, 밑줄 및 3개의 소문자가 필요합니다. -- `strict_matching: true` - int 유형의 키에서만 작동합니다. 이 설정은 해당 필드가 적절한 형식의 숫자일 때만 일치함을 의미합니다. 예를 들어 strict_matching이 true로 설정된 경우 "003"을 지정하면 "002", "12345" 및 "042"는 일치하지만 "00003" 또는 "2"는 일치하지 않습니다. 엄격하게 일치하도록 해야 하면 strict_matching을 false로 설정합니다. 기본 동작은 엄격하게 일치하는 것입니다. +- `format_spec: "04"` - int 및 sequence 유형의 키의 경우 이 설정은 int 또는 sequence 숫자가 0이거나 공백으로 채워짐을 의미합니다. 이 예에서와 같이 "04"를 지정하면 0으로 채워진 4자리 숫자(예: 0003)가 됩니다. "03"을 지정하면 0으로 채워진 3자리 숫자(예: 042)가 됩니다. "3"을 지정하면 공백으로 채워진 3자리 숫자(예: " 3")가 됩니다. timestamp 유형 키의 경우 format_spec은 [strftime 및 strptime 규칙](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)을 따릅니다. -- `shotgun_entity_type` - `shotgun_field_name` 옵션과 함께 사용하면 {% include product %}에 값을 직접 쿼리할 수 있습니다. 이렇게 하면 폴더 구조에 없는 필드의 값을 파일 이름에 사용할 수 있습니다. +- `strict_matching: true` - int 유형의 키에서만 작동합니다. 이 설정은 해당 필드가 적절한 형식의 숫자일 때만 일치함을 의미합니다. 예를 들어 strict_matching이 true로 설정된 경우 "003"을 지정하면 "002", "12345" 및 "042"는 일치하지만 "00003" 또는 "2"는 일치하지 않습니다. 엄격하게 일치하도록 해야 하면 strict_matching을 false로 설정합니다. 기본 동작은 엄격하게 일치하는 것입니다. -- `shotgun_field_name` - `shotgun_entity_type`과 함께 사용해야 합니다. +- `shotgun_entity_type` - `shotgun_field_name` 옵션과 함께 사용하면 {% include product %}에 값을 직접 쿼리할 수 있습니다. 이렇게 하면 폴더 구조에 없는 필드의 값을 파일 이름에 사용할 수 있습니다. -- `abstract` - 추상 필드임을 나타냅니다. 추상 필드는 이미지 시퀀스(%04d) 또는 스테레오(%V)와 같이 경로를 설명하는 데 패턴이 필요한 경우 사용됩니다. 추상 필드에는 기본값이 필요합니다. +- `shotgun_field_name` - `shotgun_entity_type`과 함께 사용해야 합니다. -- `subset` 및 `subset_format` - 지정된 입력 문자열의 하위 집합을 추출하여 키 값으로 만듭니다. 예를 들어 사용자 이름 전체에서 이니셜 키를 만들거나 모든 샷 이름의 첫 세 글자를 포함하는 키를 만들 수 있습니다. +- `abstract` - 추상 필드임을 나타냅니다. 추상 필드는 이미지 시퀀스(%04d) 또는 스테레오(%V)와 같이 경로를 설명하는 데 패턴이 필요한 경우 사용됩니다. 추상 필드에는 기본값이 필요합니다. +- `subset` 및 `subset_format` - 지정된 입력 문자열의 하위 집합을 추출하여 키 값으로 만듭니다. 예를 들어 사용자 이름 전체에서 이니셜 키를 만들거나 모든 샷 이름의 첫 세 글자를 포함하는 키를 만들 수 있습니다. 템플릿 키에 대한 기술적인 상세 정보는 [API 참조](http://developer.shotgridsoftware.com/tk-core/core.html#template-system)를 참조하십시오. @@ -1053,7 +1050,7 @@ UTC 시간으로 기본 설정되는 YYYY.MM.DD 형식의 타임스탬프입니 {% include info title="참고" content="문자열 키의 이름이 연관된 ShotGrid 엔티티가 있는 동적 스키마 폴더의 엔티티 유형과 일치하면 해당 폴더 이름이 토큰으로 대체됩니다. 예를 들어 위의 코드 조각과 같이 'string' 유형의 {Sequence} 템플릿 키를 사용하고 스키마에서 'sequence'라는 동적 폴더가 있는 경우 해당 `sequence.yml` 파일에서 `shotgun_entity` 유형으로 정의되며 ShotGrid의 'Sequence' 엔티티 유형에 연결됩니다. 툴킷은 템플릿 키가 이 동적 폴더의 엔티티 유형이라는 것을 인식합니다(여기서는 둘 다 Sequence임). 따라서 툴킷은 폴더 이름(즉, 특정 시퀀스의 이름)을 가져와서 템플릿 키로 대체합니다." %} -선택적 속성을 정의해야 하는 경우 이 양식이 필요합니다. 현재 유일한 선택적 속성은 `root_name`이며 이 속성은 다중 루트가 있는 프로젝트의 경로에 대한 프로젝트 루트를 지정하는 데 사용할 수 있습니다. [다중 루트](https://developer.shotgridsoftware.com/9ea9dd4e/)는 새로운 저장소 루트를 추가하여 일부 프로젝트 파일을 저장할 때 사용됩니다. +선택적 속성을 정의해야 하는 경우 이 양식이 필요합니다. 현재 유일한 선택적 속성은 `root_name`이며 이 속성은 다중 루트가 있는 프로젝트의 경로에 대한 프로젝트 루트를 지정하는 데 사용할 수 있습니다. [다중 루트](https://developer.shotgridsoftware.com/9ea9dd4e/)는 새로운 저장소 루트를 추가하여 일부 프로젝트 파일을 저장할 때 사용됩니다. `root_name: name_of_project_root` @@ -1113,7 +1110,6 @@ name과 version은 동일한 파일에 정의된 키 이름입니다. - [에피소드 엔티티는 어떻게 작동합니까?](https://support.shotgunsoftware.com/hc/ko/articles/115000019414) - [엔티티의 계층 커스터마이즈](https://support.shotgunsoftware.com/hc/ko/articles/219030828) - ### 에피소드 > 시퀀스 > 샷 계층에 필요한 {% include product %} 필드 [`Episode`용 커스텀 엔티티](https://support.shotgunsoftware.com/hc/ko/articles/114094182834)(사이트 기본 설정(Site Preferences) > 엔티티(Entities))를 사용하도록 선택하거나 {% include product %} [7.0.7.0](https://support.shotgunsoftware.com/hc/ko/articles/220062367-7-0-Release-Notes#7_0_7_0)에서 제공된 공식 에피소드 엔티티를 사용할 수 있습니다. 7.0.7.0 이전의 {% include product %}(2017년 이전)에 가입했다면 "TV Show" 템플릿에서 에피소드용 `CustomEntity02`를 사용합니다. `CustomEntity02` 또는 공식 에피소드 엔티티가 아닌 다른 엔티티를 사용하는 경우에는 신경쓸 필요가 없습니다. {% include product %} 및 툴킷은 유연합니다. 두 경우를 모두 살펴보겠습니다. @@ -1128,7 +1124,7 @@ a) **공식 에피소드 엔티티 사용:** "에피소드" 엔티티는 프로 **또는** -b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에서 TV Show 프로젝트를 만들 때 사용되는 커스텀 엔티티일 수 있습니다. _앞에서 언급했듯이, 다른 커스텀 엔티티를 활성화하고 `CustomEntity02` 대신 사용할 수 있습니다. 모든 `CustomEntity02`를 사용자가 활성화한 특정 엔티티로 바꿔야 합니다._ +b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에서 TV Show 프로젝트를 만들 때 사용되는 커스텀 엔티티일 수 있습니다. _앞에서 언급했듯이, 다른 커스텀 엔티티를 활성화하고 `CustomEntity02` 대신 사용할 수 있습니다. 모든 `CustomEntity02`를 사용자가 활성화한 특정 엔티티로 바꿔야 합니다._ ![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) @@ -1265,7 +1261,6 @@ b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에 `config/core/schema/project/shots/episode/sequence` 폴더에서 `shot`라는 이름의 폴더를 다음 컨텐츠와 동일한 디렉토리에 해당 `shot.yml` 파일과 함께 만듭니다. - # the type of dynamic content type: "shotgun_entity" @@ -1344,12 +1339,11 @@ b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에 - 스키마에서 새로운 에셋 유형인 차량에 대한 새 분기를 만들어 시작합니다. - `asset/` 및 `asset.yml`과 같은 레벨에서 `asset_vehicle/` 폴더 및 `asset_vehicle.yml`을 추가합니다. -- 이러한 YAML 파일에도 필터 설정이 있습니다. `asset.yml`의 필터를 수정하여 차량을 _제외_한 모든 에셋에 적용한 다음 `asset_vehicle.yml`을 수정하여 차량 유형의 에셋에_만_ 적용합니다. [여기 예에서 필터를 보여 줍니다](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Configuration-Reference#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps). +- 이러한 YAML 파일에도 필터 설정이 있습니다. `asset.yml`의 필터를 수정하여 차량을 *제외*한 모든 에셋에 적용한 다음 `asset_vehicle.yml`을 수정하여 차량 유형의 에셋에*만* 적용합니다. [여기 예에서 필터를 보여 줍니다](https://support.shotgunsoftware.com/hc/ko/articles/219039868-File-System-Configuration-Reference#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps). - `asset` 및 `asset_vehicles`를 나타내는 두 개의 폴더가 있으므로 해당 에셋(예: `geoprep`, `lookdev` 등)에 대해 만들 `asset_vehicle` 아래에 모든 폴더를 추가합니다. - 이러한 에셋에 대한 파일을 저장하고 게시하는 경우 `core/templates.yml`에서 저장되고 게시된 파일에 대한 파일 경로를 설명하는 템플릿을 만듭니다. 예를 들어 [`maya_asset_work`](https://github.com/shotgunsoftware/tk-config-default/blob/v0.17.3/core/templates.yml#L480) 외에도 `maya_asset_work_vehicle`이라는 템플릿을 만들 수 있으며, 그 정의는 차량 에셋에 Maya 작업 파일을 저장하려는 템플릿 경로가 됩니다. - **2단계: 새 환경 파일 만들기** 현재 새 에셋 유형에 대한 디렉토리 구조가 있으며 새 디렉토리 구조에서 파일을 저장하고 게시할 위치를 설명하는 템플릿이 있습니다. 이제 툴킷에 이러한 새 템플릿을 사용할 시기를 알려야 합니다. 이렇게 하려면 새 환경 파일을 만듭니다. @@ -1359,11 +1353,11 @@ b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에 ## 커스텀 엔티티를 사용하여 커스텀 파이프라인 단계를 만드는 방법 -{% include product %} 7.0.6.0에서는 [관리자 메뉴를 통한 파이프라인 단계 관리](https://support.shotgunsoftware.com/hc/ko/articles/222766227#managing_pipeline_steps)가 도입되었습니다. 이 기능을 사용하면 파이프라인 단계에 커스텀 필드를 쉽게 추가할 수 있습니다. **전문가 팁: 대부분의 경우 파이프라인 단계에서 커스텀 필드를 사용하면 해당 파이프라인 단계를 관리할 커스텀 엔티티를 만드는 것보다 체계적으로 파이프라인을 유지할 수 있습니다.** +{% include product %} 7.0.6.0에서는 [관리자 메뉴를 통한 파이프라인 단계 관리](https://support.shotgunsoftware.com/hc/ko/articles/222766227#managing_pipeline_steps)가 도입되었습니다. 이 기능을 사용하면 파이프라인 단계에 커스텀 필드를 쉽게 추가할 수 있습니다. **전문가 팁: 대부분의 경우 파이프라인 단계에서 커스텀 필드를 사용하면 해당 파이프라인 단계를 관리할 커스텀 엔티티를 만드는 것보다 체계적으로 파이프라인을 유지할 수 있습니다.** 그러나 고급 사례에서는 대체 파이프라인 단계가 유용할 수 있습니다. 예를 들어 파이프라인 단계 영역에서 프로덕션과 파이프라인에 대한 다양한 명명 규칙 및 구조의 유연성과, 독립적으로 이름을 지정하고 구조화할 수 있는 유연성을 가질 수 있습니다. 일반적으로 {% include product %}에서 기본 제공하는 파이프라인 단계는 일정 계획 목적으로 사용되지만 다른 [커스텀 엔티티](https://support.shotgunsoftware.com/hc/ko/articles/114094182834)를 사용하여 파일 시스템을 구성하고 파이프라인에서 개별 태스크를 그룹으로 지정할 수 있습니다. 태스크에서 커스텀 엔티티로 커스텀 링크 필드를 만들어 이 작업을 수행할 수 있습니다. 그런 다음 시스템에서 단계 노드를 통해 태스크를 함께 그룹으로 지정하는 데 사용됩니다. 폴더 구성에서 {% include product %}의 기본 제공 파이프라인 단계 대신 커스텀 단계 설정을 사용하도록 두 가지 특별한 옵션을 추가합니다. entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file + task_link_field: "sg_task_type" diff --git a/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md index 7d075cca7..f6c69c011 100644 --- a/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ b/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md @@ -243,7 +243,7 @@ Websocket 서버의 RPC API를 이용한 두 번째 반복은 툴킷 액션을 ![](images/Integration-admin-guide/action_menu.png) -브라우저 통합 코드는 사용자의 시스템에 Houdini, Maya, Nuke 및 Photoshop을 설치할 때 찾을 수 있으며 이러한 각 통합을 시작하기 위한 메뉴 액션이 됩니다. 특정 환경 구성 파일에서 해당 소프트웨어의 시작 관리자가 해당 환경의 엔티티를 표시하도록 하려면 소프트웨어 엔티티의 _엔진_이 있어야 합니다. 따라서 이 예에서는 이 코드 조각을 가져온 파일에 `tk-houdini`, `tk-maya`, `tk-nuke` 및 `tk-photoshopcc` 엔진이 모두 있어야 합니다. 예를 들어, 이 엔티티에 있는 시작 관리자 목록에서 Maya를 제거하려면 환경 구성 파일에서 `tk-maya` 엔진 블록만 제거하면 됩니다. +브라우저 통합 코드는 사용자의 시스템에 Houdini, Maya, Nuke 및 Photoshop을 설치할 때 찾을 수 있으며 이러한 각 통합을 시작하기 위한 메뉴 액션이 됩니다. 특정 환경 구성 파일에서 해당 소프트웨어의 시작 관리자가 해당 환경의 엔티티를 표시하도록 하려면 소프트웨어 엔티티의 *엔진*이 있어야 합니다. 따라서 이 예에서는 이 코드 조각을 가져온 파일에 `tk-houdini`, `tk-maya`, `tk-nuke` 및 `tk-photoshopcc` 엔진이 모두 있어야 합니다. 예를 들어, 이 엔티티에 있는 시작 관리자 목록에서 Maya를 제거하려면 환경 구성 파일에서 `tk-maya` 엔진 블록만 제거하면 됩니다. 이러한 시작 관리자뿐만 아니라 Publish 앱의 "게시...(Publish...)" 명령도 메뉴에 포함됩니다. @@ -264,6 +264,7 @@ tk-config-default2를 사용하면 업데이트를 config/env/includes/settings/ 먼저 [`config/env/asset.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47)로 이동하여 `tk-shotgun` 엔진 블록이 어떻게 [`@settings.tk-shotgun.asset`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47)을 가리키는지 확인합니다. `@` 기호는 구성 값이 포함된 파일에서 제공된 것임을 나타냅니다. 즉, 업데이트하려면 [env/includes/settings/`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml)로 이동해야 합니다. `env/includes/settings/tk-shotgun.yml`에서 각 블록이 엔티티에 대해 어떻게 되는지 확인하십시오. 예를 들어 에셋은 먼저 다음과 같이 됩니다. + ``` # asset @@ -341,7 +342,6 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 2. Chrome 또는 Python Websocket 서버가 연결을 거부했기 때문에 {% include product %} 웹 응용프로그램에서 {% include product %} 데스크톱과 통신할 수 없습니다. 이 상황은 대부분 자체 서명된 인증서와 관련되어 있으며 요청 시 연결을 설정할 수 있습니다. 이러한 인증서를 처음부터 다시 생성하면 문제가 해결되기도 하며 다음과 같이 {% include product %} 데스크톱에서 트리거할 수 있습니다. - ![](images/Integration-admin-guide/regenerate_certs.png) 1. 시작 시 {% include product %} 데스크톱의 Websocket 서버를 시작하지 못했습니다. 이 상황은 잘못된 Websocket 서버 릴리즈가 사용자에게 공개된 경우에만 해당되며 거의 발생하지 않습니다. 이 상황에서, 로깅은 오류에 대해 설명하는 [tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/)에 표시되며 이 내용은 [{% include product %}의 지원 팀으로 전송](https://support.shotgunsoftware.com/hc/en-us/requests/new)될 수 있습니다. @@ -376,7 +376,6 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 3. 사용자가 두 개 이상의 {% include product %} 사이트에서 작업 중입니다. 단일 사이트에서 {% include product %} 데스크톱을 인증한 상태에서 두 번째 {% include product %} 사이트에서 메뉴 액션을 요청하면 사용자에게 {% include product %} 데스크톱을 다시 시작하여 새 사이트에 로그인하라는 메시지가 표시됩니다. 해당 요청을 무시하면 두 번째 사이트는 메뉴 액션 목록을 받을 수 없습니다. - ## 툴킷 구성 파일 스튜디오에서 프록시 서버를 사용하는 경우, 초기 로그인 화면에 몇 가지 값을 미리 입력해 두려는 경우 또는 브라우저 기반 응용프로그램 시작 관리자가 {% include product %} 데스크톱과 상호 작용하는 방식을 변경하려는 경우에 사용할 수 있는 `toolkit.ini`라는 특수 구성 파일이 있습니다. {% include product %} 데스크톱을 실행하는 데는 이 파일이 필요하지 않으며 데스크톱의 동작을 구성해야 하는 경우에만 필요합니다. 툴킷은 다음과 같은 순서로 여러 위치에서 이 파일을 찾습니다. @@ -395,8 +394,6 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 또한 이 파일에서 환경 변수는 물론 하드 코딩된 값도 사용할 수 있습니다. 예를 들면, Windows에 있는 USERNAME 변수를 통해 사용자에게 제안할 기본 사용자 이름을 선택할 수 있습니다. - - **레거시 위치(더 이상 사용되지 않음)** `toolkit.ini`가 현재 표준 파일 이름이지만 이전에는 `config.ini` 파일을 동일한 용도로 사용했습니다. `toolkit.ini` 및 `config.ini`의 내용은 동일합니다. 더 이상 사용되지 않는 다음 위치를 사용하면 `config.ini`가 검색됩니다. @@ -487,7 +484,6 @@ _시나리오: 프로젝트가 거의 마무리 단계인데 {% include product - 이제 프로젝트에서 {% include product %} 데스크톱을 시작하는 모든 사람은 항상 v1.0.36을 사용하게 됩니다. 프로젝트에서 작업을 시작하는 새 사용자도 v1.0.36을 받게 됩니다. - ![](images/Integration-admin-guide/freeze_single_project.png) **유용한 정보** @@ -546,7 +542,7 @@ _시나리오: 자동 업데이트를 계속 허용할 테스트 프로젝트를 ### 잠긴 사이트 안전하게 업그레이드 -- 시나리오: 현재 v1.0.0으로 잠근 상태인데 v2.0.0으로 업그레이드하려고 합니다. 하지만 스튜디오로 배포하기 전에 먼저 새 버전을 테스트하려고 합니다.* +- 시나리오: 현재 v1.0.0으로 잠근 상태인데 v2.0.0으로 업그레이드하려고 합니다. 하지만 스튜디오로 배포하기 전에 먼저 새 버전을 테스트하려고 합니다.\* **솔루션** @@ -574,7 +570,7 @@ _시나리오: 자동 업데이트를 계속 허용할 테스트 프로젝트를 ![](images/Integration-admin-guide/wizard_select.png) -새 프로젝트 구성을 시작할 때 가장 먼저 결정해야 할 사항은 _사용할 구성 템플릿_입니다. 구성 템플릿은 기본적으로 프로젝트를 실행하는 데 필요한 모든 설정, 파일 시스템 템플릿, 앱 및 로직이 포함된 완전한 프로젝트 구성입니다. +새 프로젝트 구성을 시작할 때 가장 먼저 결정해야 할 사항은 *사용할 구성 템플릿*입니다. 구성 템플릿은 기본적으로 프로젝트를 실행하는 데 필요한 모든 설정, 파일 시스템 템플릿, 앱 및 로직이 포함된 완전한 프로젝트 구성입니다. - 프로젝트를 처음 사용하는 경우 {% include product %} 기본값으로 시작하는 것이 좋습니다. - 이전 프로젝트에서 이미 프로젝트 및 구성을 구성한 경험이 있는 경우 기존 프로젝트를 기반으로 새 프로젝트를 만들면 이러한 항목을 쉽게 다시 사용할 수 있습니다. @@ -657,7 +653,7 @@ Windows에서 실행 중인 경우 컴퓨터에 git를 설치하고 `PATH`에서 저장소 선택 목록 끝에 있는 `+New` 항목을 선택하여 마법사에서 새 로컬 저장소를 만들 수도 있습니다. 현재 OS의 로컬 저장소 이름과 경로를 묻는 메시지가 나타납니다. -프로젝트가 설정되면 툴킷에서 각 저장소 위치에 각 새 프로젝트에 대한 폴더를 생성합니다. 예를 들어, 기본 저장소 위치가 `/mnt/projects`인 경우 _The Edwardian Cry_라는 프로젝트는 `/mnt/projects/the_edwardian_cry`에 생성됩니다. 그리고 구성에서 기본 저장소 외에 더 많은 저장소를 사용하는 경우 각 저장소는 `the_edwardian_cry` 폴더에 생성됩니다. +프로젝트가 설정되면 툴킷에서 각 저장소 위치에 각 새 프로젝트에 대한 폴더를 생성합니다. 예를 들어, 기본 저장소 위치가 `/mnt/projects`인 경우 *The Edwardian Cry*라는 프로젝트는 `/mnt/projects/the_edwardian_cry`에 생성됩니다. 그리고 구성에서 기본 저장소 외에 더 많은 저장소를 사용하는 경우 각 저장소는 `the_edwardian_cry` 폴더에 생성됩니다. 기본 저장소 위치는 일반적으로 `/mnt/projects` 또는 `\\studio\projects`와 유사한 형태이며 보통 이미 프로젝트 데이터를 프로젝트별로 그룹 지정하여 저장하고 있는 위치입니다. 이 위치는 거의 항상 공유 네트워크 저장소입니다. @@ -677,7 +673,8 @@ Windows에서 실행 중인 경우 컴퓨터에 git를 설치하고 `PATH`에서 이번이 첫 번째 프로젝트라면 대개의 경우 향후 모든 파이프라인 구성을 저장할 디스크의 공유 영역을 확인해야 할 것입니다. 일반적으로 이 위치는 스튜디오 전체에서 공유하는 소프트웨어 또는 소프트웨어 설정을 저장하는 위치입니다. 형식은 `/mnt/software/shotgun`과 비슷할 수 있으며, 스튜디오 네트워크 및 파일 명명 규칙에 따라 다를 수 있습니다. -첫 번째 구성을 설정할 때는 스튜디오에서 사용하는 모든 플랫폼에 대한 경로로 설정합니다. 이렇게 하면 나중에 모든 컴퓨터에서 액세스할 수 있는 환경을 쉽게 생성할 수 있습니다. 예를 들면, 프로젝트 이름이 _Golden Circle_인 경우 다음 세 경로를 입력할 수 있습니다. +첫 번째 구성을 설정할 때는 스튜디오에서 사용하는 모든 플랫폼에 대한 경로로 설정합니다. 이렇게 하면 나중에 모든 컴퓨터에서 액세스할 수 있는 환경을 쉽게 생성할 수 있습니다. 예를 들면, 프로젝트 이름이 *Golden Circle*인 경우 다음 세 경로를 입력할 수 있습니다. + ``` linux: /mnt/software/shotgun/golden_circle macosx: /servers/production/software/shotgun/golden_circle diff --git a/docs/ko/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md b/docs/ko/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md index 7571f275a..7458d628b 100644 --- a/docs/ko/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ b/docs/ko/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md @@ -8,6 +8,7 @@ lang: ko # Disabling auto updates and offline usage ## Auto updates + ### What parts auto update? By default {% include product %} Desktop will automatically check for updates, and install them to the local machine if it finds any. @@ -51,7 +52,7 @@ When you start either of them up, it will automatically try to look for updates, It is recommended that you follow the "Managing updates" steps bellow after installing {% include product %} Desktop, as the components bundled with the installer may not be the latest. -{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} {% include info title="Note" content="You will still need to be able to connect to your ShotGrid site. When we say offline we are talking about not being able to connect to our app store to download updates." %} @@ -64,12 +65,12 @@ To update the `tk-framework-desktopstartup` component, you will need to [downloa For the `tk-config-basic` component it's a bit more tricky, due to all its dependencies. 1. Run {% include product %} Desktop on a workstation connected to the internet. When it starts up, the latest upgrades will be automatically downloaded. -(Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) + (Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) 2. Copy the bundle cache to a shared location where all machines can access it. 3. Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. 4. When Desktop starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. -{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} **CREATE does come with it's own bundled config, however it doesn't seem to have the engines, or atleast doesn't share them when launching Maya for example.** @@ -80,29 +81,26 @@ In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE 1. Determine the version you want to lock your project to. You can find the integration releases [here](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations). 2. In {% include product %}, create a Pipeline Configuration entity for the project you want to lock down, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): - - Name: `Primary` - - Project: The project you want to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) - + + - Name: `Primary` + - Project: The project you want to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` + ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) + 3. Anyone starting {% include product %} Desktop on the project will now always use `v1.0.36`. Any new users starting to work on the project will also get `v1.0.36`. #### Good to know - The next time a user launches Desktop while connected to the Internet, `v1.0.36` of the basic config, and all of its related code, will be downloaded to their machine. - `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya`, `basic.nuke`. -- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. +- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. #### Known issues -- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. -However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. -The solution would be to create an additional Pipeline Configuration override specifically for flame: - - Name: `Primary` - - Project: The project you want to lock down (or None for all projects) - - Plugin ids: `basic.flame` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. + However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. + The solution would be to create an additional Pipeline Configuration override specifically for flame: - Name: `Primary` - Project: The project you want to lock down (or None for all projects) - Plugin ids: `basic.flame` - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### Disabling updates for all projects @@ -127,10 +125,10 @@ You can - Disabling updates for your site as described in the above section. - Configure the exception project’s Pipeline Configuration entity to have the following field values: - - Name: `Primary` - - Project: The project you want not to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` + - Name: `Primary` + - Project: The project you want not to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` ![Two Pipeline Configurations, one disabling updates to the whole site, and the other enabling updates on a single project](images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg) #### Good to know @@ -138,7 +136,8 @@ You can Note that you’ve omitted the version number from the Descriptor field for the project. This will mean that the project is tracking the latest release of the basic config. ### Upgrading -Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.* + +Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.\* Solution Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting "Duplicate Selected". @@ -147,4 +146,4 @@ You will now begin to use this Pipeline Configuration. Change the descriptor to point to the version you wish to test. You can invite any users you want to partake in testing by adding them to the User Restrictions field. Once you are happy with testing, simply update the main Pipeline Configuration to use that version. -Once users restart Desktop or DCCs, the update will be picked up. \ No newline at end of file +Once users restart Desktop or DCCs, the update will be picked up. diff --git a/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md index 156984e81..f6c55b033 100644 --- a/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md +++ b/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md @@ -23,7 +23,7 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한을 갖고 있는 경 아래는 툴킷(SGTK)에 대한 간단한 설명입니다. -- 툴킷은 {% include product %} 플랫폼 기반의 _파이프라인 툴킷_입니다. 이 툴킷을 사용하면 스튜디오용 도구를 쉽게 작성하고 설치할 수 있습니다. +- 툴킷은 {% include product %} 플랫폼 기반의 *파이프라인 툴킷*입니다. 이 툴킷을 사용하면 스튜디오용 도구를 쉽게 작성하고 설치할 수 있습니다. - 툴킷은 파일 시스템을 기반으로 합니다. 디스크에서 항목의 저장 위치를 정리하여 디스크에 있는 항목을 깔끔하게 구성할 수 있습니다. - 툴킷은 보조적인 역할을 합니다. 파이프라인에서 데이터를 인수하거나 추상화하지는 않지만, 아티스트에게 정보를 쉽게 찾고 오류를 방지할 수 있는 강력한 도구를 제공합니다. - 툴킷을 통해 {% include product %}에 모든 게시를 저장하여 작업을 공유할 수 있습니다. 툴킷을 사용하면 프로덕션 전반에 걸쳐 발생하는 업데이트 및 작업을 쉽게 공유할 수 있습니다. @@ -36,15 +36,15 @@ _이 문서에서는 툴킷 구성에 대한 제어 권한을 갖고 있는 경 ![](images/toolkit-overview/new_project.png) -새 프로젝트를 설정할 때 _템플릿 구성_을 사용합니다. 이는 엔진 및 앱, 파일 시스템 구성, 기타 설정이 포함된 사전 정의된 구성입니다. 툴킷으로 시작하는 경우 예제 구성을 탐색의 시작점으로 사용할 수 있습니다. 다른 프로젝트에서 툴킷을 사용하고 있는 경우, 해당 구성을 새 프로젝트의 시작점으로 사용하는 것이 좋습니다. 그렇게 하면 스튜디오 구성을 개선시켜 각각의 새로운 프로젝트에 맞게 조정할 수 있습니다. 물론 스튜디오 구성을 개별적으로 유지 관리하고 이를 모든 새 프로젝트의 템플릿으로 사용할 수도 있습니다. +새 프로젝트를 설정할 때 *템플릿 구성*을 사용합니다. 이는 엔진 및 앱, 파일 시스템 구성, 기타 설정이 포함된 사전 정의된 구성입니다. 툴킷으로 시작하는 경우 예제 구성을 탐색의 시작점으로 사용할 수 있습니다. 다른 프로젝트에서 툴킷을 사용하고 있는 경우, 해당 구성을 새 프로젝트의 시작점으로 사용하는 것이 좋습니다. 그렇게 하면 스튜디오 구성을 개선시켜 각각의 새로운 프로젝트에 맞게 조정할 수 있습니다. 물론 스튜디오 구성을 개별적으로 유지 관리하고 이를 모든 새 프로젝트의 템플릿으로 사용할 수도 있습니다. -각 구성은 여러 _저장 지점_을 정의합니다. 표준 샘플 구성인 `tk-config-default`의 경우 _기본_이라는 단일 저장소 지점을 정의합니다. 즉, 모든 프로덕션 데이터가 단일 파일 시스템 프로젝트 루트 아래에 있음을 의미합니다. 두 개 이상의 파일 시스템 루트를 사용하여 구성을 설정할 수도 있습니다. 이를 _다중 루트 구성_이라고 합니다. 다중 루트 구성이 필요한 경우에는 렌더링과 편집을 위해 별도의 저장소가 있어야 할 경우 등이 있습니다. 이러한 저장 지점은 각각 {% include product %}의 _로컬 파일 저장소_여야 하며 사이트 기본 설정(Site Preferences)의 _파일 관리_(File Management) 탭 아래에서 설정할 수 있습니다. +각 구성은 여러 *저장 지점*을 정의합니다. 표준 샘플 구성인 `tk-config-default`의 경우 *기본*이라는 단일 저장소 지점을 정의합니다. 즉, 모든 프로덕션 데이터가 단일 파일 시스템 프로젝트 루트 아래에 있음을 의미합니다. 두 개 이상의 파일 시스템 루트를 사용하여 구성을 설정할 수도 있습니다. 이를 *다중 루트 구성*이라고 합니다. 다중 루트 구성이 필요한 경우에는 렌더링과 편집을 위해 별도의 저장소가 있어야 할 경우 등이 있습니다. 이러한 저장 지점은 각각 {% include product %}의 *로컬 파일 저장소*여야 하며 사이트 기본 설정(Site Preferences)의 _파일 관리_(File Management) 탭 아래에서 설정할 수 있습니다. 툴킷은 원하는 위치에 실제 프로젝트 구성을 설치합니다. 일반적으로 프로젝트 데이터 영역 자체가 아니라 디스크의 _소프트웨어 설치_ 영역으로 이동됩니다. ## 스튜디오 구성 개선 -새 프로젝트를 설정할 때 기존 프로젝트를 기반으로 시작할 수 있습니다. 툴킷은 해당 프로젝트의 구성 폴더를 새 프로젝트로 복사합니다. 즉, 새 프로젝트는 기반이 되는 프로젝트와 동일한 버전의 앱과 엔진, 동일한 설정 및 동일한 커스터마이제이션을 가져옵니다. 이 기능은 _파이프라인을 개선_시키고 기존 프로덕션의 개선 및 조정 사항을 활용하려는 경우 유용할 수 있습니다. +새 프로젝트를 설정할 때 기존 프로젝트를 기반으로 시작할 수 있습니다. 툴킷은 해당 프로젝트의 구성 폴더를 새 프로젝트로 복사합니다. 즉, 새 프로젝트는 기반이 되는 프로젝트와 동일한 버전의 앱과 엔진, 동일한 설정 및 동일한 커스터마이제이션을 가져옵니다. 이 기능은 *파이프라인을 개선*시키고 기존 프로덕션의 개선 및 조정 사항을 활용하려는 경우 유용할 수 있습니다. 또는 해당 프로젝트 설정에 만족하는 경우 프로젝트의 구성 폴더를 가져와서 중앙 위치에 저장할 수 있습니다. 그러면 이 구성을 스튜디오 템플릿으로 사용할 수 있으며 새 프로젝트를 만들 때마다 이 구성을 기반으로 설정할 수 있습니다. 원하는 경우, git 또는 이와 유사한 리비전 제어 시스템을 사용하여 이 스튜디오 템플릿 구성을 소스 제어할 수도 있으며, 파이프라인 구성 템플릿이 시간이 지남에 따라 어떻게 개선되는지를 간단하고 투명하게 트래킹할 수 있습니다. 업데이트할 때마다 프로젝트 중 하나에서 구성을 복사하고 변경 사항을 커밋합니다. @@ -85,6 +85,7 @@ tank updates [environment_name] [engine_name] [app_name] 특수 키워드 `ALL`을 사용하여 한 범주의 모든 항목을 나타낼 수 있습니다. 예: + - 모든 항목 검사: `tank updates` - 샷 환경 검사: `tank updates Shot` - 모든 환경의 모든 Maya 앱 검사: `tank updates ALL tk-maya` @@ -116,7 +117,7 @@ Toolkit Core API의 새 버전이 릴리즈될 때가 있습니다. Core API를 # 현재 컨텍스트 -파일 시스템 구조가 만들어지면 툴킷은 디스크상의 폴더와 폴더를 가져온 {% include product %} 객체 사이의 관계를 인식합니다. 이는 경로를 게시, 로드 또는 확인할 때 툴킷이 {% include product %}의 객체를 폴더, 디스크 또는 파일과 쉽게 연관시킬 수 있기 때문에 중요합니다. 또한 _컨텍스트_ 또는 _현재 작업 영역_과도 연관됩니다. 컨텍스트 객체는 Toolkit Core의 일부이며 작업 중인 현재 항목을 트래킹합니다. 이는 툴킷이 파일 시스템 경로를 확인할 때의 중앙 메커니즘입니다. +파일 시스템 구조가 만들어지면 툴킷은 디스크상의 폴더와 폴더를 가져온 {% include product %} 객체 사이의 관계를 인식합니다. 이는 경로를 게시, 로드 또는 확인할 때 툴킷이 {% include product %}의 객체를 폴더, 디스크 또는 파일과 쉽게 연관시킬 수 있기 때문에 중요합니다. 또한 _컨텍스트_ 또는 *현재 작업 영역*과도 연관됩니다. 컨텍스트 객체는 Toolkit Core의 일부이며 작업 중인 현재 항목을 트래킹합니다. 이는 툴킷이 파일 시스템 경로를 확인할 때의 중앙 메커니즘입니다. ![](images/toolkit-overview/context.png) @@ -124,12 +125,12 @@ Toolkit Core API의 새 버전이 릴리즈될 때가 있습니다. Core API를 # 파일 시스템 템플릿 -Toolkit Core에는 파일 경로를 처리하는 시스템이 있습니다. 이를 _템플릿 시스템_이라고 합니다. 툴킷은 파일 시스템 기반이므로, 앱에서 디스크의 데이터를 읽거나 쓸 필요가 있을 때마다 파일 경로를 확인해야 합니다. 앱은 파일 시스템 구조로부터 독립적입니다. 즉, 파일 시스템이 어떻게 구성되어 있는지 모릅니다. 이러한 사항은 템플릿 시스템에서 처리합니다. +Toolkit Core에는 파일 경로를 처리하는 시스템이 있습니다. 이를 *템플릿 시스템*이라고 합니다. 툴킷은 파일 시스템 기반이므로, 앱에서 디스크의 데이터를 읽거나 쓸 필요가 있을 때마다 파일 경로를 확인해야 합니다. 앱은 파일 시스템 구조로부터 독립적입니다. 즉, 파일 시스템이 어떻게 구성되어 있는지 모릅니다. 이러한 사항은 템플릿 시스템에서 처리합니다. -템플릿 시스템의 핵심에는 _템플릿 구성 파일_이 있습니다. 이 파일에는 프로젝트의 중요한 파일 시스템 위치가 모두 들어 있습니다. _템플릿_의 모양은 다음과 같습니다. +템플릿 시스템의 핵심에는 *템플릿 구성 파일*이 있습니다. 이 파일에는 프로젝트의 중요한 파일 시스템 위치가 모두 들어 있습니다. *템플릿*의 모양은 다음과 같습니다. ```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "shots/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` 특정 동적 필드를 포함하는 경로를 정의합니다. 각 필드는 유효성 확인 및 입력을 통해 구성될 수 있습니다. 예를 들어 위 템플릿의 `{version}` 필드를 3개의 0으로 채워진 정수(예: `001`, `012`, `132`)로 정의할 수 있습니다. 앱이 디스크에서 쓰거나 읽을 필요가 있을 때마다 해당 위치를 설명하기 위해 템플릿 파일에 템플릿이 추가됩니다. 앱은 종종 파이프라인을 형성하도록 설정되기 때문에 한 앱(예: 게시 앱)의 출력 템플릿은 종종 다른 앱(예: 로딩 앱)의 입력 템플릿이 됩니다. 이것이 모든 파일 시스템 위치가 단일 파일에 보관되는 이유입니다. @@ -161,7 +162,7 @@ maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' ![](images/toolkit-overview/templates.png) -이를 위해 _툴킷 컨텍스트_가 개입됩니다. 툴킷 컨텍스트를 사용하면 템플릿 필드를 두 개의 개별 그룹으로 나눌 수 있습니다. 컨텍스트 필드(`Shot`, `Step`, `Asset` 등)는 앱 로직이 샷 및 에셋과 같은 개념을 특별히 처리하는 코드를 가질 필요가 없도록 앱 밖에서 확인되는 필드입니다. 대신 앱은 앱의 특정 _비즈니스 로직_과 직접 연관된 필드에 정보를 입력해야 합니다. Publish 앱의 이 예에서는 비즈니스 로직이 `name` 및 `version` 필드로 구성됩니다. 위의 그림에서 알 수 있듯이 툴킷은 필드 확인을 두 개의 진행단계로 나눕니다. 일부 필드는 컨텍스트에 의해 입력되고 일부 필드는 앱 내부의 비즈니스 로직에 의해 입력됩니다. 이렇게 하면 특정 파일 시스템 레이아웃에 연결되지 않은 앱을 설계할 수 있습니다. 이는 좋은 파이프라인 도구를 만드는 중요한 요소입니다. +이를 위해 *툴킷 컨텍스트*가 개입됩니다. 툴킷 컨텍스트를 사용하면 템플릿 필드를 두 개의 개별 그룹으로 나눌 수 있습니다. 컨텍스트 필드(`Shot`, `Step`, `Asset` 등)는 앱 로직이 샷 및 에셋과 같은 개념을 특별히 처리하는 코드를 가질 필요가 없도록 앱 밖에서 확인되는 필드입니다. 대신 앱은 앱의 특정 *비즈니스 로직*과 직접 연관된 필드에 정보를 입력해야 합니다. Publish 앱의 이 예에서는 비즈니스 로직이 `name` 및 `version` 필드로 구성됩니다. 위의 그림에서 알 수 있듯이 툴킷은 필드 확인을 두 개의 진행단계로 나눕니다. 일부 필드는 컨텍스트에 의해 입력되고 일부 필드는 앱 내부의 비즈니스 로직에 의해 입력됩니다. 이렇게 하면 특정 파일 시스템 레이아웃에 연결되지 않은 앱을 설계할 수 있습니다. 이는 좋은 파이프라인 도구를 만드는 중요한 요소입니다. 경로 확인을 처리하는 앱 코드는 일반적으로 다음과 같습니다. @@ -181,6 +182,7 @@ fields["version"] = 234 # order to save out the file path = publish_template_obj.apply_fields(fields) ``` + 템플릿 API를 구성하고 사용하는 방법에 대한 자세한 정보는 다음을 참조하십시오. [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868) @@ -193,7 +195,7 @@ Toolkit Core의 또 다른 중요한 역할은 _사용자에게 어떤 앱을 이러한 유연성을 고려하여 툴킷 프로젝트 구성에는 여러 _환경_ 컬렉션이 포함되어 있습니다. 환경은 앱 및 엔진 컬렉션과 모든 구성 매개변수를 정의하는 구성 파일입니다. -툴킷이 시작되면 _어떤_ 환경을 초기화할지 결정해야 합니다. 이 과정은 고유한 비즈니스 로직을 추가할 수 있는 Python 코드 조각, 즉 _후크_를 통해 수행됩니다. _컨텍스트_ 객체가 이 코드 조각으로 전달되며 이는 종종 사용할 환경을 결정하는 데 사용됩니다. +툴킷이 시작되면 _어떤_ 환경을 초기화할지 결정해야 합니다. 이 과정은 고유한 비즈니스 로직을 추가할 수 있는 Python 코드 조각, 즉 *후크*를 통해 수행됩니다. _컨텍스트_ 객체가 이 코드 조각으로 전달되며 이는 종종 사용할 환경을 결정하는 데 사용됩니다. ![](images/toolkit-overview/environment.png) @@ -211,7 +213,7 @@ Toolkit Core의 또 다른 중요한 역할은 _사용자에게 어떤 앱을 기본 구성은 파이프라인 단계를 기반으로 해당 파일 시스템을 구성했습니다. 즉, 샷 위치에서 Modeling, Rigging 등의 폴더를 찾을 수 있습니다. 기본적으로 작업 중인 각 파이프라인 단계마다 하나의 폴더가 있습니다. 디스크의 이러한 각 폴더에는 자체 작업 및 게시 영역이 있습니다. 게시 템플릿은 다음과 같이 표시될 수 있습니다. ```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` 이 템플릿을 사용하려면 컨텍스트에 엔티티와 파이프라인 단계가 모두 포함되어야 합니다. 시퀀스 `ABC`의 하위인 샷 `1122`와 파이프라인 단계 `Modeling`의 경우 위의 템플릿은 `sequences/ABC/1122/Modeling/...`로 해석됩니다. 즉, 샷은 있지만 파이프라인 단계는 포함하지 않은 컨텍스트는 위의 템플릿을 채우기에 충분하지 않습니다. 샷만 있는 컨텍스트에서 위의 템플릿을 사용하여 Maya를 시작할 수는 없습니다. 작동시키기 위해서는 단계를 수행해야 합니다. @@ -240,13 +242,13 @@ maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' ## 후크 -툴킷은 템플릿을 사용하는 앱 설정 외에도 _후크_라는 개념을 지원합니다. 후크는 Python 코드의 작은 조각이므로 구성의 일부로 앱 일부를 커스터마이즈할 수 있습니다. +툴킷은 템플릿을 사용하는 앱 설정 외에도 *후크*라는 개념을 지원합니다. 후크는 Python 코드의 작은 조각이므로 구성의 일부로 앱 일부를 커스터마이즈할 수 있습니다. 다음은 작동 방식과 유용성에 대한 설명입니다. -앱은 여러 엔진과 프로젝트에서 재사용할 수 있기 때문에 강력합니다. 그러나 앱에 작은 조각의 일부 엔진별 로직이 필요할 수 있습니다. 예를 들어 Nuke와 Maya에서 모두 작동하는 Loader 앱을 빌드하는 경우 _실제 파일 로드_를 처리하는 코드가 있어야 합니다. 이 코드는 Nuke 및 Maya에서 달라야 합니다. 모든 엔진과 함께 이 앱을 사용할 수 있다면 더욱 좋을 것입니다. 또한 스튜디오마다 씬에 항목을 로드하는 방법이 다를 수 있습니다. 어떤 스튜디오에서는 커스텀 Maya 참조 노드를 지원해야 하고 어떤 스튜디오에서는 가져오기만 수행할 수도 있습니다. +앱은 여러 엔진과 프로젝트에서 재사용할 수 있기 때문에 강력합니다. 그러나 앱에 작은 조각의 일부 엔진별 로직이 필요할 수 있습니다. 예를 들어 Nuke와 Maya에서 모두 작동하는 Loader 앱을 빌드하는 경우 *실제 파일 로드*를 처리하는 코드가 있어야 합니다. 이 코드는 Nuke 및 Maya에서 달라야 합니다. 모든 엔진과 함께 이 앱을 사용할 수 있다면 더욱 좋을 것입니다. 또한 스튜디오마다 씬에 항목을 로드하는 방법이 다를 수 있습니다. 어떤 스튜디오에서는 커스텀 Maya 참조 노드를 지원해야 하고 어떤 스튜디오에서는 가져오기만 수행할 수도 있습니다. -이 상황은 툴킷에서 _후크_를 사용하여 처리됩니다. 후크는 커스터마이즈 가능한 코드 조각입니다. 앱은 기본 레벨의 구현을 포함하는 기본 후크와 함께 제공됩니다. 즉, 앱은 즉시 사용이 가능합니다. 그러나 동작을 커스터마이즈하려는 경우 해당 후크 파일을 구성에 복사하면 툴킷이 해당 코드를 대신 사용합니다. +이 상황은 툴킷에서 *후크*를 사용하여 처리됩니다. 후크는 커스터마이즈 가능한 코드 조각입니다. 앱은 기본 레벨의 구현을 포함하는 기본 후크와 함께 제공됩니다. 즉, 앱은 즉시 사용이 가능합니다. 그러나 동작을 커스터마이즈하려는 경우 해당 후크 파일을 구성에 복사하면 툴킷이 해당 코드를 대신 사용합니다. [관리자 안내서에서 후크 작업 방법에 대해 읽기.](https://support.shotgunsoftware.com/hc/ko/articles/219033178) @@ -282,7 +284,7 @@ maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' 툴킷은 단순히 앱 및 엔진의 컬렉션이 아닙니다. 자체 도구 및 기술을 개발하는 데 사용할 수 있는 프레임워크이기도 합니다. 툴킷에는 유용한 스튜디오 개발 플랫폼으로 사용할 수 있도록 많은 기능이 포함되었습니다. 스스로 기본 파이프라인을 빌드하는 대신 툴킷을 기반으로 당면한 문제에 집중할 수 있습니다. 개발자는 아티스트의 파이프라인에 영향을 주지 않고 소프트웨어를 빌드, 평가 및 릴리즈할 수 있습니다. - 엔진을 사용하면 기본 기반에 관계없이 Python 및 Qt(PySide/PySide2)로 앱을 작성할 수 있습니다. 이는 일부 엔진은 매우 간단하지만 일부 엔진은 제공된 API에 따라 더 복잡하다는 의미입니다. 즉, 간단하고 일관된 방법으로 스튜디오용 도구를 개발할 수 있습니다. 경험에 따르면 Python과 Qt는 개발 환경 스튜디오에서 사용되는 경우가 많으며 많은 TD가 이에 익숙합니다. -- 엔진 레이어는 또한 앱을 한 번 작성한 다음 여러 환경에 배포할 수 있음을 의미합니다. 당사는 표준 앱 제품군을 _다중 앱_으로 개발했습니다. 이는 동일한 앱이 모든 엔진에서 사용된다는 것을 의미합니다. 특정 코드는 반드시 각 DCC 응용프로그램이 노출하는 특정 API로 작업하도록 작성되어야 하지만 일반적으로 하나 이상의 후크에 포함되어 있기 때문에 앱을 쉽게 재활용할 수 있습니다. 이와 같은 다중 앱을 만들 수 있기 때문에 생기는 또 다른 결과는 새로운 엔진이 개발될 때 모든 표준 앱이 새로운 엔진과 작동하도록 쉽게 구성할 수 있다는 것입니다. +- 엔진 레이어는 또한 앱을 한 번 작성한 다음 여러 환경에 배포할 수 있음을 의미합니다. 당사는 표준 앱 제품군을 *다중 앱*으로 개발했습니다. 이는 동일한 앱이 모든 엔진에서 사용된다는 것을 의미합니다. 특정 코드는 반드시 각 DCC 응용프로그램이 노출하는 특정 API로 작업하도록 작성되어야 하지만 일반적으로 하나 이상의 후크에 포함되어 있기 때문에 앱을 쉽게 재활용할 수 있습니다. 이와 같은 다중 앱을 만들 수 있기 때문에 생기는 또 다른 결과는 새로운 엔진이 개발될 때 모든 표준 앱이 새로운 엔진과 작동하도록 쉽게 구성할 수 있다는 것입니다. - 파이프라인 구성 및 복제를 통해 개발 샌드박스를 쉽게 만들 수 있기 때문에 개발자는 일상적인 프로덕션 액티비티를 방해하지 않고 프로덕션에서 작업을 수행할 수 있습니다. 도구를 배포할 준비가 되면 기본 프로젝트 구성을 쉽게 업데이트하고 도구를 모든 아티스트에게 롤아웃할 수 있습니다. - 앱은 엔진 내부에서 실행되므로 쉽게 다시 로드할 수 있습니다. 새 코드 변경을 테스트할 때마다 Nuke 또는 Maya를 다시 시작하지 않고 툴킷에서 다시 로드 버튼을 누르기만 하면 최신 코드가 로드됩니다. diff --git a/docs/ko/guides/pipeline-integrations/development.md b/docs/ko/guides/pipeline-integrations/development.md index 7a296704b..aaa8c3274 100644 --- a/docs/ko/guides/pipeline-integrations/development.md +++ b/docs/ko/guides/pipeline-integrations/development.md @@ -23,6 +23,7 @@ lang: ko 이러한 작업을 수행하려면 툴킷 API를 사용하는 방법을 이해하는 것이 중요합니다. ShotGrid에는 전체적으로 세 가지 주요 API가 있습니다. + - [ShotGrid Python API](https://developer.shotgridsoftware.com/python-api) - [ShotGrid REST API](https://developer.shotgridsoftware.com/rest-api/) - [ShotGrid 툴킷 API](https://developer.shotgridsoftware.com/tk-core) @@ -33,4 +34,4 @@ ShotGrid에는 전체적으로 세 가지 주요 API가 있습니다. 대신 툴킷 API는 파일 경로의 통합 및 관리에 중점을 둡니다. 일부 툴킷 앱 및 프레임워크에는 [자체 API](../../reference/pipeline-integrations.md)도 있습니다. -이 문서에서는 툴킷을 사용하여 개발하는 방법에 대해 설명합니다. \ No newline at end of file +이 문서에서는 툴킷을 사용하여 개발하는 방법에 대해 설명합니다. diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md index 16fdfde23..b6b192ced 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md @@ -16,6 +16,7 @@ ShotGrid Pipeline Toolkit은 ShotGrid 소프트웨어가 관리하는 앱과 엔 - [자체 앱 제작](#creating-your-own-app) 단계: + 1. [개발 샌드박스 생성](#part-1-creating-a-development-sandbox) 2. [스타터 앱 리포지토리 포크(fork) 또는 다운로드](#part-2-forking-or-downloading-the-starter-app-repository) 3. [구성에 앱 추가](#part-3-adding-the-app-to-your-config) @@ -28,8 +29,9 @@ ShotGrid Pipeline Toolkit은 ShotGrid 소프트웨어가 관리하는 앱과 엔 6. [첫 번째 릴리즈 준비](#part-6-preparing-your-first-release) 추가 정보: + - [기존 앱 수정](#modifying-an-existing-app) - - [기여](#contributing) + - [기여](#contributing) ## 툴킷 앱이란? @@ -47,17 +49,19 @@ ShotGrid Pipeline Toolkit은 ShotGrid 소프트웨어가 관리하는 앱과 엔 따라서 앱은 해당 목적을 이행하기 위한 기능을 제공하는 데만 중점을 두며 창 부모-자식 관리, 사용자의 컨텍스트 추적 또는 앱 시작 단축키 등의 기능을 처리할 필요가 없습니다. ## 자체 앱 제작 + ShotGrid 소프트웨어를 통해 관리 및 릴리즈되는 모든 앱과 엔진은 오픈 소스로, [GitHub](https://github.com/shotgunsoftware)에서 찾아볼 수 있습니다. 이 섹션에서는 스타터 템플릿을 사용하여 새 앱을 생성하는 방법을 살펴봅니다. 사용자들이 이미 GitHub 및 git 워크플로우에 익숙할 것으로 생각되기는 하지만 git을 소스 제어 솔루션으로 사용하고 있지 않더라도 툴킷 개발은 얼마든지 진행할 수 있습니다. - ## 1부: 개발 샌드박스 생성 + 시작하기 전에 프로젝트 구성을 복제하여 [개발 샌드박스를 설정](../getting-started/installing_app.md#clone-the-pipeline-configuration-you-want-to-add-an-app-to)}하는 것이 좋습니다. 이렇게 하면 프로덕션에 참여하는 다른 누구에게도 영향을 미치지 않고 코드 개발 및 변경 사항 테스트를 수행할 수 있는 별도의 구성이 만들어집니다. ## 2부: 스타터 앱 리포지토리 포크(fork) 또는 다운로드 + 자체 앱의 시작점으로 사용할 수 있는 [템플릿 스타터 앱](https://github.com/shotgunsoftware/tk-multi-starterapp)을 제공합니다. 이 앱을 사용하면 본인에게 맞게 설정된 모든 표준 툴킷 보일러플레이트(boilerplate) 코드 및 기본 예제 GUI를 가져올 수 있습니다. @@ -67,6 +71,7 @@ ShotGrid 소프트웨어를 통해 관리 및 릴리즈되는 모든 앱과 엔 어느 방법을 사용하든 목표는 스타터 앱 코드의 로컬 사본을 만들어 수정할 수 있도록 하는 것입니다. ## 3부: 구성에 앱 추가 + 구성에 앱을 추가하는 방법에 대한 자세한 내용은 "[앱 추가](../getting-started/installing_app.md)" 안내서를 참조하십시오. 앱을 구성에 추가할 때는 앱이 사용되는 위치(예: Nuke에서만 사용, 여러 다른 소프트웨어 또는 ShotGrid 데스크톱에서 독립 실행형으로 사용)를 고려해야 합니다. @@ -85,6 +90,7 @@ tk-multi-starterapp: type: dev path: /path/to/source_code/tk-multi-starterapp ``` + 이렇게 하면 코드를 변경하고 싶은 경우에는 언제든지, 툴킷이 개발에 용이한 지정된 위치의 디스크에서 직접 앱 코드를 로드합니다. 나중에 앱을 프로덕션 구성에 추가할 때는 다른 디스크립터를 사용할 수 있습니다. @@ -102,34 +108,38 @@ tk-multi-starterapp: - **app.py** - 앱 진입점 및 메뉴 등록은 `app.py` 파일에서 찾을 수 있습니다. 이 파일에서 보통 클래스를 설정하고, 항목을 초기화하고, 메뉴 항목을 등록합니다. - **info.yml** - 매니페스트 파일이라고도 합니다. 앱 설치 시 필요한 다른 모든 설정과 해당하는 기본값(제공할 경우)을 정의합니다. - 재사용 가능한 앱을 원하고, 앱 자체에서는 어떠한 값도 하드 코딩하고 싶지 않은 경우 대개 이러한 설정이 유용합니다. + 재사용 가능한 앱을 원하고, 앱 자체에서는 어떠한 값도 하드 코딩하고 싶지 않은 경우 대개 이러한 설정이 유용합니다. - **python/app/dialog.py** - 여기에는 메인 앱 창을 생성하는 로직 및 이벤트 콜백 등이 포함됩니다. - **python/app/ui** - 이 폴더에는 자동 생성된 UI 코드 및 리소스 파일이 포함됩니다. 이 파일을 직접 편집하지 말고, 대신 `resources` 폴더의 Qt UI 파일을 편집하십시오. - **resources/** - resources 폴더에 있는 `dialog.ui` 파일은 사용자가 열어서 앱의 모양을 빠르게 디자인하고 정의하는 데 사용할 수 있는 QT Designer 파일입니다. - 변경한 후에는 `build_resources.sh` 스크립트를 실행하여 UI 파일을 Python 코드로 변환하고 `/python/app/ui/dialog.py`로 저장해야 합니다. + 변경한 후에는 `build_resources.sh` 스크립트를 실행하여 UI 파일을 Python 코드로 변환하고 `/python/app/ui/dialog.py`로 저장해야 합니다. - **style.qss** - 이 파일에서 UI에 대한 QSS(Qt 스타일 시트)를 정의할 수 있습니다. {% include info title="참고" content="UI는 앱의 필수 사항이 아닙니다. 유효한 앱에 대한 최소 요구 사항은 `Application` 클래스와 `info.yml`을 포함하는 `app.py`입니다." %} ### 구성 설정 + 매니페스트 파일 내에 `configuration` 섹션이 있어야 하며, 여기서 앱 설정을 정의할 수 있습니다. 매니페스트 파일의 설정을 정의하면 환경 YAML 파일에서 앱에 대해 다른 설정 값을 구성할 수 있습니다. 이 기능은 앱이 환경에 따라 다르게 동작해야 하는 경우에 유용합니다. 예를 들어 파일을 저장할 때 사용할 템플릿을 정의하는 설정을 지정할 수 있습니다. + ```yaml save_template: - type: template - default_value: "maya_asset_work" - description: The template to use when building the path to save the file into - allows_empty: False + type: template + default_value: "maya_asset_work" + description: The template to use when building the path to save the file into + allows_empty: False ``` + 이 설정을 지정하면 앱 코드에서 템플릿 이름을 하드 코딩할 필요가 없고 대신 `info.yml`에 기본적으로 정의되거나 환경 YAML 파일에서 재정의된 설정에서 [값을 가져올](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting) 수 있습니다. ```python template = app.get_setting("save_template") ``` + 즉, 앱이 실행되는 환경에 따라 다른 템플릿을 사용하도록 앱을 구성할 수 있습니다. [참조 문서](https://developer.shotgridsoftware.com/tk-core/platform.html#the-configuration-section)에서 구성 설정에 대한 자세한 내용을 확인할 수 있습니다. @@ -148,6 +158,7 @@ frameworks: ``` #### 최소한으로 필요한 프레임워크 버전 + 최소한으로 필요한 프레임워크 버전이 있다면 minimum_version 설정을 `info.yml`에서 사용할 수 있습니다. ```python @@ -177,6 +188,7 @@ Maya 등의 소프트웨어 내에서 앱을 테스트하는 경우, 구성에 {% include info title="참고" content="화면에 활성 상태인 UI가 있는 경우 이 UI는 자동으로 업데이트되지 않으며, 메뉴에서 해당 UI로 이동하여 다시 시작해야 합니다." %} ## 5부: 테스트 + 코드를 테스트하려면 다른 사용자들을 ShotGrid에서 `PipelineConfiguration` 엔티티의 `User Restrictions` 필드에 추가하여 dev 샌드박스로 초대하기만 하면 됩니다. 사용자를 추가하면 바로 ShotGrid Create 및 브라우저 액션 내의 메뉴에 새 항목이 표시되고, ShotGrid 데스크톱 내부에서 구성을 선택하는 옵션도 제공됩니다. @@ -193,10 +205,11 @@ ShotGrid에서 제공하는 모든 앱은 툴킷 앱 스토어를 사용하여 ```yaml location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 + name: tk-multi-setframerange + type: app_store + version: v0.1.7 ``` + 이 태그를 통해 툴킷(예: `tank updates` 명령)은 업데이트가 제공될 때 이를 확인하여 매우 안전한 방식으로 구성을 업데이트 및 관리할 수 있습니다. 업데이트 명령이 실행되고 새 버전이 나올 때마다 툴킷은 코드를 다운로드하여, 디스크의 로컬 "번들 캐시"에 배치하고, 사용자가 여기에 액세스할 수 있도록 합니다. @@ -219,7 +232,7 @@ git 디스크립터 사용 여부에 관계없이 소스 제어를 사용하여 - git 리포지토리에는 단일 앱만 포함되어야 합니다. - git 리포지토리는 [스타터 앱 리포지토리](https://github.com/shotgunsoftware/tk-multi-starterapp)와 동일한 구조를 가져야 합니다. - 태그를 생성할 때는 [시맨틱(Semantic) 버전](https://semver.org/lang/ko/)을 사용해야 합니다. - 툴킷은 이 버전 번호를 사용하여 어느 버전이 최신인지 판단하고 `vX.Y.Z` 규칙을 따릅니다. + 툴킷은 이 버전 번호를 사용하여 어느 버전이 최신인지 판단하고 `vX.Y.Z` 규칙을 따릅니다. git에 첫 번째 태그를 생성하고 나면(예: `v1.0.0`) 태그를 가리키는 git 디스크립터를 사용하도록 구성을 설정할 수 있습니다. 설정하고 나면 `tank updates`를 간단히 실행할 수 있고, 새 태그가 생성되었다면 업그레이드할지 묻는 메시지가 나타납니다. @@ -228,6 +241,7 @@ git에 첫 번째 태그를 생성하고 나면(예: `v1.0.0`) 태그를 가리 {% include warning title="주의" content="git 디스크립터는 [중앙 집중식 구성](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)에서 잘 작동합니다. 중앙 집중식 구성에서 앱 캐싱은 일반적으로 관리자(admin)가 실행하며 모든 사용자가 액세스할 수 있는 중앙 위치에 저장됩니다. 그러나 [분산 구성](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)을 사용하는 경우에는 적합하지 않을 수 있습니다. 앱이 사용자별로 다운로드되므로 각 사용자가 리포지토리에서 인증받고 코드에 액세스하기 위해 git를 설치하고 설정해야 합니다." %} ## 기존 앱 수정 + 빈 스타터 템플릿으로 시작하는 것보다 기존 앱(예: ShotGrid 소프트웨어의 표준 앱 중 하나)에 작은 기능을 추가하는 것이 좋을 때도 있습니다. 수정된 버전의 앱으로 작업할 때에는 보통 소스 앱과 비교하여 차이점을 '트래킹'하면서 변경 사항이나 버그 픽스를 정기적으로 끌어오는 방식을 사용합니다. @@ -238,17 +252,18 @@ git에 첫 번째 태그를 생성하고 나면(예: `v1.0.0`) 태그를 가리 다음 워크플로우는 진행 방식을 보여 줍니다. - 부모 앱을 포크(fork)하고, 자체 리포지토리를 생성합니다. 포크(fork)를 통해 모든 git 태그를 가져옵니다. - 최신 태그는 `v0.2.12`이며, 마스터 분기는 기본적으로 이 태그의 컨텐츠와 동일하다고 가정해 보겠습니다. + 최신 태그는 `v0.2.12`이며, 마스터 분기는 기본적으로 이 태그의 컨텐츠와 동일하다고 가정해 보겠습니다. - 변경 사항을 적용하고 마스터 분기로 커밋합니다. 이제 `v0.2.12` 및 변경 사항이 준비되었습니다. - 이를 프로덕션으로 릴리즈할 때 태그를 생성해야 합니다. 태그 이름을 `v0.2.12.1`로 지정하여 코드가 `v0.2.12`를 기반으로 하고 있으며, 이것이 첫 번째 릴리즈임을 나타냅니다. + 이를 프로덕션으로 릴리즈할 때 태그를 생성해야 합니다. 태그 이름을 `v0.2.12.1`로 지정하여 코드가 `v0.2.12`를 기반으로 하고 있으며, 이것이 첫 번째 릴리즈임을 나타냅니다. - 누군가가 수정 사항에서 버그를 발견합니다. 버그를 수정하고, 태그를 지정한 다음 `v0.2.12.2`를 릴리즈합니다. - 다수의 중요한 버그 픽스가 부모 리포지토리에 릴리즈되었습니다. - 이를 여러분의 리포지토리로 끌어옵니다. 이제 가장 최신 태그는 부모 리포지토리에서 이루어진 릴리즈로 인해 `v0.2.15`가 됩니다. - 변경 사항을 마스터와 병합하고, 테스트합니다. 이제 기본적으로 부모 앱 `v0.2.15`에 변경 사항이 병합됩니다. `v0.2.15.1`에 태그를 지정합니다. + 이를 여러분의 리포지토리로 끌어옵니다. 이제 가장 최신 태그는 부모 리포지토리에서 이루어진 릴리즈로 인해 `v0.2.15`가 됩니다. + 변경 사항을 마스터와 병합하고, 테스트합니다. 이제 기본적으로 부모 앱 `v0.2.15`에 변경 사항이 병합됩니다. `v0.2.15.1`에 태그를 지정합니다. 위에서 설명한 태그 지정 체계를 따르면 툴킷 업데이트가 올바로 작동하고, 포크(fork)의 각 태그가 어느 코드를 기반으로 하는지 쉽고 빠르게 확인할 수 있습니다. ### 기여 + 저희는 여러분들의 요청을 환영합니다. 다른 사람에게도 도움이 될 만한 변경 사항이 있다면 주저하지 말고 사용자 요청으로 알려 주십시오. 피드백을 앱의 메인 버전에 적용할 수도 있을 것입니다. [로드맵 페이지](https://www.shotgunsoftware.com/roadmap/)에서 새 아이디어에 대한 제안을 추가해 주셔도 좋습니다. diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md index e80c396d2..062aeb7fc 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md @@ -15,7 +15,6 @@ lang: ko {% include info title="참고" content="[분산 구성](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)을 사용하는 경우 툴킷 엔진은 툴킷 API 방식을 실행하기 전에 초기화되어야 합니다. [중앙 집중식 구성](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)을 사용하는 경우 엔진을 부트스트랩(Bootstrapping)하지 않고 [팩토리 방식](https://developer.shotgridsoftware.com/tk-core/initializing.html#factory-methods)을 사용하여 API를 사용할 수 있지만 `sgtk` 가져올 때 프로젝트에 맞는 올바른 Core API의 경로를 수동으로 찾아야 합니다." %} - ### 요구사항 - Python 프로그래밍 기본 사항에 대한 이해 @@ -147,12 +146,11 @@ sgtk.set_authenticated_user(user) 3. 현재 로드된 Sgtk Core를 구성에 적합한 Sgtk Core로 교체합니다. 4. 엔진, 앱 및 프레임워크를 초기화합니다. - {% include info title="참고" content="일반적으로 부트스트랩(Bootstrapping)은 해당 엔진이 성공적으로 실행되기 위해 필요한 모든 사항을 처리합니다. 그러나 엔진이 부트스트랩(Bootstrapping) 프로세스를 벗어나는 설정 요구사항을 가지고 있다면 개별적으로 처리해야 할 수도 있습니다." %} - ### 부트스트랩(Bootstrap) 준비 + 부트스트랩(Bootstrap)하려면 먼저 [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) 인스턴스를 작성해야 합니다. ```python @@ -166,17 +164,20 @@ mgr = sgtk.bootstrap.ToolkitManager() 부트스트랩(Bootstrap) 방식을 호출하기 전에 문자열을 `ToolkitManager.plugin_id` 매개변수로 전달하여 플러그인 ID를 정의할 수 있습니다. 이 안내서에서는 참조 문서에 설명된 규칙에 따라 적합한 플러그인 ID 이름을 제공해야 하므로 `tk-shell` 엔진을 부트스트랩(Bootstrapping)합니다. + ```python mgr.plugin_id = "basic.shell" ``` #### 엔진 + Maya 또는 Nuke와 같은 소프트웨어 외의 독립 실행형 Python 환경에서 앱을 시작하거나 툴킷 코드를 실행하는 것이 목표인 경우 `tk-shell`이 부트스트랩(Bootstrapping)할 엔진입니다. 지원되는 소프트웨어 내에서 툴킷 앱을 실행하려는 경우 적절한 엔진(예: `tk-maya` 또는 `tk-nuke`)을 선택해야 합니다. 이 매개변수는 [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식에 직접 전달됩니다. 아래 [엔티티 섹션](#entity)의 예를 참조하십시오. #### 엔티티 + [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식 `entity` 매개변수는 시작한 엔진에 대해 [컨텍스트](https://developer.shotgridsoftware.com/tk-core/core.html#context) 및 [환경](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=environment#module-pick_environment)을 설정하는 데 사용됩니다. 이 엔티티는 구성이 작동하도록 설정된 엔티티 유형 중 하나일 수 있습니다. 예를 들어 `Project` 엔티티를 제공하는 경우 엔진은 프로젝트 환경 설정을 사용하여 프로젝트 컨텍스트에서 시작됩니다. @@ -209,7 +210,6 @@ def pre_engine_start_callback(ctx): mgr.pre_engine_start_callback = pre_engine_start_callback ``` - #### 구성 선택 부트스트랩할 구성을 명시적으로 정의할 수도 있고 부트스트랩(Bootstrapping) 로직이 [적절한 구성을 자동 감지](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations)하도록 할 수도 있습니다. @@ -270,6 +270,7 @@ engine.context engine.sgtk engine.shotgun ``` + 이 안내서의 최종 목표는 앱 시작 방법을 보여 주는 것입니다. 이 시점에서 위의 속성을 사용하여 일부 코드 조각을 테스트하거나 툴킷 API를 사용하는 일부 자동화를 실행할 수 있습니다. ### 앱 시작 @@ -278,6 +279,7 @@ engine.shotgun 앱이 차례로 엔진에 명령을 등록하며, Maya와 같은 소프트웨어에서 실행하는 경우 엔진은 대개 이 명령을 메뉴에 액션으로 표시합니다. #### 명령 찾기 + 등록된 명령을 먼저 확인하려면 [`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) 특성을 출력하면 됩니다. ```python diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md index c97baddb6..bfc30d151 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md @@ -8,22 +8,25 @@ lang: ko # 자체 엔진 개발 ## 소개 + 이 문서에서는 툴킷 엔진 개발에 관한 몇 가지 기술적인 정보를 간략히 소개합니다. 목차: + - [툴킷 엔진이란?](#what-is-a-toolkit-engine) - [시작하기 전에 알아야 할 사항](#things-to-know-before-you-start) - [엔진 통합 방식](#approaches-to-engine-integration) - - [QT, PyQt/PySide 및 Python이 포함되는 호스트 소프트웨어](#host-software-includes-qt-pyqtpyside-and-python) - - [QT 및 Python은 포함되지만 PySide/PyQt는 포함되지 않는 호스트 소프트웨어](#host-software-includes-qt-and-python-but-not-pysidepyqt) - - [Python이 포함되는 호스트 소프트웨어](#host-software-includes-python) - - [Python이 포함되지 않지만 플러그인을 작성할 수 있는 호스트 소프트웨어](#host-software-does-not-contain-python-but-you-can-write-plugins) - - [스크립트 작성 기능을 전혀 제공하지 않는 호스트 소프트웨어](#host-software-provides-no-scriptability-at-all) + - [QT, PyQt/PySide 및 Python이 포함되는 호스트 소프트웨어](#host-software-includes-qt-pyqtpyside-and-python) + - [QT 및 Python은 포함되지만 PySide/PyQt는 포함되지 않는 호스트 소프트웨어](#host-software-includes-qt-and-python-but-not-pysidepyqt) + - [Python이 포함되는 호스트 소프트웨어](#host-software-includes-python) + - [Python이 포함되지 않지만 플러그인을 작성할 수 있는 호스트 소프트웨어](#host-software-does-not-contain-python-but-you-can-write-plugins) + - [스크립트 작성 기능을 전혀 제공하지 않는 호스트 소프트웨어](#host-software-provides-no-scriptability-at-all) - [Qt 창 부모-자식 관리](#qt-window-parenting) - [시작 동작](#startup-behavior) - [호스트 소프트웨어 위시리스트](#host-software-wish-list) ## 툴킷 엔진이란? + 엔진 개발 시, 엔진에 로드되는 다양한 툴킷 앱 및 프레임워크와 호스트 소프트웨어를 효과적으로 연결할 수 있습니다. 엔진을 사용하면 소프트웨어 간의 차이점을 추상화할 수 있기 때문에 Python 및 QT를 사용하여 소프트웨어에 구속받지 않는 방식으로 앱을 작성할 수 있습니다. @@ -67,20 +70,20 @@ ShotGrid 팀에서는 가장 일반적으로 사용되는 컨텐츠 생성 소 호스트 앱의 기능이 무엇인지에 따라 엔진 개발의 복잡성이 결정됩니다. 이 섹션에서는 엔진 개발 중에 지금까지 발견된 여러 복잡성 수준을 간략하게 살펴봅니다. - ### Qt , PyQt/PySide 및 Python이 포함되는 호스트 소프트웨어 + 이 방식이 최선의 툴킷 설정입니다. 엔진을 Qt, Python 및 PySide를 지원하는 호스트 소프트웨어에 구현하는 작업은 매우 직관적입니다. [Nuke 엔진](https://github.com/shotgunsoftware/tk-nuke) 또는 [Maya 엔진](https://github.com/shotgunsoftware/tk-maya)이 좋은 예입니다. 통합은 단지 일부 로그 파일 관리를 연결하고, 코드를 작성하여 ShotGrid 메뉴를 설정하는 것에 불과합니다. - ### Qt 및 Python은 포함되지만 PySide/PyQt는 포함되지 않는 호스트 소프트웨어 + 이 소프트웨어 클래스에는 [Motionbuilder](https://github.com/shotgunsoftware/tk-motionbuilder) 등이 포함되며 비교적 통합이 간단합니다. 호스트 소프트웨어 자체는 Qt로 작성되고, Python 인터프리터를 포함하고 있기 때문에 PySide 또는 PyQt 버전을 컴파일하고, 엔진과 함께 배포할 수 있습니다. 그러면 이 PySide가 Python 환경에 추가되고, Python을 이용한 Qt 객체 액세스가 가능해집니다. 일반적으로 PySide를 컴파일할 때는 샷 응용프로그램을 컴파일할 때 사용한 정확한 컴파일러 설정을 사용해야 올바로 작동합니다. - ### Python이 포함되는 호스트 소프트웨어 + 이 소프트웨어 클래스에는 타사 통합 [Unreal](https://github.com/ue4plugins/tk-unreal) 등이 포함됩니다. 이 호스트 소프트웨어는 비-Qt UI를 갖고 있지만 Python 인터프리터를 포함합니다. 즉, Python 코드를 환경 내에서 실행할 수 있지만 실행 중인 기존 Qt 이벤트 루프는 없습니다. @@ -88,8 +91,8 @@ ShotGrid 팀에서는 가장 일반적으로 사용되는 컨텐츠 생성 소 간혹 이 작업을 정확히 수행하기 위한 특별한 방식이 호스트 소프트웨어에 포함되기도 합니다. 포함되어 있지 않으면 정렬을 수행하여 Qt 이벤트 루프가 정기적으로(예: on-idle 호출을 통해) 실행되도록 해야 합니다. - ### Python이 포함되지 않지만 플러그인을 작성할 수 있는 호스트 소프트웨어 + 이 클래스에는 [Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) 및 [After Effects](https://github.com/shotgunsoftware/tk-aftereffects)가 포함됩니다. Python 스크립팅이 없지만 C++ 플러그인을 생성할 수 있습니다. 이 경우에는 IPC 레이어를 포함하며, 시작 시 별도 프로세스로 Qt 및 Python을 실행하는 플러그인을 생성하는 것이 일반적인 전략입니다. @@ -99,22 +102,24 @@ Python 스크립팅이 없지만 C++ 플러그인을 생성할 수 있습니다. {% include info title="팁" content="ShotGrid 팀에서는 Photoshop 및 After Effects 엔진을 사용하여 실제로 [Adobe 플러그인을 처리하는 프레임워크](https://github.com/shotgunsoftware/tk-framework-adobe)를 만들었습니다. 두 엔진 모두 프레임워크를 사용해 호스트 소프트웨어와 커뮤니케이션하고 나머지 Adobe 제품군에 대한 엔진을 더 쉽게 빌드할 수 있습니다." %} - ### 스크립트 작성 기능을 전혀 제공하지 않는 호스트 소프트웨어 -호스트 소프트웨어를 프로그래밍 방식으로 액세스할 수 없는 경우에는 엔진을 생성할 수 없습니다. +호스트 소프트웨어를 프로그래밍 방식으로 액세스할 수 없는 경우에는 엔진을 생성할 수 없습니다. ## Qt 창 부모-자식 관리 + 보통 창 부모-자식 관리에는 특별한 주의를 기울여야 합니다. 일반적으로 PySide 창은 위젯 계층에 친부모가 없으며, 이는 명시적으로 호출해야 합니다. 창 부모-자식 관리는 일관된 환경을 제공하는 데 중요한 요소이며, 이를 구현하지 않으면 툴킷 앱 창이 메인 창 뒤에 표시되어 혼동을 줄 수 있습니다. ## 시작 동작 + 엔진은 소프트웨어 시작 방법 및 통합의 시작 방법도 담당합니다. 이 로직은 `tk-multi-launchapp`이 엔진을 사용해 소프트웨어를 시작하려고 할 때 호출됩니다. 이 설정 방법에 대한 자세한 내용은 [코어 설명서](https://developer.shotgridsoftware.com/tk-core/initializing.html?highlight=create_engine_launcher#launching-software)에서 확인할 수 있습니다. ## 호스트 소프트웨어 위시리스트 + 다음 호스트 소프트웨어 특성을 툴킷 엔진이 활용할 수 있습니다. 많은 특성이 지원될수록 엔진 사용 환경이 향상됩니다! @@ -124,12 +129,13 @@ Python 스크립팅이 없지만 C++ 플러그인을 생성할 수 있습니다. - 파일 시스템 상호 작용을 래핑하는 API 명령: 열기, 저장, 다른 이름으로 저장, 참조 추가 등. - UI 요소를 추가하기 위한 API 명령 - - 커스텀 Qt 위젯을 앱에 패널로 추가(이상적으로는 번들 PySide를 통해 추가) - - 커스텀 메뉴/상황에 맞는 메뉴 항목 추가 - - 노드 기반 패키지의 커스텀 노드(상호 작용을 위한 커스텀 UI 통합 용이) - - 선택한 항목/노드 등을 가져오기 위한 인트로스펙션 + - 커스텀 Qt 위젯을 앱에 패널로 추가(이상적으로는 번들 PySide를 통해 추가) + - 커스텀 메뉴/상황에 맞는 메뉴 항목 추가 + - 노드 기반 패키지의 커스텀 노드(상호 작용을 위한 커스텀 UI 통합 용이) + - 선택한 항목/노드 등을 가져오기 위한 인트로스펙션 + - 유연한 이벤트 시스템 - - "흥미로운" 이벤트가 커스텀 노드 트리거 가능 + - "흥미로운" 이벤트가 커스텀 노드 트리거 가능 - 비동기적 UI 실행 지원 - - 예를 들면, 커스텀 메뉴 항목이 트리거되면 나타나지만 인터페이스를 잠그지 않는 팝업 대화상자 - - 커스텀 UI 창의 부모-자식 관계가 올바로 지정되도록 최상위 창에 핸들 제공 \ No newline at end of file + - 예를 들면, 커스텀 메뉴 항목이 트리거되면 나타나지만 인터페이스를 잠그지 않는 팝업 대화상자 + - 커스텀 UI 창의 부모-자식 관계가 올바로 지정되도록 최상위 창에 핸들 제공 diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md index c5e2dfadb..2d143d32a 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md @@ -8,9 +8,11 @@ lang: ko # 자체 프레임워크 개발 ## 소개 + 이 문서에서는 Toolkit 프레임워크 개발에 관한 몇 가지 기술적인 정보를 간략히 소개합니다. 목차: + - [툴킷 프레임워크란?](#what-is-a-toolkit-framework) - [사전 작성된 ShotGrid 프레임워크](#pre-made-shotgun-frameworks) - [프레임워크 작성](#creating-a-framework) @@ -42,5 +44,6 @@ ShotGrid은 자체 앱을 제작할 때 유용한 몇 가지 사전 작성 [프 API 문서에는 [프레임워크를 가져오는 방법](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)에 대한 예가 있습니다. ## 후크에서 프레임워크 사용 + 후크를 통해 몇 가지 공통 로직을 공유하도록 프레임워크를 생성하는 것이 유용할 수 있습니다. [`Hook.load_framework()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Hook.load_framework) 방식을 이용하면 앱/프레임워크에서 매니페스트 파일에 명시적으로 요구하지 않는 경우에도 앱 또는 기타 프레임워크 후크에서 프레임워크를 사용할 수 있습니다. 코어 후크에서는 이 방식을 사용하더라도 프레임워크를 사용할 수 없습니다. diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md index d9d993bef..e0cace677 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md @@ -45,6 +45,7 @@ ShotGrid이 이미 시작된 환경에서 코드를 실행하는 경우 다음 ```python import sgtk ``` + ShotGrid 통합 외부에서 API를 사용하려면(예: 즐겨 사용하는 IDE에서 테스트하는 경우) 먼저 API에 대한 경로를 설정해야 합니다. ```python @@ -79,14 +80,14 @@ API 설명서에 언급된 것처럼 `Sgtk` 인스턴스를 직접 만들지는 [`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) 특성을 통해 `Sgtk` 인스턴스에 액세스할 수 있습니다. - *참고: `Engine.sgtk` 특성을 1부에서 가져온 `sgtk` 패키지와 혼동하거나 동일하게 간주해서는 안 됩니다.* + _참고: `Engine.sgtk` 특성을 1부에서 가져온 `sgtk` 패키지와 혼동하거나 동일하게 간주해서는 안 됩니다._ 2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity) - 엔진이 아직 시작되지 않은 환경에서 실행 중인 경우 이 방식을 사용하여 엔티티 ID에 맞게 `Sgtk` 인스턴스를 가져올 수 있습니다. ID를 제공하는 엔티티는 `sgtk` API를 가져온 프로젝트에 속해야 합니다. - *이 방식은 분산 구성에서 작동하지 않습니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오.* + _이 방식은 분산 구성에서 작동하지 않습니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오._ 3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path) - 구성 경로나 프로젝트 루트 폴더 내부 또는 이에 대한 경로(예: 작업 파일 또는 샷 폴더)를 허용하는 경우를 제외하고 `sgtk_from_entity()`와 비슷합니다. - *이 방식은 분산 구성에서 작동하지 않습니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오.* + _이 방식은 분산 구성에서 작동하지 않습니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오._ 이 안내서에서는 엔진이 이미 시작된 환경에서 이 코드를 실행한다고 가정하므로 옵션 1을 사용합니다. 또한 `Sgtk` 클래스 인스턴스를 `tk`라는 변수에 저장합니다. @@ -133,6 +134,7 @@ tk = current_engine.sgtk ```python context = current_engine.context ``` + 이후 단계에서 샷의 태스크 파일 경로를 해석하는 데 컨텍스트를 사용하므로 관련 정보가 컨텍스트에 포함되어 있어야 합니다. 코드가 툴킷 앱의 일부로 실행되고 앱이 shot_step 환경에서만 실행되도록 구성된 경우에는 적합한 현재 컨텍스트를 가져온다고 충분히 가정할 수 있습니다. @@ -193,6 +195,7 @@ context = tk.context_from_entity("Task", 13155) ```python tk.create_filesystem_structure("Task", context.task["id"]) ``` + 컨텍스트 객체를 사용하여 태스크 ID를 가져와 폴더를 생성할 수 있습니다. 이제 코드는 다음과 같아야 합니다. @@ -235,7 +238,7 @@ template = tk.templates["maya_shot_publish"] [기본 구성](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.12/core/templates.yml#L305-L306)에서 해석되지 않은 템플릿 경로는 다음과 같습니다. ```yaml -'sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}' +"sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}" ``` 템플릿은 실제 값으로 해석되어야 하는 키로 구성됩니다. @@ -246,6 +249,7 @@ fields = context.as_template_fields(template) >> {'Sequence': 'seq01_chase', 'Shot': 'shot01_running_away', 'Step': 'comp'} ``` + [`Context.as_template_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) 방식을 사용하면 템플릿 키를 올바르게 해석하기 위한 값을 포함하는 사전(dictionary)이 제공됩니다. 그러나 모든 키에 대해 값이 제공되지는 않습니다. `name`, `version` 및 `maya_extension`은 여전히 누락된 상태입니다. @@ -280,12 +284,12 @@ publish_path = template.apply_fields(fields) [`os`](https://docs.python.org/3/library/os.html) 모듈을 가져오고 [`os.path.dirname(publish_path)`](https://docs.python.org/3/library/os.path.html#os.path.dirname)를 실행하여 폴더의 전체 파일 경로를 추출할 수 있습니다. ### 경로를 사용하여 파일 생성 또는 복사 + 이 시점에는 경로가 있으며, 이 경로를 사용하여 Maya에 파일을 저장하거나 다른 위치에서 파일을 복사하도록 지시할 수 있습니다. 이 안내서에서는 해당 위치에서 디스크에 파일을 실제로 생성하는 동작을 구현하는 것은 중요하게 다루지 않습니다. 해당 위치에 파일이 없더라도 경로를 게시할 수 있습니다. 그러나 [`sgtk.util.filesystem.touch_file()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file)을 사용하여 툴킷이 디스크에 빈 파일을 생성하도록 할 수 있습니다. - ### 최종 결과 ```python @@ -501,4 +505,4 @@ sgtk.util.register_publish(tk, 이 안내서를 통해 툴킷 API를 시작하는 방법에 대한 기본적인 이해를 갖추게 되었기를 바랍니다. 물론 API를 사용하는 다른 방법도 많이 있으므로 자세한 내용은 [tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html)를 참조해 주십시오. -또한 API에 대한 질문에 답을 구하고 이 안내서에 대해 피드백을 남길 수 있는 [포럼](https://community.shotgunsoftware.com/c/pipeline/6)도 방문해 주십시오. \ No newline at end of file +또한 API에 대한 질문에 답을 구하고 이 안내서에 대해 피드백을 남길 수 있는 [포럼](https://community.shotgunsoftware.com/c/pipeline/6)도 방문해 주십시오. diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md index 257e1b3a1..881f4dc9a 100644 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md @@ -64,21 +64,21 @@ lang: ko - 사용자가 지정된 태스크에 자신을 할당할 수 있는 액션 - Maya에 {% include product %} 게시를 Maya 참조로 로드하는 액션 -액션의 실제 페이로드는 _액션 후크_에 정의됩니다. 액션 로직을 정의한 후에는 앱 구성에서 해당 액션을 {% include product %} 객체에 매핑할 수 있습니다. 이 액션 매핑은 다음 예와 같은 모습입니다. +액션의 실제 페이로드는 *액션 후크*에 정의됩니다. 액션 로직을 정의한 후에는 앱 구성에서 해당 액션을 {% include product %} 객체에 매핑할 수 있습니다. 이 액션 매핑은 다음 예와 같은 모습입니다. ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 위의 예에서는 `reference`, `import`, `texture_node`, `assign_task` 및 `play_in_rv` 액션을 사용합니다. 다음으로 다양한 {% include product %} 객체 및 조건에 액션을 매핑합니다. 예를 들어 모든 Maya 씬 게시 유형에 `import` 액션을 표시하려고 합니다. @@ -92,7 +92,7 @@ action_mappings: 패널은 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. 기본 구성 설정에서 다음과 같은 형식을 볼 수 있습니다. ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` `{self}` 키워드를 통해 툴킷은 앱의 `hooks` 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 `{config}/panel/maya_actions.py`로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 `hooks/panel/maya_actions.py`라는 후크를 사용하게 됩니다. @@ -175,11 +175,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다. @@ -202,4 +202,4 @@ Publish 앱을 사용하는 자세한 방법은 [사용자 안내서](https://su 앱을 직접 작성할 수 있다는 것을 알려 드렸나요? 각 엔진이 Python 및 PySide 기반의 일관된 인터페이스를 표시하기 때문에 Nuke, Photoshop 및 3dsmax에서 모두 작동하는 단일 앱을 작성할 수 있습니다. Core API 기능을 이용하면 스튜디오용 대규모 파이프라인 스택을 빌드할 필요가 없고, 대신 프로덕션 문제 해결에 dev 리소스를 집중할 수 있습니다. 이 툴킷 덕분에 프로젝트마다 도구를 재사용하는 것도 쉽습니다. 파일 명명 규칙이나 기타 요구 사항이 바뀌는 경우에는 앱을 재구성하기만 하면 됩니다. 툴킷의 기본 제공 Git 및 Github 지원을 통해 도구를 안전하게 롤아웃하고, 개발 시에는 빠르게 코드를 핫로드하십시오. 자체 Dev Sandbox에서 작업하고, 코드를 프로젝트 구성원 모두에게 롤아웃할 필요 없이 TD 및 얼리 어답터를 초대해 코드를 테스트할 수 있습니다. -![](images/develop.png) \ No newline at end of file +![](images/develop.png) diff --git a/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md index 5daa0b6c3..8b9df6578 100644 --- a/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md +++ b/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md @@ -32,8 +32,9 @@ lang: ko {% include product %} 데스크톱의 고급 프로젝트 설정(Advanced Project Setup) 마법사는 기본 구성을 기반으로 파이프라인 구성을 생성합니다. 기본 구성을 사용하면 탄탄한 기초를 토대로 파이프라인 프로세스를 지원하는 커스터마이즈 가능한 설정, 앱 및 UI 요소를 작성할 수 있습니다. 이 마법사를 통해 생성되는 구성은 프로젝트의 파이프라인 요구사항을 충족하도록 편집 및 확장할 수 있습니다. 기본 구성에는 다음이 포함됩니다. -* 디스크에서 파일이 저장되는 위치를 결정하는 기본 파일 시스템 스키마 및 템플릿 -* 사용자의 소프트웨어 응용프로그램에서 바로 {% include product %} 및 파이프라인 기능과 상호 작용할 수 있게 해 주는, 모든 지원되는 [소프트웨어 통합](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines) + +- 디스크에서 파일이 저장되는 위치를 결정하는 기본 파일 시스템 스키마 및 템플릿 +- 사용자의 소프트웨어 응용프로그램에서 바로 {% include product %} 및 파이프라인 기능과 상호 작용할 수 있게 해 주는, 모든 지원되는 [소프트웨어 통합](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines) 커스터마이즈 수준은 상상력과 기발함, 그리고 프로그래밍 지식 또는 {% include product %} 커뮤니티의 다른 사용자가 만든 것을 가져다 쓸 수 있는 능력 등에 따라 달라질 수 있습니다. @@ -41,17 +42,16 @@ lang: ko 모든 프로젝트에는 구성이 필요합니다. {% include product %} 데스크톱을 통해 프로젝트에 처음 액세스하면 기초 구성이 다운로드되고 설정됩니다. 이 기초 구성에서는 사용자의 시스템에서 지원되는 컨텐츠 생성 소프트웨어를 자동으로 탐지하고 구성을 프로젝트와 연결합니다. 지원되는 소프트웨어 응용프로그램 내 통합은 파이프라인 구성의 설정에 의해 제어됩니다. [Panel](https://support.shotgunsoftware.com/hc/ko/articles/219033098-Shotgun-Panel) 앱에는 {% include product %}의 프로젝트 정보가 표시되므로 아티스트가 작업 세션을 떠나지 않고도 노트에 회신하고 버전을 볼 수 있습니다. [Publisher](https://support.shotgunsoftware.com/hc/ko/articles/219032998-Publishing-your-work) 앱에서는 자신의 작업물을 팀의 다른 작업자와 공유할 수 있으며 [Loader](https://support.shotgunsoftware.com/hc/ko/articles/219033078-Load-Published-Files-) 앱을 통해서는 팀원이 게시한 파일을 로드할 수 있습니다. 기초 구성에는 파일 시스템 관리 설정이나 파일 및 디렉토리의 디스크 내 명명 방식을 템플릿 개발 등이 포함되지 않습니다. 또한, 기본 구성이 설정될 때 추가되는 다양한 앱도 포함되지 않습니다. 기초 구성은 구성 파일을 직접 편집하지 않고도 툴킷을 바로 실행할 수 있게 해주는 단순한 구성입니다. 이 마법사는 기초 구성을 기본 구성으로 변환합니다. 또한, 사용자의 작업을 지원하기 위해 추가적인 앱과 소프트웨어 통합을 제공합니다. 기초 구성도 편집 가능하기는 하지만, 고급 설정을 통해 프로젝트를 커스터마이즈할 수 있도록 설정할 때까지는 편집할 수 없습니다. - ### 기초 구성과 기본 구성의 차이점 -| 기능 | 기초 구성 | 기본 구성 | -| ------- | ------------------- | --------------------- | -| 다운로드 | 프로젝트에 액세스하면 자동으로 다운로드됨 | 고급 설정 마법사를 통해 생성됨 | -| 접근성 | 시스템 위치에 저장됨 | 수동으로 편집 가능한 파일 | -| 업데이트 | 자동으로 업데이트됨 | 수동으로 업데이트됨 | -| 파일 시스템 지원 | 파일 시스템 스키마 지원 안 함 | 폴더 구조와 파일 명명 표준을 지원하는 도구 포함 | -| 소프트웨어 통합 | 3ds Max, Houdini, Maya, Nuke, Photoshop, Flame | Basic + Hiero, Motionbulder, Mari | -| 툴킷 앱 | {% include product %} Panel, Publisher, Loader | Basic + Workfiles, Snap Shot, Scene Breakdown, Nuke Write Node, Houdini Mantra Node 등 | +| 기능 | 기초 구성 | 기본 구성 | +| ---------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------- | +| 다운로드 | 프로젝트에 액세스하면 자동으로 다운로드됨 | 고급 설정 마법사를 통해 생성됨 | +| 접근성 | 시스템 위치에 저장됨 | 수동으로 편집 가능한 파일 | +| 업데이트 | 자동으로 업데이트됨 | 수동으로 업데이트됨 | +| 파일 시스템 지원 | 파일 시스템 스키마 지원 안 함 | 폴더 구조와 파일 명명 표준을 지원하는 도구 포함 | +| 소프트웨어 통합 | 3ds Max, Houdini, Maya, Nuke, Photoshop, Flame | Basic + Hiero, Motionbulder, Mari | +| 툴킷 앱 | {% include product %} Panel, Publisher, Loader | Basic + Workfiles, Snap Shot, Scene Breakdown, Nuke Write Node, Houdini Mantra Node 등 | 이 안내서에서는 {% include product %} 데스크톱의 마법사를 사용하여 기본 구성을 기반으로 프로젝트의 파이프라인 구성을 생성합니다. 이 구성을 생성하면 자체 프로덕션 파이프라인을 지원하는 데 필요한 커스터마이즈를 수행할 수 있게 됩니다. diff --git a/docs/ko/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md b/docs/ko/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md index 2c75177e0..b2987beee 100644 --- a/docs/ko/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ b/docs/ko/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md @@ -21,9 +21,9 @@ lang: ko ### 이 안내서는 다음과 같이 세 부분으로 구성됩니다. -* {% include product %}에서 "Set"라는 **커스텀 엔티티** 만들기. 아티스트가 만드는 다이닝룸 요소와 연결하는 데 사용됩니다. -* **스키마** 폴더 편집. 툴킷이 폴더 구조에서 현재 세트를 기반으로 동적으로 이름이 지정된 폴더를 포함할 수 있게 합니다. -* 에셋 작업 파일 이름 지정에 사용되는 **템플릿** 편집. 툴킷이 파일 이름에 연관된 세트 이름을 포함할 수 있게 합니다. +- {% include product %}에서 "Set"라는 **커스텀 엔티티** 만들기. 아티스트가 만드는 다이닝룸 요소와 연결하는 데 사용됩니다. +- **스키마** 폴더 편집. 툴킷이 폴더 구조에서 현재 세트를 기반으로 동적으로 이름이 지정된 폴더를 포함할 수 있게 합니다. +- 에셋 작업 파일 이름 지정에 사용되는 **템플릿** 편집. 툴킷이 파일 이름에 연관된 세트 이름을 포함할 수 있게 합니다. ### 필수 요건 @@ -166,7 +166,6 @@ Set 엔티티는 `CustomEntity01`로 표시됩니다. {% include product %}에 ![Python 앱](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - **9단계:** 다음 내용으로 `CustomEntity01` 폴더 옆에 `CustomEntity01.yml` 파일을 만듭니다. ```yaml @@ -177,7 +176,7 @@ name: "code" entity_type: "CustomEntity01" filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } ``` YAML 파일은 툴킷에서 `CustomEntity01` 폴더 이름을 무엇으로 지정할지에 대한 지침을 제공합니다. 여기서는 유형이 `{% include product %}_entity`인 폴더를 만들고 있으며 이는 {% include product %} 쿼리에 해당함을 의미합니다. `entity_type` 필드는 {% include product %}에서 `CustomEntity01` 엔티티를 쿼리함을 나타내고 `name` 필드는 쿼리할 엔티티에 대한 *필드*를 나타내며 여기서는 `CustomEntity01`에서 `code` 필드를 가져옵니다. @@ -196,8 +195,8 @@ YAML 파일은 툴킷에서 `CustomEntity01` 폴더 이름을 무엇으로 지 ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } ``` 에셋에 대한 폴더를 만들기로 결정할 때 올바른 프로젝트 폴더에 있는지 올바른 asset_type 폴더에 있는지 확인하고 싶습니다. 이제 세트 폴더를 추가했으며 세 번째 필터를 추가하려고 합니다. 이 작업을 하지 않고 다음과 같은 폴더로 끝내면 잘못됩니다. @@ -207,28 +206,28 @@ assets/Dining-Room/Prop/spoon assets/Garage/Prop/spoon assets/Classroom/Prop/spoon ``` + 그렇게 되지 않도록 세 번째 필터를 추가하면 에셋의 폴더가 올바른 세트의 폴더에만 생성됩니다. **11단계:** `asset.yml`에서 `filters` 필드를 다음과 같이 수정합니다. ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - - { "path": "sg_set", "relation": "is", "values": [ "$CustomEntity04" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } + - { "path": "sg_set", "relation": "is", "values": ["$CustomEntity04"] } ``` - ## 폴더 생성 테스트 이제 Set 커스텀 엔티티별로 에셋을 구성하도록 스키마가 성공적으로 수정되었습니다. 이제 테스트해 보겠습니다. 폴더는 툴킷 파이프라인 워크플로우의 몇 지점에서 생성됩니다. -* **응용프로그램 시작 관리자**: 사용자가 태스크에 대한 DCC를 시작할 때마다 툴킷은 해당 태스크에 대한 디렉토리를 만듭니다(아직 없는 경우). 툴킷을 사용하여 수행하는 첫 번째 작업이 보통 DCC를 시작하는 것이기 때문에 이 방법이 디렉토리를 생성하는 가장 일반적인 방법입니다. 이 작업은 {% include product %} 또는 {% include product %} 데스크톱이나 Create 앱에서 마우스 오른쪽 버튼 클릭 메뉴를 통해 수행할 수 있습니다. -* **{% include product %} 메뉴**: 태스크에 대해 폴더를 만드는 가장 직접적인 방법은 {% include product %}에서 태스크를 마우스 오른쪽 버튼으로 클릭하고 "폴더 만들기"(Create Folders) 메뉴 항목을 선택하는 것입니다. -* **툴킷 API**: 툴킷 API를 통해 직접 디렉토리 생성 로직을 트리거할 수 있습니다. 툴킷 API는 커스텀 시작 관리자에 툴킷을 연결하거나, {% include product %}에서 샷이 생성될 때 샷에 대한 디렉토리를 자동으로 만들려는 워크플로우의 이벤트 트리거 등에 사용할 수 있습니다. -* **tank 명령**: {% include product %}의 메뉴 항목과 유사하며 `tank folders` 터미널 명령도 태스크에 대한 폴더를 만듭니다. +- **응용프로그램 시작 관리자**: 사용자가 태스크에 대한 DCC를 시작할 때마다 툴킷은 해당 태스크에 대한 디렉토리를 만듭니다(아직 없는 경우). 툴킷을 사용하여 수행하는 첫 번째 작업이 보통 DCC를 시작하는 것이기 때문에 이 방법이 디렉토리를 생성하는 가장 일반적인 방법입니다. 이 작업은 {% include product %} 또는 {% include product %} 데스크톱이나 Create 앱에서 마우스 오른쪽 버튼 클릭 메뉴를 통해 수행할 수 있습니다. +- **{% include product %} 메뉴**: 태스크에 대해 폴더를 만드는 가장 직접적인 방법은 {% include product %}에서 태스크를 마우스 오른쪽 버튼으로 클릭하고 "폴더 만들기"(Create Folders) 메뉴 항목을 선택하는 것입니다. +- **툴킷 API**: 툴킷 API를 통해 직접 디렉토리 생성 로직을 트리거할 수 있습니다. 툴킷 API는 커스텀 시작 관리자에 툴킷을 연결하거나, {% include product %}에서 샷이 생성될 때 샷에 대한 디렉토리를 자동으로 만들려는 워크플로우의 이벤트 트리거 등에 사용할 수 있습니다. +- **tank 명령**: {% include product %}의 메뉴 항목과 유사하며 `tank folders` 터미널 명령도 태스크에 대한 폴더를 만듭니다. `tank` 명령을 사용하여 테스트하겠습니다. @@ -265,7 +264,6 @@ In total, 23 folders were processed. `/the_other_side/assets/Dining-Room/Prop/Filet/model` - ![Python 앱](./images/dynamic_filesystem_configuration/folders_done.png) ### 파일을 읽고 쓰기 위한 툴킷 템플릿 @@ -286,9 +284,9 @@ Workfiles **파일 열기**(File Open) 액션을 사용하여 파일이 액세 이 파일은 다음 세 개의 섹션으로 나뉩니다. -* **키:** 템플릿 작성에 사용할 토큰 세트입니다(예: `{version}`, `{Asset}`, 등). 템플릿이 실제로 사용될 때 실제 값으로 대체됩니다. 각 키에는 필요한 이름과 유형 및 기타 선택적 매개변수가 있습니다. -* **경로:** 키를 사용하여 디스크의 폴더 및 파일에 대한 경로를 나타내는 명명된 문자열입니다. `paths` 섹션의 템플릿은 유효성이 검사되고 디스크에 실제로 존재해야 합니다. -* **문자열:** 경로 섹션과 유사하지만 임의 텍스트에 대한 템플릿입니다. 경로 섹션의 항목은 유효성이 검사되고 디스크의 실제 경로와 일치해야 하며 문자열은 툴킷 워크플로우에서 참조하려는 텍스트 데이터를 저장하는 데 사용할 수 있습니다. +- **키:** 템플릿 작성에 사용할 토큰 세트입니다(예: `{version}`, `{Asset}`, 등). 템플릿이 실제로 사용될 때 실제 값으로 대체됩니다. 각 키에는 필요한 이름과 유형 및 기타 선택적 매개변수가 있습니다. +- **경로:** 키를 사용하여 디스크의 폴더 및 파일에 대한 경로를 나타내는 명명된 문자열입니다. `paths` 섹션의 템플릿은 유효성이 검사되고 디스크에 실제로 존재해야 합니다. +- **문자열:** 경로 섹션과 유사하지만 임의 텍스트에 대한 템플릿입니다. 경로 섹션의 항목은 유효성이 검사되고 디스크의 실제 경로와 일치해야 하며 문자열은 툴킷 워크플로우에서 참조하려는 텍스트 데이터를 저장하는 데 사용할 수 있습니다. ### Set 엔티티에 대한 템플릿 키 추가 @@ -297,8 +295,8 @@ Workfiles **파일 열기**(File Open) 액션을 사용하여 파일이 액세 **14단계:** 들여쓰기에 유의하여 `templates.yml`의 `keys` 섹션에 다음 줄을 추가합니다. ```yaml - CustomEntity01: - type: str +CustomEntity01: + type: str ``` ### 템플릿 수정 @@ -312,8 +310,8 @@ Workfiles **파일 열기**(File Open) 액션을 사용하여 파일이 액세 **15단계:** `templates.yml`을 열고 `maya_asset_work`를 찾습니다. ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{name}.v{version}.{maya_extension}" ``` `maya_asset_work`의 `definition` 값은 `@asset_root`로 시작합니다. `@` 기호는 `@asset_root` 값이 다른 곳에서 정의된 것임을 나타냅니다. @@ -347,8 +345,8 @@ Workfiles **파일 열기**(File Open) 액션을 사용하여 파일이 액세 **17단계:** `maya_asset_work` 템플릿 정의를 다음과 같이 수정합니다. ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}" ``` 이 액션을 통해 파일 이름에 Dining-Room 엔티티의 적절한 이름을 사용할 수 있습니다. 결과는 `Dining-Room_Filet.v1.mb`와 같이 지정됩니다. @@ -381,15 +379,13 @@ Maya에서 **{% include product %} > 파일 열기(File Open)**로 이동하여 ### 예제 확장 -이 예제에서는 단일 템플릿을 수정했지만 파일 시스템 구성을 사용하여 수행할 수 있는 작업은 훨씬 많습니다. 실제 사례에서는 동일한 파일 명명 규칙을 갖도록 *모든* 에셋 관련 파일을 변경합니다. 다른 엔티티(시즌, 에피소드, 레벨 등)를 기반으로 수정하고, 사용자 폴더를 만들고, 정규 표현식으로 조작된 {% include product %} 데이터를 기반으로 폴더 이름을 지정하는 등 많은 작업을 수행할 수 있습니다. 툴킷의 모든 폴더 및 스키마 옵션에 대한 자세한 내용은 [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868)를 참조하십시오. +이 예제에서는 단일 템플릿을 수정했지만 파일 시스템 구성을 사용하여 수행할 수 있는 작업은 훨씬 많습니다. 실제 사례에서는 동일한 파일 명명 규칙을 갖도록 _모든_ 에셋 관련 파일을 변경합니다. 다른 엔티티(시즌, 에피소드, 레벨 등)를 기반으로 수정하고, 사용자 폴더를 만들고, 정규 표현식으로 조작된 {% include product %} 데이터를 기반으로 폴더 이름을 지정하는 등 많은 작업을 수행할 수 있습니다. 툴킷의 모든 폴더 및 스키마 옵션에 대한 자세한 내용은 [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868)를 참조하십시오. ### 경로 캐시 폴더가 생성될 때 디스크의 폴더와 {% include product %} 엔티티 간에 매핑이 만들어집니다. 이러한 매핑은 {% include product %}에 FilesystemLocation 엔티티로 저장되고 사용자 컴퓨터의 SQLite 데이터베이스에서 캐시됩니다. 경로 캐시 작동 방식과 이를 사용한 작업 방법에 대한 자세한 내용은 [이 문서](../../../quick-answers/administering/what-is-path-cache.md)를 참조하십시오. - ### 추가 리소스 -* [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868) -* [툴킷 구성 소개 웨비나 동영상](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) - +- [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868) +- [툴킷 구성 소개 웨비나 동영상](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) diff --git a/docs/ko/guides/pipeline-integrations/getting-started/editing_app_setting.md b/docs/ko/guides/pipeline-integrations/getting-started/editing_app_setting.md index 0cd888f65..73c20c15b 100644 --- a/docs/ko/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ b/docs/ko/guides/pipeline-integrations/getting-started/editing_app_setting.md @@ -6,11 +6,12 @@ lang: ko --- # 파이프라인 구성 편집 + 이 안내서를 통해 다음과 같은 기본 사항을 익힐 수 있습니다. -* 특정 툴킷 앱의 구성 설정 찾기 -* 설정 편집 -* 구성 설정에서 확장할 수 있는 다른 기능 살펴보기 +- 특정 툴킷 앱의 구성 설정 찾기 +- 설정 편집 +- 구성 설정에서 확장할 수 있는 다른 기능 살펴보기 ## 안내서 정보 @@ -121,13 +122,13 @@ Maya와 {% include product %}이 완전히 로드되면 **파일 열기**(File O 설정을 검색할 때 다음 사항을 고려해야 합니다. -* 실행 중인 소프트웨어 응용프로그램 -* 작업 중인 파일과 환경. 이 부분은 앱의 참조 상자에서 확인할 수 있습니다. -* 호출되는 설정. 이 부분은 앱의 참조 상자 또는 [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines)에서 확인할 수 있습니다. -* 확장할 YAML 파일. YAML 파일에 자세히 나와 있는 식별자와 로드맵으로 설정이 있는 위치를 확인할 수 있습니다. -* 확장할 YAML 파일 내의 특정 블록. 이는 로드맵에서 확인할 수 있습니다. -* YAML 파일에서 사용되는 식별자 및 기호. -* 현재 프로젝트의 구성이 저장된 위치(가장 중요). +- 실행 중인 소프트웨어 응용프로그램 +- 작업 중인 파일과 환경. 이 부분은 앱의 참조 상자에서 확인할 수 있습니다. +- 호출되는 설정. 이 부분은 앱의 참조 상자 또는 [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines)에서 확인할 수 있습니다. +- 확장할 YAML 파일. YAML 파일에 자세히 나와 있는 식별자와 로드맵으로 설정이 있는 위치를 확인할 수 있습니다. +- 확장할 YAML 파일 내의 특정 블록. 이는 로드맵에서 확인할 수 있습니다. +- YAML 파일에서 사용되는 식별자 및 기호. +- 현재 프로젝트의 구성이 저장된 위치(가장 중요). 설정은 파이프라인 구성 내의 여러 곳에서 활용될 수 있습니다. 적용할 소프트웨어 통합 및 변경할 파이프라인 프로세스에 따라 활용 방법이 결정됩니다. @@ -163,18 +164,18 @@ description: Apps and Engines when launching with a project only context. ################################################################################ includes: -- ./includes/frameworks.yml -- ./includes/settings/tk-3dsmaxplus.yml -- ./includes/settings/tk-desktop.yml -- ./includes/settings/tk-flame.yml -- ./includes/settings/tk-houdini.yml -- ./includes/settings/tk-mari.yml -- ./includes/settings/tk-maya.yml -- ./includes/settings/tk-motionbuilder.yml -- ./includes/settings/tk-nuke.yml -- ./includes/settings/tk-photoshopcc.yml -- ./includes/settings/tk-shell.yml -- ./includes/settings/tk-shotgun.yml + - ./includes/frameworks.yml + - ./includes/settings/tk-3dsmaxplus.yml + - ./includes/settings/tk-desktop.yml + - ./includes/settings/tk-flame.yml + - ./includes/settings/tk-houdini.yml + - ./includes/settings/tk-mari.yml + - ./includes/settings/tk-maya.yml + - ./includes/settings/tk-motionbuilder.yml + - ./includes/settings/tk-nuke.yml + - ./includes/settings/tk-photoshopcc.yml + - ./includes/settings/tk-shell.yml + - ./includes/settings/tk-shotgun.yml ################################################################################ # configuration for all engines to load in a project context @@ -198,7 +199,6 @@ engines: # reference all of the common frameworks frameworks: "@frameworks" - ``` @@ -239,7 +239,7 @@ settings.tk-maya.project: tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" menu_favourites: - - {app_instance: tk-multi-workfiles2, name: File Open...} + - { app_instance: tk-multi-workfiles2, name: File Open... } location: "@engines.tk-maya.location" ``` @@ -253,7 +253,7 @@ settings.tk-maya.project: ```yaml includes: -... +--- - ./tk-multi-workfiles2.yml ``` @@ -354,7 +354,7 @@ Workfiles 앱의 시스템 이름은 `tk-multi-workfiles2`이고 여기서 `mult ### 비디오 리소스 -* SIGGRAPH 2018 Developer Day의 [툴킷 구성 소개](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) -* [기본 구성 이해 웨비나](https://www.youtube.com/watch?v=eKHaC1dZCeE) +- SIGGRAPH 2018 Developer Day의 [툴킷 구성 소개](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) +- [기본 구성 이해 웨비나](https://www.youtube.com/watch?v=eKHaC1dZCeE) 앱 구성 설정을 수정하는 방법에 대해 알아보았습니다. 이제 [툴킷 구성에 앱을 추가](installing_app.md)해 보십시오. diff --git a/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md b/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md index 0e95cd38b..ea303008a 100644 --- a/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md +++ b/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md @@ -9,10 +9,10 @@ lang: ko 이 안내서를 마치면 툴킷의 구성 관리 도구를 간단히 익히고 다음과 같은 작업을 수행하는 방법을 익힐 수 있습니다. -* 활성 파이프라인 구성의 복사본을 안전하게 생성 -* 앱을 구성에 추가 -* 특정 환경에서 앱을 사용하는 데 필요한 설정 추가 -* 활성 구성에 변경 사항 다시 적용 +- 활성 파이프라인 구성의 복사본을 안전하게 생성 +- 앱을 구성에 추가 +- 특정 환경에서 앱을 사용하는 데 필요한 설정 추가 +- 활성 구성에 변경 사항 다시 적용 ## 안내서 정보 @@ -174,7 +174,6 @@ engines: tk-photoshopcc: "@settings.tk-photoshopcc.project" tk-shell: "@settings.tk-shell.project" tk-shotgun: "@settings.tk-shotgun.project" - ``` `@settings`를 사용하는 `tk-maya: “@settings.tk-maya.project”` 행은 설정이 포함된 파일에 있음을 나타냅니다. `tk-maya`는 Maya 엔진을 나타내고 `project`는 환경을 나타냅니다. @@ -185,10 +184,10 @@ engines: 이 블록에서 -* `settings`는 기본 구성에 대해 설정 폴더의 참조로 선택된 항목입니다. -* `project`는 기본 구성에 대해 프로젝트 환경의 참조로 선택된 항목입니다. -* `tk-maya`는 Maya에 대한 툴킷 엔진의 식별자입니다. -* `@`은 설정 값을 포함된 파일에서 가져온다는 것을 나타내는 데 사용되는 툴킷 용어입니다. +- `settings`는 기본 구성에 대해 설정 폴더의 참조로 선택된 항목입니다. +- `project`는 기본 구성에 대해 프로젝트 환경의 참조로 선택된 항목입니다. +- `tk-maya`는 Maya에 대한 툴킷 엔진의 식별자입니다. +- `@`은 설정 값을 포함된 파일에서 가져온다는 것을 나타내는 데 사용되는 툴킷 용어입니다. YAML 파일은 {% include product %} 통합으로 통하는 창입니다. 이 파일을 사용하면 파이프라인의 요구사항을 충족하는 작업 환경을 더욱 손쉽게 구성할 수 있습니다. @@ -260,11 +259,11 @@ Windows: 다음에 해당하는 경우: -* 방금 편집한 복제된 구성을 사용합니다. -* 복제된 구성이 올바르게 확장되었습니다. -* 확장된 파일을 저장했습니다. -* 복제된 구성과 프로젝트를 연결했습니다. -* {% include product %} 데스크톱에서 Maya를 다시 실행했습니다. +- 방금 편집한 복제된 구성을 사용합니다. +- 복제된 구성이 올바르게 확장되었습니다. +- 확장된 파일을 저장했습니다. +- 복제된 구성과 프로젝트를 연결했습니다. +- {% include product %} 데스크톱에서 Maya를 다시 실행했습니다. Python 콘솔 앱을 Maya에서 사용할 수 있습니다. @@ -330,11 +329,11 @@ Please type in the id of the configuration to push to (ENTER to exit): ID를 입력하면 {% include product %}에서 다음 작업을 수행합니다. -* 기본 구성 백업 -* 복제된 구성 복사 -* 복제본을 그대로 둔 상태로 복제된 구성의 복사본을 프로젝트와 연결 -* 기본 구성이 저장된 위치 표시 -* 다운로드하고 캐시해야 할 앱이 있는지 여부 확인 +- 기본 구성 백업 +- 복제된 구성 복사 +- 복제본을 그대로 둔 상태로 복제된 구성의 복사본을 프로젝트와 연결 +- 기본 구성이 저장된 위치 표시 +- 다운로드하고 캐시해야 할 앱이 있는지 여부 확인 ``` Please type in the id of the configuration to push to (ENTER to exit): 1 @@ -400,7 +399,7 @@ apps: includes의 경로를 `../includes/app_locations.yml`까지 따라가 `apps.tk-multi-pythonconsole.location`을 검색하여 다음을 확인합니다.

-```yaml +````yaml # pythonconsole apps.tk-multi-pythonconsole.location: type: app_store @@ -410,10 +409,11 @@ apps.tk-multi-pythonconsole.location: 모든 앱, 엔진 및 프레임워크에는 툴킷에 특정 번들에 액세스하는 위치를 알리는 데 사용되는 위치 설명자가 있습니다. 대부분의 앱 설명자는 `app_locations.yml` 파일에 있지만, Python 콘솔 앱에서 확인한 것처럼 원하는 위치에서 참조되지 않을 수도 있습니다. 모든 표준 앱 및 엔진이 [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines)에 정리되어 있습니다. -Shotgun에서 지원하는 적합한 소프트웨어 통합에 앱을 추가할 수도 있고, 자신만의 전용 응용프로그램을 자체 툴킷 도구에 추가할 수도 있습니다. 지원되는 모든 소프트웨어 응용프로그램도 통합의 [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines)에 정리되어 있습니다. +Shotgun에서 지원하는 적합한 소프트웨어 통합에 앱을 추가할 수도 있고, 자신만의 전용 응용프로그램을 자체 툴킷 도구에 추가할 수도 있습니다. 지원되는 모든 소프트웨어 응용프로그램도 통합의 [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219039798-Integrations-Apps-and-Engines)에 정리되어 있습니다. -원하는 앱을 찾을 수 없는 경우 직접 작성할 수 있습니다. 다른 Shotgun 사용자도 동일한 기능을 필요로 할 수 있으므로 새로 만든 앱을 공유하는 것도 Shotgun 커뮤니티에 기여하는 한 가지 방법입니다. +원하는 앱을 찾을 수 없는 경우 직접 작성할 수 있습니다. 다른 Shotgun 사용자도 동일한 기능을 필요로 할 수 있으므로 새로 만든 앱을 공유하는 것도 Shotgun 커뮤니티에 기여하는 한 가지 방법입니다. 다음 안내서에서는 스튜디오의 [구조에 따라 프로덕션 폴더 구조를 커스터마이즈하는 방법을 알아봅니다](./dynamic_filesystem_configuration.md). +```` diff --git a/docs/ko/guides/pipeline-integrations/getting_started.md b/docs/ko/guides/pipeline-integrations/getting_started.md index 9bdc7d131..b0d349943 100644 --- a/docs/ko/guides/pipeline-integrations/getting_started.md +++ b/docs/ko/guides/pipeline-integrations/getting_started.md @@ -7,4 +7,4 @@ lang: ko # Getting Started -{% include product %} 툴킷은 스튜디오 파이프라인 생성을 위해 매우 세부적인 사항까지 커스터마이즈할 수 있는 일련의 도구를 제공합니다. 이 도구를 통해 아티스트는 컨텐츠 생성 소프트웨어를 종료하지 않고도 {% include product %}의 정보에 액세스하고 아티스트 간에 작업을 공유할 수 있습니다. 이 안내서는 실습을 통해 커스텀 툴킷 파이프라인 설정을 시작할 수 있도록 디자인되었습니다. {% include product %} 데스크톱 앱을 사용하여 편집 가능한 프로젝트 구성을 생성하고, 기존 앱에서 설정을 수정하고, 다른 아티스트 환경에 툴킷 앱을 추가하여 커스텀 파이프라인을 디자인할 수 있습니다. 각 안내서는 이전 안내서를 토대로 작성되지만 어디서나 이동할 수 있는 지침이 포함되어 있습니다. +{% include product %} 툴킷은 스튜디오 파이프라인 생성을 위해 매우 세부적인 사항까지 커스터마이즈할 수 있는 일련의 도구를 제공합니다. 이 도구를 통해 아티스트는 컨텐츠 생성 소프트웨어를 종료하지 않고도 {% include product %}의 정보에 액세스하고 아티스트 간에 작업을 공유할 수 있습니다. 이 안내서는 실습을 통해 커스텀 툴킷 파이프라인 설정을 시작할 수 있도록 디자인되었습니다. {% include product %} 데스크톱 앱을 사용하여 편집 가능한 프로젝트 구성을 생성하고, 기존 앱에서 설정을 수정하고, 다른 아티스트 환경에 툴킷 앱을 추가하여 커스텀 파이프라인을 디자인할 수 있습니다. 각 안내서는 이전 안내서를 토대로 작성되지만 어디서나 이동할 수 있는 지침이 포함되어 있습니다. diff --git a/docs/ko/guides/pipeline-integrations/workflows.md b/docs/ko/guides/pipeline-integrations/workflows.md index 3c5cf717a..53129c633 100644 --- a/docs/ko/guides/pipeline-integrations/workflows.md +++ b/docs/ko/guides/pipeline-integrations/workflows.md @@ -5,4 +5,4 @@ pagename: toolkit-workflows lang: ko --- -# Workflows \ No newline at end of file +# Workflows diff --git a/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md index 32a6ecf5b..e5bca1086 100644 --- a/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ b/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md @@ -23,43 +23,43 @@ lang: ko ## 필수 요건 -* **작업 중인 {% include product %} 프로젝트** - 이 튜토리얼에서는 프로덕션 데이터 트래킹 및 관리를 위해 {% include product %}을 사용하는 환경이라고 가정합니다. +- **작업 중인 {% include product %} 프로젝트** - 이 튜토리얼에서는 프로덕션 데이터 트래킹 및 관리를 위해 {% include product %}을 사용하는 환경이라고 가정합니다. -* **{% include product %} 통합 이해** - {% include product %}은 통합 기능을 통해 수동 구성이 필요 없는 몇 가지 간단한 프로덕션 워크플로우를 제공합니다. 이 튜토리얼에 설명된 수동 구성 및 커스터마이제이션에 대해 자세히 알아보기 전에 이러한 워크플로우의 기능 및 범위를 이해해야 합니다. {% include product %} 통합에 대한 자세한 정보는 [여기](https://support.shotgunsoftware.com/hc/ko/articles/115000068574)를 참조하십시오. +- **{% include product %} 통합 이해** - {% include product %}은 통합 기능을 통해 수동 구성이 필요 없는 몇 가지 간단한 프로덕션 워크플로우를 제공합니다. 이 튜토리얼에 설명된 수동 구성 및 커스터마이제이션에 대해 자세히 알아보기 전에 이러한 워크플로우의 기능 및 범위를 이해해야 합니다. {% include product %} 통합에 대한 자세한 정보는 [여기](https://support.shotgunsoftware.com/hc/ko/articles/115000068574)를 참조하십시오. -* **Maya 및 Nuke 환경** - 이 튜토리얼은 Nuke와 Maya를 사용하여 간단한 파이프라인을 빌드하도록 설계되었습니다. {% include product %}에서 제공하는 통합을 커스터마이즈하기 위해서는 이러한 패키지를 기본적으로 이해하고 있어야 합니다. +- **Maya 및 Nuke 환경** - 이 튜토리얼은 Nuke와 Maya를 사용하여 간단한 파이프라인을 빌드하도록 설계되었습니다. {% include product %}에서 제공하는 통합을 커스터마이즈하기 위해서는 이러한 패키지를 기본적으로 이해하고 있어야 합니다. -* **Python 실무 지식** - 이 튜토리얼에서는 Python으로 작성된 "후크"를 통해 {% include product %} 통합 기능을 수정해야 합니다. +- **Python 실무 지식** - 이 튜토리얼에서는 Python으로 작성된 "후크"를 통해 {% include product %} 통합 기능을 수정해야 합니다. -* **YAML 사용 경험** - 빌드할 파이프라인의 대부분의 구성은 YAML 파일을 수정하여 처리됩니다. +- **YAML 사용 경험** - 빌드할 파이프라인의 대부분의 구성은 YAML 파일을 수정하여 처리됩니다. ## 추가 리소스 -* [{% include product %} 지원 사이트](https://support.shotgunsoftware.com/hc/ko) +- [{% include product %} 지원 사이트](https://support.shotgunsoftware.com/hc/ko) -* [{% include product %} 통합](https://www.shotgunsoftware.com/kr/integrations/) +- [{% include product %} 통합](https://www.shotgunsoftware.com/kr/integrations/) - * [사용자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000068574) + - [사용자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000068574) - * [관리자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000067493) + - [관리자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000067493) - * [개발자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000067513) + - [개발자 안내서](https://support.shotgunsoftware.com/hc/ko/articles/115000067513) # 프로젝트 작성 및 설정 이 튜토리얼에서는 {% include product %}에 새 프로젝트를 만들고 프로덕션을 위해 시작할 준비가 된 것처럼 구성해야 합니다. 여기에는 필요한 모든 {% include product %} 엔티티가 제대로 배치되고 링크되어 있는지 확인하는 것도 포함됩니다. 이 튜토리얼에서는 에셋, 시퀀스, 샷 및 태스크 엔티티가 필요하며 새 프로젝트에서 기본값으로 사용할 수 있어야 합니다. 다음을 만듭니다. -* 두 개의 **에셋**: +- 두 개의 **에셋**: - * **_주전자_** 캐릭터 + - **_주전자_** 캐릭터 - * **_테이블_** 소품 + - **_테이블_** 소품 -* 하나의 **시퀀스** +- 하나의 **시퀀스** -* 만든 **시퀀스**에 링크된 하나의 **샷** +- 만든 **시퀀스**에 링크된 하나의 **샷** -* 파이프라인 단계별 **태스크** +- 파이프라인 단계별 **태스크** 다음은 구성된 프로젝트 엔티티가 {% include product %}에서 어떻게 표시되는지 보여 주는 일부 스크린샷입니다. @@ -97,7 +97,7 @@ lang: ko {% include figure src="./images/tutorial/wizard_02.png" caption="**기본값 구성**(Default configuration)을 선택합니다." %} -이번에 처음으로 {% include product %} 프로젝트를 설정하는 경우 프로젝트 데이터의 저장소 위치를 정의하라는 메시지가 표시될 수도 있습니다. 아니면 기존 저장소 위치를 선택할 수 있습니다. +이번에 처음으로 {% include product %} 프로젝트를 설정하는 경우 프로젝트 데이터의 저장소 위치를 정의하라는 메시지가 표시될 수도 있습니다. 아니면 기존 저장소 위치를 선택할 수 있습니다. {% include figure src="./images/tutorial/wizard_03.png" caption="새 저장소를 만듭니다." %} @@ -105,13 +105,13 @@ lang: ko {% include figure src="./images/tutorial/wizard_05.png" caption="사용할 운영 체제에서 이 저장소에 액세스할 수 있는 경로를 설정합니다." %} -**사이트 기본 설정**(Site Preferences)의 **파일 관리**(File Management) 섹션에서 {% include product %} 사이트에 대한 저장소를 보고 편집할 수 있습니다. 이러한 설정에 대한 자세한 내용은 [여기](https://support.shotgunsoftware.com/hc/ko/articles/219030938)에서 확인할 수 있습니다. +**사이트 기본 설정**(Site Preferences)의 **파일 관리**(File Management) 섹션에서 {% include product %} 사이트에 대한 저장소를 보고 편집할 수 있습니다. 이러한 설정에 대한 자세한 내용은 [여기](https://support.shotgunsoftware.com/hc/ko/articles/219030938)에서 확인할 수 있습니다. 저장소 위치를 선택했으므로 이제 해당 위치에서 새 프로젝트에 대한 디렉토리 이름을 선택합니다. {% include figure src="./images/tutorial/wizard_06.png" caption="프로젝트의 파일을 저장할 폴더 이름을 입력합니다." %} -이 튜토리얼에서는 중앙 집중식 구성을 사용합니다. **분산 설정**(Distributed Setup) 옵션은 다른 혜택을 제공할 수 있는 대체 옵션을 제공하며 빠른 공유 저장소가 없는 스튜디오의 경우 자주 사용하는 옵션이 될 수 있습니다. 다른 구성 설정의 장단점에 대한 자세한 내용은 [툴킷 관리](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2) 프리젠테이션에서 확인할 수 있습니다. +이 튜토리얼에서는 중앙 집중식 구성을 사용합니다. **분산 설정**(Distributed Setup) 옵션은 다른 혜택을 제공할 수 있는 대체 옵션을 제공하며 빠른 공유 저장소가 없는 스튜디오의 경우 자주 사용하는 옵션이 될 수 있습니다. 다른 구성 설정의 장단점에 대한 자세한 내용은 [툴킷 관리](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2) 프리젠테이션에서 확인할 수 있습니다. 사이트 전체 수준의 저장소와 달리 구성은 프로젝트별로 다르므로 여기서 선택하는 디렉토리는 구성을 저장하는 데 직접 사용됩니다. @@ -289,7 +289,6 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 이 간단한 파이프라인의 목적에 맞게 게시자 앱을 커스터마이즈하여 서페이스 처리 단계에서 추가 게시 항목으로 Maya 셰이더 네트워크를 내보냅니다. 튜토리얼 후반에서 다운스트림 참조 시 셰이더를 Alembic 지오메트리 캐시에 다시 연결할 수 있는 빠르고 간편한 솔루션을 만듭니다. - {% include info title="참고" content="추가할 커스터마이즈는 확실히 매우 간단하고 쉽습니다. 보다 강력한 솔루션을 위해 외부 이미지를 텍스처 맵으로 사용하는 에셋 관리 측면뿐만 아니라 서페이스 처리된 캐릭터의 대체 표현을 고려해야 할 수 있습니다. 이 예제는 실제 솔루션을 빌드하기 위한 시작점만 제공합니다." %} {% include info title="참고" content="게시자 플러그인을 작성하는 방법에 대한 전체 상세 정보는 [여기](https://developer.shotgridsoftware.com/tk-multi-publish2/)에서 확인할 수 있습니다." %} @@ -424,7 +423,6 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 return plugin_settings ``` - 이 메서드는 플러그인에 대한 구성 인터페이스를 정의합니다. **"게시 템플릿(Publish Template)"** 설정에는 디스크에 셰이더 네트워크를 작성하는 플러그인이 필요합니다. 새 게시 플러그인을 게시자 구성에 추가하고 템플릿 설정을 포함합니다. 이는 컬렉터를 인계받기 전에 수정한 구성 블록과 동일합니다. 해당 내용은 다음 파일에 정의되어 있습니다. **`env/includes/settings/tk-multi-publish2.yml`** @@ -463,7 +461,6 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 작업 설명을 입력하고 게시된 파일과 연결할 서페이스 처리된 주전자의 썸네일을 캡처합니다. 마지막으로, 게시(Publish)를 클릭하여 주전자 셰이더를 디스크로 내보내고 파일을 {% include product %}의 게시로 등록합니다. 완료되면 세션 게시 플러그인이 자동으로 작업 파일을 다음 사용 가능한 버전으로 저장했는지 확인합니다. 지금까지가 {% include product %} 통합에서 지원되는 모든 DCC 내의 기본 동작입니다. - 이제 {% include product %}에서 주전자 에셋을 검색하여 모두 예상대로 작동되는지 확인할 수 있습니다. {% include figure src="./images/tutorial/image_33.png" %} @@ -478,15 +475,15 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 이제는 {% include product %}에서 제공하는 Workfile 및 Publish 앱을 사용하여 작업 파일을 열거나 만들고 저장하고 게시하는 것이 어렵지 않을 것입니다. 또한 Loader 앱을 사용하여 업스트림에서 게시를 로드하기도 했습니다. 학습한 내용을 활용하여 다음 태스크를 완료합니다. -* {% include product %} 데스크톱에서 Maya 시작 +- {% include product %} 데스크톱에서 Maya 시작 -* 주전자 에셋의 리깅 단계에서 새 작업 파일 만들기 +- 주전자 에셋의 리깅 단계에서 새 작업 파일 만들기 -* 모델링 단계에서 주전자 alembic 캐시 게시 로드(참조) +- 모델링 단계에서 주전자 alembic 캐시 게시 로드(참조) -* 주전자 뚜껑을 리깅하여 열고 닫기(간단하게 유지) +- 주전자 뚜껑을 리깅하여 열고 닫기(간단하게 유지) -* 주전자 리그 저장 및 게시 +- 주전자 리그 저장 및 게시 {% include product %}에 다음과 같이 나타납니다. @@ -518,13 +515,13 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. -* {% include product %} 데스크톱에서 Maya 시작 +- {% include product %} 데스크톱에서 Maya 시작 -* 샷의 레이아웃 단계에서 새 작업 파일 만들기(힌트: Loader에서 샷(Shots) 탭 사용) +- 샷의 레이아웃 단계에서 새 작업 파일 만들기(힌트: Loader에서 샷(Shots) 탭 사용) -* 주전자의 리깅 단계에서 주전자 게시 로드(참조) +- 주전자의 리깅 단계에서 주전자 게시 로드(참조) -* 테이블의 모델 단계에서 테이블 게시 로드(참조) +- 테이블의 모델 단계에서 테이블 게시 로드(참조) 이제 테이블에 주전자가 있는 간단한 씬을 실행합니다. 씬에 **camMain**이라는 카메라를 추가하고 몇 프레임에 애니메이션을 적용하여 샷의 카메라 이동을 만듭니다. @@ -644,11 +641,11 @@ Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. -* {% include product %} 데스크톱에서 Maya 시작 +- {% include product %} 데스크톱에서 Maya 시작 -* 샷의 애니메이션 단계에서 새 작업 파일 만들기 +- 샷의 애니메이션 단계에서 새 작업 파일 만들기 -* 샷의 레이아웃 단계에서 Maya 세션 게시 로드(참조) +- 샷의 레이아웃 단계에서 Maya 세션 게시 로드(참조) {% include info title="참고" content="레이아웃 세션 게시 파일에 카메라가 포함되었음을 확인할 수 있습니다. 강력한 파이프라인에서 별도의 카메라 게시 파일이 하나의 실제 카메라 정의가 될 수 있도록 세션 게시에서 카메라를 명시적으로 숨기거나 제외할 수 있습니다. 계속 진행하여 참조로 포함된 카메라를 삭제하거나 숨깁니다." %} @@ -688,13 +685,13 @@ Maya에 대해 앱이 구성된 섹션을 찾고 **`action_mappings`** 설정의 먼저, 이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. -* {% include product %} 데스크톱에서 Maya 시작 +- {% include product %} 데스크톱에서 Maya 시작 -* 샷의 조명 단계에서 새 작업 파일 만들기 +- 샷의 조명 단계에서 새 작업 파일 만들기 -* 샷의 애니메이션 단계에서 Maya 세션 게시 로드(참조) +- 샷의 애니메이션 단계에서 Maya 세션 게시 로드(참조) -* 샷의 레이아웃 단계에서 카메라 게시 로드(참조) +- 샷의 레이아웃 단계에서 카메라 게시 로드(참조) ### 커스텀 셰이더 로더 액션 @@ -740,7 +737,6 @@ Maya에 대해 앱이 구성된 섹션을 찾고 **`action_mappings`** 설정의 cmds.hyperShade(assign=shader) ``` - 이제 셰이더 연결 로직을 호출하기 위해 **`_create_reference`** 메서드 마지막에 다음 두 줄을 추가합니다. ```python @@ -748,7 +744,6 @@ Maya에 대해 앱이 구성된 섹션을 찾고 **`action_mappings`** 설정의 _hookup_shaders(reference_node) ``` - 코드는 새 참조가 만들어질 때마다 실행되므로 셰이더가 이미 파일에 있는 경우 새 지오메트리 참조 시 셰이더를 할당해야 합니다. 마찬가지로, 셰이더를 참조하고 지오메트리가 이미 존재할 때 작동합니다. {% include info title="참고" content="이 연결 로직은 매우 억지스럽고 프로덕션에서 바로 사용할 수 있는 파이프라인을 구현할 때 고려해야 할 네임스페이스 및 기타 Maya와 관련된 미묘한 문제를 적절하게 처리하지 못합니다." %} @@ -799,10 +794,9 @@ Maya에 대해 앱이 구성된 섹션을 찾고 **`action_mappings`** 설정의 다음 단계를 수행하여 작업 파일을 준비합니다. -* {% include product %} 데스크톱에서 Nuke를 시작합니다. - -* Maya에서와 마찬가지로, {% include product %} > 파일 열기...(File Open…) 메뉴 액션을 사용하여 샷의 합성 단계에서 새 작업 파일을 만듭니다. +- {% include product %} 데스크톱에서 Nuke를 시작합니다. +- Maya에서와 마찬가지로, {% include product %} > 파일 열기...(File Open…) 메뉴 액션을 사용하여 샷의 합성 단계에서 새 작업 파일을 만듭니다. Loader 앱을 통해 이전 섹션에서 렌더링 및 게시된 이미지 시퀀스를 로드합니다. @@ -846,7 +840,7 @@ Nuke 프로젝트 설정 출력 형식이 렌더링된 이미지와 일치하는 축하합니다. 모두 완료했습니다. 이 튜토리얼이 {% include product %} 통합을 사용하여 고유한 커스텀 파이프라인을 빌드하는 시작점이 되었기를 바랍니다. 기본 통합을 확장하여 스튜디오의 특정 요구 사항을 충족하는 방법을 이해할 수 있어야 합니다. -[shotgun-dev Google 그룹](https://groups.google.com/a/shotgunsoftware.com/forum/#!forum/shotgun-dev)에서 다른 스튜디오에서는 툴킷을 어떻게 사용하는지 질문하고 배울 수 있습니다. 최신 게시물을 보려면 등록하십시오. +[shotgun-dev Google 그룹](https://groups.google.com/a/shotgunsoftware.com/forum/#!forum/shotgun-dev)에서 다른 스튜디오에서는 툴킷을 어떻게 사용하는지 질문하고 배울 수 있습니다. 최신 게시물을 보려면 등록하십시오. 기본 통합에서 제공되지 않는 기능이나 워크플로우가 있으면 언제든 자체 앱을 작성할 수 있습니다. 첫 번째 앱 작성을 시작하려면 [이 문서](https://support.shotgunsoftware.com/hc/ko/articles/219033158)를 참조하십시오. diff --git a/docs/ko/guides/review/integrations.md b/docs/ko/guides/review/integrations.md index 1cc92f826..f5113c738 100644 --- a/docs/ko/guides/review/integrations.md +++ b/docs/ko/guides/review/integrations.md @@ -7,6 +7,6 @@ lang: ko # RV 통합 -RV는 서로 다른 기능 세트를 가진 여러 {% include product %} 통합({% include product %} Integration, RV용 Screening Room 및 {% include product %} Review)을 비롯해 Nuke 및 Maya를 위한 통합 도구가 함께 제공됩니다. +RV는 서로 다른 기능 세트를 가진 여러 {% include product %} 통합({% include product %} Integration, RV용 Screening Room 및 {% include product %} Review)을 비롯해 Nuke 및 Maya를 위한 통합 도구가 함께 제공됩니다. 앞쪽의 두 문서에서는 Nuke 및 Maya 통합의 설치 및 워크플로우에 대해 설명하며, 뒤쪽의 두 문서에서는 선택에 도움을 주기 위해 다양한 {% include product %} 통합에 대해 설명합니다. diff --git a/docs/ko/guides/webhooks.md b/docs/ko/guides/webhooks.md index 7f6befc20..006e96e25 100644 --- a/docs/ko/guides/webhooks.md +++ b/docs/ko/guides/webhooks.md @@ -74,12 +74,12 @@ SSL 인증서 유효성 확인은 웹후크의 사용자 URL에 대한 모든 ![웹후크 생성 대화상자](./images/webhooks/webhook_selected_status.png) -| 상태 | 예시 | 설명 | -|--------|:-------:|:-----------:| -| 활성(Active) | ![활성](./images/webhooks/webhook_status_active.png) | 웹후크가 안정적인 방식으로 작동합니다. 지난 24시간 동안 이 웹후크에 전달이 없으면 해당 대상에 도달하지 못한 것입니다. | -| 불안정(Unstable) | ![불안정](./images/webhooks/webhook_status_unstable.png) | 웹후크가 불안정한 방식으로 작동합니다. 지난 24시간 동안 일부 전달이 대상에 도달하지 못했지만 {% include product %}에서 웹후크가 작동하지 않는 것으로 간주할 정도는 아닙니다. | -| 실패(Failed) | ![실패](./images/webhooks/webhook_status_failed.png) | 웹후크가 작동하지 않는 것으로 간주되고 더 이상 전달을 시도하지 않습니다. 이는 짧은 기간 동안 너무 많은 전달 실패에 따른 결과이며 시스템은 웹후크가 더 이상 실행 가능하지 않은 것으로 판단합니다. **지난 24시간 동안 10번의 전달에 실패한 경우 웹후크가 실패로 간주됩니다**. | -| 비활성화됨(Disabled) | ![비활성화됨](./images/webhooks/webhook_status_disabled.png) | 웹후크가 비활성화된 상태이며 다시 활성 상태가 될 때까지 전달이 더 이상 시도되지 않습니다. | +| 상태 | 예시 | 설명 | +| -------------------- | :----------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| 활성(Active) | ![활성](./images/webhooks/webhook_status_active.png) | 웹후크가 안정적인 방식으로 작동합니다. 지난 24시간 동안 이 웹후크에 전달이 없으면 해당 대상에 도달하지 못한 것입니다. | +| 불안정(Unstable) | ![불안정](./images/webhooks/webhook_status_unstable.png) | 웹후크가 불안정한 방식으로 작동합니다. 지난 24시간 동안 일부 전달이 대상에 도달하지 못했지만 {% include product %}에서 웹후크가 작동하지 않는 것으로 간주할 정도는 아닙니다. | +| 실패(Failed) | ![실패](./images/webhooks/webhook_status_failed.png) | 웹후크가 작동하지 않는 것으로 간주되고 더 이상 전달을 시도하지 않습니다. 이는 짧은 기간 동안 너무 많은 전달 실패에 따른 결과이며 시스템은 웹후크가 더 이상 실행 가능하지 않은 것으로 판단합니다. **지난 24시간 동안 10번의 전달에 실패한 경우 웹후크가 실패로 간주됩니다**. | +| 비활성화됨(Disabled) | ![비활성화됨](./images/webhooks/webhook_status_disabled.png) | 웹후크가 비활성화된 상태이며 다시 활성 상태가 될 때까지 전달이 더 이상 시도되지 않습니다. | ## 전달 @@ -191,9 +191,8 @@ webhook.site의 서비스는 매우 속도에 제한적입니다. 즉, 일부 #### 상태 코드 -| 상태 | 코드 | 설명 | -|--------|:----:|:-----------:| -| 성공 | < 400 | 전달이 수신되고 성공적으로 처리되었습니다. | -| 오류 | >= 400 | 전달이 수신되었지만 성공적으로 처리되지 않았습니다. | -| 리디렉션 | 3xx | 전달이 수신되었지만 다른 URL로 리디렉션해야 합니다. | - +| 상태 | 코드 | 설명 | +| -------- | :----: | :-------------------------------------------------: | +| 성공 | < 400 | 전달이 수신되고 성공적으로 처리되었습니다. | +| 오류 | >= 400 | 전달이 수신되었지만 성공적으로 처리되지 않았습니다. | +| 리디렉션 | 3xx | 전달이 수신되었지만 다른 URL로 리디렉션해야 합니다. | diff --git a/docs/ko/guides/webhooks/batch-deliveries.md b/docs/ko/guides/webhooks/batch-deliveries.md index a156afecd..5d11f3218 100644 --- a/docs/ko/guides/webhooks/batch-deliveries.md +++ b/docs/ko/guides/webhooks/batch-deliveries.md @@ -23,11 +23,13 @@ lang: ko {% include info title="참고" content="단일 이벤트에 응답하는 데 1초가 걸리는 수신 서비스의 경우 응답 시간은 전달 오버헤드가 아니라 주요 성능 요소입니다. 이 경우 배치 처리를 선택해도 큰 이점이 없습니다." %} #### 비배치 전달 웹후크 -* 시간 초과 허용치는 전달당 6초입니다. 즉, 웹후크 엔드포인트는 6초 내에 각 요청에 응답해야 합니다. + +- 시간 초과 허용치는 전달당 6초입니다. 즉, 웹후크 엔드포인트는 6초 내에 각 요청에 응답해야 합니다. #### 배치 전달 웹후크 -* 배치에서 시간 초과 허용치의 최대값은 6초, 또는 배치 내 이벤트당 1초입니다. -* 스로틀링 한계로는 모든 웹후크에서 ShotGrid 사이트별로 분당 1분의 웹후크 엔드포인트 응답 시간이 적용됩니다. + +- 배치에서 시간 초과 허용치의 최대값은 6초, 또는 배치 내 이벤트당 1초입니다. +- 스로틀링 한계로는 모든 웹후크에서 ShotGrid 사이트별로 분당 1분의 웹후크 엔드포인트 응답 시간이 적용됩니다. ## 웹후크 전달 형식 비교 @@ -35,28 +37,28 @@ lang: ko ```json { - "data":{ - "id":"119.110.0", - "event_log_entry_id":479004, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1419}, - "project":{"type":"Project","id":127}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1419, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "data": { + "id": "119.110.0", + "event_log_entry_id": 479004, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1419 }, + "project": { "type": "Project", "id": 127 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1419, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 17:40:23.202136", + "attribute_name": "code", + "session_uuid": null }, - "timestamp":"2021-02-22T17:40:27Z" + "timestamp": "2021-02-22T17:40:27Z" } ``` @@ -66,51 +68,51 @@ lang: ko ```json { - "timestamp":"2021-02-22T18:04:40.140Z", - "data":{ - "deliveries":[ + "timestamp": "2021-02-22T18:04:40.140Z", + "data": { + "deliveries": [ { - "id":"170.141.0", - "event_log_entry_id":480850, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "id": "170.141.0", + "event_log_entry_id": 480850, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 18:04:39.198641", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 18:04:39.198641", + "attribute_name": "code", + "session_uuid": null }, { - "id":"170.141.1", - "event_log_entry_id":480851, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"description", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":null, - "new_value":"Some other *description*" + "id": "170.141.1", + "event_log_entry_id": 480851, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "description", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": null, + "new_value": "Some other *description*" }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, + "created_at": "2021-02-22 18:04:39.212032", + "attribute_name": "description", + "session_uuid": null + } ] } } diff --git a/docs/ko/index.md b/docs/ko/index.md index a4f4d6355..7706d7243 100644 --- a/docs/ko/index.md +++ b/docs/ko/index.md @@ -4,4 +4,3 @@ title: 개요 pagename: index lang: ko --- - diff --git a/docs/ko/quick-answers/administering.md b/docs/ko/quick-answers/administering.md index 98ece8405..3e723c830 100644 --- a/docs/ko/quick-answers/administering.md +++ b/docs/ko/quick-answers/administering.md @@ -5,12 +5,12 @@ pagename: quick-answers-administering lang: ko --- -관리 -===== +# 관리 툴킷 설정 관리 및 구성을 기반으로 한 빠른 답변 모음입니다. #### {% include product %} 데스크톱: + - [{% include product %} 데스크톱을 사용하여 툴킷 프로젝트를 다시 설정하는 방법은 무엇입니까?](./administering/resetup-project-with-sg-desktop.md) - [Windows에서 {% include product %} 데스크톱을 자동으로 설치하려면 어떻게 해야 합니까?](./administering/install-desktop-silent.md) - [Linux에서 {% include product %} 데스크톱의 데스크톱/시작 관리자 아이콘을 어떻게 설정합니까?](./administering/create-shotgun-desktop-shortcut.md) diff --git a/docs/ko/quick-answers/administering/convert-from-single-root-to-multi.md b/docs/ko/quick-answers/administering/convert-from-single-root-to-multi.md index 30e04e08b..00ba27e75 100644 --- a/docs/ko/quick-answers/administering/convert-from-single-root-to-multi.md +++ b/docs/ko/quick-answers/administering/convert-from-single-root-to-multi.md @@ -15,7 +15,7 @@ lang: ko - {% include product %}에서 **관리자(Admin) > 사이트 기본 설정(Site Preferences)** 페이지로 이동 - **파일 관리(File Management)** 섹션 열기 - **[+] 로컬 파일 저장소 추가([+] Add Local File Storage)** 클릭 -- 해당하는 모든 플랫폼에서 이름("secondary") 및 저장소 루트 경로 입력. *특정 플랫폼을 사용하고 있지 않다면 그냥 비워 두어도 됩니다.* +- 해당하는 모든 플랫폼에서 이름("secondary") 및 저장소 루트 경로 입력. _특정 플랫폼을 사용하고 있지 않다면 그냥 비워 두어도 됩니다._ - 페이지 위나 아래에 있는 **페이지 저장(Save Page)** 버튼 클릭 ![{% include product %} 파일 관리 기본 설정](images/shotgun-pref-file-management.png) @@ -90,4 +90,4 @@ lang: ko {% include info title="참고" content="기본 저장소 루트를 사용하는 템플릿에 대한 `root_name`을 지정할 필요가 없습니다. 기본 루트는 `roots.yml` 파일에서 `default: true`를 지정하여 표시됩니다. `roots.yml`에 기본값이 명시적으로 정의되지 않은 경우 **primary**라는 루트를 기본값으로 간주합니다." %} -1 *새 값을 설정하고 나면 툴킷이 이전 값을 사용하여 생성된 모든 이전 파일에 액세스할 수 없게 되기 때문에 경로를 업데이트하는 것이 반드시 이상적이라고 할 수는 없습니다. 즉, 템플릿 경로를 변경하고 나면 툴킷이 이전 작업 파일을 찾을 수 없습니다. 이것이 우려된다면 새 위치를 지정하여 새 템플릿(예: houdini_shot_publish_v2)을 생성한 다음, 새 버전을 사용하도록 앱을 업그레이드하면 됩니다. 모든 앱이 이 같은 폴백 컨셉을 처리할 수 있는 것은 아니지만 일부 앱이라도 이전 파일을 인식할 수 있게 됩니다. 게시는 항상 {% include product %}의 게시에 링크되어 있기 때문에 영향을 받지 않습니다.* +1 _새 값을 설정하고 나면 툴킷이 이전 값을 사용하여 생성된 모든 이전 파일에 액세스할 수 없게 되기 때문에 경로를 업데이트하는 것이 반드시 이상적이라고 할 수는 없습니다. 즉, 템플릿 경로를 변경하고 나면 툴킷이 이전 작업 파일을 찾을 수 없습니다. 이것이 우려된다면 새 위치를 지정하여 새 템플릿(예: houdini_shot_publish_v2)을 생성한 다음, 새 버전을 사용하도록 앱을 업그레이드하면 됩니다. 모든 앱이 이 같은 폴백 컨셉을 처리할 수 있는 것은 아니지만 일부 앱이라도 이전 파일을 인식할 수 있게 됩니다. 게시는 항상 {% include product %}의 게시에 링크되어 있기 때문에 영향을 받지 않습니다._ diff --git a/docs/ko/quick-answers/administering/create-shotgun-desktop-shortcut.md b/docs/ko/quick-answers/administering/create-shotgun-desktop-shortcut.md index eb6a9c479..45efff925 100644 --- a/docs/ko/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ b/docs/ko/quick-answers/administering/create-shotgun-desktop-shortcut.md @@ -11,4 +11,4 @@ lang: ko {% include product %} 데스크톱 설치 관리자를 실행하고 나면 {% include product %} 데스크톱 실행 파일이 `/opt/Shotgun folder`에 생성됩니다. 실행 파일 이름은 ShotGrid입니다. 설치 관리자와 함께 배포되는 아이콘은 없습니다. [{% include product %} 데스크톱 엔진 github 리포지토리](https://github.com/shotgunsoftware/tk-desktop/blob/aac6fe004bd003bf26316b9859bd4ebc42eb82dc/resources/default_systray_icon.png)에서 다운로드하십시오. -아이콘을 다운로드하고, 실행 파일(`/opt/Shotgun/Shotgun`)로 경로를 지정하고 나면 수동으로 필요한 데스크톱 또는 메뉴 시작 관리자를 생성하십시오. 이 프로세스는 Linux 버전에 따라 달라질 수 있지만 보통 데스크톱을 마우스 오른쪽 버튼으로 클릭한 다음 적절한 메뉴 옵션을 찾아 데스크톱 시작 관리자를 생성할 수 있습니다. \ No newline at end of file +아이콘을 다운로드하고, 실행 파일(`/opt/Shotgun/Shotgun`)로 경로를 지정하고 나면 수동으로 필요한 데스크톱 또는 메뉴 시작 관리자를 생성하십시오. 이 프로세스는 Linux 버전에 따라 달라질 수 있지만 보통 데스크톱을 마우스 오른쪽 버튼으로 클릭한 다음 적절한 메뉴 옵션을 찾아 데스크톱 시작 관리자를 생성할 수 있습니다. diff --git a/docs/ko/quick-answers/administering/disable-browser-integration.md b/docs/ko/quick-answers/administering/disable-browser-integration.md index 793280c70..f484d43c6 100644 --- a/docs/ko/quick-answers/administering/disable-browser-integration.md +++ b/docs/ko/quick-answers/administering/disable-browser-integration.md @@ -9,13 +9,13 @@ lang: ko 브라우저 통합을 비활성화하려면 다음의 간단한 두 단계를 수행하십시오. -1. 다음 위치에서 텍스트 파일을 생성하거나 엽니다. +1. 다음 위치에서 텍스트 파일을 생성하거나 엽니다. Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini Linux: ~/.{% include product %}/preferences/toolkit.ini -2. 다음 섹션을 추가합니다. +2. 다음 섹션을 추가합니다. [BrowserIntegration] enabled=0 @@ -24,4 +24,4 @@ lang: ko **대체 방법** -툴킷 파이프라인 구성을 인계받은 경우 대체 방법은 [환경에서 `tk-{% include product %}` 엔진](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)을 제거하여 어떤 액션도 로드할 수 없도록 하는 것입니다. \ No newline at end of file +툴킷 파이프라인 구성을 인계받은 경우 대체 방법은 [환경에서 `tk-{% include product %}` 엔진](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)을 제거하여 어떤 액션도 로드할 수 없도록 하는 것입니다. diff --git a/docs/ko/quick-answers/administering/install-desktop-silent.md b/docs/ko/quick-answers/administering/install-desktop-silent.md index 37d9b3f50..a5781c82c 100644 --- a/docs/ko/quick-answers/administering/install-desktop-silent.md +++ b/docs/ko/quick-answers/administering/install-desktop-silent.md @@ -15,4 +15,4 @@ lang: ko `ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` -{% include info title="참고" content="`/D` 인자는 마지막 인자여야 하며, 경로에 공백이 있다고 하더라도 `\"`를 사용해서는 안 됩니다." %} \ No newline at end of file +{% include info title="참고" content="`/D` 인자는 마지막 인자여야 하며, 경로에 공백이 있다고 하더라도 `\"`를 사용해서는 안 됩니다." %} diff --git a/docs/ko/quick-answers/administering/move-configuration-location.md b/docs/ko/quick-answers/administering/move-configuration-location.md index 7907b5a6a..0e033dc1d 100644 --- a/docs/ko/quick-answers/administering/move-configuration-location.md +++ b/docs/ko/quick-answers/administering/move-configuration-location.md @@ -9,7 +9,7 @@ lang: ko {% include info title="참고" content="이 문서의 내용은 [중앙 집중식 구성 설정](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)에만 적용됩니다. [분산 구성](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)은 개별 클라이언트 시스템에 로컬로 캐시되고 툴킷에서 자동으로 관리됩니다." %} -파이프라인 구성을 새 위치로 옮길 수 있는 가장 쉬운 방법은 `tank move_configuration` 명령을 사용하는 것입니다. 이렇게 하면 파일을 이동하고, {% include product %}을 업데이트하고, 새 위치를 가리키도록 구성 파일을 업데이트하는 작업이 모두 이루어집니다.  +파이프라인 구성을 새 위치로 옮길 수 있는 가장 쉬운 방법은 `tank move_configuration` 명령을 사용하는 것입니다. 이렇게 하면 파일을 이동하고, {% include product %}을 업데이트하고, 새 위치를 가리키도록 구성 파일을 업데이트하는 작업이 모두 이루어집니다. 이 명령은 단일 운영 체제의 위치만 옮기거나 이전에는 특정 운영 체제를 사용하지 않았지만 이제 운영 체제를 추가하고 싶은 경우에도 유용합니다. 이동하거나 추가해야 하는 항목과 그렇지 않은 항목은 툴킷이 감지하여 진행할 작업을 미리 보여 주기 때문에 진행하기 전에 확인할 수 있습니다. @@ -65,7 +65,6 @@ lang: ko > tank move_configuration "" "p:\configs\my_config" "" - ### 예시: $ cd /sgtk/software/shotgun/scarlet @@ -134,38 +133,37 @@ lang: ko All done! Your configuration has been successfully moved. - ## 수동으로 파이프라인 구성 이동 {% include warning title="중요" content="아직 파이프라인 구성을 옮기지 않았다면 위의 [기본 제공 tank 명령](#using-the-tank-move_configuration-command)을 사용하여 이를 자동으로 처리하는 것이 가장 좋습니다." %} 이미 수동 이동을 시작했는데 중간에 막혀 버렸다면 툴킷이 이제 새 위치에 있는 파이프라인 구성을 통해 계속 작동하도록 하기 위해 변경해야 하는 사항들이 있습니다. -1. 파이프라인 구성 파일을 새 위치로 이동 +1. 파이프라인 구성 파일을 새 위치로 이동 $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new -2. 툴킷이 파이프라인 구성의 위치를 파악하는 데 도움을 주도록 `install_location.yml`을 편집: +2. 툴킷이 파이프라인 구성의 위치를 파악하는 데 도움을 주도록 `install_location.yml`을 편집: - $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml + $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml - 해당하는 모든 플랫폼에서 이 파일의 경로가 새 파이프라인 구성 위치를 가리키도록 업데이트합니다. 플랫폼을 사용하고 있지 않다면 빈 문자열 `''`을 입력합니다. + 해당하는 모든 플랫폼에서 이 파일의 경로가 새 파이프라인 구성 위치를 가리키도록 업데이트합니다. 플랫폼을 사용하고 있지 않다면 빈 문자열 `''`을 입력합니다. - # {% include product %} Pipeline Toolkit configuration file - # This file was automatically created by setup_project - # This file reflects the paths in the primary pipeline + # {% include product %} Pipeline Toolkit configuration file + # This file was automatically created by setup_project + # This file reflects the paths in the primary pipeline - # configuration defined for this project. - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' + # configuration defined for this project. + Windows: 'Y:\sgtk\software\shotgun\scarlet_new' + Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' + Linux: '' - # End of file. + # End of file. -3. {% include product %}에서 이 프로젝트에 대한 해당 파이프라인 구성 엔티티를 찾아 Linux 경로, Mac 경로 및 Windows 경로 필드 값이 위에서 변경한 사항과 일치하도록 수정합니다. +3. {% include product %}에서 이 프로젝트에 대한 해당 파이프라인 구성 엔티티를 찾아 Linux 경로, Mac 경로 및 Windows 경로 필드 값이 위에서 변경한 사항과 일치하도록 수정합니다. ![{% include product %}에서 파이프라인 구성 위치](images/new-pipeline-configuration-locations.png) 이제 파이프라인 구성이 새 위치에서 기대한 대로 작동할 것입니다. -{% include info title="참고" content="SG 데스크톱을 사용 중인 경우 프로젝트에서 나와 프로젝트 아이콘을 다시 클릭해서 파이프라인 구성을 새 위치에서 다시 로드해야 합니다." %} \ No newline at end of file +{% include info title="참고" content="SG 데스크톱을 사용 중인 경우 프로젝트에서 나와 프로젝트 아이콘을 다시 클릭해서 파이프라인 구성을 새 위치에서 다시 로드해야 합니다." %} diff --git a/docs/ko/quick-answers/administering/move-project-directories.md b/docs/ko/quick-answers/administering/move-project-directories.md index d0727a560..541633014 100644 --- a/docs/ko/quick-answers/administering/move-project-directories.md +++ b/docs/ko/quick-answers/administering/move-project-directories.md @@ -13,7 +13,7 @@ lang: ko - 이전 위치에서 새 위치로 프로젝트 파일을 복사(또는 이동)합니다. - {% include product %}에서 **관리자(Admin) > 사이트 기본 설정(Site Preferences)** 페이지로 이동해 **파일 관리(File Management)** 섹션을 엽니다. - ![사이트 기본 설정의 {% include product %} 저장소 루트 섹션](./images/shotgun-storage-roots.png) + ![사이트 기본 설정의 {% include product %} 저장소 루트 섹션](./images/shotgun-storage-roots.png) - 각 플랫폼의 경로와 함께 이름이 "primary"인 로컬 파일 저장소를 프로젝트 파일의 새 저장소로 업데이트합니다. 특정 플랫폼을 사용하고 있지 않다면 그냥 비워 두십시오. - 페이지 위나 아래에 있는 **"변경 사항 저장(Save Changes)"** 버튼을 클릭합니다. - 지금 막 {% include product %}에 저장한 새로운 경로 값과 일치하도록 프로젝트 구성의 `config/core/roots.yml` 파일을 업데이트합니다. @@ -36,4 +36,4 @@ lang: ko ## 버전 -{% include product %}에 이 변경 사항의 영향을 받는 영상 경로 또는 프레임 경로 필드에 정보를 저장하는 버전 엔티티가 있는 경우 이 필드는 미디어에 대한 절대 경로를 포함하고 있는 문자열 필드이기 때문에 해당 버전 역시 새 위치를 가리키도록 업데이트되어야 합니다. \ No newline at end of file +{% include product %}에 이 변경 사항의 영향을 받는 영상 경로 또는 프레임 경로 필드에 정보를 저장하는 버전 엔티티가 있는 경우 이 필드는 미디어에 대한 절대 경로를 포함하고 있는 문자열 필드이기 때문에 해당 버전 역시 새 위치를 가리키도록 업데이트되어야 합니다. diff --git a/docs/ko/quick-answers/administering/resetup-project-with-sg-desktop.md b/docs/ko/quick-answers/administering/resetup-project-with-sg-desktop.md index 1ad554104..a7150c8e7 100644 --- a/docs/ko/quick-answers/administering/resetup-project-with-sg-desktop.md +++ b/docs/ko/quick-answers/administering/resetup-project-with-sg-desktop.md @@ -14,13 +14,11 @@ lang: ko 1. {% include product %}에서 프로젝트에 연결된 모든 `PipelineConfiguration` 엔티티를 삭제합니다.

![PipelineConfiguration 엔티티 페이지에 액세스](images/pipeline-configuration-entity-page.png)

2. {% include product %}의 `Project` 엔티티에서 `Tank Name` 필드를 빈 값으로 설정합니다.

![프로젝트 탱크 이름 필드 지우기](images/clear-project-tank-name.png)

3. 디스크에서 해당하는 파이프라인 구성 디렉토리를 모두 제거합니다. -4. {% include product %} 데스크톱에서 설정할 프로젝트를 선택합니다. *프로젝트를 보고 있던 중이라면 프로젝트 목록 보기로 이동했다가 다시 프로젝트로 돌아옵니다.* -6. 이제 프로젝트 설정 프로세스를 다시 실행할 수 있습니다. +4. {% include product %} 데스크톱에서 설정할 프로젝트를 선택합니다. _프로젝트를 보고 있던 중이라면 프로젝트 목록 보기로 이동했다가 다시 프로젝트로 돌아옵니다._ +5. 이제 프로젝트 설정 프로세스를 다시 실행할 수 있습니다. **대체 방법** 명령줄을 사용하여 `tank setup_project` 명령으로 프로젝트를 설정한 경우 명령 끝에 `--force` 인자를 추가할 수 있습니다. 이렇게 하면 위에 나열된 단계를 수동으로 수행하지 않고도 이전에 설정한 프로젝트를 설정할 수 있습니다. tank setup_project --force" - - diff --git a/docs/ko/quick-answers/administering/sg-desktop-run-on-ubuntu.md b/docs/ko/quick-answers/administering/sg-desktop-run-on-ubuntu.md index 37665ec87..1b047054d 100644 --- a/docs/ko/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ b/docs/ko/quick-answers/administering/sg-desktop-run-on-ubuntu.md @@ -15,5 +15,3 @@ Python 자체가 많은 시스템 레벨 라이브러리 위에 위치하기 때 지금으로서는 Debian 지원에 대한 공식적인 계획이 없습니다. Ubuntu를 위한 빌드에는 문제가 있지만 한편으로는 결코 사소하다고 할 수 없는 변화를 구현하다 보면 추가 운영 체제를 QA 및 지원해야 할 필요도 있습니다. {% include product %} 데스크톱 없이 툴킷을 수동으로 실행 및 활성화하려는 경우([여기 문서에서 설명](https://support.shotgunsoftware.com/hc/ko/articles/219033208#Step%208.%20Run%20the%20activation%20script)) - 설명서 페이지에서 `activate_shotgun_pipeline_toolkit.py` 스크립트를 다운로드하십시오. 이 안내서의 8단계에 있으며, "다운로드하려면 클릭..."(click to download...) 헤더를 클릭하면 됩니다. - - diff --git a/docs/ko/quick-answers/administering/share-assets-between-projects.md b/docs/ko/quick-answers/administering/share-assets-between-projects.md index bb7771ebf..8e7f06c6b 100644 --- a/docs/ko/quick-answers/administering/share-assets-between-projects.md +++ b/docs/ko/quick-answers/administering/share-assets-between-projects.md @@ -18,11 +18,11 @@ caption: Asset Library hierarchy: [project, sg_asset_type, code] entity_type: Asset filters: -- [project, is, {'type': 'Project', 'id': 207}] + - [project, is, { "type": "Project", "id": 207 }] ``` `207`을 라이브러리 프로젝트의 ID로 바꿉니다. 현재 Maya의 샷 단계 환경에서 작업 중인 경우 이렇게 하면 해당 프로젝트에서 사용할 수 있는 모든 게시를 보여 주는 새 탭이 추가됩니다. 이 탭을 다른 엔진(Nuke, 3dsmax 등)의 로더에 추가하려면 해당하는 각 엔진에 대한 `tk-multi-loader2` 설정도 수정해야 합니다. 다른 환경에서 이를 활성화하려면 에셋 단계 환경, 그리고 해당 탭을 추가할 모든 다른 환경에서도 같은 단계를 수행해야 합니다. 조금 지루하겠지만 이렇게 해야 좀 더 미세하게 조정할 수 있습니다. -이렇게 설정하면 Loader 앱이 일반 프로젝트의 게시가 나열되는 탭을 보여 주어야 합니다. \ No newline at end of file +이렇게 설정하면 Loader 앱이 일반 프로젝트의 게시가 나열되는 탭을 보여 주어야 합니다. diff --git a/docs/ko/quick-answers/administering/uninstalling-an-app-or-engine.md b/docs/ko/quick-answers/administering/uninstalling-an-app-or-engine.md index 7787d07b6..7cdcb80a0 100644 --- a/docs/ko/quick-answers/administering/uninstalling-an-app-or-engine.md +++ b/docs/ko/quick-answers/administering/uninstalling-an-app-or-engine.md @@ -27,7 +27,6 @@ lang: ko [`.../env/includes/settings/tk-maya.yml L47`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L47)
메뉴 즐겨찾기에 이를 추가하는 줄도 있습니다.
[`.../env/includes/settings/tk-maya.yml L56`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L56) - 다음으로 샷 단계 설정에 다음 줄을 반복합니다.
[`.../env/includes/settings/tk-maya.yml L106`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L106)
[`.../env/includes/settings/tk-maya.yml L115`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L115) @@ -47,4 +46,4 @@ lang: ko ### 앱 위치 제거 -기본 구성에서 모든 앱은 [.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) 파일에 해당 위치 설명자를 저장합니다. `tk-multi-publish2.yml`은 이를 참조하므로 [설명자 줄](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)을 제거해야 합니다. \ No newline at end of file +기본 구성에서 모든 앱은 [.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) 파일에 해당 위치 설명자를 저장합니다. `tk-multi-publish2.yml`은 이를 참조하므로 [설명자 줄](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)을 제거해야 합니다. diff --git a/docs/ko/quick-answers/administering/update-configuration-core-locations.md b/docs/ko/quick-answers/administering/update-configuration-core-locations.md index 36879fac8..c3f878740 100644 --- a/docs/ko/quick-answers/administering/update-configuration-core-locations.md +++ b/docs/ko/quick-answers/administering/update-configuration-core-locations.md @@ -9,32 +9,31 @@ lang: ko ## 파이프라인 구성이 로컬 코어를 사용하도록 업데이트하려면 어떻게 해야 합니까? -파이프라인 구성이 공유 Toolkit Core를 사용하도록 설정되어 있는 경우에는 해당 프로세스를 실행 취소하거나 tank localize 명령을 사용하여 파이프라인 구성 내부에 Toolkit Core API의 사본을 설치함으로써 코어의 "공유를 해제"할 수 있습니다. 이를 가리켜 코어를 "지역화"한다고 합니다.  +파이프라인 구성이 공유 Toolkit Core를 사용하도록 설정되어 있는 경우에는 해당 프로세스를 실행 취소하거나 tank localize 명령을 사용하여 파이프라인 구성 내부에 Toolkit Core API의 사본을 설치함으로써 코어의 "공유를 해제"할 수 있습니다. 이를 가리켜 코어를 "지역화"한다고 합니다. -1. 터미널을 열고 Toolkit Core를 설치하려는 파이프라인 구성으로 이동합니다. +1. 터미널을 열고 Toolkit Core를 설치하려는 파이프라인 구성으로 이동합니다. $ cd /sgtk/software/shotgun/scarlet -2. 다음 tank 명령을 실행합니다. +2. 다음 tank 명령을 실행합니다. - $ ./tank localize + $ ./tank localize - ... - ... - - ---------------------------------------------------------------------- - Command: Localize - ---------------------------------------------------------------------- + ... + ... - This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline - configuration /sgtk/software/shotgun/scarlet. + ---------------------------------------------------------------------- + Command: Localize + ---------------------------------------------------------------------- - Do you want to proceed [yn] + This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline + configuration /sgtk/software/shotgun/scarlet. - 계속 진행하기 전에 툴킷이 모든 사항을 확인합니다. 파이프라인 구성이 현재 가리키고 있는 Toolkit Core 사본이 파이프라인 구성에 로컬로 복사됩니다. + Do you want to proceed [yn] -3. 이제 툴킷이 파이프라인 구성에서 사용 중인 모든 앱, 엔진 및 프레임워크를 `install` 폴더에 로컬로 복사합니다. 그런 후 Toolkit Core를 복사하고 새로 설치된 로컬 Toolkit Core를 사용하도록 파이프라인 구성의 구성 파일을 업데이트합니다. + 계속 진행하기 전에 툴킷이 모든 사항을 확인합니다. 파이프라인 구성이 현재 가리키고 있는 Toolkit Core 사본이 파이프라인 구성에 로컬로 복사됩니다. +3. 이제 툴킷이 파이프라인 구성에서 사용 중인 모든 앱, 엔진 및 프레임워크를 `install` 폴더에 로컬로 복사합니다. 그런 후 Toolkit Core를 복사하고 새로 설치된 로컬 Toolkit Core를 사용하도록 파이프라인 구성의 구성 파일을 업데이트합니다. Copying 59 apps, engines and frameworks... 1/59: Copying tk-multi-workfiles v0.6.15... @@ -61,45 +60,46 @@ lang: ko {% include info title="참고" content="설치한 앱, 엔진 및 프레임워크 버전에 따라 출력이 달라집니다." %} ## 파이프라인 구성이 기존 공유 코어를 사용하도록 업데이트하려면 어떻게 해야 합니까? + 기존 공유 Toolkit Core가 있는 경우 tank 명령을 사용하여 공유 코어를 사용하도록 기존의 "지역화된" 파이프라인 구성을 업데이트할 수 있습니다. -1. 터미널을 열고 업데이트하려는 파이프라인 구성으로 이동합니다. +1. 터미널을 열고 업데이트하려는 파이프라인 구성으로 이동합니다. $ cd /sgtk/software/shotgun/scarlet -2. 그리고 `tank attach_to_core` 명령을 실행하고, 현재 플랫폼에 있는 유효한 공유 코어 경로를 제공합니다. +2. 그리고 `tank attach_to_core` 명령을 실행하고, 현재 플랫폼에 있는 유효한 공유 코어 경로를 제공합니다. - $ ./tank attach_to_core /sgtk/software/shotgun/studio - ... - ... - ---------------------------------------------------------------------- - Command: Attach to core - ---------------------------------------------------------------------- - After this command has completed, the configuration will not contain an - embedded copy of the core but instead it will be picked up from the following - locations: + $ ./tank attach_to_core /sgtk/software/shotgun/studio + ... + ... + ---------------------------------------------------------------------- + Command: Attach to core + ---------------------------------------------------------------------- + After this command has completed, the configuration will not contain an + embedded copy of the core but instead it will be picked up from the following + locations: - - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' - - Windows: 'z:\sgtk\software\shotgun\studio' - - Mac: '/sgtk/software/shotgun/studio' + - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' + - Windows: 'z:\sgtk\software\shotgun\studio' + - Mac: '/sgtk/software/shotgun/studio' - Note for expert users: Prior to executing this command, please ensure that you - have no configurations that are using the core embedded in this configuration. + Note for expert users: Prior to executing this command, please ensure that you + have no configurations that are using the core embedded in this configuration. - Do you want to proceed [yn] + Do you want to proceed [yn] - 계속 진행하기 전에 툴킷이 모든 사항을 확인합니다. 이 공유 코어는 이미 여러 플랫폼에 맞게 설정되었기 때문에 각 플랫폼의 위치가 표시됩니다. + 계속 진행하기 전에 툴킷이 모든 사항을 확인합니다. 이 공유 코어는 이미 여러 플랫폼에 맞게 설정되었기 때문에 각 플랫폼의 위치가 표시됩니다. - *새 플랫폼의 위치를 추가해야 한다면 공유 코어 구성에서 config/core/install_location.yml 파일을 업데이트하고 필요한 경로를 추가합니다.* + _새 플랫폼의 위치를 추가해야 한다면 공유 코어 구성에서 config/core/install_location.yml 파일을 업데이트하고 필요한 경로를 추가합니다._ -3. 이제 툴킷이 파이프라인 구성에 로컬 Core API를 백업하고, 지역화된 코어를 제거한 후에 공유 코어에 있는 파이프라인 구성을 가리키도록 필요한 구성을 추가합니다. +3. 이제 툴킷이 파이프라인 구성에 로컬 Core API를 백업하고, 지역화된 코어를 제거한 후에 공유 코어에 있는 파이프라인 구성을 가리키도록 필요한 구성을 추가합니다. - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. + Backing up local core install... + Removing core system files from configuration... + Creating core proxy... + The Core API was successfully processed. - 나중에 파이프라인 구성에서 Toolkit Core를 지역화하기로 결정할 경우(예: 공유 코어에서 파이프라인 구성을 분리하고 로컬로 설치된 버전을 사용) `tank localize` 명령을 사용하여 그렇게 할 수 있습니다. + 나중에 파이프라인 구성에서 Toolkit Core를 지역화하기로 결정할 경우(예: 공유 코어에서 파이프라인 구성을 분리하고 로컬로 설치된 버전을 사용) `tank localize` 명령을 사용하여 그렇게 할 수 있습니다. {% include info title="참고" content="공유 스튜디오 코어는 현재 파이프라인 구성의 코어 버전 이상이어야 합니다." %} @@ -109,15 +109,15 @@ lang: ko 여기서는 여러 프로젝트 파이프라인 구성 간에 공유할 수 있는 새 Toolkit Core API 구성을 생성하는 방법을 소개합니다. -1. 터미널을 열고, 공유하려는 Toolkit Core 버전이 포함된 기존의 파이프라인 구성으로 이동합니다. 프로젝트가 완료되면 이 파이프라인 구성은 더 이상 지역화된 상태로 유지되지 않고 새로 생성된 공유 코어를 사용하게 됩니다. +1. 터미널을 열고, 공유하려는 Toolkit Core 버전이 포함된 기존의 파이프라인 구성으로 이동합니다. 프로젝트가 완료되면 이 파이프라인 구성은 더 이상 지역화된 상태로 유지되지 않고 새로 생성된 공유 코어를 사용하게 됩니다. $ cd /sgtk/software/shotgun/pied_piper -2. 다음 tank 명령을 실행하여 Toolkit Core를 디스크의 외부 위치로 복사합니다. 이 경로를 모든 플랫폼에서 찾을 수 있도록 해당 위치를 제공해야 합니다(linux_path, windows_path, mac_path). 각 경로마다 따옴표를 사용하는 것이 좋습니다. 특정 플랫폼에서는 툴킷을 사용하지 않는다면 그냥 빈 문자열(`""`)을 지정하면 됩니다.  +2. 다음 tank 명령을 실행하여 Toolkit Core를 디스크의 외부 위치로 복사합니다. 이 경로를 모든 플랫폼에서 찾을 수 있도록 해당 위치를 제공해야 합니다(linux_path, windows_path, mac_path). 각 경로마다 따옴표를 사용하는 것이 좋습니다. 특정 플랫폼에서는 툴킷을 사용하지 않는다면 그냥 빈 문자열(`""`)을 지정하면 됩니다. $ ./tank share_core "/mnt/sgtk/software/shotgun/studio" "Z:\sgtk\software\shotgun\studio" \ "/sgtk/software/shotgun/studio" -3. 툴킷이 작업을 진행하기 전에 변경될 사항을 요약하여 보여 줍니다. +3. 툴킷이 작업을 진행하기 전에 변경될 사항을 요약하여 보여 줍니다. ---------------------------------------------------------------------- Command: Share core @@ -134,7 +134,7 @@ lang: ko have no configurations that are using the core embedded in this configuration. Do you want to proceed [yn] -4. 툴킷이 새 공유 위치로 코어 설치를 복사하고, 새 공유 위치를 가리키도록 기존 파이프라인 구성을 업데이트합니다. +4. 툴킷이 새 공유 위치로 코어 설치를 복사하고, 새 공유 위치를 가리키도록 기존 파이프라인 구성을 업데이트합니다. Setting up base structure... Copying configuration files... @@ -144,4 +144,4 @@ lang: ko Creating core proxy... The Core API was successfully processed. -이제 다른 파이프라인 구성에서 이 새로운 공유 코어를 사용할 수 있습니다. (방금 생성한 것과 같은) 기존 공유 코어를 사용하도록 파이프라인 구성을 업데이트하려면 `tank attach_to_core` 명령을 사용하면 됩니다. \ No newline at end of file +이제 다른 파이프라인 구성에서 이 새로운 공유 코어를 사용할 수 있습니다. (방금 생성한 것과 같은) 기존 공유 코어를 사용하도록 파이프라인 구성을 업데이트하려면 `tank attach_to_core` 명령을 사용하면 됩니다. diff --git a/docs/ko/quick-answers/administering/what-is-path-cache.md b/docs/ko/quick-answers/administering/what-is-path-cache.md index 8b37fb95b..021bc0f51 100644 --- a/docs/ko/quick-answers/administering/what-is-path-cache.md +++ b/docs/ko/quick-answers/administering/what-is-path-cache.md @@ -18,4 +18,4 @@ lang: ko - `tank synchronize_folders` 명령은 로컬 경로 캐시와 {% include product %}의 동기화를 실행합니다. 보통은 이 명령을 실행할 필요가 없지만 상황에 따라서는 실행하는 것이 유용할 수 있습니다. -예를 들어, `unregister_folders` 명령은 프로젝트 내 엔티티의 이름을 바꾸거나 엔티티를 다시 생성하기 전에 실행해야 합니다. \ No newline at end of file +예를 들어, `unregister_folders` 명령은 프로젝트 내 엔티티의 이름을 바꾸거나 엔티티를 다시 생성하기 전에 실행해야 합니다. diff --git a/docs/ko/quick-answers/administering/where-is-my-cache.md b/docs/ko/quick-answers/administering/where-is-my-cache.md index f4d60acee..c32f02e0b 100644 --- a/docs/ko/quick-answers/administering/where-is-my-cache.md +++ b/docs/ko/quick-answers/administering/where-is-my-cache.md @@ -7,7 +7,6 @@ lang: ko # 내 캐시는 어디에 있습니까? - ## 루트 캐시 위치 툴킷은 일부 데이터를 로컬 캐시에 저장하여 {% include product %} 서버에 대한 불필요한 호출을 방지합니다. 여기에는 [경로 캐시](./what-is-path-cache.md), 번들 캐시 및 썸네일이 포함됩니다. 대부분의 사용자는 기본 위치로도 문제 없지만 이를 변경해야 한다면 [cache_location 코어 후크](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py)를 사용하여 구성할 수 있습니다. diff --git a/docs/ko/quick-answers/developing.md b/docs/ko/quick-answers/developing.md index 780d3e324..0823c0787 100644 --- a/docs/ko/quick-answers/developing.md +++ b/docs/ko/quick-answers/developing.md @@ -5,8 +5,7 @@ pagename: quick-answers-developing lang: ko --- -개발 -=== +# 개발 툴킷을 사용한 개발을 기반으로 한 빠른 답변 모음입니다. diff --git a/docs/ko/quick-answers/developing/create-publishes-via-api.md b/docs/ko/quick-answers/developing/create-publishes-via-api.md index c1b3bbb74..d860099d5 100644 --- a/docs/ko/quick-answers/developing/create-publishes-via-api.md +++ b/docs/ko/quick-answers/developing/create-publishes-via-api.md @@ -13,6 +13,7 @@ sgtk API는 {% include product %}에서 `PublishedFiles` 엔티티를 등록할 Publish API는 궁극적으로 Core sgtk API 메서드를 사용하여 PublishedFile을 등록하지만 사용자 지정 가능한 컬렉션, 유효성 확인 및 게시 관련 프레임워크도 제공합니다. 이와 관련하여 Publish API 설명서와 함께 [파이프라인 튜토리얼](https://developer.shotgridsoftware.com/ko/cb8926fc/)에 자체 게시 플러그인 작성 예제도 제공합니다. ## register_publish() API 메서드 사용 + 로우 {% include product %} API 호출을 사용하여 {% include product %}에서 게시 레코드를 생성하는 것도 가능하지만 툴킷의 편의 메서드를 이용하는 것이 훨씬 좋습니다. 게시를 생성하는 모든 툴킷 앱은 [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)라는 API 유틸리티 메서드를 사용 중입니다. @@ -75,4 +76,5 @@ currentEngine = sgtk.platform.current_engine() tk = currentEngine.sgtk ctx = currentEngine.context ``` -" %} \ No newline at end of file + +" %} diff --git a/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md b/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md index 9a7d9aad4..fcd9ca7d8 100644 --- a/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md +++ b/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md @@ -11,7 +11,7 @@ Maya에서 툴킷 앱을 실행하기 위한 선반 버튼을 Maya에 추가하 {% include info title="참고" content="이 예는 툴킷이 현재 Maya 세션에서 활성화되어 있다고 가정한 것입니다. 이 예제 코드는 툴킷을 부트스트랩하지 않습니다." %} -Maya에서 스크립트 편집기를 열고 다음 Python 코드를 붙여 넣습니다.  +Maya에서 스크립트 편집기를 열고 다음 Python 코드를 붙여 넣습니다. ```python import maya.cmds as cmds diff --git a/docs/ko/quick-answers/developing/setting-software-environment-variables.md b/docs/ko/quick-answers/developing/setting-software-environment-variables.md index f7a44943f..871e4b872 100644 --- a/docs/ko/quick-answers/developing/setting-software-environment-variables.md +++ b/docs/ko/quick-answers/developing/setting-software-environment-variables.md @@ -38,6 +38,7 @@ class BeforeAppLaunch(tank.Hook): ```python tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") ``` + " %} ## 커스텀 래퍼 @@ -45,4 +46,4 @@ tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") 일부 스튜디오에서는 환경 변수 설정 및 소프트웨어 실행을 처리하는 커스텀 래퍼를 사용합니다. 이와 같은 커스텀 코드를 사용하여 환경을 설정하려는 경우 `Software` 엔티티의 [경로 필드](https://support.shotgunsoftware.com/hc/ko/articles/115000067493-Integrations-Admin-Guide#Example:%20Add%20your%20own%20Software)를 실행 가능한 래퍼로 지정하면 `tk-multi-launchapp`이 대신 실행합니다. -{% include warning title="경고" content="이 경우 ShotGrid에서 설정한 환경 변수를 유지해야 합니다. 그러지 않으면 통합이 시작되지 않습니다." %} \ No newline at end of file +{% include warning title="경고" content="이 경우 ShotGrid에서 설정한 환경 변수를 유지해야 합니다. 그러지 않으면 통합이 시작되지 않습니다." %} diff --git a/docs/ko/quick-answers/developing/sgtk-script-authentication.md b/docs/ko/quick-answers/developing/sgtk-script-authentication.md index 892d86289..9a7ac2960 100644 --- a/docs/ko/quick-answers/developing/sgtk-script-authentication.md +++ b/docs/ko/quick-answers/developing/sgtk-script-authentication.md @@ -8,16 +8,19 @@ lang: ko # 커스텀 스크립트에서 인증 및 로그인 자격 증명 관련 작업은 어떻게 진행합니까? ## 오류 메시지 + 스크립트에서 아래와 같은 오류가 표시되는 경우 ShotGrid 사이트에 액세스할 권한이 없음을 의미합니다. ```text tank.errors.TankError: Missing required script user in config '/path/to/your/project/config/core/shotgun.yml' ``` + 사용자 인증 또는 스크립트 인증이 사전에 제공되지 않은 경우 툴킷은 구성의 `shotgun.yml` 파일에 정의된 자격 증명을 확인하기 위해 폴백합니다. `shotgun.yml` 파일에서 자격 증명을 정의하는 것은 과거에 인증을 처리하던 방식입니다. `shotgun.yml` 파일에서 자격 증명을 정의하는 대신 아래에 설명된 방법 중 하나를 사용하십시오. ## 사용자 대상 스크립트 + 사용자 대상 스크립트의 경우 `Sgtk` 인스턴스를 생성하기 전에 다음을 시작 부분에 추가할 수 있습니다. ```python @@ -69,7 +72,8 @@ authenticator.clear_default_user() ![](./images/sign_in_window.png) {% include info title="참고" content="구성과 연관되지 않은 툴킷 API(`sgtk` 패키지)를 가져오는 경우(예: 다른 구성으로 부트스트랩(Bootstrapping)하는 데 사용하기 위해 다운로드한 패키지) `CoreDefaultsManager`를 만들면 안 됩니다. 대신 기본값 관리자를 전달하지 말고 `ShotgunAuthenticator()` 인스턴스를 생성하십시오. -```python + +````python authenticator = ShotgunAuthenticator() ```" %} @@ -102,7 +106,7 @@ user = authenticator.create_script_user( # Tells Toolkit which user to use for connecting to Shotgun. sgtk.set_authenticated_user(user) -``` +```` {% include info title="참고" content="[사용자 대상 스크립트](user-facing-scripts`sgtk` 섹션의 끝 부분에 언급했듯이 가져온 ) 패키지가 독립 실행형이거나 구성에서 가져온 패키지가 아닌 경우 기본값 관리자를 생성하지 마십시오. 또한 `create_script_user()` 방식에 `host`를 제공해야 합니다. @@ -113,4 +117,5 @@ user = authenticator.create_script_user( api_key=\"4e48f....\" ) ``` + " %} diff --git a/docs/ko/quick-answers/developing/toolkit-core-event-daemon.md b/docs/ko/quick-answers/developing/toolkit-core-event-daemon.md index 893209475..5d32bc58b 100644 --- a/docs/ko/quick-answers/developing/toolkit-core-event-daemon.md +++ b/docs/ko/quick-answers/developing/toolkit-core-event-daemon.md @@ -105,7 +105,6 @@ def import_sgtk(project): {% include warning title="경고" content="구성을 부트스트랩하면 프로세스가 구성을 로컬로 캐시하고 모든 종속성을 다운로드해야 하므로 속도가 느려질 수 있습니다. 이벤트 데몬 플러그인에서 부트스트랩하면 성능에 심각한 영향을 미칠 수 있습니다. 한 가지 가능한 접근 방식은 각 프로젝트 부트스트랩에 대해 별도의 Python 인스턴스를 생성하여 플러그인에서 명령을 전달하는 것입니다. 이렇게 하면 필요할 때마다 프로젝트를 다시 부트스트랩하지 않아도 됩니다." %} - 예는 다음과 같습니다. ```python @@ -137,4 +136,4 @@ engine.destroy() ... ``` -{% include info title="참고" content="중앙 집중식 구성도 부트스트랩할 수 있으므로 혼합하여 사용할 경우 다른 메서드가 필요하지 않습니다." %} \ No newline at end of file +{% include info title="참고" content="중앙 집중식 구성도 부트스트랩할 수 있으므로 혼합하여 사용할 경우 다른 메서드가 필요하지 않습니다." %} diff --git a/docs/ko/quick-answers/developing/update-config-with-api.md b/docs/ko/quick-answers/developing/update-config-with-api.md index 3b8172294..e1549f737 100644 --- a/docs/ko/quick-answers/developing/update-config-with-api.md +++ b/docs/ko/quick-answers/developing/update-config-with-api.md @@ -8,6 +8,7 @@ lang: ko # API를 사용하여 툴킷 구성을 프로그래밍 방식으로 업데이트하려면 어떻게 해야 합니까? ## 앱, 엔진 및 프레임워크 업데이트 + 프로그래밍 방식으로 엔진, 앱 및 프레임워크를 모두 최신 버전으로 업데이트하려면 다음 코드를 사용하면 됩니다. ```python diff --git a/docs/ko/quick-answers/troubleshooting.md b/docs/ko/quick-answers/troubleshooting.md index 3afe106d8..8900cb717 100644 --- a/docs/ko/quick-answers/troubleshooting.md +++ b/docs/ko/quick-answers/troubleshooting.md @@ -5,8 +5,7 @@ pagename: quick-answers-troubleshooting lang: ko --- -문제 해결 -=== +# 문제 해결 문제 해결을 위한 빠른 답변 모음입니다. @@ -19,6 +18,7 @@ lang: ko - [Python API에서 SSL: CERTIFICATE_VERIFY_FAILED 문제 수정](./troubleshooting/fix-ssl-certificate-verify-failed.md) #### 소프트웨어 통합. + - [Houdini {% include product %} 통합이 시작되지 않는 이유는 무엇일까요?](./troubleshooting/houdini-integrations-not-starting.md) - [SG 데스크톱에서 Nuke/Maya 등을 실행했는데 {% include product %} 메뉴에 해당 항목이 없습니다](./troubleshooting/menu-entries-missing-in-launched-dcc.md) - [NUKE_PATH 환경 변수를 설정하면 Nuke 통합이 시작되지 않는 이유가 무엇입니까?](./troubleshooting/nuke-path-environment-variable.md) @@ -26,7 +26,7 @@ lang: ko - [{% include product %} 툴킷 사용 시 3ds Max를 시작하면 충돌 오류가 발생하는 이유는 무엇입니까?](./troubleshooting/3dsmax-crashes-on-startup.md) #### 브라우저 통합 + - [Chrome에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다](./troubleshooting/cant-use-file-linking-toolkit-app-chrome.md) - [Firefox에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다.](./troubleshooting/cant-use-file-linking-toolkit-app-firefox.md) - [{% include product %} 데스크톱/브라우저 통합을 Linux에서 실행할 수 없습니다](./troubleshooting/browser-integration-fails-linux.md) - diff --git a/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md index 4a49b37fd..f3b0e8685 100644 --- a/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ b/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md @@ -16,7 +16,7 @@ lang: ko An Application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. -이는 보통 경로의 `msvcr90.dll` 버전이 3ds Max와 번들로 제공되는 Python 버전과 충돌하기 때문입니다.  +이는 보통 경로의 `msvcr90.dll` 버전이 3ds Max와 번들로 제공되는 Python 버전과 충돌하기 때문입니다. ## 솔루션 diff --git a/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md index 2a03bc7d2..3772c6a8b 100644 --- a/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ b/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md @@ -11,6 +11,7 @@ Linux에서 {% include product %} 데스크톱을 처음 실행하면 다음 오 여전히 해결되지 않으면 support@shotgunsoftware.com으로 문의하시기 바랍니다. ### 목차 + - [OPENSSL_1.0.1_EC 또는 HTTPSConnection 관련 문제](#openssl_101_ec-or-httpsconnection-related-issues) - [libffi.so.5 관련 문제](#libffiso5-related-issues) - [인증서 유효성 확인 실패 관련 문제](#certificate-validation-failed-related-issues) @@ -91,6 +92,7 @@ ls -al $HOME/.pki/nssdb $ mkdir --parents ~/.pki/nssdb $ certutil -N -d "sql:$HOME/.pki/nssdb" ``` + 암호를 입력하지 마십시오. {% include product %} 데스크톱을 실행하면 이제 올바로 작동할 것입니다. diff --git a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md b/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md index 5e6bf2412..eaed34507 100644 --- a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ b/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md @@ -98,4 +98,4 @@ Windows 키를 클릭하고 **mmc**를 입력한 다음 Enter 키를 누릅니 ## 다른 OS에서 문제 해결 -다른 OS에서 {% include product %} 데스크톱 통합과 관련한 문제가 발생한다면 [지원 팀](https://support.shotgunsoftware.com/hc/ko/requests/new)에 연락해 도움을 받고, 이 게시글도 업데이트하도록 해 주십시오. \ No newline at end of file +다른 OS에서 {% include product %} 데스크톱 통합과 관련한 문제가 발생한다면 [지원 팀](https://support.shotgunsoftware.com/hc/ko/requests/new)에 연락해 도움을 받고, 이 게시글도 업데이트하도록 해 주십시오. diff --git a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md b/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md index 4a4c8789a..7a404a6f0 100644 --- a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ b/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md @@ -40,7 +40,7 @@ https://localhost:9000으로 이동하여 Firefox가 인증서를 수락하는 ![Firefox에 예외 추가](images/add-exception-firefox.png) -****인증서 가져오기(Get Certificate)**를 클릭한 다음 **보안 예외 확인(Confirm Security Exception)을 클릭합니다. 인증서를 신뢰할 수 없다는 메시지는 무시해도 됩니다. 인증서가 인증 기관이 아닌 {% include product %} 데스크톱에 의해 생성된 경우에 보통 발생하는 일입니다. +\***\*인증서 가져오기(Get Certificate)**를 클릭한 다음 \*\*보안 예외 확인(Confirm Security Exception)을 클릭합니다. 인증서를 신뢰할 수 없다는 메시지는 무시해도 됩니다. 인증서가 인증 기관이 아닌 {% include product %} 데스크톱에 의해 생성된 경우에 보통 발생하는 일입니다. 이제 {% include product %} 사이트에서 로컬 파일 링크에 액세스하고 툴킷 응용프로그램을 실행할 수 있습니다. 예외를 추가한 뒤에도 계속 문제가 발생하면 support@shotgunsoftware.com으로 문의하십시오. @@ -58,4 +58,4 @@ https://localhost:9000으로 이동하여 Firefox가 인증서를 수락하는 이때 위에 설명된 단계에 따라 예외를 추가해야 합니다. -이 화면이 아닌 다른 화면이 표시된 경우 support@shotgunsoftware.com으로 문의하십시오. \ No newline at end of file +이 화면이 아닌 다른 화면이 표시된 경우 support@shotgunsoftware.com으로 문의하십시오. diff --git a/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md b/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md index 28ab083b5..890723683 100644 --- a/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md +++ b/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md @@ -32,4 +32,4 @@ lang: ko - 자동 컨텍스트 전환 기능을 사용하는 경우, 이 기능은 툴킷이 사용자가 소프트웨어의 기본 열기 대화상자에서 파일을 여는지 탐지하고(Workfiles 앱을 사용하지 않고) 현재 컨텍스트를 적절하게 전환할 수 있도록 해줍니다. - 지정된 파일에 대한 컨텍스트를 찾아야 하는 독립 실행형 프로세스에서 API를 사용하는 경우 -이러한 상황을 해결할 수 있는 솔루션은 스키마에 `Task` 폴더를 추가하거나 자동 컨텍스트 전환을 사용하지 않는 것입니다. 또는 API 스크립트 사용 시에는 프로세스에 이미 필요한 컨텍스트 정보가 있는지 확인하면 이 조회를 수행할 필요가 없습니다. \ No newline at end of file +이러한 상황을 해결할 수 있는 솔루션은 스키마에 `Task` 폴더를 추가하거나 자동 컨텍스트 전환을 사용하지 않는 것입니다. 또는 API 스크립트 사용 시에는 프로세스에 이미 필요한 컨텍스트 정보가 있는지 확인하면 이 조회를 수행할 필요가 없습니다. diff --git a/docs/ko/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md b/docs/ko/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md index 053c02770..40fe656b1 100644 --- a/docs/ko/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ b/docs/ko/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md @@ -17,16 +17,16 @@ Python API는 최신 인증서 사본을 제공하지만 2019년 2월 21일부 필요한 CA 인증서를 Windows 인증서 저장소에 추가합니다. Windows 7 사용자가 이 솔루션을 사용하려면 먼저 [PowerShell 3.0으로 업그레이드](https://docs.microsoft.com/ko/office365/enterprise/powershell/manage-office-365-with-office-365-powershell)하거나 [certutil](https://docs.microsoft.com/ko/windows-server/administration/windows-commands/certutil)을 사용하여 [필요한 인증서](https://www.amazontrust.com/repository/SFSRootCAG2.cer)를 추가해야 할 수 있습니다. -1. **시작**을 마우스 오른쪽 버튼으로 클릭한 다음 **Windows PowerShell(관리자)** 항목을 마우스 왼쪽 버튼으로 클릭하여 승격된 PowerShell을 시작합니다. +1. **시작**을 마우스 오른쪽 버튼으로 클릭한 다음 **Windows PowerShell(관리자)** 항목을 마우스 왼쪽 버튼으로 클릭하여 승격된 PowerShell을 시작합니다. -2. PowerShell 창에 다음 명령을 붙여넣은 후 Return 키를 눌러 실행합니다. +2. PowerShell 창에 다음 명령을 붙여넣은 후 Return 키를 눌러 실행합니다. $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" $cert_file = New-TemporaryFile Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root -3. 추가된 인증서에 포함된 자세한 지문 `925A8F8D2C6D04E0665F596AFF22D863E8256F3F`가 표시되면 작업이 완료된 것이며 PowerShell을 닫을 수 있습니다. +3. 추가된 인증서에 포함된 자세한 지문 `925A8F8D2C6D04E0665F596AFF22D863E8256F3F`가 표시되면 작업이 완료된 것이며 PowerShell을 닫을 수 있습니다. ## 대체 솔루션 @@ -52,4 +52,4 @@ Python API는 최신 인증서 사본을 제공하지만 2019년 2월 21일부 1. [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](ttps://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)에서 최신 인증서 목록을 다운로드합니다. -2. `SSL_CERT_FILE` 환경 변수를 이 파일을 저장한 위치로 설정합니다. \ No newline at end of file +2. `SSL_CERT_FILE` 환경 변수를 이 파일을 저장한 위치로 설정합니다. diff --git a/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md index 863954bea..0fb752a2e 100644 --- a/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ b/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md @@ -7,7 +7,6 @@ lang: ko # Houdini {% include product %} 통합이 시작되지 않는 이유는 무엇일까요? - 여기서는 Houdini에서 {% include product %} 통합을 시작할 수 없는 가장 일반적인 원인을 살펴봅니다. 이 경우, Houdini는 {% include product %} 데스크톱, {% include product %} 웹 사이트 또는 tank 명령으로 오류 없이 시작됩니다. 하지만 Houdini가 시작된 후에 {% include product %} 메뉴 또는 쉘프가 나타나지 않습니다. 원인은 {% include product %}이 재정의된 `HOUDINI_PATH` 환경 변수를 사용하여 시작 스크립트 경로를 전달하기 때문인 경우가 많습니다. @@ -33,4 +32,4 @@ lang: ko 이 오류가 발생하면 대신 `%HOUDINI_PATH%`를 사용해야 합니다." %} -그래도 문제가 해결되지 않으면 문제를 진단할 수 있도록 당사 [지원 팀](https://support.shotgunsoftware.com/hc/ko/requests/new)에 문의해 주십시오. \ No newline at end of file +그래도 문제가 해결되지 않으면 문제를 진단할 수 있도록 당사 [지원 팀](https://support.shotgunsoftware.com/hc/ko/requests/new)에 문의해 주십시오. diff --git a/docs/ko/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md b/docs/ko/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md index f50a7bed3..9279531e5 100644 --- a/docs/ko/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ b/docs/ko/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md @@ -25,4 +25,4 @@ lang: ko ![{% include product %} 메뉴 프로젝트 액션](images/shotgun-menu-asset-step-actions.png) 올바른 환경에 있는데도 액션이 표시되지 않을 경우 다음 단계는 관련 [로그](where-are-my-log-files.md)에 오류가 있는지 확인하는 것입니다. -전체 출력을 얻으려면 [디버그 로깅을 활성화](turn-debug-logging-on.md)해야 합니다. \ No newline at end of file +전체 출력을 얻으려면 [디버그 로깅을 활성화](turn-debug-logging-on.md)해야 합니다. diff --git a/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md index 1e4b4c20d..daf5abecc 100644 --- a/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ b/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md @@ -18,4 +18,4 @@ lang: ko tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") ``` -아니면, `prepend_path_to_env_var()`을 사용하여 경로를 접두사로 붙여도 됩니다. \ No newline at end of file +아니면, `prepend_path_to_env_var()`을 사용하여 경로를 접두사로 붙여도 됩니다. diff --git a/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md index 98e347ddd..aaa17e9d3 100644 --- a/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md +++ b/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md @@ -21,20 +21,21 @@ lang: ko 아래 목록에는 모범 사례와 속도 저하 문제가 발생하는 일반적인 사례가 정리되어 있습니다. 전체 사례가 수록된 완전한 목록은 아니며 새로운 패턴이 발견되는 대로 목록에 추가하겠습니다. 이 안내서가 문제 원인을 파악하는 데 도움이 되지 않을 경우 언제든지 [지원 티켓](https://support.shotgunsoftware.com/hc/ko/requests/new)을 제출해 주십시오. {% include product %} 팀이 도와드리겠습니다. 목차: + - [일반적인 모범 사례](#general-good-practice) - - [캐시 위치](#cache-location) - - [최신 버전 유지](#keeping-up-to-date) - - [중앙 집중식 구성과 분산 구성 비교](#centralized-configs-vs-distributed-configs) - - [디버깅](#debugging) + - [캐시 위치](#cache-location) + - [최신 버전 유지](#keeping-up-to-date) + - [중앙 집중식 구성과 분산 구성 비교](#centralized-configs-vs-distributed-configs) + - [디버깅](#debugging) - [소프트웨어의 시작 속도가 느림](#launching-software-is-slow) - - [진단](#diagnosis) - - [문제가 시작 전에 발생합니까? 아니면 시작 후에 발생합니까?](#is-the-issue-pre-or-post-launch) - - [로그 확인](#checking-the-logs) - - [소프트웨어의 실행 속도가 느려지는 일반적인 원인](#common-causes-of-slow-software-launches) + - [진단](#diagnosis) + - [문제가 시작 전에 발생합니까? 아니면 시작 후에 발생합니까?](#is-the-issue-pre-or-post-launch) + - [로그 확인](#checking-the-logs) + - [소프트웨어의 실행 속도가 느려지는 일반적인 원인](#common-causes-of-slow-software-launches) - [File Open, File Save 또는 Loader 앱의 속도가 느립니까?](#file-open-file-save-or-the-loader-app-is-slow) - [폴더 생성 속도가 느림](#folder-creation-is-slow) - - [입출력량 문제 해결](#tackling-io-usage) - - [폴더 등록](#registering-folders) + - [입출력량 문제 해결](#tackling-io-usage) + - [폴더 등록](#registering-folders) ## 일반적인 모범 사례 @@ -60,13 +61,13 @@ lang: ko 이러한 차이점은 성능 이외의 측면에도 영향을 미치지만 성능 차원에서도 각기 다른 장단점을 가집니다. 다음 표에는 성능 측면의 장단점이 정리되어 있습니다. -| | 장점 | 단점 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **중앙 집중식 구성** | - 초기 설정 프로세스가 완료되면 필요한 모든 항목이 이미 다운로드되어 모든 사용자가 이용할 수 있게 준비됩니다. | - 중앙 집중식 구성은 일반적으로 네트워크 저장소에 유지되므로 일반적인 툴킷 사용 중에 성능 저하가 나타날 수 있습니다. | -| | - 이후에 업데이트할 때는 중앙의 위치에 한 번만 다운로드하면 됩니다. | - 툴킷 구성에는 작은 파일이 많이 포함되므로 이러한 작은 파일에 대한 메타데이터 작업 처리가 상당히 느려지고 서버에 부담을 줄 수 있습니다. 또한, 구성을 빠르게 읽어올 수 없으므로 툴킷 사용을 통한 읽기 작업이든 일반적인 서버 사용을 통한 읽기 작업이든 읽기 작업이 과도하게 많은 경우 툴킷의 성능에 영향을 미칠 수 있습니다. | -| **분산 구성** | - 캐시된 앱, 엔진, 프레임워크 및 코어가 로컬로 캐시된 다른 구성과 공유할 수 있는 방식으로 저장됩니다. 즉, 여러 프로젝트가 동일한 종속 항목을 공유하는 경우 이러한 프로젝트를 이후에 로드할 때 캐시가 더 빨라질 수 있습니다. | - 분산 구성은 사용자별로 로컬에 캐시되어야 합니다. 보통, 이 과정에서 구성과 함께 필요한 모든 앱, 엔진, 프레임워크 및 코어가 다운로드됩니다. | -| | - 이러한 항목은 사용자의 로컬 하드 드라이브에 있는 캐시에 저장되며, 따라서 일반적으로 서버 속도보다 빠릅니다. 즉, 초기 캐시 후 성능이 중앙 집중식 구성보다 빠릅니다. | - 이 프로세스는 백그라운드에서 원활히 수행될 수 있지만, 이러한 항목을 다운로드해야 하는 초기 부담이 여전히 존재합니다. | -| | | - 구성이 종속 항목의 새 버전을 가리키도록 업데이트될 때마다 구성과 새 종속 항목이 모두 캐시되어야 합니다. | +| | 장점 | 단점 | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **중앙 집중식 구성** | - 초기 설정 프로세스가 완료되면 필요한 모든 항목이 이미 다운로드되어 모든 사용자가 이용할 수 있게 준비됩니다. | - 중앙 집중식 구성은 일반적으로 네트워크 저장소에 유지되므로 일반적인 툴킷 사용 중에 성능 저하가 나타날 수 있습니다. | +| | - 이후에 업데이트할 때는 중앙의 위치에 한 번만 다운로드하면 됩니다. | - 툴킷 구성에는 작은 파일이 많이 포함되므로 이러한 작은 파일에 대한 메타데이터 작업 처리가 상당히 느려지고 서버에 부담을 줄 수 있습니다. 또한, 구성을 빠르게 읽어올 수 없으므로 툴킷 사용을 통한 읽기 작업이든 일반적인 서버 사용을 통한 읽기 작업이든 읽기 작업이 과도하게 많은 경우 툴킷의 성능에 영향을 미칠 수 있습니다. | +| **분산 구성** | - 캐시된 앱, 엔진, 프레임워크 및 코어가 로컬로 캐시된 다른 구성과 공유할 수 있는 방식으로 저장됩니다. 즉, 여러 프로젝트가 동일한 종속 항목을 공유하는 경우 이러한 프로젝트를 이후에 로드할 때 캐시가 더 빨라질 수 있습니다. | - 분산 구성은 사용자별로 로컬에 캐시되어야 합니다. 보통, 이 과정에서 구성과 함께 필요한 모든 앱, 엔진, 프레임워크 및 코어가 다운로드됩니다. | +| | - 이러한 항목은 사용자의 로컬 하드 드라이브에 있는 캐시에 저장되며, 따라서 일반적으로 서버 속도보다 빠릅니다. 즉, 초기 캐시 후 성능이 중앙 집중식 구성보다 빠릅니다. | - 이 프로세스는 백그라운드에서 원활히 수행될 수 있지만, 이러한 항목을 다운로드해야 하는 초기 부담이 여전히 존재합니다. | +| | | - 구성이 종속 항목의 새 버전을 가리키도록 업데이트될 때마다 구성과 새 종속 항목이 모두 캐시되어야 합니다. | 요약하자면 저장 장치의 속도는 느리지만 인터넷 연결 속도가 괜찮다면 분산 구성이 가장 좋은 선택이 될 수 있고, 서버 저장 장치 성능은 좋지만 인터넷 속도는 좋지 않을 경우에는 중앙 집중식 구성이 적합할 수 있습니다. @@ -79,6 +80,7 @@ lang: ko Maya, Nuke, Houdini 등의 소프트웨어를 시작할 때 {% include product %} 없이 시작할 때보다 시간이 오래 걸리는 것을 알아차리셨을 것입니다. {% include product %} 없이 시작하는 경우보다 시간이 약간 더 오래 걸리는 것은 당연하겠지만, 용납할 수 없을 정도로 오래 걸리는 경우도 있을 수 있습니다. 소프트웨어에 따라 다르지만 대개 1분 안에 시작되어야 합니다. 소프트웨어를 시작하는 데는 많은 프로세스가 관련되기 때문에 이 문제를 진단하는 것은 더 어려울 수 있습니다. ### 진단 + 먼저, 이 문제가 어떠한 상황에서 발생하는지 파악해야 합니다. 1. **{% include product %} 없이 시작할 때도 속도가 느립니까?** - 뻔한 이야기일 수 있지만 {% include product %}과 함께 시작할 때만 문제가 발생하는지 확인하는 것이 좋습니다. @@ -116,7 +118,6 @@ Maya, Nuke, Houdini 등의 소프트웨어를 시작할 때 {% include product % 2019-05-01 11:27:56,835 [82801 DEBUG sgtk.core.path_cache] Path cache syncing not necessary - local folders already up to date! 2019-05-01 11:28:01,847 [82801 INFO sgtk.env.asset.tk-shotgun.tk-shotgun-folders] 1 Asset processed - Processed 66 folders on disk. - 시간이 건너뛴 부분을 찾고 나면 해당 로그 행에서 폴더를 생성 중이었는지 아니면 {% include product %}에 연결 중이었는지와 같이 해당 단계에서 어떠한 작업이 수행 중이었는지 확인할 수 있습니다. 로그를 읽는 것이 어렵거나 내용이 이해되지 않는 경우에는 [지원 팀](https://support.shotgunsoftware.com/hc/ko/requests/new)에 문의하여 도움을 받으십시오. @@ -133,18 +134,19 @@ Maya, Nuke, Houdini 등의 소프트웨어를 시작할 때 {% include product % 가장 먼저 문제가 있는 앱에서 어느 부분이 느려지는지 확인해야 합니다. - **앱을 시작할 때 속도가 느립니까? 아니면 탭을 탐색할 때 속도가 느립니까?** - - 앱이 너무 많은 정보를 표시하도록 구성되어 있는 것일 수 있습니다. 이 경우 목록에서 불필요한 엔티티를 필터링하여 제외하도록 내 태스크(My Tasks) 탭 및 기타 탭을 구성할 수 있습니다. 예를 들어, 대기 중(`hld`) 또는 최종(`fin`)과 같은 특정 상태의 태스크를 필터링하여 제외할 수 있습니다. 이렇게 하면 성능이 향상되고 아티스트는 중요한 정보만 볼 수 있게 됩니다. [Loader 앱](https://support.shotgunsoftware.com/hc/ko/articles/219033078-Load-Published-Files-#The%20tree%20view) 및 Workfiles 앱에서 모두 필터링이 가능합니다. 단, Workfiles에는 현재 필터링에 대한 특정 섹션이 없으며, [계층 설정](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files#Step%20filtering)을 통해 필터링을 적용할 수 있습니다. - - File Open 앱에서는 계층의 [하위 항목이 확장될 때까지](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files#Deferred%20queries) 하위 항목의 로드를 유예하도록 구성할 수 있습니다. 현재, 기본 구성 설정이지만 이전 구성을 사용하는 경우에는 이 설정을 사용하도록 전환할 수 있습니다. - - 디버그 로깅이 활성화되지 않은 것을 확인하십시오. 활성화되어 있으면 추가 입출력이 많이 발생하며, 이에 따라 속도가 느려질 수 있습니다. 이 앱은 많은 디버깅 출력을 포함합니다. + - 앱이 너무 많은 정보를 표시하도록 구성되어 있는 것일 수 있습니다. 이 경우 목록에서 불필요한 엔티티를 필터링하여 제외하도록 내 태스크(My Tasks) 탭 및 기타 탭을 구성할 수 있습니다. 예를 들어, 대기 중(`hld`) 또는 최종(`fin`)과 같은 특정 상태의 태스크를 필터링하여 제외할 수 있습니다. 이렇게 하면 성능이 향상되고 아티스트는 중요한 정보만 볼 수 있게 됩니다. [Loader 앱](https://support.shotgunsoftware.com/hc/ko/articles/219033078-Load-Published-Files-#The%20tree%20view) 및 Workfiles 앱에서 모두 필터링이 가능합니다. 단, Workfiles에는 현재 필터링에 대한 특정 섹션이 없으며, [계층 설정](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files#Step%20filtering)을 통해 필터링을 적용할 수 있습니다. + - File Open 앱에서는 계층의 [하위 항목이 확장될 때까지](https://support.shotgunsoftware.com/hc/ko/articles/219033088-Your-Work-Files#Deferred%20queries) 하위 항목의 로드를 유예하도록 구성할 수 있습니다. 현재, 기본 구성 설정이지만 이전 구성을 사용하는 경우에는 이 설정을 사용하도록 전환할 수 있습니다. + - 디버그 로깅이 활성화되지 않은 것을 확인하십시오. 활성화되어 있으면 추가 입출력이 많이 발생하며, 이에 따라 속도가 느려질 수 있습니다. 이 앱은 많은 디버깅 출력을 포함합니다. - **새 파일을 열거나 저장하거나 생성할 때 속도가 느립니까?** - - 씬 작업 또는 액션 후크를 인계받았는지 확인하고 이러한 기능과 관련하여 속도를 저하시킬 수 있는 커스텀 동작이 있는지 확인합니다. - - 파일을 만들거나 저장할 때 Workfiles는 컨텍스트에 필요한 모든 폴더가 생성되었는지 확인합니다. 폴더 생성은 성능 [문제](#folder-creation-is-slow)가 흔히 발생하는 부분입니다. + - 씬 작업 또는 액션 후크를 인계받았는지 확인하고 이러한 기능과 관련하여 속도를 저하시킬 수 있는 커스텀 동작이 있는지 확인합니다. + - 파일을 만들거나 저장할 때 Workfiles는 컨텍스트에 필요한 모든 폴더가 생성되었는지 확인합니다. 폴더 생성은 성능 [문제](#folder-creation-is-slow)가 흔히 발생하는 부분입니다. ## 폴더 생성 속도가 느림 폴더 생성은 여러 가지 부분으로 구성되기 때문에 문제가 발생하는 경우 프로세스 속도 저하가 나타날 수 있습니다. 폴더 생성 과정은 다음과 같습니다. + - 로컬 경로 캐시를 동기화합니다. - 구성 스키마를 읽어옵니다. - 특정 컨텍스트에 따라 만들어야 하는 경로 목록을 생성합니다. @@ -176,6 +178,7 @@ Maya, Nuke, Houdini 등의 소프트웨어를 시작할 때 {% include product % {% include info title="참고" content="단계 스키마 폴더에 대한 설정은 기본적으로 true로 설정됩니다." %} #### 생성 유예 + [`defer_creation` 설정](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference#Workspaces%20and%20Deferred%20Folder%20Creation)을 사용하면 특정 엔진이 실행 중일 때에만 폴더 생성이 발생하도록 제한하여 폴더가 생성되는 경우를 세부적으로 조정할 수 있습니다. 커스텀 이름을 사용하여 [sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure)를 통해 이에 대한 생성 작업을 트리거할 수도 있습니다. **예시** @@ -211,6 +214,7 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") 로컬 [경로 캐시](../administering/what-is-path-cache.md)에서는 데이터를 저장하기 위해 SQLite 데이터베이스를 사용합니다. 데이터베이스가 네트워크 저장소에 저장되는 경우 데이터베이스 읽기 및 쓰기 관련 성능이 심각한 영향을 받을 수 있습니다. #### 초기 동기화 + 많은 폴더가 등록된 프로젝트에 대해 로컬 캐시를 처음부터 생성해야 하는 경우가 있을 수 있습니다(예: 이미 진행 중인 프로젝트에 새 사용자가 참여하는 경우). 이 프로세스는 아주 긴 시간이 걸릴 수 있지만, 다행인 점은 이러한 현상이 해당 프로젝트에 대해 한 번만 발생한다는 것입니다. 후속 동기화에서는 로컬 캐시와 사이트 레지스트리 사이의 차이점만 가져옵니다. 사용자의 프로젝트 작업 빈도가 낮고 세션 간에 많은 폴더가 생성되는 경우 모든 항목이 캐시되는 동안 대기하는 시간이 길어질 수 있습니다. @@ -223,4 +227,4 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") 이렇게 중앙에 저장된 경로 캐시는 작업자의 캐시에서 수동으로 복사하거나 정기적으로 이러한 캐시를 전송하는 스크립트를 작성하여 주기적으로 업데이트할 수 있습니다. -{% include warning title="경고" content="cache_location.py 후크를 사용하여 캐시의 위치를 설정할 수 있지만, 모든 사용자에 대해 단일 위치를 가리키도록 설정하지 않아야 합니다. 그러면 하나 이상의 프로세스에서 동시에 데이터베이스를 편집하려고 할 때 데이터베이스 잠금이 발생할 수 있습니다." %} \ No newline at end of file +{% include warning title="경고" content="cache_location.py 후크를 사용하여 캐시의 위치를 설정할 수 있지만, 모든 사용자에 대해 단일 위치를 가리키도록 설정하지 않아야 합니다. 그러면 하나 이상의 프로세스에서 동시에 데이터베이스를 편집하려고 할 때 데이터베이스 잠금이 발생할 수 있습니다." %} diff --git a/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md index 5a66e818a..e01852501 100644 --- a/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md +++ b/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md @@ -18,6 +18,7 @@ lang: ko ## 환경 변수 설정 ### 디버그 로깅 영구적으로 켜기 + 먼저 새 환경 변수 `TK_DEBUG=1`을 설정해야 합니다. {% include info title="참고" content="플랫폼에 따라 지침이 다르므로 스튜디오의 기술 전문가와 환경 변수를 설정하는 방법을 논의하는 것이 좋습니다. 어쨌든 아래 예에는 Windows 7 컴퓨터에서 환경 변수를 설정하는 방법이 나와 있습니다." %} @@ -28,7 +29,6 @@ lang: ko ![Windows 환경 변수 설정](images/windows-setting-environment-variable.png) - - **변수 이름**: `TK_DEBUG` - **변수 값**: `1` - 확인을 선택합니다. diff --git a/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md index f539a589e..62685a900 100644 --- a/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ b/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md @@ -28,4 +28,4 @@ After Effects 통합 릴리즈에는 {% include product %}과 통합되는 모 Photoshop을 종료하고 해당 디렉토리를 제거하고 난 후 다시 시작하면 하나의 익스텐션만 확인됩니다. -{% include info title="참고" content="여러 환경 또는 여러 구성에 Photoshop 통합이 있고 이전 플러그인과 새 플러그인이 혼합된 경우 사용자가 이전 통합을 사용하여 Photoshop을 시작하면 이전 플러그인이 반환됩니다. 한 번에 정리할 수 있도록 전체적으로 Photoshop을 업데이트하는 것이 좋습니다." %} \ No newline at end of file +{% include info title="참고" content="여러 환경 또는 여러 구성에 Photoshop 통합이 있고 이전 플러그인과 새 플러그인이 혼합된 경우 사용자가 이전 통합을 사용하여 Photoshop을 시작하면 이전 플러그인이 반환됩니다. 한 번에 정리할 수 있도록 전체적으로 Photoshop을 업데이트하는 것이 좋습니다." %} diff --git a/docs/ko/quick-answers/workflow.md b/docs/ko/quick-answers/workflow.md index ee48ab39d..388d9c486 100644 --- a/docs/ko/quick-answers/workflow.md +++ b/docs/ko/quick-answers/workflow.md @@ -5,10 +5,8 @@ pagename: quick-answers-workflow lang: ko --- -워크플로우 -===== +# 워크플로우 툴킷 워크플로우와 관련된 질문과 대답이 간략하게 정리되어 있습니다. - [버전과 게시된 파일 간의 차이점은 무엇입니까?](./workflow/version-publishedfile-difference.md) - diff --git a/docs/ko/quick-answers/workflow/version-publishedfile-difference.md b/docs/ko/quick-answers/workflow/version-publishedfile-difference.md index 3ed9551fa..a816fcf69 100644 --- a/docs/ko/quick-answers/workflow/version-publishedfile-difference.md +++ b/docs/ko/quick-answers/workflow/version-publishedfile-difference.md @@ -14,4 +14,3 @@ lang: ko 궁극적인 아이디어는 게시할 때 파일 모음, 그러니까 대개 파일 형식은 다르지만 실질적으로 같은 내용을 가진 파일(Maya 파일, obj, alembic 등)을 생성할 수 있도록 하는 것입니다. 그리고 결국 이 파일들은 모두 같은 것을 서로 다르게 표현한 것입니다. 그런 후 이 파일들은 게시 데이터 미리보기 및 노트 작성을 위해 단일 리뷰 `Version`과 연결됩니다. 게시된 데이터가 이미지 시퀀스인 경우에는 이 아이디어가 조금 쓸모없어질 수 있습니다. 사실 이미지 시퀀스는 리뷰하려는 것이기도 하면서 파이프를 따라 전송될 것이기도 합니다. 이 경우 게시와 `Version` 모두를 "더블 업"하고 생성해야 할 수 있습니다. 그러면 Loader 앱 등을 통해 `Version`을 표현하는 게시된 데이터를 로드할 수 있습니다. - diff --git a/docs/ko/reference/pipeline-integrations/env-config-ref.md b/docs/ko/reference/pipeline-integrations/env-config-ref.md index b9c079c02..e9049c2eb 100644 --- a/docs/ko/reference/pipeline-integrations/env-config-ref.md +++ b/docs/ko/reference/pipeline-integrations/env-config-ref.md @@ -71,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -91,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### 엔진 블록 @@ -104,16 +104,15 @@ engines: `location`은 모든 번들에 필요한 특수한 설정입니다. `apps` 설정은 엔진에 대해 정의된 모든 앱의 목록으로, 각 앱에는 자체 설정이 있습니다. 이 예에서는 엔진에 대해 하나의 앱, `tk-multi-workfiles2`만 정의되어 있습니다. - ### 위치 설명자 모든 툴킷 번들에는 번들의 *설명자*라고 불리는 `location` 설정이 있습니다. 설명자를 통해 툴킷은 지정된 번들의 위치를 파악하고 해당 유형에 따라 직접 액세스할지 아니면 로컬로 캐시할지 여부를 파악합니다. 툴킷 번들을 가져올 수 있는 위치는 {% include product %} 앱 스토어, git 리포지토리, 디스크의 경로 또는 {% include product %} 사이트에 업로드된 ZIP 파일 등입니다. 이러한 각 위치에 해당하는 설명자 유형이 있으며 여기에는 해당 유형과 관련된 설정이 포함됩니다. 위 예제의 `tk-maya` 엔진에 대한 설명자는 다음과 같습니다. ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` 이 예는 `app_store` 유형의 설명자로, 툴킷이 {% include product %} 앱 스토어에서 지정된 번들을 가져오도록 합니다. `app_store` 유형의 설명자에는 `name` 및 `version` 설정이 있습니다. @@ -121,9 +120,9 @@ engines: 한편, 커스텀 번들을 개발 중이고 스튜디오의 특정 워크플로우에 대한 툴킷 앱을 작성 중인 경우 디스크의 경로에서 직접 가져오고 싶을 수 있습니다. 이 경우 다음과 같이 `dev` 유형의 설명자를 사용합니다. ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` 설명자에는 `app_store` 설명자와 다른 설정이 있습니다. 다른 설정을 가져올 수 있지만 디스크에 있는 앱 위치를 가리키는 `path` 설정으로 간단하게 설정할 수 있습니다. @@ -171,16 +170,16 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` 이때 다음과 같은 몇 가지 중요 사항에 유의해야 합니다. -* 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. -* 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. -* 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. +- 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. +- 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. +- 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. 마지막 두 가지 문제점을 해결하기 위해 툴킷 구성은 *includes*를 지원합니다. @@ -190,8 +189,8 @@ engines: includes는 두 부분으로 구성됩니다. -* `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. -* 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. +- `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. +- 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. 위의 예제를 구체화하기 위해 모든 엔진에 대한 위치 설명자가 있는 단일 파일이 있다고 가정합니다. 이 파일을 `includes` 하위 폴더에 넣고 `engine_locations.yml`로 지정하겠습니다. @@ -209,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` 이 파일은 모든 엔진 위치에 대한 단일 소스 역할을 하며 모든 환경 구성에서 참조할 수 있습니다. 이 포함 파일을 사용할 경우 예제는 이제 다음과 같이 표시됩니다. @@ -269,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -293,10 +289,9 @@ engines: {% include info title="참고" content="기본 구성은 여기에 설명되지 않은 두 번째 중첩 수준을 사용합니다. 설명자 외에도 설정이 있는 모든 앱 또는 엔진에 `includes/settings`의 설정 파일(예: `includes/settings/tk-maya.yml`, `includes/settings/tk-multi-workfiles2.yml`)이 있습니다. 엔진 설정 파일에는 앱 설정 파일의 앱 설정이 포함되고 환경 구성 파일에는 엔진 설정 파일의 설정이 포함됩니다. 기본 구성의 구조에 대한 자세한 내용은 [읽어보기 파일](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)을 참조하십시오. 구성 설정 수정에 대한 자세한 내용은 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](./learning-resources/guides/editing_app_setting.md)을 참조하십시오." %} - ## 스파스 구성 -모든 툴킷 번들에는 각 기본값이 포함된 일련의 구성 설정이 있습니다. 툴킷은 *스파스* 구성을 허용하므로 환경 구성 파일(및/또는 포함 파일)에 구성 설정이 명시적으로 지정되지 않은 경우에는 번들의 기본값이 사용됩니다. +모든 툴킷 번들에는 각 기본값이 포함된 일련의 구성 설정이 있습니다. 툴킷은 _스파스_ 구성을 허용하므로 환경 구성 파일(및/또는 포함 파일)에 구성 설정이 명시적으로 지정되지 않은 경우에는 번들의 기본값이 사용됩니다. 이 예에서는 `location`을 제외하고 앱에 대한 어떤 설정도 지정하지 않았습니다. 따라서 구성의 현재 상태에서 세 개의 앱은 모든 설정에 대해 기본값을 사용합니다. 그렇다면 어떤 구성 설정을 사용할 수 있는지 어떻게 알 수 있을까요? @@ -306,8 +301,8 @@ engines: 스파스 구성의 경우 단순히 구성 파일을 보는 것만으로는 앱에 대해 사용할 수 있는 구성 설정을 바로 확인할 수 없습니다. 사용 가능한 앱 구성 설정을 확인하려면 두 가지 방법이 있습니다. -* **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://support.shotgunsoftware.com/hc/ko/articles/219033088)할 수 있습니다. [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219033088)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. -* **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `info.yml` 파일이 포함되어 있습니다. 이 파일을 번들의 *매니페스트*라고 하며 각각의 설명 및 기본값을 포함하여 번들에 대해 사용 가능한 모든 구성 설정을 정의합니다. 매니페스트는 번들의 자체 캐시(예: 파이프라인 구성 내의 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`) 또는 GitHub([Workfiles용](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))에서 찾을 수 있습니다. +- **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://support.shotgunsoftware.com/hc/ko/articles/219033088)할 수 있습니다. [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219033088)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. +- **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `info.yml` 파일이 포함되어 있습니다. 이 파일을 번들의 *매니페스트*라고 하며 각각의 설명 및 기본값을 포함하여 번들에 대해 사용 가능한 모든 구성 설정을 정의합니다. 매니페스트는 번들의 자체 캐시(예: 파이프라인 구성 내의 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`) 또는 GitHub([Workfiles용](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))에서 찾을 수 있습니다. ## 구성 설정 수정 @@ -337,13 +332,12 @@ engines: `tk-multi-workfiles2`에 대한 설정을 포함 파일에서 가져온 경우 해당 파일에서 설정을 변경해야 합니다. - ## 추가 리소스 -* [툴킷 기본 사항 안내서: 파이프라인 구성 편집](./learning-resources/guides/editing_app_setting.md) -* [툴킷 기본 사항 안내서: 앱 추가](./learning-resources/guides/installing_app.md) -* [애니메이션 파이프라인 튜토리얼](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [설명자 참조 설명서](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [웨비나: 툴킷 관리](https://youtu.be/7qZfy7KXXX0) -* [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference) -* [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [툴킷 기본 사항 안내서: 파이프라인 구성 편집](./learning-resources/guides/editing_app_setting.md) +- [툴킷 기본 사항 안내서: 앱 추가](./learning-resources/guides/installing_app.md) +- [애니메이션 파이프라인 튜토리얼](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [설명자 참조 설명서](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [웨비나: 툴킷 관리](https://youtu.be/7qZfy7KXXX0) +- [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference) +- [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md index 2e12cb96c..6432ff08c 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md @@ -39,7 +39,6 @@ Submit 버튼을 클릭하면 다음과 같이 여러 작업이 즉시 수행됩 - Quicktime이 생성되고 리뷰를 위해 {% include product %}에 업로드됩니다. - ## Review로 배치(Batch) 렌더 보내기 샷에 대한 Flame 배치(Batch) 파일을 게시하면 해당 샷에서 직접 Flare를 시작하여 렌더 및 출력 설정이 미리 입력된 상태로 배치(Batch) 파일을 열 수 있습니다. 새 버전을 렌더링하려면 Render Range 버튼을 클릭하기만 하면 됩니다. @@ -66,11 +65,12 @@ LINKBOX_ENGINE:{% include product %}software/tk-flame: Flame 엔진 ## 내보내기 사전 설정 사용 -내보내기는 해당 구성의 *내보내기 사전 설정* 개요를 사용합니다. Flame 내에서 내보내기 UI를 시작하면 사용 가능한 내보내기 사전 설정이 있는 드롭다운이 표시됩니다. 각 사전 설정은 파일을 디스크에 기록하고 {% include product %}에 업로드하는 방법을 구성할 수 있는 구성 옵션입니다. 디스크의 파일 위치와 같은 높은 수준의 설정은 환경 구성에서 직접 제어되므로 파이프라인에서 작동하도록 기본 구성 옵션을 쉽게 조정할 수 있습니다. +내보내기는 해당 구성의 _내보내기 사전 설정_ 개요를 사용합니다. Flame 내에서 내보내기 UI를 시작하면 사용 가능한 내보내기 사전 설정이 있는 드롭다운이 표시됩니다. 각 사전 설정은 파일을 디스크에 기록하고 {% include product %}에 업로드하는 방법을 구성할 수 있는 구성 옵션입니다. 디스크의 파일 위치와 같은 높은 수준의 설정은 환경 구성에서 직접 제어되므로 파이프라인에서 작동하도록 기본 구성 옵션을 쉽게 조정할 수 있습니다. Flame을 제어하기 위해 Flame에 전달되는 실제 내보내기 xml 컨텐츠에 대한 고급 설정 및 제어는 각 사전 설정에 대해 동작이 정의된 후크에 의해 처리됩니다. 후크에서, 내보내기로 미디어를 생성하는 방법을 완벽하게 제어할 수 있습니다. ## {% include product %} 서버 측 트랜스코딩 건너뛰기 + 기본적으로 Quicktime은 `Version.sg_uploaded_movie` 필드를 설정하는 방법으로 {% include product %} Review에 업로드됩니다. 그러면 {% include product %} 서버 측 트랜스코딩이 트리거되고 업로드된 Quicktime은 브라우저 및 모바일에서 재생하기에 적합한 `mp4` 및 `webm` 표현으로 변환됩니다. 경우에 따라 이 서버 측 트랜스코딩을 건너뛰는 것이 유익할 수 있습니다. `bypass_shotgun_transcoding` 구성 설정을 설정하면 건너뛸 수 있습니다. true로 설정하면 통합에서 {% include product %}의 `Version.sg_uploaded_movie_mp4` 필드로 직접 업로드하여 서버 측 트랜스코딩을 건너뜁니다. 이 경우 `webm` 버전이 생성되지 않으므로 Firefox에서 리뷰를 재생할 수 없습니다. 자세한 정보는 https://support.shotgunsoftware.com/hc/ko/articles/219030418을 참조하십시오. @@ -139,4 +139,3 @@ def get_ffmpeg_quicktime_encode_parameters(self): def get_local_quicktime_ffmpeg_encode_parameters(self): return "-vcodec libx264 -pix_fmt yuv420p -g 30 -b:v 6000k -vprofile high -bf 0" ``` - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md index 0b0d12da8..0e1ab76cf 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md @@ -43,4 +43,3 @@ Flame Review 앱은 여러 가지 방법으로 커스터마이즈할 수 있습 - {% include product %}에서 만든 새 항목에 앱을 자동으로 추가해야 하는 태스크를 커스터마이즈할 수 있습니다. 이 작업은 태스크 템플릿 설정을 통해 수행되며 만들어지는 구조를 표준화할 수 있습니다. - 후크를 통해 앱이 Flame 외부에서 Quicktime을 생성하는 데 사용하는 XML 사전 설정을 완벽하게 제어할 수 있습니다. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md index 70d054e3d..40a8d1843 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md @@ -38,9 +38,11 @@ lang: ko ![shotgun_ui](../images/apps/hiero-shotgun_ui.png) ### 태그 -드롭다운을 조정하여 다양한 Hiero 태그를 {% include product %} 샷 상태 및 샷 태스크 템플릿에 매핑할 수 있습니다. 따라서 Hiero의 태그 지정 워크플로우를 통해 {% include product %} 샷을 진행 중으로 설정하거나 그린 스크린, cg 추가 또는 구성에 맞는 샷의 태스크를 설정할 수 있습니다. 이 UI는 후크를 통해 입력되며 추가 기능을 구성하기 쉽습니다. + +드롭다운을 조정하여 다양한 Hiero 태그를 {% include product %} 샷 상태 및 샷 태스크 템플릿에 매핑할 수 있습니다. 따라서 Hiero의 태그 지정 워크플로우를 통해 {% include product %} 샷을 진행 중으로 설정하거나 그린 스크린, cg 추가 또는 구성에 맞는 샷의 태스크를 설정할 수 있습니다. 이 UI는 후크를 통해 입력되며 추가 기능을 구성하기 쉽습니다. ### 결합 + 또한 Hiero의 기본 제공 로직을 미러링하여 함께 트랙 항목을 결합할 수 있는 옵션이 있습니다. 샷을 구성하는 항목이 여러 개일 경우(서로 다른 트랙에서 겹치거나 여러 트랙에 동일한 샷 이름이 있는 경우) 이 옵션을 켜야 합니다. 그러면 {% include product %} 툴킷 샷 업데이트 프로그램이 일치하는 결합된 항목을 단일 샷으로 처리합니다. ![결합](../images/apps/hiero-collate.png) @@ -50,13 +52,15 @@ lang: ko ![collate_ext](../images/apps/hiero-collate_ex.png) ### 경로 -아래 {% include product %} UI는 표준 경로 대화상자입니다. 기본적으로 Hiero를 통해 샷에 추가되는 세 가지 항목이 있으며 이는 기본 Nuke 스크립트, 기본 Nuke 쓰기 위치 및 플레이트 트랜스코드의 기본 위치입니다. 이러한 항목의 위치는 앱 구성에 따라 결정되며 템플릿 시스템을 최대한 활용할 수 있습니다. + +아래 {% include product %} UI는 표준 경로 대화상자입니다. 기본적으로 Hiero를 통해 샷에 추가되는 세 가지 항목이 있으며 이는 기본 Nuke 스크립트, 기본 Nuke 쓰기 위치 및 플레이트 트랜스코드의 기본 위치입니다. 이러한 항목의 위치는 앱 구성에 따라 결정되며 템플릿 시스템을 최대한 활용할 수 있습니다. ![경로](../images/apps/hiero-paths.png) 이 앱은 {% include product %} 툴킷용으로 올바르게 형식이 지정되고 버전 문자열로 대체될 `{tk_version}` 토큰을 Hiero에 추가합니다. ### 커스텀 템플릿 필드 + `resolve_custom_strings` 후크로 확인되는 `custom_template_fields` 설정에서 정의하는 모든 토큰은 Hiero의 유효한 대체 토큰 목록에 자동으로 추가되며 툴킷 템플릿 경로에서 유효한 대체 토큰으로 간주됩니다. 예를 들어 툴킷 `templates.yml` 파일에서 다음과 같이 키를 정의한다고 가정합니다. @@ -64,7 +68,7 @@ lang: ko ``` resolution: type: str - filter_by: alphanumeric + filter_by: alphanumeric ``` `project.yml` 설정에서 `tk-hiero-export`는 다음과 같이 정의합니다. @@ -143,14 +147,16 @@ class HieroResolveCustomStrings(Hook): hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov" ``` - ### {% include product %} 태스크 + 두 개의 새로운 태스크 유형이 등록되었습니다. ##### {% include product %} 트랜스코드 이미지 -이 유형은 표준 Hiero 트랜스코딩 태스크의 하위 클래스로, {% include product %}에서 트랜스코드 결과를 게시로 등록합니다. 선택적으로 버전도 {% include product %}에 생성됩니다. 버전이 생성되면 Quicktime도 생성되어 Screening Room 미디어로 업로드됩니다. + +이 유형은 표준 Hiero 트랜스코딩 태스크의 하위 클래스로, {% include product %}에서 트랜스코드 결과를 게시로 등록합니다. 선택적으로 버전도 {% include product %}에 생성됩니다. 버전이 생성되면 Quicktime도 생성되어 Screening Room 미디어로 업로드됩니다. ##### {% include product %} Nuke 프로젝트 파일 + 이 유형은 표준 Hiero Nuke 스크립트 내보내기의 하위 클래스로, {% include product %}에서 샷에 링크된 결과 Nuke 스크립트를 게시된 파일로 등록합니다. 이 설정을 통해 내보낼 때 파일에 포함할 툴킷 사용 쓰기 노드를 지정할 수 있습니다. ![nuke_project_file_settings](../images/apps/hiero-nuke_project_file_settings.png) @@ -168,14 +174,16 @@ class HieroResolveCustomStrings(Hook): ![찾기](../images/apps/hiero-finder.png) ### {% include product %}의 시퀀스 및 샷 업데이트 + Hiero 시퀀스의 이름이 시퀀스 이름으로 사용되며 샷의 컷 정보(컷 순서, 헤드 인, 컷 인, 컷 아웃, 테일 아웃, 컷 기간 및 작업 시간)가 입력됩니다. 또한 샷을 구성하는 항목 또는 시퀀스의 포스터 프레임이 선택되면 샷의 썸네일로 업로드됩니다. 워크플로우에서 **시퀀스** 외의 엔티티를 샷 상위(예: **에피소드**)로 사용하는 경우 `hook_get_shot` 후크에서 `get_shot_parent` 방식을 재지정할 수 있습니다. 기본 구현은 필요한 경우 **시퀀스**를 만들고 반환합니다. ### 컷 스키마 지원 -{% include product %} 사이트가 컷 스키마(v7.0.0 이상)를 지원하는 경우 이 앱은 {% include product %}에 해당 **컷 항목**이 있는 **컷**을 자동으로 생성합니다. **컷** 엔티티는 Hiero 시퀀스에 해당하며 **컷 항목**은 시퀀스의 항목에 해당합니다. **컷**은 `hook_get_shot` 후크의 `get_shot_parent` 방식에 의해 반환될 때 상위 엔티티(기본적으로 **시퀀스**)에 링크됩니다. **컷 항목**은 **샷** 엔티티와 연결되고 내보내기 중에 생성된 리뷰 가능한 **버전**에 링크됩니다. 내보내기 후 **컷**은 {% include product %}의 **미디어** 탭 및 **RV**에서 재생할 수 있습니다. -**컷** 및 **컷 항목** 엔티티와 관련된 모든 메타데이터는 내보내기 UI에서 지정할 수 있는 *컷 유형(Cut Type)* 필드를 제외하고 Hiero에서 추정됩니다. +{% include product %} 사이트가 컷 스키마(v7.0.0 이상)를 지원하는 경우 이 앱은 {% include product %}에 해당 **컷 항목**이 있는 **컷**을 자동으로 생성합니다. **컷** 엔티티는 Hiero 시퀀스에 해당하며 **컷 항목**은 시퀀스의 항목에 해당합니다. **컷**은 `hook_get_shot` 후크의 `get_shot_parent` 방식에 의해 반환될 때 상위 엔티티(기본적으로 **시퀀스**)에 링크됩니다. **컷 항목**은 **샷** 엔티티와 연결되고 내보내기 중에 생성된 리뷰 가능한 **버전**에 링크됩니다. 내보내기 후 **컷**은 {% include product %}의 **미디어** 탭 및 **RV**에서 재생할 수 있습니다. + +**컷** 및 **컷 항목** 엔티티와 관련된 모든 메타데이터는 내보내기 UI에서 지정할 수 있는 _컷 유형(Cut Type)_ 필드를 제외하고 Hiero에서 추정됩니다. ![cut_type](../images/apps/hiero-cut_type.png) @@ -186,4 +194,5 @@ Hiero 시퀀스의 이름이 시퀀스 이름으로 사용되며 샷의 컷 정 또한 컷 스키마는 리타임된 클립을 처리하지 않습니다. 리타임된 클립을 내보낼 때 디버그 경고가 기록됩니다. ### 대체 샷 계층 + 표준 시퀀스 > 샷 계층에서 작업하지 않지만 에피소드 및/또는 씬을 사용하는 스튜디오의 경우에는 `hiero_get_shot` 후크를 통해 스튜디오에서 사용 중인 모든 샷 계층에서 작동하도록 앱을 구성할 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md index 738a7e086..a9bd47bfc 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md @@ -14,11 +14,18 @@ lang: ko 일반적으로 Nuke용 {% include product %} 엔진 구성에 다음을 추가함으로써 Hiero의 타임라인 및 스프레드시트 메뉴에 추가하여 이 앱을 구성합니다. ```yaml - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} +timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } +spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } ``` - - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md index 918839224..e42b3d0ed 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md @@ -7,7 +7,7 @@ lang: ko # Houdini Alembic Node -Houdini Alembic Node 앱은 alembic 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Alembic Output 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. +Houdini Alembic Node 앱은 alembic 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Alembic Output 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. ## 일반적인 사용 diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md index 4bfd60a5f..f3ea38821 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md @@ -7,7 +7,7 @@ lang: ko # Houdini Mantra Node -Houdini Mantra Node 앱은 렌더 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Mantra 출력 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. +Houdini Mantra Node 앱은 렌더 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Mantra 출력 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. ## 일반적인 사용 @@ -56,4 +56,4 @@ Houdini Mantra Node 앱은 렌더 파일이 출력되는 위치를 쉽게 표준 output_extra_plane_template: houdini_shot_local_extra_plane -출력 프로파일을 사용하여 `color` 필드를 통해 노드 모양을 변경하고 `settings` 필드에 해당 매개변수와 일치하는 키/값 쌍을 제공하여 기본 Alembic 노드에서 개별 매개변수를 조정할 수 있습니다. 마지막으로, `output_*_template` 필드는 Mantra 렌더러에 의해 디스크에 기록된 파일의 출력 경로를 구동합니다. \ No newline at end of file +출력 프로파일을 사용하여 `color` 필드를 통해 노드 모양을 변경하고 `settings` 필드에 해당 매개변수와 일치하는 키/값 쌍을 제공하여 기본 Alembic 노드에서 개별 매개변수를 조정할 수 있습니다. 마지막으로, `output_*_template` 필드는 Mantra 렌더러에 의해 디스크에 기록된 파일의 출력 경로를 구동합니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md index a25cab681..e1dedf422 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md @@ -6,4 +6,3 @@ lang: ko --- # Mari Project Manager - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md index 572fc1997..3b3f1be87 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md @@ -12,8 +12,8 @@ lang: ko ![스크린샷](../images/apps/multi-about-menu.png) ## 모든 앱 다시 로드 -전체 환경을 다시 로드하는 편리한 버튼이 있습니다. 이 버튼은 개발을 수행하고 일부 코드를 변경할 때 유용합니다. Maya나 Nuke를 다시 시작할 필요 없이 다시 로드 버튼만 누르면 됩니다. +전체 환경을 다시 로드하는 편리한 버튼이 있습니다. 이 버튼은 개발을 수행하고 일부 코드를 변경할 때 유용합니다. Maya나 Nuke를 다시 시작할 필요 없이 다시 로드 버튼만 누르면 됩니다. 다시 로드 기능 외에도 이 앱은 현재 작업 영역과 현재 로드된 모든 앱의 분할 정보를 표시합니다. @@ -31,9 +31,8 @@ lang: ko 현재 실행 중인 모든 앱에 대한 뷰로, 해당 버전 및 설명이 함께 표시됩니다. 앱을 두 번 클릭하면 해당 앱에 대한 문서 페이지가 열립니다. - ## 현재 환경 ![스크린샷](../images/apps/multi-about-about3.png) -현재 로드된 환경 파일 및 엔진 뷰입니다. 이 뷰는 디버깅 목적에 유용할 수 있습니다. \ No newline at end of file +현재 로드된 환경 파일 및 엔진 뷰입니다. 이 뷰는 디버깅 목적에 유용할 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md index 2ae21a0fb..fe87eed76 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md @@ -128,7 +128,6 @@ for item in breakdown_items: path = item["template"].apply_fields(item["fields"]) ``` - ### 항목의 가장 높은 버전 계산 ``` @@ -139,7 +138,6 @@ highest_version = app_object.compute_highest_version(template, fields) 이렇게 하면 디스크에서 스캔을 수행하여 가장 높은 버전을 확인합니다. 방식은 디스크에서 발견된 가장 높은 버전 번호를 반환합니다. 자세한 정보는 아래의 사용 예를 참조하십시오. - ### 씬 항목 업데이트 ``` @@ -150,9 +148,6 @@ app_object.update_item(node_type, node_name, template, fields) 이 방식은 Breakdown UI에서 업데이트를 실행하는 것과 비슷합니다. 실제 업데이트 호출은 DCC 특정 로직을 처리하는 후크에 디스패치됩니다. 자세한 정보는 아래의 사용 예를 참조하십시오. - - - ### Breakdown API 예 다음은 씬 분할을 검색하여 최신 버전을 사용하지 않는 모든 항목을 업데이트하는 방법을 보여 주는 예입니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md index aaa6eaf63..eb8fe5695 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md @@ -19,16 +19,16 @@ lang: ko 현재 지원되는 응용프로그램 및 엔진은 다음과 같습니다. -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame +- 3DSMax +- Hiero +- Maya +- MotionBuilder +- Nuke +- Photoshop +- Mari +- Houdini +- Softimage +- Flame ### 시작 시 명령행 인수 사용 @@ -43,15 +43,16 @@ launch_nuke: extra: {} hook_app_launch: default hook_before_app_launch: default - linux_args: '--nukex' - linux_path: '@nuke_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.15} - mac_args: '--nukex' - mac_path: '@nuke_mac' + linux_args: "--nukex" + linux_path: "@nuke_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.2.15 } + mac_args: "--nukex" + mac_path: "@nuke_mac" menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' + windows_args: "--nukex" + windows_path: "@nuke_windows" ``` + ---접기--- ### 시작 시 환경 변수 설정 및 동작 자동화 @@ -66,7 +67,7 @@ launch_nuke: ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # Example to show how to set env vars on Maya launch @@ -79,6 +80,7 @@ def execute(self, **kwargs): # with $PYTHONPATH if already defined in your pipeline os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" ``` + ---접기--- 'before_app_launch'를 사용하여 {% include product %} 업데이트를 비롯한 다른 동작을 자동화할 수도 있습니다. 예를 들어 다음과 같이 시작 앱이 실행될 때마다 태스크 상태를 업데이트하도록(이 경우 "진행 중"으로) 구성할 수 있습니다(태스크에서 시작하는 경우). @@ -89,7 +91,7 @@ def execute(self, **kwargs): ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # If there is a Task in the context, set its status to 'ip' @@ -101,6 +103,7 @@ def execute(self, **kwargs): } self.parent.shotgun.update("Task", task_id, data) ``` + ---접기--- 상상할 수 있듯이 여기에는 많은 가능성이 있으며, 시작 앱은 파이프라인에 필요한 유연성을 제공하는 것을 목표로 합니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md index 0608076a7..2de4c87f6 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md @@ -198,15 +198,17 @@ action_mappings: 다음 방식은 앱 인스턴스에서 사용할 수 있습니다. ### open_publish() + '파일 열기' 스타일 버전의 Loader를 제공하여 사용자가 게시를 선택할 수 있습니다. 그러면 선택한 게시가 반환됩니다. 이 모드에서 실행할 때 앱에 구성된 일반 액션은 허용되지 않습니다. app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) **매개변수 및 반환값** -* `str` **title** - 게시 열기 대화상자에 표시할 제목입니다. -* `str` **action** - '열기' 버튼에 사용할 액션 이름입니다. -* `list` **publish_types** - 사용 가능한 게시 목록을 필터링하는 데 사용할 게시 유형 목록입니다. 이 값이 비어 있거나 None인 경우 모든 게시가 표시됩니다. -* **반환값:** 사용자가 선택한 {% include product %} 엔티티 사전 목록을 반환합니다. + +- `str` **title** - 게시 열기 대화상자에 표시할 제목입니다. +- `str` **action** - '열기' 버튼에 사용할 액션 이름입니다. +- `list` **publish_types** - 사용 가능한 게시 목록을 필터링하는 데 사용할 게시 유형 목록입니다. 이 값이 비어 있거나 None인 경우 모든 게시가 표시됩니다. +- **반환값:** 사용자가 선택한 {% include product %} 엔티티 사전 목록을 반환합니다. **예** diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md index 2f04ce6fe..705d5daa4 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md @@ -45,16 +45,16 @@ Python 콘솔은 각각 편집기 및 출력 창을 포함하고 있는 탭을 ### 출력 -* **지우기(Clear)** - 출력 브라우저의 컨텐츠를 지웁니다. -* **에코(Echo)** - 출력 브라우저에서 실행된 명령의 에코를 토글합니다. +- **지우기(Clear)** - 출력 브라우저의 컨텐츠를 지웁니다. +- **에코(Echo)** - 출력 브라우저에서 실행된 명령의 에코를 토글합니다. ### 편집기 -* **실행(Execute)** - 편집기의 컨텐츠를 실행합니다. -* **저장(Save)** - 편집기의 현재 컨텐츠를 파일에 저장합니다. -* **열기(Open)** - 파일을 편집기에서 엽니다. -* **지우기(Clear)** - 편집기의 컨텐츠를 지웁니다. -* **행(Lines)** - 현재 탭의 행 번호를 토글합니다. +- **실행(Execute)** - 편집기의 컨텐츠를 실행합니다. +- **저장(Save)** - 편집기의 현재 컨텐츠를 파일에 저장합니다. +- **열기(Open)** - 파일을 편집기에서 엽니다. +- **지우기(Clear)** - 편집기의 컨텐츠를 지웁니다. +- **행(Lines)** - 현재 탭의 행 번호를 토글합니다. ## 전역 @@ -62,10 +62,10 @@ Python 콘솔은 각각 편집기 및 출력 창을 포함하고 있는 탭을 일부 {% include product %}/툴킷 전역은 [셸용 {% include product %} 엔진](https://support.shotgunsoftware.com/entries/95441287)에서 사용할 수 있는 항목과 유사하게 콘솔에 사전 정의되어 있습니다. -* Tk API 핸들은 `tk` 변수를 통해 사용할 수 있습니다. -* {% include product %} API 핸들은 `shotgun` 변수를 통해 사용할 수 있습니다. -* 현재 컨텍스트는 `context` 변수에 저장됩니다. -* 셸 엔진은 `engine` 변수를 통해 액세스할 수 있습니다. +- Tk API 핸들은 `tk` 변수를 통해 사용할 수 있습니다. +- {% include product %} API 핸들은 `shotgun` 변수를 통해 사용할 수 있습니다. +- 현재 컨텍스트는 `context` 변수에 저장됩니다. +- 셸 엔진은 `engine` 변수를 통해 액세스할 수 있습니다. ## 외부 소스 @@ -75,13 +75,13 @@ Python 콘솔은 각각 편집기 및 출력 창을 포함하고 있는 탭을 ## 핫키 -* 선택 항목 실행은 `Ctrl + Enter` -* 새 탭 생성은 `Ctrl + T` -* 탭 탐색은 `Ctrl + Shift + [` 또는 `Ctrl + Shift + ]` -* 입력/출력 글꼴 크기 조정은 `Ctrl + Wheel` +- 선택 항목 실행은 `Ctrl + Enter` +- 새 탭 생성은 `Ctrl + T` +- 탭 탐색은 `Ctrl + Shift + [` 또는 `Ctrl + Shift + ]` +- 입력/출력 글꼴 크기 조정은 `Ctrl + Wheel` **참고:** 일부 DCC에서는 핫키를 사용하지 못할 수도 있습니다. ## 기타 참고 사항 -* 일부 이전 버전의 DCC에서는 세션을 닫을 때 Python 콘솔을 연 채로 두면 충돌이 발생할 수도 있습니다. 이는 일부 이전 버전의 PySide에서 발생하는 버그일 수 있습니다. 최신 버전의 PySide와 번들로 제공되는 보다 최신 버전의 DCC에서는 종료 시 충돌이 나타나지 않습니다. 최신 DCC 릴리즈 버전에서 이 문제가 발생하면 자세히 조사할 수 있도록 [티켓을 제출](https://support.shotgunsoftware.com/hc/en-us/requests/new)해 주십시오. \ No newline at end of file +- 일부 이전 버전의 DCC에서는 세션을 닫을 때 Python 콘솔을 연 채로 두면 충돌이 발생할 수도 있습니다. 이는 일부 이전 버전의 PySide에서 발생하는 버그일 수 있습니다. 최신 버전의 PySide와 번들로 제공되는 보다 최신 버전의 DCC에서는 종료 시 충돌이 나타나지 않습니다. 최신 DCC 릴리즈 버전에서 이 문제가 발생하면 자세히 조사할 수 있도록 [티켓을 제출](https://support.shotgunsoftware.com/hc/en-us/requests/new)해 주십시오. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md index 028fee172..49aa3a9cc 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md @@ -47,16 +47,16 @@ if review_submission_app: `render_and_submit_version`에 전달해야 하는 인수는 다음과 같습니다. -* `template`: 게시할 파일의 위치를 정의하는 템플릿 -* `fields`: 템플릿을 입력하는 데 사용할 필드 -* `first_frame`: 처리할 이미지 시퀀스의 첫 번째 프레임 -* `last_frame`: 처리할 이미지 시퀀스의 마지막 프레임 -* `sg_publishes`: 버전을 링크할 {% include product %} 게시된 파일 객체의 목록 -* `sg_task`: 버전을 링크할 {% include product %} 태스크 링크 사전 -* `comment`: 버전 설명에 추가할 텍스트 -* `thumbnail_path`: 영상이 {% include product %}에 업로드되지 않을 경우 버전에 사용할 썸네일 경로(구성에서 설정) -* `progress_cb`: 진행률을 보고하기 위한 콜백. `callback(percent, message)` 형식이어야 합니다. -* `color_space`: 입력 프레임이 있는 색상 공간. Nuke에서 쓰기 노드의 색상 영역 노브에 있는 열거 값 중 하나입니다. +- `template`: 게시할 파일의 위치를 정의하는 템플릿 +- `fields`: 템플릿을 입력하는 데 사용할 필드 +- `first_frame`: 처리할 이미지 시퀀스의 첫 번째 프레임 +- `last_frame`: 처리할 이미지 시퀀스의 마지막 프레임 +- `sg_publishes`: 버전을 링크할 {% include product %} 게시된 파일 객체의 목록 +- `sg_task`: 버전을 링크할 {% include product %} 태스크 링크 사전 +- `comment`: 버전 설명에 추가할 텍스트 +- `thumbnail_path`: 영상이 {% include product %}에 업로드되지 않을 경우 버전에 사용할 썸네일 경로(구성에서 설정) +- `progress_cb`: 진행률을 보고하기 위한 콜백. `callback(percent, message)` 형식이어야 합니다. +- `color_space`: 입력 프레임이 있는 색상 공간. Nuke에서 쓰기 노드의 색상 영역 노브에 있는 열거 값 중 하나입니다. ### 메뉴 항목으로 사용 @@ -65,17 +65,18 @@ if review_submission_app: 이 모드는 현재 뷰포트의 빠른 스냅샷을 만들고 이를 버전 초안으로 {% include product %} Create에 보냅니다. 그런 다음 사용자는 주석, 텍스트 또는 비교 노트를 추가해 {% include product %} Create 내에서 리뷰 제출물을 확장할 수 있습니다. 이 기능을 컨텍스트에 추가하려면 다음을 수행해야 합니다. -* `display_name` 필드가 메뉴 항목에 포함되도록 설정합니다. -* DCC에서 미디어를 렌더링하는 방법을 알려주는 `render_media_hook` 필드를 후크로 설정합니다(tk-photoshopcc 및 tk-maya에는 기본 구현이 있음). -* `submitter_hook` 필드를 `{self}/submitter_create.py`로 설정합니다. + +- `display_name` 필드가 메뉴 항목에 포함되도록 설정합니다. +- DCC에서 미디어를 렌더링하는 방법을 알려주는 `render_media_hook` 필드를 후크로 설정합니다(tk-photoshopcc 및 tk-maya에는 기본 구현이 있음). +- `submitter_hook` 필드를 `{self}/submitter_create.py`로 설정합니다. 다음과 같습니다. ```yaml tk-multi-reviewsubmission: display_name: Send for review - render_media_hook: '{self}/render_media.py:{self}/{engine_name}/render_media.py' - submitter_hook: '{self}/submitter_create.py' + render_media_hook: "{self}/render_media.py:{self}/{engine_name}/render_media.py" + submitter_hook: "{self}/submitter_create.py" location: type: app_store name: tk-multi-reviewsubmission diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md index e4a43b853..1ac128bbc 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md @@ -35,6 +35,7 @@ tk-multi-setframerange_handles: sg_out_frame_field: sg_handle_out location: "@apps.tk-multi-setframerange.location" ``` + 그러면 각 항목이 {% include product %} 메뉴에 별도의 옵션으로 표시됩니다. ![여러 인스턴스](../images/apps/multi-setframerange-multiple_instances.png) @@ -45,4 +46,4 @@ tk-multi-setframerange_handles: 현재 씬 프레임 범위를 가져오거나 프레임 범위를 설정하기 위한 소프트웨어별 로직은 프레임 작업 후크에서 처리됩니다. 새 엔진에 대한 지원을 추가하거나 해당 동작의 구현 방법을 변경하려는 경우 `hook_frame_operation` 앱 속성을 설정하고 고유의 가져오기(get) 및 설정(set) 로직을 구현하여 프레임 작업 후크를 인수할 수 있습니다. -참고: 이는 앱 `v0.4.0` 버전의 새로운 기능입니다. \ No newline at end of file +참고: 이는 앱 `v0.4.0` 버전의 새로운 기능입니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md index 4f13513da..163821c4a 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md @@ -29,7 +29,6 @@ lang: ko - 일부 값이 설정되지 않은 경우에는 폴백을 정의할 수 있습니다. {% include product %} 버전의 경우 제작자가 아티스트 대신 버전을 제출하는 워크플로우를 지원하기 위해 `artist` 필드가 `created_by` 필드보다 우선권을 가집니다. 이 경우, 버전은 제작자에 의해 생성되지만 `artist` 필드는 아티스트로 설정됩니다. 그러나 항상 그렇지는 않습니다. 아티스트가 자신의 작업을 제출하는 파이프라인에 아티스트를 비워 두는 경우도 있습니다. 따라서 버전을 표시할 때에는 `artist` 필드를 먼저 확인하고, 이 필드가 설정되어 있지 않은 경우에는 `created_by` 필드로 폴백할 수 있도록 하는 것이 좋습니다. 이 작업은 `{field1|field2}` 구문을 사용하여 수행할 수 있습니다(예: `Created By: {artist|created_by}`). 이 구문을 선택적 필드(예: `{[Created By: ]artist|created_by}`)와 결합할 수도 있습니다. - 이 후크에는 다음 방식이 포함됩니다. **목록에 표시되는 항목 제어** @@ -72,16 +71,16 @@ lang: ko ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 위의 예에서는 `reference`, `import`, `texture_node`, `assign_task` 및 `play_in_rv` 액션을 사용합니다. 다음으로 다양한 {% include product %} 객체 및 조건에 액션을 매핑합니다. 예를 들어 모든 Maya 씬 게시 유형에 `import` 액션을 표시하려고 합니다. @@ -95,7 +94,7 @@ action_mappings: 패널은 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. 기본 구성 설정에서 다음과 같은 형식을 볼 수 있습니다. ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` `{self}` 키워드를 통해 툴킷은 앱의 `hooks` 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 `{config}/panel/maya_actions.py`로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 `hooks/panel/maya_actions.py`라는 후크를 사용하게 됩니다. @@ -182,12 +181,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md index 8b4311359..f3ff7f89f 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md @@ -65,12 +65,12 @@ lang: ko ```yaml maya_extension: - type: str - choices: - ma: Maya Ascii (.ma) - mb: Maya Binary (.mb) - default: ma - alias: extension + type: str + choices: + ma: Maya Ascii (.ma) + mb: Maya Binary (.mb) + default: ma + alias: extension ``` `maya_extension`은 토큰의 이름입니다. `choices`는 드롭다운에 표시될 파일 형식 사전입니다. 키(`ma` 및 `mb`)는 이 템플릿 토큰이 가질 수 있는 가능한 값입니다. 값(`Maya Ascii (.ma)` 및 `Maya Binary (.mb)`)은 툴킷 응용프로그램에서 사용할 수 있는 UI 설명입니다. `alias`는 작업 파일 응용프로그램에 필요한 힌트입니다. 응용프로그램에 이 토큰은 확장자이며 드롭다운 위젯에 표시되어야 함을 알려 줍니다. @@ -79,8 +79,8 @@ maya_extension: ```yaml maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' + definition: "@shot_root/work/maya/{name}.v{version}.{maya_extension}" + root_name: "primary" ``` ## 컨텍스트 변경 대화상자 @@ -100,18 +100,18 @@ maya_shot_work: 아래 예는 에셋 및 샷에 대한 태스크를 각각 표시하는 두 개의 탭을 정의합니다. ```yaml - - caption: Assets Tasks - entity_type: Task - step_filter_on: Asset - filters: +- caption: Assets Tasks + entity_type: Task + step_filter_on: Asset + filters: - [entity, type_is, Asset] - hierarchy: [entity.Asset.sg_asset_type, entity, step, content] - - caption: Shots Tasks - entity_type: Task - step_filter_on: Shot - filters: + hierarchy: [entity.Asset.sg_asset_type, entity, step, content] +- caption: Shots Tasks + entity_type: Task + step_filter_on: Shot + filters: - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] + hierarchy: [entity.Shot.sg_sequence, entity, step, content] ``` ![단계 필터](../images/apps/multi-workfiles2-step_filter.png) @@ -119,13 +119,14 @@ maya_shot_work: ## 유예 쿼리 성능 향상을 위해 엔티티 트리를 빌드하는 과정을 두 단계의 쿼리로 나눌 수 있습니다. + - 첫 번째 쿼리는 {% include product %}에서 레코드를 검색하여 트리 상단을 채우는 데 사용됩니다. - 두 번째 쿼리를 사용하여 사용자가 트리를 확장할 때 하위를 검색합니다. 다음 설정을 사용하면 앱이 시작될 때 {% include product %}에서 에셋 및 샷이 검색됩니다. 특정 에셋 또는 샷에 링크된 태스크는 트리 뷰에서 이 에셋 또는 샷을 선택하거나 확장한 경우에만 검색됩니다. ```yaml - entities: +entities: - caption: Assets entity_type: Asset hierarchy: [sg_asset_type, code] diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md index e2c4181ce..bd62d76b9 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md @@ -33,4 +33,3 @@ Quickreview 앱을 사용하면 {% include product %}에서 리뷰를 위해 Nuk ## 커스터마이즈 대부분의 리뷰 제출 특성은 후크를 사용하여 조정할 수 있습니다. 설명서는 [여기](http://developer.shotgridsoftware.com/tk-nuke-quickreview)에서 찾을 수 있습니다. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md index 4604ddbb0..6551de536 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md @@ -7,7 +7,7 @@ lang: ko # Nuke Write Node -Nuke Write Node 앱은 이미지를 렌더링할 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Write node를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. 경로 외에도 구성에 따라 사용할 렌더 형식이 결정됩니다. +Nuke Write Node 앱은 이미지를 렌더링할 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Write node를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. 경로 외에도 구성에 따라 사용할 렌더 형식이 결정됩니다. ## 일반적인 사용 @@ -15,7 +15,7 @@ Nuke Write Node 앱은 이미지를 렌더링할 위치를 쉽게 표준화할 ![Write Node](../images/apps/nuke-writenode-write_node_creation.png) -직접 경로를 입력하는 대신 출력 이름을 지정하면 툴킷이 나머지 경로를 자동으로 계산합니다. UI에서 계산된 경로를 보고 *파일 시스템에 표시(Show in File System)* 버튼을 클릭하여 디스크의 위치를 열 수 있습니다. 렌더가 작성되는 위치는 툴킷 구성에 따라 다릅니다. +직접 경로를 입력하는 대신 출력 이름을 지정하면 툴킷이 나머지 경로를 자동으로 계산합니다. UI에서 계산된 경로를 보고 _파일 시스템에 표시(Show in File System)_ 버튼을 클릭하여 디스크의 위치를 열 수 있습니다. 렌더가 작성되는 위치는 툴킷 구성에 따라 다릅니다. 렌더 버전이 지정되고 버전 번호의 경우 항상 Multi Publish를 사용하여 게시할 때 자동으로 증가되는 현재 Nuke 스크립트 버전을 따릅니다. @@ -29,7 +29,7 @@ Write Node는 현재 경로를 캐시하므로 파일이 툴킷 작업 영역 ## 다른 Write Node 프로파일 추가 -{% include product %} Write Node는 Nuke의 기본 제공 쓰기 노드를 래핑하므로 Nuke에서 지원하는 모든 형식을 앱에서 사용할 수 있으며 구성을 통해 노드를 더 추가할 수 있습니다. 가장 간단한 시작 방법은 원하는 매개변수로 간단한 Nuke Write node를 설정하는 것입니다. 예를 들어 LZW 압축을 사용하는 16비트 tif를 작성한다고 가정해 보겠습니다. 텍스트 편집기에서 Nuke 스크립트를 보면 쓰기 노드는 다음과 같습니다. +{% include product %} Write Node는 Nuke의 기본 제공 쓰기 노드를 래핑하므로 Nuke에서 지원하는 모든 형식을 앱에서 사용할 수 있으며 구성을 통해 노드를 더 추가할 수 있습니다. 가장 간단한 시작 방법은 원하는 매개변수로 간단한 Nuke Write node를 설정하는 것입니다. 예를 들어 LZW 압축을 사용하는 16비트 tif를 작성한다고 가정해 보겠습니다. 텍스트 편집기에서 Nuke 스크립트를 보면 쓰기 노드는 다음과 같습니다. ``` Write { @@ -72,7 +72,7 @@ tk-nuke-writenode: ![새로 추가](../images/apps/nuke-writenode-write_node_add_new.png) -__참고:__ 프로젝트 구성에서 찾을 수 있는 `templates.yml` 파일(`/config/core/templates.yml`)에 새 템플릿(예: nuke_shot_render_mono_tif)을 추가해야 합니다. +**참고:** 프로젝트 구성에서 찾을 수 있는 `templates.yml` 파일(`/config/core/templates.yml`)에 새 템플릿(예: nuke_shot_render_mono_tif)을 추가해야 합니다. 0.5 압축 및 4:2:2 하위 샘플링을 사용하여 JPEG로 출력하는 {% include product %} Write Node를 추가하는 방법을 보여 주는 또 다른 예가 아래에 나와 있습니다. 이 프로파일은 또한 "promote_write_knobs" 옵션을 사용하여 jpeg 품질 노브를 기즈모의 사용자 인터페이스로 승격합니다. 이렇게 하면 프로파일이 품질의 기본값을 설정할 수 있지만 사용자에게 직접 설정을 변경할 수 있는 슬라이더도 제공합니다. @@ -85,7 +85,7 @@ tk-nuke-writenode: render_template: nuke_shot_render_jpeg proxy_publish_template: null proxy_render_template: null - settings: {_jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2"} + settings: { _jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2" } tank_type: Rendered Image tile_color: [] promote_write_knobs: [_jpeg_quality] @@ -105,7 +105,7 @@ tk-nuke-writenode: #### 변환 메뉴 옵션 활성화 -환경 yml 파일에는 앱 설정에 추가할 수 있는 `show_convert_actions`라는 구성 옵션이 있습니다. `show_convert_actions: True` 설정을 추가할 경우 *SG Write Node를 Write Node로 변환..*(Convert SG Write Nodes to Write Nodes...) 및 *Write Node를 다시 SG 형식으로 변환...*(Convert Write Nodes back to SG format...) 메뉴 옵션을 사용할 수 있습니다. +환경 yml 파일에는 앱 설정에 추가할 수 있는 `show_convert_actions`라는 구성 옵션이 있습니다. `show_convert_actions: True` 설정을 추가할 경우 _SG Write Node를 Write Node로 변환.._(Convert SG Write Nodes to Write Nodes...) 및 _Write Node를 다시 SG 형식으로 변환..._(Convert Write Nodes back to SG format...) 메뉴 옵션을 사용할 수 있습니다. ![write node 변환 메뉴 옵션](../images/apps/nuke-writenode-write_node_convert_menu_options.png) @@ -265,7 +265,7 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* **반환값:** `list` - 씬에서 발견되는 툴킷 쓰기 노드 목록입니다. +- **반환값:** `list` - 씬에서 발견되는 툴킷 쓰기 노드 목록입니다. **예** @@ -284,10 +284,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 노드의 이름입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 노드의 이름입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -304,10 +305,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 구성에 정의된 대로 이 쓰기 노드에 대한 프로파일 이름입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 구성에 정의된 대로 이 쓰기 노드에 대한 프로파일 이름입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -324,10 +326,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드의 렌더 경로입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 이 노드의 렌더 경로입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -344,10 +347,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:**`list` - 이 쓰기 노드에 의해 렌더링된 이미지 파일의 목록입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:**`list` - 이 쓰기 노드에 의해 렌더링된 이미지 파일의 목록입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -364,10 +368,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 렌더 템플릿입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `template` - 이 노드를 사용하도록 구성된 렌더 템플릿입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -384,10 +389,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 게시 템플릿입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `template` - 이 노드를 사용하도록 구성된 게시 템플릿입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -404,10 +410,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드의 프록시 렌더 경로입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 이 노드의 프록시 렌더 경로입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -424,10 +431,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `list` - 이 쓰기 노드에 의해 렌더링된 프록시 이미지 파일의 목록입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `list` - 이 쓰기 노드에 의해 렌더링된 프록시 이미지 파일의 목록입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -446,10 +454,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 렌더 템플릿입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 렌더 템플릿입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -468,10 +477,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 게시 템플릿입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 게시 템플릿입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -488,10 +498,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드를 사용하도록 구성된 게시된 파일 형식입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 이 노드를 사용하도록 구성된 게시된 파일 형식입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -508,10 +519,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 디스크상의 렌더링된 썸네일 이미지에 대한 경로입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `string` - 디스크상의 렌더링된 썸네일 이미지에 대한 경로입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -528,10 +540,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `None` - 값이 반환되지 않습니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `None` - 값이 반환되지 않습니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -548,10 +561,11 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 **매개변수 및 반환값** -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `bool` - 렌더 경로가 잠겨 있으면 True이고, 그렇지 않으면 False입니다. +- `node` **노드** - 쿼리할 쓰기 노드입니다. +- **반환값:** `bool` - 렌더 경로가 잠겨 있으면 True이고, 그렇지 않으면 False입니다. **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -562,11 +576,12 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 ### convert_to_write_nodes() -현재 스크립트에 있는 모든 {% include product %} Write node를 일반 Nuke Write node로 변환합니다. 추가 툴킷 정보는 'tk_*'라는 사용자 노브에 저장됩니다. +현재 스크립트에 있는 모든 {% include product %} Write node를 일반 Nuke Write node로 변환합니다. 추가 툴킷 정보는 'tk\_\*'라는 사용자 노브에 저장됩니다. `None` convert_to_write_nodes() **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -581,6 +596,7 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 `None` convert_from_write_nodes() **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -590,11 +606,12 @@ Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 ### process_placeholder_nodes() -모든 자리 표시자 노드를 전체 {% include product %} Write node로 변환합니다. 이 방식은 주로 Nuke에서 스크립트를 처음 열 때 Hiero 툴킷 스크립트 내보내기로 만든 자리 표시자 노드를 변환하는 데 사용됩니다. +모든 자리 표시자 노드를 전체 {% include product %} Write node로 변환합니다. 이 방식은 주로 Nuke에서 스크립트를 처음 열 때 Hiero 툴킷 스크립트 내보내기로 만든 자리 표시자 노드를 변환하는 데 사용됩니다. `None` process_placeholder_nodes() **예** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md index 7a8acd30d..87aa1d8de 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md @@ -12,10 +12,9 @@ lang: ko 이 앱은 {% include product %}를 사용하여 Sgtk Core API의 파일 시스템 생성 API 방식을 후크합니다. 덕분에 폴더 생성이 쉬워집니다. 샷 또는 에셋 집합을 선택하고 폴더 만들기(Create Folders) 액션을 클릭하기만 하면 됩니다. ## 작동 방식 + 구성에 따라 하나 이상의 태스크, 샷 또는 다른 엔티티를 선택하기만 하면 됩니다. 이제 액션(Actions) 메뉴에서 폴더 만들기(Create Folders)를 선택합니다. 프로세스가 완료되면 생성된 폴더 수에 대한 보고서가 제공됩니다. ![{% include product %}에서 폴더 1 생성](../images/apps/shotgun-folders-create_folders_1.png) ![{% include product %}에서 폴더 2 생성](../images/apps/shotgun-folders-create_folders_2.png) - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md index 0aa4a9611..d12fc13d2 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md @@ -10,10 +10,9 @@ lang: ko Launch Folder 앱은 {% include product %}에서 파일 시스템으로 이동할 수 있는 {% include product %} 유틸리티입니다. ## 작동 방식 + Launch Folder 앱을 사용하면 {% include product %}에서 파일 시스템으로 이동할 수 있습니다. 샷, 에셋 및 시퀀스와 같은 {% include product %} 엔티티 유형에 등록할 수 있습니다. 활성화되면 액션(Action) 메뉴에 표시됩니다. ![fs에 시작 폴더가 표시됨](../images/apps/shotgun-launchfoldershow_in_fs.png) {% include product %}에서 하나 또는 여러 항목을 선택할 수 있으며 메뉴 액션을 클릭하면 표준 파일 브라우저가 시작됩니다(Windows의 탐색기, Mac의 Finder 등). - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md index 4fd7e68d3..efbb80630 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md @@ -11,4 +11,4 @@ lang: ko ![작업 FS](../images/apps/shotgun-launchpublish-open_assoc.png) -이 앱을 사용하면 여러 파일에 대해 다양한 앱 실행 시퀀스를 간편하게 구성할 수 있으며 이 모든 작업은 후크 내에서 수행됩니다. 또한 뷰어(예: RV)에 이미지 시퀀스를 디스패치합니다. 후크에서 인식되지 않는 파일은 OS 수준의 앱으로 디스패치됩니다. \ No newline at end of file +이 앱을 사용하면 여러 파일에 대해 다양한 앱 실행 시퀀스를 간편하게 구성할 수 있으며 이 모든 작업은 후크 내에서 수행됩니다. 또한 뷰어(예: RV)에 이미지 시퀀스를 디스패치합니다. 후크에서 인식되지 않는 파일은 OS 수준의 앱으로 디스패치됩니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md b/docs/ko/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md index 4b4dbb4a5..255bf9fb8 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md @@ -13,8 +13,6 @@ lang: ko {% include info title="참고" content="이 문서는 환경 구성 파일에 대한 참조 자료로 사용될 수 있으며 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)에서는 구성 설정 편집에 대한 단계별 예제를 확인할 수 있습니다." %} - - ## 환경이란? {% include product %} 툴킷 플랫폼은 스튜디오 파이프라인을 구축하는 데 일반적으로 사용되는 컨텐츠 작성 소프트웨어를 위해 완전히 커스터마이즈 가능한 통합 세트를 제공합니다. 프로젝트 구성 내에서 통합이 있는 소프트웨어 패키지, 각각 사용 가능한 툴킷 앱, 각 앱에 대한 옵션을 지정하여 스튜디오의 요구 사항에 맞게 아티스트 워크플로우를 구축할 수 있습니다. @@ -73,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -93,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### 엔진 블록 @@ -106,16 +104,15 @@ engines: `location`은 모든 번들에 필요한 특수한 설정입니다. `apps` 설정은 엔진에 대해 정의된 모든 앱의 목록으로, 각 앱에는 자체 설정이 있습니다. 이 예에서는 엔진에 대해 하나의 앱, `tk-multi-workfiles2`만 정의되어 있습니다. - ### 위치 디스크립터 모든 툴킷 번들에는 번들의 *디스크립터*라고 불리는 `location` 설정이 있습니다. 디스크립터를 통해 툴킷은 지정된 번들의 위치를 파악하고 해당 유형에 따라 직접 액세스할지 아니면 로컬로 캐시할지 여부를 파악합니다. 툴킷 번들을 가져올 수 있는 위치는 {% include product %} 앱 스토어, git 리포지토리, 디스크의 경로 또는 {% include product %} 사이트에 업로드된 ZIP 파일 등입니다. 이러한 각 위치에 해당하는 디스크립터 유형이 있으며 여기에는 해당 유형과 관련된 설정이 포함됩니다. 위 예제의 `tk-maya` 엔진에 대한 디스크립터는 다음과 같습니다. ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` 이 예는 `app_store` 유형의 디스크립터로, 툴킷이 {% include product %} 앱 스토어에서 지정된 번들을 가져오도록 합니다. `app_store` 유형의 디스크립터에는 `name` 및 `version` 설정이 있습니다. @@ -123,9 +120,9 @@ engines: 한편, 커스텀 번들을 개발 중이고 스튜디오의 특정 워크플로우에 대한 툴킷 앱을 작성 중인 경우 디스크의 경로에서 직접 가져오고 싶을 수 있습니다. 이 경우 다음과 같이 `dev` 유형의 디스크립터를 사용합니다. ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` 디스크립터에는 `app_store` 디스크립터와 다른 설정이 있습니다. 다른 설정을 가져올 수 있지만 디스크에 있는 앱 위치를 가리키는 `path` 설정으로 간단하게 설정할 수 있습니다. @@ -173,16 +170,16 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` 이때 다음과 같은 몇 가지 중요 사항에 유의해야 합니다. -* 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. -* 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. -* 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. +- 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. +- 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. +- 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. 마지막 두 가지 문제점을 해결하기 위해 툴킷 구성은 *includes*를 지원합니다. @@ -192,8 +189,8 @@ engines: includes는 두 부분으로 구성됩니다. -* `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. -* 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. +- `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. +- 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. 위의 예제를 구체화하기 위해 모든 엔진에 대한 위치 디스크립터가 있는 단일 파일이 있다고 가정합니다. 이 파일을 `includes` 하위 폴더에 넣고 `engine_locations.yml`로 지정하겠습니다. @@ -211,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` 이 파일은 모든 엔진 위치에 대한 단일 소스 역할을 하며 모든 환경 구성에서 참조할 수 있습니다. 이 포함 파일을 사용할 경우 예제는 이제 다음과 같이 표시됩니다. @@ -271,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -295,10 +289,9 @@ engines: {% include info title="참고" content="기본 구성은 여기에 설명되지 않은 두 번째 중첩 수준을 사용합니다. 디스크립터 외에도 설정이 있는 모든 앱 또는 엔진에 `includes/settings`의 설정 파일(예: `includes/settings/tk-maya.yml`, `includes/settings/tk-multi-workfiles2.yml`)이 있습니다. 엔진 설정 파일에는 앱 설정 파일의 앱 설정이 포함되고 환경 구성 파일에는 엔진 설정 파일의 설정이 포함됩니다. 기본 구성의 구조에 대한 자세한 내용은 [읽어보기 파일](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)을 참조하십시오. 구성 설정 수정에 대한 자세한 내용은 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)을 참조하십시오." %} - ## 스파스 구성 -모든 툴킷 번들에는 각 기본값이 포함된 일련의 구성 설정이 있습니다. 툴킷은 *스파스* 구성을 허용하므로 환경 구성 파일(및/또는 포함 파일)에 구성 설정이 명시적으로 지정되지 않은 경우에는 번들의 기본값이 사용됩니다. +모든 툴킷 번들에는 각 기본값이 포함된 일련의 구성 설정이 있습니다. 툴킷은 _스파스_ 구성을 허용하므로 환경 구성 파일(및/또는 포함 파일)에 구성 설정이 명시적으로 지정되지 않은 경우에는 번들의 기본값이 사용됩니다. 이 예에서는 `location`을 제외하고 앱에 대한 어떤 설정도 지정하지 않았습니다. 따라서 구성의 현재 상태에서 세 개의 앱은 모든 설정에 대해 기본값을 사용합니다. 그렇다면 어떤 구성 설정을 사용할 수 있는지 어떻게 알 수 있을까요? @@ -308,8 +301,8 @@ engines: 스파스 구성의 경우 단순히 구성 파일을 보는 것만으로는 앱에 대해 사용할 수 있는 구성 설정을 바로 확인할 수 없습니다. 사용 가능한 앱 구성 설정을 확인하려면 두 가지 방법이 있습니다. -* **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://support.shotgunsoftware.com/hc/ko/articles/219033088)할 수 있습니다. [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219033088)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. -* **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `info.yml` 파일이 포함되어 있습니다. 이 파일을 번들의 *매니페스트*라고 하며 각각의 설명 및 기본값을 포함하여 번들에 대해 사용 가능한 모든 구성 설정을 정의합니다. 매니페스트는 번들의 자체 캐시(예: 파이프라인 구성 내의 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`) 또는 GitHub([Workfiles용](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))에서 찾을 수 있습니다. +- **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://support.shotgunsoftware.com/hc/ko/articles/219033088)할 수 있습니다. [앱 및 엔진 페이지](https://support.shotgunsoftware.com/hc/ko/articles/219033088)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. +- **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `info.yml` 파일이 포함되어 있습니다. 이 파일을 번들의 *매니페스트*라고 하며 각각의 설명 및 기본값을 포함하여 번들에 대해 사용 가능한 모든 구성 설정을 정의합니다. 매니페스트는 번들의 자체 캐시(예: 파이프라인 구성 내의 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`) 또는 GitHub([Workfiles용](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))에서 찾을 수 있습니다. ## 구성 설정 수정 @@ -339,13 +332,12 @@ engines: `tk-multi-workfiles2`에 대한 설정을 포함 파일에서 가져온 경우 해당 파일에서 설정을 변경해야 합니다. - ## 추가 리소스 -* [툴킷 기본 사항 안내서: 파이프라인 구성 편집](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) -* [툴킷 기본 사항 안내서: 앱 추가](../../guides/pipeline-integrations/getting-started/installing_app.md) -* [애니메이션 파이프라인 튜토리얼](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [디스크립터 참조 설명서](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [웨비나: 툴킷 관리](https://youtu.be/7qZfy7KXXX0) -* [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference) -* [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [툴킷 기본 사항 안내서: 파이프라인 구성 편집](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) +- [툴킷 기본 사항 안내서: 앱 추가](../../guides/pipeline-integrations/getting-started/installing_app.md) +- [애니메이션 파이프라인 튜토리얼](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [디스크립터 참조 설명서](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [웨비나: 툴킷 관리](https://youtu.be/7qZfy7KXXX0) +- [파일 시스템 구성 참조](https://support.shotgunsoftware.com/hc/ko/articles/219039868-Integrations-File-System-Reference) +- [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md index 2604ce777..627a76528 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md @@ -121,10 +121,10 @@ After Effects를 시작할 때마다 엔진 부트스트랩(Bootstrap) 코드는 ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 설정의 값은 구성에 설치된 앱 중 하나에서 제공하는 등록된 명령을 식별하는 사전 목록입니다. `app_instance` 키는 설치된 특정 앱을 식별하고 `name` 키는 해당 앱에서 등록된 명령의 표시 이름과 일치합니다. 위의 예에서 즐겨찾는 네 가지 명령, `tk-multi-workfiles2` 앱의 파일 열기 및 저장 대화상자와 표준 툴킷 게시 및 스냅샷 대화상자를 볼 수 있습니다. 이제 이 네 가지 명령이 즐겨찾기 쉘프에 표시됩니다. @@ -142,7 +142,6 @@ shelf_favorites: 참고: Adobe 프레임워크에 추가 환경 변수가 존재합니다. 자세한 내용은 [개발자 설명서](https://developer.shotgridsoftware.com/tk-framework-adobe/)를 참조하십시오. - ## 컨텍스트 필드 표시 후크 엔진에는 패널의 **컨텍스트 헤더** 섹션에 표시되는 필드를 제어하는 후크가 제공됩니다. 후크에서 표시되는 항목을 커스터마이즈하기 위해 재지정할 수 있는 두 가지 방식이 있습니다. @@ -164,5 +163,3 @@ shelf_favorites: ## After Effects API After Effects API에 대한 자세한 내용은 [개발자 설명서](https://developer.shotgridsoftware.com/tk-aftereffects)에서 참조하십시오. - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-alias.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-alias.md index cfc690c3c..616b212b5 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-alias.md @@ -19,7 +19,7 @@ Alias용 {% include product %} 엔진은 {% include product %} 데스크톱과 Alias용 {% include product %} 엔진이 시작되면 Alias 프로젝트가 이 엔진 설정에서 정의된 위치를 가리키도록 설정됩니다. 즉, 새 파일을 열면 프로젝트가 변경될 수도 있습니다. 파일을 기반으로 Alias 프로젝트가 설정되는 방법과 관련된 상세 정보는 템플릿 시스템을 사용하여 구성 파일에서 구성할 수 있습니다. -*** +--- # tk-alias 작업 @@ -29,7 +29,6 @@ Alias가 열리면 {% include product %} 메뉴(Alias 엔진)가 메뉴 막대 ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunOtherApps.png) - ### 파일 열기 및 저장 내 태스크(My Tasks) 및 에셋(Assets) 탭을 사용하여 할당된 모든 태스크를 보고 에셋을 찾을 수 있습니다.오른쪽에서 이 탭을 사용하여 왼쪽에 선택된 항목과 연관된 모든 파일, 작업 파일 또는 게시된 파일을 볼 수 있습니다. @@ -38,21 +37,18 @@ Alias가 열리면 {% include product %} 메뉴(Alias 엔진)가 메뉴 막대 ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunFileSave.png) - ### Snapshot 현재 씬의 빠른 백업을 작성하기 위한 스냅샷 대화상자를 엽니다. ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunSnapshot.png) - ### Publish 파일을 {% include product %}에 게시하기 위한 게시(Publish) 대화상자를 엽니다. 게시하면 아티스트 다운스트림에서 사용할 수 있습니다. 자세한 내용은 [Alias에서 게시](https://github.com/shotgunsoftware/tk-alias/wiki/Publishing)를 참조하십시오. ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunPublish.png) - ### Loader Alias로 데이터를 로드할 수 있는 컨텐츠 Loader 앱을 엽니다. 자세한 내용은 [Alias에 로드](https://github.com/shotgunsoftware/tk-alias/wiki/Loading)를 참조하십시오. @@ -64,4 +60,3 @@ Alias로 데이터를 로드할 수 있는 컨텐츠 Loader 앱을 엽니다. 기한이 만료된 씬의 항목과 함께 참조된 (WREF 참조) 컨텐츠 목록을 표시하는 분할(Breakdown) 대화상자를 엽니다. 하나 이상의 항목을 선택하고 선택 항목 업데이트(Update Selected)를 클릭하여 전환하고 최신 버전의 컨텐츠를 사용합니다. 자세한 내용은 [Alias의 씬 분할](https://github.com/shotgunsoftware/tk-alias/wiki/Scene-Breakdown)을 참조하십시오. ![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunBreakdown.png) - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md index e56f4fefd..18f38be78 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md @@ -38,9 +38,8 @@ tk-desktop: location: ... location: ... run_at_startup: - - {app_instance: '', name: Apps} - - {app_instance: tk-multi-shotgunpanel, name: ''} + - { app_instance: "", name: Apps } + - { app_instance: tk-multi-shotgunpanel, name: "" } ``` `Apps` 항목은 탭 순서대로 기본 `Apps` 탭이 표시되는 위치를 제어합니다. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-flame.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-flame.md index 8cab4130e..eb298662a 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-flame.md @@ -9,19 +9,19 @@ lang: ko ## 설치 -Flame용 {% include product %} 엔진은 Flame 2015 Extension 2에 추가된 새 통합 후크를 사용합니다. 엔진이 작동하려면 *반드시* 이 Flame 버전을 사용해야 합니다. Flame 2015 Extension 2에 대한 자세한 정보(얻는 방법 포함)는 [Flame 지원 팀](http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)에 문의하십시오. +Flame용 {% include product %} 엔진은 Flame 2015 Extension 2에 추가된 새 통합 후크를 사용합니다. 엔진이 작동하려면 _반드시_ 이 Flame 버전을 사용해야 합니다. Flame 2015 Extension 2에 대한 자세한 정보(얻는 방법 포함)는 [Flame 지원 팀](http://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)에 문의하십시오. Flame용 {% include product %} 엔진을 시작하는 가장 간단한 방법은 예제 파이프라인 구성을 사용하여 새 테스트 프로젝트를 설정하는 것입니다. {% include product %} 데스크톱을 시작하고 새 프로젝트에 대한 프로젝트 설정을 실행하여 기본 구성 섹션에서 기본 Flame 구성을 선택하면 이 작업을 수행할 수 있습니다. ## Flame 프로젝트 설정 -Flame용 {% include product %} 엔진은 {% include product %} 프로젝트를 Flame 프로젝트와 연결하는 데 도움을 주며 필요한 경우 Flame 프로젝트를 생성합니다. Flame의 데이터가 {% include product %}의 올바른 데이터와 연결되도록 하므로 이 설정이 통합의 핵심입니다. 추가 기능으로 엔진은 Flame 프로젝트의 명명 규칙 및 프로젝트의 다른 여러 설정을 관리하는 기능을 제공합니다. +Flame용 {% include product %} 엔진은 {% include product %} 프로젝트를 Flame 프로젝트와 연결하는 데 도움을 주며 필요한 경우 Flame 프로젝트를 생성합니다. Flame의 데이터가 {% include product %}의 올바른 데이터와 연결되도록 하므로 이 설정이 통합의 핵심입니다. 추가 기능으로 엔진은 Flame 프로젝트의 명명 규칙 및 프로젝트의 다른 여러 설정을 관리하는 기능을 제공합니다. {% include product %}를 통해 Flame이 처음 시작되면 아티스트가 표준 Flame 프로젝트 생성 화면에서 일반적인 설정을 편집할 수 있는 Flame 프로젝트 생성 UI가 나타납니다. ![프로젝트](../images/engines/flame_project.png) -그러나 {% include product %} 통합을 통해 파이프라인 관련 값으로 설정에 미리 입력할 수 있으므로 아티스트는 고민할 필요 없이 신속하게 올바른 결과를 얻을 수 있습니다. 기본값은 `project_setup_hook`를 통해 커스터마이즈할 수 있으며 다음 옵션을 지원합니다. +그러나 {% include product %} 통합을 통해 파이프라인 관련 값으로 설정에 미리 입력할 수 있으므로 아티스트는 고민할 필요 없이 신속하게 올바른 결과를 얻을 수 있습니다. 기본값은 `project_setup_hook`를 통해 커스터마이즈할 수 있으며 다음 옵션을 지원합니다. `use_project_settings_ui` `True`로 설정된 경우 프로젝트 생성 UI가 나타납니다. `False`로 설정된 경우 Flame 프로젝트는 후크의 나머지 기본값을 기반으로 자동으로 생성됩니다. @@ -41,15 +41,14 @@ Flame용 {% include product %} 엔진은 {% include product %} 프로젝트를 F 이 설정은 Flame 컴퓨터에 로그인한 사용자와 {% include product %}의 사용자의 연결을 시도합니다. `get_project_settings` -이 설정을 통해 기본 Flame 설정이 구성되고 후크가 Flame 프로젝트 XML 스트림을 빌드합니다. 다음 매개변수를 *반드시* 제공해야 합니다. +이 설정을 통해 기본 Flame 설정이 구성되고 후크가 Flame 프로젝트 XML 스트림을 빌드합니다. 다음 매개변수를 _반드시_ 제공해야 합니다. -* FrameWidth(예: `1280`) -* FrameHeight(예: `1080`) -* FrameDepth(`16-bit fp`, `12-bit`, `12-bit u`, `10-bit`, `8-bit`) -* FieldDominance(`PROGRESSIVE`, `FIELD_1`, `FIELD_2`) -* AspectRatio(`4:3`, `16:9` 또는 문자열 부동 소수점 값) +- FrameWidth(예: `1280`) +- FrameHeight(예: `1080`) +- FrameDepth(`16-bit fp`, `12-bit`, `12-bit u`, `10-bit`, `8-bit`) +- FieldDominance(`PROGRESSIVE`, `FIELD_1`, `FIELD_2`) +- AspectRatio(`4:3`, `16:9` 또는 문자열 부동 소수점 값) 프록시 설정을 제공할 수도 있습니다. 자세한 정보는 [Autodesk Wiretap SDK 문서](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)를 참조하십시오. project_setup 후크의 전체 코드베이스를 보려면 [엔진에 대한 Github 리포지토리](https://github.com/shotgunsoftware/tk-flame/blob/master/hooks/project_startup.py)를 참조하십시오. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-houdini.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-houdini.md index 73b6fe6bc..2a1dac204 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-houdini.md @@ -11,7 +11,6 @@ Houdini용 {% include product %} 엔진에는 {% include product %} 앱을 Houdi ![Houdini용 {% include product %} 엔진](../images/engines/houdini_engine.png) - # 앱 개발자를 위한 정보 ## 지원되는 플랫폼 @@ -47,9 +46,9 @@ tk-houdini: apps: # ... other app definitions tk-multi-workfiles: - # ... other app settings - sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets - # ... other app settings + # ... other app settings + sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets + # ... other app settings enable_sg_shelf: true enable_sg_menu: false # ... other engine settings @@ -94,21 +93,21 @@ houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/Ma ```yaml launch_houdini: - defer_keyword: '' + defer_keyword: "" engine: tk-houdini extra: {} - hook_app_launch: app_launch # <----- use a custom app_launch hook + hook_app_launch: app_launch # <----- use a custom app_launch hook hook_before_app_launch: default - icon: '{target_engine}/icon_256.png' - linux_args: '' - linux_path: '@houdini_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.6.6} - mac_args: '' - mac_path: '@houdini_mac' + icon: "{target_engine}/icon_256.png" + linux_args: "" + linux_path: "@houdini_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.6.6 } + mac_args: "" + mac_path: "@houdini_mac" menu_name: Launch Houdini versions: [] - windows_args: '' - windows_path: '@houdini_windows' + windows_args: "" + windows_path: "@houdini_windows" ``` 그런 다음 실행 파일을 직접 시작하도록 시작 로직을 수정하기만 하면 됩니다. 예를 들어 디렉토리(응용프로그램 번들)에 대한 이전 동작을 유지하고 명령을 직접 실행할 수 있습니다. 다음은 예입니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md index f1e16ba08..40f3ce606 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md @@ -24,7 +24,7 @@ Nuke에 다양한 항목이 표시되는 **{% include product %} 노드 메뉴** `favourite_directories` 설정을 사용하여 현재 환경에 템플릿 경로를 기반으로 하는 고유의 단축키를 추가할 수 있습니다. 이 설정에는 목록의 각 항목이 새로운 즐겨찾기 디렉토리를 나타내는 사전 목록이 필요합니다. 다음은 사용할 형식의 예입니다(아이콘 값으로 ""를 입력하여 지정하지 않을 수도 있음). ```yaml - favourite_directories: +favourite_directories: - display_name: "Shot Publish Path" template_directory: "shot_publish_area_nuke" icon: "icons/custom_publish_icon.png" @@ -35,13 +35,10 @@ Nuke에 다양한 항목이 표시되는 **{% include product %} 노드 메뉴** "{% include product %} 현재 프로젝트(Current Project)" 즐겨찾기가 정의된 각 루트에 자동으로 추가됩니다. `project_favourite_name` 설정을 사용하여 이름을 커스터마이즈하거나 값을 빈 문자열 `''`로 설정하여 이러한 즐겨찾기를 비활성화할 수 있습니다. - - -*** +--- _참고: 현재 CentOS 6.5에서 실행되는 Nuke 8.0의 버그로 인해 툴킷을 실행할 때 Nuke가 중단됩니다. CentOS의 다른 버전은 영향을 받지 않습니다. 당사는 이 문제를 인식하고 있습니다(버그 43766). 이 버전을 실행 중인 경우 Nuke의 향후 업데이트에서 이 문제가 해결될 때까지 조치를 취할 수 있도록 당사에 문의해 주십시오._ - ## 앱 개발자를 위한 정보 ### 컨텍스트 트래킹 @@ -56,7 +53,7 @@ Nuke용 {% include product %} 엔진을 사용하면 커스텀 기즈모를 쉽 그러면 노드 생성 기능을 통해 기즈모에 쉽게 액세스할 수 있습니다. -* `nuke.createNode("WriteTank")` +- `nuke.createNode("WriteTank")` {% include info title="경고" content="기즈모를 사용하는 것이 편리할 수 있지만 씬에 지속되는 노드를 만들려는 경우에는 일반적으로 적절한 솔루션이 아닙니다. 씬에 기즈모를 추가하면 씬과 기즈모 코드 간에 종속성이 발생하기 때문입니다. 씬을 로드할 때마다 ShotGrid 툴킷을 로드해야 할 뿐만 아니라 코드를 업데이트해도 씬에서 사용 중인 이전 기즈모가 손상되지 않도록 신중하게 코드를 관리해야 합니다." %} @@ -109,26 +106,60 @@ Nuke용 {% include product %} 엔진은 Hiero 내에서 실행되는 {% include Hiero에는 여러 메뉴가 있기 때문에 Maya나 Nuke 등보다 메뉴 항목의 위치를 구성하는 옵션이 더 많습니다. Nuke용 {% include product %} 엔진의 Hiero 워크플로우 구성은 다음과 같은 모양입니다. ```yaml - - tk-hiero: - location: {name: tk-nuke, type: app_store, version: v0.6.9} - debug_logging: false - - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - bin_context_menu: - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "Version up Current Scene...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot History...", requires_selection: true} - - {app_instance: tk-multi-publish, keep_in_menu: false, name: "Publish Project...", requires_selection: true} - - menu_favourites: - - {app_instance: tk-multi-workfiles, name: Shotgun File Manager...} +tk-hiero: + location: { name: tk-nuke, type: app_store, version: v0.6.9 } + debug_logging: false + + timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + bin_context_menu: + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "Version up Current Scene...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot History...", + requires_selection: true, + } + - { + app_instance: tk-multi-publish, + keep_in_menu: false, + name: "Publish Project...", + requires_selection: true, + } + + menu_favourites: + - { app_instance: tk-multi-workfiles, name: Shotgun File Manager... } ``` 대부분의 엔진에는 기본 {% include product %} 메뉴에 배치되는 "단축키"를 지정할 수 있는 목록인 `menu_favourites` 옵션이 있습니다. 이 외에도 Hiero 전용 구성에는 세 개의 특수 섹션이 있습니다. @@ -147,7 +178,6 @@ Hiero에는 여러 메뉴가 있기 때문에 Maya나 Nuke 등보다 메뉴 항 Hiero에는 현재 프로젝트의 개념이 없으므로 앱이 Hiero 내부에서 클릭되는 내용을 쉽게 찾을 수 있도록 보다 강력한 도구를 추가했습니다. 이에 따라 Hiero용 {% include product %} 엔진에 두 가지 방식이 추가되었습니다. - #### get_menu_selection() 가장 최근의 메뉴 클릭에서 선택된 Hiero 객체 목록을 반환합니다. @@ -163,7 +193,7 @@ Hiero에는 현재 프로젝트의 개념이 없으므로 앱이 Hiero 내부에 **매개변수 및 반환값** -* **반환값:** Hiero 객체 목록 +- **반환값:** Hiero 객체 목록 **예** @@ -202,7 +232,7 @@ if project is None: #### Hiero 작동을 위한 후크 구성 방법 -Hiero용으로 구성된 다중 앱은 일반적으로 어떤 프로젝트가 클릭되었는지 찾아야 합니다. 예를 들어 `tk-multi-workfiles` 앱은 프로젝트에 대해 "{% include product %} 다른 이름으로 저장(Save As)"을 수행해야 합니다. 따라서 Hiero의 bin 메뉴에 탱크 다른 이름으로 저장(Tank Save As) 명령을 추가하여 사용자가 bin 뷰에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 *다른 이름으로 저장(Save As)* 옵션을 선택합니다. +Hiero용으로 구성된 다중 앱은 일반적으로 어떤 프로젝트가 클릭되었는지 찾아야 합니다. 예를 들어 `tk-multi-workfiles` 앱은 프로젝트에 대해 "{% include product %} 다른 이름으로 저장(Save As)"을 수행해야 합니다. 따라서 Hiero의 bin 메뉴에 탱크 다른 이름으로 저장(Tank Save As) 명령을 추가하여 사용자가 bin 뷰에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 _다른 이름으로 저장(Save As)_ 옵션을 선택합니다. ![메뉴](../images/engines/nuke-hiero-bin_menu.png) @@ -210,7 +240,12 @@ Hiero용으로 구성된 다중 앱은 일반적으로 어떤 프로젝트가 ```yaml bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } ``` 이제 앱 자체에서 각 엔진은 저장 및 로드와 같은 씬 이벤트를 처리하는 후크를 구성해야 합니다. Maya나 Nuke와 같은 응용프로그램의 경우 이는 일반적으로 저장, 로드 등을 수행합니다. @@ -301,4 +336,3 @@ class SceneOperation(Hook): 특정 선택 항목을 클릭했을 때 Hiero가 반환하는 객체를 보려면 엔진 디버그 모드를 켜면 됩니다. 스크립트 편집기에서 각 클릭으로 선택한 객체의 요약을 볼 수 있습니다. ![메뉴](../images/engines/nuke-hiero-engine_debug.png) - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md index f13ba8d9d..900b23699 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md @@ -121,10 +121,10 @@ Photoshop CC를 시작할 때마다 엔진 부트스트랩(Bootstrapping) 코드 ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 설정의 값은 구성에 설치된 앱 중 하나에서 제공하는 등록된 명령을 식별하는 사전 목록입니다. `app_instance` 키는 설치된 특정 앱을 식별하고 `name` 키는 해당 앱에서 등록된 명령의 표시 이름과 일치합니다. 위의 예에서 즐겨찾는 네 가지 명령, `tk-multi-workfiles2` 앱의 파일 열기 및 저장 대화상자와 표준 툴킷 게시 및 스냅샷 대화상자를 볼 수 있습니다. 이제 이 네 가지 명령이 즐겨찾기 쉘프에 표시됩니다. @@ -148,6 +148,7 @@ shelf_favorites: Photoshop API 객체는 `engine.adobe`로 노출됩니다. 아래 예는 툴킷 앱과 후크 내에서 Photoshop DOM을 직접 조작하는 방법을 보여 줍니다. 표준 툴킷 앱에는 Photoshop 문서와 상호 작용하는 방법에 대한 작업 예가 포함되어 있습니다. #### 예 + 파일 로드: ```python @@ -215,4 +216,4 @@ for (i, layer) in enumerate(layers): ### 앱 개발자 노트 -* Python 프로세스는 Photoshop CC 프로세스와 별개이므로 가능한 깔끔한 방식으로 Photoshop 창 위에 표시되는 앱 창을 만들기 위해 엔진 내에서 일부 작업이 수행됩니다. 이 설정의 한 가지 문제는 `QFileDialog`의 경우 기본 OS 창을 사용하도록 하는 기본 옵션입니다. 이 엔진과 함께 사용할 앱을 개발하는 경우 기본 대화상자를 사용하지 않도록 옵션을 설정해야 합니다. [tk-multi-pythonconsole 앱에서 이 예를 참조하십시오.](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218). +- Python 프로세스는 Photoshop CC 프로세스와 별개이므로 가능한 깔끔한 방식으로 Photoshop 창 위에 표시되는 앱 창을 만들기 위해 엔진 내에서 일부 작업이 수행됩니다. 이 설정의 한 가지 문제는 `QFileDialog`의 경우 기본 OS 창을 사용하도록 하는 기본 옵션입니다. 이 엔진과 함께 사용할 앱을 개발하는 경우 기본 대화상자를 사용하지 않도록 옵션을 설정해야 합니다. [tk-multi-pythonconsole 앱에서 이 예를 참조하십시오.](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218). diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md index 680d7d9a1..b8d5ff7c8 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md @@ -27,8 +27,8 @@ lang: ko Core v0.13부터는 {% include product %} 엔진에서 모든 다중 앱을 사용할 수 있습니다. 기술적으로 {% include product %} 엔진과 다른 엔진 사이에는 차이가 거의 없습니다. 그러나 다음과 같이 약간의 미묘한 차이가 있습니다. -* {% include product %} 엔진에서 QT 기반 앱을 실행하려면 PySide 또는 PyQt를 표준 Python 환경에 수동으로 설치해야 합니다. -* {% include product %} 엔진에서는 사용자가 속한 권한 그룹에 따라 사용자에게 액션을 표시할 수 있습니다. {% include product %} 액션(Action) 메뉴에 명령을 추가하고 관리자(Admin)만 볼 수 있게 하려는 경우에 유용합니다. +- {% include product %} 엔진에서 QT 기반 앱을 실행하려면 PySide 또는 PyQt를 표준 Python 환경에 수동으로 설치해야 합니다. +- {% include product %} 엔진에서는 사용자가 속한 권한 그룹에 따라 사용자에게 액션을 표시할 수 있습니다. {% include product %} 액션(Action) 메뉴에 명령을 추가하고 관리자(Admin)만 볼 수 있게 하려는 경우에 유용합니다. 관리자(Admin)에게만 표시되는 hello-world 스타일의 {% include product %} 앱은 다음과 같습니다. @@ -40,7 +40,7 @@ class LaunchPublish(Application): def init_app(self): """ Register menu items with {% include product %} - """ + """ params = { "title": "Hello, World!", "deny_permissions": ["Artist"], @@ -51,6 +51,5 @@ class LaunchPublish(Application): def do_stuff(self, entity_type, entity_ids): # this message will be displayed to the user - self.engine.log_info("Hello, World!") + self.engine.log_info("Hello, World!") ``` - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md index e0a0602aa..b1fb55d57 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md @@ -26,7 +26,6 @@ VRED용 {% include product %} 엔진이 시작되면 VRED 프로젝트가 이 VRED가 열리면 {% include product %} 메뉴(VRED 엔진)가 메뉴 막대에 추가됩니다. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunMenuVRED.png) - ### 파일 열기 및 저장 내 태스크(My Tasks) 및 에셋(Assets) 탭을 사용하여 할당된 모든 태스크를 보고 에셋을 찾을 수 있습니다.오른쪽에서 이 탭을 사용하여 왼쪽에 선택된 항목과 연관된 모든 파일, 작업 파일 또는 게시된 파일을 볼 수 있습니다. @@ -34,20 +33,21 @@ VRED가 열리면 {% include product %} 메뉴(VRED 엔진)가 메뉴 막대에 ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunFileSaveVRED.png) - ### Snapshot + Snapshot: 현재 씬의 빠른 백업을 작성하기 위한 스냅샷(Snapshot) 대화상자를 엽니다. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunSnapshotVRED.png) +### Publish -### Publish Publish: 파일을 {% include product %}에 게시하기 위한 게시(Publish) 대화상자를 엽니다. 게시하면 아티스트 다운스트림에서 사용할 수 있습니다. VRED 게시에 대한 자세한 내용은 [여기](https://github.com/shotgunsoftware/tk-vred/wiki/Publishing)![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunPublishVRED.png)를 참고하십시오. - ### Loader + Loader: 앱 작동 방법을 설명하는 지침 슬라이드와 함께 컨텐츠 Loader 앱을 엽니다. VRED 로드에 대한 자세한 내용은 [여기를 참조](https://github.com/shotgunsoftware/tk-vred/wiki/Loading)![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunLoaderVRED.png)하십시오. ### Scene Breakdown + Scene Breakdown: 기한이 만료된 씬의 항목과 함께 "참조된" 파일(및 해당 링크) 목록을 표시하는 분할(Breakdown) 대화상자를 엽니다. 하나 이상의 항목을 선택하고 선택 항목 업데이트(Update Selected)를 클릭하여 전환하고 최신 버전의 컨텐츠를 사용합니다. ![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunBreakdownVRED.png) diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md index 01490e3b1..3466d796a 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md @@ -15,7 +15,7 @@ lang: ko ![](images/setup_project_wizard.png) -이 API는 툴킷용 {% include product %} 인스턴스를 통해 프로젝트를 설정하는 단계를 보여 주는 QWizard 구현입니다. 이 마법사를 사용하려면 (표준 {% include product %} API 엔티티 사전으로) 설정할 프로젝트와 부모로 지정할 창을 전달하는 클래스 인스턴스를 생성하기만 하면 됩니다. +이 API는 툴킷용 {% include product %} 인스턴스를 통해 프로젝트를 설정하는 단계를 보여 주는 QWizard 구현입니다. 이 마법사를 사용하려면 (표준 {% include product %} API 엔티티 사전으로) 설정할 프로젝트와 부모로 지정할 창을 전달하는 클래스 인스턴스를 생성하기만 하면 됩니다. ```python adminui = sgtk.platform.import_framework("tk-framework-adminui", "setup_project") diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md index 8a7d03bfb..241b61d88 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md @@ -7,7 +7,7 @@ lang: ko # 툴킷 데스크톱 서버 프레임워크 -desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 및 툴킷 통합 기능을 제공합니다. 이를 통해 데스크톱 액세스가 필요한 동작에 대한 {% include product %} 웹 사이트의 요청을 안전하게 수신하는 로컬 웹 소켓 서버를 사용할 수 있습니다. +desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 및 툴킷 통합 기능을 제공합니다. 이를 통해 데스크톱 액세스가 필요한 동작에 대한 {% include product %} 웹 사이트의 요청을 안전하게 수신하는 로컬 웹 소켓 서버를 사용할 수 있습니다. 로컬 파일 링크의 경우, 이러한 요청을 통해 웹 인터페이스에서 로컬 파일 경로에 대한 {% include product %} 액세스를 허용하며 요청 시 {% include product %} 페이지에서 해당 파일을 직접 열 수 있습니다. 툴킷의 경우 {% include product %}를 통해 지정된 엔티티에 대해 등록된 파이프라인 액션을 확인하고 이를 실행할 수 있습니다. @@ -15,11 +15,11 @@ desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 ## 데스크톱 통합을 실행하는 방법 이러한 {% include product %} 기능이 작동하려면 일부 지원되는 데스크톱 통합이 실행 중이어야 합니다. -[이 페이지](https://support.shotgunsoftware.com/entries/95402178)에서는 데스크톱과 {% include product %}를 통합하는 방법에 대한 다양한 옵션을 설명합니다. Websocket 서버 섹션에서는 이 프레임워크가 제공하는 기능에 대해 설명합니다. +[이 페이지](https://support.shotgunsoftware.com/entries/95402178)에서는 데스크톱과 {% include product %}를 통합하는 방법에 대한 다양한 옵션을 설명합니다. Websocket 서버 섹션에서는 이 프레임워크가 제공하는 기능에 대해 설명합니다. ### {% include product %} 데스크톱 -이 프레임워크는 {% include product %} 데스크톱과 함께 번들로 제공되며, 이는 [여기](https://support.shotgunsoftware.com/entries/95442748#Downloading%20Shotgun%20Desktop)에서 다운로드할 수 있습니다. {% include product %} 데스크톱을 실행하면 자동으로 Websocket 서버를 시작합니다. {% include product %} 데스크톱을 이미 실행 중인 경우 설정 프로세스가 완료된 것입니다. +이 프레임워크는 {% include product %} 데스크톱과 함께 번들로 제공되며, 이는 [여기](https://support.shotgunsoftware.com/entries/95442748#Downloading%20Shotgun%20Desktop)에서 다운로드할 수 있습니다. {% include product %} 데스크톱을 실행하면 자동으로 Websocket 서버를 시작합니다. {% include product %} 데스크톱을 이미 실행 중인 경우 설정 프로세스가 완료된 것입니다. ### 서버 구성 @@ -43,7 +43,6 @@ desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 ![](images/osx_warning_1.jpg)![](images/windows_warning_1.jpg)![](images/windows_warning_2.jpg) - {% include product %} 데스크톱을 사용하면 생성된 인증서가 다음 위치에 저장됩니다. **OS X**: ~/Library/Caches/Shotgun/desktop/config/certificates
**Windows**: %AppData%\Shotgun\desktop\config\certificates
**Linux**: ~/.shotgun/desktop/config/certificates
@@ -53,7 +52,7 @@ desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 기본적으로 websocket 서버는 포트 9000에서 호스트되는 {% include product %} 사이트를 수신하도록 설정되어 있습니다. 로컬 {% include product %} 서버를 실행하는 경우 websocket 서버에서의 연결을 허용하도록 {% include product %} 서버에 대한 구성을 업데이트해야 합니다. -{% include product %} 데스크톱을 실행할 때 {% include product %} 바이너리와 함께 존재하는 ```config.ini``` 파일을 설정해야 합니다. 이 파일이 존재해야 하는 위치에 대한 자세한 지침은 [여기](https://support.shotgunsoftware.com/entries/95442748#Advanced%20Installation%20Topics)에서 참조하십시오. +{% include product %} 데스크톱을 실행할 때 {% include product %} 바이너리와 함께 존재하는 `config.ini` 파일을 설정해야 합니다. 이 파일이 존재해야 하는 위치에 대한 자세한 지침은 [여기](https://support.shotgunsoftware.com/entries/95442748#Advanced%20Installation%20Topics)에서 참조하십시오. 해당 파일에는 Websocket 서버의 기능을 제어하는 섹션이 있습니다. 일반적인 구성은 다음과 같습니다. @@ -68,9 +67,9 @@ whitelist=*.shotgunstudio.com ## 문제 해결 -Linux에서 서버는 libffi에 대한 종속성을 도입합니다. 시작 시 데스크톱에서 충돌이 발생하고 로그에서 libffi를 찾을 수 없다는 메시지가 표시되는 경우 이 패키지를 설치해야 합니다. +Linux에서 서버는 libffi에 대한 종속성을 도입합니다. 시작 시 데스크톱에서 충돌이 발생하고 로그에서 libffi를 찾을 수 없다는 메시지가 표시되는 경우 이 패키지를 설치해야 합니다. -설치 중에 문제 또는 질문이 있는 경우 support@shotgunsoftware.com으로 이메일을 보내주십시오. 서버 실행에 문제가 있는 경우 **config.ini** 파일에서 **debug**를 **1**로 설정하고 데스크톱의 로그 파일을 포함시키십시오. +설치 중에 문제 또는 질문이 있는 경우 support@shotgunsoftware.com으로 이메일을 보내주십시오. 서버 실행에 문제가 있는 경우 **config.ini** 파일에서 **debug**를 **1**로 설정하고 데스크톱의 로그 파일을 포함시키십시오. 로그 파일은 다음 위치에 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md index 78b30e8c0..5a86cd6cc 100644 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md @@ -6,6 +6,7 @@ lang: ko --- # 툴킷 Desktop Startup Framework + Desktop Startup Framework는 {% include product %} 데스크톱의 시작 로직을 구현합니다. 주요 기능은 다음과 같습니다. 1. 브라우저 통합 초기화 diff --git a/docs/ko/shotgun.md b/docs/ko/shotgun.md index 85a8894e0..d054d1428 100644 --- a/docs/ko/shotgun.md +++ b/docs/ko/shotgun.md @@ -14,6 +14,3 @@ lang: ko 귀하 또는 귀하가 권한을 제공한 사용자가 사용하는 서비스에서 작동하거나 해당 서비스와 함께 작동하는 자체 서비스, 응용프로그램, 모듈 및 구성요소를 개발할 때 {% include product %} API를 사용할 수 있습니다. {% include warning title="인증 키" content="사용자가 로그온하지 않고 서비스 또는 해당 기능에 액세스할 수 있는 인증 키 또는 기타 수단을 포함하는 API 정보를 공개하지 마십시오. 또한 귀하가 권한을 제공한 사용자가 공개하는 것도 허용하지 마십시오. 또는 귀하가 직접 API를 사용하여 액세스하거나 사용자들이 로그온하지 않고 서비스 또는 해당 기능에 액세스할 수 있도록 허용하십시오." %} - - - diff --git a/docs/ko/toolkit.md b/docs/ko/toolkit.md index 973119a73..d5aa1d0fa 100644 --- a/docs/ko/toolkit.md +++ b/docs/ko/toolkit.md @@ -10,4 +10,3 @@ lang: ko 툴킷은 아티스트 응용프로그램과 파이프라인 도구를 {% include product %}과 통합할 수 있게 해 주는 확장 가능한 플랫폼입니다. Toolkit Core API는 모든 통합이 구축되는 플랫폼입니다. Core API는 앱, 엔진 및 플랫폼 기반뿐 아니라 파일 시스템 구성과 도구 배포까지 처리합니다. - diff --git a/docs/ko/trusted-solutions/cloud.md b/docs/ko/trusted-solutions/cloud.md index ac0fbca13..e9fd21738 100644 --- a/docs/ko/trusted-solutions/cloud.md +++ b/docs/ko/trusted-solutions/cloud.md @@ -13,4 +13,4 @@ ShotGrid Cloud is our default offering, hosted on AWS and built on top of Autode ## Further Reading -Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). \ No newline at end of file +Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). diff --git a/docs/ko/trusted-solutions/tier1.md b/docs/ko/trusted-solutions/tier1.md index 0e5a25823..dc0e110ee 100644 --- a/docs/ko/trusted-solutions/tier1.md +++ b/docs/ko/trusted-solutions/tier1.md @@ -18,38 +18,45 @@ Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation ## In This Section ### Getting Started + -* [About Isolation](./tier1/getting_started/about.md) -* [Client Responsibilities](./tier1/getting_started/responsibilities.md) -* [Onboarding Process](./tier1/getting_started/onboarding.md) -* [Planning your Setup](./tier1/setup/planning.md) + +- [About Isolation](./tier1/getting_started/about.md) +- [Client Responsibilities](./tier1/getting_started/responsibilities.md) +- [Onboarding Process](./tier1/getting_started/onboarding.md) +- [Planning your Setup](./tier1/setup/planning.md) ### Features Description + -* [Media Isolation](./tier1/features/media_isolation.md) -* [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) -* [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) -* [Media Replication](./tier1/features/media_replication.md) + +- [Media Isolation](./tier1/features/media_isolation.md) +- [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) +- [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) +- [Media Replication](./tier1/features/media_replication.md) ### Setup + -* [Setup Overview](./tier1/setup/setup.md) -* [Migration Test Site](./tier1/setup/shotgun_poc_site.md) -* [Media Isolation](./tier1/setup/s3_bucket.md) -* [Media Traffic Isolation](./tier1/setup/media_segregation.md) -* [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) -* [Media Replication](./tier1/setup/s3_replication.md) -* [Isolation Fine Tuning](./tier1/setup/tuning.md) -* [Migration](./tier1/setup/migration.md) +- [Setup Overview](./tier1/setup/setup.md) +- [Migration Test Site](./tier1/setup/shotgun_poc_site.md) +- [Media Isolation](./tier1/setup/s3_bucket.md) +- [Media Traffic Isolation](./tier1/setup/media_segregation.md) +- [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) +- [Media Replication](./tier1/setup/s3_replication.md) +- [Isolation Fine Tuning](./tier1/setup/tuning.md) +- [Migration](./tier1/setup/migration.md) ### AWS Knowledge + -* [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) -* [S3](./tier1/knowledge/s3.md) -* [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) -* [Direct Connect](./tier1/knowledge/direct_connect.md) -* [Private Link](./tier1/knowledge/private_link.md) -* [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) -* [AWS Knowledge](./tier1/knowledge/aws.md) + +- [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) +- [S3](./tier1/knowledge/s3.md) +- [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) +- [Direct Connect](./tier1/knowledge/direct_connect.md) +- [Private Link](./tier1/knowledge/private_link.md) +- [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) +- [AWS Knowledge](./tier1/knowledge/aws.md) diff --git a/docs/ko/trusted-solutions/tier1/features/features.md b/docs/ko/trusted-solutions/tier1/features/features.md index e51276b67..b8673e7e6 100644 --- a/docs/ko/trusted-solutions/tier1/features/features.md +++ b/docs/ko/trusted-solutions/tier1/features/features.md @@ -16,8 +16,10 @@ To get the onboarding process started, go to [Onboarding Process](../getting_sta To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md). ## In This Section + -* [Media Isolation](./media_isolation.md) -* [Media Traffic Isolation](./media_traffic_isolation.md) -* [Web Traffic Isolation](./web_traffic_isolation.md) -* [Media Replication](./media_replication.md) \ No newline at end of file + +- [Media Isolation](./media_isolation.md) +- [Media Traffic Isolation](./media_traffic_isolation.md) +- [Web Traffic Isolation](./web_traffic_isolation.md) +- [Media Replication](./media_replication.md) diff --git a/docs/ko/trusted-solutions/tier1/features/media_isolation.md b/docs/ko/trusted-solutions/tier1/features/media_isolation.md index 2db4f3627..8ff5b3903 100644 --- a/docs/ko/trusted-solutions/tier1/features/media_isolation.md +++ b/docs/ko/trusted-solutions/tier1/features/media_isolation.md @@ -6,17 +6,21 @@ lang: en --- # Media Isolation + Media Isolation allows your studio to retain ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid is stored in your studio's private S3 Bucket. Access to the media is provided to the ShotGrid services only, using [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). media-isolation-overview ## Client-Owned S3 Bucket + Storing media and attachments in an S3 bucket that you own means that you remain the legal owner of these artifacts, allowing you to comply with your company's security and legal policies. Your studio retains control of asset storage and access, access that you can revoke at will. media-isolation-arch ## More about Access + When using ShotGrid to upload and download media it is transferred directly to / from AWS S3 without transiting through Autodesk infrastructure. ShotGrid will only access media in two situations: + 1. The ShotGrid Transcoding service will get read/write access once, soon after upload, when transcoding the media. See [Ephemeral Transcoding](../getting_started/about.md#ephemeral-transcoding) for details. 2. When the ShotGrid service generates S3 Links to your sources and transcoded media. @@ -25,9 +29,12 @@ This is rendered possible by leveraging [AWS AssumeRole keyless Security Token S ShotGrid Support staff do not have access to your S3 Bucket under any circumstances. ## Costs + When activating Media Isolation the following costs, previously covered by Autodesk, become the responsibility of the client: + 1. **S3 Costs.** All the S3 storage costs will be assumed by the customer. See [Media Isolation](../setup/tuning.md) for more details about how to reduce costs. 2. **S3 Bandwidth.** Bandwidth out of the S3 bucket will be assumed by the customer. ## What Media Isolation is not providing -Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. \ No newline at end of file + +Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. diff --git a/docs/ko/trusted-solutions/tier1/features/media_replication.md b/docs/ko/trusted-solutions/tier1/features/media_replication.md index 0b4bbefeb..f991da0ca 100644 --- a/docs/ko/trusted-solutions/tier1/features/media_replication.md +++ b/docs/ko/trusted-solutions/tier1/features/media_replication.md @@ -12,14 +12,17 @@ ShotGrid is compatible with the S3 Cross-Region replication feature, allowing yo media-replication-overview ## Pre-requisites + Media Isolation is required in order to elect Media Replication. ## Configuration by users + When using Media Replication, each user can customize which region data is read from. A user can either specify the region to use, or use automatic mode. In automatic mode ShotGrid selects the replica determined by the user's IP address using IP ranges specified in the Isolation Preferences. media-replication-preferences ## How it works + ShotGrid can be configured to read from up to two different buckets. Using the [AWS S3 Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) feature, you can configure replication between buckets in different regions, and then consume media from the region closest to your users. It is important to underline that media is always uploaded to the main bucket. media-replication-arch @@ -27,12 +30,16 @@ ShotGrid can be configured to read from up to two different buckets. Using the [ Following AWS service level agreement, S3 guarantees the replication of 99.99% of the object within 15 minutes. ### Replication Delay + A small amount of time, typically under 15 minutes, is required before replication happens. The replication time depends on the size of the object to replicate. In order to alleviate that replication delay, ShotGrid will, for a small period of time, generate links from to object in the source bucket instead of the replica. The duration of this transitional state in configurable in the Isolation Preferences. ## Costs + Activating the Media Replication feature can increase your AWS costs considerabibly. Before activating, be aware that: + 1. Your S3 cost linked to ShotGrid usage will more or less double, because the media is now stored in two regions. 2. You will be charged for the transfer cost between the source and the destination region. See [AWS S3 CRR and the destination region](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-and-other-bucket-configs.html#replication-and-dest-region) for more details. ## Next Steps + See [Media Replication Setup](../setup/s3_replication.md) for setup instructions. diff --git a/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md index 74f0b9601..f399e9275 100644 --- a/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md +++ b/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md @@ -12,20 +12,26 @@ Communication between your client systems and S3 bucket targets a number of AWS media-traffic-isolation-overview ## Configuration -An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. + +An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. ## How it works + ShotGrid can be configured to use an S3 Proxy address to communicate with your S3 bucket. Deploying the S3 Proxy component within your VPC makes it possible to isolate traffic from the public Internet completely, or to allow more tightly controlled access from the Internet to your media. media-traffic-isolation-arch ### Secure communication + You are responsible for supplying and renewing SSL certificates for the S3 Proxy component. ## Costs + Activating the Media Traffic Isolation feature will increase your AWS costs. Before activating, be aware that: + 1. There are costs associated with running the S3 Proxy component. See [AWS Fargate Pricing](https://aws.amazon.com/fargate/pricing/) for more details. 2. If you choose to make your S3 Proxy publicly accessible, there are also additional costs associated with AWS Global Accelerator. See [AWS Global Accelerator Pricing](https://aws.amazon.com/global-accelerator/pricing) for more details. ## Next Steps + See [Media Traffic Isolation](../setup/media_segregation.md) for setup instructions. diff --git a/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md index 839d0666f..2fd3baf07 100644 --- a/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md +++ b/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md @@ -12,15 +12,19 @@ Communication between your client systems and your ShotGrid site will traverse t web-traffic-isolation-overview ## Configuration + A unique VPC endpoint is provided by Autodesk. Access to the endpoint must be configured from your VPC, and the relevant DNS configuration must be completed to allow your client systems to reach the new endpoint. ## How it works + By using the provided VPC endpoint, web traffic is isolated from the public Internet completely. All web traffic transits between your AWS VPC and Autodesk's AWS VPC, rather than the public Internet. web-traffic-isolation-arch ## Costs + The only cost associated with Web Traffic Isolation are those related to web traffic transiting to/from your AWS VPC. See [AWS VPC Pricing](https://aws.amazon.com/vpc/pricing) for more details. ## Next Steps + See [Web Traffic Isolation](../setup/traffic_segregation.md) for setup instructions. diff --git a/docs/ko/trusted-solutions/tier1/getting_started/about.md b/docs/ko/trusted-solutions/tier1/getting_started/about.md index 8d4b0dcd9..bbde8470e 100644 --- a/docs/ko/trusted-solutions/tier1/getting_started/about.md +++ b/docs/ko/trusted-solutions/tier1/getting_started/about.md @@ -11,48 +11,49 @@ The isolation feature set combines our Cloud Hosted Platform with client-managed Leveraging the isolation feature set has the following advantages over the Standard offering: -* **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** -* **Web Traffic Isolation** from the public internet -* **Media Traffic Isolation** from the public internet -* **Media Replication** allowing you to replicate media in one additional AWS Region -* Access to fully managed ShotGrid Cloud Services -* Automatic and continuous version upgrades -* Ephemeral compute + in-memory segration between clients +- **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** +- **Web Traffic Isolation** from the public internet +- **Media Traffic Isolation** from the public internet +- **Media Replication** allowing you to replicate media in one additional AWS Region +- Access to fully managed ShotGrid Cloud Services +- Automatic and continuous version upgrades +- Ephemeral compute + in-memory segration between clients In a nutshell, this means that with the isolation features, your ShotGrid site and the data related to it cannot be reached by anyone outside of your studio network. The isolation feature set is a solution that requires less upkeep, as well as less IT/System Administrator knowledge and skills, than hosting ShotGrid on-premise. The list of advantages compared to on-premise includes, but is not limited to: -* No ShotGrid specific knowledge required -* No manual ShotGrid updates required -* Very low level of maintenance required for the AWS components +- No ShotGrid specific knowledge required +- No manual ShotGrid updates required +- Very low level of maintenance required for the AWS components ## Media isolation feature + Media Isolation allows your studio to keep the ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid can be store in your studio private S3 bucket. Access to the media is provided to the ShotGrid service only, using AWS AssumeRole keyless Security Token Service. Your studio remains in control of the assets and the access to the assets, access that you can revoke at will. ## Traffic isolation features + Media and Web traffic isolation features can be enabled to prevent your traffic from being routed on the public internet, limiting it to the AWS backbone and your studio network. The traffic between ShotGrid Services and your studio stays in closed network, never going outside AWS or your Studio network. With the Media Traffic Isolation feature activated, the media will only leave your studio infrastructure once to get transcoded. ## Media Replication -ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. +ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. # Eligibility The Isolation feature set is available for all Super Awesome clients. See [Getting Started](./getting_started.md) for more details about how to active the different features. The activation of the isolation feature set is not instantaneous, and requires manual setup involving your AWS account. - # What the Isolation Feature Set is not The isolation feature set is not a completely isolated solution. Both the compute services and the database services are shared amongst clients, and managed by ShotGrid. From a hardware standpoint, the isolation features does not guarantee complete physical isolation. However, ShotGrid services are guaranteeing isolation at the memory level. Processes are never reused to answer requests from different clients during their lifetime. Client metadata is stored in different databases. Client media is individually stored on S3. - # High Level Architecture + ![tier1-arch](../images/tier1-about-arch.png) -The ShotGrid cloud service can be decoupled at a high level in 3 parts: +The ShotGrid cloud service can be decoupled at a high level in 3 parts: **Compute Stack:** The part of the ShotGrid Service that handles client requests and serves data to the client. @@ -63,9 +64,11 @@ The ShotGrid cloud service can be decoupled at a high level in 3 parts: Please read [Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk ShotGrid](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) for more details about the architecture. ## Ephemeral compute and memory isolation + Even if clients share the same infrastructure, ShotGrid guarantees a complete memory isolation, both in transit and at rest, of client data. This makes ShotGrid less prone to data leaking due to architecture flaws or software vulnerabilities exploiting memory, like buffer overflow. ## Ephemeral transcoding + ![tier1-transcoding](../images/tier1-about-transcoding.png) Everytime media is uploaded to ShotGrid, the transcoding service is invoked to create a web friendly versions of your assets. That process happens only once, after the initial upload. The media is directly uploaded from the client to S3, from where it is fetched by the ShotGrid Transcoding Service. Each transcoding job is handled by a single container, which is killed after that unique job. The only place the media temporarily lives is in the container memory. The ShotGrid Transcoding service doesn't store permanently a copy of your media. diff --git a/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md b/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md index 9d70df760..04ebf5cf9 100644 --- a/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md +++ b/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md @@ -7,17 +7,18 @@ lang: en # Isolation Feature Set - Getting Started -Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. +Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. **The Isolation feature set is available only to Super Awesome clients. Before starting, make sure to upgrade your subscription to Super Awesome.** - To get the onboarding process started, go to [Onboarding Process](./onboarding.md). To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md) ## In This Section + -* [About the Isolation Feature Set](./about.md) -* [Client Responsibilities](./responsibilities.md) -* [Onboarding Process](./onboarding.md) -* [Planning Your Setup](../setup/setup.md) \ No newline at end of file + +- [About the Isolation Feature Set](./about.md) +- [Client Responsibilities](./responsibilities.md) +- [Onboarding Process](./onboarding.md) +- [Planning Your Setup](../setup/setup.md) diff --git a/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md b/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md index 63dd91dcd..19bfc213d 100644 --- a/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md +++ b/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md @@ -19,13 +19,13 @@ To start the on-boarding process for any of the Isolation features, please open During the onboarding process, you'll have direct access to Autodesk and AWS Leaders who will support you during the implementation. -**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. +**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. -**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. +**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. -**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. +**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. -**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. +**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. **Training:** OPTIONAL. Help sessions, if needed, as you ramp up on the AWS/ShotGrid technologies required to securely set-up the isolation features for your site. @@ -39,4 +39,4 @@ During the onboarding process, you'll have direct access to Autodesk and AWS Lea ## Next Steps -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file +Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) diff --git a/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md index 528aa0bbc..30d8e9508 100644 --- a/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md +++ b/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md @@ -4,15 +4,15 @@ title: Client Responsibilities pagename: tier1-getting_started-responsibilities lang: en --- - + # Client Responsibilities -Below, we have outlined setup responsibilities between Autodesk and You. +Below, we have outlined setup responsibilities between Autodesk and You. ## Isolation Setup You are entirely responsible for the validity, security, and execution of the Isolation setup in Your AWS Account. Autodesk should not, under any circumstances, be granted access to Your AWS environment. - + Autodesk is available during the process for assistance, but the configuration of Isolation features in Your AWS Account is to be executed by You on Your own. Isolation feature set activation requires the ShotGrid Support team's intervention. Activation delays are to be expected and will depend on demand. You understand that an estimated period of 2-8 weeks is usually required to complete the setup necessary to implement the isolation feature set. The setup time is highly dependent on your cooperation, so please plan to dedicate resources for the setup before beginning the onboarding process. @@ -21,16 +21,16 @@ Autodesk does not guarantee any timeline for setup completion. ## Onboarding -|Type| Description / Agreement | Responsibility | Available for Assistance| -|--------|-----|----------|---------| -|AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. |You |N/A| -|S3|Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) |You |ShotGrid and *AWS| -|Closed VPC |Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. |You |*AWS | -|Media Isolation |Creating the S3 end-points. Deploying the S3 Proxy. |You| ShotGrid and *AWS | -|Traffic Isolation |Creating VPCs. Creating Subnets.| You|ShotGrid| -|Private Access Point|Checking that the access point is only available from Your network.| ShotGrid| N/A| -|Monitoring and Reliability|Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. |ShotGrid|N/A| -|Service Level Objective|Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).|ShotGrid| N/A| -|Security and Governance |Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).| ShotGrid |N/A| - -*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. +| Type | Description / Agreement | Responsibility | Available for Assistance | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------ | +| AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. | You | N/A | +| S3 | Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) | You | ShotGrid and \*AWS | +| Closed VPC | Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. | You | \*AWS | +| Media Isolation | Creating the S3 end-points. Deploying the S3 Proxy. | You | ShotGrid and \*AWS | +| Traffic Isolation | Creating VPCs. Creating Subnets. | You | ShotGrid | +| Private Access Point | Checking that the access point is only available from Your network. | ShotGrid | N/A | +| Monitoring and Reliability | Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. | ShotGrid | N/A | +| Service Level Objective | Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | +| Security and Governance | Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | + +\*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. diff --git a/docs/ko/trusted-solutions/tier1/knowledge/aws.md b/docs/ko/trusted-solutions/tier1/knowledge/aws.md index 4047e2782..65042c3e9 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/aws.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/aws.md @@ -9,15 +9,15 @@ lang: en Below you can find links to additional reading material from AWS, including documentation on technologies leveraged by the Isolation feature set, as well as compliance information: -* [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) -* [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) -* [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) -* [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) - * [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) -* [**[AWS S3]** Overview](https://aws.amazon.com/s3/) - * [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) -* [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) - * [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) -* [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) - * [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) -* [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) +- [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) +- [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) +- [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) +- [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) + - [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) +- [**[AWS S3]** Overview](https://aws.amazon.com/s3/) + - [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) +- [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) + - [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) +- [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) + - [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) +- [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) diff --git a/docs/ko/trusted-solutions/tier1/knowledge/connecting.md b/docs/ko/trusted-solutions/tier1/knowledge/connecting.md index aa9aad9dd..3d2ffb368 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/connecting.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/connecting.md @@ -15,8 +15,6 @@ Some of the common options our clients have used include: Using a VPN appliance - AWS-managed or client-managed - your studio can establish a secure connection between your data center (or offices) to your AWS private VPC. - ## AWS Direct Connect [AWS Direct Connect](./direct_connect.md) creates a dedicated link between your studio and your AWS VPC. This will help segregate your studio's network traffic to your private AWS VPC from general internet traffic. - diff --git a/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md index b5e332630..3e87c2ce6 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md @@ -6,10 +6,9 @@ pagename: tier1-knowledge-direct_connect_onboarding # ShotGrid AWS Direct Connect Onboarding - ## Introduction -AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. +AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. ## Review of Shogun Configuration in AWS @@ -21,16 +20,14 @@ AWS Direct Connect (DX) is used to establish private connectivity between AWS an 2. Customer has equipment and network presence in an AWS Direct Connect location 3. Customer does not have equipment or presence in an AWS Direct Connect location - ## Setup Options 1. Request a dedicated Direct Connect connection through AWS Console - 1. Provision the required connectivity yourself - 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment + 1. Provision the required connectivity yourself + 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment 2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - -## Criteria to Determine Setup Path +## Criteria to Determine Setup Path If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console (Option 1a): @@ -49,11 +46,12 @@ If you answer “yes” to the following, then you should work with an AWS Direc - Are you already working with an AWS Direct Connect Partner? - Do you want a Partner to facilitate the setup? - Are you looking for a port less than 1Gbps or a hosted connection? -***Disclaimer:*** *All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria.* + **_Disclaimer:_** _All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria._ ## Setup Directions ### Request through AWS Console - Option 1 (a and b) + 1. [Create a Connection in the AWS Console](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest) 1. [Download the LOA-CFA](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#DedicatedConnection). The LOA is the authorization to connect to AWS and is required to establish the cross-network connection. 1. (Option 1a only) Request cross-connects at AWS Direct Connect locations. Find contact information [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html). @@ -63,9 +61,9 @@ If you answer “yes” to the following, then you should work with an AWS Direc ### Request through AWS Direct Connect Partner - Option 2 1. [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/). The criteria for choosing an AWS Partner are: - - AWS Region - - Providers - - If you are already working with an AWS Direct Connect Partner + - AWS Region + - Providers + - If you are already working with an AWS Direct Connect Partner 1. If hosted connection, [accept a hosted connection](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest). More information can be found [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/accept-hosted-connection.html). 1. Once the hosted connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). @@ -79,8 +77,6 @@ Short Answer - It depends. A lot of factors go into the time it takes to set up [AWS Direct Connect FAQs](https://aws.amazon.com/directconnect/faqs/?nc=sn&loc=6) - - ## VPN A site-to-site VPN can be used as an alternative to AWS Direct Connect. Learn more about [AWS VPN here](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). diff --git a/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md b/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md index 12d99d191..5ea551886 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md @@ -7,4 +7,4 @@ lang: en # VPC Endpoints -Coming soon. \ No newline at end of file +Coming soon. diff --git a/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md b/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md index 6010add78..296365dd8 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md @@ -8,12 +8,14 @@ lang: en # Generic Knowledge ## In This Section + -* [Connecting Your Studio With Your AWS VPC](./connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) -* [S3](./s3.md) -* [VPC / IAM / Security Group](./vpc_iam_sec.md) -* [Direct Connect](./direct_connect.md) -* [Private Link](./private_link.md) -* [VPC Endpoints](./vpc_endpoints.md) -* [AWS Knowledge](./aws.md) \ No newline at end of file + +- [Connecting Your Studio With Your AWS VPC](./connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) +- [S3](./s3.md) +- [VPC / IAM / Security Group](./vpc_iam_sec.md) +- [Direct Connect](./direct_connect.md) +- [Private Link](./private_link.md) +- [VPC Endpoints](./vpc_endpoints.md) +- [AWS Knowledge](./aws.md) diff --git a/docs/ko/trusted-solutions/tier1/knowledge/private_link.md b/docs/ko/trusted-solutions/tier1/knowledge/private_link.md index 836c2bbaf..dadd2afcd 100644 --- a/docs/ko/trusted-solutions/tier1/knowledge/private_link.md +++ b/docs/ko/trusted-solutions/tier1/knowledge/private_link.md @@ -7,6 +7,6 @@ lang: en # Private Link -[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. +[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. In conjunction with [AWS Direct Connect](./direct_connect.md), PrivateLink helps create a dedicated connection between your studio and ShotGrid's infrastructure. diff --git a/docs/ko/trusted-solutions/tier1/learn/learn.md b/docs/ko/trusted-solutions/tier1/learn/learn.md index 0b7f7f939..979527a18 100644 --- a/docs/ko/trusted-solutions/tier1/learn/learn.md +++ b/docs/ko/trusted-solutions/tier1/learn/learn.md @@ -7,4 +7,4 @@ lang: en # ShotGrid Isolation - Learn -This section will host a learning curriculum for ShotGrid Isolation features n the near future. \ No newline at end of file +This section will host a learning curriculum for ShotGrid Isolation features n the near future. diff --git a/docs/ko/trusted-solutions/tier1/setup/media_segregation.md b/docs/ko/trusted-solutions/tier1/setup/media_segregation.md index 693920d74..447a36923 100644 --- a/docs/ko/trusted-solutions/tier1/setup/media_segregation.md +++ b/docs/ko/trusted-solutions/tier1/setup/media_segregation.md @@ -19,25 +19,26 @@ Media Isolation activation is a pre-requisite to enable this feature. If you hav You will need to deploy a VPC with the required VPC endpoints. We provide both [private VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) and [public VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) CloudFormation templates as starting points. These template create the necessary VPCs, subnets and VPC endpoints. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private VPC (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private VPC (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) - * Public VPC: + - Public VPC: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml) -* Click Next -* Set a stack name. Eg. `shotgun-vpc` -* Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly -* Set your S3 bucket name -* Click Next -* Click Next +- Click Next +- Set a stack name. Eg. `shotgun-vpc` +- Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly +- Set your S3 bucket name +- Click Next +- Click Next ## Set up access from your site network to your AWS VPC Options provided by AWS: -* [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) -* [AWS Direct Connect](https://aws.amazon.com/directconnect/) + +- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +- [AWS Direct Connect](https://aws.amazon.com/directconnect/) {% include info title="Note" content="If Direct Connect is chosen, we recommend testing with a simpler / faster solution in the meantime to validate your Isolation setup. You can then replace that solution with Direct Connect once it is available." %} @@ -55,12 +56,12 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC ### Make the Docker image available from a private AWS ECR repository -* Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) -* Name the repository `s3-proxy` -* Upload the s3-proxy Docker image to the newly created ECR repository - * [Install Docker](https://docs.docker.com/get-docker/) on your workstation - * Follow the `docker login` instructions shown by clicking the *View push commands* button - * Run the following commands, substituting the ECR endpoint in the example for yours: +- Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) +- Name the repository `s3-proxy` +- Upload the s3-proxy Docker image to the newly created ECR repository + - [Install Docker](https://docs.docker.com/get-docker/) on your workstation + - Follow the `docker login` instructions shown by clicking the _View push commands_ button + - Run the following commands, substituting the ECR endpoint in the example for yours: ``` docker pull quay.io/shotgun/s3-proxy:1.0.6 docker tag quay.io/shotgun/s3-proxy:1.0.6 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 @@ -71,43 +72,43 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC Create a new stack in AWS Console using either the [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) or [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) CloudFormation template. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private S3 proxy (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private S3 proxy (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) - * Public S3 proxy: + - Public S3 proxy: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) -* Click Next -* Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` -* Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously -* Click Next -* Accept `I acknowledge that AWS CloudFormation might create IAM resources` -* Click Next +- Click Next +- Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` +- Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously +- Click Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Click Next ### Configure HTTPS ShotGrid requires that the S3 proxy be accessed via HTTPS, therefore the AWS ALB handling requests for your newly created S3 proxy stack must be configured to accept HTTPS requests. -* Create a DNS entry pointing to your S3 proxy, depending upon whether public or private - * Private S3 proxy (default): - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name - * Add a DNS CNAME record pointing to the DNS name of the ALB +- Create a DNS entry pointing to your S3 proxy, depending upon whether public or private + - Private S3 proxy (default): + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name + - Add a DNS CNAME record pointing to the DNS name of the ALB Eg. `s3-proxy.mystudio.com. 300 IN CNAME s3proxy-12R1MXX0MFFAV-2025360147.us-east-1.elb.amazonaws.com.` - * Public S3 proxy: - * Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator - * Add a DNS CNAME record pointing to the DNS name of the Global Accelerator + - Public S3 proxy: + - Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator + - Add a DNS CNAME record pointing to the DNS name of the Global Accelerator Eg. `s3-proxy.mystudio.com. 300 IN CNAME a48a2a8de7cfd28d3.awsglobalaccelerator.com.` -* Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this -* Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab - * Click Add listener - * Select HTTPS from the Protocol dropdown menu - * Click Add action -> Forward to... - * Select your S3 proxy's target group from the Target group dropdown menu - * Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) - * Select the SSL certificate you'd like to use from ACM or import a new certificate - * Click Save +- Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this +- Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab + - Click Add listener + - Select HTTPS from the Protocol dropdown menu + - Click Add action -> Forward to... + - Select your S3 proxy's target group from the Target group dropdown menu + - Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) + - Select the SSL certificate you'd like to use from ACM or import a new certificate + - Click Save ### Add S3 proxy VPC to S3 bucket policy @@ -121,10 +122,10 @@ Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio ### Configure your test site to use the S3 proxy -* Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section -* Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes -* Confirm that you are still able to access existing media -* Attempt to upload new media +- Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section +- Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes +- Confirm that you are still able to access existing media +- Attempt to upload new media ## Next Steps diff --git a/docs/ko/trusted-solutions/tier1/setup/migration.md b/docs/ko/trusted-solutions/tier1/setup/migration.md index d0f0d69f5..89cb3258f 100644 --- a/docs/ko/trusted-solutions/tier1/setup/migration.md +++ b/docs/ko/trusted-solutions/tier1/setup/migration.md @@ -13,15 +13,14 @@ Once everything is configured and properly tested with the migration test site, Ask the ShotGrid team to start the migration process in support ticket/slack. - * ShotGrid will clone your production site database to your migration test site. - * You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. - * You can now test your site to be sure your existing media is available. +- ShotGrid will clone your production site database to your migration test site. +- You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. +- You can now test your site to be sure your existing media is available. ## Final migration The second test is to definitly migrate your site to use your own S3 bucket. - * You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. - * ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. - * You will do a final media sync. - +- You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. +- ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. +- You will do a final media sync. diff --git a/docs/ko/trusted-solutions/tier1/setup/planning.md b/docs/ko/trusted-solutions/tier1/setup/planning.md index 25183478e..14c564880 100644 --- a/docs/ko/trusted-solutions/tier1/setup/planning.md +++ b/docs/ko/trusted-solutions/tier1/setup/planning.md @@ -12,10 +12,11 @@ lang: en ## Pick your options Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication + +- Media Isolation +- Media Traffic Isolation +- Web Traffic Isolation +- Media Replication ## AWS Account Creation @@ -33,20 +34,19 @@ Plan your AWS VPC and subnets IP ranges. ### IP Range Example -| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | -|--------|-----|----------|----------|----------| +| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | +| -------------- | ----------- | ----------- | ----------- | ----------- | | ap-southeast-2 | 10.1.0.0/16 | 10.1.0.0/24 | 10.1.1.0/24 | 10.1.2.0/24 | - ### Plan how you will privately access your AWS VPC If you plan to activate any of the Traffic Isolation feature, you will need a way to connect your AWS VPC and your network infrastructure. The main options are: - * AWS Direct Connect - * Other VPN solution +- AWS Direct Connect +- Other VPN solution We highly recommand you to leverage Direct Connect. Direct Connect guarantees the lowest latency possible to the ShotGrid services, a consistent network experience, and allow you to leverage the optimization AWS is relying on to guarantee an optimal performance across the globe. ## Next Step -With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) \ No newline at end of file +With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) diff --git a/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md b/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md index 9aeff3531..60461db9e 100644 --- a/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md +++ b/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md @@ -20,15 +20,15 @@ It's possible to start from the [Private S3 bucket AWS CloudFormation template]( {% include info title="Disclaimer" content="This template is provided as an example only. It is your responsibility to validate that running the template will result in the [configuration/policy/security settings your studio requires](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - * Go the CloudFormation service in AWS Console - * Select Template is ready - * Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml - * Next - * Set a stack name like shotgun-s3-bucket - * Set your S3 bucket name and your ShotGrid site name - * Next - * Accept `I acknowledge that AWS CloudFormation might create IAM resources` - * Next +- Go the CloudFormation service in AWS Console +- Select Template is ready +- Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml +- Next +- Set a stack name like shotgun-s3-bucket +- Set your S3 bucket name and your ShotGrid site name +- Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Next ### CORS Configuration @@ -38,15 +38,16 @@ CORS policy on your S3 bucket will be minimally configured, allowing only the re The template will create an AWS Role with the following permissions on your bucket: -* Allow ShotGrid to access your S3 bucket. -* Allow the ShotGrid account to assume the role by setting the role Trust Relationship. +- Allow ShotGrid to access your S3 bucket. +- Allow the ShotGrid account to assume the role by setting the role Trust Relationship. ## Media Isolation Activation Please contact ShotGrid support via the dedicated Slack channel and provide the following information: - * S3 bucket name - * AWS Region - * ShotGrid Role ARN + +- S3 bucket name +- AWS Region +- ShotGrid Role ARN ShotGrid will configure your test site to use your own S3 bucket. @@ -70,4 +71,3 @@ See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffi See [Media Replication](./s3_replication.md) to activate the Web Traffic Isolation feature. Go to [Setup](./setup.md) for an overview of the possible next steps. - diff --git a/docs/ko/trusted-solutions/tier1/setup/s3_replication.md b/docs/ko/trusted-solutions/tier1/setup/s3_replication.md index 253d586f4..ca5d3dd45 100644 --- a/docs/ko/trusted-solutions/tier1/setup/s3_replication.md +++ b/docs/ko/trusted-solutions/tier1/setup/s3_replication.md @@ -15,7 +15,7 @@ It's possible to add S3 replication between two S3 buckets in different regions ## Features - * Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +- Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) ## How it works @@ -23,30 +23,30 @@ When S3 bucket replication is activated, users will be able download media files For each user, the S3 replication is activated by the `Use S3 Replication` field. -| Value| Behavior | -|------|----------------------------------------------| -|`no` | Never use replica S3 bucket (default)| -|`yes` | Use replica S3 bucket when delay is over| -|`auto`| Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range| +| Value | Behavior | +| ------ | ------------------------------------------------------------------------------------------------------- | +| `no` | Never use replica S3 bucket (default) | +| `yes` | Use replica S3 bucket when delay is over | +| `auto` | Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range | The `IP Adresses for S3 replication` preference can be edited in Site Preferences under the Isolation category. ## Limitations - * Only one replica S3 bucket can be configured - * Only downloading from the replica bucket is supported - * Configurable delay for new media to be replicated before being made available to users +- Only one replica S3 bucket can be configured +- Only downloading from the replica bucket is supported +- Configurable delay for new media to be replicated before being made available to users # Setup steps - * Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) - * Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket - * Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) - * Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) - * Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: - * Replica Bucket Name - * Replica Bucket Region - * Replica S3 proxy URL +- Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) +- Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket +- Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) +- Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) +- Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: + - Replica Bucket Name + - Replica Bucket Region + - Replica S3 proxy URL ## FAQ @@ -58,4 +58,4 @@ S3 replication only applies to media uploaded after the feature has been enabled See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ko/trusted-solutions/tier1/setup/setup.md b/docs/ko/trusted-solutions/tier1/setup/setup.md index ba2a55aff..259fcf035 100644 --- a/docs/ko/trusted-solutions/tier1/setup/setup.md +++ b/docs/ko/trusted-solutions/tier1/setup/setup.md @@ -9,18 +9,20 @@ lang: en Isolation the isolation features are independent of each other, and can be activated independently of each other. Media replication have as pre-requisite for Media Isolation to be implemented. -The setup process will depend on which feature you want to activate for your site. +The setup process will depend on which feature you want to activate for your site. ## In This Section + -* [Planning your Setup](./planning.md) -* [Migration Test Site](./shotgun_poc_site.md) -* [Media Isolation](./s3_bucket.md) -* [Media Traffic Isolation](./media_segregation.md) -* [Web Traffic Isolation](./traffic_segregation.md) -* [Media Replication](./s3_replication.md) -* [Isolation Fine Tuning](./tuning.md) -* [Migration](./migration.md) + +- [Planning your Setup](./planning.md) +- [Migration Test Site](./shotgun_poc_site.md) +- [Media Isolation](./s3_bucket.md) +- [Media Traffic Isolation](./media_segregation.md) +- [Web Traffic Isolation](./traffic_segregation.md) +- [Media Replication](./s3_replication.md) +- [Isolation Fine Tuning](./tuning.md) +- [Migration](./migration.md) # Setup Overview diff --git a/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md index c7743da2c..f2bebd159 100644 --- a/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ b/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md @@ -21,4 +21,4 @@ See [Media Isolation](./s3_bucket.md) for activating the Media Isolation feature See [Web Traffic Isolation](./traffic_segregation.md) for activating the Web Traffic Isolation feature. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md index db831884a..9fd3a90e4 100644 --- a/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md +++ b/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md @@ -11,19 +11,18 @@ The goal is to set up an AWS PrivateLink to privately access your ShotGrid site. ## Set up PrivateLink to ShotGrid - * Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. +- Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. - * Update the private VPC CloudFormation stack you created earlier and set ShotGridPrivateServiceName parameter. +- Update the private VPC CloudFormation stack you created earlier and set ShotGridPrivateServiceName parameter. ### Manual steps if needed - * Add a new VPC Endpoint in your VPC +- Add a new VPC Endpoint in your VPC - * For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. +- For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. ![Create endpoint](../images/tier1-endpoint-create_privatelink.png) - ## DNS Configuration Provide your PrivateLink DNS name to ShotGrid support. We will setup a new private URL for your site that will look like `mystudio-staging.priv.shotgunstudio.com`. @@ -42,4 +41,4 @@ Try to access your test site from inside your office ie https://mystudio-staging See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ko/trusted-solutions/tier1/setup/tuning.md b/docs/ko/trusted-solutions/tier1/setup/tuning.md index df4b6060f..ce0bc5047 100644 --- a/docs/ko/trusted-solutions/tier1/setup/tuning.md +++ b/docs/ko/trusted-solutions/tier1/setup/tuning.md @@ -74,8 +74,8 @@ We recommend setting a VPC endpoint policy on your S3 endpoint to allow access t ## Application Load Balancer - * We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. - * We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. +- We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. +- We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. ## Next Steps diff --git a/docs/zh_CN/event-daemon/event-daemon-api.md b/docs/zh_CN/event-daemon/event-daemon-api.md index 282ac7c02..6476c7983 100644 --- a/docs/zh_CN/event-daemon/event-daemon-api.md +++ b/docs/zh_CN/event-daemon/event-daemon-api.md @@ -8,16 +8,17 @@ lang: zh_CN # API + ## registerCallbacks 所有插件中的全局级别函数,用于告知框架有关插件中事件处理入口点的信息。 **registerCallbacks(reg)** -* reg:您将与之进行交互,以告知框架要调用哪些函数的 [`Registrar`](#Registrar)。 - +- reg:您将与之进行交互,以告知框架要调用哪些函数的 [`Registrar`](#Registrar)。 + ## Registrar Registrar 是用于告知框架如何与插件交互的对象。它将传递到 [`registerCallbacks`](#registerCallbacks) 函数。 @@ -36,9 +37,7 @@ Registrar 是用于告知框架如何与插件交互的对象。它将传递到 获取用于从插件中记录消息的 Python Logger 对象。 - - -__setEmails(*emails)__ +**setEmails(\*emails)** 设置当此插件或其任何回调中发生错误时应接收错误和重要通知的电子邮件。 @@ -71,12 +70,12 @@ reg.setEmails('user1@domain.com', 'user2@domain.com') 将回调注册到此插件的插件。 -* `sgScriptName`:从 {% include product %} 脚本页面获取的脚本的名称。 -* `sgScriptKey`:从 {% include product %} 脚本页面获取的脚本的应用程序密钥。 -* `callback`:具有 `__call__` 方法的函数或对象。请参见 [`exampleCallback`](#exampleCallback)。 -* `matchEvents`:要传递到回调的事件的过滤器。 -* `args`:希望框架重新传递到回调的任何对象。 -* `stopOnError`:布尔值,此回调中出现异常会导致此插件中的所有回调停止处理事件。默认值为 `True`。 +- `sgScriptName`:从 {% include product %} 脚本页面获取的脚本的名称。 +- `sgScriptKey`:从 {% include product %} 脚本页面获取的脚本的应用程序密钥。 +- `callback`:具有 `__call__` 方法的函数或对象。请参见 [`exampleCallback`](#exampleCallback)。 +- `matchEvents`:要传递到回调的事件的过滤器。 +- `args`:希望框架重新传递到回调的任何对象。 +- `stopOnError`:布尔值,此回调中出现异常会导致此插件中的所有回调停止处理事件。默认值为 `True`。 `sgScriptName` 用于标识 {% include product %} 的插件。任何名称都可以在任意数量的回调之间共享,也可以是单个回调的唯一名称。 @@ -125,7 +124,7 @@ matchEvents = { } ``` -与非特定于字段的事件类型(如“_New”或“_Retirement”)进行匹配时,不提供列表,而是将 `None` 作为值进行传递。 +与非特定于字段的事件类型(如“\_New”或“\_Retirement”)进行匹配时,不提供列表,而是将 `None` 作为值进行传递。 ```python matchEvents = { @@ -142,6 +141,7 @@ matchEvents = { `stopOnError` 参数会告知系统此回调中的异常是否会导致插件中所有回调的事件处理停止。默认情况下,此参数为 `True`,但可以切换为 `False`。如果存在任何错误但事件处理不停止,您仍会收到错误通知邮件。根据回调设置,您可以具有一些关键回调,对于这些回调,此参数为 `True`,对于其他回调则为 `False`。 + ## 回调 [`Registrar.registerCallback`](#registerCallback) 注册的任何插件入口点通常为如下所示的全局级别函数: @@ -149,9 +149,9 @@ matchEvents = { **exampleCallback(sg, logger, event, args)** -* `sg`:{% include product %} 连接实例。 -* `logger`:为您预先配置的 Python logging.Logger 对象。 -* `event`:要处理的 {% include product %} 事件。 -* `args`:在回调注册时指定的 args 参数。 +- `sg`:{% include product %} 连接实例。 +- `logger`:为您预先配置的 Python logging.Logger 对象。 +- `event`:要处理的 {% include product %} 事件。 +- `args`:在回调注册时指定的 args 参数。 {% include info title="注意" content="可以在对象实例上将回调作为 `__call__` 方法实施,我们将此留给用户做练习。" %} diff --git a/docs/zh_CN/event-daemon/event-daemon-configuration.md b/docs/zh_CN/event-daemon/event-daemon-configuration.md index 8de9a6b77..20b9e133f 100644 --- a/docs/zh_CN/event-daemon/event-daemon-configuration.md +++ b/docs/zh_CN/event-daemon/event-daemon-configuration.md @@ -14,6 +14,7 @@ lang: zh_CN {% include info title="注意" content="**对于 Windows:**Windows 用户需要将配置文件中的所有路径更改为等效的 Windows 路径。为了简化起见,我们建议将所有路径(包括日志记录)保留在一个位置。在提及 Windows 路径时,本文档往往是指 `C:\shotgun\shotgunEvents`。" %} + ## 编辑 shotgunEventDaemon.conf 安装 {% include product %}Events 后,下一步是在文本编辑器中打开 `shotgunEventDaemon.conf` 文件,然后修改设置以符合您工作室的需求。默认值适用于大多数工作室,但某些设置没有默认值,您需要提供值才能运行进程。 @@ -29,6 +30,7 @@ lang: zh_CN 还有一个可选的计时日志部分,如果进程遇到性能问题,该日志有助于进行疑难解答。启用计时日志记录将使用计时信息填充自己单独的日志文件。 + ### {% include product %} 设置 在 `[{% include product %}]` 部分下,将默认令牌替换为 `server`、`name` 和 `key` 的正确值。这些值应与您为连接到 {% include product %} 的标准 API 脚本提供的值相同。 @@ -42,6 +44,7 @@ key: e37d855e4824216573472846e0cb3e49c7f6f7b1 ``` + ### 插件设置 您需要告知 {% include product %}EventDaemon 在何处查找要运行的插件。在 `[plugins]` 部分下,将默认令牌替换为 `paths` 的正确值。 @@ -57,6 +60,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins 首次启动时,一个很好的测试插件是位于 `/usr/local/shotgun/{% include product %}Events/src/examplePlugins` 目录中的 `logArgs.py` 插件。将其复制到您指定的插件文件夹,然后我们将使用它进行测试。 + ### shotgunEventDaemon.conf 的位置 默认情况下,进程将在 {% include product %}EventDaemon.py 所在的目录和 `/etc` 目录中查找 shotgunEventDaemon.conf 文件。如果需要将 conf 文件放置在其他目录中,建议您从当前目录创建它的符号链接。 @@ -66,6 +70,7 @@ paths: /usr/local/shotgun/{% include product %}Events/plugins {% include info title="注意" content="**对于 Windows:**`/etc` 在 Windows 上不存在,因此配置文件应放在与 Python 文件相同的目录中。" %} + ## 测试进程 进程可能很难测试,因为它们在后台运行。并非始终有明显的方法来查看它们正在执行的操作。幸运的是,对于我们而言,{% include product %}EventDaemon 有一个选项可以将其作为前台进程运行。现在我们已完成最低要求的设置,接下来我们来测试进程并查看具体情况。 @@ -85,7 +90,7 @@ INFO:engine:Last event id (248429) from the {% include product %} database. {% include info title="注意" content="logArgs.py 文件中包含需要用适当值填充的变量。必须对“$DEMO_SCRIPT_NAMES$”和“$DEMO_API_KEY$”进行编辑,以包含在 shotgunEventDaemon.conf 文件中使用的相同值,以便日志记录能够正常运行。" %} -如果没有任何内容记录到日志文件中,请在 {% include product %}EventDaemon.conf 中检查与日志相关的设置,确保将 ``logging`` 值设置为记录 INFO 级别的消息, +如果没有任何内容记录到日志文件中,请在 {% include product %}EventDaemon.conf 中检查与日志相关的设置,确保将 `logging` 值设置为记录 INFO 级别的消息, ``` logging: 20 @@ -100,6 +105,7 @@ reg.logger.setLevel(logging.INFO) 假设所有内容看起来都正常,要停止 {% include product %}EventDaemon 进程,只需在终端中键入 `-c`,您应该会看到脚本终止。 + ## 运行进程 假设测试进展顺利,我们现在可以在后台按预期运行进程。 @@ -134,14 +140,16 @@ $ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon 2011-09-09 09:45:31,228 - plugin.logArgs.logArgs - INFO - {'attribute_name': 'sg_status_list', 'event_type': 'Shotgun_Shot_Change', 'entity': {'type': 'Shot', 'name': 'bunny_010_0010', 'id': 860}, 'project': {'type': 'Project', 'name': 'Big Buck Bunny', 'id': 65}, 'meta': {'entity_id': 860, 'attribute_name': 'sg_status_list', 'entity_type': 'Shot', 'old_value': 'omt', 'new_value': 'ip', 'type': 'attribute_change'}, 'user': {'type': 'HumanUser', 'name': 'Kevin Porterfield', 'id': 35}, 'session_uuid': '450e4da2-dafa-11e0-9ba7-0023dffffeab', 'type': 'EventLogEntry', 'id': 276560} ``` -输出的确切详细信息将有所不同,但您应看到插件已执行预期的操作,即,将事件记录到日志文件中。同样,如果未看到任何内容记录到日志文件中,请在 {% include product %}EventDaemon.conf 中检查与日志相关的设置,确保 ``logging`` 值设置为记录 INFO 级别的消息,且 logArgs 插件也配置为显示 INFO 级别的消息。 +输出的确切详细信息将有所不同,但您应看到插件已执行预期的操作,即,将事件记录到日志文件中。同样,如果未看到任何内容记录到日志文件中,请在 {% include product %}EventDaemon.conf 中检查与日志相关的设置,确保 `logging` 值设置为记录 INFO 级别的消息,且 logArgs 插件也配置为显示 INFO 级别的消息。 + ### 关于日志记录的注释 应该注意的是,日志轮换是 {% include product %} 进程的一项功能。日志每晚在午夜轮换,每个插件保留十个每日文件。 + ## 常见错误 下面介绍可能遇到的一些常见错误以及如何解决这些错误。如果您感觉非常困难,请随时联系 {% include product %} 软件团队 (support@shotgunsoftware.com),我们将帮助您解决问题。 @@ -163,9 +171,11 @@ $ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon 如果必须以 sudo 身份运行,并且您认为 `PYTHONPATH` 设置正确,请记住 sudo 会重置环境变量。您可以编辑 sudoers 文件以保留 `PYTHONPATH` 或运行 sudo -e(?) + ## 配置文件设置列表 + ### 进程设置 以下是常规进程操作设置。 @@ -205,7 +215,7 @@ logMode: 1 **logPath** -放置日志文件的路径(主插件和插件日志文件)。主日志文件的名称由下面的 ``logFile`` 设置控制。 +放置日志文件的路径(主插件和插件日志文件)。主日志文件的名称由下面的 `logFile` 设置控制。 ``` logPath: /var/log/shotgunEventDaemon @@ -224,6 +234,7 @@ logFile: shotgunEventDaemon **日志记录** 发送到日志文件的日志消息的阈值级别。此值是主分派插件的默认值,可以基于每个插件覆盖该值。此值将传递到 Python 日志记录模块。最常用的值为: + - **10:**调试 - **20:**信息 - **30:**警告 @@ -274,6 +285,7 @@ fetch_interval = 5 ``` + ### {% include product %} 设置 以下是与 {% include product %} 实例相关的设置。 @@ -322,6 +334,7 @@ use_session_uuid: True {% include info title="注意" content="ShotGrid UI 将*仅*显示繁殖原始事件的浏览器会话的实时更新。其他打开相同页面的浏览器窗口不会看到实时更新。" %} + ### 插件设置 **路径** @@ -335,6 +348,7 @@ paths: /usr/local/shotgun/plugins {% include info title="注意" content="此处没有默认值。您必须将该值设置为插件文件的位置(即:`/usr/local/shotgun/shotgunEvents/plugins` 或 `C:\shotgun\shotgunEvents\plugins`(在 Windows 上))" %} + ### 电子邮件设置 这些参数用于错误报告,因为我们发现您不会一直在跟踪日志,而是会有一个活动的通知系统。 diff --git a/docs/zh_CN/event-daemon/event-daemon-example-plugins.md b/docs/zh_CN/event-daemon/event-daemon-example-plugins.md index 2ded96bab..486e2f0fc 100644 --- a/docs/zh_CN/event-daemon/event-daemon-example-plugins.md +++ b/docs/zh_CN/event-daemon/event-daemon-example-plugins.md @@ -12,8 +12,11 @@ lang: zh_CN 此页面包含几个简单的示例,可供任何人入门使用。您可以复制/粘贴此代码,它应该可以正常运行(注意:您需要将 `script_name` 和 `script_key` 值更新为特定于您的安装的内容) 首先,这里有一个模板,所有 SG 事件代码都应基于此模板编写 + ## 1. 代码模板 + ### 复制/粘贴此代码以在新插件上使用 + ```python """ Necessary Documentation of the code @@ -51,11 +54,15 @@ def registerCallbacks(reg): # } def entry_function_call(sg, logger, event, args): # Now do stuff - pass + pass ``` + ## 2. 注释主题重命名 + ### 使用 `New` 实体事件 + 这是一个很好的起点,因为它很简单,而且还能处理捕捉 `Shotgun_Entity_New` 事件的棘手方面... + ```python import time from pprint import pprint @@ -98,14 +105,18 @@ def Function_Name(sg, logger, event, args): logger.info('Dates are not prepended for notes in project id 116 - Software Development') return ``` + 请注意函数主体第一行的 `sleep` 调用。这与 `new` 事件的处理方式有关。 + 1. 在 SG 中创建新实体时,它仍然是非成形的 - 这意味着它不具备完全定义该实体所需的所有习惯属性。实际上,在本示例中,我甚至无法保证在 SG 发出 `Shotgun_Note_New` 事件时,`subject` 属性将位于注释实体上。 2. 为了添加所有必需的属性,SG 将发布一系列 `Shotgun_Note_Change` 事件,其中 SG 会将每个属性添加到实体并更新这些属性的值(如果需要)。 3. 这表示将创建多种事件,这意味着如果您需要存在两个不同的属性,而您未在代码中写入 `sleep` 内容,则必须对所有 `Shotgun_Note_Change` 事件和内部元数据进行筛选,以便仅查找那些添加了新属性并设置了值的事件。这是一个繁琐的过程,并且将处理许多 `Shotgun_Note_Change` 事件,从而在创建时有效查找每个注释的一个事件。 4. 我发现的解决方案是依赖 `Shotgun_Entity_New`,让脚本休眠一小段时间。在休眠结束时,SG 应该已更新实体所需的所有属性,然后您可以针对所需的任何字段重新查询同一实体 ## 2. 字段删除警告 + ### 生成注释、将字段作为实体使用以及实体停用事件 + ```python """ @@ -202,4 +213,5 @@ def trashedFieldWarning(sg, logger, event, args): CreateNote(sg, logger, event) ``` + 这是一个非常简单的脚本。检查已删除的字段时没有特殊逻辑。如果删除了某个字段,则会创建一个注释并将其发送给需要了解的一组人员。在我的部门,我们将组 ID 设置为“程序员”组,并将注释的项目 ID 设置为“开发”项目。 diff --git a/docs/zh_CN/event-daemon/event-daemon-installation.md b/docs/zh_CN/event-daemon/event-daemon-installation.md index ac03bd7be..d0cbfbd61 100644 --- a/docs/zh_CN/event-daemon/event-daemon-installation.md +++ b/docs/zh_CN/event-daemon/event-daemon-installation.md @@ -5,23 +5,24 @@ pagename: event-daemon-installation lang: zh_CN --- - # 安装 以下手册将帮助您为您的工作室设置 {% include product %}Events。 + ## 系统要求 进程可以在已安装 Python 且对 {% include product %} 服务器具有网络访问权限的任何计算机上运行。它**不**需要在 {% include product %} 服务器本身上运行。实际上,如果您使用的是 {% include product %} 的托管版本,这不是可用选项。但是,您可以根据需要在 {% include product %} 服务器上运行它。否则,您可以使用任何服务器。 -* Python v2.6、v2.7 或 3.7 -* [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) - * 对于 Python v2.6 或 v2.7,应使用 v3.0.37 或更高版本,对Python 3.7,则应使用 v3.1.0 或更高版本。 - * 无论是哪种情况,我们都强烈建议使用[最新版本的 Python API](https://github.com/shotgunsoftware/python-api/releases),并随时更新此依存项。 -* 对 {% include product %} 服务器的网络访问权限 +- Python v2.6、v2.7 或 3.7 +- [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) + - 对于 Python v2.6 或 v2.7,应使用 v3.0.37 或更高版本,对 Python 3.7,则应使用 v3.1.0 或更高版本。 + - 无论是哪种情况,我们都强烈建议使用[最新版本的 Python API](https://github.com/shotgunsoftware/python-api/releases),并随时更新此依存项。 +- 对 {% include product %} 服务器的网络访问权限 + ## 安装 {% include product %} API 假设您的计算机上已安装 Python,现在需要安装 {% include product %} Python API,以便 {% include product %} Event 进程可以使用它来连接您的 {% include product %} 服务器。您可以通过多种方式完成此操作: @@ -45,6 +46,7 @@ ImportError: No module named shotgun_api3 ``` + ## 安装 {% include product %}Events {% include product %}Events 的安装位置完全由您决定。同样,只要计算机上安装了 Python 和 {% include product %} API,并且计算机具有 {% include product %} 服务器的网络访问权限,就可以从任意位置运行。但是,如果安装位置能够为工作室提供方便,那自然是再好不过了,比如说 `/usr/local/shotgun/shotgunEvents` 就很方便。因此,下面我们就以此为例进行介绍。 @@ -54,6 +56,7 @@ ImportError: No module named shotgun_api3 {% include info title="注意" content="**对于 Windows:**如果有 Windows 服务器,那么您可以使用 `C:\shotgun\shotgunEvents`,但是,在本文档中,我们使用的是 Linux 路径。" %} + ### 克隆源 如果已在计算机上安装 `git`,那么抓取源时最简单方法就是克隆项目。这样,您还可以轻松获取所有已承诺的更新,以确保您随时获取错误修复和新功能。 @@ -66,6 +69,7 @@ $ git clone git://github.com/shotgunsoftware/shotgunEvents.git {% include info title="警告" content="请务必确保先备份您的配置、插件和对 shotgunEvents 所做的任何修改,然后再通过 GitHub 引入更新,以免数据丢失。或者,您也可以自己 Fork 项目,以便保留自己的更改存储库。:)" %} + ### 下载归档 如果您的计算机上没有 `git`,或者您只是想下载源的归档,则可以按照以下步骤进行操作。 @@ -108,6 +112,7 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src ``` + ### 安装要求 在库的根目录下提供了一个 `requirements.txt` 文件。您应使用此文件来安装所需的软件包。 @@ -116,14 +121,14 @@ drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src $ pip install -r /path/to/requirements.txt ``` - + ### Windows 特定注意事项 Windows 系统上需要具有以下其中一项: -* 已安装 [PyWin32](http://sourceforge.net/projects/pywin32/) 的 Python -* [Active Python](http://www.activestate.com/activepython) +- 已安装 [PyWin32](http://sourceforge.net/projects/pywin32/) 的 Python +- [Active Python](http://www.activestate.com/activepython) Active Python 附带 PyWin32 模块,在集成 {% include product %} Event 进程和 Windows 服务架构时,需要用到此模块。 diff --git a/docs/zh_CN/event-daemon/event-daemon-plugins.md b/docs/zh_CN/event-daemon/event-daemon-plugins.md index 21100c619..a17efadaa 100644 --- a/docs/zh_CN/event-daemon/event-daemon-plugins.md +++ b/docs/zh_CN/event-daemon/event-daemon-plugins.md @@ -7,7 +7,7 @@ lang: zh_CN # 插件概述 -插件文件是配置文件中指定的插件路径中的任何 *.py* 文件。 +插件文件是配置文件中指定的插件路径中的任何 _.py_ 文件。 在您下载的代码中,`src/examplePlugins` 文件夹中提供了一些示例插件。其中通过简单的示例介绍了如何构建自己的插件来查找所生成的特定事件,并对这些事件执行操作,从而更改 {% include product %} 实例上的其他值。 @@ -18,6 +18,7 @@ lang: zh_CN {% include product %} 事件处理插件有两个主要部分:回调注册函数和任意数量的回调。 + ## registerCallbacks 函数 要想由框架加载插件,此插件至少应执行以下函数: @@ -38,6 +39,7 @@ def registerCallbacks(reg): 您可以根据需要注册任意数量的函数,而不需要将文件中的所有函数注册为事件处理回调。 + ## 回调 通过系统注册的回调必须使用四个参数: @@ -50,6 +52,7 @@ def registerCallbacks(reg): {% include info title="警告" content="您可以在插件中采取任何操作,但如果导致框架出现任何异常,系统将停用故障回调(及所有内含回调)所在的插件,直至磁盘上的文件发生变化(显示“已修复”)。" %} + ## 日志记录 建议不要在事件插件中使用输出语句。而应使用 Python 标准库中的标准日志记录模块。系统会向您的众多函数提供一个日志记录程序对象 @@ -71,6 +74,7 @@ def exampleCallback(sg, logger, event, args): 如果事件框架作为进程运行,则其会记录到文件,否则,将记录到标准输出。 + ## 构建强大的插件 该进程针对 {% include product %} 运行查询,但进程具有内置功能,可在 find() 命令无法生效时重试此命令,从而为进程本身赋予一定的稳定性。 diff --git a/docs/zh_CN/event-daemon/event-daemon-technical-details.md b/docs/zh_CN/event-daemon/event-daemon-technical-details.md index 546815d09..841da93e8 100644 --- a/docs/zh_CN/event-daemon/event-daemon-technical-details.md +++ b/docs/zh_CN/event-daemon/event-daemon-technical-details.md @@ -8,6 +8,7 @@ lang: zh_CN # 技术概述 + ## 事件类型 您的触发器可以注册以接收通知的事件类型通常遵循以下形式:`Shotgun_[entity_type]_[New|Change|Retirement|Revival]`。下面是这种模式的一些示例: @@ -34,13 +35,16 @@ lang: zh_CN Toolkit_Desktop_ProjectLaunch Toolkit_Desktop_AppLaunch Toolkit_Folders_Create - Toolkit_Folders_Delete + Toolkit_Folders_Delete 此列表并不完整,但是是一个很好的起点。如果您想要了解有关 {% include product %} 站点上的活动和事件类型的详细信息,请参考事件日志条目页面。在此页面上,您可以像任何其他实体类型的任何其他网格页面一样进行过滤和搜索。 ### 缩略图的事件日志条目 -每次为实体上传新缩略图时,系统都会使用 ``` `Type` == `Shotgun__Change` ```(例如 `Shotgun_Shot_Change`)创建事件日志条目。 -1. ```‘is_transient’``` 字段值设置为 true: + +每次为实体上传新缩略图时,系统都会使用 `` `Type` == `Shotgun__Change` ``(例如 `Shotgun_Shot_Change`)创建事件日志条目。 + +1. `‘is_transient’` 字段值设置为 true: + ``` { "type": "attribute_change","attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -48,7 +52,9 @@ lang: zh_CN "is_transient": true } ``` -2. 当缩略图可用时,将创建一个新的事件日志条目,此时 ```‘is_transient’``` 字段值设置为 false: + +2. 当缩略图可用时,将创建一个新的事件日志条目,此时 `‘is_transient’` 字段值设置为 false: + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -56,7 +62,9 @@ lang: zh_CN "is_transient": false } ``` + 3. 如果我们再次更新缩略图,即可得到这些新事件日志条目: + ``` { "type": "attribute_change", "attribute_name": "image", "entity_type": "Shot", "entity_id": 1286, "field_data_type": "image", @@ -69,10 +77,11 @@ lang: zh_CN "is_transient": false } ``` -4. 请注意,当附件的缩略图为占位符缩略图时,```‘old_value’``` 字段将设置为空。 +4. 请注意,当附件的缩略图为占位符缩略图时,`‘old_value’` 字段将设置为空。 + ## 插件处理顺序 始终按相同的可预测顺序处理每个事件,如此一来,如果任何插件或回调存在相互依赖关系,即可放心地对其处理工作进行规划。 @@ -88,6 +97,7 @@ lang: zh_CN 我们建议将需要在一定程度上共享状态的功能保存在与一个或多个回调相同的插件中。 + ## 共享状态 有许多选项可用于需要共享状态的多个回调。 @@ -97,8 +107,8 @@ lang: zh_CN - 一个在调用 [`Registrar.registerCallback`](API#wiki-registerCallback) 时传入 `args` 参数的可变要素。一个设计状态对象,或仅仅是一个 `dict`。首选。 - 在对象实例上执行回调(如 `__call__`),并在回调对象初始化时提供一些共享状态对象。最强大但也最复杂的方法。与上述 args 参数方法相比,可能有些不必要。 - + ## 事件积压 该框架旨在让每个插件对其感兴趣的每个事件进行一次处理,并且不会出现异常。为确保实现这一目标,框架会存储每个插件积压的未处理事件,并记住为每个插件提供的最后一个事件。下面简单介绍了可能出现积压的一些情况。 @@ -117,4 +127,4 @@ lang: zh_CN 在已修复的插件追赶进度时,其他插件会忽略相应事件,确保相同的插件不会对任何一个事件进行两次处理。此时,系统会显示“事件 X 过于久远。最后处理的事件是(Y)”(Event X is too old. Last event processed is (Y))消息。这是调试消息,可以放心地忽略。 -目前没有正式的方法来跳过这一提示。该框架旨在确保每个插件仅对每个事件进行一次处理。但是,如果您了解 Python 及其 pickle 数据格式,那么您可以停止进程,通过 Python 解释器/交互式 Shell 打开 .id 文件,然后利用 pickle 模块解码文件内容并加以编辑,以便移除存储的ID,这样就可以跳过累积积压工作了。我们不支持这种做法,风险由您自行承担。请在执行此操作之前正确备份 `.id` 文件。 +目前没有正式的方法来跳过这一提示。该框架旨在确保每个插件仅对每个事件进行一次处理。但是,如果您了解 Python 及其 pickle 数据格式,那么您可以停止进程,通过 Python 解释器/交互式 Shell 打开 .id 文件,然后利用 pickle 模块解码文件内容并加以编辑,以便移除存储的 ID,这样就可以跳过累积积压工作了。我们不支持这种做法,风险由您自行承担。请在执行此操作之前正确备份 `.id` 文件。 diff --git a/docs/zh_CN/event-daemon/event-daemon.md b/docs/zh_CN/event-daemon/event-daemon.md index d36960d81..445e71642 100644 --- a/docs/zh_CN/event-daemon/event-daemon.md +++ b/docs/zh_CN/event-daemon/event-daemon.md @@ -5,13 +5,12 @@ pagename: event-daemon lang: zh_CN --- - # {% include product %} 事件框架 + 该软件最初由 [Patrick Boucher](http://www.patrickboucher.com) 开发,[Rodeo Fx](http://rodeofx.com) 和 Oblique 提供支持。该软件现已加入 [{% include product %} Software](http://www.shotgunsoftware.com) 的[开源计划](https://github.com/shotgunsoftware)。 该软件根据 MIT 许可提供;如需获取该许可,请访问 LICENSE 文件或[开源计划](http://www.opensource.org/licenses/mit-license.php)网站。 - ## 概述 如果要访问 {% include product %} 事件流,首选方法是监视事件表、获取任何新事件并对其进行处理,然后重复上述动作。 @@ -40,9 +39,7 @@ lang: zh_CN - 将任意数量的回调注册到框架。 - 每当框架提供一个事件时,便处理该事件。 - ## 框架的优点 - 为所有脚本使用一个监视机制,而不是为每个脚本使用一个。 - 可最大限度地减轻网络和数据库负载(仅使用一个监视器向多个事件处理插件提供事件)。 - diff --git a/docs/zh_CN/guides/pipeline-integrations.md b/docs/zh_CN/guides/pipeline-integrations.md index f0070f117..3e6e12af2 100644 --- a/docs/zh_CN/guides/pipeline-integrations.md +++ b/docs/zh_CN/guides/pipeline-integrations.md @@ -7,4 +7,4 @@ lang: zh_CN # Pipeline Integrations -在这里,您可以找到手册、教程、视频和其他内容,帮助您作为 Toolkit 开发人员快速入门。 \ No newline at end of file +在这里,您可以找到手册、教程、视频和其他内容,帮助您作为 Toolkit 开发人员快速入门。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration.md b/docs/zh_CN/guides/pipeline-integrations/administration.md index c6c288e4f..2ae78c0bb 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration.md @@ -5,4 +5,4 @@ pagename: toolkit-administration lang: zh_CN --- -# Administration \ No newline at end of file +# Administration diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md b/docs/zh_CN/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md index a7f7fcb8d..0c4745d4b 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md @@ -21,11 +21,11 @@ _本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信 Toolkit 有三个主要组件: -- __插件 - 在宿主应用程序(如 Maya 或 Nuke)与 Sgtk 应用之间提供转换层或适配器。应用通常使用 Python 和 PySide,而插件负责以标准化方式呈现宿主应用程序,例如如果 Pyside 尚不存在的话,会在宿主应用程序之上添加 Pyside。 -- __应用 - 提供一段业务逻辑,本质上是具有某种用途的工具。我们可以手动编写应用,让它们只在特定的宿主应用程序中工作,也可以将它们设计成可在多个宿主应用程序中运行。 -- __框架 - 一个可供插件、应用或其他框架使用的库。利用框架,可以更轻松地管理多个应用之间共享的代码或行为。 +- \_\_插件 - 在宿主应用程序(如 Maya 或 Nuke)与 Sgtk 应用之间提供转换层或适配器。应用通常使用 Python 和 PySide,而插件负责以标准化方式呈现宿主应用程序,例如如果 Pyside 尚不存在的话,会在宿主应用程序之上添加 Pyside。 +- \_\_应用 - 提供一段业务逻辑,本质上是具有某种用途的工具。我们可以手动编写应用,让它们只在特定的宿主应用程序中工作,也可以将它们设计成可在多个宿主应用程序中运行。 +- \_\_框架 - 一个可供插件、应用或其他框架使用的库。利用框架,可以更轻松地管理多个应用之间共享的代码或行为。 -__环境文件包含一套插件、应用和框架的配置设置。这样一套内容称为一个环境。Sgtk 会为不同文件或不同人员启动不同的环境。例如,您可以为镜头制作和装配分别准备一个环境。每个环境各有一个 yaml 文件。 +\_\_环境文件包含一套插件、应用和框架的配置设置。这样一套内容称为一个环境。Sgtk 会为不同文件或不同人员启动不同的环境。例如,您可以为镜头制作和装配分别准备一个环境。每个环境各有一个 yaml 文件。 环境文件位于:`//software/shotgun//config/env` @@ -73,7 +73,7 @@ yaml 文件的基本格式如下: 环境文件中定义的每个应用、插件或框架各有一个 `location` 参数,用来定义要运行哪个版本的应用以及从哪里下载它。大多数情况下,这是由 `tank updates` 和 `tank install` 命令自动处理的。但是,如果您是手动编辑配置,则可使用各种选项帮助您部署 Toolkit 和设置结构: -Toolkit 目前支持使用以下位置描述符来安装和管理应用:__ +Toolkit 目前支持使用以下位置描述符来安装和管理应用:\_\_ - **app_store** 描述符表示 Toolkit 应用商店中的内容 - **{% include product %}** 描述符表示 {% include product %} 中存储的内容 @@ -90,13 +90,25 @@ Toolkit 目前支持使用以下位置描述符来安装和管理应用:__ 有时,临时禁用应用或插件可能会对您有所帮助。建议的做法是,向用来指定应用或插件加载位置的位置词典中添加一个 `disabled: true` 参数。各种位置类型都支持此语法。该语法的格式如下所示: ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "disabled": true} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "disabled": true, + } ``` 另外,如果您想让应用只在某些平台上运行,可以使用特殊设置 `deny_platforms` 加以指定: ```yaml -location: {"type": "app_store", "name": "tk-nukepublish", "version": "v0.5.0", "deny_platforms": [windows, linux]} +location: + { + "type": "app_store", + "name": "tk-nukepublish", + "version": "v0.5.0", + "deny_platforms": [windows, linux], + } ``` _deny_platforms_ 参数的值可以是 `windows`、`linux` 和 `mac`。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/beyond-your-first-project.md b/docs/zh_CN/guides/pipeline-integrations/administration/beyond-your-first-project.md index ce41da344..7e48f0955 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/beyond-your-first-project.md @@ -5,12 +5,10 @@ pagename: beyond-your-first-project lang: zh_CN --- - # 在您的第一个项目基础上更进一步 在本文中,我们将介绍使用 {% include product %} Desktop 创建并开始正常运行第一个项目之后该做些什么。其中包含相关的常见问题和主题,并列出了很多有用的文档资源。 - # 欢迎使用 Toolkit 欢迎您使用 Toolkit!如果您正在阅读本文,说明您或许已经成功使用 {% include product %} Desktop 安装了第一个 {% include product %} Pipeline Toolkit 项目。 @@ -46,7 +44,6 @@ lang: zh_CN - [Toolkit 应用程序启动器](https://support.shotgunsoftware.com/hc/zh-cn/articles/219032968) - [传递命令行参数](https://support.shotgunsoftware.com/hc/zh-cn/articles/219032968#Use%20Command%20Line%20Arguments%20at%20Launch) - ## {% include product %} 集成 Toolkit 与 {% include product %} 集成,并通过向用户界面不同部分添加特殊的 Toolkit 动作菜单项来扩展传统界面: @@ -57,15 +54,15 @@ Toolkit 与 {% include product %} 集成,并通过向用户界面不同部分 ## 向 {% include product %} 用户界面添加发布 -安装 Toolkit 后,通常有必要对 {% include product %} 用户界面布局做一些细微的调整。在您发布文件时,{% include product %} Pipeline Toolkit 可创建_发布实体_,以便向关键资产(例如镜头和资产)添加_“发布”(Publishes)选项卡_。要执行此操作,请确保您以管理员用户身份登录。首先,导航到一个资产或镜头,然后进入设计模式__: +安装 Toolkit 后,通常有必要对 {% include product %} 用户界面布局做一些细微的调整。在您发布文件时,{% include product %} Pipeline Toolkit 可创建*发布实体*,以便向关键资产(例如镜头和资产)添加*“发布”(Publishes)选项卡*。要执行此操作,请确保您以管理员用户身份登录。首先,导航到一个资产或镜头,然后进入设计模式\_\_: ![](images/Beyond-your-first-project/design_mode.png) -现在单击其中一个选项卡上的小三角形菜单,然后选择“添加新选项卡”(Add New Tab)__动作。 这将打开一个对话框 UI。将选项卡命名为“发布”(Publishes)__,并确保它与已发布文件实体__关联: +现在单击其中一个选项卡上的小三角形菜单,然后选择“添加新选项卡”(Add New Tab)**动作。 这将打开一个对话框 UI。将选项卡命名为“发布”(Publishes)**,并确保它与已发布文件实体\_\_关联: ![](images/Beyond-your-first-project/create_tab.png) -现在单击“保存”(Save)__保存更改。 这样就全部搞定了! +现在单击“保存”(Save)\_\_保存更改。 这样就全部搞定了! 注意:{% include product %} 会选择几个默认字段,供您在创建新选项卡时添加。您可能想要针对发布添加一些额外的字段。为此,可以单击新的“发布”(Publishes)选项卡下电子表格右上角的小加号按钮。我们建议您添加下列字段: @@ -93,7 +90,7 @@ Python 的路径存储在配置文件中,您可以手动编辑这些文件: 如果文件是空白的,表示您使用的是早期版本的 {% include product %} Desktop。如果是这样,只需尝试使用默认的 Python 路径更新这些空白文件即可。这些路径如下所示: -- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` +- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` - `C:\Program Files\Shotgun\Python\python.exe`Windows: - `/opt/Shotgun/Python/bin/python`Linux: @@ -147,7 +144,7 @@ Python 的路径存储在配置文件中,您可以手动编辑这些文件: Toolkit 附带一个文件夹创建系统,它会尝试自动在磁盘上创建文件夹,确保当您启动应用程序时,所有必要的结构在磁盘上都存在,并且已事先准备就绪!这方面的配置可在上面所示的 `schema` 文件夹中找到。 -另外要与此相提并论的是 Toolkit 的模板系统,__它让您可轻松定义各种可配置的文件、发布内容、工作文件、渲染等的路径。 模板存储在上面的 `templates.yml` 文件中。 +另外要与此相提并论的是 Toolkit 的模板系统,\_\_它让您可轻松定义各种可配置的文件、发布内容、工作文件、渲染等的路径。 模板存储在上面的 `templates.yml` 文件中。 结合运用项目配置的这两个部分,可以调整 Toolkit 使用的各种应用,让它们将数据写出到您的现有工作流可以识别的磁盘位置。 @@ -156,8 +153,7 @@ Toolkit 附带一个文件夹创建系统,它会尝试自动在磁盘上创建 - [文件夹配置](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033178#Creating%20folders%20on%20disk%20with%20Sgtk) - [文件系统模板](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033178#Configuring%20Templates) -Toolkit 配置本质上由一系列已配置的**应用和插件**组成。 此配置位于 `env` 文件夹中。 如果说上面讨论的文件系统配置文件定义了资源在磁盘上应该“位于何处”,__那么环境配置及其应用和插件则定义了工作流应该执行“什么操作”。__ - +Toolkit 配置本质上由一系列已配置的**应用和插件**组成。 此配置位于 `env` 文件夹中。 如果说上面讨论的文件系统配置文件定义了资源在磁盘上应该“位于何处”,**那么环境配置及其应用和插件则定义了工作流应该执行“什么操作”。** ### 核心 API 平台 @@ -178,4 +174,3 @@ Toolkit 配置本质上由一系列已配置的**应用和插件**组成。 此 Toolkit 有一个不可或缺的部分,那就是汇集了众多工作流工程师和技术主管的社区!我们的使命是打造一个充满活力、代码共享的社区。在这里,大家可以群策群力,共同帮助 Toolkit 不断发展成为一个强大并且灵活的工作流环境。 如果您有任何疑问,或者想阅读现有的帖子和话题,请访问我们的[公共论坛版块](https://support.shotgunsoftware.com/hc/zh-cn/community/topics/200682428)。 - diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/zh_CN/guides/pipeline-integrations/administration/community-shared-integrations.md index b49944c5c..5f9b9a9c2 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/community-shared-integrations.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/community-shared-integrations.md @@ -11,33 +11,33 @@ lang: zh_CN ### 引擎 ----------- - -| 集成 | 插件 | 信息 | -|:-----------:|:------:| ----------- | -| tk-katana | **tk-katana** | 项目 URL:[https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
项目参与者:[Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
项目维护者:
项目说明:{% include product %} Foundry Katana 插件 | -| image_alpha.png | **tk-unreal** | 项目 URL:[https://docs.unrealengine.com/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/index.html)
项目参与者:[Epic Games](http://epicgames.com/)
项目维护者:
项目说明:{% include product %} [Unreal Engine](https://www.unrealengine.com/zh-CN/?lang=zh-CN) 插件 | -| Substance Painter 标识 | **tk-substancepainter** | 项目 URL:[https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} Adobe Substance Painter 插件 | -| Substance Designer 标识 | **tk-substancedesigner** | 项目 URL:[https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} Adobe Substance Designer 插件
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | -| tk-modo | **tk-modo** | 项目 URL:[https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
项目参与者:Lutz Pälike 与 [Walking The Dog](http://www.walkingthedog.be/)
项目维护者:
项目说明:{% include product %} Foundry Modo 插件 | -| icon_256.png | **tk-clarisse** | 项目 URL:[https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Clarisse iFX](https://www.isotropix.com/products) 插件。Clarisse iFX 是一款用于布景、外观开发、照明和渲染的完全交互式 CG 工具组合。 | -| 1024px-Natron_icon.svg.png | **tk-natron** | 项目 URL:[https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Natron](https://natrongithub.github.io/) 插件。Natron 是一款基于节点的免费开源软件应用程序。 | -| icon_256.png | **tk-harmony** | 项目 URL:[https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Toon Boom Harmony](https://www.toonboom.com/products/harmony) 插件。Toon Boom Harmony 是卓越的制作动画软件。 | -| Cinema 4D 标识 | **tk-cinema** | 项目 URL:[https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
项目参与者:Mykhailo Datsyk
项目维护者:Mykhailo Datsyk
项目说明:{% include product %} [Maxon Cinema 4D](https://www.maxon.net/zh/cinema-4d/) 插件。Maxon Cinema 4D 是一款适合设计师使用的建模、动画和渲染工具组合。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | -| krita 标识 | **tk-krita** | 项目 URL:[https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Krita](https://krita.org/zh/) 插件。Krita 是一款免费的开源光栅图形编辑器,主要用于数字绘画和二维动画。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | -| Blender 标识 | **tk-blender** | 项目 URL:[https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Blender](https://www.blender.org/) 插件。Blender 是一款免费的开源三维计算机图形软件工具组合,可用于制作动画电影、视觉特效、美术作品、3D 打印模型、运动图形、交互式三维应用、虚拟现实和计算机游戏。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | +--- + +| 集成 | 插件 | 信息 | +| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-katana | **tk-katana** | 项目 URL:[https://github.com/robblau/tk-katana](https://github.com/robblau/tk-katana)
项目参与者:[Lightchaser Animation](https://github.com/LightChaserAnimationStudio)
项目维护者:
项目说明:{% include product %} Foundry Katana 插件 | +| image_alpha.png | **tk-unreal** | 项目 URL:[https://docs.unrealengine.com/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/index.html](https://docs.unrealengine.com/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/index.html)
项目参与者:[Epic Games](http://epicgames.com/)
项目维护者:
项目说明:{% include product %} [Unreal Engine](https://www.unrealengine.com/zh-CN/?lang=zh-CN) 插件 | +| Substance Painter 标识 | **tk-substancepainter** | 项目 URL:[https://github.com/diegogarciahuerta/tk-substancepainter](https://github.com/diegogarciahuerta/tk-substancepainter)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} Adobe Substance Painter 插件 | +| Substance Designer 标识 | **tk-substancedesigner** | 项目 URL:[https://github.com/diegogarciahuerta/tk-substancedesigner](https://github.com/diegogarciahuerta/tk-substancedesigner)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} Adobe Substance Designer 插件
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/substance-designer-shotgun-toolkit-engine-released/9944) | +| tk-modo | **tk-modo** | 项目 URL:[https://github.com/tremolo/tk-modo](https://github.com/tremolo/tk-modo)
项目参与者:Lutz Pälike 与 [Walking The Dog](http://www.walkingthedog.be/)
项目维护者:
项目说明:{% include product %} Foundry Modo 插件 | +| icon_256.png | **tk-clarisse** | 项目 URL:[https://github.com/diegogarciahuerta/tk-clarisse](https://github.com/diegogarciahuerta/tk-clarisse)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Clarisse iFX](https://www.isotropix.com/products) 插件。Clarisse iFX 是一款用于布景、外观开发、照明和渲染的完全交互式 CG 工具组合。 | +| 1024px-Natron_icon.svg.png | **tk-natron** | 项目 URL:[https://github.com/diegogarciahuerta/tk-natron](https://github.com/diegogarciahuerta/tk-natron)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Natron](https://natrongithub.github.io/) 插件。Natron 是一款基于节点的免费开源软件应用程序。 | +| icon_256.png | **tk-harmony** | 项目 URL:[https://github.com/diegogarciahuerta/tk-harmony](https://github.com/diegogarciahuerta/tk-harmony)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Toon Boom Harmony](https://www.toonboom.com/products/harmony) 插件。Toon Boom Harmony 是卓越的制作动画软件。 | +| Cinema 4D 标识 | **tk-cinema** | 项目 URL:[https://github.com/mikedatsik/tk-cinema](https://github.com/mikedatsik/tk-cinema)
项目参与者:Mykhailo Datsyk
项目维护者:Mykhailo Datsyk
项目说明:{% include product %} [Maxon Cinema 4D](https://www.maxon.net/zh/cinema-4d/) 插件。Maxon Cinema 4D 是一款适合设计师使用的建模、动画和渲染工具组合。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/shotgun-toolkit-engine-for-maxon-cinema-4d/6437) | +| krita 标识 | **tk-krita** | 项目 URL:[https://github.com/diegogarciahuerta/tk-krita](https://github.com/diegogarciahuerta/tk-krita)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Krita](https://krita.org/zh/) 插件。Krita 是一款免费的开源光栅图形编辑器,主要用于数字绘画和二维动画。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/krita-shotgun-toolkit-engine-released/8724) | +| Blender 标识 | **tk-blender** | 项目 URL:[https://github.com/diegogarciahuerta/tk-blender](https://github.com/diegogarciahuerta/tk-blender)
项目参与者:[Factor64](https://www.factor64.com/)
项目维护者:[Diego Garcia Huerta](https://www.linkedin.com/in/diegogh/)
项目说明:{% include product %} [Blender](https://www.blender.org/) 插件。Blender 是一款免费的开源三维计算机图形软件工具组合,可用于制作动画电影、视觉特效、美术作品、3D 打印模型、运动图形、交互式三维应用、虚拟现实和计算机游戏。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/blender-shotgun-toolkit-engine-released/10773) | ### 应用 ----------- - -| 集成 | 插件 | 信息 | -|:-----------:|:------:| ----------- | -| tk-maya-playblast | **tk-maya-playblast** | 项目 URL:[https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
项目参与者:[BASE Studio](https://github.com/basestudio)
项目维护者:
项目说明:用于从 Maya 发布播放预览的应用。请参见 [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) | -| tk-multi-renderfarm | **tk-multi-renderfarm** | 项目 URL:[https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
项目参与者:[Bait Studio](http://www.baitstudio.com/)
项目维护者:
项目说明:用于向渲染农场提交作品的应用。请参见 [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | -| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | 项目 URL:[https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
项目参与者:
项目维护者:[Dave Sisk](mailto:dave@janimation.com)
项目说明:此应用用于搜索项目的目录结构,以查找现有的已发布文件或文件序列,然后在 {% include product %} 中将其注册为已发布的文件(如果已发布的文件对象尚不存在)。 | -| nuke-getShotgunData | **nuke-getShotgunData** | 项目 URL:[https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
项目参与者:[Ricardo Musch](https://www.ricardo-musch.com/)
项目维护者:Ricardo Musch
项目说明:将 {% include product %} 数据导入 Nuke 文本节点可能会有点困难。此节点可用于将此信息通过管道传递到场记板、场景信息覆层或其他任何地方。 | -| sb-logo.png | **sb-shotgun-schema-introspection** | 项目 URL:[https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
项目参与者:[Scott Ballard](https://www.linkedin.com/in/scottballard/)
项目维护者:Scott Ballard
项目说明:这是一个简单的 Toolkit 应用,支持 {% include product %} 和 Toolkit 开发人员快速导航和检查 {% include product %} 实体、字段和基础数据结构。 | -| griffith-logo.png | **foto-multi-namingconvention** | 项目 URL:[https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
项目参与者:[Griffith Observatory](http://www.griffithobservatory.org/)
项目维护者:[Scott Ballard](https://www.linkedin.com/in/scottballard/)
项目说明:这是一个简单的 Toolkit 应用,支持 {% include product %} 和 Toolkit 开发人员快速导航和检查 {% include product %} 实体、字段和基础数据结构。 | -| tk-cpenv | **tk-cpenv** | 项目 URL:[https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
项目参与者:[Dan Bradham](https://github.com/danbradham)
项目维护者:[Dan Bradham](https://github.com/danbradham)
项目说明:此应用添加了对 [cpenv](https://github.com/cpenv/cpenv) 的支持,cpenv 工具使用模块来管理软件插件、项目依存关系和环境变量。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/rez-support/7350/7) | -| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | 项目 URL:[https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
项目参与者:[Ricardo Musch](https://www.ricardo-musch.com/)
项目维护者:Ricardo Musch
项目说明:此应用允许您将版本和播放列表从 {% include product %} 拖放到 Hiero 中。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | +--- + +| 集成 | 插件 | 信息 | +| :----------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tk-maya-playblast | **tk-maya-playblast** | 项目 URL:[https://github.com/basestudio/tk-maya-playblast](https://github.com/basestudio/tk-maya-playblast)
项目参与者:[BASE Studio](https://github.com/basestudio)
项目维护者:
项目说明:用于从 Maya 发布播放预览的应用。请参见 [https://goo.gl/5oJTv0](https://goo.gl/5oJTv0) | +| tk-multi-renderfarm | **tk-multi-renderfarm** | 项目 URL:[https://github.com/baitstudio/tk-multi-renderfarm](https://github.com/baitstudio/tk-multi-renderfarm)
项目参与者:[Bait Studio](http://www.baitstudio.com/)
项目维护者:
项目说明:用于向渲染农场提交作品的应用。请参见 [https://goo.gl/ew6mkD](https://goo.gl/ew6mkD) | +| tk-shotgun-publishrenders | **tk-shotgun-publishrenders** | 项目 URL:[https://github.com/janimation/tk-shotgun-publishrenders](https://github.com/janimation/tk-shotgun-publishrenders)
项目参与者:
项目维护者:[Dave Sisk](mailto:dave@janimation.com)
项目说明:此应用用于搜索项目的目录结构,以查找现有的已发布文件或文件序列,然后在 {% include product %} 中将其注册为已发布的文件(如果已发布的文件对象尚不存在)。 | +| nuke-getShotgunData | **nuke-getShotgunData** | 项目 URL:[https://github.com/RicardoMusch/nuke-getShotgunData](https://github.com/RicardoMusch/nuke-getShotgunData)
项目参与者:[Ricardo Musch](https://www.ricardo-musch.com/)
项目维护者:Ricardo Musch
项目说明:将 {% include product %} 数据导入 Nuke 文本节点可能会有点困难。此节点可用于将此信息通过管道传递到场记板、场景信息覆层或其他任何地方。 | +| sb-logo.png | **sb-shotgun-schema-introspection** | 项目 URL:[https://github.com/scottb08/sb-shotgun-schema-introspection](https://github.com/scottb08/sb-shotgun-schema-introspection)
项目参与者:[Scott Ballard](https://www.linkedin.com/in/scottballard/)
项目维护者:Scott Ballard
项目说明:这是一个简单的 Toolkit 应用,支持 {% include product %} 和 Toolkit 开发人员快速导航和检查 {% include product %} 实体、字段和基础数据结构。 | +| griffith-logo.png | **foto-multi-namingconvention** | 项目 URL:[https://github.com/scottb08/foto-multi-namingconvention](https://github.com/scottb08/foto-multi-namingconvention)
项目参与者:[Griffith Observatory](http://www.griffithobservatory.org/)
项目维护者:[Scott Ballard](https://www.linkedin.com/in/scottballard/)
项目说明:这是一个简单的 Toolkit 应用,支持 {% include product %} 和 Toolkit 开发人员快速导航和检查 {% include product %} 实体、字段和基础数据结构。 | +| tk-cpenv | **tk-cpenv** | 项目 URL:[https://github.com/cpenv/tk-cpenv](https://github.com/cpenv/tk-cpenv)
项目参与者:[Dan Bradham](https://github.com/danbradham)
项目维护者:[Dan Bradham](https://github.com/danbradham)
项目说明:此应用添加了对 [cpenv](https://github.com/cpenv/cpenv) 的支持,cpenv 工具使用模块来管理软件插件、项目依存关系和环境变量。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/rez-support/7350/7) | +| rtm-tk-hiero-shotgunDropper | **rtm-tk-hiero-shotgunDropper** | 项目 URL:[https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper](https://github.com/RicardoMusch/rtm-tk-hiero-shotgunDropper)
项目参与者:[Ricardo Musch](https://www.ricardo-musch.com/)
项目维护者:Ricardo Musch
项目说明:此应用允许您将版本和播放列表从 {% include product %} 拖放到 Hiero 中。
更多信息:[{% include product %} 社区论坛](https://community.shotgunsoftware.com/t/release-shotgundropper-for-hiero/4183) | diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/config-staging-and-rollout.md b/docs/zh_CN/guides/pipeline-integrations/administration/config-staging-and-rollout.md index d15952e19..d88b9d53d 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/config-staging-and-rollout.md @@ -20,7 +20,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 - 安全地升级 Toolkit 核心 API。 - 升级应用和插件。 - 使用各种方法管理多个项目的配置。 -- 使用 Toolkit 的“克隆”和“推送”功能____,在不中断生产的情况下安全地测试升级和更改。 +- 使用 Toolkit 的“克隆”和“推送”功能\_\_\_\_,在不中断生产的情况下安全地测试升级和更改。 - 使用 `git` 源代码管理系统和 Toolkit。 # 配置管理的基础知识 @@ -33,9 +33,9 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 在项目期间,经常需要更改配置。您可能会调整配置,也可能需要添加另外的应用或插件。我们也会经常发布新的应用版本,并建议您尽可能使用最新版本。 -尽管可以直接升级项目的_主_配置,但这样做可能会有风险:因为参与项目的每个人都使用此配置,一旦出现问题,就会影响所有人。更好的做法是创建一个孤立的配置版本,让指定的一组人员可以访问它。在这个安全的环境中,无论进行升级、配置更改还是开发,都不会影响其余的生产环境。更改通过测试后,便可以安全放心地将它们推送到主配置。 +尽管可以直接升级项目的*主*配置,但这样做可能会有风险:因为参与项目的每个人都使用此配置,一旦出现问题,就会影响所有人。更好的做法是创建一个孤立的配置版本,让指定的一组人员可以访问它。在这个安全的环境中,无论进行升级、配置更改还是开发,都不会影响其余的生产环境。更改通过测试后,便可以安全放心地将它们推送到主配置。 -我们将这个过程称为“克隆”__,它相当于为主配置创建一个只有您自己(以及您邀请的其他人)才能访问的个人副本。 在这个副本中,您可以安全地进行更改,直到满意为止,然后可以将这些更改推送回主配置。 +我们将这个过程称为“克隆”\_\_,它相当于为主配置创建一个只有您自己(以及您邀请的其他人)才能访问的个人副本。 在这个副本中,您可以安全地进行更改,直到满意为止,然后可以将这些更改推送回主配置。 ## 克隆您的配置 @@ -47,7 +47,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 除此以外,每个项目还有一个配置文件夹。此文件夹包含该项目的所有设置。此外,它还包含一个专门用来操作此配置的 `tank` 命令(和一个 Python API)。使用此 `tank` 命令或 API 代码时,只能操作此配置。 -设置新项目后,会创建一个主配置。__ 这是 Toolkit 默认将为项目使用的配置。除了主配置以外,您还可以为项目创建另外的配置。这些配置可以并存,并且当您想单独测试某些修改、升级某些应用或在不影响整个团队的情况下进行开发时,这些配置会很有用。除主配置以外的其他配置由一个称为“克隆”的过程创建,__这个过程会将配置复制到一个新位置。 +设置新项目后,会创建一个主配置。** 这是 Toolkit 默认将为项目使用的配置。除了主配置以外,您还可以为项目创建另外的配置。这些配置可以并存,并且当您想单独测试某些修改、升级某些应用或在不影响整个团队的情况下进行开发时,这些配置会很有用。除主配置以外的其他配置由一个称为“克隆”的过程创建,**这个过程会将配置复制到一个新位置。 克隆完配置后,您的设置看起来可能如下所示: @@ -82,6 +82,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 ### 刷新旧的克隆配置 如果您有一个旧的开发沙盒或过时的临时沙盒设置,现在需要将它的内容与最新的生产配置同步,可以为主配置运行 `push_configuration` 命令来进行同步。 + ```shell tank push_configuration @@ -112,7 +113,8 @@ Push Complete! Your old configuration has been backed up into the following folder: /my/staging/sandbox/config.bak.20140108_093218 ``` -请注意我们如何从项目主配置向临时沙盒推送内容。我们的做法是运行主配置的 __`tank` 命令。 如果您有多个沙盒设置,也可以在这些沙盒之间推送数据。 + +请注意我们如何从项目主配置向临时沙盒推送内容。我们的做法是运行主配置的 \_\_`tank` 命令。 如果您有多个沙盒设置,也可以在这些沙盒之间推送数据。 ### 删除克隆配置 @@ -161,6 +163,7 @@ Make sure the loader app is up to date everywhere: Make sure the loader app is up to date in maya: > tank updates ALL tk-maya tk-multi-loader ``` + ## 升级 Toolkit 核心 API 本节介绍可以怎样使用克隆临时沙盒配置来安全地升级 Toolkit 核心 API。如果您还没有准备好临时沙盒,只要按照上节的说明操作即可! @@ -168,6 +171,7 @@ Make sure the loader app is up to date in maya: 如果您的临时沙盒克隆自某个使用[共享工作室核心 API](https://support.shotgunsoftware.com/hc/zh-cn/articles/219040448) 的工作流配置,您需要升级沙盒,让它使用自己独有的核心 API 代码。我们将这个过程称为对核心进行“本地化”,您可以导航到您的临时沙盒并运行 `tank localize` 来执行此操作。 此命令会将工作室安装中的核心 API 复制到您的沙盒,以便稍后可以运行和测试不同版本的核心 API。 _Toolkit 的默认行为是默认对核心进行本地化。如果您之前未显式创建过共享的工作室核心,可以有把握地认为您的核心已经本地化。_ + ```shell cd /my/staging/sandbox ./tank localize @@ -199,11 +203,14 @@ Localize complete! This pipeline configuration now has an independent API. If you upgrade the API for this configuration (using the 'tank core' command), no other configurations or projects will be affected. ``` + 此时,我们已不再共享工作室位置的核心 API,而是运行我们自己的独立版本。接下来,我们可以继续再次使用本地 tank 命令执行标准的核心 API 升级: + ```shell cd /my/staging/sandbox ./tank core ``` + Toolkit 将检查是否有新版本可用,并让您下载并安装它。 更新核心 API 之后,请务必对安装进行测试。使用沙盒中的 `tank` 命令或使用 {% include product %} 中专门的菜单项启动一些应用。从头至尾对您的工作流进行基本调试,并执行您认为必要的测试。 @@ -233,6 +240,7 @@ Toolkit 将检查是否有新版本可用,并让您下载并安装它。 这是让配置随时间逐步发展的一个非常简单的方法。所做的更改和改进将即时在项目之间传播。第一次运行 `setup_project` 命令时,只需在设置过程提示您选择要使用的配置时按 Enter 即可。这将下载并安装默认配置。 设置第二个项目时,您将看到之前项目的配置路径列表。选择其中一个路径,当设置过程提示输入配置时,输入此路径。这会将相应的配置复制到新项目: + ``` Welcome to the {% include product %} Pipeline Toolkit! For documentation, see https://support.shotgunsoftware.com @@ -272,6 +280,7 @@ clone this repository and base the config on its content. [tk-config-default]: /mnt/software/shotgun/first_project/config ``` + ## 在 Git 源代码管理系统中创建工作室配置 第一种方法有一定的局限性,其中一点是项目实际上不是彼此相连。假设您有 10 个项目,当发布了某个重大错误修复时,您需要更新所有项目,这时必须手动操作每个项目并运行 `tank updates` 命令。 @@ -291,16 +300,21 @@ clone this repository and base the config on its content. 首先,您需要转至您的 Git 服务器并创建一个库。此过程可能会因您的设置而异。如果您使用的是类似 GitHub 的站点,需要启动 Web 浏览器并导航至 github.com。如果您有权访问服务器,可以执行类似 `git init --bare` 这样的操作。 在我们的示例中,假设您创建的 Git 库称为 `username@someserver.com:/studio_config.git`。 接下来,将用来为库提供种子的项目的 `config` 文件夹复制到一个 `config.bak` 位置: + ```shell cd /project_configs/studio_config mv config config.bak ``` + 将经过初始化的 Git 库克隆到工作室配置要基于的项目的 `config` 位置。 运行克隆命令后,将得到一个同样是 Git 库的空白 `config folder`: + ```shell cd /project_configs/studio_config git clone username@someserver.com:/studio_config.git config ``` + 将 `config.bak` 位置的所有文件复制到 `config` 文件夹。复制完毕后,可以删除空的 `config.bak` 文件夹。这时,您的配置文件已位于 Git 库内,我们需要添加、提交并将它们推送至服务器。但是在执行这些操作前,我们还要做些扫尾工作,正确处理一些 Toolkit 系统文件。在 `config` 文件夹中,创建一个 `.gitignore` 文件,并向其中添加以下几行内容: + ```shell install_location.yml pipeline_configuration.yml @@ -313,6 +327,7 @@ git add --all git commit -am "initial commit of our studio config!" git push ``` + ### 从 Git 创建新项目 当您创建新项目时,只需在设置过程提示您输入要使用的配置的路径时,指定一个有效的 Git URL 即可。按照上面的示例,我们将输入 `username@someserver.com:/studio_config.git`。作为项目设置过程的一部分,Toolkit 会将此库克隆到您的新项目配置的 `config` 文件夹。这意味着,稍后您可以转到此 config 文件夹运行 Git 命令。请注意,任何克隆的工作流配置也会克隆该 Git 库,并将无缝工作。 @@ -323,7 +338,7 @@ git push ### 更新项目以获取最新版本 -另外,如果您使用一些更改更新过您的工作室级配置,现在想将这些更改下载到项目中,只需转到 `config` 文件夹并运行 `git pull` 即可。 **重要提示**:请注意,完成此操作后务必运行 `tank cache_apps`,以确保系统中存在您更改的配置所需的所有应用版本! +另外,如果您使用一些更改更新过您的工作室级配置,现在想将这些更改下载到项目中,只需转到 `config` 文件夹并运行 `git pull` 即可。 **重要提示**:请注意,完成此操作后务必运行 `tank cache_apps`,以确保系统中存在您更改的配置所需的所有应用版本! ### Git 高级用法:分支 @@ -342,6 +357,7 @@ Toolkit 通过工作流配置实体保留了 {% include product %} 站点所有 ![](images/config-staging-and-rollout/include_config.png) 使用 `@include` 语法可将多个文件串联在一起。 例如,如果您有一个 `/tmp/stuff.yml` 文件,其中包含以下内容: + ``` # paths to maya maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' @@ -369,7 +385,9 @@ file_manager: template_work: null template_work_area: null ``` + 如上所述,您可以在几个不同级别创建包含定义 - 在上面的例子中,我们有一个应用定义和三个字符串值。接下来,我们可以从一个环境文件引用这些对象: + ``` includes: ['/tmp/stuff.yml'] @@ -398,7 +416,9 @@ engines: template_project: null use_sgtk_as_menu_name: false ``` + 此外,您可以逐个读入几个包含文件。如果两个不同的文件中存在相同的包含定义,将优先使用最新读取的文件。我们可以扩展上面的示例环境: + ``` includes: @@ -412,13 +432,14 @@ includes: engines: - tk-maya: + tk-maya: apps: tk-multi-workfiles: '@file_manager' location: {name: tk-maya, type: app_store, version: v0.4.1} use_sgtk_as_menu_name: false ``` + 使用刚刚介绍的方法,可以得到一组工作室默认值,这些默认值可被项目类型默认值改写,而后者又可以被特定的项目设置改写。您既可以如上面示例中所示,在应用一级使用此功能,也可以如下节中所示,在插件一级使用此功能。 ### 设置全局配置的最佳实践 @@ -426,6 +447,7 @@ engines: 设置全局配置的方法有多种。我们建议的最佳做法是按插件对配置进行细分。每个环境文件完全空白,并引用在单独的文件中定义的插件(和应用)。这样便于逐个插件地调整和重新配置设置。 每个包含文件均采用标准形式,以插件的名称命名。例如,如果您有一个 Maya 插件,包含文件将只包含该插件和它的应用。其顶层项直接命名为 `maya`: + ```yaml maya: apps: @@ -468,25 +490,28 @@ frameworks: tk-framework-shotgunutils_v1.x.x: location: {name: tk-framework-shotgunutils, type: app_store, version: v1.0.8} ``` + 在您的工作室中,您很可能并不只有一套 Maya 设置,而是会为不同部门和不同类型的工作准备多套不同的设置。我们建议您为每套设置分别建立一个 maya 包含文件,并按文件层次结构进行组织。这其中的每个文件都像上面的文件一样,在顶层具有一个 `maya` 项。 ![](images/config-staging-and-rollout/maya_include.png) 现在,每个项目都将包含一些环境。每个环境文件都将是一个插件包含文件的列表,将这个特定环境链接到一组插件和应用设置。您可以为自己的工作室设置一个(或几个)默认的项目配置,都包含这样的包含文件,以确保实际的应用和插件负载完全包含在包含文件内,从而实现全局性。如果您更改全局包含文件,所有项目都将受到影响。使用这种设置,您的环境文件看起来将如下所示: + ```yaml -includes: - - '/studio/configurations/maya/asset.yml' - - '/studio/configurations/nuke/asset.yml' - - '/studio/configurations/houdini/generic.yml' +includes: + - "/studio/configurations/maya/asset.yml" + - "/studio/configurations/nuke/asset.yml" + - "/studio/configurations/houdini/generic.yml" engines: - tk-maya: '@maya' - tk-nuke: '@nuke' - tk-houdini: '@houdini' + tk-maya: "@maya" + tk-nuke: "@nuke" + tk-houdini: "@houdini" # we don't need any frameworks here because there are no apps or engines defined frameworks: null ``` + 如果您想打破上面的设置,定义一些特定于项目的条目,可以在环境文件本身中直接将 `@maya` 替换为一系列应用和插件定义。 ### 管理全局配置 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/file-system-config-reference.md b/docs/zh_CN/guides/pipeline-integrations/administration/file-system-config-reference.md index 981c0f284..5e697682b 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/file-system-config-reference.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/file-system-config-reference.md @@ -17,6 +17,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 1. **创建文件夹:**在 {% include product %} 中创建对象后,我们需要先在磁盘上创建文件夹,然后才能开始工作。这个过程可以很简单,比如在磁盘上创建一个文件夹来代表镜头;也可以更复杂,比如设置一个特定于用户的工作沙盒,让每个处理镜头的用户在单独的磁盘区域工作。 - Toolkit 会在您启动应用程序(例如为镜头 BECH_0010 启动 Maya)时自动创建文件夹,并确保在启动 Maya 前文件夹已存在。如果文件夹不存在,则会即时创建这些文件夹。除此以外,也可以使用 API 方法、[Shell 中的 tank 命令](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033178#Useful%20tank%20commands)以及通过 [ShotGrid 中的“创建文件夹”(Create Folders)菜单](https://support.shotgunsoftware.com/hc/zh-cn/articles/219040688#Shotgun%20Integration)来创建文件夹。此文件夹创建过程由一组特殊的配置文件来控制,下面我们在文档的[第 1 部分](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Part%201%20-%20Folder%20Creation%20Syntax)中对此进行介绍。 + 2. **打开和保存工作:**在工作时,我们需要在磁盘的标准位置打开和保存文件。 这些文件位置通常位于我们在开始工作前创建的文件夹结构之中。 - 文件夹结构建立后,我们可以使用该结构来确定关键的磁盘位置。这些位置称为[模板](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Part%202%20-%20Configuring%20File%20System%20Templates)。例如,您可以定义一个 `maya_shot_publish` 模板来表示为镜头发布的 Maya 文件。[Toolkit 应用](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039798)随后会使用此模板 - 发布应用可使用它控制应将文件写入何处,而 [Workfiles 应用](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)可使用此模板了解从何处打开文件。在 Toolkit 的环境配置内,您可以控制每个应用使用哪些模板。因此,Toolkit 使用的所有关键文件位置都定义在一个模板文件中,并且易于查看。 @@ -33,7 +34,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 1. **普通文件夹和文件:**这些内容将直接被复制到目标位置。 2. **含有 YAML 文件的文件夹**(文件与文件夹同名):这代表动态内容。 例如,假设有一个 **shot** 文件夹和一个 **shot.yml**,当创建文件夹时,这个 **shot** 文件夹就是生成一系列文件夹所采用的模板 - 每个镜头一个文件夹。 -3. **名为 name.symlink.yml 的文件:**此文件将在处理文件夹时生成符号链接。 [本文档稍后将对符号链接](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Symbolic%20Links)进行介绍。 +3. **名为 name.symlink.yml 的文件:**此文件将在处理文件夹时生成符号链接。 [本文档稍后将对符号链接](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Symbolic%20Links)进行介绍。 目前,以 YAML 文件形式表示的动态配置设置支持以下模式: @@ -45,7 +46,6 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 - **[当前用户文件夹:](#current-user-folder)**一个特殊文件夹,表示当前用户。 - 下面我们来更深入地了解这些模式。 ## {% include product %} 查询文件夹 @@ -80,11 +80,11 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 - **entity_type** 字段应设置为要从中提取数据的 {% include product %} 实体(“资产”(Asset)、“镜头”(Shot)、“场”(Sequence)、“自定义实体 02”(CustomEntity02)等)。 - **name** 字段是根据 {% include product %} 中的数据应指定给每个文件夹的名称。 - - 您可以像上面的示例中那样,只使用一个字段(例如 `name: code`)。 - - 也可以在大括号内使用多个字段(例如 `name:` `"{asset_type}_{code}"`)。 - - 如果想包含来自其他链接实体的字段,可使用标准 {% include product %} 语法(例如 `name: "{sg_sequence.Sequence.code}_{code}"`)。 -- **filters** 字段是一个 {% include product %} 查询。该字段相对严格遵循 [{% include product %} API 语法](http://developer.shotgridsoftware.com/python-api/reference.html)。它是一个词典列表,并且每个词典需要有 _path_、_relation_ 和 _values_ 键。 $ 语法的有效值是任何包含对应 {% include product %} 实体的根文件夹(例如,对于项目来说是 `"$project"`,而如果上层目录层次结构存在 sequence.yml,也可以是 `"$sequence"`)。对于 {% include product %} 实体链接,您可以使用 $ 语法(例如 `{ "path": "project", "relation": "is", "values": [ "$project" ] }`)指代配置中的父文件夹 - [下面的示例](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Examples)对此做出了更深入的解释。 + - 您可以像上面的示例中那样,只使用一个字段(例如 `name: code`)。 + - 也可以在大括号内使用多个字段(例如 `name:` `"{asset_type}_{code}"`)。 + - 如果想包含来自其他链接实体的字段,可使用标准 {% include product %} 语法(例如 `name: "{sg_sequence.Sequence.code}_{code}"`)。 +- **filters** 字段是一个 {% include product %} 查询。该字段相对严格遵循 [{% include product %} API 语法](http://developer.shotgridsoftware.com/python-api/reference.html)。它是一个词典列表,并且每个词典需要有 _path_、_relation_ 和 _values_ 键。 $ 语法的有效值是任何包含对应 {% include product %} 实体的根文件夹(例如,对于项目来说是 `"$project"`,而如果上层目录层次结构存在 sequence.yml,也可以是 `"$sequence"`)。对于 {% include product %} 实体链接,您可以使用 $ 语法(例如 `{ "path": "project", "relation": "is", "values": [ "$project" ] }`)指代配置中的父文件夹 - [下面的示例](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Examples)对此做出了更深入的解释。 ## 多个文件夹 @@ -118,7 +118,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 asset_step_folder: assets/{asset_type}/{Asset}/{Step} -`{asset_type}` 和 `{Asset}` 都定义为字符串模板键,`{Asset}` 令牌将在确定给定路径的上下文时在上下文计算中使用。 +`{asset_type}` 和 `{Asset}` 都定义为字符串模板键,`{Asset}` 令牌将在确定给定路径的上下文时在上下文计算中使用。 ## 随父文件夹一起创建的文件夹 @@ -182,7 +182,7 @@ Toolkit 支持使用正则表达式提取 {% include product %} 字段名称的 # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -该语法类似于模板系统中的 `subset` 令牌;只需在 {% include product %} 字段名称后面添加一个冒号,后跟一个正则表达式。正则表达式中定义的任何组(例如,`()` 括起来的部分)将用于提取值。 如果正则表达式中有多个组,它们将会连接在一起。例如,以下表达式将提取创建对象的用户的首字母: `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` +该语法类似于模板系统中的 `subset` 令牌;只需在 {% include product %} 字段名称后面添加一个冒号,后跟一个正则表达式。正则表达式中定义的任何组(例如,`()` 括起来的部分)将用于提取值。 如果正则表达式中有多个组,它们将会连接在一起。例如,以下表达式将提取创建对象的用户的首字母: `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` ## 示例 @@ -245,13 +245,12 @@ Toolkit 支持使用正则表达式提取 {% include product %} 字段名称的 - 将动态内容 **type** 字段的值设置为 `shotgun_list_field`。 - `entity_type` 字段应设置为想要从中提取数据的 {% include product %} 实体(例如“资产”(Asset)、“场”(Sequence)、“镜头”(Shot)等)。 -- `field_name` 字段应设置为从中提取数据的 {% include product %} 字段,并且必须是[列表类型字段](https://support.shotgunsoftware.com/hc/zh-cn/articles/219031008)。如果想随动态内容一起添加静态文本,可以使用表达式。`field_name: "{sg_asset_type}_type"` 此示例表达式包含文本和一个模板键。 +- `field_name` 字段应设置为从中提取数据的 {% include product %} 字段,并且必须是[列表类型字段](https://support.shotgunsoftware.com/hc/zh-cn/articles/219031008)。如果想随动态内容一起添加静态文本,可以使用表达式。`field_name: "{sg_asset_type}_type"` 此示例表达式包含文本和一个模板键。 - 可选参数 `skip_unused` 可防止为未使用的列表类型字段值创建目录(如上面的[可选字段](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Optional%20fields)部分所述)。{% include info title="注意" content="将此设置为 True 可能会对文件夹创建性能产生负面影响。另外,剔除算法目前还很简陋,不支持关联实体应用了复杂过滤器的情况。" %} - 可选参数 `create_with_parent` 可强制创建 list_field 节点,即使当前没有正在接受处理的子实体级节点(请参见上面的[随父文件夹一起创建的文件夹](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Create%20With%20Parent%20Folder)部分)。 - ## 工作流工序文件夹 工作流工序文件夹表示 {% include product %} 中的[工作流工序](https://support.shotgunsoftware.com/hc/zh-cn/articles/219031288)。工作流工序也称为“工序”。 @@ -400,7 +399,7 @@ _提示:如果您更喜欢应用程序(例如 Maya)启动时创建普通 ## 静态文件夹 -静态文件夹(和文件)是最简单的类型。您可以将它们放入配置结构,当执行文件夹创建过程时,会自动复制它们。 [这里有一些默认配置的静态文件夹示例](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) (https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)(请注意,静态文件夹没有对应的 YAML 文件)。 +静态文件夹(和文件)是最简单的类型。您可以将它们放入配置结构,当执行文件夹创建过程时,会自动复制它们。 [这里有一些默认配置的静态文件夹示例](https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project) (https://github.com/shotgunsoftware/tk-config-default/tree/master/core/schema/project)(请注意,静态文件夹没有对应的 YAML 文件)。 通常,静态文件夹的使用不会超出这些示例介绍的范围;但是,Toolkit 确实支持一些更高级的静态文件夹功能。我们可以定义动态条件来决定是否应创建某个静态文件夹。例如,您可能会需要只有剪辑类型的工作流工序才会创建的特殊静态文件夹。在这种情况下,需要在静态文件夹的同一层添加一个 YAML 配置文件,并为它指定相同的名称,文件扩展名为“yml”。然后,使用以下语法: @@ -496,7 +495,7 @@ _提示:如果您更喜欢应用程序(例如 Maya)启动时创建普通 .git # no git temp files to be copied across at folder creation time .DS_Store # no mac temp files to be copied across at folder creation time -您也可以使用通配符。例如,如果需要排除所有带 TMP 扩展名的文件,只需向文件中添加一行 *.tmp 即可。 +您也可以使用通配符。例如,如果需要排除所有带 TMP 扩展名的文件,只需向文件中添加一行 \*.tmp 即可。 # This is a good example of a standard ignore_files file @@ -701,7 +700,6 @@ _请注意,动态令牌 `$sequence` 在运行时已被解析为实际对象。 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, 'path': '/mnt/projects/chasing_the_light/assets'}, - 同样,可以用这种方式将任意复杂度的数据从 YAML 配置文件传递给挂钩。 ## 文件夹创建方式的简单自定义 @@ -824,7 +822,7 @@ Toolkit 的模板文件是 Toolkit 配置的一个中枢。每个项目都会有 ![配置](images/file-system-config-reference/templates_file.png) -此文件包含模板及其键的定义____。 +此文件包含模板及其键的定义\_\_\_\_。 **键**是我们定义的动态字段。 它可以是名称、版本号、屏幕分辨率、镜头名称等。我们会为键配置类型,这样便可定义一个键应该是字符串还是整数。键还具有格式,这样便可定义一个字符串应仅包含字母数字字符,还是所有整数都填充八个零。 @@ -845,34 +843,33 @@ Toolkit 的模板文件是 Toolkit 配置的一个中枢。每个项目都会有 除了指定类型以外,您还可以指定其他选项。存在以下选项: -- `default: default_value` - 在未提供值的情况下使用的值。 例如,当您使用 Toolkit API 尝试将一组字段值解析为一个路径时,可能会发生这种情况。 +- `default: default_value` - 在未提供值的情况下使用的值。 例如,当您使用 Toolkit API 尝试将一组字段值解析为一个路径时,可能会发生这种情况。 -- `choices: [choice1, choice2, etc]` - 对此键的各个可能值的枚举。 +- `choices: [choice1, choice2, etc]` - 对此键的各个可能值的枚举。 -- `exclusions: [bad1, bad2, etc]` - 对此键的各个禁止值的枚举。 如果键的类型为 sequence,使用此设置时,将无法让帧规格值无效。 +- `exclusions: [bad1, bad2, etc]` - 对此键的各个禁止值的枚举。 如果键的类型为 sequence,使用此设置时,将无法让帧规格值无效。 -- `length: 12` - 此键需要有具体长度。 +- `length: 12` - 此键需要有具体长度。 -- `alias: new_name` - 提供一个供使用此键而非 key_name 键的模板使用的名称。 例如,如果您有两种关于版本号的设想,一种是按照客户的希望填充四个零,另一种是根据内部处理方式填充三个零 - 在这种情况下,您其实想将两个键都命名为“version”,但实际上这是不可能的,因为键名称需要具有唯一性。这时,您可以创建一个别名。请参见下面的示例了解详细信息。 +- `alias: new_name` - 提供一个供使用此键而非 key_name 键的模板使用的名称。 例如,如果您有两种关于版本号的设想,一种是按照客户的希望填充四个零,另一种是根据内部处理方式填充三个零 - 在这种情况下,您其实想将两个键都命名为“version”,但实际上这是不可能的,因为键名称需要具有唯一性。这时,您可以创建一个别名。请参见下面的示例了解详细信息。 -- `filter_by: alphanumeric` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母数字值(对于 Ascii 字符串来说通常为 a-z、A-Z 和 0-9,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 +- `filter_by: alphanumeric` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母数字值(对于 Ascii 字符串来说通常为 a-z、A-Z 和 0-9,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 -- `filter_by: alpha` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母值(对于 Ascii 字符串来说通常为 a-z 和 A-Z,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 +- `filter_by: alpha` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母值(对于 Ascii 字符串来说通常为 a-z 和 A-Z,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 -- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - 仅适用于 string 类型的键。 您可以定义正则表达式来作为验证掩码。例如,上面的示例需要键有四位数字,后跟一个下划线,最后是三个小写字母。 +- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - 仅适用于 string 类型的键。 您可以定义正则表达式来作为验证掩码。例如,上面的示例需要键有四位数字,后跟一个下划线,最后是三个小写字母。 -- `format_spec: "04"` - 对于 int 和 sequence 类型的键,此设置意味着 int 或 sequence 的数字将填充零或空格。 像示例中这样指定“04”,将得到一个长度为四位数、填充了零的数字(例如 0003)。指定“03”将得到长度为三位数、填充了零的数字(例如 042),等等。指定“3”将得到长度为三位数、填充了空格的数字(例如“ 3”)。对于 timestamp 类型的键,format_spec 遵循 [strftime 和 strptime 约定](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)。 +- `format_spec: "04"` - 对于 int 和 sequence 类型的键,此设置意味着 int 或 sequence 的数字将填充零或空格。 像示例中这样指定“04”,将得到一个长度为四位数、填充了零的数字(例如 0003)。指定“03”将得到长度为三位数、填充了零的数字(例如 042),等等。指定“3”将得到长度为三位数、填充了空格的数字(例如“ 3”)。对于 timestamp 类型的键,format_spec 遵循 [strftime 和 strptime 约定](https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)。 -- `strict_matching: true` - 仅适用于 int 类型的键。 此设置意味着字段只会匹配格式设置正确的数字。例如,给定值为“003”,strict_matching 设置为 True,我们将匹配“002”、“12345”和“042”,但不匹配“00003”或“2”。如果您需要匹配不那么严格,请将 strict_matching 设置为 False。默认行为是严格匹配。 +- `strict_matching: true` - 仅适用于 int 类型的键。 此设置意味着字段只会匹配格式设置正确的数字。例如,给定值为“003”,strict_matching 设置为 True,我们将匹配“002”、“12345”和“042”,但不匹配“00003”或“2”。如果您需要匹配不那么严格,请将 strict_matching 设置为 False。默认行为是严格匹配。 - `shotgun_entity_type` - 与 `shotgun_field_name` 选项一起使用时,上下文将直接向 {% include product %} 查询值。这样,将可以在文件名中使用文件夹结构中不可见的字段的值。 -- `shotgun_field_name` - 仅与 `shotgun_entity_type` 一起使用。 - -- `abstract` - 表示字段是抽象字段。 当需要以模式来描述路径时(例如图像序列 (%04d) 或立体声 (%V)),会用到抽象字段。抽象字段需要具有默认值。 +- `shotgun_field_name` - 仅与 `shotgun_entity_type` 一起使用。 -- `subset` 和 `subset_format` - 提取给定输入字符串的一部分并将它设为键值。这样,便可根据完整的用户名创建用户名首字母缩写键,或创建可容纳每个镜头名称前三个字母的键。 +- `abstract` - 表示字段是抽象字段。 当需要以模式来描述路径时(例如图像序列 (%04d) 或立体声 (%V)),会用到抽象字段。抽象字段需要具有默认值。 +- `subset` 和 `subset_format` - 提取给定输入字符串的一部分并将它设为键值。这样,便可根据完整的用户名创建用户名首字母缩写键,或创建可容纳每个镜头名称前三个字母的键。 有关模板键的技术细节,请参见 [API 参考](http://developer.shotgridsoftware.com/tk-core/core.html#template-system)。 @@ -1053,7 +1050,7 @@ Toolkit 应用在填充所有上下文字段时(通过 `context.as_template_fi {% include info title="注意" content="如果一个 string 键的名称与一个关联了 ShotGrid 实体的动态数据结构文件夹的实体类型一致,将使用该文件夹名称来代替令牌。例如,假设您像上面的代码段那样正在使用一个“string”类型的 {Sequence} 模板键,同时您的数据结构中有一个名为“sequence”的动态文件夹,并且在对应的 `sequence.yml` 文件中,它被定义为 `shotgun_entity` 类型,并连接到 ShotGrid 中的“场”(Sequence)实体类型。这种情况下,Toolkit 会认为您的模板键对应于这个动态文件夹的实体类型(示例中二者均为“镜头序列”(Sequence))。因此,Toolkit 会提取生成的文件夹名称(即所涉及的具体场的名称),并使用它替换模板键。" %} -如果需要定义任何可选属性,必须使用这种格式。目前,只有 `root_name` 这一个可选属性,在有多个根目录的项目中,可以用它来指定路径的项目根目录。 当您想添加新的存储根目录来存储某些项目文件时,会用到[多个根目录](https://developer.shotgridsoftware.com/9ea9dd4e/)。 +如果需要定义任何可选属性,必须使用这种格式。目前,只有 `root_name` 这一个可选属性,在有多个根目录的项目中,可以用它来指定路径的项目根目录。 当您想添加新的存储根目录来存储某些项目文件时,会用到[多个根目录](https://developer.shotgridsoftware.com/9ea9dd4e/)。 `root_name: name_of_project_root` @@ -1113,7 +1110,6 @@ Toolkit 应用在填充所有上下文字段时(通过 `context.as_template_fi - [“剧集”(Episode)实体如何工作?](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000019414) - [自定义实体层次结构](https://support.shotgunsoftware.com/hc/zh-cn/articles/219030828) - ### “剧集 > 场 > 镜头”层次结构需要的 {% include product %} 字段 [您可以选择使用任何自定义实体](https://support.shotgunsoftware.com/hc/zh-cn/articles/114094182834)作为 `Episode`(“站点偏好设置 > 实体”(Site Preferences > Entities)),也可以使用 {% include product %} [7.0.7.0](https://support.shotgunsoftware.com/hc/en-us/articles/220062367-7-0-Release-Notes#7_0_7_0) 中提供的官方“剧集”(Episode)实体。如果您注册使用的是 {% include product %} 7.0.7.0 之前的版本(在 2017 之前),“TV Show”模板会使用 `CustomEntity02` 作为剧集。如果您决定使用非 `CustomEntity02` 的其他实体或官方“剧集”(Episode)实体,没问题!{% include product %} 和 Toolkit 具有很高的灵活度。下面我们就来同时介绍这两种情况。 @@ -1128,7 +1124,7 @@ a) **使用官方“剧集”(Episode)实体:**“剧集”(Episode)实体可 **或者** -b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板创建电视节目类项目时使用的自定义实体。 _如前所述,您可以再启用一个自定义实体,使用它来代替 `CustomEntity02` - 只要确保将所有的 `CustomEntity02` 都替换成您启用的具体实体即可。_ +b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板创建电视节目类项目时使用的自定义实体。 _如前所述,您可以再启用一个自定义实体,使用它来代替 `CustomEntity02` - 只要确保将所有的 `CustomEntity02` 都替换成您启用的具体实体即可。_ ![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) @@ -1140,7 +1136,7 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 -**使用 `CustomEntity02`** +**使用 `CustomEntity02`** @@ -1152,7 +1148,7 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 -**使用 `CustomEntity02`** +**使用 `CustomEntity02`** @@ -1203,7 +1199,7 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 # any values starting with $ are resolved into path objects filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] -**使用 `CustomEntity02`** +**使用 `CustomEntity02`** # the type of dynamic content @@ -1265,7 +1261,6 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 在您的 `config/core/schema/project/shots/episode/sequence` 文件夹中,创建一个名为 `shot` 的文件夹,并在同一目录创建一个对应的 `shot.yml` 文件,文件内容如下: - # the type of dynamic content type: "shotgun_entity" @@ -1315,7 +1310,7 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} … -**使用 `CustomEntity02`** +**使用 `CustomEntity02`** keys: ... @@ -1344,12 +1339,11 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 - 先在数据结构中为这个新的资产类型创建一个新的分支:vehicle。 - 在与 `asset/` 和 `asset.yml` 同一级目录中,添加一个 `asset_vehicle/` 文件夹和一个 `asset_vehicle.yml`。 -- 这些 YAML 文件中还有一项过滤器设置。修改 `asset.yml` 中的过滤器,让它应用于除车辆以外的所有资产,__然后修改 `asset_vehicle.yml`,使其仅应用于__车辆类型的资产。 [此处举例说明了这种过滤器的具体形式](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps)。 +- 这些 YAML 文件中还有一项过滤器设置。修改 `asset.yml` 中的过滤器,让它应用于除车辆以外的所有资产,**然后修改 `asset_vehicle.yml`,使其仅应用于**车辆类型的资产。 [此处举例说明了这种过滤器的具体形式](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Different%20file%20system%20layouts%20for%20different%20pipeline%20steps)。 - 现在,您已有了两个文件夹来表示 `asset` 和 `asset_vehicles`,在 `asset_vehicle` 下添加您希望为这些资产创建的所有文件夹(例如 `geoprep`、`lookdev` 等)。 - 如果您要为这些资产保存和发布文件,需要在 `core/templates.yml` 中创建模板,描述保存的和发布的文件的文件路径。 例如,除了 [`maya_asset_work`](https://github.com/shotgunsoftware/tk-config-default/blob/v0.17.3/core/templates.yml#L480) 之外,您还可以创建一个名为 `maya_asset_work_vehicle` 的模板,然后将该模板定义为一个您用来为车辆资产保存 Maya 工作文件的模板化路径。 - **第 2 步:创建新的环境文件** 至此,您已为新的资产类型设置了目录结构,并通过模板描述了要将发布文件保存在新目录结构中的何处。接下来,您需要指示 Toolkit 何时使用这些新模板。为此,需要创建一个新的环境文件。 @@ -1359,11 +1353,11 @@ b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板 ## 如何使用自定义实体创建自定义工作流工序? -{% include product %} 7.0.6.0 引入了[通过“管理”(Admin)菜单管理工作流工序](https://support.shotgunsoftware.com/hc/zh-cn/articles/222766227#managing_pipeline_steps)的功能。使用此功能,您可以轻松向工作流工序中添加自定义字段。 **高级技巧:大多数情况下,与创建自定义实体来管理工作流工序相比,在工作流工序中使用自定义字段有助于工作流条理更加清楚。** +{% include product %} 7.0.6.0 引入了[通过“管理”(Admin)菜单管理工作流工序](https://support.shotgunsoftware.com/hc/zh-cn/articles/222766227#managing_pipeline_steps)的功能。使用此功能,您可以轻松向工作流工序中添加自定义字段。 **高级技巧:大多数情况下,与创建自定义实体来管理工作流工序相比,在工作流工序中使用自定义字段有助于工作流条理更加清楚。** 但是,对于要求更高的情况,创建备选的工作流工序可能会有所帮助。例如,在工作流工序方面,您可能会希望能够灵活地为生产和工作流使用不同的命名约定和结构,以及灵活地独立为它们命名和设置结构。{% include product %} 内置的工作流工序通常用来安排计划,但您可能会想使用其他[自定义实体](https://support.shotgunsoftware.com/hc/zh-cn/articles/114094182834)来构建文件系统结构,并将工作流中的单个任务合并成组。通过创建从任务到自定义实体的自定义链接字段,可以实现这个目的。随后,系统可使用此链接字段,通过工序节点将任务合并成组。 在文件夹配置中,添加两个特殊选项,以指示系统使用您的自定义工序设置,而不是 {% include product %} 的内置工作流工序: entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file + task_link_field: "sg_task_type" diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/zh_CN/guides/pipeline-integrations/administration/integrations-admin-guide.md index 1e854e5d5..2bb536004 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/integrations-admin-guide.md @@ -86,7 +86,7 @@ lang: zh_CN - 与在自动检测模式下不同,此处,每个版本的给定软件包对应一个软件实体。 - 为了将它们分组在一起,请使用 `Group` 和 `Group Default` 字段。 `Group` 值相同的软件实体将被分组在 Desktop 中单个图标下的下拉菜单中,该图标使用 `Group` 值作为其名称。 - 单击该图标本身时,将启动 `Group Default` 处于选中状态的组中的软件。 -- **在软件实体上为“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)或“Windows 路径”(Windows Path)中任何一个__指定值时,该实体将转为手动模式。** 与自动检测模式(路径字段为空时,软件会__显示在 Desktop 中)不同,在手动模式下,仅当为软件指定了路径且在指定路径中存在文件时,软件包才会__在给定操作系统上显示。 +- **在软件实体上为“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)或“Windows 路径”(Windows Path)中任何一个\_\_指定值时,该实体将转为手动模式。** 与自动检测模式(路径字段为空时,软件会**显示在 Desktop 中)不同,在手动模式下,仅当为软件指定了路径且在指定路径中存在文件时,软件包才会**在给定操作系统上显示。 - 在此示例中,由于未指定 `Windows Path`,因此三个 Maya 版本均不会显示在 Windows 上的 Desktop 中。 ### 示例:按用户或组限制 @@ -111,7 +111,7 @@ lang: zh_CN - 此处我们删除了 `Group` 和 `Group Default` 值,因为在给定环境中总是只有一个 Maya 版本将显示在 Desktop 中。 - 我们将所有三个版本的 `Software Name` 均设置为“Maya”。 这样,在每个项目中,用户均将看到一个名称相同的图标,但根据此处配置的内容,它将指向不同的版本。 - 我们将 Maya 2016 的 `Status` 字段设置为 `Disabled`。 我们不再在工作室中使用此版本,且此字段切换在所有项目中的全局可见性。 -- 我们针对 Maya 2017 和 Maya 2018 指定了 `Projects` 值。 此 `Projects` 字段用作限制。 Maya 2017 将仅__显示在 Chicken Planet 项目中,而 Maya 2018 将仅显示在 Chicken Planet II 中。 +- 我们针对 Maya 2017 和 Maya 2018 指定了 `Projects` 值。 此 `Projects` 字段用作限制。 Maya 2017 将仅\_\_显示在 Chicken Planet 项目中,而 Maya 2018 将仅显示在 Chicken Planet II 中。 - 请注意,一旦指定了某个软件实体的 `Projects` 值,该软件将仅显示在指定的项目中。 因此,如果您的工作室中除了 Chicken Planet 系列外还有其他项目,您需要为它们明确指定软件。 ### 示例:添加自己的软件 @@ -137,9 +137,9 @@ lang: zh_CN 如果未针对您当前使用的操作系统定义本地存储的路径,您可以使用环境变量指定本地存储根。环境变量的名称应采用 `SHOTGUN_PATH__` 形式。 因此,如果您要为名为“Renders”的存储根定义 Mac 上的路径,可以创建 `SHOTGUN_PATH_MAC_RENDERS` 环境变量。 下面我们使用该示例进行更深入的讨论: - 假设您的 {% include product %} 站点有一个名为“Renders”的存储根,并指定了以下路径: -- Linux 路径: `/studio/renders/` -- Windows 路径: `S:\renders\` -- Mac 路径: `` +- Linux 路径: `/studio/renders/` +- Windows 路径: `S:\renders\` +- Mac 路径: `` - 您在使用 Mac。 @@ -181,13 +181,13 @@ lang: zh_CN - 一个名为“Projects”的 {% include product %} 本地存储,进行以下设置: -- Linux 路径: `/projects` -- Windows 路径: `Q:\projects` -- Mac 路径: `/projects` +- Linux 路径: `/projects` +- Windows 路径: `Q:\projects` +- Mac 路径: `/projects` - 一个名为“Projects”的 {% include product %} 本地存储,使用一个环境变量予以增强: -- Linux 路径: `/projects` +- Linux 路径: `/projects` - `Windows 路径:`` - `Mac Path:`/projects` - `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` @@ -243,7 +243,7 @@ websocket 服务器的 RPC API 的第二次实施更改了用于获取、缓存 ![](images/Integration-admin-guide/action_menu.png) -浏览器集成代码找到用户系统上安装的 Houdini、Maya、Nuke 和 Photoshop,从而产生用于启动其中每个集成的菜单动作。请注意,在给定的环境配置文件中,必须存在软件实体的插件,才会针对该环境的实体显示软件的启动器。__ 因此,在此示例中,从中获取此代码片段的文件中必须存在 `tk-houdini`、`tk-maya`、`tk-nuke` 和 `tk-photoshopcc` 所有这些插件。 如果要从此实体的启动器列表中移除某项(例如 Maya),只需从环境配置文件中移除 `tk-maya` 插件块。 +浏览器集成代码找到用户系统上安装的 Houdini、Maya、Nuke 和 Photoshop,从而产生用于启动其中每个集成的菜单动作。请注意,在给定的环境配置文件中,必须存在软件实体的插件,才会针对该环境的实体显示软件的启动器。\_\_ 因此,在此示例中,从中获取此代码片段的文件中必须存在 `tk-houdini`、`tk-maya`、`tk-nuke` 和 `tk-photoshopcc` 所有这些插件。 如果要从此实体的启动器列表中移除某项(例如 Maya),只需从环境配置文件中移除 `tk-maya` 插件块。 除了这些启动器外,发布应用的“发布...”(Publish…)命令也包含在菜单中。 @@ -264,6 +264,7 @@ websocket 服务器的 RPC API 的第二次实施更改了用于获取、缓存 首先,导航至 [`config/env/asset.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47) 并注意 `tk-shotgun` 插件块如何指向 [`@settings.tk-shotgun.asset`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/asset.yml#L47)。`@` 符号表示配置值来自包含的文件。 这意味着您需要转到 [env/includes/settings/`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml) 进行更新。 在 `env/includes/settings/tk-shotgun.yml` 中,注意每个实体的每个块。 例如,资产为: + ``` # asset @@ -341,7 +342,6 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 2. Chrome 或 Python websocket 服务器已拒绝连接,从而导致 {% include product %} Web 应用程序无法与 {% include product %} Desktop 通信。这种情况很可能与用于在请求时允许连接继续的自签名证书有关。从头开始重新生成这些证书通常可以解决该问题,可以从 {% include product %} Desktop 触发此操作,如下所示。 - ![](images/Integration-admin-guide/regenerate_certs.png) 1. {% include product %} Desktop 的 websocket 服务器无法在启动时启动。可能仅在公开发布的 websocket 服务器版本错误时出现此情况,这应该极少发生。在这种情况下,日志记录将位于 [tk-desktop.log](https://developer.shotgridsoftware.com/38c5c024/) 中,用于说明该错误,可以将其[发送到 {% include product %} 的支持团队](https://support.shotgunsoftware.com/hc/zh-cn/requests/new)。 @@ -360,8 +360,8 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 4. 有一个缓存在磁盘上的空菜单动作列表。要强制重新生成缓存,可使用以下几种选项: - - 在项目的配置中更新 YAML 文件的修改时间。这样,{% include product %} 下一次请求菜单动作时,将触发重新缓存这些菜单动作。值得注意的是,这将触发参与项目的所有用户进行重新缓存。__ - - 在 {% include product %} 站点中更新任何软件实体中的字段值。该行为与上述涉及 YAML 文件修改时间的选项相同,但将使 {% include product %} 站点上_所有_项目中所有用户的缓存数据无效。软件实体是非项目实体,这意味着它们在所有项目之间共享。如果更改了任何软件实体中的数据,则会影响所有项目。 + - 在项目的配置中更新 YAML 文件的修改时间。这样,{% include product %} 下一次请求菜单动作时,将触发重新缓存这些菜单动作。值得注意的是,这将触发参与项目的所有用户进行重新缓存。\_\_ + - 在 {% include product %} 站点中更新任何软件实体中的字段值。该行为与上述涉及 YAML 文件修改时间的选项相同,但将使 {% include product %} 站点上*所有*项目中所有用户的缓存数据无效。软件实体是非项目实体,这意味着它们在所有项目之间共享。如果更改了任何软件实体中的数据,则会影响所有项目。 - 可以在出现问题的主机上删除缓存文件。移除缓存通常没有问题,因为缓存存储在每个主机本地,这仅会导致在相应系统上从头开始重新缓存数据。缓存存储在 {% include product %} 缓存位置中的以下 SQLite 文件中:`/site.basic.desktop/tk-desktop/shotgun_engine_commands_v1.sqlite` **“Toolkit: 正在检索动作...”(Toolkit: Retrieving actions…)始终不替换为菜单动作** @@ -376,35 +376,32 @@ Linux: ~/.shotgun\\site.basic.desktop\tk-desktop 3. 用户在多个 {% include product %} 站点上工作。在单个站点上对 {% include product %} Desktop 进行身份认证后,从另一个 {% include product %} 站点请求菜单动作会导致系统询问用户是否重新启动 {% include product %} Desktop 并登录新站点。如果忽略该请求,则另一个站点将永远不会收到菜单动作列表。 - ## Toolkit 配置文件 如果您的工作室使用代理服务器,如果您要在初始登录屏幕中预填充某些值,或者如果您要调整基于浏览器的应用程序启动器与 {% include product %} Desktop 的集成方式,有一个名为 `toolkit.ini` 的特殊配置文件。{% include product %} Desktop 无需此文件即可运行;仅当您需要配置其行为时才需要它。Toolkit 按以下顺序在多个位置查找该文件: 1. 指向文件路径的名为 `SGTK_PREFERENCES_LOCATION` 的环境变量。 2. 在 {% include product %} Toolkit 首选项文件夹中:(请注意,默认情况下这些位置不存在此文件;您必须创建此文件。) - - Windows: `%APPDATA%\Shotgun\Preferences\toolkit.ini` - - macOS: `~/Library/Preferences/Shotgun/toolkit.ini` - - Linux: `~/.shotgun/preferences/toolkit.ini` + - Windows: `%APPDATA%\Shotgun\Preferences\toolkit.ini` + - macOS: `~/Library/Preferences/Shotgun/toolkit.ini` + - Linux: `~/.shotgun/preferences/toolkit.ini` -通过 `SGTK_PREFERENCES_LOCATION` 环境变量选项,您可以将您的配置文件存储在计算机或网络上的其他位置。 请注意,`toolkit.ini` 为当前标准文件名。 如果您使用的是 `config.ini`,请参见下面的“旧位置”部分。__ +通过 `SGTK_PREFERENCES_LOCATION` 环境变量选项,您可以将您的配置文件存储在计算机或网络上的其他位置。 请注意,`toolkit.ini` 为当前标准文件名。 如果您使用的是 `config.ini`,请参见下面的“旧位置”部分。\_\_ 您可以参见[此处](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example)一个记录的配置文件示例。 -请注意,此示例文件名为 `config.ini`,但可以重命名为 `toolkit.ini` +请注意,此示例文件名为 `config.ini`,但可以重命名为 `toolkit.ini` 另请注意,您可以在此文件中使用环境变量以及硬编码值,以便您可以执行一些操作,例如,通过 Windows 上存在的 USERNAME 变量提取默认的用户名作为建议提供给用户。 - - **旧位置(已弃用)** 尽管 `toolkit.ini` 为当前标准文件名,我们以前出于相同目的使用了 `config.ini` 文件。 `toolkit.ini` 和 `config.ini` 的内容相同。 搜索 `config.ini` 时将使用以下已弃用的位置: 1. 指向文件的名为 `SGTK_DESKTOP_CONFIG_LOCATION` 的环境变量。 2. 在以下路径中: - - Windows: `%APPDATA%\Shotgun\desktop\config\config.ini` - - macOS: `~/Library/Caches/Shotgun/desktop/config/config.ini` + - Windows: `%APPDATA%\Shotgun\desktop\config\config.ini` + - macOS: `~/Library/Caches/Shotgun/desktop/config/config.ini` - `~/shotgun/desktop/config/config.ini`Linux: **代理配置** @@ -478,33 +475,32 @@ _情况:我的项目将要打包,我希望将其冻结,以便不会自动 **解决方案** -- 确定要将项目锁定到的版本。 [可以在此查找集成版本。](https://support.shotgunsoftware.com/hc/zh-cn/sections/115000020494) +- 确定要将项目锁定到的版本。 [可以在此查找集成版本。](https://support.shotgunsoftware.com/hc/zh-cn/sections/115000020494) - 在 {% include product %} 中,为要锁定的项目创建工作流配置实体,并填充以下字段(在此示例中,我们将配置锁定为使用集成 v1.0.36): -- 配置名称(Config Name): `Primary` +- 配置名称(Config Name): `Primary` - 项目(Project):要锁定的项目 -- 插件 ID(Plugin ids): `basic.*` -- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` +- 插件 ID(Plugin ids): `basic.*` +- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - 现在,在该项目上启动 {% include product %} Desktop 的任何人都将始终使用 v1.0.36。开始处理该项目的任何新用户也将获取 v1.0.36。 - ![](images/Integration-admin-guide/freeze_single_project.png) **补充知识** - 更新下载到本地计算机。 - 用户下次在连接到 Internet 的情况下启动 Desktop 时,基本配置 `v1.0.36` 及其所有相关代码将下载到他们的计算机。 -- `basic.*` 表示基本配置中的所有插件都将选取此覆盖。 例如,如果您想要仅冻结 Nuke 和 Maya 集成,可以指定 `basic.maya, basic.nuke`。 +- `basic.*` 表示基本配置中的所有插件都将选取此覆盖。 例如,如果您想要仅冻结 Nuke 和 Maya 集成,可以指定 `basic.maya, basic.nuke`。 - 要进行测试,您可以创建此工作流配置实体的副本,并将您的用户名添加到 `User Restrictions` 字段中。 这将限制该实体,使其仅可供您使用,而不会影响其他用户。然后,您可以从此配置副本启动 Maya 或某些其他软件,并确认它运行的是预期的集成版本。 **已知问题** - Flame 集成的命名空间为 `basic.flame`,从表面上看应该包含在 `basic.*` 中。 但实际上 Flame 集成并不包含在基本配置中。因此,如果您在某个项目中使用 Flame,然后执行此覆盖,则 Flame 集成将停止工作。 - 解决方案是专门为 Flame 创建另一个工作流配置覆盖: -- 配置名称(Config Name): `Primary` +- 配置名称(Config Name): `Primary` - 项目(Project):要锁定的项目(如果要锁定所有项目,则为空) -- 插件 ID(Plugin ids): `basic.flame` -- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- 插件 ID(Plugin ids): `basic.flame` +- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### 针对站点冻结更新 @@ -535,10 +531,10 @@ _情况:我想要锁定站点中除测试项目以外的其他所有项目, - 按上述部分中所述,针对站点冻结更新。 - 使用以下字段值配置例外项目的工作流配置实体: -- 配置名称(Config Name): `Primary` -- 项目(Project):不希望锁定的项目__ -- 插件 ID(Plugin ids): `basic.*` -- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-basic` +- 配置名称(Config Name): `Primary` +- 项目(Project):不希望锁定的项目\_\_ +- 插件 ID(Plugin ids): `basic.*` +- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-basic` **补充知识** @@ -546,7 +542,7 @@ _情况:我想要锁定站点中除测试项目以外的其他所有项目, ### 安全升级锁定的站点 -- 情况:我们已锁定到 v1.0.0,并希望升级到 v2.0.0,但我想在将新版本部署到工作室之前先对其进行测试。* +- 情况:我们已锁定到 v1.0.0,并希望升级到 v2.0.0,但我想在将新版本部署到工作室之前先对其进行测试。\* **解决方案** @@ -574,7 +570,7 @@ _情况:我想要锁定站点中除测试项目以外的其他所有项目, ![](images/Integration-admin-guide/wizard_select.png) -开始配置新项目时,首先要确定使用哪个配置模板__。 配置模板基本上是完整的项目配置,包含运行项目所需的所有设置、文件系统模板、应用和逻辑。 +开始配置新项目时,首先要确定使用哪个配置模板\_\_。 配置模板基本上是完整的项目配置,包含运行项目所需的所有设置、文件系统模板、应用和逻辑。 - 如果这是您的第一个项目,请使用 {% include product %} 默认值以便快速入门。 - 如果您已配置过项目且有以前项目的配置,则可以基于现有项目创建新项目来轻松重用这些配置。 @@ -645,7 +641,7 @@ _情况:我想要锁定站点中除测试项目以外的其他所有项目, #### 设置存储 -每个 Toolkit 项目均会将其所有文件和数据写入到磁盘上的一个或多个共享存储位置。例如,某个配置可能需要一个存储用来存放纹理,一个用来存放渲染,以及一个用来存储场景文件。通常,在 {% include product %} 的“站点偏好设置”(Site Preferences)中的_“文件管理”(File Management)_选项卡下控制这些存储。 +每个 Toolkit 项目均会将其所有文件和数据写入到磁盘上的一个或多个共享存储位置。例如,某个配置可能需要一个存储用来存放纹理,一个用来存放渲染,以及一个用来存储场景文件。通常,在 {% include product %} 的“站点偏好设置”(Site Preferences)中的*“文件管理”(File Management)*选项卡下控制这些存储。 Toolkit 设置向导将要求您将配置所需的每个存储根映射到 {% include product %} 中的一个本地存储。 @@ -678,6 +674,7 @@ Toolkit 设置向导将要求您将配置所需的每个存储根映射到 {% in 如果这是您的第一个项目,您通常要确定磁盘上一个用于存储您的所有将来工作流配置的共享区域。这通常是存储整个工作室共享的软件或软件设置的位置。该位置可能类似于 `/mnt/software/shotgun`。 根据您的工作室网络和文件命名约定,该位置可能会有所不同。 在设置第一个配置时,请在配置中为您的工作室中使用的所有平台设置路径。从而,将来能够轻松创建可从所有计算机访问的环境。假设您的项目名称为 _Golden Circle_,您可以键入以下三个路径: + ``` linux: /mnt/software/shotgun/golden_circle macosx: /servers/production/software/shotgun/golden_circle diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md b/docs/zh_CN/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md index 9db988575..25b013190 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md @@ -8,6 +8,7 @@ lang: zh_CN # Disabling auto updates and offline usage ## Auto updates + ### What parts auto update? By default {% include product %} Desktop will automatically check for updates, and install them to the local machine if it finds any. @@ -51,7 +52,7 @@ When you start either of them up, it will automatically try to look for updates, It is recommended that you follow the "Managing updates" steps bellow after installing {% include product %} Desktop, as the components bundled with the installer may not be the latest. -{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Note" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} {% include info title="Note" content="You will still need to be able to connect to your ShotGrid site. When we say offline we are talking about not being able to connect to our app store to download updates." %} @@ -64,12 +65,12 @@ To update the `tk-framework-desktopstartup` component, you will need to [downloa For the `tk-config-basic` component it's a bit more tricky, due to all its dependencies. 1. Run {% include product %} Desktop on a workstation connected to the internet. When it starts up, the latest upgrades will be automatically downloaded. -(Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) + (Ensure `SHOTGUN_DISABLE_APPSTORE_ACCESS` is not set on this machine.) 2. Copy the bundle cache to a shared location where all machines can access it. 3. Set the `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` environment variable on offline machines to point to this location. 4. When Desktop starts up on offline machines, they will pick up the latest upgrades that are available in the bundle cache. -{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. +{% include info title="Warning" content="Depending on your network setup, it can sometimes get stuck looking for updates online even though it won't be able to access them. In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} **CREATE does come with it's own bundled config, however it doesn't seem to have the engines, or atleast doesn't share them when launching Maya for example.** @@ -80,29 +81,26 @@ In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE 1. Determine the version you want to lock your project to. You can find the integration releases [here](https://support.shotgunsoftware.com/hc/en-us/sections/115000020494-Integrations). 2. In {% include product %}, create a Pipeline Configuration entity for the project you want to lock down, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): - - Name: `Primary` - - Project: The project you want to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) - + + - Name: `Primary` + - Project: The project you want to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` + ![Pipeline Configuration entity with a setup for a project with disabled updates.](images/offline-and-disabled-auto-updates/freeze_single_project.png) + 3. Anyone starting {% include product %} Desktop on the project will now always use `v1.0.36`. Any new users starting to work on the project will also get `v1.0.36`. #### Good to know - The next time a user launches Desktop while connected to the Internet, `v1.0.36` of the basic config, and all of its related code, will be downloaded to their machine. - `basic.*` means that all plugins in the basic configuration will pick up this override. If, for example, you wanted to freeze the Nuke and Maya integrations only, you could specify `basic.maya`, `basic.nuke`. -- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. +- To test, you can create a duplicate of this Pipeline Configuration entity, and add your username to the `User Restrictions` field. This will restrict the entity such that it's only available to you and won't impact other users. You can then launch Maya or some other software from this duplicate configuration and confirm that it’s running the expected integrations versions. #### Known issues -- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. -However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. -The solution would be to create an additional Pipeline Configuration override specifically for flame: - - Name: `Primary` - - Project: The project you want to lock down (or None for all projects) - - Plugin ids: `basic.flame` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` +- The Flame integration is namespaced `basic.flame`, and so is implied to be part of `basic.*`. + However, the Flame integration isn't actually included in the basic config. So, if you are using Flame for a project and implement this override, the Flame integration will stop working. + The solution would be to create an additional Pipeline Configuration override specifically for flame: - Name: `Primary` - Project: The project you want to lock down (or None for all projects) - Plugin ids: `basic.flame` - Descriptor: `sgtk:descriptor:app_store?name=tk-config-flameplugin` ### Disabling updates for all projects @@ -127,10 +125,10 @@ You can - Disabling updates for your site as described in the above section. - Configure the exception project’s Pipeline Configuration entity to have the following field values: - - Name: `Primary` - - Project: The project you want not to lock down - - Plugin ids: `basic.*` - - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` + - Name: `Primary` + - Project: The project you want not to lock down + - Plugin ids: `basic.*` + - Descriptor: `sgtk:descriptor:app_store?name=tk-config-basic` ![Two Pipeline Configurations, one disabling updates to the whole site, and the other enabling updates on a single project](images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg) #### Good to know @@ -138,7 +136,8 @@ You can Note that you’ve omitted the version number from the Descriptor field for the project. This will mean that the project is tracking the latest release of the basic config. ### Upgrading -Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.* + +Scenario: We’re locked down to v1.0.0, and we’d like to upgrade to v2.0.0, but first I want to test out the new version before deploying it to the studio.\* Solution Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting "Duplicate Selected". @@ -147,4 +146,4 @@ You will now begin to use this Pipeline Configuration. Change the descriptor to point to the version you wish to test. You can invite any users you want to partake in testing by adding them to the User Restrictions field. Once you are happy with testing, simply update the main Pipeline Configuration to use that version. -Once users restart Desktop or DCCs, the update will be picked up. \ No newline at end of file +Once users restart Desktop or DCCs, the update will be picked up. diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md index 6be397ede..0ae0dc664 100644 --- a/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md +++ b/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md @@ -23,7 +23,7 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 下面是 Toolkit (SGTK) 的简要说明: -- Toolkit 是一个基于 {% include product %} 平台的_工作流工具包_,通过它可以更轻松地为工作室编写和安装各种工具。 +- Toolkit 是一个基于 {% include product %} 平台的*工作流工具包*,通过它可以更轻松地为工作室编写和安装各种工具。 - Toolkit 基于文件系统 - 它可以帮助您组织管理各种内容在磁盘上的存储,让磁盘内容井井有条。 - Toolkit 是得力的助手 - 它并不会试图接管您工作流中的数据或对它们进行抽象,而是为艺术家提供强大的工具,帮助他们更轻松地查找信息和避免错误。 - Toolkit 通过将所有发布存储在 {% include product %} 中来帮助您共享工作。Toolkit 使您可以在制作过程中轻松共享更新和正在进行的工作。 @@ -36,15 +36,15 @@ _请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有 ![](images/toolkit-overview/new_project.png) -在设置新项目时,您需要使用模板配置__。这是一个预定义配置,其中包含插件和应用、文件系统配置和其他设置。如果您是刚刚开始接触 Toolkit,可以先使用我们的示例配置,以此为出发点开始探索。如果您已在另一个项目中使用 Toolkit,建议以那个项目的配置为基础开始新项目。这样,您将逐步形成并发展出一个工作室配置,然后针对每个新项目优化该配置。当然,也可以单独维护一个工作室配置,将它用作所有新项目的模板。 +在设置新项目时,您需要使用模板配置\_\_。这是一个预定义配置,其中包含插件和应用、文件系统配置和其他设置。如果您是刚刚开始接触 Toolkit,可以先使用我们的示例配置,以此为出发点开始探索。如果您已在另一个项目中使用 Toolkit,建议以那个项目的配置为基础开始新项目。这样,您将逐步形成并发展出一个工作室配置,然后针对每个新项目优化该配置。当然,也可以单独维护一个工作室配置,将它用作所有新项目的模板。 -每个配置都定义了一些“存储点”__。对于标准示例配置 `tk-config-default`,我们定义了一个称为“primary”的存储点。__ 这意味着您的所有制作数据将位于一个文件系统项目根目录下。您也可以设置具有多个文件系统根目录的配置。我们将这类配置称为“多存储配置”。__例如,当您为渲染和剪辑等内容分别设置了单独的存储时,就需要使用多存储配置。每个存储点在 {% include product %} 中需要以_本地文件存储_的形式存在 - 您可以在“站点偏好设置”(Site Preferences)中的_“文件管理”(File Management)_选项卡下设置这些。 +每个配置都定义了一些“存储点”**。对于标准示例配置 `tk-config-default`,我们定义了一个称为“primary”的存储点。** 这意味着您的所有制作数据将位于一个文件系统项目根目录下。您也可以设置具有多个文件系统根目录的配置。我们将这类配置称为“多存储配置”。\_*例如,当您为渲染和剪辑等内容分别设置了单独的存储时,就需要使用多存储配置。每个存储点在 {% include product %} 中需要以*本地文件存储*的形式存在 - 您可以在“站点偏好设置”(Site Preferences)中的*“文件管理”(File Management)\_选项卡下设置这些。 -Toolkit 会将实际项目配置安装在您喜欢的任意位置。通常,这将转到磁盘上的_软件安装_区域,而不是项目数据区域本身。 +Toolkit 会将实际项目配置安装在您喜欢的任意位置。通常,这将转到磁盘上的*软件安装*区域,而不是项目数据区域本身。 ## 逐步发展您的工作室配置 -设置新项目时,您可以使用现有项目作为基础。Toolkit 会将该项目的配置文件夹复制到您的新项目。这意味着,新项目将获得与它基于的项目完全相同的应用和插件版本、相同的设置和相同的自定义。如果您想逐步发展完善自己的工作流__,并利用现有制作中所做的改进和调整,此功能非常有用。 +设置新项目时,您可以使用现有项目作为基础。Toolkit 会将该项目的配置文件夹复制到您的新项目。这意味着,新项目将获得与它基于的项目完全相同的应用和插件版本、相同的设置和相同的自定义。如果您想逐步发展完善自己的工作流\_\_,并利用现有制作中所做的改进和调整,此功能非常有用。 或者,如果您对某个项目的设置满意,也可以直接选择该项目的配置文件夹,将它另存到别处的某个集中位置。随后可以将此配置用作工作室模板,每次创建新项目时以此配置为基础。如果需要,您甚至可以使用诸如 Git 等修订控制系统控制此工作室模板配置的源代码,并能简单、透明地跟踪工作流配置模板如何随时间逐步完善。每当您想要更新模板时,只需复制一个项目的配置并提交更改即可。 @@ -85,12 +85,13 @@ tank updates [environment_name] [engine_name] [app_name] 可以使用特殊关键词 `ALL` 表示一个类别中的所有项。 示例: -- 检查所有内容: `tank updates` -- 检查镜头环境: `tank updates Shot` -- 检查所有环境中的所有 Maya 应用: `tank updates ALL tk-maya` -- 检查镜头环境中的所有 Maya 应用: `tank updates Shot tk-maya` -- 确保所有地方的加载器应用保持更新: `tank updates ALL ALL tk-multi-loader` -- 确保 Maya 中的加载器应用保持更新: `tank updates ALL tk-maya tk-multi-loader` + +- 检查所有内容: `tank updates` +- 检查镜头环境: `tank updates Shot` +- 检查所有环境中的所有 Maya 应用: `tank updates ALL tk-maya` +- 检查镜头环境中的所有 Maya 应用: `tank updates Shot tk-maya` +- 确保所有地方的加载器应用保持更新: `tank updates ALL ALL tk-multi-loader` +- 确保 Maya 中的加载器应用保持更新: `tank updates ALL tk-maya tk-multi-loader` 除了检查应用商店,此脚本还会检查其他所有注册的位置。因此,它可能会查询您本地的 Git、GitHub 库、磁盘上的文件和应用商店,具体取决于各个应用的部署位置。 @@ -116,7 +117,7 @@ Toolkit 的文件夹创建操作分为两个过程 - 一个是直接过程,任 # 当前上下文 -创建文件系统结构后,Toolkit 会知道磁盘上的文件夹与派生该文件夹的 {% include product %} 对象之间的关系。这一点很重要,因为这样 Toolkit 才能很容易地在发布、加载或解析路径时将 {% include product %} 中的对象与磁盘上的文件夹或文件相关联。另外,它还与我们所说的“上下文”或“当前工作区”有关。____上下文对象是 Toolkit 核心的一部分,可跟踪记录当前正在处理的内容。这是 Toolkit 解析文件系统路径时的一个中心机制。 +创建文件系统结构后,Toolkit 会知道磁盘上的文件夹与派生该文件夹的 {% include product %} 对象之间的关系。这一点很重要,因为这样 Toolkit 才能很容易地在发布、加载或解析路径时将 {% include product %} 中的对象与磁盘上的文件夹或文件相关联。另外,它还与我们所说的“上下文”或“当前工作区”有关。\_\_\_\_上下文对象是 Toolkit 核心的一部分,可跟踪记录当前正在处理的内容。这是 Toolkit 解析文件系统路径时的一个中心机制。 ![](images/toolkit-overview/context.png) @@ -124,12 +125,12 @@ Toolkit 的文件夹创建操作分为两个过程 - 一个是直接过程,任 # 文件系统模板 -Toolkit 核心包含一个处理文件路径的系统。我们称之为“模板系统”。__由于 Toolkit 基于文件系统,因此每当应用需要在磁盘上读取或写入数据时,都需要解析文件路径。应用对文件系统结构不了解,这意味着它们不知道文件系统的组织结构。模板系统负责为它们处理这一切。 +Toolkit 核心包含一个处理文件路径的系统。我们称之为“模板系统”。\_\_由于 Toolkit 基于文件系统,因此每当应用需要在磁盘上读取或写入数据时,都需要解析文件路径。应用对文件系统结构不了解,这意味着它们不知道文件系统的组织结构。模板系统负责为它们处理这一切。 -在模板系统的核心,有一个模板配置文件。__此文件包含项目的所有重要文件系统位置。__模板与下面类似: +在模板系统的核心,有一个模板配置文件。**此文件包含项目的所有重要文件系统位置。**模板与下面类似: ```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "shots/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` 模板本质上定义了一个包含一些动态字段的路径。每个字段都可以配置验证和键入内容,例如您可以定义上面模板中的 `{version}` 字段是一个填充三个零的整数(例如 `001`、`012`、`132`)。每当应用需要在磁盘上写入或读取数据时,都会向模板文件中添加一个描述该位置的模板。由于应用通常会构成一个工作流,因此一个应用(例如发布应用)的输出模板往往是另一个应用(例如加载应用)的输入模板。这就是所有文件系统位置都保留在一个文件内的原因。 @@ -161,7 +162,7 @@ maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' ![](images/toolkit-overview/templates.png) -这时就需要用到 _Toolkit 上下文_。Toolkit 上下文让我们可以将模板字段分为两个不同的组;上下文字段(`Shot`、`Step`、`Asset` 等)是我们想确保在应用外部解析的字段 - 这样应用逻辑就不必包含专门用于处理镜头和资产这类概念的代码。应用只需填充与应用的特定_业务逻辑_直接关联的字段。在我们的发布应用示例中,业务逻辑由 `name` 和 `version` 字段组成。因此,如上图所示,Toolkit 会将字段解析分为两个不同阶段:一些字段由上下文填充,另一些字段则由应用内部的业务逻辑填充。这样,应用的设计便可不局限于特定的文件系统布局。我们认为这是构建良好工作流工具的一个重要方面。 +这时就需要用到 _Toolkit 上下文_。Toolkit 上下文让我们可以将模板字段分为两个不同的组;上下文字段(`Shot`、`Step`、`Asset` 等)是我们想确保在应用外部解析的字段 - 这样应用逻辑就不必包含专门用于处理镜头和资产这类概念的代码。应用只需填充与应用的特定*业务逻辑*直接关联的字段。在我们的发布应用示例中,业务逻辑由 `name` 和 `version` 字段组成。因此,如上图所示,Toolkit 会将字段解析分为两个不同阶段:一些字段由上下文填充,另一些字段则由应用内部的业务逻辑填充。这样,应用的设计便可不局限于特定的文件系统布局。我们认为这是构建良好工作流工具的一个重要方面。 处理路径解析的应用代码通常如下所示: @@ -181,6 +182,7 @@ fields["version"] = 234 # order to save out the file path = publish_template_obj.apply_fields(fields) ``` + 有关您可以如何配置和使用模板 API 的更多详细信息,请参见以下内容: [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) @@ -189,11 +191,11 @@ path = publish_template_obj.apply_fields(fields) # 选择要运行的插件和应用 -Toolkit 核心的另一个重要作用是决定应向用户显示哪些应用。__如果您在处理角色装配工作并启动了 Maya,可能会需要一套与进行镜头照明工作时不同的应用。此外,应用的配置可能会因您需要的操作方式而异。因此,同一个审核应用,用于装配时可能会生成一个转台,而当动画设计师运行它时,则会使用镜头摄影机播放动画预览。 +Toolkit 核心的另一个重要作用是决定应向用户显示哪些应用。\_\_如果您在处理角色装配工作并启动了 Maya,可能会需要一套与进行镜头照明工作时不同的应用。此外,应用的配置可能会因您需要的操作方式而异。因此,同一个审核应用,用于装配时可能会生成一个转台,而当动画设计师运行它时,则会使用镜头摄影机播放动画预览。 -为了实现这种灵活性,Toolkit 项目配置包含一系列_环境_。一个环境就是一个配置文件,用来定义一套应用和插件,以及它们的所有配置参数。 +为了实现这种灵活性,Toolkit 项目配置包含一系列*环境*。一个环境就是一个配置文件,用来定义一套应用和插件,以及它们的所有配置参数。 -Toolkit 启动时,需要决定对_哪个_环境进行初始化。这通过一段称为“挂钩”的 Python 代码来实现,__您可以在其中添加自己的业务逻辑。_上下文_对象将传递到这段代码中,这通常用于确定要使用哪个环境。 +Toolkit 启动时,需要决定对*哪个*环境进行初始化。这通过一段称为“挂钩”的 Python 代码来实现,\_*您可以在其中添加自己的业务逻辑。*上下文\_对象将传递到这段代码中,这通常用于确定要使用哪个环境。 ![](images/toolkit-overview/environment.png) @@ -211,7 +213,7 @@ Toolkit 启动时,需要决定对_哪个_环境进行初始化。这通过一 默认配置基于工作流工序来组织其文件系统。这意味着在某个镜头位置下,您可以看到针对建模和装配等的文件夹。实际上,您所执行的每个工作流工序都有一个对应的文件夹。每个文件夹在磁盘上都有自己的工作区和发布区。这意味着发布模板可能如下所示: ```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' +maya_shot_publish: "sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma" ``` 为了使用此模板,上下文需要同时包含一个实体和一个工作流工序。对于父场 `ABC` 下的镜头 `1122` 和 `Modeling` 这个工作流工序,上面的模板将解析为 `sequences/ABC/1122/Modeling/...`。这意味着,一个包含镜头但不包含工作流工序的上下文并不足以填充上面的模板。您无法为仅镜头上下文启动 Maya,并使用上述模板。为使其正常运行,需要一个工序。 @@ -240,13 +242,13 @@ maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' ## 挂钩 -除了使用模板的应用设置外,Toolkit 还支持称为_挂钩_的概念。挂钩是小段的 Python 代码片段,让您可以在配置中自定义应用的各个部分。 +除了使用模板的应用设置外,Toolkit 还支持称为*挂钩*的概念。挂钩是小段的 Python 代码片段,让您可以在配置中自定义应用的各个部分。 下面我们来介绍它是如何工作的,以及为什么它非常有用。 -应用之所以强大,是因为它们可以在多个插件和项目中重复使用。但是,应用往往需要一些特定于插件逻辑的小段代码。例如,如果我们要构建一个可同时在 Nuke 和 Maya 中运行的加载器应用,就需要有处理_实际文件加载_操作的代码,而这些代码在 Nuke 和 Maya 中必然是不同的。不仅如此,我们还希望此应用最好能用于任何插件!不同工作室向场景中加载内容项的方式也有所不同,有些工作室可能需要支持自定义的 Maya 引用节点,有些则只要执行导入即可。 +应用之所以强大,是因为它们可以在多个插件和项目中重复使用。但是,应用往往需要一些特定于插件逻辑的小段代码。例如,如果我们要构建一个可同时在 Nuke 和 Maya 中运行的加载器应用,就需要有处理*实际文件加载*操作的代码,而这些代码在 Nuke 和 Maya 中必然是不同的。不仅如此,我们还希望此应用最好能用于任何插件!不同工作室向场景中加载内容项的方式也有所不同,有些工作室可能需要支持自定义的 Maya 引用节点,有些则只要执行导入即可。 -在 Toolkit 中,这种情况可以使用_挂钩_来解决。挂钩是一段可自定义的代码。应用随附一个默认挂钩,其中包含一个基础执行,这意味着应用可以开箱即用。但是,如果您想自定义行为,可以将默认挂钩文件复制到您的配置中,Toolkit 会改为使用该代码。 +在 Toolkit 中,这种情况可以使用*挂钩*来解决。挂钩是一段可自定义的代码。应用随附一个默认挂钩,其中包含一个基础执行,这意味着应用可以开箱即用。但是,如果您想自定义行为,可以将默认挂钩文件复制到您的配置中,Toolkit 会改为使用该代码。 [阅读《管理员手册》了解有关使用挂钩的详细信息。](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033178) @@ -282,7 +284,7 @@ maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' Toolkit 不止是一套应用和插件。它还是一个框架,您可以用它开发自己的工具和技术!我们已在 Toolkit 中包含了大量功能,将它打造成一个功能丰富的工作室开发平台。有了 Toolkit 作为基础,您可以专注于解决手中的问题,而不必花费精力自己构建基础平台。我们努力让开发人员可以在不意外打断艺术家工作流的前提下轻松构建、评估和发布软件。 - 插件将确保无论底层基础是什么,开发人员都可以使用 Python 和 Qt (PySide/PySide2) 编写应用。这意味着,有些插件非常简单,而有些插件较为复杂,具体取决于其提供的 API。因此,工作室有一种直观、一致的方式来开发工具。根据我们的经验,Python 和 Qt 是工作室常用的开发环境,许多技术总监都熟悉它们。 -- 插件层还有一个好处,那就是应用只需编写一次,便可在多种环境中部署。我们将开发的标准应用套件称为_多应用_,意思是同一个应用适用于所有插件。当然,难免会有些特定的代码需要定制后才能用于每个 DCC 应用程序公开的特定 API,但是这些代码通常包含在一个或多个挂钩中,这让重用应用变得很简单。能够创建这种多应用的另一个好处是,在开发新插件的过程中,很容易就可以配置所有标准应用来支持新插件。 +- 插件层还有一个好处,那就是应用只需编写一次,便可在多种环境中部署。我们将开发的标准应用套件称为*多应用*,意思是同一个应用适用于所有插件。当然,难免会有些特定的代码需要定制后才能用于每个 DCC 应用程序公开的特定 API,但是这些代码通常包含在一个或多个挂钩中,这让重用应用变得很简单。能够创建这种多应用的另一个好处是,在开发新插件的过程中,很容易就可以配置所有标准应用来支持新插件。 - 通过工作流配置和克隆,我们可以轻松创建开发沙盒,让开发人员能够在制作环境中工作,同时又不会干扰日常的制作活动。工具做好部署准备后,轻松即可更新主项目配置,然后将工具部署给所有艺术家。 - 应用在插件内运行,因此重新加载很容易。不必每次测试新的代码更改时都重新启动 Nuke 或 Maya,只需单击 Toolkit 中的重新加载按钮,即可加载最新代码。 diff --git a/docs/zh_CN/guides/pipeline-integrations/development.md b/docs/zh_CN/guides/pipeline-integrations/development.md index aca579059..0b53aadd8 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development.md +++ b/docs/zh_CN/guides/pipeline-integrations/development.md @@ -22,6 +22,7 @@ Toolkit 是用于支持我们的工作流集成的平台。例如,如果您在 无论采用哪种方式,了解如何使用 Toolkit API 都非常重要。 ShotGrid 整体包含三个主要 API + - [ShotGrid Python API](https://developer.shotgridsoftware.com/python-api) - [ShotGrid REST API](https://developer.shotgridsoftware.com/rest-api/) - [ShotGrid Toolkit API](https://developer.shotgridsoftware.com/tk-core) @@ -30,4 +31,4 @@ Toolkit API 是一种 Python API,它设计为与 ShotGrid Python API 或 REST Toolkit API 主要用于文件路径的集成和管理。一些 Toolkit 应用和框架还[有自己的 API](../../reference/pipeline-integrations.md)。 -这些文章将指导您使用 Toolkit 进行开发。 \ No newline at end of file +这些文章将指导您使用 Toolkit 进行开发。 diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-app.md index 007e3498e..93c77642f 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-app.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-app.md @@ -15,6 +15,7 @@ lang: zh_CN - [创建自己的应用](#creating-your-own-app) 步骤: + 1. [创建开发沙盒](#part-1-creating-a-development-sandbox) 2. [Fork 或下载入门应用库](#part-2-forking-or-downloading-the-starter-app-repository) 3. [将应用添加到配置](#part-3-adding-the-app-to-your-config) @@ -27,8 +28,9 @@ lang: zh_CN 6. [准备第一个版本发布](#part-6-preparing-your-first-release) 附加信息: + - [修改现有应用](#modifying-an-existing-app) - - [贡献](#contributing) + - [贡献](#contributing) ## 什么是 Toolkit 应用? @@ -45,17 +47,19 @@ Toolkit 应用可定义如下: Toolkit 应用由 Toolkit 插件初始化。[插件](https://developer.shotgridsoftware.com/tk-core/platform.html#engines)设计为在特定软件环境中运行,它们在其中提供用于运行 Toolkit 应用的界面。插件消除了需要从应用处理各种软件环境的复杂性。这意味着,应用只需专注于提供实现其用途的功能,无需考虑其他方面,例如,处理窗口父子关系、跟踪用户的上下文或提供用于启动本身的快捷方式。 ## 创建自己的应用。 + ShotGrid Software 维护和发布的应用和插件全部开源,可从 [GitHub](https://github.com/shotgunsoftware) 获取它们。 本部分介绍如何使用我们的入门模板创建新应用。 我们假设您熟悉 GitHub 和 Git 工作流。但是请注意,即使您不使用 Git 作为源代码管理解决方案,也可以进行 Toolkit 开发。 - ## 第 1 部分:创建开发沙盒 + 在进行其他任何操作之前,建议您先[通过克隆项目配置来设置一个开发沙盒](../getting-started/installing_app.md#clone-the-pipeline-configuration-you-want-to-add-an-app-to)。 这将创建一个单独的配置,您可以在其中开发代码并测试更改,而不会影响参与制作的其他任何人。 ## 第 2 部分:Fork 或下载入门应用库 + 我们提供了[模板入门应用](https://github.com/shotgunsoftware/tk-multi-starterapp),您可以在此基础上创建自己的应用。使用此应用,所有的标准 Toolkit 样板代码都已为您设置好,还提供了一个基本示例 GUI。 ![Toolkit 入门应用默认 GUI](./images/starter-app.png) @@ -63,6 +67,7 @@ ShotGrid Software 维护和发布的应用和插件全部开源,可从 [GitHub 要使用它,您可以 Fork Git 库,然后将其克隆到磁盘上的本地开发区域;或者如果您不想在此阶段使用 Git 源代码管理工具,只需以 zip 文件形式从 GitHub 下载文件,并在本地解压缩(以后随时可以设置 Git 库)。无论哪种情况,目标都是获得入门应用代码的本地副本,以便可以开始进行更改。 ## 第 3 部分:将应用添加到配置 + 建议阅读“[添加应用](../getting-started/installing_app.md)”手册,此手册详细介绍了如何将应用添加到配置。 在将应用添加到配置时,需要考虑应用的使用位置,即,可能只在 Nuke 中、在多个不同的软件中或与 ShotGrid Desktop 分开单独使用。 @@ -81,6 +86,7 @@ tk-multi-starterapp: type: dev path: /path/to/source_code/tk-multi-starterapp ``` + 此设置指示 Toolkit 直接从磁盘的给定位置加载应用代码,对于需要不停更改代码的开发工作来说,这种做法非常方便。 以后,当您将应用添加到制作配置时,可能希望使用其他描述符。 @@ -106,23 +112,27 @@ tk-multi-starterapp: {% include info title="注意" content="应用不必具有 UI,成为有效应用的最低要求是有一个包含 `Application` 类的 `app.py` 和一个 `info.yml`。" %} ### 配置设置 + 在清单文件中,应该有一个可用于定义应用设置的 `configuration` 部分。 通过在清单文件中定义设置,您可以在环境 YAML 文件中为应用配置不同的设置值。如果应用需要根据其所在环境呈现不同的行为,这很有用。 例如,您可能希望有一个设置用于定义保存文件时使用的模板。 + ```yaml save_template: - type: template - default_value: "maya_asset_work" - description: The template to use when building the path to save the file into - allows_empty: False + type: template + default_value: "maya_asset_work" + description: The template to use when building the path to save the file into + allows_empty: False ``` + 为此创建设置意味着您不必在应用代码中对模板名称进行硬编码,而是可以从 `info.yml` 中默认定义或环境 YAML 文件设置中的覆盖定义的设置[获取值](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting)。 ```python template = app.get_setting("save_template") ``` + 这意味着您可以将应用配置为根据应用的运行环境使用不同的模板。 有关配置设置的详细信息,请参见[参考文档](https://developer.shotgridsoftware.com/tk-core/platform.html#the-configuration-section)。 @@ -141,6 +151,7 @@ frameworks: ``` #### 框架版本最低要求 + 如果框架具有最低版本要求,可以在 `info.yml` 中使用 minimum_version 设置: ```python @@ -168,6 +179,7 @@ frameworks: {% include info title="注意" content="如果屏幕上有任何 UI 处于激活状态,这些 UI 不会自动更新,您必须进入菜单重新启动它们。"%} ## 第 5 部分:测试 + 当您想要测试代码时,可以轻松邀请其他用户访问您的开发沙盒,方法是将他们添加到 ShotGrid 中 `PipelineConfiguration` 实体的 `User Restrictions` 字段中。 添加用户后,他们随即就会在 ShotGrid Create 中自己的菜单和浏览器动作中看到新条目,以及一个用于在 ShotGrid Desktop 中选取配置的选项。 @@ -183,10 +195,11 @@ ShotGrid 提供的所有应用均使用 Toolkit 应用商店跟踪更新和版 ```yaml location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 + name: tk-multi-setframerange + type: app_store + version: v0.1.7 ``` + 通过该标记,Toolkit(例如 `tank updates` 命令)可以检查更新何时可用,并以一种非常安全的方式更新和维护配置。 每当运行更新命令以及有新版本可用时,Toolkit 都会下载代码,将其放在磁盘上的一个本地“缓存”中,并确保用户可以访问它。 @@ -216,6 +229,7 @@ Toolkit 支持即时使用 Git (http://git-scm.com/),在对配置运行 `tank {% include warning title="注意" content="Git 描述符适用于[集中式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations),采用这种配置时,通常由管理员对应用运行缓存,并且缓存的应用会存储到所有用户均可访问的中心位置。但是,如果您使用的是[分布式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations),那么这种描述符可能不适合。您的应用将按用户下载,这意味着每个用户都需要安装并设置 Git 才能向您的库认证身份并访问代码。" %} ## 修改现有应用 + 有时,我们并不会使用空白的入门模板从头创建应用,而是需要为现有应用(例如 ShotGrid Software 的某个标准应用)添加一项小功能。 处理修改版的应用时,您通常会想要比照源应用,确保定期下载更改和错误修复。 @@ -226,17 +240,18 @@ Toolkit 支持即时使用 Git (http://git-scm.com/),在对配置运行 `tank 下面的工作流说明了整个操作: - 您对父应用执行 Fork 操作,并创建自己的库。通过 Fork 操作,您获得所有 Git 标记。 - 假定最新的标记名为 `v0.2.12`,主分支基本上与此标记中的内容相同。 + 假定最新的标记名为 `v0.2.12`,主分支基本上与此标记中的内容相同。 - 您应用自己的更改,并提交至主分支。这时得到的是 `v0.2.12` 加上您的更改。 - 将此版本发布到生产环境时,您需要创建一个标记。将该标记命名为 `v0.2.12.1`,以表示您的代码基于 `v0.2.12`,并且是第一个版本发布。 + 将此版本发布到生产环境时,您需要创建一个标记。将该标记命名为 `v0.2.12.1`,以表示您的代码基于 `v0.2.12`,并且是第一个版本发布。 - 现在有人发现您的修改中有一个错误。您修复此错误、更新标记并发布 `v0.2.12.2`。 - 父库中发布了多项重要的错误修复。 - 您将它们下载到您的库。由于父库中发布了若干个版本,最新标记现在为 `v0.2.15`。 - 将您的更改合并到主分支,并进行测试。这时得到的基本上是父应用 `v0.2.15` 与您的更改合并后的结果。更新标记为 `v0.2.15.1`。 + 您将它们下载到您的库。由于父库中发布了若干个版本,最新标记现在为 `v0.2.15`。 + 将您的更改合并到主分支,并进行测试。这时得到的基本上是父应用 `v0.2.15` 与您的更改合并后的结果。更新标记为 `v0.2.15.1`。 上面概述的标记方案可保证 Toolkit 更新能够正确工作,并且便于您快速了解 Fork 中每个标记基于哪些代码。 ### 贡献 + 我们欢迎大家提出 Pull 请求!如果您觉得自己的更改对其他人有益,请随时以 Pull 请求的形式反馈给我们。 我们随后可以将更改合并到应用的主版本中。 或者,在我们的[路线图页面](https://www.shotgunsoftware.com/roadmap/)上添加有关新想法的建议。 diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md index b7ab70a95..292d98c4c 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md @@ -15,7 +15,6 @@ lang: zh_CN {% include info title="注意" content="如果您使用的是[分布式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations),则必须先初始化 Toolkit 插件,然后再运行 Toolkit API 方法。如果使用的是[集中式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations),可以在不引导插件的情况下使用 API(这时使用[工厂方法](https://developer.shotgridsoftware.com/tk-core/initializing.html#factory-methods)),但是,在导入 `sgtk` 时,需要手动查找用于项目的正确核心 API 的路径。" %} - ### 要求 - 了解 Python 编程基础知识。 @@ -147,12 +146,11 @@ sgtk.set_authenticated_user(user) 3. 将当前加载的 sgtk 核心换为适合配置的核心。 4. 初始化插件、应用和框架。 - {% include info title="注意" content="通常情况下,引导应处理相应插件成功运行所需的所有事项。 但是,在某些情况下,插件可能会有不属于引导过程的特定设置要求,必须单独处理。" %} - ### 引导准备 + 要进行引导,必须先创建 [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) 实例。 ```python @@ -166,17 +164,20 @@ mgr = sgtk.bootstrap.ToolkitManager() 在调用引导方法之前,可以通过向 `ToolkitManager.plugin_id` 参数传递字符串来定义插件 ID。 在本手册中,您将引导 `tk-shell` 插件,因此应按照参考文档中所述的约定提供合适的插件 ID 名称。 + ```python mgr.plugin_id = "basic.shell" ``` #### 插件 + 如果您的目标是在 Maya 或 Nuke 等软件之外的独立 Python 环境中启动应用或运行 Toolkit 代码,则要引导到 `tk-shell` 插件。 如果您想在支持的软件中运行 Toolkit 应用,则需要选取合适的插件,如 `tk-maya` 或 `tk-nuke`。 此参数将直接传递给 [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 方法。请参见下面的[“实体”部分](#entity)中的示例。 #### 实体 + [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 方法 `entity` 参数用于为启动的插件设置[上下文](https://developer.shotgridsoftware.com/tk-core/core.html#context)以及[环境](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=environment#module-pick_environment)。该实体可以是将配置设置为与其一起使用的任何实体类型。 例如,如果提供 `Project` 实体,则插件将在项目上下文中启动,并使用项目环境设置。 同样,您可以提供 `Task` 实体(即任务链接到 `Asset`),则它将使用 `asset_step.yml` 环境启动。 @@ -208,7 +209,6 @@ def pre_engine_start_callback(ctx): mgr.pre_engine_start_callback = pre_engine_start_callback ``` - #### 配置选择 您可以选择明确定义要引导的配置,也可以让引导逻辑[自动检测合适的配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations)。 @@ -269,6 +269,7 @@ engine.context engine.sgtk engine.shotgun ``` + 虽然本手册的最终目标是介绍如何启动应用,但您可以在此基础之上,利用上述属性并测试一些代码段,或者运行一些利用 Toolkit API 的自动操作。 ### 启动应用 @@ -277,6 +278,7 @@ engine.shotgun 这些应用进而向插件注册命令,而且插件通常会将这些命令作为动作显示在菜单中(如果在 Maya 等软件中运行)。 #### 查找命令 + 要先查看已注册的命令,可以输出 [`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) 属性: ```python diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-engine.md index 4c1274b8a..9c0606c7e 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-engine.md @@ -8,22 +8,25 @@ lang: zh_CN # 开发自己的插件 ## 简介 + 本文档概述了与 Toolkit 插件开发相关的一些技术细节。 目录: + - [什么是 Toolkit 插件?](#what-is-a-toolkit-engine) - [开始之前要了解的事项](#things-to-know-before-you-start) - [插件集成方法](#approaches-to-engine-integration) - - [宿主软件包含 Qt、PyQt/PySide 和 Python](#host-software-includes-qt-pyqtpyside-and-python) - - [宿主软件包含 Qt 和 Python 但不包含 PySide/PyQt](#host-software-includes-qt-and-python-but-not-pysidepyqt) - - [宿主软件包含 Python](#host-software-includes-python) - - [宿主软件不包含 Python,但您可以编写插件](#host-software-does-not-contain-python-but-you-can-write-plugins) - - [宿主软件完全不提供脚本编写功能](#host-software-provides-no-scriptability-at-all) + - [宿主软件包含 Qt、PyQt/PySide 和 Python](#host-software-includes-qt-pyqtpyside-and-python) + - [宿主软件包含 Qt 和 Python 但不包含 PySide/PyQt](#host-software-includes-qt-and-python-but-not-pysidepyqt) + - [宿主软件包含 Python](#host-software-includes-python) + - [宿主软件不包含 Python,但您可以编写插件](#host-software-does-not-contain-python-but-you-can-write-plugins) + - [宿主软件完全不提供脚本编写功能](#host-software-provides-no-scriptability-at-all) - [Qt 窗口父子关系设置](#qt-window-parenting) - [启动行为](#startup-behavior) - [宿主软件期望具备的特性列表](#host-software-wish-list) ## 什么是 Toolkit 插件? + 开发插件时,您实际上是在宿主软件与插件中加载的各种 Toolkit 应用和框架之间搭建一个连接桥梁。 通过插件,可以抽象出各个软件之间的不同,从而可以使用 Python 和 Qt 以很大程度上与软件无关的方式编写应用。 @@ -66,20 +69,20 @@ lang: zh_CN 根据宿主应用程序功能的不同,插件开发的复杂程度也会各异。 本部分概述了我们在插件开发过程中遇到的几种不同的复杂程度。 - ### 宿主软件包含 Qt、PyQt/PySide 和 Python + 这是 Toolkit 的最佳设置,在支持 Qt、Python 和 PySide 的宿主软件之上执行插件,操作起来非常简单。 [Nuke 插件](https://github.com/shotgunsoftware/tk-nuke)或 [Maya 插件](https://github.com/shotgunsoftware/tk-maya)就是一个很好的例子。集成操作只是连接一些日志文件管理和编写代码设置 ShotGrid 菜单而已。 - ### 宿主软件包含 Qt 和 Python 但不包含 PySide/PyQt + 例如,[Motionbuilder](https://github.com/shotgunsoftware/tk-motionbuilder) 就是此类软件,它们相对易于集成。 由于宿主软件本身使用 Qt 编写,并且包含 Python 解释器,因此我们可以编译一个 PySide 或 PyQt 版本,然后使用插件进行分发。 随后,这个 PySide 会被添加到 Python 环境中,这样我们将可以使用 Python 访问 Qt 对象。 通常,在编译 PySide 时,必须使用与编译镜头应用程序时完全相同的编译器设置,以保证它能够正常工作。 - ### 宿主软件包含 Python + 例如,第三方集成 [Unreal](https://github.com/ue4plugins/tk-unreal) 就是此类软件。 这些宿主软件具有非 Qt UI,但是包含 Python 解释器。 这意味着,Python 代码可以在环境内执行,只是没有现有的 Qt 事件循环运行。 @@ -87,8 +90,8 @@ lang: zh_CN 宿主软件有时可能包含专门用于此用途的特殊方法。 如果不包含,则必须做好安排,例如通过 on-idle 调用方法,让 Qt 事件循环定期运行。 - ### 宿主软件不包含 Python,但您可以编写插件 + 此类软件包括 [Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) 和 [After Effects](https://github.com/shotgunsoftware/tk-aftereffects)。 程序没有 Python 脚本编写功能,但是可以创建 C++ 插件。 在这种情况下,采取的策略通常是创建一个插件,该插件包含一个 IPC 层,并会在启动时以单独的进程启动 Qt 和 Python。 @@ -98,22 +101,24 @@ lang: zh_CN {% include info title="提示" content="实际上,我们为 Photoshop 和 After Effects 插件创建了[一个处理 Adobe 插件的框架](https://github.com/shotgunsoftware/tk-framework-adobe)。 这两个插件均利用该框架与宿主软件通信,而且利用该框架可以更加轻松地为 Adobe 系列的其余产品构建其他插件。" %} - ### 宿主软件完全不提供脚本编写功能 -如果宿主软件完全不能通过编程方式访问,将无法为它创建插件。 +如果宿主软件完全不能通过编程方式访问,将无法为它创建插件。 ## Qt 窗口父子关系设置 + 窗口父子关系设置通常是一个需要特别注意的方面。 通常,PySide 窗口在控件层次结构中并不会自然具有父窗口,这需要明确指出。 窗口父子关系设置对于提供一致的体验来说非常重要,如果不实现这一点,Toolkit 应用窗口可能会显示在主窗口后面,看上去会非常混乱。 ## 启动行为 + 插件还负责处理软件及其集成的启动方式。 当 `tk-multi-launchapp` 尝试使用插件启动软件时,将调用此逻辑。 有关如何设置此项的详细信息,请参见[核心文档](https://developer.shotgridsoftware.com/tk-core/initializing.html?highlight=create_engine_launcher#launching-software)。 ## 宿主软件期望具备的特性列表 + Toolkit 插件可利用宿主软件的以下特性 (Trait)。 支持的特性越多,插件的体验越好! @@ -123,12 +128,13 @@ Toolkit 插件可利用宿主软件的以下特性 (Trait)。 - 提供 API 命令来打包文件系统交互操作:“打开”(Open)、“保存”(Save)、“另存为”(Save As)、“添加参考”(Add Refernece)等。 - 提供 API 命令来添加用户界面元素 - - 向应用中添加自定义 QT 控件作为面板(最好是通过捆绑的 PySide) - - 添加自定义菜单/上下文菜单项 - - 在基于节点的软件包中添加自定义节点(通过简单的方法集成自定义 UI 进行交互) - - 提供自检功能发现选定的项/节点等对象 + - 向应用中添加自定义 QT 控件作为面板(最好是通过捆绑的 PySide) + - 添加自定义菜单/上下文菜单项 + - 在基于节点的软件包中添加自定义节点(通过简单的方法集成自定义 UI 进行交互) + - 提供自检功能发现选定的项/节点等对象 + - 灵活的事件系统 - - “有意义”的事件可以触发自定义代码 + - “有意义”的事件可以触发自定义代码 - 支持异步运行用户界面 - - 例如,当某个自定义菜单项被触发时弹出一个不锁定界面的对话框 - - 为顶层窗口提供句柄,以便可以正确设置自定义 UI 窗口的父子关系 \ No newline at end of file + - 例如,当某个自定义菜单项被触发时弹出一个不锁定界面的对话框 + - 为顶层窗口提供句柄,以便可以正确设置自定义 UI 窗口的父子关系 diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-framework.md index 95f2cd44b..dd9635769 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-framework.md @@ -8,9 +8,11 @@ lang: zh_CN # 开发自己的框架 ## 简介 + 本文档概述了与 Toolkit 框架开发相关的一些技术细节。 目录: + - [什么是 Toolkit 框架?](#what-is-a-toolkit-framework) - [预制 ShotGrid 框架](#pre-made-shotgun-frameworks) - [创建框架](#creating-a-framework) @@ -41,5 +43,6 @@ ShotGrid 提供了一些预制的[框架](https://support.shotgunsoftware.com/hc API 文档中包含有关如何[导入框架](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)的示例。 ## 通过挂钩使用框架 + 创建框架非常有用,这使您可以跨挂钩共享一些常用逻辑。 通过 [`Hook.load_framework()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Hook.load_framework) 方法,可以在应用或其他框架挂钩中使用框架,即使应用/框架在清单文件中未明确要求如此。请注意,即使使用此方法,也无法在核心挂钩中使用框架。 diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md index d74ac916e..32dd38c49 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md @@ -45,6 +45,7 @@ Toolkit API 包含在名为 `sgtk` 的 Python 软件包中。 ```python import sgtk ``` + 如果要在 ShotGrid 集成之外使用 API(例如,如果在您常用的 IDE 中对其进行测试),则需要先设置 API 的路径: ```python @@ -78,12 +79,12 @@ import sgtk 您可以通过 [`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) 属性访问 `Sgtk` 实例。 - *注意:`Engine.sgtk` 属性不应与第 1 部分中导入的 `sgtk` 软件包相混淆或视为相同。* + _注意:`Engine.sgtk` 属性不应与第 1 部分中导入的 `sgtk` 软件包相混淆或视为相同。_ 2. [`sgtk.sgtk_from_entity()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_entity) - 如果您在插件尚未启动的环境中运行,则可以使用此方法根据实体 ID 获取 `Sgtk` 实例。您提供其 ID 的实体必须属于从中导入 `sgtk` API 的项目。 - *这不适用于分布式配置,请参见[引导手册](sgtk-developer-bootstrapping.md)以了解更多详细信息。* + _这不适用于分布式配置,请参见[引导手册](sgtk-developer-bootstrapping.md)以了解更多详细信息。_ -3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path) - 与 `sgtk_from_entity()` 非常相似,只是它将接受配置路径、指向项目根文件夹或其内部的路径,例如,工作文件或镜头文件夹。*这不适用于分布式配置,请参见[引导手册](sgtk-developer-bootstrapping.md)以了解更多详细信息。* +3. [`sgtk.sgtk_from_path()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path) - 与 `sgtk_from_entity()` 非常相似,只是它将接受配置路径、指向项目根文件夹或其内部的路径,例如,工作文件或镜头文件夹。_这不适用于分布式配置,请参见[引导手册](sgtk-developer-bootstrapping.md)以了解更多详细信息。_ 在本手册中,我们假定您在插件已启动的环境中运行此代码,因此我们将使用选项 1。 此外,将 `Sgtk` 类实例存储在名为 `tk` 的变量中。 @@ -129,6 +130,7 @@ Toolkit 中执行的大量操作均围绕上下文展开,也就是说,知道 ```python context = current_engine.context ``` + 由于您将在后面的步骤中使用上下文来帮助解析镜头任务的文件路径,因此需要确定上下文中包含相关信息。 如果您的代码作为 Toolkit 应用的一部分运行,且您的应用已配置为仅在 shot_step 环境中运行,则可以放心地假定您可以获取适当的当前上下文。 @@ -189,6 +191,7 @@ Toolkit 可以根据项目实体在磁盘上动态生成文件夹结构。 ```python tk.create_filesystem_structure("Task", context.task["id"]) ``` + 您可以使用上下文对象获取任务 ID 以生成文件夹。 现在,代码应如下所示: @@ -229,7 +232,7 @@ template = tk.templates["maya_shot_publish"] 在此示例中,您将使用 `maya_shot_publish` 模板。在[默认配置](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.12/core/templates.yml#L305-L306)中,未解析的模板路径如下所示: ```yaml -'sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}' +"sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{maya_extension}" ``` 模板由键组成,您需要将这些键解析为实际值。 @@ -240,6 +243,7 @@ fields = context.as_template_fields(template) >> {'Sequence': 'seq01_chase', 'Shot': 'shot01_running_away', 'Step': 'comp'} ``` + [`Context.as_template_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) 方法可提供一个包含正确值的词典以解析模板键。但是,它并未提供所有键对应的值。`name`、`version` 和 `maya_extension` 仍缺失。 在模板键部分中,`maya_extension` 键[定义默认值](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.8/core/templates.yml#L139),因此无需为此键提供值,但是如果需要默认值以外的值,也可以提供值。 @@ -273,12 +277,12 @@ publish_path = template.apply_fields(fields) 您可以导入 [`os`](https://docs.python.org/3/library/os.html) 模块并运行 [`os.path.dirname(publish_path)`](https://docs.python.org/3/library/os.path.html#os.path.dirname) 以提取完整文件路径的文件夹部分。 ### 使用路径创建或复制文件 + 此时,您已拥有路径,可以使用此路径执行诸多操作,例如,告知 Maya 将文件保存到此路径,或从其他位置将文件复制到此路径。 针对本手册,您并不一定要执行任何行为以在磁盘的相应位置上实际创建文件。 即使没有文件,您仍可发布路径。 不过,您可以使用 [`sgtk.util.filesystem.touch_file()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file) 让 Toolkit 在磁盘上创建空文件。 - ### 将到目前为止的所有代码整合到一起 ```python @@ -494,4 +498,4 @@ sgtk.util.register_publish(tk, 希望本手册能够使您对如何开始使用 Toolkit API 有一个基本的了解。 当然,API 还有许多其他用途,因此我们建议通读 [tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html) 以了解详细信息。 -此外,我们的[论坛](https://community.shotgunsoftware.com/c/pipeline/6)是探讨 API 问题和获取答案的好地方,甚至可以通过此论坛向我们提供有关本手册的反馈。 \ No newline at end of file +此外,我们的[论坛](https://community.shotgunsoftware.com/c/pipeline/6)是探讨 API 问题和获取答案的好地方,甚至可以通过此论坛向我们提供有关本手册的反馈。 diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-guide.md index e186a4280..63059edd6 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-guide.md @@ -64,21 +64,21 @@ lang: zh_CN - 一个让用户可指派自己执行给定任务的动作 - 一个将 {% include product %} 发布加载到 Maya 中作为 Maya 参考的动作。 -动作的实际负载在“动作挂钩”中定义。__ 定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: +动作的实际负载在“动作挂钩”中定义。\_\_ 定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 在上面的示例中,我们使用了 `reference`、`import`、`texture_node`、`assign_task` 和 `play_in_rv` 动作。然后,我们将这些动作映射到各种 {% include product %} 对象和条件。例如,我们让所有 Maya 场景类型的发布都显示 `import` 动作。 @@ -92,7 +92,7 @@ action_mappings: 面板使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在默认配置设置中查看,语法类似如下: ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` `{self}` 关键字指示 Toolkit 在应用的 `hooks` 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 `{config}/panel/maya_actions.py`。这将指示 Toolkit 使用您的配置文件夹中称为 `hooks/panel/maya_actions.py` 的挂钩。 @@ -175,11 +175,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。 @@ -202,4 +202,4 @@ action_mappings: 我们有没有提到您可以编写自己的应用?每个插件都基于 Python 和 PySide 公开了一个一致的接口,因此您可以编写一个适用于 Nuke、Photoshop 和 3dsmax 应用。有了核心 API 功能,开发资源可以专注于解决生产问题,而无需为工作室构建大型工作流堆栈。通过 Toolkit 可以在项目之间轻松地重用工具 - 如果文件命名约定或其他要求发生改变,只需重新配置应用即可。通过 Toolkit 的内置 Git 和 Github 支持可安全地推出工具,并在开发时快速地热加载代码。您只需在自己的 Dev Sandbox 中工作,并邀请 TD 和早期采用者测试您的代码,而不必将其展示给项目的每个参与者。 -![](images/develop.png) \ No newline at end of file +![](images/develop.png) diff --git a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md index e487c66ed..1e0d8897d 100644 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ b/docs/zh_CN/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md @@ -27,7 +27,7 @@ lang: zh_CN ## 测试 -请记住,其他用户会有各种各样的环境和变量,并且可能与您工作室的配置不尽相同。Toolkit 会尽可能减少这类问题给用户造成的影响,但是不同用户的环境总会有些差异。 +请记住,其他用户会有各种各样的环境和变量,并且可能与您工作室的配置不尽相同。Toolkit 会尽可能减少这类问题给用户造成的影响,但是不同用户的环境总会有些差异。 例如: - 您的代码是否能在 OS X、Windows 和 Linux 上同样正常运行? diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/zh_CN/guides/pipeline-integrations/getting-started/advanced_config.md index 9eb81e2ce..aa1651079 100644 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/advanced_config.md +++ b/docs/zh_CN/guides/pipeline-integrations/getting-started/advanced_config.md @@ -32,8 +32,9 @@ lang: zh_CN {% include product %} Desktop 中的“高级项目设置向导”会根据默认配置生成工作流配置。默认配置可以为构建提供坚实基础,其中带有支持工作流的可自定义设置、应用和 UI 元素。它会创建一个配置,您可以对其进行编辑和扩展来满足项目的工作流需求。 默认配置包含: -* 基本文件系统数据结构和模板,用于确定文件在磁盘上的位置 -* 所有支持的[软件集成](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039798),允许直接在用户的软件应用程序内与 {% include product %} 和工作流功能进行交互。 + +- 基本文件系统数据结构和模板,用于确定文件在磁盘上的位置 +- 所有支持的[软件集成](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039798),允许直接在用户的软件应用程序内与 {% include product %} 和工作流功能进行交互。 只要您敢于突破想象,勤于思考,充分运用自己的编程知识,或者善于借用 {% include product %} 社区集思广益,就会发现 Toolkit 自定义的无限可能。 @@ -41,17 +42,16 @@ lang: zh_CN 每个项目都需要一个配置。第一次通过 {% include product %} Desktop 访问项目时,将下载并配置基本配置。此基本配置会自动检测用户在其系统上安装的受支持的内容创建软件,并将配置与项目相关联。工作流配置中的设置监管受支持软件应用程序中的集成。[Panel](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033098) 应用显示 {% include product %} 的项目信息,并使艺术家可以回复注释和查看版本,而无需退出其工作会话。[Publisher](https://support.shotgunsoftware.com/hc/zh-cn/articles/219032998) 应用允许艺术家将其作品提供给团队中的其他人,通过 [Loader](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033078) 应用,艺术家可以加载其队友发布的文件。基本配置不包括文件系统管理设置,也不支持文件或者目录命名的模板开发。它也不会像配置默认配置那样,需要添加大量的应用工具。它是一个简单的配置,允许在不对配置文件进行任何手动编辑的情况下运行 Toolkit。向导将基本配置替换为默认配置。它提供了更多的应用和软件集成,以支持您开始工作。虽然也可以编辑基本配置,但只有在您拥有高级设置后,才能设置项目以进行自定义。 - ### 基本配置和默认配置之间的差异 -| 功能 | 基本配置 | 默认配置 | -| ------- | ------------------- | --------------------- | -| 下载 | 访问项目时自动下载 | 通过“高级设置”向导创建 | -| 可访问性 | 存储在系统位置 | 可手动编辑的文件 | -| 更新 | 自动更新 | 手动更新 | -| 文件系统支持 | 不支持文件系统数据结构 | 包含用于支持文件夹结构和文件命名标准的工具 | -| 软件集成 | 3ds Max、Houdini、Maya、Nuke、Photoshop、Flame | 基本 + Hiero、Motionbulder、Mari | -| Toolkit 应用 | {% include product %} 面板、发布器、加载器 | 基本 + 工作文件、快照、场景细分、Nuke 写入节点、Houdini Mantra 节点等 | +| 功能 | 基本配置 | 默认配置 | +| ------------ | ---------------------------------------------- | --------------------------------------------------------------------- | +| 下载 | 访问项目时自动下载 | 通过“高级设置”向导创建 | +| 可访问性 | 存储在系统位置 | 可手动编辑的文件 | +| 更新 | 自动更新 | 手动更新 | +| 文件系统支持 | 不支持文件系统数据结构 | 包含用于支持文件夹结构和文件命名标准的工具 | +| 软件集成 | 3ds Max、Houdini、Maya、Nuke、Photoshop、Flame | 基本 + Hiero、Motionbulder、Mari | +| Toolkit 应用 | {% include product %} 面板、发布器、加载器 | 基本 + 工作文件、快照、场景细分、Nuke 写入节点、Houdini Mantra 节点等 | 在本手册中,您将使用 {% include product %} Desktop 中的向导,根据默认配置为项目生成工作流配置。生成此配置将使您能够进行支持专用制作工作流所需的自定义。 diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md b/docs/zh_CN/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md index 89126df14..38fb6756c 100644 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ b/docs/zh_CN/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md @@ -21,9 +21,9 @@ lang: zh_CN ### 本手册分三个部分 -* 在 {% include product %} 中创建一个名为“Set”的**自定义实体**,您将使用它来关联艺术家正在创建的餐厅元素。 -* 编辑文件夹**数据结构**,使 Toolkit 包含一个基于文件夹结构中的当前集来动态命名的文件夹。 -* 编辑用于命名资产工作文件的**模板**,使 Toolkit 在文件名中包含关联集的名称。 +- 在 {% include product %} 中创建一个名为“Set”的**自定义实体**,您将使用它来关联艺术家正在创建的餐厅元素。 +- 编辑文件夹**数据结构**,使 Toolkit 包含一个基于文件夹结构中的当前集来动态命名的文件夹。 +- 编辑用于命名资产工作文件的**模板**,使 Toolkit 在文件名中包含关联集的名称。 ### 先决条件 @@ -70,7 +70,7 @@ Toolkit 平台允许您使用**数据结构**来动态构建您的文件夹结 ![Python 应用](./images/dynamic_filesystem_configuration/4_enable_entity.png) -这样做可以使此自定义实体在 {% include product %} 中处于活动状态,并将显示名称设置为 *Set*。实际上,您正在创建自定义实体的别名,因为实体的系统名称仍为 `CustomEntity01`。在此示例中,我们将使用 `CustomEntity01`;您可能会使用不同的自定义实体。 +这样做可以使此自定义实体在 {% include product %} 中处于活动状态,并将显示名称设置为 _Set_。实际上,您正在创建自定义实体的别名,因为实体的系统名称仍为 `CustomEntity01`。在此示例中,我们将使用 `CustomEntity01`;您可能会使用不同的自定义实体。 {% include info title="注意" content="记住所选自定义实体的系统名称。" %} @@ -166,7 +166,6 @@ Toolkit 平台允许您使用**数据结构**来动态构建您的文件夹结 ![Python 应用](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - **步骤 9:**在 `CustomEntity01` 文件夹旁边创建一个名为 `CustomEntity01.yml` 的文件,该文件内容如下: ```yaml @@ -177,7 +176,7 @@ name: "code" entity_type: "CustomEntity01" filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } ``` YAML 文件将向 Toolkit 提供有关如何为 `CustomEntity01` 文件夹命名的说明。在这种情况下,我们将创建一个 `{% include product %}_entity` 类型的文件夹,这意味着它对应于 {% include product %} 查询。`entity_type` 字段告诉我们查询 {% include product %} 中的 `CustomEntity01` 实体,`name` 字段告诉我们查询实体上的哪个*字段* – 在本例中,我们将从 `CustomEntity01` 获取 `code` 字段。 @@ -196,8 +195,8 @@ YAML 文件将向 Toolkit 提供有关如何为 `CustomEntity01` 文件夹命名 ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } ``` 当我们决定为资产创建文件夹时,我们需要确保我们位于正确的 project 文件夹和正确的 asset_type 文件夹中。现在,我们已经添加了一个集文件夹,我们还将添加第三个过滤器。如果没有它,我们最后将得到如下所示的文件夹,当然这可能不正确: @@ -207,28 +206,28 @@ assets/Dining-Room/Prop/spoon assets/Garage/Prop/spoon assets/Classroom/Prop/spoon ``` + 为避免这种情况,我们将添加第三个过滤器,这将确保仅在正确集的文件夹中创建资产的文件夹。 **步骤 11:**修改 `asset.yml` 中的 `filters` 字段,使其如下所示: ```yaml filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - - { "path": "sg_set", "relation": "is", "values": [ "$CustomEntity04" ] } + - { "path": "project", "relation": "is", "values": ["$project"] } + - { "path": "sg_asset_type", "relation": "is", "values": ["$asset_type"] } + - { "path": "sg_set", "relation": "is", "values": ["$CustomEntity04"] } ``` - ## 测试文件夹创建 现在,您已成功修改了数据结构,使其按集自定义实体组织资产。现在,我们来对其进行测试。 将在 Toolkit 工作流中的几个时间点创建文件夹: -* **应用程序启动程序**:每次用户为任务启动 DCC 时,Toolkit 都将为该任务创建目录(如果尚未创建)。由于启动 DCC 往往是用户通过 Toolkit 执行的第一个操作,因此这是创建目录的常规方式。这可以通过 {% include product %} 中的右键单击菜单执行,也可从 {% include product %} Desktop 或 Create 应用执行。 -* **{% include product %} 菜单**:为任务创建文件夹最直接的方法是在 {% include product %} 中,在其上单击鼠标右键,然后选择“创建文件夹”(Create Folders)菜单项。 -* **Toolkit API**:您可以通过 Toolkit API 直接触发目录创建逻辑。这可以用于将 Toolkit 插入到自定义启动程序中,也可用于工作流的事件触发器,您希望在其中为镜头自动创建目录,就像在 {% include product %} 中创建一样。 -* **tank 命令**:与 {% include product %} 中的菜单项类似,`tank folders` 终端命令也可以为任务创建文件夹。 +- **应用程序启动程序**:每次用户为任务启动 DCC 时,Toolkit 都将为该任务创建目录(如果尚未创建)。由于启动 DCC 往往是用户通过 Toolkit 执行的第一个操作,因此这是创建目录的常规方式。这可以通过 {% include product %} 中的右键单击菜单执行,也可从 {% include product %} Desktop 或 Create 应用执行。 +- **{% include product %} 菜单**:为任务创建文件夹最直接的方法是在 {% include product %} 中,在其上单击鼠标右键,然后选择“创建文件夹”(Create Folders)菜单项。 +- **Toolkit API**:您可以通过 Toolkit API 直接触发目录创建逻辑。这可以用于将 Toolkit 插入到自定义启动程序中,也可用于工作流的事件触发器,您希望在其中为镜头自动创建目录,就像在 {% include product %} 中创建一样。 +- **tank 命令**:与 {% include product %} 中的菜单项类似,`tank folders` 终端命令也可以为任务创建文件夹。 我们将使用 `tank` 命令进行测试。 @@ -265,7 +264,6 @@ In total, 23 folders were processed. `/the_other_side/assets/Dining-Room/Prop/Filet/model` - ![Python 应用](./images/dynamic_filesystem_configuration/folders_done.png) ### 用于读取和写入文件的 Toolkit 模板 @@ -286,9 +284,9 @@ In total, 23 folders were processed. 此文件分为三个部分: -* **Keys:**用于构建模板的一组令牌(如 `{version}`、`{Asset}` 等)。在实际使用模板时,它们将替换为实际值。每个键都有必需的名称和类型及其他可选参数。 -* **Paths:**使用键表示磁盘上的文件夹和文件路径的命名字符串。请注意,`paths` 部分中的模板已经过验证,必须实际存在于磁盘上。 -* **Strings:**与 paths 部分相似,但这些是任意文本的模板。paths 部分中的项已经过验证,必须与磁盘上的实际路径对应,而字符串可用于存储您希望在 Toolkit 工作流中引用的任何文本数据。 +- **Keys:**用于构建模板的一组令牌(如 `{version}`、`{Asset}` 等)。在实际使用模板时,它们将替换为实际值。每个键都有必需的名称和类型及其他可选参数。 +- **Paths:**使用键表示磁盘上的文件夹和文件路径的命名字符串。请注意,`paths` 部分中的模板已经过验证,必须实际存在于磁盘上。 +- **Strings:**与 paths 部分相似,但这些是任意文本的模板。paths 部分中的项已经过验证,必须与磁盘上的实际路径对应,而字符串可用于存储您希望在 Toolkit 工作流中引用的任何文本数据。 ### 为集实体添加模板键 @@ -297,8 +295,8 @@ In total, 23 folders were processed. **步骤 14:**将以下行添加到 `templates.yml` 的 `keys` 部分,注意正确缩进: ```yaml - CustomEntity01: - type: str +CustomEntity01: + type: str ``` ### 修改模板 @@ -312,8 +310,8 @@ In total, 23 folders were processed. **步骤 15:**打开 `templates.yml` 并搜索 `maya_asset_work`。 ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{name}.v{version}.{maya_extension}" ``` `maya_asset_work` 的 `definition` 值以 `@asset_root` 开头。`@` 符号表示 `@asset_root` 的值在其他位置定义。 @@ -347,8 +345,8 @@ In total, 23 folders were processed. **步骤 17:**修改 `maya_asset_work` 模板定义,使其类似如下: ```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' +maya_asset_work: + definition: "@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}" ``` 此动作允许您在文件名中使用 Dining-Room 实体的专有名称。结果将类似于 `Dining-Room_Filet.v1.mb`。 @@ -387,9 +385,7 @@ In total, 23 folders were processed. 在创建文件夹时,将在磁盘上的文件夹与 {% include product %} 实体之间创建映射。这些映射将存储为 {% include product %} 中的 FilesystemLocation 实体,并缓存在用户计算机上的 SQLite 数据库中。要详细了解路径缓存的工作方式及其使用方式,请参见[此文档](../../../quick-answers/administering/what-is-path-cache.md)。 - ### 其他资源 -* [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) -* [Toolkit 配置简介网络讲座视频](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) - +- [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) +- [Toolkit 配置简介网络讲座视频](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s) diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/editing_app_setting.md b/docs/zh_CN/guides/pipeline-integrations/getting-started/editing_app_setting.md index 94ca86e02..460e389df 100644 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ b/docs/zh_CN/guides/pipeline-integrations/getting-started/editing_app_setting.md @@ -6,11 +6,12 @@ lang: zh_CN --- # 编辑工作流配置 + 完成本手册后,您将掌握以下基础知识: -* 查找特定 Toolkit 应用的配置设置 -* 编辑设置 -* 探索配置设置可以扩展的其他功能。 +- 查找特定 Toolkit 应用的配置设置 +- 编辑设置 +- 探索配置设置可以扩展的其他功能。 ## 关于本手册 @@ -121,13 +122,13 @@ Toolkit 工作流配置用于自定义环境以满足您的工作流需求。工 当搜索设置时,要考虑以下几点: -* 您正在运行的软件应用程序。 -* 您正在处理的文件以及使用的工作环境。可以在应用的参考框中找到这些信息。 -* 特定设置的名称。可以在应用的参考框或[“应用和插件”页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039798)上找到这些信息。 -* 要扩展的 YAML 文件。YAML 文件中详细说明了标识符和路线图,以将您指引到设置所在的位置。 -* YAML 文件中要扩展的特定块。这在路线图中进行标识。 -* YAML 文件中使用的标识符和符号。 -* 最重要的是,当前项目的配置存储位置。 +- 您正在运行的软件应用程序。 +- 您正在处理的文件以及使用的工作环境。可以在应用的参考框中找到这些信息。 +- 特定设置的名称。可以在应用的参考框或[“应用和插件”页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039798)上找到这些信息。 +- 要扩展的 YAML 文件。YAML 文件中详细说明了标识符和路线图,以将您指引到设置所在的位置。 +- YAML 文件中要扩展的特定块。这在路线图中进行标识。 +- YAML 文件中使用的标识符和符号。 +- 最重要的是,当前项目的配置存储位置。 可以在工作流配置内的多个位置使用一个设置。决定在哪个位置使用该设置的因素是:您希望影响的软件集成,以及您希望在工作流中的哪个阶段影响更改。 @@ -163,18 +164,18 @@ description: Apps and Engines when launching with a project only context. ################################################################################ includes: -- ./includes/frameworks.yml -- ./includes/settings/tk-3dsmaxplus.yml -- ./includes/settings/tk-desktop.yml -- ./includes/settings/tk-flame.yml -- ./includes/settings/tk-houdini.yml -- ./includes/settings/tk-mari.yml -- ./includes/settings/tk-maya.yml -- ./includes/settings/tk-motionbuilder.yml -- ./includes/settings/tk-nuke.yml -- ./includes/settings/tk-photoshopcc.yml -- ./includes/settings/tk-shell.yml -- ./includes/settings/tk-shotgun.yml + - ./includes/frameworks.yml + - ./includes/settings/tk-3dsmaxplus.yml + - ./includes/settings/tk-desktop.yml + - ./includes/settings/tk-flame.yml + - ./includes/settings/tk-houdini.yml + - ./includes/settings/tk-mari.yml + - ./includes/settings/tk-maya.yml + - ./includes/settings/tk-motionbuilder.yml + - ./includes/settings/tk-nuke.yml + - ./includes/settings/tk-photoshopcc.yml + - ./includes/settings/tk-shell.yml + - ./includes/settings/tk-shotgun.yml ################################################################################ # configuration for all engines to load in a project context @@ -198,7 +199,6 @@ engines: # reference all of the common frameworks frameworks: "@frameworks" - ``` @@ -239,7 +239,7 @@ settings.tk-maya.project: tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" menu_favourites: - - {app_instance: tk-multi-workfiles2, name: File Open...} + - { app_instance: tk-multi-workfiles2, name: File Open... } location: "@engines.tk-maya.location" ``` @@ -253,7 +253,7 @@ settings.tk-maya.project: ```yaml includes: -... +--- - ./tk-multi-workfiles2.yml ``` @@ -354,7 +354,7 @@ Workfiles 应用的系统名称是 `tk-multi-workfiles2`,名称中的 `multi` ### 视频资源 -* [Toolkit 配置简介](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s)(来源:SIGGRAPH 2018 Developer Day) -* [揭秘默认配置网络讲座](https://www.youtube.com/watch?v=eKHaC1dZCeE) +- [Toolkit 配置简介](https://www.youtube.com/watch?v=7qZfy7KXXX0&t=1961s)(来源:SIGGRAPH 2018 Developer Day) +- [揭秘默认配置网络讲座](https://www.youtube.com/watch?v=eKHaC1dZCeE) 现在您已了解如何修改应用配置设置,请尝试[将应用添加到 Toolkit 配置](./installing_app.md)。 diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/installing_app.md b/docs/zh_CN/guides/pipeline-integrations/getting-started/installing_app.md index d36df5542..bc78a83c2 100644 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/installing_app.md +++ b/docs/zh_CN/guides/pipeline-integrations/getting-started/installing_app.md @@ -9,10 +9,10 @@ lang: zh_CN 通过完成本手册,您将很快熟悉 Toolkit 中的配置管理工具,并学会如何: -* 安全地创建使用中的工作流配置的副本 -* 将应用添加到配置 -* 添加在特定环境中使用该应用所需的设置 -* 将更改同步回使用中的工作流配置 +- 安全地创建使用中的工作流配置的副本 +- 将应用添加到配置 +- 添加在特定环境中使用该应用所需的设置 +- 将更改同步回使用中的工作流配置 ## 关于本手册 @@ -174,7 +174,6 @@ engines: tk-photoshopcc: "@settings.tk-photoshopcc.project" tk-shell: "@settings.tk-shell.project" tk-shotgun: "@settings.tk-shotgun.project" - ``` 使用 `@settings` 的 `tk-maya: “@settings.tk-maya.project”` 行表明这些设置位于包含文件中。`tk-maya` 标识 Maya 插件,`project` 标识环境。 @@ -185,10 +184,10 @@ engines: 对于此特定块: -* `settings` 是为默认配置选择的作为对 settings 文件夹的引用的字符串 -* `project` 是为默认配置选择的作为对项目环境的引用的字符串 -* `tk-maya` 是 Toolkit 的 Maya 插件的标识符 -* `@` 是 Toolkit 术语,用于表示设置值来自包含文件 +- `settings` 是为默认配置选择的作为对 settings 文件夹的引用的字符串 +- `project` 是为默认配置选择的作为对项目环境的引用的字符串 +- `tk-maya` 是 Toolkit 的 Maya 插件的标识符 +- `@` 是 Toolkit 术语,用于表示设置值来自包含文件 YAML 文件是 {% include product %} 集成的窗口,可以更轻松地配置满足您的工作流需求的工作环境。 @@ -260,11 +259,11 @@ settings.tk-maya.project: 如果: -* 您使用的是刚编辑的克隆配置 -* 克隆配置已正确扩展 -* 您保存了扩展文件 -* 您选择将项目与克隆配置相关联 -* 您从 {% include product %} Desktop 重新启动了 Maya +- 您使用的是刚编辑的克隆配置 +- 克隆配置已正确扩展 +- 您保存了扩展文件 +- 您选择将项目与克隆配置相关联 +- 您从 {% include product %} Desktop 重新启动了 Maya Python 控制台应用将在 Maya 中可用。 @@ -330,11 +329,11 @@ Please type in the id of the configuration to push to (ENTER to exit): 输入 ID 后,{% include product %} 将: -* 备份主要配置 -* 复制克隆配置 -* 将复制的克隆配置与项目相关联,使克隆保持不变 -* 显示保存主要配置的位置 -* 检查是否有任何需要下载和缓存的应用 +- 备份主要配置 +- 复制克隆配置 +- 将复制的克隆配置与项目相关联,使克隆保持不变 +- 显示保存主要配置的位置 +- 检查是否有任何需要下载和缓存的应用 ``` Please type in the id of the configuration to push to (ENTER to exit): 1 @@ -400,7 +399,7 @@ apps: 在此之后,进一步包含 `../includes/app_locations.yml`,并搜索 `apps.tk-multi-pythonconsole.location` 以查找以下内容:

-```yaml +````yaml # pythonconsole apps.tk-multi-pythonconsole.location: type: app_store @@ -417,3 +416,4 @@ apps.tk-multi-pythonconsole.location: 在下一个手册中,您将了解[如何自定义 production 文件夹结构,以呈现您的设施的构造方式](./dynamic_filesystem_configuration.md)。 +```` diff --git a/docs/zh_CN/guides/pipeline-integrations/getting_started.md b/docs/zh_CN/guides/pipeline-integrations/getting_started.md index 4f8b122f3..86b1caaa2 100644 --- a/docs/zh_CN/guides/pipeline-integrations/getting_started.md +++ b/docs/zh_CN/guides/pipeline-integrations/getting_started.md @@ -7,4 +7,4 @@ lang: zh_CN # Getting Started -{% include product %} Toolkit 提供了一组可高度自定义的工具,用于创建工作室工作流,让艺术家可以从 {% include product %} 中访问信息并彼此共享作品,而无需退出其内容创建软件。这些手册旨在帮助您通过实际练习开始设置自定义 Toolkit 工作流:您将使用 {% include product %} Desktop 应用为项目生成可编辑的配置,修改现有应用的设置,甚至将 Toolkit 应用添加到不同的美工人员环境,从而让您设计自定义工作流。每个手册都以之前的手册为基础,但是它们包含从任何位置跳转的说明。 +{% include product %} Toolkit 提供了一组可高度自定义的工具,用于创建工作室工作流,让艺术家可以从 {% include product %} 中访问信息并彼此共享作品,而无需退出其内容创建软件。这些手册旨在帮助您通过实际练习开始设置自定义 Toolkit 工作流:您将使用 {% include product %} Desktop 应用为项目生成可编辑的配置,修改现有应用的设置,甚至将 Toolkit 应用添加到不同的美工人员环境,从而让您设计自定义工作流。每个手册都以之前的手册为基础,但是它们包含从任何位置跳转的说明。 diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows.md b/docs/zh_CN/guides/pipeline-integrations/workflows.md index 1d16979d8..9171efcfa 100644 --- a/docs/zh_CN/guides/pipeline-integrations/workflows.md +++ b/docs/zh_CN/guides/pipeline-integrations/workflows.md @@ -5,4 +5,4 @@ pagename: toolkit-workflows lang: zh_CN --- -# Workflows \ No newline at end of file +# Workflows diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md index a4acaef17..ed1e4a609 100644 --- a/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ b/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md @@ -23,43 +23,43 @@ lang: zh_CN ## 先决条件 -* **参与 {% include product %} 项目** - 本教程假定您有使用 {% include product %} 跟踪和管理制作数据的经验。 +- **参与 {% include product %} 项目** - 本教程假定您有使用 {% include product %} 跟踪和管理制作数据的经验。 -* **了解 {% include product %} 集成** - {% include product %} 附带一些集成,这些集成提供了一些不需要任何手动配置的简单制作工作流。您应先了解这些工作流的功能和范围,然后再深入了解本教程中介绍的手动配置和自定义。有关 {% include product %} 集成的详细信息,请参见[此处](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000068574)。 +- **了解 {% include product %} 集成** - {% include product %} 附带一些集成,这些集成提供了一些不需要任何手动配置的简单制作工作流。您应先了解这些工作流的功能和范围,然后再深入了解本教程中介绍的手动配置和自定义。有关 {% include product %} 集成的详细信息,请参见[此处](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000068574)。 -* **Maya 和 Nuke 体验** - 本教程旨在使用 Maya 和 Nuke 构建一个简单的工作流。您应该对这些软件包有基本的了解,以便自定义 {% include product %} 提供的集成。 +- **Maya 和 Nuke 体验** - 本教程旨在使用 Maya 和 Nuke 构建一个简单的工作流。您应该对这些软件包有基本的了解,以便自定义 {% include product %} 提供的集成。 -* **Python 应用知识** - 本教程需要通过采用 Python 编写的“挂钩”修改 {% include product %} 集成的功能。 +- **Python 应用知识** - 本教程需要通过采用 Python 编写的“挂钩”修改 {% include product %} 集成的功能。 -* **熟悉 YAML** - 您将构建的工作流的很多配置都是通过修改 YAML 文件来完成的。 +- **熟悉 YAML** - 您将构建的工作流的很多配置都是通过修改 YAML 文件来完成的。 ## 其他资源 -* [{% include product %} 支持站点](https://support.shotgunsoftware.com/hc/zh-cn) +- [{% include product %} 支持站点](https://support.shotgunsoftware.com/hc/zh-cn) -* [{% include product %} 集成](https://www.shotgunsoftware.com/zh-cn/integrations/) +- [{% include product %} 集成](https://www.shotgunsoftware.com/zh-cn/integrations/) - * [用户手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000068574) + - [用户手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000068574) - * [管理员手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000067493) + - [管理员手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000067493) - * [开发人员手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000067513) + - [开发人员手册](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000067513) # 项目创建和设置 在本教程中,您需要在 {% include product %} 中创建一个新项目,并像准备开始制作那样配置该项目。这包括确保所有必要的 {% include product %} 实体都已就位并正确关联。在本教程中,资产、镜头序列、镜头和任务实体是必需的,默认情况下新项目中应提供这些实体。您将创建以下对象: -* 两个**资产**: +- 两个**资产**: - * **_茶壶_**角色 + - **_茶壶_**角色 - * **_桌子_**道具 + - **_桌子_**道具 -* 一个**镜头序列** +- 一个**镜头序列** -* 一个链接至您创建的**镜头序列**的**镜头** +- 一个链接至您创建的**镜头序列**的**镜头** -* 每个工作流工序一个**任务** +- 每个工作流工序一个**任务** 下面是一些屏幕截图,显示了您在 {% include product %} 中配置的项目实体: @@ -289,7 +289,6 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 就此简单工作流而言,您将对发布器应用进行自定义,在贴图工序将 Maya 着色器网络导出为其他发布项。在本教程的后面,您将设计一个快速但不完善的解决方案,让着色器在被下游引用时可重新连接至 Alembic 几何体缓存。 - {% include info title="注意" content="您要添加的自定义非常简单并且脆弱。更保险的解决方案可能需要将已贴图角色的其他表现形式以及使用外部图像作为纹理贴图所带来的资产管理任务考虑在内。此示例只是构建实际解决方案的基础。" %} {% include info title="注意" content="您可以在[此处](https://developer.shotgridsoftware.com/tk-multi-publish2/)查看有关如何写入发布器插件的完整详细信息。" %} @@ -424,7 +423,6 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 return plugin_settings ``` - 此方法定义插件的配置界面。为了告诉插件将着色器网络写入磁盘的什么位置,需要使用**“Publish Template”**设置。将新发布插件添加到发布器配置并包含模板设置。这是之前在接管收集器时修改的同一配置块。它在此文件中定义: **`env/includes/settings/tk-multi-publish2.yml`** @@ -463,7 +461,6 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 输入作品说明,并截取已贴图茶壶的缩略图以与已发布的文件关联。最后,单击“Publish”将茶壶着色器导出到磁盘并在 {% include product %} 中将文件注册为发布。完成后,请注意,会话发布插件已自动将您的工作文件保存为下一个可用版本。这是 {% include product %} 集成支持的所有 DCC 中的默认行为。 - 现在,您可以浏览到 {% include product %} 中的茶壶资产以验证是否一切都符合预期。 {% include figure src="./images/tutorial/image_33.png" %} @@ -478,15 +475,15 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 此时,您应该可以非常轻松地使用 {% include product %} 提供的 Workfiles 和“发布”应用打开(或创建)、保存和发布工作文件。此外,您还曾使用加载器应用加载来自上游的发布。使用所学内容完成以下任务: -* 从 {% include product %} Desktop 启动 Maya +- 从 {% include product %} Desktop 启动 Maya -* 在茶壶资产的装配工序中创建一个新工作文件 +- 在茶壶资产的装配工序中创建一个新工作文件 -* 加载(引用)来自建模工序的茶壶 Alembic 缓存发布 +- 加载(引用)来自建模工序的茶壶 Alembic 缓存发布 -* 对茶壶的壶盖进行装配以打开与合上(力求简单) +- 对茶壶的壶盖进行装配以打开与合上(力求简单) -* 保存和发布茶壶装配 +- 保存和发布茶壶装配 在 {% include product %} 中最后的结果应与下图类似: @@ -518,13 +515,13 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 首先,使用在前面各节中所学内容完成以下任务: -* 从 {% include product %} Desktop 启动 Maya +- 从 {% include product %} Desktop 启动 Maya -* 在镜头的布局工序中创建一个新工作文件(提示:使用加载器中的“镜头”(Shots)选项卡) +- 在镜头的布局工序中创建一个新工作文件(提示:使用加载器中的“镜头”(Shots)选项卡) -* 加载(引用)来自茶壶的装配工序的茶壶发布 +- 加载(引用)来自茶壶的装配工序的茶壶发布 -* 加载(引用)来自桌子的建模工序的桌子发布 +- 加载(引用)来自桌子的建模工序的桌子发布 现在,设计一个简单的场景,将茶壶放在桌子上。向场景中添加一个称为 **camMain** 的摄影机,然后对一些帧添加动画效果以创建镜头的摄影机移动。 @@ -644,11 +641,11 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 使用在前面各节中所学内容完成以下任务。 -* 从 {% include product %} Desktop 启动 Maya +- 从 {% include product %} Desktop 启动 Maya -* 在镜头的动画工序中创建一个新工作文件 +- 在镜头的动画工序中创建一个新工作文件 -* 加载(引用)来自镜头的布局工序的 Maya 会话发布 +- 加载(引用)来自镜头的布局工序的 Maya 会话发布 {% include info title="注意" content="您将注意到摄影机已包含在布局会话发布文件中。在强大的工作流中,摄影机可能会明确隐藏或从会话发布中排除,以便单独的摄影机发布文件可以作为一个真实的摄影机定义。继续操作,删除或隐藏通过引用包含进来的摄影机。" %} @@ -688,13 +685,13 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 首先,使用在前面各节中所学内容完成以下任务。 -* 从 {% include product %} Desktop 启动 Maya +- 从 {% include product %} Desktop 启动 Maya -* 在镜头的照明工序中创建一个新工作文件 +- 在镜头的照明工序中创建一个新工作文件 -* 加载(引用)来自镜头的动画工序的 Maya 会话发布 +- 加载(引用)来自镜头的动画工序的 Maya 会话发布 -* 加载(引用)来自镜头的布局工序的摄影机发布 +- 加载(引用)来自镜头的布局工序的摄影机发布 ### 自定义着色器加载器动作 @@ -740,7 +737,6 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 cmds.hyperShade(assign=shader) ``` - 现在,在 **`_create_reference`** 方法结尾处添加以下两行,用于调用着色器挂接逻辑: ```python @@ -748,7 +744,6 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 _hookup_shaders(reference_node) ``` - 每当创建新引用时都会运行该代码,因此,如果文件中已存在着色器,则它应在引用新几何体时指定着色器。同样,如果几何体已存在,则它应在引用着色器时指定几何体。 {% include info title="注意" content="此挂接逻辑非常暴力,无法正确处理命名空间以及在执行制作就绪的工作流时应考虑的与 Maya 相关的其他细微之处。" %} @@ -799,10 +794,9 @@ Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中 首先,执行以下步骤来准备工作文件。 -* 从 {% include product %} Desktop 启动 Nuke - -* 与在 Maya 中一样,使用“{% include product %} > File Open…”菜单动作在镜头的合成工序中创建一个新工作文件。 +- 从 {% include product %} Desktop 启动 Nuke +- 与在 Maya 中一样,使用“{% include product %} > File Open…”菜单动作在镜头的合成工序中创建一个新工作文件。 通过加载器应用加载在上一节中渲染并发布的图像序列。 diff --git a/docs/zh_CN/guides/webhooks.md b/docs/zh_CN/guides/webhooks.md index eda436843..87edc2111 100644 --- a/docs/zh_CN/guides/webhooks.md +++ b/docs/zh_CN/guides/webhooks.md @@ -74,12 +74,12 @@ True ![“创建 Webhook”(Create Webhook)对话框](./images/webhooks/webhook_selected_status.png) -| 状态 | 示例 | 说明 | -|--------|:-------:|:-----------:| -| 活动 | ![活动](./images/webhooks/webhook_status_active.png) | Webhook 运行稳定。在过去 24 小时内,对此 Webhook 进行的交付都已到达其目的地。 | -| 不稳定 | ![不稳定](./images/webhooks/webhook_status_unstable.png) | Webhook 运行不稳定。在过去 24 小时内,某些交付未能到达其目的地,但不足以导致 {% include product %} 将 Webhook 视为终止。 | -| 失败 | ![失败](./images/webhooks/webhook_status_failed.png) | Webhook 被视为终止,且不会再尝试交付。这是因为在短时间内出现太多交付失败,且系统已确定不应再将 Webhook 视为可行。**如果在过去 24 小时内出现 10 次交付失败,Webhook 将被视为失败**。 | -| 禁用 | ![禁用](./images/webhooks/webhook_status_disabled.png) | Webhook 处于禁用状态,并且在重新启用之前,不会再尝试进行任何交付。 | +| 状态 | 示例 | 说明 | +| ------ | :------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| 活动 | ![活动](./images/webhooks/webhook_status_active.png) | Webhook 运行稳定。在过去 24 小时内,对此 Webhook 进行的交付都已到达其目的地。 | +| 不稳定 | ![不稳定](./images/webhooks/webhook_status_unstable.png) | Webhook 运行不稳定。在过去 24 小时内,某些交付未能到达其目的地,但不足以导致 {% include product %} 将 Webhook 视为终止。 | +| 失败 | ![失败](./images/webhooks/webhook_status_failed.png) | Webhook 被视为终止,且不会再尝试交付。这是因为在短时间内出现太多交付失败,且系统已确定不应再将 Webhook 视为可行。**如果在过去 24 小时内出现 10 次交付失败,Webhook 将被视为失败**。 | +| 禁用 | ![禁用](./images/webhooks/webhook_status_disabled.png) | Webhook 处于禁用状态,并且在重新启用之前,不会再尝试进行任何交付。 | ## 交付 @@ -191,9 +191,8 @@ webhook.site 服务存在严格的速率限制。这意味着,最后很容易 #### 状态代码 -| 状态 | 代码 | 说明 | -|--------|:----:|:-----------:| -| 成功 | < 400 | 交付已接收并成功处理。 | -| 错误 | >= 400 | 交付已接收,但未成功处理。 | -| 重定向 | 3xx | 交付已接收,但应重定向到其他 URL。 | - +| 状态 | 代码 | 说明 | +| ------ | :----: | :--------------------------------: | +| 成功 | < 400 | 交付已接收并成功处理。 | +| 错误 | >= 400 | 交付已接收,但未成功处理。 | +| 重定向 | 3xx | 交付已接收,但应重定向到其他 URL。 | diff --git a/docs/zh_CN/guides/webhooks/batch-deliveries.md b/docs/zh_CN/guides/webhooks/batch-deliveries.md index 18d88ac07..3fb1751b1 100644 --- a/docs/zh_CN/guides/webhooks/batch-deliveries.md +++ b/docs/zh_CN/guides/webhooks/batch-deliveries.md @@ -23,11 +23,13 @@ lang: zh_CN {% include info title="注意" content="对于需要大约 1 秒来响应单个事件的接收服务,响应时间是主要性能因素,而不是交付开销。批处理不会有任何显著优势。" %} #### 非批量交付 Webhook -* 允许的超时上限为每个交付 6 秒。即 Webhook 端点必须在 6 秒内响应每个请求。 + +- 允许的超时上限为每个交付 6 秒。即 Webhook 端点必须在 6 秒内响应每个请求。 #### 批量交付 Webhook -* 允许的超时上限为每个批 6 秒或批中每个事件 1 秒(以最大值为准)。 -* 仍存在以下限制:所有 Webhook 中每个 ShotGrid 站点 Webhook 端点响应时间为 1 分钟。 + +- 允许的超时上限为每个批 6 秒或批中每个事件 1 秒(以最大值为准)。 +- 仍存在以下限制:所有 Webhook 中每个 ShotGrid 站点 Webhook 端点响应时间为 1 分钟。 ## Webhook 交付格式比较 @@ -35,28 +37,28 @@ lang: zh_CN ```json { - "data":{ - "id":"119.110.0", - "event_log_entry_id":479004, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1419}, - "project":{"type":"Project","id":127}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1419, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "data": { + "id": "119.110.0", + "event_log_entry_id": 479004, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1419 }, + "project": { "type": "Project", "id": 127 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1419, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 17:40:23.202136", + "attribute_name": "code", + "session_uuid": null }, - "timestamp":"2021-02-22T17:40:27Z" + "timestamp": "2021-02-22T17:40:27Z" } ``` @@ -66,51 +68,51 @@ lang: zh_CN ```json { - "timestamp":"2021-02-22T18:04:40.140Z", - "data":{ - "deliveries":[ + "timestamp": "2021-02-22T18:04:40.140Z", + "data": { + "deliveries": [ { - "id":"170.141.0", - "event_log_entry_id":480850, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"code", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":"Cypress test asset for Webhooks deliveries", - "new_value":"Revised test asset for Webhooks deliveries" + "id": "170.141.0", + "event_log_entry_id": 480850, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "code", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": "Cypress test asset for Webhooks deliveries", + "new_value": "Revised test asset for Webhooks deliveries" }, - "created_at":"2021-02-22 18:04:39.198641", - "attribute_name":"code", - "session_uuid":null, + "created_at": "2021-02-22 18:04:39.198641", + "attribute_name": "code", + "session_uuid": null }, { - "id":"170.141.1", - "event_log_entry_id":480851, - "event_type":"Shotgun_Asset_Change", - "operation":"update", - "user":{"type":"HumanUser","id":24}, - "entity":{"type":"Asset","id":1424}, - "project":{"type":"Project","id":132}, - "meta":{ - "type":"attribute_change", - "attribute_name":"description", - "entity_type":"Asset", - "entity_id":1424, - "field_data_type":"text", - "old_value":null, - "new_value":"Some other *description*" + "id": "170.141.1", + "event_log_entry_id": 480851, + "event_type": "Shotgun_Asset_Change", + "operation": "update", + "user": { "type": "HumanUser", "id": 24 }, + "entity": { "type": "Asset", "id": 1424 }, + "project": { "type": "Project", "id": 132 }, + "meta": { + "type": "attribute_change", + "attribute_name": "description", + "entity_type": "Asset", + "entity_id": 1424, + "field_data_type": "text", + "old_value": null, + "new_value": "Some other *description*" }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, + "created_at": "2021-02-22 18:04:39.212032", + "attribute_name": "description", + "session_uuid": null + } ] } } diff --git a/docs/zh_CN/index.md b/docs/zh_CN/index.md index 0f7e37601..2be2e2f21 100644 --- a/docs/zh_CN/index.md +++ b/docs/zh_CN/index.md @@ -4,4 +4,3 @@ title: 概述 pagename: index lang: zh_CN --- - diff --git a/docs/zh_CN/quick-answers/administering.md b/docs/zh_CN/quick-answers/administering.md index dad9909ee..3450f6441 100644 --- a/docs/zh_CN/quick-answers/administering.md +++ b/docs/zh_CN/quick-answers/administering.md @@ -5,12 +5,12 @@ pagename: quick-answers-administering lang: zh_CN --- -管理 -===== +# 管理 一组与管理和配置 Toolkit 设置相关的快速解答。 #### {% include product %} Desktop: + - [如何使用 {% include product %} Desktop 来重新设置 Toolkit 项目?](./administering/resetup-project-with-sg-desktop.md) - [如何在 Windows 上静默安装 {% include product %} Desktop?](./administering/install-desktop-silent.md) - [如何在 Linux 上为 {% include product %} Desktop 设置桌面/启动程序图标?](./administering/create-shotgun-desktop-shortcut.md) diff --git a/docs/zh_CN/quick-answers/administering/convert-from-single-root-to-multi.md b/docs/zh_CN/quick-answers/administering/convert-from-single-root-to-multi.md index b49332168..b7ea3a111 100644 --- a/docs/zh_CN/quick-answers/administering/convert-from-single-root-to-multi.md +++ b/docs/zh_CN/quick-answers/administering/convert-from-single-root-to-multi.md @@ -15,7 +15,7 @@ lang: zh_CN - 在 {% include product %} 中,导航到**“管理 > 站点偏好设置”(Admin > Site Preferences)**页面 - 打开**“文件管理”(File Management)**部分 - 单击**“[+] 添加本地文件存储”([+] Add Local File Storage)** -- 填写名称(“secondary”)以及存储根在所有相关平台上的路径。*如果您使用的不是特定平台,只需将其留空。* +- 填写名称(“secondary”)以及存储根在所有相关平台上的路径。_如果您使用的不是特定平台,只需将其留空。_ - 单击页面顶部或底部的**“保存页面”(Save Page)**按钮 ![{% include product %} 文件管理首选项](images/shotgun-pref-file-management.png) @@ -89,4 +89,4 @@ Toolkit 在 `config/core/roots.yml` 文件中缓存工作流配置中使用的 {% include info title="注意" content="不需要为使用默认存储根的模板指定 `root_name`。可通过在 `roots.yml` 文件中指定 `default: true` 来指示默认根。如果 `roots.yml` 中未明确定义默认根,名为 **primary** 的根将被视为默认根。" %} -1 *值得注意的是,更新路径可能并不理想,因为一旦设置新值,Toolkit 将无法访问使用先前值创建的旧文件(例如,更改旧工作文件的模板路径后,Toolkit 将找不到这些文件)。如果您担心这一点,可以使用新位置创建新模板(例如,houdini_shot_publish_v2)并升级您的应用以使用该新版本。并非所有应用都会处理诸如此类的回退概念,但这将支持某些应用识别旧文件。这不会影响发布,因为它们始终链接到其在 {% include product %} 中的发布。* +1 _值得注意的是,更新路径可能并不理想,因为一旦设置新值,Toolkit 将无法访问使用先前值创建的旧文件(例如,更改旧工作文件的模板路径后,Toolkit 将找不到这些文件)。如果您担心这一点,可以使用新位置创建新模板(例如,houdini_shot_publish_v2)并升级您的应用以使用该新版本。并非所有应用都会处理诸如此类的回退概念,但这将支持某些应用识别旧文件。这不会影响发布,因为它们始终链接到其在 {% include product %} 中的发布。_ diff --git a/docs/zh_CN/quick-answers/administering/create-shotgun-desktop-shortcut.md b/docs/zh_CN/quick-answers/administering/create-shotgun-desktop-shortcut.md index 27e14c9c8..b682b7ef4 100644 --- a/docs/zh_CN/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ b/docs/zh_CN/quick-answers/administering/create-shotgun-desktop-shortcut.md @@ -11,4 +11,4 @@ lang: zh_CN 运行 {% include product %} Desktop 安装程序后,{% include product %} Desktop 可执行文件将位于 `/opt/Shotgun folder` 中。可执行文件的名称是 ShotGrid。 图标不会随安装程序一起分发。请从 [{% include product %} Desktop 插件 github 库](https://github.com/shotgunsoftware/tk-desktop/blob/aac6fe004bd003bf26316b9859bd4ebc42eb82dc/resources/default_systray_icon.png)进行下载。 -下载完图标并获得可执行文件的路径 (`/opt/Shotgun/Shotgun`) 后,请手动创建您可能需要的所有桌面或菜单启动程序。执行此操作的过程因 Linux 版本而异,但通常情况下,您可以在桌面上单击鼠标右键,并在其中寻找合适的菜单选项,从而创建桌面启动程序。 \ No newline at end of file +下载完图标并获得可执行文件的路径 (`/opt/Shotgun/Shotgun`) 后,请手动创建您可能需要的所有桌面或菜单启动程序。执行此操作的过程因 Linux 版本而异,但通常情况下,您可以在桌面上单击鼠标右键,并在其中寻找合适的菜单选项,从而创建桌面启动程序。 diff --git a/docs/zh_CN/quick-answers/administering/disable-browser-integration.md b/docs/zh_CN/quick-answers/administering/disable-browser-integration.md index 7dcbf2e1c..3648efb18 100644 --- a/docs/zh_CN/quick-answers/administering/disable-browser-integration.md +++ b/docs/zh_CN/quick-answers/administering/disable-browser-integration.md @@ -9,13 +9,13 @@ lang: zh_CN 要禁用浏览器集成,请执行以下两个简单的步骤。 -1. 在如下位置创建或打开文本文件: +1. 在如下位置创建或打开文本文件: Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini Linux: ~/.{% include product %}/preferences/toolkit.ini -2. 添加以下部分: +2. 添加以下部分: [BrowserIntegration] enabled=0 @@ -24,4 +24,4 @@ lang: zh_CN **替代方法** -如果您已接管 Toolkit 工作流配置,替代方法是[从环境中删除 `tk-{% include product %}` 插件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48),使其无法加载任何动作。 \ No newline at end of file +如果您已接管 Toolkit 工作流配置,替代方法是[从环境中删除 `tk-{% include product %}` 插件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48),使其无法加载任何动作。 diff --git a/docs/zh_CN/quick-answers/administering/install-desktop-silent.md b/docs/zh_CN/quick-answers/administering/install-desktop-silent.md index 0992dbab6..c421a61ce 100644 --- a/docs/zh_CN/quick-answers/administering/install-desktop-silent.md +++ b/docs/zh_CN/quick-answers/administering/install-desktop-silent.md @@ -15,4 +15,4 @@ lang: zh_CN `ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` -{% include info title="注意" content="`/D` 参数必须是最后一个参数,路径中不应使用 `\"`,即使其中有空格也是如此。" %} \ No newline at end of file +{% include info title="注意" content="`/D` 参数必须是最后一个参数,路径中不应使用 `\"`,即使其中有空格也是如此。" %} diff --git a/docs/zh_CN/quick-answers/administering/move-configuration-location.md b/docs/zh_CN/quick-answers/administering/move-configuration-location.md index 890466287..54d0aa920 100644 --- a/docs/zh_CN/quick-answers/administering/move-configuration-location.md +++ b/docs/zh_CN/quick-answers/administering/move-configuration-location.md @@ -65,7 +65,6 @@ lang: zh_CN > tank move_configuration "" "p:\configs\my_config" "" - ### 示例: $ cd /sgtk/software/shotgun/scarlet @@ -134,38 +133,37 @@ lang: zh_CN All done! Your configuration has been successfully moved. - ## 手动移动工作流配置 {% include warning title="重要信息" content="如果尚未移动工作流配置,我们强烈建议使用上述[内置的 tank 命令](#using-the-tank-move_configuration-command)来自动执行此操作。" %} 如果您已经开始手动移动数据,但遇到了困难,请按照以下说明,了解您需要更改的内容,以确保 Toolkit 此时继续在新位置使用您的工作流配置。 -1. 将您的工作流配置文件移动到新位置 +1. 将您的工作流配置文件移动到新位置 $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new -2. 编辑 `install_location.yml`,以帮助 Toolkit 找到工作流配置所在的位置: +2. 编辑 `install_location.yml`,以帮助 Toolkit 找到工作流配置所在的位置: - $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml + $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml - 更新此文件中的路径,以指向工作流配置在所有适用平台上的新位置。如果您未使用平台,请输入空字符串 `''` + 更新此文件中的路径,以指向工作流配置在所有适用平台上的新位置。如果您未使用平台,请输入空字符串 `''` - # {% include product %} Pipeline Toolkit configuration file - # This file was automatically created by setup_project - # This file reflects the paths in the primary pipeline + # {% include product %} Pipeline Toolkit configuration file + # This file was automatically created by setup_project + # This file reflects the paths in the primary pipeline - # configuration defined for this project. - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' + # configuration defined for this project. + Windows: 'Y:\sgtk\software\shotgun\scarlet_new' + Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' + Linux: '' - # End of file. + # End of file. -3. 在 {% include product %} 中找到与此项目对应的 PipelineConfiguration 实体,并修改“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)和“Windows 路径”(Windows Path)字段值,以匹配您在上面所做的更改。 +3. 在 {% include product %} 中找到与此项目对应的 PipelineConfiguration 实体,并修改“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)和“Windows 路径”(Windows Path)字段值,以匹配您在上面所做的更改。 ![{% include product %} 中的工作流配置位置。](images/new-pipeline-configuration-locations.png) 现在,您的工作流配置应该会在新位置按预期工作。 -{% include info title="注意" content="如果使用的是 SG Desktop,您将需要导航退出您的项目,然后再次单击项目图标,以便从新位置重新加载工作流配置。" %} \ No newline at end of file +{% include info title="注意" content="如果使用的是 SG Desktop,您将需要导航退出您的项目,然后再次单击项目图标,以便从新位置重新加载工作流配置。" %} diff --git a/docs/zh_CN/quick-answers/administering/move-project-directories.md b/docs/zh_CN/quick-answers/administering/move-project-directories.md index 209c8e325..bdf2f292a 100644 --- a/docs/zh_CN/quick-answers/administering/move-project-directories.md +++ b/docs/zh_CN/quick-answers/administering/move-project-directories.md @@ -13,7 +13,7 @@ lang: zh_CN - 将项目文件从旧位置复制(或移动)到新位置。 - 在 {% include product %} 中,导航到**“管理 > 站点偏好设置”(Admin > Site Preferences)**页面并打开**“文件管理”(File Management)**部分。 - ![站点偏好设置中的 {% include product %} 存储根部分。](./images/shotgun-storage-roots.png) + ![站点偏好设置中的 {% include product %} 存储根部分。](./images/shotgun-storage-roots.png) - 将含有每个平台路径的“primary”本地文件存储更新为项目文件的新存储。如果您使用的不是特定平台,请将其留空。 - 单击页面顶部或底部的**“保存更改”(Save Changes)**按钮。 - 更新项目配置中的 `config/core/roots.yml` 文件以匹配刚刚在 {% include product %} 中保存的新路径值。 @@ -36,4 +36,4 @@ Toolkit 将发布路径保存为存储根的相对路径。因此,使用旧存 ## 版本(Versions) -如果 {% include product %} 中的版本实体在受此更改影响的“影片路径”(Path to Movie)或“帧路径”(Path to Frames)字段中存储信息,也需要对这些字段进行更新以指向新位置,因为这些字段是包含媒体绝对路径的字符串字段。 \ No newline at end of file +如果 {% include product %} 中的版本实体在受此更改影响的“影片路径”(Path to Movie)或“帧路径”(Path to Frames)字段中存储信息,也需要对这些字段进行更新以指向新位置,因为这些字段是包含媒体绝对路径的字符串字段。 diff --git a/docs/zh_CN/quick-answers/administering/resetup-project-with-sg-desktop.md b/docs/zh_CN/quick-answers/administering/resetup-project-with-sg-desktop.md index 33da4b8a9..07a6a72da 100644 --- a/docs/zh_CN/quick-answers/administering/resetup-project-with-sg-desktop.md +++ b/docs/zh_CN/quick-answers/administering/resetup-project-with-sg-desktop.md @@ -14,13 +14,11 @@ lang: zh_CN 1. 在 {% include product %} 中删除链接到项目的任何 `PipelineConfiguration` 实体。

![访问 PipelineConfiguration 实体页面](images/pipeline-configuration-entity-page.png)

2. 在 {% include product %} 中将 `Project` 实体上的 `Tank Name` 字段设置为空白值。

![清除项目 tank 名称字段](images/clear-project-tank-name.png)

3. 删除磁盘上的任何相应工作流配置目录。 -4. 在 {% include product %} Desktop 中选择您想设置的项目。如果您已经在查看项目,跳出到项目列表视图,然后再回到您的项目。** -6. 现在,可以再次运行项目设置过程。 +4. 在 {% include product %} Desktop 中选择您想设置的项目。如果您已经在查看项目,跳出到项目列表视图,然后再回到您的项目。\*\* +5. 现在,可以再次运行项目设置过程。 **替代方法** 如果您习惯使用命令行通过 `tank setup_project` 命令来设置您的项目,您可以在命令结尾添加 `--force` 参数。这样您无需遵循上述手动步骤即可设置以前设置过的项目。 tank setup_project --force" - - diff --git a/docs/zh_CN/quick-answers/administering/sg-desktop-run-on-ubuntu.md b/docs/zh_CN/quick-answers/administering/sg-desktop-run-on-ubuntu.md index ac0516b1f..01984729b 100644 --- a/docs/zh_CN/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ b/docs/zh_CN/quick-answers/administering/sg-desktop-run-on-ubuntu.md @@ -15,5 +15,3 @@ lang: zh_CN 目前我们还没有正式的 Debian 支持计划。Ubuntu 构建存在问题,但在更改时需要进行 QA 并支持额外的操作系统,这并不是一件简单的事情。 如果要手动运行并激活 Toolkit 而不使用 {% include product %} Desktop([如此处文档所述](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033208#Step%208.%20Run%20the%20activation%20script)),请从该文档页面下载 `activate_shotgun_pipeline_toolkit.py` 脚本 - 即手册的第 8 步,单击“单击以下载...”标题。 - - diff --git a/docs/zh_CN/quick-answers/administering/share-assets-between-projects.md b/docs/zh_CN/quick-answers/administering/share-assets-between-projects.md index 97138676a..f946c9314 100644 --- a/docs/zh_CN/quick-answers/administering/share-assets-between-projects.md +++ b/docs/zh_CN/quick-answers/administering/share-assets-between-projects.md @@ -18,11 +18,11 @@ caption: Asset Library hierarchy: [project, sg_asset_type, code] entity_type: Asset filters: -- [project, is, {'type': 'Project', 'id': 207}] + - [project, is, { "type": "Project", "id": 207 }] ``` 将 `207` 替换为库项目的 ID。 如果您现在正在 Maya 的镜头工序环境中工作,系统将添加一个新选项卡,其中显示该项目中所有可用的发布。如果您想将该选项卡添加到其他插件(如 Nuke、3dsmax 等)中的加载器,还需要修改其中每个插件的 `tk-multi-loader2` 设置。如果要在其他环境中启用该设置,您将需要在资产工序环境中以及您希望启用该设置的所有其他环境中执行相同的工序。操作过程有点麻烦,但可以实现某种精细控制。 -通过这些设置,加载器应用应该可以显示一个列出常规项目中的发布的选项卡。 \ No newline at end of file +通过这些设置,加载器应用应该可以显示一个列出常规项目中的发布的选项卡。 diff --git a/docs/zh_CN/quick-answers/administering/uninstalling-an-app-or-engine.md b/docs/zh_CN/quick-answers/administering/uninstalling-an-app-or-engine.md index f1328c02c..b3514517d 100644 --- a/docs/zh_CN/quick-answers/administering/uninstalling-an-app-or-engine.md +++ b/docs/zh_CN/quick-answers/administering/uninstalling-an-app-or-engine.md @@ -25,7 +25,6 @@ lang: zh_CN 并且还有一行,将其添加到菜单收藏夹:
[`.../env/includes/settings/tk-maya.yml L56`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L56) - 然后将在镜头工序设置下重复这些行:
[`.../env/includes/settings/tk-maya.yml L106`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L106)
[`.../env/includes/settings/tk-maya.yml L115`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L115) @@ -45,4 +44,4 @@ lang: zh_CN ### 删除应用位置 -在默认配置下,所有应用都将位置描述符存储在 [.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) 文件中。`tk-multi-publish2.yml` 引用了它,因此您需要删除[描述符行](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)。 \ No newline at end of file +在默认配置下,所有应用都将位置描述符存储在 [.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) 文件中。`tk-multi-publish2.yml` 引用了它,因此您需要删除[描述符行](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56)。 diff --git a/docs/zh_CN/quick-answers/administering/update-configuration-core-locations.md b/docs/zh_CN/quick-answers/administering/update-configuration-core-locations.md index 56b92c3a1..337c28ae1 100644 --- a/docs/zh_CN/quick-answers/administering/update-configuration-core-locations.md +++ b/docs/zh_CN/quick-answers/administering/update-configuration-core-locations.md @@ -9,32 +9,31 @@ lang: zh_CN ## 如何更新我的工作流配置以使用本地核心? -如果您的工作流配置已设置为使用共享 Toolkit 核心,那么您实际上可以撤消该过程,或者“取消共享”核心,并使用 tank localize 命令在工作流配置内安装 Toolkit 核心 API 的副本。我们将其称为“本地化”核心。  +如果您的工作流配置已设置为使用共享 Toolkit 核心,那么您实际上可以撤消该过程,或者“取消共享”核心,并使用 tank localize 命令在工作流配置内安装 Toolkit 核心 API 的副本。我们将其称为“本地化”核心。 -1. 打开终端并导航到要安装 Toolkit 核心的工作流配置。 +1. 打开终端并导航到要安装 Toolkit 核心的工作流配置。 $ cd /sgtk/software/shotgun/scarlet -2. 运行以下 tank 命令: +2. 运行以下 tank 命令: - $ ./tank localize + $ ./tank localize - ... - ... - - ---------------------------------------------------------------------- - Command: Localize - ---------------------------------------------------------------------- + ... + ... - This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline - configuration /sgtk/software/shotgun/scarlet. + ---------------------------------------------------------------------- + Command: Localize + ---------------------------------------------------------------------- - Do you want to proceed [yn] + This will copy the Core API in /sgtk/software/shotgun/studio into the Pipeline + configuration /sgtk/software/shotgun/scarlet. - Toolkit 将确认所有内容,然后再继续。工作流配置当前指向的 Toolkit 核心的副本将在本地复制到您的工作流配置中。 + Do you want to proceed [yn] -3. Toolkit 现在会将工作流配置使用的所有应用、插件和框架本地复制到 `install` 文件夹中。然后,它将复制 Toolkit 核心并更新工作流配置中的配置文件,以使用新安装的本地 Toolkit 核心。 + Toolkit 将确认所有内容,然后再继续。工作流配置当前指向的 Toolkit 核心的副本将在本地复制到您的工作流配置中。 +3. Toolkit 现在会将工作流配置使用的所有应用、插件和框架本地复制到 `install` 文件夹中。然后,它将复制 Toolkit 核心并更新工作流配置中的配置文件,以使用新安装的本地 Toolkit 核心。 Copying 59 apps, engines and frameworks... 1/59: Copying tk-multi-workfiles v0.6.15... @@ -61,45 +60,46 @@ lang: zh_CN {% include info title="注意" content="您的输出将根据所安装的应用、插件和框架版本而有所不同。" %} ## 如何更新我的工作流配置以使用现有共享核心? + 如果您有现有的共享 Toolkit 核心,则可以使用 tank 命令来更新任何现有的“本地化”工作流配置,以使用该共享核心。 -1. 打开终端并导航到要更新的工作流配置。 +1. 打开终端并导航到要更新的工作流配置。 $ cd /sgtk/software/shotgun/scarlet -2. 接下来,您将运行 `tank attach_to_core` 命令并提供共享核心在当前平台上的有效路径。 +2. 接下来,您将运行 `tank attach_to_core` 命令并提供共享核心在当前平台上的有效路径。 - $ ./tank attach_to_core /sgtk/software/shotgun/studio - ... - ... - ---------------------------------------------------------------------- - Command: Attach to core - ---------------------------------------------------------------------- - After this command has completed, the configuration will not contain an - embedded copy of the core but instead it will be picked up from the following - locations: + $ ./tank attach_to_core /sgtk/software/shotgun/studio + ... + ... + ---------------------------------------------------------------------- + Command: Attach to core + ---------------------------------------------------------------------- + After this command has completed, the configuration will not contain an + embedded copy of the core but instead it will be picked up from the following + locations: - - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' - - Windows: 'z:\sgtk\software\shotgun\studio' - - Mac: '/sgtk/software/shotgun/studio' + - Linux: '/mnt/hgfs/sgtk/software/shotgun/studio' + - Windows: 'z:\sgtk\software\shotgun\studio' + - Mac: '/sgtk/software/shotgun/studio' - Note for expert users: Prior to executing this command, please ensure that you - have no configurations that are using the core embedded in this configuration. + Note for expert users: Prior to executing this command, please ensure that you + have no configurations that are using the core embedded in this configuration. - Do you want to proceed [yn] + Do you want to proceed [yn] - Toolkit 将确认所有内容,然后再继续。由于此共享核心已针对多个平台设置,它将显示每个平台的位置。 + Toolkit 将确认所有内容,然后再继续。由于此共享核心已针对多个平台设置,它将显示每个平台的位置。 - *如果您需要为新平台添加该位置,请更新共享核心配置中的 config/core/install_location.yml 文件并添加必要的路径。* + _如果您需要为新平台添加该位置,请更新共享核心配置中的 config/core/install_location.yml 文件并添加必要的路径。_ -3. 现在,Toolkit 会在工作流配置中备份本地核心 API,移除本地化核心,并添加必要的配置以将工作流配置指向共享核心。 +3. 现在,Toolkit 会在工作流配置中备份本地核心 API,移除本地化核心,并添加必要的配置以将工作流配置指向共享核心。 - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. + Backing up local core install... + Removing core system files from configuration... + Creating core proxy... + The Core API was successfully processed. - 如果您稍后决定要在工作流配置中本地化 Toolkit 核心(即,从共享核心分离工作流配置并使用本地安装的版本),则可以使用 `tank localize` 命令执行此操作。 + 如果您稍后决定要在工作流配置中本地化 Toolkit 核心(即,从共享核心分离工作流配置并使用本地安装的版本),则可以使用 `tank localize` 命令执行此操作。 {% include info title="注意" content="共享工作室核心的版本必须与当前工作流配置的核心相同或更高。" %} @@ -109,15 +109,15 @@ lang: zh_CN 以下介绍了如何创建可在不同项目工作流配置之间共享的新 Toolkit 核心 API 配置。 -1. 打开终端并导航到包含要共享的 Toolkit 核心版本的现有工作流配置。该过程完成后,此工作流配置将不再进行本地化,而是使用新创建的共享核心。 +1. 打开终端并导航到包含要共享的 Toolkit 核心版本的现有工作流配置。该过程完成后,此工作流配置将不再进行本地化,而是使用新创建的共享核心。 $ cd /sgtk/software/shotgun/pied_piper -2. 运行以下 tank 命令,以将 Toolkit 核心复制到磁盘上的外部位置。您提供的位置应该是可以在所有平台上找到此路径(linux_path、windows_path、mac_path)。我们建议使用引号将每个路径引起来。如果不是在特定平台上使用 Toolkit,只需指定一个空字符串 `""`。  +2. 运行以下 tank 命令,以将 Toolkit 核心复制到磁盘上的外部位置。您提供的位置应该是可以在所有平台上找到此路径(linux_path、windows_path、mac_path)。我们建议使用引号将每个路径引起来。如果不是在特定平台上使用 Toolkit,只需指定一个空字符串 `""`。 $ ./tank share_core "/mnt/sgtk/software/shotgun/studio" "Z:\sgtk\software\shotgun\studio" \ "/sgtk/software/shotgun/studio" -3. 系统将显示一个在 Toolkit 继续之前要进行的更改的摘要。 +3. 系统将显示一个在 Toolkit 继续之前要进行的更改的摘要。 ---------------------------------------------------------------------- Command: Share core @@ -134,7 +134,7 @@ lang: zh_CN have no configurations that are using the core embedded in this configuration. Do you want to proceed [yn] -4. Toolkit 将核心安装复制到新共享位置,并将更新现有工作流配置以指向新共享核心。 +4. Toolkit 将核心安装复制到新共享位置,并将更新现有工作流配置以指向新共享核心。 Setting up base structure... Copying configuration files... @@ -144,4 +144,4 @@ lang: zh_CN Creating core proxy... The Core API was successfully processed. -现在,您可以从其他工作流配置中使用此新共享核心。要更新工作流配置以使用现有共享核心(如刚创建的共享核心),您可以使用 `tank attach_to_core` 命令。 \ No newline at end of file +现在,您可以从其他工作流配置中使用此新共享核心。要更新工作流配置以使用现有共享核心(如刚创建的共享核心),您可以使用 `tank attach_to_core` 命令。 diff --git a/docs/zh_CN/quick-answers/administering/what-is-path-cache.md b/docs/zh_CN/quick-answers/administering/what-is-path-cache.md index ff6c24b48..a43992a09 100644 --- a/docs/zh_CN/quick-answers/administering/what-is-path-cache.md +++ b/docs/zh_CN/quick-answers/administering/what-is-path-cache.md @@ -18,4 +18,4 @@ lang: zh_CN - `tank synchronize_folders`   强制使本地缓存路径与 {% include product %} 同步。 通常情况下,您不需要运行这些命令,但在某些情况下,它们可能会很有用。 -例如,在项目中重命名或重新创建实体之前,应该运行 `unregister_folders`。 \ No newline at end of file +例如,在项目中重命名或重新创建实体之前,应该运行 `unregister_folders`。 diff --git a/docs/zh_CN/quick-answers/administering/where-is-my-cache.md b/docs/zh_CN/quick-answers/administering/where-is-my-cache.md index 156945f41..c264bf3c8 100644 --- a/docs/zh_CN/quick-answers/administering/where-is-my-cache.md +++ b/docs/zh_CN/quick-answers/administering/where-is-my-cache.md @@ -7,7 +7,6 @@ lang: zh_CN # 我的缓存位于何处? - ## 缓存根位置 Toolkit 将某些数据存储在本地缓存中,以防止向 {% include product %} 服务器进行不必要的调用。这包括[缓存路径](./what-is-path-cache.md)、包缓存和缩略图。虽然默认位置应该适用于大多数用户,但如果您需要更改它,可以使用 [cache_location 核心挂钩](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py)对其进行配置。 diff --git a/docs/zh_CN/quick-answers/developing.md b/docs/zh_CN/quick-answers/developing.md index a8d126a06..4fb946d8c 100644 --- a/docs/zh_CN/quick-answers/developing.md +++ b/docs/zh_CN/quick-answers/developing.md @@ -5,8 +5,7 @@ pagename: quick-answers-developing lang: zh_CN --- -开发 -=== +# 开发 一组与使用 Toolkit 进行开发有关的快速解答。 diff --git a/docs/zh_CN/quick-answers/developing/create-publishes-via-api.md b/docs/zh_CN/quick-answers/developing/create-publishes-via-api.md index c99748d83..d86a86f37 100644 --- a/docs/zh_CN/quick-answers/developing/create-publishes-via-api.md +++ b/docs/zh_CN/quick-answers/developing/create-publishes-via-api.md @@ -13,6 +13,7 @@ lang: zh_CN 发布 API 最终使用核心 sgtk API 方法来注册 PublishedFile,但它还会围绕集合、验证和发布提供一个可自定义的框架。除了发布 API 文档外,我们还在[工作流教程](https://developer.shotgridsoftware.com/zh_CN/cb8926fc/)中举例说明了如何编写自己的发布插件。 ## 使用 register_publish() API 方法 + 虽然可以使用原始 {% include product %} API 调用在 {% include product %} 中创建发布记录,但是我们强烈建议使用 Toolkit 的便捷方法。 创建发布的所有 Toolkit 应用都使用称为 [`sgtk.util.register_publish()`](http://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish) 的 API 实用程序方法。 @@ -75,4 +76,5 @@ currentEngine = sgtk.platform.current_engine() tk = currentEngine.sgtk ctx = currentEngine.context ``` -" %} \ No newline at end of file + +" %} diff --git a/docs/zh_CN/quick-answers/developing/maya-shelf-app-launcher.md b/docs/zh_CN/quick-answers/developing/maya-shelf-app-launcher.md index 2458188ed..b95dfd0fd 100644 --- a/docs/zh_CN/quick-answers/developing/maya-shelf-app-launcher.md +++ b/docs/zh_CN/quick-answers/developing/maya-shelf-app-launcher.md @@ -11,7 +11,7 @@ lang: zh_CN {% include info title="注意" content="假设 Toolkit 当前在 Maya 会话中处于启用状态。此示例代码不会引导 Toolkit。" %} -在 Maya 中打开脚本编辑器并粘贴以下 Python 代码:  +在 Maya 中打开脚本编辑器并粘贴以下 Python 代码: ```python import maya.cmds as cmds diff --git a/docs/zh_CN/quick-answers/developing/setting-software-environment-variables.md b/docs/zh_CN/quick-answers/developing/setting-software-environment-variables.md index 75fe5dcdb..e626c5073 100644 --- a/docs/zh_CN/quick-answers/developing/setting-software-environment-variables.md +++ b/docs/zh_CN/quick-answers/developing/setting-software-environment-variables.md @@ -34,10 +34,11 @@ class BeforeAppLaunch(tank.Hook): ```python tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") ``` + " %} ## 自定义封装器 某些工作室具有自定义封装器,支持设置环境变量和启动软件。如果您更愿意使用像这样的自定义代码设置环境,可以将 `Software` 实体的[路径字段](https://support.shotgunsoftware.com/hc/zh-cn/articles/115000067493-Integrations-Admin-Guide#Example:%20Add%20your%20own%20Software)指向可执行封装器,此时将改为由 `tk-multi-launchapp` 运行。 -{% include warning title="警告" content="请谨慎使用此方法以保留 ShotGrid 设置的环境变量,否则集成将无法启动。" %} \ No newline at end of file +{% include warning title="警告" content="请谨慎使用此方法以保留 ShotGrid 设置的环境变量,否则集成将无法启动。" %} diff --git a/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md b/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md index 307fbd230..21115f73e 100644 --- a/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md +++ b/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md @@ -8,16 +8,19 @@ lang: zh_CN # 如何在自定义脚本中处理身份认证和登录凭据? ## 错误消息 + 如果出现类似以下来自脚本的错误,则意味着脚本无权与 ShotGrid 站点进行通信。 ```text tank.errors.TankError: Missing required script user in config '/path/to/your/project/config/core/shotgun.yml' ``` + 如果未预先提供用户身份认证或脚本身份认证,则 Toolkit 会回退到检查是否已在配置的 `shotgun.yml` 文件中定义凭据。 在 `shotgun.yml` 文件中定义凭据是处理身份认证的旧方法。 您应避免在 `shotgun.yml` 文件中定义凭据,而改用下面详细介绍的方法之一: ## 面向用户的脚本 + 如果脚本面向用户,您可以在创建 `Sgtk` 实例前,在脚本开头添加以下内容: ```python @@ -69,7 +72,8 @@ authenticator.clear_default_user() ![](./images/sign_in_window.png) {% include info title="注意" content="如果导入的 Toolkit API(`sgtk` 软件包)未与配置关联,例如您已下载用于引导到其他配置的 Toolkit API,则不应尝试创建 `CoreDefaultsManager`。应改为创建 `ShotgunAuthenticator()` 实例,而不传递默认管理器。 -```python + +````python authenticator = ShotgunAuthenticator() ```" %} @@ -102,7 +106,7 @@ user = authenticator.create_script_user( # Tells Toolkit which user to use for connecting to Shotgun. sgtk.set_authenticated_user(user) -``` +```` {% include info title="注意" content="如[面向用户的脚本](#user-facing-scripts)部分末尾所述,如果您导入的 `sgtk` 软件包是独立的/不是来自于配置,则不应创建默认管理器。此外,还应为 `create_script_user()` 方法提供 `host` kwarg: @@ -113,4 +117,5 @@ user = authenticator.create_script_user( api_key=\"4e48f....\" ) ``` + " %} diff --git a/docs/zh_CN/quick-answers/developing/toolkit-core-event-daemon.md b/docs/zh_CN/quick-answers/developing/toolkit-core-event-daemon.md index 02472b8be..b03249e73 100644 --- a/docs/zh_CN/quick-answers/developing/toolkit-core-event-daemon.md +++ b/docs/zh_CN/quick-answers/developing/toolkit-core-event-daemon.md @@ -104,7 +104,6 @@ def import_sgtk(project): {% include warning title="警告" content="引导配置可能会很慢,因为此过程需要确保在本地缓存配置并且将下载所有依存关系。在事件进程插件中引导可能会严重影响性能。一种可能的方法是,针对每次项目引导添加单独 Python 实例,以便从插件进行通信和发送命令。这将避免在每次需要项目时必须重新引导它。" %} - 下面提供一个示例: ```python @@ -136,4 +135,4 @@ engine.destroy() ... ``` -{% include info title="注意" content="也可以引导集中式配置,因此如果您使用混合配置,也可以使用相同的方法。" %} \ No newline at end of file +{% include info title="注意" content="也可以引导集中式配置,因此如果您使用混合配置,也可以使用相同的方法。" %} diff --git a/docs/zh_CN/quick-answers/developing/update-config-with-api.md b/docs/zh_CN/quick-answers/developing/update-config-with-api.md index a017326b8..308982b40 100644 --- a/docs/zh_CN/quick-answers/developing/update-config-with-api.md +++ b/docs/zh_CN/quick-answers/developing/update-config-with-api.md @@ -8,6 +8,7 @@ lang: zh_CN # 如何使用 API 以编程方式更新我的 Toolkit 配置? ## 更新应用、插件和框架 + 如果您想要以编程方式将所有插件、应用和框架更新到最新版本,可以使用以下代码执行此操作: ```python diff --git a/docs/zh_CN/quick-answers/troubleshooting.md b/docs/zh_CN/quick-answers/troubleshooting.md index d0e1ab8ef..8669a23b5 100644 --- a/docs/zh_CN/quick-answers/troubleshooting.md +++ b/docs/zh_CN/quick-answers/troubleshooting.md @@ -5,8 +5,7 @@ pagename: quick-answers-troubleshooting lang: zh_CN --- -疑难解答 -=== +# 疑难解答 一组旨在解决问题的快速解答。 @@ -19,6 +18,7 @@ lang: zh_CN - [解决与 Python API 相关的 SSL: CERTIFICATE_VERIFY_FAILED 问题](./troubleshooting/fix-ssl-certificate-verify-failed.md) #### 软件集成。 + - [为什么我的 Houdini {% include product %} 集成没有启动?](./troubleshooting/houdini-integrations-not-starting.md) - [我已从 {% include product %} Desktop 启动 Nuke/Maya 等,但 {% include product %} 菜单中缺少相关条目](./troubleshooting/menu-entries-missing-in-launched-dcc.md) - [当我设置 NUKE_PATH 环境变量时为什么 Nuke 集成无法启动?](./troubleshooting/nuke-path-environment-variable.md) @@ -26,7 +26,7 @@ lang: zh_CN - [使用 {% include product %} Toolkit 时,为什么启动时 3ds Max 发生崩溃?](./troubleshooting/3dsmax-crashes-on-startup.md) #### 浏览器集成 + - [我无法通过 Chrome 使用本地文件链接和启动 Toolkit 应用程序](./troubleshooting/cant-use-file-linking-toolkit-app-chrome.md) - [我无法通过 Firefox 使用本地文件链接和启动 Toolkit 应用程序](./troubleshooting/cant-use-file-linking-toolkit-app-firefox.md) - [无法在 Linux 上启动 {% include product %} Desktop/浏览器集成](./troubleshooting/browser-integration-fails-linux.md) - diff --git a/docs/zh_CN/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/zh_CN/quick-answers/troubleshooting/browser-integration-fails-linux.md index 206ce9d53..7bbcca423 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ b/docs/zh_CN/quick-answers/troubleshooting/browser-integration-fails-linux.md @@ -11,6 +11,7 @@ lang: zh_CN 如果问题仍存在,请随时发送电子邮件到 support@shotgunsoftware.com 以联系我们。 ### 目录 + - [OPENSSL_1.0.1_EC 或 HTTPSConnection 相关问题](#openssl_101_ec-or-httpsconnection-related-issues) - [libffi.so.5 相关问题](#libffiso5-related-issues) - [与证书验证失败相关的问题](#certificate-validation-failed-related-issues) @@ -91,6 +92,7 @@ ls -al $HOME/.pki/nssdb $ mkdir --parents ~/.pki/nssdb $ certutil -N -d "sql:$HOME/.pki/nssdb" ``` + 不要输入任何密码。 {% include product %} Desktop 现在应该能够正常启动。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md b/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md index 4a5c9d683..340b98641 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ b/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md @@ -36,7 +36,7 @@ lang: zh_CN ![Autobahn Python 消息](images/autobahn-python.png) -另一方面,如果您看到下列消息之一,则表示证书注册过程有问题:  +另一方面,如果您看到下列消息之一,则表示证书注册过程有问题: ![您的连接不是私人消息](images/your-connection-is-not-private-chrome.png) @@ -98,4 +98,4 @@ Chrome 会定期升级其自签名证书的安全性,这些更新有时会破 ## 其他操作系统的疑难解答 -如果您在其他操作系统上有关于 {% include product %} Desktop 集成的问题,请联系我们的[支持团队](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),以便我们可以为您提供帮助并更新此文章。 \ No newline at end of file +如果您在其他操作系统上有关于 {% include product %} Desktop 集成的问题,请联系我们的[支持团队](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),以便我们可以为您提供帮助并更新此文章。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md b/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md index 4caf0b348..e965b96f1 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ b/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md @@ -58,4 +58,4 @@ lang: zh_CN 此时,需要按照上面所述的步骤添加一个例外。 -如果您看到的屏幕不是这样,请联系我们:support@shotgunsoftware.com。 \ No newline at end of file +如果您看到的屏幕不是这样,请联系我们:support@shotgunsoftware.com。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/context-missing-task-step.md b/docs/zh_CN/quick-answers/troubleshooting/context-missing-task-step.md index ad22003db..d4454843b 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/context-missing-task-step.md +++ b/docs/zh_CN/quick-answers/troubleshooting/context-missing-task-step.md @@ -30,4 +30,4 @@ lang: zh_CN - 使用我们的自动上下文切换功能;该功能允许 Toolkit 检测您何时在软件的本地打开对话框中打开文件(而不是通过 Workfiles 应用)并相应地切换当前上下文。 - 在需要为给定文件确定上下文的独立过程中使用 API。 -针对这些情况的解决方案是将 `Task` 文件夹引入到您的数据结构中,或者不使用自动上下文切换,对于 API 脚本,请确保您的过程已具有所需的上下文信息,而无需执行此查找操作。 \ No newline at end of file +针对这些情况的解决方案是将 `Task` 文件夹引入到您的数据结构中,或者不使用自动上下文切换,对于 API 脚本,请确保您的过程已具有所需的上下文信息,而无需执行此查找操作。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md b/docs/zh_CN/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md index a9931d0f9..55570dac0 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ b/docs/zh_CN/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md @@ -17,16 +17,16 @@ Python API 依赖与 API 捆绑在一起且位于计算机上的一组证书才 将所需的 CA 证书添加到 Windows 证书存储中。Windows 7 用户可能必须先[升级到 PowerShell 3.0](https://docs.microsoft.com/zh-cn/office365/enterprise/powershell/manage-office-365-with-office-365-powershell) 才能使用此解决方案,也可使用 [certutil](https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/certutil) 添加[所需的证书](https://www.amazontrust.com/repository/SFSRootCAG2.cer)。 -1. 通过右键单击**开始**,然后单击 **Windows PowerShell (管理员)**,启动提升权限的 PowerShell。 +1. 通过右键单击**开始**,然后单击 **Windows PowerShell (管理员)**,启动提升权限的 PowerShell。 -2. 将以下命令粘贴到 PowerShell 窗口中,然后按回车键以执行: +2. 将以下命令粘贴到 PowerShell 窗口中,然后按回车键以执行: $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" $cert_file = New-TemporaryFile Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root -3. 如果显示带 Thumbprint `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` 的已添加证书详细信息,则表示操作已完成,可以关闭 PowerShell。 +3. 如果显示带 Thumbprint `925A8F8D2C6D04E0665F596AFF22D863E8256F3F` 的已添加证书详细信息,则表示操作已完成,可以关闭 PowerShell。 ## 替代解决方案 diff --git a/docs/zh_CN/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/zh_CN/quick-answers/troubleshooting/houdini-integrations-not-starting.md index 346c76aac..efafb6cc8 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ b/docs/zh_CN/quick-answers/troubleshooting/houdini-integrations-not-starting.md @@ -7,7 +7,6 @@ lang: zh_CN # 为什么我的 Houdini {% include product %} 集成没有启动? - 本文介绍了 {% include product %} 集成在 Houdini 中无法启动的常见原因。在这种情况下,Houdini 从 {% include product %} Desktop、{% include product %} 网站或 tank 令启动且无错误。 但是,Houdini 启动后,{% include product %} 菜单或工具架将不会出现。 通常导致这种情况的原因是,`HOUDINI_PATH` 环境变量已被覆盖,而 {% include product %} 依赖于该变量来传递启动脚本路径。 @@ -33,4 +32,4 @@ Houdini 从 {% include product %} 启动时,启动应用逻辑会将 {% includ 如果出现这种情况,您应尝试改为使用 `%HOUDINI_PATH%`。" %} -如果这样做无法解决问题,请联系我们的[支持团队](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),他们将帮助您诊断问题。 \ No newline at end of file +如果这样做无法解决问题,请联系我们的[支持团队](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),他们将帮助您诊断问题。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md b/docs/zh_CN/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md index 39ce2acdf..5f7e68a2f 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ b/docs/zh_CN/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md @@ -23,4 +23,4 @@ lang: zh_CN ![{% include product %} 菜单项目动作](images/shotgun-menu-asset-step-actions.png) -如果您认为您处于正确的环境,但动作仍未显示,则下一步是检查相关[日志](where-are-my-log-files.md),查看是否存在任何错误。您可能需要[启用调试日志记录](turn-debug-logging-on.md)以获得完整输出。 \ No newline at end of file +如果您认为您处于正确的环境,但动作仍未显示,则下一步是检查相关[日志](where-are-my-log-files.md),查看是否存在任何错误。您可能需要[启用调试日志记录](turn-debug-logging-on.md)以获得完整输出。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/zh_CN/quick-answers/troubleshooting/nuke-path-environment-variable.md index 89c6f6253..b5d1130cf 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ b/docs/zh_CN/quick-answers/troubleshooting/nuke-path-environment-variable.md @@ -17,4 +17,4 @@ lang: zh_CN tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") ``` -此外,也可以使用 `prepend_path_to_env_var()` 附加路径。 \ No newline at end of file +此外,也可以使用 `prepend_path_to_env_var()` 附加路径。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md index 307d541e7..48331ee24 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md +++ b/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md @@ -21,20 +21,21 @@ lang: zh_CN 下面列出了一些良好做法和常见的性能下降场景。这不是一个详尽的列表,当我们看到新的模式时,可以尝试将它添加到列表中。如果本手册不能帮助您找到您所面临问题的根源,请随时提交[支持工单](https://support.shotgunsoftware.com/hc/en-us/requests/new),我们的团队将很乐意进一步帮助您。 目录: + - [常规良好做法](#general-good-practice) - - [缓存位置](#cache-location) - - [保持更新](#keeping-up-to-date) - - [集中式配置与分布式配置](#centralized-configs-vs-distributed-configs) - - [调试](#debugging) + - [缓存位置](#cache-location) + - [保持更新](#keeping-up-to-date) + - [集中式配置与分布式配置](#centralized-configs-vs-distributed-configs) + - [调试](#debugging) - [启动软件时速度很慢](#launching-software-is-slow) - - [诊断](#diagnosis) - - [问题是在启动前还是启动后发生?](#is-the-issue-pre-or-post-launch) - - [检查日志](#checking-the-logs) - - [软件启动速度慢的常见原因](#common-causes-of-slow-software-launches) + - [诊断](#diagnosis) + - [问题是在启动前还是启动后发生?](#is-the-issue-pre-or-post-launch) + - [检查日志](#checking-the-logs) + - [软件启动速度慢的常见原因](#common-causes-of-slow-software-launches) - [“File Open”、“File Save”或加载器应用很慢?](#file-open-file-save-or-the-loader-app-is-slow) - [文件夹创建速度很慢](#folder-creation-is-slow) - - [解决 I/O 使用问题](#tackling-io-usage) - - [注册文件夹](#registering-folders) + - [解决 I/O 使用问题](#tackling-io-usage) + - [注册文件夹](#registering-folders) ## 常规良好做法 @@ -60,13 +61,13 @@ lang: zh_CN 虽然这两种方法之间的差异超出了性能范围,但它们都会在性能方面带来一些优点和缺点。下表仅从性能角度展示了利弊。 -| | 优点 | 缺点 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **集中式配置** | - 一旦初始设置过程完成,它所需的一切内容均已下载,可供所有用户使用。 | - 集中式配置通常保存在网络存储中,因此在正常的 Toolkit 使用期间性能可能会降低。 | -| | - 未来的更新只需要在集中位置下载一次。 | - Toolkit 配置包含许多小文件,处理大量小文件的元数据操作对服务器而言可能要慢得多,也更难。此外,通过使用 Toolkit 或通过常规使用服务器进行大量读取操作可能会因为无法快速读取配置而影响 Toolkit 的性能。 | -| **分布式配置** | - 缓存的应用、插件、框架和核心采用一种可以与其他本地缓存的配置共享的方式存储。这意味着,如果不同的项目共享相同的依赖项,则这些项目的后续加载可能会更快地缓存。 | - 分布式配置需要按用户在本地缓存。通常,这包括下载配置和所有必需的应用、插件、框架和核心。 | -| | - 它们存储在用户本地硬盘驱动器上的缓存中,因此通常比服务器速度更快。这意味着,在初始缓存后,性能应该优于集中式配置。 | - 这一过程会在后台无缝进行,但是仍然需要下载这些文件的初始成本。 | -| | | - 每次更新配置以指向依赖项的新版本时,都需要缓存配置和新的依赖项。 | +| | 优点 | 缺点 | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **集中式配置** | - 一旦初始设置过程完成,它所需的一切内容均已下载,可供所有用户使用。 | - 集中式配置通常保存在网络存储中,因此在正常的 Toolkit 使用期间性能可能会降低。 | +| | - 未来的更新只需要在集中位置下载一次。 | - Toolkit 配置包含许多小文件,处理大量小文件的元数据操作对服务器而言可能要慢得多,也更难。此外,通过使用 Toolkit 或通过常规使用服务器进行大量读取操作可能会因为无法快速读取配置而影响 Toolkit 的性能。 | +| **分布式配置** | - 缓存的应用、插件、框架和核心采用一种可以与其他本地缓存的配置共享的方式存储。这意味着,如果不同的项目共享相同的依赖项,则这些项目的后续加载可能会更快地缓存。 | - 分布式配置需要按用户在本地缓存。通常,这包括下载配置和所有必需的应用、插件、框架和核心。 | +| | - 它们存储在用户本地硬盘驱动器上的缓存中,因此通常比服务器速度更快。这意味着,在初始缓存后,性能应该优于集中式配置。 | - 这一过程会在后台无缝进行,但是仍然需要下载这些文件的初始成本。 | +| | | - 每次更新配置以指向依赖项的新版本时,都需要缓存配置和新的依赖项。 | 总之,如果您的存储速度较慢,但是 Internet 连接良好,那么分布式配置可能是最佳的解决方案,但是如果您的服务器存储性能很好,而 Internet 连接很差,那么集中式配置可能更合适。 @@ -79,6 +80,7 @@ lang: zh_CN 您可能会注意到,当启动诸如 Maya、Nuke、Houdini 或其他软件时,启动时间比不带 {% include product %} 时要长。这是正常的,它们可能比不带 {% include product %} 时稍长片刻,但有时这些时间可能会增加到难以接受的水平(通常取决于我们期望它们在一分钟内启动的软件)。这可能是诊断起来比较棘手的的领域之一,因为启动软件涉及许多过程。 ### 诊断 + 首先要做的是弄清楚这是在什么条件下发生的。 1. **不带 {% include product %} 时启动速度慢吗?** - 这似乎是显而易见的,但应注意检查是否仅在带有 {% include product %} 的情况下启动软件时才发生该问题。 @@ -114,7 +116,6 @@ lang: zh_CN 2019-05-01 11:27:56,835 [82801 DEBUG sgtk.core.path_cache] Path cache syncing not necessary - local folders already up to date! 2019-05-01 11:28:01,847 [82801 INFO sgtk.env.asset.tk-shotgun.tk-shotgun-folders] 1 Asset processed - Processed 66 folders on disk. - 一旦定位了时间跳转,日志行就有望让您了解在该阶段发生了什么,例如它是在文件夹创建期间发生的,还是在试图获取 {% include product %} 连接时发生的。 不过,阅读日志可能比较麻烦,而且内容并不总是有意义,因此,您可以再次联系[支持](https://support.shotgunsoftware.com/hc/en-us/requests/new)来帮助您完成这一点。 @@ -131,18 +132,19 @@ lang: zh_CN 首先要做的是将问题范围缩小到相关应用速度慢的某些方面。 - **启动应用或浏览选项卡是否很慢?** - - 有可能是该应用当前配置为显示太多信息。可以将“我的任务”(My Tasks)选项卡和其他选项卡配置为从列表中过滤出不需要的实体。例如,您可以过滤出处于特定状态的任务,例如“暂停”(On Hold) (`hld`) 或“最终”(Final) (`fin`)。这不仅提供了性能优势,而且还让美工人员仅看到对他们来说重要的信息。可以过滤[加载器应用](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033078#The%20tree%20view)和 Workfiles 应用,但是过滤时 Workfiles 目前没有特定的文档部分,不过过滤器可以作为[层次结构设置](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088#Step%20filtering)的一部分应用。 - - “File Open”应用的层次结构也可以配置为延迟加载[子项直到它被展开](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088#Deferred%20queries)。现在这是默认的配置设置,但是,如果您有较旧的配置,则可能希望过渡到使用该设置。 - - 确认未启用调试日志记录。这可能会导致大量额外的 I/O,因此会降低速度;这些应用确实包含大量的调试输出。 + - 有可能是该应用当前配置为显示太多信息。可以将“我的任务”(My Tasks)选项卡和其他选项卡配置为从列表中过滤出不需要的实体。例如,您可以过滤出处于特定状态的任务,例如“暂停”(On Hold) (`hld`) 或“最终”(Final) (`fin`)。这不仅提供了性能优势,而且还让美工人员仅看到对他们来说重要的信息。可以过滤[加载器应用](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033078#The%20tree%20view)和 Workfiles 应用,但是过滤时 Workfiles 目前没有特定的文档部分,不过过滤器可以作为[层次结构设置](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088#Step%20filtering)的一部分应用。 + - “File Open”应用的层次结构也可以配置为延迟加载[子项直到它被展开](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088#Deferred%20queries)。现在这是默认的配置设置,但是,如果您有较旧的配置,则可能希望过渡到使用该设置。 + - 确认未启用调试日志记录。这可能会导致大量额外的 I/O,因此会降低速度;这些应用确实包含大量的调试输出。 - **打开、保存或创建新文件时是否很慢?** - - 检查您是否已接管场景操作或动作挂钩,并确定这些功能是否有任何可能会降低速度的自定义行为。 - - 当创建或保存文件时,Workfiles 将确保在上下文中创建所有必需的文件夹。文件夹创建可能是出现性能[问题](#folder-creation-is-slow)的常见原因。 + - 检查您是否已接管场景操作或动作挂钩,并确定这些功能是否有任何可能会降低速度的自定义行为。 + - 当创建或保存文件时,Workfiles 将确保在上下文中创建所有必需的文件夹。文件夹创建可能是出现性能[问题](#folder-creation-is-slow)的常见原因。 ## 文件夹创建速度很慢 文件夹创建包含许多部分,这可能会导致出现问题时进程变慢。 文件夹创建将: + - 同步本地缓存路径。 - 读取配置的数据结构。 - 生成一个路径列表,这些路径应该在特定的上下文中创建。 @@ -174,6 +176,7 @@ lang: zh_CN {% include info title="注意" content="工序数据结构文件夹的设置默认为 True。" %} #### 延迟创建 + [`defer_creation` 设置](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868#Workspaces%20and%20Deferred%20Folder%20Creation)允许您将文件夹的创建限制为仅在特定插件运行时才创建文件夹,从而进一步细化何时应创建文件夹。您甚至可以使用自定义名称,然后使用 [sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure) 触发它们的创建。 **示例** @@ -208,6 +211,7 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") 本地[缓存路径](../administering/what-is-path-cache.md)使用 SQLite 数据库来存储数据。如果数据库存储在网络存储上,那么可能会严重影响数据库的读取和写入性能。 #### 初始同步 + 在某些情况下,需要从头开始为一个已经注册了许多文件夹的项目生成本地缓存(例如,当新用户加入已在进行中的项目时)。这个过程可能会明显延长,但令人高兴的是,对于该项目,这种情况应该仅发生一次。 后续同步将仅提取本地缓存和站点注册之间的差异。如果用户不经常处理项目,并且在会话之间创建了许多文件夹,那么当所有内容都缓存时,他们可能会明显等待很长时间。 @@ -220,4 +224,4 @@ sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") 然后,可以通过从某人的缓存手动复制,或者使用脚本定期传输它,来定期更新集中存储的缓存路径。 -{% include warning title="警告" content="cache_location.py 挂钩可用于设置缓存的位置,但是应该避免针对所有用户将此挂钩设置为指向单一位置,因为当一个或多个进程尝试同时编辑数据库时,这可能会导致数据库锁定。" %} \ No newline at end of file +{% include warning title="警告" content="cache_location.py 挂钩可用于设置缓存的位置,但是应该避免针对所有用户将此挂钩设置为指向单一位置,因为当一个或多个进程尝试同时编辑数据库时,这可能会导致数据库锁定。" %} diff --git a/docs/zh_CN/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/zh_CN/quick-answers/troubleshooting/turn-debug-logging-on.md index ac31f6319..54c0ccbdb 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/turn-debug-logging-on.md +++ b/docs/zh_CN/quick-answers/troubleshooting/turn-debug-logging-on.md @@ -18,6 +18,7 @@ lang: zh_CN ## 设置环境变量 ### 永久启用调试日志记录 + `TK_DEBUG=1`首先,您需要设置新的环境变量: {% include info title="注意" content="我们建议您与工作室的技术专家讨论如何设置环境变量,因为具体说明特定于平台。但是,以下示例介绍了在 Windows 7 计算机上设置环境变量。" %} @@ -28,7 +29,6 @@ lang: zh_CN ![设置 Windows 环境变量](images/windows-setting-environment-variable.png) - - **变量名称**:`TK_DEBUG` - **变量值**:`1` - 选择“确定”。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md index 5f6f1e418..a5bd5fc77 100644 --- a/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ b/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md @@ -28,4 +28,4 @@ lang: zh_CN 如果退出 Photoshop 并移除该目录,则重新启动时应只有一个扩展。 -{% include info title="注意" content="如果在多个环境或多个配置中具有 Photoshop 集成,并且新旧插件混合存在,则用户启动包含旧集成的 Photoshop 时,将返回旧插件。建议全面更新 Photoshop,以便只需执行一次清理。" %} \ No newline at end of file +{% include info title="注意" content="如果在多个环境或多个配置中具有 Photoshop 集成,并且新旧插件混合存在,则用户启动包含旧集成的 Photoshop 时,将返回旧插件。建议全面更新 Photoshop,以便只需执行一次清理。" %} diff --git a/docs/zh_CN/quick-answers/workflow.md b/docs/zh_CN/quick-answers/workflow.md index 6dc9ae6b2..d33a789eb 100644 --- a/docs/zh_CN/quick-answers/workflow.md +++ b/docs/zh_CN/quick-answers/workflow.md @@ -5,10 +5,8 @@ pagename: quick-answers-workflow lang: zh_CN --- -工作流 -===== +# 工作流 一组基于 Toolkit 工作流的相关快速解答。 - [版本与已发布的文件之间有何差异?](./workflow/version-publishedfile-difference.md) - diff --git a/docs/zh_CN/quick-answers/workflow/version-publishedfile-difference.md b/docs/zh_CN/quick-answers/workflow/version-publishedfile-difference.md index 8bc7c9598..a9a596fbe 100644 --- a/docs/zh_CN/quick-answers/workflow/version-publishedfile-difference.md +++ b/docs/zh_CN/quick-answers/workflow/version-publishedfile-difference.md @@ -7,11 +7,10 @@ lang: zh_CN # 版本与已发布的文件之间有何差异? -“发布”****表示可在应用程序内部使用的磁盘上的文件(或图像序列)或数据。它可以是 exr 序列、abc、Maya 文件等。发布由 {% include product %} 中的 `PublishedFile` 实体表示。 +“发布”\*\*\*\*表示可在应用程序内部使用的磁盘上的文件(或图像序列)或数据。它可以是 exr 序列、abc、Maya 文件等。发布由 {% include product %} 中的 `PublishedFile` 实体表示。 -“版本”****({% include product %} 中的 `Version` 实体)是发布的直观表示,用于审核和记录。`Version` 实体有一个名为“已发布的文件”(Published Files)的字段,您可在此字段中填充任意数量的发布记录以将其连接在一起。这是您可以跟踪哪个审核 `Version` 与一组发布相关联的方法。我们建议您在发布时填充此关系。版本由 {% include product %} 中的 `Version` 实体表示。 +“版本”\*\*\*\*({% include product %} 中的 `Version` 实体)是发布的直观表示,用于审核和记录。`Version` 实体有一个名为“已发布的文件”(Published Files)的字段,您可在此字段中填充任意数量的发布记录以将其连接在一起。这是您可以跟踪哪个审核 `Version` 与一组发布相关联的方法。我们建议您在发布时填充此关系。版本由 {% include product %} 中的 `Version` 实体表示。 最终想法是:在发布时,您可以生成一组文件 - 有时是不同的文件格式但包含相同的内容(Maya 文件、obj、alembic 等)- 这些文件以不同方式表示相同的内容。之后,它们与单一审核 `Version` 关联起来,以便预览发布数据并进行记录。 当发布的数据是图像序列时,这种想法就有点多余了。实际上,图像序列既是您想要审核的内容,又是要沿管道发送的内容。在这种情况下,您可能需要“双管齐下”,同时创建发布和 `Version`。这样,您可以加载表示 `Version` 的已发布数据(例如,通过加载器应用)。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md b/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md index ea210c513..b67b87c17 100644 --- a/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md +++ b/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md @@ -9,7 +9,7 @@ lang: zh_CN ## 简介 -Toolkit 工作流的核心是环境配置。在 Toolkit 工作流配置中,环境配置文件用于定义在不同的 DCC 中哪些 Toolkit 应用可用,以及为每个应用自定义相应设置。本文档提供了有关环境配置文件的结构和功能的完整参考,并涵盖了用于在一个项目中配置不同工作流的 Toolkit 环境**概念、配置结构、文件引用以及可用自定义项确定方式。 +Toolkit 工作流的核心是环境配置。在 Toolkit 工作流配置中,环境配置文件用于定义在不同的 DCC 中哪些 Toolkit 应用可用,以及为每个应用自定义相应设置。本文档提供了有关环境配置文件的结构和功能的完整参考,并涵盖了用于在一个项目中配置不同工作流的 Toolkit 环境\*\*概念、配置结构、文件引用以及可用自定义项确定方式。 {% include info title="注意" content="本文档提供了有关环境配置文件的参考,而[有关“编辑工作流配置”的 Toolkit 基础知识手册](./learning-resources/guides/editing_app_setting.md)提供了有关编辑配置设置的分步示例。" %} @@ -71,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -91,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### 插件块 @@ -104,16 +104,15 @@ engines: `location` 是每个包都需要的特殊设置。`apps` 设置是为插件定义的所有应用列表,每个应用都有自己的设置。在此示例中,只为插件定义了一个应用:`tk-multi-workfiles2`。 - ### 位置描述符 -每个 Toolkit 包都有一个 `location` 设置,我们将其称为包的描述符**。描述符告知 Toolkit 在何处查找给定包,以及根据其类型,是直接访问它还是在本地缓存它。Toolkit 包可以来自多个位置,例如,{% include product %} App Store、git 库、磁盘上的路径或上传到 {% include product %} 站点的 zip 文件。其中每个位置都有一个对应的描述符类型,相应类型具有特定设置。下面是上述示例中 `tk-maya` 插件的描述符: +每个 Toolkit 包都有一个 `location` 设置,我们将其称为包的描述符\*\*。描述符告知 Toolkit 在何处查找给定包,以及根据其类型,是直接访问它还是在本地缓存它。Toolkit 包可以来自多个位置,例如,{% include product %} App Store、git 库、磁盘上的路径或上传到 {% include product %} 站点的 zip 文件。其中每个位置都有一个对应的描述符类型,相应类型具有特定设置。下面是上述示例中 `tk-maya` 插件的描述符: ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` 这是类型为 `app_store` 的描 符,此描述符告知 Toolkit 从 {% include product %} App Store 获取给定包。类型为 `app_store` 的描述符具有设置 `name` 和 `version`。 @@ -121,9 +120,9 @@ engines: 相反,如果您正在开发自定义包 - 即您正在为工作室中的一个特定工作流编写一个 Toolkit 应用,您可能希望直接从磁盘上的路径获取它。在此示例中,将使用类型为 `dev` 的描述符,它可能如下所示: ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` 描述符的设置与 `app_store` 描述符的设置不同。虽然它可以采用其他设置,但可以直接为其设置指向应用所在磁盘位置的 `path` 设置。 @@ -171,27 +170,27 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` 现在要注意几个重要事项: -* 默认配置按字母顺序列出包,此示例遵循此惯例。 -* 文件会开始变长,即使尚未添加任何配置设置也是如此。 -* 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 +- 默认配置按字母顺序列出包,此示例遵循此惯例。 +- 文件会开始变长,即使尚未添加任何配置设置也是如此。 +- 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 -为了解决最后两个问题,Toolkit 支持 includes**。 +为了解决最后两个问题,Toolkit 支持 includes\*\*。 ### includes -通过 *includes*,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 +通过 _includes_,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 includes 包括两个部分: -* `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 -* 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 +- `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 +- 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 为了充实上述示例,可以使用一个文件存放所有插件的位置描述符。我们将该文件放在 `includes` 子文件夹中,并将其命名为 `engine_locations.yml`。 @@ -209,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` 此文件可以用作所有插件位置的单个源,而且所有环境配置都可以引用它。使用此包含文件后,我们的示例现在如下所示: @@ -269,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -293,10 +289,9 @@ engines: {% include info title="注意" content="默认配置使用一个第二层嵌套(未在此处说明)。还具有描述符以外的设置的每个应用或插件在 `includes/settings` 中都有一个设置文件(如 `includes/settings/tk-maya.yml` 和 `includes/settings/tk-multi-workfiles2.yml`)。插件设置文件包含应用设置文件中的应用设置,环境配置文件包含插件设置文件中的插件设置。有关默认配置结构的详细信息,请参见[其自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)。有关修改配置设置的详细介绍,请参见[有关“编辑配置设置”的 Toolkit 基础知识手册](./learning-resources/guides/editing_app_setting.md)。" %} - ## 稀疏配置 -每个 Toolkit 包都有一组可用的配置设置,每个设置都有默认值。Toolkit 允许使用稀疏**配置:如果未在环境配置文件(和/或其包含的文件)中明确指定配置设置,则将使用包中的默认值。 +每个 Toolkit 包都有一组可用的配置设置,每个设置都有默认值。Toolkit 允许使用稀疏\*\*配置:如果未在环境配置文件(和/或其包含的文件)中明确指定配置设置,则将使用包中的默认值。 在我们的示例中,除了 `location` 外,我们没有为应用指定任何设置。因此,在配置的当前状态中,三个应用的所有设置都将使用默认值。那么,我们如何知道哪些配置设置可用? @@ -306,8 +301,8 @@ engines: 使用稀疏配置时,难以直接通过查看配置文件确定哪些配置设置可用于应用。要确定应用有哪些配置设置可用,可以采用两种方式: -* **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)。[应用和插件页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)列出了所有应用和插件的文档页面。 -* **清单文件:**每个 Toolkit 包的根目录中都包含一个名为 `info.yml` 的文件。我们将此文件称为包的清单文件**,此文件定义相应包的所有可用配置设置,每个设置都有说明和默认值。您可以在自己的包缓存中查找清单文件(例如工作流配置中的 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`),也可以在 Github 中查找清单文件([例如,此处是 Workfiles 的清单文件](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))。 +- **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)。[应用和插件页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)列出了所有应用和插件的文档页面。 +- **清单文件:**每个 Toolkit 包的根目录中都包含一个名为 `info.yml` 的文件。我们将此文件称为包的清单文件\*\*,此文件定义相应包的所有可用配置设置,每个设置都有说明和默认值。您可以在自己的包缓存中查找清单文件(例如工作流配置中的 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`),也可以在 Github 中查找清单文件([例如,此处是 Workfiles 的清单文件](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))。 ## 修改配置设置 @@ -337,13 +332,12 @@ engines: 请注意,如果 `tk-multi-workfiles2` 的设置来自一个包含的文件,我们将在该文件中进行此更改。 - ## 其他资源 -* [Toolkit 基础知识手册:编辑工作流配置](./learning-resources/guides/editing_app_setting.md) -* [Toolkit 基础知识手册:添加应用](./learning-resources/guides/installing_app.md) -* [动画工作流教程](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [描述符参考文档](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [网络讲座:Toolkit 管理](https://youtu.be/7qZfy7KXXX0) -* [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) -* [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [Toolkit 基础知识手册:编辑工作流配置](./learning-resources/guides/editing_app_setting.md) +- [Toolkit 基础知识手册:添加应用](./learning-resources/guides/installing_app.md) +- [动画工作流教程](../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [描述符参考文档](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [网络讲座:Toolkit 管理](https://youtu.be/7qZfy7KXXX0) +- [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) +- [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md index b96cf0faa..6ce7bd324 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md @@ -39,7 +39,6 @@ lang: zh_CN - 生成 QuickTime 影片并上传至 {% include product %} 进行审看。 - ## 发送批处理渲染进行审看 为镜头发布了 Flame 批处理文件后,您可以直接从该镜头启动 Flare,打开预填充了渲染和输出设置的批处理文件。要渲染出新的版本,只需单击“Render Range”按钮即可。 @@ -66,11 +65,12 @@ LINKBOX_ENGINE:{% include product %}software/tk-flame:Flame 插件 ## 使用导出预设 -导出器在其配置中使用了“导出预设”的概念。**当您在 Flame 内启动导出用户界面时,将看到一个下拉列表,其中包含可用的导出预设。每个预设都是一个配置选项,通过它可配置将文件写入磁盘和上传至 {% include product %} 的方式。诸如文件在磁盘上的位置等高级设置直接在环境配置中进行控制,以易于调整默认的配置选项来适合您的工作流。 +导出器在其配置中使用了“导出预设”的概念。\*\*当您在 Flame 内启动导出用户界面时,将看到一个下拉列表,其中包含可用的导出预设。每个预设都是一个配置选项,通过它可配置将文件写入磁盘和上传至 {% include product %} 的方式。诸如文件在磁盘上的位置等高级设置直接在环境配置中进行控制,以易于调整默认的配置选项来适合您的工作流。 更高级的设置,以及为控制 Flame 而对传递给 Flame 的实际导出 XML 内容施加的控制,则由一个挂钩进行处理,其中定义了每个预设的行为。在该挂钩中,您可以完全控制导出器生成媒体的方式。 ## 绕过 {% include product %} 服务器端转码 + 默认情况下,我们通过设置 `Version.sg_uploaded_movie` 字段,将 QuickTime 影片上传至 {% include product %} 进行审看。这进而会触发 {% include product %} 服务器端转码;上传的 QuickTime 影片会进一步转换为专为在浏览器中和移动设备上播放而定制的 `mp4` 和 `webm` 格式。有时,绕过这种服务器端转码可能会有好处。我们可以通过设置 `bypass_shotgun_transcoding` 配置设置来做到这一点。当此设置为 True 时,集成会直接上传至 {% include product %} 中的 `Version.sg_uploaded_movie_mp4` 字段,从而绕过服务器端转码。这种情况下,不会生成 `webm` 版本,因此在 Firefox 中无法进行审看播放。 有关详细信息,请参见 https://support.shotgunsoftware.com/hc/zh-cn/articles/219030418。 @@ -139,4 +139,3 @@ def get_ffmpeg_quicktime_encode_parameters(self): def get_local_quicktime_ffmpeg_encode_parameters(self): return "-vcodec libx264 -pix_fmt yuv420p -g 30 -b:v 6000k -vprofile high -bf 0" ``` - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md index 63eaa966c..7de9896b1 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md @@ -43,4 +43,3 @@ Flame 审核应用可进行以下几种不同的自定义: - 您可以自定义应用应该自动将哪些任务添加到 {% include product %} 中新创建的项。这可以通过任务模板设置来实现,并且这样做可对创建的结构进行标准化设置。 - 通过挂钩,您可以对应用在 Flame 中生成 QuickTime 影片所用的 XML 预设进行完全控制。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md index 0ab3a345a..03393e165 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md @@ -38,10 +38,12 @@ lang: zh_CN ![shotgun_ui](../images/apps/hiero-shotgun_ui.png) ### 标记(Tags) + 通过调整下拉列表,您可以将各种 Hiero 标记映射到 {% include product %} 镜头状态和镜头任务模板。这样,通过 Hiero 的标记工作流,您可以将某个 {% include product %} 镜头设置为正在进行中,或者为镜头设置绿屏、CG 额外奖励或任何对您的配置有意义的任务。此用户界面通过一个挂钩填充,并且很容易配置额外奖励功能。 ### 整理 -应用还提供选项,控制如何对照 Hiero 的内置逻辑将轨道项整理在一起。 如果您的一个镜头由多个项构成(无论是重叠、在不同轨道上还是在多个轨道上具有相同的镜头名称),应开启这些选项。这样,{% include product %} Toolkit 镜头更新程序会将匹配的整理项视为一个镜头。 + +应用还提供选项,控制如何对照 Hiero 的内置逻辑将轨道项整理在一起。 如果您的一个镜头由多个项构成(无论是重叠、在不同轨道上还是在多个轨道上具有相同的镜头名称),应开启这些选项。这样,{% include product %} Toolkit 镜头更新程序会将匹配的整理项视为一个镜头。 ![整理](../images/apps/hiero-collate.png) @@ -50,13 +52,15 @@ lang: zh_CN ![collate_ext](../images/apps/hiero-collate_ex.png) ### 路径 -在 {% include product %} 用户界面下面,是标准路径对话框。默认情况下,会通过 Hiero 向镜头添加三项内容,包括一个默认的 Nuke 脚本、一个默认的 Nuke 写入位置和一个默认的图版转码位置。 这些项的位置由应用的配置决定,并可完全使用模板系统: + +在 {% include product %} 用户界面下面,是标准路径对话框。默认情况下,会通过 Hiero 向镜头添加三项内容,包括一个默认的 Nuke 脚本、一个默认的 Nuke 写入位置和一个默认的图版转码位置。 这些项的位置由应用的配置决定,并可完全使用模板系统: ![路径](../images/apps/hiero-paths.png) 此应用会向 Hiero 添加一个 `{tk_version}` 令牌,它将被替换为版本字符串,并采用 {% include product %} Toolkit 要求的正确格式。 ### 自定义模板字段 + 您在 `custom_template_fields` 设置中定义的由 `resolve_custom_strings` 挂钩解析的任何令牌都将自动添加到 Hiero 的有效替换令牌列表中,并被视为 Toolkit 模板路径中的有效替换项。 例如,在 Toolkit 的 `templates.yml` 文件中,假设您使用以下内容定义一个键: @@ -64,7 +68,7 @@ lang: zh_CN ``` resolution: type: str - filter_by: alphanumeric + filter_by: alphanumeric ``` 在 `tk-hiero-export` 的 `project.yml` 设置中,有以下设置: @@ -143,14 +147,16 @@ class HieroResolveCustomStrings(Hook): hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov" ``` - ### {% include product %} 任务 + 注册的新任务类型有两个。 ##### {% include product %} 转码图像 + 这是标准 Hiero 转码任务的一个子类,它会在 {% include product %} 中将转码结果注册为发布。另外,还将选择性地在 {% include product %} 中创建一个版本。如果创建了版本,还会创建一个 QuickTime 影片,并将它上传为审片室媒体。 ##### {% include product %} Nuke 项目文件 + 这是标准 Hiero Nuke 脚本导出器的一个子类,它会在 {% include product %} 中将生成的 Nuke 脚本注册为与镜头链接的已发布文件。这些设置让您可指定导出时在文件中包含哪些支持 Toolkit 的写入节点。 ![nuke_project_file_settings](../images/apps/hiero-nuke_project_file_settings.png) @@ -168,14 +174,16 @@ class HieroResolveCustomStrings(Hook): ![查找器](../images/apps/hiero-finder.png) ### {% include product %} 中的场和镜头更新 -应用将使用 Hiero 镜头序列的名称作为镜头序列名称,并且会在镜头中填入它们的剪辑镜头信息(剪辑镜头顺序、剪辑序列开头入点、剪辑镜头入点、剪辑镜头出点、剪辑序列结尾出点、剪辑镜头时长和剪辑序列时长)。 此外,如果选择了构成镜头的镜头序列或内容项中的某些帧作为海报帧,还会上传它们作为镜头的缩略图。 + +应用将使用 Hiero 镜头序列的名称作为镜头序列名称,并且会在镜头中填入它们的剪辑镜头信息(剪辑镜头顺序、剪辑序列开头入点、剪辑镜头入点、剪辑镜头出点、剪辑序列结尾出点、剪辑镜头时长和剪辑序列时长)。 此外,如果选择了构成镜头的镜头序列或内容项中的某些帧作为海报帧,还会上传它们作为镜头的缩略图。 如果您的工作流使用不同于**“镜头序列”(Sequence)**的其他实体作为镜头的父对象(比如**“集”(Episode)**),可以改写 `hook_get_shot` 挂钩中的 `get_shot_parent` 方法。 默认的执行会创建(如果有必要)并返回一个**“镜头序列”(Sequence)**实体。 ### 剪辑镜头数据结构支持 + 如果您的 {% include product %} 站点支持剪辑镜头数据结构(v7.0.0 或更高版本),此应用会自动在 {% include product %} 中生成一个具有对应**“剪辑镜头项”(CutItem)**的**“剪辑镜头”(Cut)**。**“剪辑镜头”(Cut)**实体对应 Hiero 镜头序列,**“剪辑镜头项”(CutItem)**实体对应镜头序列中的项。 **“剪辑镜头”(Cut)**实体将链接到 `hook_get_shot` 挂钩中的 `get_shot_parent` 方法返回的父实体(默认为**“镜头序列”(Sequence)**)。 **“剪辑镜头项”(CutItem)**将与一个**“镜头”(Shot)**实体关联,并链接到导出期间创建的可审看的**“版本”(Version)**实体。 导出后,将可以在 {% include product %} 的**“媒体”(Media)**选项卡和 **RV** 中播放该**“剪辑镜头”(Cut)**。 -所有与**“剪辑镜头”(Cut)**和**“剪辑镜头项”(CutItem)**实体关联的元数据均从 Hiero 推算得出,但“Cut Type”**字段除外,此字段可在导出用户界面中指定。 +所有与**“剪辑镜头”(Cut)**和**“剪辑镜头项”(CutItem)**实体关联的元数据均从 Hiero 推算得出,但“Cut Type”\*\*字段除外,此字段可在导出用户界面中指定。 ![cut_type](../images/apps/hiero-cut_type.png) @@ -186,4 +194,5 @@ class HieroResolveCustomStrings(Hook): 此外,剪辑镜头数据结构并不处理重定时的视频片段。导出重定时的视频片段时,会记录一条调试警告消息。 ### 交替镜头层次结构 + 对于不采用标准“镜头序列 > 镜头”层次结构、可能会使用“集”和/或“场景”的工作室,有一个 `hiero_get_shot` 挂钩可用来配置应用,使其支持您的工作室当前使用的任何镜头层次结构。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md index 4e3475495..cc30b7720 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md @@ -14,11 +14,18 @@ lang: zh_CN 通常,在配置此应用时,要通过向 {% include product %} Nuke 插件配置中添加以下内容,将它添加到 Hiero 中的时间线和电子表格菜单: ```yaml - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: "Open in {% include product %}", requires_selection: true} +timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } +spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: "Open in {% include product %}", + requires_selection: true, + } ``` - - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md index 0018cf6f0..c3b4f6481 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md @@ -56,4 +56,4 @@ Toolkit 的 Mantra 节点提供为一个环境配置指定多个输出配置文 output_extra_plane_template: houdini_shot_local_extra_plane -您可以使用输出配置文件通过 `color` 字段改变节点的外观,并可通过提供与 `settings` 字段中的参数匹配的键/值对,调整底层 Alembic 节点上的单个参数。最后,`output_*_template` 字段控制 Mantra 渲染器写入磁盘的文件的输出路径。 \ No newline at end of file +您可以使用输出配置文件通过 `color` 字段改变节点的外观,并可通过提供与 `settings` 字段中的参数匹配的键/值对,调整底层 Alembic 节点上的单个参数。最后,`output_*_template` 字段控制 Mantra 渲染器写入磁盘的文件的输出路径。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md index d14fb6efa..2a0126460 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md @@ -6,4 +6,3 @@ lang: zh_CN --- # Mari 项目管理器 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md index 96c026a4c..62dfa5085 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md @@ -12,8 +12,8 @@ lang: zh_CN ![屏幕截图](../images/apps/multi-about-menu.png) ## 重新加载所有应用 -此应用提供一个方便的按钮,用来重新加载整个环境。当您在开发过程中想要试一下所做的某些代码更改时,此按钮可以派上用场。您不需要重新启动 Maya 或 Nuke,只要点击重新加载按钮即可! +此应用提供一个方便的按钮,用来重新加载整个环境。当您在开发过程中想要试一下所做的某些代码更改时,此按钮可以派上用场。您不需要重新启动 Maya 或 Nuke,只要点击重新加载按钮即可! 除了重新加载功能,此应用还显示当前工作区及当前加载的所有应用的细分。 @@ -31,9 +31,8 @@ lang: zh_CN 此视图显示当前正在运行的所有应用,以及它们的版本和说明。双击一个应用将启动该应用的文档页。 - ## 当前环境 ![屏幕截图](../images/apps/multi-about-about3.png) -此视图显示当前加载的环境文件和插件。这些信息对于调试很有用。 \ No newline at end of file +此视图显示当前加载的环境文件和插件。这些信息对于调试很有用。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md index ea2740a4a..2c4070d38 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md @@ -128,7 +128,6 @@ for item in breakdown_items: path = item["template"].apply_fields(item["fields"]) ``` - ### 计算内容项的最高版本 ``` @@ -139,7 +138,6 @@ highest_version = app_object.compute_highest_version(template, fields) 这将执行磁盘扫描,以确定最高版本。此方法会返回在磁盘上找到的最高版本号。请参见下面的用法示例了解更多详细信息。 - ### 更新场景的内容项 ``` @@ -150,9 +148,6 @@ app_object.update_item(node_type, node_name, template, fields) 这样做类似于在细分用户界面中运行更新。实际的更新调用将分派给处理 DCC 特定逻辑的挂钩。请参见下面的用法示例了解更多详细信息。 - - - ### 细分 API 示例 下面是一个示例,说明了如何检索场景细分并更新所有未使用最新版本的内容项。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md index 38d94eb22..b3f649d65 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md @@ -19,20 +19,20 @@ lang: zh_CN 目前支持的应用程序和插件包括: -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame +- 3DSMax +- Hiero +- Maya +- MotionBuilder +- Nuke +- Photoshop +- Mari +- Houdini +- Softimage +- Flame ### 启动时使用命令行参数 -许多应用程序具有可调用的命令行选项,用于选择不同的应用程序版本(例如 Nuke 与 NukeX)或指定其他各种用法。 启动器应用针对每个操作系统有一个可进行这种配置的“args”设置。 例如,如果您在此设置中加入“--nukex”,启动器会将它添加到命令行启动,并运行 NukeX 而不是常规的 Nuke: +许多应用程序具有可调用的命令行选项,用于选择不同的应用程序版本(例如 Nuke 与 NukeX)或指定其他各种用法。 启动器应用针对每个操作系统有一个可进行这种配置的“args”设置。 例如,如果您在此设置中加入“--nukex”,启动器会将它添加到命令行启动,并运行 NukeX 而不是常规的 Nuke: ---FOLD--- 启动 NukeX 示例 @@ -43,15 +43,16 @@ launch_nuke: extra: {} hook_app_launch: default hook_before_app_launch: default - linux_args: '--nukex' - linux_path: '@nuke_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.15} - mac_args: '--nukex' - mac_path: '@nuke_mac' + linux_args: "--nukex" + linux_path: "@nuke_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.2.15 } + mac_args: "--nukex" + mac_path: "@nuke_mac" menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' + windows_args: "--nukex" + windows_path: "@nuke_windows" ``` + ---FOLD--- ### 设置环境变量并自动化启动时的行为 @@ -66,7 +67,7 @@ launch_nuke: ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # Example to show how to set env vars on Maya launch @@ -79,6 +80,7 @@ def execute(self, **kwargs): # with $PYTHONPATH if already defined in your pipeline os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" ``` + ---FOLD--- 您还可以使用“before_app_launch”自动化其他行为,包括 {% include product %} 更新。例如,您可以按如下所示,配置启动器应用在每次启动时(当然前提是从任务进行启动)更新任务状态(在本例中更新为“正在进行”): @@ -89,7 +91,7 @@ def execute(self, **kwargs): ```python def execute(self, **kwargs): """ - The execute functon of the hook will be called to start the required application + The execute functon of the hook will be called to start the required application """ # If there is a Task in the context, set its status to 'ip' @@ -101,6 +103,7 @@ def execute(self, **kwargs): } self.parent.shotgun.update("Task", task_id, data) ``` + ---FOLD--- 您可以想象到,这其中有许多可能性,而启动器应用的目的在于提供工作流所需的灵活性。 @@ -166,7 +169,7 @@ Photoshop 引导时,会发生以下情况: #### 额外配置 -如果您想使用此应用启动 Photoshop,需要在“extra”__部分提供四个配置值。下面是需要根据您的系统和安装位置做出调整的配置和合理的默认值: +如果您想使用此应用启动 Photoshop,需要在“extra”\_\_部分提供四个配置值。下面是需要根据您的系统和安装位置做出调整的配置和合理的默认值: ```yaml mac_python_path: "/usr/bin/python" diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md index c502cb662..d45586982 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md @@ -198,15 +198,17 @@ action_mappings: 在应用实例上可以使用以下方法。 ### open_publish() -显示“打开文件”风格的加载器版本,让用户可以选择发布。 然后将返回选定的发布。 在此模式下运行时,不允许使用为应用配置的普通动作。 + +显示“打开文件”风格的加载器版本,让用户可以选择发布。 然后将返回选定的发布。 在此模式下运行时,不允许使用为应用配置的普通动作。 app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) **参数和返回值** -* `str` **title** - 打开发布对话框中显示的标题。 -* `str` **action** - 用于“打开”(Open)按钮的动作名称。 -* `list` **publish_types** - 一个发布类型列表,用于过滤可用的发布列表。 如果此值为空/None,将显示所有发布。 -* **返回值:**用户选择的 {% include product %} 实体词典的列表。 + +- `str` **title** - 打开发布对话框中显示的标题。 +- `str` **action** - 用于“打开”(Open)按钮的动作名称。 +- `list` **publish_types** - 一个发布类型列表,用于过滤可用的发布列表。 如果此值为空/None,将显示所有发布。 +- **返回值:**用户选择的 {% include product %} 实体词典的列表。 **示例** diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md index ab06c11d4..835b6122b 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md @@ -45,16 +45,16 @@ Python 控制台会显示一个或多个选项卡,每个选项卡包含一个 ### 输出 -* **清除** - 清除输出浏览器的内容。 -* **回显** - 在输出浏览器中开启/关闭回显执行命令的功能。 +- **清除** - 清除输出浏览器的内容。 +- **回显** - 在输出浏览器中开启/关闭回显执行命令的功能。 ### 编辑器 -* **执行** - 执行编辑器的内容 -* **保存** - 将编辑器的当前内容保存到文件。 -* **打开** - 在编辑器中打开文件。 -* **清除** - 清除编辑器的内容。 -* **行号** - 显示/隐藏当前选项卡的行号 +- **执行** - 执行编辑器的内容 +- **保存** - 将编辑器的当前内容保存到文件。 +- **打开** - 在编辑器中打开文件。 +- **清除** - 清除编辑器的内容。 +- **行号** - 显示/隐藏当前选项卡的行号 ## 全局参数 @@ -62,10 +62,10 @@ Python 控制台会显示一个或多个选项卡,每个选项卡包含一个 控制台中预先定义了一些 {% include product %}/Toolkit 全局参数,这与 [{% include product %} Shell 插件](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039898)中提供的参数类似。 -* Tk API 句柄通过 `tk` 变量提供 -* {% include product %} API 句柄通过 `shotgun` 变量提供 -* 当前上下文存储在 `context` 变量中 -* Shell 插件可通过 `engine` 变量访问 +- Tk API 句柄通过 `tk` 变量提供 +- {% include product %} API 句柄通过 `shotgun` 变量提供 +- 当前上下文存储在 `context` 变量中 +- Shell 插件可通过 `engine` 变量访问 ## 外部源 @@ -75,13 +75,13 @@ Python 控制台会显示一个或多个选项卡,每个选项卡包含一个 ## 热键 -* 使用 `Ctrl + Enter` 执行选定项 -* 使用 `Ctrl + T` 创建新选项卡 -* 使用 `Ctrl + Shift + [` 或 `Ctrl + Shift + ]` 在选项卡之间导航 -* 使用 `Ctrl + Wheel` 调整输入/输出的字体大小 +- 使用 `Ctrl + Enter` 执行选定项 +- 使用 `Ctrl + T` 创建新选项卡 +- 使用 `Ctrl + Shift + [` 或 `Ctrl + Shift + ]` 在选项卡之间导航 +- 使用 `Ctrl + Wheel` 调整输入/输出的字体大小 **注意:**这些热键并非适用于所有 DCC。 ## 其他说明 -* 在某些早期版本的 DCC 中,Python 控制台如果在关闭会话时处于打开状态,可能会导致崩溃。我们认为这可能是某些早期版本的 PySide 的一个错误。较新版本的 DCC 捆绑了更新版本的 PySide,退出时不会发生崩溃。如果您在使用最新 DCC 版本时遇到此问题,请[提交工单](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),以便我们可以进一步调查。 \ No newline at end of file +- 在某些早期版本的 DCC 中,Python 控制台如果在关闭会话时处于打开状态,可能会导致崩溃。我们认为这可能是某些早期版本的 PySide 的一个错误。较新版本的 DCC 捆绑了更新版本的 PySide,退出时不会发生崩溃。如果您在使用最新 DCC 版本时遇到此问题,请[提交工单](https://support.shotgunsoftware.com/hc/zh-cn/requests/new),以便我们可以进一步调查。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md index 834a4bb4c..ee5374043 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md @@ -47,16 +47,16 @@ if review_submission_app: 您需要传递给 `render_and_submit_version` 的参数如下所示: -* `template`:一个模板,用于定义要发布的文件的所在位置 -* `fields`:用来填写模板的字段 -* `first_frame`:要处理的图像序列的第一帧 -* `last_frame`:要处理的图像序列的最后一帧 -* `sg_publishes`:要与版本链接的 {% include product %} 已发布文件对象的列表。 -* `sg_task`:要与版本链接的 {% include product %} 任务链接词典。 -* `comment`:要添加到版本说明中的文字。 -* `thumbnail_path`:影片未上传至 {% include product %} 时为版本使用的缩略图的路径(在配置中设置)。 -* `progress_cb`:一个用于报告进度的回调。 此值的格式应为:`callback(percent, message)` -* `color_space`:输入帧所在的颜色空间。 在 Nuke 中,这是写入节点的颜色空间按钮的其中一个枚举值。 +- `template`:一个模板,用于定义要发布的文件的所在位置 +- `fields`:用来填写模板的字段 +- `first_frame`:要处理的图像序列的第一帧 +- `last_frame`:要处理的图像序列的最后一帧 +- `sg_publishes`:要与版本链接的 {% include product %} 已发布文件对象的列表。 +- `sg_task`:要与版本链接的 {% include product %} 任务链接词典。 +- `comment`:要添加到版本说明中的文字。 +- `thumbnail_path`:影片未上传至 {% include product %} 时为版本使用的缩略图的路径(在配置中设置)。 +- `progress_cb`:一个用于报告进度的回调。 此值的格式应为:`callback(percent, message)` +- `color_space`:输入帧所在的颜色空间。 在 Nuke 中,这是写入节点的颜色空间按钮的其中一个枚举值。 ### 作为菜单项 @@ -65,17 +65,18 @@ if review_submission_app: 此模式创建当前视口的快照,并将其作为版本草稿发送到 {% include product %} Create。然后,用户可以通过添加标注、文字或比较注释,在 {% include product %} Create 内扩展审核提交。 要将此功能添加到上下文,您需要: -* 设置 `display_name` 字段,使其显示在菜单项中。 -* 将 `render_media_hook` 字段设置为挂钩,告知如何在 DCC 中渲染媒体(tk-photoshopcc 和 tk-maya 具有默认执行) -* 将 `submitter_hook` 字段设置为 `{self}/submitter_create.py` + +- 设置 `display_name` 字段,使其显示在菜单项中。 +- 将 `render_media_hook` 字段设置为挂钩,告知如何在 DCC 中渲染媒体(tk-photoshopcc 和 tk-maya 具有默认执行) +- 将 `submitter_hook` 字段设置为 `{self}/submitter_create.py` 如下所示: ```yaml tk-multi-reviewsubmission: display_name: Send for review - render_media_hook: '{self}/render_media.py:{self}/{engine_name}/render_media.py' - submitter_hook: '{self}/submitter_create.py' + render_media_hook: "{self}/render_media.py:{self}/{engine_name}/render_media.py" + submitter_hook: "{self}/submitter_create.py" location: type: app_store name: tk-multi-reviewsubmission diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md index da93712df..a1c6d4d94 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md @@ -35,6 +35,7 @@ tk-multi-setframerange_handles: sg_out_frame_field: sg_handle_out location: "@apps.tk-multi-setframerange.location" ``` + 这些内容应该在 {% include product %} 菜单中显示为单独的选项: ![多个实例](../images/apps/multi-setframerange-multiple_instances.png) @@ -45,4 +46,4 @@ tk-multi-setframerange_handles: 在帧操作挂钩中处理用于获取当前场景帧范围或设置帧范围的软件特定逻辑。如果想要添加对新插件的支持或更改行为的实现方式,可以通过设置 `hook_frame_operation` 应用属性并实施自己的获取和设置逻辑来接管帧操作挂钩。 -注意:这是 `v0.4.0` 版应用的新功能。 \ No newline at end of file +注意:这是 `v0.4.0` 版应用的新功能。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md index 2f76cbf4a..f2cc4cb25 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md @@ -29,7 +29,6 @@ lang: zh_CN - 您可以定义回退机制,在某些值未设置的情况下进行回退。对于 {% include product %} 版本而言,`artist` 字段优先于 `created_by` 字段,这是为了支持由制片代表艺术家提交版本的工作流。在这种情况下,版本将由制作人员创建,但 `artist` 字段会设置为美工人员。不过,情况并非总是如此。有时,在由美工人员自己提交工作的工作流中,artist 字段会留空。因此,在显示版本时,能够首先检查 `artist` 字段是一项有用的功能,如果发现此字段未设置,则回退到 `created_by` 字段。我们使用 `{field1|field2}` 语法实现这个机制,例如:`Created By: {artist|created_by}`。您可以将此语法与可选字段结合使用,例如 `{[Created By: ]artist|created_by}`。 - 此挂钩包含以下方法: **控制列表中显示的列表项** @@ -67,21 +66,21 @@ lang: zh_CN - 一个让用户可指派自己执行给定任务的动作 - 一个将 {% include product %} 发布加载到 Maya 中作为 Maya 参考的动作。 -动作的实际负载在“动作挂钩”中定义。**定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: +动作的实际负载在“动作挂钩”中定义。\*\*定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: ```yaml action_mappings: PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} + - actions: [reference, import] + filters: { published_file_type: Maya Scene } + - actions: [texture_node] + filters: { published_file_type: Rendered Image } Task: - - actions: [assign_task] - filters: {} + - actions: [assign_task] + filters: {} Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 在上面的示例中,我们使用了 `reference`、`import`、`texture_node`、`assign_task` 和 `play_in_rv` 动作。然后,我们将这些动作映射到各种 {% include product %} 对象和条件。例如,我们让所有 Maya 场景类型的发布都显示 `import` 动作。 @@ -95,7 +94,7 @@ action_mappings: 面板使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在默认配置设置中查看,语法类似如下: ```yaml -actions_hook: '{self}/tk-maya_actions.py' +actions_hook: "{self}/tk-maya_actions.py" ``` `{self}` 关键字指示 Toolkit 在应用的 `hooks` 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 `{config}/panel/maya_actions.py`。这将指示 Toolkit 使用您的配置文件夹中称为 `hooks/panel/maya_actions.py` 的挂钩。 @@ -182,12 +181,11 @@ class MyActions(HookBaseClass): ```yaml action_mappings: PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} + - actions: [reference, import, my_new_action] + filters: { published_file_type: Maya Scene } Version: - - actions: [play_in_rv] - filters: {} + - actions: [play_in_rv] + filters: {} ``` 按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md index eb959c78b..3b99bc1d8 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md @@ -65,12 +65,12 @@ lang: zh_CN ```yaml maya_extension: - type: str - choices: - ma: Maya Ascii (.ma) - mb: Maya Binary (.mb) - default: ma - alias: extension + type: str + choices: + ma: Maya Ascii (.ma) + mb: Maya Binary (.mb) + default: ma + alias: extension ``` `maya_extension` 是令牌的名称。`choices` 是下拉列表中将会显示的文件类型的词典。键(`ma` 和 `mb`)是此模板令牌可以具有的值。值(`Maya Ascii (.ma)` 和 `Maya Binary (.mb)`) 是可供 Toolkit 应用程序使用的用户界面友好的说明。`alias` 是工作文件应用程序需要的提示。它将告诉应用程序此令牌是一个扩展名,应显示在下拉列表控件中。 @@ -79,8 +79,8 @@ maya_extension: ```yaml maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' + definition: "@shot_root/work/maya/{name}.v{version}.{maya_extension}" + root_name: "primary" ``` ## “Change Context”对话框 @@ -100,18 +100,18 @@ maya_shot_work: 以下示例定义两个选项卡,分别显示资产的任务和镜头的任务: ```yaml - - caption: Assets Tasks - entity_type: Task - step_filter_on: Asset - filters: +- caption: Assets Tasks + entity_type: Task + step_filter_on: Asset + filters: - [entity, type_is, Asset] - hierarchy: [entity.Asset.sg_asset_type, entity, step, content] - - caption: Shots Tasks - entity_type: Task - step_filter_on: Shot - filters: + hierarchy: [entity.Asset.sg_asset_type, entity, step, content] +- caption: Shots Tasks + entity_type: Task + step_filter_on: Shot + filters: - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] + hierarchy: [entity.Shot.sg_sequence, entity, step, content] ``` ![工序过滤器](../images/apps/multi-workfiles2-step_filter.png) @@ -119,13 +119,14 @@ maya_shot_work: ## 延迟查询 为了获得更好的性能,构建实体树可以分为两个工序查询: + - 第一个查询用于从 {% include product %} 检索记录并填充树的顶部。 - 第二个查询用于在用户展开树时检索子项。 在使用以下设置的情况下,将在启动应用时从 {% include product %} 检索资产和镜头。然后,在树视图中选择或展开特定资产或镜头时,将仅检索链接到此资产或镜头的任务。 ```yaml - entities: +entities: - caption: Assets entity_type: Asset hierarchy: [sg_asset_type, code] diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md index d4e0f0cc4..5f4428ef2 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md @@ -34,4 +34,3 @@ lang: zh_CN ## 自定义 审核提交的大多数方面都可以使用挂钩进行调整。可以在[此处](http://developer.shotgridsoftware.com/tk-nuke-quickreview)找到相关文档。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md index 75ad9e974..3c04c562f 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md @@ -7,7 +7,7 @@ lang: zh_CN # Nuke 写入节点 -Nuke 写入节点应用提供一个自定义的 {% include product %} 写入节点,让您可轻松设置标准化的图像渲染位置。您可以为每个环境配置它。 除了路径以外,配置还将决定要使用的渲染格式。 +Nuke 写入节点应用提供一个自定义的 {% include product %} 写入节点,让您可轻松设置标准化的图像渲染位置。您可以为每个环境配置它。 除了路径以外,配置还将决定要使用的渲染格式。 ## 一般用法 @@ -15,13 +15,13 @@ Nuke 写入节点应用提供一个自定义的 {% include product %} 写入节 ![写入节点](../images/apps/nuke-writenode-write_node_creation.png) -您不用输入路径,只需指定输出名称,Toolkit 便会自动计算路径的其余部分。您可以在用户界面中查看计算得到的路径,并可单击“Show in File System”**按钮打开磁盘上的位置。渲染内容的写入位置取决于 Toolkit 的配置。 +您不用输入路径,只需指定输出名称,Toolkit 便会自动计算路径的其余部分。您可以在用户界面中查看计算得到的路径,并可单击“Show in File System”\*\*按钮打开磁盘上的位置。渲染内容的写入位置取决于 Toolkit 的配置。 渲染内容将实施版本控制,版本号始终遵循当前的 Nuke 脚本版本,会在您使用多发布进行发布时自动递增。 ## 重置渲染路径 -写入节点会缓存当前路径,以便文件在 Toolkit 工作区外部打开时,路径仍然有效。 有时,这意味着路径可能会变得不同步和被“锁定”。 如果渲染路径被锁定,将无法发布使用此写入节点创建的渲染内容。 +写入节点会缓存当前路径,以便文件在 Toolkit 工作区外部打开时,路径仍然有效。 有时,这意味着路径可能会变得不同步和被“锁定”。 如果渲染路径被锁定,将无法发布使用此写入节点创建的渲染内容。 要重置渲染路径,请使用工作文件应用的“升级场景版本”命令升级场景的版本,或单独选择写入节点,然后在属性中单击**“Reset Path”**: @@ -45,7 +45,7 @@ Write { } ``` -上面的文本显示了您需要的参数名称和值各是什么。在本例中为 `datatype` 和 `compression`。接下来,转到环境配置(例如:`/path/to/pipeline/config/env/shot_step.yml`)并找到配置 `tk-nuke-writenode` 应用的部分。 在 `settings` 部分使用这两个参数添加另一个写入节点: +上面的文本显示了您需要的参数名称和值各是什么。在本例中为 `datatype` 和 `compression`。接下来,转到环境配置(例如:`/path/to/pipeline/config/env/shot_step.yml`)并找到配置 `tk-nuke-writenode` 应用的部分。 在 `settings` 部分使用这两个参数添加另一个写入节点: ```yaml tk-nuke-writenode: @@ -73,7 +73,7 @@ tk-nuke-writenode: ![添加新节点](../images/apps/nuke-writenode-write_node_add_new.png) -__注意:__请务必将任何新模板(例如 nuke_shot_render_mono_tif)添加到 `templates.yml` 文件中,该文件可在项目配置中找到 (`/config/core/templates.yml`)。 +**注意:**请务必将任何新模板(例如 nuke_shot_render_mono_tif)添加到 `templates.yml` 文件中,该文件可在项目配置中找到 (`/config/core/templates.yml`)。 下面是另一个示例,显示了如何添加一个以 0.5 的压缩率和 4:2:2 的子采样率输出 JPEG 的 {% include product %} 写入节点。此配置文件还使用了“promote_write_knobs”选项将 JPEG 质量旋钮提升到小控件的用户界面。这样,配置文件便可以设置图片质量的默认值,同时还能为用户提供滑块控件以自己更改该设置: @@ -86,7 +86,7 @@ tk-nuke-writenode: render_template: nuke_shot_render_jpeg proxy_publish_template: null proxy_render_template: null - settings: {_jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2"} + settings: { _jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2" } tank_type: Rendered Image tile_color: [] promote_write_knobs: [_jpeg_quality] @@ -266,7 +266,7 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* **返回值:**`list` - 在场景中找到的 Toolkit 写入节点的列表。 +- **返回值:**`list` - 在场景中找到的 Toolkit 写入节点的列表。 **示例** @@ -285,10 +285,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 节点名称。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 节点名称。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -305,10 +306,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 配置为此写入节点定义的配置文件名称。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 配置为此写入节点定义的配置文件名称。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -325,10 +327,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点的渲染路径。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 此节点的渲染路径。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -345,10 +348,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`list` - 此写入节点渲染的图像文件的列表。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`list` - 此写入节点渲染的图像文件的列表。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -365,10 +369,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的渲染模板。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`template` - 此节点配置使用的渲染模板。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -385,10 +390,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的发布模板。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`template` - 此节点配置使用的发布模板。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -405,10 +411,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点的代理渲染路径。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 此节点的代理渲染路径。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -425,10 +432,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`list` - 此写入节点渲染的代理图像文件的列表。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`list` - 此写入节点渲染的代理图像文件的列表。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -447,10 +455,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的代理渲染模板。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`template` - 此节点配置使用的代理渲染模板。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -469,10 +478,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的代理发布模板。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`template` - 此节点配置使用的代理发布模板。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -489,10 +499,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点配置使用的发布文件类型。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 此节点配置使用的发布文件类型。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -503,16 +514,17 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 ### generate_node_thumbnail() -为指定的写入节点生成缩略图。 此方法会将镜头序列中间的一帧渲染到一个临时文件 (.png),最大尺寸为 800x800 像素。 当不再需要此文件时,调用程序负责清理此文件。 +为指定的写入节点生成缩略图。 此方法会将镜头序列中间的一帧渲染到一个临时文件 (.png),最大尺寸为 800x800 像素。 当不再需要此文件时,调用程序负责清理此文件。 `string` generate_node_thumbnail(`node` 节点) **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 渲染的缩略图图像在磁盘上的路径。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`string` - 渲染的缩略图图像在磁盘上的路径。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -529,10 +541,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`None` - 不返回任何值。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`None` - 不返回任何值。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -549,10 +562,11 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 **参数和返回值** -* `node` **node** - 要查询的写入节点。 -* **返回值:**`bool` - 渲染路径锁定时返回 True,否则返回 False。 +- `node` **node** - 要查询的写入节点。 +- **返回值:**`bool` - 渲染路径锁定时返回 True,否则返回 False。 **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -563,11 +577,12 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 ### convert_to_write_nodes() -将在当前脚本中找到的所有 {% include product %} 写入节点转换为常规 Nuke 写入节点。其他 Toolkit 信息将存储在名为“tk_*”的用户旋钮上。 +将在当前脚本中找到的所有 {% include product %} 写入节点转换为常规 Nuke 写入节点。其他 Toolkit 信息将存储在名为“tk\_\*”的用户旋钮上。 `None` convert_to_write_nodes() **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -582,6 +597,7 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 `None` convert_from_write_nodes() **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() @@ -596,6 +612,7 @@ Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这 `None` process_placeholder_nodes() **示例** + ```python >>> import sgtk >>> eng = sgtk.platform.current_engine() diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md index 3aa634ba9..4095f3e98 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md @@ -12,10 +12,9 @@ lang: zh_CN 此应用将 Sgtk 核心 API 中用于创建文件系统的 API 方法与 {% include product %} 连接在一起。这样就能轻而易举地创建文件夹;只需选择一组镜头或资产,然后单击“Create Folders”动作即可。 ## 工作方式 + 只需选择一个或多个任务、镜头或其他实体(取决于配置)。然后,从动作菜单中选择“Ceate Folders”。处理完成后,您将得到一份有关文件夹创建数量的报告。 ![{% include product %} 创建文件夹 1](../images/apps/shotgun-folders-create_folders_1.png) ![{% include product %} 创建文件夹 2](../images/apps/shotgun-folders-create_folders_2.png) - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md index ec093b378..a8785d10e 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md @@ -10,10 +10,9 @@ lang: zh_CN 启动文件夹应用是一个 {% include product %} 实用工具,它让您可以从 {% include product %} 跳转到文件系统中。 ## 工作方式 + 启动文件夹应用让您可以从 {% include product %} 跳转到文件系统中。您可以为 {% include product %} 实体类型(如镜头、资产和场)注册该应用。激活后,它将显示在“动作”(Action)菜单中: ![启动文件夹显示在文件系统中](../images/apps/shotgun-launchfoldershow_in_fs.png) 您可以在 {% include product %} 中选择一个或多个条目,当单击该菜单动作时,将启动一个标准文件浏览器(在 Windows 上将启动资源管理器,在 Mac 上将启动 Finder,等等)。 - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md index d2843911d..0f43e3061 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md @@ -11,4 +11,4 @@ lang: zh_CN ![工作 FS](../images/apps/shotgun-launchpublish-open_assoc.png) -此应用让您可轻松为不同文件配置不同的应用启动顺序 -- 所有这些都在一个挂钩内完成。它还会将图像序列发送至查看器(如 RV)。挂钩无法识别的文件将发送至操作系统级别的应用。 \ No newline at end of file +此应用让您可轻松为不同文件配置不同的应用启动顺序 -- 所有这些都在一个挂钩内完成。它还会将图像序列发送至查看器(如 RV)。挂钩无法识别的文件将发送至操作系统级别的应用。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md index b2f2634cc..cb3b9c1a3 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md @@ -13,8 +13,6 @@ Toolkit 工作流的核心是环境配置。在 Toolkit 工作流配置中,环 {% include info title="注意" content="本文档提供了有关环境配置文件的参考,而[有关“编辑工作流配置”的 Toolkit 基础知识手册](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)提供了有关编辑配置设置的分步示例。" %} - - ## 什么是环境? {% include product %} Toolkit 平台为常用内容创建软件提供了一组完全可自定义的集成,您可以通过其构建工作室工作流。在项目的配置中,您可以指定哪些软件包具有集成,在每个软件包中哪些特定 Toolkit 应用可用,以及针对每个应用所做的选择 - 构建符合工作室需求的美工人员工作流。 @@ -73,7 +71,7 @@ bundle_name: setting1: value setting2: value complex_setting: - sub_setting1: value + sub_setting1: value Sub_setting2: value location: type: descriptor_type @@ -93,9 +91,9 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` ### 插件块 @@ -106,16 +104,15 @@ engines: `location` 是每个包都需要的特殊设置。`apps` 设置是为插件定义的所有应用列表,每个应用都有自己的设置。在此示例中,只为插件定义了一个应用:`tk-multi-workfiles2`。 - ### 位置描述符 每个 Toolkit 包都有一个 `location` 设置,我们将其称为包的*描述符*。描述符告知 Toolkit 在何处查找给定包,以及根据其类型,是直接访问它还是在本地缓存它。Toolkit 包可以来自多个位置,例如,{% include product %} App Store、git 库、磁盘上的路径或上传到 {% include product %} 站点的 zip 文件。其中每个位置都有一个对应的描述符类型,相应类型具有特定设置。下面是上述示例中 `tk-maya` 插件的描述符: ```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 +location: + type: app_store + name: tk-maya + version: v0.9.4 ``` 这是类型为 `app_store` 的描述符,此描述符告知 Toolkit 从 {% include product %} App Store 获取给定包。类型为 `app_store` 的描述符具有设置 `name` 和 `version`。 @@ -123,9 +120,9 @@ engines: 相反,如果您正在开发自定义包 - 即您正在为工作室中的一个特定工作流编写一个 Toolkit 应用,您可能希望直接从磁盘上的路径获取它。在此示例中,将使用类型为 `dev` 的描述符,它可能如下所示: ```yaml - location: - type: dev - path: /path/to/app +location: + type: dev + path: /path/to/app ``` `dev` 描述符的设置与 `app_store` 描述符的设置不同。虽然它可以采用其他设置,但可以直接为其设置指向应用所在磁盘位置的 `path` 设置。 @@ -173,27 +170,27 @@ engines: name: tk-multi-workfiles2 version: v0.11.8 location: - type: app_store - name: tk-maya - version: v0.9.4 + type: app_store + name: tk-maya + version: v0.9.4 ``` 现在要注意几个重要事项: -* 默认配置按字母顺序列出包,此示例遵循此惯例。 -* 文件会开始变长,即使尚未添加任何配置设置也是如此。 -* 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 +- 默认配置按字母顺序列出包,此示例遵循此惯例。 +- 文件会开始变长,即使尚未添加任何配置设置也是如此。 +- 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 -为了解决最后两个问题,Toolkit 支持 *includes*。 +为了解决最后两个问题,Toolkit 支持 _includes_。 ### includes -通过 *includes*,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 +通过 _includes_,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 includes 包括两个部分: -* `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 -* 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 +- `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 +- 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 为了充实上述示例,可以使用一个文件存放所有插件的位置描述符。我们将该文件放在 `includes` 子文件夹中,并将其命名为 `engine_locations.yml`。 @@ -211,8 +208,6 @@ engines.tk-nuke.location: type: app_store name: tk-nuke version: v0.11.5 - -... ``` 此文件可以用作所有插件位置的单个源,而且所有环境配置都可以引用它。使用此包含文件后,我们的示例现在如下所示: @@ -271,7 +266,6 @@ apps.tk-multi-workfiles2.location: version: v0.11.8 ``` - `config/env/project.yml`: ```yaml @@ -295,7 +289,6 @@ engines: {% include info title="注意" content="默认配置使用一个第二层嵌套(未在此处说明)。还具有描述符以外的设置的每个应用或插件在 `includes/settings` 中都有一个设置文件(如 `includes/settings/tk-maya.yml` 和 `includes/settings/tk-multi-workfiles2.yml`)。插件设置文件包含应用设置文件中的应用设置,环境配置文件包含插件设置文件中的插件设置。有关默认配置结构的详细信息,请参见[其自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)。有关修改配置设置的详细介绍,请参见[有关“编辑配置设置”的 Toolkit 基础知识手册](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)。" %} - ## 简约配置 每个 Toolkit 包都有一组可用的配置设置,每个设置都有默认值。Toolkit 允许使用*简约*配置:如果未在环境配置文件(和/或其包含的文件)中明确指定配置设置,则将使用包中的默认值。 @@ -308,8 +301,8 @@ engines: 使用简约配置时,难以直接通过查看配置文件确定哪些配置设置可用于应用。要确定应用有哪些配置设置可用,可以采用两种方式: -* **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)。[应用和插件页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)列出了所有应用和插件的文档页面。 -* **清单文件:**每个 Toolkit 包的根目录中都包含一个名为 `info.yml` 的文件。我们将此文件称为包的*清单文件*,此文件定义相应包的所有可用配置设置,每个设置都有说明和默认值。您可以在自己的包缓存中查找清单文件(例如工作流配置中的 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`),也可以在 Github 中查找清单文件([例如,此处是 Workfiles 的清单文件](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))。 +- **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)。[应用和插件页面](https://support.shotgunsoftware.com/hc/zh-cn/articles/219033088)列出了所有应用和插件的文档页面。 +- **清单文件:**每个 Toolkit 包的根目录中都包含一个名为 `info.yml` 的文件。我们将此文件称为包的*清单文件*,此文件定义相应包的所有可用配置设置,每个设置都有说明和默认值。您可以在自己的包缓存中查找清单文件(例如工作流配置中的 `install/app_store/tk-multi-workfiles2/v0.11.8/info.yml`),也可以在 Github 中查找清单文件([例如,此处是 Workfiles 的清单文件](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/master/info.yml))。 ## 修改配置设置 @@ -339,13 +332,12 @@ engines: 请注意,如果 `tk-multi-workfiles2` 的设置来自一个包含的文件,我们将在该文件中进行此更改。 - ## 其他资源 -* [Toolkit 基础知识手册:编辑工作流配置](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) -* [Toolkit 基础知识手册:添加应用](../../guides/pipeline-integrations/getting-started/installing_app.md) -* [动画工作流教程](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) -* [描述符参考文档](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [网络讲座:Toolkit 管理](https://youtu.be/7qZfy7KXXX0) -* [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) -* [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) +- [Toolkit 基础知识手册:编辑工作流配置](../../guides/pipeline-integrations/getting-started/editing_app_setting.md) +- [Toolkit 基础知识手册:添加应用](../../guides/pipeline-integrations/getting-started/installing_app.md) +- [动画工作流教程](../../guides/pipeline-integrations/workflows/pipeline-tutorial.md) +- [描述符参考文档](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) +- [网络讲座:Toolkit 管理](https://youtu.be/7qZfy7KXXX0) +- [文件系统配置参考](https://support.shotgunsoftware.com/hc/zh-cn/articles/219039868) +- [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md index 6ea23a6a9..a7ffa0219 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md @@ -121,10 +121,10 @@ lang: zh_CN ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 设置的值是一个词典列表,每个词典指定了配置中安装的一个应用提供的一个注册命令。`app_instance` 键标识了一个特定的已安装应用,`name` 键则与该应用注册的命令的显示名称一致。在上面的示例中,您可以看到四个收藏的命令:`tk-multi-workfiles2` 应用的“File Open”和“File Save”对话框,以及 Toolkit 的“发布”(Publish)和“Snapshot”标准对话框。这四个命令现在将显示在收藏工具架中。 @@ -142,7 +142,6 @@ shelf_favorites: 注意:其他环境变量存在于 Adobe 框架中。有关详细信息,请参见[开发人员文档](https://developer.shotgridsoftware.com/tk-framework-adobe/)。 - ## 上下文字段显示挂钩 插件随附了一个挂钩,用来控制面板的**上下文标题**部分显示的字段。我们可以改写挂钩中的两个方法来自定义显示的内容。 @@ -164,5 +163,3 @@ shelf_favorites: ## After Effects API 有关 After Effects API 的详细信息,请参见[开发人员文档](https://developer.shotgridsoftware.com/tk-aftereffects)。 - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-alias.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-alias.md index 4a5da343e..500d08475 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-alias.md @@ -17,9 +17,9 @@ lang: zh_CN ## Alias 项目管理 -{% include product %} Alias 插件在每次启动时,都会将 Alias 项目设置为指向此插件的设置中定义的位置。这意味着,当您打开新文件时,项目也可能会发生变化。设置ShotGrid Alias 项目的详细信息,可以使用模板系统,在配置文件中配置。 +{% include product %} Alias 插件在每次启动时,都会将 Alias 项目设置为指向此插件的设置中定义的位置。这意味着,当您打开新文件时,项目也可能会发生变化。设置 ShotGrid Alias 项目的详细信息,可以使用模板系统,在配置文件中配置。 -*** +--- # 使用 tk-alias @@ -29,7 +29,6 @@ lang: zh_CN ![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunOtherApps.png) - ### 文件打开和保存 使用“我的任务”(My Tasks)和“零部件”(Assets)选项卡可以查看您的所有已分配任务,并浏览零部件。在右侧,使用这些选项卡可以查看所有文件、与左侧选定内容关联的工作文件或已发布文件。 @@ -38,21 +37,18 @@ lang: zh_CN ![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunFileSave.png) - ### 快照 打开“快照”(Snapshot)对话框以创建当前场景的快速备份。 ![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunSnapshot.png) - ### 发布 打开“发布”(Publish)对话框以将文件发布到 {% include product %},然后供下游艺术家使用。有关详细信息,请参见[在 Alias 中发布](https://github.com/shotgunsoftware/tk-alias/wiki/Publishing)。 ![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunPublish.png) - ### 加载器 打开内容加载器应用,从而可以将数据加载到 Alias 中。有关详细信息,请参见[在 Alias 中加载](https://github.com/shotgunsoftware/tk-alias/wiki/Loading) @@ -64,4 +60,3 @@ lang: zh_CN 打开“细分”(Breakdown)对话框,其中显示已参考(WREF 参考)内容的列表,以及场景中过时的内容。选择一个或多个项目,然后单击“更新选定项”(Update Selected)以切换并使用最新版本的内容。 有关详细信息,请参见 [Alias 中的场景细分](https://github.com/shotgunsoftware/tk-alias/wiki/Scene-Breakdown) ![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunBreakdown.png) - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-desktop.md index 444a3050a..8ddf7982b 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-desktop.md @@ -13,13 +13,13 @@ tk-desktop 插件是一个让您易于运行 Toolkit 应用的应用程序。它 ![进程](../images/engines/processes.png) -当您启动 Desktop 应用程序时,它会为站点配置启动 tk-desktop 插件。 此配置的管理通常是自动的,但是我们也可以禁用自动管理,自己控制环境中的一切。 +当您启动 Desktop 应用程序时,它会为站点配置启动 tk-desktop 插件。 此配置的管理通常是自动的,但是我们也可以禁用自动管理,自己控制环境中的一切。 -Toolkit 的一个基本原则是,各个项目可以完全彼此隔离。 通常,这是为了确保一个项目的更改不会对另一个项目造成不利影响(临近交付时可能出现这种情况)。为了提供这种项目隔离机制,Desktop 插件确保无论您何时使用某个特定项目的命令,都将在专为这个项目初始化的单独 Python 解释器中运行它们。 +Toolkit 的一个基本原则是,各个项目可以完全彼此隔离。 通常,这是为了确保一个项目的更改不会对另一个项目造成不利影响(临近交付时可能出现这种情况)。为了提供这种项目隔离机制,Desktop 插件确保无论您何时使用某个特定项目的命令,都将在专为这个项目初始化的单独 Python 解释器中运行它们。 -当您单击一个项目时,后台会启动一个 Python 解释器。此 Python 解释器是为该项目配置的解释器,启动时将为该项目初始化 tk-desktop。 插件的这个实例会与图形用户界面通信,指示可以启动什么命令。 +当您单击一个项目时,后台会启动一个 Python 解释器。此 Python 解释器是为该项目配置的解释器,启动时将为该项目初始化 tk-desktop。 插件的这个实例会与图形用户界面通信,指示可以启动什么命令。 -当您单击一个命令时,后台运行的 Python 进程会负责启动该命令。 这样,您便可以(例如)在一个项目上运行 Python 2.6,在另一个项目上测试 Python 2.7。 +当您单击一个命令时,后台运行的 Python 进程会负责启动该命令。 这样,您便可以(例如)在一个项目上运行 Python 2.6,在另一个项目上测试 Python 2.7。 ## 注册自定义面板 @@ -38,9 +38,8 @@ tk-desktop: location: ... location: ... run_at_startup: - - {app_instance: '', name: Apps} - - {app_instance: tk-multi-shotgunpanel, name: ''} + - { app_instance: "", name: Apps } + - { app_instance: tk-multi-shotgunpanel, name: "" } ``` 请注意,特殊的 `Apps` 条目控制默认 `Apps` 选项卡应显示的位置(按照选项卡顺序)。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-flame.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-flame.md index b053b515d..5450933e7 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-flame.md @@ -9,7 +9,7 @@ lang: zh_CN ## 安装 -{% include product %} Flame 插件依赖于 Flame 2015 Extension 2 中新增的几个集成挂钩。为了保证插件正常工作,*必须*使用这一版本的 Flame。 有关 Flame 2015 Extension 2 的详细信息(包括获取途径),请联系 [Flame 技术支持](http://knowledge.autodesk.com/zh-hans/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)。 +{% include product %} Flame 插件依赖于 Flame 2015 Extension 2 中新增的几个集成挂钩。为了保证插件正常工作,*必须*使用这一版本的 Flame。 有关 Flame 2015 Extension 2 的详细信息(包括获取途径),请联系 [Flame 技术支持](http://knowledge.autodesk.com/zh-hans/search-result/caas/sfdcarticles/sfdcarticles/Contacting-Autodesk-Flame-or-Smoke-Customer-Support.html)。 要想快速开始学习 {% include product %} Flame 插件,最简单的方法是使用我们的示例工作流配置设置一个新的测试项目。您只要启动 {% include product %} Desktop,运行项目设置向导设置一个新项目,然后选择默认的 Flame 配置(在默认配置部分)即可。 @@ -24,25 +24,30 @@ lang: zh_CN 但是,利用 {% include product %} 集成,我们可以为这些设置预先填充适合工作流的值,帮助艺术家不假思索地快速获取需要的内容。默认值可通过 `project_setup_hook` 进行自定义,此设置支持以下选项: `use_project_settings_ui` -- 如果设置为 `True`,将显示项目创建用户界面。 如果设置为 `False`,将根据挂钩中的其余默认值自动创建 Flame 项目。 + +- 如果设置为 `True`,将显示项目创建用户界面。 如果设置为 `False`,将根据挂钩中的其余默认值自动创建 Flame 项目。 `get_server_hostname` + - 默认情况下,此选项设置为“localhost”,但可根据需要改写。 `get_project_name` 默认情况下,此选项设置为与 {% include product %} 项目相同的值,但可根据需要改写。 `get_volume` + - 默认情况下,此选项设置为第一个可用的存储设备,但可根据需要改写。 `get_workspace` + - 默认情况下,Flame 会根据其标准工作空间创建逻辑创建一个默认工作空间,但可根据需要改写。 `get_user` 此选项会尝试将登录到 Flame 计算机的用户与 {% include product %} 中的用户关联。 `get_project_settings` -- 这是配置 Flame 主要设置的地方,挂钩将帮助用户构建 Flame 项目的 XML 流。 *必须*提供以下参数: + +- 这是配置 Flame 主要设置的地方,挂钩将帮助用户构建 Flame 项目的 XML 流。 *必须*提供以下参数: * FrameWidth(例如 `1280`) * FrameHeight(例如 `1080`) @@ -50,7 +55,6 @@ lang: zh_CN * FieldDominance(`PROGRESSIVE`、`FIELD_1`、`FIELD_2`) * AspectRatio(`4:3`、`16:9` 或字符串形式的浮点值) -另外,还可以提供代理设置。 有关详细信息,请参见 [Autodesk Wiretap SDK 文档](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)! +另外,还可以提供代理设置。 有关详细信息,请参见 [Autodesk Wiretap SDK 文档](http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7478536)! 要查看 project_setup 挂钩的整个代码库,请参见我们[位于 GitHub 上的插件库](https://github.com/shotgunsoftware/tk-flame/blob/master/hooks/project_startup.py)。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-houdini.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-houdini.md index 8ace71419..6ae630a4a 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-houdini.md @@ -11,7 +11,6 @@ lang: zh_CN ![{% include product %} Houdini 插件](../images/engines/houdini_engine.png) - # 应用开发人员须知 ## 支持的平台 @@ -47,9 +46,9 @@ tk-houdini: apps: # ... other app definitions tk-multi-workfiles: - # ... other app settings - sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets - # ... other app settings + # ... other app settings + sg_entity_types: [Shot, Asset] # allow context switching to Shots or Assets + # ... other app settings enable_sg_shelf: true enable_sg_menu: false # ... other engine settings @@ -94,21 +93,21 @@ houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/Ma ```yaml launch_houdini: - defer_keyword: '' + defer_keyword: "" engine: tk-houdini extra: {} - hook_app_launch: app_launch # <----- use a custom app_launch hook + hook_app_launch: app_launch # <----- use a custom app_launch hook hook_before_app_launch: default - icon: '{target_engine}/icon_256.png' - linux_args: '' - linux_path: '@houdini_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.6.6} - mac_args: '' - mac_path: '@houdini_mac' + icon: "{target_engine}/icon_256.png" + linux_args: "" + linux_path: "@houdini_linux" + location: { name: tk-multi-launchapp, type: app_store, version: v0.6.6 } + mac_args: "" + mac_path: "@houdini_mac" menu_name: Launch Houdini versions: [] - windows_args: '' - windows_path: '@houdini_windows' + windows_args: "" + windows_path: "@houdini_windows" ``` 然后,只需修改启动逻辑,直接启动可执行文件即可。例如,您可以针对目录(应用程序包)保留旧的行为,在其他情况下直接执行命令。示例如下: diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-nuke.md index 0e2a72134..96967aca1 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-nuke.md @@ -24,7 +24,7 @@ lang: zh_CN 您可以使用 `favourite_directories` 设置,基于当前环境中的模板路径添加自己的快捷方式。该设置应为词典列表,每个列表项表示一个新的收藏夹目录。下面是一个可使用的格式示例:(也可以不指定图标,方法是提供 "" 值。) ```yaml - favourite_directories: +favourite_directories: - display_name: "Shot Publish Path" template_directory: "shot_publish_area_nuke" icon: "icons/custom_publish_icon.png" @@ -35,13 +35,10 @@ lang: zh_CN 对于定义的每个根目录,会自动添加一个“{% include product %} Current Project”收藏夹。您可以使用 `project_favourite_name` 设置来自定义名称,也可以将此值设置为空字符串 `''`,禁用这些收藏夹。 - - -*** +--- _注意:目前,Nuke 8.0 在 CentOS 6.5 这个特定版本上运行时存在一个错误,会导致 Nuke 在运行 Toolkit 时发生崩溃。其他版本的 CentOS 不受影响。The Foundry 已知晓此问题(错误号 43766)。如果您遇到此问题,请联系我们,我们可以尝试帮助您以变通方法暂时绕过此问题,直到 Nuke 在以后的更新中修复它。_ - ## 应用开发人员须知 ### 上下文跟踪 @@ -56,7 +53,7 @@ _注意:目前,Nuke 8.0 在 CentOS 6.5 这个特定版本上运行时存在 然后,您可以通过“创建节点”功能轻松访问小控件: -* `nuke.createNode("WriteTank")` +- `nuke.createNode("WriteTank")` {% include info title="警告" content="请注意,虽然小控件用起来可能很方便,但如果您想在场景中创建持久性节点,小控件通常不是正确的做法。这是因为一旦将小控件放入场景,就在该场景与小控件代码之间建立了依赖关系。这样,不仅需要在每次加载场景时都加载 ShotGrid Toolkit,还需要小心管理代码,确保代码的任何更新都不会影响场景中使用的旧的小控件。" %} @@ -109,26 +106,60 @@ except: 由于 Hiero 有多种不同的菜单,因此,用于配置菜单项放置位置的选项要比诸如 Maya 或 Nuke 等应用程序中更多。{% include product %} Nuke 插件的 Hiero 工作流配置可能如下所示: ```yaml - - tk-hiero: - location: {name: tk-nuke, type: app_store, version: v0.6.9} - debug_logging: false - - timeline_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - spreadsheet_context_menu: - - {app_instance: tk-hiero-openinshotgun, keep_in_menu: false, name: Open in Shotgun, requires_selection: true} - - bin_context_menu: - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} - - {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "Version up Current Scene...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot...", requires_selection: true} - - {app_instance: tk-multi-snapshot, keep_in_menu: false, name: "Snapshot History...", requires_selection: true} - - {app_instance: tk-multi-publish, keep_in_menu: false, name: "Publish Project...", requires_selection: true} - - menu_favourites: - - {app_instance: tk-multi-workfiles, name: Shotgun File Manager...} +tk-hiero: + location: { name: tk-nuke, type: app_store, version: v0.6.9 } + debug_logging: false + + timeline_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + spreadsheet_context_menu: + - { + app_instance: tk-hiero-openinshotgun, + keep_in_menu: false, + name: Open in Shotgun, + requires_selection: true, + } + + bin_context_menu: + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "Version up Current Scene...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot...", + requires_selection: true, + } + - { + app_instance: tk-multi-snapshot, + keep_in_menu: false, + name: "Snapshot History...", + requires_selection: true, + } + - { + app_instance: tk-multi-publish, + keep_in_menu: false, + name: "Publish Project...", + requires_selection: true, + } + + menu_favourites: + - { app_instance: tk-multi-workfiles, name: Shotgun File Manager... } ``` 大多数插件都有一个 `menu_favourites` 选项,这是一个列表,您可以在这里指定要放在 {% include product %} 主菜单上的“快捷方式”。除此以外,特定于 Hiero 的配置还有三个特殊部分: @@ -147,7 +178,6 @@ except: 因为 Hiero 没有当前项目的概念,我们加入了更强大的工具,让应用很容易就能识别用户在 Hiero 内单击了什么对象。{% include product %} Hiero 插件为此加入了两个方法: - #### get_menu_selection() 返回最近一次单击菜单操作选中的 Hiero 对象的列表。 @@ -163,7 +193,7 @@ except: **参数和返回值** -* **返回值:**Hiero 对象列表 +- **返回值:**Hiero 对象列表 **示例** @@ -202,7 +232,7 @@ if project is None: #### 如何配置挂钩以支持 Hiero -为 Hiero 配置的多用应用通常需要判断用户单击的是哪个项目。例如,`tk-multi-workfiles` 应用需要对项目执行“{% include product %} 另存为”操作。因此,我们向 Hiero 中的 bin 菜单添加了 Tank Save As 命令,这样用户便可在 bin 视图中的项目上单击鼠标右键并选择“另存为”(Save As)**选项。 +为 Hiero 配置的多用应用通常需要判断用户单击的是哪个项目。例如,`tk-multi-workfiles` 应用需要对项目执行“{% include product %} 另存为”操作。因此,我们向 Hiero 中的 bin 菜单添加了 Tank Save As 命令,这样用户便可在 bin 视图中的项目上单击鼠标右键并选择“另存为”(Save As)\*\*选项。 ![菜单](../images/engines/nuke-hiero-bin_menu.png) @@ -210,7 +240,12 @@ if project is None: ```yaml bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} + - { + app_instance: tk-multi-workfiles, + keep_in_menu: false, + name: "{% include product %} Save As...", + requires_selection: true, + } ``` 现在,在应用本身中,每个插件需要配置一个挂钩,用来处理诸如保存和加载这样的场景事件。 对于 Maya 或 Nuke 这样的应用程序,通常只要进行保存、加载等操作即可。 @@ -301,4 +336,3 @@ class SceneOperation(Hook): 如果您想知道单击某个选择项时 Hiero 返回哪些对象,只需开启插件调试模式即可。 在脚本编辑器中,可以看到每次单击操作选择的对象的摘要信息: ![菜单](../images/engines/nuke-hiero-engine_debug.png) - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md index 0571381e3..fee8267f0 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md @@ -121,10 +121,10 @@ lang: zh_CN ```yaml shelf_favorites: - - {app_instance: tk-multi-workfiles2, name: File Save...} - - {app_instance: tk-multi-workfiles2, name: File Open...} - - {app_instance: tk-multi-publish, name: Publish...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} + - { app_instance: tk-multi-workfiles2, name: File Save... } + - { app_instance: tk-multi-workfiles2, name: File Open... } + - { app_instance: tk-multi-publish, name: Publish... } + - { app_instance: tk-multi-snapshot, name: Snapshot... } ``` 设置的值是一个词典列表,每个词典指定了配置中安装的一个应用提供的一个注册命令。`app_instance` 键标识了一个特定的已安装应用,`name` 键则与该应用注册的命令的显示名称一致。在上面的示例中,您可以看到四个收藏的命令:`tk-multi-workfiles2` 应用的“File Open”和“File Save”对话框,以及 Toolkit 的“发布”(Publish)和“Snapshot”标准对话框。这四个命令现在将显示在收藏工具架中。 @@ -148,6 +148,7 @@ shelf_favorites: Photoshop API 对象被公开为 `engine.adobe`。下面的示例说明怎样才能从 Toolkit 应用和挂钩内直接操纵 Photoshop DOM。标准 Toolkit 应用还包含有关如何与 Photoshop 文档进行交互的可行示例。 #### 示例 + 加载文件: ```python @@ -215,4 +216,4 @@ for (i, layer) in enumerate(layers): ### 应用开发人员须知 -* 因为 Python 进程与 Photoshop CC 进程彼此分离,所以插件内部会进行一些处理,让应用窗口以尽可能整洁的方式显示在 Photoshop 窗口之上。此项设置需要注意的一点是,默认选项是为 `QFileDialog` 使用原生操作系统窗口。如果您开发的是与此插件一起使用的应用,要确保将此选项设置为不使用原生对话框。 [请参见 tk-multi-pythonconsole 应用中关于此选项的示例](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218)。 +- 因为 Python 进程与 Photoshop CC 进程彼此分离,所以插件内部会进行一些处理,让应用窗口以尽可能整洁的方式显示在 Photoshop 窗口之上。此项设置需要注意的一点是,默认选项是为 `QFileDialog` 使用原生操作系统窗口。如果您开发的是与此插件一起使用的应用,要确保将此选项设置为不使用原生对话框。 [请参见 tk-multi-pythonconsole 应用中关于此选项的示例](https://github.com/shotgunsoftware/tk-multi-pythonconsole/blob/master/python/app/console.py#L218)。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md index ca3a36810..444e11855 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md @@ -7,7 +7,7 @@ lang: zh_CN # {% include product %} -{% include product %} 插件用来管理可以从 {% include product %} 内启动的应用。有时,我们称这些 Toolkit 应用为“动作”**。它们通常以菜单项的形式显示在 {% include product %} 内的菜单上。 +{% include product %} 插件用来管理可以从 {% include product %} 内启动的应用。有时,我们称这些 Toolkit 应用为“动作”\*\*。它们通常以菜单项的形式显示在 {% include product %} 内的菜单上。 ## 使用 {% include product %} Pipeline Toolkit 动作 @@ -27,8 +27,8 @@ lang: zh_CN 自 Core v0.13 起,所有多用应用都可以与 {% include product %} 插件一起使用。从技术上讲,{% include product %} 插件与其他插件没有太大区别,但还是有些细微差异: -* 如果想在 {% include product %} 插件中执行基于 QT 的应用,需要在标准 Python 环境中手动安装 PySide 或 PyQt。 -* 在 {% include product %} 插件中,可根据用户所属的权限组向用户显示动作。例如,如果想向 {% include product %} 动作菜单添加某个命令,并且只希望管理员才能看到该命令,就可以使用此功能。 +- 如果想在 {% include product %} 插件中执行基于 QT 的应用,需要在标准 Python 环境中手动安装 PySide 或 PyQt。 +- 在 {% include product %} 插件中,可根据用户所属的权限组向用户显示动作。例如,如果想向 {% include product %} 动作菜单添加某个命令,并且只希望管理员才能看到该命令,就可以使用此功能。 一个样式简单、仅对管理员可见的 {% include product %} 应用如下所示: @@ -40,7 +40,7 @@ class LaunchPublish(Application): def init_app(self): """ Register menu items with {% include product %} - """ + """ params = { "title": "Hello, World!", "deny_permissions": ["Artist"], @@ -51,6 +51,5 @@ class LaunchPublish(Application): def do_stuff(self, entity_type, entity_ids): # this message will be displayed to the user - self.engine.log_info("Hello, World!") + self.engine.log_info("Hello, World!") ``` - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-vred.md index e715f13f9..c156d5e35 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-vred.md @@ -26,7 +26,6 @@ lang: zh_CN 当 VRED 打开时,{% include product %} 菜单(VRED 插件)会添加到菜单栏中。 ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunMenuVRED.png) - ### 文件打开和保存 使用“我的任务”(My Tasks)和“零部件”(Assets)选项卡可以查看您的所有已分配任务,并浏览零部件。在右侧,使用这些选项卡可以查看所有文件、与左侧选定内容关联的工作文件或已发布文件。 @@ -34,22 +33,23 @@ lang: zh_CN ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunFileSaveVRED.png) - ### 快照 + 快照(Snapshot):打开“快照”(Snapshot)对话框以创建当前场景的快速备份。 ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunSnapshotVRED.png) - ### 发布 + 发布(Publish):打开“发布”(Publish)对话框以将文件发布到 {% include product %},然后供下游艺术家使用。有关 VRED 发布的详细信息,[请参见此处](https://github.com/shotgunsoftware/tk-vred/wiki/Publishing) ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunPublishVRED.png) - ### 加载器 + 加载(Load):打开内容加载器应用,并附有解释其工作原理的教学幻灯片。 要查看有关 VRED 加载的详细信息,[请参见此处](https://github.com/shotgunsoftware/tk-vred/wiki/Loading) ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunLoaderVRED.png) ### 场景细分 + 场景“细分”(Breakdown):打开“细分”(Breakdown)对话框,其中显示“已参考”文件(及其链接)的列表,以及场景中过时的内容。选择一个或多个项目,然后单击“更新选定项”(Update Selected)以切换并使用最新版本的内容。 ![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunBreakdownVRED.png) diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md index a8fc6f9fe..f692ccc41 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md @@ -27,7 +27,7 @@ dialog_result = setup.exec_() ### SetupProjectWizard 构造函数 -初始化 SetupProjectWizard。 这是 QtGui.QWizard 的一个子类。 +初始化 SetupProjectWizard。 这是 QtGui.QWizard 的一个子类。 ```python SetupProjectWizard() diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md index edd9a1e8d..7dc6a2f6b 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md @@ -45,7 +45,6 @@ lang: zh_CN ![](images/windows_warning_1.jpg) ![](images/windows_warning_2.jpg) - 使用 {% include product %} Desktop 时,生成的证书存储在以下位置: **OS X**:~/Library/Caches/Shotgun/desktop/config/certificates
@@ -57,7 +56,7 @@ lang: zh_CN 默认情况下,Websocket 服务器设置为在端口 9000 上侦听托管的 {% include product %} 站点。 如果您运行的是本地 {% include product %} 服务器,需要更新 {% include product %} 服务器的配置,以便可以从您的 Websocket 服务器进行连接。 -运行 {% include product %} Desktop 时,您需要设置一个 ```config.ini``` 文件,该文件与 {% include product %} 二进制文件位于同一个位置。有关此文件需要位于何处的详细说明,请参见[此处](https://support.shotgunsoftware.com/hc/zh-cn/articles/219040668#Advanced%20Installation%20Topics)。 +运行 {% include product %} Desktop 时,您需要设置一个 `config.ini` 文件,该文件与 {% include product %} 二进制文件位于同一个位置。有关此文件需要位于何处的详细说明,请参见[此处](https://support.shotgunsoftware.com/hc/zh-cn/articles/219040668#Advanced%20Installation%20Topics)。 此文件内有一个部分用来控制 Websocket 服务器的功能。 典型的配置如下所示: @@ -72,9 +71,9 @@ whitelist=*.shotgunstudio.com ## 疑难解答 -在 Linux 平台上,该服务器增加了对 libffi 的依赖。 如果 Desktop 在启动时崩溃,并且日志中包含未找到 libffi 的消息,您需要安装此软件包。 +在 Linux 平台上,该服务器增加了对 libffi 的依赖。 如果 Desktop 在启动时崩溃,并且日志中包含未找到 libffi 的消息,您需要安装此软件包。 -如果您在设置过程中遇到任何问题或有任何疑问,请发送电子邮件至 support@shotgunsoftware.com。 如果运行服务器时遇到问题,请在 **config.ini** 文件中将 **debug** 设置为 **1**,并包含 Desktop 的日志文件。 +如果您在设置过程中遇到任何问题或有任何疑问,请发送电子邮件至 support@shotgunsoftware.com。 如果运行服务器时遇到问题,请在 **config.ini** 文件中将 **debug** 设置为 **1**,并包含 Desktop 的日志文件。 日志文件可在以下位置找到: diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md index 30aaa09d8..47b66c6a5 100644 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md @@ -6,6 +6,7 @@ lang: zh_CN --- # Toolkit 桌面启动框架 + 桌面启动框架用于执行 {% include product %} Desktop 的启动逻辑。它的主要功能包括: 1. 初始化浏览器集成 diff --git a/docs/zh_CN/shotgun.md b/docs/zh_CN/shotgun.md index 003d9fb48..81c1b27c1 100644 --- a/docs/zh_CN/shotgun.md +++ b/docs/zh_CN/shotgun.md @@ -14,6 +14,3 @@ lang: zh_CN 建议您使用 {% include product %} API 开发自己的服务、应用程序、模块和组件,以便在本服务上运行或与本服务一起运行,供您自己和授权用户使用。 {% include warning title="身份验证密钥" content="我们要求您切勿披露(并且不允许您的授权用户披露)包含身份认证密钥的 API 信息,或者其他可能允许用户在没有登录的情况下访问本服务或其功能的方法,或者您自己使用 API 在没有登录的情况下访问或允许用户访问本服务或其功能的方法。" %} - - - diff --git a/docs/zh_CN/toolkit.md b/docs/zh_CN/toolkit.md index 602cda795..4286a1e40 100644 --- a/docs/zh_CN/toolkit.md +++ b/docs/zh_CN/toolkit.md @@ -10,4 +10,3 @@ lang: zh_CN Toolkit 是一个可扩展的平台,用于将美工人员应用程序和工作流工具与 {% include product %} 相集成。 所有集成均基于此 Toolkit 核心 API 平台构建而成。核心 API 可处理应用、插件和平台的基本方面以及文件系统组织和工具部署。 - diff --git a/docs/zh_CN/trusted-solutions/cloud.md b/docs/zh_CN/trusted-solutions/cloud.md index ac0fbca13..e9fd21738 100644 --- a/docs/zh_CN/trusted-solutions/cloud.md +++ b/docs/zh_CN/trusted-solutions/cloud.md @@ -13,4 +13,4 @@ ShotGrid Cloud is our default offering, hosted on AWS and built on top of Autode ## Further Reading -Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). \ No newline at end of file +Administration documentation can be found [here](https://support.shotgunsoftware.com/hc/en-us/categories/202866127-Shotgun-Admin-Guide). diff --git a/docs/zh_CN/trusted-solutions/tier1.md b/docs/zh_CN/trusted-solutions/tier1.md index 0e5a25823..dc0e110ee 100644 --- a/docs/zh_CN/trusted-solutions/tier1.md +++ b/docs/zh_CN/trusted-solutions/tier1.md @@ -18,38 +18,45 @@ Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation ## In This Section ### Getting Started + -* [About Isolation](./tier1/getting_started/about.md) -* [Client Responsibilities](./tier1/getting_started/responsibilities.md) -* [Onboarding Process](./tier1/getting_started/onboarding.md) -* [Planning your Setup](./tier1/setup/planning.md) + +- [About Isolation](./tier1/getting_started/about.md) +- [Client Responsibilities](./tier1/getting_started/responsibilities.md) +- [Onboarding Process](./tier1/getting_started/onboarding.md) +- [Planning your Setup](./tier1/setup/planning.md) ### Features Description + -* [Media Isolation](./tier1/features/media_isolation.md) -* [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) -* [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) -* [Media Replication](./tier1/features/media_replication.md) + +- [Media Isolation](./tier1/features/media_isolation.md) +- [Media Traffic Isolation](./tier1/features/media_traffic_isolation.md) +- [Web Traffic Isolation](./tier1/features/web_traffic_isolation.md) +- [Media Replication](./tier1/features/media_replication.md) ### Setup + -* [Setup Overview](./tier1/setup/setup.md) -* [Migration Test Site](./tier1/setup/shotgun_poc_site.md) -* [Media Isolation](./tier1/setup/s3_bucket.md) -* [Media Traffic Isolation](./tier1/setup/media_segregation.md) -* [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) -* [Media Replication](./tier1/setup/s3_replication.md) -* [Isolation Fine Tuning](./tier1/setup/tuning.md) -* [Migration](./tier1/setup/migration.md) +- [Setup Overview](./tier1/setup/setup.md) +- [Migration Test Site](./tier1/setup/shotgun_poc_site.md) +- [Media Isolation](./tier1/setup/s3_bucket.md) +- [Media Traffic Isolation](./tier1/setup/media_segregation.md) +- [Web Traffic Isolation](./tier1/setup/traffic_segregation.md) +- [Media Replication](./tier1/setup/s3_replication.md) +- [Isolation Fine Tuning](./tier1/setup/tuning.md) +- [Migration](./tier1/setup/migration.md) ### AWS Knowledge + -* [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) -* [S3](./tier1/knowledge/s3.md) -* [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) -* [Direct Connect](./tier1/knowledge/direct_connect.md) -* [Private Link](./tier1/knowledge/private_link.md) -* [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) -* [AWS Knowledge](./tier1/knowledge/aws.md) + +- [Connecting Your Studio With Your AWS VPC](./tier1/knowledge/connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./tier1/knowledge/direct_connect_onboarding.md) +- [S3](./tier1/knowledge/s3.md) +- [VPC / IAM / Security Group](./tier1/knowledge/vpc_iam_sec.md) +- [Direct Connect](./tier1/knowledge/direct_connect.md) +- [Private Link](./tier1/knowledge/private_link.md) +- [VPC Endpoints](./tier1/knowledge/vpc_endpoints.md) +- [AWS Knowledge](./tier1/knowledge/aws.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/features/features.md b/docs/zh_CN/trusted-solutions/tier1/features/features.md index e51276b67..b8673e7e6 100644 --- a/docs/zh_CN/trusted-solutions/tier1/features/features.md +++ b/docs/zh_CN/trusted-solutions/tier1/features/features.md @@ -16,8 +16,10 @@ To get the onboarding process started, go to [Onboarding Process](../getting_sta To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md). ## In This Section + -* [Media Isolation](./media_isolation.md) -* [Media Traffic Isolation](./media_traffic_isolation.md) -* [Web Traffic Isolation](./web_traffic_isolation.md) -* [Media Replication](./media_replication.md) \ No newline at end of file + +- [Media Isolation](./media_isolation.md) +- [Media Traffic Isolation](./media_traffic_isolation.md) +- [Web Traffic Isolation](./web_traffic_isolation.md) +- [Media Replication](./media_replication.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md index 2db4f3627..8ff5b3903 100644 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md +++ b/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md @@ -6,17 +6,21 @@ lang: en --- # Media Isolation + Media Isolation allows your studio to retain ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid is stored in your studio's private S3 Bucket. Access to the media is provided to the ShotGrid services only, using [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). media-isolation-overview ## Client-Owned S3 Bucket + Storing media and attachments in an S3 bucket that you own means that you remain the legal owner of these artifacts, allowing you to comply with your company's security and legal policies. Your studio retains control of asset storage and access, access that you can revoke at will. media-isolation-arch ## More about Access + When using ShotGrid to upload and download media it is transferred directly to / from AWS S3 without transiting through Autodesk infrastructure. ShotGrid will only access media in two situations: + 1. The ShotGrid Transcoding service will get read/write access once, soon after upload, when transcoding the media. See [Ephemeral Transcoding](../getting_started/about.md#ephemeral-transcoding) for details. 2. When the ShotGrid service generates S3 Links to your sources and transcoded media. @@ -25,9 +29,12 @@ This is rendered possible by leveraging [AWS AssumeRole keyless Security Token S ShotGrid Support staff do not have access to your S3 Bucket under any circumstances. ## Costs + When activating Media Isolation the following costs, previously covered by Autodesk, become the responsibility of the client: + 1. **S3 Costs.** All the S3 storage costs will be assumed by the customer. See [Media Isolation](../setup/tuning.md) for more details about how to reduce costs. 2. **S3 Bandwidth.** Bandwidth out of the S3 bucket will be assumed by the customer. ## What Media Isolation is not providing -Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. \ No newline at end of file + +Activating Media Isolation doesn't guarantee that the access to your ShotGrid site or media takes place within a closed network. diff --git a/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md b/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md index 0b4bbefeb..f991da0ca 100644 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md +++ b/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md @@ -12,14 +12,17 @@ ShotGrid is compatible with the S3 Cross-Region replication feature, allowing yo media-replication-overview ## Pre-requisites + Media Isolation is required in order to elect Media Replication. ## Configuration by users + When using Media Replication, each user can customize which region data is read from. A user can either specify the region to use, or use automatic mode. In automatic mode ShotGrid selects the replica determined by the user's IP address using IP ranges specified in the Isolation Preferences. media-replication-preferences ## How it works + ShotGrid can be configured to read from up to two different buckets. Using the [AWS S3 Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) feature, you can configure replication between buckets in different regions, and then consume media from the region closest to your users. It is important to underline that media is always uploaded to the main bucket. media-replication-arch @@ -27,12 +30,16 @@ ShotGrid can be configured to read from up to two different buckets. Using the [ Following AWS service level agreement, S3 guarantees the replication of 99.99% of the object within 15 minutes. ### Replication Delay + A small amount of time, typically under 15 minutes, is required before replication happens. The replication time depends on the size of the object to replicate. In order to alleviate that replication delay, ShotGrid will, for a small period of time, generate links from to object in the source bucket instead of the replica. The duration of this transitional state in configurable in the Isolation Preferences. ## Costs + Activating the Media Replication feature can increase your AWS costs considerabibly. Before activating, be aware that: + 1. Your S3 cost linked to ShotGrid usage will more or less double, because the media is now stored in two regions. 2. You will be charged for the transfer cost between the source and the destination region. See [AWS S3 CRR and the destination region](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-and-other-bucket-configs.html#replication-and-dest-region) for more details. ## Next Steps + See [Media Replication Setup](../setup/s3_replication.md) for setup instructions. diff --git a/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md index 74f0b9601..f399e9275 100644 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md +++ b/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md @@ -12,20 +12,26 @@ Communication between your client systems and S3 bucket targets a number of AWS media-traffic-isolation-overview ## Configuration -An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. + +An S3 Proxy component is deployed within your VPC; which is then used as the endpoint for all S3 communication. It can also be made publicly available using AWS Global Accelerator. ## How it works + ShotGrid can be configured to use an S3 Proxy address to communicate with your S3 bucket. Deploying the S3 Proxy component within your VPC makes it possible to isolate traffic from the public Internet completely, or to allow more tightly controlled access from the Internet to your media. media-traffic-isolation-arch ### Secure communication + You are responsible for supplying and renewing SSL certificates for the S3 Proxy component. ## Costs + Activating the Media Traffic Isolation feature will increase your AWS costs. Before activating, be aware that: + 1. There are costs associated with running the S3 Proxy component. See [AWS Fargate Pricing](https://aws.amazon.com/fargate/pricing/) for more details. 2. If you choose to make your S3 Proxy publicly accessible, there are also additional costs associated with AWS Global Accelerator. See [AWS Global Accelerator Pricing](https://aws.amazon.com/global-accelerator/pricing) for more details. ## Next Steps + See [Media Traffic Isolation](../setup/media_segregation.md) for setup instructions. diff --git a/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md index e0c936773..2e27e8465 100644 --- a/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md +++ b/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md @@ -12,15 +12,19 @@ Communication between your client systems and your Shotgun site will traverse th web-traffic-isolation-overview ## Configuration + A unique VPC endpoint is provided by Autodesk. Access to the endpoint must be configured from your VPC, and the relevant DNS configuration must be completed to allow your client systems to reach the new endpoint. ## How it works + By using the provided VPC endpoint, web traffic is isolated from the public Internet completely. All web traffic transits between your AWS VPC and Autodesk's AWS VPC, rather than the public Internet. web-traffic-isolation-arch ## Costs + The only cost associated with Web Traffic Isolation are those related to web traffic transiting to/from your AWS VPC. See [AWS VPC Pricing](https://aws.amazon.com/vpc/pricing) for more details. ## Next Steps + See [Web Traffic Isolation](../setup/traffic_segregation.md) for setup instructions. diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/about.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/about.md index 8d4b0dcd9..bbde8470e 100644 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/about.md +++ b/docs/zh_CN/trusted-solutions/tier1/getting_started/about.md @@ -11,48 +11,49 @@ The isolation feature set combines our Cloud Hosted Platform with client-managed Leveraging the isolation feature set has the following advantages over the Standard offering: -* **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** -* **Web Traffic Isolation** from the public internet -* **Media Traffic Isolation** from the public internet -* **Media Replication** allowing you to replicate media in one additional AWS Region -* Access to fully managed ShotGrid Cloud Services -* Automatic and continuous version upgrades -* Ephemeral compute + in-memory segration between clients +- **Media Isolation** by hosting of assets and attachments in a **client-owned S3 Bucket** +- **Web Traffic Isolation** from the public internet +- **Media Traffic Isolation** from the public internet +- **Media Replication** allowing you to replicate media in one additional AWS Region +- Access to fully managed ShotGrid Cloud Services +- Automatic and continuous version upgrades +- Ephemeral compute + in-memory segration between clients In a nutshell, this means that with the isolation features, your ShotGrid site and the data related to it cannot be reached by anyone outside of your studio network. The isolation feature set is a solution that requires less upkeep, as well as less IT/System Administrator knowledge and skills, than hosting ShotGrid on-premise. The list of advantages compared to on-premise includes, but is not limited to: -* No ShotGrid specific knowledge required -* No manual ShotGrid updates required -* Very low level of maintenance required for the AWS components +- No ShotGrid specific knowledge required +- No manual ShotGrid updates required +- Very low level of maintenance required for the AWS components ## Media isolation feature + Media Isolation allows your studio to keep the ownership and control of the media and attachments that you upload to ShotGrid. With Media Isolation, all the content that you upload to ShotGrid can be store in your studio private S3 bucket. Access to the media is provided to the ShotGrid service only, using AWS AssumeRole keyless Security Token Service. Your studio remains in control of the assets and the access to the assets, access that you can revoke at will. ## Traffic isolation features + Media and Web traffic isolation features can be enabled to prevent your traffic from being routed on the public internet, limiting it to the AWS backbone and your studio network. The traffic between ShotGrid Services and your studio stays in closed network, never going outside AWS or your Studio network. With the Media Traffic Isolation feature activated, the media will only leave your studio infrastructure once to get transcoded. ## Media Replication -ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. +ShotGrid is compatible with the S3 Cross-Region replication feature, allowing your users located in different regions to read from the region closer to them in order to reduce latency and increase throughput. Replication to one region is currently supported. # Eligibility The Isolation feature set is available for all Super Awesome clients. See [Getting Started](./getting_started.md) for more details about how to active the different features. The activation of the isolation feature set is not instantaneous, and requires manual setup involving your AWS account. - # What the Isolation Feature Set is not The isolation feature set is not a completely isolated solution. Both the compute services and the database services are shared amongst clients, and managed by ShotGrid. From a hardware standpoint, the isolation features does not guarantee complete physical isolation. However, ShotGrid services are guaranteeing isolation at the memory level. Processes are never reused to answer requests from different clients during their lifetime. Client metadata is stored in different databases. Client media is individually stored on S3. - # High Level Architecture + ![tier1-arch](../images/tier1-about-arch.png) -The ShotGrid cloud service can be decoupled at a high level in 3 parts: +The ShotGrid cloud service can be decoupled at a high level in 3 parts: **Compute Stack:** The part of the ShotGrid Service that handles client requests and serves data to the client. @@ -63,9 +64,11 @@ The ShotGrid cloud service can be decoupled at a high level in 3 parts: Please read [Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk ShotGrid](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) for more details about the architecture. ## Ephemeral compute and memory isolation + Even if clients share the same infrastructure, ShotGrid guarantees a complete memory isolation, both in transit and at rest, of client data. This makes ShotGrid less prone to data leaking due to architecture flaws or software vulnerabilities exploiting memory, like buffer overflow. ## Ephemeral transcoding + ![tier1-transcoding](../images/tier1-about-transcoding.png) Everytime media is uploaded to ShotGrid, the transcoding service is invoked to create a web friendly versions of your assets. That process happens only once, after the initial upload. The media is directly uploaded from the client to S3, from where it is fetched by the ShotGrid Transcoding Service. Each transcoding job is handled by a single container, which is killed after that unique job. The only place the media temporarily lives is in the container memory. The ShotGrid Transcoding service doesn't store permanently a copy of your media. diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md index 9d70df760..04ebf5cf9 100644 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md +++ b/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md @@ -7,17 +7,18 @@ lang: en # Isolation Feature Set - Getting Started -Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. +Want to learn more about the isolation features? See [About the Isolation Feature Set](./about.md) for more details about what is in store for you. **The Isolation feature set is available only to Super Awesome clients. Before starting, make sure to upgrade your subscription to Super Awesome.** - To get the onboarding process started, go to [Onboarding Process](./onboarding.md). To start the setup for any of the Isolation features, go to the [Setup section](../setup/setup.md) ## In This Section + -* [About the Isolation Feature Set](./about.md) -* [Client Responsibilities](./responsibilities.md) -* [Onboarding Process](./onboarding.md) -* [Planning Your Setup](../setup/setup.md) \ No newline at end of file + +- [About the Isolation Feature Set](./about.md) +- [Client Responsibilities](./responsibilities.md) +- [Onboarding Process](./onboarding.md) +- [Planning Your Setup](../setup/setup.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md index 63dd91dcd..19bfc213d 100644 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md +++ b/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md @@ -19,13 +19,13 @@ To start the on-boarding process for any of the Isolation features, please open During the onboarding process, you'll have direct access to Autodesk and AWS Leaders who will support you during the implementation. -**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. +**Tech Briefing:** Overview meeting of all of our offerings, where we underline the advantages and disadvantages of each. -**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. +**Tech Deep Dive:** OPTIONAL. Deeper technical dive into isolation features. This meeting can be combined with the Tech Briefing. -**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. +**Kickoff Meeting:** AWS and ShotGrid Leaders review the setup process with the you. -**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. +**Setup / Test / Validation:** Iterative installation process where you connect your AWS resources to ShotGrid, and activate the isolation features. **Training:** OPTIONAL. Help sessions, if needed, as you ramp up on the AWS/ShotGrid technologies required to securely set-up the isolation features for your site. @@ -39,4 +39,4 @@ During the onboarding process, you'll have direct access to Autodesk and AWS Lea ## Next Steps -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file +Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md index 528aa0bbc..30d8e9508 100644 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md +++ b/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md @@ -4,15 +4,15 @@ title: Client Responsibilities pagename: tier1-getting_started-responsibilities lang: en --- - + # Client Responsibilities -Below, we have outlined setup responsibilities between Autodesk and You. +Below, we have outlined setup responsibilities between Autodesk and You. ## Isolation Setup You are entirely responsible for the validity, security, and execution of the Isolation setup in Your AWS Account. Autodesk should not, under any circumstances, be granted access to Your AWS environment. - + Autodesk is available during the process for assistance, but the configuration of Isolation features in Your AWS Account is to be executed by You on Your own. Isolation feature set activation requires the ShotGrid Support team's intervention. Activation delays are to be expected and will depend on demand. You understand that an estimated period of 2-8 weeks is usually required to complete the setup necessary to implement the isolation feature set. The setup time is highly dependent on your cooperation, so please plan to dedicate resources for the setup before beginning the onboarding process. @@ -21,16 +21,16 @@ Autodesk does not guarantee any timeline for setup completion. ## Onboarding -|Type| Description / Agreement | Responsibility | Available for Assistance| -|--------|-----|----------|---------| -|AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. |You |N/A| -|S3|Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) |You |ShotGrid and *AWS| -|Closed VPC |Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. |You |*AWS | -|Media Isolation |Creating the S3 end-points. Deploying the S3 Proxy. |You| ShotGrid and *AWS | -|Traffic Isolation |Creating VPCs. Creating Subnets.| You|ShotGrid| -|Private Access Point|Checking that the access point is only available from Your network.| ShotGrid| N/A| -|Monitoring and Reliability|Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. |ShotGrid|N/A| -|Service Level Objective|Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).|ShotGrid| N/A| -|Security and Governance |Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details).| ShotGrid |N/A| - -*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. +| Type | Description / Agreement | Responsibility | Available for Assistance | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------ | +| AWS Knowledge | Acquiring the AWS-specific knowledge required to set up the isolation features. | You | N/A | +| S3 | Setting up the S3 Bucket that will host Your media Securing access to the S3 Bucket. Additional high-availability measures (versioning, bucket replication, etc.) | You | ShotGrid and \*AWS | +| Closed VPC | Setting up DirectConnect/VPN, etc. to allow closed access to the VPC. Securing the VPC by putting the correct Security Groups in place. | You | \*AWS | +| Media Isolation | Creating the S3 end-points. Deploying the S3 Proxy. | You | ShotGrid and \*AWS | +| Traffic Isolation | Creating VPCs. Creating Subnets. | You | ShotGrid | +| Private Access Point | Checking that the access point is only available from Your network. | ShotGrid | N/A | +| Monitoring and Reliability | Maintaining uptime up to Autodesk standards. High availability and redundancy of Cloud Services. Metadata and database resiliency and redundancy. Maintaining Recovery Point Objective (RPO) for metadata and database. | ShotGrid | N/A | +| Service Level Objective | Maintaining ShotGrid target RPO and RTO (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | +| Security and Governance | Maintaining the ShotGrid Cloud Services that Isolation clients are interfacing with, so that they are meeting expectations in terms of security, vulnerability patching, scanning, auditing, etc. (See [ShotGrid Security White Paper](https://support.shotgunsoftware.com/hc/en-us/articles/114094526153-Shotgun-security-white-paper) for more details). | ShotGrid | N/A | + +\*You are solely responsible to seek or obtain any support services AWS may provide under any existing relationship between You and AWS. Autodesk teams are not parties to Your relationship with AWS and therefore not responsible or liable for any services or lack thereof provided by AWS to You. diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md index 4047e2782..65042c3e9 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md @@ -9,15 +9,15 @@ lang: en Below you can find links to additional reading material from AWS, including documentation on technologies leveraged by the Isolation feature set, as well as compliance information: -* [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) -* [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) -* [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) -* [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) - * [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) -* [**[AWS S3]** Overview](https://aws.amazon.com/s3/) - * [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) -* [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) - * [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) -* [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) - * [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) -* [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) +- [**[AWS Media Blog]** Securing Studio IP in AWS: Cloud-based VFX Project Management with Autodesk Shotgun](https://aws.amazon.com/blogs/media/securing-studio-ip-in-aws-cloud-based-vfx-project-management-with-autodesk-shotgun/) +- [**[AWS Media Blog]** Designing for Studio-Grade Security](https://aws.amazon.com/blogs/media/designing-for-studio-grade-security/) +- [**[Compliance]** MPAA & Studio Security](https://aws.amazon.com/compliance/mpaa/) +- [**[AWS Direct Connect]** Overview](https://aws.amazon.com/directconnect/) + - [**[AWS Direct Connect]** User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) +- [**[AWS S3]** Overview](https://aws.amazon.com/s3/) + - [**[AWS S3]** User Guide](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) +- [**[AWS EC2]** Overview](https://aws.amazon.com/ec2/) + - [**[AWS EC2]** User Guide](https://docs.aws.amazon.com/ec2/index.html) +- [**[AWS VPC]** Overview](https://aws.amazon.com/vpc/) + - [**[AWS VPC]** User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) +- [**[AWS PrivateLink]** Overview](https://aws.amazon.com/privatelink/) diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md index aa9aad9dd..3d2ffb368 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md @@ -15,8 +15,6 @@ Some of the common options our clients have used include: Using a VPN appliance - AWS-managed or client-managed - your studio can establish a secure connection between your data center (or offices) to your AWS private VPC. - ## AWS Direct Connect [AWS Direct Connect](./direct_connect.md) creates a dedicated link between your studio and your AWS VPC. This will help segregate your studio's network traffic to your private AWS VPC from general internet traffic. - diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md index b5e332630..3e87c2ce6 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md @@ -6,10 +6,9 @@ pagename: tier1-knowledge-direct_connect_onboarding # ShotGrid AWS Direct Connect Onboarding - ## Introduction -AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. +AWS Direct Connect (DX) is used to establish private connectivity between AWS and an on-prem facility. DX provides a private, high bandwidth network connection between your network and AWS Virtual Private Cloud (VPC) and bypasses the public internet. AWS has established 100 Direct Connect locations globally and leverages the AWS Partner Network to extend the footprint. ## Review of Shogun Configuration in AWS @@ -21,16 +20,14 @@ AWS Direct Connect (DX) is used to establish private connectivity between AWS an 2. Customer has equipment and network presence in an AWS Direct Connect location 3. Customer does not have equipment or presence in an AWS Direct Connect location - ## Setup Options 1. Request a dedicated Direct Connect connection through AWS Console - 1. Provision the required connectivity yourself - 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment + 1. Provision the required connectivity yourself + 1. Work with Direct Connect Partner to help establish a dedicated connection to AWS equipment 2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - -## Criteria to Determine Setup Path +## Criteria to Determine Setup Path If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console (Option 1a): @@ -49,11 +46,12 @@ If you answer “yes” to the following, then you should work with an AWS Direc - Are you already working with an AWS Direct Connect Partner? - Do you want a Partner to facilitate the setup? - Are you looking for a port less than 1Gbps or a hosted connection? -***Disclaimer:*** *All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria.* + **_Disclaimer:_** _All options are valid and the criteria are just a guide to help simplify the selection process. You can still pick any option based on more specific criteria._ ## Setup Directions ### Request through AWS Console - Option 1 (a and b) + 1. [Create a Connection in the AWS Console](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest) 1. [Download the LOA-CFA](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#DedicatedConnection). The LOA is the authorization to connect to AWS and is required to establish the cross-network connection. 1. (Option 1a only) Request cross-connects at AWS Direct Connect locations. Find contact information [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html). @@ -63,9 +61,9 @@ If you answer “yes” to the following, then you should work with an AWS Direc ### Request through AWS Direct Connect Partner - Option 2 1. [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/). The criteria for choosing an AWS Partner are: - - AWS Region - - Providers - - If you are already working with an AWS Direct Connect Partner + - AWS Region + - Providers + - If you are already working with an AWS Direct Connect Partner 1. If hosted connection, [accept a hosted connection](https://docs.aws.amazon.com/directconnect/latest/UserGuide/getting_started.html#ConnectionRequest). More information can be found [here](https://docs.aws.amazon.com/directconnect/latest/UserGuide/accept-hosted-connection.html). 1. Once the hosted connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). @@ -79,8 +77,6 @@ Short Answer - It depends. A lot of factors go into the time it takes to set up [AWS Direct Connect FAQs](https://aws.amazon.com/directconnect/faqs/?nc=sn&loc=6) - - ## VPN A site-to-site VPN can be used as an alternative to AWS Direct Connect. Learn more about [AWS VPN here](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md index 12d99d191..5ea551886 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md @@ -7,4 +7,4 @@ lang: en # VPC Endpoints -Coming soon. \ No newline at end of file +Coming soon. diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md index 6010add78..296365dd8 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md @@ -8,12 +8,14 @@ lang: en # Generic Knowledge ## In This Section + -* [Connecting Your Studio With Your AWS VPC](./connecting.md) -* [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) -* [S3](./s3.md) -* [VPC / IAM / Security Group](./vpc_iam_sec.md) -* [Direct Connect](./direct_connect.md) -* [Private Link](./private_link.md) -* [VPC Endpoints](./vpc_endpoints.md) -* [AWS Knowledge](./aws.md) \ No newline at end of file + +- [Connecting Your Studio With Your AWS VPC](./connecting.md) +- [ShotGrid AWS Direct Connect Onboarding](./direct_connect_onboarding.md) +- [S3](./s3.md) +- [VPC / IAM / Security Group](./vpc_iam_sec.md) +- [Direct Connect](./direct_connect.md) +- [Private Link](./private_link.md) +- [VPC Endpoints](./vpc_endpoints.md) +- [AWS Knowledge](./aws.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md index 836c2bbaf..dadd2afcd 100644 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md +++ b/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md @@ -7,6 +7,6 @@ lang: en # Private Link -[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. +[AWS PrivateLink](https://aws.amazon.com/privatelink/) is an AWS service that connects different AWS VPCs without going through the public internet. In conjunction with [AWS Direct Connect](./direct_connect.md), PrivateLink helps create a dedicated connection between your studio and ShotGrid's infrastructure. diff --git a/docs/zh_CN/trusted-solutions/tier1/learn/learn.md b/docs/zh_CN/trusted-solutions/tier1/learn/learn.md index 0b7f7f939..979527a18 100644 --- a/docs/zh_CN/trusted-solutions/tier1/learn/learn.md +++ b/docs/zh_CN/trusted-solutions/tier1/learn/learn.md @@ -7,4 +7,4 @@ lang: en # ShotGrid Isolation - Learn -This section will host a learning curriculum for ShotGrid Isolation features n the near future. \ No newline at end of file +This section will host a learning curriculum for ShotGrid Isolation features n the near future. diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md b/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md index 693920d74..447a36923 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md @@ -19,25 +19,26 @@ Media Isolation activation is a pre-requisite to enable this feature. If you hav You will need to deploy a VPC with the required VPC endpoints. We provide both [private VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) and [public VPC](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) CloudFormation templates as starting points. These template create the necessary VPCs, subnets and VPC endpoints. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private VPC (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private VPC (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-vpc.yml) - * Public VPC: + - Public VPC: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-public-vpc.yml) -* Click Next -* Set a stack name. Eg. `shotgun-vpc` -* Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly -* Set your S3 bucket name -* Click Next -* Click Next +- Click Next +- Set a stack name. Eg. `shotgun-vpc` +- Choose network ranges that doesn't conflict with your studio network and set subnet CIDR values accordingly +- Set your S3 bucket name +- Click Next +- Click Next ## Set up access from your site network to your AWS VPC Options provided by AWS: -* [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) -* [AWS Direct Connect](https://aws.amazon.com/directconnect/) + +- [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +- [AWS Direct Connect](https://aws.amazon.com/directconnect/) {% include info title="Note" content="If Direct Connect is chosen, we recommend testing with a simpler / faster solution in the meantime to validate your Isolation setup. You can then replace that solution with Direct Connect once it is available." %} @@ -55,12 +56,12 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC ### Make the Docker image available from a private AWS ECR repository -* Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) -* Name the repository `s3-proxy` -* Upload the s3-proxy Docker image to the newly created ECR repository - * [Install Docker](https://docs.docker.com/get-docker/) on your workstation - * Follow the `docker login` instructions shown by clicking the *View push commands* button - * Run the following commands, substituting the ECR endpoint in the example for yours: +- Create a [new Elastic Container Registry (ECR) repository](https://console.aws.amazon.com/ecr/create-repository) +- Name the repository `s3-proxy` +- Upload the s3-proxy Docker image to the newly created ECR repository + - [Install Docker](https://docs.docker.com/get-docker/) on your workstation + - Follow the `docker login` instructions shown by clicking the _View push commands_ button + - Run the following commands, substituting the ECR endpoint in the example for yours: ``` docker pull quay.io/shotgun/s3-proxy:1.0.6 docker tag quay.io/shotgun/s3-proxy:1.0.6 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 @@ -71,43 +72,43 @@ You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC Create a new stack in AWS Console using either the [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) or [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) CloudFormation template. -* Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) -* Select Template is ready -* Set Amazon S3 URL depending upon your desired configuration - * Private S3 proxy (default): +- Create a [new CloudFormation stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template) +- Select Template is ready +- Set Amazon S3 URL depending upon your desired configuration + - Private S3 proxy (default): [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) - * Public S3 proxy: + - Public S3 proxy: [`https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml`](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) -* Click Next -* Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` -* Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously -* Click Next -* Accept `I acknowledge that AWS CloudFormation might create IAM resources` -* Click Next +- Click Next +- Set a stack name up to 32 characters in length. Eg. `shotgun-s3-proxy` +- Set the parameters that do not have default values with those used when creating the ECR repository, VPC and S3 bucket previously +- Click Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Click Next ### Configure HTTPS ShotGrid requires that the S3 proxy be accessed via HTTPS, therefore the AWS ALB handling requests for your newly created S3 proxy stack must be configured to accept HTTPS requests. -* Create a DNS entry pointing to your S3 proxy, depending upon whether public or private - * Private S3 proxy (default): - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name - * Add a DNS CNAME record pointing to the DNS name of the ALB +- Create a DNS entry pointing to your S3 proxy, depending upon whether public or private + - Private S3 proxy (default): + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and make a note of the DNS name + - Add a DNS CNAME record pointing to the DNS name of the ALB Eg. `s3-proxy.mystudio.com. 300 IN CNAME s3proxy-12R1MXX0MFFAV-2025360147.us-east-1.elb.amazonaws.com.` - * Public S3 proxy: - * Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator - * Add a DNS CNAME record pointing to the DNS name of the Global Accelerator + - Public S3 proxy: + - Go to the [AWS Global Accelerator dashboard](https://console.aws.amazon.com/ec2/v2/home?#GlobalAcceleratorDashboard:) and make a note of the DNS name associated with your S3 proxy's accelerator + - Add a DNS CNAME record pointing to the DNS name of the Global Accelerator Eg. `s3-proxy.mystudio.com. 300 IN CNAME a48a2a8de7cfd28d3.awsglobalaccelerator.com.` -* Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this -* Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB - * Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab - * Click Add listener - * Select HTTPS from the Protocol dropdown menu - * Click Add action -> Forward to... - * Select your S3 proxy's target group from the Target group dropdown menu - * Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) - * Select the SSL certificate you'd like to use from ACM or import a new certificate - * Click Save +- Obtain an SSL certificate for your chosen URL, we recommend using [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) for this +- Configure HTTPS for the S3 proxy by adding a new HTTPS listener to the AWS ALB + - Go to the [EC2 Load Balancers dashboard](https://console.aws.amazon.com/ec2/home?#LoadBalancers), select your S3 proxy's ALB and click on the Listeners tab + - Click Add listener + - Select HTTPS from the Protocol dropdown menu + - Click Add action -> Forward to... + - Select your S3 proxy's target group from the Target group dropdown menu + - Select the Security policy you'd like to use. Eg. `TLS-1-2-Ext-2018-06` (See [AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) for more information) + - Select the SSL certificate you'd like to use from ACM or import a new certificate + - Click Save ### Add S3 proxy VPC to S3 bucket policy @@ -121,10 +122,10 @@ Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio ### Configure your test site to use the S3 proxy -* Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section -* Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes -* Confirm that you are still able to access existing media -* Attempt to upload new media +- Navigate to the Site Preferences menu within ShotGrid and expand the Isolation section +- Set S3 Proxy Host Address to the S3 proxy url. Eg. `https://s3-proxy.mystudio.com` then click Save changes +- Confirm that you are still able to access existing media +- Attempt to upload new media ## Next Steps diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/migration.md b/docs/zh_CN/trusted-solutions/tier1/setup/migration.md index d0f0d69f5..89cb3258f 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/migration.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/migration.md @@ -13,15 +13,14 @@ Once everything is configured and properly tested with the migration test site, Ask the ShotGrid team to start the migration process in support ticket/slack. - * ShotGrid will clone your production site database to your migration test site. - * You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. - * You can now test your site to be sure your existing media is available. +- ShotGrid will clone your production site database to your migration test site. +- You will do a first sync of the media from ShotGrid's S3 bucket to your bucket. ShotGrid will provide the exact instructions. +- You can now test your site to be sure your existing media is available. ## Final migration The second test is to definitly migrate your site to use your own S3 bucket. - * You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. - * ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. - * You will do a final media sync. - +- You will do a second sync of the media from ShotGrid's S3 bucket to your bucket. +- ShotGrid will reconfigure your hosted site with media isolation. Some media will be missing until the final media sync is completed. +- You will do a final media sync. diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/planning.md b/docs/zh_CN/trusted-solutions/tier1/setup/planning.md index 25183478e..14c564880 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/planning.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/planning.md @@ -12,10 +12,11 @@ lang: en ## Pick your options Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication + +- Media Isolation +- Media Traffic Isolation +- Web Traffic Isolation +- Media Replication ## AWS Account Creation @@ -33,20 +34,19 @@ Plan your AWS VPC and subnets IP ranges. ### IP Range Example -| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | -|--------|-----|----------|----------|----------| +| Region | VPC | Subnet 1 | Subnet 2 | Subnet 3 | +| -------------- | ----------- | ----------- | ----------- | ----------- | | ap-southeast-2 | 10.1.0.0/16 | 10.1.0.0/24 | 10.1.1.0/24 | 10.1.2.0/24 | - ### Plan how you will privately access your AWS VPC If you plan to activate any of the Traffic Isolation feature, you will need a way to connect your AWS VPC and your network infrastructure. The main options are: - * AWS Direct Connect - * Other VPN solution +- AWS Direct Connect +- Other VPN solution We highly recommand you to leverage Direct Connect. Direct Connect guarantees the lowest latency possible to the ShotGrid services, a consistent network experience, and allow you to leverage the optimization AWS is relying on to guarantee an optimal performance across the globe. ## Next Step -With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) \ No newline at end of file +With your plan layed down, you are ready to start implementing the AWS building blocks that will allow you to activate the isolation features. To avoid disruption on your production site, you will first materialize and test your setup on your [Migration Test Site](./shotgun_poc_site.md) diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md b/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md index 9aeff3531..60461db9e 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md @@ -20,15 +20,15 @@ It's possible to start from the [Private S3 bucket AWS CloudFormation template]( {% include info title="Disclaimer" content="This template is provided as an example only. It is your responsibility to validate that running the template will result in the [configuration/policy/security settings your studio requires](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - * Go the CloudFormation service in AWS Console - * Select Template is ready - * Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml - * Next - * Set a stack name like shotgun-s3-bucket - * Set your S3 bucket name and your ShotGrid site name - * Next - * Accept `I acknowledge that AWS CloudFormation might create IAM resources` - * Next +- Go the CloudFormation service in AWS Console +- Select Template is ready +- Set Amazon S3 URL to https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml +- Next +- Set a stack name like shotgun-s3-bucket +- Set your S3 bucket name and your ShotGrid site name +- Next +- Accept `I acknowledge that AWS CloudFormation might create IAM resources` +- Next ### CORS Configuration @@ -38,15 +38,16 @@ CORS policy on your S3 bucket will be minimally configured, allowing only the re The template will create an AWS Role with the following permissions on your bucket: -* Allow ShotGrid to access your S3 bucket. -* Allow the ShotGrid account to assume the role by setting the role Trust Relationship. +- Allow ShotGrid to access your S3 bucket. +- Allow the ShotGrid account to assume the role by setting the role Trust Relationship. ## Media Isolation Activation Please contact ShotGrid support via the dedicated Slack channel and provide the following information: - * S3 bucket name - * AWS Region - * ShotGrid Role ARN + +- S3 bucket name +- AWS Region +- ShotGrid Role ARN ShotGrid will configure your test site to use your own S3 bucket. @@ -70,4 +71,3 @@ See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffi See [Media Replication](./s3_replication.md) to activate the Web Traffic Isolation feature. Go to [Setup](./setup.md) for an overview of the possible next steps. - diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/s3_replication.md b/docs/zh_CN/trusted-solutions/tier1/setup/s3_replication.md index 253d586f4..ca5d3dd45 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/s3_replication.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/s3_replication.md @@ -15,7 +15,7 @@ It's possible to add S3 replication between two S3 buckets in different regions ## Features - * Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +- Support one replica bucket in another region leveraging the [AWS S3 replication feature](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) ## How it works @@ -23,30 +23,30 @@ When S3 bucket replication is activated, users will be able download media files For each user, the S3 replication is activated by the `Use S3 Replication` field. -| Value| Behavior | -|------|----------------------------------------------| -|`no` | Never use replica S3 bucket (default)| -|`yes` | Use replica S3 bucket when delay is over| -|`auto`| Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range| +| Value | Behavior | +| ------ | ------------------------------------------------------------------------------------------------------- | +| `no` | Never use replica S3 bucket (default) | +| `yes` | Use replica S3 bucket when delay is over | +| `auto` | Use replica S3 bucket when delay is over and the client IP is in `IP Adresses for S3 replication` range | The `IP Adresses for S3 replication` preference can be edited in Site Preferences under the Isolation category. ## Limitations - * Only one replica S3 bucket can be configured - * Only downloading from the replica bucket is supported - * Configurable delay for new media to be replicated before being made available to users +- Only one replica S3 bucket can be configured +- Only downloading from the replica bucket is supported +- Configurable delay for new media to be replicated before being made available to users # Setup steps - * Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) - * Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket - * Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) - * Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) - * Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: - * Replica Bucket Name - * Replica Bucket Region - * Replica S3 proxy URL +- Create the replica S3 bucket in a new AWS region. See [Media Isolation](./s3_bucket.md) +- Update your existing ShotGrid role policy to allow ShotGrid to also access the replica bucket +- Setup the replication rules on the primary S3 bucket. See [How do I add a replication rule to an S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-replication.html#enable-replication-add-rule) +- Setup a VPC + Direct Connect + S3 proxy in the new AWS region. See [Media Traffic Isolation](./media_segregation.md) +- Contact ShotGrid Support to configure your site to use the new S3 replica bucket, providing the following information: + - Replica Bucket Name + - Replica Bucket Region + - Replica S3 proxy URL ## FAQ @@ -58,4 +58,4 @@ S3 replication only applies to media uploaded after the feature has been enabled See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/setup.md b/docs/zh_CN/trusted-solutions/tier1/setup/setup.md index ba2a55aff..259fcf035 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/setup.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/setup.md @@ -9,18 +9,20 @@ lang: en Isolation the isolation features are independent of each other, and can be activated independently of each other. Media replication have as pre-requisite for Media Isolation to be implemented. -The setup process will depend on which feature you want to activate for your site. +The setup process will depend on which feature you want to activate for your site. ## In This Section + -* [Planning your Setup](./planning.md) -* [Migration Test Site](./shotgun_poc_site.md) -* [Media Isolation](./s3_bucket.md) -* [Media Traffic Isolation](./media_segregation.md) -* [Web Traffic Isolation](./traffic_segregation.md) -* [Media Replication](./s3_replication.md) -* [Isolation Fine Tuning](./tuning.md) -* [Migration](./migration.md) + +- [Planning your Setup](./planning.md) +- [Migration Test Site](./shotgun_poc_site.md) +- [Media Isolation](./s3_bucket.md) +- [Media Traffic Isolation](./media_segregation.md) +- [Web Traffic Isolation](./traffic_segregation.md) +- [Media Replication](./s3_replication.md) +- [Isolation Fine Tuning](./tuning.md) +- [Migration](./migration.md) # Setup Overview diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/zh_CN/trusted-solutions/tier1/setup/shotgun_poc_site.md index c7743da2c..f2bebd159 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/shotgun_poc_site.md @@ -21,4 +21,4 @@ See [Media Isolation](./s3_bucket.md) for activating the Media Isolation feature See [Web Traffic Isolation](./traffic_segregation.md) for activating the Web Traffic Isolation feature. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md index f3deacb4e..f49ea8d39 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md @@ -11,19 +11,18 @@ The goal is to set up an AWS PrivateLink to privately access your ShotGrid site. ## Set up PrivateLink to ShotGrid - * Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. +- Ask ShotGrid support to provide you with the ShotGrid PrivateLink service name for your AWS region. - * Update the private VPC CloudFormation stack you created earlier and set ShotgunPrivateServiceName parameter. +- Update the private VPC CloudFormation stack you created earlier and set ShotgunPrivateServiceName parameter. ### Manual steps if needed - * Add a new VPC Endpoint in your VPC +- Add a new VPC Endpoint in your VPC - * For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. +- For the security group, ShotGrid service only requires the inbound port tcp/443 to be open. ![Create endpoint](../images/tier1-endpoint-create_privatelink.png) - ## DNS Configuration Provide your PrivateLink DNS name to ShotGrid support. We will setup a new private URL for your site that will look like `mystudio-staging.priv.shotgunstudio.com`. @@ -42,4 +41,4 @@ Try to access your test site from inside your office ie https://mystudio-staging See [Fine Tuning](./tuning.md) to finalize your setup and optimize costs and security. -Go to [Setup](./setup.md) for an overview of the possible next steps. \ No newline at end of file +Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md b/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md index df4b6060f..ce0bc5047 100644 --- a/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md +++ b/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md @@ -74,8 +74,8 @@ We recommend setting a VPC endpoint policy on your S3 endpoint to allow access t ## Application Load Balancer - * We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. - * We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. +- We recommend you [enable deletion protection](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#deletion-protection) on the S3 proxy load balancer to prevent accidental deletion. +- We recommend you [enable access logging](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging) on the S3 proxy load balancer to aid in traffic analysis and identification of security issues. ## Next Steps