diff --git a/.github/workflows/generate-preview.yml b/.github/workflows/generate-preview.yml index 84eff410c..c2f2bf8fd 100644 --- a/.github/workflows/generate-preview.yml +++ b/.github/workflows/generate-preview.yml @@ -21,6 +21,7 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: 2.6 + bundler: 1.17.2 - name: Install Pandoc run: sudo apt-get install -y pandoc - name: Install Jekyll dependencies diff --git a/docs/_data/en/toc_text.yml b/docs/_data/en/toc_text.yml index e0d673b93..bd9c949a8 100644 --- a/docs/_data/en/toc_text.yml +++ b/docs/_data/en/toc_text.yml @@ -3,59 +3,4 @@ # For documentation, see https://developer.shotgridsoftware.com/tk-doc-generator/authoring/toc/ # -reference: Reference -guides: Guides -trusted-solutions: Trusted Solutions - -rv: RV -toolkit: Toolkit -shotgun: ShotGrid -review: Review -quick-answers: Quick Answers -pipeline-integrations: Pipeline Integrations - -python-api: Python API Documentation -rest-api: REST API -event-triggers: Writing Event-Driven Triggers -action-menu-items: Creating custom Action Menu Items -jira-bridge-guide: Sync Data Between Jira and ShotGrid -jira-bridge-ref: Jira Bridge Dev Resources -examples: Examples -webinars: Webinar Recordings -developer-training-videos: Developer Training Videos -episodic-pipeline-tutorial: Episodic Pipeline Tutorial - -core-api: Toolkit Core API -qt-widgets: QT Widgets -shotgun-utils: ShotGrid Utils -publish-api: Publish API -hiero-export-api: Hiero Export API -development: Development -app-development: App Development -engine-development: Engine Development -file-system-configuration: File System Configuration - -rv-user-manual: RV User Manual -technical-reference: Technical Reference -rv-technical-reference: RV Technical Reference -rv-sdi: RV-SDI -forums: Forums - -rv-maya-integration: RV Maya Integration -rv-nuke-integration: RV Nuke Integration -rv-shotgrid-integration: RV ShotGrid Integration -maya: Maya -nuke: Nuke -shotgun: ShotGrid -screening-room-and-shotgun-review: Screening Room and ShotGrid Review -troubleshooting: Troubleshooting Guide -extending-rv: Extending RV - -videos: Videos -siggraph-shotgun-day: SIGGRAPH ShotGrid Day -toolkit-webinars: Toolkit Webinars - -other: Other -community: Community -service-status: Service Status -shotgrid-documentation: ShotGrid Documentation +test: test \ No newline at end of file diff --git a/docs/_data/ja/toc_text.yml b/docs/_data/ja/toc_text.yml index f07e4e44d..7815741d3 100644 --- a/docs/_data/ja/toc_text.yml +++ b/docs/_data/ja/toc_text.yml @@ -3,59 +3,4 @@ # For documentation, see https://developer.shotgunsoftware.com/tk-doc-generator/authoring/toc/ # -reference: リファレンス -guides: ガイド -trusted-solutions: 信頼できるソリューション - -rv: RV -toolkit: Toolkit -shotgun: ShotGrid -review: レビュー -quick-answers: クイック アンサー -pipeline-integrations: パイプライン統合 - -python-api: Python API ドキュメント -rest-api: REST API -event-triggers: イベント駆動型トリガを記述する -action-menu-items: カスタム アクション メニュー アイテムを作成する -jira-bridge-guide: JIRA と ShotGrid 間でデータを同期する -jira-bridge-ref: JIRA Bridge 開発リソース -examples: 例 -webinars: ウェビナーの録画 -developer-training-videos: 開発者向けトレーニング ビデオ  -episodic-pipeline-tutorial: エピソード パイプライン チュートリアル - -core-api: Toolkit Core API -qt-widgets: QT ウィジェット -shotgun-utils: ShotGrid ユーティリティ -publish-api: パブリッシュ API -hiero-export-api: Hiero 書き出し API -development: 開発 -app-development: アプリケーション開発 -engine-development: エンジン開発 -file-system-configuration: ファイル システム設定 - -rv-user-manual: RV ユーザ マニュアル -technical-reference: テクニカル リファレンス -rv-technical-reference: RV テクニカル リファレンス -rv-sdi: RV-SDI -forums: フォーラム - -rv-maya-integration: RV/Maya の統合 -rv-nuke-integration: RV/Nuke の統合 -rv-shotgrid-integration: RV ShotGrid の統合 -maya: Maya -nuke: Nuke -shotgun: ShotGrid -screening-room-and-shotgun-review: Screening Room と ShotGrid Review -troubleshooting: トラブルシューティング ガイド -extending-rv: RV の拡張 - -videos: ビデオ -siggraph-shotgun-day: SIGGRAPH ShotGrid Day -toolkit-webinars: Toolkit ウェビナー - -other: その他 -community: コミュニティ -service-status: サービス ステータス -shotgrid-documentation: ShotGrid ドキュメント +test: test \ No newline at end of file diff --git a/docs/_data/ko/toc_text.yml b/docs/_data/ko/toc_text.yml index 43440b0c9..7815741d3 100644 --- a/docs/_data/ko/toc_text.yml +++ b/docs/_data/ko/toc_text.yml @@ -3,59 +3,4 @@ # For documentation, see https://developer.shotgunsoftware.com/tk-doc-generator/authoring/toc/ # -reference: 참조 -guides: 가이드 -trusted-solutions: 신뢰할 수 있는 솔루션 - -rv: RV -toolkit: 툴킷 -shotgun: ShotGrid -review: 리뷰 -quick-answers: 빠른 답변 -pipeline-integrations: 파이프라인 통합 - -python-api: Python API 설명서 -rest-api: REST API -event-triggers: 이벤트 구동 트리거 작성 -action-menu-items: 커스텀 액션 메뉴 항목 생성 -jira-bridge-guide: Jira 및 ShotGrid 간 데이터 동기화 -jira-bridge-ref: Jira 브리지 Dev 리소스 -examples: 예 -webinars: 웨비나 녹화 -developer-training-videos: 개발자 교육 동영상  -episodic-pipeline-tutorial: 에피소드 파이프라인 튜토리얼 - -core-api: Toolkit Core API -qt-widgets: QT Widgets -shotgun-utils: ShotGrid Utils -publish-api: 게시 API -hiero-export-api: Hiero 내보내기 API -development: 개발 -app-development: 앱 개발 -engine-development: 엔진 개발 -file-system-configuration: 파일 시스템 구성 - -rv-user-manual: RV 사용자 매뉴얼 -technical-reference: 기술 참조 -rv-technical-reference: RV 기술 참조 -rv-sdi: RV-SDI -forums: 포럼 - -rv-maya-integration: RV/Maya 통합 -rv-nuke-integration: RV/Nuke 통합 -rv-shotgrid-integration: RV ShotGrid 통합 -maya: Maya -nuke: Nuke -shotgun: ShotGrid -screening-room-and-shotgun-review: Screening Room 및 ShotGrid Review -troubleshooting: 문제 해결 가이드 -extending-rv: RV 확장 - -videos: 동영상 -siggraph-shotgun-day: SIGGRAPH ShotGrid Day -toolkit-webinars: 툴킷 웨비나 - -other: 기타 -community: 커뮤니티 -service-status: 서비스 상태 -shotgrid-documentation: ShotGrid 설명서 \ No newline at end of file +test: test \ No newline at end of file diff --git a/docs/_data/toc.yml b/docs/_data/toc.yml index e449d1518..cf4a04041 100644 --- a/docs/_data/toc.yml +++ b/docs/_data/toc.yml @@ -9,233 +9,4 @@ # languages. For more info, see https://github.com/untra/polyglot#disabling-url-relativizing # -- caption: getting-started - -- caption: guides - children: - - page: toolkit-pipeline-integrations - children: - - page: integrations-user-guide - - page: toolkit-getting-started - children: - - page: toolkit-guides-advanced-config - - page: toolkit-guides-editing-config - - page: toolkit-guides-adding-app - - page: toolkit-guides-filesystem-configuration - - page: toolkit-workflows - children: - - page: toolkit-pipeline-tutorial - - page: episodic-nuke-tutorial - - page: toolkit-administration - children: - - page: toolkit-overview - - page: integrations-admin-guide - - page: beyond-your-first-project - - page: advanced-toolkit-administration - - page: config-staging-and-rollout - - page: setting-python-3-desktop - - page: community-shared-integrations - - page: other-integrations - - page: turn-off-auto-updates-and-offline - - page: toolkit-fs-config-ref - - page: toolkit-apps-and-engines-config-ref - - page: toolkit-development - children: - - page: sgtk-developer-getting-started - - page: sgtk-developer-guide - - page: sgtk-developer-generating-path-and-publish - - page: sgtk-developer-bootstrapping - - page: sgtk-developer-app - - page: sgtk-developer-engine - - page: sgtk-developer-framework - - page: sgtk-how-to-submit-fixes - - page: quick-answers-troubleshooting - - page: review - children: - - page: rv-developer-overview - - text: rv-user-manual - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_user_manual_html" - - text: rv-sdi - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_rv_sdi_manual_html" - - text: rv-maya-integration - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_maya_integration_html" - - text: rv-nuke-integration - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_knowledge_base_rv_nuke_integration_html" - - text: rv-shotgrid-integration - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_packages_rv_integrations_7_3_0_html" - - page: event-daemon - children: - - page: event-daemon-installation - - page: event-daemon-configuration - - page: event-daemon-plugins - - page: event-daemon-api - - page: event-daemon-technical-details - - page: event-daemon-example-plugins - - page: action-menu-items-intro - children: - - page: action-menu-items-create - - page: custom-browser-protocols - - text: jira-bridge-guide - url: " https://developer.shotgridsoftware.com/sg-jira-bridge/index.html" - - page: shotgun-webhooks - children: - - page: webhooks-batch-deliveries - - page: python-3-best-practices - -- caption: reference - children: - - page: developer-overview - - page: python-api-intro - children: - - page: python-api-overview - - page: python-api-best-practices - - page: python-api-permissions - - page: python-api-create-manage - - text: python-api - url: " https://developer.shotgridsoftware.com/python-api/" - - text: rest-api - url: " https://developer.shotgridsoftware.com/rest-api/" - - text: core-api - url: " https://developer.shotgridsoftware.com/tk-core" - - text: jira-bridge-ref - url: " https://developer.shotgridsoftware.com/sg-jira-bridge/developer.html" - - text: rv-technical-reference - url: " https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_reference_manual_html" - - page: pipeline-integrations-reference - children: - - page: toolkit-apis - children: - - text: publish-api - url: " https://developer.shotgridsoftware.com/tk-multi-publish2/" - - text: hiero-export-api - url: " https://developer.shotgridsoftware.com/tk-hiero-export" - - page: toolkit-apps - children: - - page: tk-multi-about - - page: tk-multi-breakdown - - page: tk-multi-demo - - page: tk-multi-launchapp - - page: tk-multi-loader2 - - page: tk-multi-publish2 - - page: tk-multi-pythonconsole - - page: tk-multi-reviewsubmission - - page: tk-multi-screeningroom - - page: tk-multi-setframerange - - page: tk-multi-shotgunpanel - # No docs for the Mari project manager, but we'll keep it here - # for if we get to putting basic docs together for it in the - # future. - # - page: tk-multi-snapshot - - page: tk-multi-workfiles2 - - page: tk-hiero-export - - page: tk-hiero-openinshotgun - - page: tk-mari-projectmanager - - page: tk-nuke-quickreview - - page: tk-nuke-writenode - - page: tk-multi-snapshot - - page: tk-shotgun-folders - - page: tk-shotgun-launchfolder - - page: tk-shotgun-launchpublish - - page: tk-flame-export - - page: tk-flame-review - - page: tk-houdini-alembicnode - - page: tk-houdini-mantranode - # No docs for the Mari project manager, but we'll keep it here - # for if we get to putting basic docs together for it in the - # future. - # - page: tk-mari-projectmanager - - page: toolkit-engines - children: - - page: tk-3dsmax - - page: tk-3dsmax-plus - - page: tk-aftereffects - - page: tk-alias - - page: tk-create - - page: tk-desktop - - page: tk-flame - - page: tk-houdini - - page: tk-mari - - page: tk-maya - - page: tk-motionbuilder - - page: tk-nuke - - page: tk-photoshopcc - - page: tk-shell - - page: tk-shotgun - - page: tk-softimage - - page: tk-vred - - page: toolkit-engines-supported-versions - - page: toolkit-engines-supported-os - - page: toolkit-frameworks - children: - - text: qt-widgets - url: " https://developer.shotgridsoftware.com/tk-framework-qtwidgets/" - - text: shotgun-utils - url: " https://developer.shotgridsoftware.com/tk-framework-shotgunutils/" - - page: tk-framework-adminui - - page: tk-framework-desktopstartup - - page: tk-framework-desktopserver - - page: toolkit-configuration - children: - - text: file-system-configuration - url: " https://developer.shotgridsoftware.com/82ff76f7/" - - page: toolkit-config-ref - -- caption: trusted-solutions - children: - - page: cloud-index - - page: tier1-index - children: - - page: tier1-getting_started - children: - - page: tier1-getting_started-about - - page: tier1-getting_started-responsibilities - - page: tier1-getting_started-onboarding - - page: tier1-features - children: - - page: tier1-features-media-isolation - - page: tier1-features-media-traffic-isolation - - page: tier1-features-web-traffic-isolation - - page: tier1-features-media-replication - - page: tier1-setup - children: - - page: tier1-getting_started-planning - - page: tier1-setup-shotgun_poc_site - - page: tier1-setup-s3_bucket - - page: tier1-setup-media_segregation - - page: tier1-setup-media_segregation_s3_proxy - - page: tier1-setup-traffic_segregation - - page: tier1-setup-s3_replication - - page: tier1-setup-tuning - - page: tier1-setup-migration - - page: tier1-knowledge - children: - - page: tier1-knowledge-connecting - - page: tier1-knowledge-direct_connect_onboarding - - page: tier1-knowledge-s3 - - page: tier1-knowledge-vpc_iam_sec - - page: tier1-knowledge-direct_connect - - page: tier1-knowledge-private_link - - page: tier1-knowledge-endpoints - - page: tier1-knowledge-aws - -- caption: quick-answers - children: - - page: quick-answers-administering - - page: quick-answers-developing - - page: quick-answers-workflow - -- caption: videos - children: - - text: siggraph-shotgun-day - url: " https://www.youtube.com/playlist?list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d" - - page: video-webinars - -- caption: other - children: - - text: community - url: " https://community.shotgridsoftware.com/" - - page: contribution-index - - text: service-status - url: " https://status.shotgridsoftware.com/" - - text: shotgrid-documentation - url: " https://help.autodesk.com/view/SGSUB/ENU/" +- page: test diff --git a/docs/_data/zh_CN/toc_text.yml b/docs/_data/zh_CN/toc_text.yml index 29f65b0a0..7815741d3 100644 --- a/docs/_data/zh_CN/toc_text.yml +++ b/docs/_data/zh_CN/toc_text.yml @@ -3,59 +3,4 @@ # For documentation, see https://developer.shotgunsoftware.com/tk-doc-generator/authoring/toc/ # -reference: 参考 -guides: 手册 -trusted-solutions: 可信的解决方案 - -rv: RV -toolkit: Toolkit -shotgun: ShotGrid -review: 审核 -quick-answers: 快速解答 -pipeline-integrations: 工作流集成 - -python-api: Python API 文档 -rest-api: REST API -event-triggers: 编写事件驱动的触发器 -action-menu-items: 创建自定义的动作菜单项 -jira-bridge-guide: 在 Jira 与 ShotGrid 之间同步数据 -jira-bridge-ref: Jira 桥接开发资源 -examples: 示例 -webinars: 网络讲座录像 -developer-training-videos: 开发人员培训视频 -episodic-pipeline-tutorial: 剧集工作流教程 - -core-api: Toolkit 核心 API -qt-widgets: QT 控件 -shotgun-utils: ShotGrid 实用程序 -publish-api: 发布 API -hiero-export-api: Hiero 导出 API -development: 开发 -app-development: 应用开发 -engine-development: 插件开发 -file-system-configuration: 文件系统配置 - -rv-user-manual: RV 用户手册 -technical-reference: 技术参考 -rv-technical-reference: RV 技术参考 -rv-sdi: RV-SDI -forums: 论坛 - -rv-maya-integration: RV Maya 集成 -rv-nuke-integration: RV Nuke 集成 -rv-shotgrid-integration: RV ShotGrid 集成 -maya: Maya -nuke: Nuke -shotgun: ShotGrid -screening-room-and-shotgun-review: 审片室和 ShotGrid 审看 -troubleshooting: 故障排除指南 -extending-rv: 扩展 RV - -videos: 视频 -siggraph-shotgun-day: SIGGRAPH ShotGrid 日 -toolkit-webinars: Toolkit 网络讲座 - -other: 其他 -community: 社区 -service-status: 服务状态 -shotgrid-documentation: ShotGrid 文档 +test: test \ No newline at end of file diff --git a/docs/en/action-menu-items/action-menu-items-create.md b/docs/en/action-menu-items/action-menu-items-create.md deleted file mode 100644 index 25f9ce7df..000000000 --- a/docs/en/action-menu-items/action-menu-items-create.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: default -title: Custom Action Menu Items -pagename: action-menu-items-create -lang: en ---- - -# Custom Action Menu Items - -API developers can customize context menu items on a per-entity basis, through Action Menu Items (AMIs). For example, from a Versions page, you could select multiple versions, right-click, then choose “Build a PDF Report.” - -![Report](./images/dv-custom-amis-01-report-01.png) - -## Action Menu Item fields - - - -## Types of Action Menu items - -There are two types of menu items you can create: - -## HTTP URL example - -As an example, you can create a custom menu item called “Build PDF Report.” This will allow people to go to any Versions page, select one or more Versions, right-click, and then choose “Build PDF Report” from the {% include product %} menu. Doing this will launch a script, which you must create, to get a nicely formatted report sent back to their browser. Here's how it works: - -### Create the menu item via the UI - -![AMI menu](./images/dv-custom-amis-04-ami-menu-03.png) - - -From the settings menu, choose Action Menu Items to open the AMI Admin page. - -To create a new AMI, click on ![Add AMI](./images/dv-custom-amis-05-add-ami-04.png). - -Fill out the Title and any other required fields, and click on “Create Action Menu Item.” - -### What happens when a user clicks on the AMI? - -{% include product %} dispatches a POST request in a new window, or in a modal dialog if that option was selected, and sends along data from the current page (as part of the POST request) to the receiving URL. Here's an example of the workflow. - -* User navigates to a Versions page -* User selects one or more Versions -* User brings up the context menu (by right-clicking or clicking on the gear menu in the toolbar) -* User clicks ‘Build PDF Report’ -* {% include product %} dispatches a POST request to the AMI’s URL in a new window (If your {% include product %} server is served over HTTPS, and your URL is served over HTTP, expect to see a browser warning) -* Your script, located at the URL specified, processes the POST data, and generates a PDF document -* A nicely formatted PDF report is sent back to the user for viewing or download - -## Custom protocol handler example - -A more advanced implementation of custom AMIs involves setting up a custom protocol handler (e.g., {% include product %}://process_version). This allows you to bridge {% include product %} with applications like Maya, RV, or Cinesync via a script on your local computer. When you specify a non HTTP(S) protocol, data is sent via GET instead of POST to your URL. You may want to use this to launch an in-house tool to dispatch different requests. - -Read more about custom protocols in [Launching Applications Using Custom Browser Protocols](https://developer.shotgridsoftware.com/67695b40/). - -> **Note:** We also have built-in integration with Maya and other software packages via [{% include product %} integrations](https://developer.shotgridsoftware.com/d587be80/) . -### Light payload - -When using custom protocols, the query information is sent as a GET request. Certain operating system and browser combinations have varying limitations of the size of the GET request they allow. We suggest enabling the light payload checkbox on custom protocol AMIs. With light payload checked, your script will receive a single event log entry ID that it can fetch to get the full payload from by reading the `ami_payload` key of the record's `meta` field. - -## Examples - -Here are some related example scripts to help get you started: - -* [Handling ActionMenuItem Calls](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) -* [Version Packager](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_version_packager.html) - -## Payload contents - -### User data - -* **user_id:** The user ID of the currently logged in user (e.g., 34) -* **user_login:** The login of the currently logged in user (e.g., joe) - -### Entity data - -* **entity_type:** The entity type of the current page or view (e.g., Version) -* **selected_ids:** A comma-separated list of the selected entity IDs (e.g., 931, 900) -* **ids:** A comma-separated list of all IDs of the entities returned by the current page's query. This returns ALL IDs, including those that aren't visible due to pagination. (e.g., 931, 900, 904, 907). If "Selection required" was checked on the AMI, this value will be the same as **selected_ids** . - -### Page data - -* **title:** The page title (e.g., "All Versions") -* **page_id:** The ID of the page from which the action menu item was clicked (e.g., 1353) -* **server_hostname:** The hostname of the system where the AMI was triggered. Can be useful if you have multiple servers invoking the same AMIs like a staging and a production server. -* **referrer_path:** the canonical path of the URL where the AMI was invoked. -* **session_uuid:** The unique identifier for the window where this AMI was invoked. This can be used with the “Poll for Data Updates” checkbox and the Python API's [`set_session_uuid`](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid) method to broadcast back information to the page where the AMI was invoked. **Note:** This feature’s polling for updates falls off exponentially and eventually stops so if your AMI doesn’t update before polling stops, you may not see any updates in your source page. -* **cols:** A comma-separated list of system field names of all the visible columns on the page (e.g., code, sg_status_list, description) -* **column_display_names:** A comma-separated list of display names of all the visible columns on the page (e.g., Version, Status, Description) -* **view:** The view that was selected when the AMI was invoked. Multiple views can be created for any given page via the design page mode. -* **sort_column:** The system name of the column that was sorted by (e.g., code). Only sends the first sort key if there are multiple, see **sort_columns** -* **sort_direction:** (e.g., asc or desc) Only sends the first sort direction if there are multiple, see **sort_directions** -* **sort_columns:** A comma separated list of the system names of the columns that the page or view was sorted by (e.g., code,created_at). Only sent if there are multiple sorting keys -* **sort_directions:** A comma separated list of the system names of the columns that the page or view was sorted by (e.g., code, created_at). Only sent if there are multiple sorting keys -* **grouping_column:** The system name of the column that was grouped by (e.g., code). Only sends the first grouping column if there are multiple, see **grouping_columns** -* **grouping_method:** The method the by which the grouping occurs (e.g. grouping by `entitytype` for an entity field or `month` for a date field). Only sends the first grouping method if there are multiple, see **grouping_columns** -* **grouping_direction:** The grouping direction (e.g., asc or desc) Only sends the first grouping direction if there are multiple, see **grouping_directions** -* **grouping_columns:** A comma separated list of system names of the columns that the data was grouped by (e.g., code,created_at). Only sent if there are multiple grouping columns -* **grouping_methods:** A comma separated list of grouping methods (e.g., entity_type,month). Only sent if there are multiple grouping columns -* **grouping_directions:** A comma separated list of grouping directions (e.g., asc,desc). Only sent if there are multiple grouping columns - -### Project data (only sent if all entities on the current page share the same project) - -* **project_name:** The name of the Project (e.g., Gunslinger) -* **project_id:** The ID of the Project (e.g., 81) \ No newline at end of file diff --git a/docs/en/action-menu-items/action-menu-items-intro.md b/docs/en/action-menu-items/action-menu-items-intro.md deleted file mode 100644 index d626989f3..000000000 --- a/docs/en/action-menu-items/action-menu-items-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Action Menu Items -pagename: action-menu-items-intro -lang: en ---- - -# Action Menu Items - -This section contains information about creating custom Action Menu Items (AMIs) and launching applications using custom browser protocols. \ No newline at end of file diff --git a/docs/en/action-menu-items/custom-browser-protocols.md b/docs/en/action-menu-items/custom-browser-protocols.md deleted file mode 100644 index 0347eff83..000000000 --- a/docs/en/action-menu-items/custom-browser-protocols.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -layout: default -title: Launching Applications Using Custom Browser Protocols -pagename: custom-browser-protocols -lang: en ---- - -# Launching Applications Using Custom Browser Protocols - -## Content - -- [Registering a protocol](#registering-a-protocol) - - [Registering a protocol on Windows](#registering-a-protocol-on-windows) - - [Registering a protocol on OSX](#registering-a-protocol-on-osx) - - [Registering a protocol on Linux](#registering-a-protocol-on-linux) - -A very practical version of an [Action Menu Item]() (AMI) is a variant that will run an application or a script on your local computer. For this to work you need to set up a connection between your browser and the script or application you wish to run. This link is called a custom browser protocol. - -You may want to set up a type of link where if a user clicks on it, it will launch the [foo] application. Instead of having ‘http’ as the prefix, you need to designate a custom protocol, such as ‘foo’. Ideally you want a link that looks like: -``` -foo://some/info/here -``` - -The operating system has to be informed how to handle protocols. By default, all of the current operating systems know that ‘http’ should be handled by the default web browser, and ‘mailto’ should be handled by the default mail client. Sometimes when applications are installed, they register with the OS and tell it to launch the applications for a specific protocol. - -As an example, if you install RV, the application registers `rvlink://` with the OS and tells it that RV will handle all `rvlink://` protocol requests to show an image or sequence in RV. So when a user clicks on a link that starts with `rvlink://` , as you can do in {% include product %}, the operating system will know to launch RV with the link and the application will parse the link and know how to handle it. - -See the [RV User Manual for more information about how RV can act as a protocol handler](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_user_manual_rv_user_manual_chapter_c_html#c-2-installing-the-protocol-handler) for URLs and the “rvlink” protocol. - -# Registering a protocol - -## Registering a protocol on Windows - -On Windows, registering protocol handlers involves modifying the Windows Registry. Here is a generic example of what you want the registry key to look like: - -``` -HKEY_CLASSES_ROOT -foo -(Default) = "URL:foo Protocol" -URL Protocol = "" -shell -open -command (Default) = "foo_path" "%1" -``` -The target URL would look like: - -``` -foo://host/path... -``` - -> **Note:** For more information, please see [http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx](http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx) . -**Windows QT/QSetting example** - -If the application you are developing is written using the QT (or PyQT / PySide) framework, you can leverage the QSetting object to manage the creation of the registry keys for you. - -This is what the code looks like to automatically have the application set up the registry keys: - -``` -// cmdLine points to the foo path. -//Add foo to the Os protocols and set foobar to handle the protocol -QSettings fooKey("HKEY_CLASSES_ROOT\\foo", QSettings::NativeFormat); -mxKey.setValue(".", "URL:foo Protocol"); -mxKey.setValue("URL Protocol", ""); -QSettings fooOpenKey("HKEY_CLASSES_ROOT\\foo\\shell\\open\\command", QSettings::NativeFormat); -mxOpenKey.setValue(".", cmdLine); -``` - -**Windows example that starts a Python script via a {% include product %} AMI** - -A lot of AMIs that run locally may opt to start a simple Python script via the Python interpreter. This allows you to run simple scripts or even apps with GUIs (PyQT, PySide or your GUI framework of choice). Let’s look at a practical example that should get you started in this direction. - -**Step 1: Set up the custom “{% include product %}” protocol** - -Using Windows Registry Editor: - -``` -[HKEY_CLASSES_ROOT\{% include product %}] -@="URL:{% include product %} Protocol" -"URL Protocol"="" -[HKEY_CLASSES_ROOT\{% include product %}\shell] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open\command] -@="python""sgTriggerScript.py""%1" -``` - -This setup will register the `{% include product %}://` protocol to launch the `python` interpreter with the first argument being the script `sgTriggerScript.py` and the second argument being `%1` . It is important to understand that `%1` will be replaced by the URL that was clicked in the browser or the URL of the AMI that was invoked. This will become the first argument to your Python script. - -> **Note:** You may need to have full paths to your Python interpreter and your Python script. Please adjust accordingly. - -**Step 2: Parse the incoming URL in your Python script** - -In your script you will take the first argument that was provided, the URL, and parse it down to its components in order to understand the context in which the AMI was invoked. We’ve provided some simple scaffolding that shows how to do this in the following code. - -**Python script** - -``` -import sys -import urlparse -import pprint -def main(args): - # Make sure we have only one arg, the URL - if len(args) != 1: - return 1 - # Parse the URL: - protocol, fullPath = args[0].split(":", 1) - path, fullArgs = fullPath.split("?", 1) - action = path.strip("/") - args = fullArgs.split("&") - params = urlparse.parse_qs(fullArgs) - # This is where you can do something productive based on the params and the - # action value in the URL. For now we'll just print out the contents of the - # parsed URL. - fh = open('output.txt', 'w') - fh.write(pprint.pformat((action, params))) - fh.close() -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) -``` - -**Step 3: Connect the {% include product %} interface with your custom protocol and ultimately, your script** - -Finally, create an AMI in {% include product %} whose URL value will be `shotgrid://processVersion` . You can assign this AMI to any entity type you wish, but this example uses the Version entity. - -Go to a Version page, right-click on a version and select your AMI from the menu. This should make your browser open a `shotgrid://` URL which will be redirected to your script via the registered custom protocol. - -In the `output.txt` file in the same directory as your script you should now see something like this: -``` -('processVersion', - {'cols': ['code', - 'image', - 'entity', - 'sg_status_list', - 'user', - 'description', - 'created_at'], - 'column_display_names': ['Version Name', - 'Thumbnail', - 'Link', - 'Status', - 'Artist', - 'Description', - 'Date Created'], - 'entity_type': ['Version'], - 'ids': ['6933,6934,6935'], - 'page_id': ['4606'], - 'project_id': ['86'], - 'project_name': ['Test'], - 'referrer_path': ['/detail/HumanUser/24'], - 'selected_ids': ['6934'], - 'server_hostname': ['patrick.shotgunstudio.com'], - 'session_uuid': ['9676a296-7e16-11e7-8758-0242ac110004'], - 'sort_column': ['created_at'], - 'sort_direction': ['asc'], - 'user_id': ['24'], - 'user_login': ['shotgun_admin'], - 'view': ['Default']}) -``` - -**Possible variants** - -By varying the keyword after the `//` part of the URL in your AMI, you can change the contents of the `action` variable in your script, all the while keeping the same `shotgrid://` protocol and registering only a single custom protocol. Then, based on the content of the `action` variable and the contents of the parameters, your script can understand what the intended behavior should be. - -Using this methodology you could open applications, upload content via services like FTP, archive data, send email, or generate PDF reports. - -## Registering a protocol on OSX - -To register a protocol on OSX you need to create a .app bundle that is configured to run your application or script. - -Start by writing the following script in the AppleScript Script Editor: - -``` -on open location this_URL - do shell script "sgTriggerScript.py '" & this_URL & "'" -end open location -``` - -> **Tip:** To ensure you are running Python from a specific shell, such as tcsh, you can change the do shell script for something like the following: -> -> do shell script "tcsh -c \"sgTriggerScript.py '" & this_URL & "'\"" -In the Script Editor, save your short script as an “Application Bundle”. - -Find the saved Application Bundle, and Open Contents. Then, open the info.plist file and add the following to the plist dict: -``` - CFBundleIdentifier - com.mycompany.AppleScript.Shotgun - CFBundleURLTypes - - - CFBundleURLName - Shotgun - CFBundleURLSchemes - - shotgun - - - -``` - -You may want to change the following three strings: -``` -com.mycompany.AppleScript.{% include product %} -{% include product %} -{% include product %} -``` - -The third string is the protocol handler; therefore a URL would be: - -``` -shotgrid://something -``` - - -Finally, move your `.app` bundle to the Applications folder of your Mac. Then double click on it—that will register your protocol with the operating system. - -The data flow looks like this: once you click the AMI in {% include product %}, or click a URL that starts with `shotgrid://` , the `.app` bundle will respond to it and pass the URL over to your Python script. At this point the same script that was used in the Windows example can be used and all the same possibilities apply. - -## Registering a protocol on Linux - -Use the following code: -``` -gconftool-2 -t string -s /desktop/gnome/url-handlers/foo/command 'foo "%s"' -gconftool-2 -s /desktop/gnome/url-handlers/foo/needs_terminal false -t bool -gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled true -t bool -``` -Then use the settings from your local GConf file in the global defaults in: -``` -/etc/gconf/gconf.xml.defaults/%gconf-tree.xml -``` - -Even though the change is only in the GNOME settings, it also works for KDE. Firefox and GNU IceCat defer to gnome-open regardless of what window manager you are running when it encounters a prefix it doesn’t understand (such as `foo://` ). So, other browsers, like Konqueror in KDE, won’t work under this scenario. - -See [http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity](http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity) for more information on setting up protocol handlers for Action Menu Items in Ubuntu. \ No newline at end of file diff --git a/docs/en/action-menu-items/images/dv-asterisk.png b/docs/en/action-menu-items/images/dv-asterisk.png deleted file mode 100644 index c2fbed5a7..000000000 Binary files a/docs/en/action-menu-items/images/dv-asterisk.png and /dev/null differ diff --git a/docs/en/action-menu-items/images/dv-custom-amis-01-report-01.png b/docs/en/action-menu-items/images/dv-custom-amis-01-report-01.png deleted file mode 100644 index ce8d1afd6..000000000 Binary files a/docs/en/action-menu-items/images/dv-custom-amis-01-report-01.png and /dev/null differ diff --git a/docs/en/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png b/docs/en/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png deleted file mode 100644 index 78e0f7891..000000000 Binary files a/docs/en/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png and /dev/null differ diff --git a/docs/en/action-menu-items/images/dv-custom-amis-05-add-ami-04.png b/docs/en/action-menu-items/images/dv-custom-amis-05-add-ami-04.png deleted file mode 100644 index 3d251845e..000000000 Binary files a/docs/en/action-menu-items/images/dv-custom-amis-05-add-ami-04.png and /dev/null differ diff --git a/docs/en/contribution.md b/docs/en/contribution.md deleted file mode 100644 index 8cdc9d512..000000000 --- a/docs/en/contribution.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: Contribution Guide -pagename: contribution-index -lang: en ---- - -# Contribution Guide - -In our efforts to work as openly as possible, we have decided to build our developer documentation in a public repository under a [Creative Commons license](https://github.com/shotgunsoftware/developer-beta/blob/master/LICENSE.md). If you see a way to make this documentation better, we would love to get a pull request for the repo with improvements. In order to accept a pull request, we need to have one of the following contributor agreements signed by you: - -- [Individual Contribution Agreement](../all_langs/contribution/ind_contrib_agmt_for_shotgun_developer_documentation.pdf) -- [Corporate Contribution Agreement](../all_langs/contribution/corp_contrib_agmt_for_shotgun_developer_documentation.pdf) - -Once you have submitted one of the above agreements, you can follow the instructions in the [README](https://github.com/shotgunsoftware/developer-beta/#Making-a-change-to-the-documentation) on how to submit a change. diff --git a/docs/en/developer-overview.md b/docs/en/developer-overview.md deleted file mode 100644 index e226f7049..000000000 --- a/docs/en/developer-overview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Developer Overview -pagename: developer-overview -lang: en ---- - -# Developer Overview - -### Python API - -{% include product %} software provides a Python-based API for accessing {% include product %} and integrating with other tools. The API follows the CRUD pattern allowing execution of Create, Read, Update, and Delete actions on the {% include product %} server. Each request acts on a single entity type and depending on the specific action, can define filters, columns to return, sorting information, and some additional options. - -* [Code Repository](https://github.com/shotgunsoftware/python-api) -* [Documentation](http://developer.shotgridsoftware.com/python-api/) -* [Forums](https://community.shotgridsoftware.com/c/pipeline/6) - -### Event Trigger Framework - -When you want to access the {% include product %} event stream, the preferred way to do so is 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. - -The role of the framework is to keep any tedious monitoring tasks out of the hands of the business logic implementor. - -The framework is a daemon process that runs on a server and monitors the {% include product %} event stream. When events are found, the daemon hands the events out to a series of registered plugins. Each plugin can process the event as it wishes. - -* [Code Repository](https://github.com/shotgunsoftware/shotgunevents) -* [Documentation](https://github.com/shotgunsoftware/shotgunevents/wiki) - -### Action Menu Item Framework - -API developers can customize context menu items on a per-entity basis. For example, from a Versions page, you could select multiple versions, right-click, then.... Build a PDF Report (for example). We call these ActionMenuItems (AMI's). - -* [Documentation]() -* [Example Code Repository](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) diff --git a/docs/en/event-daemon/event-daemon-api.md b/docs/en/event-daemon/event-daemon-api.md deleted file mode 100644 index f644b4735..000000000 --- a/docs/en/event-daemon/event-daemon-api.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default -title: API -pagename: event-daemon-api -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. - - - -## 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. - -### Attributes - - -**logger** - -See [`getLogger`](#getLogger). - -### Methods - - -**getLogger** - -Get the python Logger object used to log messages from within the plugin. - - - -__setEmails(*emails)__ - -Set the emails that should receive error and critical notices when something bad happens in this plugin or any of its callbacks. - -To send emails to default addresses as specified in the configuration file (default) - -```python -reg.setEmails(True) -``` - -To disable emails (this is not suggested as you won't get error messages) - -```python -reg.setEmails(False) -``` - -To send emails to specific addresses use - -```python -reg.setEmails('user1@domain.com') -``` - -or - -```python -reg.setEmails('user1@domain.com', 'user2@domain.com') -``` - - -**registerCallback(sgScriptName, sgScriptKey, callback, matchEvents=None, args=None, stopOnError=True)** - -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`. - -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. - -The `sgScriptKey` is used to identify the plugin to {% include product %} and should be the appropriate key for the specified `sgScriptName`. - -The specified callback object will be invoked when an event that matches your filter needs processing. Although any callable should be able to run, using a class here is not suggested. Use of a function or an instance with a `__call__` method is more appropriate. - -The `matchEvent` argument is a filter that allows you to specify which events the callback being registered is interrested in. If `matchEvents` is not specified or None is specified, all events will be passed to the callback. Otherwise each key in the `matchEvents` filter is an event type while each value is a list of possible attribute names. - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], -} -``` - -You can have multiple event types or attribute names - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], - 'Shotgun_Version_Change': ['description', 'sg_status_list'] -} -``` - -You can filter on any event type that has a given attribute name - -```python -matchEvents = { - '*': ['sg_status_list'], -} -``` - -You can also filter on any attribute name for a given event type - -```python -matchEvents = { - 'Shotgun_Version_Change': ['*'] -} -``` - -Although the following is valid and functionally equivalent to specifying nothing, it's just really useless - -```python -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. - -```python -matchEvents = { - 'Shotgun_Version_New': None -} -``` - -The `args` argument will not be used by the event framework itself but will simply be passed back to your callback without any modification. - -{% include info title="Note" content="The point of the `args` argument is for you to be able to process time consuming stuff in the [`registerCallbacks`](#registerCallbacks) function and have it passed back to you at event processing time." %} - -Another use of the `args` argument could be to pass in a common mutable, a `dict` for example, to multiple callbacks to have them share data. - -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: - - -**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. - -{% 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 deleted file mode 100644 index 55b436262..000000000 --- a/docs/en/event-daemon/event-daemon-configuration.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -layout: default -title: Configuration -pagename: event-daemon-configuration -lang: en ---- - -# Configuration - -The following guide will help you configure {% include product %}Events for your studio. - -Most of the configuration for {% include product %}Events is controlled by the `shotgunEventDaemon.conf` file. In this file, you'll find several settings you can modify to match your needs. Most of them have defaults that will work fine for most studios, however, there are some settings that must be configured (specifically, your {% include product %} server URL, script name, and application key so the {% include product %}EventDaemon can connect to your {% include product %} server). - -{% 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. - -The items you *must* provide are: - -- your {% include product %} server URL -- the Script name and Application key for connecting to {% include product %} -- the full path to your plugins for the {% include product %}EventDaemon to run - -Optionally, you can also specify an SMTP server and email-specific settings in order to setup email notification for errors. While this is optional, if you choose to set this up, you must provide all of the configuration values in the email section. - -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 %}. - -Example - -``` -server: https://awesome.shotgunstudio.com -name: {% include product %}EventDaemon -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 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. - -Example - -``` -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. - -{% include info title="Note" content="If for some reason the above won't work for you, the search paths for the config file are located in the `_getConfigPath()` function at the bottom of the `shotgunEventDaemon.py` script" %} - -{% 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. - -{% include info title="Note" content="The default values used here may require root access (for example, to write to the/var/log directory). The examples provided use are run using `sudo` to accommodate this." %} - -``` -$ sudo ./{% include product %}EventDaemon.py foreground -INFO:engine:Using {% include product %} version 3.0.8 -INFO:engine:Loading plugin at /usr/local/shotgun/{% include product %}Events/src/examplePlugins/logArgs.py -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. - -{% 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 - -``` -logging: 20 -``` - -and the logArgs plugin is also configured to show INFO level messages. There is a line at the end of the registerCallbacks() method that should read - -```python -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. - -``` -$ sudo ./{% include product %}EventDaemon.py start -``` - -You should see no output and control should have been returned to you in the terminal. We can make sure that things are running well in two ways. The first would be to check the running processes and see if this is one of them. - -``` -$ ps -aux | grep shotgunEventDaemon -kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 grep shotgunEventDaemon -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. - -``` -$ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -``` - -Go back to your web browser and make some changes to an entity. Then head back to the terminal and look for output. You should see something like the following - -``` -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -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. - - -### 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. - -### Invalid path: $PLUGIN_PATHS$ - -You need to specify the path to your plugins in the shotgunEventDaemon.conf file. - -### Permission denied: '/var/log/shotgunEventDaemon' - -The daemon couldn't open the log file for writing. - -You may need to run the daemon with `sudo` or as a user that has permissions to write to the log file specified by the `logPath` and `logFile` settings in shotgunEventDaemon.conf. (the default location is `/var/log/shotgunEventDaemon` which is usually owned by root. - -### ImportError: No module named shotgun_api3 - -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(?) - - -## List of Configuration File Settings - - -### Daemon Settings - -The following are general daemon operational settings. - -**pidFile** - -The pidFile is the location where the daemon will store its process id while it is running. If this file is removed while the daemon is running, it will shut down cleanly after the next pass through the event processing loop. - -The directory must already exist and be writable. You can name the file whatever you like but we strongly recommend you use the default name as it matches with the process that is running - -``` -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. - -This file keeps track of the last event id for *each* plugin and stores this information in pickle format. - -``` -eventIdFile: /var/log/shotgunEventDaemon.id -``` - -**logMode** - -The logging mode can be set to one of two values: - -- **0** = all log messages in the main log file -- **1** = one main file for the engine, one file per plugin - -When using a value of **1**, the log messages generated by the engine itself will be logged to the main log file specified by the `logFile` config setting. Any messages logged by a plugin will be placed in a file named `plugin.`. - -``` -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. - -``` -logPath: /var/log/shotgunEventDaemon -``` - -{% include info title="Note" content="The shotgunEventDaemon will have to have write permissions for this directory. In a typical setup, the daemon is set to run automatically when the machine starts up and is given root privileges at that point." %} - -**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. - -``` -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 -- **40:** Error -- **50:** Critical - -``` -logging: 20 -``` - -**timing_log** - -Enabling timing logging by setting this value to `on` will generate a separate log file with timing information which should make troubleshooting performance issues with your daemon simpler. - -The timing information provided for each callback invocation is as follows: - -- **event_id** The id of the event that triggered the callback -- **created_at** The timestamp in ISO format when the event was created in {% include product %} -- **callback** The name of the invoked callback in `plugin.callback` format -- **start** The timestamp in ISO format of the start of callback processing -- **end** The timestamp in ISO format of the end of callback processing -- **duration** The duration in `DD:HH:MM:SS.micro_second` format of the callback processing time -- **error** If the callback failed or not. The value can be `False` or `True`. -- **delay** The duration in `DD:HH:MM:SS.micro_second` format of the delay between the event creation and the start of processing by the callback. - -**conn_retry_sleep** - -If the connection to {% include product %} fails, this is the number of seconds to wait until the connection is re-attempted. This allows for occasional network hiccups, server restarts, application maintenance, etc. - -``` -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). - -``` -max_conn_retries = 5 -``` - -**fetch_interval** - -The number of seconds to wait before requesting new events after each batch of events is done being processed. This setting generally doesn't need to be adjusted. - -``` -fetch_interval = 5 -``` - - -### {% include product %} Settings - -The following are settings related to your {% include product %} instance. - -**server** - -The URL for the {% include product %} server to connect to. - -``` -server: %(SG_ED_SITE_URL)s -``` - -{% include info title="Note" content="There is no default value here. Set the `SG_ED_SITE_URL` environment variable to the URL for your ShotGrid server (ie. https://awesome.shotgunstudio.com)" %} - -**name** - -The {% include product %} Script name the {% include product %}EventDaemon should connect with. - -``` -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** - -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** - -Sets the session_uuid from every event in the {% include product %} instance to propagate in any events generated by plugins. This will allow the {% include product %} UI to display updates that occur as a result of a plugin. - -``` -use_session_uuid: True -``` - -- {% include product %} server v2.3+ is required for this feature. -- {% include product %} API v3.0.5+ is required for this feature. - -{% 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** - -A comma-delimited list of complete paths where the framework should look for plugins to load. Do not use relative paths. - -``` -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. - -Any error above level 40 (ERROR) will be reported via email if all of the settings are provided below. - -All of these values must be provided for there to be email alerts sent out. - -**server** - -The server that should be used for SMTP connections. The username and password values can be uncommented to supply credentials for the SMTP connection. If your server does not use authentication, you should comment out the settings for `username` and `password` - -``` -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** - -If your SMTP server requires authentication, uncomment this line and make sure you have configured the `SG_ED_EMAIL_USERNAME` environment variable with the username required to connect to your SMTP server. - -``` -username: %(SG_ED_EMAIL_USERNAME)s -``` - -**password** - -If your SMTP server requires authentication, uncomment this line and make sure you have configured the `SG_ED_EMAIL_PASSWORD` environment variable with the password required to connect to your SMTP server. - -``` -password: %(SG_ED_EMAIL_PASSWORD)s -``` - -**from** - -The from address that should be used in emails. - -``` -from: support@yourdomain.com -``` - -{% include info title="Note" content="There is no default value here. You must replace`support@yourdomain.com` with a valid value (ie. `noreply@mystudio.com`)." %} - -**to** - -A comma-delimited list of email addresses to whom these alerts should be sent. - -``` -to: you@yourdomain.com -``` - -{% include info title="Note" content="There is no default value here. You must replace `you@yourdomain.com` with a valid value (ie. `shotgun_admin@mystudio.com`)." %} - -**subject** - -An email subject prefix that can be used by mail clients to help sort out alerts sent by the {% include product %} event framework. - -``` -subject: [SG] -``` diff --git a/docs/en/event-daemon/event-daemon-example-plugins.md b/docs/en/event-daemon/event-daemon-example-plugins.md deleted file mode 100644 index 2a7c0b895..000000000 --- a/docs/en/event-daemon/event-daemon-example-plugins.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: Example Plugins -pagename: event-daemon-example-plugins -lang: en ---- - -# Example Plugins - -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 - -Author: You -Template Author: Andrew Britton -""" - -def registerCallbacks(reg): - # This takes the form of: - # matchEvents = {'Shotgun_Entity_EventType': ['list', 'of', 'field', 'names', 'you', 'need', 'sg_custom_field']} - # the 'id' is always returned, in addition to any fields specifically requested by your callback - matchEvents = { - 'Shotgun_Task_Change': ['content'] - } - - # script_name and script_key are defined by you whenever you create a SG script - # the entry_function_call refers to the function that performs the work of the event plugin - reg.registerCallback('script_name', 'script_key', entry_function_call, matchEvents, None) - - -# This gives you -# shotgun handle = sg -# a logger object... please use this instead of python print, especially if you respect your time and your fellow developers -# an event object... this is the metadata that describes what's happening with the particular event. -# some very good information comes from the event['meta'] object, below is the example event['meta'] data from the subject renamer plugin -# { -# "type": "attribute_change", -# "attribute_name": "subject", -# "entity_type": "Note", -# "entity_id": 2, -# "field_data_type": "text", -# "old_value": "My Note Subject", -# "new_value": "2017-05 May-09 - My Note Subject" -# } -def entry_function_call(sg, logger, event, args): - # Now do stuff - 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... -```python -import time -from pprint import pprint - -def registerCallbacks(reg): - matchEvents = { - 'Shotgun_Note_New': ['*'], - } - - reg.registerCallback('script_name', 'script_key', Function_Name, matchEvents, None) - - -def Function_Name(sg, logger, event, args): - # 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") - asset_id = event['meta']['entity_id'] - asset_type = event['meta']['entity_type'] - - asset = sg.find_one(asset_type, [['id', 'is', asset_id]], ['subject']) - if asset['subject'] is None: - current_name = current_date + ' - ' + event['project']['name'] + ' - ' + event['user']['name'] - else: - current_name = current_date + ' - ' + asset['subject'] - - # Modify ALL notes except those in 'Software Development' - if event['project'] == None: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - return - - if event['project']['id'] != 116: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - - else: - 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 - -""" -Create a Note when a field is deleted - -Author: Andrew Britton -""" - -def registerCallbacks(reg): - """ - fn: registerCallbacks - @brief required function. It connects to the event daemon and calls the trashedFieldWarning Function. - It runs every time a field is deleted (retired) - - @param[in] reg variable that is required by shotgun event daemon plugins - @return none - """ - matchEvents = { - 'Shotgun_DisplayColumn_Retirement': ['*'] - } - - reg.registerCallback('script_name', 'script_key', - trashedFieldWarning, matchEvents, None) - - -def CreateNote(sg, logger, event): - constants = {'note header': ':: FIELD DELETION :: '} - def GetListOfPipelineUsers(): - pipeline_users = sg.find('Group', [['code', 'is', 'People_Who_Need_to_Know']], ['code', 'users', 'addressings_to', - 'sg_ticket_type', 'sg_priority']) - return pipeline_users[0]['users'] - - def CreateToolsNote(): - # Note to members of the pipeline group - # Body text = CreateNoteRequestText() - # Date Created = event['event']['created_at'] - # Created By = event['user']['id'] - # Project = Software Development['id'] - # Subject = ':: Field Delete Warning :: ' + event['entity']['name'] - note_data = { - 'project': {'type': 'Project', 'id': 'ID OF PROJECT WHERE YOU WANT THE NOTE REPORTED TO'}, - # ex: 'project': {'type': 'Project', 'id': 2}, - 'content': CreateNoteRequestText(), - 'created_at': event['created_at'], - 'created_by': event['user'], - 'addressings_to': GetListOfPipelineUsers(), - 'subject': constants['note header'] + event['meta']['display_name'] - } - - sg.create('Note', note_data) - - def CreateNoteRequestText(): - OUT = '' - - # Tool Name = event['entity']['name'] - # sg_assigned_to = members of the pipeline group - # Description = linked Ticket decription - # Project = decided in GUI - # sg_sg_request_ticket = event['entity']['id'] - # task_template = Software task template - # Software Projects = defined in GUI - - OUT = '::FIELD DELETION WARNING::\n' - OUT += ':: A Field was deleted ::\n' - OUT += ':: It was called %s ::\n'%event['meta']['display_name'] - - return OUT - - logger.info('::WARNING:: A FIELD has been deleted') - CreateToolsNote() - - -def trashedFieldWarning(sg, logger, event, args): - """ - fn: finalizeTasksFromShot - @brief Function to create and send a warning note, via SG, whenever a field is deleted - event['entity']['id'] yields the id of the current entity that was caught by the plugin as having been changed. - ie. this is the id of the field that was just deleted - - @param[in] sg defines the Shotgun handle to access the database - @param[in] logger sets logging messages to the shotgun event daemon - @param[in] event the collection of shots that have changed - @param[in] args useless variable for this particular function - @return none - """ - - if event['meta']['entity_type'] == 'DisplayColumn': - logger.info('This DisplayColumn was deleted %s', event['meta']['display_name']) - if event['event_type'] == 'Shotgun_DisplayColumn_Retirement': - logger.info('The incoming event call is for deleting a field from an entity. Field name: %s', event['meta']['display_name']) - - # logger.info(' TEST ') - # logger.info('Deleted Field ID is #%d, and is called: %s', event['entity']['id'], event['entity']['name']) - - 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 deleted file mode 100644 index a3c08ac7b..000000000 --- a/docs/en/event-daemon/event-daemon-installation.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default -title: Installation -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 - - -## 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: - -- place it in the same directory as the {% include product %} Event Daemon -- place it in one of the directories specified by the [`PYTHONPATH` environment variable](http://docs.python.org/tutorial/modules.html). - -To test that the {% include product %} API is installed correctly, from your terminal window: - -``` -$ python -c "import shotgun_api3" -``` - -You should see no output. If you see something like the output below then you need to make sure your `PYTHONPATH` is setup correctly or that the {% include product %} API is located in the current directory. - -``` -$ python -c "import shotgun_api3" -Traceback (most recent call last): -File "", line 1, in -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. - -The source and archives are available on GitHub at [https://github.com/shotgunsoftware/shotgunEvents]() - -{% 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. - -``` -$ cd /usr/local/shotgun -$ 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. - -- head over to [https://github.com/shotgunsoftware/shotgunEvents/archives/master]() -- download the source in the format you want -- save it to your machine -- extract the files to the `/usr/local/shotgun` directory -- rename the `/usr/local/shotgun/shotgunsoftware-shotgunEvents-xxxxxxx` directory to `/usr/local/shotgun/shotgunEvents` - -#### Extracting the archive into `/usr/local/shotgun`. - -For .tar.gz archives: - -``` -$ tar -zxvf shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.tar.gz -C /usr/local/shotgun -``` - -For .zip archives: - -``` -$ unzip shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.zip -d /usr/local/shotgun -``` - -Then you can rename the GitHub-assigned directory name to `shotgunEvents`: - -``` -$ mv shotgunsoftware-shotgunEvents-1c0c3eb shotgunEvents -``` - -Now you should now have something like this: - -``` -$ ls -l /usr/local/shotgun/shotgunEvents -total 16 --rw-r--r-- 1 kp wheel 1127 Sep 1 17:46 LICENSE --rw-r--r-- 1 kp wheel 268 Sep 1 17:46 README.mkd -drwxr-xr-x 9 kp wheel 306 Sep 1 17:46 docs -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 - -``` -$ 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) - -Active Python ships with the PyWin32 module which is required for integrating the {% include product %} Event Daemon with Windows' Service architecture. - -You can then install the deamon as a service by running the following command (we are assuming that `C:\Python27_32\python.exe` is the path to your Python executable, adjust accrodingly): - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py install -``` - -Or remove it with: - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py remove -``` - -Starting and stopping the service can be achieved through the normal service management tools or via the command line with: - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py start -> C:\Python27_32\python.exe shotgunEventDaemon.py stop -``` - -In most cases you will need to be sure you are running each of the commands listed as your system's administrative user. You can do so by right clicking the cmd application and choosing "Run as Administrator". - -{% include info title="Note" content="If you have installed the daemon on Windows in a network location or if you have configured it to read and write logs and other resources from a network location you will need to edit the service's properties to change the user running the service from the local machine account to a domain account that has access to the network resources." %} diff --git a/docs/en/event-daemon/event-daemon-plugins.md b/docs/en/event-daemon/event-daemon-plugins.md deleted file mode 100644 index 3c5a20027..000000000 --- a/docs/en/event-daemon/event-daemon-plugins.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: Plugins -pagename: event-daemon-plugins -lang: en ---- - -# Plugins Overview - -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. - -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: - -```python -def registerCallbacks(reg): - pass -``` - -This function will be used to tell the event processing system which functions to call to process events. - -This function should take one argument which is a [`Registrar`](./event-daemon-api.md#Registrar) object. - -The [`Registrar`](./event-daemon-api.md#Registrar) has one critically important method:[`Registrar.registerCallback`](./event-daemon-api.md#registercallback). - -For each of your functions that should process {% include product %} events, call [`Registrar.registerCallback`](./event-daemon-api.md#registerCallback) once with the appropriate arguments. - -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: - -- A {% include product %} connection instance if you need to query {% include product %} for additional information. -- A Python Logger object that should be used for reporting. Error and Critical messages will be sent via email to any configured user. -- The {% include product %} event to be processed. -- The `args` value passed in at callback registration time. (See [`Registrar.registerCallback`](./event-daemon-api.md#wiki-registerCallback)) - -{% 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 - -```python -def registerCallbacks(reg): - reg.setEmails('root@domain.com', 'tech@domain.com') # Optional - reg.logger.info('Info') - reg.logger.error('Error') # ERROR and above will be sent via email in default config -``` - -and - -```python -def exampleCallback(sg, logger, event, args): - logger.info('Info message') -``` - -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. - -[https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456](https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456) - -If a plugin needs network resources (be that {% include product %} or some other resource), it needs to provide its own retry mechanisms / robustness. In the case of {% include product %} access you could riff off what's in the daemon and make a helper function or class that could provide that functionality to your plugins. - -The {% include product %} Python API does already do some level of retrying on network issues but should you hit a {% include product %} maintenance window that can run a few minutes, or be unlucky enough to hit a network blip, that might not be enough. - -[https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554](https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554) - -Depending on what your plugin does, you can also register it to just keep trucking should it encounter issues while processing events. Look at the stopOnError argument of the registerCallback function: - -[https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback) - -{% include info title="Note" content="The plugin won't stop but any failed attempts won't be retried." %} diff --git a/docs/en/event-daemon/event-daemon-technical-details.md b/docs/en/event-daemon/event-daemon-technical-details.md deleted file mode 100644 index d9ce2fdd1..000000000 --- a/docs/en/event-daemon/event-daemon-technical-details.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: default -title: Technical Details -pagename: event-daemon-technical-details -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: - - Shotgun_Note_New - Shotgun_Shot_New - Shotgun_Task_Change - Shotgun_CustomEntity06_Change - Shotgun_Playlist_Retirement - Shotgun_Playlist_Revival - -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 - SG_RV_Session_Validate_Success - Shotgun_Attachment_View - Shotgun_Big_Query - Shotgun_NotesApp_Summary_Email - Shotgun_User_FailedLogin - Shotgun_User_Login - Shotgun_User_Logout - Toolkit_App_Startup - Toolkit_Desktop_ProjectLaunch - Toolkit_Desktop_AppLaunch - Toolkit_Folders_Create - 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: -``` -{ "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 -} -``` -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 -} -``` -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 -} -{ "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. - - - -## 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. - -The configuration file specifies a `paths` config that contains one or multiple plugin locations. The earlier the location in the list the sooner the contained plugins will be processed. - -Each plugin within a plugin path is then processed in ascending alphabetical order. - -{% include info title="Note" content="Internally the filenames are put in a list and sorted." %} - -Finally, each callback registered by a plugin is called in registration order. First registered, first run. - -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. - -- Global variables. Ick. Please don't do this. -- An imported module that holds the state information. Ick, but a bit better than simple globals. -- A mutable passed in the `args` argument when calling [`Registrar.registerCallback`](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#registerCallbacks). 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. - -### Backlogs due to gaps in the event log entry sequence - -Each event that occurs in {% include product %} (field update, entity creation, entity retirement, etc.) has a unique ID number for its event log entry. Sometimes there are gaps in the ID number sequence. These gaps can occur for many reasons, one of them being a large database transaction that has not yet been completed. - -Every time there is a gap in the event log sequence the "missing" event IDs are put into a backlog for later processing. This allows for the event daemon to process the events from a long database transaction once it has finished. - -Sometimes the gap in the event log sequence will never be filled in, such as with a failed transaction or reverted page setting modifications. In this case, after a 5 minute timeout, the system will stop waiting for the event log entry ID number and will remove it from the backlog. When this happens you will see a "Timeout elapsed on backlog event id #" message. If the first time a gap in the event sequence is seen and it is already deemed to have exceeded the timeout, the message will appear as "Event # never happened - ignoring" and it won't be put in the backlog in the first place. - -### Backlogs due to plugin errors - -During normal operation, the framework is always tracking the last event that was processed by each plugin. If you have a plugin that fails for any reason it will stop processing further events. When you fix the plugin, by fixing a bug for example, the framework will start processing events at the last event stored for the fixed plugin. This is done in order to make sure the newly fixed plugin gets to process all events, including those that have occurred in the past between the failure and the fix. If the failure occurred long ago, this may mean a lot of events need to be revisited and it may take a while for the fixed plugin to catch up with the other plugins that were functioning normally. - -While your fixed plugin plays catch-up, the other plugins will be ignoring these events in order to make sure no single event is processed twice by the same plugins. This leads to the "Event X is too old. Last event processed is (Y)" message. This is a debug message and can be safely ignored. - -There is no formal way to sidestep this. The framework is designed to make sure every single plugin processes every event once and only once. However, If you are familiar with Python and its pickle data format, you can stop the daemon, open the .id file with a Python interpreter/interactive shell, decode its contents with the pickle modules and edit its contents to remove the stored id thus skipping the accrued backlog. This is unsupported and at your own risk. Please backup the `.id` file appropriately before you do this. diff --git a/docs/en/event-daemon/event-daemon.md b/docs/en/event-daemon/event-daemon.md deleted file mode 100644 index 4b409c6b7..000000000 --- a/docs/en/event-daemon/event-daemon.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: default -title: Writing Event-Driven Triggers -pagename: event-daemon -lang: en ---- - -# {% 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 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. - -**Content:** - -- [Overview](#overview) -- [Advantages of the framework](#advantages-of-the-framework) -- [Writing event driven triggers](#writing-event-driven-triggers) - - [Example use cases](#example-use-cases) - - [How event driven triggers work](#how-event-driven-triggers-work) - - [Polling the EventLog versus triggers](#polling-the-eventlog-versus-triggers) - - [Event types](#event-types) - - [Transactions and potentially missing events](#transactions-and-potentially-missing-events) - -## 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. - -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. - -The role of the framework is to keep any tedious monitoring tasks out of the hands of the business logic implementor. - -The framework is a daemon process that runs on a server and monitors the {% include product %} event stream. When events are found, the daemon hands the events out to a series of registered plugins. Each plugin can process the event as it wishes. - -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. -- 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. -- Handing off events to registered callbacks. - -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). - -# Writing event driven triggers - -**Note:** For more information about event driven triggers, please see our documentation at [https://github.com/shotgunsoftware/shotgunEvents](https://github.com/shotgunsoftware/shotgunEvents) . - -{% include product %} creates an [event log entry](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_event_logs_html) for every action that happens in {% include product %}. You can see these events in your {% include product %} site, as well as through the {% include product %} API. - -In addition to seeing a detailed history of events in {% include product %}, you can write your own event listener Scripts to poll the EventLog and act on certain events you care about. Your Script can execute other internal Scripts in your pipeline, or it can use the {% include product %} API and update other information in {% include product %}, or both. - -## Example use cases - -Here are some examples of using event driven triggers: - -* Automatically set the ‘Animation’ Task status to ’ready to start’ whenever the status for a Shot’s ‘Layout’ Task is marked as ‘final’, so the animator knows to start working on the Shot. -* Create the appropriate Shot directories on the filesystem whenever a new Shot is created in {% include product %}. -* Notify the artists assigned to a Shot if it goes ‘on hold’ -* Make a directory read-only when an Asset is finaled. -* Copy relevant Version (or Take) information to a dailies system when the Version is added to a Review in {% include product %}. -* Twitter a random quote that begins with the same letter as the third word in a Scene’s description field when the Scene grows to 25 shots. - -## How event driven triggers work - -Below is a simple diagram of EventLogEntries generated by {% include product %}. Your Script will use the API to get a list of events that have occurred since the last time it asked. It will then look at each event type (e.g., {% include product %}_Task_Change) and see if any of them are ones that you care about. - -Once it finds an event that is interesting, it will examine the details of the event even further (e.g., what field was changed, what the value was changed to, etc. At this point you can even use the API to request more information for an entity if you need to). - -If the event proves worthy, the Script will then act on the event and execute whatever code you decide needs to be executed whether its using the {% include product %} API, or something in your pipeline, or both. When there are no more events to look at, it repeats the process and use the API to get a list of events that have occurred since the last time you asked. - -![Event log polling](./images/dv-writing-event-triggers-event-log-polling-01.png) - -## Polling the EventLog versus triggers - -{% include product %} provides a constant stream of event information and you can listen to it all and act only on the events you care about. This provides the following advantages over having {% include product %} control triggers itself: - -* **Flexible** : Your trigger Scripts can run independent of {% include product %}. This allows your Script to interact both with {% include product %} and your pipeline in any way you want. You define the rules and actions as you wish without being bound by any constraints. {% include product %} doesn’t need to know anything about the event triggers you have. All it needs to do is keep generating the EventLogEntries. You control every other aspect of what happens next. -* **Remote** : Your Scripts can run from anywhere that has network access to the {% include product %} server. Your Script simply needs API access to run. -* **Multiplicity** : You can have multiple Scripts running concurrently. Different departments may have different needs and thus be listening for different events. There’s no restriction saying that all triggers be run from the same Script. You may wish to break up your triggers into separate logical Scripts. The polling query is very light and doesn’t have any noticeable impact on performance. -* **Accountability** : If your Scripts make changes to {% include product %}, they too create their own events, allowing you to see exactly what Scripts made changes. - -## Event types - -All internal event types follow the format **`Shotgun_[entity_type]_[New|Change|Retirement]`**. Some examples are `Shotgun_Shot_New` and `Shotgun_Asset_Change`. For more information, see the [Event types documentation](https://github.com/shotgunsoftware/shotgunEvents/wiki/Technical_Overview#event-types). - -## Transactions and potentially missing events - -{% include product %} executes destructive database queries in transactions and only writes to the EventLog when the transaction is complete. Because of this, it’s possible that you may miss events using the “highest ID” method here. However, the [Event Trigger Framework on our GitHub site](https://github.com/shotgunsoftware/shotgunEvents) has code that should handle these situations. \ No newline at end of file diff --git a/docs/en/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png b/docs/en/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png deleted file mode 100644 index 94b131f4a..000000000 Binary files a/docs/en/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/create_webhook_button.png b/docs/en/guides/images/webhooks/create_webhook_button.png deleted file mode 100644 index 04a618e1c..000000000 Binary files a/docs/en/guides/images/webhooks/create_webhook_button.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/create_webhook_button_v2.png b/docs/en/guides/images/webhooks/create_webhook_button_v2.png deleted file mode 100644 index b5770804b..000000000 Binary files a/docs/en/guides/images/webhooks/create_webhook_button_v2.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/create_webhook_dialog.png b/docs/en/guides/images/webhooks/create_webhook_dialog.png deleted file mode 100644 index d6dd69161..000000000 Binary files a/docs/en/guides/images/webhooks/create_webhook_dialog.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/delivery_details.png b/docs/en/guides/images/webhooks/delivery_details.png deleted file mode 100644 index 69747c339..000000000 Binary files a/docs/en/guides/images/webhooks/delivery_details.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/delivery_status.png b/docs/en/guides/images/webhooks/delivery_status.png deleted file mode 100644 index fad6acfce..000000000 Binary files a/docs/en/guides/images/webhooks/delivery_status.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/show_webhooks_permission.png b/docs/en/guides/images/webhooks/show_webhooks_permission.png deleted file mode 100644 index 63af8d84a..000000000 Binary files a/docs/en/guides/images/webhooks/show_webhooks_permission.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_project_entity_field_filter.png b/docs/en/guides/images/webhooks/webhook_project_entity_field_filter.png deleted file mode 100644 index 65ab9b388..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_project_entity_field_filter.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_secret_token.png b/docs/en/guides/images/webhooks/webhook_secret_token.png deleted file mode 100644 index ba936192e..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_secret_token.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_selected_status.png b/docs/en/guides/images/webhooks/webhook_selected_status.png deleted file mode 100644 index 3286e9892..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_selected_status.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_status_active.png b/docs/en/guides/images/webhooks/webhook_status_active.png deleted file mode 100644 index 7115ba381..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_status_active.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_status_disabled.png b/docs/en/guides/images/webhooks/webhook_status_disabled.png deleted file mode 100644 index 6a3c9c8ed..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_status_disabled.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_status_failed.png b/docs/en/guides/images/webhooks/webhook_status_failed.png deleted file mode 100644 index d22ee39f9..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_status_failed.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhook_status_unstable.png b/docs/en/guides/images/webhooks/webhook_status_unstable.png deleted file mode 100644 index 4acb74217..000000000 Binary files a/docs/en/guides/images/webhooks/webhook_status_unstable.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhooks_page.png b/docs/en/guides/images/webhooks/webhooks_page.png deleted file mode 100644 index e0e3fe653..000000000 Binary files a/docs/en/guides/images/webhooks/webhooks_page.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhooks_response_tab.png b/docs/en/guides/images/webhooks/webhooks_response_tab.png deleted file mode 100644 index 5ce72fb33..000000000 Binary files a/docs/en/guides/images/webhooks/webhooks_response_tab.png and /dev/null differ diff --git a/docs/en/guides/images/webhooks/webhooks_validate_ssl_certificate.png b/docs/en/guides/images/webhooks/webhooks_validate_ssl_certificate.png deleted file mode 100644 index f16137918..000000000 Binary files a/docs/en/guides/images/webhooks/webhooks_validate_ssl_certificate.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations.md b/docs/en/guides/pipeline-integrations.md deleted file mode 100644 index 2ddfb2a1b..000000000 --- a/docs/en/guides/pipeline-integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Pipeline Integrations -pagename: toolkit-pipeline-integrations -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. - -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 deleted file mode 100644 index 518f1d59f..000000000 --- a/docs/en/guides/pipeline-integrations/administration.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Administration -pagename: toolkit-administration -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. - -This section contains information about administering your studio's {% include product %} Toolkit pipeline. diff --git a/docs/en/guides/pipeline-integrations/administration/advanced-toolkit-administration.md b/docs/en/guides/pipeline-integrations/administration/advanced-toolkit-administration.md deleted file mode 100644 index c09563681..000000000 --- a/docs/en/guides/pipeline-integrations/administration/advanced-toolkit-administration.md +++ /dev/null @@ -1,1525 +0,0 @@ ---- -layout: default -title: Advanced Toolkit Administration -pagename: advanced-toolkit-administration -lang: en ---- - -# Advanced Toolkit Administration - -This is an introduction to how to administer and configure Toolkit for advanced configurations. - -In this topic: -- [Introduction](#introduction) -- [Using the tank command](#using-the-tank-command) - - [Running in debug mode](#running-in-debug-mode) - - [Running tank commands via the Tookit API](#running-tank-commands-via-the-tookit-api) - - [Useful tank commands](#useful-tank-commands) - - [setup_project](#setup_project) - - [core](#core) - - [configurations](#configurations) - - [updates](#updates) - - [install_app, install_engine](#install_app-install_engine) - - [app_info](#app_info) - - [folders, preview_folders](#folders-preview_folders) - - [shell](#shell) - - [dump_config](#dump_config) - [Advanced tank commands](#advanced-tank-commands) -- [The Toolkit Python API](#the-toolkit-python-api) -- [Pipeline Configurations and Sandboxes](#pipeline-configurations-and-sandboxes) - - [Running the tank command for a sandbox](#running-the-tank-command-for-a-sandbox) - - [Using the Core API from a sandbox](#using-the-core-api-from-a-sandbox) - - [Accessing a sandbox](#accessing-a-sandbox) - - [Localizing a Pipeline Configuration](#localizing-a-pipeline-configuration) - - [Deleting a cloned configuration](#deleting-a-cloned-configuration) -- [Checking for Updates](#checking-for-updates) - - [Creating a staging sandbox](#creating-a-staging-sandbox) -- [Configuring how Apps are launched](#configuring-how-apps-are-launched) -- [Creating folders on disk](#creating-folders-on-disk) - - [Filesystem Locations](#filesystem-locations) - - [Renaming Toolkit Folders](#renaming-toolkit-folders) - - [Deferred Creation and User Sandboxes](#deferred-creation-and-user-sandboxes) -- [Configuring Templates](#configuring-templates) - - [@include syntax in the template file](#include-syntax-in-the-template-file) - - [Including external files in your template file](#including-external-files-in-your-template-file) - - [Folder creation and templates](#folder-creation-and-templates) -- [Hooks](#hooks) - - [App level hooks](#app-level-hooks) - - [Core level hooks](#core-level-hooks) - - [Studio level hooks](#studio-level-hooks) - - [Project name hook](#project-name-hook) - - [Connection hook](#connection-hook) -- [Configuring Apps and Engines](#configuring-apps-and-engines) - - [Each App has a Location setting](#each-app-has-a-location-setting) - - [Including files](#including-files) - - [Configuring Template settings - file paths](#configuring-template-settings---file-paths) - - [Using Hooks to customize App Behaviour](#using-hooks-to-customize-app-behaviour) - - - - -# Introduction - -Welcome to the {% include product %} Toolkit Admin guide! This document explains how to work with the {% include product %} Pipeline Toolkit from an administrative point of view - installing and updating apps, setting up new projects, and managing your studio configuration. The Toolkit is still relatively technical, so we imagine that the person handling the configuration and administration is a sysadmin, pipeline/tools developer or TD. Before we start getting into details, we would recommend that you read through the following document if you haven't already! It covers a number of the basic concepts and gives a brief introduction to configuration management and updates: - -[An Introduction to the basic Concepts in {% include product %} Pipeline Toolkit.](https://developer.shotgridsoftware.com/e95205a8/) - -If you are not set up with the {% include product %} Toolkit yet, you may want to read through the [Integrations User Guide](https://developer.shotgridsoftware.com/d587be80/). - -# Using the tank command - -When managing the {% include product %} Toolkit, and using the Toolkit in general, the `tank` command is your friend! The `tank` command lets you run both administrative commands and actual Apps quickly and easily from a command shell. - -By default, each new project you create gets its own, independent Core API and also its own `tank` command. Simply navigate to your Project Config location and execute the `tank` command to see all applicable commands for that project: - -``` -cd /mnt/software/{% include product %}/big_buck_bunny -./tank -``` -You can use the tank command in many different ways. The basic idea is that you first tell the tank command where you want to operate and then what you want to do. If you don't tell it what you want to do, it will display a list of all the available commands. If you don't tell it where you want to operate, it will try to use your current directory. You can also use the tank command to list things in {% include product %}. - -Basic overview of how you can use the tank command: - -```python -# Show all tank commands for an asset named 'piano' -> tank Asset piano - -# We can also list all assets containing the phrase 'pi' -> tank Asset pi - -# We can execute the built-in folder creation command for -# the piano -> tank Asset piano folders - -# If the application launcher app is installed, we can launch maya -# and set the work area to the piano -> tank Asset piano launch_maya - -# Alternatively, we can specify a path on disk instead of a {% include product %} entity -> tank /mnt/projects/hero/assets/piano launch_maya - -# Or we can change our work directory and run tank like this -> cd /mnt/projects/hero/assets/piano launch_maya -> tank launch_maya -``` -## Running in debug mode - -Sometimes it can be useful to see what is going on under the hood. You can pass a `--debug` flag to the `tank` command which will enable verbose output and timings, sometimes making it easier to track down problems or understand why something isn't doing what you expected it to. - -## Running tank commands via the Tookit API - -Most Tank commands are also fully supported to run via the API. This makes it easy to perform toolkit related maintenance operations as part of more extensive scripted workflows. For more information how to do this, see the [Core API Reference](https://developer.shotgridsoftware.com/tk-core/) - -## Useful tank commands - -Here's a brief list of useful tank commands that you can use when you are administering the {% include product %} Toolkit. - -### setup_project - -Command line version of the setup project wizard found in the {% include product %} Desktop. Sets up a new project with the {% include product %} Toolkit. This is where you start when you have a project in {% include product %} and you want to extend this to use the Toolkit. The command will guide you through the process and ask you for various pieces of information, such as which configuration to use and which project to set up. - -**Re-run setup_project on the Same Project** - -By default, setup_project will only list projects that haven't been set up yet. But, it's often necessary to re-run setup_project on the same project, especially while testing. This can be done by passing the --force flag, which will list all projects, with a note to identify projects that have already been set up before: - -```python -> tank setup_project --force - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -- Running setup_project... - -force mode: Projects already set up with Toolkit can be set up again. - -Welcome to SGTK Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - big_buck_bunny: '/mnt/software/sgtk/big_buck_bunny' - ghosts: '/mnt/software/sgtk/ghosts' - chasing_perfection: '/mnt/software/sgtk/chasing_perfection' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can just enter the -path to this config it will be used for the new project. - -[tk-config-default]: -Downloading Config tk-config-default v0.4.15 from the App Store... - -This is the 'Default Config' config. - -Below are all active projects, including ones that have been set up: --------------------------------------------------------------------- - -[ 4] Demo Project - Fubar is an epic story of an on-going political wa... - -[ 5] Big Buck Bunny -Note: This project has already been set up. - A killer bunny movie - -[ 6] The Ghosts of Pere Lachaise -Note: This project has already been set up. - De Films en Aiguille and ChezEddy present this year... - -[ 7] Chasing Perfection -Note: This project has already been set up. - You've seen the car commercials, the car races, and... - -[ 8] What Happened to My Headphones? - The Ryan Mayeda story - -Please type in the id of the project to connect to or ENTER to exit: -``` - -Toolkit provides you with a project name suggestion as part of the project setup process. If you are happy with the name, you can just press Enter to continue or alternatively type in another name by hand. - -If you have a special studio naming convention for projects, it is also possible to control the default value that the setup project process suggests. This is done via an advanced studio level hook - read more about it in the studio level hooks section further down in this document. - -### core - -Checks for Core API Updates. This will connect to the App Store and see if there is a more recent version of the Core API available. If there is, the command will ask you if you want to update. - -Example output from this command: - -```python -> tank core - -Welcome to Sgtk! -Starting Sgtk for your current directory '/private/tmp' -- Running core... - -WARNING: You are potentially about to update the Core API for multiple -projects. - -Welcome to the Sgtk update checker! -This script will check if the Sgtk Core API -installed in /mnt/software/sgtk/studio -is up to date. - -You are currently running version v0.13.22 of the Sgtk Platform -No need to update the Sgtk Core API at this time! -``` - -### configurations - -Gives an overview of all the configurations for a project. This can be handy when you want to get a breakdown of the current activity for a project. - -Example output from this command: - -```python -> tank Project Bunny configurations - -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Project Big Buck Bunny -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Big Buck Bunny. -- Running configurations... - -Fetching data from {% include product %}... - -====================================================================== -Available Configurations for Project 'Big Buck Bunny' -====================================================================== - -Configuration 'Primary' (Public) -------------------------------------------------------- - -This is the Project Master Configuration. It will be used whenever this -project is accessed from a studio level sgtk command or API constructor. - -Linux Location: /mnt/software/sgtk/big_buck_bunny -Winows Location: z:\mnt\software\sgtk\big_buck_bunny -Mac Location: /mnt/software/sgtk/big_buck_bunny - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank localize - -If you want to check for app or engine updates, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank updates - -If you want to change the location of this configuration, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank move_configuration - -This is a public configuration. In {% include product %}, the actions defined in this -configuration will be on all users' menus. - -Configuration 'Dev Area' (Private) -------------------------------------------------------- - -Linux Location: /Users/manne/sgtk_dev -Winows Location: z:\Users\manne\sgtk_dev -Mac Location: /Users/manne/sgtk_dev - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /Users/manne/sgtk_dev/tank localize - -If you want to check for app or engine updates, you can run: -> /Users/manne/sgtk_dev/tank updates - -If you want to change the location of this configuration, you can run: -> /Users/manne/sgtk_dev/tank move_configuration - -This is a private configuration. In {% include product %}, only Admin 3 will see the actions -defined in this config. If you want to add additional members to this -configuration, navigate to the SG Pipeline Configuration Page and add -them to the Users field. -``` - -### updates - -This command will go through all the environments associated with the project and check if there are more recent versions of apps or engines available. Depending on how the apps and engines have been installed, this updater may check against a local git repository, Github or the {% include product %} Toolkit App Store. If a more recent version is detected, you will get asked if you want to update your setup. If any new configuration parameters have been introduced in the new version of the App, you may be prompted for values. - -General syntax: - -``` -> 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` - -### install_app, install_engine - -Installs a new engine or App in one of the environments associated with the project. You can use this command to install something either from the Toolkit app store or from git. - -### app_info - -See a breakdown of all the apps and their key configuration settings - -### folders, preview_folders - -Creates folders on disk for an item. - -Example output from this command - -```python -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Asset Squirrel (Project 'Big Buck Bunny') -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Asset Squirrel. -- Running folders... - -Creating folders, stand by... - -The following items were processed: - - /mnt/projects/big_buck_bunny - - /mnt/projects/big_buck_bunny/reference - - /mnt/projects/big_buck_bunny/reference/artwork - - /mnt/projects/big_buck_bunny/reference/footage - - /mnt/projects/big_buck_bunny/sequences - - /mnt/projects/big_buck_bunny/assets - - /mnt/projects/big_buck_bunny/assets/Character - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/sgtk_overrides.yml - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop/snapshots - -In total, 93 folders were processed. -``` -### shell - -Starts an interactive Python shell in your currently selected context. Sets up handy references to pre-initialized APIs, context, and engine objects. You can use `./tank shell` to try out Toolkit and {% include product %} API code examples. The tank executable is located in the **Pipeline Configuration root** on your local machine, and looks something like: - -``` -> cd /my_tank_configs/project_foobar -``` - -Example output from this command: - -```python -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -You are running a tank command associated with {% include product %} Project 'Chasing the -Light'. Only items associated with this project will be considered. -- Found Shot moo87 (Project 'Chasing the Light') -- Starting the SG pipeline toolkit v0.15.14. -- Setting the Context to Shot moo87. -- Started Shell Engine version v0.3.3 -- Environment: /mnt/software/tank/chasing_the_light/config/env/shot.yml. -- Running shell... - -Welcome to SG Pipeline Toolkit Python! -2.7.1 (r271:86832, Jul 31 2011, 19:30:53) -[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -Running on darwin - -- A tk API handle is available via the tk variable -- A Shotgun API handle is available via the Shotgun variable -- Your current context is stored in the context variable -- The shell engine can be accessed via the engine variable ->>> ->>> tk - ->>> ->>> context - ->>> ->>> Shotgun - ->>> ->>> engine - ->>> -``` - -In the example above, `./tank` is starting a Python shell for you and setting up a few variables that you'll need. This obviates a bit of groundwork on your part, such as setting up authentication and user sessions and starting the connection to your {% include product %} site, by providing these handles and contexts in the above variables: - -- The `tk` variable has a handle that will let you access the [Toolkit API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#the-toolkit-core-api). -- The `{% include product %}` variable has a handle to the [{% include product %} API](https://developer.shotgridsoftware.com/python-api/) that's already connected to your site and is ready to query the database and other things in your [{% include product %} site]. -- The context variable reads your current context (Project, Shot, Asset, Pipeline Step, User, etc.). [Here is an example of an active context](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#sgtk.Context). In this example, a context instance is used to collect a set of key fields describing the current context. We sometimes refer to the context as the current work area. Typically this would be the current Shot or Asset that someone is working on. You can see in this example that the Project is "Chasing the Light", the id is 1184, and the Shot is "moo87". There are no Pipeline Steps or Tasks assigned, but the user is Manne. You may need to know this information when writing scripts for the Toolkit API, and everything is available in this handy context variable: - -```python - -``` - -The `engine` variable points to the currently running instance of the [shell engine](https://developer.shotgridsoftware.com/2ad59ee8/). - -### dump_config - -Available in core `v0.18`. - -Dumps an existing environment configuration to `STDOUT` or to another file. Has the ability to dump a full or sparse representation of the config. A full representation includes default values for all settings, while a sparse representation only includes values that differ from the setting's default. The output of the command by default includes comments for each setting that note the manifest where the default value can be found and the default value if it differs from what is in the configuration. The command does not allow dumping an environment config to an existing file as a safety precaution. - -Usage: - -``` -./tank dump_config env_name [--sparse | --full] [--no_debug-comments] [--file=/path/to/output/file.yml] -``` - -Example output from this command: - -```python -> ./tank dump_config shot_step --sparse --file=/tmp/shot_step.yml - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -Starting toolkit for path '/Shotgun/configs/sparse34913' -- The path is not associated with any SG object. -- Falling back on default project settings. -- Running as user 'Toolkit' -- Using configuration 'Primary' and Core HEAD -- Setting the Context to sparse34913. -- Running command dump_config... - ----------------------------------------------------------------------- -Command: Dump config ----------------------------------------------------------------------- - -Dumping config... -``` - -Running the above command will write a sparse copy of the current project's `shot_step` environment file to `/tmp/shot_step.yml`. - -To exclude the additional debug comments, use the `--no_debug_comments` flag. - -### Advanced tank commands - -Here's a brief list of advanced tank commands that you can use when you are administering the {% include product %} Toolkit. - -- `tank share_core` - When new projects are created, these are often created in a state where each project maintains its own independent copy of the core API. This command allows you to take the core for such a project and move it out into a separate location on disk. This makes it possible to create a shared core, where several projects share a single copy of the Core API. - -- `tank attach_to_core` - When new projects are created, these are often created in a state where each project maintains its own independent copy of the core API. This command allows you to attach the configuration to an existing core API installation rather than having it maintain its own embedded version of the Core API - -- `tank localize` - This command will download the Core API to a particular pipeline configuration location. This is useful if you want to test a new version of the Core API inside a Toolkit staging area. This process is described in detail further down in this document. - -- `tank clear_cache` - Clears some of the Toolkit's caches. This can be useful if menu items aren't showing up inside {% include product %} for some reason. - -- `tank validate` - Validate the project configuration - -- `tank cache_apps` - Ensure that all required app, engine and framework versions exist on disk. - -- `tank switch_app` - Useful for development. Switches an app from app store mode to local or git mode or vice versa. - -- `tank push_configuration` - Push the configuration contained in the current pipeline configuration to another pipeline configuration. - -# The Toolkit Python API - -If you are launching applications using the {% include product %} Desktop, the `tank` command or using {% include product %}, Toolkit will automatically get added to the `PYTHONPATH` and initialize. Sometimes it is useful to manually source and run the Toolkit API. This can be done by adding the Toolkit Core API to the pythonpath and then importing it. - -In each project configuration, there is a `python` folder located inside your `project_config_root/install/core/python`. Just add that location to your Python path and you can import the `sgtk` API: - -```python -import sgtk - -# create a Sgtk API object for a {% include product %} entity -tk = sgtk.sgtk_from_entity("Shot", 123) - -# Create a Sgtk API object based on a file system location -tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair") -``` - -# Pipeline Configurations and Sandboxes - -A Pipeline Configuration has the same basic structure as the studio installation. Most importantly, it contains a both a `tank` command and a Toolkit API inside of `install/core/python`. The reason the API and the tank command is duplicated across each configuration is to make it easy to do development and to do work outside of the production configuration. - -When a new project is set up in the {% include product %} Toolkit, the project setup creates a ***Primary Pipeline Configuration*** for the project. This is always called 'Primary' and represents the main configuration for the project. You can see the configuration represented inside of {% include product %} in the form of a Pipeline Configuration entity for the project. When you are doing development or are making changes to the configuration, you typically don't work in the Primary configuration - if you accidentally break something, everyone working on the project will be affected. Instead, you can clone the configuration inside of {% include product %}. You now have your own parallel configuration where you can make changes without anyone else being affected. - -## Running the tank command for a sandbox - -If you use the studio level `tank` command to run an app, it will always use the Primary configuration for a project. So if you just type in `tank Shot ABC123 launch_maya`, the {% include product %} Toolkit will find the project that shot ABC123 belongs to, find its primary pipeline configuration and use those configuration settings when it launches maya. If you instead want to use the experimental configuration in your development sandbox you instead use the specific tank command inside the dev sandbox to launch maya: `~/sgtk_dev_sandbox/tank Shot ABC123 launch_maya`. The Toolkit will now use the config in the dev sandbox instead of the Primary configuration for the project. - -## Using the Core API from a sandbox - -Similarly, if you want run the Toolkit API from inside your pipeline configuration and not from the studio install location, you can add your dev sandbox to the `PYTHONPATH` rather than the studio python API. - -## Accessing a sandbox - -Inside {% include product %}, it is a lot simpler. Each Pipeline Configuration for a Project has a list of users that can see that Configuration. By leaving the field blank, everyone will see the configuration. - -![](images/advanced-toolkit-administration/sg_work_area.png) - -When you clone a configuration (which you can do by right clicking on it in {% include product %}), you will automatically be associated with that configuration, effectively granting you exclusive visibility to the configuration. If you are developing new tools in Maya and want an artist to test them out, simply add the artist to your pipeline configuration dev sandbox and they can launch maya from your sandbox and will then have access to your work in progress tools. - -## Localizing a Pipeline Configuration - -By default, a Pipeline Configuration will pick up its code from the {% include product %} Toolkit Studio install. The Toolkit studio installation will contain a cache of all the app and engine code that the {% include product %} Toolkit is using and the Toolkit Core API installation. Each Pipeline configuration will share the Core API and the apps cache in the studio location. This is often useful because you can roll out core API updates to all projects at the same time. Simply update the studio location, and all projects will be affected. - -Sometimes, however, it is useful to be able to cut off a Pipeline Configuration and make it independent. Examples when this makes sense include: - -- You have a project that is about to wrap up and want to freeze updates and make sure nothing is changing. -- You have a pipeline configuration that you want to test a new version of the Toolkit Core API in. -- You are assembling a minimal Toolkit bundle that you will use when working from home. - -This process of making a pipeline configuration completely independent from the studio location is called ***localizing*** the Configuration and basically means that the Core API is copied into the Pipeline Configuration. You do this by running the `tank localize` command. - -Note that once you have localized a configuration, you cannot necessarily run the studio tank command anymore - the general rule is that once a project has been localized, you need to use its local tank command and Python API. - -## Deleting a cloned configuration - -If you don't want your cloned configuration or dev area anymore, simply delete the record and then delete the configuration from disk. - -# Checking for Updates - -Checking if there are any updates to apps or engines is easy! Simply run the `tank updates` command for a project. The {% include product %} Toolkit will check for updates and ask you if you want to update. If there are any new parameters that don't have default values, the update script will prompt you for values. Each update presents a url link to a release notes page, in case you want to check the details of what has changed. You can exit the process at any point. - -Updating the Toolkit Core API is equally easy. Just run the `tank core` command! - -## Creating a staging sandbox - -While it is often perfectly safe to simply run `tank updates` on your primary configuration, it is sometimes better to test things prior to rolling it out in production. In this case, you just clone the Primary pipeline configuration and run the update commands there. In the case of a Core API upgrade, make sure you localize the sandbox before running the `core` command (see above for more information about localize). Once you have verified that the update works, run it again on the primary configuration. For more detailed information how to do this, see [Managing your configuration](https://developer.shotgridsoftware.com/60762324/). - -# Configuring how Apps are launched - -A part of the Toolkit configuration that is often necessary to configure right after you have installed it is the app launch configuration. We have tried to make this flexible and configurable, knowing that this is an area where studios often already have customization and tools in place. - -When you are launching an application (such as maya or nuke) either from inside of {% include product %} or using the tank command, you are invoking an app that is responsible for starting up the application and initializing the Toolkit. This app is called `tk-multi-launchapp`. - -When you setup a new project with one of the Toolkit starter configurations, it will display instructions how to change the application paths that are used with the Launch App. You are not required to use this app - if you have an alternative system in place that works just as well. The Launcher application typically carries out the following steps: - -1. It figures out a context to use. The context represents the current work area. If you are right clicking a task, asset or shot inside {% include product %}, the context is created based on this. If you are using the tank command, it will be something you specify as part of the command line or is picked up from your current directory. - -2. It then launches the application based on settings in the app configuration. You can configure the launch app in several ways - the path to the application, the command line arguments to pass, the actual code that executes the application and environment variables that needs setting prior to application launch. - -3. It sets the Pythonpath to ensure that the Toolkit API can be initialized later. - -4. Once the application has started, the Toolkit API is imported and initialized. - -5. Finally, the engine is launched. - -**Example: A more hands on example of how the {% include product %} Toolkit starts up.** - -The typical bootstrapping of the Toolkit happens in a couple of phases: - -- The main host application is launched. This is anything that has a python interpreter. In its simplest form it is just the CPython interpreter running in a standard shell. It can also be Maya or Nuke or anything else that has a built in embedded Python interpreter. - -- The Toolkit Core API is added to the `PYTHONPATH` and imported: `import sgtk` - -- Now we need to figure out a context. It can either be a path on disk or a {% include product %} object. We can now create a Toolkit API instance using a factory method: `tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair01/lighting")`. Alternatively, we can use a {% include product %} Entity: `tk = sgtk.sgtk_from_entity("Shot", 123)`. When using an entity, the above code will connect to {% include product %}, resolve the pipeline configuration for that shot, locate the pipeline configuration on disk and load up basic settings for Sgtk such as the file system templates. No apps or engines are loaded at this point. In the case of a path lookup, it will use the file system to locate the pipeline configuration. - -- Now we create a context object to represent the current work area. This can also be done either from an entity or a path: `ctx = tk.context_from_entity("Shot", 123)` or `ctx = tk.context_from_path("/mnt/projects/hero/assets/chair01/lighting")` - -- Finally we start the engine. Assuming we are inside of Maya, running these commands in Maya's python interpreter, we would do this: `sgtk.platform.start_engine('tk-maya', tk, ctx)`. This would do the following: - - - Run the pick environment hook for the context. The pick environment hook will return the environment to use. The environment contains a list of all apps to load and their configrations. - - - Once the environment file has been determined, the engine is loaded into memory. This will dynamically load the engine base object and execute its init method. Once the engine is loaded, all apps are loaded the same way. Typically, as part of this, the engine will register a "{% include product %}" menu somewhere in the application and each app will register a series of commands with the engine. These commands become the entry points for execution later on: a user clicks something on the {% include product %} menu and that triggers the app execution. - -A complete example would look something along these lines: - -```python -# starting up sgtk when your context is based on a path -import sgtk -path = "/mnt/projects/hero/assets/chair01/lighting" -# create a sgtk api handle -tk = sgtk.sgtk_from_path(path) -# create a context object -ctx = tk.context_from_path(path) -# start the tank engine -sgtk.platform.start_engine('tk-maya', tk, ctx) - -# starting up sgtk when your context is based on a {% include product %} object -import sgtk -entity_type = "Shot" -entity_id = 123 -# create a sgtk api handle -tk = sgtk.sgtk_from_entity(entity_type, entity_id) -# create a context object -ctx = tk.context_from_entity(entity_type, entity_id) -# start the sgtk engine -sgtk.platform.start_engine('tk-maya', tk, ctx) -``` - -# Creating folders on disk - -One key part of the Toolkit Configuration is the file system configuration. The {% include product %} Toolkit can help create folders on disk in a consistent fashion and the creation process is driven from {% include product %}. Below is an overview of the core folder inside a configuration: - -![](images/advanced-toolkit-administration/file_system_config.png) - -Setting up a folder configuration is relatively easy. The configuration is basically a template folder structure that you create, with some configuration files to indicate that a folder should be representing for example an asset or a shot. When you configure you file system structure, you can always use the ***folder preview*** functionality to get a listing of what will be created. This command is available both in {% include product %} and in the tank command. - -Start by outlining your scaffold using normal folders. If you have a level of dynamic folders in your scaffold, for example representing assets, shots or pipeline steps, just ignore that for the moment. Once you are happy with the result, add dynamic functionality step by step to each dynamic folder. This is done by adding a yml file that has the same name as the folder. - -Inside the yaml file, use a special syntax to define how a folder is created. The {% include product %} Toolkit supports a number of different dynamic behaviours, but the normal one is a dynamic node that represents a {% include product %} entity. In this case, the configuration file could look something like this: - -```python -# the type of dynamic content -type: "Shotgun_entity" - -# the Shotgun field to use for the folder name -name: "{code}_{sg_prefix}" - -# the Shotgun entity type to connect to -entity_type: "Asset" - -# Shotgun filters to apply when getting the list of items -# this should be a list of dicts, each dict containing -# three fields: path, relation and values -# (this is std Shotgun API syntax) -# any values starting with $ are resolved into path objects -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -``` - -This will inform that that the dynamic folder should create folders named using two {% include product %} fields on the Asset entity. Using standard {% include product %} API query syntax, we also define constraints based on parent folders; only consider assets for the current project and asset type. - -For a full reference of what types of nodes are supported, please [see the reference documentation](https://developer.shotgridsoftware.com/82ff76f7/). - -## Filesystem Locations - -When folders are created on disk via the Toolkit folder creation system, these folders are also stored and tracked in {% include product %}. Folders are represented as **Filesystem Location** entities in {% include product %} which can be found under the administrator menu. Normally, this data is tracked behind the scenes by Toolkit and nothing that users need to look at. These Filesystem Location entities are used by Toolkit to sync and track folders on disk and can be used to recreate folder structure on disk just the way it was created when the folder creation was initially running. The Filesystem Location entity data is in turn primarily used when trying to figure out which {% include product %} Entity is associated with a particular path on disk. - -For performance reasons, the contents of the Filesystem Location table is cached on a user's local machine. This is in order to speed up folder/entity lookups. For expert users, the location of this cache can be customized by modifying the `cache_location` core hook. The cached local folder representation is synchronized whenever folders are created on disk and when applications are launched. - -## Renaming Toolkit Folders - -When you run the Toolkit folder creation, a connection is established between an entity in {% include product %} and a folder on disk. Toolkit uses its folder schema configuration to generate a series of folders on disk and each of these folders are registered as a `Filesystem Location` entity in {% include product %}. One way to think about this is that {% include product %} data (e.g. Shot and Asset names) and configuration is "baked" out into actual folders on disk and in {% include product %}. - -Once folders have been created, you can no longer freely change the name of an entity in {% include product %}. If you try to rename an entity and then launch Toolkit, an error message will appear. This is to avoid losing track of the folders which are associated with a particular entity. - -In order to rename a Toolkit folder, do the following: - -- First rename the entity (Asset or Shot) in {% include product %}. -- Unregister any registered folders by running the `tank unregister_folders` command. This will remove any filesystem location entities in {% include product %} tracking the relationship between the Entity and locations on disk. Note that this command does not affect any content on disk, but merely the `Filesystem Location` entities in {% include product %} which point at the locations on disk. For example, if you want to unregister folders for an asset named Plant, execute the command `tank Asset Plant unregister_folders`. You will be presented with an overview of which folders will be unregistered and you will be asked to confirm the operation. -- After unregistering the folders, you have essentially "reset" the asset. No folders are now associated with the asset and by running the folder creation in {% include product %} with the new name, new folders on disk will be created. -- Lastly, move any data across from the previous location on disk to the new location. Take care to ensure that any links between files are updated to point to the new location as well. - -## Deferred Creation and User Sandboxes - -It is also possible to set up the Toolkit folder creation so that it runs in two phases: One phase whenever someone runs the folder creation command, one phase just before an application is launched. This is a behaviour that is built into the Toolkit Application Launcher (which is simply calling a standard API method to carry out the folder creation). With deferred folder creation you can handle the following use cases: - -- If you have multiple different content creation applications in your pipeline and don't want to include a complete folder scaffold for every single one of them until they are actually needed, you can set up the folder creation so that each content creation app has its own deferred subtree in the config. When a production person or admin creates folders for the Shot, it will stop just before it starts creating work areas for maya, nuke, mari etc. Then, when an application is launched these folders are created just before the application starts up. -- If you want to create user based sandboxes in the file system, these will need to be created immediately prior to the work taking place. With deferred folder creation, you can add a special user node that makes this process easy. In the templates config, you then refer the to user node as HumanUser since this is the way the {% include product %} API denotes it. - -For more information about deferred creation, please [see the reference documentation](https://developer.shotgridsoftware.com/82ff76f7/). - -# Configuring Templates - -Once you have created the file system structure it is time to configure a set of file system locations based on the folder structure above. These locations are called templates and are an integral part of the {% include product %} Toolkit. The template file contains three parts: a keys section, where you define what each field means, a paths section where you can define template paths and a strings section where you can define string expressions. There are two syntaxes you can use in your file - one simple form that you can use for configs that have a single storage root and an advanced syntax that you can use for multi-root configs. - -**Example: Single Root Template Format** - -```yml -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: '@shot_root/work/maya' - - # define the location of a publish area - shot_publish_area_maya: '@shot_root/publish/maya' - - # The location of WIP files - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.ma' - - ########################################################################################## - # Asset pipeline / maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: '@asset_root/work/maya' - - # define the location of a publish area - asset_publish_area_maya: '@asset_root/publish/maya' - - # The location of WIP files - maya_asset_work: '@asset_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_asset_snapshot: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_asset_publish: '@asset_root/publish/maya/{name}.v{version}.ma' - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. -strings: - - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -**Example: Multi Root Template Format** - -```yml -# -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -# -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / Maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: - definition: '@shot_root/work/maya' - root_name: primary - - # define the location of a publish area - shot_publish_area_maya: - definition: '@shot_root/publish/maya' - root_name: primary - - # The location of WIP files - maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.ma' - root_name: primary - - # The location of backups of WIP files - maya_shot_snapshot: - definition: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: primary - - # The location of published maya files - maya_shot_publish: - definition: '@shot_root/publish/maya/{name}.v{version}.ma' - root_name: primary - - ########################################################################################## - # Asset pipeline / Maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: - definition: '@asset_root/work/maya' - root_name: secondary - - # define the location of a publish area - asset_publish_area_maya: - definition: '@asset_root/publish/maya' - root_name: secondary - - # The location of WIP files - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: secondary - - # The location of backups of WIP files - maya_asset_snapshot: - definition: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: secondary - - # The location of published maya files - maya_asset_publish: - definition: '@asset_root/publish/maya/{name}.v{version}.ma' - root_name: secondary - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. - -strings: - - # when a review version in {% include product %} is created inside of nuke, this is the - # name that is being given to it (the code field) - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -There are a number of configuration options available for the templates file - you can find a [complete reference here](https://developer.shotgridsoftware.com/82ff76f7/). - -## @include syntax in the template file - -To cut down on repetition in the templates file, you can reuse fields: - -```yml -paths: - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - maya_asset_work: '@asset_root/work/maya/@maya_asset_file' - -strings: - maya_asset_file: '{name}.v{version}.ma' -``` - -You can also split the templates across multiple files and include files in other files. For full details, see the [reference documentation](https://developer.shotgridsoftware.com/82ff76f7/). - - -## Including external files in your template file - -Just like you can split up your environment configuration into multiple files and then including files into other files, you can manage the templates file this way. This can be useful if you for example are setting up a global configuration that is shared across multiple projects. - -You include additional files in your `templates.yml` file by using one of the include syntaxes: - -```yml -# single include using a path local to the location of the current file -include: './include_file.yml' -# multiple incudes, processed in order -includes: ['./include_file_1.yml', './include_file_2.yml'] -# you can also use absolute paths when including things: -include: -# files that are not recognized are skipped, so you can put paths for -# windows and linux next to each other for multi platform support: -includes: ['/foo/bar/hello.yml', 'z:\foo\bar\hello.yml'] -# you can use environment variables inside of full paths too -includes: ['$STUDIO_ROOT/foo/bar/hello.yml', '%STUDIO_ROOT%\foo\bar\hello.yml'] -``` - -An included file needs to have the same structure as the main templates.yml file, meaning that it needs to contain a `paths`, `keys` and a `strings` section. When toolkit processes includes, it will read them in recursively in a top-down, depth first order, adding data separately into three `paths`, `keys` and `paths` "buckets". If a value already exists in a bucket during this process, it will be overwritten. Once all includes have been processed, the entire configuration is validated. - -Here's a quick example. Here is the main `templates.yml` file: - -```yml -include: ./global_defs.yml -keys: - name: - type: str - filter_by: alphanumeric - version: - type: int - format_spec: "03" -paths: - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' -``` -And here is the contents of the included file `global_defs.yml`: - -```yml -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str -paths: - shot_root: sequences/{Sequence}/{Shot}/{Step} -``` - -It is recommended good practice (but may not always be appropriate) to keep the keys and the paths together, so that each file contains all the pieces it needs. This generally makes things easier to maintain. - -## Folder creation and templates - -When you create a template that refers to folders created by the folder creation system, you need to specify the fields using '{% include product %} API' style notation! This a subtle detail which can be easily missed. The example above is a good illustration of this. In the folder creation, we have set up a configuration which first groups items by their asset type and then by their asset name. For example: - -``` -/mnt/projects/my_project/assets/character/Hero -``` - -We then want to create a template in the Toolkit that matches this path. In order for the {% include product %} Toolkit to be able to match up the template with the path and the context, the fields need to be named the same way you would name them if you were using the {% include product %} API - the asset type folder level needs to be called `sg_asset_type` since this is the field name for this field in {% include product %}, and the asset level folder needs to be called `Asset` (with a capital A) since this is how you refer to the asset entity type when using the {% include product %} API. - -# Hooks - -Hooks are flexible pieces of the toolkit configuration. Normally, when you configure an app, engine or the core API, you specify a collection of parameters to define the behaviour of something. However, sometimes this is not powerful enough and this is where hooks come into play. Hooks are small chunks of Python code that you can use to customize an aspect of an app, engine or indeed the core. We have tried to design the hooks to be light weight and atomic. There are three different levels at which hooks appear in Toolkit. Read more about each level in the sections below. - -## App level hooks - -Each Toolkit app (and engine for that matter) comes with a collection of settings, some of which can be hooks. Each app carries a collection of default hooks which will be automatically used unless you specifically override them. Hooks are typically used to customize something very application specific. For example, for a Toolkit which loads images into Maya, the UI code and all the interaction logic is inside the app, but the little piece of business logic which actually loads the image into maya is inside a hook. This makes it possible for a studio to customize the behaviour; the default hook may simple create a standard texture node in maya, but a studio which wants to use a different node type can override the hook and thereby easily change the behaviour of the entire app - without having to rewrite any of the code! - -When customizing an app hook, you typically copy the default hook from inside the hooks folder in the app into your project's hooks folder. Next, you need to update the app settings inside the environment file so that it will read your new hook and not the default one. Your custom hook will automatically inherit from the default hook provided by the app, making it easy to add tweaks and small adjustments yet keep most of the business logic in the default hook. For more information about hook inheritance, please see the [environment configuration reference](https://developer.shotgridsoftware.com/6d10dedf/). - -## Core level hooks - -Core hooks makes it possible to override system wide behaviour in toolkit. Core level hooks are all overridden per project, so each project needs to set up individually with overrides. (If you keep re-using the same configuration when you set up new projects, this is generally straight forward). - -The Core configuration area contains a special `hooks` folder. This folder is where you can put your own implementations of certain core hooks. Core hooks are similar to the hooks that you find in apps - it is a way to extract a code snippet from the Toolkit and be able to customize it. The core API allows you to override a number of different core behaviours, including file system I/O, folder creation and validation of file system structure. - -![](images/advanced-toolkit-administration/hooks.png) - -By default, the Toolkit will pick up the core hooks it needs from with the API folder itself. If you want to customize the behaviour, take the hook file and copy it into the `config/core/hooks` area in your configuration. Then modify the code. - -For a list of what core hooks are available, have a look at the hooks folder inside the Core API. Each hook contains extensive documentation about what it does and how it can be modified. - -## Studio level hooks - -There are also a couple of very special hooks which we call studio level hooks. These hooks are global and will affect everything. These hooks control aspects of Toolkit which sits outside of any specific project. - -## Project name hook - -The project setup process will prompt you for a 'disk name' for your project and suggest a name based on the project name in {% include product %}, but with spaces and other non-file system friendly replaced with underscores. The disk name will be the name of the folder under which the project data and configuration is stored. - -It is possible to use slashes when specifying the disk name. This will produce a project root point which spans over several folders in depth and can sometimes be useful if the studio is organizing its projects based on for example discipline (commercials, vfx, etc) or if the sheer volume of projects in a studio is so large that a single level in the file system would make it difficult to overview. Note that you should always use forward slashes ('/'). Toolkit will make the necessary adjustments on Windows. - -In conjunction with the multi-level folders described above, it is also possible to customize the name that Toolkit suggests as part of the setup process. This is done in a special studio-level hook. If you want to customize this behaviour, create a file named `project_name.py` inside of the studio API location, in the `config/core` folder. This folder should already contain files such as `install_location.yml`, `app_store.yml` and `shotgun.yml`. - -The `project_name.py` hook file can for example look like this: - -```python -from tank import Hook -import os - -class ProjectName(Hook): - - def execute(self, sg, project_id, **kwargs): - """ - Gets executed when the setup_project command needs a disk name preview. - """ - - # example: create a name based on both the sg_type field and the name field - - sg_data = sg.find_one("Project", [["id", "is", project_id]], ["name", "sg_type"]) - - # create a name, for example vfx/project_x or commercials/project_y - name = "%s/%s" % ( sg_data["sg_type"], sg_data["name"] ) - - # perform basic replacements - return name.replace("_", "/").replace(" ", "/") -``` - -## Connection hook - -Toolkit stores connection settings so that it can connect to its associated {% include product %} instance. Sometimes it may be useful to control these connection settings in a dynamic fashion. In this case, create a hook file named `sg_connection.py` inside of the studio API location, in the `config/core` folder. This folder should already contain files such as `install_location.yml`, `app_store.yml` and `shotgun.yml`. - -This hook that is called after {% include product %} connection settings have been read in from the `shotgun.yml` and `app_store.yml` configuration files. It makes it easy to modify connection settings procedurally, for example set up a proxy server which depends on some external environment variable. - -The following three parameters are passed to the hook: - -- `config_data` is a dictionary containing the settings in the {% include product %} config file that has been read in. It typically contains the keys `host`, `api_script`, `api_key` and `http_proxy`. - -- `user` is the user profile which the connection information is associated with. This is an expert setting and is almost always set to `defualt`. - -- `cfg_path` is the path to the configuration file from which the `config_data` was loaded. - -The hook needs to return a dictionary on the same form as config_data. - -If you are customizing proxy settings, note that the proxy string returned should be on the same form as is expected by the {% include product %} API constructor, e.g. 123.123.123.123, 123.123.123.123:8888 or username:pass@123.123.123.123:8888. - -Below is an example implementation that can be used as a starting point: - -```python -from tank import Hook -import os - -class CustomShotunConnection(Hook): - """ - Allows for post processing of {% include product %} connection data prior to connection - """ - def execute(self, config_data, user, cfg_path, **kwargs): - - # explicitly set the proxy server setting - config_data["http_proxy"] = "123.123.123.123" - return config_data -``` - -# Configuring Apps and Engines - -Now that we have a templates file set up that defines all the key locations on disk, we can start deciding which apps and engines to include in our configuration. As explained in other parts of the introductory documentation, the apps and engines configuration is broken down into series of ***environments***. Environments are essentially alternative configurations - and this is useful since you most likely need to provide a different suite of apps, configured differently, for example shot work and asset work. For a more complex pipeline, you may want to break it down further in departments, so that modeling have a different setup than rigging. This is all handled via environments. - -The environment file defines a number of possible engines, and depending on the application you are running, one of these sections will be used. For example, if you are running maya, you tell the Toolkit to launch the 'tk-maya' engine. The {% include product %} Toolkit will first determine which environment to use (based on the current work area) and then look for a `tk-maya` engine inside this environment. When it finds it, it will load in all the apps defined for this section. - -Each app has a number of settings that can be configured. When you install or upgrade an app, the {% include product %} Toolkit will ask you to configure any setting that doesn't have a default value. The Toolkit Apps are often designed to be reusable, so depending on how you set it up, it can be used in many different ways and workflows. You can even have the same app defined several times in the same environment, for example you may want to have two publishers appear on the maya menu - one for a rig publish and one for a model publish - both using the same publishing app but with different configurations. - -**Example: An environment file** - -```yml -include: ./includes/app_launchers.yml - -engines: - - # 3dsmax engine - tk-3dsmax: - debug_logging: false - location: {name: tk-3dsmax, type: app_store, version: v0.2.6} - - # all the registered apps for this engine - apps: - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-texture: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Texture... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Diffuse Texture, Specular Texture] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current 3ds Max scene - primary_display_name: 3ds Max Publish - primary_icon: icons/publish_3dsmax_main.png - primary_publish_template: max_shot_publish - primary_scene_item_type: work_file - primary_tank_type: 3dsmax Scene - secondary_outputs: [] - template_work: max_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: max_shot_snapshot - template_work: max_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: max_shot_publish - template_publish_area: shot_publish_area_max - template_work: max_shot_work - template_work_area: shot_work_area_max - - # the maya engine - tk-maya: - debug_logging: false - location: {name: tk-maya, type: app_store, version: v0.2.7} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - - # all the registered apps for this engine - apps: - - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.7} - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-1: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Assets... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Maya Model, Maya Rig] - - tk-multi-loader-2: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Shots... - publish_filters: [] - sg_entity_types: - Shot: [] - single_select: true - tank_types: [Maya Anim, Maya Lighting, Maya Scene] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current Maya scene - primary_display_name: Maya Publish - primary_icon: icons/publish_maya_main.png - primary_publish_template: maya_shot_publish - primary_scene_item_type: work_file - primary_tank_type: Maya Scene - secondary_outputs: [] - template_work: maya_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-setframerange: - location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: maya_shot_snapshot - template_work: maya_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: maya_shot_publish - template_publish_area: shot_publish_area_maya - template_work: maya_shot_work - template_work_area: shot_work_area_maya -``` - -## Each App has a Location setting - -Each item in the environment file has a special `location` token. This token defines where the Toolkit should pick up the app code from and how it should check for new versions of the app. For example, a location token may be defined like this: - -``` -location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} -``` - -The type indicates that this app comes from the app store and that a particular version is being used. When you run the update check, the {% include product %} Toolkit will connect to the app store and check if there is a version more recent than `v0.1.2` available and if this is the case, ask you if you want to upgrade. The Toolkit supports a couple of different location types, including git and github, so you can build your own apps, use git to track them and when you create a new tag in git, the update will detect this handle it correctly in the upgrades check. For detailed information, [see the reference documentation](https://developer.shotgridsoftware.com/6d10dedf/). - -## Including files - -You can include external files into your environment files. This is often useful when you try to centralize settings or manage overrides: - -- You can organize your configuration so that you manage all the file paths to applications (maya, nuke) in one place even though you launch maya from multiple environments. - -- Apps that are used with the same settings in many environments can be defined in a single place. - -- You could maintain a 'central' pipeline configuration that is shared across multiple projects, and when this is updated, all projects will benefit from the update. Each project could then potentially override or extend the central config that is included if they need a particular behaviour. - -- You can include files from your context as overrides, meaning that you could reconfigure settings parameters on a per-shot or per-asset basis. This is illustrated in our default config, where you can set override the paths to maya, nuke, etc. on a per shot or asset basis. - -- If you use environment variables in full paths, these will be automatically expanded. Note that on linux, they must be on the `$ENV_VAR` form and not on the `${ENV_VAR}` form as this will confuse the include parser. Example: includes: `['$STUDIO_ROOT/foo/bar/hello.yml'`, `'%STUDIO_ROOT%\foo\bar\hello.yml']`. - -**Example: Shot specific overrides for app launch** - -Imagine you have the following environment file for the shell engine: - -```yml -include: ./includes/app_launchers.yml - -engines: - tk-shell: - debug_logging: false - location: {name: tk-shell, type: app_store, version: v0.3.0} - - apps: - tk-multi-launch3dsmax: '@launch_3dsmax' - tk-multi-launchmaya: '@launch_maya' - tk-multi-launchmotionbuilder: '@launch_motionbuilder' - tk-multi-launchnuke: '@launch_nuke' - tk-multi-launchphotoshop: '@launch_photoshop' -``` - -Each of those apps are references, defined in the `app_launchers` include file. This file contains the actual app configurations for each of the apps and looks like this: - -```yml -includes: - - # first include the configuration's global settings for application paths - - ./paths.yml - - # now include overrides - these will be loaded if they are found - - sequences/{Sequence}/{Shot}/sgtk_overrides.yml - - assets/{sg_asset_type}/{Asset}/sgtk_overrides.yml - -launch_3dsmax: - engine: tk-3dsmax - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '' - menu_name: Launch 3DSMax - windows_args: '' - windows_path: '@3dsmax_windows' - -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -The above file does not contain any actual paths to maya, nuke etc. Instead, these are defined in a separate file, `paths.yml`: - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' -maya_mac: /Applications/Autodesk/maya2012/Maya.app -maya_linux: maya - -# nuke -nuke_mac: /Applications/Nuke6.3v8/Nuke6.3v8.app -nuke_windows: 'C:\Program Files\Nuke6.3v8\Nuke6.3.exe' -nuke_linux: Nuke6.3 -``` - -Note how the `app_launchers` file first includes the above file, but then also includes `sequences/{Sequence}/{Shot}/sgtk_overrides.yml`. This is a context specific file path, just like a template, so it will try to resolve the path against the current context. If it manages to resolve it, it will look for the path and load it in. This means that you can create a `sgtk_overrides.yml` in the shot location and override the application paths for a specific shot only: - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\special_maya.exe' -``` - -Here we are using a special version of Maya for windows. The rest of the paths will be the original paths defined in the `paths.yml` file. - -For more details on how the includes work, see the [reference documentation](https://developer.shotgridsoftware.com/82ff76f7/). - -## Configuring Template settings - file paths - -An important type of setting that many Apps use is the `template` setting. Apps needing to specify a file system location will use these settings. Apps are developed to be generic or flexible, designed to work with any file system structure or naming convention. The templates are the key piece which makes it possible for and app to be independent of the underlying file system. For more information about this, see [the concepts introduction](https://developer.shotgridsoftware.com/e95205a8/). - -When configuring apps and are coming across a template setting, you will need to specify a template that contains the right set of fields. Fields can be either required or optional, with required being fields that have to be included in the template and optional meaning that a field can be part of the template, however the app will also work if that field is not defined in the template. - -![](images/advanced-toolkit-administration/templates.png) - -When an app runs, it will create paths from the template that you specify in the configuration. These paths are created based on the current context plus a set of fields provided by the app logic. This means that if your template contains any fields that are not part of the context nor part of the optional or required fields for the app, the app doesn't know how to set a value for that field and hence wont work. This situation is prevented by the Toolkit validating the configuration at startup. - -When a template setting is validated, the Toolkit will first check the context - and compare the fields given by the context against the fields in the template. If the list of fields once the context has been compared isn't matching the required/optional parameter definition for the app, a validation error will be raised. - -**Practical Example: The snapshot app** - -Here's a practical example of how this works. Let's have a look at one of the Toolkit apps, the **snapshot app**: - -This app uses a number of template settings. Here's one of those settings, as defined in the app settings breakdown: - -- **Settings name**: template_snapshot -- **Type**: template -- **Required Template Keys**: version -- **Optional Template Keys**: name, timestamp, increment -- **Description**: A reference to a template which defines the location where snapshot backups will be stored on disk. - -In addition to the fields provided by the context at runtime, this template setting requires a template that contains a `version` field. It can also contain optional `name`, `timestamp` or `increment` fields, but not any other fields. For example: - -Imagine you start up Maya for a Task on a Shot. The context will then contain the following fields: - -- The current project is set. -- The current entity (e.g. the Shot) is set. -- The current step is set. -- The current task is set. - -When the engine starts up, it will validate the configuration. Here's some examples of what would happen with different settings for the `template_snapshot` field above: - -- The template `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.ma` would be valid to use with the snapshot `template_snapshot` setting: - - - `Sequence`, `Shot` and `Step` are populated by the context. Note that because the context knows what the current Shot is, it can automatically figure out what the current Sequence is (since this is a parent folder in the file system). - - There is a `version` field in the template which the App setting requires - - There is a `name` field, something that is optional. - - There are no other fields. - -- The template `assets/{Asset}/work/maya/{name}.v{version}.ma` would be invalid because the (Shot) context does not know how to resolve the `Asset` field. - -- The template `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.ma` would be invalid because the required `version` field is missing. - -- The template `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{extension}` would be invalid because the field `extension` is unknown and the app does not know how to populate it. - -## Using Hooks to customize App Behaviour - -Another type of setting that apps use frequently is the `hook` settings type. A hook is a piece of code that the app will run as part of its normal execution. Hooks makes it possible to do very flexible customization of apps and means that some of the business logic of the app can be separated out from the actual app code. - -For example, imagine a breakdown app that needs to scan the scene for various references and file inputs. For maya, we can provide a default behaviour that handles the standard reference nodes that maya provides, but what if a studio is using a custom type of reference node? Of course the studio could always take the app and fork it in github, but that's a pretty drastic action given that all they really want to change is to add their custom node type to the code that scans the scene for reference nodes. - -Instead, the breakdown could implement the scene scanning code snippet as a hook. This means that it is effectively a setting, a part of the app configuration. It will come with a default value, which will handle the plain-vanilla maya case, so it will work out of the box, but it is also easy for someone to configure the {% include product %} Toolkit to change this behaviour completely if they wish. - -When an App is installed, the hook settings will all show up in the configuration as default. This means that the app will use the built in hook implementation that comes with the App. For example, here's the launcher app configuration as an example: - -```yml -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -We can see that there are two hooks here, `hook_app_launch` and `hook_before_app_launch`, both using the default app implementation. These hooks have been created to allow studios to customize the launch process, set environment variables etc. - -![](images/advanced-toolkit-administration/app_hooks.png) - -In order to customize these hooks, first you need to find their original implementation. Each App has a hooks folder in which any hooks will be registered. Now grab the hook you wish to customize and ***copy the hook into the hooks folder in your configuration***. Make the necessary code changes. - -Now the environment configuration still has the hook set to `default` and as long as it has that, it will pick up the default hook that comes with the app and nothing else. In order to pick up your new settings, change default to the name of the python hook file you have inside the configuration hooks folder. - -**Example: How to customize a hook** - -Here's a quick rundown of how to customize the `hook_before_app_launch` hook for an app launcher. - -1. Copy the default hook implementation. See the image above for the location of the default hook that comes with the app. Now copy this file into your configuration area, in the hooks folder. For example, if your Pipeline Configuration is located in `/mnt/software/sgtk/big_buck_bunny`, you want to copy the file to `/mnt/software/sgtk/big_buck_bunny/config/hooks/before_app_launch.py` - -2. Make the necessary changes to the python code. - -3. Finally, update the environment configuration to use your new code: - -```yml -yaml launch_maya: engine: tk-maya extra: {} hook_app_launch: default hook_before_app_launch: before_app_launch # <-- uses custom hook! linux_args: '' linux_path: '@maya_linux' location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} mac_args: '' mac_path: '@maya_mac' menu_name: Launch Maya windows_args: '' windows_path: '@maya_windows' -``` - -The next time you run the launch app, your code will be executed instead of the default hook code. \ No newline at end of file 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 deleted file mode 100644 index 45df8f301..000000000 --- a/docs/en/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: default -title: Apps and Engines Configuration Reference -pagename: toolkit-apps-and-engines-config-ref -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 describes functionality only available if you have taken control over a Toolkit configuration. For more info, see [{% include product %} Integrations Admin Guide](https://developer.shotgridsoftware.com/8085533c/)._ - -# Introduction - -This document contains specifications for the various file formats that Sgtk uses for its configuration and settings. Please note that this is a reference document which outlines all the various options and parameters available. For best practices on how to manage your configuration, please see the following document: - -[Configuration Management best practices.](https://developer.shotgridsoftware.com/60762324/) - -# {% include product %} Pipeline Toolkit Environments - -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 _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` - -The yaml file has the following basic format: - -```yaml - engines: - 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 - framework settings -``` - -Each app and engine can be configured via settings. These settings correspond with the list of settings that the app/engine exposes in its manifest file called `info.yml`. As of `v0.18.x` of Sgtk Core, settings only need to be specified if they differ from the default values specified in the manifest file. In addition to the manifest file, the configurable settings can typically be found on the app/engine page within the Toolkit App Store. - -In addition to the various settings that can be defined for each item, each app, engine and framework also needs to define where its code is located. This is done using a special `location` parameter. - -## Code Locations - -Each app, engine or framework defined in the environment file has got a `location` parameter which defines which version of the app to run and where to download it from. Most of the time this is handled automatically by the `tank updates` and `tank install` commands. However, if you are doing hand editing of configurations, a variety of options are available for you to help deploy and structure Toolkit: - -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 - -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). - -## Disabling Apps and Engines - -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} -``` - -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]} -``` - -Possible values for the _deny_platforms_ parameter are `windows`, `linux`, and `mac`. - -## Settings and parameters - -Each app, engine or framework explicitly defines a number of settings which you can override in the configuration file. These settings are strongly typed into strings, integers, lists, etc. For details, see the [Toolkit reference documentation](http://developer.shotgridsoftware.com/tk-core/platform.html#configuration-and-info-yml-manifest). 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 deleted file mode 100644 index 47669265d..000000000 --- a/docs/en/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -layout: default -title: Beyond Your First Project -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 - -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://developer.shotgridsoftware.com/1b9c259a/) -- [Passing Commandline Arguments](https://developer.shotgridsoftware.com/1b9c259a/) - - -## {% 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://developer.shotgridsoftware.com/8085533c/). - -## 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. - -## 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://developer.shotgridsoftware.com/425b1da4/) - -### 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://developer.shotgridsoftware.com/425b1da4/) -- [Filesystem Templates](https://developer.shotgridsoftware.com/425b1da4/) - -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://developer.shotgridsoftware.com/e95205a8/) - -## 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 [community](https://community.shotgridsoftware.com/c/pipeline/6). - diff --git a/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md deleted file mode 100644 index 37e481865..000000000 --- a/docs/en/guides/pipeline-integrations/administration/community-shared-integrations.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -title: Community Shared Integrations -pagename: community-shared-integrations -lang: en ---- - -# Community Shared Integrations - -Here are projects that people in the Toolkit community have been gracious enough to share. They aren't written by us at {% include product %} and we can't vouch for them, but we'll definitely answer any questions we can about them. If you have a project you want added to the list, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -### 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/4.26/en-US/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/](https://docs.unrealengine.com/4.26/en-US/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/)
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) | 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 deleted file mode 100644 index ab61e6e07..000000000 --- a/docs/en/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ /dev/null @@ -1,498 +0,0 @@ ---- -layout: default -title: Configuration Staging and Rollout -pagename: config-staging-and-rollout -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. - -_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://developer.shotgridsoftware.com/8085533c/)._ - -# Introduction - -This document outlines how to manage your Toolkit configuration. Toolkit contains several utilities and tools that lets you safely manage your configuration and test upgrades and changes in a safe and sandboxed environment before rolling them out to the entire production. - -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. - -# Basics of configuration management - -Each Toolkit Project has one or more configurations associated with it. The configuration contains all the settings that the project needs, including file system locations (templates), engines apps, etc. In Toolkit, each project is independently configurable. This means that different projects can live side-by-side safely, and upgrading one project will not affect another. - -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. - -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. - -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 - -Once you have set up Toolkit and configured a project, the setup will look something like this: - -![](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. - -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. - -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. - -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) - -### Creating a Cloned Configuration - -In order to create a staging sandbox where you can safely test your upgrades, navigate to the pipeline configurations for your project in {% include product %} and right click on the Primary configuration. An option to clone your configuration will appear: - -![](images/config-staging-and-rollout/clone_menu.png) - -Once you click it, you'll be presented with a dialog where you specify the path on disk where you want this new configuration to be located. If you are running a multi OS setup, make sure to put in paths for all relevant platforms. - -![](images/config-staging-and-rollout/clone_dialog.png) - -When you press ok, Toolkit will copy the configuration across and set up the clone. It will also associate your {% include product %} user with this configuration, so as soon as you have created your clone, you will see new menu items appearing inside {% include product %}. - -### 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. - -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. - -### 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: -```shell -tank push_configuration - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/tmp' -- Using configuration 'Primary' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command push_configuration... - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary') to another pipeline configuration in the project. - -Your existing configuration will be backed up. - -The following pipeline configurations are available to push to: - - [324] Staging Sandbox (/my/staging/sandbox) - -Please type in the id of the configuration to push to (ENTER to exit): 324 -Hold on, pushing config... -Checking if there are any apps that need downloading... -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. - -### Deleting a cloned configuration - -If you want to delete a cloned configuration, simply delete the entry in {% include product %} and remove the folder from disk. - -## 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: - -```shell ----------------------------------------------------------------------- -Command: Updates ----------------------------------------------------------------------- - -This command will go through your current configuration and check if there are -any updates available. If there are updates, you will be asked if you want to -perform an upgrade. If settings has been added to the new version that you are -installing, you may be prompted to specified values for these. - -Running this command with no parameters will check all environments, engines -and app. This may take a long time. You can also run the updater on a subset -of your installed apps and engines. - -General syntax: -> 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 -``` -## 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://developer.shotgridsoftware.com/b12f2510/#how-do-i-update-my-pipeline-configuration-to-use-an-existing-shared-core), 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 - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/my/staging/sandbox' -- Using configuration 'Staging Sandbox' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command localize... - ----------------------------------------------------------------------- -Command: Localize ----------------------------------------------------------------------- - -This will copy the Core API in /mnt/software/shotgun/studio into the Pipeline -configuration /my/staging/sandbox. - -Do you want to proceed [yn]y - -Localizing Core: /mnt/software/shotgun/studio/install/core -> /my/staging/sandbox/install/core -Copying Core Configuration Files... -Localizing Apps: /mnt/software/shotgun/studio/install/apps -> /my/staging/sandbox/install/apps -Localizing Engines: /mnt/software/shotgun/studio/install/engines -> /my/staging/sandbox/install/engines -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), -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. - -# Managing the Project Lifecycle - -Each Toolkit project contains an independent configuration which holds all the settings for that project. If you are managing a lot of projects, this means that you need to manage a lot of configurations. For this reason, Toolkit contains a number of different tools and ways to handle configurations, both for individual projects and for the studio lifecycle and configuration evolution. This section outlines some of those best practices and shows practical steps for how to set up your config. - -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. - -In the following sections we'll describe the different approaches in detail. - -## Inheriting the config from your previous project - -This is the simplest approach to configuration management. For the very first time you set up a project with Toolkit, you download our default configuration. You then set up that first project to match your pipeline settings, filesystem locations, etc. When the project is running, you run commands such as `tank updates` to update the app versions you are running. - -When your second project comes around, you don't want to start with the default config again - instead, during the project setup phase, pick the config from your first project as the starter for your new project. This means that all the changes, tweaks and improvements you did for the first project will be taken advantage of in the second project as well. For the third project, use the second project's config etc. - -![](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. - -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 -- Running command setup_project... - ----------------------------------------------------------------------- -Command: Setup project ----------------------------------------------------------------------- - -Welcome to the {% include product %} Pipeline Toolkit Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - My very first project: '/mnt/software/shotgun/first_project/config' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can enter the path -to this config and it will be used for the new project. - -You can also enter an url pointing to a git repository. Toolkit will then -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. - -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. - - What is 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. - -### 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`. - -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: -```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: -```shell -install_location.yml -pipeline_configuration.yml -``` - -Now git will ignore those two system files. We can go ahead and add the rest of the files in the configuration, commit them and push them to the studio repository. - -```shell -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. - -### Making changes to a project - -Whenever you have made changes to your primary config, you can simply go to your `config` folder and then run `git diff`, `git commit` and `git push`. This would push your changes to the studio configuration that you cloned your project config from. - -### 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! - -### Advanced git usage: Branches - -The default behavior in Toolkit is a simple clone operation when a new project is created. The project will be using the git `master` branch. For a more advanced setup, if you for example want to keep certain configuration changes for a project private and don't share them with other projects, you can set up a git branch after the project has been created. You then commit to this branch. The changes you want to push to the studio configuration can be merged with the local master branch for the project and then pushed. - -### Advanced git usage: Batch deployment - -Since Toolkit keeps a list of all the different configurations for a {% include product %} site via its pipeline configuration entity, it is possible to iterate over this list and execute a `git pull` command for each of the items, effectively running a batch update on all projects. This functionality is not currently part of Toolkit out of the box, but can be scripted using Python and the {% include product %} Python API. - -## A global configuration using includes - -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. - -![](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: -``` -# paths to maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' -maya_mac: '/Applications/Autodesk/maya2012/Maya.app' -maya_linux: 'maya' - -# a configured toolkit app -file_manager: - allow_task_creation: true - file_extensions: [] - hook_copy_file: default - hook_filter_publishes: default - hook_filter_work_files: default - hook_scene_operation: default - launch_at_startup: false - launch_change_work_area_at_startup: false - location: {name: tk-multi-workfiles, type: app_store, version: v0.4.8} - saveas_default_name: scene - saveas_prefer_version_up: false - sg_entity_type_filters: {} - sg_entity_types: [Shot, Asset] - task_extra_display_fields: [] - template_publish: null - template_publish_area: null - 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'] - -engines: - - tk-maya: - - # First all our app definitions - 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: - tk-multi-workfiles: '@file_manager' - - # alternatively, for simple values, we can use them as parameter values for apps: - tk-maya-launcher: - mac_path: '@maya_mac' - linux_path: '@maya_linux' - windows_path: '@maya_windows' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.19} - - # and after the apps section follows specific configuration options for the engine - location: {name: tk-maya, type: app_store, version: v0.4.1} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - 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: - - # first include a global config file which contains all the studio level app definitions - - '/studio/configurations/studio_apps.yml' - - # now we can include an include containing overrides, for example based on project type. - # if the global config contains an entry named file_manager and the vfx_apps.yml contains - # the same, the vfx_apps definition will be used. - - '/studio/configurations/vfx_apps.yml' - -engines: - - 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`: -```yaml -maya: - apps: - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.13} - tk-multi-loader2: - action_mappings: - Maya Scene: [reference, import] - Photoshop Image: [texture_node] - Rendered Image: [texture_node] - actions_hook: '{self}/tk-maya_actions.py' - entities: - - caption: Assets - entity_type: Asset - filters: - - [project, is, '{context.project}'] - hierarchy: [sg_asset_type, code] - filter_publishes_hook: '{self}/filter_publishes.py' - location: {name: tk-multi-loader2, type: app_store, version: v1.0.6} - menu_name: Load - publish_filters: [] - title_name: Loader - [... additional app entries here ...] - - debug_logging: true - location: {name: tk-maya, type: app_store, version: v0.3.10} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: {% include product %} Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - use_sgtk_as_menu_name: false - -# each include file has a framworks section containing all the frameworks needed for -# all apps in the file -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. - -![](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' - -engines: - 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. - -### 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. - -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. 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 deleted file mode 100644 index 8c1bd74d0..000000000 --- a/docs/en/guides/pipeline-integrations/administration/file-system-config-reference.md +++ /dev/null @@ -1,1422 +0,0 @@ ---- -layout: default -title: Filesystem Configuration Reference -pagename: toolkit-fs-config-ref -lang: en ---- - -# File System Configuration Reference - -In this topic: -- [Introduction](#introduction) -- [Part 1 - Folder Creation Syntax](#part-1---folder-creation-syntax) - - [Query Folders](#query-folders) - - [Multiple folders](#multiple-folders) - - [Create With Parent Folder](#create-with-parent-folder) - - [Optional fields](#optional-fields) - - [Regular expression token matching](#regular-expression-token-matching) - - [Examples](#examples) - - [List Field Folders](#list-field-folders) - - [Pipeline Step Folder](#pipeline-step-folder) - - [Different file system layouts for different pipeline steps](#different-file-system-layouts-for-different-pipeline-steps) - - [Advanced - Specifying a parent](#advanced---specifying-a-parent) - - [Task Folder](#task-folder) - - [Advanced - Specify a parent](#advanced---specify-a-parent) - - [Workspaces and Deferred Folder Creation](#workspaces-and-deferred-folder-creation) - - [Current User Folder](#current-user-folder) - - [Static folders](#static-folders) - - [Symbolic Links](#symbolic-links) - - [Ignoring files and folders](#ignoring-files-and-folders) - - [Customizing IO and Permissions](#customizing-io-and-permissions) - - [Data passed to the hook](#data-passed-to-the-hook) - - [Passing your own folder creation directives to the hook](#passing-your-own-folder-creation-directives-to-the-hook) - - [Adding custom configuration to static folders](#adding-custom-configuration-to-static-folders) - - [Simple customization of how folders are created](#simple-customization-of-how-folders-are-created) -- [Part 2 - Configuring File System Templates](#part-2---configuring-file-system-templates) - - [The Keys Section](#the-keys-section) - - [Example - An alphanumeric name](#example---an-alphanumeric-name) - - [Example - Version number](#example---version-number) - - [Example - A stereo eye](#example---a-stereo-eye) - - [Example - Image sequences](#example---image-sequences) - - [Example - Two fields both named version via an alias](#example---two-fields-both-named-version-via-an-alias) - - [Example - Timestamp](#example---timestamp) - - [Example - mappings](#example---mappings) - - [Example - String field with two valid values](#example---string-field-with-two-valid-values) - - [Example - Disallowing a value](#example---disallowing-a-value) - - [Example - Subsets of strings](#example---subsets-of-strings) - - [The Paths Section](#the-paths-section) - - [The Strings Section](#the-strings-section) - - [Using Optional Keys in Templates](#using-optional-keys-in-templates) -- [Advanced questions and troubleshooting](#advanced-questions-and-troubleshooting) - - [How can I add a new entity type to my file structure?](#how-can-i-add-a-new-entity-type-to-my-file-structure) - - [Fields required for the Episode > Sequence > Shot hierarchy](#fields-required-for-the-episode--sequence--shot-hierarchy) - - [Episode](#episode) - - [Sequence](#sequence) - - [Shot](#shot) - - [Episodes](#episodes) - - [Toolkit template definitions](#toolkit-template-definitions) - - [How can I set up a branch in my structure?](#how-can-i-set-up-a-branch-in-my-structure) - - [How can I create a custom Pipeline Step using a custom entity?](#how-can-i-create-a-custom-pipeline-step-using-a-custom-entity) - - -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://developer.shotgridsoftware.com/8085533c/)._ - -# 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: - -**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://developer.shotgridsoftware.com/425b1da4/#useful-tank-commands) and via the [Create Folders menu in ShotGrid](https://developer.shotgridsoftware.com/c3b662a6/). A special set of configuration files drives this folder creation process and this is outlined in [Part 1](#part-1---folder-creation-syntax) of the document below. - -**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](#part-2---configuring-file-system-templates). For example, you can define a template called `maya_shot_publish` to refer to published Maya files for Shots. [Toolkit apps](https://developer.shotgridsoftware.com/f8596e35/) 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://developer.shotgridsoftware.com/9a736ee3/) 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. - -![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. - -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](#symbolic-links). - -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. - - -Let's dive deeper into these modes. - -## Query Folders - -For a dynamic folder which corresponds to a {% include product %} query, use the following syntax in your YAML file: - - - # 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 - - # 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" ] } ] - -- 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](#examples). - - -## Multiple folders - -Include a slash in your name definition in order to create an expression which creates multiple folders at once: - - - # 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 - - # 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" ] } ] - -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. - -## Create With Parent Folder - -In {% include product %}, there is nesting within {% include product %} data structures. This nesting can be referred to as a Parent to Child relationship, and vice versa. For instance, Sequences are typically parents to Shots in the file system, and likewise, Shots are typically Children to Sequences. - -![create_with_parent_folder](images/file-system-config-reference/create_with_parent_folder_02_DS.png) - -{% include info title="Note" content="This filesystem nesting relationship is independent from the [ShotGrid Hierarchy](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html), and there is no connection between the two. They are configured completely independently." %} - -A shotgun_entity type folder supports an optional flag to control whether the folder creation process tries to recurse down into it when a parent is created, so that the child will also be created. Flags are settings that can only have certain fixed values, in this case "true" or "false". To add this flag, use this example: - - - # recurse down from parent folder - 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. - -{% 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. - -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`. - -![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`. - -![optional_fields_BECH_0010](images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png) - -{% include info title="Note" content="optional fields can only be used to define part of the name of a folder in your schema. An entire folder can not be optional." %} - -## 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`: - - - # 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 - - # 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" ] } ] - -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). - - 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: - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } - -To **find all assets** use this syntax: - - entity_type: Asset - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] - -## List Field Folders - -[{% include product %} list field](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_field_types_html) 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) - -{% include info title="Note" content="once folders have been created on disk, we strongly advise not to change the value (e.g., the asset type) on the associated data." %} - -When you want a dynamic folder which corresponds to all the items in a {% include product %} list field, use the following syntax in your YAML file: - - - # 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 - - # by setting the create_with_parent parameter to true you ensure that list field - - # 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_field_types_html). 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](#optional-fields) 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](#create-with-parent-folder) section above). - - -## Pipeline Step Folder - -The Pipeline Step folder represents a [Pipeline Step](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Producer_pr_scheduling_tasks_pr_tasks_pipeline_steps_html) 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](#list-field-folders). 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." %} - -By default, the Step folder will try to create all the relevant Steps for a particular entity automatically. For example, if the folder creation is triggered for a shot which has five Steps (Layout, Animation, FX, Lighting, Compositing), Step folders will automatically be created for those five Steps (Layout, Animation, FX, Lighting, Compositing). - -You can, however, turn this off by using the following syntax: - - - # recurse down from parent folder - create_with_parent: false - -Adding this setting to the configuration means that no Step folders will be created when a Shot folder is created. Instead, Step folders will be created only when you run the folder creation on a Task. This can be useful if you want to configure user sandboxes and other structures which are created just before work starts. - -### 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: - - 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: - - filters: [ { "path": "short_name", "relation": "not_in", "values": [ "Light", "Comp" ] } ] - -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. - -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 - -## Task Folder - -The Task folder represents a [Task](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Producer_pr_scheduling_tasks_pr_my_tasks_html) 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" - -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. - -Once again, you can use name expressions, just like you can with the [{% include product %} entity described above](#list-field-folders), 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}"` - -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 task and will be used to determine which task folders to create. - -### Advanced - Specify 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. - -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](#create-with-parent-folder). We can do this by adding the following to the Task configuration: - -`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: - - - # 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: - -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. -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:_ - - - # 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" - -## 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://developer.shotgridsoftware.com/9a736ee3/). 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}"`). - -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). - -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: - - - # the type of dynamic content - type: "static" - - - # pick one of the {% include product %} folders that are above this folder - - # in the folder hierarchy. In this case it is a parent folder - - # named step that we want to look at when deciding if this - - # static folder should be created or not. - constrain_by_entity: "$step" - - - # we can now define constraints for this step. Constraints are simple - - # {% include product %} queries, following the same syntax as the other {% include product %} filters - - # shown in previous sections. - # - - # In our example, if the parent step matches the constraints given - - # in the filter below, the static folder will be created. If not, - - # it (and its children) will be ignored by the folder creation process. - constraints: - - { "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 - -## 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. - -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 - - # so you can for example include permission hints or other stuff - - # that you may need for advanced customization - additional_param1: abc - 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. - -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: - - {'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'} - } - -## Ignoring files and folders - -Files that are placed in the schema scaffold will be copied across into the target area as part of the folder creation. This copy process is handled by a core hook, so for example, permissions handling can be customized for a project or studio. - -{% include info title="Note" content="There are more details on this kind of handling in the [Customizing I/O and Permissions section](#simple-customization-of-how-folders-are-created)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: - - - # 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 - -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 - -## Customizing IO and Permissions - -Shot and Asset folders often need to be created with special permissions and parameters. Sometimes this is as simple as setting permission bits during the folder creation, and sometimes it may be as complex as sending a remote request to a special folder creation server that will create the folders with the appropriate credentials, groups, and permissions. - -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). - -### Data passed to the hook - -The folder creation hook is executed just once for each folder creation request. All the folder creation data is passed in a list to the hook and the hook typically loops over this and creates the folders according to the parameters passed from the Core API. - -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', - 'filters': [{'path': 'project', - 'relation': 'is', - 'values': []}], - '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', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'}, - - {'action': 'copy', - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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: - -- `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. - -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'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -...which corresponds to the `shot.yml` schema configuration file: - - - # Copyright (c) 2013 {% include product %} Software Inc. - # - - # CONFIDENTIAL AND PROPRIETARY - # - - # This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit - - # Source Code License included in this distribution package. See LICENSE. - - # By accessing, using, copying or modifying this work you indicate your - - # 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 - - # 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" ] } ] - -_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. - -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" - -...the data passed via the folder creation hook would be: - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity', - 'studio_permissions_level': 'admin'}, - '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. - -### 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: - - type: static - studio_permissions_level: "admin" - -The configuration data passed to the hook will then contain the following: - - {'action': 'folder', - '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 - -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") - if not os.path.exists(path): - if not preview_mode: - # 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") - target_path = i.get("target_path") - if not os.path.exists(target_path): - if not preview_mode: - # do a standard file copy - shutil.copy(source_path, target_path) - # 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") - parent_folder = os.path.dirname(path) - content = i.get("content") - if not os.path.exists(parent_folder) and not preview_mode: - os.makedirs(parent_folder, 0777) - if not os.path.exists(path): - if not preview_mode: - # create the file - fp = open(path, "wb") - fp.write(content) - fp.close() - # 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 - -# 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. - -![configuration](images/file-system-config-reference/templates_file.png) - -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 **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. - -## The Keys Section - -Keys define what values are acceptable for fields. In the template config file keys are defined in the form: - - key_name: - type: key_type - 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. - -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). - -### Example - An alphanumeric name - -A name that defaults to "comp" and that is alphanumeric: - - name: - type: str - default: "comp" - filter_by: alphanumeric - - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk - -### Example - Version number - -A version number that would match numbers such as 002, 102, 034, 12341 - - version: - type: int - 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 - -### 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. - - 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 - -Image sequences are abstract by definition and they have a default value set to %0Xd unless otherwise specified. The below sequence spec would identify frame numbers such as 0001, 1234 and 12345. - - SEQ: - type: sequence - format_spec: "04" - - 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. - - nuke_version: - type: int - format_spec: "03" - alias: version - maya_version: - type: int - format_spec: "04" - alias: version - - - # nuke versions are using numbers on the form 003, 004, 005 - - # the nuke publish app requires a field called {version} - - # however {nuke_version} is a valid replacement for {version} - - # 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 - -### Example - Timestamp - -A timestamp that defaults to the current local time and is formatted as YYYY-MM-DD-HH-MM-SS. - - now: - type: timestamp - format_spec: "%Y-%m-%d-%H-%M-%S" - 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 - -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" - -### Example - mappings - -This is useful when you would like to to add {% include product %} fields to a file name, for example. Let's say we would like to include the user name in a file name- we'd use the following definition: - - current_user_name: - 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. - -### Example - String field with two valid values - -Often times a studio will have a project that needs to save out ASCII and Binary Maya files. In this scenario, a string value with two valid values looks like: - - maya_file_extension: - type: str - 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' - -Check out [The Paths Section](#the-paths-section) below for more details. - -### Example - Disallowing a value - -A string field for which the value "assets" is not allowed. This is useful if you for example have two a folder which contains folders for all the sequences for a project alongside with a single "assets" folder where all the assets are kept: - - project - |--- sequence1 - |--- sequence2 - |--- sequence3 - \--- 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"] - -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 - -### Example - Subsets of strings - -The following example extends a previous example and shows how to prefix filenames with a user's initials. - - user_initials: - type: str - shotgun_entity_type: HumanUser - shotgun_field_name: login - 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 - -## 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 - -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. - -`root_name: name_of_project_root` - -For example, it may look like this: - - shot_work: - definition: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - 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. - -## The Strings Section - -Strings are similar to paths in that they must include a name and definition, which can be supplied in the simple form: - - string_name: string_definition - -String definitions are templates consisting of key names and other values which together resolve to a string rather than a file system path. An example might the name used in {% include product %} for a publish: - - maya_publish_sg_name: "Maya publish, {name}, v{version}" - -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 sections can be defined using square brackets: - - 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 - -As you pass in a dictionary of fields, Toolkit will choose the right version of the template depending on the values: - - >>> template = tk.templates["shot_work"] - >>> 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 - -# 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html). - -![episode_hierarchy](images/file-system-config-reference/episode_hierarchy.jpg) - -{% include info title="Note" content="see the [Create with parent folder section above](#create-with-parent-folder) to revisit nesting relationships in Toolkit (which is completely independent from the project hierarchy in ShotGrid)." %} - -**Additional Reference:** - -- [How does the Episode entity work?](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html) -- [Customizing an entity's hierarchy](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html) - - -### Fields required for the Episode > Sequence > Shot hierarchy - -[You can choose to use any Custom Entity](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html) for `Episode` (Site Preferences > Entities), or you can use the official Episode entity that was made available in {% include product %} 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 %}: - -#### 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. - -![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._ - -![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) - -#### Sequence - -A single entity link called Episode (`sg_episode`) that links to the Episode entity is required. - -**Using the official `Episode` Entity** - - - -**Using `CustomEntity02`** - - - -#### Shot - -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 `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 %}): - - - {project_name} - - shots - episode.yml - - {episode_name} - sequence.yml - - {sequence_name} - shot.yml - - {shot_name} - ... - … - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### 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: - -**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 - - # 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" ] } ] - -**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 - - # 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" ] } ] - -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: - - - # 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 - - # 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" ] } ]` - -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: - - - - # 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 - - # 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" ] } ]` - -This tells Toolkit to create folders for every Shot that is linked to the Sequence above it in the directory tree. - -After you've done this, your schema should reflect the following: - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### 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](#the-keys-section) at the top to define it: - -**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: - - ... - paths: - shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} - … - -**Using `CustomEntity02`** - - keys: - ... - CustomEntity02: - 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: - - ... - paths: - shot_root: shots/{CustomEntity02}/{Sequence}/{Shot}/{Step} - … - -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](#different-file-system-layouts-for-different-pipeline-steps), 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_site_configuration_ar_customizing_fields_html) 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](#different-file-system-layouts-for-different-pipeline-steps). -- 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. - -## 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_site_configuration_ar_configure_pipeline_steps_html#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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html) 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 diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png deleted file mode 100644 index cfd872590..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png deleted file mode 100644 index 2fefc1d12..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png deleted file mode 100644 index 564df64ce..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png deleted file mode 100644 index bd8f8498c..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png deleted file mode 100644 index 3719f99ac..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png deleted file mode 100644 index 1765ae50f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png deleted file mode 100644 index b6239afcb..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png deleted file mode 100644 index a9371f5bb..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png deleted file mode 100644 index 146d40a46..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png b/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png deleted file mode 100644 index 31bdc5153..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png deleted file mode 100644 index a0fcaa4a5..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png deleted file mode 100644 index 361af7a18..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg deleted file mode 100644 index f5d021774..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png deleted file mode 100644 index e93f55868..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg deleted file mode 100644 index 559262ff2..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png deleted file mode 100644 index f1e50cf3e..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg deleted file mode 100644 index 77e5c1c04..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png deleted file mode 100644 index 991e09535..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png deleted file mode 100644 index 6d9ec5853..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png deleted file mode 100644 index 4ea84c5ed..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png deleted file mode 100644 index f89f10637..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png deleted file mode 100644 index a3b565914..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png deleted file mode 100644 index 6a70defde..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png deleted file mode 100644 index cd4848e9e..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png deleted file mode 100644 index 01d5097bf..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png deleted file mode 100644 index 8228f9574..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png deleted file mode 100644 index 86813bf3f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png deleted file mode 100644 index 30dcea707..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png deleted file mode 100644 index d8f018ce0..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png deleted file mode 100644 index fc2381408..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png deleted file mode 100644 index 91f44c3a7..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png deleted file mode 100644 index 9d64036ab..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png deleted file mode 100644 index 41d644263..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png deleted file mode 100644 index 7a78a97b6..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png deleted file mode 100644 index ced4416b6..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png b/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png deleted file mode 100644 index 1fb7f91bf..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png b/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png deleted file mode 100644 index b12ce3fc9..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png b/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png deleted file mode 100644 index ed9b7c98e..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png b/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png deleted file mode 100644 index 5e02c2c80..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png b/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png deleted file mode 100644 index 7fd916b17..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png b/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png deleted file mode 100644 index 5737078f1..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png deleted file mode 100644 index 6d93de390..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png deleted file mode 100644 index 91168abcf..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png deleted file mode 100644 index 6a0efb64a..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png deleted file mode 100644 index cbef9e60a..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png deleted file mode 100644 index d638c5ddd..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png deleted file mode 100644 index 4755b7174..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png deleted file mode 100644 index 44e138a03..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png deleted file mode 100644 index 0ab33d0c3..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png deleted file mode 100644 index 0b935b1b1..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-cinema-4d-3d-computer-graphics-computer-software-r-cinema-5abcb94b3d0438.6451556315223176432499.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-cinema-4d-3d-computer-graphics-computer-software-r-cinema-5abcb94b3d0438.6451556315223176432499.png deleted file mode 100644 index fd3bc0414..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-cinema-4d-3d-computer-graphics-computer-software-r-cinema-5abcb94b3d0438.6451556315223176432499.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-substance-designer-2-18-substance-painter-2-18-all-5c0832493dc4a0.006664621544041033253.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-substance-designer-2-18-substance-painter-2-18-all-5c0832493dc4a0.006664621544041033253.png deleted file mode 100644 index 8ef2d123a..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/kisspng-substance-designer-2-18-substance-painter-2-18-all-5c0832493dc4a0.006664621544041033253.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png deleted file mode 100644 index 2330991f2..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png deleted file mode 100644 index 2f80c2fa6..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png deleted file mode 100644 index 15b3430d6..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png b/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png deleted file mode 100644 index a4fd273c4..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png deleted file mode 100644 index b0ec0996f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png deleted file mode 100644 index 0bd12b673..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png deleted file mode 100644 index 5358dfc95..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png deleted file mode 100644 index cf0b558e6..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png deleted file mode 100644 index fe1ced045..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png deleted file mode 100644 index dc2e1e9b4..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png deleted file mode 100644 index 1a376060e..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png deleted file mode 100644 index 044b83e28..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png b/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png deleted file mode 100644 index eb50cfe7b..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png deleted file mode 100644 index eb9a775f4..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png deleted file mode 100644 index 393f75051..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png deleted file mode 100644 index 175a6d2e7..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg deleted file mode 100644 index e4f07dbd4..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png deleted file mode 100644 index 702118d8f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png deleted file mode 100644 index 53d6c356a..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png deleted file mode 100644 index 7861e07c4..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png deleted file mode 100644 index d38f8678f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png deleted file mode 100644 index 4aebe397c..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png deleted file mode 100644 index c3bef3a0a..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png deleted file mode 100644 index 0fcf04e9b..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png b/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png deleted file mode 100644 index 27cfbe3d2..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg b/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg deleted file mode 100644 index 559262ff2..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg b/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg deleted file mode 100644 index 77e5c1c04..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png b/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png deleted file mode 100644 index f1e50cf3e..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png b/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png deleted file mode 100644 index c86fcbcfb..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/01-setting-python-3-desktop.png b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/01-setting-python-3-desktop.png deleted file mode 100644 index 39cd4139c..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/01-setting-python-3-desktop.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/02-setting-python-3-desktop.png b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/02-setting-python-3-desktop.png deleted file mode 100644 index 323f3947f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/02-setting-python-3-desktop.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/03-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/03-setting-python-3-desktop.jpg deleted file mode 100644 index 1c5abd9ba..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/03-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/04-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/04-setting-python-3-desktop.jpg deleted file mode 100644 index 782cadb50..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/04-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/05-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/05-setting-python-3-desktop.jpg deleted file mode 100644 index a67a609c7..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/05-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/06-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/06-setting-python-3-desktop.jpg deleted file mode 100644 index 1a133411f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/06-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/07-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/07-setting-python-3-desktop.jpg deleted file mode 100644 index 1a133411f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/07-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/08-setting-python-3-desktop.jpg b/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/08-setting-python-3-desktop.jpg deleted file mode 100644 index 1a133411f..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/setting-python-3-desktop/08-setting-python-3-desktop.jpg and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png deleted file mode 100644 index b16903ce0..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/context.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/context.png deleted file mode 100644 index 1adbdc721..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/context.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png deleted file mode 100644 index e2bb5abd1..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png deleted file mode 100644 index 77fad8b11..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png deleted file mode 100644 index 0e1941ea9..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/login.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/login.png deleted file mode 100644 index d113b92c3..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/login.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png deleted file mode 100644 index 97f166b38..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png deleted file mode 100644 index d30430e36..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png b/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png deleted file mode 100644 index 02de1d68b..000000000 Binary files a/docs/en/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md deleted file mode 100644 index f7702b017..000000000 --- a/docs/en/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ /dev/null @@ -1,695 +0,0 @@ ---- -layout: default -title: ShotGrid Integrations Admin Guide -pagename: integrations-admin-guide -lang: en ---- - -# {% include product %} Integrations Admin Guide - -## 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://developer.shotgridsoftware.com/d587be80/) is intended for artists who will be the end users of {% include product %} integrations in their daily workflow, and our [Developer Guide](https://developer.shotgridsoftware.com/93c6e555/) 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 - -At the heart of any Toolkit setup is the Pipeline Configuration, a set of YAML files that manage everything from installed apps to software versions, and in some cases, even hold the templates for setting up your production directory structure and file names. The Pipeline Configuration is highly customizable, but we offer two starting points. - -### 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://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes), 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://developer.shotgridsoftware.com/82ff76f7/) 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). - -{% 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. - -For details on writing plugins for the Publisher, see the [Publisher section of our Developer Guide](https://developer.shotgridsoftware.com/93c6e555/#publisher). - -## Configuring software launches - -It’s simple to rely on {% include product %}’s auto-detection of host applications on your system: just launch {% include product %} Desktop, choose a project, and Desktop will display launchers for all supported software packages that it finds in standard application directories. But we also offer robust tools for more fine-grained management of the software in your studio. You can restrict application visibility to specific projects, groups, or even individual users. You can specify Versions, deactivate a given software package across your site, and group software packages together. All of this is managed through Software entities in {% include product %}. - -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`. - -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. - -We can learn a lot about how these fields work together by demonstrating some ways of using them. - -### Example: Grouping versions of the same application, auto-detect - -Say you have three versions of Maya on your filesystem: Maya 2016, Maya 2017, and Maya 2018. You want to make all of these available to your artists, but you want them to be grouped under a single icon in Desktop. - -If these three versions of Maya are installed in the standard location on your filesystem, then this will all happen automatically. When you select a project in Desktop, it will scan the standard applications directory on the local machine, and will find the three versions. Since you already have a Maya software entity in {% include product %}, with no specific versions or paths specified, it will display all versions it finds in Desktop. - -![](images/Integration-admin-guide/maya_software.png) - -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. - -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. - -### Example: Grouping versions of the same application, manual mode - -It’s perfectly fine to store Maya in a non-standard location in your studio. You’ll just need to create your own Software entities, and specify paths to let {% include product %} know where to find your software. Your setup may look like this: - -![](images/Integration-admin-guide/maya_group_software.png) - -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. - -### 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: - -![](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. - -### Example: Restrict software versions by project - -Sometimes you want to do more complex version management across projects in your studio. You may have a project in a crunch to deliver, which you want to lock off from new versions of software, while at the same time, its sequel may just be starting up and able to evaluate newer versions. In this case, you may have your Software entities set up like this: - -![](images/Integration-admin-guide/maya_restrict_permissions.png) - -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. - -### 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.) - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_field_types_html) 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. - -### 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html). - -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. - -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 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. - -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. - -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. - -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`. - -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. - -### 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). - -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. - -## Browser Integration - -Browser integration for {% include product %} Toolkit refers to access to Toolkit apps and launchers by way of right-click context menus in the {% include product %} web application. These menus, an example of which is shown above, contain actions configured for various entity types. In the case where you have multiple pipeline configurations for a project, the actions are organized by pipeline configuration. Browser integration allows you to launch content creation software like Maya or Nuke that is aware of your {% include product %} context, right from the browser. - -![](images/Integration-admin-guide/browser_integration.jpg) - -### A Brief History of Browser Integration - -Over the years, {% include product %} Toolkit’s browser integration has taken several forms. As technologies and security requirements have progressed, so has the approach to implementing browser integration. - -**Java Applet (deprecated)** - -The first implementation consisted of a Java applet that provided access to the local desktop from the {% include product %} web application. As Java applets became recognized as an exploitable security risk, they fell out of favor, necessitating its deprecation. - -**Browser Plugin (deprecated)** - -Replacing the deprecated Java applet was a browser plugin making use of NPAPI to access the local desktop from the {% include product %} web application. As NPAPI also became known as a security risk, the major web browsers began blocking its use. This necessitated deprecating the browser plugin. - -**Websockets v1 via {% include product %} Desktop (legacy)** - -Hosting a websocket server within the {% include product %} Desktop app was, and still is, the approach to communicating with the local desktop from the {% include product %} web application. The first implementation of this websocket server’s RPC API made use of the same underlying technology developed for the Java applet and browser plugin before it. When the server received a request from {% include product %}, the tank command from the associated project’s pipeline configuration was used to get the list of commands to show in the action menu. - -**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://developer.shotgridsoftware.com/d587be80/#getting-started-with-desktop), which work without explicitly configuring Toolkit. This is the current implementation of browser integration. - -### Configuration - -To control what actions are presented to the user for each entity type, you modify YAML environment files in your project’s pipeline configuration. There are a few things to understand and consider when first attempting customization. - -**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. - -![](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://developer.shotgridsoftware.com/8085533c/#configuring-software-launches) 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. - -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. - -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_** - -Updating the configuration for launching software from the {% include product %} browser varies from tk-config-default to tk-config-default2. - -With tk-config-default2, updates should be applied to config/env/includes/settings/[`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml), whereas in tk-config-default, they were done in config/env/`shotgun_task.yml`. - -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. - -While in your `env/includes/settings/tk-shotgun.yml`, notice how each block is per Entity. So, for instance, Asset first: -``` - -# asset -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmari: "@settings.tk-multi-launchapp.mari" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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)): - -``` - -# asset -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -Then, follow the same instructions for each entity (like Shot) from which you'd like to remove the ability to launch a particular software in the {% include product %} browser. Note that once you save the file, you may need to wait a minute and hard-refresh the browser for it to take effect. - -### Caching - -Browser integration has a robust caching mechanism, which allows menu actions to be shown to the user as quickly as possible. This is necessary because the process of bootstrapping Toolkit and getting a list of engine commands can be time consuming. - -**When is the cache invalidated?** - -The websocket server’s RPC API looks at two things to determine whether the cached data is still valid: YAML file modification times, and the contents of the site’s Software entities. If one of the environment YAML files in a given config has been modified since the cache data was written, the requisite data is recached and fresh data returned to the {% include product %} web application. Similarly, if any field on any Software entity in {% include product %} has been modified since the data was cached, Toolkit is bootstrapped and new data is cached. - -**Where is the cache file on disk?** - -The cache file location is dependent upon the operating system.` - -``` -OS X: ~/Library/Caches/Shotgun//site.basic.desktop/tk-desktop -Windows: %APPDATA%\Shotgun\\site.basic.desktop\tk-desktop -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: - -- `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. - -### Troubleshooting - -The complex nature of communicating from a web application with the local desktop means that there are possible points of failure along the way. Below are a few such situations and some suggestions of first steps to take when you encounter them. - -**“Open or install {% include product %} Desktop…” shown in the action menu** - -![](images/Integration-admin-guide/install_desktop.png) - -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://knowledge.autodesk.com/contact-support). - -**No actions are shown in the action menu** - -![](images/Integration-admin-guide/no_actions.png) - -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. - -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` - -**“Toolkit: Retrieving actions…” is never replaced with menu actions** - -![](images/Integration-admin-guide/retrieving_actions.png) - -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://knowledge.autodesk.com/contact-support), 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: - -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` - -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). - -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: - -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` - -**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: - -`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://knowledge.autodesk.com/contact-support) 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`: - -`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) - -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 - -In general use, {% include product %} Desktop automatically checks for updates for the Desktop app itself, the tk-desktop engine, and the basic configuration at launch time. However, there are cases where you might want to run integrations while offline or on machines that are completely disconnected from the Internet. The following section describes how to address each of these scenarios. - -### {% 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html). 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 - -_Scenario: I want to run {% include product %} integrations, but I am not connected to the Internet. We have a local {% include product %} install._ - -**Solution** - -- If you can temporarily connect to the internet, just download {% include product %} Desktop. It comes prepackaged with a set of [integrations](https://developer.shotgridsoftware.com/d587be80/#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. - -### Managing updates via manual download - -_Scenario: Our artist workstations are disconnected from the internet, so we cannot use the auto-updates in Desktop. We still want to get updates, but we have to download them via a single online machine and manually transfer them to artists or into a centralized location._ - -**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. - -**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. - -## Locking off updates - -While Desktop’s auto-updates are handy for making sure you always have the latest, sometimes you’ll want to freeze a project, or even your whole site, locking it to a specific version and preventing any updates. - -### Freezing updates for a single project - -_Scenario: My project is about to wrap and I would like to freeze it so that no {% include product %} integration updates are automatically downloaded._ - -**Solution** - -- Determine the version you want to lock your project to. [You can find the integration releases here.](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes) -- 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. - -**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` - -### Freezing updates for your site - -_Scenario: I don’t want any updates. I want full control over what is being downloaded and used in all projects in my studio._ - -**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. - -![](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. - -**Known issues** - -- 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 - -_Scenario: I’d like to lock down all projects in our site, except for our test project, which we still want to allow to auto-update._ - -![](images/Integration-admin-guide/freeze_all_but_one_project.jpg) - -**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` - -**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. - -### 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.* - -**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. - -## Taking over a Pipeline Configuration - -Without setting up any configurations, you get a basic set of {% include product %} integrations out-of-the-box, and this document covers the kinds of administration you can do with these out-of-the-box integrations. This basic setup is built on top of {% include product %}'s Toolkit platform, which supports much richer customization. Within Desktop, the Toolkit Project Setup Wizard will lead you through the process of creating a full, customizable Pipeline Configuration for your project. - -Each section below explains in detail each of the steps of the Wizard with examples and suggestions of sensible default values in case you are not sure how to set things up. - -#### Launching the setup wizard from Desktop - -![](images/Integration-admin-guide/advanced_setup.png) - -Once you have navigated to a project there will be an "Advanced Project Setup..." menu item in the user menu in the bottom right hand of Desktop. Click on this menu item to launch the Toolkit Setup Wizard. - -#### Select a configuration type - -![](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. - -- 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 - -![](images/Integration-admin-guide/wizard_config_default.png) - -This is the place to go if you want to start from scratch. The default configuration contain all the latest apps and engines set up with a default file structure and file naming convention. - -Once you have installed the default configuration, you can manually tweak the configuration files and customize it to fit the specific needs of your pipeline. Once you have got a project up and running, you can base your next project on this configuration. - -##### The Default Configuration - -This is the default Toolkit VFX configuration and usually a great starting point when you start setting things up. It comes with 3dsmax, Flame, Houdini, Nuke, Mari, Maya, Motionbuilder, and Photoshop set up and contains a simple, straight forward folder setup on disk. - -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. - -**File System Overview** - -The standard config handles Assets and Shots in {% include product %}. It breaks things down per Pipeline Step. A pipeline step is similar to a department. Each pipeline step contains work and publish areas for the various supported applications. The Shot structure looks like this: - -![](images/Integration-admin-guide/folder_structure.png) - -**Applications and workflows** - -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 - -In addition to the apps above, you can easily install additional apps and engines once the config has been installed. - -#### Basing your new project on an existing project - -![](images/Integration-admin-guide/wizard_project_config.png) - -This is a quick and convenient way to get up and running with a new project with all the defaults and settings that you had in a previous project. Toolkit will simply copy across the configuration from your old setup to the new project. This is a simple and pragmatic way to evolve your configuration - each new project is based on an older project. - -For more ways and documentation on how to evolve and maintain your pipeline configuration, see here: - -[Managing your project configuration](https://developer.shotgridsoftware.com/60762324/#inheriting-the-config-from-your-previous-project) - -#### Using a configuration template from git - -![](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: - -[Managing your project configuration](https://developer.shotgridsoftware.com/60762324/#a-studio-configuration-in-git-source-control) - -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 - -![](images/Integration-admin-guide/wizard_browse.png) - -Use this option if you have a configuration on disk, either as a folder or zipped up as a zip file. This can be useful if someone has emailed a configuration to you or if you keep a master config on disk which you are basing all your projects on. This is usually an expert option and we recommend either using a config from another project or one of our app store default configs. - -#### 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. - -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 %}. - -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. - -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. - -#### Choosing a project folder name - -![](images/Integration-admin-guide/wizard_project_name.png) - -Now it is time to choose a disk name for your project. This folder will be created in all the different storages which are needed by the configuration. You can see a quick preview in the UI - for most configurations this will only preview the primary storage, but if you are using a multi root config, additional storages will show up too. Toolkit will suggest a default project name based on the name in {% include product %}. Feel free to adjust it in order to create what is right for your setup. - -#### Selecting a configuration location - -![](images/Integration-admin-guide/wizard_config.png) - -Lastly, please decide where to put your configuration files on disk. Toolkit will suggest a location based on previous projects, so that they all end up in the same place on disk. - -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. - -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 -windows: \\prod\software\shotgun\golden_circle -``` - -#### What can I do once I have a configuration? - -Once you are up and running with your first configuration, please navigate to our 'next steps' documentation to learn more about how to configure and adjust Toolkit to better suite your studio needs: - -[Beyond your first project](https://developer.shotgridsoftware.com/c3b662a6/) - -## Advanced functionality - -### Silent installs - -If you are on a Windows network, you can use the argument "/S" to force the .exe {% include product %} Desktop installer to do a silent install. Then you can push a copy of the shortcut to the executable to the startup folder. 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 deleted file mode 100644 index d71c684d6..000000000 --- a/docs/en/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Offline usage and turning off auto updates -pagename: turn-off-auto-updates-and-offline -lang: en ---- - -# Offline usage and turning off auto updates - -- [Auto updates](#auto-updates) - - [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) -- [Turning off auto updates](#turning-off-auto-updates) - - [Turning off updates at a project or site level](#turning-off-updates-at-a-project-or-site-level) - - [Turning off updates for all but one project](#turning-off-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. - -It checks for updates on two components: - -- `tk-framework-desktopstartup` - A frame work which aids the launch of {% include product %} Desktop. -- `tk-config-basic` - The default site config. - -The configuration acts as a manifest for the versions of the apps, engines, frameworks, and core version that should be used by {% include product %} Desktop. -By updating the config, you are potentially updating any of these components as well. -Any updates that are found are downloaded and stored in the user's local cache, rather than modifying the original {% include product %} Desktop installed files. - -{% include product %} Create as an application has it's own update mechanism separate from {% include product %} Desktop which is not covered here. -However the integration features provided in {% include product %} Create work in a similar way, and will also auto update `tk-config-basic` into the same user cache. - -### What doesn't auto update? - -- If you have taken over a site configuration, then it won't check for newer `tk-config-basic` updates but more on that [further down](#turning-off-updates-at-a-project-or-site-level). - -- 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. - -## Running the integrations offline - -### Initial setup - -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. -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. -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." %} - -### 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.) - -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.) -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. -In this situation you can set the environment variable `SHOTGUN_DISABLE_APPSTORE_ACCESS` to `\"1\"` to stop it from trying." %} - -## Turning off auto updates - -### Turning off updates at a project or site level - -{% include info title="Note" content="If possible we recommend that you continue to allow auto updates to avoid missing out on new features and bug fixes." %} - -Follow these steps to turn off automatic updates for the integrations. - -1. Determine the version you want to stay at. You can find the integration releases [here](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes). -2. In {% include product %}, create a Pipeline Configuration entity either on a project or on a global page, with the following fields populated (In this example, we are locking down the config to use v1.0.36 of the integrations): - - 1. Name: `Primary` - 2. Project: Leave empty if you want updates turned off 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 turned off 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) - - 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.) - -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. - -- 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` - -### Turning off updates for all but one project - -If you have turned off updates on all projects as mentioned in the example above, but would like to enable updates on a specific project -You can - -1. Turning off 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 turning off 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 - -When it comes to updating your configuration, you may wish to test out the newer version before rolling it out to all your users. - -1. Duplicate the Pipeline Configuration entity in {% include product %} by right-clicking on it and selecting **"Duplicate Selected"**. -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. diff --git a/docs/en/guides/pipeline-integrations/administration/other-integrations.md b/docs/en/guides/pipeline-integrations/administration/other-integrations.md deleted file mode 100644 index 282398f1b..000000000 --- a/docs/en/guides/pipeline-integrations/administration/other-integrations.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Other Integrations -pagename: other-integrations -lang: en ---- - -# Other Integrations - -With {% include product %}'s API, you can integrate with a number of third party packages. However, there are a few with which {% include product %} integrates right out-of-the-box. - -## Cinesync - -Cinesync allows you to have simultaneous synced playback between multiple locations. {% include product %}'s integration allows you to create a Playlist of Versions, play it in Cinesync, and send your Notes made during the session right back into {% include product %}. - -For more information, please see [http://www.cinesync.com/manual/latest](http://www.cinesync.com/manual/latest/). - -## Deadline - -The {% include product %}+Deadline integration allows you to automatically submit rendered Versions to {% include product %} complete with thumbnail, links to frames, and other metadata. - -For more information, please see [https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html](https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html). - -## Rush - -Much like the Deadline integration, the {% include product %}+Rush integration allows you to automatically submit rendered Versions to {% include product %} complete with thumbnail, links to frames, and other metadata. - -For more information, please see [http://seriss.com/rush-current/index.html](http://seriss.com/rush-current/index.html). - -## Subversion (SVN) - -{% include product %} a light but flexible integration, which we use internally, that allows us to track revisions and link them to tickets and releases in {% include product %}. We also provide links to Trac to integrate with an external web SVN repository viewer. This is all done by adding a post-commit hook to SVN, a {% include product %} API script that takes some ENV variables from the commit and then creates a Revision entity in {% include product %} with various fields filled in. It can be modified to match your studio's needs and can be used for a local or hosted installation since it's just using the API. For more information, please see [https://subversion.apache.org/docs](https://subversion.apache.org/docs/). diff --git a/docs/en/guides/pipeline-integrations/administration/setting-python-3-desktop.md b/docs/en/guides/pipeline-integrations/administration/setting-python-3-desktop.md deleted file mode 100644 index 4dba85a0d..000000000 --- a/docs/en/guides/pipeline-integrations/administration/setting-python-3-desktop.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: default -title: Setting Python 3 for Desktop -pagename: setting-python-3-desktop -lang: en ---- - -# Set Python 3 as the default Python version in {% include product %} Desktop - -- [Windows](#windows) -- [MacOS](#macos) -- [CentOS 7](#centos-7) - -## Windows - -### Manually Set the `SHOTGUN_PYTHON_VERSION` environment to 3 on Windows - -- On the Windows taskbar, right-click the Windows icon and select **System**, navigate through the **Control Panel/System and Security/System**. - -![](images/setting-python-3-desktop/01-setting-python-3-desktop.png) - -- Once there, select **Advanced system settings**. - -![](images/setting-python-3-desktop/02-setting-python-3-desktop.png) - -- Next, select **Environment Variables** in System Properties. - -![](images/setting-python-3-desktop/03-setting-python-3-desktop.jpg) - -- In the **Environment Variables** window, you can add/edit your paths by selecting **New...**. - -![](images/setting-python-3-desktop/04-setting-python-3-desktop.jpg) - -- For the **Variable name**, add `SHOTGUN_PYTHON_VERSION`, and set the **Variable value** to `3`. - -![](images/setting-python-3-desktop/05-setting-python-3-desktop.jpg) - -- Restart the {% include product %} Desktop application. Now, you should see that the Python version has been updated to run Python 3. - -![](images/setting-python-3-desktop/06-setting-python-3-desktop.jpg) - - -## MacOS - -### Set the `SHOTGUN_PYTHON_VERSION` environment to 3 on MacOS - -- Create a properties file under `~/Library/LaunchAgents/` named `my.startup.plist` - -``` -$ vi my.startup.plist -``` - -- Add the following to `my.startup.plist` and **save**: - -``` - - - - - Label - my.startup - ProgramArguments - - sh - -c - launchctl setenv SHOTGUN_PYTHON_VERSION 3 - - RunAtLoad - - - -``` - -- After rebooting your Mac, the new environment variable will remain active. - -- Restart the {% include product %} Desktop application. Now, you should see that the Python version has been updated to run Python 3. - -![](images/setting-python-3-desktop/07-setting-python-3-desktop.jpg) - -## CentOS 7 - -### Set the `SHOTGUN_PYTHON_VERSION` environment to 3 on CentOS 7 - -- Add the following to your `~/.bashrc` file: - -``` -export SHOTGUN_PYTHON_VERSION="3" -``` - -- Reboot your OS by running: - -``` -$ sudo reboot -``` - -- Restart the {% include product %} Desktop application. Now, you should see that the Python version has been updated to run Python 3. - -![](images/setting-python-3-desktop/08-setting-python-3-desktop.jpg) diff --git a/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md deleted file mode 100644 index ae3bc36d1..000000000 --- a/docs/en/guides/pipeline-integrations/administration/toolkit-overview.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -layout: default -title: An Overview of Toolkit -pagename: toolkit-overview -lang: en ---- - -# An Overview of Toolkit - -![](https://sg-toolkit.s3.amazonaws.com/tank/docs/docs/10/no_version_0330_043251/icon_256.png) - -# 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. - -_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://developer.shotgridsoftware.com/8085533c/)._ - -# Introduction - -This document explains some of the key features in more depth. With explanations, examples and small demos, we show what Toolkit is all about. This document is a good starting point if you want to familiarize yourself with Toolkit or if you want to understand how Toolkit could add value to your studio. After you have read it, you'll have a good grasp of some of the key concepts and how they work in practice. - -![](images/toolkit-overview/overview.png) - -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. - -In the following sections, we will be looking in depth at the Toolkit and how it works. - -# Projects and Configurations - -In Toolkit, everything is project centric. A project typically starts its lifecycle inside of {% include product %}, goes through a bidding and a pre-production phase, and then once it is ready for the content-creation phase Toolkit can be set up for that project. - -![](images/toolkit-overview/new_project.png) - -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. - -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 - -When you set up a new project, you can base it off of an existing project. Toolkit will then copy the configuration folder from that project to your new project. This means that your new project will get exactly the same versions of apps and engines, the same settings and the same customizations as the project you are basing it on. This can be useful if you want to _evolve your pipeline_ and take advantage of improvements and tweaks that have happened as part of an existing production. - -Alternatively, you can just take the configuration folder from a project when you are happy with that project's setup and save it in a central location somewhere. This config can then be used as a studio template and each time you create a new project you can base it off this config. If you want, you can even source control this studio template config using a revision control system, such as git or something similar, and tracking how the pipeline configuration template evolves over time becomes simple and transparent. Whenever you want to update it, just copy the config from one of your projects and commit the changes. - -For detailed information about configuration management, check out our detailed docs: - -[Managing your project configuration.](https://developer.shotgridsoftware.com/60762324/) - -## Each Project has a Pipeline Configuration - -Whenever you set up Toolkit for a project, a pipeline configuration is created. This configuration contains all the settings and files needed for the project. The configuration has a dedicated `tank` command which you can run in a shell if you want to address the project directly (there is also a global tank command that works with all projects). In {% include product %}, the Pipeline Configuration has been registered as a special Pipeline Configuration Entity to make it easy to keep track of where your project configurations reside on disk. - -In addition to the master config that is created when the project is set up, you can create additional configurations for a project. This is often useful if you want to make changes to the configuration without affecting everyone on the project. If you want to do this, you can navigate to a pipeline configuration in {% include product %}, right click it and choose to clone it. This will create a new pipeline configuration for a project, based on another one, and using the new configuration you can safely test out a new app without affecting other users. - -Please note that the main configuration for a project needs to be named `Primary`. If you rename, modify or delete it, things may not work as expected. The Pipeline Configurations stored in {% include product %} are not intended to be manipulated by hand, but rather through various specific `tank` administration commands. - -Example: - -[How to clone a configuration](https://developer.shotgridsoftware.com/60762324/#cloning-your-configuration) - -## Checking for updates - -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: - -```shell -/software/shotgun/bug_buck_bunny/tank updates -``` - -Running this command with no parameters will check all environments, engines and app. This may take a long time, but you can also run the updater on a subset of your installed apps and engines. - -General syntax: - -```shell -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` - -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. - -Please note that a new version of an app may introduce changes to the app configuration. For example, there may be a new feature which requires a new configuration parameter. In that case, the `tank` upgrade script will prompt you to type in values for these parameters. - -## Checking for updates to the Core API - -Sometimes we release new versions of the Toolkit Core API. A separate command is used to update the Core API. In this case, the command is `tank core`. - -# Creating folders on disk - -Once Toolkit has been set up for your project, you can use it to help you create a consistent folder structure. This folder structure is configured by creating a filesystem template as part of the pipeline configuration on disk. In this folder structure, some of the paths will be dynamic - for example, you may have a folder called `asset` that represents a {% include product %} Asset entity. These dynamic folders can be connected to {% include product %} queries and many other things. - -![](images/toolkit-overview/folder_creation.png) - -Toolkit provides a number of different dynamic folder types that handle different setups and scenarios. You can use the standard {% include product %} API query syntax when you set up your folder creation, so you could organize your filesystem so that assets with different types end up in different folders on the filesystem. - -For a detailed walkthrough of how this works, see the admin guide: - -[Administering the {% include product %} Pipeline Toolkit](https://developer.shotgridsoftware.com/425b1da4/) - -Toolkit's folder creation happens in two passes: a direct pass, which can be run by anyone at any time, and a deferred pass, which is typically run by the artist just before application launch. This deferred pass is completely automatic and can be used to set up application-specific folders and user sandboxes. - -# The Current Context - -Once the filesystem structure has been created, Toolkit knows the relationship between a folder on disk and the {% include product %} object that the folder came from. This is important, because it allows Toolkit to easily associate an object in {% include product %} with a folder or disk, or file, when publishing, loading or resolving paths. It also relates to what we call the _context_ or sometimes _the current work area_. The context object is part of the Toolkit Core and tracks the current thing that is being worked on. It is a central mechanism when Toolkit resolves filesystem paths. - -![](images/toolkit-overview/context.png) - -The context can be created either from a {% include product %} object, such as a Task, Asset or Shot, or from a path on disk. When apps are running, they can always access the context, and this makes it easy to construct apps that have no knowledge of the filesystem naming conventions or whether the app is used in an Asset or Shot pipeline. This is all handled by the Toolkit Core API and the context. - -# Filesystem Templates - -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: - -```yaml -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. - -The template API lets you jump between a list of field values and paths: - -```python -# get a template object from the API ->>> template_obj = sgtk.templates["maya_shot_publish"] - - -# we can use the template object to turn a path into a set of fields... ->>> path = '/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' ->>> fields = template_obj.get_fields(path) - -{'Shot': '001_002', - 'Step': 'comp', - 'name': 'main_scene', - 'version': 3} - -# alternatively, we can take a fields dictionary and make a path ->>> template_obj.apply_fields(fields) -'/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' -``` - -Note how the above path and template has two different types of fields. The `Shot` and `Step` fields are high-level fields with equivalent objects in {% include product %} (a Shot and a Pipeline Step) where the `name` and the `version` fields are very specific to this particular type of template. If we wanted to describe a publish path for an Asset rather than a Shot, we would still have a `name` and a `version` field, since this is needed for all publishes, regardless of what type of data it is. However, we would not have a `Shot` and a `Step` field. Instead, we may have an `Asset` and a `Step` field, where the asset field would be associated with an asset in {% include product %}. - -When we develop an app that does publishing, we obviously don't want to have a separate app that does Shot publishing and one that does Asset publishing. Instead, we want a single publishing app that can handle any publish scenario, regardless of whether it is a Sequence, Shot, Asset or whatever. - -![](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. - -The App Code that would deal with the path resolve would typically look something like this: - -```python -# start with an empty fields dictionary -fields = {} - -# first let the context populate all its fields -fields.update( self.context.as_template_fields( publish_template_obj ) ) -# fields is now {'Shot': '001_002', 'Step': 'comp' } - -# now the app can add its business logic -fields["name"] = "main_scene" -fields["version"] = 234 - -# and finally the app can produce the path it needs in -# 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://developer.shotgridsoftware.com/82ff76f7/) - -[Core API Reference](https://developer.shotgridsoftware.com/tk-core/core.html#) - -# Choosing which Engines and Apps to run - -Another important role that the Toolkit Core plays is in deciding _which Apps should be presented to a user_. If you are working on character rigging and start up Maya, you probably want a different collection of apps than if you are doing lighting on a shot. Furthermore, the apps can be configured differently depending on how you want them to operate, so a review app for rigging may be generating a turntable, whereas the same review app is doing a playblast using the shot camera when an animator runs it. - -In order to allow for this flexibility, a Toolkit project configuration contains a collection of _environments_. An environment is a configuration file that defines a collection of apps and engines and all their configuration parameters. - -When Toolkit starts up, it needs to decide _which_ environment to initialize. This is done via a piece of Python code called a _hook_, where you can add your own business logic. The _context_ object is passed into this piece of code and this is often what is used to determine which environment to use. - -![](images/toolkit-overview/environment.png) - -This makes it possible to configure separate collections of apps for different parts of the pipeline. Furthermore, you can also update them independently and even have different supervisors managing them separately. - -## Environments in the Default Configuration - -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. - -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' -``` - -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. - -It can also be useful to launch Maya directly from a Shot object inside of {% include product %}. More importantly, it can be really useful to be able to type in a console `tank Shot 1122 launch_maya`. This is where the `shot` and `asset` environments come in. When you load Maya with a context which contains a Shot or Asset but no Pipeline Step, it will load one of these environments. Since the filesystem structure is all organized per Pipeline Step, it is not really possible to do any loading or publishing if we are missing that information in our context. Maya instead launches with a bare configuration, only containing the _Workfiles_ app. This app lets you choose a Task to work on. Once you have picked a Task, Toolkit switches the context and restarts the engine for you and will load up the `shot_step` environment with the full range of apps. - -Similarly, the `project` environment is a catch-all fallback, also just containing the _Workfiles_ app. This makes it possible to launch Maya from pretty much anywhere inside the project and it will initialize Toolkit in a minimal state, allowing you to jump to a valid work area using the _Workfiles_ app. - -# Configuring Apps - -Each app has number of configuration parameters that need to be specified. When you install or upgrade an app, Toolkit makes sure that you have specified all the required settings. - -Simple setting values such as strings or integers are specified directly in the environment config. Templates are different, and since Toolkit wants to keep all templates in a single place, the environment file merely points to templates defined in the templates file. Each app will require different fields to be present in the templates that it uses in its configuration. In our previous example, the publish app was using a template with the fields `name` and `version` when creating its output files on disk. The app would therefore have a configuration setting which requires a template containing the fields `name` and `version`. - -![](images/toolkit-overview/app_config.png) - -If you try to configure the app using a template that has more than the context fields (`name` and `version`), the app would not know how to populate these additional fields and would not be able to generate a path from that template. Similarly, if you provided a template that was missing one of the fields it would lead to confusing results; in our case, version numbers would not be written out of the app. Therefore, Toolkit will validate the configuration at startup to make sure that the necessary fields are provided for all templates. Toolkit also supports several ways of using default values and optional fields. - -For a complete reference, check the following links: - -[Apps and Engines Configuration Reference](https://developer.shotgridsoftware.com/162eaa4b/) - -[File System Configuration Reference](https://developer.shotgridsoftware.com/82ff76f7/) - -## Hooks - -In addition to app settings using templates, Toolkit also supports a concept called _hooks_. Hooks are small snippets of Python code, allowing you to customize parts of the app as part of your configuration. - -Here's how it works and why it is useful: - -Apps are powerful because they can be reused across multiple engines and projects. But apps tend to need some small snippets of engine-specific logic. For example, if we are building a loader app which should work both in Nuke and Maya, there will need to be code that handles the _actual file load_ and this code will have to be different in Nuke and Maya. Furthermore, it would be great if it would be possible to use this app with any engine! Different studios may also have different ways to load items into a scene, and someone may need to support a custom Maya reference node where other studios may just do an import. - -This situation is handled in Toolkit using a _hook_. The hook is a customizable piece of code. The App comes with a default hook which contains a base level implementation, meaning that the app will work fine right out of the box. However, if you want to customize the behaviour you can copy that hook file into your configuration and Toolkit will use that code instead. - -[Read more about how to work with hooks in the Admin guide.](https://developer.shotgridsoftware.com/425b1da4/#hooks) - -# Running from {% include product %} and the Shell - -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. - -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 %}. - -You can also access Toolkit from a shell. Each project configuration comes with its own `tank` command. Simply navigate to your project configuration root and execute the `./tank` command from there. - -Lastly, you can simply add the Toolkit API to the `PYTHONPATH` environment variable and import it. Using the API is straightforward and if you want to start up Toolkit inside of Maya manually or as part of an existing studio launch system instead of using {% include product %} Desktop, all you need to execute is a couple of simple commands. - -# Publishing - -When you want to share files that you are working on with others, you can publish them. What this means is that a `PublishedFile` entity is created in {% include product %} which other users can import using Toolkit's loader app. - -![](images/toolkit-overview/dependencies.png) - -The details of exactly what this means in terms of the data management (where on disk things are saved, what the file contains, etc) is left to the app doing the actual work. The Toolkit API provides developers with methods to easily create publishes inside of {% include product %} and link these up to the right objects to ensure that {% include product %} can go ahead and push notifications to all the right people. We also provide a default publish app that is meant to be versatile and highly configurable, but this is by no means the only way to implement version control using Toolkit. Because Toolkit is extensible, you could build your own custom version control and publishing system using Toolkit if this is desirable. - -As a starting point, however, we recommend our Publish App: - -[The Default Multi Publish App.](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -# Building Reusable Apps - -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. - -For an more extensive introduction to App Development, see the following documents: - -[An Introduction to the Toolkit App Development.](https://developer.shotgridsoftware.com/2e5ed7bb/) - -[The Toolkit API Reference](https://developer.shotgridsoftware.com/tk-core/) - -[Apps and Engines Configuration Reference](https://developer.shotgridsoftware.com/162eaa4b/) diff --git a/docs/en/guides/pipeline-integrations/development.md b/docs/en/guides/pipeline-integrations/development.md deleted file mode 100644 index be70c031d..000000000 --- a/docs/en/guides/pipeline-integrations/development.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Development -pagename: toolkit-development -lang: en ---- - -# Development - -## What is Toolkit? - -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? - -There are a number of different ways in which you can develop with Toolkit. - -- Writing custom code, in what we call hooks, to expand the existing app, engine, or framework behavior. -- Writing your own apps, engines or frameworks. -- Or writing your own standalone scripts that make use of the API. - -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) - -The Toolkit API is a Python API, designed to be used alongside the {% include product %} Python API or REST API, and is not a replacement for them. -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). - -These articles will guide you through how you can develop with Toolkit. \ No newline at end of file diff --git a/docs/en/guides/pipeline-integrations/development/images/dev-configuration.png b/docs/en/guides/pipeline-integrations/development/images/dev-configuration.png deleted file mode 100644 index f15f0145c..000000000 Binary files a/docs/en/guides/pipeline-integrations/development/images/dev-configuration.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/development/images/develop.png b/docs/en/guides/pipeline-integrations/development/images/develop.png deleted file mode 100644 index a6422ac79..000000000 Binary files a/docs/en/guides/pipeline-integrations/development/images/develop.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/development/images/reload-restart.png b/docs/en/guides/pipeline-integrations/development/images/reload-restart.png deleted file mode 100644 index 8b3dbf12a..000000000 Binary files a/docs/en/guides/pipeline-integrations/development/images/reload-restart.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/development/images/starter-app.png b/docs/en/guides/pipeline-integrations/development/images/starter-app.png deleted file mode 100644 index b9293c8ae..000000000 Binary files a/docs/en/guides/pipeline-integrations/development/images/starter-app.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png b/docs/en/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png deleted file mode 100644 index f8b353863..000000000 Binary files a/docs/en/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md deleted file mode 100644 index 4874260e0..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-app.md +++ /dev/null @@ -1,260 +0,0 @@ ---- -layout: default -title: Developing apps -pagename: sgtk-developer-app -lang: en ---- - -# Developing your own app - -## Introduction - -This guide outlines what a Toolkit app is, covers how to create one, and explains some basics around app development. -{% include product %} Pipeline Toolkit is not only a collection of apps and engines maintained by {% include product %} Software, it is also a development platform that makes it easy to quickly build custom pipeline tools! - -- [What is a Toolkit app?](#what-is-a-toolkit-app) -- [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) -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) - -## What is a Toolkit app? - -A Toolkit app can be defined as follows: - -- A tool that is usually run by an end-user, using the {% include product %} integrations. -- Apps usually have a graphical user interface with which the user can guide the app's operations, but they don't have to. An app can also be a command registered with the integrations, triggered by the user from the {% include product %} menu in the host software. -- They can have an API/public methods in which other processes or apps could interact. -- They can be multi-platform, and software agnostic. -- They can be set up to be configured differently per [environment](https://developer.shotgridsoftware.com/487a9f2c/#what-is-an-environment). -- They can be contextually aware. For example, an app can know the task the user is working on, and act accordingly. -- They can only be run from a Toolkit engine. - -Toolkit apps are initialized by Toolkit engines. [Engines](https://developer.shotgridsoftware.com/tk-core/platform.html#engines) are designed to run within a specific software environment, where they then provide an interface from which to run Toolkit apps. The engine abstracts away the complexity of needing to handle the various software environments from the app. -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. -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. - -## 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, -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. -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. -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. - -```yaml -tk-multi-starterapp: - location: - 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. - -Now you've added the app to an environment; you should be able to go ahead and launch it. How you launch it will depend on the engine and environment you defined it in. - -## Part 4: Developing the app - -You are now all set to start developing your app! - -### Anatomy of the Template Starter App - -The [template starter app](https://github.com/shotgunsoftware/tk-multi-starterapp) contains the following basic structure: - -![](./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. -- **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`. -- **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. -```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 -``` -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). - -### Frameworks - -If you know that you will be using frameworks, you can add them to the manifest file. - -For example, if you plan to use the Qt Widgets and {% include product %} Utils frameworks for your app, add the following to the `info.yml`: - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x"} -``` - -#### 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 -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"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. -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: - -- [The Qt Widgets Framework](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/) -- [The {% include product %} utils Framework](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/) - -### 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, -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. - -{% 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 %}. -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) - -{% include info title="Note" content="Make sure they have access to see your app code as well, otherwise the app will not load." %} - -## Part 6: Preparing your first release - -In [part three](#part-3---adding-the-app-to-your-config) you set your configuration to point to your app using a dev descriptor. -For released software, you will want to ensure that your app can be accessed by all users and that things are versioned so that they can be upgraded safely and easily. - -All apps provided by {% include product %} use the Toolkit app store to track updates and releases, and they will have a location tag that looks something like this: - -```yaml -location: - 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. -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. - -- [Git](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-tags-in-git) and [GitHub](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-releases-on-github) -- [{% include product %} Uploads](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) -- [Local paths](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk) - -In your production config, you add your app and switch to using the descriptor that suits your needs. - -### Git-based descriptors - -We recommend that you start using source control to make sure that changes are tracked, regardless of if you intend to use a git descriptor. - -Toolkit supports git (http://git-scm.com/) out of the box, and when running `tank updates` on a configuration, it can check for the latest release in your git repository and update your configuration, just like with the app store descriptor. - -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`. - -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. -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. -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. -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. -- 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`. - -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/). - -If you've made an entire app that your willing to share with the community, let us all know on the [forums](https://community.shotgridsoftware.com/)! diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md deleted file mode 100644 index 1c5034437..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ /dev/null @@ -1,380 +0,0 @@ ---- -layout: default -title: Bootstrapping and running an app -pagename: sgtk-developer-bootstrapping -lang: en ---- - -# Bootstrapping and running an app - -This guide walks you through the process of initializing a Toolkit engine so that you can run custom code or launch apps, also known as bootstrapping. - -Bootstrapping is useful in situations where a Toolkit engine has not already been started and you need to use the API. -For example, you might have a processing script that runs on a render farm and needs to utilize the Toolkit API to handle paths and context. -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. -- A project with an advanced configuration. If you haven't set up a configuration before you can follow the ["Getting started with configurations"](../getting-started/advanced_config.md) guide. - -### Steps - -1. [Importing the Toolkit API for bootstrapping](#part-1-importing-the-toolkit-api-for-bootstrapping) -2. [Logging](#part-2-logging) -3. [Authentication](#part-3-authentication) -4. [Bootstrapping an engine](#part-4-bootstrapping-an-engine) -5. [launching an app](#part-5-launching-an-app) -6. [Complete script](#part-6-the-complete-script) - -## Part 1: Importing the Toolkit API for bootstrapping - -### Where should I import sgtk from? - -If you've followed the ["generating a path and publishing it"](sgtk-developer-generating-path-and-publish.md) guide then you'll have covered the step of importing `sgtk`. -That guide states that you must import the `sgtk` package from the project configuration you wish to work with. -With bootstrapping, this is still true, however, it doesn't matter which initial `sgtk` package you import, as any Toolkit API can perform the bootstrap operation into a different project configuration. -The bootstrap process will swap out the currently imported sgtk package for the new project config's Toolkit API. - -### Downloading a standalone Toolkit core API - -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 -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. - -### Code - -```python -# If your sgtk package is not located in a location where Python will automatically look -# then add the path to sys.path. -import sys -sys.path.insert(0, "/path/to/tk-core/python") - -import sgtk -``` - -## Part 2: Logging - -If you are running this script via an IDE or shell, then you will most likely want to enable the logging to be output. -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. -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. - -```python -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True -``` - -## Part 3: Authentication - -When running a script that uses the Toolkit API outside of an environment where {% include product %} Toolkit has already been started, you will always need to authenticate. -So before you can perform the bootstrapping, you need to authenticate the Toolkit API with your {% include product %} site. - -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). -- 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. -Here is an example of both user and script authentication. - -### User Authentication - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Optionally you can clear any previously cached sessions. This will force you to enter credentials each time. -authenticator.clear_default_user() - -# The user will be prompted for their username, -# password, and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating an `Sgtk` instance. -sgtk.set_authenticated_user(user) -``` - -### Script Authentication - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -## Part 4: Bootstrapping an engine - -Now that you have authenticated the Toolkit API for the session, you can start the bootstrapping process. -You can find a lot of information on the bootstrap API in our [reference docs](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api). - -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. -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 -mgr = sgtk.bootstrap.ToolkitManager(user) -``` - -> If a `user` is not passed into the `ToolkitManager`'s initializer, `ShotgunAuthenticator().get_user()` is called internally, which will return the currently authenticated ShotGrid user. To bootstrap using any other `HumanUser` or `ScriptUser`, pass in a user created via [ShotgunAuthenticator.create_session_user](https://developer.shotgridsoftware.com/tk-core/authentication.html#sgtk.authentication.ShotgunAuthenticator.create_session_user) or [ShotgunAuthenticator.create_script_user](https://developer.shotgridsoftware.com/tk-core/authentication.html#sgtk.authentication.ShotgunAuthenticator.create_script_user). - -For Toolkit to bootstrap, it needs to know at least the entity, plugin id, and engine. -This guide won't cover all the available parameters and options, as they are covered in the [reference documentation](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api). - -#### 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. -```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 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. -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/c73fcb84/#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: - -```python -task = {"type": "Task", "id": 17264} -engine = mgr.bootstrap_engine("tk-shell", entity=task) -``` - -If you bootstrap into an entity type other than `Project`, you may need to ensure your [path cache](https://developer.shotgridsoftware.com/cbbf99a4/) is in sync, otherwise, it may not be able to load the environment if, for example, it tries to resolve a template. -Since you don't have an `Sgtk` instance before bootstrapping, you will need to tell the bootstrap process to perform the synchronization after it's created an `Sgtk` instance but before it starts the engine. -You can do this by setting the [`ToolkitManager.pre_engine_start_callback`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.pre_engine_start_callback) property to point to a custom method. -In that method you can then run the synchronization: - -```python -def pre_engine_start_callback(ctx): - ''' - Called before the engine is started. - - :param :class:"~sgtk.Context" ctx: Context into - which the engine will be launched. This can also be used - to access the Toolkit instance. - ''' - ctx.sgtk.synchronize_filesystem_structure() - -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. - -### Bootstrapping - -Once all the [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) parameters have been set, and you call the [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) method, it will start the engine, and return a pointer to the engine instance. - -Here is a recap of the code so far: - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -# This is actually not necessary when using the ToolkitManager. The authenticated user will be set -# before launching the engine. -# 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. -mgr = sgtk.bootstrap.ToolkitManager(user) -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) -``` - -## Part 5: Launching an app - -Now that you have an engine instance, you're ready to start using the Toolkit API. - -Before covering how to launch the app, it's worth pointing out you can get hold of the [current context](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context), [Sgtk instance](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk), and [{% include product %} API instance](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.shotgun) via the engine. - -```python -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. -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 -# use pprint to give us a nicely formatted output. -import pprint -pprint.pprint(engine.commands.keys()) - ->> ['houdini_fx_17.5.360', - 'nukestudio_11.2v5', - 'nukestudio_11.3v2', - 'after_effects_cc_2019', - 'maya_2019', - 'maya_2018', - 'Jump to Screening Room Web Player', - 'Publish...', -...] -``` - -With that list, you can see which commands have been registered and can be run. - -#### Running the command - -How you run the command will be different depending on the engine, as there is currently no standardized method. -For the `tk-shell` engine, you can use the convenience method: `Engine.execute_command()`. -It expects a command string name, which we listed out earlier, and a list of parameters that the app's command expects to be passed. - -```python -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...",[]) -``` - -If you're not running in the `tk-shell` engine, then you can fallback to calling the registered callback directly. - -```python -# now find the command we specifically want to execute -app_command = engine.commands.get("Publish...") - -if app_command: - # now run the command, which in this case will launch the Publish app. - app_command["callback"]() -``` - -Your app should now have started, and if you're running the `tk-shell` engine then the output should be appearing in the terminal/console. - -## Part 6: The complete script - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing) -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -# This is actually not necessary when using the ToolkitManager. The authenticated user will be set -# before launching the engine. -# 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. -mgr = sgtk.bootstrap.ToolkitManager(user) -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) - -# Optionally print out the list of registered commands: -# use pprint to give us a nicely formatted output. -# import pprint -# pprint.pprint(engine.commands.keys()) - -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...",[]) -``` diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md deleted file mode 100644 index 6a0ee5b9c..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -layout: default -title: Developing engines -pagename: sgtk-developer-engine -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) -- [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. -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. -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. -- Logging methods are typically overridden to write to the software's log/console. -- Methods for displaying UI dialogs and windows. These methods are usually overridden, if the way the engine handles Qt is different from the default base class behavior, to ensure seamless integration of windows launched by Toolkit apps and the underlying host software window management setup. -- Provides a `commands` dictionary containing all the command objects registered by apps. This is typically accessed when menu entries are created. -- 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. -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. -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://developer.shotgridsoftware.com/162eaa4b/) for the most commonly used content creation software. -There are also [engines that Toolkit Community members have built and shared back](https://developer.shotgridsoftware.com/58a557ee/). 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. -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. -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). - -We love to see new integrations, and are always eternally grateful for people's generous contributions to the Toolkit Community! - -{% include info title="Tip" content="The [Developing your own app](sgtk-developer-app.md) contains a step by step guide to developing an app, which contains principles that apply to developing an engine as well that are not covered in this guide." %} - -## Approaches to engine integration - -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. - - -### 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. -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. -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. -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. -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." %} - - -### 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. - - -## 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. -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. -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 more of them that are supported, the better the engine experience will be! - -- Built-in Python interpreter, Qt, and PySide! -- Ability to run code at software startup/init. -- Ability to access and auto-run code in two places: once when the software is up and running and once when the UI has fully initialized. -- 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 -- Flexible event system - - "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 diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md deleted file mode 100644 index faece558e..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: Developing frameworks -pagename: sgtk-developer-framework -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) -- [Using Frameworks from hooks](#using-frameworks-from-hooks) - -## 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. -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. - -## Pre-made {% include product %} frameworks - -{% include product %} supplies some premade [frameworks](https://developer.shotgridsoftware.com/c6db88dd/) that you may find useful when creating your own apps. -The [Qt Widgets](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/) and [{% include product %} Utils](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/) frameworks are especially useful in app development. - -## Creating a Framework - -When it comes to creating your own framework, the setup is pretty much the same as writing an app, and you can get more information on that in the ["Developing your own apps"](sgtk-developer-app.md) guide. -Instead of an `app.py` file, a framework has a `framework.py` at the root of the framework package, that contains a class deriving from the [`Framework`](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#framework) base class. -Also, your framework won't register a command with the engine. - -Instead, you can either store methods directly on the framework instance itself, or store modules inside the `python/` folder. -For example, the [shotgunutils framework stores them in the python folder](https://github.com/shotgunsoftware/tk-framework-shotgunutils/tree/v5.6.2/python). -To access them, you would import the framework, and then use the [`import_module()` method](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Framework.import_module), to access the submodules. - -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 deleted file mode 100644 index 60403a22f..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ /dev/null @@ -1,506 +0,0 @@ ---- -layout: default -title: Generating a path and publishing it -pagename: sgtk-developer-generating-path-and-publish -lang: en ---- - -# Generating a path and publishing it - -This guide covers getting started with the {% include product %} Toolkit Python API, which is what our pipeline integrations are built with. - -The purpose of this guide is to walk through a basic example of how you can use the API, and by the end, you will be able to import the Toolkit API and generate a path and publish it. - -### Requirements - -- 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](https://developer.shotgridsoftware.com/5d83a936/) guide. - -### Steps - -1. [Importing sgtk](#part-1-importing-sgtk) -2. [Getting an Sgtk instance](#part-2-getting-an-sgtk-instance) -3. [Getting context](#part-3-getting-context) -4. [Creating folders](#part-4-creating-folders) -5. [Using a template to build a path](#part-5-using-a-template-to-build-a-path) -6. [Finding existing files and getting the latest version number](#part-6-finding-existing-files-and-getting-the-latest-version-number) -7. [Registering a published file](#part-7-registering-a-published-file) -8. [Pulling it all together into a complete script](#part-8-the-complete-script) - -## Part 1: Importing 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. - -{% include info title="Note" content="You may sometimes come across references to a `tank` package. This is the legacy name for the same thing. While both work `sgtk` is the correct name to use going forward." %} - -To import the API you need to make sure that the path to the [core's python folder](https://github.com/shotgunsoftware/tk-core/tree/v0.18.167/python) exists in the [`sys.path`](https://docs.python.org/3/library/sys.html#sys.path). -However, for this example, we recommend that you run this code in the {% include product %} Desktop's Python console. -This will mean that the correct `sgtk` package path is already added to your `sys.path`. -Equally, you don't need to add the path if you are running this code within software where the {% include product %} integration is already running. - -When running your code in an environment where {% include product %} is already started you can import the API by simply writing: - -```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 -import sys -sys.path.append("/shotgun/configs/my_project_config/install/core/python") - -import sgtk -``` - -{% include info title="Note" content="If you're using distributed configs and you want to import `sgtk` in an environment where Toolkit hasn't already been bootstrapped, you will need to take a different approach. Please see the [bootstrapping guide](sgtk-developer-bootstrapping.md) for more details." %} - -## Part 2: Getting an Sgtk instance - -In order to start using the Toolkit API, you'll need to create an instance of the [`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) class. - -[`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) is a class in the `sgtk` package that acts as the main interface to the API. -Once you create an instance of `Sgtk`, you will be able to do things like get a context, create folders, or access the templates. - -As the API documentation states, you don't create an instance of `Sgtk` directly. Here are some options for getting an `Sgtk` instance. - -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.* - -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.* - -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`. -If you're using the {% include product %} Python Console then the `tk` variable is already pre-defined as a global variable. - -You now have an `Sgtk` instance and you're ready to start using the API. -Your publish script should now look like this: - -```python -import sgtk - -# 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 -``` - -## Part 3: Getting context - -### What is a context and why do I need it? - -A lot of what happens in Toolkit revolves around context, in other words knowing what you are working on and being able to act accordingly. -With the Toolkit API, you will need to be able to store important details about the entities you are working with, and share them with apps or other processes so they can operate in a contextually aware way. -For example, when Toolkit knows what task you're working on, it can automatically link your published files to that task in ShotGrid. - -The [`Context` class](https://developer.shotgridsoftware.com/tk-core/core.html#context) acts as a container for this information. -You can store the `Task`, `Step`, `entity` (such as a `Shot` or `Asset`), `Project`, and current `HumanUser` within an instance of the class, among a few other things. - -You can create as many different context objects as you like in a given session. However, when there is an engine present, there is a concept of a single current context, which the engine keeps track of. -This is the context that the user is currently working in, and that the apps should be working with. - -In a later step, you will be using the context to help resolve a path that can be used for saving or copying a file. - -### Acquiring a Context - -To create a context you must use one of the following constructor methods `Sgtk.context_from_entity()`, `Sgtk.context_from_entity_dictionary()` or `Sgtk.context_from_path()`. -You access these methods through the `Sgtk` instance you created in the previous step, which you stored in the `tk` variable. - -{% include info title="Note" content="To get a context from a path, you must have already created folders, which is covered in the next step of this guide." %} - -Instead of creating a new context however, you could [grab the current context from the engine](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context), that you gathered in [part 2](#part-2-getting-an-sgtk-instance), like this: - -```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. - -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()`. - -When you create a context you provide the deepest level required for your operations. -For example, you could create a context from a Task and Toolkit will work out the rest of the context parameters for you. - -```python -context = tk.context_from_entity("Task", 13155) -``` - -If you print out a representation of the context instance you will get something like this: - -```python -print(repr(context)) - ->> - -``` - -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 -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) -``` - -## Part 4: Creating Folders - -Toolkit can dynamically generate a folder structure on disk based upon your project entities. - -This fulfills two purposes. - -1. You get an organized structure created on disk where you can place your files. -2. It allows Toolkit to programmatically understand your structure, derive context from it, and know where to place files. - -You need to ensure that the folders exist on disk so that you can resolve the path in a later step. -You will use the [Sgtk.create_filesystem_structure()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Sgtk.create_filesystem_structure) method to achieve this: - -```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: - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) -``` - -You've now completed all the preparation steps and are ready to move onto generating a path using a template. - -## Part 5: Using a template to build a path - -### Generating the path - -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://developer.shotgridsoftware.com/82ff76f7/#part-2---configuring-file-system-templates), 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. - -```python -template = tk.templates["maya_shot_publish"] -``` - -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}' -``` - -The template is made up of keys that you will need to resolve into actual values. -Since the context contains enough information for the majority of the keys, you can start by using that to extract values: - -```python -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. -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. - -Which leaves the `name` and `version`. Since the name is a matter of choice, you can either hard code a default or provide an opportunity for the user to enter a value, for example, by popping up an interface. -For now, you will hard code both, but in the next step, we'll cover how to find the next available version number. - -```python -fields["name"] = "myscene" -fields["version"] = 1 -``` - -Now you have all the fields, you're ready to resolve the template into an absolute path using [`Template.apply_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Template.apply_fields): - -```python -publish_path = template.apply_fields(fields) - ->> /sg_toolkit/mysite.shotgunstudio.com/my_project/sequences/seq01_chase/shot01_running_away/comp/publish/maya/myscene.v001.ma -``` - -### Ensuring the folders exist - -Although you ran the folder creation method earlier you may need to perform an additional step to ensure that all the folders exist. -This can be required if, for example, your template defines folders that are not present in the schema, and so were not created in the original `create_filesystem_structure()` call. - -There are a couple of convenience methods you can use to do this. -If, your code is running in a Toolkit app or hook you can use the [`Application.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Application.ensure_folder_exists) method. -If, there is an engine present you can use [`Engine.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.ensure_folder_exists) method. -Or if you're running code outside of an engine, there's [`sgtk.util.filesystem.ensure_folder_exists()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.filesystem.ensure_folder_exists). -Make sure to only create the folders for the directory and not the full file path. -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. -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. -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 -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) - -# Get a template instance by providing a name of a valid template in your config's templates.yml. -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" -fields["version"] = 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders. -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Create an empty file on disk. (optional - should be replaced by actual file save or copy logic) -sgtk.util.filesystem.touch_file(publish_path) -``` - -The next step is to dynamically work out the next version number rather than hard coding it. - -## Part 6: Finding existing files and getting the latest version number - -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). - -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. - -### Querying {% include product %} for the next version number. - -Using the {% include product %} API and the [`summarize()` method](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.summarize) you can get the highest version number amongst the `PublishedFile` entities, that share the same name and task, and then add 1. - -```python -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 -``` - -### Searching the file system for the next version number. - -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. -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 -def get_next_version_number(tk, template_name, fields): - template = tk.templates[template_name] - - # Get a list of existing file paths on disk that match the template and provided fields - # Skip the version field as we want to find all versions, not a specific version. - skip_fields = ["version"] - file_paths = tk.paths_from_template( - template, - fields, - skip_fields, - skip_missing_optional_keys=True - ) - - versions = [] - for a_file in file_paths: - # 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. -fields["version"] = get_next_version_number(tk, "maya_shot_work", fields) -``` - -The [`sgtk.paths_from_template()`](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=paths_from_template#sgtk.Sgtk.paths_from_template) method will gather all the files on disk that match the provided template and fields. -This is method is also useful for scenarios where you want to find and display a list of files to the user. - -You can chose to use either option, but the guide will use the code from option one however to keep it simple. - -## Part 7: Registering a published file - -Now that you have a path you're ready to publish it. To do this you can use the utility method [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish). - -It is possible to use the {% include product %} API's [`{% include product %}.create()`](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.create) method to create a `PublishedFile` entity as well, but we strongly recommend using the Toolkit API for this as it will ensure all the required fields are provided and filled in correctly. - -```python -# So as to match the Publish app's default behavior, we are adding the extension to the end of the publish name. -# This is optional, however. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -At this point, it's also worth noting that our [Publish app](https://developer.shotgridsoftware.com/bc718491/) also comes with [its own API](https://developer.shotgridsoftware.com/tk-multi-publish2/) as well. -Although that is still essentially using this same [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish) method, it builds upon the publishing process by providing a framework to handle collection, validation, and publishing. - -## Part 8: The complete script - -```python -# Initialization -# ============== - -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task -tk.create_filesystem_structure("Task", context.task["id"]) - -# Generating a Path -# ================= - -# Get a template instance by providing a name of a valid template in your config's templates.yml -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" - -# Get an authenticated Shotgun API instance from the engine -sg = current_engine.shotgun - -# Run a Shotgun API query to summarize the maximum version number on PublishedFiles that -# are linked to the task and match the provided name. -# Since PublishedFiles generated by the Publish app have the extension on the end of the name we need to add the -# extension in our filter. -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Creating a file -# =============== - -# This is the bit where you would add your own logic to copy or save a file using the path. -# In the absence of any file saving in the example, we'll use the following to create an empty file on disk. -sgtk.util.filesystem.touch_file(publish_path) - -# Publishing -# ========== - -# So as to match publishes created by the Publish app's, we are adding the extension to the end of the publish name. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -{% include info title="Tip" content="By this point, the code is getting a bit long, so a recommended next step would be to tidy it up a bit and break things into methods." %} - -### Final Thoughts - -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 diff --git a/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md deleted file mode 100644 index c57558998..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: Integrations Developer Guide -pagename: sgtk-developer-guide -lang: en ---- - -# Integrations Developer Guide - -## 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. - -### Configuring what is being displayed - -The values in the detail area and the listings are both configurable through the `shotgun_fields` hook. You can subclass this hook and change the implementation in order to display the exact values you want. - -**Templating System** - -The hook supports a simple templating language, allowing for great flexibility. It also supports the HTML subset supported by Qt, so you can control color, font size, weight, etc. of your displayed values. - -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}`. - -This hook contains the following methods: - -**Controlling items appearing in lists** - -The `get_list_item_definition()` method returns a dictionary that controls the appearance of items in the various listings, given a {% include product %} entity type. It returns a dictionary with the keys `top_left`, `top_right` and `body`, for example: - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**Controlling the top detail area** - -The `get_main_view_definition()` method returns a dictionary with the keys `title` and `body` given a {% include product %} entity type. These values controls the appearance of an object in the detail area, for example: - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**Controlling the fields shown in the Info tab** - -The `get_all_fields()` methods returns a list of fields to display for a given entity when this is rendered in the Info tab. - -### Configuring Actions - -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. - -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} - Task: - - actions: [assign_task] - filters: {} - Version: - - 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. - -When an object is loaded into the Panel, the action configuration above is read in and analyzed. A list of suitable actions for the current object is determined and the `generate_actions()` hook method will be executed. {% include product %} data for the given entity will be passed to the hook at this point so that the hook code can determine if the action can be run for this particular {% include product %} object. This is a way to allow each hook to run a check prior to being displayed. For example, the `play_in_rv` hook may only be relevant in the case there is media available locally - the action mappings set up in the configuration tells the panel which actions to enable for a given {% include product %} entity but they may not all be displayed because the `generate_actions()` method may determine that they are not suitable for the given object. - -The actions returned from the `generate_actions()` method will be displayed on the actions menu and when a user clicks on it, the `execute_acton()` hook method is called to run the action. - -For each application that the panel supports, there is an actions hook which implements suitable actions. For example, with something like Maya, the default hook will implement `reference`, `import` and `texture_node`actions, each carrying out specific Maya commands to bring publishes 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. - -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' -``` - -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. - -For more information, please see the hook files that come with the app. The hooks also take advantage of inheritance, meaning that you don't need to override everything in the hook, but can more easily extend or augment the default hook in various ways, making hooks easier to manage. - -[Learn more about the second gen hook format here.](https://developer.shotgridsoftware.com/6d10dedf/) - -By using inheritance in your hook, it would be possible to add additional actions to the default hooks like this: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) -``` - -We could then bind this new action to a set of publish types in the configuration: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - 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. - -## Publisher - -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). - -For more information on how to use the Publish app, see the [User Guide](https://developer.shotgridsoftware.com/d587be80/#the-publisher). - -## Loader - -See [https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks) for examples of load actions. - -## Advanced functionality - -## {% include product %} Toolkit makes it easy to develop tools - -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 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 deleted file mode 100644 index 06c4a1442..000000000 --- a/docs/en/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: How to Submit Integrations Fixes -pagename: sgtk-how-to-submit-fixes -lang: en ---- - -# How to Submit Integrations Fixes - -We welcome contributions from the Toolkit community! If you have a potential fix for a bug you've discovered or have implemented a feature you think we should include, we welcome you to follow the guidelines below in order to sent it through the right channels. - -## Talk to Us - -We encourage you to talk to us about what you want to develop or fix. We may have information that will help steer you in the right direction, or prevent you from doing a lot of unnecessary work. Most importantly, we love talking to our users about what they want to build, how they use Toolkit, and how we can make it more awesome. - -## Fork the Repo from Github - -Most of the Toolkit engine, app, and framework code is developed in the public on Github. Fork the repo you're modifying from Github to your local environment. - -## Make Your Changes - -Do your development work locally in a branch and test it out in your own environment to the point you feel confident that it's ready to submit to us. Try and match the style of the existing codebase. Keep your changes focused on your purpose. For example, if you're fixing a bug in 3 lines of code, don't try and modify whitespace issues throughout the file. That will make the Toolkit gremlins angry. - -## Comment! - -Make sure you add detailed comments about what it is you're doing any why you're doing it. Keep in mind, there will be other people like you who may fork this repo later and will need to understand what your code does and why. Be clear, but don't over-comment either. :) - -## Test - -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? - -## Create a Pull Request - -Once you're ready, push your changes back to Github and create a pull request. Your pull request should be detailed, explain what your code does, and why the changes are required. When writing this up, think about the user who is coming into this with very little knowledge about this area of code. The public will see your pull request and other users will be happy to understand your well written description! - -## Then What? - -We will review your pull request when we have time in our sprint. It's very likely we'll comment and ask questions about your code or use case. We may kick back the request and ask you to make changes. Don't be offended! We love contributions but also have deep knowledge about how things will work. We are in this code every day so we don't expect everyone to submit perfect code. - -Once we review it, if we accept your pull request, we'll queue it for QA and then it will be merged into our repo and released at some point. The timeline can vary depending on a lot of factors. Please be patient. - -We may also politely turn down your pull request. Again, please don't be offended. We appreciate your efforts and contribution. There can be any number of factors that contribute to this. But if you follow the guidelines above, hopefully this won't happen. diff --git a/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md deleted file mode 100644 index 2f3a89474..000000000 --- a/docs/en/guides/pipeline-integrations/getting-started/advanced_config.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: Configuration Setup -pagename: toolkit-guides-advanced-config -lang: en ---- - -# Getting started with configurations - -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: - -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://developer.shotgridsoftware.com/d587be80/#installation-of-desktop) -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://developer.shotgridsoftware.com/162eaa4b/) 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://developer.shotgridsoftware.com/c0b0ce05/) 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://developer.shotgridsoftware.com/bc718491/) app allows artists to make their work available for others on their team, and through the [Loader](https://developer.shotgridsoftware.com/a4c0a4f1/) 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 | - -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 - -### Prepare to use a Default Configuration - -**Step 1:** Create a new project in {% include product %} called "the_other_side.” - -![New project](./images/advanced_config/2_new_project.png) - -**Step 2:** Launch the {% include product %} Desktop app and log in using the username and password from your {% include product %} site. - -![Login](./images/advanced_config/3_login.png) - -![Load project](./images/advanced_config/4_load_project.png) - -**Step 3:** Navigate to the project where you wish to run the Wizard by selecting its thumbnail image. - -{% include info title="Tip" content="If a new project was created while Desktop was open, the **Projects** window may need to be refreshed to see the new projects. Select your profile **avatar** at the bottom right of the desktop and select Refresh Projects." %} - -![Refresh project](./images/advanced_config/5_refresh_projects_list.png) - -### 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. - -**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. - -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**. - -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. - -![Select config](./images/advanced_config/8_select_config.png) - -**Step 6:** Select **Continue**. - -### Define storage locations for project files - -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. - -![Define storage](./images/advanced_config/10_define_storage2.png) - -{% include product %} Toolkit supports three operating systems: Linux, Mac, and Windows. - -**Step 8:** Select the field next to the operating system utilized for storing project data. Select the folder icon and navigate to the project folder created on the filesystem prior to this exercise. - -![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. - -![Define storage](./images/advanced_config/12_define_Storage3.png) - -**Step 9:** Select **SAVE** to identify the projects folder as the storage destination for project data. - -![Define storage](./images/advanced_config/13_define_storage4.png) - -The operating system path is automatically updated to identify the path where the project data is stored. - -**Step 10:** Select **Continue**. - -### 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. - -![Project folder](./images/advanced_config/14_project_folder_name.png) - -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. - -![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. - -![Project setup](./images/advanced_config/16_project_setup_config.png) - -**Step 12:** Select **Done** to display the new icons populating the project windows. - -![Setup complete](./images/advanced_config/17_project_setup_complete.png) - -**TIP:** Pin the app to the menu bar to allow quick access to {% include product %} Desktop: select your **avatar** and select **Pin to Menu**. - -You’re done; the project setup is complete. You now have a Toolkit pipeline configuration for your project in the location you specified, based on the Default Configuration, and you’re ready to start customizing. - -Take a look in the `configs` folder and you will find several folders and files. Explore a little to see what’s in there. - -![Config](./images/advanced_config/18_config.png) - -And now the real fun begins, learning all the things you can do with the Configuration. Below are some advanced topics to explore. - -## 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! - -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://developer.shotgridsoftware.com/425b1da4/#setup_project), and more about the [`tank` command here](https://developer.shotgridsoftware.com/425b1da4/#using-the-tank-command). - -### 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. - -The reasons you would want work on a copy of a configuration are: - -1. To update the configuration -2. Test some modifications before going live -3. Upgrade, or add some apps -4. Do development and roll it out after it’s been tested - -To learn about cloning your configuration, as well as other basics of configuration management, refer to the [Configuration Staging and Rollout document](https://developer.shotgridsoftware.com/60762324/#cloning-your-configuration). - -### Cloud distribution of pipeline configurations - -This guide walks through creating a **centralized configuration**: a single copy of a pipeline configuration that is located in a shared network location and accessed by all users. But, if your workforce is distributed across locations and networks, it may not be feasible to share a single copy of a pipeline configuration. Toolkit allows for this scenario by providing a **distributed configuration** option where a pipeline configuration is uploaded to {% include product %} and each time a user accesses a project the configuration is downloaded and cached locally. You can learn more about distributed configurations in our [Core API developer documentation](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations). - -### 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). - -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 deleted file mode 100644 index 5d3aa8c27..000000000 --- a/docs/en/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: default -title: Filesystem configuration -pagename: toolkit-guides-filesystem-configuration -lang: en ---- - -# 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. - -## 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. - -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. - -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. - -### 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. -2. A basic understanding of how a {% include product %} site is used to manage assets -3. [{% include product %} Desktop](https://developer.shotgridsoftware.com/d587be80/#installation-of-desktop) 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. -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) - -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 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. - -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. - -## Begin exercise - -Customizing your schema and templates will allow you to dynamically manage the files generated when creating the dining room set: a place setting, a steaming hot filet mignon, a bottle of Penfolds Grange Hermitage 1951, potatoes au gratin, lemon garlic asparagus, etc. Assets used in the dining room set will be associated with the "Dining Room" Set entity enabling you to manage them more easily. Set is not an entity type that comes standard with the Default Configuration, so you need to enable a [custom entity](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html) and call it Set before extending the schema and templates to use it. - -### Enabling a custom entity - -**Step 1:** Open your {% include product %} site in the browser. Click on your avatar and go to ADMIN > Site Preferences. In the resulting page, expand the **Entities** section. - -![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. - -### Choose one of the custom entity types, configure it, and enable it. - -![Python app](./images/dynamic_filesystem_configuration/2_custom_entity.png) - -**Step 2:** Select the arrow to open the settings on a grayed out disabled custom entity. Select the radio button next to **Yes, use Custom Entity…**, change the **Display name** to **Set** then scroll to the top of the window and select Save Changes. - -![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. - -Remember the system name of the custom entity you chose. - -### Add a data field to associate assets with sets - -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 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) - -This action displays the asset field manager. - -![Python app](./images/dynamic_filesystem_configuration/6_manage_asset_fields.png) - -Select **+ Add a new field** - -Select the parameters for the new field. - -In **New Field Name**, type “Set”. In the **GENERAL** menu under **Field Type**, select **Entity** and scroll down to **Restrict the type** to **Set**. Select **Next**. - -![Python app](./images/dynamic_filesystem_configuration/7_field_parameters.png) - -For this guide, apply it to **Only the current project** and select **Create Field**. - -{% include product %} will configure the new field. - -![Python app](./images/dynamic_filesystem_configuration/8_only_current_project.png) - -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”** - -![Python app](./images/dynamic_filesystem_configuration/11_create_set.png) - -Select **Create “Dining Room”**. - -![Python app](./images/dynamic_filesystem_configuration/12_dining_room_set.png) - -Select **Create Set**. - -Adding **Dining Room** in the Set field of an asset creates an [association](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_linking_custom_entities_html) 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. - -### 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. - -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. - -It’s a good practice to test configurations in a *cloned* configuration, so as not to affect the active production configuration. The cloning process creates a *copy* of the configuration that you can edit safely before pushing changes to the live config. You can find details on cloning your config in the [Configuration Staging and Rollout](https://developer.shotgridsoftware.com/60762324/#cloning-your-configuration) document." - -**Step 7:** Navigate to your pipeline configuration. Drill down to the schema folder, `/config/core/schema` and open the `project` folder. - -![Python app](./images/dynamic_filesystem_configuration/15_file_structure.png) - -The current schema, which looks like this: - -`/assets///` - -supports dynamically creating this folder structure: - -`the_other_side/assets/prop/filet/model` - -We want the following structure instead: - -`the_other_side/assets/Dining-Room/Prop/filet/model` - -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`. - -### How the schema uses YAML files - -A schema can contain static and dynamic folders. If you have a static folder in your schema called “assets”, it will correspond to a single folder in your production filesystem called “assets”. On the other hand, you might have a dynamic folder in your schema named “asset” that represents one folder for each asset in your project. Every dynamic folder has a corresponding YAML file next to it with the same name as the folder (eg, `asset/` and `asset.yml`) that defines the rules for how to generate production folders based on the schema folder. - -### Create the new folder and YAML file for the Set entity - -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`. - -**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 -type: "shotgun_entity" - -name: "code" - -entity_type: "CustomEntity01" - -filters: - - { "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 `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. - -![Python app](./images/dynamic_filesystem_configuration/17_schema.png) - -### Edit the asset.yml file - -The `filters` field limits which entities have folders created for them at a given time. In its current state, the filters field in `asset.yml` looks like this: - -```yaml -filters: - - { "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: - -``` -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" ] } -``` - - -## Test folder creation - -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. - -We’ll test with the `tank` command. - -**Step 12:** Run `tank folders` on the `filet` asset. From your terminal, run the following: - -``` -> cd -> ./tank Asset Filet folders -``` - -Abridged output: - -``` ----------------------------------------------------------------------- -Command: Folders ----------------------------------------------------------------------- - -Creating folders, stand by... - -The following items were processed: - - /Users/michelle/Documents/Shotgun/projects/the_other_side -. . . - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/ - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/publish -. . . - -In total, 23 folders were processed. -``` - -The final structure matches what was expected, and Toolkit is so smart that it even added a dash between Dining and Room. - -`/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. - -### 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. - -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`. - -**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. - -### 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: - -```yaml - 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. - -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. - -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`. - -```yaml - 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. - -A leading `@` symbol does not denote an *include* in `templates.yml` as it does in the environment configuration files. - -Since each integration, each app, and each environment might use different settings, you can imagine that the first part of a path might be used in many different places inside `templates.yml`. The configuration is set up so it can use a single variable to store a common path root, then refer to that variable within templates. You won’t have to change each instance of the path generation settings when you can reference the common root. - -The Default Configuration has three of these common root variables: `@shot_root`, `@sequence_root`, and `@asset_root`. We’ll be modifying `@asset_root`, and this single change will affect every asset-related template. - -### Edit the template to match the path in the filesystem schema - -**Step 16:** Search for `asset_root` at the top of the `paths` section of `templates.yml`. In the Default Config, it looks like: - -`asset_root: assets/{sg_asset_type}/{Asset}/{Step}` - -Add `CustomEntity01` to the `asset_root` path to match the schema modifications: - -`asset_root: assets/{CustomEntity01}/{sg_asset_type}/{Asset}/{Step}` - -### 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. - -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. - -**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}' -``` - -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. - -### Test it - -**Step 18:** Launch Maya from {% include product %} Desktop. - -![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 %}. - -![Python app](images/dynamic_filesystem_configuration/24_test_new_file.png) - -Select **+New File**. - -You can create a simple 3D object or just save the file using the **{% include product %} > Save File**. - -![Python app](images/dynamic_filesystem_configuration/file_save.png) - -Success! - -Notice the **File Save** dialog box is displaying **Preview: Dining-Room_scene.v001.ma** using the new settings in the template. - -The **Work Area**: is displaying **.../{% include product %}/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/work/maya** as the path for where Workfiles is saving the file. - -## Advanced topics - -### 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://developer.shotgridsoftware.com/82ff76f7/). - -### 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://developer.shotgridsoftware.com/82ff76f7/) -* [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 deleted file mode 100644 index 8ca614ee1..000000000 --- a/docs/en/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -layout: default -title: Editing a Config -pagename: toolkit-guides-editing-config -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. - -## 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. - -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. -2. A project with at least one asset. You can add an asset to the_other_side project you created in the first guide. You can review how to create an asset for a project in the [Getting started with configurations](./advanced_config.md) guide. -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) - -{% 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](#finding-the-pipeline-configuration). - -## Finding the pipeline configuration - -**Step 1:** Open the **{% include product %} site** that manages the project you will be using for this exercise. - -**Step 2:** Access the project from the **{% include product %} site** by selecting it from the **Projects page**. - -![{% include product %} project](./images/editing_app_setting/1_shotgun_project.png) - -**Step 3:** Select the **avatar** in the upper right to display the **ADMIN** menu and scroll down to select **Default Layouts > Pipeline Configuration > Pipeline Configuration List**. - -![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. - -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) - -The **env** folder stores the integration settings that support the environments artists work within. Environments allow different stages in the pipeline to have a customized configurations. The Default Configuration comes with a set of pre-defined environments, but these can be modified if your pipeline requires a more granular set. - -**Step 6:** Open the **env** folder. - -Toolkit uses YAML files to configure functionality. YAML was chosen as the language for the configurations because it allows the files in Toolkit to be formatted in a way that’s easily readable, lightweight, and simple to customize. You can explore more about YAML [here](https://yaml.org/). The configurations are made up of nested YAML files that provide identifiers engines, apps, and frameworks. It’s a roadmap of sorts guiding you to the specific bundle of code that controls the actions you want to affect. - -## Editing the configuration file - -{% include product %} Toolkit allows alterations to the apps that are integrated within various software packages. One of the functions of the Workfiles app is the **+New Task** button, which allows a user to add a new task in the **File Open** dialog box. By default, this function is enabled for every user at every phase of a project. But a studio might want to restrict this functionality – say, if they have a specific naming convention, or want to limit task creation to a project's production management team. In this case, they would disable the **+New Task** button for all the points in a pipeline where artists will be working in Maya. - -## Disabling the +New Task button for projects in Maya - -**Step 7:** Open **{% include product %} Desktop**. - -**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. - -![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`. - -**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) - -The **+New Task** button is enabled. - -## Find what setting controls the +New Task button - -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)**. - -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://developer.shotgridsoftware.com/162eaa4b/) 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. - -![Configuration_ref](./images/editing_app_setting/10_configuration_ref.png) - -{% include info title="Note" content="After the setting **my_tasks_filters** is a setting **launch_at_startup**. This is important to note because it’s the default setting for the **File Open** setting in the project environment. This tells you that when Maya is launched from ShotGrid Desktop, the **File Open** dialog automatically opens." %} - -Scroll down to **Setting allow_task_creation**. The default value of this setting is **True**, allowing a user to create a new task while in the Maya project environment. - -![Open file options](./images/editing_app_setting/11_open_file_options.png) - -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://developer.shotgridsoftware.com/162eaa4b/) 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. - -## Find where to set the value for `allow_task_creation` - -**Step 12:** Bring the main Maya window forward. - -**Step 13:** Find the **{% include product %}** menu item in the upper right of the Maya window. - -![Maya {% include product %}2](./images/editing_app_setting/12_Maya_Shotgun2.png) - -**TIP:** If the menu isn’t visible there will be **>>** to show that some menu items are hidden. Select the **>>** to display the {% include product %} menu or you can widen the Maya window. - -**Step 14:** Select **{% include product %} > Project the_other_side > Work Area Info…** on the top right of the menu. - -![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. - -**Step 15:** In the **Your Current Work Area** dialog box, select the **Environment** tab at the bottom. - -The first item identifies the engine being used. The engine is what drives the ability to have the {% include product %} tools integrated within a specific software application. It holds the logic specific to each software integration. The second item displayed in the window shows the path where the current project environment is located. - -![Work area info environment](./images/editing_app_setting/14_shotgun_work_area_info_Environment.png) - -The last two folders are `config/env/` followed by `project.yml`. The `project.yml` file is the start of the roadmap that will guide you to where the settings for the current environment are located. - -**Step 16:** Open `project.yml` in your favorite text editor. - -```yaml -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 - -################################################################################ -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - tk-photoshopcc: "@settings.tk-photoshopcc.project" - tk-shell: "@settings.tk-shell.project" - tk-shotgun: "@settings.tk-shotgun.project" - -################################################################################ -# 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. - -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. - -`tk-maya: "@settings.tk-maya.project"` - -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. - -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. - -Looking for the Workfiles App settings in tk-maya.yml - -**Step 17:** In your file browser, browse to the **env/includes/settings** folder and open `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. - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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...} - location: "@engines.tk-maya.location" -``` - - - -Under `settings.tk-maya.projects`, the `tk-multi-workfiles2` app settings are listed as - -`tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup"` - -The `@` symbol tells us that that the value for `tk-multi-workfiles2` is coming from an included file. In the `includes` section at the top of `tk-maya.yml`, we see the following: - -```yaml -includes: -... -- ./tk-multi-workfiles2.yml -``` - -We should look for `settings.tk-multi-workfiles2.launch_at_startup` in the `tk-multi-workfiles2.yml` file, in the same directory as the current file, `config/env/includes/settings`. - -**Step 19:** Open the `tk-multi-workfiles2.yml` file and search for `settings.tk-multi-workfiles2.launch_at_startup`. - -```yaml -# launches at startup. -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. - -**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. -settings.tk-multi-workfiles2.launch_at_startup: - allow_task_creation: false - 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. - -**Step 21:** Save the file. - -## Reload the configuration - -**Step 22:** In the **File Open** dialog box inside of Maya, open the reference box and select **Reload Engines and Apps**. - -![Reload engines](./images/editing_app_setting/20_refresh_engines_apps.png) - -This will reload the configuration settings. - -## View your changes - -**Step 23:** Navigate to the **File Open** dialog box and select an asset. - -![View task button](./images/editing_app_setting/8_21_view_task_button.png) - -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. - -## Changing environments - -**Step 24:** Under the Assets search results, open a folder and select asset you wish to work on. - -![Move to asset env](./images/editing_app_setting/22_moving_to_asset_environment.png) - -**Step 25:** Select **+New File** - -By selecting **+New File**, you began to work on a new asset and the `asset_step` environment was loaded in Maya. When an artist selects an asset task and creates a new file or opens an existing one, the `asset_step` environment is automatically loaded, presenting the tools and functions configured for that stage in the pipeline. - -## Discover what environment you are working in - -**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 Text Overlay** tells you're working on and what environment you're in. - -**Step 27:** Select **Art, Asset Text Overlay > Work Area Info...** to display what the parameters are in your current work area. - -**Step 28:** Select the **Environment** tab at the bottom. - -![Asset step env](./images/editing_app_setting/24_asset_step_env.png) - -Each environment will display the information necessary to determine where the settings live in the pipeline configuration. To disallow an artist from adding a new task, it’s necessary to disable the **+New Task** button for every environment that artist works in. For each environment, use the same steps outlined above to edit the configuration appropriately. - -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. - -## Advanced topics - -In this guide, we made a simple change to the configuration settings for an app, in a single engine (`tk-maya`) and in a single environment (`project`). You’ve learned that Toolkit is organized by environments, each environment is unique for every software implementation, and the environments are focused by project and task allowing you to have specific functions available for artists at defined points in a pipeline. You can generalize our simple change to make rich customizations to your Toolkit pipeline configuration. - -### Other engines - -The system name for the Workfiles app is `tk-multi-workfiles2`, and `multi` in the name implies that it’s a **multi app**. Multi apps are software-agnostic: their features and functionality are the same whether you run them in Maya, Nuke, Houdini, or any other supported app. If you wanted to disable task creation in Workfiles across all software packages, you’d follow the steps in this guide for every **engine**: `tk-nuke`, `tk-houdini`, and so on. - -### Other environments - -We disabled task creation in the project environment, but in a real studio environment, you’d probably want to disable it for all environments in which your artists are working. To do so, you’d follow the steps in the guide, but instead of starting at `project.yml`, you’d start at `asset_step.yml`, `shot_step.yml`, and so on. - -### 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](https://developer.shotgridsoftware.com/c73fcb84/#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) - -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/images/advanced_config/10_define_storage2.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png deleted file mode 100644 index 16ef3dcbd..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png deleted file mode 100644 index 600e6c4fc..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png deleted file mode 100644 index 4a164c7b7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png deleted file mode 100644 index 01f31b998..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png deleted file mode 100644 index 8c8a5da0f..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png deleted file mode 100644 index 960b1da6b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png deleted file mode 100644 index 615afd5ee..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png deleted file mode 100644 index 351ac9de6..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png deleted file mode 100644 index 86171f31b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png deleted file mode 100644 index dda8b753b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png deleted file mode 100644 index 96cd98107..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png deleted file mode 100644 index ae1d845d3..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png deleted file mode 100644 index 7f8377111..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png deleted file mode 100644 index 24bc74242..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png deleted file mode 100644 index 319c3d8ce..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png deleted file mode 100644 index 177b8ab31..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png deleted file mode 100644 index 5d0d28295..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png b/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png deleted file mode 100644 index 958fe3fd0..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png deleted file mode 100644 index da29a804f..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png deleted file mode 100644 index a957559b7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png deleted file mode 100644 index f7bd2aebb..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png deleted file mode 100644 index c9e0d11d8..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png deleted file mode 100644 index 1dbb1550a..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png deleted file mode 100644 index 9ca0fe1ca..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png deleted file mode 100644 index b613553e3..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png deleted file mode 100644 index 06c47e2f2..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png deleted file mode 100644 index 5e8d5ed9b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png deleted file mode 100644 index ec1f861cb..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png deleted file mode 100644 index d4d9caeed..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png deleted file mode 100644 index cd00fa0aa..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png deleted file mode 100644 index 2c2332646..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png deleted file mode 100644 index 53c803581..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png deleted file mode 100644 index 50c60f42d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png deleted file mode 100644 index 693258831..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png deleted file mode 100644 index 8567b84a6..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png deleted file mode 100644 index 21c68c96b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png deleted file mode 100644 index 4e3989b67..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png deleted file mode 100644 index 1fb173681..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png deleted file mode 100644 index 56a6b7503..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png deleted file mode 100644 index cd7b89f0d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png deleted file mode 100644 index 5c4ed0f1f..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png deleted file mode 100644 index ba459bc18..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png deleted file mode 100644 index c74ad47c6..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png deleted file mode 100644 index a1544e036..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png deleted file mode 100644 index 00470bcd7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png deleted file mode 100644 index 33d191d29..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png b/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png deleted file mode 100644 index 6e6807098..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png deleted file mode 100644 index ce2ec144b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png deleted file mode 100644 index 24e78b3f5..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png deleted file mode 100644 index 02054435f..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png deleted file mode 100644 index 21aae45ed..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png deleted file mode 100644 index 399139879..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png deleted file mode 100644 index 0b4983e6c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png deleted file mode 100644 index e2f174b72..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png deleted file mode 100644 index 83c687bbb..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png deleted file mode 100644 index a3a2103ff..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png deleted file mode 100644 index 4fb1b81ba..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png deleted file mode 100644 index d6ccd4c13..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png deleted file mode 100644 index 90720adf4..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png deleted file mode 100644 index 4b46b3b9e..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png deleted file mode 100644 index ce24fe454..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png deleted file mode 100644 index a1d855ceb..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png deleted file mode 100644 index 953dcb8dc..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png deleted file mode 100644 index abd3e1bcf..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png deleted file mode 100644 index ce1a12ae7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png deleted file mode 100644 index 6ad051dd7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png deleted file mode 100644 index be9d5d78b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png deleted file mode 100644 index bb3c90585..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png deleted file mode 100644 index 3041b4a7c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png b/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png deleted file mode 100644 index 5ac59e300..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png deleted file mode 100644 index 5acf6392c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png deleted file mode 100644 index cfd2c37a4..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png deleted file mode 100644 index 8477325a1..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png deleted file mode 100644 index 3988dbe24..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png deleted file mode 100644 index 215ff83fe..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png deleted file mode 100644 index 3988dbe24..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png deleted file mode 100644 index 215ff83fe..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png deleted file mode 100644 index 2e89edaaf..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png deleted file mode 100644 index daa0ba2e7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png deleted file mode 100644 index 0375bff17..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png deleted file mode 100644 index d8f58658f..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png deleted file mode 100644 index 0ca6a5403..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png deleted file mode 100644 index f869b72e1..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png deleted file mode 100644 index 953dcb8dc..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png deleted file mode 100644 index d93ac20d7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png deleted file mode 100644 index 64b6d2e3d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png deleted file mode 100644 index b1e4c2c6d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png deleted file mode 100644 index e3f2a253c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png deleted file mode 100644 index da94c5cf7..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png deleted file mode 100644 index 5acf6392c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png deleted file mode 100644 index 64b6d2e3d..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png b/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png deleted file mode 100644 index e3f2a253c..000000000 Binary files a/docs/en/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/getting-started/installing_app.md b/docs/en/guides/pipeline-integrations/getting-started/installing_app.md deleted file mode 100644 index f8c6d7faf..000000000 --- a/docs/en/guides/pipeline-integrations/getting-started/installing_app.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -layout: default -title: Adding an app -pagename: toolkit-guides-adding-app -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 - -## 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. - -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). - -{% 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 {% include product %} Toolkit apps - -### How Toolkit apps work - -Apps that are referenced in pipeline configurations can be sourced from various locations. The apps that are standard in the Default Configuration are sourced from the {% include product %} App Store. The files in a pipeline configuration specify how {% include product %} integrations access an app, kind of like asking Toolkit, “Can you look in your little black book for the address of the Python Console App?” The pipeline configuration files tell Toolkit where to find the bundles of code that are utilized for a specific app. - -The “addresses” for Toolkit Apps are listed in the `config/env/includes/app_locations.yml` file in the Default Configuration and specify how to find the code. These “addresses” are called [descriptors](https://developer.shotgridsoftware.com/tk-core/descriptor.html). The {% include product %} integrations need to be told not only how to find the code bundles for the app, but also in what environment(s) to use the app. - -Below is a conceptual overview of how to install an app and how to tell a {% include product %} integration where to use it. It outlines the steps for extending the configuration, asking Toolkit to look up a descriptor, and telling {% include product %} where to use the app. These steps are detailed in this guide: - -1. Determine the descriptor for the app you want to add. -2. Make a copy of the active pipeline configuration you want to add the app descriptor to. -3. See if the app’s descriptor exists in the configuration and if not, add it. -4. Format the YAML file correctly using spaces and not tabs for indents. -5. Determine in what environment(s) the app is to be used. -6. Within those environment(s), add the setting that will allow {% include product %} to use the app. -7. Test the new configuration. -8. Push the extended configuration live. - -### Find the location descriptor for the Python Console App - -**Step 1:** Open the [Apps and Engines page](https://developer.shotgridsoftware.com/9e62da4a/) and find the information for the {% include product %} Python Console under Maya. Select the title. - -![Python app](./images/installing_app/1_python_app.png) - -This will bring up the [information for the app](https://developer.shotgridsoftware.com/770a748a/), which includes everything that’s needed for the little black book. - -![Python app info](./images/installing_app/2_python_app_info.png) - -The **System Name** is the main identifier: `tk-multi-pythonconsole`. You will also need the **Latest Version:** v1.1.2. - -### Confirm that there’s no Python Console app in the Project environment in Maya - -**Step 2:** Launch Maya and select the {% include product %} Menu, **{% include product %} > Project the_other_side** and you will see the list of apps that are available for that project in the Project environment. - -![List of apps](./images/installing_app/3_list_of_apps.png) - -## Extend the configuration - -To edit a configuration that’s in production, you’ll want to first create a copy, then edit the copy. This way you don’t affect the live configuration and you can create a safe space to test it before pushing it live. Creating a staging sandbox allows you to play with a copy of the pipeline configuration currently being used in production. In the sandbox, you make changes to the copy of the configuration and test the changes before pushing the changes live into production. - -Cloning a pipeline configuration automates the process of creating a copy, building a sandbox where you can play with the copy, before pushing the new configuration to the live production. - -## Clone the Pipeline Configuration you want to add an app to - -### 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**. - -![Pipeline configuration list](./images/installing_app/4_REPLACE_pipeline_configuration_list.png) - -This action displays a detailed list of all of your {% include product %} site's pipeline configurations. - -**Step 4:** Once the Pipeline Configuration List is displayed, select the **+** sign on the far right of the column headers, and add the column **Projects**. - -![Add project column](./images/installing_app/5_add_project_column.png) - -### Review where the project’s configuration is located - -**Step 5:** Additionally, add the the appropriate **Path** field for your operating system. - -![Path to_config](./images/installing_app/6_path_to_config.png) - -This displays the paths to the configuration files. - -![Path to config 2](./images/installing_app/7_path_to_config2.png) - -**Step 6:** **Right-click** in the empty space next to the **Primary** line item and select **Clone this Configuration…** in the context menu. - -![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**. - -![Name clone](./images/installing_app/9_name_clone.png) - -Wait while {% include product %} copies all of the files and folders in the configuration and creates a cache for the apps. Now would be an opportune time to use an app that makes you a light, fluffy, melt in your mouth croissant to go with that perfect shot of espresso. - -![Clone Complete](./images/installing_app/10_clone_complete.png) - -When completed, the Configuration List will be updated with information about the cloned configuration and there will be a new configuration added to your local config folder. - -{% include info title="Note" content="Under **User Restrictions** your user name was added. ShotGrid automatically restricts access to the new configuration to only the person who created the configuration. You can add people you want to edit, test, and eventually use this configuration. Yet another way ShotGrid allows for flexibility and control." %} - -## Associate the cloned configuration with the project - -**Step 8:** Open {% include product %} Desktop and select the project you created the cloned configuration for. Select the **down arrow** in the upper right to display the configurations associated with this project and select the **Primary Clone Config 2** that you just created. - -![Select clone](./images/installing_app/11_select_clone.png) - -{% include product %} Desktop is now using the cloned config for this project. - -## Edit the Pipeline Configuration - -**Step 9:** Find the cloned configuration on your file system, in the path you specified when you created it. View the `config/env/includes/app_locations.yml` file. - -![Clone app location](./images/installing_app/12_clone_app_locations.png) - -The `app_locations.yml` file is the Default Configuration’s little black book and the descriptors for apps are listed in this file. This file points to where the app is located and allows you to create settings for the app. - -If an app that you want to use isn’t referenced in the little black book, you will need to tell Toolkit where to find it. - -## 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://developer.shotgridsoftware.com/162eaa4b/) 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: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 - -``` - -{% include info title="Note" content="If you’re using a different configuration, you may need to add the descriptor to the file." %} - -All apps and engines have descriptors. You can read about how descriptors work and how to set the `type:` in the [Descriptor section of our Core API docs](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types). - -## Tell Toolkit to use the descriptor - -Now we need to tell Toolkit to use the descriptor to locate the Python Console app and use it when we’re in a Project environment in Maya. - -**Step 11:** Open the `config/env/project.yml` file in your cloned config and find the settings for the `tk-maya` engine. - -```yaml -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - 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. - -### YAML files - -The {% include product %} Toolkit pipeline configuration uses simple terms in [YAML](https://yaml.org/spec/1.2/spec.html) files to identify the location of apps and engines, as well as their settings. - -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 - -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 - -The code for {% include product %}’s integrations is organized into bundles for apps, engines, and frameworks. The bundles are referenced in Toolkit’s YAML files using identifiers like `tk-maya`, `tk-multi-pythonconsole`, etc. Each bundle's corresponding block of YAML contains settings that control how the identified bundle is accessed and utilized. - -## Where to put settings for the Python Console - -For this specific block in the Default Configuration, ‘tk-maya.project’ is the identifier for the Maya engine in the project environment. Our goal is to add the Python Console app code bundle to the Maya engine in project environment. Based on the terms used, it’s a safe bet that `tk-maya.yml` is the name of the YAML file where settings for the project environment are located. Find the `settings.tk-maya.project` for `apps` in the `tk-maya.yml` file. - -**Step 13:** To find the file, look for `tk-maya.yml` in the includes section above the engines. - -`./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`. - -![tk-maya](./images/installing_app/13_tk-maya.png) - -**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. - -{% 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." %} - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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:
- -On Linux or Mac: - - ./tank cache_apps - -On Windows: - - tank.bat cache_apps - -This will scan your configuration for apps, engines and frameworks and ensure that they are all downloaded." %} - -## 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. - -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." %} - -![Maya cloned config](./images/installing_app/14_maya_cloned_config.png) - -**Step 17:** Launch Maya from Desktop and select the menu **{% include product %} > Project > …** - -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 - -The Python Console app will be available in Maya. - -![Project ID](./images/installing_app/16_project_ID.png) - -## Push the changes into production - -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: - -On Linux or Mac: - -`./tank push_configuration` - -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. - -``` - -$ ls -cache config install tank tank.bat -$ ./tank push_configuration - -Welcome to the Shotgun Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current path -'/Users/michelle/Documents/Shotgun/configs/the_other_side_clone2' -- The path is not associated with any Shotgun object. -- Falling back on default project settings. -- Running as user 'Michelle' -- Using configuration 'Primary Clone Config 2' and Core v0.18.159 -- Setting the Context to Project the_other_side. -- Running command push_configuration... - - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary Clone Config 2') to another pipeline configuration in the project. -By default, the data will be copied to the target config folder. If pass a ---symlink parameter, it will create a symlink instead. - -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): - -``` - -There will be a list of the available pipeline configurations that the cloned configuration can be pushed to. Enter the ID of the primary pipeline configuration for the project you are updating the configuration for. - -{% include info title="Note" content="You can also find the id for your Pipeline Configuration on the Pipeline Configuration page in ShotGrid that we viewed in **Step 3** of this guide. To find the project ID, go to the Configuration List and add the ID column." %} - -![ID column](./images/installing_app/17_id_column.png) - -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 - -``` -Please type in the id of the configuration to push to (ENTER to exit): 1 -Hold on, pushing config… -Your old configuration has been backed up into the following folder: -/Users/michelle/Documents/Shotgun/configs/the_other_side/config.bak.20190118_111627 -Checking if there are any apps that need downloading… - -Push Complete! -``` - -## 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. - -![Change config maya](./images/installing_app/18_change_config_maya.png) - -**Step 20:** Launch Maya from Desktop and look in the menu **{% include product %} > Project > …** to find the {% include product %} Python Console... - -![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.” - -## Advanced topics - -### The {% include product %} developer community - -One of the wonderful things about Toolkit is that anyone can create a Toolkit app. Apps can be kept proprietary, or they can be shared within the [{% include product %} community](https://community.shotgridsoftware.com/c/pipeline/6), adding to the {% include product %} arsenal. If you’ve created a really stellar app you want share on the {% include product %} community page, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -Standard Toolkit apps and apps created by the loving {% include product %} community are actively discussed in the **[{% include product %}-dev Google group](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev)**. The knowledge and tool base continues to grow as the {% include product %} community adds their contributions. - -### 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. - -![Desktop python console](./images/installing_app/20_desktop_python_console.png) - -If there’s an environment that is using an app you want to add to your pipeline configuration, you can use a little detective work to find the information you need to add that app to your configuration. By looking in the configuration file in the environment where the app is being used, you can determine how to add the app location descriptor and setting. - -The Desktop app opens in the project environment, so find `tk-desktop` in the `project.yml` file. - -Open `config/env/project.yml`. - -In the engine block, `tk-desktop` points to included content: - -```yaml -includes: - - ./includes/settings/tk-desktop.yml - -engines: - tk-desktop: "@settings.tk-desktop.project" -``` - -Follow the include: open `config/env/includes/settings/tk-desktop.yml` and find the `settings.tk-desktop.project` block. In that block you’ll see the following:

- -```yaml -apps: - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" -``` - -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 -# pythonconsole -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 -``` - -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://developer.shotgridsoftware.com/162eaa4b/). - -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://developer.shotgridsoftware.com/162eaa4b/) 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. - -In the [next guide](https://developer.shotgridsoftware.com/56b441c6/), you will learn how to customize your production folder structure to reflect how your facility is structured. diff --git a/docs/en/guides/pipeline-integrations/getting_started.md b/docs/en/guides/pipeline-integrations/getting_started.md deleted file mode 100644 index d847cbd4b..000000000 --- a/docs/en/guides/pipeline-integrations/getting_started.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Getting Started -pagename: toolkit-getting-started -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. diff --git a/docs/en/guides/pipeline-integrations/workflows.md b/docs/en/guides/pipeline-integrations/workflows.md deleted file mode 100644 index feebb0757..000000000 --- a/docs/en/guides/pipeline-integrations/workflows.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Workflows -pagename: toolkit-workflows -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. - -This section contains resources for building specific workflows. diff --git a/docs/en/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md b/docs/en/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md deleted file mode 100644 index aad6d6887..000000000 --- a/docs/en/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md +++ /dev/null @@ -1,422 +0,0 @@ ---- -layout: default -title: Episodic workflow with Nuke Studio -pagename: episodic-nuke-tutorial -lang: en ---- - -# Episodic workflow with Nuke Studio - - -## Introduction and prep work - - -This article explains how to get your episodic workflow up and running with our `tk-hiero-export` app in Nuke Studio or Hiero. Please note there is no one exact method for this, and the approach will vary slightly depending on your desired workflow. For the sake of this example we are going to make the following assumptions: - -* Your goal is to set up a three-tiered hierarchy of `Episode > Sequence > Shot` -* You will have read and completed the steps in [the file system configuration guide](https://developer.shotgridsoftware.com/82ff76f7/) . -* You will use the `Episode` entity type, (not the `CustomEntity02` —both can work in the same way, it’s just a change of name.) -* The `Sequence` entity has an entity field called `episode` . -* You’ll be using Nuke Studio, although the process is the same for Hiero. -* You will be starting with [a default configuration](https://github.com/shotgunsoftware/tk-config-default2) for your Toolkit project. - -There is one more decision to make before you get started, and that is how to resolve the `Episode` . The out-of-the-box {% include product %} Hiero/Nuke Studio export process creates `Sequence` and `Shot` entities on your {% include product %} site based upon the contents of your Nuke Studio project. So, unlike working in Maya with Toolkit where we expect you to have already created the Assets and Tasks, in Nuke Studio we don’t expect your `Episodes` `Sequences` or `Shots` to already be created. With that said, you need to decide how to define the `Episode` in Nuke Studio. There are a few possible options here: - -* Create the Episodes up front in {% include product %} and configure the Nuke Studio Toolkit integrations to work in the context of an Episode, so that at export time you can get the `Episode` entity from the current scene context. -* Assume `Episode` entities haven’t already been created and make use of the Nuke Studio’s tagging feature to tag the Sequence with the Episode name and use that to resolve our `Episode` at export time. - -There may be other ways that suit your workflow better, such as extracting the episode name from part of the Nuke Studio Sequence or Shot names, e.g., taking the “ep1” bit from a sequence called “ep1_s01”. Or you could use the export app’s [hiero_customize_export_ui.py](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) hook to add a GUI for linking up exports with Episodes. - -For this example we will go with the second option: the Sequence tagging solution. - -*Note that this walkthrough is for implementing three layers of hierarchy ( `Episode > Sequence > Shot` ). The process for simply trying to replace the `Sequence` entity type with the `Episodes` entity type ( `Episode > Shot` ) is easier. We cover this scenario briefly near the end of this guide, but it’s still worth reading the rest to get a better understanding.* - -## Schema and templates - - -As mentioned previously, this example assumes that you have [updated your schema and templates](https://developer.shotgridsoftware.com/82ff76f7/#how-can-i-add-a-new-entity-type-to-my-file-structure) . Make sure that you have also updated the `hiero_plate_path` and `hiero_render_path` path values in the templates.yml, so that they contain an episode key in the correct part. - -## Hooks and settings - - -In order to get the {% include product %} Export process to handle our `Episode` correctly, you will need to modify some of the export hooks. In this article we’ll assume you know what [hooks](https://developer.shotgridsoftware.com/312b792f/#using-frameworks-from-hooks) are, and are comfortable with overriding the base implementations. - -There are two export hooks that will help you enable episodes. - -* `hiero_get_shot.py` -* `hiero_resolve_custom_strings.py` - -NOTE: There is a third hook called `hiero_translate_template.py` . We are not going to use it in this example, however, you will need it if you only wanted to replace Sequences with Episodes and maintain a two layer hierarchy. We’ll cover this a bit more at the end of the article. - -Modify the `hiero_get_shot.py` so you can find the Episode, and create an entity for it in {% include product %} , and modify the `hiero_resolve_custom_strings.py` so that Nuke Studio knows what value to give to the {Episode} key in the path. Here are the steps in more detail: - -### 1. Add Episode Field - -You now have a new key in your templates called `Episode` , and you need to tell the `tk-hiero-export` app how to resolve this. Modify the `custom_template_fields` in the `/config/env/includes/settings/tk-hiero-export.yml` file, so that it looks like this: - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - ... -``` - -This adds a valid export token named `{Episode}` to the Hiero exporter. - -### 2. hiero_get_shot hook - -Now you need to tell the export process how to find the Episode name and create the `Episode` in {% include product %} , using the `hiero_get_shot.py` hook. - -The [default version of the hook (hiero_get_shot.py)](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) will return the `Shot` from {% include product %} with the same name as the TrackItem. The `Shot` must also be linked to a `Sequence` with the same name as the Nuke Studio sequence item. If the `Sequence` or `Shot` doesn’t exist in {% include product %} , the hook will create them. You’re adding another level of hierarchy so you need to tell the hook to also create the `Episode` if it doesn’t exist. - -And, since the `Sequence` is linked to the `Episode` , you should tie this into the code that looks up the `Sequence` , ( `get_shot_parent()` method). - -Create an `hiero_get_shot.py` file in your config’s hooks folder, and add `hook_get_shot: '{config}/hiero_get_shot.py'` to your `tk-hiero-export.yml` settings , so that you now have something like this: - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - hook_get_shot: '{config}/hiero_get_shot.py' -``` - -Below is the complete code for the `hiero_get_shot.py` hook. Add this to the hook you created: - -``` -from sgtk import Hook - -class HieroGetShot(Hook): - """ - Return a {% include product %} Shot dictionary for the given Hiero items - """ - - def execute(self, task, item, data, **kwargs): - """ - Takes a hiero.core.TrackItem as input and returns a data dictionary for - the shot to update the cut info for. - """ - - # get the parent entity for the Shot - parent = self.get_shot_parent(item.parentSequence(), data, item=item) - - # shot parent field - parent_field = "sg_sequence" - - # grab shot from {% include product %} - sg = self.parent.shotgun - filter = [ - ["project", "is", self.parent.context.project], - [parent_field, "is", parent], - ["code", "is", item.name()], - ] - - # default the return fields to None to use the python-api default - fields = kwargs.get("fields", None) - shots = sg.find("Shot", filter, fields=fields) - if len(shots) > 1: - # can not handle multiple shots with the same name - raise StandardError("Multiple shots named '%s' found", item.name()) - if len(shots) == 0: - # create shot in {{ akn_product_name_lower }} - shot_data = { - "code": item.name(), - parent_field: parent, - "project": self.parent.context.project, - } - shot = sg.create("Shot", shot_data, return_fields=fields) - self.parent.log_info("Created Shot in {% include product %} : %s" % shot_data) - else: - shot = shots[0] - - # update the thumbnail for the shot - upload_thumbnail = kwargs.get("upload_thumbnail", True) - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", - entity=shot, - source=item.source(), - item=item, - task=kwargs.get("task") - ) - - return shot - - def get_episode(self, data=None, hiero_sequence=None): - """ - Return the {{ akn_product_name_lower }} episode for the given Nuke Studio items. - We define this as any tag linked to the sequence that starts - with 'Ep'. - """ - - # If we had setup Nuke Studio to work in an episode context, then we could - # grab the episode directly from the current context. However in this example we are not doing this but here - # would be the code. - # return self.parent.context.entity - - # stick a lookup cache on the data object. - if "epi_cache" not in data: - data["epi_cache"] = {} - - # find episode name from the tags on the sequence - nuke_studio_episode = None - for t in hiero_sequence.tags(): - if t.name().startswith('Ep'): - nuke_studio_episode = t - break - if not nuke_studio_episode: - raise StandardError("No episode has been assigned to the sequence: %s" % hiero_sequence.name()) - - # For performance reasons, lets check if we've already added the episode to the cache and reuse it - # Its not a necessary step, but it speeds things up if we don't have to check {{ akn_product_name_lower }} for the episode again - # this session. - if nuke_studio_episode.guid() in data["epi_cache"]: - return data["epi_cache"][nuke_studio_episode.guid()] - - # episode not found in cache, grab it from {% include product %} - sg = self.parent.shotgun - filters = [ - ["project", "is", self.parent.context.project], - ["code", "is", nuke_studio_episode.name()], - ] - episodes = sg.find("Episode", filters, ["code"]) - if len(episodes) > 1: - # can not handle multiple episodes with the same name - raise StandardError("Multiple episodes named '%s' found" % nuke_studio_episode.name()) - - if len(episodes) == 0: - # no episode has previously been created with this name - # so we must create it in {{ akn_product_name_lower }} - epi_data = { - "code": nuke_studio_episode.name(), - "project": self.parent.context.project, - } - episode = sg.create("Episode", epi_data) - self.parent.log_info("Created Episode in {% include product %} : %s" % epi_data) - else: - # we found one episode matching this name in {{ akn_product_name_lower }}, so we will resuse it, instead of creating a new one - episode = episodes[0] - - # update the cache with the results - data["epi_cache"][nuke_studio_episode.guid()] = episode - - return episode - - def get_shot_parent(self, hiero_sequence, data, **kwargs): - """ - Given a Hiero sequence and data cache, return the corresponding entity - in {% include product %} to serve as the parent for contained Shots. - - :param hiero_sequence: A Hiero sequence object - :param data: A dictionary with cached parent data. - - .. note:: The data dict is typically the app's `preprocess_data` which maintains the cache across invocations of this hook.         - - """ - # stick a lookup cache on the data object. - if "parent_cache" not in data: - data["parent_cache"] = {} - - if hiero_sequence.guid() in data["parent_cache"]: - return data["parent_cache"][hiero_sequence.guid()] - - episode = self.get_episode(data, hiero_sequence) - - # parent not found in cache, grab it from {% include product %} - - sg = self.parent.shotgun filter = [ - ["project", "is", self.parent.context.project], - ["code", "is", hiero_sequence.name()], - ["episode", "is", episode], - ] - - # the entity type of the parent. - par_entity_type = "Sequence" - - parents = sg.find(par_entity_type, filter) - if len(parents) > 1: - # can not handle multiple parents with the same name - raise StandardError( - "Multiple %s entities named '%s' found" % (par_entity_type, hiero_sequence.name()) - ) - - if len(parents) == 0: - # create the parent in {{ akn_product_name_lower }} - par_data = { - "code": hiero_sequence.name(), - "project": self.parent.context.project, - "episode": episode, - } - - parent = sg.create(par_entity_type, par_data) - self.parent.log_info( - "Created %s in {% include product %} : %s" % (par_entity_type, par_data) - ) - else: - parent = parents[0] - - # update the thumbnail for the parent - upload_thumbnail = kwargs.get("upload_thumbnail", True) - - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", entity=parent, source=hiero_sequence, item=None - ) - - # cache the results - data["parent_cache"][hiero_sequence.guid()] = parent - return parent -``` - -#### Getting the Sequence - -With the code above, we’ve modified the `get_shot_parent()` method. It now uses the `Episode` returned from the new `get_episode()` method when finding and creating the `Sequence`. When checking for a pre-existing `Sequence` in the {% include product %} database it now filters by the `episode %s" % (shot_code, keyword, result)) - return result - -``` - -Note that if your schema Episode folder name is generated from something other than just the `code` field, then you will need to replicate that name here. - -A more correct, but more complicated approach could be to add a `episode_root` template in the templates.yml, and then get the fields from the template. This would mean the returned folder name always matches the schema, even if you change the Episode folder name in the schema. It would look something like this: - -``` -ctx = tk.context_from_entity("Episode", episode_entity[id]) -my_template = tk.templates["episode_root"] -fields = my_template.get_fields(ctx.filesystem_locations[0]) -return fields["Episode"] - -``` - -## Wrapping up - - -That should be it! All that’s left to do is test that our changes work correctly. - -Having started up Nuke Studio, created a project, and populated it with sequences and footage, you can now test the export process. First, create the Episode tag. Remember you coded the hook to look for tags on the Sequence that start with `Ep` , so you must name the tag `Ep…` - -![Create the Episode tag](./images/tutorial/tu-episodic-nuke-mceclip0-01.png) - -Now add the Tag to the Sequence. - -![Add the Tag to the Sequence](./images/tutorial/tu-episodic-nuke-mceclip2-02.png) -![Add the Tag to the Sequence](./images/tutorial/tu-episodic-nuke-mceclip1-03.png) - -Once that is done, export the Shots from your tagged Sequence. - - -![Export Shots](./images/tutorial/tu-episodic-nuke-mceclip4-04.png) - -Check that the Export Structure hierarchy matches that of our schema. If it does not match, you may need to [refresh the structure](#tip-refresh) . - -![Export Structure hierarchy](./images/tutorial/tu-episodic-nuke-mceclip3-05.png) - - -Once you click export, it should then create your Episodes, Sequences, and Shots in your {% include product %} site, as well as the folder structure on disk. If you run into issues along the way, remember to check the Nuke Studio script editor or [ {% include product %} logs (tk-nukestudio.log)](https://developer.shotgunsoftware.com/38c5c024/) for any errors that you might encounter. - -That completes this guide. Of course this is just one of the many ways to achieve working with episodes, and it’s up to you to figure out which approach and structure works best for your studio. - -## Swapping Sequence for Episode - - -As briefly mentioned above, if you want to simply swap the default Sequence/Shot hierarchy for Episode/Shot, you can use the Nuke Studio Sequence item as the source of your Episode name. - -1. Set up your schema and templates to work with an Episode/Shot structure. - -2. Take over the default `hiero_get_shot.py` hook like shown above. However this time, change the `parent_field` variable value to `sg_episode` (make sure you have an episode field on your Shot entity) and the `par_entity_type` `variable value to` `Episode`. - -3. Take over the `hiero_translate_template.py` hook and change the mapping in the hook file: - -``` - mapping = { - "{Episode}": "{sequence}", - "{Shot}": "{shot}", - "{name}": "{clip}", - "{version}": "{tk_version}", -} - -``` - - -The Episode key will get resolved with the Nuke Studio sequence key value. - -> **Tip:** If you’ve opened your Hiero/Nuke Studio project before making these changes, or you’re testing while making the changes, then it’s possible you will need to reset the export path. Nuke Studio caches the export tree when you open the export dialog, so you will need to rebuild it by pressing the refresh button when you want your changes to the schema to be reloaded. \ No newline at end of file diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_0.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_0.png deleted file mode 100644 index 606f9501f..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_0.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_1.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_1.png deleted file mode 100644 index 12c65f16c..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_1.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_10.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_10.png deleted file mode 100644 index 3df1b8846..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_10.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_11.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_11.png deleted file mode 100644 index 9197219a9..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_11.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_12.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_12.png deleted file mode 100644 index 9a889e276..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_12.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_13.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_13.png deleted file mode 100644 index 945847f71..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_13.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_14.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_14.png deleted file mode 100644 index 9d27ac762..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_14.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_15.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_15.png deleted file mode 100644 index d63e79d86..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_15.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_16.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_16.png deleted file mode 100644 index 62e275474..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_16.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_17.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_17.png deleted file mode 100644 index 8ec976c02..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_17.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_18.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_18.png deleted file mode 100644 index f8c2cad63..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_18.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_19.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_19.png deleted file mode 100644 index b057132c1..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_19.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_2.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_2.png deleted file mode 100644 index c91f7390c..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_2.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_20.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_20.png deleted file mode 100644 index cb5fd77cc..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_20.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_21.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_21.png deleted file mode 100644 index aa56cede3..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_21.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_22.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_22.png deleted file mode 100644 index 825624568..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_22.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_23.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_23.png deleted file mode 100644 index 7a5f2276e..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_23.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_24.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_24.png deleted file mode 100644 index 74a9dd0b9..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_24.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_25.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_25.png deleted file mode 100644 index ac143b087..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_25.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_26.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_26.png deleted file mode 100644 index c9b959605..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_26.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_27.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_27.png deleted file mode 100644 index 9030cdb3a..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_27.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_28.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_28.png deleted file mode 100644 index b528b1da6..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_28.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_29.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_29.png deleted file mode 100644 index e7a5d758c..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_29.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_3.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_3.png deleted file mode 100644 index fa1ee9603..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_3.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_30.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_30.png deleted file mode 100644 index 6f761b33e..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_30.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_31.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_31.png deleted file mode 100644 index 9c6591811..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_31.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_32.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_32.png deleted file mode 100644 index 2353a9976..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_32.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_33.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_33.png deleted file mode 100644 index 48bf46a1e..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_33.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_34.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_34.png deleted file mode 100644 index 38c31e680..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_34.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_35.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_35.png deleted file mode 100644 index 32054b0eb..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_35.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_36.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_36.png deleted file mode 100644 index 5660658dc..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_36.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_37.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_37.png deleted file mode 100644 index d807ec970..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_37.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_4.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_4.png deleted file mode 100644 index 72b91c944..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_4.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_40.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_40.png deleted file mode 100644 index 08c94f019..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_40.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif deleted file mode 100644 index b18aad6e4..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_42.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_42.png deleted file mode 100644 index eacf54827..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_42.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_43.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_43.png deleted file mode 100644 index 53bcd2023..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_43.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_44.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_44.png deleted file mode 100644 index 0165f2e53..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_44.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_45.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_45.png deleted file mode 100644 index 78828caac..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_45.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_46.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_46.png deleted file mode 100644 index 3352b7d76..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_46.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_47.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_47.png deleted file mode 100644 index 5ee8f0cf7..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_47.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_48.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_48.png deleted file mode 100644 index 955574211..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_48.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif deleted file mode 100644 index 6b2746480..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_5.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_5.png deleted file mode 100644 index a46252d77..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_5.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_50.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_50.png deleted file mode 100644 index b5b44e027..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_50.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_51.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_51.png deleted file mode 100644 index 0ddd3ee28..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_51.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_52.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_52.png deleted file mode 100644 index 9aaee07e0..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_52.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_53.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_53.png deleted file mode 100644 index fb2f230a3..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_53.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54.png deleted file mode 100644 index 49301aa11..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif deleted file mode 100644 index 3decd4533..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_55.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_55.png deleted file mode 100644 index 21dca89ed..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_55.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_56.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_56.png deleted file mode 100644 index ea448f66f..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_56.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_57.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_57.png deleted file mode 100644 index cbb5fb3f3..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_57.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_58.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_58.png deleted file mode 100644 index 270c1d6a9..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_58.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_59.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_59.png deleted file mode 100644 index 7d20daf1e..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_59.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_60.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_60.png deleted file mode 100644 index f2f95cd8b..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_60.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_61.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_61.png deleted file mode 100644 index 0a64c23e4..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_61.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_62.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_62.png deleted file mode 100644 index cfb6e2b91..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_62.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_63.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_63.png deleted file mode 100644 index 569866d92..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_63.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_64.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_64.png deleted file mode 100644 index ead6ff333..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/image_64.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png deleted file mode 100644 index 55cde0429..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png deleted file mode 100644 index 8fce5b3ea..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png deleted file mode 100644 index 7af0f7437..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png deleted file mode 100644 index 1857a1f4a..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png deleted file mode 100644 index ac26f2a54..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png deleted file mode 100644 index 968a3a7f8..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png deleted file mode 100644 index 824ccc1f5..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png deleted file mode 100644 index d5b6fd796..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png deleted file mode 100644 index 6ac096997..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png deleted file mode 100644 index d0fc6debd..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png deleted file mode 100644 index afac41f35..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png b/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png deleted file mode 100644 index ceee9446c..000000000 Binary files a/docs/en/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png and /dev/null differ diff --git a/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md deleted file mode 100644 index 4f8b748f9..000000000 --- a/docs/en/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ /dev/null @@ -1,853 +0,0 @@ ---- -layout: default -title: Animation Pipeline Tutorial -pagename: toolkit-pipeline-tutorial -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. - -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: - -{% include figure src="./images/tutorial/image_0.png" caption="Pipeline Overview" %} - -## Pipeline Overview - -For simplicity, the digital content creation (DCC) software used will be kept to a minimum and limited to Maya and Nuke. Also for the sake of simplicity, data passed between pipeline steps will be limited to Maya ascii files, Alembic caches, and rendered image sequences. - -{% include info title="Note" content="The simple pipeline outlined in this tutorial has not been tested on production and should only be used as an example of how a ShotGrid-based pipeline could be built." %} - -## Prerequisites - -* **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://developer.shotgridsoftware.com/d587be80/). - -* **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. - -* **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 %} Integrations](https://www.shotgridsoftware.com/integrations/) - - * [User Guide](https://developer.shotgridsoftware.com/d587be80/) - - * [Admin Guide](https://developer.shotgridsoftware.com/8085533c/) - - * [Developer Guide](https://developer.shotgridsoftware.com/93c6e555/) - -# 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**: - - * **_Teapot_** character - - * **_Table_** prop - -* One **Sequence** - -* One **Shot** linked to the **Sequence** you created - -* A **Task** per pipeline step - -Here are some screenshots of what your configured project entities should look like in {% include product %}: - -{% include figure src="./images/tutorial/image_1.png" caption="Teapot and Table Assets" %} - -{% include figure src="./images/tutorial/image_2.png" caption="Shot linked to a Sequence" %} - -{% include figure src="./images/tutorial/image_3.png" caption="Tasks" width="400px" %} - -## 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. - -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. - -For complete details on the Software entity and how to properly configure it, please see the [Integrations Admin Guide](https://developer.shotgridsoftware.com/8085533c/). 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. - -By default, all new projects are configured to use the basic [{% include product %} Integrations](https://developer.shotgridsoftware.com/d587be80/) 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://developer.shotgridsoftware.com/8085533c/#taking-over-a-pipeline-configuration). - -{% include figure src="./images/tutorial/image_5.png" caption="Select the **Advanced project setup…** in the Desktop popup menu" %} - -{% include figure src="./images/tutorial/wizard_01.png" caption="Choose the **ShotGrid Default** configuration type" %} - -{% 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. - -{% include figure src="./images/tutorial/wizard_03.png" caption="Create a new storage." %} - -{% include figure src="./images/tutorial/wizard_04.png" caption="Name your new storage. Remember, this storage is site-wide and not project specific." %} - -{% 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html). - -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. - -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. - -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. - -{% include figure src="./images/tutorial/image_10.png" caption="The Pipeline Configuration entity in ShotGrid" %} - -Familiarize yourself with the contents of this folder in preparation for the next section. - -## Config Organization - -Before beginning the process of building your simple pipeline, you need to understand how the pipeline configurations are organized and how they work. The following graphic highlights the major components of the configuration and their purposes. For additional information about configurations and their administration, see the [Administering Toolkit](https://developer.shotgridsoftware.com/425b1da4/) article. - -{% include figure src="./images/tutorial/image_11.png" %} - -### 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://developer.shotgridsoftware.com/82ff76f7/) documentation. - -### Templates - -This tutorial also uses the templates defined in the Default pipeline configuration. You can open the **`config/core/templates.yml`** file to get a peek at the templates that are used by the apps to map input and output files to paths on disk. For more information about the templating system, see the [File System Configuration Reference](https://developer.shotgridsoftware.com/82ff76f7/) documentation. - -### 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://developer.shotgridsoftware.com/425b1da4/#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. - -2. **Copy the hook** (renaming it if necessary) into your configuration's top-level **`hooks`** directory. - -{% include figure src="./images/tutorial/image_12.png" %} - -Once the file is in your configuration's **`hooks`** folder, you will be ready to make changes and customize the code. An additional step is required to point the corresponding App to this new location. You will see how to do this later in the tutorial. - -# 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. - -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. - -{% include info title="Note" content="All code and configuration for this tutorial can be found on the **`pipeline_tutorial`** branch of the [**`tk-config-default2`** repository](https://github.com/shotgunsoftware/tk-config-default2/tree/pipeline_tutorial/). Feel free to use this branch if you need hints as to where files should live, where code should be added, etc." %} - -## 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. - -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. - -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. - -{%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://developer.shotgridsoftware.com/c0b0ce05/) for more info." %} - -Next, model a Teapot, or [download](https://raw.githubusercontent.com/shotgunsoftware/tk-config-default2/pipeline_tutorial/resources/teapot.obj) and import the provided Teapot. - -{% include figure src="./images/tutorial/image_14.png" %} - -When you're happy with your Teapot model, select the **{% include product %} > File Save…** menu action. This dialog will prompt you to save the file to a given name, version, and type. - -{% include figure src="./images/tutorial/image_15.png" %} - -Notice how the dialog does not ask you to specify the full save path. This is because the App has been configured to save to the **`maya_asset_work`** template. This template is defined like this by default: - -**`@asset_root/work/maya/{name}.v{version}.{maya_extension}`** - -The tokenized fields, **`{name}`**, **`{version}`**, and **`{maya_extension}`** are all the app needs to populate the full path. The **`@asset_root`** portion of the template is defined as: - -**`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. - -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. - -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. - -{% include figure src="./images/tutorial/image_16.png" %} - -Once you're satisfied with your work, run the **{% include product %} > File Save…** menu action again. This time the dialog will default your version number to 2. The automatic incrementing of the file version allows artists to maintain a complete history of the work they've done. Click the Save button. - -{% 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. - -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. - -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 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. - -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" %} - -In the image above, you can see the published alembic file that contains the teapot model. You should also see a publish for the maya session file. These publishes correspond to the items in the Publish app's tree view. - -Like the work file created when using the File Save dialog, the output paths of these two publishes are driven by templates. Here's what they look like (you'll find out where these templates are configured for the app later): - -**Maya session publish:** - -**`@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. - -**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. - -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. - -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. - -## Surfacing Workflow - -In this section you will build on what you learned in the modeling section. You will learn how to load the Teapot model you created in the previous section using the Loader app. You will also learn how to customize the Publish app to publish shaders for your Teapot. - -Start by launching Maya from Desktop. If you still have Maya open after working through the previous section, you do not need to relaunch. Once Maya is open, use the **{% include product %} > File Open…** menu item to open the Workfiles app. Just like in the Modeling section, use the Assets tab to drill down into the Teapot asset's tasks. This time, select the surfacing task and click **+ New File**. - -{% 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. - -{% 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. - -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. - -{% 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. - -Use the **{% include product %} > File Save…** menu action to save the current session before continuing. - -### Custom Shader Publish - -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/)." %} - -#### Override the Maya collector - -First, you will need to modify the Publish app's collection logic. The publisher is configured with a collector hook that defines the logic for "collecting" items to publish and display in the app. You can find the configured app's settings in this file within your project's configuration: - -**`env/includes/settings/tk-multi-publish2.yml`** - -This file defines how the Publish app will be used within all of the artist environments. Open the file and search for the **Maya** section, specifically the configuration for the **asset step**. It will look like this: - -{% 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: - -**`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. - -{% 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. - -{% 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: - -**`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: - -**`collector: "{self}/collector.py:{config}/tk-multi-publish2/maya/collector.py"`** - -Note the **`{config}`** token. The path will now resolve to the hooks folder in your project configuration. Your new copy of the collector will inherit from the collector defined by the app itself. - -{% include info title="Note" content="If you were to publish at this point, the Publish logic would be exactly the same as the collector has simply been copied and referenced from a new location." %} - -Now you need to open up your copy of the collector in your preferred IDE or text editor, then locate the **`process_current_session`** method. This method is responsible for collecting all publish items in the current DCC session. Because you will be collecting a new publish type, go to the bottom of this method and add the following line: - -**`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. - -{% 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/)." %} - -Now add the new method definition below to the bottom of the file: - -```python - def _collect_meshes(self, parent_item): - """ - Collect mesh definitions and create publish items for them. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "mesh.png" - ) - - # iterate over all top-level transforms and create mesh items - # for any mesh. - for object in cmds.ls(assemblies=True): - - if not cmds.ls(object, dag=True, type="mesh"): - # ignore non-meshes - continue - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.mesh) that will be - # used by an associated shader publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name (the group name). In the future, other publish - # plugins might attach to these mesh items to publish other things - mesh_item = parent_item.create_item( - "maya.session.mesh", - "Mesh", - object - ) - - # set the icon for the item - mesh_item.set_icon_from_path(icon_path) - - # finally, add information to the mesh item that can be used - # by the publish plugin to identify and export it properly - 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. - -{% 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:" %} - -**`config/hooks/tk-multi-publish2/icons/mesh.png`** - -#### Create a shader publish plugin - -The next step is to connect the newly collected mesh items to a publish plugin that can export the mesh's shaders to disk and publish them. You will need to create a new publish plugin to do this. [Follow this link to the source code for this hook](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_shader_network.py) and save it in the **`hooks/tk-multi-publish2/maya`** folder and name it **`publish_shader_network.py`**. - -{% include info title="Note" content="The plugin is a lot of code to take in if you are new to the Toolkit platform and the publish code. Don't worry about that right now. You will have time to go through and understand what is happening as you progress through this tutorial and are exposed to the features of the publisher. For now, just create the file and know that its purpose is to handle writing the shader networks to disk." %} - -The last step before being able to publish shaders is to add the template and configuration defined by the new shader publish plugin. You can see the setting defined by the plugin in the **`settings`** property: - -```python - @property - def settings(self): - "”” … "”” - - # inherit the settings from the base publish plugin - plugin_settings = super(MayaShaderPublishPlugin, self).settings or {} - - # settings specific to this class - shader_publish_settings = { - "Publish Template": { - "type": "template", - "default": None, - "description": "Template path for published shader networks. " - "Should correspond to a template defined in " - "templates.yml.", - } - } - - # update the base settings - plugin_settings.update(shader_publish_settings) - - 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: - -**`env/includes/settings/tk-multi-publish2.yml`** - -Your configuration should look like this now: - -{% include figure src="./images/tutorial/image_28.png" %} - -Finally, you need to define the new **`maya_shader_network_publish`** template in your configuration. Edit this file to add it: - -**`config/core/templates.yml`** - -Find the section where asset related Maya templates are defined and add the new template definition. Your definition will look like this: - -{% 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. - -{% 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. - -{% include figure src="./images/tutorial/image_30.png" %} - -This will launch the Work Area Info app that provides information about your current context. It also has a handy button for reloading integrations while you're making changes to your configuration. Click the button to reload the the apps and engines, and then close the dialog. - -{% include figure src="./images/tutorial/image_31.png" %} - -### Publishing Shader Networks - -Now it is time to see the results of your changes to the project configuration. Launch the publish app from the {% include product %} menu. You should see the collected teapot mesh item with a **Publish Shaders** plugin attached: - -{% include figure src="./images/tutorial/image_32.png" %} - -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: - -{% include figure src="./images/tutorial/image_34.png" %} - -Next up, the rigging workflow. - -## 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 - -* Create a new workfile in the Teapot asset's rigging step - -* Load (reference) Teapot alembic cache publish from the modeling step - -* Rig the teapot's lid to open and close (keep it simple) - -* 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: - -{% include figure src="./images/tutorial/image_36.png" %} - -Open the work file in the Teapot's rigging step again (via **{% include product %} > File Open…**). Now launch the **{% include product %} > Scene Breakdown…** menu action. This launches the Breakdown app which shows you all of the upstream publishes that you have referenced into your work file. In this case, there is only the upstream Teapot model. You should see something like this: - -{% 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. - -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. - -{% 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. - -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. - -Begin by using what you learned in the previous sections to complete the following tasks: - -* Launch Maya from {% include product %} Desktop - -* 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 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. - -{% 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. - -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 - -As with shader publishing, the first step is to customize the collector hook. You've already taken over the collector hook for maya and configured it for the asset step. Now you need to update the configuration for the shot pipeline steps. To do this, modify the publisher's configuration file and edit the maya shot step collector setting. - -{% 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. - -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: - -**`self._collect_cameras(item)`** - -Next, add the method itself to the bottom of the file: - -```python - def _collect_cameras(self, parent_item): - """ - Creates items for each camera in the session. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "camera.png" - ) - - # iterate over each camera and create an item for it - for camera_shape in cmds.ls(cameras=True): - - # try to determine the camera display name - try: - camera_name = cmds.listRelatives(camera_shape, parent=True)[0] - except Exception: - # could not determine the name, just use the shape - camera_name = camera_shape - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.camera) that will be - # used by an associated camera publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name. In the future, other publish plugins might attach to - # these camera items to perform other actions - cam_item = parent_item.create_item( - "maya.session.camera", - "Camera", - camera_name - ) - - # set the icon for the item - cam_item.set_icon_from_path(icon_path) - - # store the camera name so that any attached plugin knows which - # camera this item represents! - cam_item.properties["camera_name"] = camera_name - cam_item.properties["camera_shape"] = camera_shape -``` - -Once again, the code is commented and should give you an idea of what is being done. You have added logic to collect camera items for all cameras in the current session. As before, if you were to execute the publisher at this point however, you would not see any camera items in the item tree. This is because there are no publish plugins defined to act on them. Next, you'll write a camera publish plugin that will attach to these items and handle publishing them for use downstream. - -{% include info title="Note" content="You probably saw the call to set an icon for the camera item in the code above. For this to work, you will need to add an icon to your configuration at the specified path:" %} - -**`config/hooks/tk-multi-publish2/icons/camera.png`** - -### Custom camera publish plugin - -The next step is to connect the newly collected mesh items to a publish plugin that can export the mesh's shaders to disk and publish them. You will need to create a new publish plugin to do this. [Follow this link to the source code for this hook](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_camera.py) and save it in the **`hooks/tk-multi-publish2/maya`** folder and name it **`publish_camera.py`**. - -### 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. - -**`env/includes/settings/tk-multi-publish2.yml`** - -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*`**. - -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. - -{% include figure src="./images/tutorial/image_45.png" %} - -As you can see in the image, the new camera item is collected and the publish plugin is attached. Go ahead and click **Publish** to write the camera to disk and register it with ShotGrid. - -{% include info title="Note" content="Similarly to Alembic export, the camera publish plugin requires the FBX export plugin to be loaded. If you don't see the camera publish plugin item, check to ensure that the FBX plugin is loaded, and re-launch the publisher." %} - -You should see something like this in {% include product %}: - -{% 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. - -Use what you've learned in previous sections to complete the following tasks. - -* Launch Maya from {% include product %} Desktop - -* Create a new workfile in your Shot's animation 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." %} - -### Custom camera Loader action - -In order to customize the Loader app to import/reference the camera publishes, you will need to edit the app's settings file. This is the path to the file in your configuration: - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -Find the section where the app is configured for maya and add this line to the list of actions in the **`action_mappings`** setting: - -**`FBX Camera: [reference, import]`** - -In the custom camera publish plugin, the **`FBXExport`** mel command in Maya was used to write the camera to disk, and the publish type used to register the file with {% include product %} was **`FBX Camera`**. The line you added to the settings tells the loader to display the **`reference`** and **`import`** actions for any publishes of type **`FBX Camera`**. These actions are defined in the [tk-maya-actions.py](https://github.com/shotgunsoftware/tk-multi-loader2/blob/master/hooks/tk-maya_actions.py) hook of the Loader app. These actions are implemented in a way to handle any type of file that Maya can reference or import. The **`.fbx`** files generated by the custom plugin fall into that category so this is the only change needed to be able to load the published cameras. - -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. - -{% 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). - -{% include figure src="./images/tutorial/image_49.gif" %} - -When you are happy with your animation, save and publish your work file just like you did in previous sections. - -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. - -First, use what you've learned in previous sections to complete the following tasks. - -* Launch Maya from {% include product %} Desktop - -* 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 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. - -{% 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. - -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. - -Add the following method at the end of the actions hook (outside the class). - -```python - def _hookup_shaders(reference_node): - """ - Reconnects published shaders to the corresponding mesh. - :return: - """ - - # find all shader hookup script nodes and extract the mesh object info - hookup_prefix = "SHADER_HOOKUP_" - shader_hookups = {} - for node in cmds.ls(type="script"): - node_parts = node.split(":") - node_base = node_parts[-1] - node_namespace = ":".join(node_parts[:-1]) - if not node_base.startswith(hookup_prefix): - continue - obj_pattern = node_base.replace(hookup_prefix, "") + "\d*" - obj_pattern = "^" + obj_pattern + "$" - shader = cmds.scriptNode(node, query=True, beforeScript=True) - shader_hookups[obj_pattern] = node_namespace + ":" + shader - - # if the object name matches an object in the file, connect the shaders - for node in (cmds.ls(references=True, transforms=True) or []): - for (obj_pattern, shader) in shader_hookups.iteritems(): - # get rid of namespacing - node_base = node.split(":")[-1] - if re.match(obj_pattern, node_base, re.IGNORECASE): - # assign the shader to the object - cmds.select(node, replace=True) - 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 - reference_node = cmds.referenceQuery(path, referenceNode=True) - _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. - -{% 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." %} - -Finally, point your shot's loader settings to your new hook by editing this file: - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -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" %} - -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. - -{% 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. - -{% include figure src="./images/tutorial/image_53.png" %} - -Now add some lights to your scene (keep it simple). - -{% include figure src="./images/tutorial/image_54.png" %} - -### Publishing Maya Renders - -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. - -{% include figure src="./images/tutorial/image_55.png" %} - -Go ahead and publish the session and the rendered image file sequence. You should see something like this in {% include product %}: - -{% include figure src="./images/tutorial/image_56.png" %} - -Next up, compositing! - -## Compositing Workflow - -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 - -* 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. - -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. - -{% include figure src="./images/tutorial/image_58.png" %} - -Once you are happy with your comp, use the **{% include product %} > File Save…** menu action to save your work file. - -Next, click the {% include product %} logo in the left hand menu in Nuke. Click on one of the ShotGrid-aware write nodes in that menu: - -{% 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. - -{% include figure src="./images/tutorial/image_60.png" %} - -Render the image frames to disk. You can now publish your nuke session to associate the work file with the rendered images. By default, the publisher will collect the rendered frames and attach a plugin to register the frames with {% include product %}. A second plugin will upload the frames for review by way of an integration that runs in the background called review submission. This app uses nuke to generate a quicktime that will be uploaded and made available for review. - -{% include figure src="./images/tutorial/image_61.png" %} - -Another useful integration is the Quick Review app. This is an output node that will quickly generate and upload a quicktime to {% include product %} for Review. The app can be found in the left hand menu next to the {% include product %} Write Nodes. - -{% include figure src="./images/tutorial/image_62.png" width="400px" %} - -Create a Quick Review node, then click the Upload button to render the input to disk, generate the quicktime, and upload the result to {% include product %} for review. Some standard options are provided before submitting the frames. - -{% include figure src="./images/tutorial/image_63.png" %} - -Check the media tab in {% include product %} to see both of the uploaded quicktimes. - -{% include figure src="./images/tutorial/image_64.png" %} - -For more information on reviewing media in {% include product %}, see the [official documentation](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_review_approval_html). - -# Conclusion - -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! - -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://developer.shotgridsoftware.com/2e5ed7bb/) to help you get started writing your first app. - -As always, if you have additional questions about this tutorial or about {% include product %} or the Toolkit platform in general, [reach out to the community](https://community.shotgridsoftware.com/c/pipeline/6). diff --git a/docs/en/guides/python-3-best-practices.md b/docs/en/guides/python-3-best-practices.md deleted file mode 100644 index 6151ba4f8..000000000 --- a/docs/en/guides/python-3-best-practices.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: default -title: Python 3 Porting Best Practices -pagename: python-3-best-practices -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. - -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. - -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. - -## 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. - -## 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. - -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).) - -### 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. - -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. - -#### `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. - -## 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. - -### 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. - -### 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. - -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: - -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 .``` -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. - -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. -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. - -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. - -## Gotchas - -### 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 -# base64.encodestring expects str in Python 2, and bytes in Python 3. -# By using six.ensure_binary() we can ensure that the we always -# pass it the correct type. -base64.encodestring(six.ensure_binary(some_string)) - -# In this example (from tk-multi-publish2), we get a list of files -# from a QDropEvent in Pyside. The filenames are unicode, however -# they're being passed to code that expects str. - -# In Python 2, this had looked like: -if isinstance(category_type, unicode): - category_type = category_type.encode("utf-8") - -# Using six, we can get the same behavior in Python 2, and ensure -# compatibility with Python 3 with: -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. - -```python -# Dumping data to a pickle string: -DUMP_KWARGS = {"protocol": 0} -# Force pickle protocol 0, since this is a non-binary pickle protocol. -# See https://docs.python.org/2/library/pickle.html#pickle.HIGHEST_PROTOCOL -# Decode the result to a str before returning. -pickled_data = six.ensure_str(cPickle.dumps(data, **DUMP_KWARGS)) -``` - -```python -# Loading data from a pickle string: -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. - -### 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. - -### `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. - - -## 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) - -[^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 diff --git a/docs/en/guides/review.md b/docs/en/guides/review.md deleted file mode 100644 index 99b1de39d..000000000 --- a/docs/en/guides/review.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: Review -pagename: review -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. - -Dig into RV's Reference Manuals for a complete understanding of node graphs, custom shaders, event handling, and networking. - -Check out the RV-SDI manual to learn about our implementation of the NVIDIA SDI video device as a presentation mode device. - -Look to our Integration Packages for seamless workflows with Maya, Nuke, and even {% include product %} itself. diff --git a/docs/en/guides/review/rv-developer-overview.md b/docs/en/guides/review/rv-developer-overview.md deleted file mode 100644 index 4de9d85b9..000000000 --- a/docs/en/guides/review/rv-developer-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: RV Developer Overview -pagename: rv-developer-overview -lang: en ---- - -# RV Developer Overview - -RV Core Reference ------------------ - -### User Manual - -The User Manual includes introductory material to get you started with RV and RVIO as well as complete command-line and GUI usage. In addition, you’ll find installation notes and tips on maximizing performance as well as in-depth information on LUTs, the RV pixel pipeline, stereoscopic 3D, expanding RV with Packages, networking with RV and the RVLS media listing utility. - -* [RV User Manual](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_user_manual_html) -* [Questions & Troubleshooting Forum](https://community.shotgridsoftware.com/c/rv/14) - -### Technical Reference Manual - -The Reference Manual is the starting place for learning how to customize RV. It contains an overview of RV’s package system and Mu scripting capabilities. It is the place to start if you want to change hot keys, add menus, customize color management, create new widgets or integrate RV with your pipeline. - -* [Technical Reference Manual](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_reference_manual_html) -* [Extending RV Forum](https://community.shotgridsoftware.com/c/rv/14) - -### RV-SDI Manual - -This manual describes Tweak’s implementation of the NVIDIA SDI video device as a presentation mode device. For more information on presentation mode and how it relates to RV in general see the RV User Manual. To use RV-SDI, you must run the "rv" (or "rv.exe") executable, and have an "rvsdi" license. - -* [RV-SDI Manual](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_rv_sdi_manual_html) - - - -RV Integration --------------- - -### RV / Nuke Integration - -RV now comes with Nuke integration tools. This document describes installation for an individual or system wide setup and describes the workflow, tools, concepts and usage for RV/Nuke. - -* [RV-Nuke Integration Documentation](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_knowledge_base_rv_nuke_integration_html) - -### RV / Maya Integration - -RV now comes with Maya integration. This document explains how to install the RV/Maya Package and describes the RV/Maya workflow and how to compare and organize playblasts and how to render into edits, A/B comparisons, and layouts. - -* [RV-Maya Integration Documentation](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_rv_maya_integration_html) diff --git a/docs/en/guides/webhooks.md b/docs/en/guides/webhooks.md deleted file mode 100644 index e46ed2a36..000000000 --- a/docs/en/guides/webhooks.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -layout: default -title: Webhooks -pagename: shotgun-webhooks -lang: en ---- - -# Webhooks - -Webhooks allow a service you control to be notified of events that occur in {% include product %}. When you create a webhook, you specify the type of event you are interested in and tell {% include product %} what URL to send data to when it is triggered. Once the relevant event happens in {% include product %}, a payload of data describing the event will be sent to the webhook’s URL. This allows you to build tight integrations with {% include product %} and automate portions of your workflow. - -## What are some examples of how to use webhooks? - -There are numerous use cases for webhooks. A few that we think are compelling are outlined in this document, but their uses are by no means limited to these few examples. - -### Create a directory structure on disk when an entity is created - -One workflow that we have seen repeated many times over is the need to create a directory structure on disk when a new entity is created in {% include product %}. Why not go ahead and make sure that a new shot is ready for artist work automatically once it is created in {% include product %}? - -### Automation of status management - -When your animation team is finished with their work, why not go ahead and change the status of downstream Tasks in the same Shot to indicate that more work is ready to begin? This way, you can automatically notify the assigned artists in different disciplines that everything is ready to go! - -Another great example of how to automate status management would be to trigger a status change on a `Task` entity when a new `Note` is created. This is a good way to indicate to the artist and production teams that a supervisor has requested changes or fixes to the current work after a review session. - -## When should webhooks be used instead of the {% include product %} event daemon? - -Webhooks and the [{% include product %} event daemon](https://github.com/shotgunsoftware/shotgunEvents/wiki) offer similar features, but with a few key differences. The event daemon requires that you run, monitor, and maintain your own service. All of your code must be written in Python, and it allows you to initiate your own connections to {% include product %}. Webhooks, in contrast, answer connections and can be written in any programming language. They can be hosted in a serverless environment, such as [AWS Lambda](https://aws.amazon.com/lambda/), or can trigger any of the automation platforms available online, such as [Zapier](https://zapier.com) and [IFTTT](https://ifttt.com). If your use case works with webhooks, it should be the preferred solution. - -## Creating a Webhook - -To get started creating a webhook, go to the **Webhooks** page. - -![Create Webhook Button](./images/webhooks/webhooks_page.png) - -Then, select **Create Webhook**. - -![Create Webhook Button](./images/webhooks/create_webhook_button.png) - -{% include info title="Note" content="Access to webhooks is controlled by **Show Webhooks** under Advanced Permissions. It is enabled by default for Admin and Manager permission roles ![Create Webhook Dialog](./images/webhooks/show_webhooks_permission.png)." %} - -Next, fill out the information required to create your new webhook. - -![Create Webhook Dialog](./images/webhooks/create_webhook_dialog.png) - -### Secret token - -Assigning a secret token to a webhook is optional. When provided, any request sent to the webhook URL will be signed using that token. The token value is sent with the request as a header named `X-SG-SIGNATURE`. The signature is calculated using HMAC with SHA1 and the message signed is the JSON body of the request. - -![Secret Token](./images/webhooks/webhook_secret_token.png) - -#### Header format - -`=` - -#### Why use a secret token? - -While not strictly required, providing a secret token causes the payload sent to the webhook URL to be signed. This allows the consumer service to verify that the data originated from the source it expects, and that the payload has not been altered in any way during transit. - -#### Signature verification - -An example of how to verify the signature of the payload is provided below using Python. - -```python ->>> import hmac ->>> import hashlib ->>> body | `' ->>> token | `mytoken' ->>> 'sha1=' + hmac.new(token, body, hashlib.sha1).hexdigest() == 'sha1=32824e0ea4b3f1ae37ba8d67ec40042f3ff02f6c' -True -``` - -### Validate SSL certificate - -Validation of SSL certificates is an optional feature that will help ensure the security of any connections made to the webhook’s consumer URL. If turned on, when a delivery is made to the webhook’s URL, {% include product %} will use OpenSSL’s certificate validation routine to verify the certificate. - -![Validate SSL certificate](./images/webhooks/webhooks_validate_ssl_certificate.png) - -### Filtering by Project and Entity - -Selecting specific projects, entities, and fields will minimize traffic to your webhook, which in result will: - -- Improve performance -- Reduce resource costs -- Prevent unnecessary backlogs - -![Webhook Filters](./images/webhooks/webhook_project_entity_field_filter.png) - -{% include info title="Note" content="Selecting a project limits you to selecting an entity that always belongs to a single project, such as Versions. If you want to select a non-project (or multi-project) entity like Person, you should **not** select a project. This ensures webhook event filtering does not add performance overhead to entity updates." %} - -## Webhook status - -A webhook can have one of several different statuses, indicating its health and ability to continue receiving deliveries. - -![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 100 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 - -Selecting a webhook from the webhooks list will show all of the deliveries that have been made for that webhook dating back as far as seven days. - -{% include info title="Note" content="Delivery logs older than seven days are removed and are not recoverable." %} - -### Delivery status - -A delivery status indicates whether it was successfully delivered to the webhook’s URL. - -![Delivery Status](./images/webhooks/delivery_status.png) - -### Delivery details - -Deliveries can be expanded to show detailed information about the request sent to the webhook URL and the response to that request. - -![Delivery Details](./images/webhooks/delivery_details.png) - -#### Request Payload - -The payload sent to the webhook's URL contains information describing the event that occurred in {% include product %} and who triggered it. It is provided in JSON format. - -{% include warning title="Payload size" content="The maximum size of a delivery's payload is 1 megabyte. Any event triggered in ShotGrid that would result in a payload size larger than 1 megabyte will have its `new_value` and `old_value` keys removed, and a `warning` key added that contains a message explaining what happened, why, and how to retrieve the entire event log entry from ShotGrid." %} - -##### Example payload - -```json -{ - "data": { - "id": "95.0", - "meta": { - "type": "attribute_change", - "entity_id": 758, - "new_value": "This is the newest description ever!!", - "old_value": "This is the old description!", - "entity_type": "Asset", - "attribute_name": "description", - "field_data_type": "text" - }, - "user": { - "id": 113, - "type": "HumanUser" - }, - "entity": { - "id": 758, - "type": "Asset" - }, - "project": { - "id": 65, - "type": "Project" - }, - "operation": "update", - "created_at": "2019-07-12 21:14:36.598835", - "event_type": "Shotgun_Asset_Change", - "session_uuid": "07473c00-a4ea-11e9-b3b8-0242ac110006", - "attribute_name": "description", - "event_log_entry_id": 248249 - } -} -``` - -##### Session UUID - -Provided as part of the event payload is the `session_uuid` that triggered the event in {% include product %}. This value can be provided to [{% include product %}'s Python API](https://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid), which will cause any open browser session with that session_uuid to display updates for events generated by the API. - -#### Response from the Webhook - -![Response tab](./images/webhooks/webhooks_response_tab.png) - -The Response tab shows details about your webhook's response to the delivery. - -You can see your webhook's response HTTP headers, body, and the measured response time. - -A maximum of 100 characters of your webhook's response body are retained. (As noted above, delivery information is retained for review for 7 days and deleted afterwards.) - -{% include warning title="Security best practices" content="Do not include any secure data in your webhook's response, and do not return details of system errors in the response." %} - -### Responding to deliveries - -A webhook consumer service must respond to deliveries in order for the system to consider them successfully delivered. - -{% 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. - -#### Throttling - -Your consumer response times to deliveries will impact webhooks throughput for your site. - -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. - -When a high rate of overall throughput is needed, 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 - -#### 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. | - -### Acknowledgements - -A delivery can be updated to include an acknowledgement. When a delivery is made, headers are provided as part of the request. Included in those headers is the ID of the delivery record, stored in the `x-sg-delivery-id` key. This ID can be used to update the delivery record to include an acknowledgement using [the {% include product %} REST API](https://developer.shotgridsoftware.com/rest-api). - -{% include warning title="Acknowledgement size" content="The maximum size allowed for an acknowledgement is 4 kilobytes." %} - -#### Example headers - -```json -{ - "accept": "application/json", - "content-type": "application/json; charset=utf-8", - "x-sg-webhook-id": "30f279a0-42a6-4cf2-bb5e-6fc550d187c8", - "x-sg-delivery-id": "dea7a71d-4896-482f-b238-b61820df8b65", - "x-sg-event-batch-id": "1", - "x-sg-event-batch-size": "4", - "x-sg-webhook-site-url": "http://yoursite.shotgunstudio.com/", - "x-sg-event-batch-index": "3" -} -``` - -#### What are acknowledgements used for? - -Acknowledgements allow for out of band, detailed reporting of success or failure to process a delivery that was successfully received by your webhook's URL. This creates a separation between the status of receiving the delivery from {% include product %} and the success or failure to process the event associated with that delivery. As a result, successfully-delivered events can contain additional information useful for debugging purposes. - -A good example would be a webhook triggered on the creation of an `Asset` entity. If that webhook's responsibility is to create a directory structure on disk for each new `Asset`, the webhook's URL can successfully receive a delivery, but be unable to create the associated directories due to a disk or network outage. Then, it can update the delivery record with a detailed error message stating that the directory structure was not created, and why. - -## Testing Webhooks - -You can use any of the freely available webhook URL generators online for testing purposes. These services are specifically intended to be used for testing webhooks and other types of HTTP requests. This is a great way to get started learning about webhooks without needing to set up any infrastructure on your own network. - -### Using webhook.site - -We recommend [webhook.site](https://webhook.site). It provides a unique URL that can be copied and pasted into a webhook and will show you deliveries made to that address in real time. The page can be customized to respond to deliveries with a specific status code and body, which means you can test delivery success and failure. - -The webhook.site service is aggressively rate limited. This means that it is easy to end up in a situation where some deliveries are rejected, resulting in unstable or failed webhooks. When testing, we recommend that you use a known, controllable project environment rather than live data in production. - -{% include warning title="Production data" content="It is not good to send production event data to publicly available, third party web services! We recommend using test data only when using services like webhook.site to test webhooks." %} diff --git a/docs/en/guides/webhooks/batch-deliveries.md b/docs/en/guides/webhooks/batch-deliveries.md deleted file mode 100644 index 18e2a722a..000000000 --- a/docs/en/guides/webhooks/batch-deliveries.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: Webhooks Batch Deliveries -pagename: webhooks-batch-deliveries -lang: en ---- - -# Batch Delivery - -## Enabling Batch Delivery - -You can choose to configure your webhook so that it will make requests with a batched payload format by selecting the "Deliver in Batched Format" option. -If enabled, at the time each request is formed, it will batch up to 50 pending deliveries into its payload. - -This can help with managing the processing of large bursts of deliveries as a result of many SG events being generated in a short amount of time. Under typical system operation, multiple deliveries per payload will occur when subscribed events are generated more frequently than once in a 2-second period. - -![Batch Delivery Enabled](./images/batch_delivery_enabled.png) - -## Responding to deliveries - -If enabling batched deliveries, we recommend that your receiving service is designed to guarantee a response much faster than 1 second per event. Otherwise, you will be at increased risk for timeouts and webhook failure when batches are large. - -{% 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. - -#### 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. - -## Comparison of Webhook Delivery Formats - -#### Non-batched-deliveries Webhook Message Body (always 1 delivery): - -```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" - }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, - }, - "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. - -```json -{ - "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" - }, - "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*" - }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, - ] - } -} -``` diff --git a/docs/en/guides/webhooks/images/batch_delivery_enabled.png b/docs/en/guides/webhooks/images/batch_delivery_enabled.png deleted file mode 100644 index 82bfcbf31..000000000 Binary files a/docs/en/guides/webhooks/images/batch_delivery_enabled.png and /dev/null differ diff --git a/docs/en/images/color.png b/docs/en/images/color.png new file mode 100644 index 000000000..c83e4863e Binary files /dev/null and b/docs/en/images/color.png differ diff --git a/docs/en/quick-answers/administering.md b/docs/en/quick-answers/administering.md deleted file mode 100644 index 624446216..000000000 --- a/docs/en/quick-answers/administering.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Administering -pagename: quick-answers-administering -lang: en ---- - -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) -- [How can I disable the {% include product %} Desktop's browser integration?](./administering/disable-browser-integration.md) - -#### Managing your config: - -- [How do I modify my configuration to use multiple storage roots?](./administering/convert-from-single-root-to-multi.md) -- [How do I move my pipeline configuration to a new location?](./administering/move-configuration-location.md) -- [How do I move my project directories to a new Local Storage root?](./administering/move-project-directories.md) -- [How do I update my pipeline configuration core locations?](./administering/update-configuration-core-locations.md) -- [How do I share assets between projects?](./administering/share-assets-between-projects.md) -- [How do I uninstall an app or engine?](./administering/uninstalling-an-app-or-engine.md) - -#### Cache based questions: - -- [What is the Path Cache? What are Filesystem Locations?](./administering/what-is-path-cache.md) -- [Where is my cache?](./administering/where-is-my-cache.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 deleted file mode 100644 index 96469a4de..000000000 --- a/docs/en/quick-answers/administering/convert-from-single-root-to-multi.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: How do I modify my configuration to use multiple storage roots? -pagename: convert-from-single-root-to-multi -lang: en ---- - -# How do I modify my configuration to use multiple storage roots? - -The Default Configuration we provide is set up to use a single local storage root (i.e, all of your project files are stored underneath a single root point like `/sgtk/projects`). You may want to add a new storage root to store some of your project files. This is a common situation that arises when you're running out of disk space or want some media to be on a faster storage, etc. -Let’s say you want to add another root named “secondary”. Here are the steps you need to take: - -## Add the local storage in {% include product %} - -- 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.* -- 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) - -## Add the new root to your pipeline configuration - -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, - windows_path: 'z:\sgtk\projects' - } - secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, - windows_path: 'z:\sgtk\secondaries' - } - -{% include info title="Note" content="As of `tk-core v0.18.141`, the names of the roots defined in roots.yml do not need to match the names of the local storage defined in SG. You can explicitly define the connection by including a `shotgun_storage_id: ` key/value pair in your `roots.yml` definitions. -Example: - - secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, - windows_path: 'z:\sgtk\secondaries' - shotgun_storage_id: 123 - } - -The storage id is currently only queryable via an API call." %} - -## Modify your schema to use your new local storage root - -Now that you've defined the new storage root and essentially told Toolkit about it, you need to decide how you're going to use it in your directory structure. For this example, let's assume you want all of your asset work to go in the secondary storage, and all of your shot work to go in the primary storage. You might setup your schema to look like the following in `config/core/schema`: - -![Multi root schema layout](images/schema-multi-root.png) - -**config/core/schema/project.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "primary" - -**config/core/schema/secondary.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "secondary" - -You will also need to modify any YAML files that reference the root in their filters. -For example, if you had an asset.yml somewhere under your secondary folder, then you need to update the filters so that it filters the project against the secondary folder value. - - filters: - - { "path": "project", "relation": "is", "values": [ "$secondary" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -## Update your template paths to specify which root to use - -Finally you will update1 the paths defined in your `config/core/templates.yml` file to specify which storage root to use, and update any of the paths as necessary. Remember that your template paths are very good friends with your schema and they need to match up. If you have a template path defined that doesn't match correctly with the path defined in your schema, you'll run into errors. - -For example, since we want to have all of our asset work on the secondary storage, to update the maya_asset_work template path, we'd modify it to look like this: - - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: 'secondary' - -You should follow this same pattern for each template path in your `config/core/templates.yml` file. Specify the correct `root_name` for each one (**'primary'** or **'secondary'**). - -{% 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 %}.* diff --git a/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md b/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md deleted file mode 100644 index ee27d627a..000000000 --- a/docs/en/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: How do I set up a desktop/launcher icon for ShotGrid Desktop on Linux? -pagename: create-shotgun-desktop-shortcut -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. - -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 diff --git a/docs/en/quick-answers/administering/disable-browser-integration.md b/docs/en/quick-answers/administering/disable-browser-integration.md deleted file mode 100644 index 688df100d..000000000 --- a/docs/en/quick-answers/administering/disable-browser-integration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: How can I disable ShotGrid Desktop's browser integration? -pagename: disable-browser-integration -lang: en ---- - -# How can I disable {% include product %} Desktop's browser integration? - -To disable browser integration, follow these two simple steps. - -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: - - [BrowserIntegration] - enabled=0 - -See complete instructions on how to configure the browser integration in our [Admin guide](https://developer.shotgridsoftware.com/8085533c/). - -**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 diff --git a/docs/en/quick-answers/administering/images/clear-project-tank-name.png b/docs/en/quick-answers/administering/images/clear-project-tank-name.png deleted file mode 100644 index c79c026c0..000000000 Binary files a/docs/en/quick-answers/administering/images/clear-project-tank-name.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/images/new-pipeline-configuration-locations.png b/docs/en/quick-answers/administering/images/new-pipeline-configuration-locations.png deleted file mode 100644 index a911fc415..000000000 Binary files a/docs/en/quick-answers/administering/images/new-pipeline-configuration-locations.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/images/pipeline-configuration-entity-page.png b/docs/en/quick-answers/administering/images/pipeline-configuration-entity-page.png deleted file mode 100644 index b15f58ff0..000000000 Binary files a/docs/en/quick-answers/administering/images/pipeline-configuration-entity-page.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/images/schema-multi-root.png b/docs/en/quick-answers/administering/images/schema-multi-root.png deleted file mode 100644 index e0ff5e768..000000000 Binary files a/docs/en/quick-answers/administering/images/schema-multi-root.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/images/shotgun-pref-file-management.png b/docs/en/quick-answers/administering/images/shotgun-pref-file-management.png deleted file mode 100644 index d136c13e9..000000000 Binary files a/docs/en/quick-answers/administering/images/shotgun-pref-file-management.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/images/shotgun-storage-roots.png b/docs/en/quick-answers/administering/images/shotgun-storage-roots.png deleted file mode 100644 index 78e528f43..000000000 Binary files a/docs/en/quick-answers/administering/images/shotgun-storage-roots.png and /dev/null differ diff --git a/docs/en/quick-answers/administering/install-desktop-silent.md b/docs/en/quick-answers/administering/install-desktop-silent.md deleted file mode 100644 index 70d370a4b..000000000 --- a/docs/en/quick-answers/administering/install-desktop-silent.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: How do I install the ShotGrid Desktop silently on Windows? -pagename: install-desktop-silent -lang: en ---- - -# How do I install the {% include product %} Desktop silently on Windows? - -To run the {% include product %} Desktop installer silently, simply launch the {% include product %} Desktop installer the following way: - -`ShotgunInstaller_Current.exe /S` - -If you wish to also specify the installation folder, launch it with the `/D` argument: - -`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 diff --git a/docs/en/quick-answers/administering/move-configuration-location.md b/docs/en/quick-answers/administering/move-configuration-location.md deleted file mode 100644 index e7fdab6b9..000000000 --- a/docs/en/quick-answers/administering/move-configuration-location.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: default -title: How do I move my pipeline configuration to a new location? -pagename: move-configuration-location -lang: en ---- - -# How do I move my pipeline configuration to a new location? - -{% 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. - -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) - -{% include warning title="Caution" content="If you are moving a configuration that has a localized core, and you have other projects that are using the Toolkit core embedded in this pipeline configuration (i.e. other configurations are using this as a shared core), you'll have to manually update the configuration files in those projects to point to the new location for this pipeline configuration. These files are located in: - -- `/path/to/pipeline_configuration/install/core/core_Darwin.cfg` -- `/path/to/pipeline_configuration/install/core/core_Linux.cfg` -- `/path/to/pipeline_configuration/install/core/core_Windows.cfg`" %} - -## Using the tank move_configuration command: - - $ cd /sgtk/software/shotgun/scarlet - $ ./tank move_configuration - - Welcome to the {% include product %} Pipeline Toolkit! - For documentation, see https://toolkit.shotgunsoftware.com - Starting Toolkit for your current path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - Syntax: move_configuration linux_path windows_path mac_path - - This will move the location of the given pipeline configuration. - You can also use this command to add a new platform to the pipeline - configuration. - - Current Paths - -------------------------------------------------------------- - - Current Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - - You typically need to quote your paths, like this: - - > tank move_configuration "/linux_root/my_config" "p:\configs\my_config" - "/mac_root/my_config" - - If you want to leave a platform blank, just just empty quotes. For example, if - 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 - $ ./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! - For documentation, see https://toolkit.shotgunsoftware.com - Starting toolkit for path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - - Current Paths - -------------------------------------------------------------- - Current Linux Path: '/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - New Paths - -------------------------------------------------------------- - New Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet_new' - New Windows Path: 'z:\sgtk\software\shotgun\scarlet_new' - New Mac Path: '/sgtk/software/shotgun/scarlet_new' - - - The configuration will be moved to reflect the specified path changes. - - Note for advanced users: If your configuration is localized and you have other - projects which are linked to the core API embedded in this configuration, - these links must be manually updated after the move operation. - - Are you sure you want to move your configuration? [Yes/No] yes - Copying '/sgtk/software/shotgun/scarlet' -> '/sgtk/software/shotgun/scarlet_new' - Copying /sgtk/software/shotgun/scarlet/cache... - Copying /sgtk/software/shotgun/scarlet/config... - Copying /sgtk/software/shotgun/scarlet/config/core... - Copying /sgtk/software/shotgun/scarlet/config/core/hooks... - Copying /sgtk/software/shotgun/scarlet/config/core/schema... - Copying /sgtk/software/shotgun/scarlet/config/env... - Copying /sgtk/software/shotgun/scarlet/config/env/includes... - Copying /sgtk/software/shotgun/scarlet/config/hooks... - Copying /sgtk/software/shotgun/scarlet/config/icons... - Copying /sgtk/software/shotgun/scarlet/install... - Copying /sgtk/software/shotgun/scarlet/install/apps... - Copying /sgtk/software/shotgun/scarlet/install/apps/app_store... - Copying /sgtk/software/shotgun/scarlet/install/core... - Copying /sgtk/software/shotgun/scarlet/install/core/python... - Copying /sgtk/software/shotgun/scarlet/install/core.backup... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143244... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143940... - Copying /sgtk/software/shotgun/scarlet/install/engines... - Copying /sgtk/software/shotgun/scarlet/install/engines/app_store... - Copying /sgtk/software/shotgun/scarlet/install/frameworks... - Copying /sgtk/software/shotgun/scarlet/install/frameworks/app_store... - Updating cached locations in /sgtk/software/shotgun/scarlet_new/config/core/install_location.yml... - Updating {% include product %} Configuration Record... - Deleting original configuration files... - - All done! Your configuration has been successfully moved. - - - -## Manually moving your pipeline configuration - -{% include warning title="Important" content="If you haven't yet moved your pipeline configuration, then we strongly advise using the [built-in tank command](#using-the-tank-move_configuration-command) above to take care of this automatically." %} - -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 - - $ 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: - - $ vi /mnt/newserver/sgtk/software/shotgun/scarlet_new/config/core/install_location.yml - - Update the paths in this file to point to the new location for your pipeline configuration on all of the applicable platforms. If you're not using a platform, enter an empty string `''` - - # {% 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: '' - - # 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. - -![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 diff --git a/docs/en/quick-answers/administering/move-project-directories.md b/docs/en/quick-answers/administering/move-project-directories.md deleted file mode 100644 index 348191460..000000000 --- a/docs/en/quick-answers/administering/move-project-directories.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: How do I move my project directories to a new Local Storage root? -pagename: move-project-directories -lang: en ---- - -# How do I move my project directories to a new Local Storage root? - -{% include warning title="Caution" content="Moving a project location mid project can have many ramifications even extending beyond ShotGrid Toolkit. It should not be undertaken lightly." %} - -Sometimes it's necessary to move your project files (scene files, renders, etc.) to a new root storage location (e.g., from `/mnt/smalldrive` to `/mnt/bigdrive/foo`). This can be done whether you're using a single or multi-root configuration. For example, let's say we want to move your storage named **"asset_storage"**: - -- 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) -- 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 %}. - -Toolkit stores publish paths as relative paths from a storage root. So with the old storage root the path was expanded like so: - - [asset_storage]/assets/Character/betty => /mnt/smalldrive/assets/Character/betty - -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! - -{% 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." %} - -## References - -If any of your scene files have references in them that are pointing to the old path, you'll need to update these on your own, or make symlinks to ensure that they get resolved correctly. - -## 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 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 deleted file mode 100644 index 8760a803b..000000000 --- a/docs/en/quick-answers/administering/resetup-project-with-sg-desktop.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: How do I re-setup a Toolkit project using ShotGrid Desktop? -pagename: resetup-project-with-sg-desktop -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. - -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. - -**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" - - \ No newline at end of file diff --git a/docs/en/quick-answers/administering/share-assets-between-projects.md b/docs/en/quick-answers/administering/share-assets-between-projects.md deleted file mode 100644 index bf007d14c..000000000 --- a/docs/en/quick-answers/administering/share-assets-between-projects.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: How do I share assets between projects? -pagename: share-assets-between-projects -lang: en ---- - -# How do I share assets between projects? - -It's not uncommon to have a project that's used as an Asset Library, containing assets that can be loaded into shots in other projects. - -To achieve this, you can add a tab to the [Loader app](https://developer.shotgridsoftware.com/a4c0a4f1/) that lists assets from this Asset Library project. In order to do so, you'll have to define this in the Loader settings for the engine and environment you're working in. You'll potentially have to update this in multiple places. - -For example, to add this to the [Maya engine in the shot step environment](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-loader2.yml#L122), you'd add this snippet: - -```yaml -caption: Asset Library -hierarchy: [project, sg_asset_type, code] -entity_type: Asset -filters: -- [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 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 deleted file mode 100644 index b5c35d0cd..000000000 --- a/docs/en/quick-answers/administering/uninstalling-an-app-or-engine.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: How do I uninstall an app or engine? -pagename: uninstalling-an-app-or-engine -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. -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 - -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. - -### Removing the App from the engines - -Each engine has its own YAML file inside [`.../env/includes/settings`](https://github.com/shotgunsoftware/tk-config-default2/tree/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings); as the Publish app is included in all engines you will need to modify each engine YAML file. Taking the Maya engine as an example you would open up [tk-maya.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml) and remove all references to the Publish app. - -First there is a reference to it in the includes section:
-[`.../env/includes/settings/tk-maya.yml L18`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L18) - -The app is also being included in the Maya engine when in an Asset Step context:
-[`.../env/includes/settings/tk-maya.yml L47`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L47)
-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) - -You would then repeat these steps for all the other engine environment yml files, such as `tk-nuke`, `tk-3dsmaxplus`, `tk-desktop`, and so on. - -{% include info title="Important" content="At this point you have done enough to stop the app from appearing in the integrations for your users, so this is as far as you need to go. However, if you want to completely remove reference to the app from your configuration for the sake of keeping it clean you would need to complete the remaining steps." %} - -### Removing the App settings - -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: - - 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 - -In the Default Configuration all the apps store their location descriptor in the [.../env/includes/app_locations.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml) file. The `tk-multi-publish2.yml` referenced this so you would need to remove the [the descriptor lines](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/app_locations.yml#L52-L56). diff --git a/docs/en/quick-answers/administering/update-configuration-core-locations.md b/docs/en/quick-answers/administering/update-configuration-core-locations.md deleted file mode 100644 index 1da7a2055..000000000 --- a/docs/en/quick-answers/administering/update-configuration-core-locations.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: default -title: How do I update my pipeline configuration core locations? -pagename: update-configuration-core-locations -lang: en ---- - -# How do I update my pipeline configuration core locations? - -## 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. - -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: - - $ ./tank localize - - ... - ... - - ---------------------------------------------------------------------- - 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. - - - Copying 59 apps, engines and frameworks... - 1/59: Copying tk-multi-workfiles v0.6.15... - 2/59: Copying tk-maya v0.4.7... - 3/59: Copying tk-nuke-breakdown v0.3.0... - 4/59: Copying tk-framework-widget v0.2.2... - 5/59: Copying tk-shell v0.4.1... - 6/59: Copying tk-multi-launchapp Undefined... - 7/59: Copying tk-motionbuilder v0.3.0... - 8/59: Copying tk-hiero-openinshotgun v0.1.0... - 9/59: Copying tk-multi-workfiles2 v0.7.9... - ... - ... - 59/59: Copying tk-framework-qtwidgets v2.0.1... - Localizing Core: /sgtk/software/shotgun/studio/install/core -> - /sgtk/software/shotgun/scarlet/install/core - Copying Core Configuration Files... - 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), no - other configurations or projects will be affected. - -{% 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. - - $ 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 - ... - ... - ---------------------------------------------------------------------- - 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' - - 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] - - 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. - - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - 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. - -{% include info title="Note" content="The shared studio core must be an equal or later version than the current pipeline configuration's core." %} - -## How do I share the Toolkit core between Projects? - -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. - -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 `""`. - - $ ./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. - - ---------------------------------------------------------------------- - Command: Share core - ---------------------------------------------------------------------- - 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 - locations: - - Linux: '/mnt/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. - 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. - - Setting up base structure... - Copying configuration files... - Copying core installation... - Backing up local core install... - 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 diff --git a/docs/en/quick-answers/administering/what-is-path-cache.md b/docs/en/quick-answers/administering/what-is-path-cache.md deleted file mode 100644 index 5bf165f18..000000000 --- a/docs/en/quick-answers/administering/what-is-path-cache.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: default -title: What is the Path Cache? What are Filesystem Locations? -pagename: what-is-path-cache -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 -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 -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 %}. - -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 %}. - -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 diff --git a/docs/en/quick-answers/administering/where-is-my-cache.md b/docs/en/quick-answers/administering/where-is-my-cache.md deleted file mode 100644 index f398fb0e2..000000000 --- a/docs/en/quick-answers/administering/where-is-my-cache.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: default -title: Where is my cache? -pagename: where-is-my-cache -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. - -The default cache root location is: - -**Mac OS X** - -`~/Library/Caches/Shotgun` - -**Windows** - -`%APPDATA%\Shotgun` - -**Linux** - -`~/.shotgun` - -## Path Cache - -The path cache is located at: - -`/pc/path_cache.db` - -## Bundle Cache - -**Distributed Configurations** - -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: -`~/Library/Caches/Shotgun/bundle_cache` - -Windows: -`%APPDATA%\Shotgun\bundle_cache` - -Linux: -`~/.shotgun/bundle_cache` - -{% include info title="Note" content="You can override these locations with the `SHOTGUN_BUNDLE_CACHE_PATH` environment variable, so specific implementations may vary." %} - -**Centralized Configurations** - -The bundle cache for centralized configs are located inside the centralized configuration. - -`...{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://developer.shotgridsoftware.com/a4c0a4f1)) 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 deleted file mode 100644 index 4cd0c978f..000000000 --- a/docs/en/quick-answers/developing.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Developing -pagename: quick-answers-developing -lang: en ---- - -Developing -=== - -A collection of quick answers based around development with Toolkit. - -- [How do I set environment variables before launching software?](./developing/setting-software-environment-variables.md) -- [How do I work with authentication and login credentials in custom scripts?](./developing/sgtk-script-authentication.md) -- [as_template_fields() is missing values that exist in my context](./developing/as-template-fields-missing-values.md) -- [How do I add a shelf button to launch a Toolkit app in Maya?](./developing/maya-shelf-app-launcher.md) -- [How can I load different Toolkit Core modules using the shotgunEvent daemon?](./developing/toolkit-core-event-daemon.md) -- [How do I update my Toolkit config programmatically with the API?](./developing/update-config-with-api.md) -- [How can I create publishes via the API?](./developing/create-publishes-via-api.md) diff --git a/docs/en/quick-answers/developing/as-template-fields-missing-values.md b/docs/en/quick-answers/developing/as-template-fields-missing-values.md deleted file mode 100644 index 5668ad12d..000000000 --- a/docs/en/quick-answers/developing/as-template-fields-missing-values.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -title: as_template_fields() Is Missing Values That Exist in My Context -pagename: as-template-fields-missing-values -lang: en ---- - -# as_template_fields() is missing values that exist in my context - -The [as_template_fields()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Context.as_template_fields) method uses the path cache so if the folders corresponding to the keys in your template haven't been created yet, then you won't get the fields returned. This can happen for a couple of reasons: - -- Your template definition and schema need to be in sync. If you've modified either this template definition or your schema in your pipeline configuration, but not both, the expected fields will not be returned. -- The folders have not been created for this particular context. If they haven't been created yet, there will be no matching records in the path cache and the expected fields will not be returned. diff --git a/docs/en/quick-answers/developing/create-publishes-via-api.md b/docs/en/quick-answers/developing/create-publishes-via-api.md deleted file mode 100644 index 501d3fa3e..000000000 --- a/docs/en/quick-answers/developing/create-publishes-via-api.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: default -title: How can I create publishes via the API? -pagename: create-publishes-via-api -lang: en ---- - -# How can I create publishes via the API? - -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/). -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/). - -## 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). - -Basically, this method will create a new PublishedFile entity in {% include product %} and is trying to make that easy by using toolkit concepts. Your code would need to do something along these lines: - -```python -# Get access to the Toolkit API -import sgtk - -# this is the file we want to publish. -file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk" - -# alternatively, for file sequences, we can just use -# a standard sequence token -# file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/renders/v034/foreground.%04d.exr" - -# The name for the publish should be the filename -# without any version number or extension -name = "foreground" - -# 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. -tk = sgtk.sgtk_from_path(file_to_publish) - -# use the file to extract the context. The context denotes the current work area in Toolkit -# and will control which entity and task the publish will be linked up to. 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 context. -ctx = tk.context_from_path(file_to_publish) - -# alternatively, if the file you are trying to publish is not in a location that is -# recognized by toolkit, you could create a context directly from a ShotGrid entity instead: -ctx = tk.context_from_entity("Shot", 123) -ctx = tk.context_from_entity("Task", 123) - -# Finally, run the publish command. -# 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, - 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). - -{% 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: - -```python -import sgtk -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/images/sign_in_window.png b/docs/en/quick-answers/developing/images/sign_in_window.png deleted file mode 100644 index b01bc705a..000000000 Binary files a/docs/en/quick-answers/developing/images/sign_in_window.png and /dev/null differ diff --git a/docs/en/quick-answers/developing/maya-shelf-app-launcher.md b/docs/en/quick-answers/developing/maya-shelf-app-launcher.md deleted file mode 100644 index 710d6478d..000000000 --- a/docs/en/quick-answers/developing/maya-shelf-app-launcher.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: How do I add a shelf button to launch a Toolkit app in Maya? -pagename: maya-shelf-app-launcher -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://developer.shotgridsoftware.com/a4c0a4f1/). - -{% 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: - -```python -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: - 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!") - - # 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) - - # now we have the command we need to call the registered callback - command['callback']() - -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) -``` - -Select this code and drag it on to your custom shelf. See [Maya docs for more info on how to work with custom shelf buttons](https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Maya/files/GUID-C693E884-F81A-4858-B5D6-3856EB8F394E-htm.html). - -You should be able to use this code example to launch any Toolkit apps that are enabled in Maya by modifying the `tk_app` and `call_func` variables at the top. diff --git a/docs/en/quick-answers/developing/setting-software-environment-variables.md b/docs/en/quick-answers/developing/setting-software-environment-variables.md deleted file mode 100644 index 000d2bf26..000000000 --- a/docs/en/quick-answers/developing/setting-software-environment-variables.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: How do I set environment variables before launching software? -pagename: setting-software-environment-variables -lang: en ---- - -# How do I set environment variables before launching software? - -{% include product %} Toolkit allows you to use hooks during the launch process to configure the environment and run custom code. - -When you launch software, for example Nuke or Maya, via {% include product %} Desktop or through the browser integration, the `tk-multi-launchapp` will be run. -This app is responsible for launching the software and ensuring the {% include product %} integrations start up as expected. There are two points during this process that are exposed via hooks to allow custom code to be run. - -## 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. -This provides a perfect opportunity to set any custom environment variables to be passed onto the launched software. - -Example: - -```python -import os -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. -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. -If you prefer to use custom code like this to set the environment, you can point the `Software` entity's [path fields](https://developer.shotgridsoftware.com/8085533c/#example-add-your-own-software) 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 diff --git a/docs/en/quick-answers/developing/sgtk-script-authentication.md b/docs/en/quick-answers/developing/sgtk-script-authentication.md deleted file mode 100644 index 5938c2ded..000000000 --- a/docs/en/quick-answers/developing/sgtk-script-authentication.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: How do I work with authentication and login credentials in custom scripts? -pagename: sgtk-script-authentication -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 -# Import the Toolkit API so we can access Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either programmatically or, in this -# case, interactively. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Optionally clear the current user if you've already logged in before. -authenticator.clear_default_user() - -# Get an authenticated user. In this scenario, since we've passed in the -# CoreDefaultsManager, the code will first look to see if there is a script_user inside -# shotgun.yml. If there isn't, the user will be prompted for their username, -# password and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating a Sgtk instance. -sgtk.set_authenticated_user(user) - -# -# Add your app code here... -# -# When you are done, you could optionally clear the current user. Doing so -# however, means that the next time the script is run, the user will be prompted -# for their credentials again. You should probably avoid doing this in -# order to provide a user experience that is as frictionless as possible. -authenticator.clear_default_user() -``` - -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 -authenticator = ShotgunAuthenticator() -``` -" %} - -## Non-user-facing scripts -If the script is not user-facing, like on a render farm or in the event handler, you can add this at the beginning, before creating a Sgtk/Tank instance: - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either interactively or, in this -# case, programmatically. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Toolkit", - api_key="4e48f...." -) - -# print "User is '%s'" % 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: - -```python -user = authenticator.create_script_user( - host=\"https://yoursite.shotgunstudio.com\", - api_script=\"Toolkit\", - 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 deleted file mode 100644 index b64ffaadc..000000000 --- a/docs/en/quick-answers/developing/toolkit-core-event-daemon.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default -title: How can I load different Toolkit Core modules using the ShotGrid Event Daemon? -pagename: toolkit-core-event-daemon -lang: en ---- - -# How can I load different Toolkit Core modules using the shotgunEvent daemon? - -**Huge thanks to [Benoit Leveau @ Milk VFX](https://github.com/benoit-leveau) for sharing this.** - -## The problem - -Toolkit's sgtk API is project-centric. In other words, you must import it specifically from the project you wish to use it on. -This means that if you use sgtk API operations for multiple projects in a single Python session, then you will run into a problem, as Python only allows a module with the same name to be imported once. - -If you're using the [{% include product %} event daemon](https://github.com/shotgunsoftware/shotgunEvents), you may want to perform Toolkit actions inside of a plugin for certain events. This can be tricky since Python only imports a module once. So if your Toolkit Core API for Project A is imported the first time the plugin is run, that is the version that will remain imported for the life of the daemon. This means if the next event dispatched to the plugin is for Project B, you may get an error from Toolkit if you try and instantiate a new Toolkit object for Project B using the core API from Project A. - -**Example of the problem using centralized configs:** - -- Event 123 is for Project A. -- The core API for Project A is located at `/mnt/toolkit/projectA/install/core/python`. -- Prepend `sys.path` with this directory. -- `import sgtk` imports it from this location. -- Instantiate a Toolkit instance with this core API and perform some action(s). -- Pop the core API directory off of `sys.path`. -- Event 234 is for Project B. -- The core API for Project B is located at `/mnt/toolkit/projectB/install/core/python`. -- Prepend `sys.path` with this directory. -- `import sgtk` won't do anything since Python sees it's already imported sgtk. -- Instantiate a Toolkit instance with this core API and perform some action(s). -- This will cause errors since the Toolkit core is for a different Project (A) than the Project (B) you're trying to perform actions on. - -## The solution - -The example below shows you how you can import the correct version of the sgtk core in a script or plugin when a different version 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. - -```python -""" -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. -""" - -import os -import sys - - -def import_sgtk(project): - """ - Import and return the sgtk module related to a Project. - This will check where the Core API is located on disk (in case it's localized or shared). - It shouldn't be used to get several instances of the sgtk module at different places. - This should be seen as a kind of 'reload(sgtk)' command. - - :param project: (str) project name on disk for to import the Toolkit Core API for. - """ - # 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) - del mod - - # check which location to use to import the core - python_subfolder = os.path.join("install", "core", "python") - is_core_localized = os.path.exists(os.path.join(shotgun_base, project, "install", "core", "_core_upgrader.py")) - if is_core_localized: - # the core API is located inside the configuration - core_python_path = os.path.join(shotgun_base, project, python_subfolder) - else: - # the core API can still be localized through the share_core/attach_to_core commands - # so look in the core_Linux.cfg file which will give us the proper location (modify this - # to match your primary platform) - core_cfg = os.path.join(shotgun_base, project, "install", "core", "core_Linux.cfg") - if os.path.exists(core_cfg): - core_python_path = os.path.join(open(core_cfg).read(), python_subfolder) - else: - # use the studio default one - # this assumes you have a shared studio core installed. - # See https://developer.shotgridsoftware.com/b12f2510/#how-do-i-share-the-toolkit-core-between-projects - core_python_path = os.path.join(shotgun_base, "studio", python_subfolder) - - # 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 - - # Remove the TANK_CURRENT_PC env variable so that it can be populated by the new import - if "TANK_CURRENT_PC" in os.environ: - del os.environ["TANK_CURRENT_PC"] - - # now import the sgtk module, it should be found at the 'core_python_path' location above - import sgtk - return sgtk -``` - -## 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 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: - -```python -# insert the path to the non project centric sgtk API -sys.path.insert(0,"/path/to/non/project/centric/sgtk") -import sgtk - -sa = sgtk.authentication.ShotgunAuthenticator() -# Use the authenticator to create a user object. -user = sa.create_script_user(api_script="SCRIPTNAME", - api_key="SCRIPTKEY", - host="https://SITENAME.shotgunstudio.com") - -sgtk.set_authenticated_user(user) - -mgr = sgtk.bootstrap.ToolkitManager(sg_user=user) -mgr.plugin_id = "basic." - -engine = mgr.bootstrap_engine("tk-shell", entity={"type": "Project", "id": 176}) -# import sgtk again for the newly bootstrapped project, (we don't need to handle setting sys paths) -import sgtk -# perform any required operations on Project 176 ... - -# Destroy the engine to allow us to bootstrap into another project/engine. -engine.destroy() - -# now repeat the process for the next project, although we don't need to do the initial non-project centric sgtk import this time. -# We can reuse the already import sgtk API to bootstrap the next -... -``` - -{% 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 diff --git a/docs/en/quick-answers/developing/update-config-with-api.md b/docs/en/quick-answers/developing/update-config-with-api.md deleted file mode 100644 index 09db2be9f..000000000 --- a/docs/en/quick-answers/developing/update-config-with-api.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: How do I update my Toolkit config programmatically with the API? -pagename: update-config-with-api -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 -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("updates") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="Caution" content="This will update all of the engines, apps, and frameworks in this pipeline configuration to the latest version without any further interaction or confirmation. Be sure you’re aware of this before proceeding." %} - -## Updating the core - -If you want to update your Project's core version from a script in order to run it non-interactively, you can do so using the following code: - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("core") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="Caution" content="This will update the Toolkit core to the latest version without any further interaction or confirmation. If the core you are running this from is a shared core, this will update the core version that is used by all projects sharing this core version! Be sure you're aware of this before proceeding." %} - -See also: - -- [Authentication and login credentials in custom scripts](https://developer.shotgridsoftware.com/724152ce/) diff --git a/docs/en/quick-answers/images/search_community.gif b/docs/en/quick-answers/images/search_community.gif deleted file mode 100644 index 4a6b86a1d..000000000 Binary files a/docs/en/quick-answers/images/search_community.gif and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting.md b/docs/en/quick-answers/troubleshooting.md deleted file mode 100644 index 72f92540c..000000000 --- a/docs/en/quick-answers/troubleshooting.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: Troubleshooting Guide -pagename: quick-answers-troubleshooting -lang: en ---- - -Troubleshooting Guide -=== - -A collection of quick answers aimed at troubleshooting issues. - -#### General troubleshooting help - -- [Performance troubleshooting](./troubleshooting/performance-troubleshooting.md) -- [How do I turn on debug logging?](./troubleshooting/turn-debug-logging-on.md) -- [Remote Debugging](https://community.shotgridsoftware.com/t/remote-debugging/3869) -- [Where are my log files?](./troubleshooting/where-are-my-log-files.md) -- [How do the Toolkit logs work and how do I know which one to look at?](https://community.shotgridsoftware.com/t/how-do-the-toolkit-logs-work-and-how-do-i-know-which-one-to-look-at/6721) -- [Where is my config?](https://community.shotgridsoftware.com/t/ive-asked-a-client-for-their-config-but-they-dont-know-where-it-is/6729) -- [How to debug Toolkit Apps not loading, showing up, missing in the Menus, {% include product %} Desktop or the AMIs](https://community.shotgridsoftware.com/t/how-to-debug-toolkit-apps-not-loading-showing-up-missing-in-the-menus-shotgun-desktop-or-the-amis/6739) -- [Why is my context is missing the Task/Step when it exists as part of the filename?](./troubleshooting/context-missing-task-step.md) -- [Why and how do I unregister folders?](https://community.shotgridsoftware.com/t/toolkit-episode-sequence-shot-task/4604) -- [Can I delete FilesystemLocations on my site instead of unregistering folders?](https://community.shotgridsoftware.com/t/unregistering-folders-in-tank-vs-moving-file-system-locations-to-trash/536) -- [How can I unregister folders when using a distributed config?](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config) - -#### Error message guidance -- [`ASCII` codec can’t decode byte 0x97 in position 10: ordinal not in range](./troubleshooting/ascii-error-message.md) -- [Configurations does not point to a valid bundle on disk!](./troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md) -- [Cannot find procedure "MTsetToggleMenuItem"](./troubleshooting/mtsettogglemenuitem-error-message.md) -- [Could not resolve row id for path!](./troubleshooting/row-id-error-message.md) -- [data_handler_cache error message: ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog!](./troubleshooting/data-handler-cache-error-message.md) -- [Database concurrency problems: The path `` is already associated with {% include product %} entity ``](./troubleshooting/path-associated-error-message.md) -- [ERROR: App store does not contain an item named my-app](./troubleshooting/myapp-appstore-error-message.md) -- [[ERROR] Attempted to communicate without completing encryption handshake.](./troubleshooting/encryption-handshake-error-message.md) -- [error Invalid LUT selected : Gamma2.2](./troubleshooting/invalid-lut-error-message.md) -- [[ERROR] [PROXY] Error calling __commands::unreal_engine](./troubleshooting/unreal-proxy-error-message.md) -- [[ERROR publish_creation] ](./troubleshooting/publish-certificate-fail-error-message.md) -- [Error: {% include product %} tk-maya: An exception was raised from Toolkit](./troubleshooting/tk-maya-exception-error-message.md) -- [ERROR 18:13:28.365:Hiero(34236): Error! Task type](./troubleshooting/hiero-task-type-error-message.md) -- [Exception: Review submission failed. Could not render and submit the review associated sequence.](./troubleshooting/review-submission-error-message.md) -- [Errors due to Windows paths too long (>256 characters)](./troubleshooting/paths-long-error-message.md) -- [Failed to change work area - Error during execution of MEL script](./troubleshooting/error-during-execution-mel-script.md) -- [Failed to create folders: Folder creation aborded](./troubleshooting/folder-creation-aborded.md) -- [The Frame Server has encountered an error.](./troubleshooting/frame-server-error.md) -- [ModuleNotFoundError](./troubleshooting/modulenotfounderror-error.md) -- [In Maya, when I print context.task, it is empty “None”](./troubleshooting/maya-context-task-empty-none-error.md) -- [Fixing the SSL: CERTIFICATE_VERIFY_FAILED issues with the Python API](./troubleshooting/fix-ssl-certificate-verify-failed.md) -- [Getting CERTIFICATE_VERIFY_FAILED when using {% include product %} Desktop on a local {% include product %} site](./troubleshooting/certificate-fail-local-error-message.md) -- [SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol](./troubleshooting/eof-occurred-violation-protocol-tls.md) -- [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate](./troubleshooting/unable-to-get-local-issuer-certificate-error.md) -- [TankInitError: You are loading the Toolkit platform from the pipeline configuration located in](./troubleshooting/tankinit-error-pipeline-config-location.md) -- [TankError: Cannot resolve template data for context](./troubleshooting/tankerror-cannot-resolve-template-data-error.md) -- [TankError: Tried to resolve a path from the template](./troubleshooting/tankerror-tried-to-resolve-a-path.md) -- [Tk-desktop console silently ignoring errors](./troubleshooting/tk-desktop-console-silently-ignoring-errors.md) -- [SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)](./troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md) -- [TankError: Could not create folders on disk. Error reported: Critical! Could not update {% include product %} with folder data.](./troubleshooting/could-not-update-with-folder-data.md) -- [[WARNING] Storage root primary could not be mapped to a SG local storage](./troubleshooting/storage-root-primary-error-message.md) - - -#### Software integrations -- [Recommended way to share/update pipeline configurations between projects?](https://community.shotgridsoftware.com/t/recommended-way-to-share-update-pipeline-configurations-between-projects/5609) -- [How can I distributing my pipeline configuration for users working from home](https://community.shotgridsoftware.com/t/distributing-your-pipeline-configuration-to-users-working-from-home/7910) -- [How can I turn a centralized config into a distributed config for some users?](https://community.shotgridsoftware.com/t/turning-a-centralized-config-into-a-distributed-config-for-some-users/7744) -- [How to compile Qt ui and resource files on Windows](https://community.shotgridsoftware.com/t/how-to-compile-qt-ui-and-resource-files-on-windows/7099) -- [How can I add Toolkit context menu items in the {% include product %} UI?](https://community.shotgridsoftware.com/t/toolkit-context-menu-items/8426) -- [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) -- [Troubleshooting Photoshop integration when two extensions are installed](./troubleshooting/two-photoshop-shotgun-extensions.md) -- [Why does 3ds Max crashes on startup when using {% include product %} Toolkit?](./troubleshooting/3dsmax-crashes-on-startup.md) -- [How do I set a default software version?](https://community.shotgridsoftware.com/t/setting-a-default-software-version/1116) -- [Why is the loader app not showing my Alembic publishes?](https://community.shotgridsoftware.com/t/why-is-the-loader-app-not-showing-my-alembic-publishes/906) -- [When Toolkit bootstraps, what order is used to determine the correct PipelineConfiguration entity?](https://community.shotgridsoftware.com/t/when-toolkit-bootstraps-what-order-is-used-to-determine-the-correct-pipelineconfiguration-entity/7400) -- [Why do I get two different SG panels in Photoshop?](https://community.shotgridsoftware.com/t/why-do-i-get-two-different-sg-panels-in-photoshop/6976) -- [Photoshop integration panel is stuck loading! "Some thing went wrong"](https://community.shotgridsoftware.com/t/photoshop-integration-panel-is-stuck-loading-some-thing-went-wrong/6977) -- [Desktop is missing software entities, how can I fix this?](https://community.shotgridsoftware.com/t/shotgun-deskop-missing-software-entities-help/858) -- [Tank.template_from_path() can't return multiple templates?](https://community.shotgridsoftware.com/t/tank-template-from-path-cant-return-multiple-templates/614) -- [How can I procedurally populate a series of shots (an entire sequence) with workfiles for artists?](https://community.shotgridsoftware.com/t/create-first-maya-workfile/3029) -- [How can I take control of the userSetup.py when users launch tk-maya?](https://community.shotgridsoftware.com/t/maya-usersetup-py/3993) -- [Tank Command for Dev config?](https://community.shotgridsoftware.com/t/tank-command-for-dev-config/3373) -- [I want to take action only if an artist is opening an existing publish, not if they’re opening an existing workfile. How can I do this with a hook?](https://community.shotgridsoftware.com/t/open-from-publish-in-tk-multi-workfiles2-scene-operation-hooks/352) -- [How do I convert white spaces in entity names to underscores and not hyphens during folder creation?](https://community.shotgridsoftware.com/t/how-do-i-convert-white-spaces-in-entity-names-to-underscores-and-not-hyphens-during-folder-creation/48) - -#### 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) - -#### Can't find your answer? -For further troublesooting, you can [search our community](https://community.shotgridsoftware.com) for answers! - -![Community](images/search_community.gif) diff --git a/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md deleted file mode 100644 index 3b8a9e823..000000000 --- a/docs/en/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: Why does 3ds Max crash on startup when using ShotGrid Toolkit? -pagename: 3dsmax-crashes-on-startup -lang: en ---- - -# Why does 3ds Max crash on startup when using {% include product %} Toolkit? - -When launching 3ds Max from {% include product %} Desktop or the {% include product %} website, it is possible that 3ds Max will freeze, leaving you with a frozen white dialog, or the following message will appear: - - Microsoft Visual C++ Runtime Library (Not Responding) - Runtime Error! - Program: C:\Program Files\Autodesk\3ds Max 2016\3dsmax.exe - R6034 - 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. - -## Solution - -First, go to your pipeline configuration’s `config/hooks` folder and create the file `before_app_launch.py`. In it, paste the following: - -```python - -""" -Before App Launch Hook -This hook is executed prior to application launch and is useful if you need -to set environment variables or run scripts as part of the app initialization. -""" -import os -import tank - -class BeforeAppLaunch(tank.get_hook_baseclass()): - """ - Hook to set up the system prior to app launch. - """ - def execute(self, **kwargs): - """ - The execute functon of the hook will be called to start the required application - """ - env_path = os.environ["PATH"] - paths = env_path.split(os.path.pathsep) - # Remove folders which have msvcr90.dll from the PATH - paths = [path for path in paths if "msvcr90.dll" not in map( - str.lower, os.listdir(path)) - ] - env_path = os.path.pathsep.join(paths) - os.environ["PATH"] = env_path -``` - -Now save the file. - -Then, open `config/env/includes/app_launchers.yml` in your pipeline configuration and find the `launch_3dsmax` entry. You should replace `hook_before_app_launch: default` to `hook_before_app_launch: '{config}/before_app_launch.py'`. - -You should now be able to launch 3ds Max correctly from {% include product %} and {% include product %} Desktop. If you still have any issues, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. diff --git a/docs/en/quick-answers/troubleshooting/ascii-error-message.md b/docs/en/quick-answers/troubleshooting/ascii-error-message.md deleted file mode 100644 index 05a23b623..000000000 --- a/docs/en/quick-answers/troubleshooting/ascii-error-message.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ascii codec can’t decode byte 0x97 in position 10 -pagename: ascii-error-message -lang: en ---- - -# ASCII codec can’t decode byte 0x97 in position 10: ordinal not in range - -## Related error messages: - -While cloning a configuration -- TankError: Could not create file system structure: `ascii`! codec can’t decode byte 0x97 in position 10: ordinal not in range(128) - -While setting up a project configuration using another project -- " ‘ascii’ codec can’t decode byte 0x97 in position 10: ordinal not in range(128)" - -## How to fix: - -Typically we see this error when there is a Unicode/special character somewhere in the “config” folder. We recomment taking a look to see if you can spot the special character. - -## Example of what's causing this error: - -In this case, the error stemmed from Windows adding a postfix `–` at end of file name. After removing all of those files, it started to work. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/ascii-problem/7688). - diff --git a/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md deleted file mode 100644 index fa25a80b2..000000000 --- a/docs/en/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: default -title: ShotGrid Desktop / browser integration fails to launch on Linux -pagename: browser-integration-fails-linux -lang: en ---- - -# {% include product %} Desktop / browser integration fails to launch on Linux - -When running the {% include product %} Desktop on Linux for the first time, you may experience one of these error messages. If so, please follow the steps below for your specific error to see if that resolves things. -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) -- [Incompatible Qt versions](#incompatible-qt-versions) - -## OPENSSL_1.0.1_EC or HTTPSConnection related issues - -**Errors** - -``` -importing '/opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so': - /opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so: symbol ECDSA_OpenSSL, version OPENSSL_1.0.1_EC not defined in file libcrypto.so.10 with link time reference -AttributeError: 'module' object has no attribute 'HTTPSConnection' -``` - -**Solution** - -You need to install OpenSSL. To do so, run the following command as an administrator: - -``` -$ yum install openssl -``` - -## libffi.so.5 related issues - -**Error** - -``` -Browser Integration failed to start. It will not be available if you continue. -libffi.so.5: cannot open shared object file: No such file or directory -``` - -**Solution** - -You need to install libffi. To do so, run the following command as an administrator: - -``` -yum install libffi -``` - -If you've installed libffi and it still doesn't work, try creating the following symlink and then re-launching the {% include product %} Desktop: - -``` -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. - -## Certificate validation failed related issues - -**Possible errors** - -``` -Browser Integration failed to start. It will not be available if you continue. -Error: There was a problem validating if the certificate was installed. -certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database. -``` - -**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. - -If you don't have Chrome, open a terminal and run the following command: - -``` -ls -al $HOME/.pki/nssdb -``` - -If that search does not come up empty, please contact support and attach the contents of the following log file to your ticket: - -``` -~/.shotgun/logs/tk-desktop.log -``` - -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. - -## Incompatible Qt versions - -**Possible errors** - -Cannot mix incompatible Qt library (version `0x40805`) with this library (version `0x40807`) - -**Solution** - -Often this comes up because there is an override happening that ends up loading incompatible Qt libraries. -You can try modifying your environment with this command to keep that from happening: - -``` -unset QT_PLUGIN_PATH -``` 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 deleted file mode 100644 index 157fece95..000000000 --- a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: default -title: I can't use local file linking and launch Toolkit applications from Chrome -pagename: cant-use-file-linking-toolkit-app-chrome -lang: en ---- - -# I can't use local file linking and launch Toolkit applications from Chrome - -## Overview - -Sometimes in {% include product %} the action menu will not display the list of Toolkit applications available or will error when using local file linking, even with {% include product %} Desktop running. This is a guide to troubleshooting {% include product %} Desktop's browser integration in Chrome and will hopefully help you get things working. We have a separate guide for [Firefox](./cant-use-file-linking-toolkit-app-firefox.md). - -- [Diagnosing the issue](#diagnosing-the-issue) -- [How to quickly fix certificate issues](#how-to-quickly-fix-certificate-issues) -- [Fixing ERR_CERT_COMMON_NAME_INVALID or ERR_SSL_SERVER_CERT_BAD_FORMAT on all platforms](#fixing-neterr_cert_common_name_invalid-and-err_ssl_server_cert_bad_format-on-all-platforms) -- [Fixing ERR_CERT_AUTHORITY_INVALID on Windows](#fixing-neterr_cert_authority_invalid-on-windows) - -## Diagnosing the issue - -### Is {% include product %} Desktop running? - -Yes, we know. You probably already checked. We had to ask. :) - -### Have you restarted Chrome since {% include product %} Desktop started? - -If you have launched Chrome before allowing {% include product %} Desktop to register the certificate (this happens only the first time you launch {% include product %} Desktop and will not be an issue afterwards), Chrome will use an out of date copy of the certificates and will refuse to connect to {% include product %} Desktop. Closing all tabs will not necessarily close Chrome, so we recommend that you type [chrome://restart](chrome://restart/) in the address bar and hit enter. This will ensure that all Chrome related processes will be terminated and Chrome then restarted. - -### Are you using firewall software? - -Ensure that no firewall software is preventing connections to localhost or on port 9000. - -### Is Chrome rejecting the certificate? - -You can verify that Chrome accepts the certificate by browsing to https://localhost:9000. This is the address the {% include product %} website tries to access in order to do local file linking and launch Toolkit applications. You should normally be greeted by this message: - -![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: - -![Your connection is not private message](images/your-connection-is-not-private-chrome.png) - -![Can't provide a secure connection message](images/cant-provide-sceure-connection-chrome.png) - -## 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. - -{% 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." %} - -{% include info title="Note" content="This step fix is not applicable to the **ERR_SSL_SERVER_CERT_BAD_FORMAT** error and you will need to regenerate the certificates, as outlined below." %} - -## Fixing NET::ERR_CERT_COMMON_NAME_INVALID and ERR_SSL_SERVER_CERT_BAD_FORMAT on all platforms - -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.) - -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. - -Once {% include product %} Desktop is back up and running, we recommend you restart Chrome by typing [chrome://restart](chrome://restart/) in the address bar to ensure that Chrome is completely shut down and that its certificate cache is cleared. - -If your computer is not connected to the Internet and can’t download the updates, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -## Fixing NET::ERR_CERT_AUTHORITY_INVALID on Windows - -Under certain circumstances, Windows will report that a certificate has been imported successfully, but will not make it available to applications requiring it. This can be validated by visiting the certificate dialog on Windows. To access it, hit the Windows key and type **Internet Options**. On the **Internet Properties** dialog, switch to the **Content** tab and then click on the **Certificates** button. Finally, click on the **Trusted Root Certification Authorities** and look for **localhost**. - -![Search Windows for internet options](images/windows-search-internet-options.png) - -![Content tab of the internet properties](images/windows-internet-properties.png) - -![Windows Certificates](images/windows-certificates.png) - -If the entry is missing, there is probably a group policy issue on your Windows domain or local computer. If it is present, we recommend you contact our [support team](https://knowledge.autodesk.com/contact-support). - -At this point, we recommend that you communicate with the person who administers the Windows computers for your organization and ask that person about any group policies that could have been set that instructs Windows not to trust self-signed certificates. - -## Investigating Group Policy Issues - -If your computer is on a domain, the administrator can try out the steps detailed in [this StackExchange post](https://superuser.com/questions/145394/windows-7-will-not-install-a-root-certificate/642812#642812). - -If your computer is not on a domain, it is possible the computer has still been locked down by the administrator. For the following steps, you will need a Windows administrator account. - -Hit the Windows keys, type **mmc** and hit enter. This will launch the **Microsoft Management Console**. In the application, click on the **File menu** and select **Add\Remove Snap-In**. This will show the **Add or Remove Snap-ins** dialog. On the left-hand side, search for **Group Policy Object Editor** and click **Add >**. A new dialog will appear, which you can dismiss by clicking **Finish**. Finally, click **OK** on the **Add or Remove Snap-ins** dialog. - -![Microsoft Managment Console Add Remove Snap-ins](images/microsoft-management-console.png) - -Finally, on the left-hand side of the main dialog, navigate to **Local Computer Policy/Computer Configuration/Windows Settings/Security Settings/Public Key Policies**. Once selected, double click **Certificate Path Validation Settings** in the central pane. - -![Certificate path validation settings](images/certificate-path-valiation-settings.png) - -On the next dialog, make sure that **Define these policy settings** is unchecked. If it is checked, make sure that **Allow user trusted root CAs to be used to validate certificates (recommended)** is checked. Once you're done, click **OK** and the settings will be saved. - -At this point, you need to close all Chrome windows and restart Chrome. We recommend doing so with [chrome://restart](chrome://restart) as we did above. This is required for the changes that have been made to take effect. Browsing to the certificates list should now show the **localhost** certificate. - -If you still encounter issues using the browser integration after these changes, or if the settings were correct in the first place, please contact our [support team](https://knowledge.autodesk.com/contact-support). - -## Troubleshooting on other OSes - -If you have issues with the {% include product %} Desktop integration on other OSes, please contact our [support team](https://knowledge.autodesk.com/contact-support) so that we can assist you and update this article. \ No newline at end of file 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 deleted file mode 100644 index c96fa322a..000000000 --- a/docs/en/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: I can't use local file linking and launch Toolkit applications from Firefox -pagename: cant-use-file-linking-toolkit-app-firefox -lang: en ---- - -# I can't use local file linking and launch Toolkit applications from Firefox - -## Overview - -Sometimes in {% include product %} the action menu will not display the list of Toolkit applications available or will error when using local file linking, even with {% include product %} Desktop running. -This is a guide to troubleshooting {% include product %} Desktop's browser integration in Firefox and will hopefully help you get things working. We have a separate guide for [Chrome](./cant-use-file-linking-toolkit-app-chrome.md). - -## Diagnosing the issue - -### Is {% include product %} Desktop running? - -Yes, we know. You probably already checked. We had to ask. :) - -### Are you using firewall software? - -Ensure that no firewall software is preventing connections to **localhost** or on port **9000**. - -### Is Firefox rejecting the certificate? - -You can verify that Firefox accepts the certificate by browsing to https://localhost:9000, which is the address the {% include product %} website tries to access in order to do local file linking and launch Toolkit applications. You should normally be greeted by this message: - -![Autobahn Python message](images/autobahn-python.png) - -On the other hand, if you are greeted by one of those two messages, it means there was a problem with the certificate registration process: - -![Connection is not secure message](images/connection-is-not-secure.png) - -![Secure connection failed message](images/connection-failed.png) - -## How to fix "Your connection is not secure" - -You need to add an exception to the Firefox browser so that the certificate is accepted. If you just visited **https://localhost:9000**, the easiest way to add the exception is by clicking on **Advanced**, then click the **Add Exception** button. A dialog will appear. - -![Add exception to Firefox](images/add-exception-firefox.png) - -Click **Get Certificate** and then **Confirm Security Exception**. You can ignore the message about the certificate not being trusted. This is normal as the certificate was generated by {% include product %} Desktop and not by a certification authority. - -You should now be able to access local file linking and launch Toolkit applications from your {% include product %} site. If you are still experiencing issues after adding the exception, please visit our [support site](https://knowledge.autodesk.com/contact-support) for help. - -## How to fix "Secure connection failed" - -You need to click on the **Open Menu** button and pick **Preferences**. Then pick **Advanced** on the left hand side, **Certificates** and finally **View Certificates**. - -![Firefox advanced settings](images/firefox-advanced-settings.png) - -![Firefox view certificates](images/firefox-view-certificates.png) - -In the **Servers** section, click on any item and start typing `localhost` or simply scroll until you find an entry named **localhost:9000**. Delete it. Then, go to the **Authorities** tab and type `localhost` again. You can once again also scroll until you reach the **Autodesk** section with a **localhost** entry underneath. You can remove the **localhost** entry. Once this is done, click **OK** and restart Firefox. Once Firefox has been restarted, browse to **https://localhost:9000**. You should now be greeted by this message: - -![Connection is not secure message](images/connection-is-not-secure.png) - -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 diff --git a/docs/en/quick-answers/troubleshooting/certificate-fail-local-error-message.md b/docs/en/quick-answers/troubleshooting/certificate-fail-local-error-message.md deleted file mode 100644 index f1b75bf91..000000000 --- a/docs/en/quick-answers/troubleshooting/certificate-fail-local-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: Getting CERTIFICATE_VERIFY_FAILED when using {% include product %} Desktop on a local {% include product %} site -pagename: certificate-fail-local-error-message -lang: en ---- - -# Getting CERTIFICATE_VERIFY_FAILED when using {% include product %} Desktop on a local {% include product %} site - -## Use cases: - -When using a local install of {% include product %}, this error can arise in two scenarios: - -- when logging in {% include product %} Desktop -- when downloading media from the Toolkit AppStore - -## How to fix: - -To solve this issue, you need to provide a file to the {% include product %} API that contains the list of all valid CAs, including your own. We usually recommend that people download a fresh copy of [this file](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem) from Python's `certifi` package as a starting point and then add their own CA at the end of the file. Then, save that file in a location all your users can access. Finally, on each computer, set the `SHOTGUN_API_CACERTS` environment variable to the full path to that file, for example `/path/to/my/ca/file.pem`. - -Doing this should solve any `CERTIFICATE_VERIFY_FAILED` errors you are getting with your local site. Note that if you are able to connect to your {% include product %} site, but are still unable to download updates from the Toolkit AppStore, that's likely because you are missing the Amazon CAs in your `.pem` file. This usually happens if you've started from an empty file and only added your custom CAs instead of starting from something like the file we've linked to above. - -Note that this information *only* applies to local installs. If you have a hosted site and are experiencing this error, if it's happening on Windows, take a look at [this forum post](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860). If it's happening on a different OS, take a look at [this document](https://developer.shotgridsoftware.com/c593f0aa/). - -## Example of what's causing this error: - -This problem usually arises because you’ve configured your local site to use HTTPS, but you haven’t configured Toolkit so that the certificate authority (known as CA from here on out) that you’ve used to sign your local site’s certificate is recognized. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/getting-certificate-verify-failed-when-using-shotgun-desktop-on-a-local-shotgun-site/10466). - diff --git a/docs/en/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md b/docs/en/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md deleted file mode 100644 index bbe81bef1..000000000 --- a/docs/en/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Configurations does not point to a valid bundle on disk! -pagename: configurations-does-not-point-to-valid-bundle-on-disk -lang: en ---- - -# Configurations does not point to a valid bundle on disk! - -## Use Case - -When installing {% include product %} Desktop for the first time, this error can be presented after a file path after opening a project. - -## How to fix - -The Pipeline Configuration entity for the project is pointing to `...\{% include product %}\Configurations` path to the config on Windows. This is likely not the correct path, so as a first step, ensure that path exists or correct it. - -It's also possible that you may be trying to access from a centralized set-up where you do not have access to that path location. In this case, switching to a distributed set-up will help. - - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/context-missing-task-step.md b/docs/en/quick-answers/troubleshooting/context-missing-task-step.md deleted file mode 100644 index d794cf64d..000000000 --- a/docs/en/quick-answers/troubleshooting/context-missing-task-step.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: Why is my context missing the Task/Step when it exists as part of the filename? -pagename: context-missing-task-step -lang: en ---- - -# Why is my context missing the Task/Step when it exists as part of the filename? - -When you create folders via Toolkit it [registers the path](../administering/what-is-path-cache.md) against the entity so that a lookup may be performed. This means that given a path, you can determine the correct context. -Toolkit will only create registries for folders generated from the schema, and so it doesn't consider things like file names or folders that were defined solely in the `templates.yml` file. -If you don't have a `Task` folder in your schema then you can get in a situation where Toolkit needs to know the task of the file but is unable to work out the task from the path alone. - -**Example** - -Take the default schema structure below; `Asset` and `Step` folders will be registered during the folder creation process: - -![Default Asset schema](./images/asset-schema.png) - -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** - -Having a `Step` folder and no `Task` folder in your schema is fine for most workflows. Normally you would use the Workfiles app to open your scene file by selecting the task you want to work on and then selecting the file. The task you select in the UI is then used to drive the context rather than trying to figure it out from the path of the opened file. - -However, there are situations where it may be important to be able to get the context from a path such as: - -- 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 diff --git a/docs/en/quick-answers/troubleshooting/could-not-update-with-folder-data.md b/docs/en/quick-answers/troubleshooting/could-not-update-with-folder-data.md deleted file mode 100644 index 13e2cc0bf..000000000 --- a/docs/en/quick-answers/troubleshooting/could-not-update-with-folder-data.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Critical! Could not update ShotGrid with folder data. -pagename: could-not-update-with-folder-data -lang: en ---- - -# TankError: Could not create folders on disk. Error reported: Critical! Could not update {% include product %} with folder data. - -## Use Case - -We are using centralized configs and are adding Linux support for existing projects, but there are issues with the filsystem configuration. - -We already - -- added the corresponding roots to roots.yml -- added a linux path in the pipeline configuration, install_location.yml, etc. -- added linux paths for Software entities - -Now {% include product %} desktop starts successfully, but when trying to launch a program we get: - -``` -TankError: Could not create folders on disk. Error reported: Critical! Could not update Shotgun with folder data. Please contact support. Error details: API batch() request with index 0 failed. All requests rolled back. -API create() CRUD ERROR #6: Create failed for [Attachment]: Path /mnt/cache/btltest3 doesn't match any defined Local Storage. -``` - -Likewise, when trying to run tank folders and other commands, the same error is printed. - -I believe we have added linux paths in all places necessary. Is this a matter of synchronizing the database? - -`tank synchronize_folders` prints among other things. - -- The path is not associated with any {% include product %} object. - -## How to fix - -Under Site Preferences > File Management, add your Linux path to your Local storage in {% include product %}. - - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/data-handler-cache-error-message.md b/docs/en/quick-answers/troubleshooting/data-handler-cache-error-message.md deleted file mode 100644 index fa53293b5..000000000 --- a/docs/en/quick-answers/troubleshooting/data-handler-cache-error-message.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog! -pagename: data-handler-cache-error-message -lang: en ---- - -# data_handler_cache error message: ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog! - -## Use case: - -It happens when launching an app like Nuke, `tk-multi-workfiles2` File Open dialog fails with an error at the end of the stack trace about the `get_children` method of `data_handler_cache` failing to iterate because it’s been passed a string value when it’s expected a dict. - -The full stack looks something like: - -``` -2020-12-07 09:42:03,571 [7192 ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2] Failed to create File Open dialog! -Traceback (most recent call last): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\work_files.py", line 115, in _show_file_dlg - self._dialog_launcher(dlg_name, app, form) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1822, in show_dialog - dialog, widget = self._create_dialog_with_widget(title, bundle, widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1684, in _create_dialog_with_widget - widget = self._create_widget(widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1658, in _create_widget - widget = derived_widget_class(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_open_form.py", line 46, in __init__ - FileFormBase.__init__(self, parent) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 64, in __init__ - self._my_tasks_model = self._build_my_tasks_model() - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 134, in _build_my_tasks_model - bg_task_manager=self._bg_task_manager) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\my_tasks\my_tasks_model.py", line 57, in __init__ - bg_task_manager=bg_task_manager - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\entity_models\extended_model.py", line 74, in __init__ - **kwargs - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_entity_model.py", line 70, in __init__ - self._load_data(entity_type, filters, hierarchy, fields) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_model.py", line 367, in _load_data - self._create_item - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler.py", line 266, in generate_child_nodes - for data_item in self._cache.get_children(unique_id): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler_cache.py", line 129, in get_children - for item in cache_node[self.CACHE_CHILDREN].itervalues(): -AttributeError: 'str' object has no attribute 'itervalues' -``` - -## What’s causing the error? - -Something has gone wrong in our caching, you should be able to fix it by removing the cache (see next section). - -## How to fix - -[Follow these instructions](https://developer.shotgridsoftware.com/7c9867c0/) on where to find the cache and remove it. You can wipe the whole thing, though that will cause a delay when you restart Desktop next time while it downloads everything. It's recommended that you wipe the folder named after your {% include product %} site that sits inside the root cache folder, there will still be a bit of rebuilding but not as much. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/data-handler-cache-error/10955). - diff --git a/docs/en/quick-answers/troubleshooting/encryption-handshake-error-message.md b/docs/en/quick-answers/troubleshooting/encryption-handshake-error-message.md deleted file mode 100644 index d186282a4..000000000 --- a/docs/en/quick-answers/troubleshooting/encryption-handshake-error-message.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Attempted to communicate without completing encryption handshake -pagename: encryption-handshake-error-message -lang: en ---- - -# `[ERROR]` Attempted to communicate without completing encryption handshake - -## Use case: - -Having trouble getting the browser integration of {% include product %} Desktop up and running. - -Launching Shotgun Desktop tells me the webserver is running: - -``` -[ INFO] WebSocketServerFactory (TLS) starting on 9000 -[ INFO] Starting factory -``` - -…followed by loads of debug records which do not show any errors. - -When logging into the {% include product %} site, I get: - -``` -[ INFO] Connection accepted. -``` - -Right-clicking on a project tells me that {% include product %} is retrieving actions and gives me the following log output: - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -Opening a project in {% include product %} produces the following log output: - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ WARNING] dropping connection to peer tcp4:127.0.0.1:52451 with abort=True: WebSocket closing handshake timeout (peer did not finish the opening handshake in time) -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -## How to fix: - -Add `shotgunlocalhost.com` to the proxy bypass list. - -## Example of what's causing this error: - -Proxy configuration. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/shotgun-desktop-browser-integration/3574). - diff --git a/docs/en/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md b/docs/en/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md deleted file mode 100644 index d6a82bdfd..000000000 --- a/docs/en/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: default -title: EOF occurred in violation of protocol -pagename: eof-occurred-violation-protocol-tls -lang: en ---- - -# SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol - -## Use Case - -When opening Nuke 10.5 from Desktop, the following SSL Error is presented: - -``` -[13:57.14] ERROR: Shotgun Error: [ERROR tk-nuke] App /media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2 failed to initialize. It will not be loaded. -Traceback (most recent call last): -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/engine.py”, line 2792, in __load_apps -app.init_app() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/app.py”, line 26, in init_app -self._tk_multi_workfiles = self.import_module(“tk_multi_workfiles”) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/bundle.py”, line 462, in import_module -self.__module_uid, None, python_folder, ("", “”, imp.PKG_DIRECTORY) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/init.py”, line 11, in -from . import tk_multi_workfiles -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/init.py”, line 14, in -from .file_open_form import FileOpenForm -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/file_open_form.py”, line 19, in -from .actions.file_action_factory import FileActionFactory -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/file_action_factory.py”, line 19, in -from .interactive_open_action import InteractiveOpenAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/interactive_open_action.py”, line 17, in -from .open_file_action import OpenFileAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/open_file_action.py”, line 22, in -from …work_area import WorkArea -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/work_area.py”, line 19, in -from .user_cache import g_user_cache -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 203, in -g_user_cache = UserCache() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 32, in init -self._current_user = sgtk.util.get_current_user(self._app.sgtk) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/util/login.py”, line 125, in get_current_user -“HumanUser”, filters=[[“login”, “is”, current_login]], fields=fields -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 882, in find_one -additional_filter_presets=additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1003, in find -additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1072, in _construct_read_parameters -params[“paging”] = {“entities_per_page”: self.config.records_per_page, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 471, in records_per_page -self._records_per_page = self._sg.server_info.get(“api_max_entities_per_page”) or 500 -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 763, in server_info -return self.server_caps.server_info -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 778, in server_caps -self._server_caps = ServerCapabilities(self.config.server, self.info()) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 833, in info -return self._call_rpc(“info”, None, include_auth_params=False) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/authentication/shotgun_wrapper.py”, line 63, in _call_rpc -return super(ShotgunWrapper, self)._call_rpc(*args, **kwargs) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3302, in _call_rpc -encoded_payload, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3442, in _make_call -return self._http_request(verb, path, body, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3496, in _http_request -resp, content = conn.request(url, method=verb, body=body, headers=headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 2192, in request -cachekey, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1845, in _request -conn, request_uri, method, body, headers -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1750, in _conn_request -conn.connect() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1399, in connect -self.key_password, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 109, in _ssl_wrap_socket -ssl_version=ssl_version, -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 381, in wrap_socket -ciphers=ciphers) -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 143, in init -self.do_handshake() -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 305, in do_handshake -self._sslobj.do_handshake() -SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol -``` - -This does not happen with Nuke version 11 or 12. - -## How to fix - -The issue you are seeing is because Nuke 10.x is not TLS 1.2 compliant. Software will need to be TLS compliant. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/sslerror-in-nuke-10-5/9299) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/error-during-execution-mel-script.md b/docs/en/quick-answers/troubleshooting/error-during-execution-mel-script.md deleted file mode 100644 index c5b71f613..000000000 --- a/docs/en/quick-answers/troubleshooting/error-during-execution-mel-script.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -title: Failed to change work area - Error during execution of MEL script -pagename: error-during-execution-mel-script -lang: en ---- - -# Failed to change work area - Error during execution of MEL script - -## Use Case - -When creating a new special pipeline configuration for freelancers who don’t have access to the network, we created a new root name and pointed it to another path. The production pipeline configuration has the roots paths pointed to our file server. - -But when creating a new file with `tk-multi-workfiles` on Maya, the following error occurs: - -``` -Failed to change work area - Error during execution of MEL script: file: C:/Program files/Autodesk/Maya2019/scripts/others/setProject.mel line 332: New project location C:\VetorZero\work\Shotgun-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya is not a valid directory, project not created. -Calling Procedure: setProject, in file “C:\Program Files\Shotgun\c” set project(“C:\Vetorzero\work\SHOTGUN-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya”) -``` - -It created the folder, but it did not create the folder “maya”. - -## How to fix - -Check to make sure the the folder “maya” was not deleted by mistake. This error has been presented in cases where it was. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/new-file-maya-action-error/8225) \ No newline at end of file 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 deleted file mode 100644 index 93bea0120..000000000 --- a/docs/en/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: default -title: "Fixing the SSL: CERTIFICATE_VERIFY_FAILED issues with the Python API" -pagename: fix-ssl-certificate-verify-failed -lang: en ---- - -# Fixing the SSL: CERTIFICATE_VERIFY_FAILED issues with the Python API - -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. - -{% include info title="Note" content="These are temporary workarounds and we're looking into a long-term solution." %} - -## Preferred Solution - -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)** - -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. - -## Alternative Solutions - -### If you are using the Python API only - -1. Upgrade to the Python API **v3.0.39** - -2. a. Set `SHOTGUN_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. - -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). - -3. Set `SHOTGUN_API_CACERTS` to the location where you saved this file. Toolkit doesn’t allow you to specify the `ca_certs` parameter when creating connections the way the Python API does. - -### 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). - -2. Set the `SSL_CERT_FILE` environment variable to the location where you saved this file. diff --git a/docs/en/quick-answers/troubleshooting/folder-creation-aborded.md b/docs/en/quick-answers/troubleshooting/folder-creation-aborded.md deleted file mode 100644 index 289ffd8c6..000000000 --- a/docs/en/quick-answers/troubleshooting/folder-creation-aborded.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: Folder creation aborded -pagename: folder-creation-aborded -lang: en ---- - -# Failed to create folders: Folder creation aborded - -## Use Case - -Currently we create new project on the web interface and then use {% include product %} desktop to configure Toolkit as centralized setup. However when try to edit an asset name, it’s no longer working (artist cannot open the file to edit in CCD such as Maya), and the error returned was “Failed to create folders”. {% include product %} asks to rerun tank commands to unregister the asset and reregister it to fix but we don’t know where to run those. - -## How to fix - -Once the advanced setup wizard has been run on a project, the option to run it is intentionally removed. It is possible to [re setup a project](https://developer.shotgunsoftware.com/fb5544b1/) however if you wish. - -You will need to run the tank command mentioned in the error message: - -``` -tank.bat Asset ch03_rockat_drummer unregister_folders -``` - -The `tank.bat` can be found at the root of the configuration you set up, if you’re not sure where that is, [this topic](https://community.shotgridsoftware.com/t/how-do-i-find-my-pipeline-configuration/191) should help you find it. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/error-in-toolkit-after-renaming-asset/4108) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/frame-server-error.md b/docs/en/quick-answers/troubleshooting/frame-server-error.md deleted file mode 100644 index 26121f993..000000000 --- a/docs/en/quick-answers/troubleshooting/frame-server-error.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: The Frame Server has encountered an error -pagename: frame-server-error -lang: en ---- - -# The Frame Server has encountered an error - -## Use Case - -When launching Nuke from SG Desktop the error message “The Frame Server has encountered an error.” is presented, and you can continue to work. - -Complete error: - -``` -The Frame Server has encountered an error. - -Nuke 12.1v5, 64 bit, built Sep 30 2020. -Copyright (c) 2020 The Foundry Visionmongers Ltd. All Rights Reserved. -Loading - init.py -Traceback (most recent call last): -File “/Applications/Nuke12.1v5/Nuke12.1v5.app/Contents/Resources/pythonextensions/site-packages/foundry/frameserver/nuke/workerapplication.py”, line 18, in -from util import(asUtf8, asUnicode) -ImportError: cannot import name asUtf8 -cannot import name asUtf8 -``` - -## How to fix - -This error can happen when there is a dev path still on the config. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/the-frame-server-has-encountered-an-error/11192) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/hiero-task-type-error-message.md b/docs/en/quick-answers/troubleshooting/hiero-task-type-error-message.md deleted file mode 100644 index 573ac06a3..000000000 --- a/docs/en/quick-answers/troubleshooting/hiero-task-type-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: ERROR 18:13:28.365:Hiero(34236) Error! Task type -pagename: hiero-task-type-error-message -lang: en ---- - -# ERROR 18:13:28.365:Hiero(34236): Error! Task type - -## Use case: -After updating to `config_default2`, nuke_studio does not initialize. Under Nuke 12.0 studio I get no errors in the script editor, but in Nuke 11.1v3 I get: - -``` -ERROR 18:13:28.365:Hiero(34236): Error! Task type tk_hiero_export.sg_shot_processor.ShotgunShotProcessor Not recognised -``` - -Without fail after a rollback, it still does not initialize the tk-nuke engine, and {% include product %} fails to load anything… - -The [community post](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586) includes a full log for further details. - -## What’s causing the error? -It’s not treating it as a NukeStudio launch, and is probably instead treating it as a standard Nuke launch. - -The defined a Nuke Studio Software entity, with a path, and set the args to `-studio`. The arg needs to be `--studio`. - -## How to fix -The args on the software entity need to be set to `-studio`. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586). - diff --git a/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md deleted file mode 100644 index cf16fe7d8..000000000 --- a/docs/en/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -title: Why are my Houdini ShotGrid integrations not starting? -pagename: houdini-integrations-not-starting -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. - -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 -[houdini.env file](http://www.sidefx.com/docs/houdini/basics/config_env.html#setting-environment-variables). -This file allows the user to set environment variables that will be present when Houdini is loaded, but any values -defined in the file will overwrite pre-existing environment variables in the current session. - -The fix for this is to make sure you include the pre-existing `HOUDINI_PATH` environment variable in the new definition -for that variable. - -For example, if you have something like this already in your `houdini.env` file: - - HOUDINI_PATH = /example/of/an/existing/path;& - -Then you should add `$HOUDINI_PATH;` to the end of the path defined in the file and save it: - - HOUDINI_PATH = /example/of/an/existing/path;$HOUDINI_PATH;& - -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: - - 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://knowledge.autodesk.com/contact-support) and they will help you diagnose the issue. \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/images/add-exception-firefox.png b/docs/en/quick-answers/troubleshooting/images/add-exception-firefox.png deleted file mode 100644 index 66a1b9a16..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/add-exception-firefox.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/asset-schema.png b/docs/en/quick-answers/troubleshooting/images/asset-schema.png deleted file mode 100644 index c4ce80527..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/asset-schema.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/autobahn-python.png b/docs/en/quick-answers/troubleshooting/images/autobahn-python.png deleted file mode 100644 index a3b57f906..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/autobahn-python.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png b/docs/en/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png deleted file mode 100644 index 4c4dbc267..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png b/docs/en/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png deleted file mode 100644 index 3716b84e7..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/connection-failed.png b/docs/en/quick-answers/troubleshooting/images/connection-failed.png deleted file mode 100644 index 13d4efc28..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/connection-failed.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/connection-is-not-secure.png b/docs/en/quick-answers/troubleshooting/images/connection-is-not-secure.png deleted file mode 100644 index 66fe28e78..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/connection-is-not-secure.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png b/docs/en/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png deleted file mode 100644 index a26130a2b..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/firefox-advanced-settings.png b/docs/en/quick-answers/troubleshooting/images/firefox-advanced-settings.png deleted file mode 100644 index 74b9af540..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/firefox-advanced-settings.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/firefox-view-certificates.png b/docs/en/quick-answers/troubleshooting/images/firefox-view-certificates.png deleted file mode 100644 index 1894c5e5e..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/firefox-view-certificates.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/microsoft-management-console.png b/docs/en/quick-answers/troubleshooting/images/microsoft-management-console.png deleted file mode 100644 index 752960b8b..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/microsoft-management-console.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/photoshop-extension-panel.png b/docs/en/quick-answers/troubleshooting/images/photoshop-extension-panel.png deleted file mode 100644 index f6c214304..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/photoshop-extension-panel.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg b/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg deleted file mode 100644 index 8e2bc3f25..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg b/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg deleted file mode 100644 index 4de3c3636..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg b/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg deleted file mode 100644 index 2b5fe9a7b..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg b/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg deleted file mode 100644 index ece427bb1..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png b/docs/en/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png deleted file mode 100644 index faaa09de8..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png b/docs/en/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png b/docs/en/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png b/docs/en/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png deleted file mode 100644 index d15914282..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/troubleshoot_powershell.png b/docs/en/quick-answers/troubleshooting/images/troubleshoot_powershell.png deleted file mode 100644 index 15073cfbe..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/troubleshoot_powershell.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/windows-certificates.png b/docs/en/quick-answers/troubleshooting/images/windows-certificates.png deleted file mode 100644 index 35804c913..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/windows-certificates.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/windows-internet-properties.png b/docs/en/quick-answers/troubleshooting/images/windows-internet-properties.png deleted file mode 100644 index d1f3e8cb9..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/windows-internet-properties.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/windows-search-internet-options.png b/docs/en/quick-answers/troubleshooting/images/windows-search-internet-options.png deleted file mode 100644 index 156264ce7..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/windows-search-internet-options.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/windows-setting-environment-variable.png b/docs/en/quick-answers/troubleshooting/images/windows-setting-environment-variable.png deleted file mode 100644 index 6ce1687a4..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/windows-setting-environment-variable.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png b/docs/en/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png deleted file mode 100644 index 57ac77fdf..000000000 Binary files a/docs/en/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png and /dev/null differ diff --git a/docs/en/quick-answers/troubleshooting/invalid-lut-error-message.md b/docs/en/quick-answers/troubleshooting/invalid-lut-error-message.md deleted file mode 100644 index dc26f6c33..000000000 --- a/docs/en/quick-answers/troubleshooting/invalid-lut-error-message.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Invalid LUT selected -pagename: invalid-lut-error-message -lang: en ---- - -# error Invalid LUT selected : Gamma2.2 - -## Use case: -While working in an ACES color management project, when you use the default toolkit publishing, it fails with an error `Invalid LUT selected : Gamma2.2`. - -## What’s causing the error? -There is an app that creates the quicktime that is a part of the toolkit publishing from Nuke called `tk-multi-reviewsubmission`, and by default it will create a QT that works with Nukes standard color model. - -## How to fix -Since you are using ACES (I'm assuming the ICIO model), we just need to change the colorspace setting in the `tk-multi-reviewsubmission` app by taking over and adding it into the `codec_settings.py` hook. - -Codecs vary per preference, but in this example, we're using the `Output - sRGB Codec`: So in the `codec_settings.py` hook add the setting `settings["colorspace"] = "Output - sRGB"` to where it makes sense for your setup. (I've just added it everywhere) - -```python - settings = {} - if sys.platform in ["darwin", "win32"]: - settings["file_type"] = "mov" - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 changed the codec knob name to meta_codec and added an encoder knob - # (which defaults to the new mov64 encoder/decoder). - settings["meta_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - settings["codec"] = "jpeg" - settings["colorspace"] = "Output - sRGB" - - elif sys.platform == "linux2": - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 removed ffmpeg and replaced it with the mov64 writer - # http://help.thefoundry.co.uk/nuke/9.0/#appendices/appendixc/supported_file_formats.html - settings["file_type"] = "mov64" - settings["mov64_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - # the 'codec' knob name was changed to 'format' in Nuke 7.0 - settings["file_type"] = "ffmpeg" - settings["format"] = "MOV format (mov)" - settings["colorspace"] = "Output - sRGB" - - return settings -``` - -Now if you got all that right then when you publish in Nuke the QT will be made in an ACES compatible colorspace! - -[See the full thread in the community](https://community.shotgridsoftware.com/t/what-to-do-when-publish-from-aces-nuke-script-fails-with-error-invalid-lut-selected-gamma2-2/197). - diff --git a/docs/en/quick-answers/troubleshooting/maya-context-task-empty-none-error.md b/docs/en/quick-answers/troubleshooting/maya-context-task-empty-none-error.md deleted file mode 100644 index 5ec57c4fc..000000000 --- a/docs/en/quick-answers/troubleshooting/maya-context-task-empty-none-error.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: In Maya, when I print context.task, it is empty “None” -pagename: maya-context-task-empty-none-error -lang: en ---- - -# In Maya, when I print context.task, it is empty “None” - -## Use Case - -When in Maya, after printing `context.task`, it is `empty “None”`, but when trying other layout files from a different step/task, shows up the `context.task` details. It's also possible to print `context.task` details when navigating through `Open > Layout > new file`, but when saving the file via File Save, the `context.task` is None. - -## How to fix - -Try [unregistering the folders](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config/189) for one of the Shots that doesn’t work, and then run the folder creation for it again. - - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/context-task-none/3705) \ No newline at end of file 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 deleted file mode 100644 index db478bf1e..000000000 --- a/docs/en/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: I've launched Nuke/Maya/etc. from ShotGrid Desktop, but the ShotGrid menu is missing entries -pagename: menu-entries-missing-in-launched-dcc -lang: en ---- - -# I've launched Nuke/Maya/etc. from {% include product %} Desktop, but the {% include product %} menu is missing entries - -The actions that show up in the {% include product %} menu are contextually configured. That means the list of available actions may be different depending on the context you’re in. -It's possible you may not be seeing the app you're after because you're in the wrong context. - -## Example - -When you launch an application from [{% include product %} Desktop](https://developer.shotgridsoftware.com/d587be80/#getting-started-with-desktop), it puts you in the project environment by default. This environment is managed by the config file in your pipeline configuration located at `config/env/project.yml`. Because most user's work will probably not be done in this environment, it's not configured with many apps for you to work with. - -**Default Maya Project actions:** - -![{% include product %} Menu project actions](images/shotgun-menu-project-actions.png) - -You can use the [{% include product %} Workfiles app](https://developer.shotgridsoftware.com/9a736ee3/) to select the Asset, Shot, or Task to work on. This will load up the appropriate new environment for you which will then have more apps enabled with menu items in your {% include product %} menu. - -**Default Maya Asset Task actions:** - -![{% 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 diff --git a/docs/en/quick-answers/troubleshooting/modulenotfounderror-error.md b/docs/en/quick-answers/troubleshooting/modulenotfounderror-error.md deleted file mode 100644 index 40a9c9fb5..000000000 --- a/docs/en/quick-answers/troubleshooting/modulenotfounderror-error.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: ModuleNotFoundError -pagename: modulenotfounderror-error -lang: en ---- - -# ModuleNotFoundError - -## Use Case - -With a distributed confguration, when bootrstrapping `tk-shell` to access the `tk.templates` command outside of an engine, this error is presented. When following [this doc](https://developer.shotgridsoftware.com/3d8cc69a/#part-2-logging) (part 4), and importing sgtk v0.19.18 from an install folder this is the error: - -``` -Traceback (most recent call last): - File ".../_wip/sgtk_bootstrap.py", line 9, in - import sgtk - File "L:/_tech/sgtk_sandbox/install/core/python\sgtk\__init__.py", line 16, in - import tank - File "L:/_tech/sgtk_sandbox/install/core/python\tank\__init__.py", line 58, in - from . import authentication - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\__init__.py", line 33, in - from .shotgun_authenticator import ShotgunAuthenticator - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\shotgun_authenticator.py", line 13, in - from .sso_saml2 import ( - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\__init__.py", line 15, in - from .core.errors import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\__init__.py", line 15, in - from .sso_saml2_core import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\sso_saml2_core.py", line 19, in - from Cookie import SimpleCookie -ModuleNotFoundError: No module named 'Cookie' -``` - -## How to fix - -This issue may be due to using Python 3. Python 2.7 does have a Cookie module, but 3.x does not. So this can be fixed by using python 2.7. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/bootstrap-sgtk-modulenotfounderror/11708) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md b/docs/en/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md deleted file mode 100644 index 1b13cb6e5..000000000 --- a/docs/en/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Cannot find procedure “MTsetToggleMenuItem” -pagename: mtsettogglemenuitem-error-message -lang: en ---- - -# Cannot find procedure “MTsetToggleMenuItem” - -## Related error messages: - -Maya crashs just before loading the full window, after the usual splash screen: -- Cannot find procedure "MTsetToggleMenuItem" - -## How to fix: - -In the before_app_launch hook before launching Maya, it’s possible that something inadvertently is being removed from the path, causing the error at Maya launch. In this case, adding a python install to `PTHONPATH` will prevent Maya 2019 from finding the Plugin Path. - -## Example of what's causing this error: -The user had several problems, as this hook ensured that `C:\Python27` was set as `PYTHONPATH`, and they actually installed the workstation with this `PYTHONPATH`. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/tk-maya-cannot-find-procedure-mtsettogglemenuitem/4629). - diff --git a/docs/en/quick-answers/troubleshooting/myapp-appstore-error-message.md b/docs/en/quick-answers/troubleshooting/myapp-appstore-error-message.md deleted file mode 100644 index 36705ed1a..000000000 --- a/docs/en/quick-answers/troubleshooting/myapp-appstore-error-message.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: App store does not contain an item named my-app -pagename: myapp-appstore-error-message -lang: en ---- - -# ERROR: App store does not contain an item named my-app - -## How to fix: - -This has to do with the location descriptor on your custom app—[check out this doc](https://developer.shotgunsoftware.com/2e5ed7bb/#part-6-preparing-your-first-release). - -For locations, set up your my-app with a path descriptor—[see details here](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk). - -## Example of what's causing this error: - -While trying to use tank validate since tk-multi-snapshot isn’t showing up in maya, the error is presented when it tries to validate a custom app, stating it isn’t in the app store. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/tank-validate-errors-on-custom-apps/10674). - diff --git a/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md deleted file mode 100644 index 187fb4bfa..000000000 --- a/docs/en/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: Why does the Nuke integration fail to start when I set the NUKE_PATH environment variable? -pagename: nuke-path-environment-variable -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://developer.shotgridsoftware.com/1b9c259a/#set-environment-variables-and-automate-behavior-at-launch) 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. - -Use this function in `tank.util` to append or prepend your path to the `NUKE_PATH` environment variable, while preserving the path to the Toolkit bootstrap: - -```python -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 diff --git a/docs/en/quick-answers/troubleshooting/path-associated-error-message.md b/docs/en/quick-answers/troubleshooting/path-associated-error-message.md deleted file mode 100644 index 8157e7506..000000000 --- a/docs/en/quick-answers/troubleshooting/path-associated-error-message.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: The path `` is already associated with {% include product %} entity `` -pagename: path-associated-error-message -lang: en ---- - -# Database concurrency problems: The path `` is already associated with {% include product %} entity `` - -## Related error messages: - -- Database concurrency problems: The path `` is already associated with {% include product %} entity ``. -- Could not resolve row id for path! - -## Example: - -This error occurs when a Toolkit user tries to create folders. Here’s the full error: - -``` -ERROR: Database concurrency problems: The path -'Z:\projects\SpaceRocks\shots\ABC_0059' is already associated with -Shotgun entity {'type': 'Shot', 'id': 1809, 'name': 'ABC_0059'}. Please re-run -folder creation to try again. -``` -## What’s causing the error? - -It happens when you’re in a state where you’re trying to create a FilesystemLocation entity for a folder that already has one. - -## How to fix - -Clear the bad FilesystemLocation entities. If you can narrow down to a set of errant FilesystemLocation entities, just remove those. In a lot of cases though, all of the paths for a project are compromised, so they all need to go. - -- How to clear the FilesystemLocation entities: ideally you can run `tank unregister_folders`. To clear all of them, run tank `unregister_folders --all`. (For all the options for `tank unregister_folders`, just run it with no arguments and it will output usage notes.) -- However, because the db is already in a wonky state, this may not work, or may only partially work. Once you’ve run the command, go back to FilesystemLocations in {% include product %}, and confirm that what you expected to be deleted is actually gone. If not, select the bad entities, and move them to trash manually. - -At this point, the FilesystemLocations in {% include product %} are clean, but artists’ local caches may not reflect your changes. The last step is to actually sync the local cache on each user’s machine. To do this, they should run tank `synchronize_folders --full`. - -Once all those steps are taken, the path cache should be in a good state, and that errors shouldn’t appear anymore. - -## Related links - -- [Here’s the code in question](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [What is the path cache? What are Filesystem Locations?](https://developer.shotgridsoftware.com/cbbf99a4/) - -[See the full thread in the community](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578). - diff --git a/docs/en/quick-answers/troubleshooting/paths-long-error-message.md b/docs/en/quick-answers/troubleshooting/paths-long-error-message.md deleted file mode 100644 index 4a59a42d8..000000000 --- a/docs/en/quick-answers/troubleshooting/paths-long-error-message.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: Errors due to Windows paths too long -pagename: paths-long-error-message -lang: en ---- - -# Errors due to Windows paths too long (>256 characters) - -## The hard facts - -Windows has a really low default limit of 255/260 characters for path names. [Microsoft's information about this limit is here](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation) and you can see [more technical info here](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation). - -## The error(s) - -This manifests itself in various ways but typically happens when SG Desktop is loading a config for the first time, it hits this error while downloading items into the bundle cache. The error can be somewhat cryptic though it looks like recent versions of Windows 10 have improved the error slightly. These are some examples of what you might see: - -``` -[ WARNING] Attempt 1: Attachment download of id 3265791 from https://xxxxx.shotgunstudio.com failed: [Error 206] The filename or extension is too long: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\0933a8b9a91440a2baf3dd7df44b40ce\\bundle_cache\\git\\tk-framework-imageutils.git\\v0.0.2\\python\\vendors\\osx\\lib\\python2.7\\site-packages\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname' -[ WARNING] File 'c:\users\xxxxx\appdata\local\temp\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' -``` - -``` -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\123456789012a34b567c890d1e23456: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=uploaded_config&id=38&version=123456 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -``` - -``` -WARNING sgtk.core.util.shotgun.download Attempt 4: Attachment download of id 1182 from https://xxxxx.shotgunstudio.com failed: [Errno 2] No such file or directory: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\dd2cc0804122403a87ac71efccd383ea\\bundle_cache\\app_store\\tk-framework-desktopserver\\v1.3.1\\resources\\python\\build\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname\\_implementation.py' -WARNING sgtk.core.util.filesystem File 'c:\users\xxxxx\appdata\local\temp\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -ERROR sgtk.core.bootstrap.cached_configuration Failed to install configuration sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182. Error: Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Cannot continue. -``` - -## Why this happens - -On Windows, {% include product %} Desktop stores data in your `%APPDATA%` folder (typically `C:\Users\jane\AppData\Roaming\Shotgun`. When using the standard default2 Toolkit config things should be mostly fine as long as your username isn't super long. However, if you are creating your own apps, engines, or frameworks, you may have more risk of running into this, especially if you bundle dependencies with your code (as we do), and you have deep trees of directories in your bundles. - -## Working around the issue - -The way to resolve this issue is typically to set a `$SHOTGUN_HOME` environment variable to something very short like `C:\SG`. This tells SG Desktop to store it's data in `C:\SG` instead of `C:\Users\jane\AppData\Roaming\Shotgun` which saves you some characters and is usually enough to keep you under the limit. You can [read about the environment variables here](http://developer.shotgunsoftware.com/tk-core/initializing.html?#environment-variables). - -### Future possibilities? - -There *may* be another way to mitigate this issue with more recent versions of Windows 10 by updating the registry [as described here](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later) but I think it also requires SG Desktop to update it's manifest file to indicate it wants to take advantage of the `longPathAware` setting. I'm a Mac guy so I'm not sure if I'm just talking crap here ;) - -[See the full thread in the community](https://community.shotgridsoftware.com/t/errors-due-to-windows-paths-too-long-256-characters/10101). - diff --git a/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md deleted file mode 100644 index 73797c741..000000000 --- a/docs/en/quick-answers/troubleshooting/performance-troubleshooting.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -layout: default -title: Performance Troubleshooting -pagename: performance-troubleshooting -lang: en ---- - -# Performance troubleshooting - -You may come across situations where Toolkit usage can become slow. There can be many reasons for encountering this, ranging from issues with the client side infrastructure such as server speeds or internet connection, to configuration based issues where Toolkit or {% include product %} is not configured in a performant way, to areas of our code that could use further optimization. - -Here is a quick list of things to check which we cover in further detail below: - -- Make sure your apps, engines, frameworks, core, and {% include product %} Desktop [are up to date](#keeping-up-to-date). -- Ensure [debug logging](./turn-debug-logging-on.md) is not enabled during general use. -- Only [create the folders that you need to](#folder-creation-is-slow), and limit folders so they are only created when they are actually needed. Adding too many folders to your schema will slow things down. -- Storing your user caches on a server can be slow. You can redirect the user’s {% include product %} cache by setting the [`{% include product %}_HOME` environment variable](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables) to point to a location on your local drive. -- [Configure the workfiles and loader apps](#file-open-file-save-or-the-loader-app-is-slow) to filter out content that is not needed by the artist. Consider filtering by statuses to help keep the list of entities short and relevant to the artist’s current tasks. -- Check to see if you have any custom hooks and that they are not adding additional overhead. - -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://knowledge.autodesk.com/contact-support) 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) -- [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) -- [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) - -## 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. - -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. - -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. - -### Keeping up to date - -If you’re encountering performance issues, check that your core, apps, engines, and frameworks are up to date, as there may already be fixes or optimizations available in newer releases. - -### 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. - -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. | -| | - They are stored in the user’s cache on their local hard drive and thus normally perform better than server speeds. This means that after the initial cache, the performance should be better than a centralized config. | - The process happens seamlessly behind the scenes, but there is still the initial cost of downloading these. | -| | | - Every time the config gets updated to point to new versions of the dependencies, both the config and the new dependencies will need to be cached. | - -In summary, if you have slow storage but a reasonable internet connection, then distributed configs maybe the best answer, but if you have good server storage performance and poor internet, then a centralized config might be more suitable. - -{% include info title="Note" content="If you are interested in the distributed configs but are concerned about downloading the dependencies per machine, it is possible to centralize just your bundle cache so that it is shared among all users." %} - -When using distributed configs, a user will only have to download something if it is not already found in the cache, and once one user has downloaded it, others will be able to benefit from it as well. To achieve this you can set the [`{% include product %}_BUNDLE_CACHE_PATH` environment variable](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables) on each machine to point to the shared location. - -## Launching software is slow - -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 %}. -2. **Is it slow regardless of which approach you use to launch, i.e., is it about the same if you launch from SG Desktop, or from the SG site using the browser integration?** - If it's slow launching from the {% include product %} site but not from SG Desktop, then it could be an issue with the browser integration, or it could point to issues creating the folders on disk. If you’re launching from a context other than a Project, then it will likely be creating more folders on disk so this might explain where the time is taken. It’s also worth noting that we check for the existence of the required folders every time software is launched. -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://knowledge.autodesk.com/contact-support) 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://knowledge.autodesk.com/contact-support) 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. - -### Is the issue pre or post launch? - -If the above hasn’t helped you narrow it down, then the next step is to establish where in the startup process things are slowing down. When launching software via Toolkit, it can usually be boiled down into a two step process. - -The first step performs some initial operations, such as gathering the information required to launch the software, automatically creating the folders from the context and then actually launching the software. Then the second step of the process starts the Toolkit integration once the software has launched. - -Usually, you can see without looking at the logs if the performance issue lies in the first step of the process or the second: - -- By watching and seeing if it takes a long time for the software’s splash screen to start. If it does then the issue could well be in the first step. -- By seeing the software begin to start up relatively quickly but then become slow (after getting to the point where it has finished initializing and the {% include product %} menu is present). If this is the case then the issue will fall into the second step. - -Knowing this will help you in the next bit which is looking at the logs. - -### Checking the logs - -Now you hopefully have some idea of if the issue is in the first step or the second step of the launching; this will help target which log you will be looking in. The logs are broken up per engine, so if the issue appears to be in the pre-launch phase, then you will need to look in either the `tk-desktop.log` or in the `tk-{% include product %}.log`, depending on if you launched from SG Desktop or the SG site respectively. - -The next thing you should do is enable debug logging. -{% include info title="Note" content="If it was already enabled, as [mentioned above](#debugging) this could be a cause for sluggishness, so you should also test without it enabled" %} -Once debug logging is enabled, you should clear your existing logs, and then replicate the launch process. Then you can use the timestamps in the logs to see where the jumps in time appear. - -For example, here are a few lines where a 5 second jump in time occurs during folder creation: - - 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. - -Reading logs can be tricky though and the contents may not always make sense, so again you can reach out to [support](https://knowledge.autodesk.com/contact-support) to assist you with this bit. - -### Common causes of slow software launches - -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **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) | - -## 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://developer.shotgridsoftware.com/a4c0a4f1/) 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://developer.shotgridsoftware.com/9a736ee3/#step-filtering). - - The hierarchy on the File Open app can also be configured to defer the loading of the [sub items until it is expanded](https://developer.shotgridsoftware.com/9a736ee3/#deferred-queries). 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. - -## 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. -- 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. - -In short, folder creation will have potentially significant I/O usage on the disk, as well as need to write to a local database and communicate with the SG site. - -### Tackling I/O usage - -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. - -Basically, create the minimum required folders that allow you to save and publish your work. - -#### Create with parent - -There is a [`create_with_parent` setting](https://developer.shotgridsoftware.com/82ff76f7/#create-with-parent-folder) that can be applied to schema folders. -Setting it to true will cause the folder to be created at the same time as it’s parent. You should be careful to avoid situations where setting it to True will cause large numbers of folders to be checked and created. - -**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. - -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://developer.shotgridsoftware.com/82ff76f7/#workspaces-and-deferred-folder-creation) 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** - -You may have a bunch of folders that should only be created at publish stage. In this case, you could set a custom to defer keyword of maya_publish, and then use the API to create the folders using that keyword as the engine name. -Your folder in the schema might look something like: - - # the type of dynamic content - type: "static" - # defer creation and only create this folder when Photoshop starts - defer_creation: "publish" - -And then you would create the folders with a script like this: - -```python -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. - -To limit this, you could create [yml files](https://developer.shotgridsoftware.com/82ff76f7/#static-folders) 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. - -#### 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. - -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. - -One method we’ve seen people employ here is to transfer a reasonably up to date version of a local cache to the user’s machine. - -{% 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. - -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 diff --git a/docs/en/quick-answers/troubleshooting/publish-certificate-fail-error-message.md b/docs/en/quick-answers/troubleshooting/publish-certificate-fail-error-message.md deleted file mode 100644 index 7309addec..000000000 --- a/docs/en/quick-answers/troubleshooting/publish-certificate-fail-error-message.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: urlopen error SSL CERTIFICATE_VERIFY_FAILED certificate verify failed (_ssl.c:726) -pagename: publish-certificate-fail-error-message -lang: en ---- - -# `[ERROR publish_creation] ` - -## Use case - -Developing tools for digital assets in Houdini 17.5, while using a build toolkit app, I execute a hook which try to register the published file. - -The script executes the code: - - args = { - "tk": self.parent.tank, - "context": self.parent.engine.context, - "path": esto['operator'], - "name": os.path.basename(esto['operator']), - "version_number": 6, - "published_file_type": "Library item", - } - print 'sgtk: ', sgtk.__file__ - sg_publish = sgtk.util.register_publish(**args) - -The published files is registered correctly in {% include product %}, but it presents the following error: - -``` ---------------------------------------------------------------------------- -[ERROR publish_creation] -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 308, in register_publish - tk.shotgun.upload_thumbnail(published_file_entity_type, entity.get("id"), no_thumb) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2173, in upload_thumbnail - field_name="thumb_image", **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2263, in upload - tag_list, is_thumbnail) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2383, in _upload_to_sg - result = self._send_form(url, params) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3806, in _send_form - resp = opener.open(url, params) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 429, in open - response = self._open(req, data) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 447, in _open - '_open', req) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 407, in _call_chain - result = func(*args) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1241, in https_open - context=self._context) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1198, in do_open - raise URLError(err) -URLError: -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/config/hooks/publish_digital_asset.py", line 66, in register_publishedfile - description='Alembic nodes.') - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 323, in register_publish - entity=entity -ShotgunPublishError: Unable to complete publishing because of the following error: , although PublishedFile PIGS_libary_tool_hda_asasas_v017.hda (id: 114715 -) was created. ---------------------------------------------------------------------------- -``` - -## What’s causing the error? - -Missing `cacert.pem` and the required environment variable `SHOTGUN_API_CACERTS` pointing to that location. - -## How to fix - -Add the `cacert.pem` and environment variable `SHOTGUN_API_CACERTS` pointing to the location. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/ssl-certificate-error-on-sgtk-util-regiter-publish/3291). - diff --git a/docs/en/quick-answers/troubleshooting/review-submission-error-message.md b/docs/en/quick-answers/troubleshooting/review-submission-error-message.md deleted file mode 100644 index bd639483b..000000000 --- a/docs/en/quick-answers/troubleshooting/review-submission-error-message.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: default -title: Exception Review submission failed. Could not render and submit the review associated sequence. -pagename: review-submission-error-message -lang: en ---- - -# Exception: Review submission failed. Could not render and submit the review associated sequence. - -## Use case: - -'Submit for publish' in Nuke has never worked. - -**Question 1:** -What's the best way of navigating up the hereditary stream? I get as far as 'HookBaseClass' then am a bit lost. - -My current problem is getting the submit for review working in Nuke. - -I'm getting this error in Nuke's SG publish GUI: - - - Traceback (most recent call last): - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 282, in _handle_plugin_error - - yield - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 198, in run_publish - - self._hook_instance.publish(settings, item) - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-nuke\v0.12.5\hooks\tk-multi-publish2\basic\submit_for_review.py", line 272, in publish - - raise Exception("Review submission failed. Could not render and " - - Exception: Review submission failed. Could not render and submit the review associated sequence. - -Also get this exception: - -`'sg_publish_data' was not found in the item's properties. Review Submission for 'path/to/sequences/AB/AB_001/comp/work/images/AB_001_comp_v002_output/AB_001_comp_v002_output.%04d.jpg' failed. This property must be set by a publish plugin that has run before this one.` - - -So it's looking in 'publish_plugin_instance.py' for: - - - _handle_plugin_error - yield - - run_publish - self._hook_instance.publish(settings, item) - -I can find these in my local Appdata folder but not in my main install so I'm assuming that I need to look in 'submit_for_review.py' to get at this problem. - -Looking at this file I can see that its using settings and info for the item from higher up the hereditary chain 'HookBaseClass'. - -So looking for where the 'sg_publish_data' is set in 'submit_for_review.py' I see line 225: -`sg_publish_data = item.properties.get("sg_publish_data")` - -**question 2** -So where upstream is 'item.properties' is being set? I suspect in the nuke collector.py but 'sg_publish_data' is not present in there and is also a child of the 'HookBaseClass' - -## How to fix - -### The Short Answer: - -Assuming you have not added custom code or modified the config too much, you just need to make sure you have `Publish to {% include product %}` checked on the item that you are submitting for review - -![publish_checkbox](images/review-submission-error-message-01.jpeg) - -### The Long Answer: - -First, [here's the documentation for the publisher API](https://developer.shotgunsoftware.com/tk-multi-publish2/). Most of the concepts involved in solving this problem are explained there. But here's the breakdown for your specific problem. Hopefully going through it like this will help you debug future issues as well. - -In the above screenshot, under the `ShorgunWrite1` item you see two `plugins`. These correspond to plugins that were defined in the config. - -![config](images/review-submission-error-message-02.jpeg) - -These plugins are run in order and act on the same item in memory. To get to the bottom of your problem you want to look at the code for these two plugins. You can figure out where those live by looking at the `hook` settings. - -For the first plugin since we are looking at the settings for `tk-multi-publish2`, `{self}` refers to `tk-multi-publish2`. Therefore -``` -{self}/publish_file.py -``` -can be found under the tk-multi-publish2 app folder: - -![publish_file_hook](images/review-submission-error-message-03.jpeg) - -Where the app exists on your file system depends on how `app_locations.yml` is configured, but if you haven't changed anything there, you can find the app in your bundle cache folder. [Here's how to find your cache location](https://developer.shotgunsoftware.com/7c9867c0/) if you need it. - -For the second plugin, the hook path is -``` -{engine}/tk-multi-publish2/basic/submit_for_review.py -``` -We are running the `tk-nuke` engine when in Nuke, so to find this publish hook we need to look under `tk-nuke` which again should be in your bundle cache. - -![nuke_config](images/review-submission-error-message-04.jpeg) - -Now that you know where to find the code you can see that [the first plugin sets the values that are expected to exist in the second plugin](https://github.com/shotgunsoftware/tk-multi-publish2/blob/a83e35dbf1a85eac7c3abd7e7f5509a42a8b8cf1/hooks/publish_file.py#L425). - -The idea for the combination of these two plugins is that you are submitting for review something that is published (and will not change). So the workflow is to publish the source files first, then create a SG Version from them for review. The version is linked to the publish as well. the first plugin does the file publish and stores the information in the item for the second publish to use. - -You mentioned inheritance so I wanted to clarify that as well. I think what you're coming across in the documentation is referring to hook inheritance that is driven by the config and not a python inheritance as I suspect you think it means. - -In the python files you'll see that all the hooks inherit from `HookBaseClass`. But the hook mechanism in the config allows you to essentially treat these base hooks as mixins and combine them to get all the functionality you need while reusing code. You can see an example of this in the `tk-multi-publish2` config: - -``` -settings.tk-multi-publish2.nuke.shot_step: - collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py" -``` - -The collector defined here does not exist in any python file. It is actually a combination of the `tk-multi-publish2`'s `collector.py` and `tk-nuke`'s `collector.py`. - -If the quick fix is not enough for you and you need to modify these hooks, checkout the [Customizing Publish Workflows video](https://developer.shotgridsoftware.com/869a6fab/#shotgrid-toolkit-webinar-videos). It's a great place to start. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/nuke-submit-for-review-py/10026). - diff --git a/docs/en/quick-answers/troubleshooting/row-id-error-message.md b/docs/en/quick-answers/troubleshooting/row-id-error-message.md deleted file mode 100644 index f77964a24..000000000 --- a/docs/en/quick-answers/troubleshooting/row-id-error-message.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Could not resolve row id for path! -pagename: row-id-error-message -lang: en ---- - -# Could not resolve row id for path! - -## Related error messages: - -- Could not resolve row id for path! -- Database concurrency problems: The path `` is already associated with {% include product %} entity ``. - -## Example: - -A Toolkit user is getting the error “Could not resolve row id for path!” when they create folders. - -Oddly, this is creating FileSystemLocation entities, but sometimes resulting in duplicates, which can cause a whole host of problems. - -The full error looks something like: - -``` -Creating folders, stand by... - -ERROR: Could not resolve row id for path! Please contact support! trying to -resolve path '\\server\nas_production\CLICK\00_CG\scenes\Animation\01\001'. -Source data set: [{'path_cache_row_id': 8711, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001', -'metadata': {'type': '{% include product %}_entity', 'name': 'sg_scenenum', 'filters': -[{'path': 'sg_sequence', 'values': ['$sequence'], 'relation': 'is'}], -'entity_type': 'Shot'}, 'primary': True, 'entity': {'type': 'Shot', 'id': -1571, 'name': '001_01_001'}}, {'path_cache_row_id': 8712, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Fx', -'metadata': {'type': '{% include product %}_step', 'name': 'short_name'}, 'primary': True, -'entity': {'type': 'Step', 'id': 6, 'name': 'FX'}}, {'path_cache_row_id': -8713, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Comp', -``` -_note: it can go on much longer than that._ - -## What’s causing the error? - -This error is pointing to a mismatch between the storage roots as specified in {% include product %} (Site Prefs -> File Management) and c`onfig/core/roots.yml` in the Pipeline Configuration. - -It often comes up because of a case mismatch in studios running Windows. Their paths are case-insensitive, but our configs are case-sensitive. A difference as simple as `E:\Projects` vs `E:\projects` can cause this error. - -## What’s happening behind the scenes? - -The code creates the FilesystemLocation entity in {% include product %} for the path it just created, using {% include product %}’s storage roots to determine the root for the path. Then, it goes to create the same entry in the local cache, and has to determine where to put it in the database. For the local cache, it uses `roots.yml` to determine the root for the path, and because of the case mismatch, the path it generates doesn’t match what was just entered in {% include product %}. At this point, it throws the error. - -It’s especially bad because it doesn’t error cleanly: the folders are created, the FilesystemLocation entries are created, they are not synced in the local path cache, nor will they ever be able to be synced because of the storage root mismatch. - -## How to fix - -First, make sure the storage root paths in the Site Prefs match the paths in `config/core/roots.yml`. Fixing the mismatch should make the error go away in subsequent folder creation calls. - -Then, clear the bad FilesystemLocation entities. If you can narrow down to a set of errant FilesystemLocation entities, just remove those. In a lot of cases though, all of the paths for a project are compromised, so they all need to go. - -- How to clear the FilesystemLocation entities: ideally you can run `tank unregister_folders`. To clear all of them, run tank `unregister_folders --all`. (For all the options for `tank unregister_folders`, just run it with no arguments and it will output usage notes.) -- However, because the db is already in a wonky state, this may not work, or may only partially work. Once you’ve run the command, go back to FilesystemLocations in {% include product %}, and confirm that what you expected to be deleted is actually gone. If not, select the bad entities, and move them to trash manually. - -At this point, the FilesystemLocations in {% include product %} are clean, but artists’ local caches may not reflect your changes. The last step is to actually sync the local cache on each user’s machine. To do this, they should run tank `synchronize_folders --full`. - -Once all those steps are taken, the path cache should be in a good state, and that errors shouldn’t appear anymore. - -## Related links - -- [Here’s the code in question](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [What is the path cache? What are Filesystem Locations?](https://developer.shotgridsoftware.com/cbbf99a4/) - -[See the full thread in the community](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578). - diff --git a/docs/en/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md b/docs/en/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md deleted file mode 100644 index 0810f00b8..000000000 --- a/docs/en/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: SSLHandshakeError CERTIFICATE_VERIFY_FAILED certificate verify failed -pagename: sslhandshakeerror-ssl-certificate-verify-failed -lang: en ---- - -# SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed - -## Use case - -On a local network set up with a firewall that does local packet inspection, you can get the following error message: - -``` -SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -``` - -This is because these firewalls are often configured with a self-signed certificate that your network administrator created themselves and that Python does not have access to. Unfortunately, unlike other applications, Python does not always look inside the OS’s keychain for certificates, so you have to provide it yourself. - -## How to fix - -You need to set the `SHOTGUN_API_CACERTS` environment variable to point to a file on disk that contains the complete list of certificate authorities the Python API and Shotgun Desktop can trust. - -You can download such a [copy](https://raw.githubusercontent.com/certifi/python-certifi/master/certifi/cacert.pem) from the latest copy of the `certifi` package on Github. Once you've done this, you need to add the public key of your corporate firewall at the bottom of that file and save it. - -Once this is done, simply set `SHOTGUN_API_CACERTS` environment variable to the path location, e.g. `/opt/certs/cacert.pem` and launch the Shotgun Desktop. - - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/using-shotgun-desktop-behind-an-firewall-with-ssl-introspection/11434) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/storage-root-primary-error-message.md b/docs/en/quick-answers/troubleshooting/storage-root-primary-error-message.md deleted file mode 100644 index 350c154bd..000000000 --- a/docs/en/quick-answers/troubleshooting/storage-root-primary-error-message.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: WARNING Storage Root Primary Could Not Be Mapped to a SG Local Storage -pagename: review-error-message-root -lang: en ---- - -# WARNING: Storage Root Primary Could Not Be Mapped to a SG Local Storage - -## Use case - -When attempting to set up a project and use Google Drive as primary storage using Drive File stream, the Project Wizard issues a warning in the console when accessing the storage configuration: - -`[WARNING] Storage root primary could not be mapped to a SG local storage` - -Pressing **continue** does not work. - -## How to fix - -This issue can be caused when there is a typo in the storage name. Ensure it matches exactly the name of the Google Drive. - -In addition, when using Google Drive, ensure it is set to always keep files locally, to avoid duplicate projects appearing. - -## Related Links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/11185) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md b/docs/en/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md deleted file mode 100644 index 58022c548..000000000 --- a/docs/en/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: Cannot resolve template data for context -pagename: tankerror-cannot-resolve-template-data-error -lang: en ---- - -# TankError: Cannot resolve template data for context - -## Use Case - -When doing an advanced project setup on a new project and using the standalone Publisher app from {% include product %} Desktop to publish some images for a new asset task I’ve created, after selecting the context to validate the publish, the following error is presented: - - -``` -creation for %s and try again!" % (self, self.shotgun_url)) -TankError: Cannot resolve template data for context ‘concept, Asset door-01’ - this context does not have any associated folders created on disk yet and therefore no template data can be extracted. Please run the folder creation for and try again! -``` - -Running `tank.bat Asset door-01 folders` in a terminal resolved this. However, this has never happened on any previous projects. - -## How to fix - -This may have happened due to this being the first time attempting to standalone publish for a new entity/task without going through a DCC first. - -The reason it probably did not happened before is because you’ve started work on the asset in a Software prior to using the standalone publisher, so the folders have already been created/synced. Launching a Software (via Toolkit) will create the folders for the context you launch in, and the open app will create the folders for the context you start a new file in. So usually you don’t need to specifically create folders. - -A common practice is that studios generally create folders manually after the shots/assets have been added in {% include product %}. - -Keep in mind also that this is affected by your “folder schema”, which can cause weird issues if it doesn’t completely match the templates. - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/tank-folder-creation/8674/5) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md b/docs/en/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md deleted file mode 100644 index a773fa9a6..000000000 --- a/docs/en/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: TankError Tried to Resolve a Path From The Template -pagename: tank-error-tried-to-resolve-a-path -lang: en ---- - -# TankError: Tried to resolve a path from the template - -## Use case 1 - -When setting up a new configuration for SGTK, trying to create a new file through the File Open dialog (in tk-multi-workfiles2), you get the following error: - -``` -TankError: Tried to resolve a path from the template > -# ('animal', 'dog') -# ('age', '3') -# ('args', ('needs a bath',)) -``` - -if you were in Maya you would do something like: - -```python -import sgtk - -# get the engine we are currently running in. -engine = sgtk.platform.current_engine() -# Run the app. -engine.commands['print_animal']['callback']("unicorn",4,"it's soooo fluffy!!!!") - ->> -# ('animal', 'unicorn') -# ('age', 4) -# ('args', ("it's soooo fluffy!!!!",)) -``` - -## Error message - -If you tried to launch the app from the menu in Maya you would get an error like this: - -``` -// Error: Shotgun tk-maya: An exception was raised from Toolkit -Traceback (most recent call last): - File "/Users/philips1/Library/Caches/Shotgun/bundle_cache/app_store/tk-maya/v0.10.1/python/tk_maya/menu_generation.py", line 234, in _execute_within_exception_trap - self.callback() - File "/Users/philips1/Library/Caches/Shotgun/mysite/p89c1.basic.maya/cfg/install/core/python/tank/platform/engine.py", line 1082, in callback_wrapper - return callback(*args, **kwargs) -TypeError: run_method() takes at least 3 arguments (1 given) // -``` - -And that is because the app is set to require the arguments, and the menu button doesn't know to provide them. - -## How to fix - -It is better to write your app's `run_method` to use keyword arguments like this: - -```python - def run_method(self, animal=None, age=None, *args): - print ("",animal) - print ("age",age) - print ("args", args) -``` -Then you can handle what happens if the args are not provided and implement a fallback behavior. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/custom-app-args/8893). - diff --git a/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md deleted file mode 100644 index 852a1e2e3..000000000 --- a/docs/en/quick-answers/troubleshooting/turn-debug-logging-on.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -layout: default -title: How do I turn on debug logging? -pagename: turn-debug-logging-on -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. - -{% 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." %} - -## Enable debugging through {% include product %} Desktop - -The easiest way to enable debugging is to toggle it on through the {% include product %} Desktop app. This can be set once you are logged into {% include product %} Desktop: click on your profile picture in the bottom right of the app, and select **Advanced -> Toggle Debug Logging**. This setting is persistent between sessions, so remember to turn it off when you are finished. - -![Toggle debug logging in SG Desktop](images/desktop-enable-debug-logging.png) - -It should also be noted that when this is toggled on, apps launched from {% include product %} Desktop, or even the Toolkit commands through the browser integration, will also inherit this debug state. - -## 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." %} - -#### Example using Windows 7 - -- You can permanently turn on debug logging by navigating to the **Windows icon > Control Panel > System > Advanced system settings > Environment Variables… > New…** - -![Setting Windows environment variables](images/windows-setting-environment-variable.png) - - -- **Variable name**: `TK_DEBUG` -- **Variable value**: `1` -- Select OK - -Now, your environment variable is set up properly and debug logging is turned on. - -{% include info title="Note" content="Make sure to restart Desktop in order for logging to take effect." %} - -If you would like to turn debug logging off, you can either: - -a. Set the `TK_DEBUG` environment variable value to 0. - -b. Delete the `TK_DEBUG` environment variable. - -### Checking to see if the environment variable is already set - -To see if the environment variable has already been set, open a terminal and execute the following command: `set` - -Then, search for `TK_DEBUG=1`. - -This will ensure that once you launch Desktop, debug logging will be turned on. - -### Temporarily turning on debug logging - -If you would like to use debug logging temporarily for a session instead, you can open a terminal and set debug logging with the following command: `set TK_DEBUG=1` - -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. - -Every engine has a `debug_logging` setting in the environment file. Turning this on will emit additional debug-level log messages to the default output in your Software (e.g., the script editor in Nuke or Maya). All of the apps running in your engine will emit these debug-level messages so turning this on for the engine will effectively turn it on for all of your apps as well. - -This does not output any log messages to a file. We are working on a more standard logging framework that will allow this. The exceptions are [{% include product %} Desktop](https://developer.shotgridsoftware.com/d587be80/#getting-started-with-desktop) and the [Photoshop engine](https://developer.shotgridsoftware.com/8d461cbe/), which log output both in a GUI console and to a file. - -### Turning on debug logging for an engine in your software - -As an example, to turn on debugging output for the Nuke engine in the shot step environment, find the Nuke engine (`tk-nuke`) section in your environment file and update the setting to `debug_logging: true`. - -Edit `config/env/shot_step.yml`. - -```yaml -engines: - ... - ... - tk-nuke: - apps: - ... - ... - compatibility_dialog_min_version: 9 - debug_logging: true - favourite_directories: [] - location: {name: tk-nuke, type: app_store, version: v0.2.23} - ... - ... -``` - -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." %} - -### Turning on debug logging for the tank command - -If you’re running the tank command and want to see debug output in your terminal, use the `--debug` option with the command you’re running and this will turn on debug logging for the command. - - ./tank --debug core - DEBUG [10:11:38 617.835998535]: - DEBUG [10:11:38 618.768930435]: Running with debug output enabled. - DEBUG [10:11:38 618.921995163]: - DEBUG [10:11:38 619.092941284]: Core API resides inside a (localized) pipeline - configuration. - DEBUG [10:11:38 619.235992432]: Full command line passed: - ['/sgtk/software/shotgun/scarlet/install/core/scripts/tank_cmd.py', - '/sgtk/software/shotgun/scarlet', '--debug', 'core'] - DEBUG [10:11:38 619.364023209]: - DEBUG [10:11:38 619.463920593]: - DEBUG [10:11:38 619.575977325]: Code install root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.678020477]: Pipeline Config Root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.756937027]: - DEBUG [10:11:38 619.826078415]: - DEBUG [10:11:38 619.905948639]: - DEBUG [10:11:38 619.978904724]: Context items: - ['/sgtk/software/shotgun/scarlet'] - DEBUG [10:11:38 620.06688118]: Command: core - DEBUG [10:11:38 620.129108429]: Command Arguments: [] - DEBUG [10:11:38 620.193004608]: Sgtk Pipeline Config Location: - /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' - - The path is not associated with any Shotgun object. - - Falling back on default project settings. - DEBUG [10:11:39 125.463962555]: Sgtk API and Context resolve complete. - DEBUG [10:11:39 126.449108124]: Sgtk API: Sgtk Core v0.15.18, config - /sgtk/software/shotgun/scarlet - DEBUG [10:11:39 126.588106155]: Context: scarlet - - Using configuration 'Primary' and Core v0.15.18 - - Setting the Context to scarlet. - 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 deleted file mode 100644 index b23a3dfcb..000000000 --- a/docs/en/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Troubleshooting Photoshop integration when two extensions are installed -pagename: two-photoshop-shotgun-extensions -lang: en ---- - -# Troubleshooting Photoshop integration when two extensions are installed - -## What is the problem? - -With the release of our After Effects integration, there is a common plugin that can be used by all Adobe apps that integrate with {% include product %}. As part of this change, we needed to rename the extension so that we could preserve backward compatibility with our older Photoshop integration and make it possible for studios to cleanly transition to the update. - -Unfortunately, this also means that it is possible to have two {% include product %} extensions installed as you upgrade: - -![Multiple {% include product %} extensions showing in the Photoshop menu](./images/photoshop-extension-panel.png) - -The **{% include product %} Adobe Panel** is the new one, and should be used when you are using `v1.7.0` of the Photoshop integration or newer. - -## How do I fix it? - -To get rid of the older extension, you can remove it from the Adobe install location in your home directory. The folder for this can be seen in the debug output upon Photoshop launch, and is - -- OSX: `~/Library/Application Support/Adobe/CEP/extensions/com.sg.basic.ps` -- Windows: `%AppData%\Adobe\CEP\extensions\com.sg.basic.ps` - -![Multiple {% include product %} extensions showing in the Photoshop menu](./images/shotgun-desktop-console-photoshop-extension.png) - -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 diff --git a/docs/en/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md b/docs/en/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md deleted file mode 100644 index a02b900dc..000000000 --- a/docs/en/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: Unable to get local issuer certificate -pagename: unable-to-get-local-issuer-certificate-error -lang: en ---- - -# [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate - -## Use Case - -Users experiencing issues uploading and downloading media from Amazon with the Python API on Windows. This issue manifests itself by the Python API raising the following error message: - -``` -shotgun_api3.shotgun.ShotgunFileDownloadError: Failed to open https://xxx.shotgunstudio.com/file_serve/attachment/xyz - -``` -Amazon updated some certificates on their backend. Windows usually refreshes its certificate store when browsing a webpage that requires a new certificate. A standalone Python script running on a computer that doesn’t see regular browsing activity will not retrieve certificate updates, which may cause that computer to be missing quite a few. - -## How to fix - -If you have GUI access to the machine that has the issue, simply playing back any media that is currently stored on S3 should update your certificate store. This playback solution only works on Chrome, Internet Explorer, Edge or other Chromium based browsers. This playback solution does not work on Firefox or Safari, as these browser do not use Windows’ standard APIs for certificate validation. - -For users whom this solution does not work, or if you have a big list of computers to update, like a Deadline render farm, we’re also providing a script that will add the missing certificate to your computer. [Here is a link to a script we’ve shared](https://developer.shotgunsoftware.com/c593f0aa/). - -For users of Powershell on Windows 10 or Powershell 3 on Windows 7, you can run the following script as an administrator on the computer to get the new certificate. - -![Powershell](images/troubleshoot_powershell.png) - -``` -$cert_url = "https://www.amazontrust.com/repository/AmazonRootCA1.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 -``` - -If the command worked, you should see this: - -``` - PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root - -Thumbprint Subject ----------- ------- -8DA7F965EC5EFC37910F1C6E59FDC1CC6A6EDE16 CN=Amazon Root CA 1, O=Amazon, C=US -``` - -This will make the certificate available for all user accounts on the computer it is run on. If you don't have admin access, you can change the last line with: - -``` -Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\CurrentUser\Root -``` - -and the certificate will be added for the current user only. - -If you're old school like me and still rock using `cmd.exe`, you can also use `certutil`. First, you'll need to download the certificate from `https://www.amazontrust.com/repository/AmazonRootCA1.cer` and save it somewhere on your computer. - -Then launch the command prompt in administrative mode: - -![Administrative Mode](images/troubleshoot_admin_mode.png) - - and execute the following line: - -``` -certutil -addstore root -``` - -This will make the certificate available for all user accounts. If you don't have admin access, you can add `-user` to install the certificate for the current user only like this - -``` -certutil -user -addstore root -``` - -## Related links - -[See the full thread in the community](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860) \ No newline at end of file diff --git a/docs/en/quick-answers/troubleshooting/unreal-proxy-error-message.md b/docs/en/quick-answers/troubleshooting/unreal-proxy-error-message.md deleted file mode 100644 index f29e7d3a6..000000000 --- a/docs/en/quick-answers/troubleshooting/unreal-proxy-error-message.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Error calling __commands::unreal_engine -pagename: unreal-proxy-error-message -lang: en ---- - -# `[ERROR] [PROXY]` Error calling __commands::unreal_engine] - -## Use case: - -After setting up the {% include product %} desktop app, now after being able to get UE4 to show in the {% include product %} app, once I try to Launch Unreal I get these messages: - -``` -2020-06-06 03:22:24,246 [ ERROR] [PROXY] Error calling __commands::unreal_engine_4.24.3((), {}): -Traceback (most recent call last): -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-desktop\v2.4.12\python\tk_desktop\desktop_engine_project_implementation.py”, line 164, in _trigger_callback -callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\babilgames\p91c38.basic.desktop\cfg\install\core\python\tank\platform\engine.py”, line 1084, in callback_wrapper -return callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 125, in launch_version -*args, **kwargs -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 343, in _launch_callback -“Could not create folders on disk. Error reported: %s” % err -TankError: Could not create folders on disk. Error reported: Could not resolve row id for path! Please contact support! trying to resolve path ‘D:\UEProjects\SON\D:\UEProjects\SON’. Source data set: [{‘path_cache_row_id’: 2, ‘path’: ‘D:\UEProjects\SON’, ‘metadata’: {‘root_name’: ‘primary’, ‘type’: ‘project’}, ‘primary’: True, ‘entity’: {‘type’: ‘Project’, ‘id’: 91, ‘name’: ‘SON’}}] - -``` - -## What’s causing the error? - -The path of the UE4’s Project on disk which was `D:\UEProjects\PROJECT_NAME\` incorrect. - -## How to fix - -Creating a new folder for {% include product %}'s settings solves the issue. - -[See the full thread in the community](https://community.shotgridsoftware.com/t/error-launching-ue4-from-shotgun/8938). - diff --git a/docs/en/quick-answers/troubleshooting/where-are-my-log-files.md b/docs/en/quick-answers/troubleshooting/where-are-my-log-files.md deleted file mode 100644 index 487ef3b3f..000000000 --- a/docs/en/quick-answers/troubleshooting/where-are-my-log-files.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: Where are my log files? -pagename: where-are-my-log-files -lang: en ---- - -# Where are my log files? - -By default, {% include product %} Desktop and Integrations store their log files in the following directory: - -**Mac** - -`~/Library/Logs/Shotgun/` - -**Windows** - -`%APPDATA%\Shotgun\logs\` - -**Linux** - -`~/.shotgun/logs/` - -Log file names are in the form `tk-.log`. Examples include `tk-desktop.log` or `tk-maya.log`. - -If you've set the [`{% include product %}_HOME` environment variable](http://developer.shotgridsoftware.com/tk-core/utils.html#localfilestoragemanager) to override the user's cache location, then the log files will be located in: `$SHOTGUN_HOME/logs`. - -{% include info title="Note" content="You can also reach this directory from ShotGrid Desktop. Selecting a project, click the down-arrow button to the right of the project name, and choose **Open Log Folder**." %} diff --git a/docs/en/quick-answers/workflow.md b/docs/en/quick-answers/workflow.md deleted file mode 100644 index ae4ae5382..000000000 --- a/docs/en/quick-answers/workflow.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: Workflow -pagename: quick-answers-workflow -lang: en ---- - -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 deleted file mode 100644 index c89074fa2..000000000 --- a/docs/en/quick-answers/workflow/version-publishedfile-difference.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: What's the difference between a Version and a PublishedFile? -pagename: version-publishedfile-difference -lang: en ---- - -# What's the difference between a Version and a PublishedFile? - -A **"Publish"** represents a file (or an image sequence) or data on disk which can be used inside an application. It could be an exr sequence, an abc, a Maya file, etc. Publishes are represented by the `PublishedFile` entity in ShotGrid. - -A **"Version"** (the `Version` entity in ShotGrid) is the visual representation of a publish — and is used for review and taking notes. There is a field on the `Version` entity named Published Files which you can populate with any number of publish records to connect them together. This is how you can keep track of which review `Version` is associated with a group of publishes. We recommend that you populate this relationship when you publish. Versions are represented by the `Version` entity in ShotGrid. - -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/api/images/dv-api-permissions-ApiPermGroup-02.png b/docs/en/reference/api/images/dv-api-permissions-ApiPermGroup-02.png deleted file mode 100644 index e0e58994a..000000000 Binary files a/docs/en/reference/api/images/dv-api-permissions-ApiPermGroup-02.png and /dev/null differ diff --git a/docs/en/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png b/docs/en/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png deleted file mode 100644 index 7f52b7e73..000000000 Binary files a/docs/en/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png and /dev/null differ diff --git a/docs/en/reference/api/images/dv-developers-api-01-scripts-01.png b/docs/en/reference/api/images/dv-developers-api-01-scripts-01.png deleted file mode 100644 index 6b915c828..000000000 Binary files a/docs/en/reference/api/images/dv-developers-api-01-scripts-01.png and /dev/null differ diff --git a/docs/en/reference/api/images/dv-manage-scripts-application-key-02.png b/docs/en/reference/api/images/dv-manage-scripts-application-key-02.png deleted file mode 100644 index f3353d301..000000000 Binary files a/docs/en/reference/api/images/dv-manage-scripts-application-key-02.png and /dev/null differ diff --git a/docs/en/reference/api/images/dv-manage-scripts-script-01.png b/docs/en/reference/api/images/dv-manage-scripts-script-01.png deleted file mode 100644 index 69980b83c..000000000 Binary files a/docs/en/reference/api/images/dv-manage-scripts-script-01.png and /dev/null differ diff --git a/docs/en/reference/api/python-api-best-practices.md b/docs/en/reference/api/python-api-best-practices.md deleted file mode 100644 index e09ddb7ee..000000000 --- a/docs/en/reference/api/python-api-best-practices.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Python API best practices -pagename: python-api-best-practices -lang: en ---- - -# Python API best practices - - -Below is a list of best practices when using the {% include product %} Python API. - -## Performance - -1. Don’t request any fields you don’t need for your script. Including additional fields can add unnecessary overhead to your request. -2. Make your filters as specific as possible. Wherever possible, filtering in the API query rather than parsing it after you have the results back is better. -3. Exact match filters will perform better than partial match filters. For example, using “is” will perform better than “contains”. - -## Control and debugging - -1. Use separate keys for scripts, so you have a unique key for every tool. This is invaluable for debugging. -2. Make sure that every script has an owner or maintainer and the information is up to date in your Scripts page, under the Admin menu. -3. Consider creating a [read-only permission group for API users](https://developer.shotgridsoftware.com/bbae2ca7/) . Many scripts only need read access and this can limit your exposure to accidental changes. -4. Track which keys are in use so that old scripts can be removed. Some studios script auditing information in their API wrapper, to make this easier. -5. Check entity names and fields. {% include product %} has two names for each field: a display name that’s used in the UI (and isn’t necessarily unique) and an internal field name that’s used by the API. Because the display name can be changed at any point, you can’t reliably predict the field name from the display name. You can see field names by going to the fields option in the Admin menu, or you can use the `schema_read(), schema_field_read(), schema_entity_read() methods` , as described in [http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema](http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema). - -## Design - -1. For larger studios especially, consider having an API isolation layer—a wrapper. This isolates your tools from changes in the {% include product %} API. It also means that you can control API access, manage debugging, track auditing, etc. without needing to modify the API itself. -2. Use the latest version of the API. It will contain bug fixes and performance improvements. -3. Be aware of where the script will be run from. A script running on a render farm, where it will be calling to {% include product %} for the same information 1000’s of times per minute, can impact site performance. In cases like these, consider implementing a read-only caching layer to alleviate unnecessarily repetitive calls. -4. You can turn off event generation for scripts. This is most useful for scripts that are running very often whose events you won’t need to track later. For scripts that run extremely often, this is highly recommended as the event log can otherwise become very large. \ No newline at end of file diff --git a/docs/en/reference/api/python-api-create-manage.md b/docs/en/reference/api/python-api-create-manage.md deleted file mode 100644 index dca05b0f2..000000000 --- a/docs/en/reference/api/python-api-create-manage.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Create and manage API scripts -pagename: python-api-create-manage -lang: en ---- - -# Create and manage API scripts - - -Follow the steps below to create a new Script: - -1. Go to the Admin Menu and select “Scripts”. - ![Script](./images/dv-manage-scripts-script-01.png) -2. Create a new Script using the “+ Script” button. -3. Grab the value from the Application Key. You’ll need this to initiate a connection to {% include product %}. - ![Application key](./images/dv-manage-scripts-application-key-02.png) - - > **Note:** API keys are treated like passwords, and once created cannot be viewed again via the {% include product %} web app or API. Make sure you copy the key before proceeding. - -4. Now you can use your Script key to connect to {% include product %}. See [“{% include product %} Methods” in our API documentation](http://developer.shotgridsoftware.com/python-api/reference.html#shotgun-methods) to learn more about how to connect to {% include product %} with your Script. - -> **Tip:** If for some reason you need to reset the Application Key of your Script, you’ll need to create a new {% include product %} Script entity to do so. First rename your existing Script to something like “[My Script]—OLD”, then delete it. Create a new Script. The reason you need to rename the old one is that {% include product %} requires unique names for each Script. - -## When to set up a new Script - -Script actions can be logged. The more fine-grained the use of individual Script keys, the easier it will be for you to track which Script is making changes for debugging. Having separate Scripts is also a good way to track which Scripts will be impacted by changes on your {% include product %} site and who maintains the Script. \ No newline at end of file diff --git a/docs/en/reference/api/python-api-overview.md b/docs/en/reference/api/python-api-overview.md deleted file mode 100644 index 0fa8ef99a..000000000 --- a/docs/en/reference/api/python-api-overview.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: API Overview -pagename: python-api-overview -lang: en ---- - -# API Overview - -**Note:** For more information about the {% include product %} API, see our [API documentation](http://developer.shotgridsoftware.com/python-api/) . - -The {% include product %} Python Application Programming Interface (API) enables users to easily integrate their tools with {% include product %}. Through it you can create automated processes, integrate with many third party software packages, and communicate with existing tools within your studio. Because the needs of every studio are very different, the {% include product %} API provides powerful, low-level functionality and leaves most of the business logic to you. - -The API is built using [Python](https://www.python.org/) , a common programming language used widely across the media and entertainment industry. Use of the [{% include product %} Python API](https://github.com/shotgunsoftware/python-api) is included for free with your {% include product %} site. - -The API follows the CRUD pattern, allowing your script to run Create, Read, Update, and Delete actions for a single entity type. Many operations include the ability to define filters, columns to return, and sort results. - -In order to communicate with the {% include product %} server via the API, your script can authenticate with the server either by providing a user’s credentials or by utilizing a script key. You can generate new script keys from the Scripts page, listed in the Admin menu: - -![Scripts](./images/dv-developers-api-01-scripts-01.png) - -**Tip:** Register your scripts separately and have individual API keys for each. This will help you to monitor each of your scripts and the actions they are performing much more accurately in the [event logs](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_event_logs_html) . - -## Common first projects - -You can download the API at [https://github.com/shotgunsoftware/python-api](https://github.com/shotgunsoftware/python-api) . Some common first projects include: - -1. [Creating a Version and linking it to a Shot](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_create_version_link_shot.html) . Allows you to automate the submission of new renders for review. -2. [Uploading a thumbnail](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_upload_thumbnail_version.html) . Everything on your site can have an up-to-date thumbnail without manually adding them. -3. [Integrating {% include product %} with your code repository such as SVN](http://developer.shotgridsoftware.com/python-api/cookbook/examples/svn_integration.html) . Utilize {% include product %} to project manage any software development. - -## Some things you can’t do with the API - -* Access or alter permission rules, for security reasons -* Read or alter page settings -* Access filter or query settings for individual pages or widgets -* Interact with the UI -* Add, edit, or remove conditional formatting rules -* Create or edit query fields - -## Action Menu Items (AMIs) - -If you write a script that you want to easily launch from within the {% include product %} interface, you can do so via [AMIs](https://developer.shotgridsoftware.com/67695b40/) . These are customizable options that appear in context menus you get when right-clicking on a row of data. When clicked, they will send a contextual data dump to a web server or a custom browser protocol handler, where you can then run custom business logic. - -You can set up different AMIs for different entities, and can restrict access to them by project or by permission group. - -## Event Trigger Daemon - -Every action performed in {% include product %} (either by a user or an API script) generates an Event. The [Event Daemon](https://github.com/shotgunsoftware/shotgunEvents) can monitor that event stream and then execute specific API scripts based on conditions you define. Some examples include: - -* Automatically changing downstream Task statuses based on the status of upstream Tasks. -* Recalculating relevant cut duration fields when values change. -* Performing file packaging and transfer operations when a Shot is set to a particular status. - -## Additional information - -For more information about the {% include product %} API, see these articles: - -* [Download the {% include product %} API from GitHub](https://github.com/shotgunsoftware/python-api/) -* [{% include product %} API documentation](http://developer.shotgridsoftware.com/python-api/) -* [{% include product %}-dev list (Public)](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) -* [{% include product %} Event Daemon sample code](https://github.com/shotgunsoftware/shotgunEvents) -* [Writing event driven triggers](https://developer.shotgridsoftware.com/0d8a11d9/) -* [{% include product %} schema](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_ar_shotgun_schema_html) -* [API best practices](https://developer.shotgridsoftware.com/09b77cf4/) - -## Contribute and collaborate - -Have you made some amazing tools with {% include product %} you want to share with the world? Awesome! We have an active and vibrant [developer community](https://community.shotgridsoftware.com/) who love to share and collaborate with each other. To get involved: - -* Join the [{% include product %} Community](https://community.shotgridsoftware.com/) . -* Post your code to [GitHub](https://github.com/) (make sure your code isn’t pipeline specific, is well documented, and has a README in either .txt or .mdk format). -* Post a link and description to the dev list. The dev community and {% include product %} developers will check it out, provide feedback, and sing your praises. - -We are constantly amazed and inspired by many of the tools and integrations made by our clients. Show us what you can do! \ No newline at end of file diff --git a/docs/en/reference/api/python-api-permissions.md b/docs/en/reference/api/python-api-permissions.md deleted file mode 100644 index ef1cf483f..000000000 --- a/docs/en/reference/api/python-api-permissions.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: API user permission groups -pagename: python-api-permissions -lang: en ---- - -# API user permission groups - - -You can create separate Permission Groups for API users so that your scripts and keys can have different permission levels just like your People. - -## Accessing the API user page - -Go to your Admin Menu and select Permissions - Scripts. - -![](./images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png) - -Refer to the [](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_site_configuration_ar_permissions_html) for usage. - -## How to use API user permission groups - -Once you have created API permissions groups beyond the initial API Admin, you can use them for your API scripts. - -1. From the Admin menu, select "Scripts." -2. Display the Permission Group column and select the appropriate Permission Group. - ![API permission group](./images/dv-api-permissions-ApiPermGroup-02.png) - -## Examples - -So why would you use this? There are many potential uses, but here are a couple to get you thinking: - -**Example 1:** You want to give an API key to someone in your studio who should not have full Admin privileges. - -**Example 2:** You want to give a read-only API key to a partner studio to perform a one-way sync from your {{ akn_product_name }} database to their {{ akn_product_name }} Database, and only expose a limited entity set. - -**Example 3:** You want to restrict API scripts per project. - -1. Navigate to your **Permissions - Scripts** page via the Admin menu and create a new role. Make sure the "See Assigned Projects Only" advanced permission is enabled. You can also tweak any other permissions needed (e.g. if you only wanted them to have Read access on certain entities/fields). -2. Navigate to the **Scripts** page via the Admin menu. Expose the "Projects" field. Here you can enter in Projects to restrict the script's scope to. -3. Make sure to assign that script permission to the new one created in step 1, via the "Permission Group" field. \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations.md b/docs/en/reference/pipeline-integrations.md deleted file mode 100644 index 2925d5840..000000000 --- a/docs/en/reference/pipeline-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Pipeline Integration Components -pagename: pipeline-integrations-reference -lang: en ---- - -# Pipeline Integration Components - -Here you'll find reference documentation for components of the Toolkit platform. diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-export-flare_review.png b/docs/en/reference/pipeline-integrations/images/apps/flame-export-flare_review.png deleted file mode 100644 index d8789830f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-export-flare_review.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-export-menu.png b/docs/en/reference/pipeline-integrations/images/apps/flame-export-menu.png deleted file mode 100644 index ca7d88866..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-export-menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-export-render_range.png b/docs/en/reference/pipeline-integrations/images/apps/flame-export-render_range.png deleted file mode 100644 index 9c70b2958..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-export-render_range.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-export-shot_export.png b/docs/en/reference/pipeline-integrations/images/apps/flame-export-shot_export.png deleted file mode 100644 index 15451eb68..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-export-shot_export.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-review-menu.png b/docs/en/reference/pipeline-integrations/images/apps/flame-review-menu.png deleted file mode 100644 index b92701194..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-review-menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-review-select.png b/docs/en/reference/pipeline-integrations/images/apps/flame-review-select.png deleted file mode 100644 index a1dbb0191..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-review-select.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/flame-review-ui.png b/docs/en/reference/pipeline-integrations/images/apps/flame-review-ui.png deleted file mode 100644 index f0193ed1a..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/flame-review-ui.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-collate.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-collate.png deleted file mode 100644 index ed1e483ab..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-collate.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-collate_ex.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-collate_ex.png deleted file mode 100644 index 63f16e145..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-collate_ex.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-cut_type.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-cut_type.png deleted file mode 100644 index 8d3cb7b4f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-cut_type.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-export_queue.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-export_queue.png deleted file mode 100644 index 9abbc3881..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-export_queue.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-export_window.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-export_window.png deleted file mode 100644 index 318a6cd59..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-export_window.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-finder.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-finder.png deleted file mode 100644 index bf11c85b1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-finder.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png deleted file mode 100644 index e439c7a51..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png deleted file mode 100644 index 203f9b18a..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-paths.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-paths.png deleted file mode 100644 index d61be78a9..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-paths.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-processor.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-processor.png deleted file mode 100644 index 4e12342a2..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-processor.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png b/docs/en/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png deleted file mode 100644 index e468bc217..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png deleted file mode 100644 index a85e4e017..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png deleted file mode 100644 index f5def6a5a..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png deleted file mode 100644 index 37a09983c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png deleted file mode 100644 index 91d3ba01b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png deleted file mode 100644 index 05c6398e9..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png deleted file mode 100644 index 35632b864..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png b/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png deleted file mode 100644 index e814ec416..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about1.png b/docs/en/reference/pipeline-integrations/images/apps/multi-about-about1.png deleted file mode 100644 index 1aa45ba11..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about2.png b/docs/en/reference/pipeline-integrations/images/apps/multi-about-about2.png deleted file mode 100644 index ed35ef07d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about3.png b/docs/en/reference/pipeline-integrations/images/apps/multi-about-about3.png deleted file mode 100644 index b1b2a6021..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-about-about3.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-about-menu.png b/docs/en/reference/pipeline-integrations/images/apps/multi-about-menu.png deleted file mode 100644 index a6d8e2678..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-about-menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png b/docs/en/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png deleted file mode 100644 index 3359f997f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png b/docs/en/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png deleted file mode 100644 index c6d9092d3..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png b/docs/en/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png deleted file mode 100644 index 372911c00..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png b/docs/en/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png deleted file mode 100644 index a1dc359b8..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png b/docs/en/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png deleted file mode 100644 index e9ed0d859..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png b/docs/en/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png deleted file mode 100644 index 00a6835d7..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png deleted file mode 100644 index 2bd507494..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png deleted file mode 100644 index aa85e3c28..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png deleted file mode 100644 index 0a3388fda..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png deleted file mode 100644 index 9cb68f6f8..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png deleted file mode 100644 index b1158fac5..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png deleted file mode 100644 index 15d7915a1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png deleted file mode 100644 index 3bc7fd92e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png deleted file mode 100644 index b26858fb7..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png b/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png deleted file mode 100644 index 0e4573387..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png b/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png deleted file mode 100644 index 4fc670c15..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png b/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png deleted file mode 100644 index c2fbf8dab..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png b/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png deleted file mode 100644 index 03b34104b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png b/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png deleted file mode 100644 index 04074cc3b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png b/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png deleted file mode 100644 index e90d813d8..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png b/docs/en/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png deleted file mode 100644 index 9b68e723b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png deleted file mode 100644 index 5b911971b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png deleted file mode 100644 index 41ed9c605..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png deleted file mode 100644 index 472e1e67b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png deleted file mode 100644 index d1174da4e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png deleted file mode 100644 index 0055f737c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png deleted file mode 100644 index 67bae3004..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png deleted file mode 100644 index 91133b8b5..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png deleted file mode 100644 index c2fa2072f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png deleted file mode 100644 index ade8501c2..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png b/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png deleted file mode 100644 index 8ce560526..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png deleted file mode 100644 index 8fd8f0e08..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png deleted file mode 100644 index 104c14d94..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png deleted file mode 100644 index cb643e59b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png deleted file mode 100644 index 47e9dd91c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png deleted file mode 100644 index b6dae9e26..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png deleted file mode 100644 index 79539ae8c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png deleted file mode 100644 index 214837b4d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png b/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png deleted file mode 100644 index c6e55b150..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/sg_publisher_1.png b/docs/en/reference/pipeline-integrations/images/apps/sg_publisher_1.png deleted file mode 100644 index 3b5afe00d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/sg_publisher_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png b/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png deleted file mode 100644 index ed4f5e4ea..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png b/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png deleted file mode 100644 index 558b0eb77..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png b/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png deleted file mode 100644 index b80b0bf5c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png b/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png deleted file mode 100644 index 32804154a..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/3ds_max_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/3ds_max_icon_256.png deleted file mode 100644 index f118d3689..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/3ds_max_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/3dsmax_engine.png b/docs/en/reference/pipeline-integrations/images/engines/3dsmax_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/3dsmax_engine.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png b/docs/en/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/AE_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/AE_icon_256.png deleted file mode 100644 index 283e5f2ef..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/AE_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/add_shelf.png b/docs/en/reference/pipeline-integrations/images/engines/add_shelf.png deleted file mode 100644 index f759de6d6..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/add_shelf.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/aftereffects_extension.png b/docs/en/reference/pipeline-integrations/images/engines/aftereffects_extension.png deleted file mode 100644 index e21656265..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/aftereffects_extension.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/alias_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/alias_icon_256.png deleted file mode 100644 index 627dad65b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/alias_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/create-dcc-01.png b/docs/en/reference/pipeline-integrations/images/engines/create-dcc-01.png deleted file mode 100644 index e7127fa75..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/create-dcc-01.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/create-dcc-02.png b/docs/en/reference/pipeline-integrations/images/engines/create-dcc-02.png deleted file mode 100644 index b344e1980..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/create-dcc-02.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/create_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/create_icon_256.png deleted file mode 100644 index 4aa7e6897..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/create_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/desktop_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/desktop_icon_256.png deleted file mode 100644 index 6d0cc047f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/desktop_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_commands.png b/docs/en/reference/pipeline-integrations/images/engines/extension_commands.png deleted file mode 100644 index 2af1af61e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_commands.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_components.png b/docs/en/reference/pipeline-integrations/images/engines/extension_components.png deleted file mode 100644 index c3fa583b4..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_components.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_console.png b/docs/en/reference/pipeline-integrations/images/engines/extension_console.png deleted file mode 100644 index ba4b4d4a1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_console.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_context_menu.png b/docs/en/reference/pipeline-integrations/images/engines/extension_context_menu.png deleted file mode 100644 index acd7fe8dd..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_context_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_header.png b/docs/en/reference/pipeline-integrations/images/engines/extension_header.png deleted file mode 100644 index 0c12b1097..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_header.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_menu.png b/docs/en/reference/pipeline-integrations/images/engines/extension_menu.png deleted file mode 100644 index b076e8ad3..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/extension_shelf.png b/docs/en/reference/pipeline-integrations/images/engines/extension_shelf.png deleted file mode 100644 index fd5d39255..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/extension_shelf.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/flame_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/flame_icon_256.png deleted file mode 100644 index ddbcf597d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/flame_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/flame_project.png b/docs/en/reference/pipeline-integrations/images/engines/flame_project.png deleted file mode 100644 index b9ccfaf80..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/flame_project.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/houdini_engine.png b/docs/en/reference/pipeline-integrations/images/engines/houdini_engine.png deleted file mode 100644 index 8d3e51b69..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/houdini_engine.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/houdini_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/houdini_icon_256.png deleted file mode 100644 index 11cfa46dc..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/houdini_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/houdini_menu.png b/docs/en/reference/pipeline-integrations/images/engines/houdini_menu.png deleted file mode 100644 index 178cfe9cd..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/houdini_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/houdini_shelf.png b/docs/en/reference/pipeline-integrations/images/engines/houdini_shelf.png deleted file mode 100644 index 66fc34963..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/houdini_shelf.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/mari_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/mari_icon_256.png deleted file mode 100644 index 8718051f2..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/mari_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/maya_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/maya_icon_256.png deleted file mode 100644 index 86be3664d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/maya_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/maya_menu.png b/docs/en/reference/pipeline-integrations/images/engines/maya_menu.png deleted file mode 100644 index d3bf18dc1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/maya_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/mobu.png b/docs/en/reference/pipeline-integrations/images/engines/mobu.png deleted file mode 100644 index bbdd364ab..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/mobu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/mobu_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/mobu_icon_256.png deleted file mode 100644 index c20fb91a8..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/mobu_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-favourites.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-favourites.png deleted file mode 100644 index 2e0efcf68..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-favourites.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-gizmo.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-gizmo.png deleted file mode 100644 index 25dcda35e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-gizmo.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png deleted file mode 100644 index 3d5f16498..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png deleted file mode 100644 index aa7dea45c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png deleted file mode 100644 index 28b74d2fc..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-menu.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-menu.png deleted file mode 100644 index 2f157f594..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png b/docs/en/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png deleted file mode 100644 index 595bac2b1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/nuke_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/nuke_icon_256.png deleted file mode 100644 index c0813fdf0..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/nuke_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/otls_path.png b/docs/en/reference/pipeline-integrations/images/engines/otls_path.png deleted file mode 100644 index 3ab2fb93e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/otls_path.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshop_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/photoshop_icon_256.png deleted file mode 100644 index 37146fc57..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshop_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png deleted file mode 100644 index 5571e225c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png deleted file mode 100644 index 57da52f74..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png deleted file mode 100644 index 0d2c32f8a..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png deleted file mode 100644 index 465a995eb..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png deleted file mode 100644 index 6aca7d66f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png deleted file mode 100644 index 445c3871e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png deleted file mode 100644 index 29a9d8e17..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png b/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png deleted file mode 100644 index 6c5826a46..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/processes.png b/docs/en/reference/pipeline-integrations/images/engines/processes.png deleted file mode 100644 index f1377ddc5..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/processes.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png b/docs/en/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png deleted file mode 100644 index c4cd16a61..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/sg_mobu_1.png b/docs/en/reference/pipeline-integrations/images/engines/sg_mobu_1.png deleted file mode 100644 index 55ec54104..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/sg_mobu_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/sg_shell_1.png b/docs/en/reference/pipeline-integrations/images/engines/sg_shell_1.png deleted file mode 100644 index 678e3b7c3..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/sg_shell_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png b/docs/en/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png deleted file mode 100644 index 5fefa1ddf..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/sg_softimage_1.png b/docs/en/reference/pipeline-integrations/images/engines/sg_softimage_1.png deleted file mode 100644 index 3064fca61..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/sg_softimage_1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/shell_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/shell_icon_256.png deleted file mode 100644 index 03cdc603b..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/shell_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/shotgrid_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/shotgrid_icon_256.png deleted file mode 100644 index 6d0cc047f..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/shotgrid_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/shotgun-action1.png b/docs/en/reference/pipeline-integrations/images/engines/shotgun-action1.png deleted file mode 100644 index 7aaa032ee..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/shotgun-action1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/shotgun-action2.png b/docs/en/reference/pipeline-integrations/images/engines/shotgun-action2.png deleted file mode 100644 index 5a1fe011c..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/shotgun-action2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/softimage_menu.png b/docs/en/reference/pipeline-integrations/images/engines/softimage_menu.png deleted file mode 100644 index 9b16e56d1..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/softimage_menu.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/engines/vred_icon_256.png b/docs/en/reference/pipeline-integrations/images/engines/vred_icon_256.png deleted file mode 100644 index dd5c5954e..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/engines/vred_icon_256.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/env-config-ref/1.png b/docs/en/reference/pipeline-integrations/images/env-config-ref/1.png deleted file mode 100644 index 98a5e1533..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/env-config-ref/1.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/images/env-config-ref/2.png b/docs/en/reference/pipeline-integrations/images/env-config-ref/2.png deleted file mode 100644 index 236ac183d..000000000 Binary files a/docs/en/reference/pipeline-integrations/images/env-config-ref/2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/toolkit-apis.md b/docs/en/reference/pipeline-integrations/toolkit-apis.md deleted file mode 100644 index 9ed5a2123..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apis.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: APIs -pagename: toolkit-apis -lang: en ---- - -# Toolkit APIs - -Here you'll find reference documentation for APIs provided by the Toolkit platform. diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps.md b/docs/en/reference/pipeline-integrations/toolkit-apps.md deleted file mode 100644 index 03a16011d..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Apps -pagename: toolkit-apps -lang: en ---- - -# Toolkit Apps - -Here you'll find reference documentation for apps available for the Toolkit platform. 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 deleted file mode 100644 index 173f997d5..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: default -title: Flame Export -pagename: tk-flame-export -lang: en ---- - -# Flame Export - -The {% include product %} Flame Export App helps kickstart your project! - -Once you have created an initial conform in Flame, the Shot Exporter can help you quickly -generate content in {% include product %}, render out plates to disk and send content to review. - -Once you are up and running, the exporter app will also track all the renders happening in Flare or in Flame batch mode, making it easy to send content to review as part of your workflow. - -## Pushing a conform to {% include product %} - -Once you have your conform set up in Flame for a sequence, and have **allocated shot names** to all the segments in your timeline, select the sequence, right click and choose the {% include product %} Shot Export option. - -![menu](../images/apps/flame-export-menu.png) - -This will bring up a {% include product %} UI where you can enter some initial comments for your publish. These comments will be sent to review and also used when adding description to publishes and other content. - -In addition to the description, you can also select which output data format you want to use for your exported plates. These presets are part of the toolkit app configuration and can be configured to suit the needs of your studio. - -![shot_export](../images/apps/flame-export-shot_export.png) - -Once you click the submit button, a number of things will happen straight away: - -- Shots and Tasks will be created in {% include product %}. The list of tasks to associate with each new Shot that gets created is configurable via a Task template setting to make it quick and painless to create consistent structures. The shots will be parented under a sequence by default, but this is also configurable and if you are working with Scenes or Episodes, it is possible to reconfigure the exporter to work with these instead. - -- Once {% include product %} contains the right data, folders will be created on disk using the standard folder creation mechanism. This ensures that the project can be kick-started with a set of consistent folders for all shots that are being created. - -Once the two steps above have been carried out, you have the basic structure to proceed with further steps. These will happen in the background: - -- Plates will be exported on disk for each shot according to the presets defined in your configuation. File locations are defined using the Toolkit Template system, meaning that the location of these plates will be well defined and understood by other tools downstream in the pipeline. - -- Batch files and clip xml files will be exported. These are used by Flame to enable an iterative workflow where you can quickly render out new versions that are later pulled in to the main conform in Flame. - -- 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. - -![render_range](../images/apps/flame-export-render_range.png) - -Toolkit will display a dialog at this point where you can choose to send the render to {% include product %} review or not. - -![flaver_review](../images/apps/flame-export-flare_review.png) - -Files will be published and tracked by {% include product %} and optionally also sent to review. - -## Want to learn more? - -If you want to learn more, and see this workflow in action, head over to -the Flame engine documentation where we also have some video content that demonstrates the various workflows in action. - -LINKBOX_ENGINE:{% include product %}software/tk-flame:The Flame Engine - -As always, if you have question regarding integration or customization, don't hesitate to visit our [support site](https://knowledge.autodesk.com/contact-support). - -# Advanced Topics - -Below you'll find more advanced details relating to configuration and customization - -## 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. - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -## Customizing ffmpeg - -When the exporter generates quicktimes, it uses a version of ffmpeg which comes distributed with Flame. By modifying the settings hook in the exporter, you can specify an external version of ffmpeg to use instead of the built-in one. The version of ffmpeg distributed with Flame is tracking the very latest advancements in ffmpeg transcoding and performance, so sometimes using the latest version may result in performance improvements. - -Please note that the way h264 parameters are passed to ffmpeg has changed between the version that is used by default and the latest versions. By switching to the latest generation of ffmpeg, it is possible to implement exactly the recommended transcoding guidelines that results in optimal upload and performance on the {% include product %} side. You can find these guidelines here: - -https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -We only recommend changing the ffmpeg version if you are an advanced user. In that case, follow these steps: - -### Copying the settings hook - -All settings that need to be modified can be found in the settings hook that comes shipped with the Flame export app. In order to modify this hook, you first need to copy this hook file from its default location inside the app location into your configuration. Inside your project configuration, you'll typically find the hook file in a location similar to `install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py`. Copy this file into the `hooks` location inside of your configuration, e.g. `config/hooks`. We recommend renaming it to something a little more verbose than just `settings.py` in order to make it clear what it is: - -``` -install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py -> config/hooks/flame_export_settings.py -``` - -Now edit your Flame environment configuration file. This is typically `config/env/includes/flame.yml`. Under the `tk-flame-export` heading, you'll find the path to the hook being defined as `settings_hook: '{self}/settings.py'`. This essentially means that the configuration will look for the hook file inside the app location (e.g. `{self}`). Changing this to `settings_hook: '{config}/flame_export_settings.py'` will tell Toolkit to look for the hook file inside the configuration instad. In summary: - -``` -settings_hook: '{self}/settings.py' -> '{config}/flame_export_settings.py' -``` - -### Modifying the hook - -Now we are ready to start modifying our `config/hooks/flame_export_settings.py` hook! Open it up in a text editor. You'll notice several methods relating to ffmpeg and ffmpeg settings. The first one to modify is the following: - -``` -def get_external_ffmpeg_location(self): - """ - Control which version of ffmpeg you want to use when doing transcoding. - By default, this hook returns None, indicating that the app should use - the built-in version of ffmpeg that comes with Flame. - - If you want to use a different version of ffmpeg, simply return the path - to the ffmpeg binary here. - - :returns: path to ffmpeg as str, or None if the default should be used. - """ - return None -``` - -By returning `None` by default, the exporter will use Flame's built-in ffmpeg. Change this to return a full path to your ffmpeg. Keep in mind that if you are running a backburner cluster, ffmpeg may be called from any machines in the cluster, so make sure the executable is installed everywhere. - -Now that once the ffmpeg location is updated, you most likely either need or want to tweak the parameters passed to ffmpeg. This needs to be changed in two different methods: - -- `get_ffmpeg_quicktime_encode_parameters` will return the parameters used when generating a quicktime to be uploaded to {% include product %}. - -- `get_local_quicktime_ffmpeg_encode_parameters` will return the parameters used when a quicktime is written to disk. - -For the {% include product %} upload, we recommend using the default {% include product %} encoding settings as a starting point: - -``` -def get_ffmpeg_quicktime_encode_parameters(self): - return "-vcodec libx264 -pix_fmt yuv420p -vf 'scale=trunc((a*oh)/2)*2:720' -g 30 -b:v 2000k -vprofile high -bf 0" -``` - -For the local {% include product %} transcode, we recommend basing your settings on the {% include product %} transcode settings but removing the resolution constraints and increasing the bit rate: - -``` -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 deleted file mode 100644 index 7e7ddbd8b..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Flame Review -pagename: tk-flame-review -lang: en ---- - -# Flame Review - -The {% include product %} Flame Review App makes it easy to push one or more sequences from Flame into {% include product %} review. - -Simply right click a sequence or a selection of sequences that you want to review: - -![menu](../images/apps/flame-review-menu.png) - -Select the {% include product %} Review Option: - -![select](../images/apps/flame-review-select.png) - -A Toolkit UI will appear where you can add some review notes: - -![UI](../images/apps/flame-review-ui.png) - -When you click ok, a background job will be generated and everything will happen behind the scenes. -The following steps will be carried out: - -- The Sequence will be exported to disk as a quicktime. This export is handled as a Flame Quicktime export and you have complete control of the various settings via a configuration hook. - -- Once the sequence is complete, Toolkit will check if there is a matching Sequence in {% include product %}. If not, a Sequence will be created automatically. - -- A review version will be generated and associated with the sequence. - -- Lastly, the quicktime will be uploaded to the review version. - -The process supports audio tracks, transitions etc and should be a "what you see is what you get". Once in {% include product %}, you can review the media in many different ways, including the client review site and the {% include product %} iPhone app. - -## Customization and Settings - -The Flame Review app can be customized in a couple of different ways: - -- You can control which **Entity Type** that should be used in {% include product %} to represent a Sequnce in Flame. For example, if you are working on episodic content, it may make more sense to link your review versions to episodes in {% include product %} rather than sequences. - -- 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 deleted file mode 100644 index 6a4ee6c6b..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -layout: default -title: Hiero/Nuke Studio Export -pagename: tk-hiero-export -lang: en ---- - -# Hiero/Nuke Studio Export - -### Introduction - -This app adds {% include product %} awareness to Hiero's export dialog for sequences. - -#### Overview Video & Demo - -If you're new to {% include product %} Toolkit or the Hiero integration, check out the following video which gives a fast-paced overview of what you can do in your pipeline with the {% include product %} Toolkit Hiero integration. - -If you're already familiar with Toolkit and Hiero, then feel free to continue on to the docs below. - -
- -
- -### {% include product %} Shot Processor - -When this app activates itself it registers a bunch of changes with the Hiero export dialog: - -![export_window](../images/apps/hiero-export_window.png) - -The first thing to notice is the new processor that is registered: - -![processor](../images/apps/hiero-processor.png) - -When you click on this processor, there are some new things to notice. - -At the top of the dialog, there is extra UI that helps control how shots get created/updated in {% include product %} as a result of exporting the sequence: - -![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. - -### 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. - -![collate](../images/apps/hiero-collate.png) - -For example, assume we have two track items representing shots 010 and 020. 010 comes first and 020 overlaps with the end of 010 on a different track. Since 010 comes first, it's the hero and with collating enabled, {% include product %} treats the two items as a single shot, 010. This means Shot 010 will be created or updated in {% include product %}. The cut in will match the beginning of track item 010 and the cut out will match the end of track item 020. A Screening Room-ready Version will be created for each item, but both will be linked to Shot 010. A plate will be created for each item as a Published File but both will be linked to Shot 010. A single Nuke script will be published linked to Shot 010 containing 2 read nodes, one for each item. Note that in this situation, there is no creation or update to Shot 020 in {% include product %}, since it has been collated into Shot 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: - -![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. - -For example, in your Toolkit `templates.yml` file, say you define a key with the following: - -``` - resolution: - type: str - filter_by: alphanumeric -``` - -In your `project.yml` settings for `tk-hiero-export` you have: - -``` - ... - ... - tk-hiero: - apps: - tk-hiero-export: - custom_template_fields: - - {description: Shot Resolution, keyword: resolution} - ... - ... -``` - -And then you modify the `resolve_custom_strings` hook with something like the following: - -``` -# Copyright (c) 2014 {% include product %} Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the {% include product %} Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by {% include product %} Software Inc. - -from tank import Hook - - -class HieroResolveCustomStrings(Hook): - """Translates a keyword string into its resolved value for a given task.""" - - RESOLUTION_TOKEN_NAME = "{resolution}" - - - def execute(self, task, keyword, **kwargs): - """ - """ - - self.parent.log_debug("attempting to resolve custom keyword: %s" % keyword) - if keyword == self.RESOLUTION_TOKEN_NAME: - translated_value = self._clip_resolution_string(task) - else: - raise RuntimeError("No translation handler found for custom_template_field: %s" % keyword) - - self.parent.log_debug("Custom resolver: %s -> %s" % (keyword, translated_value)) - return translated_value - - - # 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() - 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'] - height = task_reformat_settings['height'] - - return "%sx%s" % (width, height) -``` - -You can now not only use the `resolution` token in Hiero but it will validate against any template paths you have defined in Toolkit so you can export to a location like: - -``` - hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov" -``` - - -### {% include product %} Tasks -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. - -##### {% 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) - -The app settings `plate_published_file_type` and `nuke_script_published_file_type` allow you to control what file type the PublishedFiles are registered as. In addition, `nuke_script_toolkit_write_nodes` allows you to control which WriteNode settings should be available in the export dialog. - -### Export process - -When the export is run, there will be some extra tasks that show up in the export queue: - -![export_queue](../images/apps/hiero-export_queue.png) - -Each shot will run a {% include product %}ShotUpdater tasks that is responsible for creating the Shot in {% include product %} and creating the full Shot structure specified in the schema configuration: - -![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 -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**. - -### 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 -**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**. - -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 -export UI. - -![cut_type](../images/apps/hiero-cut_type.png) - -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. - -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. 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 deleted file mode 100644 index 5f996200a..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Hiero/Nuke Studio Open in ShotGrid -pagename: tk-hiero-openinshotgun -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 -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 -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} -``` - - - 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 deleted file mode 100644 index 0bd39a42a..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: Houdini Alembic Node -pagename: tk-houdini-alembicnode -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. - -## General Use - -In order to use the {% include product %} Alembic Output, save your script as a Toolkit work file first and then create a new node via the TAB menu in Houdini. This will create a node which looks similar to a normal Alembic output node: - -![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. - -![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. - -![Alembic Node](../images/apps/houdini-alembicnode-computed_path.png) - -The output alembic files will be versioned and the version number will always follow the current Houdini scene file version which will be incremented automatically when you publish using Multi Publish. - -## Configuration - -The Toolkit alembic node provides the ability to specify multiple output profiles for an environment configuration. Here's an example of configuring the node with multiple profiles: - -
-  tk-houdini:
-    apps:
-      tk-houdini-alembicnode:
-        location: 
-          name: tk-houdini-alembicnode
-          type: app_store
-          version: v0.2.2
-        work_file_template: houdini_shot_work
-        default_node_name: tk_alembic_out
-        output_profiles:
-          - name: For Publishing
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_cache_template: houdini_shot_work_alembic_cache
-          - name: Local Testing
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            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. 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 deleted file mode 100644 index 72984f85e..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: Houdini Mantra Node -pagename: tk-houdini-mantranode -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. - -## General Use - -In order to use the {% include product %} Mantra Node, save your script as a Toolkit work file first and then create a new node via the TAB menu in Houdini. This will create a node which looks similar to a normal Mantra output node: - -![Mantra Node](../images/apps/houdini-mantranode-create_node.png) - -The node can be configured with multiple output profiles, each using a different set of template paths for where the render output (images, ifd, dcm, aov, etc) should be written to disk. - -![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. - -![Mantra Node](../images/apps/houdini-mantranode-computed_path.png) - -The rendered files will be versioned and the version number will always follow the current Houdini scene file version which will be incremented automatically when you publish using Multi Publish. - -## Configuration - -The Toolkit mantra node provides the ability to specify multiple output profiles for an environment configuration. Here's an example of configuring the node with multiple profiles: - -
-  tk-houdini:
-    apps:
-      tk-houdini-mantranode:
-        location: 
-          name: tk-houdini-mantranode
-          type: dev
-          version: v0.2.2
-        default_node_name: tk_mantra_out
-        work_file_template: houdini_shot_work
-        output_profiles:
-          - name: Primary Render
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_render_template: houdini_shot_render
-            output_ifd_template: houdini_shot_ifd
-            output_dcm_template: houdini_shot_dcm
-            output_extra_plane_template: houdini_shot_extra_plane
-          - name: Local Render
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_render_template: houdini_shot_local_render
-            output_ifd_template: houdini_shot_local_ifd
-            output_dcm_template: houdini_shot_local_dcm
-            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 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 deleted file mode 100644 index 81c2e8fa6..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Mari Project Manager -pagename: tk-mari-projectmanager -lang: en ---- - -# Mari Project Manager - -The Mari Project Manager streamlines the process of creating new projects in Mari, allowing artists to quickly select published geometry to load using the {% include product %} Loader. Projects created with this app are {% include product %} aware, helping artists publish textures to other parts of the pipeline without having to be concerned about export options and file locations. - 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 deleted file mode 100644 index 916c5b92c..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: About -pagename: tk-multi-about -lang: en ---- - -# About - -This app gives a graphical breakdown of the current work area and all the apps running in the current environment. You can find it on the Context Menu: - -![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! - - -In addition to the reload feature, this apps shows a breakdown of your current work area and all the apps that are currently loaded. - -Three separate views exist: - -## Current Work Area - -![screenshot](../images/apps/multi-about-about1.png) - -This shows the current Shot or Asset, the current Task etc. If you double click any of the items in the list, the system will open the {% include product %} Detail page for that item. - -## Running Apps - -![screenshot](../images/apps/multi-about-about2.png) - -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 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 deleted file mode 100644 index 093ad4a8c..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: default -title: Breakdown -pagename: tk-multi-breakdown -lang: en ---- - -# Breakdown - -The Scene Breakdown app shows you a list of referenced content and tells you which items are out of date. You access it from the {% include product %} Menu. - -![Overview of the breakdown](../images/apps/multi-breakdown-breakdown.png) - -You can select one more more items and hit update selected. This will switch the items to use the latest version of the content. - -## Scanning the Scene - -When the breakdown app scans the scene for references, it will call a special scanning hook. The scanning hook will return a list of nodes with file corresponding paths. For each reference it finds, it returns the file path, and tank will look at the file path and first check if it recognizes it as a publish, and if it does, see if there is a more recent version available. - -If the user clicks the update button that is shown for outdated versions, the app will call another hook to do the actual update work. This means that by customizing these hooks it is relatively simple to add new custom nodes to the breakdown. - -## Accessing {% include product %} Data - -If you need to access {% include product %} data for the publish you are about to update to in the hook, this is straight forward; a single call to `find_publish` will retrieve metadata for all the items passed in from the app, like this: - -```python -class BreakdownHook(Hook): - - def update(self, items): - """ - Perform replacements given a number of scene items passed from the app. - - Once a selection has been performed in the main UI and the user clicks - the update button, this method is called. - - The items parameter is a list of dictionaries on the same form as was - generated by the scan_scene hook above. The path key now holds - the that each node should be updated *to* rather than the current path. - """ - - engine = self.parent.engine - - # resolve {% include product %} data for all paths passed via the items dictionary - sg_data = tank.util.find_publish(engine.sgtk, - [i["path"] for i in items], - fields=["id", "code", "version_number"]) - - for i in items: - node_name = i["node"] - node_type = i["type"] - new_path = i["path"] - # now that each item is processed, it is easy to access the - # {% include product %} data via a dictionary lookup: - sg_data = sg_data.get(i["path"]) - - # once we have all our desired info and metadata, we can go ahead - # and apply the update business logic. - # [-business logic here-] - -``` - -## API Access - -You can access the breakdown app programatically using its API. The following methods exist: - -### Showing the breakdown UI - -``` -app_object.show_breakdown_dialog() -``` - -If you want to show the breakdown UI, execute the `show_breakdown_dialog()` method. Assuming the app is included under a `tk-multi-breakdown` section in your currently running environment, this could for example be done like this: - -``` ->>> import sgtk ->>> e = sgtk.platform.current_engine() ->>> e.apps["tk-multi-breakdown"].show_breakdown_dialog() -``` - -### Running the scene analysis - -``` -items = app_object.analyze_scene() -``` - -You can programmatically run the scene analysis logic by executing the `analyze_scene()` method. This executes exactly the same logic that the breakdown UI uses when it builds the listing of scene items. - -The method returns a list of breakdown items. Each item is represented by a dictionary with a number of keys to describe the item. Only files whose path corresponds to a template in the Toolkit templates file will be detected. Files do not need to exist as publishes in {% include product %}, however if they do, this method will return basic {% include product %} publish metadata for them. - -The two keys `node_name` and `node_type` are used to return a DCC-centric "address" or representation which makes it possible to identify the path within the DCC. In for example Maya and Nuke, this will return the node name and type. The logic for this is implemented in the hooks and will vary between DCCs. This method will attempt to connect to {% include product %}, but the number of calls made are constant and independent of the scene complexity. - -Here is an example of what a dictionary in the return data typically looks like: - -``` -{'fields': {'Sequence': 'aaa', - 'Shot': 'aaa_00010', - 'Step': 'Comp', - 'eye': '%V', - 'height': 1556, - 'name': 'test', - 'output': 'output', - '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, - 'name': 'test', - 'published_file_type': {'id': 3, - 'name': 'Rendered Image', - 'type': 'PublishedFileType'}, - 'task': {'id': 4714, 'name': 'Comp', 'type': 'Task'}, - 'type': 'PublishedFile', - 'project': {'id': 234, 'name': 'Climp', 'type': 'Project'}, - 'version_number': 1}, - } -``` - -**Handy Tip!**: As you can see above, each item returns a `template` object and a `fields` dictionary to represent the path. If you want to see the actual raw path for the item, you can simply run `template_obj.apply_fields(fields_dict)`. In the context of one of the item dictionaries returned by this method, the code would be - -``` -breakdown_items = analyze_scene() -for item in breakdown_items: - path = item["template"].apply_fields(item["fields"]) -``` - - -### Computing the highest version for an item - -``` -highest_version = app_object.compute_highest_version(template, fields) -``` - -In order to figure out the highest version for an item, use the `compute_highest_version(template, fields)` method. The `template` and `fields` parameters represent a path that should be analyzed are typically grabbed from the output of the `analyze_scene()` method. With the breakdown app, the template key containing the version number is always required to be named `{version}`. - -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. - -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 - -Below is an example showing how to retrieve the scene breakdown and update all items that are not using the latest version. - -``` -# find the breakdown app instance -import sgtk -engine = sgtk.platform.current_engine() -breakdown_app = engine.apps["tk-multi-breakdown"] - -# get list of breakdown items -items = breakdown_app.analyze_scene() - -# now loop over all items -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 deleted file mode 100644 index d6935ac11..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Demo -pagename: tk-multi-demo -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. - -![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. - -![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. - -![Example Demo](../images/apps/multi-demo-delegate_demo.png) - -![Code Tab](../images/apps/multi-demo-code_tab.png) - -New demos will be added as new components are added to the platform and as time permits. If there is a common pattern of component usage or a demo that you'd like to see, please let us know by [submitting a ticket](https://knowledge.autodesk.com/contact-support). - -## Installation - -To install the demo app, run the following command: - -``` -tank install_app project tk-shell tk-multi-demo -``` - -Once installed, you can run the following command to launch the app: - -`./tank demos` 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 deleted file mode 100644 index 802453966..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: Launch App -pagename: tk-multi-launchapp -lang: en ---- - -# Launch App - -This app provides a shortcut to make it easy to jump from {% include product %} to any supported application. It registers a {% include product %} Action entry called for various entities in {% include product %} according to your configuration choices. - -## How It Works - -Depending on your configuration options a menu entry will appear in {% include product %} when right-clicking entities or using the {% include product %} actions menu or gear menu. - -For example, this screenshot comes from a site who's configuration uses this app three times to implement menus for Maya, Nuke and Photoshop. - -![Tank Actions Menu](../images/apps/multi-launchapp-tank_actions_menu.png) - -Currently supported applications and engines are: - -* 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: - ----FOLD--- -Launch NukeX Example - -```yaml -launch_nuke: - engine: tk-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' - menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' -``` ----FOLD--- - -### Set Environment Variables and Automate Behavior at Launch - -Applications often require certain certain environment variables, plugin paths, etc. to be set in order to properly function in a studio pipeline. The launch app helps cover this case via the 'before_app_launch' hook, which allows you to define a snippet of code to run each time an application starts up. By default, the 'before_app_launch' hook is a simple pass-through that does nothing, but it can be overridden by following the instructions in this doc. - -For example, if you use Zync Render, the Zync Maya plugin directory needs to be part of both `$PYTHONPATH` and `$XBMLANGPATH`. To have the launch app set these environment variables, update the `before_app_launch` hook with a few lines of code, as follows: - ----FOLD--- -Set Environment Variables Example - -```python -def execute(self, **kwargs): - """ - 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 - - # Append the desired path to the existing $PYTHONPATH to ensure - # everything upstream still works - os.environ["PYTHONPATH"] = os.environ["PYTHONPATH"] + os.pathsep + "~/Library/zync/zync-maya" - - # Set $XBMLANGPATH to the desired path, may need to append it as - # 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: - ----FOLD--- -Automate Task Status Update Example - -```python -def execute(self, **kwargs): - """ - 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' - - if self.parent.context.task: - task_id = self.parent.context.task['id'] - data = { - 'sg_status_list':'ip' - } - 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 %}. - -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. - -## Technical Details - -### 3DSMax - -This app automatically adds a MaxScript, `init_tank.ms`, to the 3DSMax command line that 3DSMax will run as part of its boot process. - -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. 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. - -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. 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. - -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. 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. - -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. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. - -### Photoshop - -This app will use the Adobe Extension Manager to install or make sure the Tank plugin is installed. - -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. Start the appropriate Engine (via `tank.system.start_engine()`) and pass in the Context. The engine will take care of the rest. - -#### Extra configs - -If you intend to use this app to launch Photoshop you will need to supply four config values in the _extra_ section. Here are the configs and sane default values which you would need to adjust for your system and installation locations: - -```yaml -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 deleted file mode 100644 index 1b4c77cfe..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -layout: default -title: Loader -pagename: tk-multi-loader2 -lang: en ---- - -# Loader - -This document describes functionality only available if you have taken control over a Toolkit configuration. Please refer to the [{% include product %} Integrations User Guide](https://developer.shotgridsoftware.com/d587be80/) for details. - -## Configuration - -The loader is highly configurable and you can set it up in many different ways. There are two main configuration areas: - -- Setting up what tabs and what content to display in the left hand side tree view. -- Controlling which actions to display for different publishes and controlling what the actions actually do. - -The following sections will give a high level overview how you can configure the loader. -For technical minutiae relating to the configuration, please see the separate section further down in the documentation. - -### The tree view - -The tree view is highly configurable and you can control the content of the various tabs using standard {% include product %} filter syntax. Each tab consists of a single {% include product %} API query which is grouped into a hierarchy. You can add arbitrary filters to control which items are being shown, and you can use the special keywords `{context.entity}`, `{context.project}`, `{context.project.id}`, `{context.step}`, `{context.task}` and `{context.user}` to scope a query based on the current context. Each of these keywords will be replaced with the relevant context information, either `None`, if that part of the context is not populated or a standard {% include product %} link dictionary containing the keys id, type and name. - -By default, the loader will show assets and shots belonging to the current project. By reconfiguring, this could easily be extended to for example show items from other projects (or a specific asset library project for example). You could also for example use filters to only show items with certain approval status or group items by status or by other {% include product %} fields. Below are some sample configuration settings illustrating how you could set up your tree view tabs: - -```yaml -# An asset library tab which shows assets from a specific -# {% include product %} project -caption: Asset Library -entity_type: Asset -hierarchy: [sg_asset_type, code] -filters: -- [project, is, {type: Project, id: 123}] - -# Approved shots from the current project -caption: Shots -hierarchy: [project, sg_sequence, code] -entity_type: Shot -filters: -- [project, is, '{context.project}'] -- [sg_status_list, is, fin] - -# All assets for which the current user has tasks assigned -caption: Assets -entity_type: Task -hierarchy: [entity.Asset.sg_asset_type, entity, content] -filters: -- [entity, is_not, null] -- [entity, type_is, Asset] -- [task_assignees, is, '{context.user}'] -- [project, is, '{context.project}'] -``` - -### 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. - -### 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. - -As an example, by default, the mappings for Nuke are set up like this: - -``` -action_mappings: - Nuke Script: [script_import] - Rendered Image: [read_node] -``` - -If you are finding that no action menus are showing up, it may be because you have chosen different names for the publish types that you are using. In that case, go into the config and add those types in order to have them show up inside the loader. - -### Managing actions - -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. - -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: - -``` -actions_hook: '{self}/tk-maya_actions.py' -``` - -The `{self}` keyword tells Toolkit to look in the app `hooks` folder for the hook. If you are overriding this hook with your implementation, change the value to `{config}/loader/my_hook.py`. This will tell Toolkit to use a hook called `hooks/loader/my_hook.py` in your configuration folder. - -Another second generation hooks feature that the loader is using is that hooks no longer need to have an `execute()` method. Instead, a hook is more like a normal class and can contain a collection of methods that all makes sense to group together. In the case of the loader, your actions hook will need to implement the following two methods: - -``` -def generate_actions(self, sg_publish_data, actions, ui_area) -def execute_multiple_actions(self, actions) -``` - -For more information, please see the hook files that come with the app. The hooks also take advantage of inheritance, meaning that you don't need to override everything in the hook, but can more easily extend or augment the default hook in various ways, making hooks easier to manage. - -Note that in versions previous to `v1.12.0`, the application invoked the `execute_action` hook to execute an action. Newer versions invoke the `execute_multiple_actions` hook. In order to provide backward compatibility with existing hooks, the `execute_multiple_actions` hook actually invokes `execute_action` for each actions provided. If the application is reporting that the `execute_multiple_actions` hook is not defined after upgrading to `v1.12.0` or later, make sure that the `actions_hook` setting in your environment correctly inherits from the builtin hook `{self}/{engine_name}_actions.py`. To learn more about how you can derive custom hooks from the builtin ones, see our [Toolkit reference documentation](http://developer.shotgridsoftware.com/tk-core/core.html#hook). - -LINKBOX_DOC:5#The%20hook%20data%20type:Learn more about the second gen hook format here. - -By using inheritance in your hook, it would be possible to add additional actions to the default hooks like -this: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -class MyActions(HookBaseClass): - - def generate_actions(self, sg_publish_data, actions, ui_area): - """ - Returns a list of action instances for a particular publish. - This method is called each time a user clicks a publish somewhere in the UI. - The data returned from this hook will be used to populate the actions menu for a publish. - - The mapping between Publish types and actions are kept in a different place - (in the configuration) so at the point when this hook is called, the loader app - has already established *which* actions are appropriate for this object. - - The hook should return at least one action for each item passed in via the - actions parameter. - - 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 publish, 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. - - If it will be shown in the details area, "details" is passed. - - If it will be shown in the history area, "history" is passed. - - Please note that it is perfectly possible to create more than one action "instance" for - an action! You can for example do scene introspection - if the action passed in - is "character_attachment" you may for example scan the scene, figure out all the nodes - where this object can be attached and return a list of action instances: - "attach to left hand", "attach to right hand" etc. In this case, when more than - one object is returned for an action, use the params key to pass additional - data into the run_action hook. - - :param sg_publish_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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_publish_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_publish_data): - """ - 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_publish_data: {% include product %} data dictionary with all the standard publish fields. - :returns: No return value expected. - """ - - # resolve local path to publish via central method - path = self.get_publish_path(sg_publish_data) - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_publish_data) -``` - -We could then bind this new action to a set of publish types in the configuration: - -```yaml -action_mappings: - Maya Scene: [import, reference, my_new_action] - Maya Rig: [reference, my_new_action] - Rendered Image: [texture_node] -``` - -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. - -## Reference - -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. - -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. - -**Example** - -```python ->>> engine = sgtk.platform.current_engine() ->>> loader_app = engine.apps.get["tk-multi-loader2"] ->>> selected = loader_app.open_publish("Select Geometry Cache", "Select", ["Alembic Cache"]) ->>> print selected -``` diff --git a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md deleted file mode 100644 index b49eadc10..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Publish -pagename: tk-multi-publish2 -lang: en ---- - -# Publish - -![Publisher](../images/apps/sg_publisher_1.png) - -## Overview - -The Publish app allows artists to publish their work so that it can be used by artists downstream. It supports traditional publishing workflows within the artist’s content creation software as well as stand-alone publishing of any file on disk. When working in content creation software and using the basic {% include product %} integration, the app will automatically discover and display items for the artist to publish. For more sophisticated production needs, studios can write custom publish plugins to drive artist workflows. - -## Documentation - -Full documentation for the Publisher can be found [here](https://developer.shotgridsoftware.com/d587be80/?title=Integrations+User+Guide#the-publisher)! - 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 deleted file mode 100644 index 2fd12eeae..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: default -title: Python Console -pagename: tk-multi-pythonconsole -lang: en ---- - -# Python Console - -This is a python console panel for use in DCCs with access to a python interpreter that have limited or no support for interacting with said interpreter. - -![{% include product %} Python Console](../images/apps/multi-pythonconsole-python_console.png) - -## Panel - -![The console docked in Maya](../images/apps/multi-pythonconsole-docked.png) - -Once installed, the console is registered as a panel in the DCC and is available in the {% include product %} menu. In apps that support embedded Toolkit panels(maya, nuke, houdini), the console will display in a docked panel. When using with older versions of these DCCs or in a DCC that does not support panels, the console will simply be shown as a regular Toolkit dialog. - -## Tabs - -![Tabs](../images/apps/multi-pythonconsole-tabs.png) - -The python console displays one or more tabs, each containing an editor and an output window. New tabs can be created by clicking the `+` button in the bottom right hand corner. Tabs have an `x` button next to the tab name that allow you to delete the tab. Double clicking the tab itself will prompt you to enter a new name for the tab. Tabs can be rearranged via drag and drop. The state of the tabs is saved when the DCC is closed and restored on the next launch. - -### Editor - -![Editor](../images/apps/multi-pythonconsole-input.png) - -The console has an input area for editing python. The editor includes line numbers, highlights the cursor's current line, and does some basic syntax highlighting. The console attempts to use the palette of the DCC to give it an integrated look and feel. - -Block indenting and unindenting is supported. Select one or more lines and press `tab` to indent by four spaces or `shift + tab` to unindent by four spaces. It tries to keep the indentation in blocks of four so it will indent/unindent to the nearest whole block of four spaces. - -Block commenting and uncommenting is also supported. Select one or more lines and press `cmd + /` on Mac, `ctrl + /` for Windows and Linux. If any of the selected lines don't have a `#` at the start it will add one to all selected lines. If all the lines do have a `#`, then it will remove them. - -### Output - -![Output](../images/apps/multi-pythonconsole-output.png) - -The output area displays the results of the executed python. Echoing the source python commands is turned on by default and is differentiated in the output by being prefixed with `>>>`. Each execution is also marked with a timestamp. There is a toggle for turning the echo off. Syntax and Runtime errors are shown in red with a full stack trace for debugging. - -## Buttons - -![Buttons](../images/apps/multi-pythonconsole-buttons.png) - -### Output - -* **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 - -## Globals - -![Globals](../images/apps/multi-pythonconsoleglobals.png) - -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 - -## External sources - -The app comes with a hook that can be implemented to load python source from an external location. The hook is called `external_sources_hook` and requires implementing a method called `get_external_source_actions`. The method should return a list of `QActions` that, when triggered, add a new tab (with content)to the console. An example implementation is provided that loads gists from github for a list of predefined users. The actions returned by the hook are shown in the popup menu displayed when the **Open** button is pressed and held. - -![External sources](../images/apps/multi-pythonconsole-external_sources.png) - -## 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` - -**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://knowledge.autodesk.com/contact-support) so that we can investigate further. \ No newline at end of file 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 deleted file mode 100644 index 8fa61b156..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: default -title: Review Submission -pagename: tk-multi-reviewsubmission -lang: en ---- - -# Review Submission - -## How do I use this App? - -### As an API - -This app have a mode that is meant to be called from inside other apps like the multi-publish app. - -This mode creates quicktimes from image sequences and submits them as Versions to {% include product %} in order to facilitate review. The generated quicktimes will have slates and burnins. Things such as font, logo position, movie compression options and burnin / slate information are currently hardcoded in the default hooks and as such you are encouraged to re-implement the hook function to adjust the behaviour. - -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_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. - -- Get the `tk-multi-reviewsubmission` app from the current engine. This can be done - from inside a hook using the call `self.parent.engine.apps.get('tk-multi-reviewsubmission')`. -- If the app is available, call the `render_and_submit_version()` method. - -Here's an example of what this can look like inside your hook code: - -```python -review_submission_app = self.parent.engine.apps.get("tk-multi-reviewsubmission") -if review_submission_app: - review_submission_app.render_and_submit_version( - template, - fields, - first_frame, - last_frame, - sg_publishes, - sg_task, - comment, - thumbnail_path, - progress_cb, - color_space - ) -``` - -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. - -### As a menu item - -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` - -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: - 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-screeningroom.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md deleted file mode 100644 index 2f7563dd5..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Screening Room -pagename: tk-multi-screeningroom -lang: en ---- - -# Screening Room - -This is a small app that hooks up your current Maya session with Screening Room. It will add an item to the {% include product %} menu saying **Jump to Screening Room**. Clicking this button will launch Screening Room and point it at the current {% include product %} Toolkit Context - for example a Shot, Asset or a Task. You can then use Screening Room to browse all submitted content. 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 deleted file mode 100644 index f390a7b0b..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Set Frame Range -pagename: tk-multi-setframerange -lang: en ---- - -# Set Frame Range - -This app helps managing the frame range in the currently open scene. You can access it from the {% include product %} menu by clicking the **Sync Frame Range with {% include product %}** menu option. - -When you click it, the {% include product %} Toolkit will look at the {% include product %} entity associated with the current work area (typically a Shot) and look for in and out fields which contain the in and out frame information. Typically, this is something used in conjunction with Shots and in that case the app uses the standard shot in and out fields defined in {% include product %}'s default config. However, it is perfectly possible to configure the app to pull the frame ranges from other fields too. - -![{% include product %}](../images/apps/multi-setframerange-shotgun.png) - -Once you run the App, it will update the current scene with those ins and outs and finally display a summary message: - -![Nuke](../images/apps/multi-setframerange-nuke.png) - -## Multiple {% include product %} field synchronisation options - -You can define multiple instances of this app in the {% include product %} Menu by setting the `menu_name` property. This allows the possibility to define a multiple menu actions for synchronization of different {% include product %} fields. - -To do this, set a different app instance name, `menu_name` and in and out frame fields for each instance: - -```yaml -tk-multi-setframerange_cuts: - menu_name: Sync frame range using cut fields - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - location: "@apps.tk-multi-setframerange.location" -tk-multi-setframerange_handles: - menu_name: Sync frame range using handle fields - sg_in_frame_field: sg_handle_in - 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) - -Note: this is new to version `v0.4.0` of the app. - -## Operations hook - -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 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 deleted file mode 100644 index 3da25a64d..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -layout: default -title: ShotGrid Panel -pagename: tk-multi-shotgunpanel -lang: en ---- - -# {% include product %} Panel - -This document describes functionality only available if you have taken control over a Toolkit configuration. Please refer to the [{% include product %} Integrations User Guide](https://developer.shotgridsoftware.com/d587be80/#the-panel) for details. - -## Configuring the {% include product %} Panel - -There are two main areas that you can configure extensively in the {% include product %} Panel: The appearance of text in the UI and the actions you want to associate with data. The sections below outline how to control the configuration for the two systems. - -### Configuring what is being displayed - -The values in the detail area and the listings are both configurable through the `{% include product %}_fields` hook. You can subclass this hook and change the implementation in order to display the exact values you want: - -![config](../images/apps/multi-shotgunpanel-config.png) - -**Templating System** - -The hook supports a simple templating language, allowing for great flexibility. It also supports the HTML subset supported by Qt, so you can control color, font size, weight, etc. of your displayed values. 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}` - - -This hook contains the following methods: - -**Controlling items appearing in lists** - -The `get_list_item_definition()` method returns a dictionary that controls the appearance of items in the various listings, given a {% include product %} entity type. It returns a dictionary with the keys `top_left`, `top_right` and `body`, for example: - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**Controlling the top detail area** - -The `get_main_view_definition()` method returns a dictionary with the keys `title` and `body` given a {% include product %} entity type. These values controls the appearance of an object in the detail area, for example: - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**Controlling the fields shown in the Info tab** - -The `get_all_fields()` methods returns a list of fields to display for a given entity when this is rendered in the Info tab. - -### Configuring Actions - -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. - -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} - Task: - - actions: [assign_task] - filters: {} - Version: - - 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. - -When an object is loaded into the Panel, the action configuration above is read in and analyzed. A list of suitable actions for the current object is determined and the `generate_actions()` hook method will be executed. {% include product %} data for the given entity will be passed to the hook at this point so that the hook code can determine if the action can be run for this particular {% include product %} object. This is a way to allow each hook to run a check prior to being displayed. For example, the `play_in_rv` hook may only be relevant in the case there is media available locally - the action mappings set up in the configuration tells the panel which actions to enable for a given {% include product %} entity but they may not all be displayed because the `generate_actions()` method may determine that they are not suitable for the given object. - -The actions returned from the `generate_actions()` method will be displayed on the actions menu and when a user clicks on it, the `execute_action()` hook method is called to run the action. - -For each application that the panel supports, there is an actions hook which implements suitable actions. For example, with something like Maya, the default hook will implement `reference`, `import` and `texture_node` actions, each carrying out specific Maya commands to bring publishes 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. - -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' -``` - -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. - -For more information, please see the hook files that come with the app. The hooks also take advantage of inheritance, meaning that you don't need to override everything in the hook, but can more easily extend or augment the default hook in various ways, making hooks easier to manage. - -LINKBOX_DOC:5#The%20hook%20data%20type:Learn more about the second gen hook format here. - -By using inheritance in your hook, it would be possible to add additional actions to the default hooks like this: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption, group and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "group": "Pipeline Utils", - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) - - -``` - -We could then bind this new action to a set of publish types in the configuration: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - 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-snapshot.md b/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md deleted file mode 100644 index 294e45e2d..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Snapshot -pagename: tk-multi-snapshot -lang: en ---- - -# Snapshot - -A {% include product %} Snapshot is a quick incremental backup that lets you version and manage increments of your work without sharing it with anyone else. Take a Snapshot, add a description and a thumbnail, and you create a point in time to which you can always go back to at a later point and restore. This is useful if you are making big changes and want to make sure you have a backup of previous versions of your scene. \ No newline at end of file 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 deleted file mode 100644 index 4bc72bf8d..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Workfiles -pagename: tk-multi-workfiles2 -lang: en ---- - -# Workfiles - -## File Open dialog - -### Navigating your work areas - -![task](../images/apps/multi-workfiles2-tasks.png) - -The main dialog is split in two halves. On the left hand side, there is a series of tabs. The first tab is called "My Tasks" and will display all the tasks that are assigned to the current user. It is very reminiscent of the "My Tasks" page on the {% include product %} website. - -Alternatively, the user can also browse for a {% include product %} entity using the entities tabs. By default, the workfiles application allows to browse for any tasks associated on shots or assets by looking at the respective tab. - -The set of tabs is entirely configurable through the `entities` settings in the environment files. - -You can disable/enable this dialog by setting the `show_file_open: true/false` in the app settings. - -### Finding files - -![file selection](../images/apps/multi-workfiles2-file_selection.png) - -On the right hand-side you will see the working files and publishes associated with the selection from the left hand-side. Working files and publishes can be viewed together or separately using the tabs "All", "Working" and "Publishes". - -### Accessing previous versions - -![previous verson](../images/apps/multi-workfiles2-previous_versions.png) - -There are two ways to access previous versions. First, the user can click on the "All versions" box at the top of the browser, which will uncollapse the versions and list them all individually in the browser. Another option is to right-click on a file, which will allow you to access the last 10 versions. - -### User sandboxes - -![sandboxes](../images/apps/multi-workfiles2-sandboxes.png) - -If your pipeline configuration uses user sandboxes, only the files for the current user will be seen by default. If the user wants to see the files from other user's sandboxes, a button at the top will allow to pick which sandboxes to show files from. - -### Narrowing results - -![search](../images/apps/multi-workfiles2-search.png) - -You can narrow results in the any of the views by typing text. The search will match any item's name. - -## File Save dialog - -By default, the "File Save" dialog allows the user to save a file in the current context. The user will be prompted for a scene name, version number and an optional file extension, if available and the "Save" button will be greyed out. Only once the application has confirmed the next available version number for a scene name will the Save button at the bottom right be enabled. - -You can disable/enable this dialog by setting the `show_file_save: true/false` in the app settings. - -### Saving in a different context - -![expanding save](../images/apps/multi-workfiles2-expanding_save.png) - -In order to save a file in a different context, a user can click on the expand button at the top-left of the dialog which will expand the "File Save" dialog and allow to pick another context to save into. - -### Adding the file extension dropdown - -![file save type](../images/apps/multi-workfiles2-file_save_file_type.png) - -With the new file save dialog, it is possible to pick the extension of the file being saved. In order to enable this, you need to tweak your pipeline configuration's `templates.yml` file. First, a token needs to be defined in the token list inside `templates.yml`. - -```yaml -maya_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. - -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' -``` - -## Context Change dialog - -![change context](../images/apps/multi-workfiles2-change_context.png) - -The context change dialog is similar to the open dialog except that it doesn't have a the right hand side for file browsing. You can select a task or entity and change your current engine context by pressing press the change context button. - -You can disable/enable this dialog by setting the `show_change_context: true/false` in the app settings. - -## Step filtering - -When retrieving Tasks, and if `step` is included in the hierarchy, the amount of data retrieved from {% include product %} can be reduced with Pipeline Step filtering: only Tasks linked to the selected list of Steps will be retrieved. - -The list of Steps displayed in a tab is controlled with the `step_filter_on` setting. If not set, all existing Pipeline Steps are displayed. - -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: - - [entity, type_is, Asset] - 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] -``` - -![step filter](../images/apps/multi-workfiles2-step_filter.png) - -## 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: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] -``` - -![entity tree view](../images/apps/multi-workfiles2-entity_tree_view.png) 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 deleted file mode 100644 index e0ac352cf..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: default -title: Nuke Quickreview -pagename: tk-nuke-quickreview -lang: en ---- - -# Nuke Quickreview - -The Quickreview app makes it easy to submit Nuke renders for review in {% include product %}. A **Version** in {% include product %} will be created with each quickreview submission. It appears as a node in Nuke, located on the {% include product %} Node menu. Simply create a new node, attach it to your Nuke network, double click it and click the Upload button. - -![Nuke overview](../images/apps/nuke-quickreview-nuke_ui.png) - -You get presented with the following UI, allowing you control how your Version is created in {% include product %}: - -![Submit UI](../images/apps/nuke-quickreview-submit.png) - -The following items can be controlled: - -- The version name is pre-populated based on the currently loaded nuke script and can be adjusted if needed. -- The entity link and task associated with the version is based on the current context and can be adjusted. -- The frame range to be submitted can be adjusted. -- The created Version can be added to a playlist. A dropdown with recent playlist are being displayed. - -Once you press the Upload button, a quicktime will be generated in nuke and then uploaded to {% include product %}. Once uploaded, the following screen will be shown, allowing you to either show the Version in the Built-in {% include product %} Panel in Nuke or in the web overlay player. - -## Burnins and slate - -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) - -## 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 deleted file mode 100644 index f9899d45d..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ /dev/null @@ -1,603 +0,0 @@ ---- -layout: default -title: Nuke Write Node -pagename: tk-nuke-writenode -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. - -## General Use - -In order to use the {% include product %} Write Node, save your script as a Toolkit work file first and then create a new node via the Nuke menu. This will create a node which looks similar to a normal write node: - -![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. - -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. - -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**: - -![Write Graph](../images/apps/nuke-writenode-write_node_reset_path.png) - -## 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: - -``` -Write { - file /Users/ryanmayeda/Desktop/test.%04d.tif - file_type tiff - datatype "16 bit" - compression LZW - checkHashOnRead false - name Write1 - xpos -145 - ypos -61 -} -``` - -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: - location: {name: tk-nuke-writenode, type: app_store, version: v0.1.6} - template_script_work: nuke_shot_work - ... - write_nodes: - - file_type: exr - ... - - file_type: dpx - ... - - file_type: tiff - name: Mono Tif - publish_template: nuke_shot_render_pub_mono_tif - render_template: nuke_shot_render_mono_tif - proxy_publish_template: null - proxy_render_template: null - settings: {datatype: 16 bit, compression: LZW} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [] -``` - -The updated configuration will then result in the additional {% include product %} Write Node appearing in Nuke: - -![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`). - -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: - -```yaml -tk-nuke-writenode: - write_nodes: - - file_type: jpeg - name: Compressed JPEG - publish_template: nuke_shot_render_pub_jpeg - 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"} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [_jpeg_quality] -``` - -### Promoting Write Knobs - -As shown in the profile example above, knobs from the encapsulated write node can be promoted to become visible in the {% include product %} Write Node's properties panel. The promoted write knobs are defined as part of a profile and are identified by knob name. Multiple knobs may be promoted. - -## 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. - -### Convert {% include product %} write nodes to standard Nuke write nodes - -A simple solution is to convert the {% include product %} write nodes to regular Nuke write nodes before sending the script to be rendered. There are two options 1. you can enable and use the convert menu options, 2. you can use the API convert methods on the app. - -#### 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. - -![write node convert menu options](../images/apps/nuke-writenode-write_node_convert_menu_options.png) - -However if you have any {% include product %} Write node profiles defined that promote write knobs, then these menu options will be hidden even if the `show_convert_actions` is set to `True`. This is because at present the convert back functionality does not support promoted knobs. - -#### Using the API to Convert - -There is a `convert_to_write_nodes()` method that performs this conversion available on the `tk-nuke-writenode` app. - -To convert all {% include product %} write nodes in a script to regular Nuke write nodes, run the following code inside Nuke: - -```python -import sgtk -eng = sgtk.platform.current_engine() -app = eng.apps["tk-nuke-writenode"] -if app: - 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. - -### Bootstrap the {% include product %} Pipeline Toolkit engine using init.py - -Nuke will run any `init.py` scripts found in its plugin path. This option consists of adding code to `init.py` that will perform a minimal bootstrap of the `tk-nuke` engine, so that {% include product %} write nodes behave as expected on the render farm. - -There are a few steps to this workflow: First, a “pre-flight” submission script that runs in a {% include product %}-aware Nuke session gets data that will be used to set the environment for your farm job. Next, additional environment variables used to authenticate the {% include product %} session on the render farm are set by render farm administrators. Finally, an `init.py` with the {% include product %} bootstrap code is placed in a location where the Nuke session on the render farm will detect and run it, bootstrapping the `tk-nuke` engine within the session, and allowing the {% include product %} write nodes to function properly. - -#### 1. Pre-flight submission script - -This approach assumes that artists are submitting farm jobs within a {% include product %}-aware session of Nuke. At submission time, the following code should run. It pulls environment information like Toolkit context, Pipeline Configuration URI, Toolkit Core API location, etc. from the current Nuke session to populate a dictionary that will be passed to the render job, where it will be used to set environment variables. - -```python -# Populating environment variables from running Nuke: -# http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.create_engine_launcher -current_engine = sgtk.platform.current_engine() -launcher = sgtk.platform.create_engine_launcher( - current_engine.sgtk, - current_engine.context, - current_engine.name -) - -# Get a dictionary with the following keys: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -environment = launcher.get_standard_plugin_environment() - -# Get the current pipeline config descriptor -environment["SHOTGUN_CONFIG_URI"] = os.path.join(current_engine.sgtk.configuration_descriptor.get_uri(),"config") - -# Get the current tk-core installation path -environment["SHOTGUN_SGTK_MODULE_PATH"] = sgtk.get_sgtk_module_path() -``` - -Once you’ve gathered this information, you can pass it to your render submission tool. This process will vary depending on the render farm management system you’re using. Consult your farm management system documentation for more information on how to write render submission scripts. - -#### 2. {% include product %} authentication - -The bootstrap API’s ToolkitManager requires a script user in order to initialize. In our example, we’re assuming that your site name, script user, and script key exist as environment variables on the farm machine. Typically this is managed by the render farm administrator. Here are the environment variable names our code is expecting, with sample values: - -``` -SHOTGUN_SITE = “https://mysitename.shotgunstudio.com” -SHOTGUN_FARM_SCRIPT_USER = “sg_api_user” -SHOTGUN_FARM_SCRIPT_KEY = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” -``` - -For more information on authentication, see our [developer documentation](http://developer.shotgridsoftware.com/tk-core/authentication.html). - -**A note on securing your script user:** It’s good practice to lock down the script user you use on the farm so that it doesn’t have admin-level permissions. [You can learn more about API user permissions here.](https://developer.shotgridsoftware.com/bbae2ca7/) - -#### 3. The init.py script - -At this point, Toolkit environment data is being passed from the render submission tool, and authentication data is in environment variables on the render farm machine. The final piece to bootstrapping Toolkit within your render job is to place the following example `init.py` code in Nuke’s plugin path, so that Nuke will launch it at startup time. (See [the Foundry’s documentation on startup scripts](https://support.foundry.com/hc/en-us/articles/360003811839-Q100490) for more details.) - -```python -# This script shows how a Toolkit as a plugin approach could be used to bootstrap -# Toolkit in Nuke on the render farm. -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#bootstrapping-toolkit - -import sys -import os - -# If your render nodes can access the same tk-core install location as -# artist workstations, retrieve its path from the environment and ensure -# it is in the PYTHONPATH -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 -# about it here: -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip - -import sgtk - -# Authenticate using a pre-defined script user. -sa = sgtk.authentication.ShotgunAuthenticator() - -# Here we retrieve credentials from environment variables, assuming a script user -# will be used when rendering. This should be typically be handled by your render -# farm administrators. -SG_SITE_URL = os.environ["SHOTGUN_SITE"] -SG_SCRIPT_USER = os.environ["SHOTGUN_FARM_SCRIPT_USER"] -SG_SCRIPT_KEY = os.environ["SHOTGUN_FARM_SCRIPT_KEY"] -user = sa.create_script_user( - api_script=SG_SCRIPT_USER, - api_key=SG_SCRIPT_KEY, - host=SG_SITE_URL -) - -# Start up a Toolkit Manager with our script user -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 -# Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override -# Pipeline Configuration defined in {% include product %}. -mgr.do_shotgun_config_lookup = False - -# Set a plugin id to indicate to the bootstrap that we are starting -# up a standard Nuke integration -mgr.plugin_id = "basic.nuke" - -# Retrieve the Toolkit context from environment variables: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -sg_entity = mgr.get_entity_from_environment() - -# Now start up the Nuke engine for a given {% include product %} Entity -nuke_engine = mgr.bootstrap_engine("tk-nuke", entity=sg_entity) -``` - -You may need to extend this if your configuration is more complex than this example or if you are passing a Python script to the command line using the `-t` flag instead of a nuke (`.nk`) script. - -#### Deadline-specific steps - -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) -2. Disable the 'Enable Path Mapping' option - -## Technical Details - -The following API methods are available on the App: - -### get_write_nodes() - -Return a list of all {% include product %} Write Nodes in the current scene. - -`list` app.get_write_nodes() - -**Parameters & Return Value** - -* **Returns:** `list` - a list of Toolkit Write nodes found in the scene - -**Example** - -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() -``` - -### get_node_name() - -Return the name of the specified Write Node. - -`string` get_node_name(`node` node) - -**Parameters & Return Value** - -* `node` **node** - the Write Node to query -* **Returns:** `string` - the name of the node. - -**Example** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_name(nodes[0]) -``` - -### get_node_profile_name() - -Get the name of the configuration profile used by the specified Write node. - -`string` get_node_profile_name(`node` node) - -**Parameters & Return Value** - -* `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() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_profile_name(nodes[0]) -``` - -### get_node_render_path() - -Get the path that the specified Write node will render images to. - -`string` get_node_render_path(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_render_files() - -Get a list of all image files that have been rendered for the specified Write Node. - -`list` get_node_render_files(`node` node) - -**Parameters & Return Value** - -* `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() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_render_files(nodes[0]) -``` - -### get_node_render_template() - -Get the template that determines where rendered images will be written to for the specified Write Node as defined in the configuration. - -`template` get_node_render_template(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_publish_template() - -Get the template that determines where rendered images will be published to for the specified Write Node as defined in the configuration. - -`template` get_node_publish_template(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_proxy_render_path() - -Get the path that the specified Write node will render proxy images to. - -`string` get_node_proxy_render_path(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_proxy_render_files() - -Get a list of all proxy image files that have been rendered for the specified Write Node. - -`list` get_node_proxy_render_files(`node` node) - -**Parameters & Return Value** - -* `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() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_files(nodes[0]) -``` - -### get_node_proxy_render_template() - -Get the template that determines where proxy rendered images will be written to for the specified Write Node as defined in the configuration. - -If there is no proxy render template configured for the specified node then this will return the regular render template instead. - -`template` get_node_proxy_render_template(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_proxy_publish_template() - -Get the template that determines where proxy rendered images will be published to for the specified Write Node as defined in the configuration. - -If there is no proxy publish template configured for the specified node then this will return the regular publish template instead. - -`template` get_node_proxy_publish_template(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### get_node_published_file_type() - -Get the Published File Type to be used when Published files are created for images rendered by the specified Write node as defined in the configuration. - -`string` get_node_published_file_type(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### 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. - -`string` generate_node_thumbnail(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### reset_node_render_path() - -Reset the render path for the specified Write Node to match the current script. - -`None` reset_node_render_path(`node` node) - -**Parameters & Return Value** - -* `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]) -``` - -### is_node_render_path_locked() - -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** - -* `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]) -``` - -### 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_*' - -`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() -``` - -### convert_from_write_nodes() - -Convert all regular Nuke Write nodes that have previously been converted from {% include product %} Write nodes, back into {% include product %} Write nodes. - -`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() -``` - -### 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. - -`None` process_placeholder_nodes() - -**Example** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> 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 deleted file mode 100644 index aa2f8403b..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: ShotGrid Folders -pagename: tk-shotgun-folders -lang: en ---- - -# ShotGrid Folders - -{% 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. - -## 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) - - 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 deleted file mode 100644 index 643ec2e80..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid Launch Folder -pagename: tk-shotgun-launchfolder -lang: en ---- - -# ShotGrid Launch Folder - -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 deleted file mode 100644 index 58caa0957..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: ShotGrid Launch Publish -pagename: tk-shotgun-launchpublish -lang: en ---- - -# ShotGrid Launch Publish - -This app adds an "Open in Associated Application" action to the Published File entity in {% include product %}. This makes it easy to open up an already published file: Just navigate to that file, right click on it and select the action. - -![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 diff --git a/docs/en/reference/pipeline-integrations/toolkit-configuration.md b/docs/en/reference/pipeline-integrations/toolkit-configuration.md deleted file mode 100644 index 71fa94826..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-configuration.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Configuration -pagename: toolkit-configuration -lang: en ---- - -# Toolkit Configuration - -Here you'll find reference documentation for configuring the Toolkit platform 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 deleted file mode 100644 index 6bfbf9aa0..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -layout: default -title: Environment Configuration -pagename: toolkit-config-ref -lang: en ---- - -# Environment Configuration Reference - -## 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. - -{% 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](https://developer.shotgridsoftware.com/37f575b8/)." %} - - - -## 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. - -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://developer.shotgridsoftware.com/9a736ee3/), 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. - -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. - -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](https://developer.shotgridsoftware.com/37f575b8/). - -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 - -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`. - -![env Folder Contents](../images/env-config-ref/1.png) - -In the Default Configuration, you’ll see the following files in `config/env/`: - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -shot_step.yml -``` - -Each of these files corresponds to an environment; having separate files allows each environment to be configured separately. - -## How Toolkit determines the current environment - -Toolkit uses a core hook called [pick_environment](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py) to determine which environment file to use at a given time based on the current [context](https://developer.shotgridsoftware.com/tk-core/core.html#context). The `pick_environment` hook’s return values correspond to environment configuration files. For example, if `pick_environment` returns `shot_step`, Toolkit will use `config/env/shot_step.yml` to configure the Toolkit environment. - -## 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. - -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 - -Toolkit’s configuration files are written in [YAML](https://yaml.org/). The general configuration structure for any bundle (an app, engine, or framework) is as follows: - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -To demonstrate this structure, here is a very simple example: an environment in which there is a single engine, with a single app defined within it. The following might be the contents of `project.yml` in this config: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - 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`. - - -### 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: - -```yaml - 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`. - -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 -``` - -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. - -See [the Descriptor section of the Toolkit Core API docs](https://developer.shotgridsoftware.com/tk-core/descriptor.html) for details on all available descriptor types and their settings. - -### The apps block - -Apps are Toolkit’s user tools, and each can run independently of any others. You can choose which apps you want to use based on your pipeline needs, and the `apps` setting within an engine block is where you define which apps are available in a given engine. - -Here again is the `apps` setting from our example above: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - 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. - -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: - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -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. - -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 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. - -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: - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -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: - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![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. - -{% 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." %} - -You can add a second include file for app locations, and in fact, the Default Configuration does just that. Let’s expand our example: - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -We’re now getting the `tk-maya` engine’s descriptor from the included `engine_locations.yml` file, and the descriptor for each app defined for the `tk-maya` engine from the included `app_locations.yml` file. - -{% 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](https://developer.shotgridsoftware.com/37f575b8/)." %} - - -## 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. - -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? - -{% include info title="Note" content="While it’s not a requirement that Toolkit configurations be sparse, the Default Configuration is a sparse configuration." %} - -## Discovering available configuration settings - -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://developer.shotgridsoftware.com/9a736ee3/) as an example. The [Apps and Engines page](https://developer.shotgridsoftware.com/162eaa4b/) 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 - -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: - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -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](https://developer.shotgridsoftware.com/37f575b8/) -* [Toolkit Basics Guide: Adding an app](https://developer.shotgridsoftware.com/4d147fb2) -* [Animation pipeline tutorial](https://developer.shotgridsoftware.com/cb8926fc/) -* [Descriptor reference documentation](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [Webinar: Toolkit administration](https://youtu.be/7qZfy7KXXX0) -* [File system configuration reference](https://developer.shotgridsoftware.com/82ff76f7/) -* [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-supported-os-versions.md b/docs/en/reference/pipeline-integrations/toolkit-engines-supported-os-versions.md deleted file mode 100644 index 021c2dcfe..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines-supported-os-versions.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: Supported OS Versions for Toolkit Engines -pagename: toolkit-engines-supported-os -lang: en ---- - -# Supported OS Versions for Toolkit Engines - -Here is a list of Toolkit engine supported operating systems. - ----------- - -| Windows | macOS | CentOS | -|:-------:|:-----:|:------:| -| 10 |10.14+
**Note:** M1 is not supported yet, [learn more here](https://community.shotgridsoftware.com/t/13606). | 7.4 | \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines-supported-versions.md b/docs/en/reference/pipeline-integrations/toolkit-engines-supported-versions.md deleted file mode 100644 index 8ea62bb6c..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines-supported-versions.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Engine Supported Versions -pagename: toolkit-engines-supported-versions -lang: en ---- - -# Toolkit Engine Supported Versions - -Here is a list of the minimum supported application versions on engines available for the Toolkit platform. - ----------- - -| Integration | Engine | Supported Versions | -|:-----------:|:------:| ----------- | -|tk-3dsmax | **tk-3dsmax** | {% include tk-3dsmax %} | -|tk-aftereffects | **tk-aftereffects** | {% include tk-aftereffects %} | -|tk-alias | **tk-alias** | {% include tk-alias %} | -|tk-flame | **tk-flame** | {% include tk-flame %} | -|tk-houdini | **tk-houdini** | {% include tk-houdini %} | -|tk-mari | **tk-mari** | {% include tk-mari %} | -|tk-maya | **tk-maya** | {% include tk-maya %} | -|tk-motionbuilder | **tk-motionbuilder** | {% include tk-motionbuilder %} | -|tk-nuke | **tk-nuke** | {% include tk-nuke %} | -|tk-photoshopcc | **tk-photoshopcc** | {% include tk-photoshopcc %} | -|tk-vred | **tk-vred** | {% include tk-vred %} | \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines.md b/docs/en/reference/pipeline-integrations/toolkit-engines.md deleted file mode 100644 index 9c1d33cfb..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Engines -pagename: toolkit-engines -lang: en ---- - -# Toolkit Engines - -Here you'll find reference documentation for engines available for the Toolkit platform. diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md deleted file mode 100644 index c712a9b0e..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: 3ds Max Plus -pagename: tk-3dsmax-plus -lang: en ---- - -# 3dsMax Plus - -The {% include product %} engine for 3ds Max Plus provides a bridge between the 3ds Max application and the {% include product %} Pipeline Toolkit. The engine supports PySide and all Multi apps, meaning that you can run our standard apps inside of 3ds Max - the same apps that also work in Maya, Nuke etc. This engine uses the 3ds Max Plus python API. - - -![Engine](../images/engines/sg_3dsmax_plus_1.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-3dsmax %} - -## Documenation - -This engine connects {% include product %} Pipeline Toolkit (Sgtk) and 3D studio Max via Max Plus' Python support. - -![Engine](../images/engines/3dsmaxplus_engine.png) - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -f you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-3dsmaxplus -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the update command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-3dsmaxplus. - -## Special Requirements - -You need {% include product %} Pipeline Toolkit Core API version v0.19.18 or higher to use this. diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md deleted file mode 100644 index 4c9c060cd..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: default -title: 3ds Max -pagename: tk-3dsmax -lang: en ---- - -# 3dsMax - -The {% include product %} engine for 3dsMax contains a standard platform for integrating {% include product %} Toolkit (Sgtk) Apps into 3dsMax. It is light weight, straight forward and adds a {% include product %} menu to the main menu. - -![Engine](../images/engines/3dsmax_engine.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-3dsmax %} - -## Documenation - -The {% include product %} engine for 3dsMax contains a standard platform for integrating {% include product %} Pipeline Toolkit (Sgtk) Apps into 3dsMax. It is light weight, straight forward and adds a {% include product %} menu to the main menu. - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-3dsmax -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the update command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-3dsmax. - -## Special Requirements - -You need {% include product %} Pipeline Toolkit Core API version v0.19.18 or higher to use this. diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md deleted file mode 100644 index f1116d63a..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: After Effects -pagename: tk-aftereffects -lang: en ---- - -# After Effects - -The {% include product %} engine for After Effects provides a platform for integrating {% include product %} into your After Effects workflow. It consists of a standard {% include product %} Toolkit engine and relies on the [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP). - -Once enabled, a **{% include product %} Adobe Panel** panel becomes available in After Effects. It displays information about the current {% include product %} context as well as the commands that are registered for the apps installed in that context. - -![Engine](../images/engines/aftereffects_extension.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-aftereffects %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Interface Overview - -The {% include product %} extension panel uses the same color palette and basic layout as native After Effects panels. It is comprised of five components: - -![components](../images/engines/extension_components.png) - -1. **Context Header** - Thumbnail and fields for the current context. -2. **Favorites Shelf** - Designed to show the most commonly-used apps for the current context. -3. **Command List** - All non-favorited commands for the current context. -4. **Context Menu** - Additional context-related commands and debugging tools. -5. **Logging Console** - A console overlay that displays logging output for debugging. - -## Installation - -Installation of the {% include product %} Engine for After Effects follows the same protocol as the other {% include product %} integrations. For information on installing engines and apps, see the [Administering Toolkit](https://developer.shotgridsoftware.com/425b1da4/) article. In addition, you can reference the [default toolkit config](https://github.com/shotgunsoftware/tk-config-default2) as an example of how to configure the integration. - -## Enabling the extension - -Once the extension is installed, it will need to be launched via the extensions menu in After Effects. - -![Menu](../images/engines/extension_menu.png) - -This will only need to be done once and the {% include product %} extension panel can remain in the After Effects layout without having to be enabled on subsequent launches. - -Once enabled, and on future launches, the extension panel will display a loading screen while the {% include product %} integration is bootstrapping. - -This screen typically displays for a few seconds before the current context is determined and the commands are displayed. - -## Interface components - -The following sections outline the components of the {% include product %} After Effects integration. - -### Context header - -The context header is a customizable area which can display information about the current {% include product %} context. - -![Header](../images/engines/extension_header.png) - -The context is determined by the currently-active document. Once the context is determined by the engine, the header will update to display the context's thumbnail field detail. The field information is controlled by a hook. For information on how to customize the field display, see the **Context Fields Display Hook** section below. - -It should also be noted that the context switching will only be recognized in if {% include product %} open was used. - -### Favorites shelf - -The favorites shelf is similar to the menu favorites available in other {% include product %} DCC integrations such as Maya and Houdini. This section of the interface makes the most commonly used Toolkit apps readily available and easy to find just under the context header. - -![Shelf](../images/engines/extension_shelf.png) - -The shelf displays the favorited commands as buttons that, when moused over, transition from grayscale to color and display their name in the label at the top. Tooltips for the buttons will show by hovering the mouse above them. - -Clicking one of the buttons will trigger the callback for the registered command to execute. - -For details on how to specify command favorites, see the **Shelf Favorites** section below. - -### Command list - -The command list shows the other "regular" commands that are registered for the current context. - -![Commands](../images/engines/extension_commands.png) - -Typically, apps installed within a pipeline configuration will register one or more commands that are displayed here. If the commands are not identified as favorites, and are not identified as context-menu commands, they will display here. - -The command list buttons behave in a manner similar to those in the favorites shelf. The only real difference is that they display as a list with the full name to the right of their icon. - -### Context menu - -Any commands registered as context menu commands will show in the {% include product %} extension panel's context menu. - -![Context Menu](../images/engines/extension_context_menu.png) - -Like the other command areas, these commands will change along with the context. Commands such as **Jump to {% include product %}** and **Jump to Filesystem** will always be available here. - -### Logging console - -The logging console shows all of the logging output from both the CEP Javascript interpreter and Toolkit's Python process. - -![Console](../images/engines/extension_console.png) - -If there are any issues with the extension that require support, the logging console output is extremely useful for helping the {% include product %} support team debug the problem. - -## Configuration and technical details - -The following sections outline some of the more technical aspects of the integration to help configure the integration to the specific needs of your studio pipeline. - -### PySide - -The {% include product %} engine for After Effects relies on PySide. Please see the official instructions for [Installing PySide](http://pyside.readthedocs.io/en/latest/installing/index.html). - -### CEP extension - -The extension itself is bundled with the engine and the engine handles installation automatically on the first launch of After Effects. The extension is installed on the artist's local machine in the standard, OS-specific CEP extension directories: - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -Each time After Effects is launched, the engine bootstrap code will check the version of the extension that is bundled with the engine against the version that is installed on the machine. This means that after an engine update, assuming a new version of the extension came with it, the installed extension will be automatically updated to the newly-bundled version. - -### Configuring favorites - -The **Favorites Shelf** can be configured to display any of the registered commands for your installed apps. To do this, simply add the `shelf_favorites` setting to the `tk-aftereffects` section of your environment configuration. Here's an example: - -```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...} -``` - -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. - -### Environment variables - -To aid in debugging, there are a set of environment variables that change some of the engine's default values: - -- `SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - The Python heartbeat interval in seconds (default is 1 second). -- `SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - The number of heartbeat errors before quitting (default is 2). The legacy environment variable -- `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE` is also respected if set. -- `SHOTGUN_ADOBE_NETWORK_DEBUG` - Include additional networking debug messages when logging output. The legacy environment variable -- `SGTK_PHOTOSHOP_NETWORK_DEBUG` is also respected if set. -- `SHOTGUN_ADOBE_PYTHON` - The path to the Python executable to use when launching the engine. If not set, the system Python is used. If Photoshop is launched from a Python process, like {% include product %} Desktop or via the tk-shell engine, the Python used by that process will be used by the Photoshop integration. - -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. - -The first method is the `get_entity_fields()` method. This method accepts an entity type representing the current {% include product %} context. The expected return value is a list of fields for that entity that should be queried for display. The engine itself handles querying the data asynchronously. - -Once the data has been queried from {% include product %}, the second method in the hook is called. This method, `get_context_html()`, receives the context entity dictionary populated with the queried fields specified by the `get_entity_fields()` method. The expected return value is a string containing formatted HTML to display the queried entity fields. - -The [default hook implementation](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/context_fields_display.py) is a good reference as to what is required by these methods. - -It should be noted that the engine will always display the entity thumbnail if one is available. - -### Import Footage Hook - -The engine comes with a hook to control the import behaviour of certain file types. One may want that a psd file will be imported as single layer instead of a composition. In this case the this hook may be used to overwrite this behaviour. - -The [default hook implementation](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/import_footage.py) - -### 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 deleted file mode 100644 index 04c469ee5..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: default -title: Alias -pagename: tk-alias -lang: en ---- - -# Alias - -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. - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-alias %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Python Version Support - -The Alias toolkit engine uses the Python interpreter shipped with Shotgun Desktop, or a locally installed interpreter. - -|tk-alias Engine Version | Shotgun Desktop Application Version | Shotgun Desktop Engine Version | Python Interpreter Version | -| ---------------------- | ----------------------------------- | ------------------------------ | -------------------------- | -| v2.0.5 or older | v1.5.8 or older | v2.4.14 or older | v2.7.x | -| v2.0.6 or newer | v1.6.0 or newer | v2.5.0 or newer | v2.7.x & v3.7.x | - -Tested locally installed Python Interpreters: v2.7.x or v3.7.4 - -## 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. - -### 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 - -This {% include product %} integration supports the Alias application family (Concept, Surface, and AutoStudio). - -When Alias opens, a {% include product %} menu (the Alias engine) is added to the menu bar. - -![](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. - -![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunFileOpen.png) - -![](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. - -![](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).  - -![](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) - -![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunLoader.png) - -### Scene Breakdown - -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-create.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-create.md deleted file mode 100644 index 34070a8a2..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-create.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Create -pagename: tk-create -lang: en ---- - -# {% include product %} Create - -The Desktop2 Engine is the engine which runs inside of the [{% include product %} Create](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) Application. It handles DCC launching from {% include product %} Create, as well as from the {% include product %} web application via browser integration. - -The tk-desktop2 engine powers Toolkit's integration with {% include product %} Create. The {% include product %} Create provides support for features that users of Toolkit are familiar with, including [DCC launching](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Supervisor_Artist_sa_create_sa_create_artists_html#launching-your-creative-apps). - -![](../images/engines/create-dcc-01.png) - -![](../images/engines/create-dcc-02.png) - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-desktop2 -Updating to the latest version -``` - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio `tank` command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-desktop2. - -## Special Requirements - -You need {% include product %} Pipeline Toolkit Core API version v0.19.1 or higher to use this. \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md deleted file mode 100644 index c6be0c194..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Desktop -pagename: tk-desktop -lang: en ---- - -# Desktop - -The tk-desktop engine is an application to let you easily run your Toolkit apps. It is a system tray based window that makes it easy to get started with Toolkit, setup Projects for Toolkit, and access your Projects' pipeline. - -## Site configuration and Project configuration - -![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. - -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 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. - -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. - -For example, if you wanted the {% include product %} Panel to show as a tab in {% include product %} Desktop, add the following configuration for your site level environment: - -```yaml -tk-desktop: - apps: - tk-multi-shotgunpanel: - actions_hook: ... - action_mappings: ... - location: ... - location: ... - run_at_startup: - - {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 deleted file mode 100644 index 030a63e37..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: default -title: Flame -pagename: tk-flame -lang: en ---- - -# Flame - -## 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 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). - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-flame %} - -## 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. - -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: - -`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. - -`get_server_hostname` -By default this is set to 'localhost', but it can be overridden if desired. - -`get_project_name` -By default this is set to the same value as the {% include product %} project, but it can be overridden if desired. - -`get_volume` -By default this is set to the first available storage, but it can be overridden if desired. - -`get_workspace` -By default Flame will create a default workspace according to its standard workspace creation logic, but it can be overridden if desired. - -`get_user` -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: - -* 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](https://www.autodesk.com/developer-network/platform-technologies/wiretap)! - -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 deleted file mode 100644 index e518d4dcc..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: default -title: Houdini -pagename: tk-houdini -lang: en ---- - -# Houdini - -The {% include product %} Engine for Houdini contains a standard platform for integrating {% include product %} Apps into Houdini. - -![{% include product %} Engine for Houdini](../images/engines/houdini_engine.png) - - -# Information for App Developers - -## Supported Platforms - -The {% include product %} Engine for Houdini is currently supported on Windows, Linux, and OSX - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-houdini %} - -## PySide - -For older versions of Houdini (13 and older) an external build of PySide is required. On Windows, we have bundled a compatible PySide build that will work with the python that Houdini runs. On Linux, Houdini uses the system python (per http://www.sidefx.com/docs/houdini12.0/hom/) which needs to have PySide or PyQt support. - -## Menu loading - -![{% 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. - -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. - -## {% include product %} shelf - -![{% include product %} shelf](../images/engines/houdini_shelf.png) - -Release **v0.2.4** introduced a dynamic {% include product %} shelf to the engine. The shelf displays any registered app commands as tool buttons. The buttons will be displayed in roughly the same order as the menu commands. - -Use the `enable_sg_shelf` setting to turn on the shelf within an environment. If using a version of Houdini (14 or older) that does not support dynamic menus, you may also want to turn off the {% include product %} menu when using the shelf. This can be done by setting the `enable_sg_menu` setting to `false`. - -To enable context switching via the shelf, you'll also need to add entity types to the `sg_entity_types` setting of the `tk-multi-workfiles` app in your engine configuration. - -Here's a look at the settings related to the {% include product %} shelf: - -```yaml -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 - 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. - -![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. - -## 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. - -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 - -The {% include product %} Engine for Houdini makes it easy to load application supplied OTLs. If you are writing an app which uses OTLs, you can just drop them into a folder called **otls** and the engine will automatically load them into your session: - -![Houdini OTLs](../images/engines/otls_path.png) - -You can then easily access your nodes via the usual Houdini methods. - -**Warning!!** Please note that while the use of OTLs 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 an OTL in the scene, you have introduced a dependency between that scene and the OTL code. Not only will you need to load the {% include product %} 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 OTLs being used in scenes. - -## Startup Debugging via Terminal on OSX - -Turning on `debug_logging` for the `tk-houdini` engine on OS X will not send all debug messages to the Terminal. This is because, by default, the [`tk-multi-launchapp`](https://github.com/shotgunsoftware/tk-multi-launchapp) app uses the `open` command to launch executables. This does not spawn a new subprocess from the Terminal, but rather uses OS X's Launch Services to create a new process elsewhere. As a result, the log statements are not shown. Even having a python shell saved in the user's default desktop in houdini does not seem to show debugging statements during startup. After startup, and embedded Python shell will show debug logging statements, but there is a gap in available output during startup. If you need access to debug logging statements during engine startup, you can make 2 changes. - -First, change your `houdini_mac` path (temporarily) in your test configuration to point to the executable inside the Houdini app bundle. For example: - -```yaml -#houdini_mac: /Applications/Houdini 15.0.272/Houdini Apprentice.app -houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/MacOS/happrentice -``` - -Next, you can make a copy of the `tk-multi-launchapp` app's `app_launch` hook in your test configuration's `config/hooks` directory and point to it in your `config/env/includes/app_launchers.yml` file: - -```yaml -launch_houdini: - defer_keyword: '' - engine: tk-houdini - extra: {} - 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' - menu_name: Launch Houdini - versions: [] - 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: - -```python - elif system == "darwin": - # on the mac, the executable paths are normally pointing - # to the application bundle and not to the binary file - # embedded in the bundle, meaning that we should use the - # built-in mac open command to execute it - if os.path.isdir(app_path): - cmd = "open -n \"%s\"" % (app_path) - if app_args: - cmd += " --args \"%s\"" % app_args.replace("\"", "\\\"") - - # not a directory, execute directly - else: - cmd = "%s %s" % (app_path, app_args.replace("\"", "\\\"")) -``` - -The next time you run `launch_houdini` via `tank` in the Terminal, you should get all the debug output. Once you're done testing, don't forget to revert your path and undo your app launch changes. Happy debugging! diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-mari.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-mari.md deleted file mode 100644 index d243aa0f7..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-mari.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: default -title: Mari -pagename: tk-mari -lang: en ---- - -# Mari - -The {% include product %} engine for Mari contains a standard platform for integrating {% include product %} Toolkit Apps into Mari. It is light weight and straight forward and adds a {% include product %} menu to the main menu. - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-mari %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Overview Video - -See the overview video [here](https://youtu.be/xIP7ChBWzrY). - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-mari -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio `tank` command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and {% include product %} in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-mari. - - - - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-maya.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-maya.md deleted file mode 100644 index 52528c0e6..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-maya.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Maya -pagename: tk-maya -lang: en ---- - -# Maya - -The {% include product %} engine for Maya contains a standard platform for integrating {% include product %} Apps into Maya. It is lightweight and straight forward and adds a {% include product %} menu to the Maya menu bar. - -![Engine](../images/engines/maya_menu.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-maya %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Pyside - -The {% include product %} engine for Maya contains a PySide installation, and will activate this whenever this is necessary. - -## Maya Project Management - -Whenever the {% include product %} engine for Maya starts, it will set the Maya 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 maya project is set based on a file can be configured in the configuration file, using the template system. - -## Installation and Updates - -Adding this Engine to the {% include product %} Pipeline Toolkit -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-maya -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-maya. - - - - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md deleted file mode 100644 index 9300aa7a3..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: default -title: Motion Builder -pagename: tk-motionbuilder -lang: en ---- - -# Motion Builder - -![Engine](../images/engines/sg_mobu_1.png) - -The {% include product %} engine for Motion Builder contains a standard platform for integrating {% include product %} Toolkit Apps into Motion Builder. It is light weight and straight forward and adds a {% include product %} menu to the main menu. - -![Engine](../images/engines/mobu.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-motionbuilder %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-motionbuilder -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-motionbuilder. - - - diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md deleted file mode 100644 index cf0aed01b..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ /dev/null @@ -1,325 +0,0 @@ ---- -layout: default -title: Nuke -pagename: tk-nuke -lang: en ---- - -# Nuke - -The {% include product %} engine for Nuke contains a standard platform for integrating {% include product %} Apps into Nuke, Nuke Studio, and Hiero. It is light weight and straight forward and adds a bunch of new things to Nuke. - -It creates a **{% include product %} Menu** in Nuke on which various items are displayed: - -![menu](../images/engines/nuke-menu.png) - -It creates a **{% include product %} Node Menu** in Nuke on which various items are displayed: - -![nodes menu](../images/engines/nuke-nodes_menu.png) - -It adds {% include product %} shortcuts to the file dialogs which makes it easy to jump to various file system locations: - -![favourites](../images/engines/nuke-favourites.png) - -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: - - display_name: "Shot Publish Path" - template_directory: "shot_publish_area_nuke" - icon: "icons/custom_publish_icon.png" - - display_name: "Shot Work Path" - template_directory: "shot_work_area_nuke" - icon: "icons/custom_work_icon.png" -``` - -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 `''` - - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-nuke %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -*** - -_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. - -### Apps with custom gizmos - -The {% include product %} engine for Nuke makes it easy to handle custom gizmos. If you are writing an app which uses custom gizmos, you can just drop them into a folder called **gizmos** and the engine will automatically add that location to the nuke path: - -![gizmo](../images/engines/nuke-gizmo.png) - -You can then easily access your gizmo via the create node functionality: - -* `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." %} - -### Apps Creating Nodes - -Apps that create custom nuke nodes need to be carefully crafted. We recommend not using gizmos since these require a dependency between the scene and the gizmo code. Instead, save your custom nodes as a nuke file and import them into the scene: - -```python - group_node_script = os.path.join(self.disk_location, "resources", "my_group_node.nk") - group_node = nuke.nodePaste(group_node_script) -``` - -Any code calling the node from within the app can just use the instance returned. - -Any code needing to call the app from inside the group should do so carefully so that the code is backwards compatible. We recommend the following approach: - -At app startup, register app handle as part of the nuke namespace: - -```python - def init_app(self): - - nuke.tk_nuke_nameofmyapp = self -``` - -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 -# sgtk is not in the system at all! -import nuke -try: - app = nuke.tk_nuke_nameofmyapp - app.do_something_v1(nuke.thisNode()) -except: - nuke.warning("Could not do XYZ! Most likely Sgtk is not currently active.") -``` - -If you make changes to the app behaviour, just keep versioning up the version number on the app callback and that way your app code can support both the new and the old behaviour. - -## Using the {% include product %} Engine for Nuke within Hiero - -The {% include product %} engine for Nuke is also used for {% include product %}-aware integrations running within Hiero. - -It allows you to place {% include product %} App actions in several places in the application, both in a specific {% include product %} menu on the main menu bar and in the various right click context menus that you find in the different Hiero panels. - -![menu](../images/engines/nuke-hiero-menus.png) - -### How to Configure Hiero Menus - -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...} -``` - -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: - -- `timeline_context_menu` represents the menu you get when you right click on a clip in the - time line editor. -- `spreadsheet_context_menu` represents the menu you get when you right click on a selection of - items in the spreadsheet editor. -- `bin_context_menu` represents the menu you get when you right click on a selection in of items - in the bin editor, where you see all the different projects and media. - -In order to add items to these menus, just make sure that the `name` field you define in the config matches what the App is displaying on its menus. - -#### Apps which require the concept of a current scene - -Some Toolkit Apps requires a notion of a default scene or default project. For example, the snapshot app knows how to snapshot the current scene. However, unlike Maya or Nuke, Hiero does not have a concept of a current scene. Several projects can be opened in Hiero at the same time. Therefore, you often need to add special logic in your hooks to help an app (like the snapshot app) to find out which project is being clicked on. We show how this works in the following doc sections. - -### Information for App Developers - -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. -This list may contain items of various types. To see exactly what is being -returned by which methods, turn on debug logging - this will print out details -of what is going on. - -Examples of objects that are being returned are: - -- Selecting a project in the bin view: [hiero.core.Bin](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.Bin) -- Selecting an item in a bin view: [hiero.core.BinItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.BinItem) -- Selecting a track: [hiero.core.TrackItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.TrackItem) - -`list` engine_object.get_menu_selection() - -**Parameters & Return Value** - -* **Returns:** List of Hiero Objects - -**Example** - -Get the objects selected in the most recent click, -ensure that a single object was selected and that this -object is a valid Hiero project. This can be useful for example if you want to trigger -save, load or publish operations for a project in Hiero. - -```python -# get the menu selection from the engine -selection = engine_obj.get_menu_selection() - -if len(selection) != 1: - raise TankError("Please select a single Project!") - -if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - -project = selection[0].project() -if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") -``` - -#### HieroEngine.get_menu_category() - -Returns the UI area where the last menu click took place. This command is less -likely to be used - you may need it in cases where you have an app command that you want -to behave differently depending on which menu it was called from. - -`area_enum` engine_object.get_menu_category() - -**Parameters & Return Value** - -Returns one of the following constants: - -- `HieroEngine.HIERO_BIN_AREA` -- `HieroEngine.HIERO_SPREADSHEET_AREA` -- `HieroEngine.HIERO_TIMELINE_AREA` -- `None` for unknown or undefined - -#### 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. - -![menu](../images/engines/nuke-hiero-bin_menu.png) - -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} -``` - -Now, in the app itself, each engine needs to configure a hook which handles scene events such as -save and load. For an application like Maya or Nuke, this is normally just doing a save, a load etc. -But for Hiero, we need to start by finding out which project was actually clicked. The hook code -in our example above would look like this: - -```python -class SceneOperation(Hook): - """ - Hook called to perform an operation with the - current scene - """ - - def execute(self, operation, file_path, context, **kwargs): - """ - Main hook entry point - - :operation: String - Scene operation to perform - - :file_path: String - File path to use if the operation - requires it (e.g. open) - - :context: Context - The context the file operation is being - performed in. - - :returns: Depends on operation: - 'current_path' - Return the current scene - file path as a String - 'reset' - True if scene was reset to an empty - state, otherwise False - all others - None - """ - - if operation == "current_path": - # return the current script path - project = self._get_current_project() - curr_path = project.path().replace("/", os.path.sep) - return curr_path - - elif operation == "open": - # open the specified script - hiero.core.openProject(file_path.replace(os.path.sep, "/")) - - elif operation == "save": - # save the current script: - project = self._get_current_project() - project.save() - - elif operation == "save_as": - project = self._get_current_project() - project.saveAs(file_path.replace(os.path.sep, "/")) - - elif operation == "reset": - # do nothing and indicate scene was reset to empty - return True - - elif operation == "prepare_new": - # add a new project to hiero - hiero.core.newProject() - - - def _get_current_project(self): - """ - Returns the current project based on where in the UI the user clicked - """ - - # get the menu selection from the engine - selection = self.parent.engine.get_menu_selection() - - if len(selection) != 1: - raise TankError("Please select a single Project!") - - if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - - project = selection[0].project() - if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") - - return project -``` - -#### Using debug logging to see menu events - -If you want to see which objects are returned by Hiero when a certain selection is clicked on, -just turn on the engine debug mode. In the script editor you get a summary of the objects -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 deleted file mode 100644 index fa40cb0d5..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ /dev/null @@ -1,228 +0,0 @@ ---- -layout: default -title: Photoshop -pagename: tk-photoshopcc -lang: en ---- - -# Photoshop - -The {% include product %} engine for Photoshop CC provides a platform for integrating {% include product %} into your Photoshop CC workflow. It consists of a standard {% include product %} Pipeline Toolkit engine and relies on the [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP). - -Once enabled, a **{% include product %}** panel becomes available in Photoshop CC. It displays information about the current {% include product %} context as well as the commands that are registered for the apps installed in that context. - -![extension](../images/engines/photoshopcc-photoshopcc_extension.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-photoshopcc %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Interface Overview - -The {% include product %} extension panel uses the same color palette and basic layout as native Photoshop CC panels. It is comprised of five components: - -![extension components](../images/engines/photoshopcc-extension_components.png) - -1. **Context Header** - Thumbnail and fields for the current context. -2. **Favorites Shelf** - Designed to show the most commonly-used apps for the current context. -3. **Command List** - All non-favorited commands for the current context. -4. **Context Menu** - Additional context-related commands and debugging tools. -5. **Logging Console** - A console overlay that displays logging output for debugging. - -## Installation - -Installation of the {% include product %} Engine for Photoshop CC follows the same protocol as the other {% include product %} integrations. For information on installing engines and apps, see the [Administering Toolkit](https://developer.shotgridsoftware.com/425b1da4/) article. In addition, you can reference the [default toolkit config](https://github.com/shotgunsoftware/tk-config-default2) as an example of how to configure the integration. - -## Enabling the extension - -Once the extension is installed, it will need to be launched via the extensions menu in Photoshop CC. - -![extension menu](../images/engines/photoshopcc-extensions_menu.png) - -This will only need to be done once and the {% include product %} extension panel can remain in the Photoshop CC layout without having to be enabled on subsequent launches. - -Once enabled, and on future launches, the extension panel will display a loading screen while the {% include product %} integration is bootstrapping. - -This screen typically displays for a few seconds before the current context is determined and the commands are displayed. - -## Interface components - -The following sections outline the components of the {% include product %} Photoshop CC integration. - -### Context header - -The context header is a customizable area which can display information about the current {% include product %} context. - -![extension header](../images/engines/photoshopcc-extension_header.png) - -The context is determined by the currently-active document. Once the context is determined by the engine, the header will update to display the context's thumbnail field detail. The field information is controlled by a hook. For information on how to customize the field display, see the **Context Fields Display Hook** section below. - -It should also be noted that since Photoshop CC is a multi-document interface, the context, and therefore the {% include product %} extension, will update as you change the active document. It is important that artists understand this behavior, especially when working in multiple {% include product %} contexts simultaneously. - -### Favorites shelf - -The favorites shelf is similar to the menu favorites available in other {% include product %} DCC integrations such as Maya and Houdini. This section of the interface makes the most commonly used Toolkit apps readily available and easy to find just under the context header. - -![extension shelf](../images/engines/photoshopcc-extension_shelf.png) - -The shelf displays the favorited commands as buttons that, when moused over, transition from grayscale to color and display their name in the label at the top. Tooltips for the buttons will show by hovering the mouse above them. - -Clicking one of the buttons will trigger the callback for the registered command to execute. - -For details on how to specify command favorites, see the **Shelf Favorites** section below. - -### Command list - -The command list shows the other "regular" commands that are registered for the current context. - -![extension commands](../images/engines/photoshopcc-extension_commands.png) - -Typically, apps installed within a pipeline configuration will register one or more commands that are displayed here. If the commands are not identified as favorites, and are not identified as context-menu commands, they will display here. - -The command list buttons behave in a manner similar to those in the favorites shelf. The only real difference is that they display as a list with the full name to the right of their icon. - -### Context menu - -Any commands registered as context menu commands will show in the {% include product %} extension panel's context menu. - -![extension context menu](../images/engines/photoshopcc-extension_context_menu.png) - -Like the other command areas, these commands will change along with the context. Commands such as **Jump to {% include product %}** and **Jump to Filesystem** will always be available here. - -### Logging console - -The logging console shows all of the logging output from both the CEP Javascript interpreter and Toolkit's Python process. - -![extension](../images/engines/photoshopcc-extension_console.png) - -If there are any issues with the extension that require support, the logging console output is extremely useful for helping the {% include product %} support team debug the problem. - -## Configuration and technical details - -The following sections outline some of the more technical aspects of the integration to help configure the integration to the specific needs of your studio pipeline. - -### PySide - -The {% include product %} engine for Photoshop CC relies on PySide. Please see the official instructions for [Installing Pyside](http://pyside.readthedocs.io/en/latest/installing/index.html). - -### CEP extension - -The extension itself is bundled with the engine and the engine handles installation automatically on the first launch of Photoshop CC. The extension is installed on the artist's local machine in the standard, OS-specific CEP extension directories: - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -Each time Photoshop CC is launched, the engine bootstrap code will check the version of the extension that is bundled with the engine against the version that is installed on the machine. This means that after an engine update, assuming a new version of the extension came with it, the installed extension will be automatically updated to the newly-bundled version. - -### Configuring favorites - -The **Favorites Shelf** can be configured to display any of the registered commands for your installed apps. To do this, simply add the `shelf_favorites` setting to the `tk-photoshopcc` section of your environment configuration. Here's an example: - -```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...} -``` - -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. - -### 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. - -The first method is the `get_entity_fields()` method. This method accepts an entity type representing the current {% include product %} context. The expected return value is a list of fields for that entity that should be queried for display. The engine itself handles querying the data asynchronously. - -Once the data has been queried from {% include product %}, the second method in the hook is called. This method, `get_context_html()`, receives the context entity dictionary populated with the queried fields specified by the `get_entity_fields()` method. The expected return value is a string containing formatted HTML to display the queried entity fields. - -The [default hook implementation](https://github.com/shotgunsoftware/tk-photoshopcc/blob/master/hooks/context_fields_display.py) is a good reference as to what is required by these methods. - -It should be noted that the engine will always display the entity thumbnail if one is available. - -### Photoshop API - -The engine exposes the Javascript API for Photoshop CC to Python. The full docs for this API can be found [here](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2015.pdf). - -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 -f = adobe.File('/Path/To/File.jpeg') -adobe.app.load(f) -``` - -Set the ruler units to PIXELS: - -```python -pixels = adobe.Units.PIXELS -adobe.app.preferences.rulerUnits = pixels -``` - -Export the current doc for the web with default options: - -```python -temp_thumb_file = adobe.File(out_path) -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() -adobe.app.activeDocument.exportDocument(temp_thumb_file, save_for_web, export_options) -``` - -Export each layer as a separate file: - -```python -doc = adobe.app.activeDocument -layers = doc.artLayers -layers = [layers[i] for i in xrange(layers.length)] -original_visibility = [layer.visible for layer in layers] - -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() - -for layer in layers: - layer.visible = False - -for layer in layers: - layer.visible = True - out_file = adobe.File("c:/layer.%s.jpg" % str(layer.name)) - doc.exportDocument( - out_file, - save_for_web, - export_options, - ) - layer.visible = False - -for (i, layer) in enumerate(layers): - layer.visible = original_visibility[i] -``` - -### Environment variables - -To aid in debugging, there are a set of environment variables that change some of the engine's default values: - -`SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - The Python heartbeat interval in seconds (default is 1 second). The legacy environment variable `SGTK_PHOTOSHOP_HEARTBEAT_INTERVAL` is also respected if set. - -`SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - The number of heartbeat errors before quitting (default is 2). The legacy environment variable `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE` is also respected if set. - -`SHOTGUN_ADOBE_NETWORK_DEBUG` - Include additional networking debug messages when logging output. The legacy environment variable `SGTK_PHOTOSHOP_NETWORK_DEBUG` is also respected if set. - -`SHOTGUN_ADOBE_PYTHON` - The path to the Python executable to use when launching the engine. If not set, the system Python is used. If Photoshop is launched from a Python process, like {% include product %} Desktop or via the tk-shell engine, the Python used by that process will be used by the Photoshop integration. - -Note: Additional environment variables exist in the Adobe Framework. For details, please see the -[developer documentation](https://developer.shotgridsoftware.com/tk-framework-adobe/). - -### 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). diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shell.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shell.md deleted file mode 100644 index d0f5e3221..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shell.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: Shell -pagename: tk-shell -lang: en ---- - -# Shell - -The {% include product %} engine for the shell handles command line interaction and is tightly integrated with the `tank` command which is distributed as part of the Core API. When you execute the `tank` command in a terminal, Toolkit launches the engine to handle app execution. - -For more information about the tank command, please see our [Advanced Toolkit Administration documentation](https://developer.shotgridsoftware.com/425b1da4/?title=Advanced+Toolkit+Administration#using-the-tank-command). - -![Engine](../images/engines/sg_shell_1.png) - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - - -``` -> tank Project XYZ install_engine asset tk-shell -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio `tank` command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-shell. \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md deleted file mode 100644 index ea7431aa0..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: default -title: ShotGrid -pagename: tk-shotgun -lang: en ---- - -# {% include product %} - -![Engine](../images/engines/sg_shotgrid_engine_1.png) - -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 - -Actions are visible on the {% include product %} Home page: - -![action1](../images/engines/shotgun-action1.png) - -They can also be found on the standard {% include product %} context menu, which can be shown by right clicking -on an object or a selection: - -![action1](../images/engines/shotgun-action2.png) - -When you click on an action, processing will immediately start. Once the app has completed, a message is typically displayed with some status information, or an error message if things didn't work. - -## Developing Apps for {% include product %} - -Developing apps that run inside of {% include product %} is easy! If you are not familiar with how app development works in general, head over to the Platform documentation and read the introductory material over there. In this section we will just cover the {% include product %} specific aspects of the app development process! - -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 - 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 - 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: - -```python -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!") -``` - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-shotgun -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-shotgun. - -## Special Requirements - -You need {% include product %} Pipeline Toolkit Core API version v0.19.5 or higher to use this. \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-softimage.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-softimage.md deleted file mode 100644 index b0b7049f4..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-softimage.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Softimage -pagename: tk-softimage -lang: en ---- - -# Softimage - -> **Warning:** The Softimage engine has been end of lifed as of February 13th, 2021. [Learn more here](https://community.shotgridsoftware.com/t/end-of-life-for-softimage-support-on-february-13th-2021/10694). - -![](../images/engines/sg_softimage_1.png) - -The {% include product %} engine for Softimage establishes a bridge between the {% include product %} Pipeline Toolkit apps and Softimage. It contains PySide/Qt distributions, making it possible to write apps using Python and PySide that run right inside the engine. This document refers to more advanced configuration setups. - -The {% include product %} engine for Softimage contains a standard platform for integrating {% include product %} Apps into Softimage. The engine supports the usual suite of apps providing automatic file management, a well defined work-area/publish workflow, snapshot, etc. - -When the engine is loaded, a {% include product %} Menu is provided in the main Softimage menubar: - -![](../images/engines/softimage_menu.png) - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: 2012, 2013. Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -Available Toolkit commands are displayed here. - -Please note that the {% include product %} engine for Softimage is in beta and there are a few known issues - please see below for a full list. - -## Information for App Developers - -### Supported platforms - -The {% include product %} engine for Softimage currently supports Softimage 2012 & 2013 on Windows and 2013 on Linux. - -Softimage 2014 is not currently supported on Linux and whilst it can be run on Windows, there are some instability issues so it's use is definitely not recommended! - -### PySide - -#### Windows - -Under Windows, Softimage can be configured to use either the built-in Python distribution or an external distribution - see http://download.autodesk.com/global/docs/softimage2013/en_us/userguide/index.html?url=files/userprefs528.htm,topicNumber=d30e797817 for further details. - -The engine is bundled with versions of PySide & Qt for the installed versions of Python for Softimage, versions 2012 (Python 2.6 x64), 2013 (Python 2.6 x64) & 2014 (Python 2.7 x64). However, if you are using an external distribution of Python then you should be sure to provide a binary compatible version of PySide & Qt as well. - -A good resource for Windows PySide distributions can be found here: http://www.lfd.uci.edu/~gohlke/pythonlibs/ - -#### Linux - -Under Linux, Softimage has to use the built-in version of Python. For Softimage 2013, a pre-built distribution of PySide & Qt is required and provided by [tk-framework-softimageqt](https://github.com/shotgunsoftware/tk-framework-softimageqt). This distribution has been built using GCC 4.1.2 for Python 2.5.2, the same versions used by Softimage 2013. - -Because of the many different Linux distributions, there isn't a guarantee that this will work with every one so it may be necessary to rebuild these yourself to get things working. Full details of how the version was built can be found in the README included with the framework, here: - -https://github.com/shotgunsoftware/tk-framework-softimageqt/tree/master/resources/pyside121_py25_qt485_linux - -### Known Issues (Windows) - -#### Softimage 2014 Instability - -Although the engine will run under Softimage 2014 on Windows there are known issues and it hasn't been fully tested. Opening the Publish dialog will cause Softimage to crash! - -#### SSL Bug in Softimage 2014 - -The `_ssl.pyd` file distributed with Softimage 2014 contains a known bug which may cause slowdowns at startup. We recommend backing up and then overwriting this file with the `_ssl.pyd` file you can find in Maya 2014 in order to resolve these issues. If you need more help or advice with this, don't hesitate to contact the toolkit support. - -#### Window Parenting - -Qt windows created without a parent and without using the engine's `show_modal` or `show_dialog` methods will not be parented correctly to the main Softimage application. - -### Known Issues (Linux) - -#### Missing ssl & sqlite3 Libraries - -In addition to requiring a very specific version of PySide (detailed above), Softimage is also missing ssl and sqlite3 libraries required by the {% include product %} Python API and Toolkit. - -We have included these as part of the `tk-multi-launchapp` app which also adds them to the LD_LIBRARY_PATH & PYTHONPATH prior to launching Softimage. Again though, if you have problems with these then detailed instructions for how to build them for your system can be found in the README included with the app, here: - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -#### Segmentation Faults In libX11. - -Softimage on Linux contains an optional hack to address speed issues on certain linux distributions. This is detailed here: - -http://xsisupport.com/2011/01/19/the-case-of-the-slow-2011-startup-on-fedora-14/ - -This tells Softimage to use a different version of the libX11 library found in: - -/usr/Softimage/Softimage_2013/Application/mainwin/mw/lib-amd64_linux_optimized/X11 - -If you are using this hack then you will probably get segmentation faults during calls by Qt to the libX11 library (SIGSEGV in the call stack) resulting in frequent crashing. This is because the hack version of the libX11 library is quite old and not compatible with the version Qt was built against! - -To resolve this, a new version of Qt will need to be built against a version of libX11 compatible with the Softimage hack version... - -#### Segmentation Faults In libssl - -If you are using a recent version of openssl, not built using the correct version of GCC (4.1.2) you may see Segmentation faults (SIGSEGV) when the {% include product %} API is used. - -This isn't specific to Qt/PySide but worth mentioning here as it's the second most common problem! - -Please see: - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -for instructions on how to build a compatible version of openssl for Softimage 2013. - -#### Window Parenting - -Currently, Toolkit windows are not parented to the main Softimage application window on Linux. As a work-around they are created to be topmost but this can sometimes mean that other windows (particularly confirmation dialogs) can be hidden behind them. - -If Softimage seems to have hung, try moving any open Toolkit windows to see if there is a dialog hiding behind it! - -#### Softimage/Toolkit Freezes After Moving Window - -You will find that when you move a modeless dialog (e.g. the {% include product %} File Manager), the contents of both Softimage and the dialog will appear to freeze/hang. This is an issue to do with the way the Qt message queue is currently implemented but unfortunately we are yet to find an alternative solution! - -As a simple workaround, when this happens if you just click in the main Softimage Viewport, you will find that everything starts working correctly again! - -## Installation and Updates - -### Adding this Engine to the {% include product %} Pipeline Toolkit - -If you want to add this engine to Project XYZ, and an environment named asset, execute the following command: - -``` -> tank Project XYZ install_engine asset tk-softimage -``` - -### Updating to the latest version - -If you already have this item installed in a project and you want to get the latest version, you can run the `update` command. You can either navigate to the tank command that comes with that specific project, and run it there: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -Alternatively, you can run your studio `tank` command and specify the project name to tell it which project to run the update check for: - -``` -> tank Project XYZ updates -``` - -## Collaboration and Evolution - -If you have access to the {% include product %} Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-softimage. - -## Special Requirements - -You need {% include product %} Pipeline Toolkit Core API version v0.14.56 or higher to use this. \ No newline at end of file diff --git a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md deleted file mode 100644 index 61bc01ce2..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: default -title: VRed -pagename: tk-vred -lang: en ---- - -# VRed - -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. - -## Supported Application Versions - -This item has been tested and is known to be working on the following application versions: - -{% include tk-vred %} - -Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions. - -## Information for App Developers - -### PySide - -The {% include product %} engine for VRED contains a PySide installation, and will activate this whenever this is necessary. - -### VRED Project Management - -Whenever the {% include product %} engine for VRED starts, it will set the VRED 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 VRED project is set based on a file can be configured in the configuration file, using the template system. - -## Working with tk-vred - -This {% include product %} integration supports the VRED product family (Pro & Design). - -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. -![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunFileOpenVRED.png) - -![](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. -![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunSnapshotVRED.png) - - -### 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 -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: 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.md b/docs/en/reference/pipeline-integrations/toolkit-frameworks.md deleted file mode 100644 index 85bd530f7..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Frameworks -pagename: toolkit-frameworks -lang: en ---- - -# Toolkit Frameworks - -Here you'll find reference documentation for frameworks available for the Toolkit platform. diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg b/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg deleted file mode 100644 index acc6917fb..000000000 Binary files a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png b/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png deleted file mode 100644 index bb5714a0c..000000000 Binary files a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg b/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg deleted file mode 100644 index af7bd19ac..000000000 Binary files a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg b/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg deleted file mode 100644 index 50b7fcf2c..000000000 Binary files a/docs/en/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg and /dev/null differ 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 deleted file mode 100644 index 63136b1c4..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Admin UI -pagename: tk-framework-adminui -lang: en ---- - -# Toolkit Admin UI Framework - -The Admin UI Framework implements a place that holds standard user interfaces that wrap Toolkit -administrative commands. - -Currently the only interface is for the setup_project command. - -## SetupProjectWizard API Reference - -![](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 -instance of the class, passing in the project to setup (as a standard {% include product %} API -entity dictionary) and the window to parent to. - -```python -adminui = sgtk.platform.import_framework("tk-framework-adminui", "setup_project") -setup = adminui.SetupProjectWizard(project, parent) -dialog_result = setup.exec_() -``` - -This will run the wizard and return a standard QDialog Accepted or Rejected value. - -### SetupProjectWizard Constructor - -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 deleted file mode 100644 index 9e8d48c54..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: default -title: Desktop Server Framework -pagename: tk-framework-desktopserver -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 -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 -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://developer.shotgridsoftware.com/c79f1656/) covers the various options for how -{% 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 [following these steps](https://developer.shotgridsoftware.com/d587be80/#installation-of-desktop). 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 - -You can store the browser integration settings in a configuration file. This configuration file can be specified by setting the environment variable `SGTK_BROWSER_INTEGRATION_CONFIG_LOCATION`. More details on how you can configure the local server can be found in our [sample file](https://github.com/shotgunsoftware/tk-framework-desktopserver/blob/master/app/config.ini.example). - -### Removing a certificate - -If you wish to remove a certificate you have created, you can run the `python certificates.py --remove` command. - -## Launching via a wrapper - -By default, the server will use the operating-system default to launch a command (the equivalent of -"xdg-open" on Linux, "open" on OS X, and "run" on Windows). If you wish to provide your own wrapper for -launching files you can set the **SHOTGUN_PLUGIN_LAUNCHER** environment variable to point to your -custom wrapper. If that is set, the wrapper will be called with the path as its only argument. - -## Certificates - -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 -over the Internet. - -When the certificates are registered with the system you will see dialogs appear like the following. -Click "Ok" to allow the registration to proceed. - -![](images/osx_warning_1.jpg) -![](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
-**Windows**: %AppData%\Shotgun\desktop\config\certificates
-**Linux**: ~/.shotgun/desktop/config/certificates
- -## 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 -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. - -Within that file there is a section that controls the functionality of the websocket server. -A typical configuration would look like this: - -```ini -[BrowserIntegration] -low_level_debug=0 -port=9000 -enabled=1 -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. - -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. - -The log file can be found in the following locations: - -**OS X**: ~/Library/Logs/Shotgun/tk-desktop.log
-**Windows**: ~\%APPDATA%\Shotgun\tk-desktop.log
-**Linux**: ~/.shotgun/tk-desktop.log
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 deleted file mode 100644 index d5a690184..000000000 --- a/docs/en/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: Desktop Startup -pagename: tk-framework-desktopstartup -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 -2. log the user in -3. download Toolkit -4. configure the site configuration -5. auto update itself and the site configuration when necessary -6. launch the `tk-desktop` engine. - -> This is an internal Toolkit framework and therefore the interface it implements is subject to change. We advise that you do not use this framework in your projects. - -### Locking-down the startup logic - -> 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. - -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. - -#### Download a specific release from GitHub - -You will need to download updates from GitHub manually. The bundles can easily be downloaded from the [Releases](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases) page and you can find more information about each official release [here](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes). - -#### Configure the {% include product %} Desktop to use a specific copy - -The only way to lock down the startup logic is to use an environment variable. By setting `SGTK_DESKTOP_STARTUP_LOCATION` to the root folder of a copy of the framework, you will tell the {% include product %} Desktop to use this copy of the code when starting up. Once the variable is set, you can launch the {% include product %} Desktop and it will use this specific copy of the startup logic. - -> Note that as of this writing the `Startup Version` field in the `About...` box will be `Undefined` when locking the startup logic due to a technical limitation. - -#### Reverting to the old behaviour - -To revert back your changes, simply unset the environment variable and launch the {% include product %} Desktop. diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png deleted file mode 100644 index 9926ffe40..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png deleted file mode 100644 index 493f9f779..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png deleted file mode 100644 index c5ce96793..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png deleted file mode 100644 index 4e5c092e5..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png deleted file mode 100644 index 7664440ad..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png deleted file mode 100644 index 2f2308070..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png deleted file mode 100644 index bcf2e2031..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png deleted file mode 100644 index 67160f27e..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png deleted file mode 100644 index b6fb28283..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png deleted file mode 100644 index 6efa8f329..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png deleted file mode 100644 index a4997e60d..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png deleted file mode 100644 index 112fbb5bb..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png deleted file mode 100644 index 6fe76a74e..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png deleted file mode 100644 index f02cc36ae..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png deleted file mode 100644 index b2f3016dc..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png deleted file mode 100644 index dc216fecf..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png deleted file mode 100644 index e09747def..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg deleted file mode 100644 index 2f5dc33a0..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png deleted file mode 100644 index 282f4ac6c..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png deleted file mode 100644 index f8a551984..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png deleted file mode 100644 index e80cdbe01..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png deleted file mode 100644 index ae4228c15..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png deleted file mode 100644 index 9935043d6..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png deleted file mode 100644 index 7c2c50037..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png deleted file mode 100644 index 47bbb00d3..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png deleted file mode 100644 index f69ff3337..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png deleted file mode 100644 index f38c26f78..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png deleted file mode 100644 index c5ad04bd5..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png deleted file mode 100644 index 139676c24..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png deleted file mode 100644 index 0e6dd7bdd..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png deleted file mode 100644 index db6645d73..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png deleted file mode 100644 index 9010149a7..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png deleted file mode 100644 index 24c650cad..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png deleted file mode 100644 index 480443b98..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png deleted file mode 100644 index 2fdf86d2c..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png deleted file mode 100644 index 380ab8a20..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png deleted file mode 100644 index a31f6a14f..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png deleted file mode 100644 index e03fbe028..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png deleted file mode 100644 index 5817d34e5..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png deleted file mode 100644 index c06f3bdcf..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png deleted file mode 100644 index c3f3b7548..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png deleted file mode 100644 index d5b6ba27d..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png deleted file mode 100644 index 5e0ab0512..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png deleted file mode 100644 index d5e9d01e2..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png deleted file mode 100644 index 05b37e428..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png b/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png deleted file mode 100644 index 7e8778953..000000000 Binary files a/docs/en/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png and /dev/null differ diff --git a/docs/en/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md b/docs/en/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md deleted file mode 100644 index a05f651b2..000000000 --- a/docs/en/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md +++ /dev/null @@ -1,509 +0,0 @@ ---- -layout: default -title: Integrations User Guide -pagename: integrations-user-guide -lang: en ---- - - -# Integrations user guide - -In this guide: -- [Introduction](#introduction) -- [Getting started with Desktop](#getting-started-with-desktop) - - [Installation of Desktop](#installation-of-desktop) - - [Logging in when self hosted or behind a proxy server](#logging-in-when-self-hosted-or-behind-a-proxy-server) - - [Authentication and browser integration](#authentication-and-browser-integration) - - [The system tray](#the-system-tray) - - [The project browser](#the-project-browser) - - [The command launcher](#the-command-launcher) - - [The console](#the-console) -- [Launching applications](#launching-applications) -- [The Panel](#the-panel) - - [Overview](#overview) - - [UI details](#ui-details) - - [The activity stream](#the-activity-stream) - - [Creating and replying to Notes](#creating-and-replying-to-notes) - - [Notes, Versions, Publishes, and Tasks](#notes-versions-publishes-and-tasks) - - [The info tab](#the-info-tab) - - [Searching](#searching) - - [Actions](#actions) - - [The current work area and the me area](#the-current-work-area-and-the-me-area) - - [Current Work Area](#current-work-area) -- [The Publisher](#the-publisher) - - [Overview](#overview-1) - - [Interface components and concepts](#interface-components-and-concepts) - - [Basic workflow](#basic-workflow) - - [Publishing within content creation software](#publishing-within-content-creation-software) - - [Publish items and tasks](#publish-items-and-tasks) - - [Context](#context) - - [Validation](#validation) - - [Multi-document workflows](#multi-document-workflows) - - [Stand-alone publishing](#stand-alone-publishing) - - [Publish types](#publish-types) - - [Standalone](#standalone) - - [3ds Max](#3ds-max) - - [Houdini](#houdini) - - [Maya](#maya) - - [Nuke](#nuke) - - [Nuke Studio](#nuke-studio) - - [Photoshop CC](#photoshop-cc) -- [The Loader](#the-loader) - - [Overview](#overview-2) - - [The tree view](#the-tree-view) - - [Navigation](#navigation) - - [Looking at publishes](#looking-at-publishes) - - [Bringing one or multiple publishes into your scene](#bringing-one-or-multiple-publishes-into-your-scene) - - [Working with older publishes](#working-with-older-publishes) - - [Associated review](#associated-review) -- [Advanced functionality](#advanced-functionality) -- [Acknowledgments](#acknowledgments) - -## Introduction - -{% include product %} integrations bring {% include product %} into your content creation tools. When you use {% include product %}'s integrations, you'll be able to easily launch your software, use the Panel to track notes and data {% include product %} has about your tasks, and use the Publisher and Loader to track files and bring them into your scene. Artists will have access to all the {% include product %} data about their Tasks, and all Tasks on their Project, from right within the app. They can reply to Notes, playback Versions, publish files, and load in their colleagues’ published files. - -For the latest updates to {% include product %} integrations, please subscribe to the [release notes](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes) . - -## Getting started with Desktop - -The **{% include product %} Desktop** app sits at the heart of our integrations. It is a software application that extends the {% include product %} experience onto your local machine, and makes it easy to access {% include product %} data, launch applications, and run pipeline integration tools directly from your machine. - -**Running Toolkit Classic or a Custom Setup?** - -The {% include product %} Integrations install automatically. If you are an advanced client wanting to install the **Classic** Toolkit configuration or you have a **Custom** Toolkit setup that you want to install via the **Desktop Setup Wizard** , please head over to the [administrator's guide](https://developer.shotgridsoftware.com/8085533c/) to learn how to do this. - -### Installation of Desktop - -You can download {% include product %} Desktop under the Apps menu. - -![shotgun-desktop-app-01.png](./images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png) - -Follow the prompts and choose whether to download Desktop for Mac, Windows, or Linux. - -![download-desktop-02.png](./images/sa-integrations-user-guide-download-desktop-02-v2.png) - -### Logging in when self hosted or behind a proxy server - -*Note: the following content regarding logging in is intended if you are self hosted or using a proxy server. This is not the defaut behavior.* - -If you are self hosted or using a proxy server, the first time you open Desktop, you'll be prompted by your browser about certificates. We do this in order to connect {% include product %} with the Desktop app. If you’re having trouble getting certificates set up, take a look at our troubleshooting docs for [Firefox](https://developer.shotgunsoftware.com/d4936105/) and [Chrome and other browsers](https://developer.shotgunsoftware.com/95518180/) . - -![guide-desktop-cert-window-03.png](./images/sa-integrations-user-guide-desktop-cert-window-03.png) - -You will only need to update your security certificate list once. Please note that only Mac and Windows show a prompt for certificates, not Linux. - -Once that's set up, you'll need to log in to your {% include product %} site. - -If you go through a proxy, you will have to do some additional configuration. See instructions on how to do that in our [Admin Guide](https://developer.shotgridsoftware.com/8085533c/#toolkit-configuration-file) . - -#### Authentication and browser integration - -Desktop provides services that allow the {% include product %} web application to interact with your computer. This enables features like [local file linking](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html) and software launching. For security reasons, you must be logged into Desktop as the same user on the same {% include product %} site as you are in the browser. If you are logged in as a different user or on a different site, Desktop will prompt you to switch accounts and if you do it will restart and prompt for the appropriate credentials. - -### The system tray - -When the application starts it shows up as an icon in your system tray. To show the window, click the icon. By default, the window will be pinned to the system tray, which means that if the window loses focus, it will automatically hide itself. - -You can unpin the window by selecting "Undock from Menu" from the user menu or by dragging it by its header. When the window is unpinned it will look like a regular window and will no longer hide itself when it loses focus. - -While the window is undocked, you can hide it by clicking on the close button. To show it again, click on the system tray icon. - -### The project browser - -The first main view of the app is the project browser. Here you will see all the projects in your {% include product %} instance. Your most recently accessed projects will be listed first. - -Near the bottom right of the window you will see your {% include product %} account's thumbnail. This is the user menu, where you can do things like dock and undock the window, keep it on top of other windows, and show the logging console. - -![user-menu-04.png](./images/sa-integrations-user-guide-user-menu-04.png) - -At the top of the window, you can click on the magnifying glass icon to show the search box. Typing in this box will filter the list of projects shown to just those that contain the letters you are typing. - -![search-05.png](./images/sa-integrations-user-guide-search-05.png) - -Clicking on a project will take you to the command launcher view for that project, where you can launch the tools that are available for the project. - -### The command launcher - -Once you have selected a project, you are taken to the command launcher for that project. This window will show whatever tools and applications are available for the project as a grid of buttons. Simply click on a button to launch its application. It will run in a project-specific environment, and if {% include product %} has an integration for it, you'll see a {% include product %} menu with all of the available tools. - -### The console - -You can launch the console from the user menu. The logs from launching a project are displayed here. If you run into an error, the details of the error should be shown here. - -If you right-click on the console, you are given a standard edit menu, allowing you to select all of the text, copy your selection, or to clear the text in the console. - -![console-06.png](./images/sa-integrations-user-guide-console-06.png) - -## Launching applications - -When you launch {% include product %} Desktop and choose a project, it scans the standard applications directory for your operating system. Desktop will display launchers for any [applications that we have integrations for](https://www.shotgridsoftware.com/integrations/) . If you have more than one version of the same software, the launcher will have a dropdown list with all available versions. Clicking on the launcher icon itself will launch the latest version. - -You can launch applications like Maya and Nuke straight from {% include product %} Desktop, or you can launch them directly from {% include product %}. Either way, {% include product %}'s integrations will be available from within your application. - -![launching-software-07.jpg](./images/sa-integrations-user-guide-launching-software-07.jpg) - -It’s normal for a studio to need additional configuration other than what comes out-of-the-box. Your studio may have software in a non-standard location or in-house engines for software we don’t support natively. It’s easy to configure these cases from right within the {% include product %} web app. See the [Admin Guide](https://developer.shotgridsoftware.com/8085533c/) for details. - -If you're not seeing an app you expect to see, take a look at the [Configuring the software in {% include product %} Desktop section of our Admin Guide](https://developer.shotgridsoftware.com/8085533c/) . - -## The Panel - -### Overview - -Upon launching an application from Desktop or {% include product %}, the {% include product %} Panel will appear. The {% include product %} Panel is a small and lightweight version of {% include product %} which runs directly inside artist applications such as Maya and Nuke. The Panel lets you quickly access {% include product %} information without leaving the application you’re working in. It provides easy access to information about your current task, and you have instant access to the activity stream, Notes, Tasks, Versions, and Publishes from {% include product %}. You can play back Versions sent to review by other members of your team, reply to Notes, create new Tasks, and search your {% include product %} site. - -### UI details - -The {% include product %} panel consists of a couple of main UI elements. On top you'll find a _toolbar_ with buttons for navigation and searching. Right below the toolbar you have the _details area_ which displays information about the item you are currently viewing. This details area is configurable, so if you want to display custom fields or have data that is extra important in your pipeline, it is easy to make it appear here. Lastly, you find a number of _Content tabs_ . These all display listings of {% include product %} data and make it easy to navigate around in the {% include product %} Panel to quickly browse things like publishes, review Versions, or see who is assigned to the Tasks linked to your current focus. - -![overview-08.png](./images/sa-integrations-user-guide-overview-08.png) - -In applications where the integration supports docking, the {% include product %} Panel will appear seamlessly docked inside the UI. In other applications, it will be displayed as a normal window. - -![maya-09.png](./images/sa-integrations-user-guide-maya-09.png) - -Below is a brief overview of the different tabs and features available in the {% include product %} Panel. - -#### The activity stream - -![activity-stream-010.png](./images/sa-integrations-user-guide-activity-stream-010.png) - -The activity stream works just like the activity stream in {% include product %}—it shows you all the things happening in and around the object you are looking at: - -* users creating Notes, -* Versions being submitted for review, and -* publishes being created by the pipeline. - -You can add new Notes directly from the activity stream and also reply to existing Notes. Attachments will show up automatically, and clicking them will show a large preview. - -Please note that after uploading a file, you may see a placeholder icon. Manually refresh the panel to display the final thumbnail, once it becomes available. - -![thumbnail-placeholder-11.png](./images/sa-integrations-user-guide-thumbnail-placeholder-11.png) - -#### Creating and replying to Notes - -![notes-12.png](./images/sa-integrations-user-guide-notes-12.png) - -Creating or replying to a Note is easy with the {% include product %} Panel. Simply navigate to an activity stream or Note details page and click either _create note_ or _reply to note_ . A dialog will appear where you can type in the Note text. You can use `@name` notation if you want to send the Note to a specific person—this will add that person to the TO field of the Note automatically. - -#### Notes, Versions, Publishes, and Tasks - -![tasks-and-versions-13.png](./images/sa-integrations-user-guide-tasks-and-versions-13.png) - -The Notes, Versions, publishes, and Tasks tabs all work the same way—by displaying data associated with the current item you are seeing. You can double click an item to focus on that item. Once you have navigated to a _Publish_ , you can view the dependencies for that publish. This is useful if your pipeline is tracking dependency information and gives you instant access to how your assets are interconnected. - -#### The info tab - -![info-14.png](./images/sa-integrations-user-guide-info-14.png) - -If you cannot find what you are looking for in the other tabs, try navigating to the info tab. This holds most of the {% include product %} fields for your focused entity and you can click on the blue hyperlinks in order to navigate around to other {% include product %} locations. - -#### Searching - -![search2-15.png](./images/sa-integrations-user-guide-search2-15.png) - -If you want to quickly navigate to another location or object in {% include product %}, you can use the built-in search. This is similar to the global search in the {% include product %} web application. Just start typing the name or description of what you are looking for. Once you have typed in three or more characters, you will see results displayed. - -#### Actions - -![actions-16.png](./images/sa-integrations-user-guide-actions-16.png) - -You can also use the {% include product %} Panel to use {% include product %} data to run operations in your scene. Similar to the Loader, the Panel has an actions system that makes it easy to register snippets of code to be triggered by a menu on an item in the browser. You can access actions from the detail area as well as from the listings. The actions button in the details area also contains some handy built-in functions to quickly jump to {% include product %} and to refresh your current view. - -#### The current work area and the me area - -![work-home-17.png](./images/sa-integrations-user-guide-work-home-17.png) - -The icon on the top left navigates you to your current work area. This is typically the Task that you are currently working on and is a quick way to get access to Notes, and review Versions and other information relevant to what you are currently working on. This is also the location that the {% include product %} Panel always starts focused on. - -On the top right you will find a button displaying the current user's thumbnail. This button will take you to a page which displays information associated with the current user. This includes - -* All the publishes and Versions you have submitted -* Tasks that are assigned to you -* All note conversations where you are either participating or where the Note is relevant to you—e.g., Notes that are associated with Tasks that you are assigned to. - -#### Current Work Area - -When you start working on a Task, you can use the Panel to set your Current Work Area. Then, when you publish your work, it will be associated with your current Task in {% include product %}. - -## The Publisher - -### Overview - -The Publish app allows artists to publish their work so that it can be used by artists downstream. It supports traditional publishing workflows within the artist’s content creation software as well as stand-alone publishing of any file on disk. When working in content creation software and using the basic {% include product %} integration, the app will automatically discover and display items for the artist to publish. For more sophisticated production needs, studios can write custom publish plugins to drive artist workflows. - -The following sections cover the publisher UI and basic integration workflows. For information about customizing the publisher for your studio-specific needs, please see the [Publisher Dev Guide](http://developer.shotgridsoftware.com/tk-multi-publish2/) . - -### Interface components and concepts - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -Drag and drop files from anywhere on your local filesystem. Use the browse button to open a file browser to select one or more files to publish. - -![main-view-19.png](./images/sa-integrations-user-guide-main-view-19.png) - -The tree of items on the left show what will be published. The top level items can include subitems that are related, such as renders or caches generated from within the work file. Under each item is one or more publish tasks, which represent the actions to be performed at publish time. - -![items-tree-20.png](./images/sa-integrations-user-guide-items-tree-20.png) - -Items themselves are grouped under context headers that indicate the {% include product %} context that the published file will be associated with. - -When there is more than one top-level item, a summary item will be present which provides an overall look at the items to publish and actions that will be executed. - -![selection-detail-21.png](./images/sa-integrations-user-guide-selection-detail-21.png) - -When an item is selected, the right side of the interface will show the item’s details. This includes the destination context as well as a thumbnail and description for the publish. A summary will also be included for the item and any subitems. - -![buttons-and-status-22.png](./images/sa-integrations-user-guide-buttons-and-status-22.png) - -At the bottom of the interface, there are a series of tool buttons on the left. These buttons are: - -* **Browse** : Browse for files to publish -* **Refresh** : Refresh the publish item list -* **Delete** : Remove the selected items from the list -* **Expand** : Expand all items in the list -* **Collapse** : Collapse all items in the list -* **Documentation** : Open the workflow documentation - -In the middle is a status label. This will update as the Publisher performs validation and executes the publish tasks. When clicked, you will see the progress detail overlay. - -To the far right are the **Validate** and **Publish** buttons. The Validate button will execute an initial validation pass on all items and tasks to ensure they are in a publishable state. The Publish button will initiate the publishing of items in the list. - -![progress-details-23.png](./images/sa-integrations-user-guide-progress-details-23.png) - -The progress details overlay shows the output of collection, validation, and publishing of items in the list. - -A Copy to Clipboard button makes it easy for users to share publish logs. When validation or publish errors occur, the log messages may include an action button that will guide the user toward additional information and, in some cases, an immediate fix. - -### Basic workflow - -The purpose of the Publish app is to allow an artist to make their work available for other artists to use. In {% include product %}, publishing a file means creating a record in {% include product %} with information about the file being published, including the path, version number, artist info, related {% include product %} context, etc. Once the file is tracked in {% include product %}, other users can make use of it via the [Loader](#the-loader) app. - -The basic {% include product %} integration provides two ways to use the Publish app in your pipeline: standalone publishing and publishing within content creation software. The following sections outline the workflows for each of these scenarios. - -#### Publishing within content creation software - -The basic {% include product %} integrations include publishing workflow support for content creation software including 3dsMax, Houdini, Maya, Nuke, Nuke Studio, and Photoshop. When the Publisher is launched with the content creation software, it will automatically attempt to find items to publish. While the items that are presented for publishing will differ slightly based on the software and the contents of the artist’s work file, the same basic publish concepts apply. Here is an example of publishing within Nuke: - -![publish-in-dcc-24.png](./images/sa-integrations-user-guide-publish-in-dcc-24.png) - -#### Publish items and tasks - -Here you can see the publish items that have been collected on the left hand side. There are three publish items: the selected item is the work file itself with two child items below it. Additionally, there is an image file sequence and an Alembic cache. These items each have a **Publish to {% include product %}** publish task attached that, when executed, will handle creating the publish entry in {% include product %} in order to keep track of the individual files or image sequences. - -The parent item representing the Nuke Script has a **Begin file versioning** plugin attached. This plugin will appear when the work file does not have a version number in the path. If checked, this task will insert a version number into the file name prior to publishing. In this case, the file would be renamed from `bunny_010_0010.nk` to `bunny_010_0010.v001.nk` . This encourages keeping a history of the artist work file. The task is not checked by default and is not required to run. If the item is published with the task enabled, the next time the work file is published, since it will have a version number in the file name, the task will not show up. - -The publish tasks can be turned on or off as desired. The check box on an item reflects and controls the check state of its subtasks. For example, unchecking an item will uncheck all of its tasks. Unchecking one of multiple tasks will put the item into a semi-checked state. To toggle the check state of all tasks of a certain type (all **Publish to {% include product %}** tasks for example), simply hold the `Shift` key when checking the box. - -Selecting a publish task will show information about what the task does. - -![items-and-tasks-25.png](./images/sa-integrations-user-guide-items-and-tasks-25.png) - -##### Context - -Above the Nuke Script item, you can see the name of the context that the published items will be associated with in {% include product %}. This can be modified by changing the Task and/or Link fields on the right side of the interface. If multiple items are being published, they may show up under different contexts. The icon with three horizontal lines on the left of the publish items is a drag handle for moving items from one context to another. - -A menu dropdown button is also provided next to the Task entry field. This menu can show several groups of Tasks that you might be interested in. It will show any tasks assigned to the current user, tasks related to the current context (such as other tasks assigned to the same Shot), and any recently browsed tasks. - -![context-menu-26.png](./images/sa-integrations-user-guide-context-menu-26.png) - -To search for a task or entity link, simply click on one of the fields or click the search icon and begin typing the name of the context you’re interested in. The fields will show matching tasks or entity links and you can click or navigate to the desired context. - -![search-27.png](./images/sa-integrations-user-guide-context-search-27.png) - -![thumbnail-and-desc-28.png](./images/sa-integrations-user-guide-thumbnail-and-desc-28.png) - -For each publish item, you can click the camera icon to select a portion of the screen to use as the thumbnail for the Publish in {% include product %}. For scenarios where there are child items, they will inherit the thumbnail from the parent by default. You can override the child item’s thumbnail by selecting the child and clicking its thumbnail. - -The description entered will be included in the Publish data in {% include product %}. Like the thumbnail, the description is inherited from parent items but can be overridden by entering a new description in the child’s detail entry. - -##### Validation - -Once the items are ready to be published, you can click the Validate button to ensure the state of the file and the publish items will allow the publish to complete as expected. - -![validation-29.png](./images/sa-integrations-user-guide-validation-29.png) - -If all items validate properly, you should see green checkmarks on the right. For any items that do not validate, you will see a warning icon. - -![validation-warning-30.png](./images/sa-integrations-user-guide-validation-warning-30.png) - -The status will also be displayed in the status label area at the bottom of the publisher. - -![status-warning-31.png](./images/sa-integrations-user-guide-status-warning-31.png) - -Clicking on the icon in the item or the status label will open the progress details overlay and highlight the validation issue. - -![warning-details-32.png](./images/sa-integrations-user-guide-warning-details-32.png) - -In the example above, the Nuke script has not been saved. In some scenarios, an action button will be provided to quickly direct you to the fix for the issue or to get more information about the issue. Here you can see a **Save As…** action button that will open the Nuke save dialog. - -Once the validation issues have been corrected, you can close the progress details overlay to return to the publish item view. Validation can be run as many times as required while addressing publish task warnings or errors. - -When the **Publish** button is pushed, the app will walk through the items and tasks in the list, run another validation pass on each, and then execute the publish logic to create entries in {% include product %}, upload thumbnails, bump the work file version, etc. A finalize pass is also executed to summarize publish for each item and do any cleanup work necessary. - -![publish-complete-33.png](./images/sa-integrations-user-guide-publish-complete-33.png) - -The results of the entire process can be reviewed afterward by clicking the status label at the bottom of the publisher to show the progress details overlay. You can also leave the progress details view on while publishing to see the output as the publish occurs. You can see additional action buttons, shown here, to quickly jump to the newly created publish entry in {% include product %}. - -##### Multi-document workflows - -For multi-document workflows in content creation software such as Photoshop or Nuke Studio, multiple top-level items will be displayed in the publish item list. - -![multi-doc-34.png](./images/sa-integrations-user-guide-multi-doc-34.png) - -Only the current/active document will be expanded and checked. To check all documents to publish, simply hold `Shift` and click one of the unchecked item’s check box. To expand the collapsed items, use the expand button in the toolbar at the bottom. - -When there are multiple top-level items, a summary item is also included at the top of the list. - -![summary-35.png](./images/sa-integrations-user-guide-summary-35.png) - -Selecting this item will show a complete summary of all items selected for publishing. Above you can see four items with a total of eight tasks to execute in four different contexts. You can override the context and description for all items in this view if you desire. - -You can also see an **Upload for review** task in the image above. This task is not limited to the Photoshop workflow. It will be available for any file type that can be transcoded and uploaded to {% include product %} as reviewable media. - -#### Stand-alone publishing - -The Publish app is not required to be run from within content creation software. - -![desktop-launch-36.png](./images/sa-integrations-user-guide-desktop-launch-36.png) - -Here you can see the publisher can be launched directly from {% include product %} Desktop. When launched in standalone mode, you will be presented with an area to browse or drag and drop files. - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -Clicking the browse button will open a standard file browser where you can select the files you would like to publish. - -Once you have selected files from the browser or dragged and dropped them from somewhere on your file system, the app will show them as top-level items for publish. - -![collected-drop-38.png](./images/sa-integrations-user-guide-collected-drop-38.png) - -As with the previous examples, you can select the context for each item, set the description, and identify which task should execute when publishing. - -#### Publish types - -The following sections describe the automatically collected publish types for each of the basic {% include product %} integrations. - -##### Standalone - -The standalone workflow does not automatically collect files for publishing. Users must drag file paths into the interface or browse to them in order to publish. The publisher will accept browsed or dropped files at any point prior to the **Publish** button being clicked. The basic integration will accept any file extension using known file types to associate with {% include product %} publish types. If the file extension is not recognized, the mimetype of the file will be used. Recognized image and video mimetypes will be publishable and have a task attached to upload for review. - -The basic integration assumes that folders dropped contain image sequences. Any recognized image sequences found in the folder will be presented as items for publishing. If no sequences are found, no items will be created for publish. - -##### 3ds Max - -The current Max session will be collected for publishing with a publish type of **3dsmax Scene** which can be merged or referenced into another Max session via the Loader. - -If a project folder can be determined for the current session, any files found in the project’s **export** folder will be presented for publish. Similarly, any movie files found in the project’s **preview** folder will be publishable. - -##### Houdini - -The current Houdini session will be collected for publishing with a publish type of **Houdini Scene** which can be merged into another Houdini session via the Loader. - -Any files written to disk from nodes of the following types will also be automatically collected and presented as publish items: - -* **alembic** -* **comp** -* **ifd** -* **opengl** -* **wren** - -##### Maya - -The current Maya session will be collected for publishing with a publish type of **Maya Scene** which can be imported or referenced into another Maya session via the Loader. - -If a project root can be determined for the current session, any Alembic files found in the project’s **cache/Alembic** folder will be presented for publish. Similarly, any movie files found in the project’s **movies** folder will be publishable. - -##### Nuke - -The current Nuke session will be collected for publishing with a publish type of **Nuke Script** which can be imported into another Nuke session or opened as a new session via the Loader. - -Any files written to disk from nodes of the following types will also be automatically collected presented as publish items: - -* **Write** -* **WriteGeo** - -##### Nuke Studio - -Any open Nuke Studio projects will be collected for publishing with a publish type of **NukeStudio Project** which can be opened as a new project via the Loader in another Nuke Studio session. - -##### Photoshop CC - -Any open Photoshop documents will be collected for publishing with a publish type of **Photoshop Image** which can be loaded as a new layer or opened as a new document via the Loader in another Photoshop session. - -## The Loader - -The {% include product %} Loader lets you quickly overview and browse the files that you have published to {% include product %}. A searchable tree view navigation system makes it easy to quickly get to the Task, Shot or Asset that you are looking for and once there, the Loader shows a thumbnail based overview of all the publishes for that item. Through configurable hooks you can then easily reference or import a publish into your current scene. - -Publishes are records in {% include product %}, each representing a file on disk or a sequence of files (like a sequence of images, for example). Publishes can be created by any application, but are typically created by the Publisher. - -Once the publishes have been created, they can be loaded in by other people in the pipeline. This is where the loader comes in. The loader will let you browse the publishes stored inside {% include product %} in a way which is reminiscent of a file system browser. - -### Overview - -The Loader app lets you quickly browse files that have been published to {% include product %}. The app has a searchable tree view navigation system that makes it easy to see a thumbnail of a Task, Shot, or Asset. - -![overview2-39.png](./images/sa-integrations-user-guide-overview2-39.png) - -### The tree view - -Use the tree view on the left to quickly locate the Shot, Asset, or Task that you are looking for. If you know the name of the item you are looking for, you can type it into the search area and only items matching your search phrase will be shown in the tree. - -![search3-40.png](./images/sa-integrations-user-guide-search3-40.png) - -As soon as you start typing, a blue bar will be shown around the tree, indicating that you are no longer viewing the full tree, but a subset of the items in the tree, based on your search phrase. All nodes in the tree will be automatically expanded as you start searching. For convenience, if you right click the tree, you'll find options to expand or collapse all nodes in the tree. - -### Navigation - -On top of the tree view, you'll find three navigation buttons. - -![buttons-41.png](./images/sa-integrations-user-guide-buttons-41.png) - -If you click the home button, the loader will automatically navigate to the Shot or Asset representing your current work area. This is handy if you want to quickly load something that relates to the work you are currently doing. On startup, this is also the location the Loader will show by default. When you select different items in the tree view, a history is built up over time. This can be navigated using the back and forward buttons, just like a browser. - -### Looking at publishes - -Once you select an item in the tree, the available publishes will be shown in the publish area in the middle of the UI. Each item in this view represents the most recent item in a stream of publishes, so you may for example see version 15 of a texture, meaning that there are 14 previous versions in the version history for that item. - -In addition to publishes, you will also see folder icons representing Shots, Sequences, Assets or other {% include product %} entity types. If there is a thumbnail for an object, you will see it overlaid on top of the folder to make navigation quick and visual. Double clicking on a folder will navigate down into that folder in the hierarchy. - -![thumb-view-42.png](./images/sa-integrations-user-guide-thumb-view-42.png) - -There are two viewing modes. The thumbnail mode is great when you are visually browsing, for example looking for a texture. You can quickly eyeball the list and use the zoom handle to zoom in and out quickly. - -![list-view-43.png](./images/sa-integrations-user-guide-list-view-43.png) - -If you are browsing something less visual than textures, for example Nuke scripts or Maya files, you can use the list view instead of the thumbnail view. This mode provides you with some more information and is also more compact, allowing you to quickly scroll through lots of items. - -If you only want to view items of a certain type, you can use the _filter panel_ on the bottom left to quickly hide or show publishes. You'll also see a summary next to each type in the list, indicating how many publishes of each type was found for the currently selected tree item. - -### Bringing one or multiple publishes into your scene - -If you want to bring an item into your scene, simply double click it and the Loader will execute the _default action_ for the publish. There may be more than one way to add an item to your scene (for example in Maya you may want to either reference or import another Maya file into your scene). In this case, click the _actions_ dropdown menu or right click anywhere on the publish to see all available options. - -If you want to bring multiple items into your scene, select multiple elements and right-click any item in the selection to show the _actions_ pop-up menu. Note that only the actions that can be applied on every item in the selection will be shown. - -![actions2-44.png](./images/sa-integrations-user-guide-actions2-44.png) - -If you select a Shot or Asset Folder object instead of a publish, there will be options to show that item in {% include product %} or in the File system. - -### Working with older publishes - -If you open up the right hand side detail pane, you will see all the version history for your selected publish. This makes it possible to load in an older version. If this is desirable, simply select it in the version history and use its action menu to load it in, just like the publishes in the main view. - -### Associated review - -If a publish has an associated review version, you will see a play button appearing in the detail pane. Clicking this will launch Screening Room in a web page, allowing you to quickly see or add notes to the version, as well as playing back the associated review Quicktime. - -![screening-room-45.png](./images/sa-integrations-user-guide-screening-room-45.png) - -## Advanced functionality - -All of {% include product %}'s integrations are built on top of a highly customizable and extensible platform for building pipelines called Toolkit. For more information on how to access and configure this functionality, see our [Admin Guide](https://developer.shotgridsoftware.com/8085533c/) . - -## Acknowledgments - -* A bug fix version of PySide is distributed with {% include product %} Desktop and is available [here](http://www.autodesk.com/content/dam/autodesk/www/Company/files/PySide-1.2.2.sgtk.zip) . -* Big Buck Bunny - footage courtesy of (CC) Blender Foundation, www.blender.org - -Tell the doc gen system that we don't want a header by adding this special markup: TANK_NO_HEADER diff --git a/docs/en/reference/python-api-intro.md b/docs/en/reference/python-api-intro.md deleted file mode 100644 index 4957602b5..000000000 --- a/docs/en/reference/python-api-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Python API -pagename: python-api-intro -lang: en ---- - -# Python API - -Here you'll find reference documentation for the Python API. \ No newline at end of file diff --git a/docs/en/shotgun.md b/docs/en/shotgun.md deleted file mode 100644 index 9d3f5d17c..000000000 --- a/docs/en/shotgun.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Overview -pagename: shotgun-index -lang: en ---- - -# {% include product %} Development - -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. - -{% 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/test.md b/docs/en/test.md new file mode 100644 index 000000000..0bbd05081 --- /dev/null +++ b/docs/en/test.md @@ -0,0 +1,12 @@ +--- +layout: default +title: Overview +pagename: test +lang: en +--- + +# {% include product %} Development + +Test page test 123 + +![test](./images/color.png) diff --git a/docs/en/toolkit.md b/docs/en/toolkit.md deleted file mode 100644 index c4bfd238e..000000000 --- a/docs/en/toolkit.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Pipeline Integrations -pagename: toolkit-index -lang: en ---- - -# Pipeline Integrations - -{% 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. diff --git a/docs/en/trusted-solutions/cloud.md b/docs/en/trusted-solutions/cloud.md deleted file mode 100644 index 7883947ce..000000000 --- a/docs/en/trusted-solutions/cloud.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: ShotGrid in the Cloud -pagename: cloud-index -lang: en ---- - -# {% include product %} in the Cloud - -## What is {% include product %} in the Cloud? - -{% include product %} Cloud is our default offering, hosted on AWS and built on top of Autodesk's Cloud technology platform. {% include product %} Cloud is the latest generation of our hosted service and is completely cloud based. - -## Further Reading - -Administration documentation can be found [here](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_html). \ No newline at end of file diff --git a/docs/en/trusted-solutions/tier1.md b/docs/en/trusted-solutions/tier1.md deleted file mode 100644 index 794358a37..000000000 --- a/docs/en/trusted-solutions/tier1.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Isolation Features -pagename: tier1-index -lang: en ---- - -# Isolation Feature Set - -![isolation-theme](./tier1/images/isolation_theme.jpg) - -The isolation feature set is an hybrid solution that satisfies strict security and legal requirements, while minimizing {% include product %} System Admin specific required knowledge and maintenance. These features enable creative studios to confidently meet their supplier’s and studio’s highly stringent security, privacy, and performance requirements—from the cloud. - -Continue to [About the isolation feature set](./tier1/getting_started/about.md) for more details. - -Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation features. - -## 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) - -### 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) - -### 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) - - -### 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) diff --git a/docs/en/trusted-solutions/tier1/features/features.md b/docs/en/trusted-solutions/tier1/features/features.md deleted file mode 100644 index e51276b67..000000000 --- a/docs/en/trusted-solutions/tier1/features/features.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Features Description -pagename: tier1-features -lang: en ---- - -# Isolation Feature Set - -This section describes in detail each of the Isolation Features. - -features-description-overview - -To get the onboarding process started, go to [Onboarding Process](../getting_started/onboarding.md). - -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 diff --git a/docs/en/trusted-solutions/tier1/features/media_isolation.md b/docs/en/trusted-solutions/tier1/features/media_isolation.md deleted file mode 100644 index a50d57fdf..000000000 --- a/docs/en/trusted-solutions/tier1/features/media_isolation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-features-media-isolation -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. - -This is rendered possible by leveraging [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). When setting up Media Isolation, an AWS Role allowing {% include product %} to access your media for the action listed above is created, and the {% include product %} service is allowed to assume that role. - -{% 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 diff --git a/docs/en/trusted-solutions/tier1/features/media_replication.md b/docs/en/trusted-solutions/tier1/features/media_replication.md deleted file mode 100644 index 28446b7ab..000000000 --- a/docs/en/trusted-solutions/tier1/features/media_replication.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-features-media-replication -lang: en ---- - -# 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. - -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 - -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 is 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 deleted file mode 100644 index 1b6d36037..000000000 --- a/docs/en/trusted-solutions/tier1/features/media_traffic_isolation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-features-media-traffic-isolation -lang: en ---- - -# Media Traffic Isolation - -Communication between your client systems and S3 bucket targets a number of AWS network endpoints and data traverses the open Internet by default. Media Traffic Isolation allows you to limit the number of network endpoints used to transfer data to and from your S3 bucket and optionally restrict access to your AWS VPC or a defined set of public address scopes. - -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. - -## 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 deleted file mode 100644 index e062739bc..000000000 --- a/docs/en/trusted-solutions/tier1/features/web_traffic_isolation.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-features-web-traffic-isolation -lang: en ---- - -# Web Traffic Isolation - -Communication between your client systems and your {% include product %} site will traverse the open Internet by default. Web Traffic Isolation allows you to restrict access to your {% include product %} site from the public Internet entirely and ensure that all traffic transits directly between your AWS VPC and Autodesk's AWS VPC. - -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 deleted file mode 100644 index 78453dc54..000000000 --- a/docs/en/trusted-solutions/tier1/getting_started/about.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default -title: About the Isolation Feature Set -pagename: tier1-getting_started-about -lang: en ---- - -# What is the Isolation Feature Set - -The isolation feature set combines our Cloud Hosted Platform with client-managed AWS resources to provide a solution that satisfies the most stringent security and privacy requirements. Clients retain control of their sensitive content without having to host {% include product %} on their infrastructure. - -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 - -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 - -## 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. - - -# Eligibility - -The Isolation feature set is available to clients with an active ShotGrid subscription. 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: - -**Compute Stack:** The part of the {% include product %} Service that handles client requests and serves data to the client. - -**Data Stack:** Metadata storage (databases). - -**Media Storage:** Where the client's attachments, media, and assets are stored. {% include product %} uses AWS S3 to store client content. - -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 deleted file mode 100644 index 05a455ec3..000000000 --- a/docs/en/trusted-solutions/tier1/getting_started/getting_started.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Getting Started -pagename: tier1-getting_started -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. -**The Isolation feature set is available to clients with an active ShotGrid subscription. Before starting, please be sure to complete your subscription purchase.** - - -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 diff --git a/docs/en/trusted-solutions/tier1/getting_started/onboarding.md b/docs/en/trusted-solutions/tier1/getting_started/onboarding.md deleted file mode 100644 index 9ebf9b7c3..000000000 --- a/docs/en/trusted-solutions/tier1/getting_started/onboarding.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Onboarding Process -pagename: tier1-getting_started-onboarding -lang: en ---- - -# Onboarding Process - -Leveraging the isolation features requires adopters to become AWS users. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. - -Autodesk and Amazon will provide dedicated resources during the onboarding process to help you on this journey. - -To start the on-boarding process for any of the Isolation features, please fill out [this short survey](https://forms.office.com/r/jHraSXbfE9), before proceeding with [your setup](../setup/setup.md). - -## Onboarding Process Overview - -![onboarding-process](../images/tier1-onboarding-process.png) - -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 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. - -**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. - -## Onboarding Resources - -**{% include product %} Community:** The [{% include product %} Isolation Community](https://community.shotgridsoftware.com/c/trusted-solutions/isolation/34) forum can be used to ask questions that can be answered by either {% include product %} Experts or other isolation features users. This should be your first stop when asking general questions about isolation features, during setup and beyond. - -**Private Slack Channel:** During the onboarding, you will be given access to a dedicated Autodesk Slack Channel. Your {% include product %} and AWS Leaders will be available for quick feedback, answers, and ad-hoc meetings to help you progress as fast as possible with your {% include product %} Isolation setup. This channel will be available only for the onboarding period. - -**{% include product %} Support:** A [{% include product %} Support](https://knowledge.autodesk.com/contact-support) ticket will be used to track your onboarding at a higher level. Once your {% include product %} Isolation setup is complete, follow-up support tickets can be opened with the support team as needed. - -## Next Steps - -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 deleted file mode 100644 index e27deaa04..000000000 --- a/docs/en/trusted-solutions/tier1/getting_started/responsibilities.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Client Responsibilities -pagename: tier1-getting_started-responsibilities -lang: en ---- - -# Client Responsibilities - -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. - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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/images/features-description-overview.png b/docs/en/trusted-solutions/tier1/images/features-description-overview.png deleted file mode 100644 index cdaf6f168..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/features-description-overview.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/isolation_theme.jpg b/docs/en/trusted-solutions/tier1/images/isolation_theme.jpg deleted file mode 100644 index 720b002ac..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/isolation_theme.jpg and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-isolation-arch.png b/docs/en/trusted-solutions/tier1/images/media-isolation-arch.png deleted file mode 100644 index 4a1b6f397..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-isolation-arch.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-isolation-overview.png b/docs/en/trusted-solutions/tier1/images/media-isolation-overview.png deleted file mode 100644 index 525b0130f..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-isolation-overview.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-replication-arch.png b/docs/en/trusted-solutions/tier1/images/media-replication-arch.png deleted file mode 100644 index 78b48462d..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-replication-arch.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-replication-overview.png b/docs/en/trusted-solutions/tier1/images/media-replication-overview.png deleted file mode 100644 index 3bc685942..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-replication-overview.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-replication-preferences.png b/docs/en/trusted-solutions/tier1/images/media-replication-preferences.png deleted file mode 100644 index 2dcf50da8..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-replication-preferences.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-arch.png b/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-arch.png deleted file mode 100644 index 116505c66..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-overview.png b/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-overview.png deleted file mode 100644 index 09e9144eb..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/media-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-about-arch.png b/docs/en/trusted-solutions/tier1/images/tier1-about-arch.png deleted file mode 100644 index 4de0459f7..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-about-arch.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-about-transcoding.png b/docs/en/trusted-solutions/tier1/images/tier1-about-transcoding.png deleted file mode 100644 index 60780e45a..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-about-transcoding.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_other.png b/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_other.png deleted file mode 100644 index 4c0793153..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_other.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png b/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png deleted file mode 100644 index 27f735970..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-arch-setup.png b/docs/en/trusted-solutions/tier1/images/tier1-arch-setup.png deleted file mode 100644 index 727585e6d..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-arch-setup.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-1.png b/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-1.png deleted file mode 100644 index 19c31b631..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-1.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-2.png b/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-2.png deleted file mode 100644 index 7a650d5a4..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-2.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-3.png b/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-3.png deleted file mode 100644 index a2aa900f6..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create-3.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png b/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png deleted file mode 100644 index 206b55453..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-onboarding-process.png b/docs/en/trusted-solutions/tier1/images/tier1-onboarding-process.png deleted file mode 100644 index 49fcf262a..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-onboarding-process.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-s3-replication.png b/docs/en/trusted-solutions/tier1/images/tier1-s3-replication.png deleted file mode 100644 index 987b45c08..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-s3-replication.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/tier1-setup-process.png b/docs/en/trusted-solutions/tier1/images/tier1-setup-process.png deleted file mode 100644 index acb989c7e..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/tier1-setup-process.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-arch.png b/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-arch.png deleted file mode 100644 index 738878820..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-overview.png b/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-overview.png deleted file mode 100644 index 66b11ed59..000000000 Binary files a/docs/en/trusted-solutions/tier1/images/web-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/en/trusted-solutions/tier1/knowledge/aws.md b/docs/en/trusted-solutions/tier1/knowledge/aws.md deleted file mode 100644 index 4047e2782..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/aws.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: AWS Knowledge -pagename: tier1-knowledge-aws -lang: en ---- - -# AWS Knowledge - -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/) diff --git a/docs/en/trusted-solutions/tier1/knowledge/connecting.md b/docs/en/trusted-solutions/tier1/knowledge/connecting.md deleted file mode 100644 index aa9aad9dd..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/connecting.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Connecting Your Studio With Your AWS VPC -pagename: tier1-knowledge-connecting -lang: en ---- - -# Connecting Your Studio With Your AWS VPC - -You can connect your studio networks with AWS using one of many options, described in detail in this [Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) whitepaper. - -Some of the common options our clients have used include: - -## VPN Connection - -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.md b/docs/en/trusted-solutions/tier1/knowledge/direct_connect.md deleted file mode 100644 index 14339c232..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/direct_connect.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Direct Connect -pagename: tier1-knowledge-direct_connect -lang: en ---- - -# Direct Connect - -[AWS Direct Connect](https://aws.amazon.com/directconnect/) is a service from AWS that allows you to establish a dedicated connection from your on-premise data center (or offices) to AWS. Direct Connect will allow you to create a dedicated link between your network and one of the AWS Direct Connect locations. - -Leveraging AWS Direct Connect ensure that you will benefit from the best experience possible when using the isolation feature set, optimizing reliability and performance for all your access points across the globe. diff --git a/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md deleted file mode 100644 index acf1ab748..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: default -title: ShotGrid AWS Direct Connect Onboarding -pagename: tier1-knowledge-direct_connect_onboarding -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. - -## Review of Shogun Configuration in AWS - -![high-level-architecture](../images/tier1-arch-s3_ue1.png) - -## Customer Types - -1. Customer already has AWS Direct Connect dedicated connection -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 -2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - - -## 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): - -- Do you already have equipment and presence in an AWS Direct Connect location? -- Do you know the process for requesting a cross-connect within the Direct Connect location facility? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console and select a Partner to assist (Option 1b): - -- Are you planning to use AWS Direct Connect to connect to other AWS resources outside of {% include product %}? -- Do you have the time and resources to complete the setup? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then you should work with an AWS Direct Connect Partner to request a hosted Direct Connect connection (Option 2): - -- 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.* - -## 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). -1. (Option 1b only) [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/) and share the LOA with them. -1. Once the dedicated connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). - -### 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 -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). - -## FAQ - -**How long should it take to set up AWS Direct Connect?** - -Short Answer - It depends. A lot of factors go into the time it takes to set up AWS Direct Connect. The timeline can vary from a few days to a few months. Some of the factors include current infrastructure, location of equipment, providers, partners, and more. If you are looking to expedite the process, consider using an AWS Direct Connect Partner who is geographically nearby. - -**Further questions about AWS Direct Connect?** - -[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). - -## AWS Documentation & Resources - -- [What is AWS Direct Connect?](https://www.youtube.com/watch?v=eNxPhHTN8gY&feature=youtu.be&t=716) -- [Direct Connect User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dc-ug.pdf) -- [re:Invent 2018 - 400 level Deep Dive on Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc) -- [AWS Direct Connect Locations](https://aws.amazon.com/directconnect/features/#AWS_Direct_Connect_Locations) -- [AWS Direct Connect Partners](https://aws.amazon.com/directconnect/partners/) diff --git a/docs/en/trusted-solutions/tier1/knowledge/endpoints.md b/docs/en/trusted-solutions/tier1/knowledge/endpoints.md deleted file mode 100644 index 12d99d191..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/endpoints.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: VPC Endpoints -pagename: tier1-knowledge-endpoints -lang: en ---- - -# VPC Endpoints - -Coming soon. \ No newline at end of file diff --git a/docs/en/trusted-solutions/tier1/knowledge/knowledge.md b/docs/en/trusted-solutions/tier1/knowledge/knowledge.md deleted file mode 100644 index 6eaae7b9d..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/knowledge.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Knowledge -pagename: tier1-knowledge -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 diff --git a/docs/en/trusted-solutions/tier1/knowledge/private_link.md b/docs/en/trusted-solutions/tier1/knowledge/private_link.md deleted file mode 100644 index daa50aa49..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/private_link.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Private Link -pagename: tier1-knowledge-private_link -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. - -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/knowledge/s3.md b/docs/en/trusted-solutions/tier1/knowledge/s3.md deleted file mode 100644 index 3caac5bbf..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/s3.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: S3 -pagename: tier1-knowledge-s3 -lang: en ---- - -# S3 - -[Amazon S3](https://aws.amazon.com/s3/) is an object storage service offered by AWS. It can be thought of as a highly durable storage space in the cloud. {% include product %} uses S3 to store uploaded media and files. - -In order to use {% include product %} isolation features, you will bring your own S3 bucket and configure {% include product %} to use it for storage. Please refer to our [S3 Bucket Setup article](../setup/s3_bucket.md) for details on how to do this. diff --git a/docs/en/trusted-solutions/tier1/knowledge/vpc_iam_sec.md b/docs/en/trusted-solutions/tier1/knowledge/vpc_iam_sec.md deleted file mode 100644 index effbe85bf..000000000 --- a/docs/en/trusted-solutions/tier1/knowledge/vpc_iam_sec.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: VPC / IAM / Security Group -pagename: tier1-knowledge-vpc_iam_sec -lang: en ---- - -# VPC / IAM / Security Group - -[Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/) permits users to logically separate virtual networks that host their AWS resources and provides you complete control over access to your AWS network. - -Within a VPC, [security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) act as a basic firewall and control what inbound and outbound connections are permitted to each given resource. For example, a security group can allow inbound **HTTPS** traffic to a proxy server but block all other inbound traffic. - -With [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/), access to AWS resources and services can be controlled at a more fine-grained level. For example, IAM can be leveraged to control who or which resources can access S3 buckets used by {% include product %}. - -All three of the above features are used in the {% include product %} isolation features implementation to ensure that you securely connect your closed VPC to {% include product %} and allow access to the [media S3 buckets](../setup/s3_bucket.md). diff --git a/docs/en/trusted-solutions/tier1/learn/learn.md b/docs/en/trusted-solutions/tier1/learn/learn.md deleted file mode 100644 index fc1364ac6..000000000 --- a/docs/en/trusted-solutions/tier1/learn/learn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Learn -pagename: tier1-learn -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 diff --git a/docs/en/trusted-solutions/tier1/setup/media_segregation.md b/docs/en/trusted-solutions/tier1/setup/media_segregation.md deleted file mode 100644 index ace2a3a7b..000000000 --- a/docs/en/trusted-solutions/tier1/setup/media_segregation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-setup-media_segregation -lang: en ---- - -# Media Traffic Isolation using AWS PrivateLink for Amazon S3 - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the {% include product %} Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used." %} - -Simply add an `com.amazonaws.us-west-2.s3` Interface VPC Endpoint to your existing VPC. Make sure the associated security group allow traffic from your site network. - -### Add the VPC to your S3 bucket policy - -In order for the S3 VPC endpoint to communicate with your S3 bucket your bucket policy must allow access from the S3 endpoint's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 VPC endpoint - -Use the endpoint URL to list objects in your bucket using AWS CLI. In the following example, replace the VPC endpoint ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` and bucket name `my-bucket` with appropriate information. - -``` - aws s3 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com ls s3://my-bucket/ -``` - -### Configure your test site to use your S3 VPC endpoint - -* Please contact {% include product %} support via the dedicated Slack channel and provide the following information: - * Your S3 bucket name - * Your S3 VPC endpoint DNS Name -* Autodesk will configure your test site to use your S3 VPC endpoint -* Confirm that you are still able to access existing media -* Attempt to upload new media - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/media_segregation_s3_proxy.md b/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md deleted file mode 100644 index 3de278e64..000000000 --- a/docs/en/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation - S3 Proxy -pagename: tier1-setup-media_segregation_s3_proxy -lang: en ---- - -{% include info title="Deprecated" content="The preferred way is to use S3 Private Link instead of a S3 proxy, see [Media Traffic Isolation](./media_segregation.md)" %} - -# Media Traffic Isolation using an S3 proxy (DEPRECATED) - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the ShotGrid Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -{% include info title="Disclaimer" content="Before starting, decide whether your S3 proxy will be privately accessible within your VPC or publicly accessible via the Internet and choose the relevant templates in the following instructions." %} - -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): - [`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: - [`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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used when configuring [Media Isolation](./s3_bucket.md)." %} - -![Add endpoint](../images/tier1-endpoint-create-1.png) -![Add endpoint](../images/tier1-endpoint-create-2.png) -![Add endpoint](../images/tier1-endpoint-create-3.png) - -## Set up S3 proxy - -You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC endpoint. We provide both [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) and [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) S3 proxy CloudFormation templates as starting points for this purpose. These will create the necessary Elastic Container Service (ECS) cluster and other resources to run the S3 proxy on AWS Fargate behind an AWS Application Load Balancer (ALB). - -### 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: - ``` - 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 - docker push 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 - ``` - -### Create S3 proxy CloudFormation stack - -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): - [`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: - [`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 - -### 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 - 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 - 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 - -### Add S3 proxy VPC to S3 bucket policy - -In order for the S3 proxy to communicate with your S3 bucket your bucket policy must allow access from the S3 proxy's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 proxy - -Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio.com/ping` - -### 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 - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/migration.md b/docs/en/trusted-solutions/tier1/setup/migration.md deleted file mode 100644 index fcada3bf8..000000000 --- a/docs/en/trusted-solutions/tier1/setup/migration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Migration -pagename: tier1-setup-migration -lang: en ---- - -# Migration - -Once everything is configured and properly tested with the migration test site, it's now time to migrate your production site to use the isolation features. - -## Test migration - -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. - -## 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. - diff --git a/docs/en/trusted-solutions/tier1/setup/planning.md b/docs/en/trusted-solutions/tier1/setup/planning.md deleted file mode 100644 index e365d92b6..000000000 --- a/docs/en/trusted-solutions/tier1/setup/planning.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Planning Your Setup -pagename: tier1-getting_started-planning -lang: en ---- - -# Planning Your Setup - -![Architecture](../images/tier1-arch-setup.png) - -## Pick your options - -Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication - -## AWS Account Creation - -Before going further, you will require an AWS Account. If you don't already have an AWS Account, [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). - -## Choose an AWS Region - -Choose an AWS Region for your AWS S3 bucket and VPC. Which region to use? You should chose the a region that is the closest possible to your studio. - -If your company is located in different locations, consider enabling the media replication feature to reduce latency and improve performance - -## Plan the VPC IP ranges - -Plan your AWS VPC and subnets IP ranges. - -### IP Range Example - -| 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 - -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 diff --git a/docs/en/trusted-solutions/tier1/setup/s3_bucket.md b/docs/en/trusted-solutions/tier1/setup/s3_bucket.md deleted file mode 100644 index 91339137f..000000000 --- a/docs/en/trusted-solutions/tier1/setup/s3_bucket.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-setup-s3_bucket -lang: en ---- - -# Media Isolation - -{% include info title="Disclaimer" content="The security of your S3 bucket is solely a client responsibility, and the integrity of your data will be at risk without it. We very strongly recommend [securing your S3 bucket properly](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - -## AWS Account Creation - -You can quickly [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). -You should also contact your AWS contacts to get help with your AWS account setup. - -## AWS CloudFormation template - -It's possible to start from the [Private S3 bucket AWS CloudFormation template](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml) and customize it for your needs for a faster deployment. - -{% 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 - -### CORS Configuration - -CORS policy on your S3 bucket will be minimally configured, allowing only the required origin (your site) and methods, amongst other things. - -### IAM Role - -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. - -## 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 - -{% include product %} will configure your test site to use your own S3 bucket. - -## Validation - -At this stage, you should be able to upload and download media. The {% include product %} Transcoding Service should also be able to read, transcode and write back the thumbnails, filmstrip and web friendly versions of your media back to your S3 Bucket. To validate this: - -1. Log in your Migration Test Site. -2. From the Navigation Bar, go the the Media app -3. Once in the Media App, drag and drop or upload an image or a video from your computer. If you didn't created a Project yet, you may have to create one first. -4. A version should appear, with a thumbnail, in the Media App. -5. Validate that you can playback the media by clicking the Play button. -6. To validate that the media has been stored in your S3 bucket, from the media viewer, click on the cog and then select or hover over ‘view source’. The HTTPS link should contain your bucket name. - -## Next Steps - -See [Media Traffic Isolation](./media_segregation.md) to activate the Media Traffic Isolation feature. - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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 deleted file mode 100644 index 20b465ada..000000000 --- a/docs/en/trusted-solutions/tier1/setup/s3_replication.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-setup-s3_replication -lang: en ---- - -# Media Replication - -## Description - -It's possible to add S3 replication between two S3 buckets in different regions and configure {% include product %} to leverage it for faster access to media. - -![S3 Replication Diagram](../images/tier1-s3-replication.png) - -## Features - - * 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 - -When S3 bucket replication is activated, users will be able download media files from the replica S3 bucket. - -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| - -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 - -# 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 - -## FAQ - -### Copy existing media - -S3 replication only applies to media uploaded after the feature has been enabled. Existing media in the primary bucket must be copied to the replica bucket manually. You can simply use `aws-cli` sync or use [Amazon S3 Batch Operations](https://aws.amazon.com/s3/features/batch-operations/) if you have a lot of media to achieve this. - -## Next Steps - -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 diff --git a/docs/en/trusted-solutions/tier1/setup/setup.md b/docs/en/trusted-solutions/tier1/setup/setup.md deleted file mode 100644 index 759f5637f..000000000 --- a/docs/en/trusted-solutions/tier1/setup/setup.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Setup -pagename: tier1-setup -lang: en ---- - -# {% include product %} Isolation Feature Set - Setup - -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. - -## 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) - -# Setup Overview - -![tier1-setup-process](../images/tier1-setup-process.png) - -## [Understand your responsibilities](../getting_started/responsibilities.md) - -Make sure that you understand the [client responsibilities and the implication](../getting_started/responsibilities.md) of activating any of the Isolation feature. - -## [Start the onboarding process](../getting_started/onboarding.md) - -Leveraging the isolation features requires adopters to become AWS users. The features activation also requires Autodesk Support intervention. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. [Kick-start the onboarding process](../getting_started/onboarding.md) before going further. - -## [Planning your Setup](./planning.md) - -Before you start working on your setup, [put a plan in place](./planning.md). Choose the features you need and get the required security/legal approval from your team to get started with the Isolation feature set. - -## [Migration Test Site](./shotgun_poc_site.md) - -To help you setting up the Isolation features without breaking your production environment and to helping smooting the migration to your isolated environment, {% include product %} propose to use a test site on which to test your setup before applying the result to production. - -## [Media Isolation](./s3_bucket.md) - -This feature allow you to use a S3 Bucket owned by your studio to store media. - -## [Media Traffic Isolation](./media_segregation.md) - -This feature allows for private routing of the media through the AWS Backbone and your studio network, isolating the media traffic from the public internet. - -## [Web Traffic Isolation](./traffic_segregation.md) - -This feature isolate the web traffic on AWS Backbone and your studio network, isolating the traffic from the public internet. - -## [Media Replication](./s3_replication.md) - -This feature allows the media to be replicated between AWS Regions, for faster access in your world wide studios. Media Isolation is required. - -## [Fine Tuning](./tuning.md) - -Once the isolation features you need are activated, make sure that you everything is properly configured for security and cost-efficiency by reviewing this fine tuning guide. - -## [Migration](./migration.md) - -Once everything is ready, it's now time to migrate your production site to use the isolation features. diff --git a/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md deleted file mode 100644 index 18a4cfd1d..000000000 --- a/docs/en/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: Migration Test Site -pagename: tier1-setup-shotgun_poc_site -lang: en ---- - -# {% include product %} Migration Test Site - -Activating the isolation feature set is an intrusive procedure that can have an impact on the usability of your site. To prevent a production stopping event, we require clients to follow an approach where the configuration is first validated on a test site, before being applied to the production site. - -The {% include product %} team will create a temporary site to be used as a Proof of Concept for your {% include product %} Isolation deployment. Upon the successful completion of the setup process, your existing {% include product %} site can be migrated to your {% include product %} Isolation environment. - -If your Migration Test Site has not been created yet, please reach out to our Support team through your Zendesk ticket or your dedicated on-boarding Slack Channel. - -## Next Steps - -Once you have your test site, you can the implementation of the feature you need. - -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 diff --git a/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md deleted file mode 100644 index 8a372abb3..000000000 --- a/docs/en/trusted-solutions/tier1/setup/traffic_segregation.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-setup-traffic_segregation -lang: en ---- - -# Web Traffic Isolation - -{% include info title="Notice" content="Web Traffic Isolation is available in the following AWS regions: us-east-1, us-west-2, eu-west-2 and eu-west-3." %} - -The goal is to set up an AWS PrivateLink to privately access your {% include product %} site. - -## Set up PrivateLink to ShotGrid - - * 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. - -### Manual steps if needed - - * 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. - -![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`. - -## Validation - -Verify that your site private URL resolves to IPs in your AWS VPC block. - -``` -nslookup mystudio-staging.priv.shotgunstudio.com -``` - -Try to access your test site from inside your office ie https://mystudio-staging.priv.shotgunstudio.com - -## Next Steps - -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 diff --git a/docs/en/trusted-solutions/tier1/setup/tuning.md b/docs/en/trusted-solutions/tier1/setup/tuning.md deleted file mode 100644 index de512bb5c..000000000 --- a/docs/en/trusted-solutions/tier1/setup/tuning.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: default -title: Fine Tuning -pagename: tier1-setup-tuning -lang: en ---- - -# Fine Tuning - -## Cost Management Recommendations - -### S3 Infrequent Access - -We recommend enabling S3 Infrequent Access to easily reduce costs without impacting performance. For the {% include product %} Cloud hosted offering, we apply a policy for all objects older than one month. - -With Infrequent Access, objects are stored at a lower cost. However, if they are accessed, it will involve an additional cost. {% include product %} has observed that one month was the right policy to use globally, but you may want to adapt that policy to your studio workflows as needed. - -Read more about S3 Infrequent Access and other storage classes [here](https://aws.amazon.com/s3/storage-classes/). - -## S3 Bucket policy - -We recommend you restrict access to your S3 bucket to only your VPC and {% include product %} transcoding services IPs. There is an example policy, replace `your_vpc_id` and `your_s3_bucket` by your values. - -We strongly recommend you test media access and media transcoding in your migration test site right after applying the bucket policy changes to be sure your S3 bucket is still accessible from your VPC and from {% include product %} transcoders. - -``` -{ - "Version": "2012-10-17", - "Id": "Policy1415115909152", - "Statement": [ - { - "Sid": "AllowSSLRequestsOnly", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": [ - "arn:aws:s3:::your_s3_bucket", - "arn:aws:s3:::your_s3_bucket/*" - ], - "Condition": { - "Bool": { - "aws:SecureTransport": "false" - } - } - }, - { - "Sid": "Access-to-specific-VPC-only and Shotgun transcoder", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:GetObject*", - "Resource": "arn:aws:s3:::your_s3_bucket/shotgun/*", - "Condition": { - "NotIpAddress": { - "aws:SourceIp": [ - "34.200.155.69/32", - "34.224.232.103/32", - "34.202.127.170/32" - ] - }, - "StringNotEquals": { - "aws:sourceVpc": [ - "vpc-2fd62a56", - "your_vpc_id" - ] - } - } - } - ] -} -``` - -## S3 endpoint policy - -We recommend setting a VPC endpoint policy on your S3 endpoint to allow access to your S3 bucket only. See [here](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) for an example. - -## 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. - -## Next Steps - -See [Migration](./migration.md) to migrate your production site to use the isolation features. - -Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/en/videos/images/dev-day-playlist.png b/docs/en/videos/images/dev-day-playlist.png deleted file mode 100644 index 269534352..000000000 Binary files a/docs/en/videos/images/dev-day-playlist.png and /dev/null differ diff --git a/docs/en/videos/images/toolkit-playlist.png b/docs/en/videos/images/toolkit-playlist.png deleted file mode 100644 index f87247919..000000000 Binary files a/docs/en/videos/images/toolkit-playlist.png and /dev/null differ diff --git a/docs/en/videos/video-webinars.md b/docs/en/videos/video-webinars.md deleted file mode 100644 index c0e60ec79..000000000 --- a/docs/en/videos/video-webinars.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: default -title: Toolkit Webinars -pagename: video-webinars -lang: en ---- - -# {% include product %} Toolkit Webinars - -*Updated: 2020/5/8* - -## {% include product %} Toolkit Webinar Playlist - -[![](images/toolkit-playlist.png)](https://www.youtube.com/watch?v=rgzHEwUhENI&list=PLEOzU2tEw33q65lv0_AKDT6tbpi6vgMDH) - -## {% include product %} Toolkit Webinar Videos - - -1: {% include product %} Toolkit Webinar: Out-of-the-box Integrations *(60m)* - -In the first of a new series of Toolkit webinars, Rob Blau, and Manne Öhrström, answer questions about out-of-the-box integrations. - -[![](http://img.youtube.com/vi/rgzHEwUhENI/0.jpg)](http://www.youtube.com/watch?v=rgzHEwUhENI) - -2: {% include product %} Toolkit Webinar: Demystifying the New Default Configuration *(60m)* - -In this webinar, Josh Tomlinson and Rob Blau cover what has changed (and why) in the new default configuration for Toolkit projects. - -[![](http://img.youtube.com/vi/eKHaC1dZCeE/0.jpg)](http://www.youtube.com/watch?v=eKHaC1dZCeE) - -3: {% include product %} Toolkit Webinar: Customizing Publish Workflows - A Live Demo *(60m)* - -In this webinar, Josh Tomlinson gives a step-by-step walkthrough of creating a custom publish workflow in Maya. Learn the constructs of the publish app, how to configure it, and how to write custom hooks for collecting and publishing data. - -[![](http://img.youtube.com/vi/pH4mylrnktY/0.jpg)](http://www.youtube.com/watch?v=pH4mylrnktY) - -*Supplemental Material* - -[Pipeline Tutorial](https://developer.shotgridsoftware.com/cb8926fc/) - -4: {% include product %} Toolkit Webinar: Cloud Configurations and Multi-location Workflows *(60m)* - -In this webinar, Manne Ohrstrom explores workflows for studios with artists in multiple locations. - -[![](http://img.youtube.com/vi/NyIk07F2RoM/0.jpg)](http://www.youtube.com/watch?v=NyIk07F2RoM) - -*Supplemental Material* - -[Developer docs on Toolkit initialization and configuration management](https://developer.shotgridsoftware.com/tk-core/initializing.html) - -[List of Descriptor types that Manne references in the video](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types) - -5: {% include product %} Ecosystem Webinar: REST API *(60m)* - -In this webinar, Brandon Ashworth will walk us through a bunch of useful demos, examples, and recipes to show what the REST API is, why it’s important, and how it can be used. - -[![](http://img.youtube.com/vi/3xPPj2pbHVQ/0.jpg)](http://www.youtube.com/watch?v=3xPPj2pbHVQ) - -*Supplemental Material* - -[REST API reference docs](https://developer.shotgridsoftware.com/rest-api/) - -6: {% include product %} Toolkit Webinar: The New Publisher API *(35m)* - -The latest Integrations release includes an improved Publish API, which allows you to decouple publish logic from the GUI app and run publishes from your own tools, or even on the render farm. In this webinar, Jean-Francois Boismenu demos how you can use the API to pass a publish item tree from the Publisher UI to a render farm job. - -[![](http://img.youtube.com/vi/ZxP3IXHt47U/0.jpg)](http://www.youtube.com/watch?v=ZxP3IXHt47U) - -*Supplemental Material* - -[Github repo with config](https://github.com/shotgunsoftware/tk-config-publish_api_webinar) - -[Pull Request referenced at 31:00](https://github.com/shotgunsoftware/tk-config-publish_api_webinar/pull/1) - -[Publish API Documentation](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -7: {% include product %} Toolkit Webinar: After Effects Integration *(38m)* - -Adobe After Effects is our latest {% include product %} integration. In this webinar, Rob Blau dives deep into the After Effects integration with a live demo of features and discusses how we refactored the heaving lifting from our Photoshop integration to develop a reusable framework for any Adobe integration. - -Also, Tannaz Sassooni tours our new developer’s documentation site and shows how we’re making it easier for our users to learn how to integrate with {% include product %}. - -[![](http://img.youtube.com/vi/g-062_VTbAI/0.jpg)](http://www.youtube.com/watch?v=g-062_VTbAI) - -*Supplemental Material* - -[After Effects integration documentation](https://developer.shotgridsoftware.com/1eca509c/) - -[Developer documentation portal](https://developer.shotgridsoftware.com) - -## {% include product %} Developer Day Playlist - - -[![](images/dev-day-playlist.png)](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d) - - -## {% include product %} Developer Day Videos - - -At SIGGRAPH 2018 and 2019, the {% include product %} team presented {% include product %} Developer Day: a series of courses designed to acquaint developers on the many resources available for automating tasks, writing custom apps and more. After SIGGRAPH, we held a series of webinars featuring the content from Developer Day. This playlist contains recordings of those webinars. - -Full slide decks, code examples and other resources related to this content can be found [here for 2019](https://github.com/shotgunsoftware/sg-siggraph-2019) and [here for 2018](https://github.com/shotgunsoftware/sg-devday-2018/) . - -1: SIGGRAPH Developer Day 2019: Introduction to {% include product %} Development *(83m)* - -In this webinar, Tannaz Sassooni and Patrick Boucher give an introduction to {% include product %} development, including a discussion on {% include product %}’s entry points for automation, {% include product %}’s Python and REST APIs and how {% include product %}’s APIs automate tasks and data-tracking for studios. - -[![](http://img.youtube.com/vi/i0aVJepZw8Y/0.jpg)](http://www.youtube.com/watch?v=i0aVJepZw8Y) - -[0:56](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=56s) Welcome and orientation - -[3:00](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=180s) Introduction to {% include product %} Development: A high-level overview of common pipeline needs and how you can use {% include product %}'s APIs and development frameworks to address them. [Tannaz Sassooni] - -[25:59](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=1559s) Introduction to Data Management Using {% include product %} APIs: Dive into {% include product %}'s API using simple Python and REST scripting, as well as frameworks for creating Action Menu Items. [Patrick Boucher] - -2: SIGGRAPH Developer Day 2019: Advanced {% include product %} Development *(78m)* - -In this webinar, Brandon Ashworth and Manne Öhrström dive into {% include product %} using the event daemon and new webhooks to react to data changes in {% include product %}, and show how to write a simple pipeline tool using {% include product %} Toolkit. - -[![](http://img.youtube.com/vi/xUeY1pECHdI/0.jpg)](http://www.youtube.com/watch?v=xUeY1pECHdI) - -[0:39](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=39s) Welcome and orientation - -[2:33](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=153s) Working with {% include product %} Events [Brandon Ashworth] - -[41:25](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=2485s) Developing a {% include product %} Tool that runs in multiple artist apps [Manne Öhrström] - -3: SIGGRAPH Developer Day: Toolkit Administration *(1h15m)* - -In this webinar, Josh Tomlinson, Tannaz Sassooni and Phil Scadding demo how to take over integrations and create a custom directory structure and hooks to automate more of the data flow in your studio. - -[![](http://img.youtube.com/vi/7qZfy7KXXX0/0.jpg)](http://www.youtube.com/watch?v=7qZfy7KXXX0) - -[0:00](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=0s) Welcome and Orientation - -[1:04](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=64s) {% include product %} Toolkit Administration: Learn how to launch common content creation software through our {% include product %} Desktop app and check out how artists can interact with {% include product %} without ever leaving their work session, with our default pipeline integrations. [Phil Scadding] - -[32:41](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=1961s) Introduction to Toolkit Configurations: Master navigating through the Toolkit Pipeline Configuration, learning how to use it to customize your pipeline workflows. [Tannaz Sassooni] - -[56:20](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=3380s) Managing Hooks: Learn to use {% include product %} Toolkit's extensive set of hooks to add custom logic to your configuration and tailor your Toolkit pipeline to your studio's needs. [Josh Tomlinson] - -4: SIGGRAPH Developer Day: Advanced {% include product %} Development *(1h15m)* - -Manne Ohrstrom, Jeff Beeland, and Rob Blau demonstrate best practices for source control and cloud-based pipeline deployment, and dive into building apps and using Toolkit’s standard frameworks for rapidly designing UIs and handling data. - -[![](http://img.youtube.com/vi/bT2WlQaJVmY/0.jpg)](http://www.youtube.com/watch?v=bT2WlQaJVmY) - -[0:00](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=0s) Welcome and Orientation - -[2:31](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=151s) Toolkit platform: Development and deployment patterns: Learn the different ways you can set up and deploy a Toolkit pipeline configation, including workflows for development, version control best practices, and distributing your pipeline configuration to remote users by uploading it to your {% include product %} site. [Manne Ohrstrom] - -[30:23](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=1823s) Toolkit platform: Writing your own App: Walk through writing a simple Toolkit app, utilizing provided APIs and frameworks to rapidly create a powerful UI. [Jeff Beeland] - -[1:02:22](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=3742s) Introduction to Autodesk Forge: Learn about Forge, Autodesk's series of API-driven cloud services, and how you can use them to extend the {% include product %} experience. [Rob Blau] - diff --git a/docs/ja/action-menu-items/action-menu-items-create.md b/docs/ja/action-menu-items/action-menu-items-create.md deleted file mode 100644 index af9ca1131..000000000 --- a/docs/ja/action-menu-items/action-menu-items-create.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: default -title: カスタム アクション メニュー アイテム -pagename: action-menu-items-create -lang: ja ---- - -# カスタム アクション メニュー アイテム - -API 開発者は、アクション メニュー アイテム(AMI)からエンティティごとにコンテキスト メニュー項目をカスタマイズできます。たとえば、Versions ページから複数のバージョンを選択して右クリックし、Build a PDF Report を選択します。 - -![レポート](/images/dv-custom-amis-01-report-01.png) - -## アクション メニュー アイテム フィールド: - - - -## アクション メニュー アイテムのタイプ - -作成できるメニュー項目は次の 2 つです。 - -## HTTP URL の例 - -たとえば、「Build PDF Report」と呼ばれるカスタム メニュー項目を作成できます。これにより、ユーザは任意のバージョン ページに移動し、1 つまたは複数のバージョンを選択して右クリックし、{% include product %} メニューから「Build PDF Report」を選択することができます。この操作により、スクリプトが起動し(このスクリプトは作成する必要があります)、適切にフォーマット化されたレポートがブラウザに送られます。次にその方法を説明します。 - -### UI を使用してメニュー項目を作成する - -![AMI メニュー](./images/dv-custom-amis-04-ami-menu-03.png) - - -設定メニューから[アクション メニュー アイテム] (Action Menu Item)を選択し、AMI の管理ページを開きます。 - -新しい AMI を作成するには、![Add AMI](./images/dv-custom-amis-05-add-ami-04.png) をクリックします。 - -タイトルと他の必須フィールドを入力し、[アクション メニュー アイテムを作成] (Create Action Menu Item)をクリックします。 - -### ユーザが AMI をクリックすると起こること - -{% include product %} が新しいウィンドウ(オプションが選択されている場合はモーダル ダイアログ)で POST 要求を割り当て、現在のページから POST 要求に含まれるデータを受信 URL にデータを送信します。次に、ワークフローの例を示します。 - -* [バージョン] (Versions)ページに移動します -* 1 つまたは複数のバージョンを選択します -* コンテキスト メニューを表示します(ツールバーの歯車メニューを右クリックまたはクリック) -* ユーザが Build PDF Report をクリックします -* {% include product %} が新しいウィンドウで POST 要求を AMI の URL に割り当てます({% include product %} サーバに HTTPS 経由で接続している場合に、URL を HTTP 経由で送受信すると、ブラウザに警告が表示されます) -* 指定した URL に格納されたスクリプトが POST データを処理し、PDF ドキュメントを生成します -* 適切にフォーマット化された PDF レポートが、表示またはダウンロード用にユーザに送り返されます - -## カスタム プロトコル ハンドラの例 - -カスタム AMI の最新の実装には、カスタム プロトコル ハンドラのセットアップが含まれます(例: {% include product %}://process_version)。これにより、ローカル コンピュータ上のスクリプトを介して Maya、RV、Cinesync などのアプリケーションと {% include product %} を接続できます。HTTP(S)プロトコル以外を指定すると、POST の代わりに GET を使用してデータが URL に送信されます。異なる要求を割り当てる社内ツールを起動するために使用することもできます。 - -カスタム プロトコルの詳細については、「[カスタム ブラウザ プロトコルを使用してアプリケーションを起動する](https://developer.shotgridsoftware.com/ja/67695b40/)」を参照してください。 - -> **注:** [{% include product %} の統合](https://developer.shotgridsoftware.com/ja/d587be80/)により、Maya などのソフトウェア パッケージに組み込んで統合することもできます。 -### 軽量ペイロード - -カスタム プロトコルを使用する場合、クエリー情報は GET 要求として送信されます。特定のオペレーティング システムとブラウザの組み合わせには、許容される GET 要求のサイズに関するさまざまな制限事項があります。カスタム プロトコル AMI で軽量ペイロード チェックボックスをオンにすることをお勧めします。軽量ペイロードをオンにすると、レコードの `meta` フィールドの `ami_payload` キーを読み取ることで完全なペイロードを取得するためにフェッチできる、単一のイベント ログ エントリ ID をスクリプトが受け取ります。 - -## 例 - -次に、基本的ないくつかのサンプル スクリプトを示します。 - -* [ActionMenuItem 呼び出しの処理](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) -* [バージョン パッケージ ツール](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_version_packager.html) - -## ペイロードの内容 - -### ユーザ データ - -* **user_id**: 現在ログイン中のユーザのユーザ ID (例: 34) -* **user_login**: 現在ログイン中のユーザのログイン(例: joe) - -### エンティティ データ - -* **entity_type:** 現在のページまたはビューのエンティティ タイプ(例: Version) -* **selected_ids**: 選択したエンティティ ID のカンマ区切りリスト(例: 931、900) -* **ids**: 現在のページのクエリーが返すエンティティの ID すべてのカンマ区切りリスト。これにより、ページネーションが原因で表示されない ID を含めたすべての ID が返されます。(931、900、904、907 など)。AMI で[選択が必要] (Selection required)がオンになっている場合、この値は **selected_ids** と同じ値になります。 - -### ページ データ - -* **title:** ページ タイトル(例: "All Versions") -* **page_id**: アクション メニュー アイテムのクリック元のページの ID (例: 1353) -* **server_hostname:** AMI がトリガされたシステムのホスト名。同じ AMI を呼び出す複数のサーバがある場合に役立ちます(ステージング サーバとプロダクション サーバなど)。 -* **referrer_path:** AMI が呼び出された URL の正規のパス。 -* **session_uuid:** この AMI が呼び出されたウィンドウの一意の識別子。AMI が呼び出されたページに情報を一斉送信するために、[データ更新のポーリング] (Poll for Data Updates)チェックボックスと Python API の [`set_session_uuid`](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid) メソッドで使用できます。 **注:** この機能の更新のポーリングは急激に減少し、最終的に停止します。そのため、ポーリングが停止する前に AMI が更新されない場合、ソース ページに更新が表示されないことがあります。 -* **cols**: ページで表示可能な列すべてのシステム フィールド名を含むカンマ区切りリスト(例: code, sg_status_list, description) -* **column_display_names:** ページで表示可能な列すべての表示名を含むカンマ区切りリスト(例: Version, Status, Description) -* **view:** AMI が呼び出されたときに選択されていたビュー。ページのデザイン モードを使用して、任意のページに対して複数のビューを作成できます。 -* **sort_column**: ソート対象の列のシステム名(例: code)。最初のソート キーのみが送信されます。複数ある場合は、**sort_columns** を参照してください -* **sort_direction:** (例: asc または desc)最初のソート方向のみが送信されます。複数ある場合は、**sort_directions** を参照してください -* **sort_columns:** ページまたはビューがソートされた列のシステム名のカンマ区切りリスト(例: code,created_at)。複数のソート キーがある場合にのみ送信されます -* **sort_directions:** ページまたはビューがソートされた列のシステム名のカンマ区切りリスト(例: e.g., code, created_at)。複数のソート キーがある場合にのみ送信されます -* **grouping_column:** グループ化対象の列のシステム名(例: code)。最初のグループ化列のみが送信されます。複数ある場合は、**grouping_columns** を参照してください -* **grouping_method:** グループ化が行われる方法(例: エンティティ フィールドの場合は `entitytype` によるグループ化、日付フィールドの場合は `month` によるグループ化)。最初のグループ化方法のみが送信されます。複数ある場合は、**grouping_methods** を参照してください -* **grouping_direction:** グループ化の方向(例: asc または desc)。最初のグループ化方向のみが送信されます。複数ある場合は、**grouping_directions** を参照してください -* **grouping_columns:** データがグループ化された列のシステム名のカンマ区切りリスト(例: code,created_at)。複数のグループ化列がある場合にのみ送信されます -* **grouping_methods:** グループ化方法のカンマ区切りリスト(例: entity_type,month)。複数のグループ化列がある場合にのみ送信されます -* **grouping_directions:** グループ化の方向のカンマ区切りリスト(例: asc,desc)。複数のグループ化列がある場合にのみ送信されます - -### プロジェクト データ(現在のページのすべてのエンティティが同じプロジェクトを共有する場合のみ送信されます) - -* **project_name**: プロジェクトの名前(例: Gunslinger) -* **project_id**: プロジェクトの ID (例: 81) \ No newline at end of file diff --git a/docs/ja/action-menu-items/action-menu-items-intro.md b/docs/ja/action-menu-items/action-menu-items-intro.md deleted file mode 100644 index 4591d957e..000000000 --- a/docs/ja/action-menu-items/action-menu-items-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: アクション メニュー アイテム -pagename: action-menu-items-intro -lang: ja ---- - -# アクション メニュー アイテム - -このセクションでは、カスタム アクション メニュー アイテム(AMI)の作成と、カスタム ブラウザ プロトコルを使用したアプリケーションの起動について説明します。 \ No newline at end of file diff --git a/docs/ja/action-menu-items/custom-browser-protocols.md b/docs/ja/action-menu-items/custom-browser-protocols.md deleted file mode 100644 index d5ed3160c..000000000 --- a/docs/ja/action-menu-items/custom-browser-protocols.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -layout: default -title: カスタム ブラウザ プロトコルを使用してアプリケーションを起動する -pagename: custom-browser-protocols -lang: ja ---- - -# カスタム ブラウザ プロトコルを使用してアプリケーションを起動する - -## コンテンツ - -- [プロトコルを登録する](#registering-a-protocol) - - [Windows 上でプロトコルを登録する](#registering-a-protocol-on-windows) - - [Mac OSX 上でプロトコルを登録する](#registering-a-protocol-on-osx) - - [Linux 上でプロトコルを登録する](#registering-a-protocol-on-linux) - -[アクション メニュー アイテム]()(AMI)の極めて実用的な使用方法は、ローカル コンピュータ上でアプリケーションまたはスクリプトを 1 つのバリアントで実行することです。これを機能させるには、ブラウザと実行するスクリプトまたはアプリケーションとの間に接続をセットアップする必要があります。このリンクはカスタム ブラウザ プロトコルと呼ばれます。 - -たとえば、ユーザがクリックすると、[foo] アプリケーションが起動するようなリンクをセットアップするとします。プリフィックスに「http」ではなく、「foo」などのカスタム プロトコルを指定する必要があります。理想的には、次のようなリンクが必要です。 -``` -foo://some/info/here -``` - -オペレーティング システムにはプロトコルの処理方法を通知する必要があります。既定では、「http」は既定の Web ブラウザで処理され、「mailto」は既定のメール クライアントで処理されると、現在のすべてのオペレーティング システムは認識しています。アプリケーションがインストールされると、OS に登録され、特定のプロトコルでそのアプリケーションを起動するよう OS に指示する場合があります。 - -たとえば、RV をインストールした場合、アプリケーションは `rvlink://` を OS に登録し、RV がすべての `rvlink://` プロトコル要求を処理して RV にイメージまたはシーケンスを表示するように指示します。そのため、ユーザが {% include product %} と同じように `rvlink://` で始まるリンクをクリックすると、オペレーティング システムはこのリンクで RV を起動することを認識し、アプリケーションはこのリンクを解析して処理方法を認識できます。 - -RV が URL と「rvlink」プロトコルのプロトコル ハンドラとしてどのように機能するかについては、[RV のユーザ マニュアル](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_manuals_rv_user_manual_rv_user_manual_chapter_c_html#c-2-installing-the-protocol-handler)を参照してください。 - -# プロトコルを登録する - -## Windows 上でプロトコルを登録する - -Windows でプロトコル ハンドラを登録するには、Windows レジストリを変更します。レジストリ キーは一般的に次のようになります。 - -``` -HKEY_CLASSES_ROOT -foo -(Default) = "URL:foo Protocol" -URL Protocol = "" -shell -open -command (Default) = "foo_path" "%1" -``` -ターゲット URL は次のようになります。 - -``` -foo://host/path... -``` - -> **注:** 詳細については、[http://msdn.microsoft.com/ja-jp/library/aa767914(VS.85).aspx](https://docs.microsoft.com/ja-jp/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914(v=vs.85)?redirectedfrom=MSDN) を参照してください。 -> **Windows QT/QSetting の例** - -開発しているアプリケーションが QT (または PyQT/PySide)フレームワークを使用して記述されている場合は、QSetting オブジェクトを利用してレジストリ キーの作成を管理できます。 - -アプリケーションがレジストリ キーを自動的にセットアップする場合のコードは次のようになります。 - -``` -// cmdLine points to the foo path. -//Add foo to the Os protocols and set foobar to handle the protocol -QSettings fooKey("HKEY_CLASSES_ROOT\\foo", QSettings::NativeFormat); -mxKey.setValue(".", "URL:foo Protocol"); -mxKey.setValue("URL Protocol", ""); -QSettings fooOpenKey("HKEY_CLASSES_ROOT\\foo\\shell\\open\\command", QSettings::NativeFormat); -mxOpenKey.setValue(".", cmdLine); -``` - -**{% include product %} AMI を介して Python スクリプトを開始する Windows の例** - -ローカルで動作する AMI の多くは、Python インタプリタを介して単純な Python スクリプトを開始することができます。これにより、単純なスクリプトに加えて、GUI (PyQT、PySide、または選択した GUI フレームワーク)を使用したアプリも実行することができます。この目標のために役立つ実例を見てみましょう。 - -**手順 1: カスタム「{% include product %}」プロトコルをセットアップする** - -Windows レジストリ エディターを使用します。 - -``` -[HKEY_CLASSES_ROOT\{% include product %}] -@="URL:{% include product %} Protocol" -"URL Protocol"="" -[HKEY_CLASSES_ROOT\{% include product %}\shell] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open\command] -@="python""sgTriggerScript.py""%1" -``` - -このセットアップでは、最初の引数がスクリプト `sgTriggerScript.py` で、2 番目の引数が `%1` である `python` インタプリタを起動するための `{% include product %}://` プロトコルが登録されます。 `%1` が、ブラウザでクリックされた URL または呼び出された AMI の URL に置き換えられることを理解することが重要です。これが Python スクリプトの最初の引数になります。 - -> **注:** Python インタプリタと Python スクリプトへのフル パスが必要となる場合があります。適宜調整してください。 - -**手順 2: Python スクリプトで受信 URL を解析する** - -スクリプト内で、指定された最初の引数である URL を取得し、AMI が呼び出されたコンテキストを把握するためにそのコンポーネントまで解析します。次のコードに、これを行う方法を示す簡単なスクリプトの例を示しています。 - -**Python スクリプト** - -``` -import sys -import urlparse -import pprint -def main(args): - # Make sure we have only one arg, the URL - if len(args) != 1: - return 1 - # Parse the URL: - protocol, fullPath = args[0].split(":", 1) - path, fullArgs = fullPath.split("?", 1) - action = path.strip("/") - args = fullArgs.split("&") - params = urlparse.parse_qs(fullArgs) - # This is where you can do something productive based on the params and the - # action value in the URL. For now we'll just print out the contents of the - # parsed URL. - fh = open('output.txt', 'w') - fh.write(pprint.pformat((action, params))) - fh.close() -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) -``` - -**手順 3: {% include product %} インタフェースをカスタム プロトコルと接続し、最終的にスクリプトと接続する** - -最後に、URL 値が {% include product %} になる `shotgrid://processVersion` の AMI を作成します。この AMI は任意のエンティティ タイプに割り当てることができますが、この例ではバージョン エンティティを使用します。 - -バージョン ページに移動し、バージョンを右クリックして、メニューから AMI を選択します。これにより、ブラウザで `shotgrid://` URL が開かれ、登録されたカスタム プロトコルを介してスクリプトにリダイレクトされます。 - -スクリプトと同じフォルダにある `output.txt` ファイルの内容が、次のようになります。 -``` -('processVersion', - {'cols': ['code', - 'image', - 'entity', - 'sg_status_list', - 'user', - 'description', - 'created_at'], - 'column_display_names': ['Version Name', - 'Thumbnail', - 'Link', - 'Status', - 'Artist', - 'Description', - 'Date Created'], - 'entity_type': ['Version'], - 'ids': ['6933,6934,6935'], - 'page_id': ['4606'], - 'project_id': ['86'], - 'project_name': ['Test'], - 'referrer_path': ['/detail/HumanUser/24'], - 'selected_ids': ['6934'], - 'server_hostname': ['patrick.shotgunstudio.com'], - 'session_uuid': ['9676a296-7e16-11e7-8758-0242ac110004'], - 'sort_column': ['created_at'], - 'sort_direction': ['asc'], - 'user_id': ['24'], - 'user_login': ['shotgun_admin'], - 'view': ['Default']}) -``` - -**考えられるバリエーション** - -AMI で URL の `//` の後にあるキーワードを変更することで、同じ `shotgrid://` プロトコルを維持したままスクリプト内の `action` 変数の内容を変更し、単一のカスタム プロトコルのみを登録することができます。これにより、`action` 変数の内容とパラメータの内容に基づいて、スクリプトが意図された動作を把握できます。 - -この方法を使用することで、アプリケーションの起動、FTP などのサービスを介したコンテンツのアップロード、データのアーカイブ、電子メールの送信、または PDF レポートの生成を行うことができます。 - -## Mac OSX 上でプロトコルを登録する - -Mac OSX でプロトコルを登録するには、アプリケーションまたはスクリプトを実行するように設定された .app バンドルを作成する必要があります。 - -まず、AppleScript スクリプト エディタで次のスクリプトを記述します。 - -``` -on open location this_URL - do shell script "sgTriggerScript.py '" & this_URL & "'" -end open location -``` - -> **ヒント:** tcsh などの特定のシェルから Python を確実に実行するには、do シェル スクリプトを次のように変更します。 -> -> do shell script "tcsh -c \"sgTriggerScript.py '" & this_URL & "'\"" -In the Script Editor, save your short script as an “Application Bundle”. - -保存したアプリケーション バンドルを見つけて、Open Contents を選択します。次に、info.plist ファイルを開き、次のコードを plist dict に追加します。 -``` - CFBundleIdentifier - com.mycompany.AppleScript.Shotgun - CFBundleURLTypes - - - CFBundleURLName - Shotgun - CFBundleURLSchemes - - shotgun - - - -``` - -次の 3 つの文字列を変更することもできます。 -``` -com.mycompany.AppleScript.{% include product %} -{% include product %} -{% include product %} -``` - -3 番目の文字列はプロトコル ハンドラです。そのため、URL は次のようになります。 - -``` -shotgrid://something -``` - - -最後に、`.app` バンドルを Mac のアプリケーション フォルダに移動します。このバンドルをダブルクリックすると、プロトコルがオペレーティング システムに登録されます。 - -{% include product %} で AMI をクリックするか、`shotgrid://` で始まる URL をクリックすると、`.app` バンドルがそれに応答して URL を Python スクリプトに渡す、というようなデータ フローになります。この時点で、Windows の例で使用したものと同じスクリプトを使用でき、同じことができるようになります。 - -## Linux 上でプロトコルを登録する - -次のコードを使用します。 -``` -gconftool-2 -t string -s /desktop/gnome/url-handlers/foo/command 'foo "%s"' -gconftool-2 -s /desktop/gnome/url-handlers/foo/needs_terminal false -t bool -gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled true -t bool -``` -次に、次の場所にあるグローバル既定値にローカル GConf ファイルの設定を使用します。 -``` -/etc/gconf/gconf.xml.defaults/%gconf-tree.xml -``` - -この変更は GNOME 設定でのみ行われますが、KDE でも機能します。Firefox と GNU IceCat は、不明なプレフィックス(`foo://` など)を検出したときに、実行しているウィンドウ マネージャに関係なく gnome-open に従います。 そのため、KDE の Konqueror のような他のブラウザは、このシナリオでは機能しません。 - -Ubuntu でアクション メニュー アイテムのプロトコル ハンドラをセットアップする方法については、[http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity](http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity) を参照してください。 \ No newline at end of file diff --git a/docs/ja/action-menu-items/images/dv-asterisk.png b/docs/ja/action-menu-items/images/dv-asterisk.png deleted file mode 100644 index c2fbed5a7..000000000 Binary files a/docs/ja/action-menu-items/images/dv-asterisk.png and /dev/null differ diff --git a/docs/ja/action-menu-items/images/dv-custom-amis-01-report-01.png b/docs/ja/action-menu-items/images/dv-custom-amis-01-report-01.png deleted file mode 100644 index ce8d1afd6..000000000 Binary files a/docs/ja/action-menu-items/images/dv-custom-amis-01-report-01.png and /dev/null differ diff --git a/docs/ja/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png b/docs/ja/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png deleted file mode 100644 index cc212f2c6..000000000 Binary files a/docs/ja/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png and /dev/null differ diff --git a/docs/ja/action-menu-items/images/dv-custom-amis-05-add-ami-04.png b/docs/ja/action-menu-items/images/dv-custom-amis-05-add-ami-04.png deleted file mode 100644 index e74e67145..000000000 Binary files a/docs/ja/action-menu-items/images/dv-custom-amis-05-add-ami-04.png and /dev/null differ diff --git a/docs/ja/contribution.md b/docs/ja/contribution.md deleted file mode 100644 index 05329fc7f..000000000 --- a/docs/ja/contribution.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: 貢献ガイド -pagename: contribution-index -lang: ja ---- - -# 貢献ガイド - -当社では、開発状況を可能な限り公開するための取り組みとして、開発者向けドキュメントを [クリエイティブ コモンズ ライセンス](https://github.com/shotgunsoftware/developer-beta/blob/master/LICENSE.md) の公開リポジトリに作成することを決定しました。このドキュメントをより良いものにするための提案がある場合は、ぜひリポジトリの改善についてのプル リクエストをお送りください。プル リクエストを受け入れるためには、以下のいずれかのコントリビューター契約書に署名していただく必要があります。 - -- [個人のコントリビューター契約書](../all_langs/contribution/ind_contrib_agmt_for_shotgun_developer_documentation.pdf) -- [会社のコントリビューター契約書](../all_langs/contribution/corp_contrib_agmt_for_shotgun_developer_documentation.pdf) - -上記のいずれかの契約書を提出していただくと、[README](https://github.com/shotgunsoftware/developer-beta/#Making-a-change-to-the-documentation) の手順に従って変更を提出することができます。 diff --git a/docs/ja/developer-overview.md b/docs/ja/developer-overview.md deleted file mode 100644 index 6aa118bd7..000000000 --- a/docs/ja/developer-overview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 開発の概要 -pagename: developer-overview -lang: ja ---- - -# 開発の概要 - -### Python API - -{% include product %} ソフトウェアは、Python ベースの API を使用して {% include product %} にアクセスし、他のツールと連携します。API は CRUD パターンに従い、{% include product %} サーバで作成、読み取り、更新、および削除のアクションを実行できます。各リクエストは単一のエンティティ タイプに従って動作し、アクションに応じて、フィルタ、返される列、ソート情報、およびいくつかの追加オプションを定義できます。 - -* [コード リポジトリ](https://github.com/shotgunsoftware/python-api) -* [ドキュメント](http://developer.shotgridsoftware.com/python-api/) -* [フォーラム](https://community.shotgridsoftware.com/c/pipeline/6) - -### イベント トリガ フレームワーク - -{% include product %} イベント ストリームにアクセスする場合の望ましい方法として、イベント テーブルを監視し、新しいイベントを取得し、イベントを処理して、また同じ手順を繰り返します。 - -このプロセスを成功させるためには多くの要素が必要ですが、それらの中には、適用すべきビジネス ルールに直接関係しないものがあります。 - -フレームワークの役割は、退屈な監視タスクをビジネス ロジックの実装作業から分離することです。 - -フレームワークはサーバ上で動作し、{% include product %} のイベント ストリームを監視するデーモン プロセスです。イベントが見つかったら、デーモンはイベントを一連の登録済みのプラグインに渡します。各プラグインは、意図したとおりにイベントを処理できます。 - -* [コード リポジトリ](https://github.com/shotgunsoftware/shotgunevents) -* [説明](https://github.com/shotgunsoftware/shotgunevents/wiki) - -### アクション メニュー アイテム フレームワーク - -API 開発者は、エンティティ単位でコンテキスト メニュー項目をカスタマイズできます。たとえば、Versions ページから複数のバージョンを選択して右クリックし、(たとえば) PDF レポートを作成します。これらを ActionMenuItems (AMIs)と呼びます。 - -* [ドキュメント]() -* [サンプル コード リポジトリ](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) diff --git a/docs/ja/event-daemon/event-daemon-api.md b/docs/ja/event-daemon/event-daemon-api.md deleted file mode 100644 index 3956df383..000000000 --- a/docs/ja/event-daemon/event-daemon-api.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default -title: API -pagename: event-daemon-api -lang: ja ---- - -# API - - -## registerCallbacks - -プラグインのイベント処理エントリ ポイントをフレームワークに伝えるために使用する、すべてのプラグインのグローバル レベル関数。 - -**registerCallbacks(reg)** - -* reg: 呼び出す関数をフレームワークに伝えるために使用する [`Registrar`](#Registrar)。 - - - -## Registrar - -Registrar はプラグインの操作方法をフレームワークに伝えるために使用するオブジェクトです。これは、[`registerCallbacks`](#registerCallbacks) 関数に渡されます。 - -### アトリビュート - - -**logger** - -「[`getLogger`](#getLogger)」を参照してください。 - -### メソッド - - -**getLogger** - -プラグイン内からメッセージをログに記録するために使用する python Logger オブジェクトを取得します。 - - - -__setEmails(*emails)__ - -このプラグインまたはそのコールバックのいずれかで問題が発生した場合に、エラーや重要な通知を受け取る電子メールを設定します。 - -設定ファイルで指定されている既定のアドレスに電子メールを送信する場合(既定) - -```python -reg.setEmails(True) -``` - -電子メールを無効にする場合(エラー メッセージが表示されないため、この設定は推奨しません) - -```python -reg.setEmails(False) -``` - -特定のアドレスに電子メールを送信する場合 - -```python -reg.setEmails('user1@domain.com') -``` - -または - -```python -reg.setEmails('user1@domain.com', 'user2@domain.com') -``` - - -**registerCallback(sgScriptName, sgScriptKey, callback, matchEvents=None, args=None, stopOnError=True)** - -このプラグインのエンジンにコールバックを登録します。 - -* `sgScriptName`: {% include product %} スクリプト ページから取得したスクリプトの名前。 -* `sgScriptKey`: {% include product %} スクリプト ページから取得したスクリプトのアプリケーション キー。 -* `callback`: `__call__` メソッドを使用する関数またはオブジェクト。「[`exampleCallback`](#exampleCallback)」を参照してください。 -* `matchEvents`: コールバックに渡すイベントのフィルタ。 -* `args`: フレームワークをコールバックに戻す任意のオブジェクト。 -* `stopOnError`: ブール型。このコールバックの例外は、このプラグイン内のすべてのコールバックによるイベントの処理を停止します。既定値は `True` です。 - -`sgScriptName` は、{% include product %} のプラグインを特定するために使用します。任意の名前を任意の数のコールバックで共有することも、1 つののコールバックに 1 つのみにすることもできます。 - -`sgScriptKey` は、{% include product %} のプラグインを特定するために使用し、指定した `sgScriptName` の適切なキーである必要があります。 - -指定したコールバック オブジェクトは、フィルタに一致するイベントの処理が必要な場合に呼び出されます。呼び出し可能なオブジェクトを実行することはできますが、ここでクラスを使用することは推奨しません。`__call__` メソッドを操作する関数やインスタンスを使用するほうが妥当です。 - -`matchEvent` 引数は、登録されているコールバックが関係するイベントを指定するフィルタです。`matchEvents` が指定されていない場合、または None が指定されている場合、すべてのイベントがコールバックに渡されます。それ以外の場合、`matchEvents` フィルタの各キーはイベント タイプです。各値は使用可能なアトリビュート名のリストです。 - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], -} -``` - -複数のイベント タイプやアトリビュート名を指定できます。 - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], - 'Shotgun_Version_Change': ['description', 'sg_status_list'] -} -``` - -指定したアトリビュート名のイベント タイプをフィルタすることができます。 - -```python -matchEvents = { - '*': ['sg_status_list'], -} -``` - -また、特定のイベント タイプの任意のアトリビュート名をフィルタすることもできます。 - -```python -matchEvents = { - 'Shotgun_Version_Change': ['*'] -} -``` - -以下のように指定することもできますが、何も指定しない場合と同じようにしか機能しないため、実際には指定しても無意味です。 - -```python -matchEvents = { - '*': ['*'] -} -``` - -「_New」や「_Retirement」などのフィールド固有でないイベント タイプと照合する場合には、リストを指定するのではなく、`None` という値を渡します。 - -```python -matchEvents = { - 'Shotgun_Version_New': None -} -``` - -`args` 引数は、イベント フレームワーク自体では使用されません。変更せずにコールバックに戻されるだけです。 - -{% include info title="注" content="`args` 引数のポイントは、[`registerCallbacks`](#registerCallbacks) 関数で時間のかかる処理を行い、イベント処理時に戻り値を渡せるようにすることです。"%} - -`args` 引数の別の使用方法として、`dict` などの一般的な可変値を複数のコールバックに渡してデータを共有するように指定できます。 - -`stopOnError` 引数は、このコールバックの例外によってプラグインのすべてのコールバックのイベント処理を停止するかどうかを伝えます。既定では `True` ですが、`False` に切り替えることもできます。イベントの処理を停止しない場合でも、エラーの通知メールが送信されます。コールバックごとに設定するため、重要なコールバックをユーザによって `True` または `False` にすることができます。 - - -## コールバック - -[`Registrar.registerCallback`](#registerCallback) によって登録するプラグイン エントリ ポイントは通常、次のようなグローバル レベル関数です。 - - -**exampleCallback(sg, logger, event, 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 deleted file mode 100644 index 3d8c345cd..000000000 --- a/docs/ja/event-daemon/event-daemon-configuration.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -layout: default -title: 環境設定 -pagename: event-daemon-configuration -lang: ja ---- - -# 環境設定 - -以下のガイドは、スタジオの {% include product %}Events を設定する場合に役に立ちます。 - -{% include product %}Events のほとんどの設定は、`shotgunEventDaemon.conf` ファイルによって制御されます。このファイルには、必要に応じて修正できるいくつかの設定があります。それらの設定にはほとんどのスタジオで正常に機能する既定値がありますが、いくつかの設定は構成する必要があります(具体的には、{% include product %}EventDaemon を {% include product %} サーバに接続するための {% include product %} サーバの URL、スクリプト名、およびアプリケーション キー)。 - -{% include info title="注" content="**Windows の場合:** Windows ユーザは、環境設定ファイル内のすべてのパスを Windows 用に変更する必要があります。ログを含むすべてのパスを、単純化のために 1 つの場所に保持することをお勧めします。このドキュメントでは、Windows のパスについて説明する際に、`C:\shotgun\shotgunEvents` を参照する傾向があります。"%} - - -## shotgunEventDaemon.conf を編集する - -{% include product %}Events をインストールしたら、次に `shotgunEventDaemon.conf` ファイルをテキスト エディタで開き、スタジオのニーズに合わせて設定を変更します。ほとんどのスタジオでは既定値をそのまま使用できますが、一部の設定には既定値がなく、デーモンを実行する前にユーザが設定する必要があります。 - -*必須*のアイテムは次のとおりです。 - -- {% include product %} サーバの URL -- {% include product %} に接続するためのスクリプト名とアプリケーション キー -- {% include product %}EventDaemon を実行するためのプラグインへのフル パス - -必要に応じて、SMTP サーバおよび電子メール固有の設定を指定して、エラーに対する電子メール通知を設定することもできます。これはオプションですが、設定することを選択した場合は、電子メール セクションですべての設定値を指定する必要があります。 - -また、デーモンでパフォーマンスの問題が発生した場合のトラブルシューティングに役立つオプションのタイミング ログのセクションもあります。タイミング ログを有効にすると、個別のログ ファイルにタイミング情報が入力されます。 - - -### {% include product %} 設定 - -`[{% include product %}]` セクションの下で、既定のトークンを `server`、`name`、および `key` の正しい値に置き換えます。これらは、{% include product %} に接続する標準 API スクリプトに指定した値と同じである必要があります。 - -例 - -``` -server: https://awesome.shotgunstudio.com -name: {% include product %}EventDaemon -key: e37d855e4824216573472846e0cb3e49c7f6f7b1 -``` - - -### プラグイン設定 - -実行するプラグインを検索する場所を {% include product %}EventDaemon に指示する必要があります。`[plugins]` セクションで、既定のトークンを `paths` の正しい値に置き換えます。 - -複数の場所を指定できます (デーモンを使用する複数の部門またはリポジトリがある場合に役立つことがあります)。この値は、読み取り可能な既存のディレクトリへのフル パスである必要があります。 - -例 - -``` -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 を作成することをお勧めします。 - -{% include info title="注" content="何らかの理由で上記の手順が機能しない場合、設定ファイルの検索パスは `shotgunEventDaemon.py` スクリプトの下部にある `_getConfigPath()` 関数に配置されます" %} - -{% include info title="注" content="**Windows の場合**`/etc`は Windows に存在しないため、環境設定ファイルは Python ファイルと同じディレクトリに配置する必要があります。"%} - - -## デーモンをテストする - -デーモンはバックグラウンドで実行されるためテストが困難な場合があります。デーモンの動作を確認するための明確な方法はありません。幸い、{% include product %}EventDaemon には、デーモンをフォアグラウンド プロセスとして実行するオプションがあります。最低限必要な設定が完了したので、次にデーモンをテストして、どのように動作するかを確認します。 - -{% include info title="注" content="ここで使用される既定値では、ルート アクセスが必要になる場合があります(たとえば、/var/log ディレクトリに書き込む場合など)。この例では、`sudo` を使用してこの問題に対応しています。" %} - -``` -$ sudo ./{% include product %}EventDaemon.py foreground -INFO:engine:Using {% include product %} version 3.0.8 -INFO:engine:Loading plugin at /usr/local/shotgun/{% include product %}Events/src/examplePlugins/logArgs.py -INFO:engine:Last event id (248429) from the {% include product %} database. -``` - -スクリプトを起動すると、上記の行が表示されます(一部の詳細は実際とは明らかに異なる場合があります)。エラーが発生した場合、フォアグラウンドで実行することを選択したため、スクリプトは終了します。先に進めなくなると、いくつかの一般的なエラーが以下に表示されます。 - -`logArgs.py` プラグインは、単に {% include product %} で発生したイベントを取り込み、ロガーに渡すだけです。これは、スクリプトが実行されていてプラグインが機能していることを確認する簡単な方法です。多忙なスタジオでは、メッセージが高速で流れていることに気付くかもしれません。そうでない場合は、Web ブラウザで {% include product %} サーバにログインし、値をいくつか変更するか、何かを作成します。変更を適用して生成したイベントのタイプに対応するログ ステートメントが、ターミナル ウィンドウに出力されます。 - -{% include info title="注" content="logArgs.py ファイルには、適切な値を入力する必要のある変数があります。ログを正しく機能させるには、shotgunEventDaemon.conf ファイルで使用された値と同じ値が含まれるように '$DEMO_SCRIPT_NAMES$' および '$DEMO_API_KEY$' を編集する必要があります。"%} - -ログ ファイルに何も記録されていない場合は、{% include product %}EventDaemon.conf のログ関連設定を調べて、``logging`` 値が情報レベルのメッセージを記録するように設定されていること、 - -``` -logging: 20 -``` - -また、logArgs プラグインも情報レベルのメッセージを表示するように設定されていることを確認します。registerCallbacks() メソッドの最後に、読み込む必要のある行があります。 - -```python -reg.logger.setLevel(logging.INFO) -``` - -すべてが正常だと仮定し、{% include product %}EventDaemon プロセスを停止するには、ターミナルに `-c` と入力し、スクリプトの終了を確認します。 - - -## デーモンを実行する - -テストがすべて成功したと仮定し、バックグラウンドで目的どおりにデーモンを実行できるようになりました。 - -``` -$ sudo ./{% include product %}EventDaemon.py start -``` - -出力はなく、ターミナルでユーザにコントロールが返されます。2 つの方法で、すべてが適切に実行されていることを確認できます。最初に、実行中のプロセスを調べて、これがその 1 つであるかどうかを確認します。 - -``` -$ ps -aux | grep shotgunEventDaemon -kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 grep shotgunEventDaemon -root 4020 0.0 0.1 2443824 4876 ?? S 9:36AM 0:00.02 /usr/bin/python ./{% include product %}EventDaemon.py start -``` - -返された 2 行目から、デーモンが実行されていることが分かります。最初の行は、今実行したコマンドに一致します実行していることは分かりますが、*機能している*こと、そしてプラグインが想定した通りに動作していることを確認するために、ログ ファイルを調べて、出力があるかどうかを確認できます。 - -``` -$ sudo tail -f /var/log/shotgunEventDaemon/shotgunEventDaemon -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -``` - -Web ブラウザに戻り、エンティティに変更を加えます。次に、ターミナルに戻って出力を探します。次のように表示されます。 - -``` -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -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 %} デーモンの機能であることに注意してください。ログは毎日深夜にローテーションされ、プラグインごとに 10 個のファイルが毎日保持されます。 - - -## 一般的なエラー - -次に、発生する一般的なエラーとその解決方法をいくつか示します。解決方法が何も見つからない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -### 無効なパス: $PLUGIN_PATHS$ - -shotgunEventDaemon.conf ファイル内のプラグインへのパスを指定する必要があります。 - -### 権限が拒否されました: '/var/log/shotgunEventDaemon' - -デーモンは書き込み用にログ ファイルを開けませんでした。 - -`sudo` を使用してデーモンを実行するか、shotgunEventDaemon.conf の `logPath` および `logFile` 設定によって指定されたログ ファイルに書き込む権限を持つユーザとして実行する必要があります。(既定の場所は `/var/log/shotgunEventDaemon`で、通常はルートが所有します。 - -### ImportError: shotgun_api3 という名前のモジュールがありません - -{% include product %} API がインストールされていません。現在のディレクトリ内に保存されているか、`PYTHONPATH` 内のディレクトリに保存されているかを確認してください。 - -sudo として実行する必要があり、`PYTHONPATH` が正しく設定されている場合は、sudo によって環境変数がリセットされることに注意してください。sudoers ファイルを編集して `PYTHONPATH` を保持するか、sudo -e(?) を実行することができます - - -## 環境設定ファイルの設定のリスト - - -### デーモンの設定 - -次に、一般的なデーモンの操作設定を示します。 - -**pidFile** - -pidFile は、デーモンが実行中にそのプロセス ID を保存する場所です。デーモンの実行中にこのファイルが削除された場合、次のパスがイベント処理ループを通過した後に、完全にシャットダウンされます。 - -このフォルダはあらかじめ作成されていて、書き込み可能である必要があります。ファイルには任意の名前を付けることができますが、実行しているプロセスと一致する既定の名前を使用することを強くお勧めします。 - -``` -pidFile: /var/log/shotgunEventDaemon.pid -``` - -**eventIdFile** - -eventIdFile は、デーモンが最後に処理された {% include product %} イベントの ID を保存する場所を参照します。これにより、デーモンは最後にシャットダウンされたときに停止した場所を取得できるため、イベントが見逃されることはありません。最後のデーモンのシャットダウン以降のイベントを無視する場合は、デーモンを開始する前にこのファイルを削除します。これにより、デーモンは起動時に作成された新しいイベントのみを処理します。 - -このファイルは、*の各* プラグインの最後のイベント ID を記録し、この情報を pickle 形式で保存します。 - -``` -eventIdFile: /var/log/shotgunEventDaemon.id -``` - -**logMode** - -ログ記録モードは、次の 2 つの値のいずれかに設定できます。 - -- **0** = メイン ログ ファイルのすべてのログ メッセージ -- **1** = エンジン用の 1 つのメイン ファイル、プラグインごとに 1 つのファイル - -値が **1** の場合、エンジン自体によって生成されたログ メッセージは、`logFile` 構成の設定で指定されたメイン ログ ファイルに記録されます。プラグインによってログに記録されたメッセージは、`plugin.` という名前のファイルに保存されます。 - -``` -logMode: 1 -``` - -**logPath** - -ログ ファイルを配置するパス(メイン エンジンとプラグインの両方のログ ファイル)。メイン ログ ファイルの名前は、以下の ``logFile`` 設定によってコントロールされます。 - -``` -logPath: /var/log/shotgunEventDaemon -``` - -{% include info title="注" content="shotgunEventDaemon には、このディレクトリの書き込み権限が必要です。一般的なセットアップでは、デーモンはマシンの起動時に自動的に実行されるように設定され、その時点でルート権限が与えられます。"%} - -**logFile** - -メイン デーモン ログ ファイルの名前。ログ記録は、毎日深夜にローテーションされるログ ファイルを 10 個まで保存するように設定されています。 - -``` -logFile: shotgunEventDaemon -``` - -**logging** - -ログ ファイルに送信されるログ メッセージのしきい値レベル。この値はメインのディスパッチ エンジンの既定値で、プラグインごとにオーバーライドできます。この値は、単に Python のロギング モジュールに渡されます。よく使われる値は次のとおりです。 -- **10:** デバッグ -- **20:** 情報 -- **30:** 警告 -- **40:** エラー -- **50:** 極めて重要 - -``` -logging: 20 -``` - -**timing_log** - -この値を `on` に設定してタイミングの記録を有効にすると、タイミング情報を含む個別のログ ファイルが生成され、デーモンのパフォーマンスの問題のトラブルシューティングが簡単になります。 - -各コールバックの呼び出しに対して提供されるタイミング情報は次のとおりです。 - -- **event_id** コールバックをトリガしたイベントの ID -- **created_at** イベントが {% include product %} で作成されたときの ISO 形式のタイムスタンプ -- **callback** 起動されたコールバックの `plugin.callback` 形式の名前 -- **start** コールバック処理の開始の ISO 形式のタイムスタンプ -- **end** コールバック処理の終了の ISO 形式のタイムスタンプ -- **duration** `DD:HH:MM:SS.micro_second` 形式のコールバック処理時間 -- **error** コールバックが失敗したかどうかを示します。値は `False` または `True` のいずれかになります。 -- **delay** イベントの作成からコールバックによる処理の開始までの `DD:HH:MM:SS.micro_second` 形式の遅延時間。 - -**conn_retry_sleep** - -{% include product %} への接続が失敗した後、接続が再試行されるまでの待機時間(秒単位)。これにより、ネットワークの中断、サーバの再起動、アプリケーションのメンテナンスなどが可能になります。 - -``` -conn_retry_sleep = 60 -``` - -**max_conn_retries** - -エラー レベルのメッセージがログに記録される前に接続を再試行する回数です(この下に電子メール通知が設定されている場合は、電子メールが送信される可能性があります)。 - -``` -max_conn_retries = 5 -``` - -**fetch_interval** - -各イベントのバッチ処理が完了した後に、新しいイベントを要求するまでの待機時間(秒単位)。通常、この設定は調整する必要はありません。 - -``` -fetch_interval = 5 -``` - - -### {% include product %} 設定 - -{% include product %} インスタンスに関連する設定は次のとおりです。 - -**server** - -接続先の {% include product %} サーバの URL。 - -``` -server: %(SG_ED_SITE_URL)s -``` - -{% include info title="注" content="既定値はありません。環境変数 `SG_ED_SITE_URL` を ShotGrid サーバの URL ( https://awesome.shotgunstudio.com)に設定します" %} - -**name** - -{% include product %} EventDaemon が接続する必要がある {% include product %} スクリプト名。 - -``` -name: %(SG_ED_SCRIPT_NAME)s -``` - -{% include info title="注" content="既定値はありません。環境変数 `SG_ED_SCRIPT_NAME` を ShotGrid サーバのスクリプト名( `shotgunEventDaemon`)" %} - -**key** - -上記で指定したスクリプト名の {% include product %} アプリケーション キー。 - -``` -key: %(SG_ED_API_KEY)s -``` - -{% include info title="注" content="既定値はありません。環境変数 `SG_ED_API_KEY` を上記のスクリプト名(`0123456789abcdef0123456789abcdef01234567`)のアプリケーション キーに設定します。" %} - -**use_session_uuid** - -{% include product %} インスタンス内のすべてのイベントから、プラグインによって生成されたイベントに伝播する session_uuid を設定します。これにより、プラグインの結果として発生した更新を {% include product %} UI に表示できるようになります。 - -``` -use_session_uuid: True -``` - -- {% include product %} この機能には、サーバ v2.3+ が必要です。 -- {% include product %} この機能には、API v3.0.5+ が必要です。 - -{% include info title="注" content="ShotGrid UI は、元のイベントを生成したブラウザ セッションの更新*のみ*をライブで表示します。同じページを開いている他のブラウザ ウィンドウでは、更新がライブで表示されません。"%} - - -### プラグイン設定 - -**paths** - -フレームワークがロードするプラグインを検索する完全なパスのカンマ区切りリスト。相対パスは使用しないでください。 - -``` -paths: /usr/local/shotgun/plugins -``` - -{% include info title="注" content="既定値はありません。値をプラグイン ファイルの場所(Windows では `/usr/local/shotgun/shotgunEvents/plugins` または `C:\shotgun\shotgunEvents\plugins`)に設定する必要があります" %} - - -### 電子メール設定 - -ユーザが常にログをテーリングすることはなく、アクティブな通知システムを使用することがわかっているので、これらはエラー報告に使用されます。 - -レベル 40 (ERROR) より上のエラーは、すべての設定が下に提供されている場合、電子メールで報告されます。 - -電子メール アラートを送信するには、これらの値をすべて入力する必要があります。 - -**server** - -SMTP 接続に使用するサーバ。ユーザ名とパスワードの値は、SMTP 接続の資格情報を提供するためにコメント解除することができます。サーバが認証を使用しない場合は、`username` と `password` の設定をコメント アウトする必要があります。 - -``` -server: smtp.yourdomain.com -``` - -{% include info title="注" content="既定値はありません。smtp.yourdomain.com トークンを SMTP サーバのアドレス(`smtp.mystudio.com`)." %} - -**username** - -SMTP サーバで認証を必要とする場合は、この行をコメント解除し、SMTP サーバに接続するために必要なユーザ名を持つ環境変数 `SG_ED_EMAIL_USERNAME` を設定していることを確認します。 - -``` -username: %(SG_ED_EMAIL_USERNAME)s -``` - -**password** - -SMTP サーバで認証を必要とする場合は、この行をコメント解除し、SMTP サーバに接続するために必要なパスワードを持つ環境変数 `SG_ED_EMAIL_PASSWORD` を設定していることを確認します。 - -``` -password: %(SG_ED_EMAIL_PASSWORD)s -``` - -**from** - -電子メールで使用する必要がある開始アドレスです。 - -``` -from: support@yourdomain.com -``` - -{% include info title="注" content="既定値はありません。`support@yourdomain.com` を有効な値(`noreply@mystudio.com`)." %} - -**to** - -これらのアラートを送信する必要がある電子メール アドレスのカンマ区切りリスト。 - -``` -to: you@yourdomain.com -``` - -{% include info title="注" content="既定値はありません。`you@yourdomain.com` を有効な値(`shotgun_admin@mystudio.com`)." %} - -**subject** - -イベント フレームワーク {% include product %} によって送信されたアラートを並べ替えるのに役立つ電子メールの件名の接頭語。 - -``` -subject: [SG] -``` diff --git a/docs/ja/event-daemon/event-daemon-example-plugins.md b/docs/ja/event-daemon/event-daemon-example-plugins.md deleted file mode 100644 index b8240ef7a..000000000 --- a/docs/ja/event-daemon/event-daemon-example-plugins.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: サンプル プラグイン -pagename: event-daemon-example-plugins -lang: ja ---- - -# サンプル プラグイン - -ソース コードには、[サンプル プラグインのフォルダ](https://github.com/shotgunsoftware/shotgunEvents/tree/master/src/examplePlugins)があります。 - -このページには、作業を開始するユーザのためのいくつかの簡単なサンプルが含まれています。このコードはコピーと貼り付けによって実行できます(注: `script_name` と `script_key` の値をインストールに合わせて更新する必要があります)。 - -まず、ここに SG イベント コードを記述するテンプレートがあります。 -## 1. コード テンプレート -### 新規プラグインを開始するには、これをコピーして貼り付けます -```python -""" -Necessary Documentation of the code - -Author: You -Template Author: Andrew Britton -""" - -def registerCallbacks(reg): - # This takes the form of: - # matchEvents = {'Shotgun_Entity_EventType': ['list', 'of', 'field', 'names', 'you', 'need', 'sg_custom_field']} - # the 'id' is always returned, in addition to any fields specifically requested by your callback - matchEvents = { - 'Shotgun_Task_Change': ['content'] - } - - # script_name and script_key are defined by you whenever you create a SG script - # the entry_function_call refers to the function that performs the work of the event plugin - reg.registerCallback('script_name', 'script_key', entry_function_call, matchEvents, None) - - -# This gives you -# shotgun handle = sg -# a logger object... please use this instead of python print, especially if you respect your time and your fellow developers -# an event object... this is the metadata that describes what's happening with the particular event. -# some very good information comes from the event['meta'] object, below is the example event['meta'] data from the subject renamer plugin -# { -# "type": "attribute_change", -# "attribute_name": "subject", -# "entity_type": "Note", -# "entity_id": 2, -# "field_data_type": "text", -# "old_value": "My Note Subject", -# "new_value": "2017-05 May-09 - My Note Subject" -# } -def entry_function_call(sg, logger, event, args): - # Now do stuff - pass -``` -## 2. ノートの件名の名前変更 -### `New` エンティティ イベントを使用する -これは単純ですが、`Shotgun_Entity_New` イベントを捕捉するという複雑な処理も実行できるので、開始点として優れています... -```python -import time -from pprint import pprint - -def registerCallbacks(reg): - matchEvents = { - 'Shotgun_Note_New': ['*'], - } - - reg.registerCallback('script_name', 'script_key', Function_Name, matchEvents, None) - - -def Function_Name(sg, logger, event, args): - # 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") - asset_id = event['meta']['entity_id'] - asset_type = event['meta']['entity_type'] - - asset = sg.find_one(asset_type, [['id', 'is', asset_id]], ['subject']) - if asset['subject'] is None: - current_name = current_date + ' - ' + event['project']['name'] + ' - ' + event['user']['name'] - else: - current_name = current_date + ' - ' + asset['subject'] - - # Modify ALL notes except those in 'Software Development' - if event['project'] == None: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - return - - if event['project']['id'] != 116: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - - else: - 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 - -""" -Create a Note when a field is deleted - -Author: Andrew Britton -""" - -def registerCallbacks(reg): - """ - fn: registerCallbacks - @brief required function. It connects to the event daemon and calls the trashedFieldWarning Function. - It runs every time a field is deleted (retired) - - @param[in] reg variable that is required by shotgun event daemon plugins - @return none - """ - matchEvents = { - 'Shotgun_DisplayColumn_Retirement': ['*'] - } - - reg.registerCallback('script_name', 'script_key', - trashedFieldWarning, matchEvents, None) - - -def CreateNote(sg, logger, event): - constants = {'note header': ':: FIELD DELETION :: '} - def GetListOfPipelineUsers(): - pipeline_users = sg.find('Group', [['code', 'is', 'People_Who_Need_to_Know']], ['code', 'users', 'addressings_to', - 'sg_ticket_type', 'sg_priority']) - return pipeline_users[0]['users'] - - def CreateToolsNote(): - # Note to members of the pipeline group - # Body text = CreateNoteRequestText() - # Date Created = event['event']['created_at'] - # Created By = event['user']['id'] - # Project = Software Development['id'] - # Subject = ':: Field Delete Warning :: ' + event['entity']['name'] - note_data = { - 'project': {'type': 'Project', 'id': 'ID OF PROJECT WHERE YOU WANT THE NOTE REPORTED TO'}, - # ex: 'project': {'type': 'Project', 'id': 2}, - 'content': CreateNoteRequestText(), - 'created_at': event['created_at'], - 'created_by': event['user'], - 'addressings_to': GetListOfPipelineUsers(), - 'subject': constants['note header'] + event['meta']['display_name'] - } - - sg.create('Note', note_data) - - def CreateNoteRequestText(): - OUT = '' - - # Tool Name = event['entity']['name'] - # sg_assigned_to = members of the pipeline group - # Description = linked Ticket decription - # Project = decided in GUI - # sg_sg_request_ticket = event['entity']['id'] - # task_template = Software task template - # Software Projects = defined in GUI - - OUT = '::FIELD DELETION WARNING::\n' - OUT += ':: A Field was deleted ::\n' - OUT += ':: It was called %s ::\n'%event['meta']['display_name'] - - return OUT - - logger.info('::WARNING:: A FIELD has been deleted') - CreateToolsNote() - - -def trashedFieldWarning(sg, logger, event, args): - """ - fn: finalizeTasksFromShot - @brief Function to create and send a warning note, via SG, whenever a field is deleted - event['entity']['id'] yields the id of the current entity that was caught by the plugin as having been changed. - ie. this is the id of the field that was just deleted - - @param[in] sg defines the Shotgun handle to access the database - @param[in] logger sets logging messages to the shotgun event daemon - @param[in] event the collection of shots that have changed - @param[in] args useless variable for this particular function - @return none - """ - - if event['meta']['entity_type'] == 'DisplayColumn': - logger.info('This DisplayColumn was deleted %s', event['meta']['display_name']) - if event['event_type'] == 'Shotgun_DisplayColumn_Retirement': - logger.info('The incoming event call is for deleting a field from an entity. Field name: %s', event['meta']['display_name']) - - # logger.info(' TEST ') - # logger.info('Deleted Field ID is #%d, and is called: %s', event['entity']['id'], event['entity']['name']) - - 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 deleted file mode 100644 index 35d05ebde..000000000 --- a/docs/ja/event-daemon/event-daemon-installation.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default -title: インストール -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 %} サーバへのネットワーク アクセス - - -## {% include product %} API のインストール - -Python が既にマシンにインストールされている場合は、{% include product %} Python API をインストールして、{% include product %} イベント デーモンが {% include product %} サーバに接続するために使用できるようにする必要があります。これを実行するにはいくつかの方法があります。 - -- {% include product %} イベント デーモンと同じディレクトリに配置する -- [`PYTHONPATH` 環境変数](http://docs.python.org/tutorial/modules.html)によって指定されたフォルダのいずれかに配置する - -{% include product %} API が正しくインストールされているかをテストするには、ターミナル ウィンドウで以下を確認します。 - -``` -$ python -c "import shotgun_api3" -``` - -出力は表示されません。次のような出力が表示される場合は、`PYTHONPATH` が正しく設定されているか、{% include product %} API が現在のディレクトリに配置されていることを確認する必要があります。 - -``` -$ python -c "import shotgun_api3" -Traceback (most recent call last): -File "", line 1, in -ImportError: No module named shotgun_api3 -``` - - -## {% include product %}Events のインストール - -{% include product %}Events のインストール先は、ユーザが自由に選択できます。ここでも、Python と {% include product %} API がコンピュータにインストールされ、{% include product %} サーバへのネットワーク アクセス権がある限り、任意の場所から実行することができます。ただし、スタジオにとって論理的な場所にインストールすることが自然です。`/usr/local/shotgun/shotgunEvents` などは論理的であるため、ここからは、これを例として使用します。 - -ソースとアーカイブは、[ https://github.com/shotgunsoftware/shotgunEvents]() の GitHub で入手できます。 - -{% include info title="注" content="**Windows の場合:** Windows サーバを使用している場合は `C:\shotgun\shotgunEvents` を使用できますが、このドキュメントでは Linux パスを使用します。" %} - - -### ソースのクローンの作成 - -`git` がコンピュータにインストールされている場合にソースを取得する最も簡単な方法は、プロジェクトのクローンを作成することです。この方法では、コミットされた更新を簡単に取り込んで、常に最新のバグ修正と新機能を手に入れることができます。 - -``` -$ cd /usr/local/shotgun -$ git clone git://github.com/shotgunsoftware/shotgunEvents.git -``` - -{% include info title="警告" content="GitHub から更新を取得する前に、構成、プラグイン、および shotgunEvents に加えた変更を必ずバックアップして、何も失われないようにしてください。または、自分でプロジェクトをフォークして、自分自身で変更のリポジトリを維持することもできます。" %} - - -### アーカイブのダウンロード - -コンピュータに `git` がない場合、またはソースのアーカイブをダウンロードするだけの場合は、次の手順を実行します。 - -- [https://github.com/shotgunsoftware/shotgunEvents/archives/master]() に移動します。 -- 希望の形式でソースをダウンロードします。 -- コンピュータ上に保存します。 -- `/usr/local/shotgun` フォルダにファイルを解凍します。 -- `/usr/local/shotgun/shotgunsoftware-shotgunEvents-xxxxxxx` フォルダの名前を `/usr/local/shotgun/shotgunEvents` に変更します。 - -#### アーカイブを `/usr/local/shotgun` に抽出します。 - -.tar.gz アーカイブの場合: - -``` -$ tar -zxvf shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.tar.gz -C /usr/local/shotgun -``` - -.zip アーカイブの場合: - -``` -$ unzip shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.zip -d /usr/local/shotgun -``` - -次に、GitHub によって割り当てられたディレクトリ名を `shotgunEvents` に変更します。 - -``` -$ mv shotgunsoftware-shotgunEvents-1c0c3eb shotgunEvents -``` - -次のように表示されます。 - -``` -$ ls -l /usr/local/shotgun/shotgunEvents -total 16 --rw-r--r-- 1 kp wheel 1127 Sep 1 17:46 LICENSE --rw-r--r-- 1 kp wheel 268 Sep 1 17:46 README.mkd -drwxr-xr-x 9 kp wheel 306 Sep 1 17:46 docs -drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src -``` - - -### インストール要件 - -`requirements.txt` ファイルはリポジトリのルートに配置されています。必要なパッケージをインストールするには、これを使用する必要があります - -``` -$ pip install -r /path/to/requirements.txt -``` - - - -### Windows の場合 - -Windows システムでは、次のいずれかが必要です。 - -* [PyWin32](http://sourceforge.net/projects/pywin32/) がインストールされた Python -* [Active Python](http://www.activestate.com/activepython) - -Active Python には {% include product %} イベント デーモンと Windows のサービス アーキテクチャを統合するために必要な PyWin32 モジュールが付属しています。 - -次のコマンドを実行して、デーモンをサービスとしてインストールすることができます(`C:\Python27_32\python.exe` は Python 実行可能ファイルへのパスですが、必要に応じて調整が必要です)。 - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py install -``` - -または、以下を使用して削除します。 - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py remove -``` - -サービスの開始と停止は、通常のサービス管理ツールを使用するか、次のコマンド ラインを使用して実行できます。 - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py start -> C:\Python27_32\python.exe shotgunEventDaemon.py stop -``` - -ほとんどの場合、システムの管理者ユーザとしてリストされている各コマンドを実行していることを確認する必要があります。それには、cmd アプリケーションを右クリックして[管理者として実行]を選択します。 - -{% include info title="注" content="ネットワーク上の Windows にデーモンをインストールした場合、またはネットワーク上の場所からログやその他のリソースを読み書きするように設定した場合は、サービスのプロパティを編集して、サービスを実行するユーザをローカル マシン アカウントからネットワーク リソースへのアクセス権を持つドメイン アカウントに変更する必要があります。" %} diff --git a/docs/ja/event-daemon/event-daemon-plugins.md b/docs/ja/event-daemon/event-daemon-plugins.md deleted file mode 100644 index a38814abc..000000000 --- a/docs/ja/event-daemon/event-daemon-plugins.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: プラグイン -pagename: event-daemon-plugins -lang: ja ---- - -# プラグインの概要 - -プラグイン ファイルは、環境設定ファイルで指定されたプラグイン パス内の *.py* ファイルです。 - -コードのダウンロード先の `src/examplePlugins` フォルダには、サンプル プラグインがいくつか用意されています。これらは、生成された特定のイベントを検索して処理し、{% include product %} インスタンスの他の値を変更するための独自のプラグインを構築する方法の簡単な例を示します。 - -プラグインを更新するたびにデーモンを再起動する必要はありません。デーモンは、プラグインが更新されたことを検出して自動的に再ロードします。 - -プラグインがエラーを生成しても、デーモンがクラッシュすることはありません。プラグインは、再度更新されるまで無効になります(修正した場合も同様に動作するようリクエスト中)。その他のプラグインは引き続き実行され、イベントが処理されます。デーモンは、中断されたプラグインが正常に処理された最後のイベント ID を追跡します。プラグインが更新(および修正)されると、デーモンはプラグインを再ロードし、プラグインが終了した時点からイベントを処理しようとします。すべて正常に実行されると、デーモンは現在のイベントまでのプラグインを捕捉し、すべてのプラグインを通常のものとして使用してイベントを処理し続けます。 - -{% include product %} イベント処理プラグインは、コールバック登録関数と任意の数のコールバックという 2 つの主要な部分で構成されます。 - - -## registerCallbacks 関数 - -フレームワークによってロードするには、プラグインは少なくとも次の関数を実装する必要があります。 - -```python -def registerCallbacks(reg): - pass -``` - -この関数は、イベントを処理するために呼び出す関数をイベント処理システムに通知するために使用されます。 - -この関数は、1 つの引数を取る必要があり、それは [`Registrar`](./event-daemon-api.md#Registrar) オブジェクトです。 - -[`Registrar`](./event-daemon-api.md#Registrar) には非常に重要なメソッドが 1 つあります: [`Registrar.registerCallback`](./event-daemon-api.md#registercallback) - -{% include product %} イベントを処理する必要がある関数ごとに、[`Registrar.registerCallback`](./event-daemon-api.md#registerCallback) を、適切な引数で 1 回ずつ呼び出します。 - -関数は必要な数だけ登録できます。また、ファイル内のすべての関数をイベント処理コールバックとして登録する必要はありません。 - - -## コールバック - -システムに登録されるコールバックは、次の 4 つの引数を取る必要があります。 - -- 追加情報について {% include product %} にクエリーする必要がある場合の {% include product %} 接続インスタンス。 -- レポートに使用する必要がある Python Logger オブジェクト。エラー メッセージと極めて重要なメッセージは、設定された任意のユーザに電子メールで送信されます。 -- 処理する {% include product %} イベント。 -- コールバックの登録時に渡される `args` 値。([`Registrar.registerCallback`](./event-daemon-api.md#wiki-registerCallback) を参照) - -{% include info title="警告" content="プラグインでは必要なすべての処理を実行できますが、例外がフレームワークに戻った場合、問題のあるコールバック(および含まれているすべてのコールバック)が存在するプラグインは、ディスク上のファイルが変更されるまで非アクティブ化されます(読み取り: 修正)。" %} - - -## ログ記録 - -イベント プラグインで print 文を使用することはお勧めしません。Python 標準ライブラリの標準ロギング モジュールを使用することをお勧めします。ロガー オブジェクトは、さまざまな関数に提供されます。 - -```python -def registerCallbacks(reg): - reg.setEmails('root@domain.com', 'tech@domain.com') # Optional - reg.logger.info('Info') - reg.logger.error('Error') # ERROR and above will be sent via email in default config -``` - -および - -```python -def exampleCallback(sg, logger, event, args): - logger.info('Info message') -``` - -イベント フレームワークがデーモンとして実行されている場合、これはファイルに記録されます。それ以外の場合は stdout に記録されます。 - - -## 堅牢なプラグインの構築 - -デーモンは {% include product %} に対してクエリーを実行しますが、find() コマンドが失敗した場合に再試行する機能が組み込まれているため、デーモン自体には一定の堅牢性があります。 - -[https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456](https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456) - -プラグインにネットワーク リソース({% include product %} または他のリソース)が必要な場合は、独自の再試行メカニズムや堅牢性を提供する必要があります。{% include product %} アクセスの場合、デーモンの内容を確認して、プラグインにその機能を提供できるヘルパー関数またはクラスを作成することができます。 - -{% include product %} Python API は既にネットワークの問題に対してあるレベルの再試行を実行できますが、数分間実行される {% include product %} のメンテナンス ウィンドウのタイミングにぶつかったり、ネットワーク障害が発生した場合、これでは十分ではない場合があります。 - -[https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554](https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554) - -プラグインの機能に応じて、イベントの処理中に問題が発生した場合に追跡を続けるために登録することもできます。registerCallback 関数の stopOnError 引数を参照してください。 - -[https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback) - -{% include info title="注" content="プラグインは停止しませんが、失敗した試行は再試行されません。" %} diff --git a/docs/ja/event-daemon/event-daemon-technical-details.md b/docs/ja/event-daemon/event-daemon-technical-details.md deleted file mode 100644 index 45aba96d9..000000000 --- a/docs/ja/event-daemon/event-daemon-technical-details.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: default -title: 技術の詳細 -pagename: event-daemon-technical-details -lang: ja ---- - -# 技術的な概要 - - -## イベント タイプ - -トリガを登録して通知するイベント タイプは、通常、次の `Shotgun_[entity_type]_[New|Change|Retirement|Revival]` 形式を使用します。以下に、この形式の例をいくつか示します。 - - Shotgun_Note_New - Shotgun_Shot_New - Shotgun_Task_Change - Shotgun_CustomEntity06_Change - Shotgun_Playlist_Retirement - Shotgun_Playlist_Revival - -エンティティの記録アクティビティには関連せず、アプリケーション動作のキー ポイントに関連するイベントに対しては、これらの通常の形式とは異なるものが使用されます。 - - CRS_PlaylistShare_Create - CRS_PlaylistShare_Revoke - SG_RV_Session_Validate_Success - Shotgun_Attachment_View - Shotgun_Big_Query - Shotgun_NotesApp_Summary_Email - Shotgun_User_FailedLogin - Shotgun_User_Login - Shotgun_User_Logout - Toolkit_App_Startup - Toolkit_Desktop_ProjectLaunch - Toolkit_Desktop_AppLaunch - Toolkit_Folders_Create - Toolkit_Folders_Delete - -このリストはすべてを網羅しているわけではありませんが、糸口にしてください。{% include product %} サイトのアクティビティやイベントのタイプに関する詳細を確認したい場合は、他のエンティティ タイプの他のグリッド ページのようにフィルタや検索が可能な EventLogEntries のページを参照してください。 - -### サムネイルのイベント ログ エントリ -エンティティの新しいサムネイルをアップロードすると、``` `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", - "old_value": null, "new_value": 11656, - "is_transient": true -} -``` -2. サムネイルが使用できるようになると、```‘is_transient’``` フィールドの値が 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 -} -``` -3. サムネイルをもう一度更新すると、次のような新しいイベント ログ エントリが取得されます。 -``` -{ "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 -} -{ "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. 添付ファイルのサムネイルがプレースホルダのサムネイルである場合、```‘old_value’``` フィールドは null に設定されることに注意してください。 - - - -## プラグインの処理順序 - -各イベントは常に同じ予測可能な順序で処理されるため、プラグインやコールバックが共依存している場合は、処理を支障なく整理することができます。 - -環境設定ファイルで、1 つまたは複数のプラグインの場所を含む `paths` 設定を指定します。リスト内での順番が早い場所ほど、含まれているプラグインが早く処理されます。 - -プラグイン パス上の各プラグインは、アルファベットの昇順で処理されます。 - -{% include info title="注" content="内部処理として、ファイル名がリストに登録されてソートされます。"%} - -最終的に、プラグインによって登録された各コールバックが登録順に呼び出されます。最初に登録されたコールバックが、最初に実行されます。 - -1 つまたは複数のコールバックと同じプラグインで状態を共有する必要がある機能を保持することをお勧めします。 - - -## 状態を共有する - -状態を共有する必要がある複数のコールバックに設定できる多くのオプションがあります。 - -- グローバル変数。これは適切ではありません。使用しないでください。 -- 読み込んだモジュール。状態の情報を保持します。適切ではありませんが、単純なグローバル変数よりは適しています。 -- [`Registrar.registerCallback`](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#registerCallbacks) を呼び出すときに `args` 引数で渡される可変値。設計の状態オブジェクト、または `dict` のような単純な関数。推奨します。 -- オブジェクト インスタンスで `__call__` などのコールバックを使用して、コールバック オブジェクトの初期化時に共有状態オブジェクトをいくつか指定します。最も強力な方法ですが、最も複雑な方法でもあります。上記の args 引数メソッドと比較すると、煩雑になる場合があります。 - - - -## イベント バックログ - -フレームワークの仕様により、すべてのプラグインは、対象のすべてのイベントそれぞれを例外なく 1 回のみ処理します。必ずこのように処理されるように、フレームワークは各プラグインの未処理イベントのバックログを保存し、各プラグインが提供された最後のイベントを記憶します。バックログが発生する可能性のある状況は、以下のとおりです。 - -### イベント ログ エントリ シーケンスのずれによるバックログ - -{% include product %} で発生する各イベント(フィールド更新、エンティティの作成、エンティティの廃棄など)には、そのイベント ログ エントリの一意の ID 番号が割り当てられます。ID 番号シーケンスにずれが生じることがあります。このようなずれは、大規模なデータベース トランザクションが完了していない場合など、さまざまな理由で発生する可能性があります。 - -イベント ログ シーケンスにずれが生じると、「不明」なイベント ID はバックログに記録され、後で処理されます。これにより、イベント デーモンは、時間がかかるデータベース トランザクションの終了後に、このようなイベントを処理できます。 - -トランザクションが失敗した場合やページ設定の変更を元に戻した場合など、イベント ログ シーケンスのずれを埋められない場合もあります。この場合、5 分のタイムアウト後に、イベント ログ エントリの ID 番号の割り当て待機は停止され、バックログから削除され、「バックログのイベント ID 番号のタイムアウト時間が経過しました」というメッセージが表示されます。イベント シーケンスのずれが初めて発生し、既にタイムアウト時間が経過したと判断された場合、「イベント番号は割り当てられません: 無視されます」というメッセージが表示され、そもそもバックログに記録されません。 - -### プラグイン エラーによるバックログ - -通常の操作中、フレームワークは常に各プラグインによって処理された最後のイベントをトラッキングします。何らかの理由でプラグインが処理に失敗した場合、以降のイベントの処理は停止されます。バグの修正などによってプラグインを修正すると、フレームワークは、修正されたプラグインに保存された最後のイベントでイベントの処理を開始します。これにより、修正されたプラグインが、エラーが発生してから修正するまでの過去に発生したイベントなど、すべてのイベントを確実に処理できます。エラーがかなり前に発生した場合は、多くのイベントをやり直す必要があり、修正したプラグインが、正常に機能していた他のプラグインの処理に追い付くまでにしばらく時間がかかる可能性があります。 - -修正したプラグインが遅れを取り戻している間、他のプラグインはこれらのイベントを無視し、同じプラグインで 1 つのイベントが 2 回処理されないようにします。その場合、「イベント X は古いイベントです。最後に処理されたイベントは(Y)です」というメッセージが表示されます。これはデバッグ メッセージです。無視しても問題ありません。 - -このメッセージの表示を回避する正式な方法はありません。フレームワークの仕様により、すべてのプラグインそれぞれは、すべてのイベントを 1 回のみ処理します。ただし、Python とその pickle データ形式に慣れている場合は、デーモンを停止し、Python インタプリタ/インタラクティブ シェルで .id ファイルを開き、pickle モジュールで内容をデコードし、保存されている ID を削除して内容を編集します。このようにして、作成されているバックログを省略できます。この操作はサポートされていないため、ご自身の責任において行ってください。この操作を行う場合は、まず `.id` ファイルを適切にバックアップしてください。 diff --git a/docs/ja/event-daemon/event-daemon.md b/docs/ja/event-daemon/event-daemon.md deleted file mode 100644 index d24b214c9..000000000 --- a/docs/ja/event-daemon/event-daemon.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: default -title: イベント駆動型トリガを記述する -pagename: event-daemon -lang: ja ---- - -# {% include product %} イベント フレームワーク -このソフトウェアは、[Rodeo Fx](http://rodeofx.com) と Oblique のサポートを受けて [Patrick Boucher](http://www.patrickboucher.com) により開発されました。これは現在、[{% include product %}ソフトウェア](http://www.shotgridsoftware.com)の[オープン ソース イニシアチブ](https://github.com/shotgunsoftware)の一部になっています。 - -このソフトウェアは、LICENSE ファイルまたは[オープン ソース イニシアチブ](http://www.opensource.org/licenses/mit-license.php)の Web サイトにある MIT ライセンスの下で提供されます。 - -**目次:** - -- [概要](#overview) -- [フレームワークの利点](#advantage-of-the-framework) -- [イベント駆動型トリガを書き込む](#writing-event-driven-triggers) - - [使用例](#example-use-cases) - - [イベント駆動型トリガの仕組み](#how-event-driven-triggers-work) - - [EventLog のポーリングとトリガの比較](#polling-the-eventLog-versus-triggers) - - [イベント タイプ](#event-types) - - [トランザクションと欠落の可能性があるイベント](#transactions-and-potentially-missing-events) - -## 概要 - -{% include product %} イベント ストリームにアクセスする場合の望ましい方法として、イベント テーブルを監視し、新しいイベントを取得し、イベントを処理して、また同じ手順を繰り返します。 - -このプロセスを成功させるためには多くの要素が必要ですが、それらの中には、適用すべきビジネス ルールに直接関係しないものがあります。 - -フレームワークの役割は、退屈な監視タスクをビジネス ロジックの実装作業から分離することです。 - -フレームワークはサーバ上で動作し、{% include product %} のイベント ストリームを監視するデーモン プロセスです。イベントが見つかったら、デーモンはイベントを一連の登録済みのプラグインに渡します。各プラグインは、意図したとおりにイベントを処理できます。 - -デーモンは次を処理します: - -- 1 つまたは複数の指定したパスからプラグインを登録する。 -- クラッシュするプラグインを非アクティブ化する。 -- プラグインがディスク上で変更された場合に再ロードする。 -- {% include product %} のイベント ストリームを監視する。 -- 最後に処理されたイベント ID とバックログを記憶する。 -- デーモンの起動時に、最後に処理されたイベント ID から開始する。 -- 接続エラーを検出する。 -- 必要に応じて、stdout、ファイル、または電子メールに情報を記録する。 -- コールバックによって使用される {% include product %} への接続を作成する。 -- 登録されたコールバックにイベントを渡す。 - -プラグイン ハンドル: - -- 任意の数のコールバックをフレームワークに登録する。 -- フレームワークによって提供された 1 つのイベントを処理する。 - - -## フレームワークの利点 - -- スクリプトごとに 1 つではなく、すべてのスクリプトに対して単一の監視メカニズムのみを扱います。 -- ネットワークおよびデータベースのロードを最小限に抑えます(多くのイベント処理プラグインにイベントを提供するただ 1 つのモニタ)。 - -# イベント駆動型トリガを書き込む - -**注:** イベント駆動型トリガの詳細については、[https://github.com/shotgunsoftware/shotgunEvents](https://github.com/shotgunsoftware/shotgunEvents) にあるオートデスクのドキュメントを参照してください。 - -{% include product %} は、{% include product %} で行われるすべてのアクションについて[イベント ログ エントリ](https://help.autodesk.com/view/SGSUB/JPN?guid=SG_Administrator_ar_data_management_ar_event_logs_html)を作成します。 これらのイベントは {% include product %} サイトだけでなく、{% include product %} API からも確認できます。 - -{% include product %} にイベントの詳細な履歴が表示されるだけでなく、独自のイベント リスナー スクリプトを作成して EventLog をポーリングし、関心のある特定のイベントに対処することができます。独自のスクリプトでパイプラインの他の内部スクリプトを実行したり、{% include product %} API を使用して {% include product %} の他の情報を更新したりできます。 - -## 使用例 - -イベント駆動型トリガの使用例をいくつか示します。 - -* ショットの「Layout」タスクのステータスが「最終(Final)」としてマークされると、自動的に「Animation」タスクのステータスを「開始の準備完了(Ready to Start)」に設定して、アニメータがショットで作業を開始することを把握できるようにする。 -* 新しいショットが {% include product %} で作成されるたびにファイルシステム上で適切なショット フォルダを作成する。 -* 「保留中(On Hold)」の場合にショットに割り当てるアーティストを通知する。 -* アセットの作成が完了したらフォルダを読み取り専用にする。 -* バージョンが {% include product %} のレビューに追加されたら、関連するバージョン(テイク)の情報をデイリー システムにコピーする。 -* シーンのショットが 25 個になったら、シーンの説明フィールドの 3 番目の文字と同じ文字で始まる任意の引用をツイートする。 - -## イベント駆動型トリガの仕組み - -次に、{% include product %} で生成される EventLogEntries を簡単な図で説明します。スクリプトは API を使用して、指定後に発生したイベントのリストを取得します。次に、各イベント タイプ({% include product %}_Task_Change など)を調べて、イベント駆動の対象であるかを確認します。 - -候補のイベントが見つかると、イベントの詳細をさらに調べます(変更されたフィールドや変更された値など)。このときに API を使用してエンティティの詳細情報を要求することもできます)。 - -イベントがイベント駆動の対象だと判断されると、スクリプトはそのイベントに従い、{% include product %} API、パイプラインの他のコード、またはその両方を使用するかにかかわらず、実行する必要があるコードを実行します。チェックするイベントがなくなると、プロセスを繰り返し、API を使用して先ほどチェックした後に発生したイベントのリストを取得します。 - -![イベント ログのポーリング](./images/dv-writing-event-triggers-event-log-polling-01.png) - -## EventLog のポーリングとトリガの比較 - -{% include product %} はイベント情報を絶えず提供し続けます。ユーザはその情報をすべて確認し、任意のイベントに対してのみ操作を実行できます。これは、{% include product %} 自体でトリガをコントロールするよりも次のような利点があります。 - -* **柔軟性**: トリガ スクリプトは {% include product %} とは関係なく実行することができます。このため、スクリプトは任意の方法で {% include product %} とパイプラインの両方とやり取りできます。何の制約も受けずに任意のルールとアクションを定義します。{% include product %} 側では、指定したイベント トリガについて何も把握する必要はありません。Shotgun に必要なのは、EventLogEntries を生成し続けることです。それ以外のことはすべてユーザが管理します。 -* **リモート**: スクリプトは、{% include product %} サーバにネットワーク アクセスできる任意の場所から実行できます。スクリプトの実行に必要なのは API アクセスだけです。 -* **多様性**: 複数のスクリプトを同時に実行できます。 それぞれの部門でニーズは異なるため、異なるイベントを待機します。すべてのトリガが同じスクリプトから実行されなければならない、というような制限はありません。トリガを個別の論理的スクリプトに分割できる場合もあります。ポーリングのクエリーは非常に軽量であるため、パフォーマンスにはほとんど影響しません。 -* **説明責任**: スクリプトで {% include product %} を変更した場合は、このスクリプトによる変更内容を正確に記録する独自のイベントも生成されます。 - -## イベント タイプ - -すべての内部イベント タイプは、**`Shotgun_[entity_type]_[New|Change|Retirement]`** の形式に従います。例として、`Shotgun_Shot_New` と `Shotgun_Asset_Change` があります。詳細については、[イベント タイプのドキュメント](https://github.com/shotgunsoftware/shotgunEvents/wiki/Technical_Overview#event-types)を参照してください。 - -## トランザクションと欠落の可能性があるイベント - -{% include product %} はトランザクションで破壊的データベース クエリーを実行し、トランザクション終了時に EventLog にのみ書き込みます。 このため、「ID の最大値」メソッドを使用すると、イベントを見落としてしまう可能性があります。ただし、[GitHub サイトのイベント トリガ フレームワーク](https://github.com/shotgunsoftware/shotgunEvents)には、この状況を処理できるコードがあります。 \ No newline at end of file diff --git a/docs/ja/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png b/docs/ja/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png deleted file mode 100644 index c0b8cad4c..000000000 Binary files a/docs/ja/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/create_webhook_button.png b/docs/ja/guides/images/webhooks/create_webhook_button.png deleted file mode 100644 index afd839597..000000000 Binary files a/docs/ja/guides/images/webhooks/create_webhook_button.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/create_webhook_dialog.png b/docs/ja/guides/images/webhooks/create_webhook_dialog.png deleted file mode 100644 index b9ef0fa23..000000000 Binary files a/docs/ja/guides/images/webhooks/create_webhook_dialog.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/delivery_details.png b/docs/ja/guides/images/webhooks/delivery_details.png deleted file mode 100644 index 569eb8f41..000000000 Binary files a/docs/ja/guides/images/webhooks/delivery_details.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/delivery_status.png b/docs/ja/guides/images/webhooks/delivery_status.png deleted file mode 100644 index 9dce1d8e4..000000000 Binary files a/docs/ja/guides/images/webhooks/delivery_status.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/webhook_selected_status.png b/docs/ja/guides/images/webhooks/webhook_selected_status.png deleted file mode 100644 index 7d3de38a2..000000000 Binary files a/docs/ja/guides/images/webhooks/webhook_selected_status.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/webhook_status_active.png b/docs/ja/guides/images/webhooks/webhook_status_active.png deleted file mode 100644 index 7115ba381..000000000 Binary files a/docs/ja/guides/images/webhooks/webhook_status_active.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/webhook_status_disabled.png b/docs/ja/guides/images/webhooks/webhook_status_disabled.png deleted file mode 100644 index 6a3c9c8ed..000000000 Binary files a/docs/ja/guides/images/webhooks/webhook_status_disabled.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/webhook_status_failed.png b/docs/ja/guides/images/webhooks/webhook_status_failed.png deleted file mode 100644 index d22ee39f9..000000000 Binary files a/docs/ja/guides/images/webhooks/webhook_status_failed.png and /dev/null differ diff --git a/docs/ja/guides/images/webhooks/webhook_status_unstable.png b/docs/ja/guides/images/webhooks/webhook_status_unstable.png deleted file mode 100644 index 4acb74217..000000000 Binary files a/docs/ja/guides/images/webhooks/webhook_status_unstable.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations.md b/docs/ja/guides/pipeline-integrations.md deleted file mode 100644 index 9103d5acf..000000000 --- a/docs/ja/guides/pipeline-integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: パイプライン統合 -pagename: toolkit-pipeline-integrations -lang: ja ---- - -# パイプライン統合 - -{% include product %} のパイプライン統合により、アーティストは {% include product %} データを使用できるようになります。一般的なコンテンツ作成ソフトウェア内のカスタマイズ可能な UI を使用すれば、アーティストは自分のタスクに関する情報の表示、ノートの参照や追加、およびチームメンバーとのファイルの共有を設定なしで行うことができます。パイプライン統合は {% include product %} Toolkit プラットフォーム上に構築されます。開発者は Toolkit API を使用して機能を拡張したり、カスタム Toolkit アプリを作成したりできます。 - -このセクションでは、{% include product %} パイプラインの管理作業を開始するときに役立つ学習資料について説明します。パイプラインの設定とプロダクション ファイル システムの管理に関するガイド、基本的な vfx パイプラインの構築に関するチュートリアル、および独自のパイプライン ツールを作成するためのリソースが示されています。 diff --git a/docs/ja/guides/pipeline-integrations/administration.md b/docs/ja/guides/pipeline-integrations/administration.md deleted file mode 100644 index 7dbe33d65..000000000 --- a/docs/ja/guides/pipeline-integrations/administration.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 管理 -pagename: toolkit-administration -lang: ja ---- - -# 管理 - -{% include product %} のパイプライン統合により、幅広いカスタマイズ オプションが提供されます。スタジオが必要とするパイプラインを稼働させるには、設定を行い、コマンドライン ツールを実行し、スタジオ環境で {% include product %} ツールが動作することを確認する必要があります。 - -このセクションには、スタジオの {% include product %} Toolkit パイプラインの管理に関する情報が記載されています。 diff --git a/docs/ja/guides/pipeline-integrations/administration/advanced-toolkit-administration.md b/docs/ja/guides/pipeline-integrations/administration/advanced-toolkit-administration.md deleted file mode 100644 index 67e88584c..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/advanced-toolkit-administration.md +++ /dev/null @@ -1,1525 +0,0 @@ ---- -layout: default -title: 高度な Toolkit 管理 -pagename: advanced-toolkit-administration -lang: ja ---- - -# 高度な Toolkit 管理 - -ここでは、高度な設定用に Toolkit を管理および設定する方法について紹介します。 - -このトピックの内容: -- [はじめに](#introduction) -- [Tank コマンドを使用する](#using-the-tank-command) - - [デバッグ モードで実行する](#running-in-debug-mode) - - [Tookit API を使用して Tank コマンドを実行する](#running-tank-commands-via-the-tookit-api) - - [役に立つ Tank コマンド](#useful-tank-commands) - - [setup_project](#setup_project) - - [core](#core) - - [configurations](#configurations) - - [updates](#updates) - - [install_app, install_engine](#install_app-install_engine) - - [app_info](#app_info) - - [folders, preview_folders](#folders-preview_folders) - - [shell](#shell) - - [dump_config](#dump_config) - [高度な Tank コマンド](#advanced-tank-commands) -- [Toolkit Python API](#the-toolkit-python-api) -- [パイプライン設定とサンドボックス](#pipeline-configurations-and-sandboxes) - - [サンドボックス用に Tank コマンドを実行する](#running-the-tank-command-for-a-sandbox) - - [サンドボックスの Core API を使用する](#using-the-core-api-from-a-sandbox) - - [サンドボックスにアクセスする](#accessing-a-sandbox) - - [パイプライン設定をローカライズする](#localizing-a-pipeline-configuration) - - [クローン作成した環境設定を削除する](#deleting-a-cloned-configuration) -- [更新を確認する](#checking-for-updates) - - [ステージング サンドボックスを作成する](#creating-a-staging-sandbox) -- [アプリの起動方法を設定する](#configuring-how-apps-are-launched) -- [ディスク上にフォルダを作成する](#creating-folders-on-disk) - - [ファイル システムの場所](#filesystem-locations) - - [Toolkit のフォルダの名前を変更する](#renaming-toolkit-folders) - - [遅延作成とユーザ サンドボックス](#deferred-creation-and-user-sandboxes) -- [テンプレートを設定する](#configuring-templates) - - [テンプレート ファイルの @include 構文](#include-syntax-in-the-template-file) - - [テンプレート ファイルに外部ファイルを含める](#including-external-files-in-your-template-file) - - [フォルダ作成とテンプレート](#folder-creation-and-templates) -- [フック](#hooks) - - [アプリ レベル フック](#app-level-hooks) - - [コア レベル フック](#core-level-hooks) - - [スタジオ レベル フック](#studio-level-hooks) - - [プロジェクト名フック](#project-name-hook) - - [接続フック](#connection-hook) -- [アプリとエンジンを設定する](#configuring-apps-and-engines) - - [アプリごとの場所の設定](#each-app-has-a-location-setting) - - [ファイルをインクルードする](#including-files) - - [テンプレート設定(ファイル パス)を設定する](#configuring-template-settings---file-paths) - - [フックを使用してアプリの動作をカスタマイズする](#using-hooks-to-customize-app-behaviour) - - - - -# はじめに - -{% include product %} Toolkit 管理者ガイドへようこそ。このドキュメントでは、管理者から見た {% include product %} Pipeline Toolkit との連携方法、アプリのインストールと更新、新しいプロジェクトのセットアップ、スタジオ設定の管理について説明します。Toolkit はある程度技術的であるため、設定と管理の担当者はシステム管理者、パイプラインやツールの開発者、または TD である必要があります。詳細を説明する前に、以下のドキュメントをまだ確認していない場合は先に確認することをお勧めします。数多くの基本的なコンセプトと、設定管理と更新の概要について説明されています。 - -[ Pipeline Toolkit の基本的なコンセプトの概要{% include product %}](https://developer.shotgridsoftware.com/ja/e95205a8/) - -{% include product %} Toolkit をまだセットアップしていない場合は、『[統合ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/)』を参照してください。 - -# Tank コマンドを使用する - -{% include product %} Toolkit を管理して Toolkit を一般的に使用する場合は、`tank` コマンドを使用することになります。`tank` コマンドを使用すると、コマンド シェルから管理コマンドと実際のアプリの両方をすばやく簡単に実行できます。 - -既定では、新しいプロジェクトごとに独自の Core API とその独自の `tank` コマンドを作成します。プロジェクト設定の場所に移動して `tank` コマンドを実行すると、このプロジェクトに適用可能なすべてのコマンドが表示されます。 - -``` -cd /mnt/software/{% include product %}/big_buck_bunny -./tank -``` -Tank コマンドはさまざまな方法で使用することができます。基本的な考え方としては、まず動作させる場所を Tank コマンドに指示し、次に実行する内容を指示します。 実行する内容を指示しない場合は、利用可能なすべてのコマンドのリストが表示されます。 動作させる場所を指示しない場合は、現在のディレクトリが使用されます。 また、Tank コマンドを使用すると、{% include product %} で項目をリスト表示することもできます。 - -Tank コマンドの使用方法の基本的な概要を次に示します。 - -```python -# Show all tank commands for an asset named 'piano' -> tank Asset piano - -# We can also list all assets containing the phrase 'pi' -> tank Asset pi - -# We can execute the built-in folder creation command for -# the piano -> tank Asset piano folders - -# If the application launcher app is installed, we can launch maya -# and set the work area to the piano -> tank Asset piano launch_maya - -# Alternatively, we can specify a path on disk instead of a {% include product %} entity -> tank /mnt/projects/hero/assets/piano launch_maya - -# Or we can change our work directory and run tank like this -> cd /mnt/projects/hero/assets/piano launch_maya -> tank launch_maya -``` -## デバッグ モードで実行する - -内部で何が起こっているかを確認すると役立つことがあります。`tank` コマンドに `--debug` フラグを渡すと、詳細な出力とタイミング設定が有効になるため、問題を簡単にトラックしたり、予想外の動作の理由を把握したりできます。 - -## Tookit API を使用して Tank コマンドを実行する - -ほとんどの Tank コマンドの実行も API を使用して完全にサポートされています。このため、幅広いスクリプト作成ワークフローの一部として、Toolkit に関連するメンテナンス操作を簡単に実行できます。この詳細については、「[Core API リファレンス](https://developer.shotgridsoftware.com/tk-core/)」を参照してください。 - -## 役に立つ Tank コマンド - -次に、{% include product %} Toolkit の管理に役立つ Tank コマンドの簡単なリストを示します。 - -### setup_project - -{% include product %} Desktop にあるセットアップ プロジェクト ウィザードのコマンド ライン バージョンです。{% include product %} Toolkit を使用して新しいプロジェクトを設定します。{% include product %} 内にプロジェクトがあり、このプロジェクトを拡張して Toolkit を使用する場合は、ここから開始します。コマンドに従ってプロセスを進めると、使用する設定やセットアップするプロジェクトなど、さまざまな情報の入力が求められます。 - -**同一プロジェクトで setup_project を再実行する** - -既定では、setup_project はまだセットアップされていないプロジェクトのみを表示します。ただし、多くの場合、特にテスト中は同一プロジェクトで setup_project を再実行する必要があります。このためには、以前にセットアップされているプロジェクトを特定するメモを使用して、すべてのプロジェクトを表示する --force フラグを指定します。 - -```python -> tank setup_project --force - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -- Running setup_project... - -force mode: Projects already set up with Toolkit can be set up again. - -Welcome to SGTK Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - big_buck_bunny: '/mnt/software/sgtk/big_buck_bunny' - ghosts: '/mnt/software/sgtk/ghosts' - chasing_perfection: '/mnt/software/sgtk/chasing_perfection' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can just enter the -path to this config it will be used for the new project. - -[tk-config-default]: -Downloading Config tk-config-default v0.4.15 from the App Store... - -This is the 'Default Config' config. - -Below are all active projects, including ones that have been set up: --------------------------------------------------------------------- - -[ 4] Demo Project - Fubar is an epic story of an on-going political wa... - -[ 5] Big Buck Bunny -Note: This project has already been set up. - A killer bunny movie - -[ 6] The Ghosts of Pere Lachaise -Note: This project has already been set up. - De Films en Aiguille and ChezEddy present this year... - -[ 7] Chasing Perfection -Note: This project has already been set up. - You've seen the car commercials, the car races, and... - -[ 8] What Happened to My Headphones? - The Ryan Mayeda story - -Please type in the id of the project to connect to or ENTER to exit: -``` - -Toolkit は、プロジェクト セットアップ プロセスの一部としてプロジェクト名を提案します。その名前に問題がない場合は、[Enter]キーを押して続行するか、手動で別の名前を入力できます。 - -プロジェクト用に特別な独自の命名規則がある場合は、セットアップ プロジェクト プロセスで提案される既定値を制御することもできます。それには高度なスタジオ レベルのフックを使用します。本ドキュメントのスタジオ レベルのフック セクションを参照してください。 - -### core - -Core API の更新をチェックします。アプリ ストアに接続し、最新バージョンの Core API が利用可能かどうかを確認します。利用可能な場合、更新するかどうかを尋ねられます。 - -このコマンドの出力例: - -```python -> tank core - -Welcome to Sgtk! -Starting Sgtk for your current directory '/private/tmp' -- Running core... - -WARNING: You are potentially about to update the Core API for multiple -projects. - -Welcome to the Sgtk update checker! -This script will check if the Sgtk Core API -installed in /mnt/software/sgtk/studio -is up to date. - -You are currently running version v0.13.22 of the Sgtk Platform -No need to update the Sgtk Core API at this time! -``` - -### configurations - -プロジェクトの全環境設定の概要を表示します。プロジェクトの現在のアクティビティの概要を取得する場合に便利です。 - -このコマンドの出力例: - -```python -> tank Project Bunny configurations - -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Project Big Buck Bunny -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Big Buck Bunny. -- Running configurations... - -Fetching data from {% include product %}... - -====================================================================== -Available Configurations for Project 'Big Buck Bunny' -====================================================================== - -Configuration 'Primary' (Public) -------------------------------------------------------- - -This is the Project Master Configuration. It will be used whenever this -project is accessed from a studio level sgtk command or API constructor. - -Linux Location: /mnt/software/sgtk/big_buck_bunny -Winows Location: z:\mnt\software\sgtk\big_buck_bunny -Mac Location: /mnt/software/sgtk/big_buck_bunny - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank localize - -If you want to check for app or engine updates, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank updates - -If you want to change the location of this configuration, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank move_configuration - -This is a public configuration. In {% include product %}, the actions defined in this -configuration will be on all users' menus. - -Configuration 'Dev Area' (Private) -------------------------------------------------------- - -Linux Location: /Users/manne/sgtk_dev -Winows Location: z:\Users\manne\sgtk_dev -Mac Location: /Users/manne/sgtk_dev - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /Users/manne/sgtk_dev/tank localize - -If you want to check for app or engine updates, you can run: -> /Users/manne/sgtk_dev/tank updates - -If you want to change the location of this configuration, you can run: -> /Users/manne/sgtk_dev/tank move_configuration - -This is a private configuration. In {% include product %}, only Admin 3 will see the actions -defined in this config. If you want to add additional members to this -configuration, navigate to the SG Pipeline Configuration Page and add -them to the Users field. -``` - -### updates - -このコマンドはプロジェクトに関連付けられているすべての環境を表示し、最新バージョンのアプリやエンジンが利用可能かどうかを確認します。アプリとエンジンのインストール方法に応じて異なりますが、ローカルの git リポジトリ、Github、または {% include product %} Toolkit アプリ ストアが確認されます。最新バージョンが検出された場合は、セットアップを更新するかどうかが尋ねられます。新しい設定パラメータが最新バージョンのアプリで導入されている場合は、値についてプロンプトが表示されることがあります。 - -一般的な構文: - -``` -> 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` -- Loader アプリが常に最新の状態を維持するようにする: `tank updates ALL ALL tk-multi-loader` -- Loader アプリが Maya で最新の状態を維持するようにする: `tank updates ALL tk-maya tk-multi-loader` - -### install_app、install_engine - -プロジェクトに関連付けられた環境の 1 つに新しいエンジンまたはアプリをインストールします。このコマンドを使用すると、Toolkit アプリまたは git のいずれかからインストールできます。 - -### app_info - -すべてのアプリとその主な環境設定の概要が表示されます。 - -### folders、preview_folders - -ディスク上で項目のフォルダを作成します。 - -このコマンドの出力例 - -```python -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Asset Squirrel (Project 'Big Buck Bunny') -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Asset Squirrel. -- Running folders... - -Creating folders, stand by... - -The following items were processed: - - /mnt/projects/big_buck_bunny - - /mnt/projects/big_buck_bunny/reference - - /mnt/projects/big_buck_bunny/reference/artwork - - /mnt/projects/big_buck_bunny/reference/footage - - /mnt/projects/big_buck_bunny/sequences - - /mnt/projects/big_buck_bunny/assets - - /mnt/projects/big_buck_bunny/assets/Character - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/sgtk_overrides.yml - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop/snapshots - -In total, 93 folders were processed. -``` -### shell - -現在選択しているコンテキストでインタラクティブな Python シェルを開始します。初期化済み API、コンテキスト、エンジン オブジェクトに関する便利なリファレンスをセットアップします。`./tank shell` を使用すると、Toolkit と {% include product %} API のコード例を試してみることができます。Tank の実行可能ファイルはローカル マシン上の**パイプライン設定ルート**に格納されており、次のようなコードになります。 - -``` -> cd /my_tank_configs/project_foobar -``` - -このコマンドの出力例: - -```python -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -You are running a tank command associated with {% include product %} Project 'Chasing the -Light'. Only items associated with this project will be considered. -- Found Shot moo87 (Project 'Chasing the Light') -- Starting the SG pipeline toolkit v0.15.14. -- Setting the Context to Shot moo87. -- Started Shell Engine version v0.3.3 -- Environment: /mnt/software/tank/chasing_the_light/config/env/shot.yml. -- Running shell... - -Welcome to SG Pipeline Toolkit Python! -2.7.1 (r271:86832, Jul 31 2011, 19:30:53) -[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -Running on darwin - -- A tk API handle is available via the tk variable -- A Shotgun API handle is available via the Shotgun variable -- Your current context is stored in the context variable -- The shell engine can be accessed via the engine variable ->>> ->>> tk - ->>> ->>> context - ->>> ->>> Shotgun - ->>> ->>> engine - ->>> -``` - -上記の例では、`./tank` は Python シェルを開始し、必要に応じていくつかの変数をセットアップしています。このため、上記変数にこのようなハンドルとコンテキストを指定すると、認証とユーザ セッションのセットアップや {% include product %} サイトへの接続の開始など、基本的な作業が省略されます。 - -- 変数 `tk` には [Toolkit API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#the-toolkit-core-api) にアクセスできるハンドルがあります。 -- 変数 `{% include product %}` には、サイトに既に接続され、[{% include product %} サイト]のデータベースや他の項目をクエリーする準備が完了した [{% include product %} API](https://developer.shotgridsoftware.com/python-api/) のハンドルがあります。 -- コンテキスト変数は現在のコンテキスト(プロジェクト、ショット、アセット、パイプライン ステップ、ユーザなど)を読み込みます。アクティブなコンテキストの例については、[こちら](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#sgtk.Context)を参照してください。この例では、コンテキスト インスタンスを使用して現在のコンテキストを定義する主なフィールド セットを収集します。コンテキストは現在の作業領域として参照することがあります。通常、これは誰かが作業している現在のショットまたはアセットになります。この例で、プロジェクトは「Chasing the Light」、ID は 1184、ショットは「moo87」です。割り当てられたパイプライン ステップやタスクはありませんが、ユーザは Manne です。Toolkit API のスクリプトを作成する場合にこの情報が必要になる場合がありますが、すべての情報はこの便利なコンテキスト変数から入手できます。 - -```python - -``` - -変数 `engine` は、現在動作中の[シェル エンジン](https://developer.shotgridsoftware.com/ja/2ad59ee8/)のインスタンスを指しています。 - -### dump_config - -Core `v0.18` で利用可能です。 - -既存の環境設定を `STDOUT` または別のファイルにダンプします。環境設定の完全表現または簡易表現をダンプする機能があります。完全表現にはすべての設定の既定値が含まれ、簡易表現には設定の既定値とは異なる値のみが含まれます。既定では、コマンドの出力には、既定値を見つけた場所のマニフェストと設定とは異なる既定値を記録する各設定のコメントが含まれます。このコマンドは、安全対策として既存のファイルへの環境設定のダンプを許可していません。 - -使用方法: - -``` -./tank dump_config env_name [--sparse | --full] [--no_debug-comments] [--file=/path/to/output/file.yml] -``` - -このコマンドの出力例: - -```python -> ./tank dump_config shot_step --sparse --file=/tmp/shot_step.yml - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -Starting toolkit for path '/Shotgun/configs/sparse34913' -- The path is not associated with any SG object. -- Falling back on default project settings. -- Running as user 'Toolkit' -- Using configuration 'Primary' and Core HEAD -- Setting the Context to sparse34913. -- Running command dump_config... - ----------------------------------------------------------------------- -Command: Dump config ----------------------------------------------------------------------- - -Dumping config... -``` - -上記のコマンドを実行すると、`/tmp/shot_step.yml` に現在のプロジェクトの環境ファイル `shot_step` の簡易表現のコピーが書き込まれます。 - -追加のデバッグ コメントを除外するには、`--no_debug_comments` フラグを使用します。 - -### 高度な Tank コマンド - -次に、{% include product %} Toolkit の管理に使用できる高度な Tank コマンドの簡単なリストを示します。 - -- `tank share_core`: 新しいプロジェクトを作成すると、多くの場合、各プロジェクトで Core API のコピーを独自に管理するように新しいプロジェクトが作成されます。このコマンドを使用すると、このようなプロジェクトの Core API を取り込み、ディスク上の別の場所に移動することができます。これにより、複数のプロジェクトで Core API の 1 つのコピーが共有されるように共有コアを作成できます。 - -- `tank attach_to_core`: 新しいプロジェクトを作成すると、多くの場合、各プロジェクトで Core API のコピーを独自に管理するように新しいプロジェクトが作成されます。このコマンドを使用すると、独自の組み込みバージョンの Core API を維持するのではなく、既存の Core API インストールに設定を追加できます。 - -- `tank localize`: このコマンドは、特定のパイプライン設定の場所に Core API をダウンロードします。これは、Toolkit のステージング領域内で新しいバージョンの Core API をテストする場合に役立ちます。このプロセスの詳細はこの文書の後半で説明します。 - -- `tank clear_cache`: Toolkit の一部のキャッシュをクリアします。これは、メニュー項目が何らかの理由で {% include product %} 内に表示されない場合に役立ちます。 - -- `tank validate`: プロジェクト設定を検証します - -- `tank cache_apps`: 必要なすべてのアプリ、エンジン、およびフレームワークのバージョンがディスク上に保存されていることを確認します。 - -- `tank switch_app`: 開発に役立ちます。アプリ ストア モードからローカル モードや git モードにアプリを切り替えたり、またはその逆の切り替えを行います。 - -- `tank push_configuration`: 現在のパイプライン設定に含まれる環境設定を別のパイプライン設定に送信します。 - -# Toolkit Python API - -{% include product %} Desktop、`tank` コマンド、または {% include product %} を使用してアプリケーションを起動する場合、Toolkit は `PYTHONPATH` に自動的に追加されて、初期化されます。Toolkit API を手動で取得して実行する場合に役立つことがあります。このためには、Toolkit Core API を Python パスに追加して読み込みます。 - -各プロジェクト設定の `project_config_root/install/core/python` 内に `python` フォルダがあります。この場所を Python パスに追加するだけで `sgtk` API を読み込むことができます。 - -```python -import sgtk - -# create a Sgtk API object for a {% include product %} entity -tk = sgtk.sgtk_from_entity("Shot", 123) - -# Create a Sgtk API object based on a file system location -tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair") -``` - -# パイプライン設定とサンドボックス - -パイプライン設定の基本構造はスタジオのインストールと同じです。最も重要なのは、`tank` コマンドと `install/core/python` 内の Toolkit API の両方が含まれることです。API と Tank コマンドが各設定で複製される理由は、プロダクション環境以外で開発と作業を簡単に行うことができるようにするためです。 - -新しいプロジェクトを {% include product %} Toolkit でセットアップすると、プロジェクトの***プライマリ パイプライン設定***が作成されます。これは常に「プライマリ」と呼ばれ、プロジェクトの主要な設定を表します。プロジェクトのパイプライン設定エンティティの形式で {% include product %} 内に表示される環境設定を確認できます。開発時や環境設定の変更を行う場合、通常はプライマリ環境設定で作業は行いません。何かを偶然壊した場合、そのプロジェクトで作業するすべてのユーザが影響を受けるからです。代わりに、{% include product %} 内の環境設定の「クローン」を作成できます。これで、独自の並列設定を使用して、他のユーザに影響を与えずに変更を加えることができます。 - -## サンドボックス用に Tank コマンドを実行する - -スタジオ レベルの `tank` コマンドを使用してアプリを実行する場合は、プロジェクトに対して常にプライマリ環境設定が使用されます。そのため、`tank Shot ABC123 launch_maya` と入力するだけで、{% include product %} Toolkit はこのショット ABC123 が属するプロジェクトを探し、そのプライマリ パイプライン設定を見つけ、Maya の起動時にその設定が使用されます。あるいは、開発サンドボックスで実験的な設定を使用する必要がある場合は、Maya を起動するために開発サンドボックス内で特定の Tank コマンド(`~/sgtk_dev_sandbox/tank Shot ABC123 launch_maya`)を使用します。Toolkit はプロジェクトのプライマリ環境設定の代わりに開発サンドボックスで実験的な設定を使用できるようになります。 - -## サンドボックスの Core API を使用する - -同様に、スタジオのインストール場所ではなく、パイプライン設定内から Toolkit API を実行する場合は、スタジオの Python API ではなく、`PYTHONPATH` に開発サンドボックスを追加できます。 - -## サンドボックスにアクセスする - -{% include product %} 内ではさらに簡単です。プロジェクトの各パイプライン設定にはこの設定を表示できるユーザのリストがあります。このフィールドを空のままにすると、すべてのユーザにこの設定が表示されます。 - -![](images/advanced-toolkit-administration/sg_work_area.png) - -環境設定のクローンを作成すると({% include product %} で右クリックして実行)、この設定と自動的に関連付けられるため、実質的に、この設定は作成者にのみ表示されるようになります。Maya で新しいツールを開発し、アーティストにこのツールをテストしてもらう場合は、パイプライン設定の開発サンドボックスにアーティストを追加するだけで、アーティストがサンドボックスから Maya を起動し、拡張ツールで作業にアクセスできるようになります。 - -## パイプライン設定をローカライズする - -既定では、パイプライン設定はそのコードを、インストールした {% include product %} Toolkit Studio から選択します。Toolkit Studio のインストールには、{% include product %} Toolkit が使用しているすべてのアプリとエンジンのコードのキャッシュと、Toolkit Core API インストールが含まれます。各パイプライン設定は、スタジオの場所にある Core API とアプリ キャッシュを共有します。これは、すべてのプロジェクトに Core API を同時に適用することができるため便利です。スタジオの場所を更新するだけで、すべてのプロジェクトに反映されます。 - -ただし、パイプライン設定を中断して独立できるようにする際に役立つ場合があります。次にその例を示します。 - -- もうすぐ完了するプロジェクトがあり、更新を中断して何も変更されないようにする場合。 -- パイプライン設定があり、そこで新しいバージョンの Toolkit Core API をテストする場合。 -- 自宅で作業する場合に使用する Toolkit 最小バンドルを組み立てる場合。 - -スタジオ インストールから完全に独立したパイプライン設定を作成するこのプロセスは設定の***ローカライズ***と呼ばれ、基本的には Core API をパイプライン設定にコピーすることを意味します。それには `tank localize` コマンドを実行します。 - -設定をローカライズすると、必然的にスタジオの Tank コマンドを実行できなくなります。基本的に、プロジェクトがローカライズされると、そのローカルにある Tank コマンドと Python API を使用する必要があります。 - -## クローン作成した環境設定を削除する - -クローン作成した環境設定または開発領域がこれ以上必要ない場合は、レコードを削除して、ディスクから削除するだけです。 - -# 更新を確認する - -アプリやエンジンの更新の確認は簡単です。プロジェクトで `tank updates` コマンドを実行するだけです。{% include product %} Toolkit により更新がチェックされ、更新するかどうかが確認されます。既定値が設定されていない新しいパラメータがある場合、更新スクリプトが値の入力を求めるプロンプトを表示します。変更内容の詳細を確認する場合のために、各更新にはリリース ノート ページへの URL リンクが表示されます。このプロセスはいつでも終了できます。 - -Toolkit Core API の更新は同じくらい簡単です。`tank core` コマンドを実行するだけです。 - -## ステージング サンドボックスを作成する - -プライマリ環境設定で `tank updates` を実行するだけならほとんど問題ありませんが、この環境設定をプロダクション環境に適用する前にテストした方がよい場合があります。この場合、単純にプライマリ パイプライン設定のクローンを作成し、ここで更新コマンドを実行します。Core API をアップグレードする場合、`core` コマンドを実行する前にサンドボックスをローカライズしているかを確認します(ローカライズの詳細については上記を参照)。更新の動作を確認したら、プライマリ環境設定で更新を再び実行します。この方法の詳細については、「[設定を管理する](https://developer.shotgridsoftware.com/ja/60762324/)」を参照してください。 - -# アプリの起動方法を設定する - -インストール直後に設定する必要のある Toolkit 設定の一部にアプリの起動設定があります。これはスタジオが既にカスタマイズしてツールを展開していることの多い領域であるため、柔軟にカスタマイズできるようにしました。 - -{% include product %} 内からまたは Tank コマンドを使用してアプリケーション(Maya や Nuke など)を起動する場合は、アプリケーションの起動と Toolkit の初期化を管理するアプリを実行します。このアプリは、`tk-multi-launchapp`と呼ばれます。 - -Toolkit のスターター設定のいずれかを使用して新しいプロジェクトをセットアップする場合は、起動アプリケーションで使用するアプリケーション パスの変更方法に関する手順が表示されます。別のシステムが導入され、同様に機能している場合は、このアプリを使用する必要はありません。通常、ランチャー アプリケーションは次の手順を実行します。 - -1. 使用するコンテキストを特定します。コンテキストは現在の作業領域を表します。{% include product %} 内のタスク、アセット、またはショットを右クリックすると、クリック対象に基づいてコンテキストが作成されます。Tank コマンドを使用している場合は、コマンド ラインの一部として指定するか、現在のディレクトリから選択します。 - -2. 次に、アプリケーションの環境設定に基づいてアプリケーションが起動されます。起動アプリケーションは、アプリケーションへのパス、渡すコマンド ライン引数、アプリケーションの起動前に設定する必要があるアプリケーションと環境変数を実行する実際のコードなど、複数の方法で設定できます。 - -3. 後で Toolkit API が初期化されるように PYTHONPATH が設定されます。 - -4. アプリケーションを起動すると、Toolkit API が読み込まれて初期化されます。 - -5. 最後にエンジンが起動します。 - -**例: {% include product %} Toolkit の起動方法の詳細なサンプル** - -Toolkit の通常のブートストラップはいくつかのフェーズで発生します。 - -- メインのホスト アプリケーションが起動します。これには Python インタプリタが含まれます。最も単純なものとして、標準シェルで実行される CPython インタプリタがあります。また、Maya や Nuke または Python インタプリタが組み込まれたアプリもあります。 - -- Toolkit Core API が `PYTHONPATH` に追加されて読み込まれます(`import sgtk`)。 - -- ここで、コンテキストを特定する必要があります。これにはディスク上のパスまたは {% include product %} オブジェクトを指定できます。ファクトリ メソッド `tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair01/lighting")` を使用して Toolkit API インスタンスを作成できるようになりました。または、{% include product %} エンティティ `tk = sgtk.sgtk_from_entity("Shot", 123)` を使用できます。エンティティを使用する場合、上記のコードは {% include product %} に接続し、このショットのパイプライン設定を解決して、ディスク上のパイプライン設定を特定し、ファイル システム テンプレートなどの Sgtk の基本設定をロードします。この時点でロードされるアプリまたはエンジンはありません。パスを参照する場合、ファイル システムを使用してパイプライン設定を特定します。 - -- ここで、現在の作業領域を表すコンテキスト オブジェクトを作成します。これにはエンティティ `ctx = tk.context_from_entity("Shot", 123)` またはパス `ctx = tk.context_from_path("/mnt/projects/hero/assets/chair01/lighting")` を使用します。 - -- 最後にエンジンを起動します。Maya を起動していると仮定した場合、Maya の Python インタプリタでこのコマンドを実行すると、`sgtk.platform.start_engine('tk-maya', tk, ctx)` のようになります。これにより、次の操作を実行します。 - - - コンテキストの選択環境フックを実行します。選択環境フックは使用する環境設定を返します。環境設定には、ロードするすべてのアプリのリストとその設定値が含まれます。 - - - 環境ファイルが決定されると、エンジンがメモリにロードされます。これにより、エンジン ベースのオブジェクトが自動的にロードされ、その初期化メソッドが実行されます。エンジンがロードされると、すべてのアプリが同じ方法でロードされます。通常、この一環として、エンジンはアプリケーション内に「{% include product %}」メニューを登録し、各アプリは一連のコマンドをエンジンに登録します。このコマンドは後で実行する際のエントリ ポイントになります。ユーザが {% include product %} メニューのどれかをクリックすると、アプリの実行がトリガされます。 - -完全なサンプルでは次のような行が含まれます。 - -```python -# starting up sgtk when your context is based on a path -import sgtk -path = "/mnt/projects/hero/assets/chair01/lighting" -# create a sgtk api handle -tk = sgtk.sgtk_from_path(path) -# create a context object -ctx = tk.context_from_path(path) -# start the tank engine -sgtk.platform.start_engine('tk-maya', tk, ctx) - -# starting up sgtk when your context is based on a {% include product %} object -import sgtk -entity_type = "Shot" -entity_id = 123 -# create a sgtk api handle -tk = sgtk.sgtk_from_entity(entity_type, entity_id) -# create a context object -ctx = tk.context_from_entity(entity_type, entity_id) -# start the sgtk engine -sgtk.platform.start_engine('tk-maya', tk, ctx) -``` - -# ディスク上にフォルダを作成する - -Toolkit 設定の主な要素の 1 つにファイル システム設定があります。{% include product %} Toolkit は一貫した方法でディスク上にフォルダを作成することができ、作成プロセスは {% include product %} によって決定されます。次に、設定内のコア フォルダの概要を示します。 - -![](images/advanced-toolkit-administration/file_system_config.png) - -フォルダ設定のセットアップは比較的簡単です。この設定の基本は、フォルダがアセットやショットなどを表すことを示すいくつかの設定ファイルを使用して作成する、テンプレート フォルダ構造です。ファイル システム構造を設定する場合、***フォルダ プレビュー***機能を使用すると、作成内容のリストを確認できます。このコマンドは {% include product %} と Tank コマンドの両方で使用できます。 - -最初に標準フォルダを使用するスキャフォールディングを定義します。アセット、ショット、またはパイプラインの手順などを表現する動的フォルダがスキャフォールディングにある程度作成されている場合、この時点では無視します。結果に問題がなければ、各動的フォルダに動的機能を段階的に追加します。このためには、各フォルダと同じ名前の yml ファイルを追加します。 - -yml ファイル内で、特殊な構文を使用してフォルダの作成方法を定義します。{% include product %} Toolkit は幅広い動的な動作を数多くサポートしますが、通常の動作は {% include product %} エンティティを表す動的ノードです。この場合、設定ファイルは次のようになります。 - -```python -# the type of dynamic content -type: "Shotgun_entity" - -# the Shotgun field to use for the folder name -name: "{code}_{sg_prefix}" - -# the Shotgun entity type to connect to -entity_type: "Asset" - -# Shotgun filters to apply when getting the list of items -# this should be a list of dicts, each dict containing -# three fields: path, relation and values -# (this is std Shotgun API syntax) -# any values starting with $ are resolved into path objects -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -``` - -これは、動的フォルダでアセット エンティティの 2 つの {% include product %} フィールドを使用する名前のフォルダを作成する必要があることを示します。標準的な {% include product %} API クエリー構文を使用することで、制限事項の定義も親フォルダに基づいて行われます。考慮する必要があるのは、現在のプロジェクトのアセットとアセット タイプのみです。 - -サポート対象のノード タイプの完全なリファレンスについては、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/ja/82ff76f7/)を参照してください。 - -## ファイル システムの場所 - -Toolkit フォルダ作成システムを使用してディスク上にフォルダを作成した場合、このフォルダは {% include product %} 内で保存およびトラックされます。フォルダは、管理者メニューの下にある、{% include product %} の**[ファイルシステムの場所] (Filesystem Location)**エンティティとして表示されます。通常このデータは Toolkit によってシーンの背後でトラックされるため、ユーザは何も確認する必要がありません。この[ファイルシステムの場所] (Filesystem Location)エンティティはディスク上のフォルダを同期およびトラックするために Toolkit によって使用され、このエンティティを使用すると、最初にフォルダ作成を実行して作成したときと同じようにディスク上にフォルダ構造を再作成できます。[ファイルシステムの場所] (Filesystem Location)エンティティ データは、ディスク上の特定のパスに関連付けられた {% include product %} エンティティを特定する場合に主に使用されます。 - -パフォーマンス上の理由から、[ファイルシステムの場所] (Filesystem Location)テーブルの内容はユーザのローカル マシン上にキャッシュ化されます。これはフォルダ/エンティティの参照スピードを上げるためです。エキスパート ユーザの場合は、`cache_location` コア フックを変更してこのキャッシュの場所をカスタマイズできます。キャッシュ化されたローカル フォルダ表現は、ディスク上へのフォルダ作成時とアプリケーションの起動時に同期されます。 - -## Toolkit のフォルダの名前を変更する - -Toolkit のフォルダ作成を実行すると、{% include product %} のエンティティとディスク上のフォルダ間の接続が確立されます。Toolkit はそのフォルダ スキーマ設定を使用して、ディスク上に一連のフォルダを生成します。各フォルダは {% include product %} に `Filesystem Location` エンティティとして登録されます。これは、{% include product %} データ(ショットやアセット名など)と設定がディスクの実際のフォルダおよび {% include product %} に「ベイク処理」されていると考えることができます。 - -フォルダが作成されると、{% include product %} のエンティティの名前を自由に変更できなくなります。エンティティの名前を変更しようと Toolkit を起動すると、エラー メッセージが表示されます。これは、特定のエンティティに関連付けられたフォルダのトラック情報を失わないようにするためです。 - -Toolkit のフォルダの名前を変更するには、次の手順を実行します。 - -- 最初に {% include product %} のエンティティ(アセットまたはショット)の名前を変更します。 -- `tank unregister_folders` コマンドを実行して登録されているフォルダを登録解除します。これにより、ディスク上のエンティティと場所の関係をトラッキングする {% include product %} の[ファイルシステムの場所] (Filesystem Location)エンティティが削除されます。このコマンドはディスク上のコンテンツには影響せず、ディスク上の場所を示す {% include product %} の `Filesystem Location` エンティティにだけ影響します。たとえば、Plant という名前の付いたアセットのフォルダを登録解除するには、`tank Asset Plant unregister_folders` コマンドを実行します。登録解除するフォルダの概要が表示され、この操作を確定するように求められます。 -- フォルダを登録解除すると、基本的にはアセットを「リセット」したことになります。このアセットとフォルダの関連付けはなくなるため、{% include product %} で新しい名前を指定してフォルダ作成を実行すると、ディスク上に新しいフォルダが作成されます。 -- 最後に、ディスク上の以前の場所から新しい場所にデータを移動します。また、ファイル間のリンクが更新され、新しい場所をポイントすることを確認してください。 - -## 遅延作成とユーザ サンドボックス - -Toolkit のフォルダ作成をセットアップして、フォルダ作成コマンドを実行したときとアプリケーションを起動する直前という 2 つのフェーズで実行されるようにすることもできます。これは Toolkit アプリケーション ランチャーに組み込まれた動作です(フォルダ作成を実行する標準的な API メソッドを呼び出すだけです)。遅延フォルダ作成を使用すると、次の状況に対応できます。 - -- パイプラインに複数の異なるコンテンツ作成アプリケーションがあるが実際に必要になるまでどのアプリケーションにも完全なフォルダ スキャフォールディングを追加しない場合、各コンテンツ作成アプリケーションで設定内に独自の遅延サブツリーが設定されるようにフォルダ作成をセットアップできます。制作者または管理者がショット用のフォルダを作成する場合、Maya、Nuke、Mari などの作業領域を作成する直前に停止します。その後、アプリケーションを起動すると、このフォルダはアプリケーションの起動直前に作成されます。 -- ファイル システム内のユーザ ベースのサンドボックスを作成する場合は、作業を開始する直前に作成する必要があります。遅延フォルダ作成を使用すると、このプロセスを簡単にする特別なユーザ ノードを追加できます。テンプレート設定でユーザ ノードを参照する場合は、{% include product %} API での表記方法である HumanUser を使用します。 - -遅延作成の詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/ja/82ff76f7/)を参照してください。 - -# テンプレートを設定する - -ファイル システム構造を作成したら、上記のフォルダ構造に基づいて一連のファイル システムの場所を設定することをお勧めします。この場所は「テンプレート」と呼ばれ、{% include product %} Toolkit に不可欠なものです。テンプレート ファイルには 3 つのセクションがあります。各フィールドの意味を定義できるキー セクション、テンプレート パスを定義できるパス セクション、文字列式を定義できる文字列セクションです。 ファイルでは 2 つの構文を使用できます。1 つのストレージ ルートを持つ設定に使用できるシンプルな形式の構文と、マルチルート設定に使用できる高度な構文です。 - -**例: 単一のルート テンプレート形式** - -```yml -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: '@shot_root/work/maya' - - # define the location of a publish area - shot_publish_area_maya: '@shot_root/publish/maya' - - # The location of WIP files - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.ma' - - ########################################################################################## - # Asset pipeline / maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: '@asset_root/work/maya' - - # define the location of a publish area - asset_publish_area_maya: '@asset_root/publish/maya' - - # The location of WIP files - maya_asset_work: '@asset_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_asset_snapshot: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_asset_publish: '@asset_root/publish/maya/{name}.v{version}.ma' - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. -strings: - - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -**例: マルチ ルート テンプレート形式** - -```yml -# -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -# -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / Maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: - definition: '@shot_root/work/maya' - root_name: primary - - # define the location of a publish area - shot_publish_area_maya: - definition: '@shot_root/publish/maya' - root_name: primary - - # The location of WIP files - maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.ma' - root_name: primary - - # The location of backups of WIP files - maya_shot_snapshot: - definition: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: primary - - # The location of published maya files - maya_shot_publish: - definition: '@shot_root/publish/maya/{name}.v{version}.ma' - root_name: primary - - ########################################################################################## - # Asset pipeline / Maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: - definition: '@asset_root/work/maya' - root_name: secondary - - # define the location of a publish area - asset_publish_area_maya: - definition: '@asset_root/publish/maya' - root_name: secondary - - # The location of WIP files - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: secondary - - # The location of backups of WIP files - maya_asset_snapshot: - definition: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: secondary - - # The location of published maya files - maya_asset_publish: - definition: '@asset_root/publish/maya/{name}.v{version}.ma' - root_name: secondary - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. - -strings: - - # when a review version in {% include product %} is created inside of nuke, this is the - # name that is being given to it (the code field) - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -テンプレート ファイルに使用可能な設定オプションが数多くあります。完全なリファレンスについては、[こちら](https://developer.shotgridsoftware.com/ja/82ff76f7/)を参照してください。 - -## テンプレート ファイルの @include 構文 - -テンプレート ファイルで繰り返しを減らすために、フィールドを再利用することができます。 - -```yml -paths: - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - maya_asset_work: '@asset_root/work/maya/@maya_asset_file' - -strings: - maya_asset_file: '{name}.v{version}.ma' -``` - -また、複数のファイル間でテンプレートを分割し、他のファイルにファイルを含めることもできます。詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/ja/82ff76f7/)を参照してください。 - - -## テンプレート ファイルに外部ファイルを含める - -環境設定を複数のファイルに分割して他のファイルにファイルを含めるのと同じように、テンプレート ファイルをこの方法で管理することができます。これは、複数のプロジェクトで共有されるグローバル環境設定をセットアップする場合などに役立ちます。 - -次のいずれかの include 構文を使用して、`templates.yml` ファイルに別のファイルを含めます。 - -```yml -# single include using a path local to the location of the current file -include: './include_file.yml' -# multiple incudes, processed in order -includes: ['./include_file_1.yml', './include_file_2.yml'] -# you can also use absolute paths when including things: -include: -# files that are not recognized are skipped, so you can put paths for -# windows and linux next to each other for multi platform support: -includes: ['/foo/bar/hello.yml', 'z:\foo\bar\hello.yml'] -# you can use environment variables inside of full paths too -includes: ['$STUDIO_ROOT/foo/bar/hello.yml', '%STUDIO_ROOT%\foo\bar\hello.yml'] -``` - -含めるファイルにはメインの templates.yml ファイルと同じ構造が必要です。つまり、`paths`、`keys`、および `strings` セクションが含まれている必要があります。Toolkit が複数の include を処理する場合、降順かつ深さ優先で再帰的に読み込みを行い、`paths`、`keys`、および `paths` の 3 つの「バケット」にデータを個別に追加します。この処理中に値がバケット内に既に存在する場合は上書きされます。すべての include が処理されると、環境設定全体が検証されます。 - -次に、簡単な例を示します。これはメインの `templates.yml` ファイルです。 - -```yml -include: ./global_defs.yml -keys: - name: - type: str - filter_by: alphanumeric - version: - type: int - format_spec: "03" -paths: - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' -``` -これは追加されたファイル `global_defs.yml` のコンテンツです。 - -```yml -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str -paths: - shot_root: sequences/{Sequence}/{Shot}/{Step} -``` - -各ファイルに必要なすべての情報が含まれるように、キーとパスを一緒に保管することをお勧めします(ただし、常に適切だとは限りません)。通常は、これで維持が簡単になります。 - -## フォルダ作成とテンプレート - -フォルダ作成システムで作成されたフォルダを参照するテンプレートを作成する場合、「{% include product %} API」スタイルの表記を使用してフィールドを指定する必要があります。これは見逃してしまいがちな細かい設定です。上記の例はそのことを適切に示しています。フォルダ作成では、最初にアセット タイプとアセット名ごとに項目をグループ化する環境設定をセットアップします。以下に例を示します。 - -``` -/mnt/projects/my_project/assets/character/Hero -``` - -その後、このパスに一致するテンプレートを Toolkit で作成します。パスとコンテキストが設定されたテンプレートと {% include product %} Toolkit を一致させるには、{% include product %} API を使用して名前を付けた場合と同じようにフィールドに名前を付けます。アセット タイプ フォルダ レベルは {% include product %} のこのフィールドのフィールド名であるため、`sg_asset_type` と名前を付ける必要があります。アセット レベル フォルダには `Asset` (大文字 A)と名前を付ける必要があります。これは {% include product %} API を使用する場合にアセット エンティティ タイプをこのように参照するからです。 - -# フック - -フックは Toolkit 設定の中で柔軟性に優れた部分です。通常、アプリ、エンジン、または Core API を設定する場合は、何らかの動作を定義するパラメータのコレクションを指定します。しかし、これでは十分な強力さが得られない場合があります。そのときはフックを使用します。 フックは Python コードの小さなかたまりで、アプリ、エンジン、または実際の Core の特性をカスタマイズするために使用できます。フックは軽量でアトミックになるように設計されています。フックは Toolkit に 3 つの異なるレベルで表示されます。各レベルの詳細については、以下のセクションを参照してください。 - -## アプリ レベル フック - -各 Toolkit アプリ(これに該当するエンジン)には一連の設定が含まれ、その一部はフックです。各アプリには既定のフック コレクションが設定されており、特別にオーバーライドしない限り自動的に使用されます。通常、フックはアプリケーション固有の動作をカスタマイズするために使用します。たとえば、Maya にイメージをロードする Toolkit の場合、UI コードとすべての相互作用ロジックはアプリ内に格納されていますが、実際にイメージを Maya にロードするビジネス ロジックの一部はフック内に格納されています。このため、スタジオで動作をカスタマイズすることができます。既定のフックは Maya で標準的なテクスチャ ノードを作成するだけですが、異なるノード タイプの使用を望むスタジオはこのフックをオーバーライドして、コードを再作成せずにアプリ全体の動作を簡単に変更できます。 - -アプリのフックをカスタマイズする場合は、通常、アプリのフック フォルダ内の既定のフックをプロジェクトのフック フォルダにコピーします。次に、既定のフックではなく、新しいフックが読み込まれるように、環境ファイル内のアプリ設定を更新する必要があります。カスタム フックはアプリに含まれる既定のフックから自動的に継承されるため、既定のフックのビジネス ロジックの大部分を維持したまま簡単に微調整することができます。フックの継承の詳細については、「[環境設定リファレンス](https://developer.shotgridsoftware.com/ja/6d10dedf/)」を参照してください。 - -## コア レベル フック - -コア フックを使用すると、Toolkit でシステム全体の動作をオーバーライドできます。コア レベル フックはプロジェクトごとにすべてオーバーライドされるため、各プロジェクトはオーバーライド値で個別にセットアップする必要があります (新しいプロジェクトのセットアップ時と同じ環境設定を再利用する場合は、通常はこの方法が簡単です)。 - -コア設定領域には特別な `hooks` フォルダがあります。このフォルダには特定のコア フックの独自の実装を格納できます。コア フックはアプリ内のフックと似ており、Toolkit からコード スニペットを抽出してカスタマイズすることができます。Core API を使用すると、ファイル システム I/O、フォルダ作成、ファイル システム構造の検証など、数多くのさまざまなコアの動作をオーバーライドできます。 - -![](images/advanced-toolkit-administration/hooks.png) - -既定では、Toolkit は API フォルダ自身から必要なコア フックを選択します。動作をカスタマイズする場合は、自分の環境設定の `config/core/hooks` 領域にフック ファイルをコピーします。次にコードを修正します。 - -利用可能なコア フックのリストについては、Core API 内のフックのフォルダを確認してください。各フックには、その機能と修正方法に関する広範なドキュメントが含まれます。 - -## スタジオ レベル フック - -「スタジオ レベル フック」と呼ばれるいくつかの非常に特殊なフックもあります。 このフックはグローバルであり、すべてに影響します。特定のプロジェクトには含まれない Toolkit の特性を制御します。 - -## プロジェクト名フック - -プロジェクト セットアップ プロセスによりプロジェクトの「ディスク名」の入力を求めるプロンプトが表示され、{% include product %} でのプロジェクト名に基づいた名前が提示されます。スペースやファイル システム以外に対応した他の文字はアンダースコアに置き換えられます。ディスク名は、プロジェクト データと環境設定が格納されるフォルダの名前になります。 - -ディスク名の指定にはスラッシュを使用できます。これにより、複数のフォルダ階層に渡るプロジェクト ルート ポイントが生成されます。スタジオで分野(コマーシャルや vfx など)に基づいてプロジェクトを整理する場合や、ファイル システムの 1 つのレベルで概要を表示できないほどスタジオのプロジェクト量が膨大になった場合に役立つことがあります。常にスラッシュ(「/」)を使用する必要があります。Windows では、Toolkit が必要な調整を行います。 - -上記のマルチ レベルのフォルダを組み合わせると、Toolkit がセットアップ プロセスの一環として推奨する名前をカスタマイズすることもできます。これには特別なスタジオ レベルのフックを使用します。この動作をカスタマイズする場合は、`config/core` フォルダ内のスタジオの API の場所に `project_name.py` という名前のファイルを作成します。このフォルダには、`install_location.yml`、`app_store.yml`、`shotgun.yml` などのファイルが既に含まれています。 - -`project_name.py` フック ファイルの表示例は次のとおりです。 - -```python -from tank import Hook -import os - -class ProjectName(Hook): - - def execute(self, sg, project_id, **kwargs): - """ - Gets executed when the setup_project command needs a disk name preview. - """ - - # example: create a name based on both the sg_type field and the name field - - sg_data = sg.find_one("Project", [["id", "is", project_id]], ["name", "sg_type"]) - - # create a name, for example vfx/project_x or commercials/project_y - name = "%s/%s" % ( sg_data["sg_type"], sg_data["name"] ) - - # perform basic replacements - return name.replace("_", "/").replace(" ", "/") -``` - -## 接続フック - -Toolkit には、関連付けられた {% include product %} インスタンスに接続できるように接続設定が保存されています。動的な方法でこの接続設定を制御すると便利な場合があります。この場合、`config/core` フォルダ内のスタジオの API の場所に `sg_connection.py` という名前のファイルを作成します。このフォルダには、`install_location.yml`、`app_store.yml`、`shotgun.yml` などのファイルが既に含まれています。 - -{% include product %} 接続後に呼び出されるこのフックは設定ファイル `shotgun.yml` と `app_store.yml` から読み込まれます。一部の外部環境変数に依存するプロキシ サーバのセットアップなど、接続設定を段階的かつ簡単に修正できます。 - -フックには次の 3 つのパラメータが渡されます。 - -- `config_data` は、読み込まれた {% include product %} 設定ファイル内の設定を含むディクショナリです。通常、`host`、`api_script`、`api_key`、および `http_proxy` の各キーが含まれます。 - -- `user` は、接続情報が関連付けられたユーザ プロファイルです。これはエキスパート設定で、通常は `defualt` に設定されています。 - -- `cfg_path` は、`config_data` のロード元の設定ファイルのパスです。 - -フックは、config_data と同じ形式のディクショナリを返す必要があります。 - -プロキシ設定をカスタマイズする場合、プロキシ文字列は、123.123.123.123, 123.123.123.123:8888 や username:pass@123.123.123.123:8888 など、{% include product %} API の作成者が予期する形式と同じものを返す必要があります。 - -次に、初めての使用に最適な実装例を示します。 - -```python -from tank import Hook -import os - -class CustomShotunConnection(Hook): - """ - Allows for post processing of {% include product %} connection data prior to connection - """ - def execute(self, config_data, user, cfg_path, **kwargs): - - # explicitly set the proxy server setting - config_data["http_proxy"] = "123.123.123.123" - return config_data -``` - -# アプリとエンジンを設定する - -ここでは、ディスク上のすべてのキーの場所を定義するテンプレート ファイルをセットアップし、環境設定内に含めるアプリとエンジンの特定を開始します。導入用マニュアルの他の部分で説明したように、アプリとエンジンの設定は一連の***環境設定***に分けられています。環境設定の基本は代替設定です。これは、多くの場合、それぞれのアプリ スイートでショット作業やアセット作業ごとに設定を変える必要があるため便利です。複雑なパイプラインの場合、モデリングでリギングとは異なるセットアップを指定できるように、部門ごとに設定を分けることができます。これはすべて環境設定で処理されます。 - -環境ファイルは数多くの利用可能なエンジンを定義します。実行するアプリケーションに応じて、このセクションのいずれかが使用されます。たとえば、Maya を実行する場合、Toolkit に「tk-maya」エンジンを起動するように指示します。{% include product %} Toolkit は使用する環境を(現在の作業領域に基づいて)最初に特定し、この環境内で `tk-maya` エンジンを探します。エンジンが見つかった場合は、このセクションで定義したすべてのアプリにロードします。 - -各アプリには指定可能な設定が数多く用意されています。アプリをインストールまたはアップグレードする場合は、{% include product %} Toolkit によって、既定値が指定されていない設定を指定するように指示されます。多くの場合、Toolkit アプリは再利用可能であるため、セットアップ方法に応じて、さまざまな方法とワークフローで使用することができます。同じ環境で同じアプリを何回か定義することもできます。たとえば、Maya メニューに 2 つのパブリッシャを表示するとします。1 つがリグ パブリッシュ用、もう 1 つがモデル パブリッシュ用の場合、両方とも同じパブリッシュ アプリを使用して設定をそれぞれ変えられます。 - -**例: 環境ファイル** - -```yml -include: ./includes/app_launchers.yml - -engines: - - # 3dsmax engine - tk-3dsmax: - debug_logging: false - location: {name: tk-3dsmax, type: app_store, version: v0.2.6} - - # all the registered apps for this engine - apps: - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-texture: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Texture... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Diffuse Texture, Specular Texture] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current 3ds Max scene - primary_display_name: 3ds Max Publish - primary_icon: icons/publish_3dsmax_main.png - primary_publish_template: max_shot_publish - primary_scene_item_type: work_file - primary_tank_type: 3dsmax Scene - secondary_outputs: [] - template_work: max_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: max_shot_snapshot - template_work: max_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: max_shot_publish - template_publish_area: shot_publish_area_max - template_work: max_shot_work - template_work_area: shot_work_area_max - - # the maya engine - tk-maya: - debug_logging: false - location: {name: tk-maya, type: app_store, version: v0.2.7} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - - # all the registered apps for this engine - apps: - - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.7} - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-1: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Assets... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Maya Model, Maya Rig] - - tk-multi-loader-2: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Shots... - publish_filters: [] - sg_entity_types: - Shot: [] - single_select: true - tank_types: [Maya Anim, Maya Lighting, Maya Scene] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current Maya scene - primary_display_name: Maya Publish - primary_icon: icons/publish_maya_main.png - primary_publish_template: maya_shot_publish - primary_scene_item_type: work_file - primary_tank_type: Maya Scene - secondary_outputs: [] - template_work: maya_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-setframerange: - location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: maya_shot_snapshot - template_work: maya_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: maya_shot_publish - template_publish_area: shot_publish_area_maya - template_work: maya_shot_work - template_work_area: shot_work_area_maya -``` - -## アプリごとの場所の設定 - -環境ファイルの各項目には特別な `location` トークンがあります。このトークンは、Toolkit がアプリ コードを選択する場所と新しいバージョンのアプリを確認する方法を定義します。たとえば、場所のトークンは次のように定義できます。 - -``` -location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} -``` - -タイプは、このアプリがアプリ ストアから取得されたものであり、特定のバージョンが使用されていることを示しています。更新チェックを実行すると、{% include product %} Toolkit はアプリ ストアに接続して、`v0.1.2` よりも新しいバージョンがあるかどうか、その場合にアップグレードするかどうかを確認します。Toolkit は、git や github など、異なるいくつかの場所タイプをサポートしているため、独自のアプリを作成し、git を使用してこのアプリをトラックできます。git で新しいタグを作成する場合、この更新はアップグレード チェックで正しく処理されるかを検出します。詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/ja/6d10dedf/)を参照してください。 - -## ファイルをインクルードする - -環境ファイルに外部ファイルをインクルードすることができます。これは、設定を集中管理したり、オーバーライドを管理したりする場合に便利です。 - -- 複数の環境で Maya を起動しても、アプリケーション(Maya、Nuke)のすべてのファイル パスを 1 つの場所で管理できるように環境設定を整理することができます。 - -- 複数の環境で同じ設定を使用するアプリを 1 つの場所で定義できます。 - -- 複数のプロジェクトで共有される「一括」パイプライン設定を管理でき、それを更新することですべてのプロジェクトが更新のメリットを受けられます。各プロジェクトでは、特定の動作を設定する必要がある場合、含まれる一括設定をオーバーライドまたは拡張できます。 - -- コンテキストのファイルをオーバーライドとしてインクルードできます。つまり、ショットまたはアセットごとに設定パラメータを再設定することができます。これは、ショットまたはアセットごとに Maya や Nuke などのパスをオーバーライドできる既定の設定に示されています 。 - -- フル パスで環境変数を使用する場合は自動的に展開されます。Linux の場合、インクルード パーサが混乱するため、環境変数は、`${ENV_VAR}` 形式ではなく `$ENV_VAR` 形式で指定する必要があります。例: `['$STUDIO_ROOT/foo/bar/hello.yml'`、`'%STUDIO_ROOT%\foo\bar\hello.yml']` をインクルードします。 - -**例: アプリの起動に関するショット固有のオーバーライド** - -シェル エンジンで次の環境ファイルを指定するとします。 - -```yml -include: ./includes/app_launchers.yml - -engines: - tk-shell: - debug_logging: false - location: {name: tk-shell, type: app_store, version: v0.3.0} - - apps: - tk-multi-launch3dsmax: '@launch_3dsmax' - tk-multi-launchmaya: '@launch_maya' - tk-multi-launchmotionbuilder: '@launch_motionbuilder' - tk-multi-launchnuke: '@launch_nuke' - tk-multi-launchphotoshop: '@launch_photoshop' -``` - -各アプリは、`app_launchers` インクルード ファイルで定義されたリファレンスです。このファイルには各アプリの実際のアプリ設定が含まれ、次のようになります。 - -```yml -includes: - - # first include the configuration's global settings for application paths - - ./paths.yml - - # now include overrides - these will be loaded if they are found - - sequences/{Sequence}/{Shot}/sgtk_overrides.yml - - assets/{sg_asset_type}/{Asset}/sgtk_overrides.yml - -launch_3dsmax: - engine: tk-3dsmax - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '' - menu_name: Launch 3DSMax - windows_args: '' - windows_path: '@3dsmax_windows' - -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -上記のファイルには、Maya や Nuke などの実際のパスは含まれません。その代わりに、別のファイル `paths.yml` で定義されます。 - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' -maya_mac: /Applications/Autodesk/maya2012/Maya.app -maya_linux: maya - -# nuke -nuke_mac: /Applications/Nuke6.3v8/Nuke6.3v8.app -nuke_windows: 'C:\Program Files\Nuke6.3v8\Nuke6.3.exe' -nuke_linux: Nuke6.3 -``` - -最初、`app_launchers` ファイルには上記のファイルがインクルードされますが、後で `sequences/{Sequence}/{Shot}/sgtk_overrides.yml` もインクルードされます。これはテンプレートのようなコンテキスト固有のファイル パスなので、現在のコンテキストと比較してパスが解決されます。解決する場合は、パスを検出してロードします。つまり、ショットの場所に `sgtk_overrides.yml` を作成し、固有のショットに対してのみアプリケーション パスをオーバーライドします。 - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\special_maya.exe' -``` - -ここでは、Maya for Windows の特別バージョンを使用しています。残りのパスは `paths.yml` ファイルで定義された元のパスになります。 - -インクルードの動作の詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/ja/82ff76f7/)を参照してください。 - -## テンプレート設定(ファイル パス)を設定する - -多くのアプリで使用される重要な設定タイプは `template` です。ファイル システムの場所を指定する必要のあるアプリはこの設定を使用します。アプリは、任意のファイル システム構造または命名規則に対応して汎用性と柔軟性に優れた設計となるように開発されています。テンプレートは、アプリが基本のファイル システムから独立するために重要な部分です。詳細については、[コンセプトの概要](https://developer.shotgridsoftware.com/ja/e95205a8/)を参照してください。 - -テンプレート設定を伴うアプリを設定する場合、適切なフィールド セットを含むテンプレートを指定する必要があります。フィールドには必須とオプションがあります。必須フィールドはテンプレートに含める必要があり、オプション フィールドはテンプレートに含めることはできますが、このフィールドをテンプレートで定義していなくてもアプリは動作します。 - -![](images/advanced-toolkit-administration/templates.png) - -アプリを実行すると、環境設定で指定したテンプレートのパスが作成されます。このパスは、現在のコンテキストに加えて、アプリ ロジックによって指定された一連のフィールドに基づいて作成されます。つまり、コンテキストに含まれないフィールドまたはアプリのオプション フィールドや必須フィールドに含まれないフィールドがテンプレートに含まれる場合、アプリはそのフィールドの値の設定方法が分からないため、動作しません。この状況は、起動時に環境設定を検証する Toolkit によって回避されます。 - -テンプレート設定の検証時、Toolkit は最初にコンテキストをチェックし、コンテキストによって指定されたフィールドとテンプレート内のフィールドを比較します。コンテキストと比較されたフィールドのリストがアプリの必須とオプションのパラメータ定義と一致しない場合、検証エラーが発生します。 - -**実例: スナップショット アプリ** - -次に、この機能についての実例を示します。Toolkit アプリの 1 つである**スナップショット アプリ**を見てみましょう。 - -このアプリでは、多くのテンプレート設定を使用します。次に、アプリ設定ブレイクダウンで定義されている設定の 1 つを示します。 - -- **設定名**: template_snapshot -- **タイプ**: template -- **必要なテンプレート キー**: version -- **オプション テンプレート キー**: name、timestamp、increment -- **説明**: スナップショットのバックアップが保存されるディスク上の場所を定義するテンプレートのリファレンスです。 - -実行時にコンテキストによって指定されるフィールドに加えて、このテンプレート設定には `version` フィールドを含むテンプレートが必要です。また、`name`、`timestamp`、または `increment` のオプション フィールドも含まれますが、他のフィールドは含まれません。以下に例を示します。 - -ショットのタスクで Maya を起動するとします。コンテキストには次のフィールドが含まれます。 - -- 現在のプロジェクトが設定されます。 -- 現在のエンティティ(ショットなど)が設定されます。 -- 現在のステップが設定されます。 -- 現在のタスクが設定されます。 - -エンジンが起動すると、この設定が確認されます。次に、上記の `template_snapshot` フィールドに異なる設定を指定した場合の例を示します。 - -- テンプレート `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.ma` は、スナップショット `template_snapshot` 設定を使用すると有効になります。 - - - `Sequence`、`Shot`、および `Step` がコンテキストで統合されます。コンテキストは現在のショットを把握しているため、自動的に現在のシーケンスが特定されます(ファイル システムの親フォルダであるため)。 - - アプリ設定で必要なテンプレートには `version` フィールドがあります。 - - `name` フィールドはオプションです。 - - 他のフィールドはありません。 - -- (ショット)コンテキストは `Asset` フィールドの解決方法を把握していないため、テンプレート `assets/{Asset}/work/maya/{name}.v{version}.ma` は無効になります。 - -- `version` 必須フィールドが見つからないため、テンプレート `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.ma` は無効になります。 - -- フィールド `extension` は不明で、アプリが統合方法を把握していないため、テンプレート `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{extension}` は無効になります。 - -## フックを使用してアプリの動作をカスタマイズする - -アプリで頻繁に使用される設定のタイプに `hook` 設定タイプもあります。フックは、アプリが通常の実行の一部として実行するコードの一部です。フックを使用すると、アプリを非常に柔軟にカスタマイズできます。つまり、アプリのビジネス ロジックの一部を実際のアプリ コードから分離できるということです。 - -たとえば、シーンのさまざまなリファレンスとファイル入力値をスキャンする必要のあるブレイクダウン アプリがあるとします。Maya の場合、Maya が提供する標準的なリファレンス ノードを処理する既定の動作を指定できますが、スタジオでリファレンス ノードのカスタム タイプを使用する場合はどうすればよいでしょうか。通常、スタジオはアプリを選択して github に取り込みますが、シーンのリファレンス ノードをスキャンするコードにカスタム ノード タイプを追加するだけの場合、これは非常に極端な操作です。 - -その代わりに、ブレイクダウン アプリはシーン スキャン コードのスニペットをフックとして実装できます。つまり、アプリ設定の一部として効果的に設定できるということです。これには、シンプルな Maya の動作を処理する既定値が設定されているため、すぐに利用できますが、必要に応じてこの動作を完全に変更するように {% include product %} Toolkit を設定することも簡単に行えます。 - -アプリをインストールすると、すべてのフック設定が既定値として環境設定に表示されます。 つまり、アプリは、このアプリに付属する組み込みのフック実装を使用します。たとえば、次に、ランチャー アプリの設定例を示します。 - -```yml -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -ここでは `hook_app_launch` と `hook_before_app_launch` の 2 つのフックがあり、両方とも既定のアプリ実装を使用しています。これらのフックは、スタジオで起動プロセスをカスタマイズしたり、環境変数を設定したりできるように作成されています。 - -![](images/advanced-toolkit-administration/app_hooks.png) - -これらのフックをカスタマイズするには、最初に元の実装を探す必要があります。各アプリには、フックが登録されるフック フォルダがあります。ここでカスタマイズするフックを選択し、***このフックを環境設定内のフック フォルダにコピー***します。必要に応じてコードを変更します。 - -環境設定のフックは、変更しない限りまだ `default` に設定されています。アプリに付属する既定のフックのみが選択されます。新しい設定を選択するには、既定値を環境設定のフック フォルダ内にある Python フック ファイルの名前に変更します。 - -**例: フックをカスタマイズする方法** - -次に、アプリ ランチャーの `hook_before_app_launch` フックのカスタマイズ方法に関する概要を示します。 - -1. 既定のフック実装をコピーします。アプリに付属する既定のフックの場所については、上図を参照してください。ここでこのファイルをフック フォルダの設定領域にコピーします。たとえば、パイプライン設定が `/mnt/software/sgtk/big_buck_bunny` 内に格納されている場合は、ファイルを `/mnt/software/sgtk/big_buck_bunny/config/hooks/before_app_launch.py` にコピーします。 - -2. 必要に応じて Python コードを変更します。 - -3. 最後に、新しいコードを使用するように環境設定を更新します。 - -```yml -yaml launch_maya: engine: tk-maya extra: {} hook_app_launch: default hook_before_app_launch: before_app_launch # <-- uses custom hook! linux_args: '' linux_path: '@maya_linux' location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} mac_args: '' mac_path: '@maya_mac' menu_name: Launch Maya windows_args: '' windows_path: '@maya_windows' -``` - -次に起動アプリを実行すると、既定のフック コードの代わりにこのコードが実行されます。 \ No newline at end of file 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 deleted file mode 100644 index beb106842..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: default -title: アプリケーションとエンジン設定のリファレンス -pagename: toolkit-apps-and-engines-config-ref -lang: ja ---- - -# アプリケーションとエンジン設定のリファレンス - -このドキュメントでは、{% include product %} Pipeline Toolkit でアプリケーション、エンジン、フレームワークの環境設定を作成する場合に追加できるさまざまなすべてのオプションの概要について説明します。アプリケーションの高度な設定を作成する場合に便利で、開発する場合とパラメータをアプリケーション設定マニフェストに追加する必要がある場合に重要です。 - -_このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『[{% include product %}統合管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。_ - -# はじめに - -このドキュメントには、Sgtk が構成と設定に使用するさまざまなファイル形式の仕様が含まれます。これは利用可能なさまざまなオプションとパラメータを説明するリファレンス ドキュメントです。環境設定の管理方法に関するベスト プラクティスについては、次のドキュメントを参照してください。 - -[設定管理のベスト プラクティス](https://developer.shotgridsoftware.com/ja/60762324/) - -# {% include product %} Pipeline Toolkit の環境 - -Toolkit の主要なコンポーネントは次の 3 つです。 - -- _「エンジン」_ はホスト アプリケーション(Maya や Nuke など)と Sgtk アプリケーション間の変換レイヤまたはアダプタを提供します。アプリケーションは通常、Python と PySide を使用しますが、標準化された方法でホスト アプリケーションを提供するのはエンジンの責任です。たとえば、PySide がまだ存在しない場合は、ホスト アプリケーションの最上位に PySide を追加します。 -- _「アプリ」_ はビジネス ロジックを提供します。基本的に、これは何かを処理するツールです。アプリケーションは特定のホスト アプリケーションで動作するように作成したり、複数のホスト アプリケーションで動作するように設計できます。 -- _「フレームワーク」_ は、エンジン、アプリ、または他のフレームワークで使用されるライブラリです。フレームワークにより、複数のアプリ間で共有されるコードまたは動作を簡単に管理できます。 - -_「環境ファイル」_ には、エンジン、アプリ、およびフレームワークのコレクションの環境設定が含まれています。このコレクションは「環境」と呼ばれます。Sgtk はさまざまなファイルまたはユーザに対して異なる環境を起動します。たとえば、ショット制作の環境とリギングの環境を設定できます。各環境は 1 つの yaml ファイルです。 - -環境ファイルは `//software/shotgun//config/env` に格納されています。 - -yaml ファイルの基本的な形式は次のとおりです。 - -```yaml - engines: - 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 - framework settings -``` - -各アプリとエンジンは設定を介して指定できます。この設定は、アプリやエンジンが `info.yml` と呼ばれるマニフェスト ファイルで公開している設定のリストに対応しています。Sgtk Core の `v0.18.x` 以降、設定はマニフェスト ファイルで指定された既定値と異なる場合にのみ指定する必要があります。マニフェスト ファイルに加えて、通常、構成可能な設定は Toolkit アプリ ストア内のアプリとエンジンのページに表示されます。 - -各項目で定義されるさまざまな設定とは別に、各アプリ、エンジン、およびフレームワークではそれぞれのコードの格納場所も定義する必要があります。これには特別な `location` パラメータを使用します。 - -## コードの場所 - -環境ファイルで定義された各アプリ、エンジン、またはフレームワークには、実行するアプリのバージョンとダウンロード元を定義した `location` パラメータがあります。多くの場合、これは `tank updates` と `tank install` コマンドで自動的に処理されます。ただし、環境設定を手動で編集する場合は、Toolkit の展開と構成用のさまざまなオプションを使用できます。 - -現在、Toolkit は次の場所の _「記述子」_ を使用してアプリのインストールと管理をサポートします。 - -- 記述子 **app_store** は Toolkit アプリ ストアの項目を表します -- 記述子 **{% include product %}** は {% include product %} に保存された項目を表します -- 記述子 **git** は git リポジトリのタグを表します -- 記述子 **git_branch** は git ブランチのコミットを表します -- 記述子 **path** はディスク上の場所を表します -- 記述子 **dev** は開発者用サンドボックスを表します -- 記述子 **manual** はカスタムの展開とロールアウトに使用します - -さまざまな記述子の使用方法については、[Toolkit リファレンス ドキュメント](http://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types)を参照してください。 - -## アプリとエンジンを無効にする - -アプリまたはエンジンを一時的に無効にすると、役に立つ場合があります。無効にするには、アプリまたはエンジンのロード元を指定する場所のディクショナリに `disabled: true` パラメータを追加することをお勧めします。この構文はさまざまな場所のタイプすべてでサポートされています。たとえば、次のようになります。 - -```yaml -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]} -``` - -_deny_platforms_ の有効値は、`windows`、`linux`、および `mac` です。 - -## 設定とパラメータ - -各アプリ、エンジン、またはフレームワークは、設定ファイルをオーバーライドできる数多くの設定を明示的に定義します。この設定は、文字列、整数、リストなどのタイプに分類されます。詳細については、[Toolkit リファレンス ドキュメント](http://developer.shotgridsoftware.com/tk-core/platform.html#configuration-and-info-yml-manifest)を参照してください。 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 deleted file mode 100644 index b2f477101..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -layout: default -title: 最初のプロジェクトの作成後 -pagename: beyond-your-first-project -lang: ja ---- - - -# 最初のプロジェクトの作成後 - -ここでは、{% include product %} Desktop を使用して最初のプロジェクトを設定および実行した後の作業について説明します。ここには、よくある質問、トピック、役に立つドキュメントが掲載されています。 - - -# Toolkit へようこそ - -Toolkit へようこそ! このドキュメントを読んでいるということは、{% include product %} Desktop を使用して最初の {% include product %} Pipeline Toolkit プロジェクトのインストールに成功したことになります。 - -![](images/Beyond-your-first-project/project_ready.png) - -この段階では、上記のスクリーンショットのような画面や、いくつかのアプリケーション ランチャーが設定されたプロジェクト ページが表示されているはずです。ここでは、Maya、Nuke、または他のアプリケーションを起動してみてください。ファイルとアセットを管理するための詳細な機能を含む {% include product %} メニューが表示されているはずです。 - -では次に何をしましょうか? Toolkit は、環境設定とその仕組みに関して優れた柔軟性を発揮します。このドキュメントでは、{% include product %} Desktop を使用して最初のプロジェクトを完成したら実行すべきいくつかの推奨手順について説明します。 - -# 基本設定 - -このセクションには、一連の調整項目と、設定すると便利な項目が含まれます。最初の Toolkit プロジェクトをセットアップしたら、すべてを正しく機能させるためにたくさんの項目を少しずつ調整することになるでしょう。このセクションでは、それらのさまざまな手順について説明します。その中には設定ファイルの編集や現時点の「具体的な調査」が含まれます。何か質問がありましたら、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -## アプリケーション パスをセットアップする - -最初のプロジェクトをセットアップして、Maya、Motionbuilder、または Nuke のいずれかの起動ボタンをクリックすると、次のようなエラー メッセージが表示される可能性があります。 - -![](images/Beyond-your-first-project/failed_to_launch.png) - -Toolkit プロジェクト設定には、起動可能なさまざまな実行可能ファイルへのパスが保存されています。上記のメッセージが表示された場合は、このパスがスタジオのセットアップと一致していない可能性があります。 - この場合、異なるバージョンのアプリケーションが起動されていることもあります。たとえば、既定では Maya 2015 へのパスが設定されていますが、スタジオで Maya 2014 を使っている場合などです。この場合、このパスも変更する必要があります。 - -既定の設定では、このようなパスはすべて、`paths.yml` と呼ばれる 1 つのファイルに保存されています。パスを変更するためには、ディスク上のプロジェクト設定を特定し、`paths.yml` ファイルが見つかるまで設定フォルダを移動します。 - -![](images/Beyond-your-first-project/paths_config.png) - -このファイルを開いて、パスに必要な変更を加えます。ファイルを保存したら、{% include product %} Desktop 内のプロジェクトを終了して、このプロジェクトを再びクリックする必要があります (ただし、アプリケーション全体を再起動する必要はありません)。 - -**その他の資料** - -アプリケーションの詳細については、次のトピックを参照してください。 - -- [Toolkit アプリケーション ランチャー](https://developer.shotgridsoftware.com/ja/1b9c259a/) -- [コマンドライン引数を渡す](https://developer.shotgridsoftware.com/ja/1b9c259a/) - - -## {% include product %} 統合 - -Toolkit は {% include product %} と統合し、特別なツールキット アクション メニュー アイテムを UI のさまざまな部分に追加することで従来のインタフェースを拡張します。 - -![](images/Beyond-your-first-project/shotgun_integration.png) - -これにより、データに作用する Toolkit アプリケーションまたはカスタム ツールを {% include product %} から直接起動できるようになります。{% include product %} サイトとの統合の詳細については、[『管理者ガイド』の「ブラウザの統合」のセクション](https://developer.shotgridsoftware.com/ja/8085533c/)を参照してください。 - -## {% include product %} UI にパブリッシュを追加する - -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)_ エンティティと関連付けられていることを確認します。 - -![](images/Beyond-your-first-project/create_tab.png) - -ここで _[保存] (Save)_ をクリックして変更内容を保存します。設定がすべて完了しました。 - -注: 新しいタブを作成すると、{% include product %} は取り込むいくつかの既定のフィールドを選択します。パブリッシュ用にいくつかのフィールドを追加する場合があります。このためには、新しいパブリッシュ タブの下に表示されるスプレッドシートの右上隅にある小さなプラス ボタンをクリックします。次のフィールドを追加することをお勧めします。 - -- **[説明] (Description)**: このパブリッシュの変更に関する説明が表示されます -- **[作成者] (Created By)**: パブリッシュを作成したユーザ -- **[作成日] (Date Created)**: パブリッシュが作成された日付 - -レイアウトを変更する場合は、後でページを忘れずに保存してください。 - -## 複数のオペレーティング システム - -**Python が見つからない**ことを通知するメッセージがドキュメントのこのセクションへのリンクとともに表示される場合があります。 - -Toolkit は、[Python](https://www.python.org/) と呼ばれる言語を使用してスクリプトと機能を実行します。{% include product %} Desktop には完全な Python がインストールされているため、通常はこのことを心配する必要はありません。{% include product %} Desktop を使用して新しい Toolkit プロジェクトをセットアップすると、既定では、プロジェクトは {% include product %} Desktop にバンドルされた Python を使用するようにセットアップされます。ただし、場合によっては、Toolkit に Python の使用を明示的に指示する必要があります。これは次の場合に発生します。 - -- すべての Python の既定値が自動的に設定されない、古いバージョンの {% include product %} Desktop を使用する場合。 -- {% include product %} Desktop をディスク上の標準の場所以外にインストールしている場合。 -- 手動または複雑な Toolkit プロジェクト セットアップを実行している場合。 - -Python へのパスは設定ファイルに保存されており、手動で編集することができます。 - -![](images/Beyond-your-first-project/interpreter.png) - -正しいファイルを探すためには、最初にプロジェクト設定に移動します。ここで、`interpreter_` から始まる 3 つのファイルを探します。Linux、Windows、および Mac (「Darwin」)用の Python インタプリタへのパスが含まれています。これらのファイルには、3 つのオペレーティング システム用の Python の場所がそれぞれ含まれます。ここで、使用するオペレーティング システム用の Python の場所を手動で追加する必要があります。 - -ファイルが空の場合、古いバージョンの {% include product %} Desktop を使用していることを示しています。このような場合は、既定の Python のパスで空のファイルを更新します。既定のパスは次のとおりです。 - -- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` -- Windows: `C:\Program Files\Shotgun\Python\python.exe` -- Linux: `/opt/Shotgun/Python/bin/python` - -標準の場所以外に {% include product %} Desktop をインストールしたり、独自の Python の場所を使用したりする場合は、ファイル内のこのパスが有効な Python インストールをポイントしていることを確認してください。バージョンは v2.6 以上(Python 3 以外)を指定する必要があります。UI ベースのアプリケーションとツールを実行する場合は、指定した Python に PyQt または PySide がインストールされており、QT v4.6 以降にリンクされていることを確認してください。 - -複数のオペレーティング システムで Toolkit を実行するために、プロジェクト セットアップ ウィザードの実行時にすべての任意のプラットフォームへのパスを指定する必要があることにも注意してください。パスをまだ指定しておらず、別のオペレーティング システムをストレージ パスまたは設定場所に追加する場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -# 次のステップ - -この時点で、{% include product %} プロジェクト(またはテスト プロジェクト)用に既定の {% include product %} セットアップが動作しているはずです。アプリケーションが起動し、コンテキスト メニュー アクションとパブリッシュが {% include product %} に表示され、任意のオペレーティング システム プラットフォームすべてで処理が行われています。 - -このセクションでは、次の作業、つまり既定の設定を取り込んで、スタジオ パイプラインの全体と機能するように調整するプロセスについて説明します。Toolkit には柔軟性があり、高度にカスタマイズ可能で、たくさんのドキュメントが用意されています。開始前にすべてのアクションを確認するために、数分間を費やしてさまざまなウォークスルー ビデオを視聴することをお勧めします。このビデオでは、{% include product %} Pipeline Toolkit の操作、Maya や Nuke などのアプリケーション内での動作について説明しています。また、パブリッシュ、バージョン管理、読み込みなどの基本的なコンセプトについても説明します。 - -## Toolkit プロジェクトの構造 - -新しい Toolkit プロジェクトを作成する場合、いくつかの主要な場所があります。 - -![](images/Beyond-your-first-project/storage.png) - -- {% include product %} Desktop とその環境設定はローカル マシンにインストールされます (必要に応じて、アプリケーションと環境設定の両方を共有ストレージに配置することができます)。 -- Toolkit プロジェクトがテクスチャ、ファイル、レンダリングなどを保存するデータ領域です。通常この領域は、他のユーザとデータを共有するために共有ストレージ上にありますが、これには例外があります。ユーザ作業領域をローカル(ユーザのみの)ストレージ上に指定し、Perforce 統合などで外部システムを使用してコンテンツを配布する場合です。 -- Toolkit の環境設定は、コード、アプリ、Core API などを完全に独自にバンドルしています。通常、これは共有ストレージに格納されており、すべてのユーザが環境設定に簡単にアクセスできます。 - -ディスク上のプロジェクト設定にはいくつかの異なる項目が含まれています。 - -![](images/Beyond-your-first-project/project_overview.png) - -次のセクションでは、プロジェクト設定フォルダのさまざまな部分について説明します。 - -### コマンド ライン アクセス - -{% include product %} Desktop を使用する場合と同様に、端末またはシェルからも Toolkit にアクセスできます。ディスク上に作成した各プロジェクトには、API セッションやアプリケーションの起動など、たくさんの機能にコマンド ライン ベースでアクセスする特別な `tank` コマンドが用意されています。 - -プロジェクト設定に移動すると、設定のルートに `tank` と `tank.bat` コマンドが表示されます。オプションを使用せずにこれらのコマンドを実行すると、現在の環境設定でサポートされるすべてのコマンドがリスト表示されます。次のような便利なコマンドもあります。 - -- `tank shell`: tk api アクセスでインタラクティブな Python シェルを起動します -- `tank core`: このプロジェクトの Core API に更新があるかどうかを確認します -- `tank updates`: この設定のアプリまたはエンジンに更新があるかどうかを確認します - -`tank` コマンドの実行内容の詳細については、詳細な技術ドキュメントを参照してください。 - -[Toolkit を管理する方法](https://developer.shotgridsoftware.com/ja/425b1da4/) - -### 主要な設定ファイル - -`config` フォルダにはいくつかの主要な設定ファイルが含まれます。 - -![](images/Beyond-your-first-project/config_overview.png) - -Toolkit には、アプリケーションの起動時に必要なすべての構造がディスク上に用意され、事前に設定が完了するようディスク上にフォルダを自動的に作成するフォルダ作成システムが付属します。この設定は上記の `schema` フォルダ内にあります。 - -このフォルダにアクセスすると、パブリッシュ、作業ファイル、レンダリングなど、設定可能なファイルへのさまざまなパスを簡単に定義できる Toolkit の _「テンプレート システム」_ があります。これは上記の `templates.yml` ファイルに保存されています。 - -プロジェクト設定のこれら 2 つを組み合わせると、既存のパイプラインで認識されるディスク上の場所にデータを書き込むために Toolkit が使用するさまざまなアプリを調整できます。 - -詳細については、高度なドキュメントを参照してください。 - -- [フォルダの設定](https://developer.shotgridsoftware.com/ja/425b1da4/) -- [ファイルシステム テンプレート](https://developer.shotgridsoftware.com/ja/425b1da4/) - -Toolkit の基本設定では、一連の**アプリとエンジン**が既に設定されています。この設定は `env` フォルダ内に格納されています。上記のファイル システム設定ファイルでディスク上のリソースの _格納場所_ を定義する場合、そのアプリとエンジンを含む環境設定はパイプラインの _動作内容_ を定義します。 - - -### Core API プラットフォーム - -各プロジェクト設定で一連のアプリとエンジンが使用されます。このアプリとエンジンの環境設定は環境設定内の `env` フォルダに格納されています。Toolkit は、このアプリとエンジンの実行に必要なコードのさまざまなバージョンを自動的にダウンロードおよび管理します。このコードは `install` フォルダ内に配置されます。 - -環境設定、アプリ、およびエンジンはすべて、Toolkit Core プラットフォーム上で動作します。新しいプロジェクトの場合、これも `install` フォルダに保存されます。基本的に、プロジェクト設定は完全な自己完結型で、Toolkit の実行に必要なすべてのパーツは 1 つの場所に格納されています。また、各プロジェクトは独立しており、1 つのプロジェクトを更新しても別のプロジェクトには影響しません。 - -テクニカル ノート: 共有 Toolkit Core を使用する(クリックして展開) - -### その他の資料 - -さらに、{% include product %} Pipeline Toolkit の概念と「概要」を説明した技術ドキュメントもあります。最初に Toolkit の操作を簡単に把握したら、自社固有のニーズに合わせて Toolkit を調整する方法について理解できるこのドキュメントを確認することをお勧めします。 - -[{% include product %} Toolkit の概念の説明](https://developer.shotgridsoftware.com/ja/e95205a8/) - -## Toolkit コミュニティ - -Toolkit にはパイプライン エンジニアと TD のコミュニティがあります。当社は、Toolkit と組み合わせて強力で柔軟性に優れたパイプライン環境を展開できるようにコードを積極的に共有するコミュニティの作成に取り組んでいます。 - -質問がある場合や過去の投稿や会話を確認する場合は、[コミュニティ](https://community.shotgridsoftware.com/c/pipeline/6)にアクセスしてください。 - diff --git a/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md deleted file mode 100644 index b475536ca..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/community-shared-integrations.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -title: コミュニティで共有されている統合 -pagename: community-shared-integrations -lang: ja ---- - -# コミュニティで共有されている統合 - -以下に示すものは、Toolkit コミュニティのユーザが共有しているプロジェクトです。{% include product %} の開発チームが作成したものではないため、保証は適用されませんが、質問にはお答えします。このリストに自分のプロジェクトを追加したいと思う方は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -### エンジン - ----------- - -| 統合 | エンジン | 情報 | -|:-----------:|:------:| ----------- | -| 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/4.26/ja/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/](https://docs.unrealengine.com/4.26/ja/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/)
プロジェクト投稿者: [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.shotgridsoftware.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.shotgridsoftware.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/jp/) 用の {% include product %} エンジンです。
詳細情報: [{% include product %} コミュニティ フォーラム](https://community.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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 deleted file mode 100644 index efccc6300..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ /dev/null @@ -1,499 +0,0 @@ ---- -layout: default -title: 設定のステージングとロールアウト -pagename: config-staging-and-rollout -lang: ja ---- - -# 設定のステージングとロールアウト - -このドキュメントでは、プロダクション パイプラインに変更を安全に展開する方法に関するベスト プラクティスについて説明します。運用環境のコピーであるステージングのサンドボックスを作成する方法、このサンドボックスを更新する方法、テスト方法、最後に運用環境に変更を反映する方法について説明します。 - -_このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。既定の設定については、『[{% include product %}統合管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。_ - -# はじめに - -このドキュメントでは、Toolkit 設定を管理する方法について説明します。Toolkit には複数のユーティリティとツールが装備されているため、環境設定を管理し、安全なサンドボックス環境でアップグレードと変更をテストしてから、それらをプロダクション環境全体に適用できます。 - -このドキュメントでは、以下の方法について説明します。 - -- Toolkit Core API の安全なアップグレード方法 -- アプリとエンジンの更新方法 -- 複数のプロジェクト間で設定を管理するためのさまざまな方法 -- プロダクションを中断せずにアップグレードと変更を安全にテストできるように、Toolkit の _クローン_ 機能と _プッシュ_ 機能にアクセスする方法 -- `git` ソース コントロールと Toolkit の連携方法 - -# 設定管理の基本 - -各 Toolkit プロジェクトには関連する 1 つ以上の環境設定があります。環境設定には、ファイル システムの場所(テンプレート)やエンジン アプリなど、プロジェクトで必要になるすべての設定が含まれています。Toolkit では各プロジェクトを個別に設定できます。つまり、異なるプロジェクトが安全に共存でき、あるプロジェクトをアップグレードしても他のプロジェクトには影響しないということです。 - -大量のプロジェクトを作業していると、プロセスが複雑になることがありますが、このプロセスを簡単かつ安全に合理化できるいくつかの方法を用意しています。 - -{% include product %} の各プロジェクトには多くの**パイプライン設定**があります。プロジェクトを初めて Toolkit でセットアップする場合、`primary` と呼ばれるパイプライン設定が作成されます。{% include product %} のパイプライン設定エンティティは、Toolkit 設定が格納されているディスク上の場所をポイントしています。 - -多くの場合、プロジェクトの過程で環境設定に変更を加える必要があります。環境設定を調整したり、他のアプリやエンジンを追加したりする必要があります。また、新しいアプリ バージョンが頻繁にリリースされるため、できるだけ最新バージョンを使用することをお勧めします。 - -_primary_ プロジェクト設定は簡単にアップグレードできますが、これにはリスクがあります。この設定はプロジェクトのすべてのユーザが使用するため、問題が発生すると、すべてのユーザに影響を与えてしまいます。ある特定のグループのユーザだけがアクセスできるように、個別のバージョンの設定を作成するのが最適です。この安全な環境では、残りの制作環境に影響を与えることなく、アップグレード、設定変更、および開発を行うことができます。変更のテストが完了したら、安全かつ確実に変更をプライマリ環境設定に適用できます。 - -このプロセスは _「クローン作成」_ と呼ばれます。自分(および招待したその他のユーザ)のみがクローンにアクセスできるようにプライマリ環境設定のコピーを個別に作成するという操作です。ここでは、安全に変更を追加し、特に問題がなければ、この変更をプライマリ環境設定に適用することができます。 - -## 環境設定のクローンを作成する - -Toolkit をセットアップしてプロジェクトを設定したら、セットアップは次のようになります。 - -![](images/config-staging-and-rollout/config_overview.png) - -_studio_ インストールにはすべてのプロジェクトの Core API が格納されます。また、この _studio_ の場所には、Toolkit に対応した {% include product %} プロジェクトへのアクセスに使用できる `tank` コマンドと Toolkit Python API も含まれます。 - -これに加え、各プロジェクトの設定フォルダもあります。このフォルダには当該プロジェクトのすべての設定が含まれます。この設定で特別に動作する `tank` コマンド(および Python API)も含まれます。この `tank` コマンドまたは API コードを使用している場合は、この設定のみを操作できます。 - -新しいプロジェクトをセットアップすると、「 _プライマリ_ 環境設定」が作成されます。これは Toolkit がプロジェクトに既定で使用する環境設定です。このプライマリ環境設定に加えて、プロジェクトに追加の環境設定を作成できます。これらの環境設定は共存でき、チーム全体に影響を与えずに、変更のテスト、アプリのアップグレード、または開発などを少しずつ個別に行う場合に役立ちます。追加の環境設定は、 _クローン_ 作成と呼ばれる設定を新しい場所にコピーするプロセスによって作成されます。 - -環境設定のクローンが作成されると、セットアップは次のように表示されます。 - -![](images/config-staging-and-rollout/pc_overview.png) - -スタジオ レベルの `tank` コマンドとプライマリ プロジェクト設定の `tank` コマンドに加えて、独自の `tank` コマンドを持つ新しいパイプライン設定を使用できるようになりました。この `tank` コマンドを実行すると、ステージング サンドボックスに格納された環境設定のみを操作できます。Maya のいくつかの新しい機能をテストする場合、クローン作成したサンドボックスにアクセスするだけです。`./tank Shot xyz launch_maya` を実行すると、Maya に表示される {% include product %} メニューには、プライマリ環境設定ではなくステージング サンドボックス内の環境設定が反映されます。 - -スタジオ レベルの `tank` コマンドは常にプライマリ環境設定を使用するため、クローン作成した環境設定にアクセスする唯一の方法は、その場所にアクセスして、そのフォルダに格納された `tank` コマンドを使用することです。{% include product %} では、パイプライン設定のエントリに特定のユーザ セットを割り当てることができます。環境設定に関連付けられたユーザは、プライマリ設定のメニューに加えて、新しいメニュー エントリが表示されます。 - -![](images/config-staging-and-rollout/pc_shotgun.png) - -### クローン作成した環境設定を作成する - -アップグレードを安全にテストできるステージング サンドボックスを作成するために、{% include product %} でプロジェクトのパイプライン設定にアクセスし、プライマリ環境設定を右クリックします。設定のクローンを作成するためのオプションが表示されます。 - -![](images/config-staging-and-rollout/clone_menu.png) - -このオプションをクリックすると、この新しい環境設定を格納するディスク上のパスを指定するためのダイアログが表示されます。マルチ OS セットアップを実行している場合は、関連するすべてのプラットフォームにパスを入力してください。 - -![](images/config-staging-and-rollout/clone_dialog.png) - -[OK]をクリックすると、Toolkit は設定をコピーしてクローンをセットアップします。また、クローンを作成したらすぐに {% include product %} ユーザとこの設定が関連付けられるため、{% include product %} 内に新しいメニュー項目が表示されます。 - -### ステージング サンドボックスの変更をプライマリに適用する - -関連する更新を適用して必要なテストを実行したら、`tank push_configuration` コマンドを実行してプロダクション環境に変更を反映することができます。これにより、ステージング サンドボックスで加えたすべての変更がプライマリ環境設定に転送されます。 - -現在の環境設定は、`push_configuration` コマンドを実行するバックアップ フォルダに移動されます。間違って適用した場合、または適用に問題が発生した場合は、バックアップ フォルダ内のコンテンツを選択し、設定フォルダにコピーするだけでロールバックできます。 - -既定では、このコマンドはファイル コレクションを対象のパイプライン設定の `config` フォルダにコピーします。UNIX を使用しており、詳細なアトミック更新が必要な場合は、`push_configuration` コマンドに `--symlink` フラグを追加することができます。これにより、対象のパイプライン設定の `config` フォルダがシンボリック リンクに変換されるため、現在実行中のセッションと設定の不一致が発生するリスクがなく、簡単にアップグレードできます。 - -### クローン作成した古い環境設定を更新する - -以前の開発サンドボックスまたはステージング サンドボックスをセットアップしているが、それが古いためそのコンテンツと最新のプロダクション環境を同期する必要がある場合は、プライマリ環境設定で `push_configuration` コマンドを実行します。 -```shell -tank push_configuration - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/tmp' -- Using configuration 'Primary' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command push_configuration... - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary') to another pipeline configuration in the project. - -Your existing configuration will be backed up. - -The following pipeline configurations are available to push to: - - [324] Staging Sandbox (/my/staging/sandbox) - -Please type in the id of the configuration to push to (ENTER to exit): 324 -Hold on, pushing config... -Checking if there are any apps that need downloading... -Push Complete! - -Your old configuration has been backed up into the following folder: -/my/staging/sandbox/config.bak.20140108_093218 -``` -プライマリ プロジェクト設定からステージング サンドボックスに適用する方法にご注目ください。_プライマリ_ 環境設定の `tank` コマンドを実行しています。複数のサンドボックスをセットアップしている場合は、サンドボックス間にデータを適用することもできます。 - -### クローン作成した環境設定を削除する - -クローン作成した環境設定を削除する場合は、{% include product %} のエントリを削除してディスクからフォルダを削除するだけです。 - -## 最新のアプリとエンジンを取得する - -ステージング サンドボックス(または他の環境設定)内で、利用可能なアプリ更新を確認するために `tank updates` コマンドを実行できます。このコマンドには、環境設定の特定の領域を確認する場合にのみ使用できる基本的なフィルタがあります。 - -```shell ----------------------------------------------------------------------- -Command: Updates ----------------------------------------------------------------------- - -This command will go through your current configuration and check if there are -any updates available. If there are updates, you will be asked if you want to -perform an upgrade. If settings has been added to the new version that you are -installing, you may be prompted to specified values for these. - -Running this command with no parameters will check all environments, engines -and app. This may take a long time. You can also run the updater on a subset -of your installed apps and engines. - -General syntax: -> 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 -``` -## Toolkit Core API をアップグレードする - -このセクションでは、クローンのステージング サンドボックス設定を使用して Toolkit Core API を安全にアップグレードする方法について説明します。ステージング サンドボックスをまだ準備していない場合は、前のセクションの手順に従ってください。 - -ステージング サンドボックスのクローンが[共有スタジオ Core API](https://developer.shotgridsoftware.com/ja/b12f2510/#how-do-i-update-my-pipeline-configuration-to-use-an-existing-shared-core) を使用してパイプライン設定から作成された場合は、固有の Core API コードを使用するようにサンドボックスを更新することができます。これはコアの「ローカライズ」と呼ばれ、ステージング サンドボックスにアクセスして `tank localize` を実行します。このコマンドにより、スタジオ インストールからサンドボックスに Core API がコピーされるため、後で Core API の別のバージョンを実行およびテストすることができます。 - -Toolkit の既定の動作は、コアを既定でローカライズすることです。_事前に共有スタジオ コアを明示的に作成していない場合は、コアが既にローカライズされていると見なした方が間違いありません。_ -```shell -cd /my/staging/sandbox -./tank localize - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/my/staging/sandbox' -- Using configuration 'Staging Sandbox' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command localize... - ----------------------------------------------------------------------- -Command: Localize ----------------------------------------------------------------------- - -This will copy the Core API in /mnt/software/shotgun/studio into the Pipeline -configuration /my/staging/sandbox. - -Do you want to proceed [yn]y - -Localizing Core: /mnt/software/shotgun/studio/install/core -> /my/staging/sandbox/install/core -Copying Core Configuration Files... -Localizing Apps: /mnt/software/shotgun/studio/install/apps -> /my/staging/sandbox/install/apps -Localizing Engines: /mnt/software/shotgun/studio/install/engines -> /my/staging/sandbox/install/engines -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), -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 %} の特別なメニュー項目を使用して、いくつかのアプリを起動します。パイプラインの概要を確認し、必要に応じてテストを実行します。 - -最後に、問題がなければ、スタジオ バージョンの Core API を更新します。一般的な Toolkit のセットアップでは、Core API はすべてのプロジェクト間で共有されるため、スタジオの場所にある `tank` コマンドの `tank core` コマンドを実行すると、すべてのプロジェクトの Core API が更新されます。 - -# プロジェクト ライフサイクルを管理する - -各 Toolkit プロジェクトには、当該プロジェクトのすべての設定を保持する独立した環境設定が含まれます。多くのプロジェクトを管理している場合は、多くの環境設定を管理する必要があることを意味します。このため Toolkit には、個別のプロジェクト向け、およびスタジオのライフサイクルと環境設定の発展向けに環境設定を扱うさまざまなツールと方法があります。このセクションでは、いくつかのベスト プラクティスを紹介し、環境設定のセットアップ方法に関する実際の手順について説明します。 - -スタジオのニーズに応じて、さまざまなレベルの複雑性に分けられる場合があります。Toolkit には 3 つの異なる手法があるため、それぞれについて詳細に説明します。 - -- 最も簡単な方法は、新しいプロジェクトをセットアップするときに以前のプロジェクトから環境設定をコピーすることです。これは小規模なスタジオでプロジェクトの量が少ない場合に最適です。 -- プロジェクトの数が多く、同時に複数のプロジェクトを実行している場合、次のレベルの統合として、`git` バージョン コントロールをお勧めします。Toolkit は git をネイティブでサポートしており、git ベースのワークフローを実行すると、スタジオの環境設定を 1 つにまとめられ、その後この設定に加えたすべての変更がトラックされます。各プロジェクトは、必要に応じて環境設定の変更を安全に取り込むことができます。 -- 大規模な設備を稼働している場合は、1 つの環境設定がスタジオ内で現在アクティブなすべてのプロジェクトに直接接続されるようなセットアップを検討してもよいかもしれません。環境設定に 1 箇所変更を加えると、すべてのプロジェクトに即座に影響します。 - -次のセクションでは、さまざまな方法を詳細に説明します。 - -## 以前のプロジェクトの環境設定を継承する - -これは最も簡単な環境設定の管理方法です。Toolkit で最初にプロジェクトをセットアップする場合、既定の環境設定をダウンロードします。パイプライン設定やファイル システムの場所などが一致するように最初のプロジェクトをセットアップします。プロジェクトの実行中、実行しているアプリ バージョンを更新するには、`tank updates` などのコマンドを実行します。 - -2 つ目のプロジェクトの場合、既定の環境設定を使用して開始しないときは、プロジェクト セットアップ手順で、新しいプロジェクトのスターターとして最初のプロジェクトの環境設定を選択します。つまり、最初のプロジェクトで実行したすべての変更、調整、および改良が、2 つ目のプロジェクトにも適用されます。3 つ目のプロジェクトの場合は 2 つ目のプロジェクトの環境設定を使用する、というように続きます。 - -![](images/config-staging-and-rollout/copy_config.png) - -これは、時間の経過とともに環境設定を徐々に発展させることができる、非常に簡単な方法です。変更と改良は、その場その場でプロジェクトからプロジェクトへと受け継がれていきます。初めて `setup_project` コマンドを実行したとき、セットアップ プロセスで使用する環境設定の指定を求められたら[Enter]キーを押します。これで既定の環境設定のダウンロードおよびインストールが行われます。 - -2 つ目のプロジェクトの場合、以前のプロジェクトの環境設定へのパスのリストが表示されます。これらのいずれかのパスを選択し、セットアップ プロセスで環境設定の指定を求められたら[Enter]キーを押します。これで新しいプロジェクトにこの環境設定がコピーされます。 -``` -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -- Running command setup_project... - ----------------------------------------------------------------------- -Command: Setup project ----------------------------------------------------------------------- - -Welcome to the {% include product %} Pipeline Toolkit Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - My very first project: '/mnt/software/shotgun/first_project/config' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can enter the path -to this config and it will be used for the new project. - -You can also enter an url pointing to a git repository. Toolkit will then -clone this repository and base the config on its content. - -[tk-config-default]: /mnt/software/shotgun/first_project/config -``` -## git ソース コントロールでのスタジオ設定 - -最初の方法には制限事項があります。プロジェクト同士の接続は行われません。10 個のプロジェクトがあり、重要なバグ修正がリリースされたためすべてを更新する必要がある場合、各プロジェクトに手動でアクセスして `tank updates` コマンドを実行する必要があります。 - -この問題を解決するには、マスター環境設定を作成して git ソース コントロールに保存する方法があります。新しいプロジェクトを作成した場合は、セットアップ プロジェクト ダイアログでこの git リポジトリへのパスを入力するだけで、Toolkit がクローンを作成してくれます。これですべてのプロジェクトが同じ「スタジオ マスター」環境設定に接続されます。プロジェクト設定にいくつかの適切な変更を加えた場合は、その変更をコミットしてスタジオ マスターに適用することができます。その後、他のプロジェクトはこの変更を簡単に取り込むことができます。また、git を使用してすべての変更履歴を保持することもできます。 - - git とは - -![](images/config-staging-and-rollout/git_config.png) - -基本的には、git 設定を保持する git リポジトリをセットアップするという考え方です。`tank setup_project` を実行する場合、このリポジトリに git URL を指定します(`username@someserver.com:/studio_config.git` など)。セットアップ プロセスでは、新しいプロジェクトがメインのスタジオ リポジトリに接続されたリポジトリになるようにリポジトリのクローンを作成します。接続後は、変更を適用および取得し、微調整のためにブランチで作業できます。 - -### スタジオの設定リポジトリをセットアップする - -何か操作する前に、スタジオの設定リポジトリを作成する必要があります。このセクションでは、既存の Toolkit 設定を取得してこの設定から git リポジトリを作成する方法について説明します。 - -最初に 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 -``` - -これで git はこれら 2 つのシステム ファイルを無視します。次に進んで残りのファイルを環境設定に追加し、コミットしてスタジオ リポジトリに適用します。 - -```shell -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 リポジトリのクローンを作成し、シームレスに動作します。 - -### プロジェクトに変更を加える - -プライマリ設定を変更する場合は、`config` フォルダにアクセスし、`git diff`、`git commit`、および `git push` を実行するだけです。これにより、プロジェクト設定のクローン作成元のスタジオ設定に変更が適用されます。 - -### プロジェクトを最新バージョンに更新する - -スタジオ レベルの環境設定を更新していくつか変更し、この変更をプロジェクトに取り込む場合は、`config` フォルダにアクセスして `git pull` を実行するだけです。**重要**: 実行が終了したら、変更した環境設定に必要なすべてのアプリ バージョンがシステムに表示されるように `tank cache_apps` を実行してください。 - -### git の高度な利用方法: ブランチ - -Toolkit の既定の動作として、新しいプロジェクトの作成時に単純なクローン操作が実行されます。プロジェクトには git `master` ブランチを使用します。高度なセットアップでは、プロジェクトのプライベートに特定の設定の変更を保存し、他のプロジェクトとその変更を共有しない場合など、プロジェクトの作成後に git ブランチをセットアップできます。その後、このブランチにコミットします。スタジオ設定に適用する変更は、プロジェクトのローカル マスター ブランチと統合してから適用することができます。 - -### git の高度な利用方法: バッチ展開 - -Toolkit はパイプライン設定エンティティを介して {% include product %} サイト向けの異なる環境設定すべてのリストを保持するため、このリストを繰り返して処理し、各項目に `git pull` コマンドを実行して、すべてのプロジェクトでバッチ更新を効率的に実行できます。この機能は、現在 Toolkit に組み込まれているものではありませんが、Python および {% include product %} Python API を使用してスクリプト化することができます。 - -## インクルードを使用したグローバル設定 - -上記の git ベースの方法では、git を介して接続された個別のプロジェクト設定を処理します。更新はプロジェクト全体に自動的に反映されないため、取り込んで適用する必要があります。 - -完全な一括管理の場合、環境設定は必ず 1 つの場所に格納され、1 つの変更がプロジェクトのグループにすぐに反映されるため、Toolkit 設定の `@include` 機能を使用する必要があります。これにより、各プロジェクト設定で実際の環境設定が格納されている一元的な場所をポイントするようにリファレンスを作成することができます。 - -![](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' -maya_mac: '/Applications/Autodesk/maya2012/Maya.app' -maya_linux: 'maya' - -# a configured toolkit app -file_manager: - allow_task_creation: true - file_extensions: [] - hook_copy_file: default - hook_filter_publishes: default - hook_filter_work_files: default - hook_scene_operation: default - launch_at_startup: false - launch_change_work_area_at_startup: false - location: {name: tk-multi-workfiles, type: app_store, version: v0.4.8} - saveas_default_name: scene - saveas_prefer_version_up: false - sg_entity_type_filters: {} - sg_entity_types: [Shot, Asset] - task_extra_display_fields: [] - template_publish: null - template_publish_area: null - template_work: null - template_work_area: null -``` -上記のとおり、複数の異なるレベルでインクルードの定義を作成できます。上の例ではアプリの定義を 1 つと文字列の値を 3 つ設定しています。これらは環境ファイルから参照できます。 -``` -includes: ['/tmp/stuff.yml'] - -engines: - - tk-maya: - - # First all our app definitions - 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: - tk-multi-workfiles: '@file_manager' - - # alternatively, for simple values, we can use them as parameter values for apps: - tk-maya-launcher: - mac_path: '@maya_mac' - linux_path: '@maya_linux' - windows_path: '@maya_windows' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.19} - - # and after the apps section follows specific configuration options for the engine - location: {name: tk-maya, type: app_store, version: v0.4.1} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - template_project: null - use_sgtk_as_menu_name: false -``` -さらに、複数のインクルード ファイルを相互に読み取ることができます。同じインクルード定義が 2 つの異なるファイルに存在する場合は、最新の読み込みファイルが優先されます。上記の環境例は、次のように拡張できます。 -``` -includes: - - # first include a global config file which contains all the studio level app definitions - - '/studio/configurations/studio_apps.yml' - - # now we can include an include containing overrides, for example based on project type. - # if the global config contains an entry named file_manager and the vfx_apps.yml contains - # the same, the vfx_apps definition will be used. - - '/studio/configurations/vfx_apps.yml' - -engines: - - 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: - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.13} - tk-multi-loader2: - action_mappings: - Maya Scene: [reference, import] - Photoshop Image: [texture_node] - Rendered Image: [texture_node] - actions_hook: '{self}/tk-maya_actions.py' - entities: - - caption: Assets - entity_type: Asset - filters: - - [project, is, '{context.project}'] - hierarchy: [sg_asset_type, code] - filter_publishes_hook: '{self}/filter_publishes.py' - location: {name: tk-multi-loader2, type: app_store, version: v1.0.6} - menu_name: Load - publish_filters: [] - title_name: Loader - [... additional app entries here ...] - - debug_logging: true - location: {name: tk-maya, type: app_store, version: v0.3.10} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: {% include product %} Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - use_sgtk_as_menu_name: false - -# each include file has a framworks section containing all the frameworks needed for -# all apps in the file -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' - -engines: - 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` をアプリとエンジンの一連の定義で置き換えるだけです。 - -### グローバル設定を管理する - -グローバル設定の管理は通常の設定の管理よりも複雑です。多数のプロジェクトを効果的に組み合わせて 1 つのファイル構造に統合しているため、プロジェクトから `tank updates` コマンドを実行し、アプリ バージョンを更新すると、他のすべてのプロジェクトに影響します。ここに記載された注意を参考にして作業を進めてください。 - -さらに、クローン作成の対象はプロジェクト設定であり、これにはインクルードしか含まれていないため、標準的なクローン作成ワークフローをすぐに使用することはできません。 - -安全なテストとメンテナンスのために、ソース コントロール(`git` など)にグローバル設定を保存して、特別なテスト プロジェクトの個別のテスト領域で更新することをお勧めします。品質管理上問題がなければ、変更を確定し、実際のグローバル設定に取り込みます。 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 deleted file mode 100644 index 8d783b748..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/file-system-config-reference.md +++ /dev/null @@ -1,1421 +0,0 @@ ---- -layout: default -title: ファイルシステムの設定リファレンス -pagename: toolkit-fs-config-ref -lang: ja ---- - -# ファイル システム設定リファレンス - -このトピックの内容: -- [はじめに](#introduction) -- [パート 1: フォルダ作成構文](#part-1---folder-creation-syntax) - - [ クエリー フォルダ](#query-folders) - - [複数のフォルダ](#multiple-folders) - - [親フォルダを使用して作成する](#create-with-parent-folder) - - [オプション フィールド](#optional-fields) - - [正規表現トークンの一致](#regular-expression-token-matching) - - [例](#examples) - - [ リスト フィールド フォルダ](#list-field-folders) - - [パイプライン ステップ フォルダ](#pipeline-step-folder) - - [パイプライン ステップごとに異なるファイル システム レイアウト](#different-file-system-layouts-for-different-pipeline-steps) - - [詳細設定: 親を指定する](#advanced---specifying-a-parent) - - [タスク フォルダ](#task-folder) - - [詳細設定: 親を指定する](#advanced---specify-a-parent) - - [作業スペースと遅延フォルダ作成](#workspaces-and-deferred-folder-creation) - - [現在のユーザ フォルダ](#current-user-folder) - - [静的フォルダ](#static-folders) - - [シンボリック リンク](#symbolic-links) - - [ファイルとフォルダを無視する](#ignoring-files-and-folders) - - [I/O と権限をカスタマイズする](#customizing-io-and-permissions) - - [フックに渡されるデータ](#data-passed-to-the-hook) - - [独自のフォルダ作成指示をフックに渡す](#passing-your-own-folder-creation-directives-to-the-hook) - - [カスタム設定を静的フォルダに追加する](#adding-custom-configuration-to-static-folders) - - [フォルダの作成方法の簡単なカスタマイズ](#simple-customization-of-how-folders-are-created) -- [パート 2: ファイル システム テンプレートを設定する](#part-2---configuring-file-system-templates) - - [キー セクション](#the-keys-section) - - [例: 英数字の名前](#example---an-alphanumeric-name) - - [例: バージョン番号](#example---version-number) - - [例: 立体視](#example---a-stereo-eye) - - [例: イメージ シーケンス](#example---image-sequences) - - [例: エイリアスを使用して 2 つのフィールドに version という名前を付ける](#example---two-fields-both-named-version-via-an-alias) - - [例: タイムスタンプ](#example---timestamp) - - [例: マッピング](#example---mappings) - - [例: 2 つの有効な値を使用した文字列フィールド](#example---string-field-with-two-valid-values) - - [例: 値を無効にする](#example---disallowing-a-value) - - [例: 文字列のサブセット](#example---subsets-of-strings) - - [パス セクション](#the-paths-section) - - [文字列セクション](#the-strings-section) - - [テンプレートでオプション キーを使用する](#using-optional-keys-in-templates) -- [高度な質問とトラブルシューティング](#advanced-questions-and-troubleshooting) - - [新しいエンティティ タイプをファイル構造に追加するにはどうしたら良いですか?](#how-can-i-add-a-new-entity-type-to-my-file-structure) - - [「エピソード > シーケンス > ショット」の階層に必要なフィールド](#fields-required-for-the-episode--sequence--shot-hierarchy) - - [エピソード](#episode) - - [シーケンス](#sequence) - - [ショット](#shot) - - [エピソード](#episodes) - - [Toolkit テンプレート定義](#toolkit-template-definitions) - - [各自の構造内でブランチをセットアップするにはどうしたら良いですか?](#how-can-i-set-up-a-branch-in-my-structure) - - [カスタム エンティティを使用してカスタム パイプライン ステップを作成するにはどうしたら良いですか?](#how-can-i-create-a-custom-pipeline-step-using-a-custom-entity) - - -このドキュメントは、{% include product %} Pipeline Toolkit のファイル システム中心の環境設定に関する完全なリファレンスです。テンプレート システムの仕組みと利用可能なオプションについて説明します。また、フォルダ作成の設定に追加できるすべてのパラメータについても説明します。 -_このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『[{% include product %} 統合管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。_ - -# はじめに - -このドキュメントでは、サンプルを含むファイル システムに関連した Toolkit の設定の一部を設定する方法について説明します。Toolkit は多くのファイルとディレクトリを処理します。パスの統合方法とその意味を表す方法として Toolkit の設定を活用することができます。通常、ファイル システムへのアクセスには完全に異なる 2 つの方法があります。 - -**フォルダの作成:**{% include product %} でオブジェクトを作成したら、作業開始前にディスク上にフォルダを作成する必要があります。 これは、ショットを表すディスク上にフォルダを作成するという簡単な作業であることも、ショットで作業する各ユーザがディスク上の個別の領域で作業できるようにユーザ固有の作業サンドボックスなどをセットアップするという複雑な作業であることもあります。 - -- Toolkit はアプリケーションの起動時にフォルダを自動的に作成し(ショット BECH_0010 の Maya を起動する場合など)、Maya の起動前にフォルダが作成されるようにします。フォルダが存在しない場合はすぐに作成されます。フォルダは、API メソッド、[シェルの tank コマンド](https://developer.shotgridsoftware.com/ja/425b1da4/#useful-tank-commands)、[ShotGrid の[フォルダを作成](Create Folders)メニュー](https://developer.shotgridsoftware.com/ja/c3b662a6/)を使用して作成することもできます。一連の特別な設定ファイルによってこのフォルダ作成プロセスが制御されます。これについては、次のセクションの「[パート 1](#part-1---folder-creation-syntax)」で説明します。 - -**作業の表示と保存:** 作業中、ディスク上の標準的な場所からファイルを開いてそこに保存する必要があります。通常、このファイルの場所は作業開始前に作成されたフォルダ構造内になります。 - -- フォルダ構造を作成すると、この構造を使用してディスク上の主要な場所を特定できます。これらの場所は、[テンプレート](#part-2---configuring-file-system-templates)と呼ばれています。たとえば、ショットのパブリッシュした Maya ファイルを参照するように `maya_shot_publish` と呼ばれるテンプレートを定義します。[次に、Toolkit アプリ](https://developer.shotgridsoftware.com/ja/f8596e35/)でこのテンプレートを使用します。パブリッシュ アプリはこのテンプレートを使用してファイルの書き込み場所を制御し、[作業ファイル アプリ](https://developer.shotgridsoftware.com/ja/9a736ee3/)はこのテンプレートを使用して開くファイルの場所を把握することができます。Toolkit の環境設定内では、各アプリが使用するテンプレートを制御できます。Toolkit で使用される主なファイルの場所はすべて 1 つのテンプレート ファイルで定義されるため、概要を簡単に表示できます。 - -# パート 1: フォルダ作成構文 - -フォルダ設定は {% include product %} のエンティティをディスク上の場所にマッピングします。1 つの設定ファイルを使用するのではなく、環境設定が、設定された各ユニットのテンプレートして動作する「ミニ ファイル システム」の形式になります。これは**スキーマ設定**と呼ばれています。Toolkit のフォルダ作成が実行されると、フォルダとファイルがこの「ミニ ファイル システム」からその対象場所にコピーされます。動的な動作を作成することができます。たとえば、フォルダで {% include product %} のショットを表し、そのフォルダの命名方法を制御することができます。具体的には、{% include product %} のいくつかのフィールドからそのフォルダの名前を取り込み、フォルダの作成前に文字列変換を実行できます。 - -![環境設定](./images/file-system-config-reference/core_config.png) - -上図はスキーマ設定を示しています。Toolkit のフォルダ作成を実行すると、{% include product %} のエンティティとディスク上のフォルダ間の接続が確立されます。Toolkit はこのフォルダ スキーマ設定を使用してディスク上に一連のフォルダを生成します。各フォルダは {% include product %} に [`Filesystem Location`](https://developer.shotgridsoftware.com/ja/cbbf99a4/) エンティティとして登録されます。これは、{% include product %} データ(ショットやアセット名など)と設定がディスクの実際のフォルダおよび {% include product %} に「ベイク処理」されていると考えることができます。環境設定は常に「project」という名前のフォルダから始まります。これは {% include product %} に接続されているプロジェクトを常に表し、プロジェクトの Toolkit の名前に置き換えられます。このレベルよりも下にあるのは静的フォルダです。たとえば、フォルダ作成ツールが **sequences** フォルダを自動的に作成します。 - -sequences フォルダ内を確認すると、**sequence** フォルダと **sequence.yml** ファイルがあります。Toolkit がフォルダと同じ名前の yaml ファイルを検出すると、この yaml ファイルの内容を読み取り、任意の動的な動作を追加します。この場合、**sequence.yml** にはプロジェクト フォルダ配下の構造が含まれます。この構造は次の 3 種類の項目で構成されます。 - -1. **通常のフォルダとファイル:** 対象の場所に単純にコピーされます。 -2. **yaml ファイルを含むフォルダ**(フォルダと同じ名前): これは動的コンテンツを表します。たとえば、**shot** と **shot.yml** があるとします。フォルダを作成する場合、この **shot** フォルダは数多くのフォルダの生成に使用されるテンプレートになり、1 つのショットに対して 1 つのフォルダが生成されます。 -3. **name.symlink.yml という名前のファイル**は、フォルダの処理中にシンボリック リンクを生成します。 [シンボリック リンク](#symbolic-links)についてはこのドキュメントの後半で説明します。 - -yaml ファイルで表される動的な設定セットアップは次のモードをサポートしています。 - -- **[{% include product %} クエリー フォルダ:](#shotgun-query-folders)** {% include product %} データベース クエリーに基づく動的なフォルダ名です。 たとえば、このモードを使用すると、プロジェクト内のすべてのショットにフォルダを作成できます。 - -- **[{% include product %} リスト フィールド フォルダ:](#shotgun-list-field-folders)**{% include product %} リスト フィールドに基づいた動的なフォルダ名。 たとえば、このモードを使用すると、{% include product %} のアセット エンティティにある {% include product %} リスト フィールド「Asset Type」のすべての値にフォルダを作成できます。 - -- **[遅延フォルダ:](#workspaces-and-deferred-folder-creation)** 2 つ目のフォルダ作成パスが Toolkit API の create folders メソッドを介して要求された場合にのみ実行されます。通常はアプリケーション(Maya など)を起動した場合です。 通常、このメソッドはアプリケーションの起動直前に Toolkit のさまざまなアプリケーション ランチャーによって実行されます。 - -- **[現在のユーザ フォルダ:](#current-user-folder)**現在のユーザを表す特別なフォルダ。 - - -ここで各モードの詳細を見ていきましょう。 - -## クエリー フォルダ - -{% include product %} クエリーに対応した動的なフォルダの場合、yaml ファイルに次の構文を使用します。 - - - # 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 - - # 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" ] } ] - -- 動的なコンテンツ **type** フィールドの値を **shotgun_entity** に設定します。 -- **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" ] }` など)を使用すると、環境設定内の親フォルダを参照できます。この詳細については、[以下の例](#examples)で説明します。 - - -## 複数のフォルダ - -複数のフォルダを一度に作成する式を作成するには、名前の定義にスラッシュを含めます。 - - - # 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 - - # 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" ] } ] - -この種類のパスのファイル システム テンプレートを作成する場合(詳細については、このドキュメントのパート 2 を参照)、_last_folder は {% include product %} のエンティティを表します。上の例は、たとえば、次のテンプレートを使用して表すことができます。 - - asset_step_folder: assets/{asset_type}/{Asset}/{Step} - -`{asset_type}` および `{Asset}` はいずれも文字列のテンプレート キーとして定義されていて、指定されたパスのコンテキストを決定する場合のコンテキストの計算には、`{Asset}` トークンが使用されます。 - -## 親フォルダを使用して作成する - -{% include product %} では、{% include product %} データ構造内にネストがあります。このネストは、親子関係やその逆の関係と見なされます。たとえば、通常、シーケンスはファイル システム内のショットの親です。同様に、通常、ショットはシーケンスの子です。 - -![create_with_parent_folder](images/file-system-config-reference/create_with_parent_folder_02_DS.png) - -{% include info title="注" content="このファイルシステムのネスト関係は [ShotGrid 階層](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html)とは無関係で、この 2 つの間は接続されていません。それぞれまったく個別に設定されています。" %} - -shotgun_entity タイプ フォルダは、親が作成されるとフォルダ作成プロセスが再帰的な処理を行って子も作成されるようにするかどうかを制御するためのオプション フラグをサポートします。フラグは特定の固定値のみを指定できる設定で、この場合は「true」または「false」です。このフラグを追加するには、次の例を使用します。 - - - # recurse down from parent folder - create_with_parent: true - -前述のとおり、この設定はオプションで、既定では false に設定されています。true に設定すると、Toolkit は検出した子エンティティのフォルダを作成します。この例を続けるために、親シーケンスの作成時にショットが作成されるようにショットの `create_with_parent` を `true` に設定します。 - -{% include info title="注" content="既定の設定は `false` です。つまり、シーケンスのフォルダを作成しても、ショット フォルダは自動的に作成されません。また、設定を true にするにはこのフラグを追加する必要があります。false が既定の動作のため、shotgun_entity フォルダに false を指定するフラグはありません。" %} - -## オプション フィールド - -通常、フォルダ名(`{code}_{sg_extra_field}` など)を定義する場合、Toolkit で {% include product %} のすべてのフィールドに値を指定する必要があります。たとえば、`sg_extra_field` が空の場合、エラー メッセージが生成されます。設定する場合、設定しない場合があるフィールドについては、オプションとすることができます。つまり、Toolkit は、値がある場合はこのフィールドを追加し、値が空でエラーでない場合はこのフィールドを除外します。 - -`{code}[_{sg_extra_field}]` のように角括弧を使用してオプション フィールドを定義します。これで次のフォルダ名が生成されます。 - -- `code` が BECH_0010 で `sg_extra_field` が extra の場合は、フォルダ名は `BECH_0010_extra` になります。 - -![optional_fields_BECH_0010_extra](images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png) - -- `code` が BECH_0010 で `sg_extra_field` が空の場合、フォルダ名は `BECH_0010` になります。 - -![optional_fields_BECH_0010](images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png) - -{% include info title="注" content="オプション フィールドを使用できるのは、スキーマのフォルダ名の一部を定義するときだけです。フォルダ全体をオプションとすることはできません。" %} - -## 正規表現トークンの一致 - -Toolkit では、正規表現を使用して、{% include product %} フィールド名の一部を抽出できます。これにより、{% include product %} の値でフォルダの作成を制御できる単純な式を作成できます。たとえば、{% include product %} 内のすべてのアセットに、3 文字のプリフィックスとその後に続くアンダースコア(`AAT_Boulder7` など)が名前として付けられている場合、この名前を 2 つのファイルシステム フォルダのレベルに分割できます(例: `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 - - # 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" ] } ] - -構文は、テンプレート システム内の `subset` トークンと似ています。{% include product %} フィールド名の後にコロンを追加し、その後に正規表現を配置します。正規表現で定義されたすべてのグループ(`()` で囲まれたセクションなど)が、値を抽出するために使用されます。正規表現内に複数のグループがある場合は、結合されます。たとえば、次の式は、オブジェクトを作成したユーザのイニシャルを抽出します。`{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` - -## 例 - -次の一連の例では、filters 構文の使用方法について説明します。 - -**現在のプロジェクトに属している処理中のショットすべてを検出するには**、次の構文を使用します。{% include product %} ショットのエンティティには、ショットをプロジェクトに接続するプロジェクトと呼ばれるリンク フィールドがあります。現在のプロジェクトに関連付けられたショットのフォルダだけを作成するようにしてください。設定ファイル システム上位にプロジェクト レベルがあるため、$syntax を使用してこのレベルを参照すると、Toolkit はこの {% include product %} エンティティ リンクのリファレンスを自動的に作成します。$syntax の有効値は、{% include product %} エンティティ(ディレクトリ階層上位に sequence.yml がある場合はプロジェクトの `"$project"` と `"$sequence"` など)に対応した親フォルダであることを忘れないでください。 - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "status", "relation": "is", "values": [ "ip" ] } - -ツリーの上位にシーケンス フォルダがあり、**このシーケンスに属するすべてのショットにフォルダを作成する場合**、次のようなフィルタを作成できます。 - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } - -**すべてのアセットを検出するには**、次の構文を使用します。 - - entity_type: Asset - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] - -## リスト フィールド フォルダ - -[{% include product %} リスト フィールド](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_field_types_html) フォルダは、{% include product %} ですべてのアセット タイプにフォルダを 1 つずつ作成する場合などに役立ちます。アセット タイプは {% include product %} のリスト フィールドで、このフォルダの設定タイプにより、このアセット タイプのリストに反映されるファイル システムのレイヤを定義できます。 - -![list_field_folders](images/file-system-config-reference/list_field_folders_02_DS.png) - -{% include info title="注" content="フォルダをディスク上に作成したら、関連付けられたデータの値(アセット タイプなど)を変更しないことを強くお勧めします。" %} - -{% include product %} リスト フィールドのすべての項目に対応する動的なフォルダを作成する場合は、yaml ファイルで次の構文を使用します。 - - - # 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 - - # by setting the create_with_parent parameter to true you ensure that list field - - # nodes are always created - create_with_parent: false - - - # the {% include product %} field to use for the folder name - field_name: "{sg_asset_type}_type" - -- 動的なコンテンツ **type** フィールドの値を `shotgun_list_field` に設定します。 -- `entity_type` フィールドは、データの取得元の {% include product %} エンティティ(「アセット」、「シーケンス」、「ショット」など)に設定する必要があります。 -- `field_name` フィールドは、データの取得元の {% include product %} フィールドに設定し、[リスト タイプ フィールド](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_field_types_html)にする必要があります。動的なコンテンツとともに静的な文字列を追加する場合は、式を使用することができます。`field_name: "{sg_asset_type}_type"` この式の例にはテキストとテンプレート キーが含まれます。 - -- オプションの `skip_unused` パラメータを指定すると、使用しないリスト タイプ フィールドの値に対してディレクトリが作成されなくなります(上記の「[オプション フィールド](#optional-fields)」セクションで説明)。{% include info title="注" content="これを True に設定すると、フォルダ作成のパフォーマンスに悪影響を与える可能性があります。また、現在のカリング アルゴリズムは不完全なため、関連するエンティティに複雑なフィルタが適用されている場合には機能しません。"%} - -- オプションの `create_with_parent` パラメータを指定すると、子エンティティ レベル ノードを現在処理していなくても、list_field ノードを強制的に作成します(上記の「[親フォルダを使用して作成する](#create-with-parent-folder)」セクションを参照)。 - - -## パイプライン ステップ フォルダ - -パイプライン ステップ フォルダは {% include product %} の[パイプライン ステップ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Producer_pr_scheduling_tasks_pr_tasks_pipeline_steps_html)を表します。パイプライン ステップはステップとも呼ばれています。 - -![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. このフィールドは、ステップ エンティティから取得する必要があります。name: "short_name" - -ここで、前述の [{% include product %} エンティティ](#list-field-folders)で使用したように名前の式を使用できます。{% include product %} エンティティ フォルダ設定が検出されるまで、ノードは親や祖親などを探します。このエンティティ フォルダはステップに関連付けられ、エンティティのタイプを使用して作成するステップが決定されます。 - -{% include info title="注" content="パイプライン ステップの上位フォルダを作成する場合は、単純に ShotGrid エンティティ ノードを使用して関連するタイプをステップに設定します。" %} - -既定では、ステップ フォルダは特定のエンティティに関連するすべてのステップを自動的に作成します。たとえば、5 つのステップ(レイアウト、アニメーション、エフェクト、ライティング、コンポジット)が指定されたショットのフォルダ作成がトリガされると、この 5 つのステップのステップ フォルダ(レイアウト、アニメーション、エフェクト、ライティング、コンポジット)が自動的に作成されます。 - -ただし、次の構文を使用すると、この処理をオフにすることができます。 - - - # recurse down from parent folder - create_with_parent: false - -環境設定にこの設定を追加すると、ショット フォルダの作成時にステップ フォルダが作成されなくなります。その代わり、タスクでフォルダを作成した場合にのみステップ フォルダが作成されるようになります。これは、ユーザ サンドボックスと作業開始直前に作成される他の構造を設定する場合に役立ちます。 - -### パイプライン ステップごとの異なるファイル システム レイアウト - -ライトおよび合成にフォルダを 1 つと、それ以外のステップにフォルダを 1 つ設定するとします。パイプライン ステップごとに異なるファイル システム レイアウトを指定する場合は、`filter` 句を環境設定に追加します。このフィルタを使用すると、特定のステップの環境設定に含まれるパイプライン ステップの範囲を指定できます。この例では、`step_lightcomp.yml` と `step.yml` の 2 つの設定ファイルを作成できます。最初のファイルでは、次のようにフィルタを追加します。 - - filters: [ { "path": "short_name", "relation": "in", "values": [ "Light", "Comp" ] } ] - -上記の構文は、タイプ `Light` または `Comp` のステップ フォルダが作成された場合にのみ使用されます。その他のファイルの場合には次のようなルールを作成します。 - - filters: [ { "path": "short_name", "relation": "not_in", "values": [ "Light", "Comp" ] } ] - -これで各フォルダ内のサブ構造を個別に定義できます。 - -## 詳細設定: 親を指定する - -フォルダ作成の一環として、Toolkit はパイプライン ステップとエンティティ(「ショット」や「アセット」など)を関連付ける必要があります。このために、既定ではフォルダ ツリーを検索し、見つけた最初の {% include product %} エンティティ フォルダを選択します。たとえば、階層 `Sequence > Shot > Step` にアクセスすると、ステップ フォルダが通常は任意のショットと自動的に関連付けられます。 - -ただし、`Sequence > Shot > Department > Step` など、プライマリ エンティティよりも下の階層のエンティティの場合、既定では、Toolkit がステップと部門レベルを強制的に関連付けます。この場合、Toolkit に検索場所を明示的に指示する必要があります。このためには、ステップ設定に次のコードを追加します。 - - associated_entity_type: Shot - -## タスク フォルダ - -タスク フォルダは {% include product %} の[タスク](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Producer_pr_scheduling_tasks_pr_my_tasks_html)を表します。既定では、タスク フォルダがその親とともに作成されることはありません。たとえば、タスク ノードが関連付けられたショットでフォルダ作成がトリガされても、タスク フォルダは自動的に作成されません。その代わり、タスク フォルダは、タスク({% 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" - -ただし、次の構文を使用することにより、親エンティティとともにタスクが作成されるようにすることができます。 - - - # recurse down from parent folder - create_with_parent: true - -ステップと同様に、フォルダ設定で動作するタスクをフィルタする場合は、必要に応じて `filter` パラメータを指定することもできます。 - -ここで再び、[前述の {% include product %} エンティティ](#list-field-folders)で使用したように名前の式を使用できます。動的コンテンツと静的コンテンツの両方が指定された名前を作成できるように、静的テキストが動的コンテンツとともに使用されます。 - -`name: "task_{content}"` - -{% include product %} エンティティ フォルダ設定が検出されるまで、ノードは親や祖親などを探します。このエンティティ フォルダはタスクに関連付けられ、作成するタスク フォルダの決定に使用されます。 - -### 詳細設定: 親を指定する - -フォルダ作成の一環として、Toolkit はタスクとエンティティ(ショットやアセットなど)を関連付ける必要があります。このために、既定ではフォルダ ツリーを検索し、見つけた最初の {% include product %} エンティティ フォルダを選択します。たとえば、階層 `Sequence > Shot > Task` にアクセスすると、タスク フォルダが通常は任意のショットと自動的に関連付けられます。 - -ただし、`Sequence > Shot > Department > Task,` など、プライマリ エンティティよりも下の階層のエンティティの場合(ショットよりも下)、既定では Toolkit はタスクと部門レベルを強制的に関連付けます。この場合、[前のセクション](#create-with-parent-folder)でステップを使用した更新方法と同じように、Toolkit に検索場所を明示的に指示する必要があります。このためには、タスク設定に次のコードを追加します。 - -`associated_entity_type: Shot` - -## 作業スペースと遅延フォルダ作成 - -遅延フォルダ作成は、2 つ目のフォルダ作成パスが Toolkit API の create folders メソッドのオプションである `engine` パラメータを介して要求された場合にのみ実行されます。通常、このメソッドはアプリケーションの起動直前に Toolkit のさまざまなアプリケーション ランチャーによって実行されます。ほとんどのフォルダ タイプが遅延フラグをサポートします。既定の設定は `false` です。遅延フォルダ作成を `true` にするには、次のフラグを追加します。 - - - # 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 - -このフラグにより、フォルダ作成を 2 つに分割できます。1 つ目は最初の「グローバル」パスで実行し、もう 1 つのパスは後で実行します。通常、2 つ目のパスはエンジンの起動に関連付けられているため(既定値が `false` のために自動的には実行されない)、ユーザはエンジンの起動直前にフォルダを作成できます。このため、主に次の 2 つのワークフローが可能になります。 - -1. **ワークスペース:** アプリケーション固有のフォルダ セットアップです。フォルダはアプリケーションの起動直前に作成できます。 -2. 一般的なワークフローでは、ショットに必要なものとアーティストがそれを処理する方法に応じて、Houdini、Maya、および他のエンジンを必要とするパイプライン ステップを指定します。本来、アーティストはこのパイプライン ステップに対して、maya/、houdini/、および他のディレクトリを作成できますが、任意のショットのアーティストが Maya でしか作業しない場合、Houdini と他のエンジンの空のフォルダは不要になります。そのため、個別のエンジンの起動時にフォルダ作成を遅延し、アーティストが Houdini を使用しない場合、houdini/ フォルダはこのショットで作成されません。 -3. **ユーザ フォルダ:**ユーザ フォルダはアプリケーションの起動直前に作成されます。ユーザ フォルダ設定の構成(上述)は、既定では遅延するように設定されています。 -4. これは、{% include product %} で割り当てられたユーザに基づいてユーザ フォルダを作成するのではなく、エンジンの起動時に現在のユーザのフォルダを作成できるように実行されます。たとえば、ショットで作業を開始して Maya を起動すると、({% include product %} のユーザ名に基づいて)ユーザ名のフォルダが作成されるため、他のユーザの作業を邪魔することはありません。 - -_ヒント: アプリケーション(Maya など)の起動時に通常の静的なフォルダを作成するには、フォルダと同じ名前の yaml 設定ファイルを作成して、次のコードを追加するだけです。_ - - - # 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" - -## 現在のユーザ フォルダ - -現在のユーザ フォルダは特別な構造をしており、別のユーザの作業領域をセットアップできます。一般的なシナリオとして、ある部門の複数のアーティストが同じショットに対して作業している場合があります。ユーザ フォルダを使用することにより、アーティストは自分の作業ファイルを独自のディレクトリに保存し、[作業ファイル アプリ](https://developer.shotgridsoftware.com/ja/9a736ee3/)でこのファイルをフィルタリングできるようになります。この場合、設定ファイルに次のオプションを含める必要があります。 - - - # the type of dynamic content - type: "user_workspace" - - name: "login" - -- **type** フィールドの値を `user_workspace` に設定します。 -- **name** フィールドはユーザ フォルダに付与される名前です。これは {% include product %} のユーザ({% include product %} の `HumanUser`)から取得したフィールドを組み合わせて構成する必要があります。 -- 上記の例のように(`name: login` など)、1 つのフィールドを使用できます。 -- 括弧内に複数のフィールド(`name: "{firstname}_{lastname}"` など)を使用できます。 -- 他にリンクされたエンティティのフィールドを追加する場合は、標準の {% include product %} ドット シンタックス(`name: "{sg_group.Group.code}_{login}"` など)を使用できます。 - -現在のユーザ フォルダは既定では遅延フォルダとして作成されます。つまり、2 つ目のフォルダ作成パスが Toolkit API の create folders メソッドでオプションの `engine` パラメータを介して要求された場合にのみ実行されます。 - -## 静的フォルダ - -静的フォルダ(およびファイル)は最も簡単なタイプです。このフォルダを設定構成に追加すると、フォルダ作成プロセスの実行時にこのフォルダが自動的にコピーされます。[次に、既定の設定の静的フォルダの例](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」で同じ名前を付ける必要があります。次に、以下の構文を使用します。 - - - # the type of dynamic content - type: "static" - - - # pick one of the {% include product %} folders that are above this folder - - # in the folder hierarchy. In this case it is a parent folder - - # named step that we want to look at when deciding if this - - # static folder should be created or not. - constrain_by_entity: "$step" - - - # we can now define constraints for this step. Constraints are simple - - # {% include product %} queries, following the same syntax as the other {% include product %} filters - - # shown in previous sections. - # - - # In our example, if the parent step matches the constraints given - - # in the filter below, the static folder will be created. If not, - - # it (and its children) will be ignored by the folder creation process. - constraints: - - { "path": "short_name", "relation": "is", "values": [ "edit" ] } - -既定では、静的フォルダはその親フォルダとともに自動的に作成されます。これが理想の動作とは異なる場合、静的フォルダがその親とともに作成されないように指示する特別なフラグを追加できます。 - - - # do not recurse down automatically - create_with_parent: false - -## シンボリック リンク - -動的フォルダ作成の一部としてシンボリック リンク(symlink)を作成することができます。`artwork` という名前のシンボリック リンクを作成する場合は、`artwork.symlink.yml` という名前のスキーマ設定でファイルを作成します。これはシステムによってシンボリック リンク要求として識別され、全体にコピーされる代わりに処理されます。 - -`artwork.symlink.yml` ファイルには少なくとも `target` キーが含まれている必要があります。 - - - # 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 - - # so you can for example include permission hints or other stuff - - # that you may need for advanced customization - additional_param1: abc - additional_param2: def - -ターゲット パラメータに `$Asset`、`$Shot`、または `$Project` などの `$EntityType` トークンが含まれている場合、このエンティティ(アセット、ショット、プロジェクトなど)を表すフォルダの名前による解決が試行されます。Toolkit はこの値のファイルシステム ツリーを検索し、ツリーの上位で定義されていない場合は、エラーが報告されます。 - -リスト フィールド(アセットのアセット タイプなど)は、`$Asset.sg_asset_type` のようなエンティティ タイプを含む構文で表されます。以下に例を示します。 - - - # Example of a .symlink.yml file - - - # A target parameter is required. - target: "../renders/$Project/$Asset.sg_asset_type/$Asset" - -symlink の作成は(すべての入力/出力(I/O)のように)フックを処理するフォルダ内で実行されます。特別な `symlink` アクションがシステムからフックに渡され、symlink の名前、完全に解決されたターゲット、この要求とともに定義ファイル内に含まれた yaml メタデータを受け取ります。上記の `artwork` の例の場合、次のようにショットの下にフォルダを作成します。 - - {'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'} - } - -## ファイルとフォルダを無視する - -スキーマ スキャフォールドに格納されたファイルは、フォルダ作成の一環として対象領域にコピーされます。たとえば、このコピー処理はコア フックで処理されるため、権限の取り扱いはプロジェクトまたはスタジオごとにカスタマイズできます。 - -{% include info title="注" content="この種の取り扱いの詳細は「簡単なカスタマイズ」の「[I/O と権限をカスタマイズする](#simple-customization-of-how-folders-are-created)」セクションに記載されています。数多くのフォルダ セットアップを処理する [process_folder_creation コア フック](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)があります。このフックに chmod 呼び出しを追加して(mkdir を使用する際の権限の設定も可能)、作成するフォルダの権限を設定できます。" %} - -場合によっては、フォルダ作成の一環としてコピーされないように特定のファイルとフォルダを除外するのに便利です。たとえば、Git または SVN にフォルダ作成設定を保存している場合、ショットまたはアセットの各フォルダにコピーしない `.git` フォルダと `.svn` フォルダを作成します。コピーしたくないファイルがある場合、`ignore_files` という名前のファイルをプロジェクト設定内の `config/core/schema` フォルダに配置できます。このファイルには、コピーしないようにファイルを定義する glob スタイル パターンを含める必要があります。各パターンは 1 行ずつ指定する必要があります。 - - - # 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 - -また、ワイルドカードを使用することもできます。たとえば、拡張子が TMP のすべてのファイルを除外する必要がある場合は、ファイルに *.tmp の行を追加するだけです。 - - - # 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 - -## I/O と権限をカスタマイズする - -多くの場合、ショットとアセットのフォルダは特別な権限とパラメータを使用して作成する必要があります。これはフォルダ作成中に権限を少しずつ設定するという簡単な作業であることも、適切な資格情報、グループ、および権限を使用してフォルダを作成する特別なフォルダ作成サーバにリモート要求を送信するという複雑な作業であることもあります。 - -また、ファイル システムのツリー内にある各レベルのフォルダに対し、通常は異なる権限を指定する必要があります。たとえば、作業領域フォルダはすべてのユーザに対して書き込み可能にし、ショット フォルダには厳格な権限を指定する必要があります。 - -Toolkit では 1 つのフックでフォルダ作成をカスタマイズできます。これは `process_folder_creation.py` という名前のコア フックです。フォルダ作成 API の呼び出しはフォルダ設定をトラバースし、作成するフォルダを特定するため、作成できる項目のリストが生成されます。この項目にはファイルとフォルダの両方が含まれます。フォルダ作成の最後の手順として、このリストは実際のフォルダの処理を取り扱うフックに渡されます。既定の [process_folder_creation コア フックはここで](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)確認できます。 - -### フックに渡されるデータ - -フォルダ作成フックはフォルダ作成要求ごとに 1 回だけ実行されます。すべてのフォルダ作成データはリストのフックに渡されます。通常、フックはこのデータを繰り返して処理し、Core API から渡されるパラメータに従ってフォルダを作成します。 - -リスト内のデータは常に深さ優先再帰で、最上位のフォルダとファイルから始まり、段階的に深い階層へとトラバースします。次に、フックに渡されるデータの例を示します。 - - [ - - {'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', - 'filters': [{'path': 'project', - 'relation': 'is', - 'values': []}], - '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', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'}, - - {'action': 'copy', - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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'} - }, - - ] - -このデータはディクショナリのリストです。各ディクショナリには `action` と呼ばれるキーがあります。このキーは要求された I/O 項目のタイプを示します。フォルダ作成フックを実装している場合は、次のさまざまなアクションのサポートを追加する必要があります。 - -- `entity_folder`: {% include product %} エンティティと関連付けられたディスク上のフォルダです。 -- `folder`: ディスク上のフォルダです。 -- `copy`: 元の場所から対象の場所にコピーする必要があるファイルです。 -- `create_file`: ディスク上に作成する必要があるファイルです。 -- `symlink`: シンボリック リンクを作成する必要があります。 - -各アクションにはさまざまなディクショナリ キーがあります。たとえば、`entity_folder` アクションには、接続先のエンティティの詳細を含む `entity key` があります。`create_file` には、コピーするファイルや場所をフックに通知する `source_path` と `target_path` のキーがあります。 - -また、すべての `actions` には `metadata` と呼ばれるキーもあります。このキーは、スキーマ セットアップで関連する設定ファイルから取得された YAML 設定データを表します。上記の例は、{% include product %} フォルダの `metadata` キーにスキーマ設定内でセットアップされるすべてのフィルタと命名情報がどのように含まれるかについて示しています。たとえば、上記の例のショット フォルダのメタデータは次のとおりです。 - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -`shot.yml` スキーマ設定ファイルに対応しています。 - - - # Copyright (c) 2013 {% include product %} Software Inc. - # - - # CONFIDENTIAL AND PROPRIETARY - # - - # This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit - - # Source Code License included in this distribution package. See LICENSE. - - # By accessing, using, copying or modifying this work you indicate your - - # 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 - - # 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" ] } ] - -_注: 動的なトークン `$sequence` は実行中に実際のオブジェクトに解決されます。_ - -### 独自のフォルダ作成指示をフックに渡す - -Toolkit で必要になるさまざまな設定指示とは別に、スキーマ設定の一部として独自の設定項目を定義することもできます。この項目は上述の `metadata` キーを使用してフックに渡され、フォルダ作成を制御するために使用されます。 - -たとえば、スキーマ設定に次の構造があるとします。 - - - # 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" - -この場合、フォルダ作成フックを使用して渡されるデータは次のようになります。 - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity', - 'studio_permissions_level': 'admin'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -ここで、特別なパラメータ `studio_permissions_level` はフックに渡され、ファイル権限の制御などのために使用されます。また、このメソッドを使用すると、任意の複雑なデータ構造を渡すこともできます。この一般的な例として、非常に詳細なレベルでの権限の制御があります。 - -### カスタム設定を静的フォルダに追加する - -通常、フォルダ スキーマ設定内にフォルダを作成したけれども、対応する YAML ファイルがない場合、Toolkit はこのフォルダが静的で、作成されるだけだと見なします。 - -カスタム設定のメタデータと静的フォルダを関連付ける場合は、`static` タイプの YAML 設定ファイルを作成する必要があります。たとえば、プロジェクト ルートの下に静的フォルダ `assets` があり、アセットをグループ化してカスタム設定のメタデータを追加するとします。このためには、次の `assets.yml` ファイルを作成します。 - - type: static - studio_permissions_level: "admin" - -フックに渡される設定データには次のコードが含まれます。 - - {'action': 'folder', - 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, - 'path': '/mnt/projects/chasing_the_light/assets'}, - - -任意の複雑なデータはこの方法で YAML 設定ファイルからフックに渡すことができます。 - -## フォルダの作成方法の簡単なカスタマイズ - -簡単なフォルダ作成フックは次のようになります。 - - 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") - if not os.path.exists(path): - if not preview_mode: - # 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") - target_path = i.get("target_path") - if not os.path.exists(target_path): - if not preview_mode: - # do a standard file copy - shutil.copy(source_path, target_path) - # 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") - parent_folder = os.path.dirname(path) - content = i.get("content") - if not os.path.exists(parent_folder) and not preview_mode: - os.makedirs(parent_folder, 0777) - if not os.path.exists(path): - if not preview_mode: - # create the file - fp = open(path, "wb") - fp.write(content) - fp.close() - # 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 - -# パート 2: ファイル システム テンプレートを設定する - -Toolkit テンプレート ファイルは Toolkit 設定のハブの 1 つです。プロジェクトごとにこのようなファイルが常に 1 つあり、パイプライン設定内の **config/core** フォルダ内に格納されています。 - -![configuration](images/file-system-config-reference/templates_file.png) - -このファイルには _「テンプレート」_ の定義とその _「キー」_ が含まれます。 - -**キー**は定義された動的フィールドです。これには、名前、バージョン番号、スクリーン解像度、ショット名などを指定できます。キーには型が設定されるため、キーに文字列または整数などを定義できます。また、キーにはフォーマットを設定することもできるため、文字列に含められるのは英数字のみと定義したり、すべての整数にゼロを 8 個追加する必要があると定義したりできます。 - -**テンプレート**は動的なパスです。テンプレートは `shots/{shot}/publish/{name}.{version}.ma` のように表示されます。このテンプレートはショットの Maya パブリッシュを表し、括弧のフィールドはキーを表します。 - -テンプレート ファイルは、キー、パス、文字列の 3 つのセクションに分かれています。 - -## キー セクション - -キーはフィールドで許容される値を定義します。テンプレート設定ファイルでは、キーは次の形式で定義されます。 - - key_name: - type: key_type - option: option_value - option: option_value - -キーのタイプは、`str`、`int`、または `sequence` のいずれかです。str キーは値が文字列のキーで、int キーは値が整数のキーで、sequence キーは値が整数の列のキーです。 - -タイプの指定とは別に、追加オプションを指定することもできます。オプションは次のとおりです。 - -- `default: default_value` : 値が何も指定されない場合に使用される値です。Toolkit API を使用して一連のフィールド値をパスに解決する場合などに使用できます。 - -- `choices: [choice1, choice2, etc]` : このキーの有効値を列挙します。 - -- `exclusions: [bad1, bad2, etc]` : このキーに禁止されている値を列挙します。キーのタイプが sequence の場合、フレームの仕様値はこの設定で無効にできません。 - -- `length: 12` : このキーは正確な長さに指定する必要があります。 - -- `alias: new_name` : このキーを使用するテンプレートが key_name の代わりに使用する名前を指定します。たとえば、バージョン番号に 2 つのコンセプトがあり、その 1 つはクライアントの希望に応じてゼロを 4 個追加し、もう 1 つは内部的な処理方法が理由でゼロを 3 つ追加するとします。この場合、両方のキーに「version」という名前を付けようとしますが、キー名は固有である必要があるため不可能です。この場合、エイリアスを作成することができます。詳細については、以下の例を参照してください。 - -- `filter_by: alphanumeric` : キーのタイプが文字列の場合にのみ動作します。このオプションを指定すると、英数字の値(通常は ASCII 文字の a-z、A-Z、および 0-9 ですが、入力データが Unicode の場合は他の文字列も含めることが可能)を含む文字列のみが有効値であると見なされます。 - -- `filter_by: alpha` : キーのタイプが文字列の場合にのみ動作します。このオプションを指定すると、英字値(通常は ASCII 文字の a-z と A-Z ですが、入力データが Unicode の場合は他の文字列も含めることが可能)を含む文字列のみが有効値であると見なされます。 - -- `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) に従います。 - -- `strict_matching: true` : キーのタイプが整数の場合にのみ動作します。この設定は、フィールドが正しくフォーマット化された番号のみに一致することを表しています。たとえば、「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)などのパスを定義する必要がある場合に使用されます。抽象フィールドには既定値が必要です。 - -- `subset` と `subset_format`: 指定した入力文字列のサブセットを抽出し、完全なユーザ名からイニシャルのキーを作成したり、すべてのショット名の最初の 3 文字を保持するキーを作成したりできるキーの値を作成します。 - - -テンプレート キーの技術的詳細については、「[API リファレンス](http://developer.shotgridsoftware.com/tk-core/core.html#template-system)」を参照してください。 - -### 例: 英数字の名前 - -既定値が「comp」で英数字を使用する名前です。 - - name: - type: str - default: "comp" - filter_by: alphanumeric - - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk - -### 例: バージョン番号 - -002、102、034、12341 などの番号と一致するバージョン番号 - - version: - type: int - format_spec: "03" - -002、102、034、12341 だけでなく、0002、2、0102 などの番号とも一致するバージョン番号 - - version: - type: int - format_spec: "03" - strict_matching: false - -### 例: 立体視 - -一般的な立体視のセットアップです。視野は L または R のいずれかですが、ソフトウェアで使用する場合、一般的な抽象化方法で %V として参照されることが多くなります。%V はファイル名ではなくファイルのコレクションを参照し、_abstract_ フラグを設定します。抽象フィールドには、抽象的な表現が要求された場合に取得される既定値を指定する必要があります。 - - 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 - -### 例: イメージ シーケンス - -イメージ シーケンスは定義によって抽出され、特に指定しない限り、既定値は %0Xd に設定されます。以下のシーケンスの仕様は、0001、1234、および 12345 などのフレーム番号を識別します。 - - SEQ: - type: sequence - format_spec: "04" - - nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{channel}_{eye}_v{version}.{SEQ}.exr - -### 例: エイリアスを使用して 2 つのフィールドに version という名前を付ける - -「version」という名前のキーを要求するコードで使用できるバージョン番号を 2 つ定義します。これは、2 つの Toolkit アプリの両方に _version_ フィールドが必要だがこの version フィールドを個別にフォーマット化するという場合に役立ちます。 - - nuke_version: - type: int - format_spec: "03" - alias: version - maya_version: - type: int - format_spec: "04" - alias: version - - - # nuke versions are using numbers on the form 003, 004, 005 - - # the nuke publish app requires a field called {version} - - # however {nuke_version} is a valid replacement for {version} - - # 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 - -### 例: タイムスタンプ - -既定値が現在のローカル時間に設定され、YYYY-MM-DD-HH-MM-SS にフォーマット化されるタイムスタンプです。 - - now: - type: timestamp - format_spec: "%Y-%m-%d-%H-%M-%S" - default: now - -既定値が現在の UTC 時間に設定され、YYYY.MM.DD にフォーマット化されるタイムスタンプです。 - - year_month_day: - type: timestamp - format_spec: "%Y.%m.%d" - default: utc_now - -既定値が 9:00:00 に設定され、HH-MM-SS にフォーマット化されるタイムスタンプです。 - - nine_am_time: - type: timestamp - format_spec: "%H-%M-%S" - default: "09-00-00" - -### 例: マッピング - -これは、{% include product %} フィールドをファイル名に追加する場合などに役立ちます。ファイル名にユーザ名を含めるには、次の定義を使用します。 - - current_user_name: - 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 - -Toolkit アプリで `context.as_template_fields()` メソッドを使用してすべてのコンテキスト フィールドを設定すると、上位レベルの `Shot`、`Sequence`、および `Step` が自動的に設定されます。また、`shotgun_entity_type` (上記の `current_user_name` フィールドなど)が定義されたすべてのフィールドもスキャンします。{% include product %} エンティティがコンテキストで定義されている場合は、この値が自動的に解決されるようになります。現在のユーザはコンテキストで常にトラックされ、上記の例では、ショット、シーケンス、ステップのフィールドからデータを取得することもできます。その理由は、このフィールドが上位レベルのパスとコンテキストとして定義されているためです。ただし、フィールドのアセット エンティティを参照しようとしても、Toolkit がデータ取得元の {% include product %} のアセットを把握できないため、上記の例では機能しません。 - -### 例: 2 つの有効な値を使用した文字列フィールド - -多くの場合、スタジオでは ASCII とバイナリの Maya ファイルを保存する必要があるプロジェクトを使用します。この場合、2 つの有効値を含む文字列の値は次のようになります。 - - maya_file_extension: - type: str - choices: ["ma", "mb"] - -{% include info title="注" content="既定のアプリは、`templates.yml` で定義された内容に応じて `.ma` または `.mb` を使用します。そのため、たとえば、プロジェクトで `.ma` の代わりに `.mb` を保存するように作業ファイル アプリを変更する場合は、この 3 つのテンプレート(ショット用)を変更できます。" %} - - 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' - -詳細については、以下の「[パス セクション](#the-paths-section)」を参照してください。 - -### 例: 値を無効にする - -値「assets」が許可されていない文字列フィールドです。これは、たとえば、すべてのアセットが格納された 1 つの「assets」フォルダとともにプロジェクトのすべてのシーケンスを格納するフォルダを含むフォルダが 2 つある場合に役立ちます。 - - project - |--- sequence1 - |--- sequence2 - |--- sequence3 - \--- assets - -assets フォルダが単なる別のシーケンスではないことを Toolkit が正しく理解できるように、「assets」はシーケンス テンプレートの有効な値ではないと定義することができます。 - - sequence: - type: str - exclusions: ["assets"] - -上記の exclusions フィールドにより、正しく解決される 2 つのテンプレートを定義できます。 - - sequence_work_area: {sequence}/{shot}/work - asset_work_area: assets/{asset}/work - -### 例: 文字列のサブセット - -次の例では、前の例を拡張して、ユーザのイニシャルを使用してファイル名のプレフィックスを作成する方法について説明します。 - - user_initials: - type: str - shotgun_entity_type: HumanUser - shotgun_field_name: login - 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 - -## パス セクション - -パス セクションは作業の保存場所を指定します。すべてのパスは少なくとも名前と定義から構成されます。定義は、括弧内に設定したキー名とパスを表すキー設定されていない値を混在させたものです。たとえば、ショットの作業ファイルの定義は次のようになります。 - - shot_work: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - -キーであるシーケンス、ショット、ステップ、およびバージョンは、同じテンプレート ファイルに定義されます。 - -{% include info title="注" content="文字列キーの名前が、関連する ShotGrid エンティティが格納された動的なスキーマ フォルダのエンティティ タイプと一致する場合は、このフォルダ名はトークンで置き換えられます。たとえば、{Sequence} テンプレート キーのタイプが上記のスニペットのように「string」で、スキーマで「sequence」という名前の動的フォルダを使用し、それに対応した `sequence.yml` ファイルでタイプが `shotgun_entity` になるように定義し、ShotGrid の「Sequence」エンティティ タイプに接続するとします。Toolkit は、テンプレート キーがこの動的フォルダのエンティティ タイプに対応することを認識します(両方ともシーケンスであるため)。そのため、Toolkit は生成されたフォルダ名(つまり問題となっている固有のシーケンスの名前)を取得し、テンプレート キーに置き換えます。" %} - -この形式は任意のアトリビュートを定義する必要がある場合に必要です。現在、唯一のオプション属性は `root_name` で、複数のルートを持つプロジェクトでパスのプロジェクト ルートを指定するために使用されます。[複数のルート](https://developer.shotgridsoftware.com/ja/9ea9dd4e/)は、いくつかのプロジェクト ファイルを保存するために新しいストレージ ルートを追加する場合に使用されます。 - -`root_name: name_of_project_root` - -たとえば、次のようになります。 - - shot_work: - definition: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - root_name: primary - -プライマリ ルートではなく別のストレージ ルートを使用する場合は、上記の形式を使用する必要があります。この例では、このシンプルな形式を使用することで、すべてのエントリのプライマリ ルートを使用することを意味しています。 - -## 文字列セクション - -文字列は、単純な形式で指定できる名前と定義を含める必要があるという点でパスに似ています。 - - string_name: string_definition - -文字列定義は、ファイル システム パスではなく文字列に解決されるキー名と他の値で構成されるテンプレートです。{% include product %} でパブリッシュに使用する名前を指定する場合、次のようになります。 - - maya_publish_sg_name: "Maya publish, {name}, v{version}" - -同じファイル内で、キー名として名前とバージョンを定義しています。 - -## テンプレートでオプション キーを使用する - -テンプレートのオプション キーが便利な理由は数多くあります。`{SEQ}` がレンダリング イメージのオプションである場合が一般的なケースの 1 つです。次の例では、`/path/to/render/shot.101.exr` (および 102 や 103 など)のように、フレーム番号で構成される一連の exr を設定できます。QuickTime ムービーにも、`/path/to/render/shot.qt` のように同じテンプレートを使用できます。より一般的なケースとしては、立体視イメージをレンダリングする場合があります。スタジオで使用する変換が `left eye: file.LFT.exr, right eye: file.RGT.exr, stereo image: file.exr?` の場合、`{eye}` をオプションにすることができます。 - -オプション セクションは角括弧を使用して定義できます。 - - shot_work: sequences/{Shot}/work/{Shot}.[v{version}.]ma - -オプション セクションには 1 つ以上のキーが含まれている必要があります。オプション セクションのキーに値を設定せずにパスを解決すると、定義内にこのセクションが存在しなかったかのようにパスが解決されます。上記の例は、1 つの定義に 2 つのテンプレートがベイク処理されていると見なすことができます。 - - shot_work: sequences/{Shot}/work/{Shot}.v{version}.ma - shot_work: sequences/{Shot}/work/{Shot}.ma - -フィールドのディクショナリにパスすると、Toolkit は値に応じて適切なバージョンのテンプレートを選択します。 - - >>> template = tk.templates["shot_work"] - >>> 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 - -# 高度な質問とトラブルシューティング - -## 新しいエンティティ タイプをファイル構造に追加するにはどうしたら良いですか? - -{% include product %} サイトでフィーチャ アニメーションとショートを作成し、エピソード作品の賞を獲得したとします。ここでは、Toolkit にエピソード ワークフローを組み込む方法について説明します。最初に、[こちら](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html)の説明に従って {% include product %} でエピソード作品の階層をセットアップします。 - -![episode_hierarchy](images/file-system-config-reference/episode_hierarchy.jpg) - -{% include info title="注" content="Toolkit でネスト関係を再確認するには(ShotGrid のプロジェクト階層から完全に独立)、上記の「[親フォルダを使用して作成する](#create-with-parent-folder)」セクションを参照してください。"%} - -**追加の参考資料:** - -- [エピソード エンティティはどのように動作するのですか?](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html) -- [エンティティの階層をカスタマイズする](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html) - - -### 「エピソード > シーケンス > ショット」の階層に必要なフィールド - -[`Episode` ([サイト基本設定](Site Preferences) > [エンティティ] (Entities)の)カスタム エンティティ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)を使用したり、{% include product %} 7.0.7.0 で利用可能な正式なエピソード エンティティを使用したりできます。{% include product %}7.0.7.0 以前(2017 より前)に登録している場合、「TV Show」テンプレートはエピソードに `CustomEntity02` を使用します。`CustomEntity02` または正式なエピソード エンティティではない別のエンティティを使用する場合も心配しないでください。{% include product %} と Toolkit には柔軟性があります。両方の場合について説明します。 - -この演習のために、プロジェクト階層更新を使用してエピソードを取り込む方法の例としてエピソード(`CustomEntity02`)と正式なエピソード エンティティを使用します(いずれかを使用)。最初に、プロジェクトの **「エピソード > シーケンス > ショット」**の階層を正しくセットアップするために、次のフィールドが {% include product %} 内にあることを確認します。 - -#### エピソード - -a) **正式なエピソード エンティティを使用する:** 「エピソード」エンティティは、プロジェクト テンプレートからテレビ番組プロジェクトを作成する場合に使用されるエンティティです。 - -![official_episode_entity](images/file-system-config-reference/official_episode_entity.png) - -**または** - -b) **カスタム エンティティを使用する:** `CustomEntity02` は、プロジェクト テンプレートからテレビ番組を作成する場合に使用されるカスタム エンティティです。 _前述のとおり、別のカスタム エンティティを有効にして、`CustomEntity02` の代わりに使用できます。有効にしたエンティティで必ずすべての `CustomEntity02` を置き換えてください。_ - -![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) - -#### シーケンス - -エピソード エンティティにリンクされたエピソード(`sg_episode`)と呼ばれる 1 つのエンティティ リンクが必要です。 - -**正式な `Episode` エンティティを使用する** - - - -**`CustomEntity02` を使用する** - - - -#### ショット - -シーケンス エンティティにリンクされたシーケンス(`sg_sequence`)と呼ばれる 1 つのエンティティ フィールドです。これは {% include product %} のテレビ番組プロジェクト テンプレートの一部として既に存在しています。 - -**正式な `Episode` エンティティを使用する** - - - -**`CustomEntity02` を使用する** - - - -### Toolkit スキーマ定義 - -階層が次のようになっているとします(`{}` 内のフォルダは {% include product %} の名前に基づいて動的に名前が付けられます)。 - - - {project_name} - - shots - episode.yml - - {episode_name} - sequence.yml - - {sequence_name} - shot.yml - - {shot_name} - ... - … - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### エピソード - -`config/core/schema/project/shots` フォルダで、次のコンテンツと同じディレクトリ内に対応する `episode.yml` ファイルを含む `episode` という名前のフォルダを作成します。 - -**正式な `Episode` エンティティを使用する** - - - # 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 - - # 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" ] } ] - -**`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 - - # 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" ] } ] - -これにより、このプロジェクト内にすべてのエピソードのフォルダを作成するよう Toolkit に指示されます。 - -#### シーケンス - -`config/core/schema/project/shots/episode` フォルダで、次のコンテンツと同じディレクトリ内に対応する `sequence.yml` ファイルを含む `sequence` という名前のフォルダを作成します。 - - - # 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 - - # 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" ] } ]` - -これにより、ディレクトリ ツリー内に上記のようにエピソードにリンクされたすべてのシーケンスのフォルダを作成するよう Toolkit に指示されます。 - -#### ショット - -`config/core/schema/project/shots/episode/sequence` フォルダで、次のコンテンツと同じディレクトリ内に対応する `shot.yml` ファイルを含む `shot` という名前のフォルダを作成します。 - - - - # 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 - - # 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" ] } ]` - -これにより、ディレクトリ ツリー内に上記のようにシーケンスにリンクされたすべてのショットのフォルダを作成するよう Toolkit に指示されます。 - -完了後、スキーマには以下の内容が反映されます。 - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### Toolkit テンプレート定義 - -スキーマでエピソードを使用していることを Toolkit に通知するには、上部の[キー セクション](#the-keys-section)で新しいキーを作成して定義する必要があります。 - -**正式な `Episode` エンティティを使用する** - - keys: - ... - Episode: - type: str - ... - -次に、以下のテンプレート パスで `shot_root` テンプレートとショット階層内にある他のテンプレート パスを更新し、`{Episode}` を適切な場所に挿入してディレクトリ構造内のエピソードを指定することでエピソード階層を一致させます。 - - ... - paths: - shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} - … - -**`CustomEntity02` を使用する** - - keys: - ... - CustomEntity02: - type: str - ... - -次に、以下のテンプレート パスで `shot_root` テンプレートとショット階層内にある他のテンプレート パスを更新し、`{CustomEntity02}` を適切な場所に挿入してディレクトリ構造内のエピソードを指定することでエピソード階層を一致させます。 - - ... - paths: - shot_root: shots/{CustomEntity02}/{Sequence}/{Shot}/{Step} - … - -これが **「エピソード > シーケンス > ショット」**の基本的なワークフローに関するすべての作業です。 - -## 各自の構造内でブランチをセットアップするにはどうしたら良いですか? - -これは「[パイプライン ステップごとに異なるファイル システム レイアウト](#different-file-system-layouts-for-different-pipeline-steps)」に関連します。具体的には、各自の構造にブランチを追加する場合です。たとえば、「パイプライン ステップ A」に 1 つの構造を指定し、他のすべてのパイプライン ステップに別の構造を指定するとします。 - -ここで、別の種類の[アセット タイプ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_site_configuration_ar_customizing_fields_html)をパイプラインに追加して、その新しいアセット タイプを Vehicle に設定するとします。Vehicle のファイル構造を変更して、「geoprep」や「lookdev」など、パイプライン ステップごとに異なるフォルダを指定し、このパイプライン ステップ フォルダごとに別のフォルダを作成します。この更新と同様に、現在のアセットの作成方法は同じままです。この新しいフローに対応するようにパイプラインを更新する方法について説明します。 - -**手順 1: スキーマを修正する** - -最初に、新しいアセット タイプを使用した各自のフォルダ構造の表示方法を反映するようにスキーマを修正します。 - -- スキーマでこの新しいアセット タイプ vehicle の新しいブランチを作成します。 -- `asset/` と `asset.yml` と同じレベルで、`asset_vehicle/` フォルダと `asset_vehicle.yml` を追加します。 -- この YAML ファイルにもフィルタ設定があります。vehicle _以外の_ すべてのアセットに適用されるように `asset.yml` 内のフィルタを修正してから、タイプ vehicle のアセット_のみ_に適用されるように `asset_vehicle.yml` を修正します。[これらのフィルタの例については、こちらを参照してください](#different-file-system-layouts-for-different-pipeline-steps)。 -- これで `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 に指示する必要があります。このためには、新しい環境ファイルを作成します。 - -- `env/asset_vehicle_step.yml` と呼ばれる `env/asset_step.yml` のコピーを作成します。`env/asset_vehicle_step.yml` が新しいテンプレートを使用しない限り、この 2 つのファイルは同一です。`maya_asset_work_vehicle` で `maya_asset_work` のすべてのインスタンスを置き換えます。作成した他の vehicle テンプレートでも同じ操作を実行します。 -- 最後に、新しい環境を選択するタイミングを Toolkit に指示する必要があります。このためには、コンテキストのアセットのタイプが `vehicle` の場合に `asset_vehicle` または `asset_vehicle_step` を返すように [pick_environment](https://github.com/shotgunsoftware/tk-config-default/blob/master/core/hooks/pick_environment.py) コア フックを修正します。これで、この新しいタイプ(vehicle)のアセットを使用する場合、Toolkit はその環境設定を使用するため、それに応じたファイル システム構造にファイルを保存およびパブリッシュします。 - -## カスタム エンティティを使用してカスタム パイプライン ステップを作成するにはどうしたら良いですか? - -{% include product %} 7.0.6.0 では、[管理者メニューを使用したパイプライン ステップの管理](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_site_configuration_ar_configure_pipeline_steps_html#managing-pipeline-steps)が紹介されています。この機能を使用すると、パイプライン ステップにカスタム フィールドを簡単に追加できます。**専門家のヒント: 多くの場合、パイプライン ステップでカスタム フィールドを使用するほうが、カスタム エンティティを作成してそのパイプライン ステップを管理するよりもパイプラインの整理に役立ちます。** - -ただし、高度なケースでは、代替のパイプライン ステップを作成すると便利なことがあります。たとえば、パイプライン ステップの領域でプロダクションとパイプラインのそれぞれの命名規則と構造に関する柔軟性と、個別に命名および構造化する際の柔軟性を実現するとします。通常、スケジュールを設定する場合は {% include product %} の組み込みパイプライン ステップを使用しますが、パイプラインでファイル システムを構造化して個別のタスクをグループする場合は、別の[カスタム エンティティ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)を使用することができます。このためには、タスクのカスタム リンク フィールドをカスタム エンティティに作成します。次に、ステップ ノードを介してタスクをグループ化するためにこのリンクがシステムで使用されます。 - -フォルダ設定で、{% include product %} の組み込みパイプライン ステップではなくカスタム ステップ セットアップを使用するように指示する特別な 2 つのオプションを追加します。 - - entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png deleted file mode 100644 index 75eb01e5e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png deleted file mode 100644 index 95859911b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png deleted file mode 100644 index 4e0d2051b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png deleted file mode 100644 index bd8f8498c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png deleted file mode 100644 index 3719f99ac..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png deleted file mode 100644 index 1765ae50f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png deleted file mode 100644 index f964142ad..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png deleted file mode 100644 index a9371f5bb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png deleted file mode 100644 index 146d40a46..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png b/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png deleted file mode 100644 index 458646bb2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png deleted file mode 100644 index e10a5feda..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png deleted file mode 100644 index 361af7a18..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg deleted file mode 100644 index f5d021774..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png deleted file mode 100644 index e93f55868..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg deleted file mode 100644 index d63bd989b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png deleted file mode 100644 index e74dc79c7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg deleted file mode 100644 index fb17fb899..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png deleted file mode 100644 index 991e09535..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png deleted file mode 100644 index 6d9ec5853..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png deleted file mode 100644 index a4aa071ec..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png deleted file mode 100644 index 68fe0a7f0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png deleted file mode 100644 index c48c7d78a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png deleted file mode 100644 index e022822c1..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png deleted file mode 100644 index d2d1a9462..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png deleted file mode 100644 index 99130e53f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png deleted file mode 100644 index 8228f9574..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png deleted file mode 100644 index 2d23c5885..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png deleted file mode 100644 index 30dcea707..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png deleted file mode 100644 index d8f018ce0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png deleted file mode 100644 index fc2381408..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png deleted file mode 100644 index 91f44c3a7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png deleted file mode 100644 index 9d64036ab..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png deleted file mode 100644 index 41d644263..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png deleted file mode 100644 index 7a78a97b6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png deleted file mode 100644 index ced4416b6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png b/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png deleted file mode 100644 index 1fb7f91bf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png b/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png deleted file mode 100644 index 5c7c30bb7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png b/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png deleted file mode 100644 index 248b50f84..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png b/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png deleted file mode 100644 index b9f5661ee..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png b/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png deleted file mode 100644 index bffef80c1..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png b/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png deleted file mode 100644 index 5a018b788..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png deleted file mode 100644 index 6d93de390..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png deleted file mode 100644 index 91168abcf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png deleted file mode 100644 index 6a0efb64a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png deleted file mode 100644 index cbef9e60a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png deleted file mode 100644 index d638c5ddd..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png deleted file mode 100644 index 4755b7174..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png deleted file mode 100644 index 44e138a03..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png deleted file mode 100644 index 0ab33d0c3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png deleted file mode 100644 index 0b935b1b1..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png deleted file mode 100644 index 2330991f2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png deleted file mode 100644 index 2f80c2fa6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png deleted file mode 100644 index 15b3430d6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png b/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png deleted file mode 100644 index a4fd273c4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png deleted file mode 100644 index b0ec0996f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png deleted file mode 100644 index 0bd12b673..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png deleted file mode 100644 index 01080ee79..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png deleted file mode 100644 index 08dc951a2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png deleted file mode 100644 index bbfb7f026..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png deleted file mode 100644 index 023977279..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png deleted file mode 100644 index f45505958..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png deleted file mode 100644 index 09cfd323d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png b/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png deleted file mode 100644 index b30636f02..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png deleted file mode 100644 index eb9a775f4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png deleted file mode 100644 index 393f75051..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png deleted file mode 100644 index f126bace0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg deleted file mode 100644 index e22576198..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png deleted file mode 100644 index 702118d8f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png deleted file mode 100644 index 6d72ec9a0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png deleted file mode 100644 index d71bd8b8a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png deleted file mode 100644 index d38f8678f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png deleted file mode 100644 index 4aebe397c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png deleted file mode 100644 index 3f3337ac9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png deleted file mode 100644 index 072da8614..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png b/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png deleted file mode 100644 index 27cfbe3d2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg deleted file mode 100644 index e30a256b0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg deleted file mode 100644 index 4adf33a70..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png deleted file mode 100644 index acc0a940b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg deleted file mode 100644 index 559262ff2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg deleted file mode 100644 index 77e5c1c04..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png deleted file mode 100644 index f1e50cf3e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png b/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png deleted file mode 100644 index c86fcbcfb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png deleted file mode 100644 index 1e68ad14c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/context.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/context.png deleted file mode 100644 index 29af77d4a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/context.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png deleted file mode 100644 index 6f31b445b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png deleted file mode 100644 index 561b8e957..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png deleted file mode 100644 index 573f8f95b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/login.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/login.png deleted file mode 100644 index d113b92c3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/login.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png deleted file mode 100644 index 4ceac2bc4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png deleted file mode 100644 index e4922ebbf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png b/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png deleted file mode 100644 index 5a018b788..000000000 Binary files a/docs/ja/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md deleted file mode 100644 index e4efd240d..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ /dev/null @@ -1,695 +0,0 @@ ---- -layout: default -title: ShotGrid 統合管理者ガイド -pagename: integrations-admin-guide -lang: ja ---- - -# {% include product %} 統合管理者ガイド - -## はじめに - -このドキュメントは、管理者向けの {% include product %} 統合ガイドです。ユーザ ガイド、管理者ガイド、開発者ガイドのうちの 1 つです。[ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/)は、日常のワークフローで {% include product %} の統合が必要なアーティストを対象にしています。[開発者ガイド](https://developer.shotgridsoftware.com/ja/93c6e555/)は、機能を拡張するために Python コードを記述するユーザを対象にした技術ドキュメントです。この統合管理者ガイドは、これら 2 つのドキュメントの中間に位置するものです。{% include product %} を統合するユーザ、ソフトウェア バージョンを管理するユーザ、パブリッシュ ファイルのストレージを決定するユーザを対象にしています。 - -## 標準的なパイプライン設定 - -Toolkit セットアップの中心はパイプライン設定です。つまり、インストールしたアプリからソフトウェア バージョンに至るまですべてを管理したり、ときにはプロダクションのディレクトリ構造とファイル名をセットアップするためのテンプレートを格納する YAML ファイル セットです。パイプライン設定は高度にカスタマイズ可能ですが、2 つの開始点が用意されています。 - -### 基本設定 - -すぐに利用可能な統合機能は、環境設定ファイルをセットアップまたは変更しなくても実行できるように設計されています。すぐに利用可能な統合機能を使用する場合は、管理が必要なものは何もありません。Toolkit が内部でパイプライン設定を暗示的に使用します。このパイプライン設定は基本設定と呼ばれています。基本設定によって、すべてのサポート対象ソフトウェア パッケージで Panel、Publisher、Loader の 3 つの Toolkit アプリを利用できるようにしたり、{% include product %} のソフトウェア エンティティを参照して {% include product %} Desktop に表示するソフトウェア パッケージを決定します。基本設定にはファイルシステム ロケーション サポートが含まれていません。プロジェクトですぐに利用可能な統合機能を使用すると、Desktop を起動するたびに基本設定のコピーが自動的に更新されるため、常に最新バージョンの統合が使用されます。[こちらからリリース ノートを参照](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)したり、[こちらの Github で基本設定を参照](https://github.com/shotgunsoftware/tk-config-basic/)したりできます。 - -### 既定の設定 - -これは高度なプロジェクト設定を開始するための既定の開始点です。これには、[ファイルシステム ロケーション サポート](https://developer.shotgridsoftware.com/ja/82ff76f7/)およびさまざまな Toolkit アプリとエンジンが含まれています。 - -[こちらから Github の既定の設定を参照](https://github.com/shotgunsoftware/tk-config-default2)できます。既定の設定の構造に関する詳細については、パイプライン設定の `config/env/README.md` ファイルを参照するか、[Github でこちらを参照](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)してください。 - -{% include info title="注" content="以前の設定構造の場合統合の v1.1 リリースでは、効率性と分かりやすさを最大限に高め、基本設定の構造とより適合するように、既定の設定の構造を再調整しました。従来の既定の設定に基づいてプロジェクトを作成することもできます。プロンプトが表示されたら[Legacy Default]を選択し、[Desktop Set Up Project]ウィザードで設定を選択します。"%} - -## Publisher - -Publisher は、すぐに使用可能なワークフローとすべてのパイプライン設定間の移行を簡単に実行できるように設計されています。すぐに使用可能なセットアップでは、ファイルが所定の方法でパブリッシュされるため、テンプレートまたはファイル システム スキーマを定義する必要がありません。高度なセットアップでプロジェクトを設定し、すべてのパイプライン設定を完了したら、同じパブリッシュ プラグインがアプリ設定に導入されたテンプレートを認識し、パブリッシュ前に指定されたパブリッシュ場所に対してファイルのコピーを開始します。このため、すべてが設定されたプロジェクトに対して、環境ごとまたは DCC ごとにテンプレートベースの設定を必要に応じて導入できます。既定の設定は、テンプレートベースのワークフローが完全に設定されているため、Publish アプリでテンプレートを設定する方法の確認に使用できます。詳細については、Github で既定の設定の [tk-multi-publish2.yml ファイル](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-multi-publish2.yml)を参照してください。 - -Publisher のプラグインの作成に関する詳細については、[開発者ガイドの Publisher に関するセクション](https://developer.shotgridsoftware.com/ja/93c6e555/#publisher)を参照してください。 - -## ソフトウェアの起動を設定する - -システムでホスト アプリケーションの {% include product %} の自動検出を使用するのは簡単です。{% include product %} Desktop を起動し、プロジェクトを選択するだけで、アプリケーションの標準フォルダ内に格納されたサポート対象のすべてのソフトウェア パッケージのランチャーが Desktop に表示されます。ただし、このソフトウェアをより細かく管理するための強力なツールもご用意しています。アプリケーションが、特定のプロジェクト、グループ、または個別のユーザに対してのみ表示されるよう制限できます。バージョンを指定し、サイト全体で任意のソフトウェア パッケージを無効にして、ソフトウェア パッケージをまとめてグループ化できます。これらはすべて、{% include product %} のソフトウェア エンティティを使用して管理されます。 - -新しい {% include product %} サイトを作成すると、既定のソフトウェア エンティティ セットが用意されます。サポート対象のホスト アプリケーションごとに 1 つのエンティティが設定されます。このエンティティを修正し、独自のエンティティを追加すると、ユーザの希望どおりに Desktop に表示されるソフトウェアを管理できます。 - -{% include product %} でソフトウェア エンティティを表示するには、画面の右上隅にあるプロファイル アイコンをクリックし、[管理者] (Admin)メニューを開いて、`Software` を選択します。 - -ソフトウェア エンティティには次のフィールドがあります。 - -- **[ソフトウェア名] (Software Name):** Desktop のソフトウェアの表示名です。 -- **[サムネイル] (Thumbnail):** Desktop アイコン用にアップロードされるイメージ ファイルです。 -- **[ステータス] (Status):** ソフトウェアが利用できるかどうかを制御します。 -- **[エンジン] (Engine):** コンテンツ作成ツールの統合の名前です。 -- **[製品] (Products):** バリアント(Houdini に対する Houdini FX など)を含むソフトウェア パッケージの場合は、ここでカンマ区切りリストを指定できます。手動モードではなく、自動検出モードの場合のみ有効です。 -- **[バージョン] (Versions):** 表示するソフトウェアの特定のバージョンです。ここではカンマ区切りリストを指定できます。手動モードではなく、自動検出モードの場合のみ有効です。 -- **[グループ] (Group):** `Group` フィールドの値が同じエンティティは、Desktop の 1 つのアイコンと {% include product %} の 1 つのメニューにグループ化されます。たとえば、Houdini と Nuke を含む FX グループを作成することもできます。 -- **[グループの既定値] (Group Default):** グループ内のいずれかのメンバーの `Group Default` が選択されている場合、このアイコンまたはメニュー項目をクリックすると、このソフトウェアが起動します。 -- **[プロジェクト] (Projects):** ソフトウェアを特定のプロジェクトに制限する方法です。 -- **[ユーザ制限] (User Restrictions):** ソフトウェアを特定のユーザまたはグループに制限する方法です。 -- **[Linux/Mac/Windows のパス] (Linux/Mac/Windows Path):** ソフトウェアに対する OS 固有のパスを明示的に指定するためにこのフィールドを使用します。 -- **[Linux/Mac/Windows の引数] (Linux/Mac/Windows Args):** ソフトウェアの起動時にコマンドに追加するためのコマンドライン引数です。 - -ここでは、これらのフィールドがどのように動作するかを学習するために、いくつかの使用方法を説明します。 - -### 例: 同一アプリケーションのバージョンをグループ化する(自動検出) - -ファイルシステム上に、Maya 2016、Maya 2017、および Maya 2018 の 3 つの Maya のバージョンがあるとします。そして、これらすべてのバージョンをアーティストが利用できるようにしたいのですが、Desktop の 1 つのアイコンにすべてのバージョンがグループ化されている状態にしようと思います。 - -これら 3 つのバージョンの Maya がファイルシステム上の標準の場所にインストールされている場合は自動的に実行されます。Desktop でプロジェクトを選択すると、ローカル マシンの標準的なアプリケーション ディレクトリをスキャンし、3 つのバージョンを探します。{% include product %} で Maya ソフトウェア エンティティを既に指定しているため、特定のバージョンまたはパスを指定しなくても、Desktop 内で検出されたすべてのバージョンが表示されます。 - -![](images/Integration-admin-guide/maya_software.png) - -注意事項は次のとおりです。 - -- {% include product %} がソフトウェアを自動検出すると、1 つのソフトウェア エンティティですべてのバージョンのメニュー項目が生成されます。 -- パス フィールドの値を指定する必要はありません。ソフトウェア エンティティが自動検出モードの場合、アプリは標準の場所に格納されていると見なされます。 - -すべてのバージョンが Desktop に表示されます。Maya の場合は 1 つのアイコンが表示され、ドロップダウン リストにすべての利用可能なバージョンが表示されます。アイコン自体をクリックすると、最新バージョンの Maya が起動します。 - -### 例: 同一アプリケーションのバージョンをグループ化する(手動モード) - -これは標準の場所以外に Maya を格納している場合に最適です。独自のソフトウェア エンティティを作成し、{% include product %} にソフトウェアの場所が分かるようにパスを指定するだけです。次のように設定することができます。 - -![](images/Integration-admin-guide/maya_group_software.png) - -注意事項は次のとおりです。 - -- 自動検出モードとは異なり、任意のソフトウェア パッケージのバージョンごとにソフトウェア エンティティがあります。 -- これをグループ化するには、`Group` フィールドと `Group Default` フィールドを使用します。`Group` で同じ値を共有するソフトウェア エンティティは Desktop で 1 つのアイコンのドロップダウンにグループ化されます。その名前には `Group` の値が使用されます。 -- このアイコン自体をクリックすると、`Group Default` を選択しているグループ内のソフトウェアが起動します。 -- **ソフトウェア エンティティで Linux のパス、Mac のパス、または Windows のパスの _いずれか_ に値を指定すると、このエンティティは手動モードに移行します。**自動検出モードとは異なり、パス フィールドが空のときにソフトウェアが Desktop に _表示_ されます。手動モードでは、ソフトウェア パッケージのパスが指定されており、そのファイルが指定されたパスに存在する場合、ソフトウェア パッケージは任意のオペレーティング システム上で _のみ_ 表示されます。 -- 上記の例では、`Windows Path` を指定していないため、Windows にインストールされている Desktop には、Maya のバージョンは 3 つとも表示されません。 - -### 例: ユーザまたはグループ別に制限する - -上記の最後の例で、Maya 2018 をすべてのユーザに利用可能にする準備がまだできていないとします。しかし、TD、Dev、QA エンジニア、Tessa Tester が使用できるようにするには、どうしたら良いでしょうか。この場合には、`User Restrictions` フィールドを使用します。以下の例を参照してください。 - -![](images/Integration-admin-guide/maya_software_restrictions.png) - -最後の例にいくつかの変更を加えました。 - -- グループの既定値は Maya 2017 です。これをプロダクション バージョンにする場合、このボックスを選択して Maya のアイコンをクリックすると、このバージョンが起動します。 -- ユーザとグループの両方が受け入れられるように、`User Restrictions` フィールドにいくつかの値を追加しました。Dev と TD のグループと Tessa Tester ユーザを追加しました。これで、これらのユーザの Desktop にだけ Maya 2018 が表示されます。 - -### 例: ソフトウェアのバージョンをプロジェクトごとに制限する - -複数のプロジェクトにわたってバージョンを細かく管理することが必要な場合があるかもしれません。プロジェクトを急いで仕上げなければならない場合に、新しいバージョンのソフトウェアの使用を制限していたが、それと同時に、その後継バージョンがリリースされ、評価が行えるようになったとします。このような場合は、ソフトウェア エンティティを次のようにセットアップすると良いかもしれません。 - -![](images/Integration-admin-guide/maya_restrict_permissions.png) - -重要な注意事項は次のとおりです。 - -- 任意の環境の 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 にしか表示されません。 -- ソフトウェア エンティティの `Projects` に値を指定すると、ソフトウェアは指定したプロジェクトでしか表示されなくなります。そのため、スタジオに Chicken Planet シリーズとは別のプロジェクトがある場合は、そのプロジェクトのソフトウェアを明示的に指定する必要があります。 - -### 例: 独自のソフトウェアを追加する - -次のような理由がある場合、{% include product %} Desktop がシステムで自動検出したソフトウェア エンティティとは別に、新しいソフトウェア エンティティの追加が必要になる場合があります。 - -- Desktop でユーザが利用可能なエンジンがないためにアプリケーションを作成する必要がある場合。 -- 社内ソフトウェアやサードパーティのソフトウェアなど、オートデスクではまだ統合を用意していないソフトウェアを使用し、独自のエンジンを定義している場合。 -- ソフトウェアが標準の場所に格納されていないため、{% include product %} とそのソフトウェアを手動で接続する場合(この場合は、上記の「同一アプリケーションのバージョンをグループ化する(手動モード)」に記載されています)。 - -上記の場合、独自のソフトウェア エンティティを追加することができます。`Software Name` フィールドに値を指定する必要があります。ソフトウェアに社内のエンジンを使用する場合は、`Engine` フィールドにこのエンジンの名前を指定します。スタジオによっては、アーティストの利便性を考えて、{% include product %} に統合されていないアプリを Desktop に追加すると良い場合があります。アーティストは Desktop からこのアプリを直接起動できます。バージョンと使用上の制限を管理するために、上記の設定をすべて使用することもできます。この場合、`Engine` フィールドは空の状態にしますが、`Mac Path`、`Linux Path`、`Windows Path` のいずれかのフィールドに値を指定する必要があります。 - -## パブリッシュ ファイル パスの解決を設定する - -ファイルをパブリッシュすると、Publisher により、`Path` と呼ばれる[ファイル/リンク](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_field_types_html) フィールドを含む PublishedFile エンティティが {% include product %} に作成されます。その後、別のユーザがローダーを使用して独自の作業セッションにこのファイルをロードしようとします。Loader は複雑なロジックを使用して、有効なローカル パスをオペレーティング システム上の PublishedFile に解決します。 - -Loader がパブリッシュ データをパスに解決する方法は、パブリッシュがローカル ファイル リンクまたは `file://` URL に関連付けられているかどうかによって異なります。 - -### ローカル ファイル リンクを解決する - -パブリッシュするパスが {% include product %} の[サイト基本設定] (Site Preferences)で定義されたローカル ストレージと一致する場合、ローカル ファイル リンクがパブリッシュ時に自動的に生成されます。パブリッシュがローカル ファイル リンクの場合は、そのローカル オペレーティング システムの表示が使用されます。ローカル ファイル リンクの詳細については、[こちら](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)を参照してください。 - -ローカル ストレージで現在使用しているオペレーティング システムのパスを定義しない場合は、環境変数を使用すると、ローカル ストレージ ルートを指定できます。環境変数の名前は `SHOTGUN_PATH__` の形式になります。そのため、「Renders」と呼ばれるストレージ ルートのパスを Mac で定義する場合は、環境変数 `SHOTGUN_PATH_MAC_RENDERS` を作成します。次の例を使用して詳細を確認してみましょう。 - -- {% include product %} サイトに「Renders」と呼ばれるストレージ ルートがあり、次のパスが指定されているとします。 -- Linux のパス: `/studio/renders/` -- Windows のパス: `S:\renders\` -- Mac のパス: `` - -- 現在は Mac を使用しています。 - -- パス `/studio/renders/sq100/sh001/bg/bg.001.exr` のパブリッシュをセッションにロードします。 - -ローダーはパスを解析して `/studio/renders/` がパスのストレージ ルートであると推定しますが、Mac 用のストレージ ルートは定義されていません。そのため、環境変数 `SHOTGUN_PATH_MAC_RENDERS` を探します。環境変数が見つかると、パスの `/studio/renders` とその値を置き換えます。 - -**注:** 環境変数 `SHOTGUN_PATH_MAC_RENDERS` を定義して、ローカル ストレージ レンダリングで Mac のパスが *設定されている* 場合は、ローカル ストレージの値が使用され、警告がログに記録されます。 - -**注:** 現在のオペレーティング システムで何もストレージが解決できない場合は、`PublishPathNotDefinedError` が発生します。 - -### ファイルの URL を解決する - -ローダーは `file://` URL の解決もサポートします。パブリッシュ時、パブリッシュするパスがサイトのローカル ストレージのどれとも一致しない場合、パスは `file://` URL として保存されます。ローカル ファイル リンクとは異なり、このパスはマルチ OS 表現に保存されず、作成元のオペレーティング システムで定義されるだけです。 - -URL を作成したときとは異なるオペレーティング システムで `file://` URL を解決しようとすると、Loader は一連の手法を使用して URL を有効なパスに解決しようとします。 - -- 最初に、`SHOTGUN_PATH_WINDOWS`、`SHOTGUN_PATH_MAC`、および `SHOTGUN_PATH_LINUX` の 3 つの環境変数を探します。これらの環境変数が定義されている場合は、メソッドがこの方法でパスを変換しようとします。たとえば、Windows で `file:///prod/proj_x/assets/bush/file.txt` を解決する場合、`SHOTGUN_PATH_WINDOWS=P:\prod` と `SHOTGUN_PATH_LINUX=/prod` をセットアップして、パスの解決方法のヒントを示すことができます。 -- 複数の環境変数を使用する場合は、複数のストレージを表現するために、上記の変数名構文にサフィックスを付けて拡張します。 -- レンダリングのストレージがある場合、たとえば、`SHOTGUN_PATH_LINUX_RENDERS`、`SHOTGUN_PATH_MAC_RENDERS`、および `SHOTGUN_PATH_WINDOWS_RENDERS` を定義して、レンダリング ストレージ内のデータを参照するようにパブリッシュされたすべての `file://` URL に移行メカニズムを提供します。 -- その後、編集データのストレージもある場合は、`SHOTGUN_PATH_LINUX_EDITORIAL`、`SHOTGUN_PATH_MAC_EDITORIAL`、および `SHOTGUN_PATH_WINDOWS_EDITORIAL` を定義して、編集ストレージ ルートに移行メカニズムを提供します。 - -これらの環境変数で標準化したら、環境変数を {% include product %} のローカル ストレージに変換できます。ローカル ストレージを {% include product %} のプリファレンスで定義すると、自動的に選択されるため、環境変数は不要になります。 - -- 上記に加えて、{% include product %} のプリファレンスで定義したすべてのローカル ストレージも同様です。 -- ローカル ストレージが定義されているがオペレーティング システムが見つからない場合は、環境変数を使用して指定することができます。たとえば、Linux と Windows で定義された `Renders` と呼ばれるローカル ストレージがある場合は、`SHOTGUN_PATH_MAC_RENDERS` と呼ばれる環境変数を作成することにより、Mac をサポートするように拡張することもできます。この一般的な構文は `SHOTGUN_PATH__` です。 -- 一致するルートがない場合は、ファイル パスがそのまま返されます。 - -次に例を示します。 - -Linux で `/projects/some/file.txt` というファイルをパブリッシュしたため、{% include product %} に `file:///projects/some/file.txt` という URL のパブリッシュが生成されました。Linux のパス `/projects` は Windows の `Q:\projects` と同じであるため、フル パスは `Q:\projects\some\file.txt` に変換されると考えられます。 - -次のすべてのセットアップでこれを処理します。 - -- 一般的な環境ベースのオーバーライド: -- `SHOTGUN_PATH_LINUX=/projects` -- `SHOTGUN_PATH_WINDOWS=Q:\projects` -- `SHOTGUN_PATH_MAC=/projects` - -- 「Projects」と呼ばれる {% include product %} のローカル ストレージで次のパスを設定します。 - -- Linux のパス: `/projects` -- Windows のパス: `Q:\projects` -- Mac のパス: `/projects` - -- 「Projects」と呼ばれる {% include product %} のローカル ストレージで次の環境変数を使用します。 - -- Linux のパス: `/projects` -- Windows のパス: -- Mac のパス: `/projects` -- `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` - -**注:** `Linux path` と環境変数 `SHOTGUN_PATH_LINUX_RENDERS` が設定された {% include product %} でローカル ストレージ `Renders` が定義されている場合は、ストレージが優先され、環境変数は無視され、警告がログに記録されます。一般的に、ローカル ストレージ定義は、環境変数よりも常に優先されます。 - -### 高度な設定 - -PublishedFile パスの解決を実行する基本的なメソッドの詳細については、[開発者参照ドキュメント](http://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.resolve_publish_path)を参照してください。 - -高度なプロジェクト セットアップを使用している場合は、`resolve_publish` コア フックをカスタマイズして、ローカル ファイル リンクと `file://` URL 以外のサポートを追加できます。有効なカスタマイズは次のとおりです。 - -- アップロード ファイルが関連付けられたパブリッシュは、コア フックによって適切なキャッシュの場所に自動的にダウンロードされ、パスが返されます。 -- カスタム URL スキーマ(`perforce://` など)はローカル パスに解決できます。 - -## ブラウザの統合 - -{% include product %} Toolkit でのブラウザ統合とは、{% include product %} Web アプリケーションの右クリック コンテキスト メニューを使用して、Toolkit アプリおよびランチャーにアクセスすることを指します。上に例が示されているこのメニューには、さまざまなエンティティ タイプに対して設定されたアクションが含まれています。プロジェクトのパイプライン設定が複数ある場合、アクションはパイプライン設定別に整理されます。ブラウザ統合により、{% include product %} のコンテキストを認識する Maya や Nuke などのコンテンツ作成ソフトウェアをブラウザから直接起動できるようになります。 - -![](images/Integration-admin-guide/browser_integration.jpg) - -### ブラウザ統合の簡単な歴史 - -長年にわたり、{% include product %} Toolkit のブラウザ統合は複数の方法を取ってきました。技術とセキュリティ要件が進歩するにつれて、ブラウザ統合を実装するためのアプローチも進歩してきました。 - -**Java アプレット(廃止済み)** - -最初は、{% include product %} の Web アプリケーションからローカル デスクトップへのアクセスを提供する Java アプレットとして実装されました。Java アプレットが悪用可能なセキュリティ リスクとして認識されるにつれて、Java アプレットは衰退し、廃止を余儀なくされました。 - -**ブラウザ プラグイン(廃止済み)** - -廃止された Java アプレットと置き換えられたのは、NPAPI を利用して {% include product %} Web アプリケーションからローカル デスクトップにアクセスするブラウザ プラグインでした。NPAPI もセキュリティ リスクとして認識されるようになったため、主要な Web ブラウザは NPAPI の使用をブロックし始めました。そのため、ブラウザ プラグインは廃止を余儀なくされました。 - -**{% include product %} Desktop を介した Websocket v1 (旧バージョン)** - -{% include product %} Desktop アプリ内で Websocket サーバをホストすることも、{% include product %} Web アプリケーションからローカル デスクトップと通信するアプローチでした。この方法は現在も使用できます。この Websocket サーバの RPC API の最初の実装では、以前の Java アプレットとブラウザ プラグインのために開発されたものと同じ基盤技術が使用されていました。サーバが {% include product %} から要求を受け取ると、関連付けられたプロジェクトのパイプライン設定の tank コマンドが使用され、アクション メニューに表示されるコマンドのリストが取得されました。 - -**{% include product %} Desktop を介した Websocket v2** - -Websocket サーバの RPC API のバージョン 2 では、Toolkit アクションの取得、キャッシュ、および実行に使用される基盤メカニズムが変更されています。この変更により、以前のブラウザ統合の実装に関連する多くのパフォーマンス上の問題が解決され、アクション メニューの視覚的構成が改善されました。また、[すぐに利用可能な {% include product %} 統合](https://developer.shotgridsoftware.com/ja/d587be80/#getting-started-with-desktop)のサポートも追加されました。これにより、Toolkit を明示的に設定しなくても動作するようになりました。これがブラウザ統合の現在の実装です。 - -### 環境設定 - -エンティティ タイプごとにユーザに提示されるアクションをコントロールするには、プロジェクトのパイプライン設定で YAML 環境ファイルを変更します。最初にカスタマイズを試みるときに、いくつかの点について理解し、検討する必要があります。 - -**どのエンジン設定を使用するか** - -{% include product %} Web アプリ内の Toolkit アクションを管理する Toolkit エンジンは `tk-shotgun` であるため、このエンジンの設定によりアクション メニューに表示される内容がコントロールされます。 - -![](images/Integration-admin-guide/tk-shotgun_config.png) - -上記の [tk-config-basic](https://github.com/shotgunsoftware/tk-config-basic/) の例では、2 つのアプリが設定されており、いくつかのエンジン コマンドがメニュー アクションになっています。Toolkit アプリによって、アクション メニューに含まれるコマンドが登録されます。これにはローカル システム上の各ソフトウェア パッケージを起動するコマンドなどがあり、{% include product %} サイトにある[ソフトウェア エンティティ](https://developer.shotgridsoftware.com/ja/8085533c/#configuring-software-launches)のリストに対応しています。その結果、メニュー アクションのリストは次のようになります。 - -![](images/Integration-admin-guide/action_menu.png) - -ブラウザ統合コードにより、ユーザのシステムで Houdini、Maya、Nuke、および Photoshop のインストールが検出されたため、それぞれの統合を起動するためのメニュー アクションが作成されました。特定の環境設定ファイルでは、その環境のエンティティにソフトウェアのランチャーを表示するために、ソフトウェア エンティティの _エンジン_ が必要になります。そのため、この例では、`tk-houdini`、`tk-maya`、`tk-nuke`、および `tk-photoshopcc` エンジンのすべてが、このスニペットの取得元であるファイルに含まれている必要があります。たとえば、このエンティティのランチャーのリストから Maya を削除する場合は、環境設定ファイルから `tk-maya` エンジン ブロックを削除するだけです。 - -また、Publish アプリの Publish... コマンドもメニューに含まれています。 - -**どの YML ファイルを使用するか** - -環境設定の [pick_environment.py コア フック](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py)によってコントロールされるプライマリ環境設定(`config/env/*.yml`)、または `config/env/shotgun_.yml` ファイルを使用する [tk-config-default](https://github.com/shotgunsoftware/tk-config-default/) を利用する旧式アプローチという 2 つの方法のいずれかを使用できます。 - -標準環境ファイルを使用する場合、ブラウザの統合では `pick_environment` コア フックが使用され、指定されたエンティティのアクション メニューに使用される環境設定ファイルが決定されます。最も単純なケースでは、環境はエンティティ タイプに対応します。たとえば、ショットを右クリックした場合、結果のアクション メニューは `config/env/shot.yml` の `tk-shotgun` ブロックで設定されます。より複雑なロジックを使用するように `pick_environment` フックをカスタマイズすることができます。標準環境ファイルに `tk-shotgun` エンジンが設定されておらず、`shotgun_.yml` ファイルが存在する場合はフォールバックが発生します。これにより、エンティティ固有の環境ファイルを利用する従来の設定でブラウザの統合を行うことができます。 - -**_ヒント: tk-config-default2 によるブラウザ ランチャーからのソフトウェアの削除_** - -{% include product %} ブラウザからソフトウェアを起動する設定の更新方法は、tk-config-default と tk-config-default2 で異なります。 - -tk-config-default2 では、更新は config/env/includes/settings/[`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml) に適用されます。tk-config-default では、更新は config/env/`shotgun_task.yml` で実行されていました。 - -たとえば、ブラウザ上でアセットから起動するときに、オプションのリストから Mari を削除してみましょう。 - -まず、[`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 -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmari: "@settings.tk-multi-launchapp.mari" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -ブラウザでアセットのオプションのリストから Mari を削除するために、Mari の行を削除します([`tk-multi-launchmari: "@settings.tk-multi-launchapp.mari"`](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-shotgun.yml#L29))。 - -``` - -# asset -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -次に、{% include product %} ブラウザで特定のソフトウェアを起動する機能を削除したいエンティティ(Shot など)ごとに同じ手順を実行します。ファイルを保存したら、1 分待ってからブラウザをハード リフレッシュして設定を有効にする必要があります。 - -### キャッシング - -ブラウザの統合には堅牢なキャッシング メカニズムがあるため、可能な限りすばやくメニュー アクションをユーザに表示することができます。Toolkit をブートストラップしてエンジン コマンドのリストを取得するプロセスに時間がかかることがあるため、この機能が必要です。 - -**キャッシュはいつ無効になるか** - -Websocket サーバの RPC API は、キャッシュされたデータがまだ有効かどうかを判断するために、2 つのものを確認します。YAML ファイルの変更時刻と、サイトのソフトウェア エンティティの内容です。指定された環境設定内のいずれかの YAML ファイルが、キャッシュ データが書き込まれた後に変更されている場合、必要なデータが再キャッシュされ、新しいデータが {% include product %} Web アプリケーションに返されます。同様に、データがキャッシュされた後に {% include product %} のソフトウェア エンティティ上のフィールドが変更された場合、Toolkit はブートストラップされ、新しいデータがキャッシュされます。 - -**キャッシュ ファイルはディスク上のどこにあるか** - -キャッシュ ファイルの場所は、オペレーティング システムによって異なります。 - -``` -OS X: ~/Library/Caches/Shotgun//site.basic.desktop/tk-desktop -Windows: %APPDATA%\Shotgun\\site.basic.desktop\tk-desktop -Linux: ~/.shotgun\\site.basic.desktop\tk-desktop -``` - -### フック メソッド - -`browser_integration.py` フックは、次のフック メソッドを提供する `tk-framework-desktopserver` に含まれています。 - -- `get_cache_key`: このメソッドは、指定した設定の URI、プロジェクト エンティティ、およびエンティティ タイプに使用されるキャッシュ エントリのキーを決定します。既定の実装では、設定の URI およびエンティティ タイプが組み合わされます。 -- `get_site_state_data`: このメソッドを使用すると、{% include product %} からクエリーされた追加データを、キャッシュ内データの有効性をテストするために使用されるハッシュに含めることができます。既定では、サイト上にあるすべてのソフトウェア エンティティの状態が使用されますが、ハッシュに追加データを含める場合は、このフック メソッド内で実装することができます。 -- `process_commands`: このメソッドは、{% include product %} Web アプリケーションに返されるコマンドをカスタマイズまたは変更する場所を提供します。このメソッドに提供されるデータ構造は、各ディクショナリが単一のメニュー アクションを表す、ディクショナリのリストです。データは必要に応じて変更、除外、またはリストに追加することができ、Toolkit アクションを要求するメニューに直ちに反映されます。 - -### ログ - -ブラウザ統合のログは、Toolkit の[標準のログ格納場所](https://developer.shotgridsoftware.com/ja/38c5c024/)にあります。関連するログ ファイルは `tk-desktop.log` と `tk-shotgun.log` です。また、Google Chrome を使用している場合は、ブラウザの開発者コンソールで関連するログ出力を利用できることがあります。 - -### トラブルシューティング - -Web アプリケーションとローカル デスクトップとの通信は複雑な性質を持つため、途中で障害が発生する可能性があります。以下に、障害の例とそのような状況になったときに最初にとるべき手順についての提案をいくつか示します。 - -**アクション メニューに[{% include product %} Desktop を開くかインストールしてこのメニューを有効にする] (Open or install ShotGrid Desktop to enable this menu)と表示される** - -![](images/Integration-admin-guide/install_desktop.png) - -これは、次の 3 つのうちのいずれかを意味する可能性があります。 - -1. {% include product %} 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/ja/38c5c024/) にエラーを説明するログが表示されます。このログを [{% include product %} のサポート チーム](https://knowledge.autodesk.com/ja/contact-support)に送信してください。 - -**アクション メニューにアクションが表示されない** - -![](images/Integration-admin-guide/no_actions.png) - -このエンティティ タイプに対してアクションが予想されている場合、これは設定上の問題があることを示しています。考えられる問題はいくつかあります。 - -1. `tk-shotgun` エンジンは正しい YAML 環境ファイルで設定されているものの、その環境設定内にアプリが存在しない。この場合、このエンティティ タイプに対してアクションが存在しないことが意図されている可能性があります。 - -2. `tk-shotgun` エンジンが正しい YML 環境ファイルで設定されていて、アプリが存在するにもかかわらず、アクションがメニューに表示されない。これは、アプリが初期化に失敗したことが原因の可能性があります。この場合、問題に関する説明が [tk-shotgun.log および tk-desktop.log](https://developer.shotgridsoftware.com/ja/38c5c024/) に記録されています。 - -3. このエンティティ タイプに対応する環境に、`tk-shotgun` の環境設定が含まれていない。この場合の最終的な結果は、このリストの 1 番と同じです。この場合、パイプライン設定の `pick_environment` フックを確認することでこのエンティティ タイプに対してどの環境がロードされているかを判断でき、そこで `tk-shotgun` の環境設定を確認できます。 - -4. ディスクに空のメニュー アクション リストがキャッシュされています。キャッシュを強制的に再生成するには、次のいくつかの方法の中から選択できます。 - - - プロジェクトの環境設定で 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...)がメニュー アクションと置き換わらない** - -![](images/Integration-admin-guide/retrieving_actions.png) - -これにはいくつかの可能性があります。 - -1. Websocket サーバがまだキャッシング アクションを完了していない。プロジェクトの環境設定が大幅に更新された後に初めてアクションが取得される場合、プロセスの完了に時間がかかることがあります。時間を置いてから、`tk-desktop.log` の内容を確認して、処理がまだ行われているかどうかを確認してください。 - -2. Websocket サーバが応答に失敗し、その後も応答しない。このような状況はまれですが、`tk-desktop.log` を確認してアクションの要求の結果として追加の処理が行われていないことが明らかになった場合は、[ShotGrid サポートに連絡して](https://knowledge.autodesk.com/ja/contact-support)関連するログ データを提供してください。 - -3. ユーザが複数の {% include product %} サイトで作業している。{% include product %} Desktop が 1 つのサイトに対して認証されているときに、2 番目の {% include product %} サイトからメニュー アクションを要求すると、{% include product %} Desktop を再起動して新しいサイトにログインするかどうかを尋ねられます。この要求が無視されると、2 番目のサイトはメニュー アクションのリストを受け取らなくなります。 - - -## 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` - -`SGTK_PREFERENCES_LOCATION` 環境変数オプションを使用すると、コンピュータ上またはネットワーク上のどこにでも設定ファイルを保存できます。`toolkit.ini` は現在の標準ファイル名です。`config.ini` を使用する場合は、「_従来の場所_」セクションを確認してください。 - -設定ファイルの例については、[こちら](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example)を参照してください。 - -このサンプル ファイルは `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` - - Linux: `~/shotgun/desktop/config/config.ini` - -**プロキシ設定** - -スタジオがプロキシ経由でインターネットにアクセスしている場合、インターネットへのアクセス時にこのプロキシの使用を Toolkit に指示する必要があります。そのためには、プロキシを `http_proxy` 設定の値に指定します。 - -`http_proxy: ` - -**ローカル ホスト サイトで {% include product %} Desktop を実行する** - -{% include product %} サイトの URL の最後が `shotgunstudio.com` または `shotgrid.autodesk.com` でない場合は、ローカルの {% include product %} サイトを実行していることを示します。この場合、サイトと {% include product %} との統合の準備が完了していない可能性があり、開始前に {% include product %} チームによる何らかの調整が必要になる場合があります。その場合はサポートいたしますので、[チケットを送信](https://knowledge.autodesk.com/ja/contact-support)してください。 - -**ローカル ホスト サイトでアプリ ストアに接続する** - -プロキシ経由でインターネットにアクセスできるローカルの {% include product %} サイトを使用している場合は、ローカルの {% include product %} Web サイトではなく、HTTP プロキシを設定してアプリ ストアにアクセスすると便利です。そのためには、次の行を `toolkit.ini` に追加するだけです。 - -`app_store_http_proxy: ` - -この `` は[開発者ドキュメント](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=reference%20methods#shotgun-methods) - -プロジェクトごとにこの設定を上書きする必要がある場合は、プロジェクトのパイプライン設定の `config/core/shotgun.yml` に上書きします。 - -## オフライン使用のシナリオ - -一般的な使用方法の場合、{% include product %} Desktop は起動時に Desktop アプリ自体、tk-desktop エンジン、および基本設定の更新を自動的に確認します。しかし、オフラインで、またはインターネットから完全に切断されたマシンで統合を実行する場合もあります。次のセクションでは、それぞれのシナリオに対処する方法について説明します。 - -### {% include product %}作成 - -このドキュメントで概要が説明されているオフライン時の問題を解決する方法は、[{% include product %} Create](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) で紹介されている統合機能にも適用されます。{% include product %} Toolkit の動作を調整するために使用されるさまざまな環境変数(`SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` など)は、{% include product %} Create を使用する場合でも、{% include product %} Desktop と同じように適用されます。 - -### オフライン時に統合を実行する - -_シナリオ: {% include product %} の統合を実行したいと考えていますが、インターネットに接続していません。ローカルに {% include product %} をインストールしています。_ - -**ソリューション** - -- 一時的にインターネットに接続できる場合は、{% include product %} Desktop をダウンロードします。Shotgun Desktop には一連の[統合](https://developer.shotgridsoftware.com/ja/d587be80/#introduction)があらかじめパッケージ化されており、サポートされているすべての DCC 向けの {% include product %} の統合に必要なアプリとエンジンがあらかじめすべてバンドルされています。Shotgun Desktop を起動すると自動的にアップグレードが検索されますが、{% include product %} App Store に接続できない場合は、ローカルに存在する最新のバージョンが実行されます。 - -**知っておきたい情報** - -- {% include product %} サイトにアクセスしないと実行できない Toolkit 操作(パブリッシュの登録など)があります。そのため、この解決策はローカルにホストされたサイトでのみ機能します。 -- 更新はローカル マシンにダウンロードされます。 -- 接続と切断を切り替える場合、Desktop に加えて Maya や Nuke などのアプリ内統合でも、接続されているときの起動時にアップグレードがダウンロードされます。 - -### 手動ダウンロードで更新を管理する - -_シナリオ: アーティストのワークステーションがインターネットから切断されているため、Desktop の自動アップデートを使用することができません。それでも更新を入手したいと考えていますが、1 台のオンライン マシンから更新をダウンロードし、個別のアーティストまたは一元化された場所に手動で転送する必要があります。_ - -**ソリューション** - -- インターネットに接続されたワークステーションで {% include product %} Desktop を実行します。起動時に、最新のアップグレードが自動的にダウンロードされます。 -- オプション 1: 共有 Desktop バンドル -- [バンドル キャッシュ](https://developer.shotgridsoftware.com/ja/7c9867c0/)を、すべてのマシンがアクセスできる共有場所にコピーします。 -- オフライン マシンの `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 環境変数がこの場所を指すように設定します。 -- オフライン マシンで Desktop が起動すると、バンドル キャッシュにある利用可能な最新のアップグレードが取得されます。 -- オプション 2: ローカル配置 -- 各ローカル マシンの適切なバンドル キャッシュの場所に、更新されたバンドル キャッシュを配布します。 - -**知っておきたい情報** - -- オプション 1 では、`SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` に定義されている場所から Toolkit コードがロードされます。この場所が共有ストレージにある場合は、多数の小さなファイルをロードするために十分なパフォーマンスがあることを確認してください。 -- Windows のセットアップの場合、当てはまらないことが多々あります。その場合は、代わりにオプション 2 をお勧めします。 - -## 更新をロックする - -Desktop の自動更新は常に最新の状態を保つために役立ちますが、プロジェクトや、場合によってはサイト全体をフリーズしたり、特定のバージョンにロックして更新を防ぐことが必要な場合もあります。 - -### 単一のプロジェクトの更新をフリーズする - -_シナリオ: プロジェクトがもうすぐ完了するため、{% include product %} の統合の更新プログラムが自動的にダウンロードされないようにフリーズしたいと考えています。_ - -**ソリューション** - -- プロジェクトをロックするバージョンを決定します。[統合のリリース ノートはこちらでご覧いただけます。](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes) -- {% include product %} で、ロックするプロジェクトのパイプライン設定エンティティを作成し、次のフィールドを入力します(この例では、v1.0.36 の統合を使用するように環境設定をロックしています)。 -- 名前: `Primary` -- プロジェクト: ロックするプロジェクト -- プラグインの ID: `basic.*` -- 記述子: `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) - -**知っておきたい情報** - -- 更新はローカル マシンにダウンロードされます。 -- 次にインターネットに接続しているときに Desktop を起動すると、基本設定の `v1.0.36` と関連するすべてのコードがマシンにダウンロードされます。 -- `basic.*` は、基本設定のすべてのプラグインがこのオーバーライドを取得することを意味します。たとえば、Nuke と Maya の統合のみをフリーズする場合は、`basic.maya, basic.nuke` を指定します。 -- テストするには、このパイプライン設定エンティティの複製を作成し、`User Restrictions` フィールドに自分のユーザ名を追加します。これにより、自分のみが使用できるようにエンティティが制限され、他のユーザには影響を与えなくなります。この複製した環境設定から Maya などのソフトウェアを起動して、予想される統合バージョンが実行されていることを確認することができます。 - -**既知の問題** - -- Flame 統合のネームスペースは `basic.flame` であり、`basic.*` の一部であることが暗示されています。しかし Flame 統合は、実際には基本設定に含まれていません。そのため、プロジェクトに Flame を使用してこのオーバーライドを実装すると、Flame 統合が機能しなくなります。 -- 解決策は、Flame 専用の追加のパイプライン設定オーバーライドを作成することです。 -- 名前: `Primary` -- プロジェクト: ロックするプロジェクト(すべてのプロジェクトの場合はなし) -- プラグインの ID: `basic.flame` -- 記述子: `sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### サイトの更新をフリーズする - -_シナリオ: 更新を行いたくありません。スタジオ内のすべてのプロジェクトで、何がダウンロードされ、使用されているかを完全にコントロールしたいと考えています。_ - -**ソリューション** - -- 上記の例の手順に従い、`Project` フィールドを空白のままにします。`Project` フィールドにオーバーライドがない場合、このパイプライン設定エンティティは、「サイト」のプロジェクト、つまりプロジェクト外で Desktop によって使用されるサイト設定を含む、すべてのプロジェクトに適用されます。 - -![](images/Integration-admin-guide/freeze_site.jpg) - -**知っておきたい情報** - -- これは、「サイト設定をロックする」場合に使用するワークフローです。これによりすべてがロックされます。また、Desktop メニューから高度なプロジェクト設定に進むことができます。 -- `v1.2.3` などを使用するようサイト全体をロックする場合でも、別の環境設定を使用するよう個々のプロジェクトをロックできます。 - -**既知の問題** - -- Flame が影響を受けることがあります。解決策については、上記のシナリオの「既知の問題」のセクションを参照してください。 - -### 1 つ以外のすべてのプロジェクトの更新をフリーズする - -_シナリオ: 自動更新を許可するテスト プロジェクトを除いて、サイト内のすべてのプロジェクトをロックしたいと考えています。_ - -![](images/Integration-admin-guide/freeze_all_but_one_project.jpg) - -**解決策** - -- 上記のセクションで説明したように、サイトの更新をフリーズします。 -- 例外にするプロジェクトのパイプライン設定エンティティに、次のフィールド値を設定します。 -- 名前: `Primary` -- プロジェクト: ロック _しない_ プロジェクト -- プラグインの ID: `basic.*` -- 記述子: `sgtk:descriptor:app_store?name=tk-config-basic` - -**知っておきたい情報** - -- プロジェクトの[記述子] (Descriptor)フィールドでバージョン番号が省略されていることに注目してください。これは、プロジェクトが基本設定の最新リリースをトラッキングすることを意味します。 - -### ロックされたサイトを安全に更新する - -- シナリオ: v1.0.0 にロックされており、v2.0.0 へのアップグレードを予定していますが、スタジオに配置する前にまず新しいバージョンをテストしたいと考えています。* - -**解決策** - -- {% include product %} でパイプラインの設定エンティティを右クリックし、[選択した項目を複製] (Duplicate Selected)を選択して複製します。 -- クローン作成した設定に「update test」という名前をつけて、自分を[ユーザ制限] (User Restrictions)フィールドに割り当てます。 -- このパイプライン設定を使用するようになります。 -- テストするバージョンを指すように記述子を変更します。 -- テストに参加させるユーザは、[ユーザ制限] (User Restrictions)フィールドに追加して招待できます。 -- 問題なくテストが完了したら、そのバージョンを使用するようにメインのパイプライン設定を更新するだけです。 -- ユーザが Desktop または DCC を再起動すると、更新が取得されます。 - -## パイプラインの設定を引き継ぐ - -環境設定をセットアップすることなく、すぐに利用可能な {% include product %} の統合の基本セットを入手することができます。このドキュメントでは、すぐに利用可能な統合を使用して行うことができる管理の種類について説明します。この基本セットアップは、幅広いカスタマイズをサポートできるように {% include product %} Toolkit プラットフォーム上に組み込まれています。Desktop では、Toolkit プロジェクト セットアップ ウィザードに従って、カスタマイズ可能な、プロジェクト用の完全なパイプライン設定を作成できます。 - -以下の各セクションでは、セットアップ方法が分からない場合に備えて、適正な既定値が設定された例と提案を含むウィザードの各手順を詳細に説明します。 - -#### Desktop からセットアップ ウィザードを起動する - -![](images/Integration-admin-guide/advanced_setup.png) - -プロジェクトに移動すると、Desktop 右底部のユーザ メニューにメニュー項目「Advanced Project Setup...」があります。このメニュー項目をクリックして、Toolkit セットアップ ウィザードを起動します。 - -#### 設定タイプを選択する - -![](images/Integration-admin-guide/wizard_select.png) - -新しいプロジェクトの設定を開始する場合、まずは _使用する設定テンプレート_ を決定します。基本的に、設定テンプレートは、プロジェクトの実行に必要なすべての設定、ファイル システム テンプレート、アプリ、およびロジックが設定された完全なプロジェクト設定です。 - -- これが最初のプロジェクトである場合は、{% include product %} の既定値を使用して開始してみてください。 -- プロジェクトおよび以前のプロジェクトの環境設定を既に設定している場合は、既存のプロジェクトをベースにして新しいプロジェクトを作成することで既定値を簡単に再利用できます。 -- 高度なワークフローの場合は、外部の環境設定または git リポジトリに保存されている環境設定を使用することができます。 - -#### 既定の設定テンプレート - -![](images/Integration-admin-guide/wizard_config_default.png) - -ゼロからスタートする場合はここから始めます。既定の環境設定には、既定のファイル構造とファイル命名規則を使用して設定された最新のアプリとエンジンがすべて含まれています。 - -既定の設定をインストールしたら、設定ファイルを手動で微調整し、パイプラインの特定のニーズに合わせてカスタマイズできます。プロジェクトのセットアップが完了したら、この設定を次のプロジェクトのベースにすることができます。 - -##### 既定の環境設定 - -これは既定の Toolkit VFX 設定で、通常、セットアップを開始するのにぴったりの出発点です。3dsmax、Flame、Houdini、Nuke、Mari、Maya、Motionbuilder、および Photoshop のセットアップが付属し、ディスク上に簡単で分かりやすいフォルダ構造が作成されます。 - -環境設定には数多くの異なる項目があります。 - -- ファイル システムのセットアップ -- ディスク上のキーの場所を特定するためのテンプレート セット -- ワークフローに関連付けられた設定済みのエンジンとアプリのセット - -**ファイル システムの概要** - -標準設定で {% include product %} のアセットとショットを処理します。パイプラインのステップごとに項目を分割します。パイプラインのステップは部門に似ています。各パイプラインのステップには、サポート対象のさまざまなアプリケーションの作業領域とパブリッシュ領域があります。ショット構造は次のようになります。 - -![](images/Integration-admin-guide/folder_structure.png) - -**アプリケーションとワークフロー** - -環境設定には次のコンポーネントが含まれます。 - -- Maya、Mari、Nuke、3dsmax、Flame、Houdini、Photoshop、および Motionbuilder のサポート -- {% include product %} アプリケーション ランチャー -- パブリッシュ、スナップショット作成、バージョン管理 -- Nuke カスタム書き込みノード -- {% include product %} との統合 -- 数多くのその他のツールとユーティリティ - -上記のアプリとは別に、環境設定のインストール後に追加のアプリとエンジンを簡単にインストールできます。 - -#### 既存のプロジェクトをベースにして新しいプロジェクトを作成する - -![](images/Integration-admin-guide/wizard_project_config.png) - -これは以前のプロジェクトのすべての既定値と設定を使用して新しいプロジェクトを作成する、簡単で便利な方法です。Toolkit が、古いセットアップの環境設定を単純に新しいプロジェクトにコピーします。これは環境設定を展開する簡単で実用的な方法です。新しいプロジェクトはすべて古いプロジェクトをベースにすることになります。 - -パイプライン設定の展開と管理の方法に関するドキュメントについては、こちらを参照してください。 - -[プロジェクトの環境設定を管理する](https://developer.shotgridsoftware.com/ja/60762324/#inheriting-the-config-from-your-previous-project) - -#### git の設定テンプレートを使用する - -![](images/Integration-admin-guide/wizard_git.png) - -プロジェクトの環境設定をソース コントロールに接続したままにする場合はこのオプションを使用します。リモート git または github リポジトリに URL を指定すると、セットアップ プロセスで URL がクローン作成されます。これは github だけでなく、すべての git リポジトリで動作します。リポジトリのパスの最後が `.git` で終わるようにしてください。Toolkit が git セットアップとして処理します。プロジェクト設定は git リポジトリであるため、変更をマスター リポジトリだけでなく、他のプロジェクトにも反映することができます。github ベースの環境設定を使用すると、複数の Toolkit プロジェクトを簡単に同期できます。詳細はこちらでご確認ください。 - -[プロジェクトの環境設定を管理する](https://developer.shotgridsoftware.com/ja/60762324/#a-studio-configuration-in-git-source-control) - -Windows 上で実行している場合は、使用するマシンに git をインストールして、`PATH` からアクセスできるようにしておく必要があります。Linux と Mac OS X の場合、通常は既定でインストールされます。 - -#### 設定テンプレートを参照する - -![](images/Integration-admin-guide/wizard_browse.png) - -フォルダとしてまたは zip 圧縮された zip ファイルとしてディスク上に環境設定がある場合は、このオプションを使用します。他のユーザが環境設定を電子メールで送信してきたり、過去のすべてのプロジェクトを参照するマスター設定をディスク上で管理したりする場合は、これが役に立ちます。通常、これはエキスパート オプションであるため、別のプロジェクトの環境設定を使用するか、アプリ ストアの既定の環境設定のいずれかを使用することをお勧めします。 - -#### ストレージをセットアップする - -それぞれの Toolkit プロジェクトでは、すべてのファイルとデータがディスク上の 1 つ以上の共有ストレージの場所に書き込まれます。たとえば、環境設定には、テクスチャを保存するストレージ、レンダリングを保存するストレージ、シーン ファイルを保存するストレージが必要です。通常、これらのストレージは、{% include product %} の[サイト基本設定] (Site Preferences)の _[ファイル管理] (File Management)_ タブでコントロールします。 - -Toolkit セットアップ ウィザードに、設定に必要な各ストレージのルートを {% include product %} のローカル ストレージにマップするよう求めるメッセージが表示されます。 - -![](images/Integration-admin-guide/wizard_storage.png) - -必要なルートおよびその説明(設定の `roots.yml` ファイルで定義)が左側に表示されます。右側には、既存の {% include product %} ローカル ストレージのリストが表示されます。必要なルートごとにストレージを選択します。{% include product %} に現在の OS のパスが設定されていない場合は、入力します。 - -定義されていない他のオペレーティング システムのパスを追加することもできます。既存のパスはロックされるため、このストレージ パスを利用している可能性のある他のプロジェクトに誤って影響が及ぶことはありません。ウィザードのマッピング ページで、必要な各ルートがマッピングされていること、および各マッピングが有効なことを確認します。 - -新しいローカル ストレージを作成するには、ウィザードを使用するか、またはストレージ選択リストの最後にある `+New` 項目を選択します。ローカル ストレージの名前および現在の OS のパスを入力するよう求められます。 - -プロジェクトをセットアップしたら、Toolkit は各ストレージ場所の新しいプロジェクトごとにフォルダを作成します。たとえば、プライマリ ストレージの場所が `/mnt/projects` である場合、_The Edwardian Cry_ と呼ばれるプロジェクトの場所は `/mnt/projects/the_edwardian_cry` になります。環境設定でプライマリ ストレージ以外のストレージも使用している場合、それぞれのストレージの最後が `the_edwardian_cry` フォルダになります。 - -通常、プライマリ ストレージ場所は `/mnt/projects` または `\\studio\projects` のような場所です。一般的に、この場所には、プロジェクトごとにグループ化されたプロジェクト データが既に保存されています。これは多くの場合、共有ネットワーク ストレージ上にあります。 - -#### プロジェクト フォルダ名を選択する - -![](images/Integration-admin-guide/wizard_project_name.png) - -ここではプロジェクトのディスク名を選択します。このフォルダは、環境設定によって必要となる、さまざまなストレージすべてにおいて作成されます。ほとんどの環境設定については UI に簡単なプレビューが表示されます。これはプライマリ ストレージのプレビューのみですが、マルチルート設定を使用している場合は、追加のストレージも表示されます。Toolkit は {% include product %} の名前に基づいて既定のプロジェクト名を表示します。ユーザのセットアップに適した名前を作成するために自由に修正できます。 - -#### 環境設定の場所を選択する - -![](images/Integration-admin-guide/wizard_config.png) - -最後に、設定ファイルを格納するディスク上の場所を決定してください。Toolkit は、以前のプロジェクトと同じディスク上の場所にすべて格納できるように、以前のプロジェクトに基づいた場所を表示します。 - -スタジオ内でこの設定を必要とするすべてのユーザがアクセスできるように、通常、設定ファイルは共有ストレージまたはディスク上に格納されます。このプロジェクトに複数のオペレーティング システムを使用する場合は、必要なすべてのパスを入力してください。すべてのパスがディスク上の同じ場所を表す必要があります。多くの場合、Mac OS X と Linux では同じパスですが、Windows では異なります。 - -これが最初のプロジェクトになる場合は、一般的に、今後のパイプラインのすべての環境設定を保存するディスク上の共有領域を決定します。通常、これはスタジオで共有するソフトウェアやソフトウェア設定を保存する場所です。場所は `/mnt/software/shotgun` のようになります。これは、スタジオのネットワークやファイル命名規則によって異なる場合があります。 - -初めて環境設定をセットアップする場合、スタジオで使用するすべてのプラットフォームのパスをセットアップします。これにより、後ですべてのマシンからアクセスできる環境を簡単に作成できます。たとえば、プロジェクト名が _Golden Circle_ の場合、入力可能なパスは次の 3 つです。 -``` -linux: /mnt/software/shotgun/golden_circle -macosx: /servers/production/software/shotgun/golden_circle -windows: \\prod\software\shotgun\golden_circle -``` - -#### 設定完了後の作業 - -最初の環境設定が完了したら、マニュアルの「次のステップ」に移動し、ニーズに合わせて Toolkit を設定および調整する方法を確認します。 - -[最初のプロジェクトの作成後](https://developer.shotgridsoftware.com/ja/c3b662a6/) - -## 高度な機能 - -### サイレント インストール - -Windows ネットワーク上では、{% include product %} Desktop インストーラの .exe を実行するときに「/S」引数を使用するとサイレント インストールを実行できます。その後、実行可能ファイルのショートカットのコピーを起動フォルダに格納することが可能です。 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 deleted file mode 100644 index 1cc36640f..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: default -title: オフラインでの使用と自動更新のオフ -pagename: turn-off-auto-updates-and-offline -lang: ja ---- - -# オフラインでの使用と自動更新のオフ - -- [自動更新](#auto-updates) - - [自動更新の対象となる部分](#what-parts-auto-update) - - [自動更新の対象ではない部分](#what-doesnt-auto-update) -- [統合オフラインを実行する](#running-the-integrations-offline) - - [初期設定](#initial-setup) - - [更新を管理する](#managing-updates) -- [自動更新をオフにする](#turning-off-auto-updates) - - [プロジェクト レベルまたはサイト レベルで更新をオフにする](#turning-off-updates-at-a-project-or-site-level) - - [1 つ以外のすべてのプロジェクトの更新をオフにする](#turning-off-updates-for-all-but-one-project) - - [アップグレード](#upgrading) - -## 自動更新 -### 自動更新の対象となる部分 - -既定では、{% include product %} Desktop は更新の有無を自動的に確認し、更新がある場合はローカル マシンにインストールします。 - -次の 2 つのコンポーネントの更新が検索されます。 - -- `tk-framework-desktopstartup`: {% include product %} Desktop の起動を支援するフレームワーク。 -- `tk-config-basic`: 既定のサイト設定。 - -この設定は、{% include product %} Desktop で使用する必要があるアプリン、エンジン、フレームワークのバージョン、およびコア バージョンのマニフェストとして機能します。 -設定を更新すると、これらのコンポーネントも更新される可能性があります。検索された更新はダウンロードされ、ユーザのローカル キャッシュに保存されます。元の {% include product %} Desktop インストール ファイルは変更されません。 - - アプリケーションとして機能する {% include product %} Create には、{% include product %} Desktop とは別の独自の更新メカニズムがあります。このメカニズムについては、ここでは説明しません。 -ただし、{% include product %} Create に用意されている統合機能の動作は同様であり、`tk-config-basic` を自動更新して同じユーザ キャッシュに格納する動作も行います。 - -### 自動更新の対象ではない部分 - -- サイト設定を引き継いだ場合、`tk-config-basic` の新しい更新は検索されません。詳細については、[後述](#turning-off-updates-at-a-project-or-site-level)します。 - -- 既定のサイト設定を使用していないプロジェクト(Toolkit の詳細設定ウィザードが実行されているプロジェクト)の設定は、自動更新されません。 - -- {% include product %} Desktop にバンドルされた Python や Qt などのリソースは自動更新されません。 - これらのパーツを更新する必要がある場合は、新しい {% include product %} Desktop インストーラがリリースされることがあります。 - -## 統合オフラインを実行する - -### 初期設定 - -スタジオでインターネット アクセスが制限されている場合や、インターネットにアクセスできない場合は、必要なすべてのパーツがローカルにキャッシュされていることを確認する必要があります。{% include product %} Create または {% include product %} Desktop をダウンロードするには、インターネットに接続できるマシンが 1 台必要になります。 - - {% include product %} Desktop には、基本的な統合の実行に必要なすべての依存関係が事前にパッケージ化されています。 -{% include product %} Create にも依存関係がバンドルされていますが、「[更新を管理する](#managing-updates)」に記載されている手順に従うことも必要になります。 - -いずれかを起動すると自動的に更新が検索されますが、{% include product %} App Store に接続できない場合は、ローカルに存在する最新のバージョンが実行されます。 - -インストーラにバンドルされたコンポーネントは最新でない可能性があるため、{% include product %} Desktop をインストールした後に、以下の「[更新を管理する](#managing-updates)」の手順に従うことをお勧めします。 - -{% include info title="注" content="ネットワーク設定によっては、更新にアクセスできない場合でも、オンラインで更新を探すことができない場合があります。この場合、環境変数 `SHOTGUN_DISABLE_APPSTORE_ACCESS` を `\"1\"` に設定すると、検索の試行を停止することができます。"%} - -{% include info title="注" content="その後も、ShotGrid サイトに接続可能である必要があります。オフラインという用語は、Autodesk App Store に接続して更新をダウンロードできない状態を意味します。"%} - -### 更新を管理する - -`tk-framework-desktopstartup` コンポーネントを更新するには、[最新バージョンをダウンロード](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases)し、ディスク上の場所を指すように環境変数 `SGTK_DESKTOP_STARTUP_LOCATION` を設定する必要があります(これは {% include product %} Desktop にのみ適用されます)。 - -`tk-config-basic` コンポーネントの場合は、依存関係があるため、少し面倒です。 - -1. インターネットに接続されたワークステーションで {% include product %} Desktop または {% include product %} Create を実行します。これらを起動すると、最新のアップグレードが自動的にダウンロードされます。(このマシンで `SHOTGUN_DISABLE_APPSTORE_ACCESS` が設定されていないことを確認してください。) -2. バンドル キャッシュを、すべてのマシンがアクセスできる共有場所にコピーします。 -3. オフライン マシンの `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 環境変数がこの場所を指すように設定します。 -4. オフライン マシンで {% include product %} Desktop または {% include product %} Create が起動すると、バンドル キャッシュにある利用可能な最新のアップグレードが取得されます。 - -{% include info title="警告" content="ネットワーク設定によっては、更新にアクセスできない場合でも、オンラインで更新を探すことができない場合があります。この場合、環境変数 `SHOTGUN_DISABLE_APPSTORE_ACCESS` を `\"1\"` に設定すると、検索の試行を停止することができます。"%} - -## 自動更新をオフにする - -### プロジェクトまたはサイト レベルで更新をオフにする - -{% include info title="注" content="可能であれば、新しい機能やバグ修正をインストールし忘れることがないよう、自動更新を有効にしておくことをお勧めします。"%} - -統合の自動更新をオフにするには、次の手順を実行します。 - -1. 引き続き使用するバージョンを決定します。統合リリースは[こちら](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)にあります。 -2. {% include product %} で、プロジェクトまたはグローバル ページのいずれかにパイプライン設定エンティティを作成し、次のフィールドを入力します(この例では、v1.0.36 の統合を使用するように環境設定をロックしています)。 - - 1. 名前: `Primary` - 2. プロジェクト: すべてのプロジェクトで更新をオフにする場合は、空のままにします。特定のプロジェクトのみをロックする場合は、特定のプロジェクトを選択します。 - 3. プラグインの ID: `basic.*` - 4. 記述子: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - - ![特定のプロジェクトで更新がオフに設定されたパイプライン設定エンティティ](images/offline-and-disabled-auto-updates/freeze-all-projects.jpg) -3. {% include product %} Desktop を起動します。プロジェクト フィールドを空のままにした場合、{% include product %} Desktop はこのバージョンを使用するように切り替わります(まだ切り替わっていない場合)。 - - ![{% include product %} Desktop のバージョン情報](images/offline-and-disabled-auto-updates/shotgun-desktop-about.png) - - プロジェクトを設定した場合は、設定したプロジェクトのみが影響を受け、{% include product %} Desktop の[バージョン情報] (About)ウィンドウは変更されません。 -4. [オプション] `tk-framework-desktopstartup` のバージョンをロックするには、[最新バージョンをダウンロード](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases)し、ディスク上の場所を指すように環境変数 `SGTK_DESKTOP_STARTUP_LOCATION` を設定する必要があります(これは {% include product %} Desktop にのみ適用されます)。 - -大部分の機能は、以前の手順でロックできる環境設定によってコントロールされます。ただし、「自動更新の対象となる部分」セクションに記載されているように、コンポーネントも更新され、環境設定とは別に処理されます。これは {% include product %} Desktop にのみ適用されます。 - -#### 知っておきたい情報 - -- 環境設定のリリースを手動でダウンロードする必要はありません。{% include product %} Desktop を起動するか、プロジェクトを開始すると、自動的に処理されます。 -- `basic.*` は、基本設定のすべてのプラグインがこのオーバーライドを取得することを意味します。たとえば、Nuke と Maya の統合のみをフリーズする場合は、`basic.maya`、`basic.nuke` を指定します。 -- テストするには、このパイプライン設定エンティティの複製を作成し、`User Restrictions` フィールドに自分のユーザ名を追加します。これにより、自分のみが使用できるようにエンティティが制限され、他のユーザには影響を与えなくなります。この複製した環境設定から Maya などのソフトウェアを起動して、予想される統合バージョンが実行されていることを確認することができます。 -- プロジェクト フィールドを空白のままにすると、「サイト設定」が適用されます。 {% include product %} Desktop はプロジェクト外で動作するため、サイト設定が使用されます。{% include product %} Desktop でプロジェクトを選択すると、プロジェクト設定もロードされます。 - -- Flame 統合のネームスペースは `basic.flame` であり、`basic.*` の一部であることが暗示されています。 - しかし Flame 統合は、実際には基本設定に含まれていません。そのため、プロジェクトに Flame を使用してこのオーバーライドを実装すると、Flame 統合が機能しなくなります。 - 解決策は、Flame 専用の追加のパイプライン設定オーバーライドを作成することです。 - - 名前: `Primary` - - プロジェクト: ロックするプロジェクト(すべてのプロジェクトの場合はなし) - - プラグインの ID: `basic.flame` - - 記述子: `sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### 1 つ以外のすべてのプロジェクトの更新をオフにする - -上記の例の手順に従ってすべてのプロジェクトの更新をオフにした場合に、特定のプロジェクトの更新を有効にするには、次の操作を実行します。 - -1. 上記のセクションで説明したように、サイトの更新をオフにします。 -2. 例外にするプロジェクトのパイプライン設定エンティティに、次のフィールド値を設定します。 - - 名前: `Primary` - - プロジェクト: ロックしないプロジェクト - - プラグインの ID: `basic.*` - - 記述子: `sgtk:descriptor:app_store?name=tk-config-basic` - ![2 つのパイプライン設定(1 つはサイト全体の更新をオフにし、もう 1 つは単一プロジェクトの更新を有効にする)](images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg) - [記述子] (Descriptor)フィールドでバージョン番号を省略すると、プロジェクトは基本設定の最新リリースをトラックします。 - -### アップグレード - -設定を更新する場合は、すべてのユーザに展開する前に、新しいバージョンをテストしなければならないことがあります。 - -1. {% include product %} でパイプラインの設定エンティティを右クリックし、**[選択した項目を複製] (Duplicate Selected)**を選択して複製します。 -2. クローン作成した設定に「update test」という名前をつけて、自分を[ユーザ制限] (User Restrictions)フィールドに割り当てます。 -3. このパイプライン設定を使用するようになります。 -4. テストするバージョンを指すように記述子を変更します。 -4. テストに参加させるユーザは、`User Restrictions` フィールドに追加して招待できます。 -5. 問題なくテストが完了したら、そのバージョンを使用するようにメインのパイプライン設定を更新するだけです。 -6. ユーザが {% include product %} Desktop を再起動し、現在開いているソフトウェアと実行中の {% include product %} の統合を再起動すると、更新が選択されます。 diff --git a/docs/ja/guides/pipeline-integrations/administration/other-integrations.md b/docs/ja/guides/pipeline-integrations/administration/other-integrations.md deleted file mode 100644 index b943b794a..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/other-integrations.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: その他の統合 -pagename: other-integrations -lang: ja ---- - -# その他の統合 - -{% include product %} の API を使用することで、多数のサードパーティのパッケージと統合することができます。ただし、{% include product %} とすぐに統合できるものもあります。 - -## Cinesync - -Cinesync では、複数の場所から再生を同時に同期できます。{% include product %} との統合により、バージョンのプレイリストを作成し、Cinesync で再生して、セッション時に作成したノートを {% include product %} に送信できます。 - -詳細については、[http://www.cinesync.com/manual/latest](http://www.cinesync.com/manual/latest)を参照してください。 - -## Deadline - -{% include product %} と Deadline の統合により、すべてのサムネイル、フレームへのリンク、および他のメタデータとともにレンダリングしたバージョンが {% include product %} に自動的に送信されます。 - -詳細については、[https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html](https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html) を参照してください。 - -## Rush - -Deadline との統合とほぼ同じように、{% include product %} と Rush の統合により、すべてのサムネイル、フレームへのリンク、および他のメタデータとともにレンダリングしたバージョンが {% include product %} に自動的に送信されます。 - -詳細については、[http://seriss.com/rush-current/index.html](http://seriss.com/rush-current/index.html) を参照してください。 - -## Subversion (SVN) - -内部で使用される、軽量で柔軟性に優れた {% include product %} の統合では、{% include product %} でリビジョンをトラックし、チケットとリリースにリンクすることができます。また、外部ウェブ SVN リポジトリ ビューアと統合できるように Trac にもリンクできます。これは SVN にポストコミット フックを追加することで実行できます。このフックは、コミットからいくつかの ENV 変数を取得し、さまざまなフィールドに設定して {% include product %} でリビジョン エンティティを作成する {% include product %} API スクリプトです。スタジオのニーズに合わせて修正し、API を使用しているだけなので、ローカルまたはホストされたインストールで使用することができます。詳細については、[https://subversion.apache.org/docs](https://subversion.apache.org/docs/)を参照してください。 diff --git a/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md deleted file mode 100644 index 158de8036..000000000 --- a/docs/ja/guides/pipeline-integrations/administration/toolkit-overview.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -layout: default -title: Toolkit の概要 -pagename: toolkit-overview -lang: ja ---- - -# Toolkit の概要 - -![](https://sg-toolkit.s3.amazonaws.com/tank/docs/docs/10/no_version_0330_043251/icon_256.png) - -# {% include product %} Pipeline Toolkit のさまざまなコンセプトの概要 - -ここでは、アプリとエンジンの仕組み、Toolkit の起動方法と現在のコンテキスト(作業領域)の管理方法、ディスク上にフォルダを作成する方法など、主要なコンセプトについて詳細に説明します。環境設定と開発に関与するユーザはここから始めることをお勧めします。 - -_このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『[{% include product %} 統合管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。_ - -# はじめに - -このドキュメントでは、いくつかの主要機能の詳細について説明します。説明、例、簡単なデモを通じて、Toolkit のすべてがおわかりいただけると思います。このドキュメントは、Toolkit に慣れる方法や、Toolkit のメリットを紹介する初心者向けのドキュメントです。すべての内容を確認すれば、いくつかの主要なコンセプトとそのコンセプトの仕組みを理解できます。 - -![](images/toolkit-overview/overview.png) - -以下に、Toolkit (SGTK)の簡単な説明を示します。 - -- Toolkit は {% include product %} プラットフォームを使用する _Pipeline Toolkit_ です。このツールキットを使用すると、簡単にツールを作成してインストールできます。 -- Toolkit はファイル システム ベースのツールです。ディスク上の格納場所を整理できるため、ディスク上で管理するものを適切に構造化できます。 -- Toolkit は支援ツールです。パイプラインでデータを引き継いだり抽出化することはありませんが、アーティストが情報を見つけやすく、ミスを防ぐことができるようにする優れたツールです。 -- Toolkit は、パブリッシュしたものをすべて {% include product %} に保存して作業を共有できるようにします。Toolkit を使用すると、制作上の更新や作業を簡単に共有できます。 - -次のセクションでは、Toolkit の詳細とその仕組みについて説明します。 - -# プロジェクトと環境設定 - -Toolkit の環境設定は、すべてプロジェクト中心に行います。プロジェクトは通常、{% include product %} 内でライフサイクルを開始し、入札とプリプロダクションの段階を経て、コンテンツを作成できる段階になったら、Toolkit をプロジェクトに合わせて設定します。 - -![](images/toolkit-overview/new_project.png) - -新しいプロジェクトをセットアップする場合は、 _テンプレート設定_ を使用します。テンプレート設定には、エンジンとアプリ、ファイル システムの設定、およびその他の設定があらかじめ定義されています。Toolkit を初めて使用する場合は、まずはサンプルの設定を使用して吟味してみてください。別のプロジェクトで Toolkit を既に使用したことがある場合は、新しいプロジェクトでもまずはその設定を使用してみることをお勧めします。この方法では、スタジオの設定を展開して、それぞれの新しいプロジェクトに合わせて調整できます。もちろん、スタジオの設定を個別に管理し、新しいプロジェクトすべてのテンプレートとして使用することもできます。 - -それぞれの設定を使用して、数多くの _ストレージ ポイント_ を定義します。標準のサンプル設定「`tk-config-default`」の場合、 _プライマリ_ と呼ばれる 1 つのストレージ ポイントを定義します。つまり、すべてのプロダクション データは 1 つのファイル システムのプロジェクト ルート内に格納されます。また、複数のファイル システムのルートを使用して設定をセットアップすることもできます。これは _「マルチルート設定」_ と呼ばれます。マルチルート設定が必要な例としては、レンダリングや編集用の個別ストレージを設定する場合などがあります。各ストレージ ポイントは、 {% include product %} の _ローカル ファイル ストレージ_ にする必要があります。これは、[サイト基本設定] (Site Preferences)の _[ファイル管理] (File Management)_ タブで設定できます。 - -Toolkit は、任意の場所に実際のプロジェクト設定をインストールします。通常、このインストール場所は、プロジェクトのデータを格納する場所ではなく、 _ソフトウェアをインストール_ した場所になります。 - -## 独自の環境設定を展開する - -新しいプロジェクトをセットアップする場合は、既存のプロジェクトをベースにすることができます。Toolkit は、既存のプロジェクトから新しいプロジェクトに設定フォルダをコピーします。つまり、新しいプロジェクトは、アプリとエンジンのバージョン、設定、およびカスタマイズが元のプロジェクトとまったく同じになります。これは、 _パイプライン_ を展開し、既存のプロダクションの一部として行った改善と調整を活用する場合に役立ちます。 - -また、プロジェクトのセットアップに問題がなく、一元的に保存する場合は、プロジェクトの設定フォルダを使用するだけです。この設定はスタジオのテンプレートとして使用することができ、新しいプロジェクトを作成するたびにこの設定をベースにすることができます。必要に応じて、git などのリビジョン制御システムを使用すると、このスタジオ テンプレート設定をソース制御することもできます。時間の経過とともにパイプライン設定テンプレートがどのように変化をしているかを、簡単かつ透明性を確保した上でトラッキングできます。更新する場合は、1 つのプロジェクトから設定をコピーして変更をコミットするだけです。 - -設定管理の詳細については、次の詳細ドキュメントを参照してください。 - -[プロジェクト設定を管理する](https://developer.shotgridsoftware.com/ja/60762324/) - -## プロジェクトごとにパイプライン設定を指定する - -プロジェクトに Toolkit をセットアップすると、パイプライン設定が作成されます。この設定にはプロジェクトに必要なすべての設定とファイルが含まれています。この設定には専用の `tank` コマンドが用意されており、プロジェクトを直接操作する場合はシェルで実行できます(すべてのプロジェクトで動作するグローバルな tank コマンドもあります)。{% include product %} では、ディスク上のプロジェクト設定の格納場所を簡単にトラックできるように、パイプライン設定が特別なパイプライン設定エンティティとして登録されます。 - -プロジェクトのセットアップ時に作成されるマスター設定とは別に、プロジェクトの追加設定を作成できます。これは、プロジェクトのユーザに影響を与えることなく設定に変更を加える場合に役立ちます。それには、{% include product %} でパイプライン設定に移動して右クリックし、クローンを作成します。これにより、プロジェクトに他の設定に基づいた新しいパイプライン設定が作成されます。この新しい設定を使用すると、他のユーザに影響を与えることなく、新しいアプリなどを安全にテストすることができます。 - -プロジェクトのメイン設定は `Primary` という名前にする変更する必要があります。この設定の名前を変更したり、修正または削除した場合、予想どおりに動作しなくなる可能性があります。{% include product %} に保存されているパイプライン設定は、手動ではなくさまざまな特定の `tank` 管理コマンドを使用して操作します。 - -例: - -[設定のクローンを作成する方法](https://developer.shotgridsoftware.com/ja/60762324/#cloning-your-configuration) - -## 更新を確認する - -一般的な他のアプリ ストアと同様に、Toolkit アプリ ストアでは、新しいバージョンのアプリとエンジンを絶えず提供しています。新しいバージョンには、重大なバグの修正や便利な新機能が含まれている場合があります。アプリとエンジンのアップグレードは省略可能です。通常、このプロセスは非常に簡単で、変更を加える前にはアップグレード スクリプトによって必ずプロンプトが表示されます。同様に、誤って不要なバージョンをインストールした場合も簡単にロールバックできます。 - -アップグレード プロセスは 1 つのコマンドで処理します。プロジェクト設定フォルダ内にある `tank` コマンドを実行して、パラメータ `updates` を追加するだけです。 - -```shell -/software/shotgun/bug_buck_bunny/tank updates -``` - -パラメータを設定せずにこのコマンドを実行すると、すべての環境、エンジン、およびアプリがチェックされます。時間はかかりますが、インストールしたアプリとエンジンのサブセットで更新ツールを実行することもできます。 - -一般的な構文: - -```shell -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` -- Loader アプリが常に最新の状態を維持するようにする: `tank updates ALL ALL tk-multi-loader` -- Loader アプリが Maya で最新の状態を維持するようにする: `tank updates ALL tk-maya tk-multi-loader` - -このスクリプトは、アプリ ストアだけではなく、登録された他のすべての場所もチェックするため、アプリを展開した場所に応じて、ローカルの git、Github リポジトリ、ディスク上のファイル、およびアプリ ストアをクエリーする可能性があります。 - -新しいバージョンのアプリを導入すると、アプリ設定が変更される場合があります。たとえば、新しい機能で新しい設定パラメータが必要になる場合があります。この場合、`tank` アップグレード スクリプトは、このパラメータの値を入力するように求めます。 - -## Core API の更新を確認する - -オートデスクは、必要に応じて Toolkit Core API の新しいバージョンをリリースします。Core API の更新には個別のコマンドを使用します。この場合のコマンドは `tank core` です。 - -# ディスク上にフォルダを作成する - -プロジェクトに Toolkit をセットアップしたら、このツールキットを使用して、一貫性のあるフォルダ構造を作成できます。ディスク上でパイプライン設定の一環としてファイル システム テンプレートを作成すると、このフォルダ構造が設定されます。このフォルダ構造では、一部のパスは動的パスになります。たとえば、{% include product %} アセット エンティティを表す `asset` と呼ばれるフォルダが作成される場合があります。この動的なフォルダは、{% include product %} クエリーなどの多くの項目と結び付けることができます。 - -![](images/toolkit-overview/folder_creation.png) - -Toolkit には、多種多様な設定やシナリオを処理するさまざまな動的フォルダが数多く用意されています。フォルダの作成時に標準的な {% include product %} API クエリー構文を使用すると、アセットをタイプによってファイル システム上の異なるフォルダに格納するようにファイル システムを整理することもできます。 - -この操作方法については、管理者ガイドを参照してください。 - -[{% include product %} Pipeline Toolkit を管理する](https://developer.shotgridsoftware.com/ja/425b1da4/) - -Toolkit のフォルダは 2 つのパスで作成されます。すべてのユーザがいつでも実行できるダイレクト パスと、通常はアプリケーションの起動直前にアーティストが実行する遅延パスです。この遅延パスは完全に自動で、アプリケーション固有のフォルダとユーザ サンドボックスのセットアップに使用されます。 - -# 現在のコンテキスト - -ファイル システム構成が作成されると、Toolkit はディスク上のフォルダとフォルダが属する {% include product %} オブジェクト間の関係を認識します。これにより、パスのパブリッシュ、ロード、解決を行うときに、{% include product %} のオブジェクトとフォルダ、ディスク、またはファイルを簡単に関連付けることができるため重要です。また、 _「コンテキスト」_ や _「現在の作業領域」_ と呼ばれる場所にも関連付けられます。コンテキスト オブジェクトは Toolkit Core の一部で、作業している現在のコンテキストをトラックします。Toolkit がファイル システムのパスを解決する場合の中心的なメカニズムです。 - -![](images/toolkit-overview/context.png) - -コンテキストは、タスク、アセット、ショットなどの {% include product %} オブジェクトまたはディスク上のパスのいずれかから作成できます。アプリが実行されている場合は、いつでもコンテキストを利用できるため、ファイル システムの命名規則に関する情報がないアプリや、アセット パイプラインとショット パイプラインのどちらで使用するか分からないアプリを簡単に作成できます。これは Toolkit Core API とコンテキストですべて処理されます。 - -# ファイル システム テンプレート - -Toolkit Core にはファイル パスを処理するためのシステムが含まれます。これは _「テンプレート システム」_ と呼ばれています。Toolkit はファイル システム ベースであるため、アプリがディスクからデータを読み取ったり、ディスクにデータを書き込んだりする場合はファイル パスを解決する必要があります。アプリはファイル システム構成に依存しません。つまり、ファイル システムの整理方法を認識しません。テンプレート システムはこれらすべてを処理します。 - -テンプレート システムの中心は _「テンプレート設定ファイル」_ です。このファイルには、プロジェクトの重要なすべてのファイル システムの場所が含まれています。_テンプレート_ は次のようになっています。 - -```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' -``` - -特定の動的フィールドが含まれるパスを定義します。各フィールドの設定には検証と入力が必要です。たとえば、上記テンプレートの `{version}` フィールドが 3 つのゼロ(`001`、`012`、`132` など)を使用した整数となるように定義します。アプリがディスクに何かを読み書きする必要がある場合は、その場所を示すテンプレートがテンプレート ファイルに追加されます。多くの場合、アプリはパイプラインを形成するように設定されているため、あるアプリ(パブリッシュ アプリなど)の出力テンプレートが、別のアプリ(ロード アプリなど)の入力テンプレートになることがよくあります。そのため、ファイル システムの場所は、すべて 1 つのファイルに保存されます。 - -テンプレート API を使用すると、フィールドの値とパスのリスト間でジャンプできます。 - -```python -# get a template object from the API ->>> template_obj = sgtk.templates["maya_shot_publish"] - - -# we can use the template object to turn a path into a set of fields... ->>> path = '/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' ->>> fields = template_obj.get_fields(path) - -{'Shot': '001_002', - 'Step': 'comp', - 'name': 'main_scene', - 'version': 3} - -# alternatively, we can take a fields dictionary and make a path ->>> template_obj.apply_fields(fields) -'/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' -``` - -上記のパスとテンプレートには、2 つの異なるタイプのフィールドが設定されます。`Shot` フィールドと `Step` フィールドは、{% include product %} の同等のオブジェクト(ショットとパイプライン ステップ)を使用する高レベルのフィールドです。`name` フィールドと `version` フィールドは、この特定のタイプのテンプレート専用です。ショットではなくアセットのパブリッシュ パスを定義する場合にも、`name` フィールドと `version` フィールドを使用します。パブリッシュ パスはすべてのパブリッシュで必要となるため、データのタイプは関係ありません。ただし、`Shot` フィールドと `Step` フィールドは使用できません。代わりに、`Asset` フィールドと `Step` フィールドを使用できます。アセット フィールドは、{% include product %} のアセットと関連付けられます。 - -パブリッシュを実行するアプリを開発する場合、ショット パブリッシュとアセット パブリッシュのそれぞれを実行する個別のアプリを作成する必要はまったくありません。シーケンス、ショット、アセットに関係なく、すべてのパブリッシュ シナリオを処理できるパブリッシュ アプリを 1 つのみ作成すれば十分です。 - -![](images/toolkit-overview/templates.png) - -ここで _Toolkit のコンテキスト_ が必要になります。Toolkit のコンテキストを使用すると、テンプレート フィールドを 2 つの異なるグループに分割できます。コンテキスト フィールド(`Shot`、`Step`、`Asset` など)は、アプリ外でアプリのロジックを使用して解決するためのフィールドです。ショットやアセットなどのコンセプトを処理する専用コードを設定する必要はありません。アプリには、このアプリに固有の _ビジネス ロジック_ に直接関連付けられたフィールドのみを入力する必要があります。たとえば、Publish アプリでは、ビジネス ロジックは `name` フィールドと `version` フィールドで構成されます。したがって、上の図に示すとおり、Toolkit はフィールド解決を 2 つの異なるフェーズに分割します。一部のフィールドはコンテキストによって解決され、他のフィールドはアプリのビジネス ロジックによって処理されます。この方法では、アプリが特定のファイル システム レイアウトに関連付けられない仕様にすることができます。これは優れたパイプライン ツールを作成する上で重要な要素だと考えています。 - -通常、パス解決を処理するアプリ コードは次のようになります。 - -```python -# start with an empty fields dictionary -fields = {} - -# first let the context populate all its fields -fields.update( self.context.as_template_fields( publish_template_obj ) ) -# fields is now {'Shot': '001_002', 'Step': 'comp' } - -# now the app can add its business logic -fields["name"] = "main_scene" -fields["version"] = 234 - -# and finally the app can produce the path it needs in -# order to save out the file -path = publish_template_obj.apply_fields(fields) -``` -テンプレート API の設定方法と使用方法に関する詳細については、次を参照してください。 - -[ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/) - -[Core API リファレンス](https://developer.shotgridsoftware.com/tk-core/core.html#) - -# 実行するエンジンとアプリを選択する - -Toolkit Core にはユーザに表示するアプリを決定する上で _重要な役割があります_。キャラクタ リギングの作業時に Maya を起動する場合、ショットのライトを処理するときに別のアプリ コレクションが必要になることがあります。さらに、操作方法に応じてアプリを個別に設定できるため、リギングのレビュー アプリでターンテーブルを生成する一方で、アニメータが実行したときには同じレビュー アプリでショット カメラを使用してプレイブラストを実行できます。 - -このような柔軟性を実現するために、Toolkit プロジェクト設定には一連の _「環境」_ が含まれます。環境とは、一連のアプリ、エンジン、およびそれらすべての設定パラメータを定義する設定ファイルです。 - -Toolkit の起動時に、 _どちらの_ 環境を初期化するかを決定する必要があります。このためには、独自のビジネス ロジックを追加できる「_フック_」と呼ばれる Python コードを使用します。_コンテキスト_ オブジェクトはこのコードに渡され、多くの場合、使用する環境を決定するために使用されます。 - -![](images/toolkit-overview/environment.png) - -これにより、パイプラインのそれぞれの部分に個別のアプリを設定できます。さらに、更新も個別に実行し、管理するスーパーバイザを個別に指定することもできます。 - -## 既定の設定での環境 - -既定の設定の環境で、環境の仕組みと構造を実例を挙げて紹介します。 - -- `project.yml` - コンテキストにプロジェクトのみが含まれる場合に実行されるアプリとエンジンです。 -- `shot_and_asset.yml` - コンテキストにショットまたはアセットが含まれる場合に実行されるアプリとエンジンです。 -- `shot_step.yml` - コンテキストにショットとパイプライン ステップが含まれる場合のアプリとエンジンです。 -- `asset_step.yml` - コンテキストにアセットとパイプライン ステップが含まれる場合のアプリとエンジンです。 - -既定の設定のファイル システムはパイプライン ステップに基づいて整理されます。つまり、ショットの場所にモデリングやリギングなどのフォルダが配置されます。基本的に、作業するパイプライン ステップごとにフォルダが 1 つあります。各フォルダには、ディスク上の独自の作業領域とパブリッシュ領域が含まれます。そのため、パブリッシュ テンプレートは次のようになります。 - -```yaml -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` をロードします。 - -同様に、環境 `project` は、 _作業ファイル_ アプリのみが含まれる汎用的なフォールバックになります。このため、プロジェクト内のほとんどの場所から Maya を起動できます。最小状態で Toolkit が初期化されるため、 _作業ファイル_ アプリを使用して有効な作業領域にジャンプできます。 - -# アプリを設定する - -各アプリには、指定する必要のある多数の設定パラメータがあります。アプリをインストールまたはアップグレードする場合は、Toolkit ですべての必須設定を指定していることを確認します。 - -文字列や整数などの単純な設定値は、環境設定で直接指定します。テンプレートはさまざまであり、Toolkit ではすべてのテンプレートが 1 箇所に保持されるため、環境ファイルはテンプレート ファイルで定義されたテンプレートを参照しているに過ぎません。設定で使用するテンプレートには、アプリによってさまざまなフィールドが必要です。前述の例では、Publish アプリで、ディスク上にその出力ファイルを作成するときに、`name` と `version` フィールドを含むテンプレートを使用していました。そのため、このアプリには、`name` と `version` フィールドを含むテンプレートを必要とする設定が指定されていました。 - -![](images/toolkit-overview/app_config.png) - -コンテキスト フィールド(`name` と `version`)以外を含むテンプレートを使用したアプリを設定しようとすると、アプリが他の追加フィールドの入力方法を認識できないため、このテンプレートからパスを生成することはできません。同様に、いずれかのフィールドが不足しているテンプレートを指定した場合も、混乱を招きます。この場合は、アプリからバージョン番号が書き出されません。そのため、Toolkit は、起動時に設定を検証して、すべてのテンプレートに必要なフィールドが指定されていることを確認します。また、Toolkit は既定値と選択可能なフィールドの使用方法もいくつかサポートしています。 - -完全なリファレンスについては、次のリンクを参照してください。 - -[アプリとエンジンの設定リファレンス](https://developer.shotgridsoftware.com/ja/162eaa4b/) - -[ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/) - -## フック - -Toolkit は、テンプレートを使用したアプリ設定に加えて、 _フック_ と呼ばれるコンセプトもサポートしています。フックは Python コードの小型スニペットであるため、設定の一環としてアプリを部分的にカスタマイズできます。 - -次に、その動作と仕組みについて説明します。 - -アプリは複数のエンジンとプロジェクト間で再利用できるため優れています。ただし、アプリにはエンジン固有のロジックの小型スニペットがいくつか必要です。たとえば、Nuke と Maya の両方で動作するローダー アプリを作成する場合、 _実際のファイル ロード_ を処理するコードが必要です。このコードは Nuke と Maya では別のものにする必要があります。さらに、すべてのエンジンでこのアプリを使用できれば便利です。また、スタジオが異なればシーンに項目をロードする方法も異なります。スタジオによって、カスタムの Maya リファレンス ノードをサポートする必要がある場合や、読み込みのみができれば良い場合もあります。 - -このような違いは、Toolkit で _フック_ を使用すれば解決できます。フックはカスタマイズ可能なコードです。アプリには、基本的な設定が実装されている既定のフックが含まれているため、アプリはすぐに正常に動作します。ただし、動作をカスタマイズする場合は、フック ファイルを設定にコピーすると、Toolkit がこのコードを使用するようになります。 - -[フックの操作方法を管理者ガイドで確認する](https://developer.shotgridsoftware.com/ja/425b1da4/#hooks) - -# {% include product %} とシェルから実行する - -Toolkit をインストールすると、複数のプライマリ エントリ ポイントから利用できます。 - -- {% include product %} アクションは {% include product %} 内の右クリック メニューに表示されます。 -- 起動アイコンは {% include product %} Desktop アプリのプロジェクトで表示されます。 -- コンソールで `tank` コマンドを使用することができます。 -- Toolkit Python API はアプリケーションとシェルの両方で利用可能です。 - -アプリケーションの起動とタスクの実行は、{% include product %} 内から Toolkit を実行するのが一般的です。{% include product %} は {% include product %} Desktop を使用して、マシンのローカルにインストールされている Toolkit と通信し、ローカルの Python を使用して Toolkit コマンドを実行します。つまり、{% include product %} 内からフォルダ作成などのローカルの作業を実行できます。 - -シェルから Toolkit にアクセスすることもできます。各プロジェクト設定には独自の `tank` コマンドが用意されています。プロジェクト設定ルートにアクセスして、`./tank` コマンドを実行するだけです。 - -最後に、Toolkit API を環境変数 `PYTHONPATH` に追加して読み込みます。API は簡単に使用できます。{% include product %} Desktop を使用する代わりに、手動またはスタジオの既存の起動システムの一部として、Maya 内で Toolkit を起動する場合は、簡単な数個のコマンドを実行するだけです。 - -# パブリッシュ - -他のユーザと共同で作業しているファイルを共有する場合は、このファイルをパブリッシュできます。これにより、`PublishedFile` エンティティが {% include product %} 内に作成され、他のユーザが Toolkit のローダー アプリを使用して読み込むことができるようになります。 - -![](images/toolkit-overview/dependencies.png) - -ディスク関連項目の保存場所、ファイルに含まれる内容など、「データ管理」が厳密に何を意味するかは、アプリで行う実際の作業によって異なります。Toolkit API により、アプリ開発者は {% include product %} 内でパブリッシュを簡単に作成し、このパブリッシュと最適なオブジェクトをリンクするメソッドを使用できます。これにより、{% include product %} は処理を実行し、すべての関係者に通知を送信できるようになります。また、用途が幅広く、柔軟な設定が可能な既定の Publish アプリもありますが、これが Toolkit を使用してバージョン管理を実行する唯一の方法ではありません。Toolkit は拡張可能であるため、Toolkit を使用して独自のカスタム バージョン管理とパブリッシュ システムを必要に応じて開発することができます。 - -ただし、最初は Publish アプリを使用することをお勧めします。 - -[既定の Multi Publish アプリ](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -# 再利用可能なアプリを作成する - -Toolkit は、単にアプリとエンジンをまとめたものではありません。独自のツールと技術の開発に使用するフレームワークでもあります。Toolkit を豊富な機能を備えたスタジオの開発プラットフォームにするための機能が多数含まれています。Toolkit を基盤にすると、自分で基本的なプラットフォームを構築する必要がなく、身近な問題に集中することができます。開発者がアーティストのパイプラインを間違って破壊しないようにソフトウェアの作成、評価、およびリリースを簡単に行えるようにしました。 - -- エンジンは、基盤に関係なく、アプリを Python や Qt (PySide/PySide2)で作成できるようにするものです。非常に単純なエンジンもありますが、使用できる API によっては複雑なエンジンもあります。エンジンによって、簡単で一貫性のある方法を使用してスタジオ用のツールを開発できます。これまでの経験から、開発環境スタジオでは Python と Qt を使用することが多く、TD の多くはこれらのプログラミング言語に慣れています。 -- また、エンジン レイヤによって、アプリを一度作成すれば複数の環境で展開できます。オートデスクは、標準的なアプリ スイートを _「マルチ アプリ」_ として開発しているため、すべてのエンジンで同じアプリを使用します。各 DCC アプリケーションで公開される特定の API と連携するように調整する必要がある特定のコードが必ずありますが、通常、これは 1 つ以上のフックに含まれるため、アプリケーションを簡単に再利用できます。このようにマルチ アプリを作成できるため、新しいエンジンを開発する場合、この新しいエンジンと連携するように標準的なすべてのアプリを簡単に設定できます。 -- パイプライン設定とクローン作成により、開発サンドボックスを簡単に作成できるため、開発者は日常の制作活動に影響を受けることなく制作上の開発を行うことができます。ツールを展開する準備が完了すると、メインのプロジェクト設定は簡単に更新でき、このツールはすべてのアーティストに展開されます。 -- アプリはエンジン内で実行されるため、簡単に再ロードできます。新しいコード変更をテストするたびに Nuke や Maya を再起動する必要はなく、Toolkit の再ロード ボタンをクリックするだけで、最新のコードがロードされます。 - -アプリ開発の詳細については、次のドキュメントを参照してください。 - -[Toolkit アプリ開発の概要](https://developer.shotgridsoftware.com/ja/2e5ed7bb/) - -[Toolkit API リファレンス](https://developer.shotgridsoftware.com/tk-core/) - -[アプリとエンジンの設定リファレンス](https://developer.shotgridsoftware.com/ja/162eaa4b/) diff --git a/docs/ja/guides/pipeline-integrations/development.md b/docs/ja/guides/pipeline-integrations/development.md deleted file mode 100644 index 486eb3915..000000000 --- a/docs/ja/guides/pipeline-integrations/development.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 開発 -pagename: toolkit-development -lang: ja ---- - -# 開発 - -## Toolkit とは何か? - -Toolkit とは、パイプライン統合の基盤となるプラットフォームのことです。たとえば、Maya で {% include product %} Panel アプリを使用している場合や、{% include product %} Create から Publish アプリを起動している場合は、Toolkit プラットフォーム上に構築されたツールを使用しています。 - -## Toolkit を使用して開発するには、どうしたらよいですか? - -Toolkit を使用して開発する場合は、複数の方法を使用できます。 - -- フックと呼ばれるカスタム コードを記述して、既存のアプリ、エンジン、またはフレームワークの動作を拡張します。 -- 独自のアプリ、エンジン、またはフレームワークを作成します。 -- または、API を利用する独自のスタンドアロン スクリプトを記述します。 - -これらのいずれかの操作を行うには、Toolkit API の使用方法を理解することが重要です。 - - {% include product %} 全体には、3 つの主な API があります -- [{% 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) - -Toolkit API は、{% include product %} Python API または REST API と一緒に使用するように設計された Python API です。これらの API の代わりに使用することはできません。 -Toolkit API にはいくつかのラッパー メソッドが含まれていますが、一般には、{% include product %} サイトのデータにアクセスする必要がある場合、{% include product %} Python API または REST API を代わりに使用します。 - -Toolkit API は主に、ファイル パスの統合と管理を行います。一部の Toolkit アプリおよびフレームワークには、[独自の API](../../reference/pipeline-integrations.md) も含まれています。 - -これらの記事では、Toolkit を使用した開発方法について説明します。 \ No newline at end of file diff --git a/docs/ja/guides/pipeline-integrations/development/images/dev-configuration.png b/docs/ja/guides/pipeline-integrations/development/images/dev-configuration.png deleted file mode 100644 index b1f8ed53e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/development/images/dev-configuration.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/development/images/develop.png b/docs/ja/guides/pipeline-integrations/development/images/develop.png deleted file mode 100644 index f16faff1c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/development/images/develop.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/development/images/reload-restart.png b/docs/ja/guides/pipeline-integrations/development/images/reload-restart.png deleted file mode 100644 index 8b3dbf12a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/development/images/reload-restart.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/development/images/starter-app.png b/docs/ja/guides/pipeline-integrations/development/images/starter-app.png deleted file mode 100644 index b9293c8ae..000000000 Binary files a/docs/ja/guides/pipeline-integrations/development/images/starter-app.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png b/docs/ja/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png deleted file mode 100644 index f8b353863..000000000 Binary files a/docs/ja/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md deleted file mode 100644 index d377227f8..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-app.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -layout: default -title: アプリを開発する -pagename: sgtk-developer-app -lang: ja ---- - -# 独自のアプリを開発する - -## はじめに - -このガイドでは、Toolkit アプリの概要と作成方法、およびアプリ開発に関する基本事項について説明します。{% include product %} Pipeline Toolkit は {% include product %} Software が管理するアプリとエンジンのコレクションであるだけでなく、カスタムのパイプライン ツールを迅速かつ簡単に作成するための開発プラットフォームも提供します。 - -- [Toolkit アプリとは何か?](#what-is-a-toolkit-app) -- [独自のアプリを作成する](#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) -4. [アプリを開発する](#part-4-developing-the-app) - - [テンプレート スターター アプリの構造](#anatomy-of-the-template-starter-app) - - [環境設定](#configuration-settings) - - [フレームワーク](#frameworks) - - [変更を再ロードする](#reloading-your-changes) -5. [テスト](#part-5-testing) -6. [最初のリリースを準備する](#part-6-preparing-your-first-release) - -追加情報: -- [既存のアプリを変更する](#modifying-an-existing-app) - - [支援する](#contributing) - -## Toolkit アプリとは何か? - -Toolkit アプリは、次のように定義されます。 - -- {% include product %} 統合の環境において、通常はエンドユーザによって実行されるツール。 -- 通常、アプリにはユーザの操作をガイドするためのグラフィカル ユーザ インタフェースが備わっているが、必ずしも必要なわけではない。統合に登録されたコマンドとして使用可能なアプリもあり、ホスト ソフトウェアの {% include product %} メニューからトリガできる。 -- 他のプロセスやアプリと相互作用できる API/パブリック メソッドが含まれることがある。 -- 複数のプラットフォームに対応することが可能で、ソフトウェアに依存しない。 -- [環境](https://developer.shotgridsoftware.com/ja/487a9f2c/#what-is-an-environment)に応じて異なる設定にすることができる。 -- コンテキスト対応にすることができる。たとえば、ユーザが作業しているタスクをアプリが認識し、それに応じて動作するように設定できる。 -- Toolkit エンジンからのみ実行できる。 - -Toolkit アプリは Toolkit エンジンによって初期化されます。[エンジン](https://developer.shotgridsoftware.com/tk-core/platform.html#engines)は特定のソフトウェア環境内で実行するように設計されていて、この環境から Toolkit アプリを実行するインタフェースが提供されます。エンジンを使用すると、アプリでさまざまなソフトウェア環境を処理するという複雑な作業が不要になります。つまり、アプリに必要なことは目的を達成するための機能を提供することであり、ウィンドウのペアレント化の処理、ユーザのコンテキストのトラッキング、自分自身を起動するためのショートカットなどを提供する必要はありません。 - -## 独自のアプリを作成する -{% include product %} 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) - -このプラグインを使用するには、git リポジトリをフォークしてディスク上のローカル開発領域にクローンを作成します。この段階で git ソース コントロールを使用しない場合は、zip ファイルとして GitHub からファイルをダウンロードし、ローカルに解凍します(git リポジトリは後でいつでもセットアップできます)。いずれの場合も、目標となるのは、変更を開始できるよう、スターター アプリ コードのローカル コピーを作成することです。 - -## パート 3: アプリを環境設定に追加する -「[アプリを追加する](../getting-started/installing_app.md)」ガイドを参照することをお勧めします。このガイドには、環境設定にアプリを追加する詳細な方法が示されています。 - -アプリを環境設定に追加する場合は、アプリの使用場所を考慮する必要があります。たとえば、Nuke だけで使用する場合、複数の異なるソフトウェアで使用する場合、または {% include product %} Desktop からスタンドアロンで使用する場合があります。 -アプリが依存するコンテキストについても考慮する必要があります。たとえば、ユーザが作業しているタスクがわかっている場合に限ってアプリを実行できるのか、または既知のプロジェクトに限定してアプリを実行できるのかを検討します。この情報がわかれば、アプリの設定を追加する必要がある YAML 環境ファイルおよびエンジンが決まります。 - -現時点で不明な場合は、まず、プロジェクト環境の `tk-shell` エンジンにアプリの設定を追加することをお勧めします。このようにすると、[IDE から実行](./sgtk-developer-bootstrapping.md)したり、[一元管理設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)がある場合に tank コマンドを使用してコマンド ラインから実行したりできます。これにより、開発にかかる時間が短縮されます。 - -最初は、アプリの場所として[開発記述子](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)を使用します。 - -```yaml -tk-multi-starterapp: - location: - type: dev - path: /path/to/source_code/tk-multi-starterapp -``` -開発記述子は、Toolkit に対して、指定された場所のディスクから直接アプリ コードをロードするよう指示します。これは、コードを常に変更する必要がある開発に最適です。 -後でプロダクション設定にアプリを追加する場合は、別の記述子を使用できます。 - -アプリの環境への追加が完了すると、アプリを起動することができるようになります。アプリの起動方法は、エンジン、およびエンジン内で定義された環境によって異なります。 - -## パート 4: アプリを開発する - -これで、アプリの開発を開始する準備ができました。 - -### テンプレート スターター アプリの構造 - -[テンプレート スターター アプリ](https://github.com/shotgunsoftware/tk-multi-starterapp)には、以下の基本構造が含まれています。 - -![](./images/tk-multi-starterapp-directory.png) - -- **app.py**: アプリのエントリ ポイントとメニュー登録は `app.py` ファイルにあります。通常は、ここでクラスを設定し、必要な初期化およびメニュー項目の登録を行います。 -- **info.yml**: マニフェスト ファイルとも呼ばれます。このアプリをインストールするときに必要なさまざまな設定と、既定値(指定されている場合)がすべて定義されます。再利用可能なアプリが必要で、アプリ自体に値をハード コードしたくない場合には、それらの設定がしばしば役に立ちます。 -- **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` として保存する必要があります。 -- **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 -``` -この設定を作成すると、アプリ コード内にテンプレート名をハード コード化する必要がなくなり、代わりに `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)を参照してください。 - -### フレームワーク - -フレームワークを使用することがわかっている場合は、マニフェスト ファイルに追加できます。 - -たとえば、アプリで Qt ウィジェットと {% include product %} ユーティリティ フレームワークを使用する場合は、`info.yml` に以下を追加します。 - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x"} -``` - -#### フレームワークの必要最小バージョン -フレームワークに必要最低限のバージョンがある場合は、`info.yml` で minimum_version 設定を使用できます。 - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x", "minimum_version": "v1.5.0"} -``` - -これにより、`tk-framework-qtwidgets` の `v1.5.0` がアプリで使用できるようになります。 -使用できない場合、アプリは起動時にロードされず、コンソールにエラーが出力されます。 -アプリが `tank updates` を使用して更新されると、必要最小限のバージョンを満たしていない設定済みのフレームワークはアプリとともに自動的に更新されます。 - -フレームワークとその効果的な利用の方法については、次のリンクを確認してください: - -- [Qt ウィジェット フレームワーク](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/) -- [{% include product %} utils フレームワーク](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/) - -### 変更を再ロードする - -Maya などのソフトウェア内でアプリをテストする場合に、設定に 1 つまたは複数の開発項目を追加するとすぐに、Toolkit は {% include product %} メニューに**[Reload and Restart]**オプションを追加します。 -![{% include product %} メニューの[再ロードして再起動](Reload and Restart)オプション](./images/reload-restart.png) - -これをクリックすると、設定とコードが再ロードされ、エンジンが再起動されます。これによって、繰り返しの処理が高速化されます。すなわち、Maya を一度起動し、目的のコードまたは構成の変更を実行したら、**[Reload and Restart]**ボタンを押すだけで、変更が有効になります。 - -{% include info title="注" content="UI が画面上でアクティブになっている場合は、自動的に更新されず、メニューから UI を呼び出して再起動する必要があります。"%} - -## パート 5: テスト -コードをテストする場合は、他のユーザを {% include product %} の `PipelineConfiguration` エンティティの `User Restrictions` フィールドに追加することで、自分の開発サンドボックスに簡単に招待できます。 - -ユーザを追加するとすぐに、{% include product %} Create 内のメニューに関する新しいエントリ、ブラウザ アクション、および {% include product %} Desktop 内で設定を選択するオプションが表示されます。 - -![{% include product %} Desktop で選択可能な開発設定](./images/dev-configuration.png) - -{% include info title="注" content="アプリ コードを表示するために必要なアクセス権がユーザにあることを確認してください。必要なアクセス権がない場合は、アプリがロードされません。"%} - -## パート 6: 最初のリリースを準備する - -[パート 3](#part-3---adding-the-app-to-your-config) では、開発記述子を使用してアプリを指すように設定しました。リリース済みのソフトウェアを安全かつ簡単にアップグレードできるようにするには、すべてのユーザがアプリにアクセスできること、およびバージョン管理が行われていることを確認する必要があります。 - -{% include product %} に付属しているすべてのアプリは、Toolkit App Store を使用して更新とリリースをトラックし、次のようなロケーション タグを持ちます: - -```yaml -location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 -``` -これにより、Toolkit (たとえば、`tank updates` コマンド)は更新が利用可能になる時期を確認し、設定を非常に安全な方法で更新および維持することができます。 -更新コマンドの実行中に新しいバージョンが利用可能になると、Toolkit はコードをダウンロードし、ディスク上のローカルな「バンドル キャッシュ」に配置し、ユーザがコードにアクセスできるようにします。 - -アプリのリリースを取得するオプションがいくつか用意されています。 - -- [Git](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-tags-in-git) および [GitHub](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-releases-on-github) -- [{% include product %} アップロード](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) -- [ローカル パス](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk) - -プロダクション設定内でアプリを追加し、必要に応じて記述子を使用するように切り替えます。 - -### git ベースの記述子 - -git 記述子を使用する場合でも、変更が確実にトラックされるように、まずソース コントロールを使用することをお勧めします。 - -Toolkit では、git (http://git-scm.com/)をそのまま使用できます。設定で `tank updates` を実行している場合は、アプリ ストアの記述子の場合と同様に、git リポジトリ内で最新リリースを検索して設定を更新できます。 - -このための要件は、次のとおりです。 - -- git リポジトリにアプリが 1 つだけ含まれている必要があります -- git リポジトリの構造が[スターター アプリのリポジトリ](https://github.com/shotgunsoftware/tk-multi-starterapp)と同じである必要があります。 -- タグを作成する場合は、[セマンティック バージョニング](https://semver.org/lang/ja/)を使用します。Toolkit はこれらのバージョン番号を使用して、どのバージョンが最新であるかを、規則 `vX.Y.Z` に従って判別します。 - -git で最初のタグ(例: `v1.0.0`)を作成した後で、タグを指す git 記述子を使用するように環境を設定できます。その後、`tank updates` を実行します。新しいタグが作成されると、アップグレードするかを尋ねるメッセージが表示されます。 -これで、ワークフローは公式の App Store アプリで実行されるワークフローと同じになります。 - -{% 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 をインストールするとともに、リポジトリを使用して認証し、コードにアクセスするように設定する必要があります。"%} - -## 既存のアプリを変更する -場合によっては、空のスターター テンプレートから開始するのではなく、{% include product %} Software の標準アプリの 1 つなどの既存のアプリに、マイナー機能を追加する必要があります。 - -変更したバージョンのアプリを使用する場合は通常、ソース アプリを「トラック」し、定期的に変更とバグ修正を取得します。 - -このような開発を行うときは、親コードを選択し、変更のいくつかを適用して、パイプラインにリリースします。 -リリースはアプリの基本バージョンと適用されたローカルの変更で効果的に構成されます。 -既存のバージョン番号にバージョン サフィックスを追加することを推奨します。 -これは Toolkit とシームレスに連携し、動作も比較的単純です。 -次のワークフローに実行の手順を示します。 - -- 親アプリをフォークして、自分専用のリポジトリを作成します。フォークを使用してすべての git タグを取得します。 - 最新のタグは `v0.2.12` と呼ばれ、マスター ブランチは基本的にこのタグのコンテンツと同じです。 -- 変更を適用し、マスター ブランチにコミットします。これで、`v0.2.12` に変更が加えられた状態になります。 - これをプロダクション構成にリリースするときは、タグを作成する必要があります。タグに `v0.2.12.1` という名前を付け、コードが `v0.2.12` に基づいていること、そしてこれが最初のリリースであることを示します。 -- 誰かが変更部分にバグを見つけました。バグを修正し、タグを付けて `v0.2.12.2` をリリースします。 -- 親リポジトリではいくつかの重要なバグ修正がリリースされました。 - それらをリポジトリにプル ダウンします。親リポジトリで発生したリリースにより、現在の最新のタグは `v0.2.15` です。 - 変更をマスターとマージして、テストします。これで、基本的に親アプリ `v0.2.15` が変更にマージされました。`v0.2.15.1` にタグを付けます。 - -上記のタグ付けスキームにより、Toolkit の更新が正しく実行され、フォーク内の各タグがどのコードに基づいているかを簡単に確認できるようになります。 - -### 支援する -プル リクエストを歓迎します。他のユーザにとっても有益と思われる変更を行った場合には、プル リクエストとしてフィードバックしていただくようお願いいたします。 -フィードバックは、アプリのメイン バージョンに反映させていただく場合があります。 -あるいは、[ロードマップ ページ](https://www.shotgunsoftware.com/roadmap/)に新しいアイデアに関する提案を追加してください。 - -コミュニティで共有するアプリを作成したら、[フォーラム](https://community.shotgridsoftware.com/)ですべてのユーザにお知らせください。 diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md deleted file mode 100644 index 2070f9759..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ /dev/null @@ -1,350 +0,0 @@ ---- -layout: default -title: アプリをブートストラップおよび実行する -pagename: sgtk-developer-bootstrapping -lang: ja ---- - -# アプリをブートストラップおよび実行する - -このガイドでは、カスタム コードの実行やアプリの起動を行えるように Toolkit エンジンを初期化するプロセス(別名、ブートストラップ)について説明します。 - -ブートストラップは、Toolkit エンジンがまだ起動されておらず、API を使用する必要がある場合に役立ちます。たとえば、レンダー ファーム上で実行される処理スクリプトがあり、パスとコンテキストを処理するために Toolkit API を使用しなければならない場合があります。または、お気に入りの IDE から Toolkit アプリを実行できる機能が必要になる場合もあります。 - -{% 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 プログラミングの基礎についての理解。 -- 高度な設定を使用するプロジェクト。まだ環境設定を行っていない場合は、「[設定の開始](../getting-started/advanced_config.md)」に従ってください。 - -### 手順 - -1. [ブートストラップ用の Toolkit API を読み込む](#part-1-importing-the-toolkit-api-for-bootstrapping) -2. [ログ記録](#part-2-logging) -3. [認証](#part-3-authentication) -4. [エンジンをブートストラップする](#part-4-bootstrapping-an-engine) -5. [アプリを起動する](#part-5-launching-an-app) -6. [完全なスクリプト](#part-6-the-complete-script) - -## パート 1: ブートストラップ用の Toolkit API を読み込む - -### sgtk はどこから読み込む必要がありますか? - -「[パスを生成してパブリッシュする](sgtk-developer-generating-path-and-publish.md)」に従った場合は、`sgtk` の読み込み手順について学習しています。 - -このガイドには、作業するプロジェクト設定から `sgtk` パッケージを読み込む必要があると記載されています。ブートストラップを実行する場合もこの説明は当てはまりますが、どの初期 `sgtk` パッケージを読み込むかは重要ではありません。どの Toolkit API でも、異なるプロジェクト設定へのブートストラップ操作を実行できるためです。ブートストラップ プロセスは、現在読み込まれている sgtk パッケージを、新しいプロジェクト設定の Toolkit API に入れ替えます。 - -### スタンドアロン Toolkit Core API をダウンロードする - -まず、[`tk-core`](https://github.com/shotgunsoftware/tk-core/tree/v0.18.172/python) にある `sgtk` API パッケージを読み込む必要があります。既存のプロジェクトからパッケージを読み込むことができますが、このパッケージを検索する作業は面倒なことがあります。推奨方法は、[最新の Core API](https://github.com/shotgunsoftware/tk-core/releases) のスタンドアロン コピーをダウンロードし、このコピーをブートストラップの目的に限って使用することです。このコピーは、読み込み可能な便利な場所に保存する必要があります。追加するパスが、`tk-core` フォルダ内の `python` フォルダを指していることを確認してください。なぜなら、ここが `sgtk` パッケージが格納されている場所だからです。 - -### コード - -```python -# If your sgtk package is not located in a location where Python will automatically look -# then add the path to sys.path. -import sys -sys.path.insert(0, "/path/to/tk-core/python") - -import sgtk -``` - -## パート 2: ログ記録 - -IDE またはシェルを使用してこのスクリプトを実行する場合は、通常、ログの出力を有効にする必要があります。ログの出力を有効にするには、[`LogManager().initialize_custom_handler()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.initialize_custom_handler) を実行する必要があります。 -このためにカスタム ハンドラを提供する必要はありません。カスタム ハンドラが提供されていない場合は、標準のストリームベース ログ ハンドラが設定されるためです。 - -必要に応じて [`LogManager().global_debug = True`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.global_debug) を設定して、より詳細な出力を行うこともできます。 -つまり、付属のコードまたは作成したコード内のすべての `logger.debug()` 呼び出しが出力されるようになります。ログ記録はパフォーマンスに影響することがあるため、開発中に限ってデバッグ ログを有効にし、通常の操作中は、`logger.info()` メソッドの呼び出し回数を、表示するために必要な回数に制限する必要があります。 - -```python -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True -``` - -## パート 3: 認証 - -{% include product %} Toolkit が既に起動されている環境の外部で Toolkit API を使用するスクリプトを実行する場合は、常に認証する必要があります。 -したがって、ブートストラップを実行する前に、{% include product %} サイトで Toolkit API を認証する必要があります。 - -認証には、ユーザの資格情報またはスクリプトの資格情報を使用できます。 - -- アプリの起動やユーザ入力が必要な一部のコードの実行など、ユーザ向けプロセス用にブートストラップを行う場合は、ユーザ認証が最適な方法です(既定では、オートデスクのすべての統合機能がユーザ認証を使用して動作します)。 -- スクリプトを記述して操作を自動化している場合に、認証対象のユーザが存在しないときは、スクリプト資格情報を使用する必要があります。 - -認証は [`{% include product %}Authenticator`](https://developer.shotgridsoftware.com/tk-core/authentication.html?highlight=shotgunauthenticator#sgtk.authentication.ShotgunAuthenticator) クラスを使用して処理されます。 -次に、ユーザ認証とスクリプト認証の両方の例を示します。 - -### ユーザ認証 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Optionally you can clear any previously cached sessions. This will force you to enter credentials each time. -authenticator.clear_default_user() - -# The user will be prompted for their username, -# password, and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating an `Sgtk` instance. -sgtk.set_authenticated_user(user) -``` - -### スクリプト認証 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -## パート 4: エンジンをブートストラップする - -セッション用の Toolkit API の認証が完了したので、ブートストラップ プロセスを開始できます。ブートストラップ API の詳細については、[リファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)を参照してください。 - -高度なブートストラップ プロセスでは、基本的に次の手順を実行します。 - -1. Toolkit 設定フォルダを取得または検索します。 -2. アプリやエンジンなどの設定の依存関係が[バンドル キャッシュ](../../../quick-answers/administering/where-is-my-cache.md#bundle-cache)に格納されていることを確認します。 - これらの依存関係が存在せず、[`app_store`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#the-shotgun-app-store) または [`{% include product %}`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) などのクラウドベースの記述子が使用されている場合は、バンドル キャッシュにダウンロードされます。 -3. 現在ロードされている sgtk コアを、環境設定に適したコアに入れ替えます。 -4. エンジン、アプリ、およびフレームワークを初期化します。 - - -{% include info title="注" content="通常は、ブートストラップする際に、このエンジンを正常に実行するために必要なあらゆる要件に注意する必要があります。ただし、場合によっては、ブートストラップ プロセスに含まれない特定の設定要件があり、個別に処理しなければならないことがあります。"%} - - -### ブートストラップの準備 -ブートストラップを実行するには、まず [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) インスタンスを作成する必要があります。 - -```python -mgr = sgtk.bootstrap.ToolkitManager() -``` - -Toolkit でブートストラップを行うには、少なくともエンティティ、プラグイン ID、およびエンジンについての情報が必要になります。使用可能なすべてのパラメータとオプションについては、このガイドでは説明しません。[リファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)に記載されています。 - -#### プラグイン 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/c73fcb84/#how-toolkit-determines-the-current-environment)はコア フック [`pick_environment.py`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.11/core/hooks/pick_environment.py) によってコントロールされます。したがって、コンテキストやその他のパラメータに基づいて異なる環境を選択するよう変更することができます。 - -エンティティは、タイプと ID が最低限必要となる {% include product %} エンティティ ディクショナリの形式で指定する必要があります。 - -```python -task = {"type": "Task", "id": 17264} -engine = mgr.bootstrap_engine("tk-shell", entity=task) -``` - -`Project` 以外のエンティティ タイプにブートストラップする場合は、[パス キャッシュ](https://developer.shotgridsoftware.com/ja/cbbf99a4/)が同期していることを確認する必要があります。パス キャッシュが同期していない場合は、テンプレートの解決を試みる場合のように、環境をロードできないことがあります。 -ブートストラップする前に `Sgtk` インスタンスが存在しないため、`Sgtk` インスタンスを作成してからエンジンを起動するまでの間に、同期を実行するようブートストラップ プロセスに指示する必要があります。この操作を行うには、カスタム メソッドを指すように [`ToolkitManager.pre_engine_start_callback`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.pre_engine_start_callback) プロパティを設定します。 -このメソッドで、同期を実行できます。 - -```python -def pre_engine_start_callback(ctx): - ''' - Called before the engine is started. - - :param :class:"~sgtk.Context" ctx: Context into - which the engine will be launched. This can also be used - to access the Toolkit instance. - ''' - ctx.sgtk.synchronize_filesystem_structure() - -mgr.pre_engine_start_callback = pre_engine_start_callback -``` - - -#### 設定の選択 - -ブートストラップする設定を明示的に定義するか、ブートストラップ ロジックを終了して[適切な設定を自動検出](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations)することができます。 -設定が自動検出されない場合に備えて、フォールバック設定を行うこともできます。このガイドでは、プロジェクトに設定が既に行われていて、この設定が自動検出されると想定しています。 - -### ブートストラップする - -すべての [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) パラメータを設定して、[`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) メソッドを呼び出すと、エンジンが起動し、エンジンのインスタンスにポインタが返されます。 - -次に、コードの要約を示します。 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) -``` - -## パート 5: アプリを起動する - -エンジン インスタンスが作成されたので、Toolkit API を使用することができます。 - -アプリの起動方法について説明する前に、エンジンを介して[現在のコンテキスト](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context)、[sgtk インスタンス](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk)、および [{% include product %} API インスタンス](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.shotgun)を管理できることにご注意ください。 - -```python -engine.context -engine.sgtk -engine.shotgun -``` -このガイドの最終的な目標はアプリの起動方法を示すことですが、この時点で上記のアトリビュートを利用して、コード スニペットをテストしたり、Toolkit API を利用するする自動化を行ったりできます。 - -### アプリを起動する - -エンジンが起動すると、環境用に定義されたすべてのアプリが初期化されます。次に、アプリによってエンジンにコマンドが登録されます。Maya などのソフトウェア内で実行されているコマンドは、通常、メニューにアクションとして表示されます。 - -#### コマンドを検索する -登録されたコマンドを最初に確認するには、[`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) プロパティを出力します。 - -```python -# use pprint to give us a nicely formatted output. -import pprint -pprint.pprint(engine.commands.keys()) - ->> ['houdini_fx_17.5.360', - 'nukestudio_11.2v5', - 'nukestudio_11.3v2', - 'after_effects_cc_2019', - 'maya_2019', - 'maya_2018', - 'Jump to Screening Room Web Player', - 'Publish...', -...] -``` - -このリストを使用して、登録されている実行可能なコマンドを確認できます。 - -#### コマンドを実行する - -現在、標準化されたメソッドがないため、コマンドの実行方法はエンジンによって異なります。`tk-shell` エンジンの場合は、`Engine.execute_command()` という便利なメソッドを使用できます。このメソッドでは、上記のコマンド文字列名と、アプリのコマンドで渡されると予測されるパラメータのリストが使用されます。 - -```python -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...",[]) -``` - -`tk-shell` エンジン内で実行していない場合は、登録されたコールバックを直接呼び出すようにフォールバックできます。 - -```python -# now find the command we specifically want to execute -app_command = engine.commands.get("Publish...") - -if app_command: - # now run the command, which in this case will launch the Publish app. - app_command["callback"]() -``` - -これで、アプリが起動されます。`tk-shell` エンジンを実行している場合は、ターミナル/コンソールに出力が表示されます。 - -## パート 6: 完全なスクリプト - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing) -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) - -# Optionally print out the list of registered commands: -# use pprint to give us a nicely formatted output. -# import pprint -# pprint.pprint(engine.commands.keys()) - -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...",[]) -``` diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md deleted file mode 100644 index 66917f289..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: default -title: エンジンを開発する -pagename: sgtk-developer-engine -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 ウィンドウのペアレント化](#qt-window-parenting) -- [起動動作](#startup-behavior) -- [ホスト ソフトウェアの推奨機能リスト](#host-software-wish-list) - -## Toolkit エンジンとは何か? -エンジンを開発する場合は、ホスト ソフトウェアと、エンジンにロードされている各種の Toolkit アプリおよびフレームワークの間で効果的にブリッジを確立します。 -エンジンを使用すると、ソフトウェア間の相違を抽象化することができるため、Python と Qt を使用してソフトウェアに依存しない方法でアプリを作成できるようになります。 - -エンジンはファイルのコレクションのことで、[構造としてはアプリに似ています](sgtk-developer-app.md#anatomy-of-the-template-starter-app)。エンジンには `engine.py` ファイルがあり、このファイルはコアとなる [`Engine` 基本クラス](https://github.com/shotgunsoftware/tk-core/blob/master/python/tank/platform/engine.py) から派生している必要があります。その後、別のエンジンが内部の複雑さに応じてこの基本クラスの各種の側面を再実装します。 -通常、エンジンは次のサービスを処理または提供します。 - -- メニュー管理。エンジンが起動され、アプリがロードされたら、エンジンは {% include product %} メニューを作成し、このメニュー内にさまざまなアプリを追加する必要があります。 -- ログ メソッドは通常、ソフトウェアのログ/コンソールに書き込むよようにオーバーライドされます。 -- UI ダイアログおよびウィンドウを表示するためのメソッドです。これらのメソッドは通常、エンジンによる Qt の処理方法が既定の基本クラスの動作と異なる場合にオーバーライドされ、Toolkit アプリよって起動されるウィンドウと、基盤となるホスト ソフトウェア ウィンドウの管理設定をシームレスに統合します。 -- アプリによって登録されているすべてのコマンド オブジェクトを含む `commands` ディクショナリがあります。これは通常、メニュー項目が作成されるときにアクセスされます。 -- 基本クラスは各種の初期化および破棄メソッドを公開します。これらのメソッドは、起動プロセスのさまざまなポイントで実行されます。メソッドをオーバーライドして、起動とシャットダウンの実行を制御できます。 -- 起動時に `tk-multi-launchapp` によって、および自動ソフトウェア検出によって呼び出される起動ロジックです。 - -エンジンは、[`sgtk.platform.start_engine()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.start_engine) または [`sgtk.bootstrap.ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) メソッドを使用して、Toolkit プラットフォームにょって起動されます。 -このコマンドは、設定ファイルの読み込み、エンジンの起動、すべてのアプリのロードなどを実行します。エンジンの目的は、起動された後、アプリとの一貫した Python/Qt インタフェースを提供することです。すべてのエンジンは同じ基本クラスを実装するので、アプリは、エンジン上で UI を作成するメソッドなどを呼び出すことができます。 -これらのメソッドを実装して、ホスト ソフトウェア内で正常に動作するようにすることは、各エンジンの役割です。 - -## 開始する前に必要な情報 - -オートデスクは、最も一般に使用されるコンテンツ作成ソフトウェアを[統合](https://developer.shotgridsoftware.com/ja/162eaa4b/)しています。 -さらに、[Toolkit Community のメンバーが作成し、共有しているエンジン](https://developer.shotgridsoftware.com/ja/58a557ee/)もあります。ただし、Toolkit エンジンがまだ組み込まれていないソフトウェアでは、パイプライン統合が必要になる場合があります。 - -時間とリソースがあれば、使用したいが見つからないエンジンを作成することで、Toolkit Community に貢献していただくことができます。これはご自分にとっても有益です。 - -コード作成を開始する前に、[当社までお問い合わせください。](https://knowledge.autodesk.com/ja/contact-support)約束することはできませんが、お客様の計画についてお話させてください。 -同じエンジンに興味がある、または同じエンジンを作成した経験を持つユーザが見つかる場合もあります。 -可能な限り、Toolkit を統合するソフトウェアの技術担当者または開発者と連絡を取れるようにしてください。これによって、作業を進めるときにどのような可能性や障害があるかについての洞察を得ることができます。 -開発の基本事項について当社とのコミュニケーション方法を確立できれば、エンジンについての具体的な内容について、会話や会議の場を設けて当社の誰とでも話をすることができます。[{% include product %} のコミュニティ フォーラム](https://community.shotgridsoftware.com/c/pipeline)で、Toolkit Community のメンバーと直接やりとりすることができます。 - -オートデスクは、新しい統合機能が作成されることを楽しみにお待ちしております。Toolkit Community に貢献していただき、心から感謝いたします。 - -{% include info title="ヒント" content="「[独自のアプリを開発する](sgtk-developer-app.md)」には、アプリを開発するための手順が記載されています。このガイドに記載されている原則は、このガイドの対象とならないエンジンを開発する場合にも適用されます。" %} - -## エンジン統合へのアプローチ - -ホスト アプリの機能によっては、エンジン開発が多少複雑になる場合があります。 -このセクションでは、エンジン開発中に見られた、さまざまなレベルの複雑さについて説明します。 - - -### Qt、PyQt/PySide および Python が含まれているホスト ソフトウェア -これは Toolkit を設定する最善の方法であり、Qt、Python、および PySide をサポートするホスト ソフトウェア上にエンジンを実装する方法は非常に簡単です。 -この例として適切なのは、[Nuke エンジン](https://github.com/shotgunsoftware/tk-nuke)または [Maya エンジン](https://github.com/shotgunsoftware/tk-maya)などです。統合とは、実際にはログ ファイル管理に接続して {% include product %} メニューを設定するためのコードを記述することです。 - - -### 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 レイヤを使用してコマンドが送受信されます。 -通常、このタイプのホスト ソフトウェアは、エンジンのソリューションを機能させるために多くの労力を必要とします。 - -{% 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 エンジンは、次のようなホスト ソフトウェアの特性を活用できます。 -対応可能な項目が多いほど、エンジンのエクスペリエンスが向上します。 - -- Python インタープリタ、Qt、PySide が組み込まれていること。 -- ソフトウェアの起動/初期化時にコードを実行する機能。 -- ソフトウェアを起動して実行しているときと、UI が完全に初期化されたときの 2 つの時点で、コードのアクセスと自動実行が可能であること。 -- ファイルシステムのインタラクションをラップする API コマンド: Open、Save、Save As、Add reference など。 -- UI 要素を追加するための API コマンド - - - カスタム Qt ウィジェットをパネルとしてアプリに追加する(バンドルされた PySide 経由が理想) - - カスタム メニュー/コンテキスト メニュー項目の追加 - - ノードベース パッケージのカスタム ノード(インタラクションのための独自の UI を簡単な方法で統合可能) - - 選択した項目またはノードなどを取得するイントロスペクション -- 柔軟なイベント システム - - 「関心を引く」イベントがカスタム コードをトリガする場合がある -- UI の非同期実行のサポート - - たとえば、インタフェースをロックしないカスタム メニュー項目がトリガされたときにダイアログを表示する - - カスタム UI ウィンドウが正しくペアレント化されるように、トップ レベル ウィンドウのハンドルを提供する \ No newline at end of file diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md deleted file mode 100644 index 0525139ab..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: フレームワークを開発する -pagename: sgtk-developer-framework -lang: ja ---- - -# 独自のフレームワークを開発する - -## はじめに -このドキュメントでは、Toolkit のフレームワークの開発に関するいくつかの技術的詳細について簡単に説明します。 - -目次: -- [Toolkit のフレームワークとは何か?](#what-is-a-toolkit-framework) -- [既製の {% include product %} フレームワーク](#pre-made-shotgun-frameworks) -- [フレームワークを作成する](#creating-a-framework) -- [フックからフレームワークを使用する](#using-frameworks-from-hooks) - -## Toolkit のフレームワークとは何か? - -Toolkit の[フレームワーク](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)は Toolkit アプリと非常によく似ています。 -主な違いは、フレームワークは単独で実行するものではなく、アプリまたはエンジンに読み込んで実行するものであるということです。このため、再利用可能なロジックを分離したまま、複数のエンジンおよびアプリで使用することができます。フレームワークの例として、再利用可能な UI コンポーネントのライブラリがあります。このライブラリに、プレイリスト ピッカー コンポーネントが含まれることがあります。アプリ内でこのフレームワークを読み込み、メイン アプリ UI にプレイリスト ピッカー コンポーネントを接続することができます。 - -## 既製の {% include product %} フレームワーク - -{% include product %} には、独自のアプリを作成するときに役立つことがある、既製の[フレームワーク](https://developer.shotgridsoftware.com/ja/c6db88dd/)がいくつか用意されています。 -[Qt ウィジェット](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/)と [{% include product %} ユーティリティ](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/)のフレームワークは、アプリ開発時に特に役立ちます。 - -## フレームワークを作成する - -独自のフレームワークを作成する場合、設定はアプリの作成とほぼ同じです。詳細については、「[独自のアプリを開発する](sgtk-developer-app.md)」を参照してください。 -フレームワーク パッケージのルートには、`app.py` ファイルでなく、[`Framework`](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#framework) 基本クラスから派生したクラスを含む `framework.py` が配置されています。 -また、フレームワークはエンジンにコマンドを登録しません。 - -代わりに、メソッドをフレームワーク インスタンス自体に直接格納するか、モジュールを `python/` フォルダ内に格納することができます。たとえば、[shotgunutils フレームワークは Python フォルダ内にモジュールを格納](https://github.com/shotgunsoftware/tk-framework-shotgunutils/tree/v5.6.2/python)します。 -これらのモジュールにアクセスするには、フレームワークを読み込み、[`import_module()` メソッド](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Framework.import_module)を使用してサブモジュールにアクセスします。 - -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 deleted file mode 100644 index 202116ce6..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ /dev/null @@ -1,476 +0,0 @@ ---- -layout: default -title: パスを生成してパブリッシュする -pagename: sgtk-developer-generating-path-and-publish -lang: ja ---- - -# パスを生成してパブリッシュする - -このガイドでは、パイプライン統合を構築する際に使用される {% include product %} Toolkit Python API の使用方法について説明します。 - -このガイドの目的は、API の使用方法の基本的な例を紹介することです。このガイドを読み終えると、Toolkit API の読み込みや、パスの生成およびパブリッシュを実行できるようになります。 - -### 要件 - -- Python プログラミングの基礎についての理解。 -- 高度な設定を使用するプロジェクト。まだ環境設定を行っていない場合は、「[設定の基本操作](https://developer.shotgridsoftware.com/ja/5d83a936/)」に従ってください。 - -### 手順 - -1. [sgtk を読み込む](#part-1-importing-sgtk) -2. [sgtk インスタンスを取得する](#part-2-getting-an-sgtk-instance) -3. [コンテキストを取得する](#part-3-getting-context) -4. [フォルダを作成する](#part-4-creating-folders) -5. [テンプレートを使用してパスを作成する](#part-5-using-a-template-to-build-a-path) -6. [既存のファイルを検索して最新のバージョン番号を取得する](#part-6-finding-existing-files-and-getting-the-latest-version-number) -7. [パブリッシュされたファイルを登録する](#part-7-registering-a-published-file) -8. [すべてを完全なスクリプトに統合する](#part-8-the-complete-script) - -## パート 1: sgtk を読み込む - -Toolkit API は `sgtk` という Python パッケージに含まれています。各 Toolkit の設定には、[`tk-core`](https://developer.shotgridsoftware.com/tk-core/overview.html) の一部として提供される API の独自のコピーが含まれています。 -プロジェクトの設定で API を使用するには、使用する設定から `sgtk` パッケージを読み込む必要があります。別の設定から読み込むと、エラーが発生します。 - -{% include info title="注" content="場合によっては、`tank` パッケージが参照されることがあります。このパッケージ名は、同じ内容に対する従来の名前です。いずれの名前でも機能しますが、今後使用する正しい名前は `sgtk` です。"%} - -API を読み込むには、[コアの Python フォルダ](https://github.com/shotgunsoftware/tk-core/tree/v0.18.167/python)のパスが [`sys.path`](https://docs.python.org/3/library/sys.html#sys.path) 内に存在することを確認する必要があります。ただし、この例では、{% include product %} Desktop の Python コンソールでこのコードを実行することをお勧めします。 -これは、`sgtk` パッケージの正しいパスが `sys.path` に既に追加されていることを意味します。同様に、{% include product %} の統合が既に実行されているソフトウェア内でこのコードを実行する場合は、パスを追加する必要はありません。 - -{% include product %} が既に起動されている環境でコードを実行する場合は、次のように記述するだけで API を読み込むことができます。 - -```python -import sgtk -``` -お気に入りの IDE でテストしている場合のように、{% include product %} の統合の外部で API を使用する場合は、最初に API のパスを設定する必要があります。 - -```python -import sys -sys.path.append("/shotgun/configs/my_project_config/install/core/python") - -import sgtk -``` - -{% include info title="注" content="分散設定を使用している場合に、Toolkit がまだブートストラップされていない環境に `sgtk` を読み込むには、別の方法が必要になります。詳細については、[ブートストラップ ガイド](sgtk-developer-bootstrapping.md)を参照してください。" %} - -## パート 2: sgtk インスタンスを取得する - -Toolkit API を使用するには、[`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) クラスのインスタンスを作成する必要があります。 - -[`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) は、API のメイン インタフェースとして機能する `sgtk` パッケージ内のクラスです。 -`Sgtk` のインスタンスを作成すると、コンテキストの取得、フォルダの作成、テンプレートへのアクセスなどを実行できるようになります。 - -API ドキュメントに示されているように、`Sgtk` のインスタンスを直接作成することはしないでください。次に、`Sgtk` インスタンスを取得するためのオプションをいくつか示します。 - -1. {% include product %} 統合が既に実行されている環境内で({% include product %} から Maya を起動した場合は、Maya Python コンソールなどで) Python コードを実行している場合は、現在のエンジンから `Sgtk` インスタンスを取得できます。 - `Engine.sgtk` プロパティにはエンジンの `Sgtk` インスタンスが保持されます。したがって、Maya などで次のコマンドを実行できます。 - - ```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 - ``` - - `Sgtk` インスタンスには、[`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.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)を参照してください。* - -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` クラス インスタンスを格納します。{% include product %} Python コンソールを使用している場合、`tk` 変数はグローバル変数として既に定義されています。 - -これで、`Sgtk` インスタンスが作成され、API を使用する準備が整いました。パブリッシュ スクリプトは次のようになります。 - -```python -import sgtk - -# 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 -``` - -## パート 3: コンテキストを取得する - -### コンテキストとは何か、なぜ必要なのか? - -Toolkit の多くの機能は、コンテキストに関するものです。つまり、自分が作業している対象を認識し、それに応じた対応を可能にします。Toolkit API を使用している場合に、コンテキストに対応する動作を実現するには、使用しているエンティティに関する重要な情報を保存する機能や、アプリまたは他のプロセスでこれらの情報を共有する機能が必要になります。たとえば、ユーザが作業しているタスクを Toolkit が認識している場合、Toolkit はユーザがパブリッシュしたファイルを ShotGrid 内のこのタスクに自動的にリンクすることができます。 - -[`Context` クラス](https://developer.shotgridsoftware.com/tk-core/core.html#context)は、この情報のコンテナとして機能します。 -特に、`Task`、`Step`、`entity` (`Shot` または `Asset` など)、`Project`、および現在の `HumanUser` をクラスのインスタンス内に保存することができます。 - -特定のセッションで、さまざまなコンテキスト オブジェクトを必要なだけ作成できます。ただし、エンジンがある場合は、現在の単一コンテキストという概念が存在し、エンジンはこのコンテキストを継続的にトラックします。このコンテキストは、ユーザが現在作業しているコンテキストです。アプリは、このコンテキストを使用する必要があります。 - -後の手順では、コンテキストを使用して、ファイルの保存またはコピーに使用できるパスを解決します。 - -### コンテキストを取得する - -コンテキストを作成するには、コンストラクタ メソッド `Sgtk.context_from_entity()`、`Sgtk.context_from_entity_dictionary()`、または`Sgtk.context_from_path()` のいずれかを使用する必要があります。これらのメソッドにアクセスするには、`tk` 変数に格納されている、前の手順で作成した `Sgtk` インスタンスを使用します。 - -{% include info title="注" content="パスのコンテキストを取得するには、フォルダを作成しておく必要があります。これについては、このガイドの次の手順で説明します。"%} - -ただし、新しいコンテキストを作成する代わりに、次のように、[パート 2](#part-2-getting-an-sgtk-instance) で収集した[現在のコンテキストをエンジンから取得する](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context)ことができます。 - -```python -context = current_engine.context -``` -後の手順では、このコンテキストを使用してショット上にあるタスクのファイル パスを解決するため、コンテキストに関連情報が含まれていることを確認する必要があります。 - -コードが Toolkit アプリの一部として実行されていて、アプリが shot_step 環境でのみ実行されるよう設定されている場合は、現在のコンテキストが適切に取得されると想定しても安全面で問題はありません。ただし、このガイドからあいまいさを排除するために、`Sgtk.context_from_entity()` を使用して、`Task` (`Shot` に属している必要がある)からコンテキストを明示的に作成します。 - -コンテキストを作成する場合は、操作に必要な最深のレベルを指定します。たとえば、タスクからコンテキストを作成し、残りのコンテキスト パラメータは Toolkit で解決されるようにすることができます。 - -```python -context = tk.context_from_entity("Task", 13155) -``` - -コンテキスト インスタンスの表現を出力すると、次のようになります。 - -```python -print(repr(context)) - ->> - -``` - -タスクのみを指定した場合でも、他の関連情報が出力されます。 - -パブリッシュ スクリプトは次のようになります。 - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) -``` - -## パート 4: フォルダを作成する - -Toolkit は、プロジェクト エンティティに基づいて、ディスク上にフォルダ構造を動的に生成できます。 - -これにより、2 つの目的が実現されます。 - -1. ディスク上に整理された構造が作成され、そこにファイルを配置することができます。 -2. これにより、Toolkit は構造の把握、構造からのコンテキストの派生、およびファイルの配置場所の認識をプログラムを通して実行できるようになります。 - -後の手順でパスを解決できるように、フォルダがディスク上に存在することを確認する必要があります。このためには、[Sgtk.create_filesystem_structure()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Sgtk.create_filesystem_structure) メソッドを使用します。 - -```python -tk.create_filesystem_structure("Task", context.task["id"]) -``` -コンテキスト オブジェクトを使用して、フォルダを生成するタスクの ID を取得できます。 - -これで、コードは次のようになります。 - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) -``` - -これですべての準備作業が完了し、テンプレートを使用してパスを生成できるようになりました。 - -## パート 5: テンプレートを使用してパスを作成する - -### パスを生成する - -Toolkit 内のファイルの配置場所や検索場所を把握する必要がある場合は、テンプレートを使用してディスク上の絶対パスを解決できます。 - -[テンプレート](https://developer.shotgridsoftware.com/tk-core/core.html#templates)とは、コンテキストおよびその他のデータを適用した場合にファイルシステムのパスに解決できる、本質的にトークン化された文字列のことです。 -テンプレートは、[プロジェクトのパイプライン設定](https://developer.shotgridsoftware.com/ja/82ff76f7/#part-2---configuring-file-system-templates)を使用してカスタマイズできます。テンプレートの目的は、ファイルの保存場所を解決するための標準化された方法を提供することです。 - -最初に、生成するパスのテンプレート インスタンスを取得する必要があります。作成した `Sgtk` インスタンスを使用すると、`Sgtk.templates` アトリビュートを介して目的の `Template` インスタンスにアクセスできます。このアトリビュートは、キーがテンプレート名、値が [`Template`](https://developer.shotgridsoftware.com/tk-core/core.html#template) インスタンスであるディクショナリです。 - -```python -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}' -``` - -テンプレートは、実際の値に解決する必要があるキーで構成されています。コンテキストには、大部分のキーに関する十分な情報が含まれているため、これを使用して値を抽出することができます。 - -```python -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)します。そのため、この値を指定する必要はありませんが、既定値以外の値が必要な場合は指定することができます。 - -`name` および `version` は残されます。名前を選択することが重要であるため、既定値をハード コード化したり、インタフェースのポップアップするなどして、ユーザに値を入力する機会を与えたりできます。ここでは、両方をハード コード化しますが、次の手順では、次に使用可能なバージョン番号を検索する方法について説明します。 - -```python -fields["name"] = "myscene" -fields["version"] = 1 -``` - -これですべてのフィールドが設定されたので、[`Template.apply_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Template.apply_fields) を使用してテンプレートを絶対パスに解決することができます。 - -```python -publish_path = template.apply_fields(fields) - ->> /sg_toolkit/mysite.shotgunstudio.com/my_project/sequences/seq01_chase/shot01_running_away/comp/publish/maya/myscene.v001.ma -``` - -### フォルダが存在することを確認する - -フォルダの作成方法は以前に実行しましたが、場合によっては、すべてのフォルダが存在することを確認するための追加手順を実行する必要があります。たとえば、スキーマ内に存在しないフォルダがテンプレートによって定義されていて、元の `create_filesystem_structure()` 呼び出しで作成されなかった場合は、この追加手順が必要になることがあります。 - -これを行うための便利なメソッドがいくつかあります。コードが 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 に指示することができます。 - - -### 作業を統合する - -```python -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) - -# Get a template instance by providing a name of a valid template in your config's templates.yml. -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" -fields["version"] = 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders. -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Create an empty file on disk. (optional - should be replaced by actual file save or copy logic) -sgtk.util.filesystem.touch_file(publish_path) -``` - -次の手順では、ハード コード化しないで、次のバージョン番号を動的に処理します。 - -## パート 6: 既存のファイルを検索して最新のバージョン番号を取得する - -ここで使用できるメソッドは 2 つあります。 - -1. この特定の例ではパブリッシュ ファイルを解決しているため、[{% include product %} API](https://developer.shotgridsoftware.com/python-api/) を使用して、`PublishedFile` エンティティで使用可能な次のバージョン番号をクエリーすることができます。 -2. ディスク上のファイルをスキャンして、既に存在するバージョンを調べ、次のバージョン番号を抽出することができます。これは、作業しているファイルが {% include product %} でトラックされていない場合(作業ファイルなどの場合)に役立ちます。 - -最初の方法はこのガイドの例として最適ですが、どちらの方法にも使い道があるため、両方について説明します。 - -### {% include product %} に次のバージョン番号を照会します。 - -{% include product %} API と [`summarize()` メソッド](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.summarize)を使用すると、同じ名前およびタスクを共有する `PublishedFile` エンティティの中で最大のバージョン番号を取得して、1 を追加することができます。 - -```python -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 -``` - -### ファイル システム内で次のバージョン番号を検索します。 - -Toolkit API を使用すると、既存ファイルのリストを収集し、そこからテンプレート フィールドの値を抽出して、次のバージョンを特定することができます。 - -次の例では、作業ファイル テンプレートから最新バージョンを収集しています。作業ファイル テンプレートとパブリッシュ ファイル テンプレートのフィールドが同じである場合は、同じフィールドを使用して次のメソッドを 2 回呼び出し、パブリッシュ ファイルと作業ファイルの最新バージョンを調べ、2 つの組み合わせを使用するよう決定することができます。 - -```python -def get_next_version_number(tk, template_name, fields): - template = tk.templates[template_name] - - # Get a list of existing file paths on disk that match the template and provided fields - # Skip the version field as we want to find all versions, not a specific version. - skip_fields = ["version"] - file_paths = tk.paths_from_template( - template, - fields, - skip_fields, - skip_missing_optional_keys=True - ) - - versions = [] - for a_file in file_paths: - # 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. -fields["version"] = get_next_version_number(tk, "maya_shot_work", fields) -``` - -[`sgtk.paths_from_template()`](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=paths_from_template#sgtk.Sgtk.paths_from_template) メソッドは、指定したテンプレートおよびフィールドと一致するディスク上のすべてのファイルを収集します。 -このメソッドは、ファイルのリストを検索して、ユーザに表示する場合にも便利です。 - -いずれのオプションも使用できますが、シンプルさを維持するために、このガイドでは方法 1 のコードを使用します。 - -## パート 7: パブリッシュされたファイルを登録する - -パスが作成されたので、パブリッシュすることができます。この操作を行うには、ユーティリティ メソッド [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish) を使用します。 - -{% include product %} API の [`{% include product %}.create()`](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.create) メソッドを使用して `PublishedFile` エンティティを作成することもできますが、Toolkit API を使用する方法を強くお勧めします。Toolkit API を使用すると、すべての必須フィールドが正しく指定および入力されていることを確認できます。 - -```python -# So as to match the Publish app's default behavior, we are adding the extension to the end of the publish name. -# This is optional, however. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -この時点で、[Publish アプリ](https://developer.shotgridsoftware.com/ja/bc718491/) にも[独自の API](https://developer.shotgridsoftware.com/tk-multi-publish2/) が提供されることに注目してください。 -このアプリは基本的に同じ [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish) メソッドを使用していますが、コレクション、検証、およびパブリッシュを処理するフレームワークを提供することで、パブリッシュ プロセスに基づいて動作します。 - -## パート 8: 完全なスクリプト - -```python -# Initialization -# ============== - -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task -tk.create_filesystem_structure("Task", context.task["id"]) - -# Generating a Path -# ================= - -# Get a template instance by providing a name of a valid template in your config's templates.yml -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" - -# Get an authenticated Shotgun API instance from the engine -sg = current_engine.shotgun - -# Run a Shotgun API query to summarize the maximum version number on PublishedFiles that -# are linked to the task and match the provided name. -# Since PublishedFiles generated by the Publish app have the extension on the end of the name we need to add the -# extension in our filter. -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Creating a file -# =============== - -# This is the bit where you would add your own logic to copy or save a file using the path. -# In the absence of any file saving in the example, we'll use the following to create an empty file on disk. -sgtk.util.filesystem.touch_file(publish_path) - -# Publishing -# ========== - -# So as to match publishes created by the Publish app's, we are adding the extension to the end of the publish name. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -{% include info title="ヒント" content="この時点でコードが少し長くなっているため、次の推奨手順で少し整理して、複数のメソッドに分割します。"%} - -### 終わりに - -このガイドを参照するには、Toolkit API の使用方法の基本について理解しておくことをお勧めします。API には他にも多くの用途があります。詳細については、[tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html) を参照してください。 - -また、オートデスクの[フォーラム](https://community.shotgridsoftware.com/c/pipeline/6)で、API に関する疑問点についてディスカッションし、回答を得ることができます。このガイドに関するフィードバックを送信することもできます。 \ No newline at end of file diff --git a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md deleted file mode 100644 index 4cea79f5a..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -layout: default -title: 統合開発者ガイド -pagename: sgtk-developer-guide -lang: ja ---- - -# 統合開発者ガイド - -## パネル - -パネル アクションの例については、[https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks) を参照してください。 - -### 表示内容を設定する - -詳細領域の値とリストは両方とも `shotgun_fields` フックから設定可能です。正確な値を表示するために、このフックをサブクラス化して実装を変更できます。 - -**システムをテンプレート化する** - -フックはシンプルなテンプレート言語をサポートしているため、優れた柔軟性が得られます。また、Qt でサポートされている HTML サブセットもサポートしているため、表示される値の色、フォント サイズ、ウェイトなどを制御できます 。 - -テンプレート言語は次のように機能します。 - -- {% include product %} の値は、`{brackets}` のように `Description: {description}` で囲まれています。このテンプレートをレンダリングすると、`{description}` の部分が説明フィールドの値で置き換えられます。 - -- 値が空以外の場合にのみ表示される値にオプションの接頭辞または接尾辞を指定する場合、`{[Prefix]sg_field[suffix]}` 構文を使用できます。両方の値が追加されている場合、テンプレート `{[Start: ]start_date} {[End: ]end_date}` は `Start: 12 July 2009 End: 14 July 2012` をレンダリングします。ただし、終了日を設定していない場合は `Start: 12 July 2009` をレンダリングします。 - -- 一部の値が設定されていない場合はフォールバックを定義することができます。{% include product %} のバージョンについては、プロデューサがアーティストの代わりにバージョンを送信するというワークフローをサポートするため、`created_by` フィールドが `artist` フィールドよりも優先されます。この場合、バージョンはプロデューサによって作成されますが、`artist` フィールドはアーティストに設定されます。ただし、いつもそういうわけではありません。アーティストが自分の作業を送信するパイプラインでは、アーティスト欄は空欄になります。バージョンを表示する場合、最初に `artist` フィールドを確認できるようにしておくと役立ちます。今回このフィールドは設定されていないため、`created_by` フィールドにフォールバックします。このようにするには、`Created By: {artist|created_by}` のように構文 `{field1|field2}` を使用します。`{[Created By: ]artist|created_by}` のようにオプション フィールドを組み合わせることができます。 - -このフックには次のメソッドが含まれます。 - -**リストに表示される項目を制御する** - -`get_list_item_definition()` メソッドは、{% include product %} のエンティティ タイプを考慮して、さまざまなリストの項目の外観を制御するディクショナリを返します。たとえば、`top_left`、`top_right`、および `body` といったキーを持つディクショナリを返します。 - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**上部の細部領域を制御する** - -`get_main_view_definition()` メソッドは、{% include product %} のエンティティ タイプを考慮して、`title` キーと `body` キーを含むディクショナリを返します。これらの値は、詳細領域のオブジェクトの外観を次のように制御します。 - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**[情報] (Info)タブに表示されるフィールドを制御する** - -`get_all_fields()` メソッドは、[情報] (Info)タブで任意のエンティティがレンダリングされる場合に表示するフィールドのリストを返します。 - -### アクションを設定する - -アクションは {% include product %} のデータを操作するコードの小さなスニペットです。例を次に示します。 - -- 任意の {% include product %} バージョンの RV を起動するアクション -- 任意のタスクに自分に割り当てることができるアクション -- 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} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -上記の例では、`reference`、`import`、`texture_node`、`assign_task`、および `play_in_rv` といったアクションを使用します。次に、さまざまな {% include product %} のオブジェクトと条件にこのアクションをマップします。たとえば `import` アクションは、タイプが「Maya Scene」であるすべてのパブリッシュに表示されるよう要求しています。 - -オブジェクトがパネルにロードされると、上記のアクション設定が読み込まれ、分析されます。現在のオブジェクトに適したアクションのリストが決定され、`generate_actions()` フック メソッドが実行されます。この特定の {% include product %} オブジェクトに対してアクションを実行できるかどうかをフック コードが判断できるように、この時点で指定したエンティティの {% include product %} データがフックに渡されます。この方法により、各フックで表示前にチェックを実行できます。たとえば、`play_in_rv` フックはメディアをローカルで利用できる場合にのみ意味を持ちます。設定でセットアップされたアクション マッピングは指定した {% include product %} エンティティで有効にするアクションをパネルに通知しますが、指定したオブジェクトに適していないと `generate_actions()` メソッドによって判断された場合は、すべてのアクションが表示されない可能性があります。 - -`generate_actions()` メソッドから返されるアクションはアクション メニューに表示されます。ユーザがクリックすると、`execute_acton()` フック メソッドが呼び出されてアクションが実行されます。 - -パネルがサポートするアプリケーションごとに、適切なアクションを実装するアクション フックがあります。たとえば Maya などの場合、既定のフックは `reference`、`import`、`texture_node` の各アクションを実装し、それぞれが特定の Maya コマンドを実行して現在の Maya シーンにパブリッシュを取り込みます。すべてのフックと同様に、アクションを完全にオーバーライドおよび変更できます。また、埋め込まれたフックに基づいたフックも作成できるため、たくさんのコードを複製しなくても、組み込みのフックに他のアクションを簡単に追加できます。 - -パネルは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これは既定の構成設定で次のように表示されます。 - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -キーワード `{self}` は、フックのアプリの `hooks` フォルダを確認するように Toolkit に指示します。 - このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 - -詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。 - -[こちらで、第 2 世代のフック形式を確認してください。](https://developer.shotgridsoftware.com/ja/6d10dedf/) - -フックの継承を使用すると、次のように既定のフックに他のアクションを追加できるようになります。 - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) -``` - -これで、この新しいアクションを設定内のパブリッシュ タイプのセットにバインドできます。 - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。 - -## パブリッシュ - -パブリッシュ用に項目をアーティストに表示する方法やそれらの項目を処理する方法を制御するフックにより、Publish アプリを高度にカスタマイズすることができます。 - -Publish アプリの開発者を対象とした完全なドキュメントは、[Toolkit 開発者サイト](http://developer.shotgridsoftware.com/tk-multi-publish2)で入手できます。 - -Publish アプリの使用方法の詳細については、[ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/#the-publisher)を参照してください。 - -## Loader - -ロード操作の例については、[https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks) を参照してください。 - -## 高度な機能 - -## {% include product %} Toolkit でツールを簡単に開発する - -独自のアプリを作成できることをご存じですか。各エンジンは、Python および PySide に基づく一貫性のあるインタフェースを公開しているため、Nuke、Photoshop、および 3dsmax で動作する 1 つのアプリを作成できます。Core API 機能を使用すれば、スタジオ用に大規模なパイプライン スタックを構築する必要がなくなり、代わりに開発リソースを制作上の問題解決に集中させることができます。当社の Toolkit を使用すると、プロジェクト間でツールを容易に再利用できます。命名規則やその他の要件が変化する場合には、アプリを再構成するだけで済みます。Toolkit に組み込まれた GIT と Github のサポートによってツールを安全に展開し、開発時にコードをすばやくホットロードしましょう。独自の開発サンドボックスで作業し、TD と早期採用者を招いてテストしてください。プロジェクトに関わるすべての人にコードを適用する必要はありません。 - -![](images/develop.png) \ No newline at end of file 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 deleted file mode 100644 index 0128ca68b..000000000 --- a/docs/ja/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: 統合の修正を送信する方法 -pagename: sgtk-how-to-submit-fixes -lang: ja ---- - -# 統合の修正を送信する方法 - -Toolkit Community へのご協力を歓迎いたします。発見したバグに対する修正プログラムを作成した場合や、Toolkit に追加するべきと思われる機能を実装した場合は、下記のガイドラインに沿って適切なチャネルまでお送りください。 - -## お問い合わせ - -開発や修正が必要なものがある場合は、まずお話をお聞かせください。適切な方向に進むための、あるいは不要な作業を回避するための情報を提供できるかもしれません。最も重要なことは、ユーザの皆様が何を作成したいのか、Toolkit をどのように使用するのか、その成果に当社がどのように貢献できるのかについて、実際に話をさせていただくことです。 - -## Github からリポジトリをフォークする - -Toolkit エンジン、アプリ、フレーム ワークコードのほとんどは Github で公開されています。変更しているリポジトリを Github からローカル環境にフォークしてみてください。 - -## 変更を加える - -開発作業はブランチでローカルに行い、専用の環境で当社に提出できる状態になるまでテストしてください。既存のコードベースにスタイルを合わせるようにしてください。変更の内容は目的の範囲内に限定してください。たとえば、コード内の 3 行のバグを修正する場合に、ファイル全体に渡ってスペースの問題を修正することは避けてください。Toolkit に潜んでいる別の問題を引き起こしてしまう可能性があります。 - -## コメント - -作業の内容と、その理由についての詳細なコメントを忘れずに追加してください。他のユーザが後でこのリポジトリをフォークするときに、コードの内容と作成された理由について理解する必要が生じる場合があることにご注意ください。簡潔な内容とし、コメントは長すぎないようにしてください。:) - -## テスト - -実際の環境や変数はユーザによってさまざまであり、スタジオで使用しているものとは一致しない場合があります。Toolkit は、そのような条件がユーザに及ぼす影響を最小限に抑えようとしますが、ユーザの環境によって状況が異なるのは当然のことです。次に例を示します。 - -- コードは OS X、Windows、Linux で同じように動作しますか? -- すべてのサポートされているバージョンのソフトウェアで動作しますか? -- ターミナル、SG Desktop、{% include product %}、または独自のカスタム アプリのどこから起動していても同じように動作しますか? - -## プル リクエストを作成する  - -準備ができたら、変更を Github にプッシュしてプル リクエストを作成します。プル リクエストは詳細に記述し、コードの実行内容と変更が必要な理由を含める必要があります。プル リクエストを書くときには、このコード領域に関する知識をほとんど持たないユーザのことを考慮してください。一般のユーザがプル リクエストを見て、丁寧な記述を読み、理解できる内容であることに満足するでしょう。 - -## 次に行うこと - -当社は、プル リクエストを時間のあるときに短時間で見直します。通常は、コードまたはユースケースについてコメントしたり、質問したりすることがあります。リクエストをユーザに戻して、変更を依頼する場合があります。気を悪くなさらないでください。当社はユーザに対する貢献を大切にしていますが、技術的な内容については深い知識を持っています。日々コードに向き合っていますが、誰もが完璧なコードを一度で作成できるとは考えていません。 - -レビュー後、承認されたプル リクエストは QA のキューに入れられ、リポジトリに統合されて、特定のタイミングでリリースされます。タイムラインはさまざまな要因によって異なります。しばらくお待ちいただく場合もあります。 - -プル リクエストが却下される場合もあります。ここでも、気を悪くなさらないでください。ご協力に感謝します。却下されるのにはいくつかの要因があります。しかし、上記のガイドラインに従えば、おそらくそのような事態は回避できるでしょう。 diff --git a/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md deleted file mode 100644 index aaafd0da9..000000000 --- a/docs/ja/guides/pipeline-integrations/getting-started/advanced_config.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -layout: default -title: 設定のセットアップ -pagename: toolkit-guides-advanced-config -lang: ja ---- - -# 設定の基本操作 - -このガイドを読み終えると、プロジェクト情報を設定に追加するための基本的な知識を習得し、その設定をプロジェクトに関連付けて、パイプライン設定をカスタマイズするための準備を行えるようになります。 - -## このガイドについて - -このガイドでは、{% include product %} Desktop の**[Advanced Project Setup]ウィザード**を使用して、デジタル コンテンツ作成パイプラインの設定を作成する方法について説明します。短時間で設定ツールを習得し、ウィザードの使用方法を学習して、さらに知識を広げることできます。ウィザードを使用することにより、プロジェクトのパイプライン設定を作成でき、パイプラインの各ステップに対応するように編集、拡張する準備が整います。設定により、プロダクション パイプラインをサポートするために必要なユーザ インタフェース、{% include product %} アプリ、およびさまざまなツールの特性がコントロールされます。ウィザードを使用することは、設定を拡張するための 1 つの方法にすぎません。ウィザードによってパイプラインの各ステップに具体的な設定が追加されるだけでなく、ソフトウェア アプリケーションとの統合も追加されます。このガイドでは、プロジェクトの設定のベースとして Toolkit の既定の設定を使用します。 - -このガイドでは、次のユーザを対象としています。 - -1. [Advanced Project Setup]ウィザードを使用したことがないユーザ -2. {% include product %} の使用方法に関する基本知識を持っているユーザ -3. {% include product %} Toolkit を新たに使用するユーザ - -### このドキュメントの使い方 - -このガイドを使用してカスタマイズ可能なプロジェクトの設定を作成するには、以下が必要になります。 - -1. アクティブな {% include product %} サイト。[こちらから {% include product %} に登録](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management)し、30 日間の無償体験版を取得して試してみることができます。 -2. {% include product %} Desktop。Desktop がインストールされていない場合は、[こちらのリンク](https://developer.shotgridsoftware.com/ja/d587be80/#installation-of-desktop)の手順で開始してください。 -3. プロジェクト ファイルおよびパイプライン設定を保存できるファイルシステムへのアクセス権。ファイルシステム上に `Shotgun` というフォルダを作成し、その中に `projects` と `configs` という 2 つのフォルダを作成します。 - -## [Advanced Project Setup]ウィザードについて - -{% include product %} Desktop の[Advanced Project Setup]ウィザードは、既定の設定に基づいてパイプライン設定を生成します。既定の設定により、パイプライン プロセスをサポートするカスタマイズ可能な設定、アプリ、UI 要素を備えた、構築のための強固な基盤が提供されます。ユーザはプロジェクトのパイプラインに関するニーズに合わせて、このウィザードで作成される設定を編集したり、拡張したりできます。 - -既定の設定は、次のとおりです。 -* ディスク上のファイルの配置場所を決定する、ファイルシステムの基本的なスキーマおよびテンプレート -* ユーザのソフトウェア アプリケーション内から {% include product %} およびパイプラインの機能を直接操作できる、サポート対象のすべての[ソフトウェア統合](https://developer.shotgridsoftware.com/ja/162eaa4b/)。 - -カスタマイズするには、想像力、賢さ、プログラミング上の知識の他に、{% include product %} コミュニティ内の他のユーザが作成した作品から借用する能力が必要です。 - -### 設定を作成する - -設定はプロジェクトごとに必要です。{% include product %} Desktop を介してプロジェクトに初めてアクセスするときに、基本設定がダウンロードされて、設定されます。この基本設定により、ユーザがシステムにインストールしているサポート対象のコンテンツ作成ソフトウェアが自動的に検出され、その設定がプロジェクトに関連付けられます。サポート対象ソフトウェア アプリケーション内の統合は、パイプライン設定内の設定値によって管理されます。[Panel](https://developer.shotgridsoftware.com/ja/c0b0ce05/) アプリには {% include product %} のプロジェクト情報が表示されるため、アーティストは作業セッションから移動しなくてもノートに返信し、バージョンを確認することができます。[Publisher](https://developer.shotgridsoftware.com/ja/bc718491/) アプリを使用すると、アーティストはチーム内の他のメンバーに自分の作品を公開することができます。また、[Loader](https://developer.shotgridsoftware.com/ja/a4c0a4f1/) アプリを使用すると、アーティストはチームメイトがパブリッシュしたファイルをロードすることができます。基本設定には、ファイルシステムの管理に関する設定や、ディスク上のファイルおよびフォルダの命名方法を指定するためのテンプレートの開発は含まれていません。また、既定の設定を行ったときに追加された多数のアプリも含まれていません。基本設定は、設定ファイルを手動で編集しなくても 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 ノードなど | - -このガイドでは、{% include product %} Desktop のウィザードを使用し、既定の設定に基づいてプロジェクトのパイプライン設定を生成します。この設定を生成すると、独自のプロダクション パイプラインをサポートするために必要なカスタマイズを実行できるようになります。 - -## 実習を開始 - -### 既定の設定の作成準備を行う - -**手順 1:** {% include product %} で「the_other_side」という新しいプロジェクトを作成します。 - -![新しいプロジェクト](./images/advanced_config/2_new_project.png) - -**手順 2:** {% include product %} Desktop アプリを起動し、ユーザ名およびパスワードを使用して {% include product %} サイトからログインします。 - -![ログイン](./images/advanced_config/3_login.png) - -![プロジェクトをロード](./images/advanced_config/4_load_project.png) - -**手順 3:** サムネイル イメージを選択して、ウィザードを実行するプロジェクトにナビゲートします。 - -{% include info title="ヒント" content="Desktop を開いているときに新しいプロジェクトを作成した場合、新しいプロジェクトを表示するには、**プロジェクト** ウィンドウを更新しなければならないことがあります。デスクトップの右下にあるプロファイルの**アバター**を選択して、[Refresh Projects]を選択します。"%} - -![プロジェクトを最新の状態に更新](./images/advanced_config/5_refresh_projects_list.png) - -### 既定の設定にアクセスする - -プロジェクトにアクセスし、基本設定をダウンロードして設定しました。また、Publish アプリおよびサポート対象のソフトウェア パッケージが検出されて、{% include product %} Desktop の**[Apps]**ペインに自動的に追加されました。 - -**手順 4:** プロジェクトがロードされたら、画面の右下にあるプロファイルの**アバター**を選択します。ポップアップメニューで、**[Advanced project setup...]**を選択して、ウィザードを開始します。 - -![高度なプロジェクト設定](./images/advanced_config/6_advanced_project_setup.png) - -ダイアログ ボックスが開き、[{% include product %} Default]が選択された状態で 4 つのオプションが表示されます。この時点で、プロジェクトのパイプライン設定のベースを既存のプロジェクトの設定にするのか、GIT リポジトリの設定にするのか、それともディスクのパスにするのかを選択できます。 - -この演習では**[{% include product %} Default]** を選択します。このオプションを使用すると、{% include product %} の既定の設定に基づいてプロジェクトのパイプライン設定が作成されます。 - -![設定を選択](./images/advanced_config/7_select_config.png) - -**手順 5:** **[Continue]**を選択します。 - -ダイアログ ボックスが開き、**[Default]**が選択された状態で 2 つのオプションが表示されます。この時点で、[Legacy Default]設定オプションを選択することができます。この設定は、まだ以前のバージョンの {% include product %} を使用しているスタジオのために、以前のバージョンの Shotgun の設定を継承しています。この演習では[Default]を使用します。 - -![設定を選択](./images/advanced_config/8_select_config.png) - -**手順 6:** **[Continue]**を選択します。 - -### プロジェクト ファイルの保存場所を定義する - -ダイアログ ボックスが開き、`Storage:` という単語の横にドロップダウン メニューが表示されます。 - -![保存場所を定義](./images/advanced_config/9_define_storage1.png) - -**手順 7:** このプロジェクトのプロジェクト データの保存場所を識別します。ダイアログ ボックスの上部にあるドロップダウンで**[+ New]**を選択し、フィールドに「**projects**」と入力します。 - -![保存場所を定義](./images/advanced_config/10_define_storage2.png) - - {% include product %} Toolkit では、Linux、Mac、Windows の 3 つのオペレーティング システムをサポートしています。 - -**手順 8:** プロジェクト データを保存するのに利用するオペレーティング システムの横にあるフィールドを選択します。フォルダ アイコンを選択し、この演習の前にファイルシステム上に作成したプロジェクト フォルダにナビゲートします。 - -![ストレージのルート フォルダ](./images/advanced_config/11_storage_root_folder.png) - -この設定の場合、{% include product %} からアクセスできるのは、プロダクション データを保存するために識別されたフォルダに限定されます。この演習の準備中に、{% include product %} のルート ディレクトリ内に `projects/` ディレクトリを追加しました。`projects/` ディレクトリには、プロジェクトに関連するローカルな情報が格納されます。 - -![保存場所を定義](./images/advanced_config/12_define_Storage3.png) - -**手順 9:** **[Save]**を選択して、プロジェクト データの保存先としてプロジェクト フォルダを識別します。 - -![保存場所を定義](./images/advanced_config/13_define_storage4.png) - -オペレーティング システムのパスが自動的に更新されて、プロジェクト データの保存場所が識別されます。 - -**手順 10:** **[Continue]**を選択します。 - -### プロジェクト フォルダに名前を付ける - -ダイアログ ボックスが表示され、プロジェクトの名前がテキスト フィールドに入力されます。この名前はプロジェクトの情報から自動的に入力され、パスは自動的に更新されます。 - -![プロジェクト フォルダ](./images/advanced_config/14_project_folder_name.png) - -Toolkit は、2 つのいずれかの設定で機能します。パイプライン設定が {% include product %} にアップロードされ、ユーザごとにローカルにキャッシュされる分散設定(Distributed Setup)と、ディスク上の共有場所に保管された単一の設定にユーザがアクセスする中央設定(Centralized Setup)です。この演習では分散設定を使用します。分散設定の詳細については、[こちら](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)を参照してください。 - -最後の手順では、該当するフォルダ、ファイル、およびプロジェクトに固有の設定を作成するために必要なデータを生成します。 - -![中央に保存](./images/advanced_config/15_centralized_storage.png) - -**手順 11:** 該当するオペレーティング システムの**[Browse...]**を選択し、この演習の準備中に作成した設定フォルダ `configs` にナビゲートして、プロジェクト名として「**the_other_side**」と入力します。プロジェクト設定が保存されるフォルダが作成されます。**[Run Setup]**を選択して、セットアップが完了するまで待ちます。 - -![プロジェクトの設定](./images/advanced_config/16_project_setup_config.png) - -**手順 12:** **[Done]**を選択します。プロジェクト ウィンドウに入力するアイコンが表示されます。 - -![セットアップ完了](./images/advanced_config/17_project_setup_complete.png) - -**ヒント:** アプリをメニュー バーに固定すると、{% include product %} Desktop にすばやくアクセスできるようになります。**アバター**を選択して、**[Pin to Menu]**を選択します。 - -これでプロジェクトの設定は完了です。指定した場所にプロジェクトの Toolkit パイプライン設定が保存され、カスタマイズを開始できるようになりました。 - -`configs` フォルダを調べると、いくつかのフォルダとファイルが配置されています。内容を調べてみましょう。 - -![環境設定](./images/advanced_config/18_config.png) - -ここからの作業は、設定で実行できるすべての操作について楽しみながら学習することができます。次に、これから調べる高度なトピックをいくつか示します。 - -## 高度なトピック - - {% include product %} Toolkit では、さまざまな方法で設定の編集、クローン作成、またはやり直しを行うことができます。既存の設定を拡張することにより、作業時間を短縮し、ネットワーク内の他のユーザが作成したすべての便利なツールにアクセスできます。広大な {% include product %}[ のコミュニティ](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=ja#!forum/shotgun-dev) を利用して、必要な設定を取得することができます。{% include product %} のコミュニティは共有コミュニティです。そのため、他のユーザに対して親切に対応し、感謝を示し、あなたのジョブに役立つ設定を作成してくれたユーザに賞賛の念を示すことが大切です。そして「お返し」をすることを忘れてはいけません。それこそが {% include product %} の仲間をサポートし、このコミュニティへの参加が特別なことであることを示す理由なのです。 - -次に、設定による楽しみ方の例をいくつかを示します。 - -### コマンド ラインを使用して既定の設定を作成する - -いずれかのプロジェクト設定内で `tank` コマンドを使用すると、端末から管理コマンドを実行できます。各プロジェクトには専用の `tank` コマンドがあります。`tank setup_project` コマンドの機能は、[Advanced Setup Wizard]の機能と似ていて、既存のプロジェクトの設定や既定の設定に基づいて、プロジェクトで使用される編集可能な設定をディスク上に作成することができます。`tank setup_project` の実行方法については、[こちら](https://developer.shotgridsoftware.com/ja/425b1da4/#setup_project)を、`tank` コマンドの詳細については、[こちら](https://developer.shotgridsoftware.com/ja/425b1da4/#using-the-tank-command)を参照してください。 - -### プロダクション中に設定を編集する - -現在プロダクションで使用している設定を変更する必要があっても、アーティストが使用している間は編集したくない場合があります。{% include product %} には、コマンドをいくつか実行するだけで既存の設定をコピーできる機能があります。この機能を使用すると、プロダクション環境に送信する前に変更内容について安全にテストすることができます。このプロセスを行うと、プロダクションの設定が新しい設定に置き換えられ、古い設定が自動的にバックアップされます。 - -設定のコピーを操作する必要があるのは、次の理由からです。 - -1. 設定を更新する -2. 実行する前にいくつかの変更をテストする -3. 一部のアプリをアップグレードまたは追加する -4. テスト後に開発を行って、展開する - -設定のクローン作成方法、および設定管理に関するその他の基本情報については、「[ -設定のステージングとロールアウト](https://developer.shotgridsoftware.com/ja/60762324/#cloning-your-configuration)」のドキュメントを参照してください。 - -### パイプライン設定のクラウドへの分散 - -このガイドでは、**中央設定**の作成方法について説明します。中央設定とは、ネットワーク上の共有場所に配置されていて、すべてのユーザがアクセスできるパイプライン設定の単一コピーのことです。従業員が複数の場所およびネットワークに分散している場合は、パイプライン設定の単一コピーを共有できないことがあります。Toolkit は**分散設定**オプションを提供することによってこのシナリオを可能にします。すなわち、パイプライン設定を {% include product %} にアップロードして、ユーザがプロジェクトにアクセスするたびに設定がダウンロードされ、ローカルにキャッシュされます。分散設定の詳細については、[Core API 開発者向けドキュメント](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)を参照してください。 - -### 複数のルート フォルダを操作する - -理想的なのは、特定のタスクに合わせて施設を最適化することです。複数のルート フォルダを使用すると、1 台のサーバで日常業務を行い、もう 1 台のサーバでインタラクティブな処理を行うようビデオの再生を最適化することができます。Toolkit では複数のストレージのルートを操作し、上記のようなワークフローを容易に実行することができます。[単一ルート設定からマルチルート設定への変換方法](../../../quick-answers/administering/convert-from-single-root-to-multi.md)を確認してください。 - -これで、プロジェクトのパイプライン設定が作成されたので、編集してみましょう。詳細については、次のガイドの「[パイプライン設定の編集](editing_app_setting.md)」にアクセスしてください。 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 deleted file mode 100644 index 69438e03c..000000000 --- a/docs/ja/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: default -title: ファイルシステムの設定 -pagename: toolkit-guides-filesystem-configuration -lang: ja ---- - -# 動的ファイルシステムの設定 - -このガイドでは、Toolkit パイプライン構成を変更してプロダクションのフォルダ構造とファイル命名をカスタマイズする方法について学びます。 - -## このガイドについて - -パイプラインを管理する上で最も難しいことの 1 つは、作成される無数のファイルをトラックすることです。Toolkit のパイプラインはファイルシステム管理を自動化します。すなわち、{% include product %} のデータおよび設定されたフォルダ構造に基づいてフォルダを作成し、標準の命名規則に従って正しい場所に自動的にファイルを書き込みます。そのためアーティストはコンテンツ作成に集中できます。パイプライン設定には、既定のフォルダのセットとファイル命名規則がありますが、プロダクションではそれらをカスタマイズすることがよくあります。このガイドは、それらのカスタマイズに必要な知識を提供します。 - -既定の設定では、アセットは `asset_type/asset/pipeline_step` のようなフォルダ構造で管理されます。このガイドでは、「Set」と呼ばれるカスタム エンティティを使用して、各アセットが使用されるプロダクション セット別にアセットを整理します。最初に {% include product %} でカスタム エンティティを設定し、それを使用して特定のセット用に作成されたアセットを管理します。その結果、フォルダ構造は `set/asset_type/asset/pipeline_step` のようになります。 - -セットによってアセットを整理することの背景にある考え方を、例を挙げて説明してみましょう。たとえば、いくつかのシーンがガレージで発生し、別のシーンがダイニング ルームで発生するプロジェクトがあるとします。このセットアップでは、「wrench」、「oilcan」、「workbench」などのアセットのファイルは「garage」フォルダに整理され、「plate」、「winebottle」、または「tablecloth」は「dining_room」フォルダに整理されます。この例では、ダイニング ルームに肉汁たっぷりの「filet」アセットが適切に配置されていることを確認します。 - -さらに、プロジェクトのファイル命名テンプレートも編集し、アセットの Maya ワーク ファイルにセットがそれぞれの名前で含まれるようにします。動的に生成されるファイル名により、ダイニング ルームのファイルを他のセットで使用されるファイルと区別できるようになります。 - -### このガイドの次の 3 つの手順 - -* {% include product %} で、「Set」とよばれる**カスタム エンティティ**を作成します。これは、アーティストが作成しているダイニング ルームの要素と関連付けるために使用します。 -* フォルダの**スキーマ**を編集します。これによって、Toolkit はフォルダ構造内の現在のセットに基づいて動的に名前が付けられたフォルダを含めることができます。 -* アセット ワーク ファイルの命名に使用される**テンプレート**を編集します。これによって、Toolkit はファイル名に関連付けられたセットの名前を含めることができます。 - -### 前提条件 - -このガイドを使用するには、以下が必要です。 - -1. アクティブな [{% include product %}](https://www.shotgridsoftware.com/signup/) サイト。少なくとも 1 つのアセットが作成されたプロジェクトが必要です。アセットにはモデル タスクが必要です。 -2. {% include product %} サイトを使用してアセットを管理する方法の基本的な理解。 -3. [システムにインストールされた {% include product %} Desktop](https://developer.shotgridsoftware.com/ja/d587be80/#installation-of-desktop)。 -4. 指定したプロジェクトのクローン作成されたパイプライン設定、または「[設定の基本操作](./advanced_config.md)」ガイドを参照して、この演習で作成された設定のクローンを作成します。 -5. YAML の基本的な知識。 -6. パイプライン設定を保存するファイルシステムに最適になるように設定された読み取りおよび書き込み権限。 -7. Toolkit がプロダクション ファイル システムに対して読み取りおよび書き込みを行えるように適切に設定された読み取りおよび書き込み権限。 -8. Maya の有効なサブスクリプション。[Maya](https://www.autodesk.co.jp/products/maya/free-trial) の 30 日間無償体験版を入手してください。 - -注: このガイドは、`tk-config-default2` パイプラインの設定に基づいています。設定が変更されている場合は、YAML 設定のファイル、フォルダ、およびブロックの場所がここに記載されている内容と異なる可能性があります。 - -### ファイル スキーマとテンプレートについて - -Toolkit パイプライン設定のスキーマとテンプレートを使用すると、{% include product %} データを利用してディスク上のプロダクション ファイルを管理できます。既定の設定のスキーマには、**Shot**、**Sequence**、**Asset**、**Asset Type** などのエンティティが含まれています。その他の **Level**、**Episode**、**Season** などのエンティティ、または今回使用する **Set** などのカスタム エンティティを追加できます。 - -Toolkit プラットフォームでは**スキーマ**を使用してフォルダ構造を動的に構築できます。これは、実際のプロダクション ファイルシステムを構築するときのテンプレートとして使用されるプロダクション フォルダ構造のミニチュア バージョンです。スキーマはフォルダの動的作成のための明示的なガイドで、YAML ファイルを使用して動的に作成されるフォルダのルールを定義します。既定の設定には、アセットとショットの両方のパイプラインのフォルダ作成をサポートする事前設定されたスキーマが含まれています。作成している新しい **Set** エンティティのサポートを追加するために、アセット フォルダ構造の作成をサポートするスキーマの部分 `/assets///` を変更します。 - -**テンプレート**を使用すると、{% include product %} のデータとスキーマ構造の情報を使用して作成したファイルに動的に名前を付けて保存することができます。既定の設定には、パイプラインのニーズに合わせて編集できる一連のスタータ テンプレートが用意されています。 - -ShotGrid 統合の基本設定にファイルシステム管理は含まれません。プロジェクトのファイルシステム管理を設定するには、プロジェクトに高度な設定が必要です。最初のガイドの「[設定の基本操作](./advanced_config.md)」で、高度なセットアップ プロセスについて説明しています。 - -## 実習を開始 - -スキーマとテンプレートをカスタマイズすることで、ダイニング ルームのセットの作成時に生成されるファイルを動的に管理できます。それらのファイルとはすなわち、食器一式、蒸し上がったフィレ ミニヨン、Penfolds Grange Hermitage 1951 のワイン、ポテト グラタン、レモン ガーリック風味のアスパラガスなどです。ダイニング ルームのセットで使用されるアセットは「Dining Room」という Set エンティティに関連付けられ、より簡単に管理できるようになります。Set は 既定の設定に標準装備されたエンティティ タイプではないため、[カスタム エンティティ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)を有効にし、それに「Set」という名前を付けてから、これを使用するようにスキーマおよびテンプレートを拡張する必要があります。 - -### カスタム エンティティを有効にする - -**手順 1:** ブラウザで {% include product %} サイトを開きます。アバターをクリックして、[管理者] (ADMIN)> [サイト基本設定] (Site Preferences)の順にクリックします。結果のページで**[エンティティ](Entities)**セクションを展開します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/1_site_preferences.png) - -{% include product %} で利用可能なエンティティのタイプのリストが表示されます。下図のリストの一番上には、現在の {% include product %} サイト用に構成されているいくつかのエンティティ タイプが示されています。これらのエンティティ タイプの下には、設定も有効化もされていないいくつかの**カスタム エンティティ**があります。 - -### カスタム エンティティ タイプをどれか選択して設定し、有効にします。 - -![Python アプリ](./images/dynamic_filesystem_configuration/2_custom_entity.png) - -**手順 2:** 矢印を選択してグレー表示の無効なカスタム エンティティの設定を開きます。**[はい、カスタム エンティティを使用します...] (Yes, use Custom Entity...)**の横のラジオ ボタンをオンにし、**[表示名] (Display name)**を **Set** に変更し、ウィンドウの上部にスクロールして[変更を保存] (Save Changes)を選択します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/4_enable_entity.png) - -これによって、カスタム エンティティが {% include product %} でアクティブになり、表示名が *Set* になります。エンティティのシステム名は `CustomEntity01` のままなので、基本的にここではカスタム エンティティの別名を作成していることになります。この例では、`CustomEntity01` を使用していますが、別のカスタム エンティティを使用することもできます。 - -選択したカスタム エンティティのシステム名をメモしておいてください。 - -### アセットをセットに関連付けるデータ フィールドを追加します。 - -アセット エンティティにデータ フィールドを追加すると、アセットを新しいエンティティにリンクできます。アーティストがダイニング ルーム用に作成したアセットは、**Dining Room** セット エンティティに関連付けられます。 - -**手順 3:** ページ上部の**[プロジェクト] (Projects)**ドロップダウンを選択して、この実習に使用するプロジェクトを開きます。 - -**手順 4:** プロジェクト メニュー バーで**[アセット] (Assets)**を選択し、[アセット] (Assets)ページに移動します。[アセット] (Assets)メニューで、**[フィールド] (Fields)> [アセット フィールドの管理...] (Manage Asset Fields...)**を選択します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/5_manage_asset_fields.png) - -このアクションはアセット フィールド管理者を表示します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/6_manage_asset_fields.png) - -**[+ 新しいフィールドを追加] (+ Add a new field)**を選択します。 - -新しいフィールドのパラメータを選択します。 - -**[新しいフィールド名] (New Field Name)**に「Set」と入力します。**[一般] (GENERAL)**メニューの**[フィールド タイプ] (Field Type)**で、**[エンティティ] (Entity)**を選択し、**[タイプを制限] (Restrict the type)**までスクロールダウンして、**Set** を選択します。**[次へ](Next)**を選択します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/7_field_parameters.png) - -このガイドでは、**[現在のプロジェクトのみ] (Only the current project)**に適用し、**[フィールドを作成] (Create Field)**を選択します。 - - {% include product %} は新しいフィールドを設定します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/8_only_current_project.png) - -変更が適用されたら、**[完了](Done)**を選択します。 - -### **[ダイニング ルーム] (Dining Room)**の Set エンティティを作成する - -**手順 5:** アセットの新しい **Set** フィールドを選択して、「Dining Room」と入力します。すると、「**一致するものが見つかりません。「Dining Room」を作成**」というメッセージが表示されます。 - -![Python アプリ](./images/dynamic_filesystem_configuration/11_create_set.png) - -**[「Dining Room」を作成]**を選択します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/12_dining_room_set.png) - -**[セットを作成] (Create Set)**を選択します。 - -アセットの Set フィールドに **Dining Room** を追加したことにより、Dining Room セット エンティティとの[関連付け](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_linking_custom_entities_html)が生成されます。 - -![Python アプリ](./images/dynamic_filesystem_configuration/13_dining_room_associated.png) - -**手順 6:** **filet** アセットのモデル タスクを自分自身に割り当てて、テスト目的で簡単に見つけられるようにします。 - -### スキーマを設定する - -これで、Set カスタム エンティティが有効になり、「Dining Room」と呼ばれる Set エンティティが作成され、Asset エンティティがダイニング ルームのセットにリンクされました。{% include product %} サイトにすべての要素が配置されたので、フォルダ構造の変更を開始できます。アーティストがタスクでの作業を開始すると、Toolkit は関連付けられた {% include product %} のデータを使用してファイルシステムに作成するフォルダを決定します。パイプライン設定のスキーマに基づいて、新しいフォルダが作成され、自動的に名前が付けられます。 - -次に、アーティストがプロダクション パイプラインを実行する際に Toolkit が動的に生成するフォルダ構造を定義します。これは、スキーマを編集することで実行されます。 - -アクティブなプロダクションの設定に影響を与えないように、*クローン作成*された設定でテストすることをお勧めします。クローン作成プロセスでは設定の*コピー*が作成され、安全な環境で編集してからライブ設定に変更をプッシュすることができます。設定のクローン作成の詳細については、『[設定のステージングとロールアウト](https://developer.shotgridsoftware.com/ja/60762324/#cloning-your-configuration)』ドキュメントを参照してください。 - -**手順 7:** パイプライン設定に移動します。スキーマ フォルダ `/config/core/schema` にドリル ダウンして、`project` フォルダを開きます。 - -![Python アプリ](./images/dynamic_filesystem_configuration/15_file_structure.png) - -現在のスキーマは、次のようになります。 - -`/assets///` - -このフォルダ構造の動的作成をサポートします。 - -`the_other_side/assets/prop/filet/model` - -代わりに次のような構造にします。 - -`the_other_side/assets/Dining-Room/Prop/filet/model` - -これを実現するには、スキーマを次のように設定します。 - -`/assets////` - -Set エンティティは `CustomEntity01` として表されます。{% include product %} で CustomEntity01 に Set という*表示名*を付けましたが、この構成では常にそのシステム名 `CustomEntity01` でこれを参照します。 - -### スキーマが YAML ファイルを使用する方法 - -スキーマには静的フォルダと動的フォルダを含めることができます。スキーマに「assets」という名前の静的フォルダがある場合、それはプロダクション ファイルシステム内の「assets」という名前の単一のフォルダに対応します。一方、スキーマには「asset」という名前の動的フォルダがあり、これはプロジェクト内の各アセットに対する単一のフォルダを表します。すべての動的フォルダには、その隣に、フォルダと同じ名前の YAML ファイル(たとえば `asset/` および `asset.yml`)があり、スキーマ フォルダに基づいてプロダクション フォルダを生成するためのルールが定義されています。 - -### Set エンティティの新しいフォルダと YAML ファイルを作成します。 - -スキーマには、{% include product %} が追跡するさまざまなエンティティに関連するフォルダを含む `project` フォルダがあります。{% include product %} が Set 内のアイテムをトラックできるようにするために、新しいアセット エンティティ CustomEntity01 を追加します。これらのアイテムはアセットなので、アセットの下のフォルダと YAML ファイルを編集します。 - -繰り返しますが、目標は `asset_type/asset/step` フォルダ構造から `set/asset_type/asset/step` に移動することです。そこで、スキーマ内のセットを表すフォルダを、対応する YAML ファイルと共に追加します。カスタム エンティティにはシステム名を使用する必要があるので、`CustomEntity01/` フォルダと `CustomEntity01.yml` を作成します。 - -**手順 8:** スキーマの `project/assets` フォルダ内に `CustomEntity01` フォルダを追加します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - - -**手順 9:** 以下の内容で、`CustomEntity01` フォルダの隣に `CustomEntity01.yml` という名前のファイルを作成します。 - -```yaml -type: "shotgun_entity" - -name: "code" - -entity_type: "CustomEntity01" - -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } -``` - -YAML ファイルは、`CustomEntity01` フォルダに付ける名前を Toolkit に指示します。この場合は、タイプ `{% include product %}_entity` のフォルダを作成しています。これは、{% include product %} クエリに対応していることを意味します。`entity_type` フィールドは {% include product %} の `CustomEntity01` エンティティをクエリするように指示し、`name` フィールドはエンティティのどの*フィールド*をクエリするのかを指示します。この場合は `CustomEntity01` から `code` フィールドを取得します。 - -`filters` フィールドは、この動的フォルダを作成する必要があるケースを制限します。 - -**手順 10:** `asset_type/` と `asset_type.yml` を `CustomEntity01` フォルダに移動します。 - -フォルダ構造を `Dining-Room/Prop/filet` のようにしたいので、`asset_type` フォルダは階層内の `CustomEntity01` フォルダよりも*下に*にする必要があります。`asset_type/` と `asset_type.yml` を `CustomEntity01` フォルダに移動します。 - -![Python アプリ](./images/dynamic_filesystem_configuration/17_schema.png) - -### asset.yml ファイルを編集します。 - -`filters` フィールドは、特定の時点でどのエンティティにフォルダを作成するかを制限します。現在の状態では、`asset.yml` のフィルタ フィールドは次のようになります。 - -```yaml -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } -``` - -アセットのフォルダを作成するときは、正しいプロジェクト フォルダと正しい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": [ "$CustomEntity01" ] } -``` - - -## フォルダ作成のテスト - -これで、アセットを 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` ターミナル コマンドからもタスク用のフォルダを作成できます。 - -`tank` コマンドでテストします。 - -**手順 12:** `filet` アセットで `tank folders` を実行します。ターミナルで、以下を実行します。 - -``` -> cd -> ./tank Asset Filet folders -``` - -出力の要約: - -``` ----------------------------------------------------------------------- -Command: Folders ----------------------------------------------------------------------- - -Creating folders, stand by... - -The following items were processed: - - /Users/michelle/Documents/Shotgun/projects/the_other_side -. . . - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/ - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/publish -. . . - -In total, 23 folders were processed. -``` - -最終的な構造が期待した構造と一致し、Toolkit が非常にスマートになり、「Dining」と「Room」の間にダッシュが追加されています。 - -`/the_other_side/assets/Dining-Room/Prop/Filet/model` - - -![Python アプリ](./images/dynamic_filesystem_configuration/folders_done.png) - -### ファイルを読み書きするための Toolkit テンプレート - -フォルダ構造を設定したので、次のステップで*テンプレート*を編集します。プロダクション ファイルに適切な名前を付け、作成後に正しいフォルダに配置します。 - -### Toolkit アプリがテンプレートを使用する方法 - -まず、{% include product %} でアセットをセットに関連付ける方法を作成しました。すなわち CustomEntity01 がセットを表すようにして、Asset エンティティにアセットとセットの間のリンクを表すリンク フィールドを追加しました。アセットとセット間の関係を確立したら、その関連付けを使用するようにフォルダ スキーマを設定し、すべてのアセットの*フォルダ*をその関連付けられたセットのフォルダ内に配置します。次に、*ファイル*に動的に名前を付ける方法を作成し、Toolkitアプリ でファイルを自動的に管理できるようにします。 - -アーティストがプロジェクト内のタスクを実行し始めると、必要なフォルダ構造が生成されます。その後、Workfiles アプリの**[File Save]**アクションを開始すると、ファイルに自動的に名前が付けられます。Toolkit の Workfiles アプリを通じてアクセスされるテンプレートは、そのファイルに名前を付けるために使用されます。Nuke Write ノードや Houdini Mantra ノードなどのレンダリング アプリは、パブリッシュ ファイル用のパブリッシャー アプリと同様に、テンプレートを使用してレンダリングされたファイルに名前を付けて保存します。 - -Workfiles の**[File Open]**アクションを使用してファイルにアクセスすると、テンプレートを使用してロードする適切なファイルが検索されます。Publisher、Loader、および Nuke Studio Export の各アプリも、テンプレートを使用してファイルを検索および管理します。アーティストはファイル名や場所を気にする必要はありません。Toolkit がテンプレートおよび実行されているタスクに基づいてそれらをすべて管理します。 - -テンプレートは設定ファイル `//config/core/templates.yml` によって管理されます。最後の 2 つのガイドでは、作業環境に固有の設定を管理および作成しました。スキーマとテンプレートの設定は `config/core` フォルダに格納されており、環境に固有のものではありません。すべてのテンプレートは単一のファイルに格納されますが、それらはさまざまな環境設定ファイルのアプリ設定で、このファイルから参照されます。たとえば、`template_work` は、ワークファイルに使用する `templates.yml` のテンプレートを指定する Workfiles アプリの設定です。ワークファイルが構成されている環境およびエンジンに応じて、この設定を使用して `maya_shot_work` テンプレートまたは `templates.yml` の `houdini_asset_work` テンプレートを参照することができます。 - -**手順 13:** パイプライン設定で `config/core/templates.yml` を開きます。 - -このファイルは 3 つのセクションに分かれています。 - -* **キー:** トークンのセット(`{version}`、`{Asset}` など)。テンプレートを構築するために使用されます。テンプレートが使用されると、実際の値に置き換えられます。各キーには、必須の名前とタイプ、およびオプションのパラメータがあります。 -* **パス:** キーを使用してディスク上のフォルダおよびファイルへのパスを表す名前付き文字列。`paths` セクションのテンプレートは検証済みで、実際にディスク上に存在する必要があります。 -* **文字列:** パス セクションと似ていますが、これらは任意のテキストのテンプレートです。パス セクションの項目は検証済みで、ディスク上の実際のパスと対応している必要がありますが、Toolkit ワークフローで参照するテキスト データを格納するために文字列を使用できます。 - -### Set エンティティのテンプレート キーを追加する - -最初に行うことは、エンティティのシステム名を使用して、Set エンティティの新しいキーを定義することです。 - -**手順 14:** 適切なインデントを使用し、`templates.yml` の `keys` セクションに次の行を追加します。 - -```yaml - CustomEntity01: - type: str -``` - -### テンプレートを修正する - -Toolkit がファイルを読み書きする場所はテンプレートが定義するので、ここで定義するパスがスキーマで定義されているフォルダ構造と一致することが重要です。最終的に、プロダクション ファイルは現在作成しているファイルシステムに配置されます。そこで、スキーマに定義した新しいフォルダ構造に合わせて、アセット関連のテンプレートをすべて変更します。 - -次に、Maya のアセット ステップで作業ファイルのテンプレートを変更し、ファイル名にそのセットも含めるようにします。既定の設定では、該当のテンプレートは `maya_asset_work` で、ここから開始します。 - -Maya でアセットベースのワークファイルに `maya_asset_work` というテンプレートを使用するのは、既定の設定の規約です。これが正しいテンプレートであることを確認するには、`asset_step` 環境で、`tk-maya` エンジンの `tk-multi-workfiles2` の `template_work` 設定の値を確認します([Github](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.4/env/includes/settings/tk-multi-workfiles2.yml#L217) にあります)。 - -**手順 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` で始まります。`@` 記号は、`@asset_root` の値が他の場所で定義されていることを意味します。 - -先頭の `@` 記号は、`templates.yml` に*含める*ことを意味しません。この処理は、環境設定ファイルで実行されます。 - -統合ごと、アプリごと、環境ごとに異なる設定を使用できるので、`templates.yml` 内のさまざまな場所でパスの最初の部分が使用される可能性があります。構成は、単一の変数を使用して共通のパス ルートを格納し、テンプレート内でその変数を参照できるように設定されます。共通ルートを参照できる場合は、パス生成設定の各インスタンスを変更する必要はありません。 - -既定の設定には、`@shot_root`、`@sequence_root`、および `@asset_root` の 3 つの共通ルート変数があります。`@asset_root` を変更します。この変更はすべてのアセット関連のテンプレートに影響します。 - -### ファイルシステム スキーマのパスと一致するようにテンプレートを編集します。 - -**手順 16:** `templates.yml` の `paths` セクションの上部にある `asset_root` を検索します。既定の設定では、次のようになります。 - -`asset_root: assets/{sg_asset_type}/{Asset}/{Step}` - -スキーマの変更に一致するように `asset_root` パスに `CustomEntity01` を追加します。 - -`asset_root: assets/{CustomEntity01}/{sg_asset_type}/{Asset}/{Step}` - -### ファイル名にセットを追加する - -スキーマの変更を反映するようにファイルのフォルダ構造を変更したため、ファイルの読み込み/書き出しは適切な場所で行われます。では、Maya のアセット ワークファイル テンプレートの*ファイル名*を変更して、そのセットも含めるようにします。 - -`maya_asset_work` テンプレート定義をもう一度見つけます。現在の状態では、ファイル*名*は以下です。 - -`{name}.v{version}.{maya_extension}` - -`{name}` テンプレート キーは、Workfiles アプリの[File Save]アクションでのユーザ入力を表す特別なキーです。ユーザの入力は含まれず、現在のセットとアセットだけで構成されるようにテンプレートを変更します。 - -**手順 17:** `maya_asset_work`テンプレート定義を次のように変更します。 - -```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' -``` - -このアクションにより、ファイル名に Dining-Room エンティティの適切な名前を使用できます。結果は次のようになります。`Dining-Room_Filet.v1.mb` - -`templates.yml` が変更され、プロダクション フォルダ構造に新しいセット フォルダが反映され、Maya のアセット タスクのワークファイルにセットの名前が含まれるようになりました。変更をテストしましょう。 - -### テストの実行 - -**手順 18:** {% include product %} Desktop から Maya を起動します。 - -![Python アプリ](images/dynamic_filesystem_configuration/23_test_file_creation.png) - -Maya で、**[{% include product %}] > [ファイルを開く] (File Open)**に移動し、表示されるダイアログで、{% include product %} で Set を指定したアセットのタスクを選択します。 - -![Python アプリ](images/dynamic_filesystem_configuration/24_test_new_file.png) - -**[+ 新しいファイル] (+New File)**を選択します。 - -単純な 3D オブジェクトを作成するか、**[{% include product %}] > [ファイルを保存] (Save File)**を使用してファイルを保存することができます。 - -![Python アプリ](images/dynamic_filesystem_configuration/file_save.png) - -成功しました! - -テンプレートの新しい設定を使用して、**[File Save]**ダイアログボックスに**プレビュー:Dining-Room_scene.v001.ma**が表示されていることに注意してください。 - -**Work Area**: Workfiles がファイルを保存するパスとして **.../{% include product %}/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/work/maya** を表示します。 - -## 高度なトピック - -### 例を拡張する - -この例では 1 つのテンプレートを変更しましたが、ファイルシステムの設定については他にもさまざまな操作を実行できます。現実の例では、*すべての*アセット関連のファイルを同じファイル命名規則に従うように変更します。他のエンティティ(Season、Episode、Level など)に基づいて変更を加えたり、ユーザ フォルダを作成したり、正規表現で操作した {% include product %} のデータに基づいてフォルダに名前を付けたりすることができます。Toolkit のすべてのフォルダおよびスキーマ オプションについては、『[ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/ )』を参照してください。 - -### パス キャッシュ - -フォルダ作成時に、ディスク上のフォルダと {% include product %} エンティティの間にマッピングが作成されます。これらのマッピングは {% include product %} の FilesystemLocation エンティティとして保存され、ユーザのマシンの SQLite データベースにキャッシュされます。パス キャッシュの機能とその使用方法の詳細については、[このドキュメント](../../../quick-answers/administering/what-is-path-cache.md)を参照してください。 - - -### その他のリソース - -* [『ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/)』 -* [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 deleted file mode 100644 index 0268a5883..000000000 --- a/docs/ja/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -layout: default -title: 設定を編集する -pagename: toolkit-guides-editing-config -lang: ja ---- - -# パイプライン設定を編集する -このガイドを読み終えると、以下に関する基本的な知識を習得できます。 - -* 特定の Toolkit アプリの構成設定を見つける -* 設定を編集する -* 構成設定によって拡張できるその他の機能を調べる - -## このガイドについて - -このガイドでは、プロジェクト パイプラインの要求に応じて、既存のパイプライン設定内の設定を編集する方法について説明します。最初のガイドの「**[設定の基本操作](./advanced_config.md)**」では、パイプライン設定を編集するための準備方法について説明しました。プロジェクトに対して編集可能な設定を作成する方法を理解していない場合は、「**設定の基本操作**」を参照してから、先へ進んでください。 - -{% include product %} Toolkit では、既定の設定を拡張することにより、パイプラインのワークフロー内のタスクをカスタマイズできます。カスタマイズの例としては、ユーザが Toolkit の機能を操作する方法を変更するために、いくつかのソフトウェア パッケージに含まれている Toolkit アプリのボタンを有効または無効に切り替えるだけという簡単なものがあります。Toolkit には独自の設定を行う機能があるため、カスタム ワークフローの作成、反復タスクや日常的なタスクの自動化、フックの変更、および Toolkit プラットフォーム上に構築されたカスタム ツールの追加といった作業を、スマートに、かつ短時間で行うことができます。ただし、Toolkit にアクセスするには {% include product %} ソフトウェアの統合が必要であり、衣服を洗うなどの日常的なタスク向けのリリースはまだ実現していません。 - -このガイドの演習では、{% include product %} ソフトウェア統合内のアクションをコントロールする構成設定の見つけ方、設定の配置場所、および設定の編集方法について説明します。具体的には、**[+New Task]**ボタンの動作を管理する Workfiles アプリの設定を編集することにより、アーティストが Maya 内のプロジェクトで作業しているときに新しいタスクを作成できないようにします。 - -## このドキュメントの使い方 - -このガイドを使用してパイプライン設定を編集するには、以下が必要です。 - -1. アクティブな [{% include product %}](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) サイト。 -2. 1 つ以上のアセットを含むプロジェクト。最初のガイドで作成した the_other_side プロジェクトにアセットを追加できます。プロジェクトのアセットを作成する方法については、「[設定の基本操作](./advanced_config.md)」ガイドを確認してください。 -3. 指定したプロジェクトのパイプライン設定、または「[設定の基本操作](./advanced_config.md)」ガイドを参照して、この演習で作成された設定を使用します。 -4. パイプライン設定を保存するファイルシステムに最適になるように設定された読み取りおよび書き込み権限。 -5. システムにインストールされた {% include product %} Desktop。 -6. Maya の有効なサブスクリプション。Maya の 30 日間無償体験版は[こちら](https://www.autodesk.co.jp/products/maya/free-trial)から取得してください。 - -{% include info title="注" content="このガイドは `tk-config-default2` パイプライン設定をベースにしています。設定が変更されている場合は、YAML 設定のファイル、フォルダ、およびブロックの場所がここに記載されている内容と異なる可能性があります。"%} - -## Workfiles アプリについて - -Workfiles アプリは、{% include product %} ソフトウェア統合のファイル管理を行い、作業ファイルの参照、オープン、および保存機能へのアクセスをコントロールします。**[+New Task]**ボタンをクリックすると Workfiles アプリのアクションが実行され、{% include product %} に移動しなくてもタスクを追加することができます。設定は環境単位のファイルに分割されています。これにより、ユーザはパイプライン内のステージごとに機能を管理して、ユーザがファイルを作成、命名、保存する、タスクを実行する、または特定の機能を実行するタイミングをコントロールすることができます。これは Workfiles アプリのすべての機能に関係し、任意のアプリまたはエンジンの設定を変更する場合にも適用されます。詳細については、このドキュメントの末尾にある「[高度なトピック](#advanced-topics)」を参照してください。 - -## 設定ファイルの概要 - -作業しているプロジェクトのパイプライン設定が保存されている場所を見つけるには、{% include product %} のパイプライン設定リストを使用します。保存場所がわかっている場合は、[手順 5](#finding-the-pipeline-configuration) に進んでください。 - -## パイプライン設定を見つける - -**手順 1:** この演習で使用するプロジェクトを管理している **{% include product %} サイト**を開きます。 - -**手順 2:** **[プロジェクト] (Projects)ページ**から **{% include product %} サイト**を選択してプロジェクトにアクセスします。 - -![{% include product %} プロジェクト](./images/editing_app_setting/1_shotgun_project.png) - -**手順 3:** 右上にある**アバター**を選択して、**[管理者] (ADMIN)**メニューを表示し、下にスクロールして**[既定のレイアウト] (Default Layouts)> [パイプラインの設定] (Pipeline Configuration)> [パイプライン設定リスト] (Pipeline Configuration List)**を選択します。 - -![パイプラインの設定](./images/editing_app_setting/2_pipeline_configuration.png) - -**手順 4:** **[パイプライン設定リスト] (Pipeline Configuration List)**が表示されたら、列見出しの右端にある**[+]**記号を選択して、列をもう 1 つ追加します。ドロップダウン リストで、オペレーティング システムに該当するパスを選択します。 - -![OS のパス](./images/editing_app_setting/3_mac_path.png) - -新しいフィールドにパスが表示されます。 - -![OS パス 2](./images/editing_app_setting/4_mac_path2.png) - -**手順 5:** 端末またはファイル マネージャで、プロジェクトのパイプライン設定が保存されているフォルダを参照して、開きます。 - -Toolkit 設定のルート フォルダには、**cache**、**config**、および **install** の 3 つのサブフォルダがあります。**config** フォルダおよびその中のネストされたフォルダを開くと、サブフォルダとファイルがいくつか表示されます。 - -![Config の内容](./images/editing_app_setting/5_config_content.png) - -**env** フォルダには、アーティストの作業環境をサポートする統合の設定が保存されています。これらの環境を利用することにより、パイプラインのステージごとに設定をカスタマイズすることができます。既定の設定には事前に定義された環境セットが用意されていますが、使用しているパイプラインで詳細な環境セットが必要な場合は、これらを変更できます。 - -**手順 6:** **env** フォルダを開きます。 - -Toolkit は YAML ファイルを使用して機能を設定します。YAML が設定の言語として選択された理由は、Toolkit 内のファイルを、読み取りやすく、軽量で、カスタマイズが容易になる方法でフォーマットすることが可能だからです。YAML の詳細については、[こちら](https://yaml.org/) を参照してください。設定は、識別子、エンジン、アプリ、およびフレームワークを提供する、ネストされた YAML ファイルで構成されています。これは、影響を与えるアクションを制御するための特定のコード バンドルに導くための、ある種のロードマップです。 - -## 設定ファイルを編集する - - {% include product %} Toolkit を使用すると、さまざまなソフトウェア パッケージ内に統合されたアプリを変更できます。Workfiles アプリの機能の例としては、**[+New Task]** ボタンがあります。ユーザはこのボタンをクリックして、**[File Open]**ダイアログ ボックスに新しいタスクを追加できます。既定では、この機能はプロジェクトのすべてのフェーズで、すべてのユーザに対して有効になっています。ただし、スタジオでこの機能を制限したい場合があります。たとえば、特定の命名規則がある場合や、タスクの作成をプロジェクトのプロダクション管理チームに限定する場合などです。この場合は、アーティストが Maya で作業するパイプライン内のすべてのポイントで、**[+New Task]**ボタンを無効にします。 - -## Maya のプロジェクトに対して[+New Task]ボタンを無効にする - -**手順 7:** **{% include product %} Desktop** を開きます。 - -**手順 8:** 設定を編集するプロジェクトを選択します。 - -![プロジェクトをロード](./images/editing_app_setting/6_load_project.png) - -**手順 9:** {% include product %} Desktop から Maya を起動します。 - -![プロジェクトをロード](./images/editing_app_setting/7_view_project.png) - -**{% include product %}** メニューが完全にロードされるまで待ちます。インターネット接続速度が遅い場合は、この間に設定を行いましょう。つまり、適度な量のクリームを入れて一杯の完璧なエスプレッソを作るようなものです。 - -Maya と {% include product %} が完全にロードされると、**[File Open]**ダイアログ ボックスが自動的に開きます。{% include product %} Desktop から Maya を起動すると、Maya は **project** 環境になり、Toolkit ワークフローの設定はファイル `config/env/project.yml` によって制御されます。既定の設定で識別される環境は、`project`、`sequence`、`shot`、`shot_step`、`asset`、`asset_step` です。 - -**手順 10:** **[File Open]**ダイアログ ボックスの左側のペインで**[Assets]**タブを選択します。検索結果に表示されたフォルダ内のいずれかのアセットを選択します。 - -![タスクを表示するボタン](./images/editing_app_setting/8_21_view_task_button.png) - -**[+New Task]**ボタンが有効になります。 - -## [+New Task]ボタンをコントロールする設定を特定する - -Toolkit のパイプライン設定は、パイプラインに対するユーザのニーズに合わせて環境をカスタマイズする場合に使用します。パイプライン設定では、プロジェクトのパイプラインに対するニーズに合わせて、既定の {% include product %} の統合の設定を必要なだけオーバーライドできます。この構造により、設定は軽量化され、{% include product %} の主要コード内の既定値と異なる設定のみを追加することができます。この演習では、Workfiles アプリの**[+New Task]**ボタンをオフにしますが、その前にこのボタンをコントロールする構成設定を特定する必要があります。 - -**手順 11:** **[Project (プロジェクト名)]**の横にある**[File Open]**ウィンドウの上部にある **[>]** を選択します。 - -この参照ボックスには、**[File Open]**ウィンドウの機能をコントロールする構成設定の詳細が表示されます。Toolkit の一部のアプリには、アプリに使用される設定と、既定の設定を表示する参照ボックスがあります。**[Location:]**に注目してください。識別子は **tk-multi-workfiles2** です。これは、Workfiles アプリを作成するコードのバンドルの識別子です。パイプライン設定を検索する場合、この名前でアプリの設定の配置場所を識別します。{% include product %} の統合で使用可能な機能に関するすべての構成設定、アプリ、エンジンについては、「[アプリとエンジンの概要](https://developer.shotgridsoftware.com/ja/162eaa4b/)」ページを参照してください。 - -![Current_work_area](./images/editing_app_setting/9_current_work_area.png) - -**[Configuration:]**見出しの下で、この特定の環境の設定を探します。 - -![Configuration_ref](./images/editing_app_setting/10_configuration_ref.png) - -{% include info title="注" content=" **my_tasks_filters** の設定の後に、**launch_at_startup** の設定があります。この設定に注意することは重要です。この設定がプロジェクト環境内の**[File Open]**設定の既定の設定になります。この設定は、ShotGrid Desktop から Maya を起動したときに、**[File Open]**ダイアログが自動的に開くことを示します。" %} - -**[Setting allow_task_creation]**まで下にスクロールします。この設定の既定値は**[True]**です。この値の場合、ユーザは Maya プロジェクト環境内から新しいタスクを作成できます。 - -![ファイルを開くオプション](./images/editing_app_setting/11_open_file_options.png) - -設定を検索する際に、考慮すべき点がいくつかあります。 - -* 実行しているソフトウェア アプリケーション。 -* 作業を行っているファイル、および作業している環境。これはアプリの参照ボックスに表示されています。 -* 特定の設定の名前。これはアプリの参照ボックス、または「[アプリとエンジンの概要](https://developer.shotgridsoftware.com/ja/162eaa4b/)」ページに表示されています。 -* 拡張する YAML ファイル。設定の配置場所を示す識別子およびロードマップの詳細は、YAML ファイルに記述されています。 -* YAML ファイル内の拡張する特定のブロック。これはロードマップで識別されています。 -* YAML ファイル内で使用されている識別子および記号、 -* および現在のプロジェクトの設定の保存場所(これが最も重要)。 - -設定は、パイプライン設定内の複数の場所で利用できます。配置場所を判別するには、設定を反映させるソフトウェア統合、および変更を反映させるパイプライン プロセス内の場所を考慮します。 - -## `allow_task_creation` の値の設定場所を特定する - -**手順 12:** メインの Maya ウィンドウを前面に表示します。 - -**手順 13:** Maya ウィンドウの右上にある**[{% include product %}]**メニュー項目を特定します。 - -![Maya {% include product %}2](./images/editing_app_setting/12_Maya_Shotgun2.png) - -**ヒント:** メニューが表示されない場合は、一部のメニュー項目が非表示になっていることを示す**[>>]**が表示されています。**[>>]**を選択して {% include product %} メニューを表示するか、Maya ウィンドウの幅を広げます。 - -**手順 14:** メニューの右上にある**[{% include product %}] > [Project the_other_side] > [Work Area Info...]**を選択します。 - -![Work area info](./images/editing_app_setting/13_work_area_info.png) - -**[Work Area Info]**ダイアログ ボックスには、現在の作業領域の内容と詳細が表示されます。この情報には、ユーザが作業している環境、および設定が配置されてい環境設定ファイルのパスが含まれています。 - -**手順 15:** **[Your Current Work Area]**ダイアログ ボックスの下部にある**[Environment]**タブを選択します。 - -最初の項目は、使用されているエンジンを識別します。このエンジンは、特定のソフトウェア アプリケーションに {% include product %} ツールを統合する機能を制御します。このエンジンには、各ソフトウェア統合に固有のロジックが保持されています。ウィンドウに表示される 2 番目の項目は、現在のプロジェクト環境の配置場所のパスを示します。 - -![Work area info environment](./images/editing_app_setting/14_shotgun_work_area_info_Environment.png) - -最後の 2 つのフォルダは `config/env/` と、その後の `project.yml` です。`project.yml` ファイルは、現在の環境の設定の保存場所を案内するロードマップの起点となります。 - -**手順 16:** お気に入りのテキスト エディタで `project.yml` を開きます。 - -```yaml -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 - -################################################################################ -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - tk-photoshopcc: "@settings.tk-photoshopcc.project" - tk-shell: "@settings.tk-shell.project" - tk-shotgun: "@settings.tk-shotgun.project" - -################################################################################ -# reference all of the common frameworks - -frameworks: "@frameworks" - -``` - - - -`project.yml` 内の説明の下に、`includes`、`engines`、および `frameworks` という 3 つのセクションがあります。`includes` セクションには、設定内の他の YAML ファイルを*参照*するファイル ポインタのリストが示されています。既定の設定のアーキテクチャでは、ファイルを常に軽量化するために、ファイルをネストし、ポインタを使用するという方法も採用しています。**includes** に沿ってファイルを順に移動していくと、探している構成設定にたどり着きます。これはロシアのマトリョーシカ人形と似ています。人形を開くと、その中に次の人形が入っています。このようにして、最終的に適切な構成設定が見つかります。 - -すべてのエンジンが `tk-` として識別されています。Maya の設定に反映させたいため、求めている識別子は `tk-maya` になります。 - -`project.yml` ファイルの `includes:` セクションの下で、`./includes/settings/tk-maya.yml` の行を探します。この行は、Maya エンジンの**設定**をコントロールする設定 `tk-maya` が、**includes** フォルダ内の **settings** フォルダ内でネストされていることを示します。 - -`engines:` セクションで `tk-maya` 値を探します。 - -`tk-maya: "@settings.tk-maya.project"` - -`@` は、値が、インクルードされたファイルから取得されていることを示します。 - -`settings` および `project` の参照は、プロジェクトの設定であることを示します。これらは既定の設定内の命名規則であり、ユーザを案内するガイドとして役立ちます。 - -この行全体は、インクルードされたファイル内の `settings.tk-maya.project` ブロックを探して、Maya エンジン `tk-maya` の構成設定を探すようユーザに指示しています。 - - {% include product %} Toolkit は YAML ファイル内で単純な用語を使用して、設定の名前や、設定に到達するためのパスを示します。Maya の**[File Open]**参照ボックスを調べて気づいたように、**[+New Task]**ボタンの実行方法をコントロールするコード バンドルは `tk-multi-workfiles2` で識別されます。Toolkit のバンドルは、YAML ファイル内でこれらの識別子を使用して参照されています。「tk-multi-workfiles2」は、Workfiles アプリのコード バンドルの識別子です。**[+New Task]**ボタンは、Workfiles アプリの機能です。 - -tk-maya.yml での Workfiles アプリの検索 - -**手順 17:** ファイル ブラウザ内で、**env/includes/settings** フォルダを参照して、`tk-maya.yml` を開きます。 - -![tk-maya 作業ファイル](./images/editing_app_setting/16_tk_maya_workfiles.png) - -**手順 18:** `project.yml` からのインクルードの内容に沿って、`tk-maya.yml` ファイル内で `settings.tk-maya.project` を検索します。特に行いたいのは、特定のプロジェクトのプロジェクト環境内で**[+New Task]**ボタンを無効にすることです。プロジェクト環境内で作業しながら、このプロジェクトの設定を操作し、場所の情報を取得しました。 - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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...} - location: "@engines.tk-maya.location" -``` - - - -`settings.tk-maya.projects` の下に、`tk-multi-workfiles2` アプリの設定が次のように表示されています。 - -`tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup"` - -`@` 記号は、`tk-multi-workfiles2` の値がインクルードされたファイルから取得されていることを示します。`tk-maya.yml` の上部にある `includes` セクションに、以下のように表示されています。 - -```yaml -includes: -... -- ./tk-multi-workfiles2.yml -``` - -現在のファイル `config/env/includes/settings` と同じディレクトリ内にある `tk-multi-workfiles2.yml` ファイル内で `settings.tk-multi-workfiles2.launch_at_startup` を検索します。 - -**手順 19:** `tk-multi-workfiles2.yml` ファイルを開いて、`settings.tk-multi-workfiles2.launch_at_startup` を検索します。 - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - launch_at_startup: true - entities: -``` - - - -Maya 参照ボックスが示すように、`allow_task_creation` 設定には `true` の既定値があります。ベスト プラクティスとして、パイプライン設定には既定の設定が反映されていません。これにより、**簡易**形式が可能になり、既定のコードと異なる設定のみが設定に追加されます。設定が明示的に指定されていない場合は、この設定にアクセスするすべての呼び出しが既定値を受け取ります。Toolkit が設定を読み取って環境を構築するときに、この環境内で実行されているアプリ、エンジン、およびフレームワークはこのプロジェクトのパイプライン構成設定を使用し、設定の内容に基づいてすべての既定の設定をオーバーライドします。 - -**手順 20:** `tk-multi-workfiles2.yml` の `settings.tk-multi-workfiles2.launch_at_startup:` の下に `allow_task_creation` を追加して、その値を `false` に設定します。 - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - allow_task_creation: false - launch_at_startup: true - entities: -``` - - - -**注:** Toolkit の既定の構成設定は、特定の設定を見つけやすいようにアルファベット順に編成されています。この規則に従うことにより、設定の内容が増えた場合でも作業を簡単に行うことができます。 - -**手順 21:** ファイルを保存します。 - -## 設定を再ロードする - -**手順 22:** Maya の**[File Open]**ダイアログ ボックスで参照ボックスを開き、**[Reload Engines and Apps]**を選択します。 - -![エンジンの再ロード](./images/editing_app_setting/20_refresh_engines_apps.png) - -これにより、構成設定が再ロードされます。 - -## 変更を表示する - -**手順 23:** **[File Open]**ダイアログ ボックスに移動して、アセットを選択します。 - -![タスクを表示するボタン](./images/editing_app_setting/8_21_view_task_button.png) - -**[+New Task]**ボタンが表示されないことに注目してください。 - -これで、Workfiles アプリの構成設定を変更して、プロジェクト環境内のボタンの動作を変更できました。この設定はプロジェクト環境内で変更しただけなので、別の環境で作業を開始した場合は、**[+New Task]**ボタンの設定は引き続き有効になります。実際のプロダクションでも同様の変更を行うには、ここで行った変更を *すべて* の環境に反映する必要があります。 - -## 環境を変更する - -**手順 24:** アセットの検索結果の下にあるフォルダを開いて、作業するアセットを選択します。 - -![env アセットに移動](./images/editing_app_setting/22_moving_to_asset_environment.png) - -**手順 25:** **[+New File]**を選択します。 - -**[+New File]**を選択することにより、新しいアセットの作業が始まり、`asset_step`環境が Maya にロードされます。アーティストがアセット タスクを選択して、新しいファイルを作成するか、既存のファイルを開くと、`asset_step` 環境が自動的にロードされて、パイプラインのこのステージ用に設定されたツールおよび機能が表示されます。 - -## 作業している環境を見つける - -**手順 26:** Maya メニューの右上で**[{% include product %}]**を選択します。 - -![Art、Asset 環境](./images/editing_app_setting/23_Art_Asset.png) - -**Art, Asset Text Overlay** には、作業中であること、および現在の環境が示されます。 - -**手順 27:** **[Art, Asset Text Overlay] > [Work Area Info...]**を選択して、現在の作業領域に含まれているパラメータを表示します。 - -**手順 28:** 下部にある**[Environment]**タブを選択します。 - -![asset_step の環境](./images/editing_app_setting/24_asset_step_env.png) - -設定がパイプライン設定内のどこに配置されているのかを判別するために必要な情報が、環境ごとに表示されます。アーティストが新しいタスクを追加できないようにするには、アーティストが作業する環境ごとに**[+New Task]**ボタンを無効にする必要があります。各環境に上記と同じ手順を使用して、設定を適切に編集します。 - -注: 各環境は独立していて、プロジェクトには専用の設定があります。また、プロジェクトがロードされるときにソフトウェアの統合によってパイプライン設定から読み取られるのは、特定のソフトウェアの設定のみです。 - -これでパイプライン設定の編集と、アプリの設定の変更が完了しました。ここから先は、楽しみながら作業できます。{% include product %} Toolkit 環境で実行できるすべての機能について学習しましょう。次に、これから調べる高度なトピックをいくつか示します。 - -## 高度なトピック - -このガイドでは、単一のエンジン(`tk-maya`)および単一の環境(`project`)内のアプリの構成設定に単純な変更を加えました。また、Toolkit が環境別に整理されていることも学習しました。各環境はソフトウェアの実装ごとに一意であり、プロジェクトとタスクによって環境が絞り込まれるため、パイプライン内の定義されたポイントでアーティストが特定の機能を使用できるように設定することが可能です。このガイドで行った単純な変更を一般化して、Toolkit のパイプライン設定を詳細にカスタマイズすることができます。 - -### 他のエンジン - -Workfiles アプリのシステム名は `tk-multi-workfiles2` です。名前内の `multi` は、このアプリが**マルチ アプリ**であることを意味します。マルチ アプリはソフトウェアに依存しています。マルチ アプリの機能および関数は、Maya、Nuke、Houdini、または他の任意のサポート対象アプリのいずれで実行されているかにかかわらず、同じです。すべてのソフトウェア パッケージで Workfiles 内のタスク作成を無効にする場合は、すべての**エンジン**(`tk-nuke`、`tk-houdini` など)にこのガイドの手順を実行します。 - -### 他の環境 - -プロジェクト環境でのタスク作成は無効になりましたが、実際のスタジオ環境では、アーティストが作業しているすべての環境でタスク作成を無効にしたい場合があります。そのためには、このガイドの手順に従いますが、`project.yml` から開始しないで、`asset_step.yml`、`shot_step.yml` などから開始します。 - -### カスタム環境を作成する - -既定の設定には、`project`、`sequence`、`shot`、`shot_step`、`asset`、および `asset_step` という、パイプラインに関する一連の定義済みの手順が付属しています。ただし、スタジオによっては、パイプラインのステージごとに異なる構成設定が必要な場合があります(`asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` など)。Toolkit はカスタム環境をサポートしています。詳しくは、[『環境設定リファレンス』の「カスタム環境」セクション](https://developer.shotgridsoftware.com/ja/c73fcb84/#custom-environments)を参照してください。 - -### ビデオのリソース - -* [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/images/advanced_config/10_define_storage2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png deleted file mode 100644 index 16ef3dcbd..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png deleted file mode 100644 index 600e6c4fc..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png deleted file mode 100644 index 4a164c7b7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png deleted file mode 100644 index 01f31b998..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png deleted file mode 100644 index 8c8a5da0f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png deleted file mode 100644 index 960b1da6b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png deleted file mode 100644 index 615afd5ee..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png deleted file mode 100644 index 351ac9de6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png deleted file mode 100644 index 86171f31b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png deleted file mode 100644 index dda8b753b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png deleted file mode 100644 index 1a3357e62..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png deleted file mode 100644 index ae1d845d3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png deleted file mode 100644 index 7f8377111..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png deleted file mode 100644 index 24bc74242..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png deleted file mode 100644 index 319c3d8ce..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png deleted file mode 100644 index 177b8ab31..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png deleted file mode 100644 index 5d0d28295..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png b/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png deleted file mode 100644 index 958fe3fd0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png deleted file mode 100644 index 068ba960f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png deleted file mode 100644 index 03030f3aa..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png deleted file mode 100644 index 997a705a9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png deleted file mode 100644 index a5390f0fb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png deleted file mode 100644 index daec7f15f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png deleted file mode 100644 index 9ca0fe1ca..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png deleted file mode 100644 index b613553e3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png deleted file mode 100644 index 06c47e2f2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png deleted file mode 100644 index ee6998560..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png deleted file mode 100644 index 9292d9b41..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png deleted file mode 100644 index 973bbae0b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png deleted file mode 100644 index 9cc1197a2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png deleted file mode 100644 index 4f2a18f05..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png deleted file mode 100644 index 53c803581..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png deleted file mode 100644 index 50c60f42d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png deleted file mode 100644 index 693258831..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png deleted file mode 100644 index 8567b84a6..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png deleted file mode 100644 index 9cf313346..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png deleted file mode 100644 index 4e3989b67..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png deleted file mode 100644 index 3153bd093..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png deleted file mode 100644 index be4acc3a8..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png deleted file mode 100644 index 2a7cbf38a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png deleted file mode 100644 index f6b69d746..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png deleted file mode 100644 index be2dc4158..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png deleted file mode 100644 index 228dd4de0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png deleted file mode 100644 index a45b30918..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png deleted file mode 100644 index f9e198a3e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png deleted file mode 100644 index 33d191d29..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png b/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png deleted file mode 100644 index 6e6807098..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png deleted file mode 100644 index ce2ec144b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png deleted file mode 100644 index 24e78b3f5..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png deleted file mode 100644 index 02054435f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png deleted file mode 100644 index 21aae45ed..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png deleted file mode 100644 index 399139879..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png deleted file mode 100644 index 0b4983e6c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png deleted file mode 100644 index e2f174b72..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png deleted file mode 100644 index 83c687bbb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png deleted file mode 100644 index a3a2103ff..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png deleted file mode 100644 index 4fb1b81ba..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png deleted file mode 100644 index e7be60b5c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png deleted file mode 100644 index 90720adf4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png deleted file mode 100644 index 4b46b3b9e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png deleted file mode 100644 index ce24fe454..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png deleted file mode 100644 index a1d855ceb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png deleted file mode 100644 index 7d51dcf58..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png deleted file mode 100644 index 8724a5c12..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png deleted file mode 100644 index 9f164490c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png deleted file mode 100644 index 6ad051dd7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png deleted file mode 100644 index be9d5d78b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png deleted file mode 100644 index bb3c90585..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png deleted file mode 100644 index 3041b4a7c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png b/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png deleted file mode 100644 index 5ac59e300..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png deleted file mode 100644 index 24c970f50..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png deleted file mode 100644 index cfd2c37a4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png deleted file mode 100644 index 8477325a1..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png deleted file mode 100644 index 7dc42eb70..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png deleted file mode 100644 index 264f87478..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png deleted file mode 100644 index bfc1ba39e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png deleted file mode 100644 index 68e6011fd..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png deleted file mode 100644 index 2e89edaaf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png deleted file mode 100644 index daa0ba2e7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png deleted file mode 100644 index 0375bff17..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png deleted file mode 100644 index 286d96fb0..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png deleted file mode 100644 index efe953bfc..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png deleted file mode 100644 index f869b72e1..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png deleted file mode 100644 index eae41ff30..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png deleted file mode 100644 index 27e92e049..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png deleted file mode 100644 index 7996d5286..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png deleted file mode 100644 index b2e1c1dc4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png deleted file mode 100644 index d17547dfa..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png deleted file mode 100644 index af053a916..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png deleted file mode 100644 index 24c970f50..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png deleted file mode 100644 index 7996d5286..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png b/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png deleted file mode 100644 index d17547dfa..000000000 Binary files a/docs/ja/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md b/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md deleted file mode 100644 index 8c8db522e..000000000 --- a/docs/ja/guides/pipeline-integrations/getting-started/installing_app.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -layout: default -title: アプリを追加する -pagename: toolkit-guides-adding-app -lang: ja ---- - -# アプリを追加する - -このガイドを読み終えると、Toolkit の設定管理ツールに関する知識を短時間で得ることができます。次の内容について学習します。 - -* アクティブなパイプライン設定のコピーを安全に作成する -* 設定にアプリを追加する -* 特定の環境でこのアプリを使用するために必要な設定を追加する -* 変更をアクティブな設定にプッシュする - -## このガイドについて - -このガイドでは、既存のパイプライン設定に {% include product %} Toolkit アプリを追加する方法について説明します。設定管理ツールに関する知識を短時間で得ることができます。 - -ここで追加するアプリは、{% include product %} Python コンソール アプリです。Maya には独自の Python コンソールがありますが、Toolkit アプリには Maya コンソールにない機能がいくつか用意されています。 - -このガイドでは、「[パイプライン設定を編集する](./editing_app_setting.md)」ガイドで作成したパイプライン設定を利用します。このガイドをまだ完了していない場合は、既存のパイプライン設定を使用してアプリを追加してください。 - -## このドキュメントの使い方 - -このガイドを使用して Toolkit アプリをインストールするには、以下が必要です。 - -1. アクティブな [{% include product %}](https://www.shotgridsoftware.com/signup/) サイト。 -2. 指定したプロジェクトのパイプライン設定、または「[設定の基本操作](./advanced_config.md)」ガイドを参照して、この演習で作成された設定を使用します。 -3. パイプライン設定の保存先のファイルシステムに最適になるように設定された読み取りおよび書き込み権限。 -4. システムにインストールされた {% include product %} Desktop。 -5. Maya の有効なサブスクリプション。Maya の 30 日間無償体験版は[こちら](https://www.autodesk.co.jp/products/maya/free-trial)から取得してください。 - -{% include info title="注" content="このガイドは tk-config-default2 パイプライン設定をベースにしています。設定が変更されている場合は、YAML 設定のファイル、フォルダ、およびブロックの場所がここに記載されている内容と異なる可能性があります。"%} - -## {% include product %} Toolkit アプリについて - -### Toolkit アプリの仕組み - -パイプライン設定で参照されているアプリは、さまざまな場所から取得できます。既定の設定の標準アプリは、{% include product %} アプリ ストアから取得されています。パイプライン設定内のファイルを使って、{% include product %} 統合からアプリにアクセスする方法を指定します。これはたとえば Toolkit に、「アドレス帳にある Python コンソール アプリのアドレスを調べることはできますか」と尋ねるようなものです。パイプライン設定ファイルは Toolkit に、特定のアプリで利用されているコードのバンドルの検索場所を指示します。 - -Toolkit アプリの「アドレス」は既定の設定の `config/env/includes/app_locations.yml` ファイルにリストされていて、コードの検索方法を指定します。これらの「アドレス」は[記述子](https://developer.shotgridsoftware.com/tk-core/descriptor.html)といいます。{% include product %} の統合には、アプリのコード バンドルの検索方法だけでなく、アプリの使用環境も指示する必要があります。 - -以下に、アプリのインストール方法と、{% include product %} の統合にアプリの使用場所を指示する方法について、概念を示します。また、設定を拡張し、記述子を検索するよう Toolkit に要求して、アプリの使用場所を {% include product %} に指示する手順についても説明します。このガイドでは、次の手順について詳細に説明します。 - -1. 追加するアプリの記述子を判別します。 -2. アプリの記述子の追加先となるアクティブなパイプライン設定をコピーします。 -3. アプリの記述子が設定に含まれているかどうかを確認して、含まれていない場合は追加します。 -4. YAML ファイルを正しくフォーマットします(インデントにはタブでなく、スペースを使用します)。 -5. アプリの使用環境を判別します。 -6. これらの環境内で、{% include product %} にアプリの使用を許可する設定を追加します。 -7. 新しい設定をテストします。 -8. 拡張した設定を有効にします。 - -### Python コンソール アプリの場所の記述子を見つける - -**手順 1:** 「[アプリとエンジンの概要](https://developer.shotgridsoftware.com/ja/9e62da4a/)」ページを開いて、Maya の {% include product %} Python コンソールの情報を検索します。タイトルを選択します。 - -![Python アプリ](./images/installing_app/1_python_app.png) - -こうすると、アドレス帳に必要なすべての情報を含む、[アプリの情報](https://developer.shotgridsoftware.com/ja/770a748a/)が表示されます。 - -![Python アプリの情報](./images/installing_app/2_python_app_info.png) - -**システム名**は主要な識別子です(`tk-multi-pythonconsole`)。**最新バージョン**も必要です( v1.1.2)。 - -### Maya のプロジェクト環境内に Python コンソール アプリが含まれていないことを確認する - -**手順 2:** Maya を起動し、{% include product %} メニューから、**[{% include product %}] > [プロジェクト the_other_side] (Project the_other_side)**を選択して、プロジェクト環境内にある、このプロジェクトで使用可能なアプリのリストを表示します。 - -![アプリのリスト](./images/installing_app/3_list_of_apps.png) - -## 設定を拡張する - -プロダクションで使用している設定を編集するには、まずコピーを作成してから、そのコピーを編集します。この方法で編集すると、有効な設定に影響を与えることなく、テストのための安全なスペースを確保してから、設定を有効にすることができます。ステージング サンドボックスを作成すると、現在プロダクションで使用しているパイプライン設定のコピーを使用して再生できます。サンドボックス内で設定のコピーを変更し、変更内容をテストしてから、変更をプロダクションにプッシュして有効にします。 - -パイプライン設定のクローンを作成すると、コピーを作成し、コピーを使用して再生できるサンドボックスを構築してから、新しい設定を有効なプロダクションにプッシュするプロセスが自動化されます。 - -## アプリを追加するパイプライン設定のクローンを作成する - -### [パイプラインの設定] (Pipeline Configuration)リストに移動します。 - -**手順 3**: {% include product %} を開き、右上にある**[管理者] (Admin)メニュー(アバター) > [既定のレイアウト] (Default Layouts) > [パイプラインの設定] (Pipeline Configuration) > [パイプライン設定リスト] (Pipeline Configuration List)**を選択します。 - -![パイプライン設定リスト](./images/installing_app/4_REPLACE_pipeline_configuration_list.png) - -この操作を行うと、{% include product %} サイトのすべてのパイプライン設定の詳細なリストが表示されます。 - -**手順 4:** [パイプライン設定リスト] (Pipeline Configuration List)が表示されたら、列見出しの右端にある**[+]**記号を選択して、**[プロジェクト] (Projects)**列を追加します。 - -![プロジェクト列を追加](./images/installing_app/5_add_project_column.png) - -### プロジェクトの設定の配置場所を確認する - -**手順 5:** オペレーティング システムに該当する**[パス] (Path)**フィールドを追加します。 - -![設定のパス](./images/installing_app/6_path_to_config.png) - -設定ファイルのパスが表示されます。 - -![設定のパス 2](./images/installing_app/7_path_to_config2.png) - -**手順 6:** **[プライマリ] (Primary)**行項目の横にある空のスペース内で**右クリック**して、コンテキスト メニューから**[この設定のクローンを作成...] (Clone this Configuration…)**を選択します。 - -![クローン作成完了](./images/installing_app/8_clone_complete.png) - -**手順 7:** [パイプライン設定リスト](Pipeline Configuration List)内の設定およびディレクトリ内のファイルに、それぞれ「Primary Clone Config 2」および「the_other_side_clone2」という名前を付けます。**[OK]**をクリックします。 - -![クローンに名前を付ける](./images/installing_app/9_name_clone.png) - -{% include product %} によって設定内のすべてのファイルおよびフォルダがコピーされ、アプリのキャッシュが作成されるまで待ちます。この時間を利用して、エスプレッソの完璧なショットと一緒に、軽く、ふわっとした、口の中でとろけるクロワッサンを作成するアプリを使用しましょう。 - -![クローン作成完了](./images/installing_app/10_clone_complete.png) - -完了すると、クローンが作成された設定の情報を使用して[パイプライン設定リスト]が更新され、ローカルな config フォルダに新しい設定が追加されます。 - -{% include info title="注" content="**[ユーザ制限] (User Restrictions)**の下にユーザ名が追加されています。ShotGrid は、この設定を作成したユーザのみが新しい設定にアクセスできるよう、自動的に制限します。この設定を編集し、テストして、最終的に使用するユーザを追加することができます。ただし、ShotGrid の柔軟性を高めて、詳細なコントロールを可能にする方法がもう 1 つあります。"%} - -## クローン作成された設定にプロジェクトを関連付ける - -**手順 8:** {% include product %} Desktop を開いて、クローン作成した設定を作成する対象となったプロジェクトを選択します。右上にある**下矢印**を選択して、このプロジェクトに関連付けられた設定を表示し、直前に作成した**[Primary Clone Config 2]**を選択します。 - -![クローンを選択](./images/installing_app/11_select_clone.png) - - これで、{% include product %} Desktop がこのプロジェクトでクローン作成した設定を使用するようになりました。 - -## パイプライン設定を編集する - -**手順 9:** クローン作成した設定を、ファイルシステム上の、この設定を作成するときに指定したパス内で検索します。`config/env/includes/app_locations.yml` ファイルを表示します。 - -![クローン アプリの場所](./images/installing_app/12_clone_app_locations.png) - -`app_locations.yml` ファイルは既定の設定のアドレス帳です。このファイルには、アプリの記述子がリストされています。このファイルはアプリの配置場所を示しているため、ユーザはこのファイルを基にアプリの設定を作成することができます。 - -使用するアプリがアドレス帳で参照されていない場合は、Toolkit に検索場所を指示する必要があります。 - -## Toolkit にアプリの検索場所を指示する - -**手順 10:** ファイル内で `pythonconsole` を検索します。プロジェクトで既定の設定を使用した場合は、Python コンソール アプリの記述子がこのファイル内にリストされます。この記述子は、作業開始時に調べた Maya アプリの[リスト](https://developer.shotgridsoftware.com/ja/162eaa4b/)内にある記述子と一致する必要があります。アプリのバージョンが、Maya アプリのリスト内にあったバージョンと一致することを確認します。 - -```yaml -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 - -``` - -{% include info title="注" content="別の設定を使用している場合は、その記述子をファイルに追加しなければならいことがあります。"%} - -すべてのアプリおよびエンジンに記述子があります。記述子の仕組みと `type:` の設定方法の詳細については、[Core API ドキュメントの記述子に関するセクション](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types)を参照してください。 - -## Toolkit に記述子を使用するよう指示する - -Maya のプロジェクト環境内で作業している場合は、記述子を使用して Python コンソール アプリを特定し、このアプリを使用するよう Toolkit に指示する必要があります。 - -**手順 11:** クローン作成した設定内にある `config/env/project.yml` ファイルを開き、`tk-maya` エンジンの設定を検索します。 - -```yaml -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - 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` は環境を識別します。 - -### YAML ファイル - -{% include product %} Toolkit パイプライン設定は [YAML](https://yaml.org/spec/1.2/spec.html) ファイル内で単純な用語を使用して、アプリやエンジンの場所、およびこれらの設定を識別します。 - -この特定のブロックの各要素は、次のとおりです。 - -* `settings` は、既定の設定で、設定フォルダの参照として選択された内容を表します。 -* `project` は、既定の設定で、プロジェクト環境の参照として選択された内容を表します。 -* `tk-maya` は、Maya 用の Toolkit エンジンの識別子です。 -* `@` は、設定値がインクルードされたファイルから取得されたことを示すために使用される Toolkit 用語です。 - -YAML ファイルは {% include product %} の統合の窓口であり、パイプラインの要求を満たす作業環境を簡単に設定できるようにします。 - -### 設定における Toolkit バンドルの参照方法 - -{% include product %} の統合のコードは、アプリ、エンジン、およびフレームワークのバンドルに整理されています。これらのバンドルは、`tk-maya`、`tk-multi-pythonconsole` のような記述子を使用して、Toolkit の YAML ファイル内で参照されています。YAML の各バンドルに対応するブロックには、識別されたバンドルへのアクセス方法や利用方法をコントロールする設定が含まれています。 - -## Python コンソールの設定の配置場所 - -既定の設定のこの特定のブロックに含まれている「tk-maya.project」は、プロジェクト環境内の Maya エンジンの識別子です。ここで目標とするのは、Python コンソール アプリのコード バンドルをプロジェクト環境内の Maya エンジンに追加することです。使用された用語を基に判断すると、`tk-maya.yml` が、プロジェクト環境の設定が配置されている YAML ファイルの名前であることは確実です。`tk-maya.yml` ファイル内の `settings.tk-maya.project`で `apps` を検索します。 - -**手順 13:** ファイルを検索するには、includes セクションの engines の上で `tk-maya.yml` を探します。 - -`./includes/settings/tk-maya.yml` - -**手順 14:** クローン作成した設定内の `config/env/includes/settings/tk-maya.yml` をテキスト エディタで開き、`settings.tk-maya.project` を検索します。 - -![tk-maya](./images/installing_app/13_tk-maya.png) - -**手順 15:** 次の行の下に場所の記述子を追加します。 - -```yaml -settings.tk-maya.project: - apps: -``` - -`about` アプリの `tk-multi-about:` をガイドとして使用して、場所の記述子を追加し、ファイルを保存します。 - -{% include info title="注" content="[YAML](https://www.tutorialspoint.com/yaml/yaml_indentation_and_separation.htm) ファイルが、タブでなくスペースを使用して正しくフォーマットされていることを確認してください。"%} - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" - tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" -``` - -**Screening Room、{% include product %} Panel、および Workfiles2** アプリの場所識別子は別のインクルードされたファイルにリストされていて、**About** アプリとアクセス方法が異なります。これらのアプリには追加設定があるため、情報整理しておくために、これらのアプリはインクルードされた設定フォルダに分割して配置されています。 - -{% include info title="注" content="python コンソール アプリは既に既定の設定に存在しますが、これまでに設定に追加したことがないアプリを追加する場合、またはアプリのバージョンを変更し、[中央設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)を使用している場合は、追加の手順が必要になります。端末を開いて、クローン作成した設定の保存場所を参照します。クローン作成した設定のルート フォルダから、次のコマンドを実行します。
- -Linux または Mac の場合: - - ./tank cache_apps - -Windows の場合: - - tank.bat cache_apps - -これにより、設定内のアプリ、エンジン、フレームワークがスキャンされ、それらがすべてダウンロードされたことが確認されます。"%} - -## Maya で変更内容を表示する - -**手順 16:** {% include product %} Desktop を開いて、作業しているプロジェクトを選択し、クローン作成された設定を使用していることを確認します。 - -青いバーが表示され、プロジェクトの名前の下に、作成したクローンの名前が示されます。 - -{% include info title="注" content="プライマリを使用している場合は、青いバーは表示されず、設定の名前は表示されません。" %} - -![Maya のクローン作成された設定](./images/installing_app/14_maya_cloned_config.png) - -**手順 17:** Desktop から Maya を起動して、メニュー **[{% include product %}] > [プロジェクト] (Project) > […]**を選択します。 - -次の場合: - -* 直前に編集した、クローン作成した設定を使用している場合 -* クローン作成した設定が正しく拡張された場合 -* 拡張したファイルを保存した場合 -* プロジェクトにクローン作成した設定を関連付けるよう選択した場合 -* {% include product %} Desktop から Maya を再起動した場合 - -Maya で Python コンソール アプリを使用できるようになります。 - -![プロジェクト ID](./images/installing_app/16_project_ID.png) - -## プロダクションに変更をプッシュする - -Python コンソール アプリが正しく追加されたことを確認したら、変更を有効にすることができます。 - -**手順 18:** 端末を開いて、クローン作成した設定の保存場所を参照します。クローン作成した設定のルート フォルダから、次のコマンドを実行します。 - -Linux または Mac の場合: - -`./tank push_configuration` - -Windows の場合: - -`tank.bat push_configuration` - -プロンプトに従って、プロジェクトのプライマリ設定(変更のプッシュ先の設定)の ID を入力します。 - -``` - -$ ls -cache config install tank tank.bat -$ ./tank push_configuration - -Welcome to the Shotgun Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current path -'/Users/michelle/Documents/Shotgun/configs/the_other_side_clone2' -- The path is not associated with any Shotgun object. -- Falling back on default project settings. -- Running as user 'Michelle' -- Using configuration 'Primary Clone Config 2' and Core v0.18.159 -- Setting the Context to Project the_other_side. -- Running command push_configuration... - - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary Clone Config 2') to another pipeline configuration in the project. -By default, the data will be copied to the target config folder. If pass a ---symlink parameter, it will create a symlink instead. - -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): - -``` - -クローン作成した設定のプッシュ先に指定できるパイプライン設定のリストが表示されます。設定を更新しているプロジェクトのプライマリ パイプライン設定の ID を入力します。 - -{% include info title="注" content="このガイドの「**手順 3**」に示した ShotGrid の[パイプラインの設定] (Pipeline Configuration)ページにも、パイプライン設定の ID が表示されています。プロジェクト ID を検索するには、設定リストに移動して、ID 列を追加します。"%} - -![ID 列](./images/installing_app/17_id_column.png) - -ID を入力した後、{% include product %} は以下の処理を行います。 - -* プライマリ設定をバックアップする -* クローン作成した設定をコピーする -* クローンされた設定のコピーにプロジェクトを関連付けて、クローンをそのまま残す -* プライマリ設定の保存場所を表示する -* ダウンロードしてキャッシュに入れなければならないアプリがあるかどうかを確認する - -``` -Please type in the id of the configuration to push to (ENTER to exit): 1 -Hold on, pushing config… -Your old configuration has been backed up into the following folder: -/Users/michelle/Documents/Shotgun/configs/the_other_side/config.bak.20190118_111627 -Checking if there are any apps that need downloading… - -Push Complete! -``` - -## プライマリ設定で行った変更を表示する - -**手順 19:** {% include product %} Desktop の右上にある矢印をクリックして、**[CONFIGURATION]**リスト内の**[Primary]**を選択します。 - -![Maya の設定の変更](./images/installing_app/18_change_config_maya.png) - -**手順 20:** Desktop から Maya を起動して、メニュー**[{% include product %}] > [プロジェクト] (Project) > […]**を参照して、{% include product %} Python コンソールを検索します。 - -![Maya のアプリ](./images/installing_app/19_app_in_maya.png) - -Python コンソール アプリが、選択されたプロジェクトのプロジェクト環境に追加されました。2 番目のガイドの「[設定を編集する](./editing_app_setting.md)」で、各環境は独立していて、プロジェクトには専用の設定があること、およびプロジェクトをロードするときに、ソフトウェアの統合によってパイプライン設定から設定が収集されることを説明しました。Python コンソールを環境内で使用できるように設定するには、`app_locations.yml` ファイル内で場所の記述子を参照するようこの環境に指示する必要があります。この場合、Python コンソール アプリを使用可能にするパイプラインの任意のポイントで、「Python コンソール アプリをここで使用する」ように設定する必要があります。 - -## 高度なトピック - -### {% include product %} 開発者のコミュニティ - -Toolkit の素晴らしい点の 1 つに、Toolkit アプリを誰でも作成できることがあります。また、アプリの所有権を維持したり、[{% include product %} コミュニティ](https://community.shotgridsoftware.com/c/pipeline/6)内でアプリを共有して {% include product %} ツールに追加したりできます。{% include product %} コミュニティ ページで共有可能な便利なアプリを作成した場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -標準的な Toolkit アプリや、愛情のこもった {% include product %} コミュニティで作成されたアプリについては、**[{% include product %}-dev Google グループ](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev)**で活発に議論されています。{% include product %} コミュニティの貢献度が高まるにつれて、知識やツールの基盤も拡大しています。 - -### 設定の拡張方法を調べる - -プロジェクトで使用する設定を選択するときにおわかりになったように、Python コンソール アプリは {% include product %} Desktop のドロップダウンから使用できます。 - -![Desktop の Python コンソール](./images/installing_app/20_desktop_python_console.png) - -パイプラインに追加するアプリを使用している環境がある場合は、少し推理を働かせて、このアプリを設定に追加するのに必要な情報を見つけることができます。アプリが使用されている環境内の設定ファイルを調べると、アプリの場所の記述子および設定の追加方法がわかります。 - -Desktop アプリはプロジェクト環境内で開くため、`project.yml` ファイル内で `tk-desktop` を検索します。 - -`config/env/project.yml` を開きます。 - -注: engine ブロック内の `tk-desktop` は、インクルードされた内容を指します。 - -```yaml -includes: - - ./includes/settings/tk-desktop.yml - -engines: - tk-desktop: "@settings.tk-desktop.project" -``` - -インクルードの内容に従って、`config/env/includes/settings/tk-desktop.yml` を開き、`settings.tk-desktop.project` ブロックを検索します。このブロック内に、次の行が含まれています。

- -```yaml -apps: - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" -``` - -これらのブロックに従い、プロジェクトの手順中に Python コンソール アプリが Desktop エンジンに追加されます。 - -インクルードの内容に沿って `../includes/app_locations.yml` に進み、`apps.tk-multi-pythonconsole.location` を検索します。次のようになっています。

- -```yaml -# pythonconsole -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 -``` - -すべてのアプリ、エンジン、およびフレームワークに、特定のバンドルのアクセス場所を Toolkit に指示するための場所の記述子が設定されています。多くのアプリ記述子が `app_locations.yml` ファイルに含まれていますが、Python コンソール アプリで確認したように、これらの記述子が必要な場所で参照されていない可能性があります。すべての標準アプリおよびエンジンは、「[アプリとエンジンの概要](https://developer.shotgridsoftware.com/ja/162eaa4b/)」ページにリストされています。 - -任意のアプリを ShotGrid でサポートされている適切なソフトウェア統合に追加したり、独自のアプリケーションを Toolkit ツールに追加したりできます。サポートされているすべてのソフトウェア アプリケーションは、統合の「[アプリとエンジンの概要](https://developer.shotgridsoftware.com/ja/162eaa4b/)」ページにもリストされています。 - -探しているアプリが見つからない場合は、自分で作成できます。これを機会に、他の ShotGrid ユーザにこの機能の必要性が広まる可能性があります。また、新しいアプリを共有することで、ShotGrid コミュニティに恩返しができます。 - -[次のガイド](https://developer.shotgridsoftware.com/ja/56b441c6/)では、会社の構成方法に合わせて制作用フォルダの構成をカスタマイズする方法について学習します。 diff --git a/docs/ja/guides/pipeline-integrations/getting_started.md b/docs/ja/guides/pipeline-integrations/getting_started.md deleted file mode 100644 index 312c5d9d2..000000000 --- a/docs/ja/guides/pipeline-integrations/getting_started.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: はじめに -pagename: toolkit-getting-started -lang: ja ---- - -# はじめに - - {% 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 deleted file mode 100644 index 9814937cb..000000000 --- a/docs/ja/guides/pipeline-integrations/workflows.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: ワークフロー -pagename: toolkit-workflows -lang: ja ---- - -# ワークフロー - -{% include product %} のパイプライン統合をカスタマイズすると、フィーチャ アニメーション、エピソード ワークフロー、ビジュアル エフェクト、ゲームなど、さまざまなワークフロー作成ツールを使用できるようになります。 - -このセクションには、特定のワークフローを構築するためのリソースが含まれています。 diff --git a/docs/ja/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md b/docs/ja/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md deleted file mode 100644 index bf2dba2fb..000000000 --- a/docs/ja/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md +++ /dev/null @@ -1,421 +0,0 @@ ---- -layout: default -title: Nuke Studio でのエピソード ワークフロー -pagename: episodic-nuke-tutorial -lang: ja ---- - -# Nuke Studio でのエピソード ワークフロー - - -## 概要および準備作業 - - -この記事では、Nuke Studio または Hiero で `tk-hiero-export` アプリを使用してエピソード ワークフローを起動および実行する方法について説明します。 この方法が 1 つだけではないことに注意してください。目的のワークフローごとに方法は若干異なります。この例では、次のように仮定します。 - -* 目標は、`Episode > Sequence > Shot` という 3 つの層からなる階層を設定することです。 -* [ファイル システム設定ガイド](https://developer.shotgridsoftware.com/ja/82ff76f7/)に記載された手順を参照して完了します。 -* `Episode` エンティティ タイプを使用します(`CustomEntity02` ではありません。両方とも同じ方法で機能することができ、名前だけが異なります)。 -* `Sequence` エンティティに `episode` というエンティティ フィールドがあります。 -* Nuke Studio を使用しますが、プロセスは Hiero と同じです。 -* Toolkit プロジェクトの[既定の設定](https://github.com/shotgunsoftware/tk-config-default2)を最初に使用します。 - -開始する前に決定しなければならないことがもう 1 つあります。それは、`Episode` の解決方法です。すぐに使える {% include product %} Hiero/Nuke Studio の書き出しプロセスにより、Nuke Studio プロジェクトの内容に基づいて、{% include product %} サイトに `Sequence` および `Shot` エンティティが作成されます。Toolkit を使用して Maya で作業する場合のように、アセットやタスクが既に作成されていると想定される場合と異なり、Nuke Studio では `Episodes` `Sequences` または `Shots` が既に作成されていると想定されません。そのため、Nuke Studio では `Episode` の定義方法をユーザが決定する必要があります。ここで使用できるオプションはいくつかあります。 - -* {% include product %} でエピソードをあらかじめ作成し、エピソードのコンテキストで機能するように Nuke Studio Toolkit の統合を設定します。こうすることで、書き出すときに、現在のシーンのコンテキストから `Episode` エンティティを取得することができます。 -* `Episode` エンティティがまだ作成されていないと想定して、Nuke Studio のタグ付け機能を利用してシーケンスにエピソード名をタグ付けし、書き出すときに `Episode` を解決します。 - -使用しているワークフローに適した別の方法が存在する可能性があります。たとえば、Nuke Studio のシーケンス名やショット名の一部からエピソード名を抽出する(例: シーケンス「ep1_s01」から「ep1」を取り出す)などの方法があります。 または、書き出しアプリの [hiero_customize_export_ui.py](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) フックを使用して、書き出しとエピソードをリンクするための GUI を追加することができます。 - -この例では、2 番目のオプションである、シーケンスのタグ付けによる解決策を使用します。 - -*この手順の目的は、階層の 3 つのレイヤ(`Episode > Sequence > Shot`)を実装することです。`Sequence` エンティティ タイプを `Episodes` エンティティ タイプで単に置き換えるプロセス(`Episode > Shot`)の方が簡単です。 このシナリオについては、このガイドの最後の方で簡単に説明しますが、残りの説明を参照して理解を深めることをお勧めします。* - -## スキーマとテンプレート - - -上記のように、この例では、[スキーマおよびテンプレートが更新](https://developer.shotgridsoftware.com/ja/82ff76f7/#how-can-i-add-a-new-entity-type-to-my-file-structure)されていることが前提となります。templates.yml 内の `hiero_plate_path` および `hiero_render_path` パスの値も更新されていて、正しい部分にエピソード キーが格納されていることを確認します。 - -## フックと設定 - - -{% include product %} 書き出しプロセスを取得して `Episode` を正しく処理するには、書き出しフックの一部を変更する必要があります。この記事では、ユーザが[フック](https://developer.shotgridsoftware.com/ja/312b792f/#using-frameworks-from-hooks)の概要について理解していて、基本的な実装のオーバーライドに慣れていると想定しています。 - -エピソードを有効にするのに役立つ書き出しフックは 2 つあります。 - -* `hiero_get_shot.py` -* `hiero_resolve_custom_strings.py` - -注: `hiero_translate_template.py` という 3 番目のフックがあります。この例ではこのフックを使用しませんが、シーケンスをエピソードで置き換えて、2 つのレイヤからなる階層を維持することのみを行う場合は、このフックが必要になります。これについては、記事の最後で少し詳しく説明します。 - -エピソードを検索して、{% include product %} でこれに該当するエントリを作成できるように、`hiero_get_shot.py` を変更します。また、Nuke Studio がパス内の {Episode} キーに指定する値を取得できるように、`hiero_resolve_custom_strings.py` を変更します。次に、このステップの詳細を示します。 - -### 1. エピソード フィールドの追加 - -テンプレートに `Episode` というキーが追加されたため、`tk-hiero-export` アプリにその解決方法を指定する必要があります。`/config/env/includes/settings/tk-hiero-export.yml` ファイル内の `custom_template_fields` を次のように変更します。 - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - ... -``` - -`{Episode}`こうすると、 という名前の有効な書き出しトークンが Hiero エクスポータに追加されます。 - -### 2. hiero_get_shot フック - -`hiero_get_shot.py` フックを使用して、書き出しプロセスにエピソード名を検索し、{% include product %} で `Episode` を作成する方法を指定する必要があります。 - -[フックの既定のバージョン(hiero_get_shot.py)](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip)では、TrackItem と同じ名前の `Shot` が {% include product %} から返されます。Nuke Studio シーケンス項目と同じ名前を持つ `Sequence` に `Shot` をリンクする必要もあります。`Sequence` または `Shot` が {% include product %} 内になければ、フックによって作成されます。別の階層レベルが追加されるため、`Episode` が存在しなければこれも作成するようにフックに指示する必要があります。 - -また、`Sequence` は `Episode` にリンクされているため、`Sequence` を検索するコード(`get_shot_parent()` メソッド)にこれを関連付ける必要があります。 - -環境設定のフック フォルダ内に `hiero_get_shot.py` ファイルを作成し、`hook_get_shot: '{config}/hiero_get_shot.py'` を `tk-hiero-export.yml` 設定に追加します。次のようになります。 - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - hook_get_shot: '{config}/hiero_get_shot.py' -``` - -`hiero_get_shot.py`次に、 フックのコード全体を示します。 作成したフックにこのコードを追加します。 - -``` -from sgtk import Hook - -class HieroGetShot(Hook): - """ - Return a {% include product %} Shot dictionary for the given Hiero items - """ - - def execute(self, task, item, data, **kwargs): - """ - Takes a hiero.core.TrackItem as input and returns a data dictionary for - the shot to update the cut info for. - """ - - # get the parent entity for the Shot - parent = self.get_shot_parent(item.parentSequence(), data, item=item) - - # shot parent field - parent_field = "sg_sequence" - - # grab shot from {% include product %} - sg = self.parent.shotgun - filter = [ - ["project", "is", self.parent.context.project], - [parent_field, "is", parent], - ["code", "is", item.name()], - ] - - # default the return fields to None to use the python-api default - fields = kwargs.get("fields", None) - shots = sg.find("Shot", filter, fields=fields) - if len(shots) > 1: - # can not handle multiple shots with the same name - raise StandardError("Multiple shots named '%s' found", item.name()) - if len(shots) == 0: - # create shot in {{ akn_product_name_lower }} - shot_data = { - "code": item.name(), - parent_field: parent, - "project": self.parent.context.project, - } - shot = sg.create("Shot", shot_data, return_fields=fields) - self.parent.log_info("Created Shot in {% include product %} : %s" % shot_data) - else: - shot = shots[0] - - # update the thumbnail for the shot - upload_thumbnail = kwargs.get("upload_thumbnail", True) - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", - entity=shot, - source=item.source(), - item=item, - task=kwargs.get("task") - ) - - return shot - - def get_episode(self, data=None, hiero_sequence=None): - """ - Return the {{ akn_product_name_lower }} episode for the given Nuke Studio items. - We define this as any tag linked to the sequence that starts - with 'Ep'. - """ - - # If we had setup Nuke Studio to work in an episode context, then we could - # grab the episode directly from the current context. However in this example we are not doing this but here - # would be the code. - # return self.parent.context.entity - - # stick a lookup cache on the data object. - if "epi_cache" not in data: - data["epi_cache"] = {} - - # find episode name from the tags on the sequence - nuke_studio_episode = None - for t in hiero_sequence.tags(): - if t.name().startswith('Ep'): - nuke_studio_episode = t - break - if not nuke_studio_episode: - raise StandardError("No episode has been assigned to the sequence: %s" % hiero_sequence.name()) - - # For performance reasons, lets check if we've already added the episode to the cache and reuse it - # Its not a necessary step, but it speeds things up if we don't have to check {{ akn_product_name_lower }} for the episode again - # this session. - if nuke_studio_episode.guid() in data["epi_cache"]: - return data["epi_cache"][nuke_studio_episode.guid()] - - # episode not found in cache, grab it from {% include product %} - sg = self.parent.shotgun - filters = [ - ["project", "is", self.parent.context.project], - ["code", "is", nuke_studio_episode.name()], - ] - episodes = sg.find("Episode", filters, ["code"]) - if len(episodes) > 1: - # can not handle multiple episodes with the same name - raise StandardError("Multiple episodes named '%s' found" % nuke_studio_episode.name()) - - if len(episodes) == 0: - # no episode has previously been created with this name - # so we must create it in {{ akn_product_name_lower }} - epi_data = { - "code": nuke_studio_episode.name(), - "project": self.parent.context.project, - } - episode = sg.create("Episode", epi_data) - self.parent.log_info("Created Episode in {% include product %} : %s" % epi_data) - else: - # we found one episode matching this name in {{ akn_product_name_lower }}, so we will resuse it, instead of creating a new one - episode = episodes[0] - - # update the cache with the results - data["epi_cache"][nuke_studio_episode.guid()] = episode - - return episode - - def get_shot_parent(self, hiero_sequence, data, **kwargs): - """ - Given a Hiero sequence and data cache, return the corresponding entity - in {% include product %} to serve as the parent for contained Shots. - - :param hiero_sequence: A Hiero sequence object - :param data: A dictionary with cached parent data. - - .. note:: The data dict is typically the app's `preprocess_data` which maintains the cache across invocations of this hook.         - - """ - # stick a lookup cache on the data object. - if "parent_cache" not in data: - data["parent_cache"] = {} - - if hiero_sequence.guid() in data["parent_cache"]: - return data["parent_cache"][hiero_sequence.guid()] - - episode = self.get_episode(data, hiero_sequence) - - # parent not found in cache, grab it from {% include product %} - - sg = self.parent.shotgun filter = [ - ["project", "is", self.parent.context.project], - ["code", "is", hiero_sequence.name()], - ["episode", "is", episode], - ] - - # the entity type of the parent. - par_entity_type = "Sequence" - - parents = sg.find(par_entity_type, filter) - if len(parents) > 1: - # can not handle multiple parents with the same name - raise StandardError( - "Multiple %s entities named '%s' found" % (par_entity_type, hiero_sequence.name()) - ) - - if len(parents) == 0: - # create the parent in {{ akn_product_name_lower }} - par_data = { - "code": hiero_sequence.name(), - "project": self.parent.context.project, - "episode": episode, - } - - parent = sg.create(par_entity_type, par_data) - self.parent.log_info( - "Created %s in {% include product %} : %s" % (par_entity_type, par_data) - ) - else: - parent = parents[0] - - # update the thumbnail for the parent - upload_thumbnail = kwargs.get("upload_thumbnail", True) - - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", entity=parent, source=hiero_sequence, item=None - ) - - # cache the results - data["parent_cache"][hiero_sequence.guid()] = parent - return parent -``` - -#### シーケンスを取得する - -上記のコードを使用して、`get_shot_parent()` メソッドを変更しました。`Sequence` を検索して作成するときに、新しい `get_episode()` メソッドから `Episode` が返されるようになりました。 {% include product %} データベース内に既存の `Sequence` があることを確認するときに、`episode %s" % (shot_code, keyword, result)) - return result - -``` - -スキーマのエピソード フォルダの名前が `code` フィールド以外から生成されている場合は、ここでこの名前を置き換える必要があります。 - -より適切で、複雑な方法は、templates.yml で `episode_root` テンプレートを追加して、このテンプレートからフィールドを取得することです。 この方法の場合、スキーマ内のエピソード フォルダの名前を変更したときでも、返されたフォルダ名はスキーマと常に一致します。コードは次のようになります。 - -``` -ctx = tk.context_from_entity("Episode", episode_entity[id]) -my_template = tk.templates["episode_root"] -fields = my_template.get_fields(ctx.filesystem_locations[0]) -return fields["Episode"] - -``` - -## まとめ - - -以上です。 後は、変更内容が適切に機能するかテストするだけです。 - -Nuke Studio を起動し、プロジェクトを作成し、シーケンスや映像を入力したので、書き出しプロセスをテストすることができます。 まず、エピソード タグを作成します。`Ep` で開始するシーケンスのタグを検索するフックがコーディングされているため、タグに `Ep…` という名前を付ける必要があります。 - -![エピソード タグを作成する](./images/tutorial/tu-episodic-nuke-mceclip0-01.png) - -シーケンスにタグを追加します。 - -![シーケンスにタグを追加する](./images/tutorial/tu-episodic-nuke-mceclip2-02.png) ![シーケンスにタグを追加する](./images/tutorial/tu-episodic-nuke-mceclip1-03.png) - -完了したら、タグの付いたシーケンスからショットを書き出します。 - - -![ショットを書き出す](./images/tutorial/tu-episodic-nuke-mceclip4-04.png) - -構造の書き出しの階層がスキーマの階層と一致することを確認します。 一致しない場合は、[構造を更新](#tip-refresh)しなければならない可能性があります。 - -![構造階層を書き出す](./images/tutorial/tu-episodic-nuke-mceclip3-05.png) - - -[書き出し] (export)をクリックすると、{% include product %} サイト内にエピソード、シーケンス、およびショットが作成され、ディスク上にフォルダ構造が作成されます。この方法で問題が生じた場合は、Nuke Studio スクリプト エディタまたは [{% include product %} のログ(tk-nukestudio.log)](https://developer.shotgunsoftware.com/ja/38c5c024/)で、発生した可能性のあるエラーがないか確認してください。 - -これでこのガイドは完了です。 もちろん、これはエピソードを処理する複数の方法の中の 1 つにすぎません。ご使用のスタジオに最適な方法および構造を特定するのは、ユーザの役割です。 - -## エピソードのシーケンスを切り替える - - -上で簡単に説明したように、エピソード/ショットの既定のシーケンス/ショット階層を単に切り替える場合は、エピソード名のソースとして Nuke Studio のシーケンス項目を使用することができます。 - -1. エピソード/ショット構造を使用するスキーマおよびテンプレートを設定します。 - -2. 上記のような既定の `hiero_get_shot.py` フックを引き継ぎます。ただし、今回は `parent_field` 変数の値を `sg_episode` に変更し(ショット エンティティ内にエピソード フィールドがあることを確認します)、`par_entity_type` `variable value to` `Episode`。 - -3. `hiero_translate_template.py` フックを引き継いで、フック ファイル内のマッピングを変更します。 - -``` - mapping = { - "{Episode}": "{sequence}", - "{Shot}": "{shot}", - "{name}": "{clip}", - "{version}": "{tk_version}", -} - -``` - - -Nuke Studio のシーケンス キー値を使用して、エピソード キーが解決されます。 - -> **ヒント:** これらの変更を行う前に Hiero/Nuke Studio プロジェクトを開いておいた場合、または変更中にテストする場合は、書き出しパスをリセットしなければならない可能性があります。書き出しダイアログを開くと、Nuke Studio は書き出しツリーをキャッシュに格納するため、スキーマに対する変更を再ロードする場合は、更新ボタンをクリックしてツリーを再構築する必要があります。 \ No newline at end of file diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_0.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_0.png deleted file mode 100644 index 5aaae70ca..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_0.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_1.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_1.png deleted file mode 100644 index 9ef7b24b7..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_1.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_10.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_10.png deleted file mode 100644 index 1fcd54ce4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_10.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_11.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_11.png deleted file mode 100644 index 8045bebe8..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_11.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_12.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_12.png deleted file mode 100644 index 3b9d2af46..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_12.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_13.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_13.png deleted file mode 100644 index 15396542b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_13.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_14.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_14.png deleted file mode 100644 index 9d27ac762..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_14.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_15.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_15.png deleted file mode 100644 index 1c009cebc..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_15.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_16.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_16.png deleted file mode 100644 index 62e275474..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_16.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_17.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_17.png deleted file mode 100644 index 710daf985..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_17.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_18.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_18.png deleted file mode 100644 index 132578ebf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_18.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_19.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_19.png deleted file mode 100644 index 67b0628bb..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_19.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_2.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_2.png deleted file mode 100644 index 14d871e1d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_2.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_20.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_20.png deleted file mode 100644 index 8400587a3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_20.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_21.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_21.png deleted file mode 100644 index aa56cede3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_21.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_22.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_22.png deleted file mode 100644 index bcc7d408d..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_22.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_23.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_23.png deleted file mode 100644 index ee1b6d81c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_23.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_24.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_24.png deleted file mode 100644 index 7503116e4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_24.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_25.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_25.png deleted file mode 100644 index ac143b087..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_25.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_26.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_26.png deleted file mode 100644 index b15780600..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_26.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_27.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_27.png deleted file mode 100644 index c905a86d8..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_27.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_28.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_28.png deleted file mode 100644 index 7980d0fe9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_28.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_29.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_29.png deleted file mode 100644 index 02b22a38c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_29.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_3.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_3.png deleted file mode 100644 index 8a64c9a89..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_3.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_30.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_30.png deleted file mode 100644 index 6f761b33e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_30.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_31.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_31.png deleted file mode 100644 index 2d03a5e29..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_31.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_32.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_32.png deleted file mode 100644 index ab97f042b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_32.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_33.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_33.png deleted file mode 100644 index 718ad804c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_33.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_34.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_34.png deleted file mode 100644 index 22b27000a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_34.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_35.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_35.png deleted file mode 100644 index 2fb0049ad..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_35.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_36.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_36.png deleted file mode 100644 index badc41e27..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_36.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_37.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_37.png deleted file mode 100644 index f418d3ab9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_37.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_4.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_4.png deleted file mode 100644 index e39fdf894..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_4.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_40.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_40.png deleted file mode 100644 index 5d2b1e17c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_40.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif deleted file mode 100644 index b18aad6e4..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_42.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_42.png deleted file mode 100644 index 77360d53e..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_42.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_43.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_43.png deleted file mode 100644 index 2fcc4c4b2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_43.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_44.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_44.png deleted file mode 100644 index a341c79f2..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_44.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_45.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_45.png deleted file mode 100644 index 5ed19baa9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_45.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_46.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_46.png deleted file mode 100644 index 93d0fa5a8..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_46.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_47.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_47.png deleted file mode 100644 index 2877d524a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_47.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_48.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_48.png deleted file mode 100644 index fc9d43997..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_48.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif deleted file mode 100644 index 6b2746480..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_5.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_5.png deleted file mode 100644 index a46252d77..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_5.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_50.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_50.png deleted file mode 100644 index ecc2cdb2f..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_50.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_51.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_51.png deleted file mode 100644 index 0ddd3ee28..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_51.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_52.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_52.png deleted file mode 100644 index 5a8ae398b..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_52.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_53.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_53.png deleted file mode 100644 index fb2f230a3..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_53.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54.png deleted file mode 100644 index 49301aa11..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif deleted file mode 100644 index 3decd4533..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_55.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_55.png deleted file mode 100644 index fac739561..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_55.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_56.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_56.png deleted file mode 100644 index c8facbbb9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_56.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_57.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_57.png deleted file mode 100644 index 6cb7c6c84..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_57.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_58.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_58.png deleted file mode 100644 index 270c1d6a9..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_58.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_59.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_59.png deleted file mode 100644 index 0526d6372..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_59.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_60.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_60.png deleted file mode 100644 index 2da4afc43..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_60.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_61.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_61.png deleted file mode 100644 index fcc900049..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_61.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_62.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_62.png deleted file mode 100644 index 27ab69acc..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_62.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_63.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_63.png deleted file mode 100644 index 569866d92..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_63.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_64.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_64.png deleted file mode 100644 index cc8f47edf..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/image_64.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png deleted file mode 100644 index 55cde0429..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png deleted file mode 100644 index 8fce5b3ea..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png deleted file mode 100644 index 7af0f7437..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png deleted file mode 100644 index 1857a1f4a..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png deleted file mode 100644 index ac26f2a54..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png deleted file mode 100644 index 968a3a7f8..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png deleted file mode 100644 index 824ccc1f5..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png deleted file mode 100644 index d5b6fd796..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png deleted file mode 100644 index 6ac096997..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png deleted file mode 100644 index d0fc6debd..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png deleted file mode 100644 index afac41f35..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png b/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png deleted file mode 100644 index ceee9446c..000000000 Binary files a/docs/ja/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png and /dev/null differ diff --git a/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md deleted file mode 100644 index e44a18b30..000000000 --- a/docs/ja/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ /dev/null @@ -1,853 +0,0 @@ ---- -layout: default -title: アニメーション パイプラインのチュートリアル -pagename: toolkit-pipeline-tutorial -lang: ja ---- - -# アニメーション パイプラインのチュートリアル - -このチュートリアルは、アニメーションや視覚効果用のシンプルで一般的なパイプラインの作成について説明します。このチュートリアルに従うと、外観加工を介してモデリングのアセットをプロダクション シーンに転送するのに必要なすべての処理を提供するパイプラインを作成できます。 - -このパイプラインの対象となるワークフローの大部分は、{% include product %} に組み込まれた統合機能を使用して、設定なしですぐに作業することができます。パイプラインの中の、スタジオがカスタム ソリューションを作成する頻度が高い部分については、このチュートリアルで、Toolkit プラットフォームを使用してアーティスト ワークフローをカスタマイズするプロセスを紹介します。 - -次に、このチュートリアルで作成されるパイプラインの概要を示します。 - -{% include figure src="./images/tutorial/image_0.png" caption="パイプラインの概要" %} - -## パイプラインの概要 - -分かりやすくするため、使用するデジタル コンテンツ作成(DCC)ソフトウェアは最小構成で Maya と Nuke に限定しています。また、パイプラインの工程で渡されるデータは、Maya ASCII ファイル、Alembic キャッシュ、およびレンダリング イメージ シーケンスに限定されます。 - -{% include info title="注" content="このチュートリアルで使用される単純なパイプラインはプロダクションのテストを受けていません。ShotGrid ベースのパイプラインの作成例としてのみ使用してください。" %} - -## 前提条件 - -* **作業用の {% include product %} プロジェクト** - このチュートリアルでは、{% include product %} を使用してプロダクション データのトラッキングや管理を行った経験があることが前提となります。 - -* **{% include product %} 統合の概要** - {% include product %} には統合機能が付属していて、手動設定が不要な、単純なプロダクション ワークフローがいくつか用意されています。このチュートリアルで説明されている手動設定やカスタマイズについて調べる前に、これらのワークフローの機能や範囲について理解する必要があります。{% include product %} 統合の詳細については、[こちら](https://developer.shotgridsoftware.com/ja/d587be80/)を参照してください。 - -* **Maya と Nuke の経験** - このチュートリアルは、Maya および Nuke を使用して単純なパイプラインを作成することを目的としています。{% include product %} の統合機能をカスタマイズするには、これらのパッケージの基本について理解する必要があります。 - -* **Python の操作に関する知識** - このチュートリアルでは、Python で記述された「フック」を使用して、{% include product %} 統合の機能を変更する必要があります。 - -* **YAML に対する知識** - 作成しているパイプラインの設定のほとんどは、YAML ファイルを変更して処理されます。 - -## その他のリソース - -* [{% include product %} サポート サイト](https://support.shotgunsoftware.com/hc/ja) - -* [{% include product %} 統合](https://www.shotgridsoftware.com/integrations/) - - * [ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/) - - * [管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/) - - * [開発者用ガイド](https://developer.shotgridsoftware.com/ja/93c6e555/) - -# プロジェクトの作成とセットアップ - -このチュートリアルでは、{% include product %} で新しいプロジェクトを作成して、プロダクション開始の準備に合わせて設定する必要があります。ここで、すべての必要な {% include product %} エンティティが所定の場所にあり、正しくリンクされていることを確認します。このチュートリアルの場合、アセット、シーケンス、ショット、およびタスクの各エンティティが必要で、既定で新しいプロジェクトで使用できる必要があります。作成する項目は次のとおりです。 - -* 2 つの**アセット**: - - * **_ティーポット_** キャラクタ - - * **_テーブル_** プロップ - -* **シーケンス** 1 つ - -* 作成した**シーケンス**にリンクした**ショット** 1 つ - -* パイプラインの手順ごとの**タスク** - -次に、{% include product %} で設定したプロジェクト エンティティのスクリーンショットを示します。 - -{% include figure src="./images/tutorial/image_1.png" caption="ティーポットとテーブル アセット" %} - -{% include figure src="./images/tutorial/image_2.png" caption="シーケンスにリンクされたショット" %} - -{% include figure src="./images/tutorial/image_3.png" caption="タスク" width="400px" %} - -## ソフトウェア ランチャー - -次に、Maya および Nuke を {% include product %} Desktop 内で起動できることを確認する必要があります。Desktop で、これらの各パッケージのアイコンをクリックして起動できることを確認します。各パッケージの適切なバージョンが起動していることを確認します。 - -Desktop にアプリケーションが表示されない場合、または予期したバージョンが起動しない場合は、ソフトウェア エンティティを使用して {% include product %} で起動を手動で設定しなければならない可能性があります。 - -{% include figure src="./images/tutorial/image_4.png" caption="ShotGrid で定義された規定のソフトウェア エンティティ" %} - -ソフトウェア エンティティは、プロダクションで使用する DCC パッケージを操作する場合に使用されます。既定では、標準のインストール場所でこれらのパッケージが検索され、Desktop を使用して起動できるようになります。複数のバージョンがインストールされている場合、または標準以外の場所にインストールされている場合は、{% include product %} の対応するソフトウェア エンティティのエントリを更新して、アーティストの起動環境を整理しなければならない可能性があります。 - -ソフトウェア エンティティおよび適切な設定方法の詳細については、「[統合管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)」を参照してください。DCC が予期した方法で起動した場合は、次のセクションに進んでください。 - -# 環境設定 - -環境設定(設定)は、プロジェクトに関するアーティスト ワークフローを定義します。このワークフローでは、アーティストが起動している DCC に含める {% include product %} 統合、プロジェクトのフォルダ構造の定義方法、およびアーティストがデータを共有するときに作成されるファイルやフォルダの命名規則を指定します。 - -既定では、すべての新しいプロジェクトは基本的な [{% include product %} 統合](https://developer.shotgridsoftware.com/ja/d587be80/)を使用するように設定されています。この統合は、多数の既製のソフトウェア パッケージを使用してアーティスト間でファイルを共有するための基本的なワークフローを提供します。次のセクションでは、プロジェクトのパイプライン環境設定(設定)を引き継いで、スタジオに合わせてカスタマイズする方法の概要を示します。 - -## プロジェクトの設定を引き継ぐ - -{% include product %} Desktop (以下、「Desktop」)を使用して、プロジェクトの設定を引き継ぎます。Desktop 内で右マウス ボタンをクリックするか、または右下のユーザ アイコンをクリックして、ポップアップ メニューを表示します。**[Advanced project setup...]** オプションを選択し、ウィザードに従ってプロジェクトの設定をローカルにインストールします。次の図に、必要な手順を示します。『統合管理者ガイド』の「[パイプラインの設定を引き継ぐ](https://developer.shotgridsoftware.com/ja/8085533c/#taking-over-a-pipeline-configuration)」に示されている手順に従うこともできます。 - -{% include figure src="./images/tutorial/image_5.png" caption="Desktop のポップアップ メニューで**[Advanced project setup...]**を選択する" %} - -{% include figure src="./images/tutorial/wizard_01.png" caption="**[ShotGrid Default] (ShotGrid の既定値)**設定タイプを選択する" %} - -{% include figure src="./images/tutorial/wizard_02.png" caption="**[Default configuration] (既定の設定)**を選択する" %} - -初めて {% include product %} プロジェクトをセットアップする場合は、プロジェクト データのストレージ場所を定義するためのプロンプトも表示されます。それ以外の場合は、既存の格納場所を選択することができます。 - -{% include figure src="./images/tutorial/wizard_03.png" caption="新しいストレージを作成します。"%} - -{% include figure src="./images/tutorial/wizard_04.png" caption="新しいストレージに名前を付けます。このストレージはプロジェクト固有のものではなく、サイト全体で使用されることに注意してください。"%} - -{% include figure src="./images/tutorial/wizard_05.png" caption="使用するオペレーティング システム上でこのストレージにアクセスするパスを設定します。" %} - -**[サイト基本設定] (Site Preferences)**の**[ファイル管理] (File Management)**セクションで、{% include product %} サイトのストレージを表示および編集できます。これらの設定について詳しくは、[こちら](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)を参照してください。 - -格納場所が選択されたので、その場所にある新しいプロジェクトのディレクトリ名を選択します。 - -{% include figure src="./images/tutorial/wizard_06.png" caption="プロジェクト ファイルを配置するフォルダの名前を入力する。" %} - -このチュートリアルでは中央設定を使用します。**[分散設定] (Distributed Setup)**オプションは、さまざまなメリットを提供する代替オプションを提供します。これは、高速共有ストレージのないスタジオで役に立つ場合があります。各種設定の長所と短所について詳しくは、「[ツールキット管理](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2)」のプレゼンテーションを参照してください。 - -サイト全体にわたるストレージとは異なり、設定はプロジェクトごとに異なるため、ここで選択するディレクトリが直接設定の保存に使用されます。 - -{% include figure src="./images/tutorial/wizard_07.png" caption="現在のオペレーティング システムに対して選択した設定パスをメモする。" %} - -上記の画面で選択したフォルダに設定がインストールされます。このチュートリアルを通して、このフォルダに含まれている設定の内容を調べて、変更します。 - -上記の画面で**[Run Setup]**をクリックすると、Desktop は設定に必要なすべてのコンポーネントのダウンロードおよびインストールを開始します。このインストール処理には数分かかる場合があります。完了したら、プロジェクト全体の設定のローカル コピーが作成されます。次の手順では、このローカル コピーを変更します。 - -Desktop インストールのチュートリアルで指定された設定場所は、{% include product %} のプロジェクトの[パイプラインの設定] (Pipeline Configurations)ページに記録されています。 - -{% include figure src="./images/tutorial/image_10.png" caption="ShotGrid のパイプラインの設定エンティティ" %} - -次のセクションに備えて、このフォルダの内容を理解しておいてください。 - -## 設定の構成 - -単純なパイプラインの作成プロセスを開始する前に、パイプライン設定の構成方法とその仕組みについて理解しておく必要があります。次の図に、設定の主な構成要素とその目的を示します。設定とその管理の詳細については、「[ツールキットを管理する](https://developer.shotgridsoftware.com/ja/425b1da4/)」の記事を参照してください。 - -{% include figure src="./images/tutorial/image_11.png" %} - -### プロジェクト スキーマ - -このチュートリアルで作成する単純なパイプラインでは、既定の設定で提供されるプロジェクト スキーマを使用します。**`config/core/schema`** フォルダを参照して、Toolkit アプリがディスクにファイルを書き込むときに作成される構造を把握することができます。プロジェクト ディレクトリ構造の設定方法の詳細については、「[ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/)」を参照してください。 - -### テンプレート - -このチュートリアルでは、既定のパイプラインの設定で定義されたテンプレートも使用します。**`config/core/templates.yml`** ファイルを開いて、入出力ファイルをディスク上のパスにマップするためにアプリで使用されるテンプレートを確認できます。テンプレート システムの詳細については、「[ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/)」を参照してください。 - -### フック - -このチュートリアルの大部分では、アーティスト ワークフローをカスタマイズするためにアプリのフックを変更します。カスタマイズの詳細を調べる前に、フックの内容、その仕組み、および格納先についての基本を理解する必要があります。[管理](https://developer.shotgridsoftware.com/ja/425b1da4/#hooks)ドキュメントのフックに関するセクションを参照してください。 - -このチュートリアルの手順を進めると、Toolkit アプリのいずれかで定義されたフックを「引き継ぐ」ように要求されます。アプリのフックを引き継ぐプロセスは簡単です。この操作を行うように要求されるたびに、次に示す手順を実行するだけです。 - -1. 設定のインストール フォルダ内で、オーバーライドするフックを含む**アプリを特定**します。このアプリの **`hooks`** サブディレクトリを検索して、オーバーライドするフック ファイルを特定します。 - -2. 設定の上位にある **`hooks`** ディレクトリに**フックをコピー**します(必要に応じて名前を変更します)。 - -{% include figure src="./images/tutorial/image_12.png" %} - -ファイルが設定の **`hooks`** フォルダに格納されたら、変更を加えて、コードをカスタマイズすることができます。対応するアプリがこの新しい場所を参照するように設定するには、追加手順が必要です。この手順については、チュートリアルの後半で説明します。 - -# パイプラインを作成する - -この時点で、パイプラインの作成を開始する準備ができています。{% include product %} にプロジェクトが設定されていて、Desktop を介して Maya および Nuke を起動することや、プロジェクトの設定をコントロールすることができます。また、設定の構造の基本を理解していて、アーティスト ワークフローを具体的に作成する作業を開始することができます。 - -次のセクションでは、パイプラインの各手順について説明します。すぐに使用できる機能を示し、{% include product %} 統合のカスタマイズ プロセスを紹介します。これらのセクションが終了するころには、単純な、機能をすべて備えた、エンドツーエンドのプロダクション パイプラインが作成されています。また、アーティストがプロダクション作業で行う必要のある手順についても理解できるでしょう。 - -{% include info title="注" content="このチュートリアルのすべてのコードおよび設定は、[**`tk-config-default2`** リポジトリ](https://github.com/shotgunsoftware/tk-config-default2/tree/pipeline_tutorial/)の **`pipeline_tutorial`**ブランチ内にあります。ファイルの保管場所や、コードの追加場所などについてのヒントが必要な場合は、このブランチを参照してください。" %} - -## モデリング ワークフロー - -シンプルなパイプラインの最初の手順はモデリングです。このセクションでは、プロジェクト内でティーポット アセットの最初の繰り返しを作成します。作成した繰り返しは、ディスクのプロジェクトのフォルダ構造内に保存してからパブリッシュします。 - -最初に {% include product %} Desktop から Maya を起動します。 - -Maya が完全にロードされると、[ファイルを開く] (File Open)ダイアログ ボックスが表示されます。このダイアログ ボックスで、プロジェクト内にある既存の Maya ファイルを参照できます。また、{% include product %} 統合で認識される新しいファイルを作成することができます。 - -[アセット] (Assets)タブを選択して、ティーポットのモデリング タスクにドリル ダウンします。このタスクのアーティスト作業ファイルはまだないため、**[+ New File]**ボタンをクリックします。 - -{% include figure src="./images/tutorial/image_13.png" %} - -このボタンをクリックすると、新しい空の Maya セッションが作成されて、現在の作業コンテキストがティーポット アセットのモデル タスクに設定されます。 - -{%include info title="注" content="このチュートリアルを使用している場合はいつでも、Maya または Nuke の ShotGrid メニューを介して ShotGrid Panel を起動することができます。このパネルでは、DCC を終了しなくても、プロジェクト データを表示できます。現在の作業コンテキスト、およびこのコンテキスト内の最近のアクティビティが表示されます。フィードバック用のノートをパネルに直接追加することもできます。詳細については、「[ShotGrid Panel](https://developer.shotgridsoftware.com/ja/c0b0ce05/)」を参照してください。" %} - -次に、ティーポットをモデリングするか、指定されたディーポットを[ダウンロード](https://raw.githubusercontent.com/shotgunsoftware/tk-config-default2/pipeline_tutorial/resources/teapot.obj)して読み込みます。 - -{% include figure src="./images/tutorial/image_14.png" %} - -ティーポット モデルに問題がなければ、**[{% include product %}] > [File Save...]**メニュー アクションを選択します。このダイアログ ボックスで、ファイルを指定した名前、バージョン、タイプで保存するように求められます。 - -{% include figure src="./images/tutorial/image_15.png" %} - -このダイアログ ボックスで完全な保存パスを指定するよう求められない理由に注目してください。これは、**`maya_asset_work`** テンプレートに保存するようにアプリが設定されているためです。このテンプレートは、既定では次のように定義されます。 - -**`@asset_root/work/maya/{name}.v{version}.{maya_extension}`** - -アプリがフル パスを入力するために必要なのは、トークン化されたフィールド **`{name}`**、**`{version}`**、および **`{maya_extension}`** のみです。テンプレートの **`@asset_root`** の部分は、次のように定義されます。 - -**`assets/{sg_asset_type}/{Asset}/{Step}`** - -上記の新しいファイルを作成したときに設定した現在の作業コンテキストが与えられている場合、ここに示したトークン化されたフィールドは Toolkit プラットフォームによって自動的に推定できます。 - -また、ダイアログ ボックスの下部に、記述するファイル名およびパスのプレビューが表示されます。プロジェクトの設定を引き継ぐときに定義したプライマリ ストレージおよびプロジェクト フォルダが、テンプレート パスのルートに配置されます。 - -**[Save]**ボタンをクリックして、ティーポット モデルを保存します。 - -この時点において重要なのは、アーティストがワークフローを開く手順、および保存する手順は、パイプラインのどの段階においても、ここで完了したのと同じ手順になることです。[File Open]および[File Save]ダイアログ ボックスは、Workfiles アプリに含まれています。この「マルチ」アプリは、{% include product %} 統合でサポートされているすべての DCC で実行され、すべてのアーティストに一貫性のあるワークフローを提供します。 - -次の手順では、ティーポットにいくつかの変更を行います。ふたのジオメトリはモデルの残りの部分から独立しているため、後でリギングすることができます。 - -{% include figure src="./images/tutorial/image_16.png" %} - -作業内容に問題がなければ、**[{% include product %}] > [File Save…]**メニュー アクションをもう一度実行します。今度は、ダイアログ ボックスのバージョン番号が既定の 2 になります。ファイルのバージョンは自動的に増分するため、アーティストは完了した作業の完全な履歴を維持することができます。[Save]ボタンをクリックします。 - -{% include figure src="./images/tutorial/image_17.png" %} - -ティーポット モデルをバージョン 2 に保存したら、チュートリアルのこのセクションの最後の手順に進むことができます。 - -ティーポット モデルの準備ができたので、モデルをパブリッシュして、サーフェスの作成やリギングを実行できるようにする必要があります。パブリッシュするには、**[{% include product %}] > [Publish...]**メニュー アクションをクリックします。[Publish App]ダイアログ ボックスが表示されます。 - -{% include figure src="./images/tutorial/image_18.png" %} - -このダイアログ ボックスには、パブリッシュされる内容を表す項目がツリー表示されます。ツリーには、パブリッシュ対象の項目を表すいくつかのエントリと、パブリッシュ操作中に実行されるアクションを表すいくつかのエントリが含まれています。 - -ダイアログ ボックスの左側には、現在の Maya セッションを表す項目が表示されます。その下に、**[Publish to ShotGrid]**子アクションが表示されます。**すべてのセッション ジオメトリ**を表す追加項目が、現在のセッションの子項目として表示されます。**[Publish to ShotGrid]**子アクションも表示されます。 - -{% include info title="注" content="**[すべてのセッション ジオメトリ] (All Session Geometry)**項目が表示されない場合は、Maya でAlembic 書き出しプラグインが有効になっていることを確認してください。" %} - -ツリーの左側の項目をクリックして、Publish アプリを調べます。操作を行う項目を選択すると、パブリッシュする内容の説明を入力できます。また、右側のカメラ アイコンをクリックして、項目に関連付けられるスクリーンショットを作成することもできます。 - -準備ができたら、右下の**[Publish]**ボタンをクリックして、現在の作業ファイルおよびティーポット ジオメトリをパブリッシュします。完了したら、{% include product %} でティーポット アセットを参照し、パブリッシュが正常に完了したことを確認できます。 - -{% include figure src="./images/tutorial/image_19.png" %} - -上図に、ティーポット モデルを含む、パブリッシュされた Alembic ファイルが示されています。また、Maya セッション ファイルのパブリッシュも示されています。これらのパブリッシュは、パブリッシュ アプリのツリー表示内の項目に対応します。 - -[File Save]ダイアログ ボックスを使用して作成された作業ファイルと同様に、これらの 2 つのパブリッシュの出力パスはテンプレートによって制御されます。次に、これらのテンプレートの内容を示します(アプリに対してこれらのテンプレートが設定される場所については、後で示します)。 - -**Maya セッションのパブリッシュ:** - -**`@asset_root/publish/maya/{name}.v{version}.{maya_extension}`** - -このテンプレートは、既定では作業ファイル テンプレートと非常に似ています。唯一の違いは、フォルダが **`publish`** であることです。 - -**アセットのパブリッシュ:** - -**`@asset_root/publish/caches/{name}.v{version}.abc`** - -このテンプレートは、Maya セッションのパブリッシュ テンプレートに似ていますが、ファイルは **`caches`** フォルダに書き込まれます。 - -[File Save]ダイアログと異なり、パブリッシュするときに、名前、バージョン、またはファイル拡張子の値を指定する必要がありません。これは、パブリッシャーが作業ファイルのパスからこれらの値を取得するように既定で設定されているためです。パブリッシャーは作業テンプレートを介してこれらの値を内部で抽出し、パブリッシュ テンプレートに適用します。この概念は、Toolkit プラットフォームに関して重要であると同時に、パイプライン ステップの出力を別のステップの入力に接続するためにテンプレートをどのように使用するのかという点においても重要です。これについては、以降のセクションで詳細に説明します。 - -ディスクのファイルを参照して、これらが正しい場所に作成されていることを確認します。 - -お疲れ様でした。最初にパブリッシュされたティーポットの繰り返しが正常に作成されました。テーブル プロップのモデリング タスクからテーブルのモデルをパブリッシュする際に、学習した内容を使用できるかどうかを確認します。結果は以下のようになります。 - -{% include figure src="./images/tutorial/image_20.png" %} - -次に、サーフェス作成ワークフローについて説明します。 - -## サーフェス作成ワークフロー - -このセクションでは、モデリング セクションで学習した内容を基に作成します。Loader アプリを使用して、前のセクションで作成したティーポット モデルをロードする方法について学習します。また、ティーポットのシェーダをパブリッシュするために Publish アプリをカスタマイズする方法についても学習します。 - -Desktop から Maya を起動して開始します。前のセクションの作業を行った後も Maya が開いている場合は、再起動する必要はありません。Maya が開いたら、**[{% include product %}] > [File Open...]**を使用して作業ファイル アプリを開きます。モデリング セクションと同様に、[Assets]タブを使用してティーポット アセットのタスクにドリル ダウンします。今回は、サーフェス作成タスクを選択して、**[+ New File]**をクリックします。 - -{% include figure src="./images/tutorial/image_21.png" width="450px" %} - -ティーポットのサーフェス作成タスクの作業が開始しました。右側のプロダクション コンテキスト内で作業していることを確認する最も簡単な方法は、{% include product %} メニューの最初のエントリを調べることです。 - -{% include figure src="./images/tutorial/image_22.png" %} - -次に、ティーポット モデルを新しいサーフェス作成作業ファイルにロードする必要があります。このためには、Maya の **[{% include product %}] > [Load...]**メニュー項目を使用して、Loader アプリを起動します。 - -{% include figure src="./images/tutorial/image_23.png" %} - -Loader アプリのレイアウトは作業ファイル アプリと似ていますが、今は、作業ファイルを参照して開くのではなく、パブリッシュされたファイルを参照してロードします。 - -[Assets]タブでティーポットのキャラクタを参照して、前のセクションで作成したティーポットのパブリッシュを表示します。Maya シーンおよび Alembic キャッシュ パブリッシュが表示されます。Alembic キャッシュ パブリッシュを選択して、ダイアログ ボックスの右側にその詳細を表示します次に、Alembic キャッシュ パブリッシュの[Actions]メニューで、**[Create Reference]**項目をクリックします。ローダーは既定で開いたままになるため、追加のアクションを実行できますが、ローダーを閉じて続行することもできます。モデリング タスクからティーポット パブリッシュを示す参照が作成されていることが、Maya に表示されます。 - -{% include figure src="./images/tutorial/image_24.png" %} - -次に、ティーポットに単純なプロシージャ シェーダを追加します。 - -{% include figure src="./images/tutorial/image_25.png" %} - -パイプライン作成時のシェーダ管理は時間がかかり、複雑な作業になる場合があります。これは通常、スタジオに対して非常に固有な作業になります。付属の Maya 統合で、すぐに使用できるシェーダまたはテクスチャ管理が処理されないのは、このためです。 - -**[{% include product %}] > [File Save...]**メニュー アクションを使用して、現在のセッションを保存してから続行します。 - -### カスタム シェーダ パブリッシュ - -この単純なパイプラインの目的に合わせて、サーフェス作成ステップで Maya シェーダ ネットワークを追加のパブリッシュ項目として書き出すように、Publisher アプリをカスタマイズします。チュートリアルの後半では、下流工程の参照時にシェーダが Alembic ジオメトリ キャッシュに再接続できるスピード重視のソリューションを作成します。 - - -{% include info title="注" content="追加するカスタマイズは、明らかに、非常に単純かつ不安定です。より堅牢なソリューションを作成する場合は、サーフェス キャラクタの代替表現と、テクスチャ マップとして外部イメージを使用するというアセット管理の側面を取り入れることができます。この例は、実際のソリューションを作成する際の第一歩として使用してください。" %} - -{% include info title="注" content="パブリッシャー プラグインの作成方法の詳細については[こちら](https://developer.shotgridsoftware.com/tk-multi-publish2/)を参照してください。" %} - -#### Maya コレクタをオーバーライドする - -最初に、Publish アプリのコレクション ロジックを修正する必要があります。パブリッシャーには、アプリ内でパブリッシュおよび表示する項目を「収集」するためのロジックを定義する、コレクタ フックが設定されています。構成されたアプリの設定は、プロジェクトの環境設定内のこのファイルに含まれています。 - -**`env/includes/settings/tk-multi-publish2.yml`** - -このファイルでは、すべてのアーティスト環境内での Publish アプリの使用方法を定義します。ファイルを開き、**Maya** セクション、特に**アセット ステップ**の設定を検索します。これは、次のようになります。 - -{% include figure src="./images/tutorial/image_26.png" %} - -コレクタの設定は、パブリッシャーの収集ロジックが配置されるフックを定義します。既定では、値は次のようになります。 - -**`collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py"`** - -この定義には 2 つのファイルが含まれます。フックの設定に複数のファイルが表示されている場合は、フックが継承されています。最初のファイルには、インストールされた Publish アプリのフック フォルダに対して評価する **`{self}`** トークンが含まれています。2 番目のファイルには、現在のエンジン(この場合はインストールされた Maya エンジン)のフック フォルダに対して評価する **`{engine}`** トークンが含まれています。要約すると、この値は,Maya 固有のコレクタが Publish アプリのコレクタを継承することを示します。これは、パブリッシャー設定の一般的なパターンです。Publish アプリのコレクタ フックには、実行中の DCC に関係なく、便利なロジックが含まれているためです。DCC 固有のロジックは、この基本ロジックから継承され、現在のセッションに固有の項目を収集するように拡張されます。 - -{% include info title="注" content="アセットのステップ環境のコレクタ設定のみが変更されているため、ショット ステップなどの他のコンテキストで作業しているアーティストには、修正が認識されません。このようなアーティストは、付属している既定の Maya コレクタを使用し続けます。" %} - -「**環境設定**」セクションでは、フックの引き継ぎ方法について学習しました。カスタマイズ プロセスを開始するには、まず、設定内の Maya エンジンのコレクタ フックを引き継ぎます。 - -{% include figure src="./images/tutorial/image_27.png" %} - -上図に、このための方法を示します。まず、プロジェクト設定の **hooks** フォルダ内にフォルダ構成を作成します。こうすると、後で他の DCC に合わせて同じフックをオーバーライドできるため、コレクタ プラグインに名前空間が提供されます。次に、インストール フォルダから新しいフック フォルダ構造に Maya エンジンのコレクタフックをコピーします。これで、設定内に、次のパスを持つ Maya コレクタのコピーが作成されました。 - -**`config/hooks/tk-multi-publish2/maya/collector.py`** - -次に、新しいフックの場所を指すように、publish2 設定ファイルを更新します。コレクタ設定に、この値が含まれるようになりました。 - -**`collector: "{self}/collector.py:{config}/tk-multi-publish2/maya/collector.py"`** - -**`{config}`** トークンをメモします。このパスは、プロジェクト設定内のフック フォルダに解決されるようになりました。コレクタの新しいコピーは、アプリ自体によって定義されたコレクタから継承されます。 - -{% include info title="注" content="この時点でパブリッシュする場合、パブリッシュ ロジックは新しい場所から単にコピーおよび参照されているコレクタとまったく同じになります。" %} - -推奨 IDE またはテキスト エディタでコレクタのコピーを開いて、**`process_current_session`** メソッドを特定する必要があります。このメソッドは、現在の DCC セッション内のすべてのパブリッシュ項目を収集します。新しいパブリッシュ タイプが収集されるため、このメソッドの下部に移動して、以下の行を追加します。 - -**`self._collect_meshes(item)`** - -これが、現在のセッションにあるすべてのメッシュを収集する際に追加される、新しいメソッドです。このメソッドは、(後で作成される)シェーダ パブリック プラグインが作用するメッシュ項目を作成します。渡される項目は、メッシュ項目の親となるセッション項目です。 - -{% include info title="注" content="これは、既存のパブリッシュ プラグインを変更するための、対象が非常に限定されたアプローチです。パブリッシャーの構造およびそのすべての移動パーツを詳しく調べるには、[開発者向けドキュメント](http://developer.shotgridsoftware.com/tk-multi-publish2/)を参照してください。" %} - -ここでは、ファイルの末尾に、次の新しいメソッド定義を追加します。 - -```python - def _collect_meshes(self, parent_item): - """ - Collect mesh definitions and create publish items for them. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "mesh.png" - ) - - # iterate over all top-level transforms and create mesh items - # for any mesh. - for object in cmds.ls(assemblies=True): - - if not cmds.ls(object, dag=True, type="mesh"): - # ignore non-meshes - continue - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.mesh) that will be - # used by an associated shader publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name (the group name). In the future, other publish - # plugins might attach to these mesh items to publish other things - mesh_item = parent_item.create_item( - "maya.session.mesh", - "Mesh", - object - ) - - # set the icon for the item - mesh_item.set_icon_from_path(icon_path) - - # finally, add information to the mesh item that can be used - # by the publish plugin to identify and export it properly - mesh_item.properties["object"] = object -``` - -コードにはコメントが付いていて、実行される機能を把握できるようになっています。重要なのは、現在のセッション内のいずれかの最上位メッシュに対して、メッシュ項目を収集するためのロジックが追加されたことです。ただし、この時点でパブリッシャーを実行する場合は、項目ツリーにメッシュ項目が表示されません。これは、これらに作用するパブリッシュ プラグインが定義されていないためです。次に、これらのメッシュ項目にアタッチされ、下流工程で使用できるようにこれらのパブリッシュを処理する、新しいシェーダ パブリッシュ プラグインを記述します。 - -{% include info title="注" content="上記のコードに、メッシュ項目のアイコンを設定するための呼び出しが含まれる可能性があります。このため、指定したパスの設定にアイコンを追加する必要があります。" %} - -**`config/hooks/tk-multi-publish2/icons/mesh.png`** - -#### シェーダ パブリッシュ プラグインを作成する - -次の手順では、新たに収集されたメッシュ項目を、メッシュのシェーダをディスクに書き出してパブリッシュできるパブリッシュ プラグインに接続します。このためには、新しいパブリッシュ プラグインを作成する必要があります。[このリンクに従ってこのフックのソース コードを特定し](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_shader_network.py)、**`hooks/tk-multi-publish2/maya`** フォルダに保存して、**`publish_shader_network.py`** という名前を付けます。 - -{% include info title="注" content="このプラグインには、Toolkit プラットフォームおよびパブリッシュ コードを初めて使用する場合に使用するコードが多数含まれています。今のところ、これについて悩む必要はありませんこのチュートリアルの進行状況や、パブリッシャーの機能に対する理解度に応じて行われる操作については、時間をかけて調査し、内容を理解するようにしてください。今は、ファイルを作成し、ファイルの目的が、シェーダ ネットワークのディスクへの書き込みを処理することであることを理解しておきます。" %} - -シェーダをパブリッシュできるようになる前に行う最後のステップでは、新しいシェーダ パブリッシュ プラグインで定義されたテンプレートおよび設定を追加します。**`settings`** プロパティに、このプラグインで定義された設定が表示されます。 - -```python - @property - def settings(self): - "”” … "”” - - # inherit the settings from the base publish plugin - plugin_settings = super(MayaShaderPublishPlugin, self).settings or {} - - # settings specific to this class - shader_publish_settings = { - "Publish Template": { - "type": "template", - "default": None, - "description": "Template path for published shader networks. " - "Should correspond to a template defined in " - "templates.yml.", - } - } - - # update the base settings - plugin_settings.update(shader_publish_settings) - - return plugin_settings -``` - - -このメソッドは、プラグインの設定インタフェースを定義します。シェーダ ネットワークをディスクに書き込む場所をプラグインに指示するには、**「パブリッシュ テンプレート」**の設定が必要です。パブリッシャーの設定に新しいパブリッシュ プラグインを追加して、テンプレートの設定を含めます。これは、コレクタを引き継ぐ前に修正されたのと同じ設定ブロックです。これは、次のファイルで定義されます。 - -**`env/includes/settings/tk-multi-publish2.yml`** - -設定は次のようになります。 - -{% include figure src="./images/tutorial/image_28.png" %} - -最後に、設定内で新しい **`maya_shader_network_publish`** テンプレートを定義する必要があります。このファイルを編集して、これを追加します。 - -**`config/core/templates.yml`** - -アセット関連の Maya テンプレートが定義されているセクションを見つけて、新しいテンプレート定義を追加します。定義は次のようになります。 - -{% include figure src="./images/tutorial/image_29.png" %} - -これで終了です。シェーダをパブリッシュするメッシュを検索するように、Publish アプリのコレクタ フックが上書きされました。収集されたシェーダ項目にアタッチする新しいパブリッシュ プラグインが実装されました。また、シェーダ ネットワークがディスクに書き込まれる新しいパブリッシュ テンプレートが定義および設定されました。 - -{% include info title="注" content="設定のカスタマイズ中に Maya を終了しても、問題はありません。Maya を単に再起動し、[File Open]ダイアログ ボックスを使用してサーフェス作成作業ファイルを開くことができます。次の再ロード ステップはスキップできます。" %} - -##### {% include product %} 統合を再ロードする - -カスタマイズを試すには、Maya セッション内で統合を再ロードする必要があります。このためには、**[{% include product %}] > [Task Name] > [Work Area Info…]**メニュー アクションをクリックします。 - -{% include figure src="./images/tutorial/image_30.png" %} - -この操作を行うと、現在のコンテキストに関する情報を示す Work Area Info アプリが起動します。設定を変更しながら統合を再ロードするための便利なボタンもあります。このボタンをクリックして、アプリおよびエンジンを再ロードしてから、ダイアログ ボックスを閉じます。 - -{% include figure src="./images/tutorial/image_31.png" %} - -### シェーダ ネットワークをパブリッシュする - -これで、プロジェクトの設定を変更した場合の結果を確認できるようになりました。{% include product %} メニューから Publish アプリを起動します。**Publish Shaders** プラグインがアタッチされている、収集されたティーポット メッシュ項目が表示されます。 - -{% include figure src="./images/tutorial/image_32.png" %} - -作業の説明を入力し、サーフェス ティーポットのサムネイルを取り込んで、パブリッシュされたファイルに関連付けます。最後に、パブリッシュをクリックして、ティーポット シェーダをディスクに書き出して、このファイルをパブリッシュとして {% include product %} に登録します。完了すると、セッションのパブリッシュ プラグインによって、作業ファイルが次に使用可能なバージョンに自動的に保存されます。これが、{% include product %} 統合でサポートされているすべての DCC の既定の動作です。 - - -これで、{% include product %} 内のティーポット アセットを参照して、すべてが予測どおりに機能したことを確認できるようになりました。 - -{% include figure src="./images/tutorial/image_33.png" %} - -お疲れ様でした。パイプラインが正常にカスタマイズされ、ティーポットのシェーダがパブリッシュされました。学習した内容を使用して、テーブル プロップのサーフェス作成タスクからシェーダをパブリッシュできるかどうかを確認します。結果は以下のようになります。 - -{% include figure src="./images/tutorial/image_34.png" %} - -次に、リギング ワークフローについて説明します。 - -## リギング ワークフロー - -現在、{% include product %} に付属している Workfile アプリおよび Publish アプリを使用すると、作業ファイルを開く(または作成する)、保存する、パブリッシュする操作を極めて快適に行うことができます。また、上流工程からパブリッシュをロードする Loader アプリを使用する機会もありました。学習した内容を使用して、次のタスクを完了します。 - -* {% include product %} Desktop から Maya を起動する - -* ティーポット アセットのリギング ステップで、新しい作業ファイルを作成する - -* モデリング ステップでティーポット Alembic キャッシュ パブリッシュをロード(参照)する - -* 開け閉めするティーポットのふたをリギングする(単純にする) - -* ティーポットのふたを保存してパブリッシュする - -最終的には、{% include product %} で次のようになります。 - -{% include figure src="./images/tutorial/image_35.png" %} - -次に、アーティストが上流工程の変更をワークフロー内でどのように処理するのかを見てみましょうモデリング作業ファイルを開いて、ティーポット モデルに何らかの変更を加えます。次に、更新された作業をパブリッシュします。結果は次のようになります。 - -{% include figure src="./images/tutorial/image_36.png" %} - -ティーポットのリギング ステップで、作業ファイルを再び開きます(**[{% include product %}] > [File Open…]**を使用)。**[{% include product %}] > [Scene Breakdown…]**メニュー アクションを起動します。この操作を行うと、Breakdown アプリが起動し、作業ファイル内で参照した上流工程のパブリッシュがすべて表示されます。この場合は、上流工程のティーポット モデルのみがあります。次のように表示されます。 - -{% include figure src="./images/tutorial/image_37.png" width="400px" %} - -アプリは参照ごとに 2 つのインジケータのいずれかを表示します。参照されたパブリッシュが最新バージョンであることを示す緑のチェックと、新しいパブリッシュが公開されていることを示す赤の「x」です。この場合は、新しいパブリッシュが公開されていることがわかります。 - -参照されたティーポット Alembic キャッシュ項目を選択して(または下部の**[Select All Red]**ボタンをクリックして)、**[Update Selected]**をクリックします。 - -Maya 参照がティーポット Alembic キャッシュの最新の繰り返しに更新されます。ファイル内に新しいモデルが含まれています。 - -{% include figure src="./images/tutorial/image_40.png" width="400px" %} - -新しいモデルについて考慮する必要があるリギング ステップを調整して、変更をパブリッシュします。 - -次のセクションでは、ショットのコンテキスト内で作業します。次に、ショットのレイアウトについて説明します。 - -## レイアウト ワークフロー - -このセクションでは、プロジェクトのために作成したショット内で作業を開始します。以前のセクションで作成したアセットをロードし、ショットを作成します。次に、パブリッシャーを再びカスタマイズし、今回はショット カメラをパブリッシュします。 - -まず、以前のセクションで学習した内容に基づいて、次のタスクを完了します。 - -* {% include product %} Desktop から Maya を起動する - -* ショットのレイアウト ステップで新しい作業ファイルを作成する(ヒント: ローダー内の[Shots]タブを使用する) - -* ティーポットのリギング ステップでティーポットのパブリッシュをロード(参照)する - -* テーブルのモデル ステップでティーポットのパブリッシュをロード(参照)する - -ここで、テーブルに置かれたティーポットを含む、単純なシーンをブロックします。**camMain** という名前のシーンにカメラを追加して、いくつかのフレームをアニメートし、ショットのカメラ移動を作成します。 - -{% include figure src="./images/tutorial/image_41.gif" %} - -ショットのレイアウトに問題がなければ、**[{% include product %}] > [File Save...]**メニュー アクションを使用してファイルを保存します。先に進んで、この時点でパブリッシュする場合は、Maya セッション全体のみがパブリッシュ可能な項目として表示されます。 - -簡単なカスタマイズを追加する場合、およびパイプラインの柔軟性を高めるためにカスタマイズする場合は、他のパッケージに簡単に読み込むことができるファイル形式にスタンドアロン カメラをパブリッシュします。これにより、カメラを一度作成すれば(通常はレイアウト内)、アニメーション、ライト、および合成など、他のすべてのパイプラインの手順でこのカメラを直接使用できるようになります。 - -### カメラを収集する - -シェーダのパブリッシュと同様に、最初にコレクタ フックをカスタマイズします。Maya のコレクタ フックをすでに引き継いで、アセット ステップで設定してあります。この設定を、ショットのパイプライン ステップに合わせて更新する必要があります。このためには、パブリッシャーの設定ファイルを修正し、Maya ショット のステップ コレクタ設定を編集します。 - -{% include figure src="./images/tutorial/image_42.png" %} - -ショットのコンテキスト内でタスクを実行している場合は、カスタム コレクタ ロジックが実行されます。次のステップでは、カスタムのカメラ コレクション ロジックを追加します。 - -カスタム コレクタ フックを開き、サーフェス作成セクションでメッシュを収集するための呼び出しを追加した **`process_current_session`** メソッドの最下部に、次のメソッド呼び出しを追加します。 - -**`self._collect_cameras(item)`** - -次に、ファイルの末尾にメソッド自体を追加します。 - -```python - def _collect_cameras(self, parent_item): - """ - Creates items for each camera in the session. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "camera.png" - ) - - # iterate over each camera and create an item for it - for camera_shape in cmds.ls(cameras=True): - - # try to determine the camera display name - try: - camera_name = cmds.listRelatives(camera_shape, parent=True)[0] - except Exception: - # could not determine the name, just use the shape - camera_name = camera_shape - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.camera) that will be - # used by an associated camera publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name. In the future, other publish plugins might attach to - # these camera items to perform other actions - cam_item = parent_item.create_item( - "maya.session.camera", - "Camera", - camera_name - ) - - # set the icon for the item - cam_item.set_icon_from_path(icon_path) - - # store the camera name so that any attached plugin knows which - # camera this item represents! - cam_item.properties["camera_name"] = camera_name - cam_item.properties["camera_shape"] = camera_shape -``` - -ここでも、コードにはコメントが付いていて、実行される機能を把握できるようになっています。現在のセッション内のすべてのカメラに対してカメラ項目を収集するロジックを追加しました。ただし、以前と同様に、この時点でパブリッシャーを実行する場合は、項目ツリーにカメラ項目が表示されません。これは、これらに作用するパブリッシュ プラグインが定義されていないためです。次に、これらの項目にアタッチされ、下流工程で使用できるようにこれらのパブリッシュを処理する、カメラ パブリッシュ プラグインを記述します。 - -{% include info title="注" content="上記のコード内に、カメラ項目のアイコンを設定するための呼び出しが含まれる可能性があります。このため、指定したパスの設定にアイコンを追加する必要があります。" %} - -**`config/hooks/tk-multi-publish2/icons/camera.png`** - -### カスタム カメラ パブリッシュ プラグイン - -次の手順では、新たに収集されたメッシュ項目を、メッシュのシェーダをディスクに書き出してパブリッシュできるパブリッシュ プラグインに接続します。このためには、新しいパブリッシュ プラグインを作成する必要があります。[このリンクに従ってこのフックのソース コードを特定し](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_camera.py)、**`hooks/tk-multi-publish2/maya`** フォルダに保存して、**`publish_camera.py`** という名前を付けます。 - -### カメラ パブリッシュの設定 - -最後に、ショット ステップで Publish アプリの設定を更新する必要があります。設定ファイルを編集して、新しいプラグインを追加します。 - -**`env/includes/settings/tk-multi-publish2.yml`** - -設定は次のようになります。 - -{% include figure src="./images/tutorial/image_43.png" %} - -新しいプラグインの **`settings`** メソッドで定義されているとおりに、ファイルに 2 つの設定が追加されています。シェーダ プラグインと同様に**[Publish Template]**設定があり、そこでカメラ ファイルが書き込まれる場所を定義できます。カメラの設定は、プラグインが作用するカメラを制御する、カメラに関する文字列のリストのことです。何らかのタイプのカメラ命名規則があり、この設定によって、規則に合わないカメラのパブリッシュ項目がユーザに表示されなくなると予測されます。上図では、パブリッシュ用の **`camMain`** カメラのみが表示されます。**`cam*`** などのワイルドカード パターンを使用した場合も、追加したプラグインの実装は機能します。 - -変更をテストする前の最終ステップでは、新しいカメラ パブリッシュ テンプレートの定義を追加します。**`config/core/templates.yml`** ファイルを編集し、Maya ショット テンプレートのセクションにテンプレートの定義を追加します。 - -{% include figure src="./images/tutorial/image_44.png" %} - -この時点で、新しいプラグインを使用してカメラをパブリッシュする準備が整っています。**Work Area Info** アプリを使用して統合を再ロードしてから、パブリッシャーを起動します。 - -{% include figure src="./images/tutorial/image_45.png" %} - -図に示されているように、新しいカメラ項目が収集されて、パブリッシュ プラグインがアタッチされます。先に進んで、**[Publish]**をクリックしてディスクにカメラを書き込み、ShotGrid に登録します。 - -{% include info title="注" content="Alembic 書き出しと同様、カメラのパブリッシュ プラグインには FBX 書き出しプラグインをロードする必要があります。カメラのパブリッシュ プラグイン項目が表示されない場合は、FBX プラグインがロードされていることを確認し、パブリッシャを再起動してください。"%} - -{% include product %} では次のように表示されます。 - -{% include figure src="./images/tutorial/image_46.png" %} - -これで操作は終了しました。次に、アニメーションについて説明します。 - -## アニメーション ワークフロー - -ここまでの手順で、Publish アプリのみをカスタマイズすることにより、カスタム ファイル タイプ/コンテンツをディスクに書き込み、他のパイプライン ステップにこれらを共有しました。このセクションでは、Loader アプリの設定をカスタマイズし、ラウンド トリップを完了してカスタム パブリッシュの読み込み/参照を実行できるようにします。 - -以前のセクションで学習した内容に基づいて、次の作業を完了します。 - -* {% include product %} Desktop から Maya を起動する - -* ショットのアニメーション ステップで新しい作業ファイルを作成する - -* ショットのレイアウト ステップで Maya セッションのパブリッシュをロード(参照)する - -{% include info title="注" content=" レイアウト セッションのパブリッシュ ファイルに、このカメラが含まれていました。堅牢なパイプラインでは、カメラを明示的に非表示にするか、またはセッションのパブリッシュから除外して、独立したカメラ パブリッシュ ファイルを実際のカメラ定義の 1つに設定することができます。先に進んで、参照によって含まれているカメラを削除または非表示にします。" %} - -### カスタム カメラ ローダー アクション - -カメラのパブリッシュを読み込む/参照するように Loader アプリをカスタマイズするには、アプリの設定ファイルを編集する必要があります。設定内のファイルのパスは、次のようになります。 - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -Maya のアプリが設定されているセクションを見つけて、**`action_mappings`** 設定のアクション リストに次の行を追加します。 - -**`FBX Camera: [reference, import]`** - -カスタム カメラ パブリッシュ プラグインでは、カメラをディスクに書き込む際に Maya の **`FBXExport`** mel コマンドを使用しました。{% include product %} にファイルを登録する際に使用したパブリッシュ タイプは **`FBX Camera`** でした。設定に追加された行は、ローダーに対して、タイプ **`FBX Camera`** の任意のパブリッシュの **`reference`** および **`import`** アクションを表示するように指示します。これらのアクションは、Loader アプリの [tk-maya-actions.py](https://github.com/shotgunsoftware/tk-multi-loader2/blob/master/hooks/tk-maya_actions.py) フックで定義されています。これらのアクションは、Maya が参照できる、または読み込むことができる任意のファイル タイプを処理するように実装されています。カスタム プラグインによって生成された **`.fbx`** ファイルはこのカテゴリに分類されるため、これが、パブリッシュされたカメラをロードできるようにするために必要な唯一の変更になります。 - -アプリの設定は次のようになります。 - -{% include figure src="./images/tutorial/image_47.png" width="400px" %} - -ここで、**Work Area Info** アプリを使用して統合を再ロードし、新しい設定を選択してから、レイアウト内のパブリッシュされたカメラを参照します。 - -{% include figure src="./images/tutorial/image_48.png" %} - -新しいパブリッシュ タイプでフィルタしてから、カメラの参照を作成します。ローダーを閉じると、新たな参照カメラを使用して、前のセクションで作成したカメラの移動を再生できるようになります。 - -次に、何らかの動作を行うようにティーポット モデルをアニメートします(単純にします)。 - -{% include figure src="./images/tutorial/image_49.gif" %} - -アニメーションがうまく作成されたら、以前のセクションと同じように作業ファイルを保存してパブリッシュします。 - -次に、照明について説明します。 - -## 照明ワークフロー - -このセクションでは、以前のセクションでパブリッシュしたすべてのものを組み合わせて、ショットをレンダリングします。このためには、ティーポット アセットのサーフェス作成ステップでパブリッシュ済みのシェーダをロードするように Loader アプリをカスタマイズします。 - -最初に、以前のセクションで学習した内容に基づいて、次の作業を完了します。 - -* {% include product %} Desktop から Maya を起動する - -* ショットの照明ステップで新しい作業ファイルを作成する - -* ショットの照明ステップで Maya セッションのパブリッシュをロード(参照)する - -* ショットのレイアウト ステップでカメラ パブリッシュをロード(参照)する - -### カスタム シェーダのローダー アクション - -サーフェス作成手順でパブリッシュしたシェーダをロードするには、前のセクションで説明した **`tk-maya-actions.py`** フックを引き継ぐ必要があります。インストール場所から設定にこのフックをコピーします。 - -{% include figure src="./images/tutorial/image_50.png" %} - -このフックは、指定されたパブリッシュに対して実行できるアクションのリストを生成します。Loader アプリは、付属の統合でサポートされている DCC ごとに、このフックの異なるバージョンを定義します。 - -サーフェス作成ワークフロー セクションでパブリッシュされたシェーダは単なる Maya ファイルであるため、書き出されたカメラと同様に、既存のロジックを変更しなくても、ローダーから参照することができます。必要な変更は、シェーダをファイル内で参照した後に、シェーダを適切なメッシュに接続するための新しいロジックをアクション フックに追加することだけです。 - -アクション フックの末尾(このクラスの外部)に次のメソッドを追加します。 - -```python - def _hookup_shaders(reference_node): - """ - Reconnects published shaders to the corresponding mesh. - :return: - """ - - # find all shader hookup script nodes and extract the mesh object info - hookup_prefix = "SHADER_HOOKUP_" - shader_hookups = {} - for node in cmds.ls(type="script"): - node_parts = node.split(":") - node_base = node_parts[-1] - node_namespace = ":".join(node_parts[:-1]) - if not node_base.startswith(hookup_prefix): - continue - obj_pattern = node_base.replace(hookup_prefix, "") + "\d*" - obj_pattern = "^" + obj_pattern + "$" - shader = cmds.scriptNode(node, query=True, beforeScript=True) - shader_hookups[obj_pattern] = node_namespace + ":" + shader - - # if the object name matches an object in the file, connect the shaders - for node in (cmds.ls(references=True, transforms=True) or []): - for (obj_pattern, shader) in shader_hookups.iteritems(): - # get rid of namespacing - node_base = node.split(":")[-1] - if re.match(obj_pattern, node_base, re.IGNORECASE): - # assign the shader to the object - cmds.select(node, replace=True) - cmds.hyperShade(assign=shader) -``` - - -ここで、**`_create_reference`** メソッドの末尾に次の 2 行を追加して、シェーダ フック ロジックを呼び出します。 - -```python - reference_node = cmds.referenceQuery(path, referenceNode=True) - _hookup_shaders(reference_node) -``` - - -新しい参照が作成されると、必ずコードが実行されるため、ファイル内にシェーダが既に存在する場合に新しいジオメトリを参照すると、シェーダが割り当てられます。同様に、ジオメトリが既に存在するときにシェーダを参照した場合は、コードが機能します。 - -{% include info title="注" content="このフック ロジックは非常に力任せであるため、プロダクション対応パイプラインを実装するときに考慮する必要がある名前空間やその他の Maya 関連の微妙な動作は、適切に処理されません。" %} - -最後に、次のファイルを編集して、ショットのローダー設定が新しいフックを指すように指定します。 - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -それと同時に、Maya シェーダ ネットワーク パブリッシュ タイプの参照アクションへの関連付けも行います。ローダーの設定は次のようになります。 - -{% include figure src="./images/tutorial/image_51.png" %} - -ここで、**Work Area Info** アプリを使用して統合を再ロードし、新しい設定を選択してから、サーフェス内のパブリッシュされたシェーダを参照します。 - -ティーポット シェーダ ネットワーク パブリッシュに対する参照を作成します。 - -{% include figure src="./images/tutorial/image_52.png" %} - -ここで、テーブル シェーダ ネットワークをロードします。Maya でハードウェア テクスチャリングが有効になっている場合は、アニメーション ステップ中にシェーダがメッシュ参照に自動的に接続されています。 - -{% include figure src="./images/tutorial/image_53.png" %} - -ここで、シーンにライトをいくつか追加します(単純にします)。 - -{% include figure src="./images/tutorial/image_54.png" %} - -### Maya レンダーをパブリッシュする - -ショットをディスクにレンダリングします。 - -{% include figure src="./images/tutorial/image_54_5.gif" %} - -{% include info title="注" content="ご覧のとおり、ティーポットとテーブル アセットのサーフェスには共に問題があります。このチュートリアルでは、これらが意図的かつ芸術的な選択肢であると想定します。これらの問題を解決する場合は、これらのアセットのサーフェス作成作業ファイルをロードして、シェーダを調整し、再びパブリッシュしてください。この操作を行う場合は、照明作業ファイル内の参照を忘れずに更新して、再度レンダリングしてください。これらの手順を実行する場合は、参照を再ロードした後に、詳細情報アプリが更新済みのシェーダを再接続しないことがあります。シェーダの参照をフックするようにローダーを変更した経験に基づいて、ユーザは詳細情報アプリのシーン操作フックを更新し、必要なロジックを追加できるようになっています。ヒント: [このファイル](https://github.com/shotgunsoftware/tk-multi-breakdown/blob/master/hooks/tk-maya_scene_operations.py#L69)内の update メソッドを参照してください。" %} - -付属の {% include product %} 統合は、ファイル内で定義されたレンダリング レイヤを調べて、イメージ シーケンスを収集します。レンダリングが完了したら、パブリッシャーを起動します。レンダリングされたシーケンスがツリー内の項目として表示されます。 - -{% include figure src="./images/tutorial/image_55.png" %} - -先に進んで、セッションおよびレンダリングされたイメージ ファイル シーケンスをパブリッシュします。{% include product %} では次のように表示されます。 - -{% include figure src="./images/tutorial/image_56.png" %} - -次に、コンポジットについて説明します。 - -## コンポジット ワークフロー - -チュートリアルのこの最終セクションでは、Nuke が提供する既定の統合をいくつか紹介します。以前のセクションで参照したアプリの他に、ShotGrid 対応書き込みノードや、レビューのためにレンダーを他のユーザにすばやく送信するためのアプリについて学習します。 - -最初に、次に示す手順を行って作業ファイルを準備します。 - -* {% include product %} Desktop から Nuke を起動する - -* Maya と同様に、[{% include product %}] > [File Open]メニュー アクションを使用して、ショットのコンポジット ステップ内で新しい作業ファイルを作成します。 - - -Loader アプリを使用して前のセクションでレンダリングおよびパブリッシュしたイメージ シーケンスをロードします。 - -{% include figure src="./images/tutorial/image_57.png" %} - -**`Image`** および **`Rendered Image`** パブリッシュ タイプに対して定義されているアクションは、**ノードの作成と読み取り**です(タイプはファイル拡張子によって異なります)。このアクションをクリックして、Nuke セッション内で新しい **`Read`** ノードを作成します。 - -Nuke プロジェクト設定の出力フォーマットが、レンダリングされたイメージと一致することを確認します。バックグラウンドとして使用する一定のカラーを作成して、読み取りノードと結合します。ビューアをアタッチしてコンポジットを表示します。 - -{% include figure src="./images/tutorial/image_58.png" %} - -コンポジットに問題がなければ、**[{% include product %}] > [File Save…]**メニュー アクションを使用して、作業ファイルを保存します。 - -次に、Nuke の左側メニューで {% include product %} のロゴをクリックします。このメニューの ShotGrid 対応書き込みノードの 1 つをクリックします。 - -{% include figure src="./images/tutorial/image_59.png" width="400px" %} - -{% include product %} Write Node アプリは、現在の {% include product %} のコンテキストに基づいて出力パスを自動的に評価する組み込みの Nuke 書き込みノードの上に、レイヤを配置します。 - -{% include figure src="./images/tutorial/image_60.png" %} - -ディスクにイメージ フレームをレンダリングします。Nuke セッションをパブリッシュして、レンダリングされたイメージに作業ファイルを関連付けられるようになりました。既定では、パブリッシャーはレンダリングされたフレームを収集し、{% include product %} にフレームを登録するプラグインをアタッチします。2 番目のプラグインは、レビュー提出と呼ばれる、バックグラウンドで実行される統合方法を使用して、フレームをアップロードします。このアプリは Nuke を使用して QuickTime を生成します。生成された QuickTime は、アップロードしたり、レビューしたりできます。 - -{% include figure src="./images/tutorial/image_61.png" %} - -もう 1 つの便利な統合は、Quick Review アプリです。これは、QuickTime をすばやく生成して、レビューのために {% include product %} にアップロードする出力ノードです。このアプリは、左側メニュー内の、{% include product %} 書き込みノードの横にあります。 - -{% include figure src="./images/tutorial/image_62.png" width="400px" %} - -Quick Review ノードを作成してから、[Upload]ボタンをクリックして、ディスクへの入力のレンダリング、QuickTime の生成、レビューのための {% include product %} への結果のアップロードを行います。フレームを提出する前に、いくつかの標準オプションが表示されます。 - -{% include figure src="./images/tutorial/image_63.png" %} - -{% include product %} の[メディア] (Media)タブを調べて、アップロードされた QuickTime を両方とも確認します。 - -{% include figure src="./images/tutorial/image_64.png" %} - -{% include product %} でメディアをレビューする方法の詳細については、[公式のドキュメント](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_review_approval_html)を参照してください。 - -# 結論 - -おめでとうございます。これで完了です。このチュートリアルが、{% include product %} 統合を使用して独自のカスタム パイプラインを作成する際の第一歩になるはずです。スタジオ固有のニーズに合わせて既存の Shotgun アプリを拡張する方法について理解できたことでしょう。 - -Toolkit に関する質問がある場合や、他のスタジオで Toolkit がどのように使用されているかを知りたい場合は、[shotgun-dev Google Group](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=ja#!forum/shotgun-dev) にアクセスしてください。常に最新の投稿を読むことができるよう、サブスクライプすることをお勧めします。 - -機能やワークフローを既定の統合で実現できないと感じた場合は、独自のアプリをいつでも作成できます。初めてアプリを作成する場合は、[こちら](https://developer.shotgridsoftware.com/ja/2e5ed7bb/)を参照してください。 - -このチュートリアルの詳細または {% include product %} や Toolkit プラットフォームの概要に関して質問がある場合は、[コミュニティにアクセス](https://community.shotgridsoftware.com/c/pipeline/6)してください。 diff --git a/docs/ja/guides/review.md b/docs/ja/guides/review.md deleted file mode 100644 index 67459ab43..000000000 --- a/docs/ja/guides/review.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: レビュー -pagename: review -lang: ja ---- - -# レビュー - -RV を最大限に活用する方法について説明します。RV とは、受賞歴のある一連のデジタル レビュー ツールのことで、コラボレーション ツールや多数の高度な統合機能を使用してデジタル メディアの再生、比較、変換を行うことができます。 - -ノード グラフ、カスタム シェーダ、イベント処理、およびネットワークの詳細については、RV のリファレンス マニュアルを参照してください。 - -NVIDIA SDI ビデオ デバイスをプレゼンテーション モード デバイスとして実装する方法については、RV-SDI マニュアルを参照してください。 - -Maya および Nuke、さらには {% include product %} 自身とのシームレスなワークフローについては、統合パッケージをご覧ください。 diff --git a/docs/ja/guides/review/integrations.md b/docs/ja/guides/review/integrations.md deleted file mode 100644 index a0790228c..000000000 --- a/docs/ja/guides/review/integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 統合 -pagename: rv-integrations -lang: ja ---- - -# RV の統合 - -{% include product %} Integration、Screening Room for RV、{% include product %} Review など、機能セットに違いがあるいくつかの {% include product %} 統合に加え、RV には Nuke および Maya 向けの統合ツールが付属しています。 - -以下の最初の 2 つのドキュメントでは、Nuke と Maya の統合のインストールとワークフローについて説明し、最後の 2 つのドキュメントではさまざまな {% include product %} の統合について説明します。どちらを使用するかについてはこれらのドキュメントを参照してください。 diff --git a/docs/ja/guides/review/rv-developer-overview.md b/docs/ja/guides/review/rv-developer-overview.md deleted file mode 100644 index 796356155..000000000 --- a/docs/ja/guides/review/rv-developer-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: RV 開発の概要 -pagename: rv-developer-overview -lang: ja ---- - -# RV 開発の概要 - -RV コア リファレンス ------------------ - -### ユーザ マニュアル - -ユーザ マニュアルには、RV と RVIO の使用を開始するにあたって必要な基本情報、そしてコマンドラインと GUI の使用方法についての詳細が記載されています。また、パフォーマンスを最大化するのに役立つインストール時の注意事項とヒント、および LUT、RV ピクセル パイプライン、立体 3D、パッケージによる RV の拡張、RV とのネットワーク、そして RVLS メディア リスティング ユーティリティに関する詳細な情報が含まれています。 - -* [RV ユーザ マニュアル](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_manuals_rv_user_manual_html) -* [質問とトラブルシューティングのフォーラム](https://community.shotgridsoftware.com/c/rv/14) - -### テクニカル リファレンス マニュアル - -リファレンス マニュアルは、RV をカスタマイズする方法を学ぶための基本情報を提供します。ここには、RV のパッケージ システムと Mu スクリプティング機能の概要が含まれています。ホット キーの変更、メニューの追加、カラー マネジメントのカスタマイズ、新しいウィジェットの作成、RV とパイプラインの統合についての知識が必要であれば、リファレンス マニュアルがその出発点になります。 - -* [テクニカル リファレンス マニュアル](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_manuals_rv_reference_manual_html) -* [RV 拡張フォーラム](https://community.shotgridsoftware.com/c/rv/14) - -### RV-SDI マニュアル - -このマニュアルでは、NVIDIA SDI ビデオ デバイスをプレゼンテーション モード デバイスとして Tweak で実装する方法について説明します。プレゼンテーション モードと、それが RV とどのように関連しているのかについての詳細は、RV ユーザ マニュアルを参照してください。RV-SDI を使用するには、「rv」(または「rv.exe」)実行ファイルを実行します。「rvsdi」ライセンスが必要です。 - -* [RV-SDI マニュアル](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_manuals_rv_rv_sdi_manual_html) - - - -RV の統合 --------------- - -### RV/Nuke の統合 - -RV に Nuke 統合ツールが付属するようになりました。このドキュメントでは、個別のセットアップまたはシステム全体のセットアップのインストール方法について説明し、RV/Nuke のワークフロー、ツール、概念、および使用法を示します。 - -* [RV-Nuke の統合ドキュメント](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_knowledge_base_rv_nuke_integration_html) - -### RV/Maya の統合 - -RV に Maya 統合機能が付属するようになりました。このドキュメントでは、RV/Maya パッケージのインストール方法について説明し、RV/Maya ワークフロー、プレイブラストを比較して整理する方法、およびレンダリングして編集、A/B 比較、レイアウトを行う方法を示します。 - -* [RV-Maya の統合ドキュメント](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_RV_rv_manuals_rv_maya_integration_html) diff --git a/docs/ja/guides/webhooks.md b/docs/ja/guides/webhooks.md deleted file mode 100644 index a41460ddf..000000000 --- a/docs/ja/guides/webhooks.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -layout: default -title: Webhook -pagename: shotgun-webhooks -lang: ja ---- - -# Webhook - -{% include info title="ベータ" content="Webhook は現在ベータ版です。詳細について学習し、情報を共有するには、[Webhook コミュニティ フォーラム](https://community.shotgridsoftware.com/c/webhooks)に参加してください。" %} - -Webhook を使用すると、ユーザがコントロールしているサービスに {% include product %} で発生したイベントを通知することができます。Webhook を作成する場合は、対象となるイベントのタイプを指定し、このイベントがトリガされたときにデータを送信する URL を {% include product %} に指示します。{% include product %} で関連イベントが発生すると、そのイベントを示すデータのペイロードが Webhook の URL に送信されます。これにより、{% include product %} との統合が緊密化され、ワークフローの一部を自動化することができます。 - -## Webhook を使用する例 - -Webhook には多くの使用事例があります。このドキュメントでは役立つ事例をいくつか紹介しますが、Webhook の使用はこれらの例に限定されません。 - -### エンティティを作成するときにディスク上にディレクトリ構造を作成する - -{% include product %} で新しいエンティティを作成するときに何度も繰り返されてきたワークフローの 1 つとして、ディスク上にディレクトリ構造を作成することが挙げられます。{% include product %} で新しいショットを作成したら、作業を進めて、アーティストの作業準備が整っていることを自動的に確認できると便利です。 - -### ステータス管理の自動化 - -アニメーション チームが作業を終えたら、作業を進めて、同じショットに関する下流工程のタスクのステータスを変更し、開始できる作業が増えたことを知らせるようにしましょう。こうすることで、別の作業に割り当てられているアーティストに、準備ができていることを自動的に通知できます。 - -ステータス管理の自動化が役立つもう 1 つの例は、新しい `Note` を作成するときに、`Task` エンティティのステータス変更をトリガすることです。この方法は、アーティスト チームとプロダクション チームに、レビュー セッション後にスーパーバイザーから現在の作品を変更または修正するよう要求されたことを知らせる場合に便利です。 - -## {% include product %} のイベント デーモンではなく、Webhook を使用する場合 - -Webhook および [{% include product %} のイベント デーモン](https://github.com/shotgunsoftware/shotgunEvents/wiki) の機能は似ていますが、重要な違いがいくつかあります。イベント デーモンは、ユーザ独自のサービスを実行、監視、メンテナンスする必要があります。すべてのコードを Python で記述する必要があり、これによって {% include product %} との独自の接続を開始することが可能となります。対照的に、Webhook は複数の接続に対応し、任意のプログラム言語で記述することができます。Webhook は、[AWS Lambda](https://aws.amazon.com/jp/lambda/) などのサーバレス環境にホストしたり、[Zapier](https://zapier.com) や [IFTTT](https://ifttt.com) など、オンラインで使用可能な任意の自動化プラットフォームをトリガしたりできます。Webhook を使用できるのであれば、Webhook がお勧めのソリューションです。 - -## Webhook を作成する - -Webhook の作成を開始するには、Webhook のページに移動し、Webhook リストの上にあるボタンにナビゲートします。Webhook へのアクセスは、「[詳細設定] (Advanced) -> [Webhook を表示] (Show Webhooks)」の権限でコントロールされます。既定の管理者ロールでは有効になっています。 - -![Webhook ボタンを作成する](./images/webhooks/create_webhook_button.png) - -次に、新しい Webhook を作成するのに必要な情報を入力します。 - -![Webhook ダイアログを作成する](./images/webhooks/create_webhook_dialog.png) - -### シークレット トークン - -Webhook にシークレット トークンを割り当てる作業は省略できます。シークレット トークンを指定した場合、Webhook の URL に送信されるすべての要求はこのトークンを使用して署名されます。この要求と一緒にトークン値が送信されます(ヘッダ名は `X-SG-SIGNATURE`)。署名は HMAC および SHA1 を使用して計算され、署名されたメッセージが要求の本文(JSON 形式)になります。 - -#### ヘッダ形式 - -`=` - -#### シークレット トークンを使用する理由 - -厳密に必要なわけではありませんが、シークレット トークンを指定すると、Webhook の URL に送信されるペイロードに署名が付けられます。これにより、カスタマー サービスは、データが予測された送信元から送信されていること、および送信中にペイロードがいかなる方法でも変更されなかったことを確認できます。 - -#### 署名の検証 - -Python を使用してペイロードの署名を確認する例の 1 つを、次に示します。 - -``` ->>> import hmac ->>> import hashlib ->>> body | `' ->>> token | `mytoken' ->>> 'sha1=' + hmac.new(token, body, hashlib.sha1).hexdigest() == 'sha1=32824e0ea4b3f1ae37ba8d67ec40042f3ff02f6c' -True -``` - -### SSL 証明書を検証する - -SSL 証明書の検証機能はオプションです。Webhook の使用者 URL に対する接続のセキュリティを確保する際に役立ちます。この機能を有効にすると、Webhook の URL に配信された場合、{% include product %} は OpenSSL の証明書検証ルーチンを使用して証明書を検証します。 - -## Webhook のステータス - -Webhook はさまざまなステータスを取ることができます(健全性や、配信を引き続き受信できるかどうか)。 - -![Webhook ダイアログを作成する](./images/webhooks/webhook_selected_status.png) - -| ステータス | 例 | 説明 | -|--------|:-------:|:-----------:| -| アクティブ | ![アクティブ](./images/webhooks/webhook_status_active.png) | Webhook の動作は安定しています。過去 24 時間以内に、この Webhook の使用者 URL に対する配信が宛先に到達しなかったことはありません。 | -| 不安定 | ![不安定](./images/webhooks/webhook_status_unstable.png) | Webhook の動作は不安定です。過去 24 時間以内に、一部の配信が宛先に到達しませんでしたが、Webhook が停止していると {% include product %} が判断するには不十分です。 | -| 失敗 | ![失敗](./images/webhooks/webhook_status_failed.png) | Webhook は停止していると判断されていて、配信はこれ以上試行されません。この原因は、短期間に発生した配信失敗の数が多すぎたことです。システムは、Webhook が使用できなくなったと判断しました。**過去 24 時間以内に配信が 10 回失敗すると、Webhook に障害があると見なされます**。 | -| 無効 | ![無効](./images/webhooks/webhook_status_disabled.png) | Webhook は無効な状態です。再度有効になるまで、配信はこれ以上試行されません。 | - -## 配信 - -Webhook リスト内の Webhook を選択すると、この Webhook に行われたすべての配信が 7 日前まで遡って表示されます。 - -{% include info title="注" content="7 日前より古い配信のログは削除され、復元できません。" %} - -### 配信ステータス - -配信のステータスは、Webhook の URL に正常に配信されたかどうかを示します。 - -![配信ステータス](./images/webhooks/delivery_status.png) - -### 配信の詳細 - -配信を展開して、Webhook の URL に送信された要求およびこの要求に対する応答の詳細を表示することができます。 - -![配信の詳細](./images/webhooks/delivery_details.png) - -#### ペイロードの要求 - -Webhook の URL に送信されるペイロードには、{% include product %} で発生したイベントと、それをトリガしたユーザを示す情報が格納されています。この情報は、JSON 形式で提供されます。 - -{% include warning title="ペイロード サイズ" content="配信のペイロードの最大サイズは 1 MB です。ShotGrid でトリガされたイベントのうち、ペイロード サイズが 1 MB を超えるものは、`new_value` および `old_value` キーが削除され、発生したイベントの内容と、Shotgun からイベント ログ エントリ全体を取得する理由および方法を示すメッセージが含まれている `warning` キーが追加されます。" %} - -##### サンプル ペイロード - -```json -{ - "data": { - "id": "95.0", - "meta": { - "type": "attribute_change", - "entity_id": 758, - "new_value": "This is the newest description ever!!", - "old_value": "This is the old description!", - "entity_type": "Asset", - "attribute_name": "description", - "field_data_type": "text" - }, - "user": { - "id": 113, - "type": "HumanUser" - }, - "entity": { - "id": 758, - "type": "Asset" - }, - "project": { - "id": 65, - "type": "Project" - }, - "operation": "update", - "created_at": "2019-07-12 21:14:36.598835", - "event_type": "Shotgun_Asset_Change", - "session_uuid": "07473c00-a4ea-11e9-b3b8-0242ac110006", - "attribute_name": "description", - "event_log_entry_id": 248249 - } -} -``` - -##### セッション UUID - -{% include product %} でイベントをトリガした `session_uuid` が、イベント ペイロードの一部として提供されます。この値を [{% include product %} の Python API](https://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid) に提供して、この session_uuid を持つ、開いている任意のブラウザ セッションに、この API によって生成されたイベントの最新情報を表示することができます。 - -### 配信に応答する - -配信が正常に行われたとシステムが判断するためには、Webhook コンシューマ サービスが配信に応答する必要があります。 - -{% include warning title="応答のタイムアウト" content="Webhook の URL に配信されてから 6 秒以内に応答を受信する必要があります。6 秒が経過すると、接続は終了します。時間内に応答しなかった場合は、配信が失敗します。" %} - -各配信の処理時間が記録され、[応答の詳細] (Response details)タブに表示されます。 - -#### 調整 - -使用者の配信への応答時間は、サイトの Webhook のスループットに影響します。各サイトでは、1 分あたりの応答時間として 1 分が許可されます。そのため、サイトに設定されたコンシューマ エンドポイントが応答するまで丸々 6 秒かかった場合、このサイトの Webhook 配信数は 1 分あたり 10 に調整されます。 - -全体的なスループット レートを高くする必要がある場合は、次のモデルに従ってコンシューマ エンドポイントを設計する必要があります。 -1. 要求を受け取ります。 -2. 別のプロセス/スレッドをスポーンして、目的の方法で処理します。 -3. 確認応答 200 で即座に応答します。 - -#### ステータス コード - -| ステータス | コード | 説明 | -|--------|:----:|:-----------:| -| 成功 | < 400 | 配信は受信されて、正常に処理されました。 | -| エラー | >= 400 | 配信は受信されましたが、正常に処理されませんでした。 | -| リダイレクト | 3xx | 配信は受信されましたが、別の URL にリダイレクトする必要があります。 | - -### 確認応答 - -配信を更新して確認応答を含めることができます。配信時に、要求の一部としてヘッダが提供されます。これらのヘッダには、`x-sg-delivery-id` キーに格納されている配信レコードの ID が含まれます。この ID を使用すると、[{% include product %} REST API](https://developer.shotgridsoftware.com/rest-api) で配信レコードを更新し、確認応答を含めることができます。 - -{% include warning title="確認応答のサイズ" content="確認応答に割り当てられた最大サイズは 4 KB です。" %} - -#### サンプル ヘッダ - -```json -{ - "accept": "application/json", - "content-type": "application/json; charset=utf-8", - "x-sg-webhook-id": "30f279a0-42a6-4cf2-bb5e-6fc550d187c8", - "x-sg-delivery-id": "dea7a71d-4896-482f-b238-b61820df8b65", - "x-sg-event-batch-id": "1", - "x-sg-event-batch-size": "4", - "x-sg-webhook-site-url": "http://yoursite.shotgunstudio.com/", - "x-sg-event-batch-index": "3" -} -``` - -#### 確認応答の用途 - -確認応答を使用すると、成功または失敗を示す詳細レポートを帯域外で送信し、Web フックの URL で正常に受信された配信を処理することができます。これにより、{% include product %} からの配信に関する受信ステータスを成功または失敗から切り離し、この配信に関連付けられているイベントを処理できるようになります。このようにして、正常に配信されたイベントにデバッグに役立つ追加情報を含めることができます。適切な例として、`Asset` エンティティの作成時にトリガされる Webhook があります。新しい `Asset` ごとにディスク上にディレクトリ構造を 1 つ作成する作業を Webhook で行う場合、Webhook の URL は配信を正常に受信できますが、ディスクまたはネットワークが停止しているため、関連ディレクトリを作成することはできません。配信を受信した後、Webhook は、ディレクトリ構造が作成されなかったことおよびその理由を示す詳細なエラー メッセージを使用して、配信記録を更新することができます。 - -## Webhook のテスト - -無料公開されている任意の Webhook URL ジェネレータをオンラインで使用して、テストすることができます。これらのサービスは特に、Webhook やその他のタイプの HTTP 要求をテストすることを目的としています。この方法は、ネットワーク上にインフラストラクチャを設定しないで、Web について学習する場合に便利です。 - -### webhook.site を使用する - -[webhook.site](https://webhook.site) を使用することをお勧めします。このサイトでは、コピーして Webhook に貼り付けることができる一意の URL が提供されていて、このアドレスへの配信がリアルタイムに表示されます。このページは、特定のステータス コードおよび本文を含む配信に応答するようにカスタマイズできます。つまり、配信の成功と失敗をテストすることができます。 - -webhook.site サービスの速度は積極的に制限されます。つまり、一部の配信が拒否されて、Webhook が不安定になる、または停止することが容易に発生します。テストする場合は、プロダクションのライブ データではなく、既知のコントロール可能なプロジェクト環境を使用することをお勧めします。 - -{% include warning title="プロダクション データ" content="プロダクション イベント データを一般公開されているサードパーティの Web サービスに送信することはお勧めしません。テスト データの使用は、webhook.site のようなサービスを使用して Webhook をテストする場合に限定してください。" %} diff --git a/docs/ja/guides/webhooks/batch-deliveries.md b/docs/ja/guides/webhooks/batch-deliveries.md deleted file mode 100644 index 01606d865..000000000 --- a/docs/ja/guides/webhooks/batch-deliveries.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: default -title: Webhook バッチ配信 -pagename: webhooks-batch-deliveries -lang: ja ---- - -# バッチ配信 - -## バッチ配信を有効にする - -[バッチ形式で配信](Deliver in Batched Format)オプションを選択すると、バッチ ペイロード形式で要求を行うように Webhook を設定できます。このオプションを有効にすると、各要求が形成された時点で、最大 50 個の保留中の配信がペイロードに格納されてバッチ処理されます。 - -これは、多数の SG イベントが短時間に生成された結果、急増した配信の処理を管理する際に役立ちます。一般的なシステム運用環境では、登録済みのイベントが 2 秒間に 1 回を超える頻度で生成された場合、1 つのペイロードにつき複数の配信が発生します。 - -![バッチ配信が有効](./images/batch_delivery_enabled.png) - -## 配信に応答する - -バッチ配信を有効にする場合は、イベントにつき 1 秒を超える速度で確実に応答するよう設計されている受信サービスを使用することをお勧めします。そうしないと、バッチが巨大化した場合に、タイムアウトと Webhook エラーが生じるリスクが高まります。 - -{% include info title="注" content="1 つのイベントへの応答に 1 秒程度かかる受信サービスを使用している場合、パフォーマンスを決定する主な要因は、配信のオーバーヘッドではなく、応答時間です。バッチ配信しても、あまりメリットはありません。" %} - -#### 非バッチ配信型の Webhook -* タイムアウトの許容時間は、配信あたり 6 秒です。つまり、Webhook エンドポイントは、6 秒以内に各要求に応答する必要があります。 - -#### バッチ配信型の Webhook -* タイムアウトの許容値は、最大で 6 秒、またはバッチ内のイベントあたり 1 秒です。 -* スロットル制限は引き続き適用されます。ShotGrid サイトごとに許可される 1 分間あたりの Webhook エンドポイント応答時間は、Webhook 全体で 1 分です。 - -## Webhook 配信形式の比較 - -#### 非バッチ配信型の Webhook メッセージの本文(配信数は常に 1): - -```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" - }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, - }, - "timestamp":"2021-02-22T17:40:27Z" -} -``` - -#### バッチ配信型 Webhook メッセージの本文(配信数は 1 ~ 50) - -バッチ処理を有効にした場合は、バッチ内のイベント数が 1 つのみのときでも、`deliveries` キーは常に存在します。この値は個々のイベント配信データの配列であり、配信ごとに指定される情報は非バッチ モードと同じです。 - -```json -{ - "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" - }, - "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*" - }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, - ] - } -} -``` diff --git a/docs/ja/guides/webhooks/images/batch_delivery_enabled.png b/docs/ja/guides/webhooks/images/batch_delivery_enabled.png deleted file mode 100644 index 64dc8e82a..000000000 Binary files a/docs/ja/guides/webhooks/images/batch_delivery_enabled.png and /dev/null differ diff --git a/docs/ja/images/color.png b/docs/ja/images/color.png new file mode 100644 index 000000000..c2e72beb8 Binary files /dev/null and b/docs/ja/images/color.png differ diff --git a/docs/ja/images/landing_page/book.png b/docs/ja/images/landing_page/book.png deleted file mode 100644 index 5db0b1698..000000000 Binary files a/docs/ja/images/landing_page/book.png and /dev/null differ diff --git a/docs/ja/images/landing_page/play.png b/docs/ja/images/landing_page/play.png deleted file mode 100644 index 7a6d24aa4..000000000 Binary files a/docs/ja/images/landing_page/play.png and /dev/null differ diff --git a/docs/ja/images/landing_page/rv.png b/docs/ja/images/landing_page/rv.png deleted file mode 100644 index 692e12166..000000000 Binary files a/docs/ja/images/landing_page/rv.png and /dev/null differ diff --git a/docs/ja/images/landing_page/sg.png b/docs/ja/images/landing_page/sg.png deleted file mode 100644 index 177fb8be6..000000000 Binary files a/docs/ja/images/landing_page/sg.png and /dev/null differ diff --git a/docs/ja/images/landing_page/sg_large_logo.png b/docs/ja/images/landing_page/sg_large_logo.png deleted file mode 100644 index 46ffa54aa..000000000 Binary files a/docs/ja/images/landing_page/sg_large_logo.png and /dev/null differ diff --git a/docs/ja/images/landing_page/tk.png b/docs/ja/images/landing_page/tk.png deleted file mode 100644 index cce9235c2..000000000 Binary files a/docs/ja/images/landing_page/tk.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering.md b/docs/ja/quick-answers/administering.md deleted file mode 100644 index aeca9d985..000000000 --- a/docs/ja/quick-answers/administering.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 管理 -pagename: quick-answers-administering -lang: ja ---- - -管理 -===== - -Toolkit セットアップの管理および設定に基づくクイック アンサーのコレクションです。 - -#### {% include product %} デスクトップ: -- [{% 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) -- [{% include product %} Desktop のブラウザ統合を無効にするにはどうすればいいですか?](./administering/disable-browser-integration.md) - -#### 設定の管理: - -- [複数のストレージ ルートを使用するように設定を変更するにはどうすればいいですか?](./administering/convert-from-single-root-to-multi.md) -- [パイプライン設定を新しい場所に移動するにはどうすればいいですか?](./administering/move-configuration-location.md) -- [プロジェクト ディレクトリを新しいローカル ストレージのルートに移動するにはどうすればいいですか?](./administering/move-project-directories.md) -- [パイプライン設定のコアの場所を更新するにはどうすればいいですか?](./administering/update-configuration-core-locations.md) -- [プロジェクト間でアセットを共有するにはどうすればいいですか?](./administering/share-assets-between-projects.md) -- [アプリまたはエンジンをアンインストールするにはどうすればいいですか?](./administering/uninstalling-an-app-or-engine.md) - -#### キャッシュベースの質問: - -- [パス キャッシュとは何ですか? ファイルシステムの場所とは何ですか?](./administering/what-is-path-cache.md) -- [キャッシュの場所](./administering/where-is-my-cache.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 deleted file mode 100644 index 2b036ad28..000000000 --- a/docs/ja/quick-answers/administering/convert-from-single-root-to-multi.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: default -title: 複数のストレージ ルートを使用するように設定を変更するにはどうすればいいですか? -pagename: convert-from-single-root-to-multi -lang: ja ---- - -# 複数のストレージ ルートを使用するように設定を変更するにはどうすればいいですか? - -既定の設定では、単一のローカル ストレージのルートが使用されます(つまり、すべてのプロジェクト ファイルは `/sgtk/projects` のような単一のルート ポイントに保存されます)。プロジェクト ファイルの一部を保存する新しいストレージ ルートを追加することができます。これは、ディスク スペースが不足した場合やストレージ メディアを高速化する場合に一般的な方法です。 -「secondary」という名前の別のルートを追加する場合があるとします。必要な手順は次のとおりです。 - -## {% include product %} でローカル ストレージを追加する - -- {% include product %} で、[管理者] (Admin)> [サイト基本設定] (Site Preferences)**ページに移動します** -- **[ファイル管理] (File Management)**セクションを開きます -- **[[+] ローカル ファイル ストレージを追加] ([+] Add Local File Storage)**をクリックします -- 名前(「secondary」)と関連するすべてのプラットフォーム上のストレージ ルートへのパスを入力します。*特定のプラットフォームを使用していない場合は、空白のままにすることができます。* -- ページの上部または下部にある**[ページを保存] (Save Page)**ボタンをクリックします - -![{% include product %} ファイル管理の基本設定](images/shotgun-pref-file-management.png) - -## 新しいルートをパイプライン設定に追加する - -Toolkit は、`config/core/roots.yml` ファイルのパイプライン設定で使用されるローカル ストレージに関する情報をキャッシュします。{% include product %} で作成したばかりの新しい **secondary** ストレージ ルートを追加するには、このファイルを次のように編集します。 - - primary: { - 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, - windows_path: 'z:\sgtk\secondaries' - } - -{% include info title="注" content="`tk-core v0.18.141` までは、roots.yml で定義されているルートの名前は SG で定義されているローカル ストレージの名前と一致する必要はありません。`roots.yml` 定義に `shotgun_storage_id: ` キー/値ペアを含めることで、接続を明示的に定義できます。例: - - secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, - windows_path: 'z:\sgtk\secondaries' - shotgun_storage_id: 123 - } - -現在、ストレージ ID を照会するには、API 呼び出しを使用する必要があります。"%} - -## 新しいローカル ストレージ ルートを使用するようにスキーマを修正する - -新しいストレージ ルートを定義し、Toolkit にそのルートを指定しました。ディレクトリ構造内での使用方法を決める必要があります。ここで、アセットのすべての作業は secondary ストレージに、ショットのすべての作業は primary ストレージに保存されると仮定します。`config/core/schema` でスキーマを次のようにセットアップできます。 - -![マルチルート スキーマ レイアウト](images/schema-multi-root.png) - -**config/core/schema/project.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "primary" - -**config/core/schema/secondary.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "secondary" - -フィルタ内のルートを参照するすべての YAML ファイルも修正する必要があります。たとえば、セカンダリ フォルダの下のどこかに asset.yml がある場合は、セカンダリ フォルダの値と照らし合わせてプロジェクトを除外するようにフィルタを更新する必要があります。 - - filters: - - { "path": "project", "relation": "is", "values": [ "$secondary" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -## 使用するルートを指定するようにテンプレート パスを更新する - -最後に、使用するストレージ ルートを指定するように `config/core/templates.yml` ファイルで定義されたパスを更新1し、必要に応じて他のパスを更新します。テンプレート パスはスキーマと非常に密な関係にあるので、一致させる必要があります。スキーマで定義されたパスと正しく一致しない定義済みテンプレート パスを使用すると、エラーが発生します。 - -たとえば、secondary ストレージのすべてのアセット作業を使用するため、テンプレート パス maya_asset_work を更新するには、次のように修正します。 - - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: 'secondary' - -`config/core/templates.yml` ファイル内の各テンプレート パスをこれと同じように修正します。各ストレージ(「**primary**」または「**secondary**」)で正しい `root_name` を指定します。 - -{% include info title="注" content="既定のストレージルートを使用するテンプレートには `root_name` を指定する必要はありません。既定のルートは、`roots.yml` ファイルで `default: true` を指定することによって示されます。`roots.yml` で既定値が明示的に定義されていない場合は、ルート **primary** が既定値と見なされます。"%} - -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 deleted file mode 100644 index e55194075..000000000 --- a/docs/ja/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: Linux で ShotGrid Desktop のデスクトップ/ランチャー アイコンをセットアップするにはどうすればいいですか? -pagename: create-shotgun-desktop-shortcut -lang: ja ---- - -# Linux で {% include product %} Desktop のデスクトップ/ランチャー アイコンをセットアップするにはどうすればいいですか? - -現在の {% 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 diff --git a/docs/ja/quick-answers/administering/disable-browser-integration.md b/docs/ja/quick-answers/administering/disable-browser-integration.md deleted file mode 100644 index 4ef30f7ee..000000000 --- a/docs/ja/quick-answers/administering/disable-browser-integration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ShotGrid Desktop のブラウザ統合を無効にするにはどうすればいいですか? -pagename: disable-browser-integration -lang: ja ---- - -# {% include product %} Desktop のブラウザ統合を無効にするにはどうすればいいですか? - -ブラウザの統合を無効にするには、次の簡単な 2 つの手順を実行します。 - -1. 次のテキスト ファイルを作成または開く - - Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini - Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini - Linux: ~/.{% include product %}/preferences/toolkit.ini - -2. 次のセクションを追加する - - [BrowserIntegration] - enabled=0 - -ブラウザ統合の設定方法に関する詳細については、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。 - -**別の方法** - -Toolkit のパイプライン設定を引き継いだ場合は、代わりに [`tk-{% include product %}` エンジンを環境から削除](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)し、アクションがロードされないようにすることができます。 \ No newline at end of file diff --git a/docs/ja/quick-answers/administering/images/Thumbs.db b/docs/ja/quick-answers/administering/images/Thumbs.db deleted file mode 100644 index 33373adb2..000000000 Binary files a/docs/ja/quick-answers/administering/images/Thumbs.db and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/clear-project-tank-name.png b/docs/ja/quick-answers/administering/images/clear-project-tank-name.png deleted file mode 100644 index dd02f0fb6..000000000 Binary files a/docs/ja/quick-answers/administering/images/clear-project-tank-name.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/new-pipeline-configuration-locations.png b/docs/ja/quick-answers/administering/images/new-pipeline-configuration-locations.png deleted file mode 100644 index 8919650b9..000000000 Binary files a/docs/ja/quick-answers/administering/images/new-pipeline-configuration-locations.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/pipeline-configuration-entity-page.png b/docs/ja/quick-answers/administering/images/pipeline-configuration-entity-page.png deleted file mode 100644 index 6d56ef5be..000000000 Binary files a/docs/ja/quick-answers/administering/images/pipeline-configuration-entity-page.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/schema-multi-root.png b/docs/ja/quick-answers/administering/images/schema-multi-root.png deleted file mode 100644 index e0ff5e768..000000000 Binary files a/docs/ja/quick-answers/administering/images/schema-multi-root.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/shotgun-pref-file-management.png b/docs/ja/quick-answers/administering/images/shotgun-pref-file-management.png deleted file mode 100644 index 6d481d9de..000000000 Binary files a/docs/ja/quick-answers/administering/images/shotgun-pref-file-management.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/shotgun-storage-roots.png b/docs/ja/quick-answers/administering/images/shotgun-storage-roots.png deleted file mode 100644 index c4fc9d4a6..000000000 Binary files a/docs/ja/quick-answers/administering/images/shotgun-storage-roots.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/images/shotgun_storage_roots.png b/docs/ja/quick-answers/administering/images/shotgun_storage_roots.png deleted file mode 100644 index c4fc9d4a6..000000000 Binary files a/docs/ja/quick-answers/administering/images/shotgun_storage_roots.png and /dev/null differ diff --git a/docs/ja/quick-answers/administering/install-desktop-silent.md b/docs/ja/quick-answers/administering/install-desktop-silent.md deleted file mode 100644 index f7232b8cc..000000000 --- a/docs/ja/quick-answers/administering/install-desktop-silent.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: Windows で ShotGrid Desktop をサイレント インストールするにはどうすればいいですか? -pagename: install-desktop-silent -lang: ja ---- - -# Windows で {% include product %} Desktop をサイレント インストールするにはどうすればいいですか? - -{% include product %} Desktop インストーラをサイレントで実行するには、次の方法で {% include product %} Desktop インストーラを起動します。 - -`ShotgunInstaller_Current.exe /S` - -インストール フォルダも指定する場合は、引数 `/D` を使用して起動します。 - -`ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` - -{% include info title="注" content="引数 `/D` は最後の引数として指定する必要があります。パスの中にスペースがある場合でも、`\"` は使用しないでください。" %} \ No newline at end of file diff --git a/docs/ja/quick-answers/administering/move-configuration-location.md b/docs/ja/quick-answers/administering/move-configuration-location.md deleted file mode 100644 index ed277ea47..000000000 --- a/docs/ja/quick-answers/administering/move-configuration-location.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: パイプライン設定を新しい場所に移動するにはどうすればいいですか? -pagename: move-configuration-location -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 %} を更新したり、新しい場所を指すように設定ファイルを更新したりします。  - -またこのコマンドは、1 つのオペレーティング システムで場所を移動するだけの場合や、以前は特定のオペレーティング システムを使用していなかったがこれから追加する場合などにも役立ちます。Toolkit は、移動する項目、追加する項目、またはそれ以外の項目を検出し、適用前に確認できるように実行内容が表示されます。 - -- [tank move_configuration コマンドを使用](#using-the-tank-move_configuration-command) -- [パイプライン設定を手動で移動する](#manually-moving-your-pipeline-configuration) - -{% include warning title="注意" content="ローカライズされたコアを持つ設定を移動していて、このパイプライン設定に埋め込まれた Toolkit コアを使用する他のプロジェクトがある場合(つまり、他の設定がこれを共有コアとして使用している場合)は、このパイプライン設定の新しい場所を指すようにこのプロジェクトの設定ファイルを手動で更新する必要があります。このファイルは次の場所に格納されています。 - -- `/path/to/pipeline_configuration/install/core/core_Darwin.cfg` -- `/path/to/pipeline_configuration/install/core/core_Linux.cfg` -- `/path/to/pipeline_configuration/install/core/core_Windows.cfg`" %} - -## タンク move_configuration コマンドを使用: - - $ cd /sgtk/software/shotgun/scarlet - $ ./tank move_configuration - - Welcome to the {% include product %} Pipeline Toolkit! - - For documentation, see https://toolkit.shotgunsoftware.com - Starting Toolkit for your current path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - Syntax: move_configuration linux_path windows_path mac_path - - This will move the location of the given pipeline configuration. - You can also use this command to add a new platform to the pipeline - configuration. - - Current Paths - -------------------------------------------------------------- - - Current Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - - You typically need to quote your paths, like this: - - > tank move_configuration "/linux_root/my_config" "p:\configs\my_config" - "/mac_root/my_config" - - If you want to leave a platform blank, just just empty quotes. For example, if - you want a configuration which only works on windows, do like this: - - > tank move_configuration "" "p:\configs\my_config" "" - - -### 例: - - $ 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! - - For documentation, see https://toolkit.shotgunsoftware.com - Starting toolkit for path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - - Current Paths - -------------------------------------------------------------- - Current Linux Path: '/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - New Paths - -------------------------------------------------------------- - New Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet_new' - New Windows Path: 'z:\sgtk\software\shotgun\scarlet_new' - New Mac Path: '/sgtk/software/shotgun/scarlet_new' - - - The configuration will be moved to reflect the specified path changes. - - Note for advanced users: If your configuration is localized and you have other - projects which are linked to the core API embedded in this configuration, - these links must be manually updated after the move operation. - - Are you sure you want to move your configuration? [Yes/No] yes - Copying '/sgtk/software/shotgun/scarlet' -> '/sgtk/software/shotgun/scarlet_new' - Copying /sgtk/software/shotgun/scarlet/cache... - Copying /sgtk/software/shotgun/scarlet/config... - Copying /sgtk/software/shotgun/scarlet/config/core... - Copying /sgtk/software/shotgun/scarlet/config/core/hooks... - Copying /sgtk/software/shotgun/scarlet/config/core/schema... - Copying /sgtk/software/shotgun/scarlet/config/env... - Copying /sgtk/software/shotgun/scarlet/config/env/includes... - Copying /sgtk/software/shotgun/scarlet/config/hooks... - Copying /sgtk/software/shotgun/scarlet/config/icons... - Copying /sgtk/software/shotgun/scarlet/install... - Copying /sgtk/software/shotgun/scarlet/install/apps... - Copying /sgtk/software/shotgun/scarlet/install/apps/app_store... - Copying /sgtk/software/shotgun/scarlet/install/core... - Copying /sgtk/software/shotgun/scarlet/install/core/python... - Copying /sgtk/software/shotgun/scarlet/install/core.backup... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143244... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143940... - Copying /sgtk/software/shotgun/scarlet/install/engines... - Copying /sgtk/software/shotgun/scarlet/install/engines/app_store... - Copying /sgtk/software/shotgun/scarlet/install/frameworks... - Copying /sgtk/software/shotgun/scarlet/install/frameworks/app_store... - Updating cached locations in /sgtk/software/shotgun/scarlet_new/config/core/install_location.yml... - Updating {% include product %} Configuration Record... - Deleting original configuration files... - - All done! Your configuration has been successfully moved. - - -## パイプライン設定を手動で移動する - -{% include warning title="重要" content="パイプライン設定をまだ移動していない場合は、上記の [組み込み tank コマンド](#using-the-tank-move_configuration-command)を使用して自動的に移動することを強くお勧めします。" %} - -既に手動で移動を開始したが正しく動作しない場合は、新しい場所に移動されたパイプライン設定で Toolkit が引き続き動作するようにするために、変更が必要な内容を以下に示します。 - -1. パイプライン設定を新しい場所に移動します。 - - $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new - -2. Toolkit でパイプライン設定が格納されている場所を見つけられるように `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 - - # configuration defined for this project. - - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' - - # End of file. - -3. {% include product %} でこのプロジェクトに対応する PipelineConfiguration エンティティを特定し、上記の変更と一致するように、[Mac のパス](Mac Path)、[Windows のパス](Windows Path)、[Linux のパス](Linux Path)の各フィールドの値を修正します。 - -![ShotGrid のパイプライン設定の場所。](images/new-pipeline-configuration-locations.png) - -これでパイプライン設定が新しい場所から予想どおりに機能するようになりました。 - -{% include info title="注" content="SG Desktop を使用している場合、プロジェクトから移動して、この新しい場所のパイプライン設定をリロードするためにプロジェクト アイコンを再びクリックする必要があります。"%} \ No newline at end of file diff --git a/docs/ja/quick-answers/administering/move-project-directories.md b/docs/ja/quick-answers/administering/move-project-directories.md deleted file mode 100644 index 0e22014c7..000000000 --- a/docs/ja/quick-answers/administering/move-project-directories.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: プロジェクト ディレクトリを新しいローカル ストレージのルートに移動するにはどうすればいいですか? -pagename: move-project-directories -lang: ja ---- - -# プロジェクト ディレクトリを新しいローカル ストレージのルートに移動するにはどうすればいいですか? - -{% include warning title="注意" content="プロジェクトの途中でプロジェクトの場所を移動すると、ShotGrid Toolkit の範囲を超えて問題が発生する可能性があります。安易に実行しないように注意してください。"%} - -必要に応じて、プロジェクト ファイル(シーン ファイルやレンダリングなど)を 新しいルート ストレージ場所に移動することがあります(たとえば `/mnt/smalldrive` から `/mnt/bigdrive/foo` へ)。このためには、単一ルート設定またはマルチルート設定を使用します。たとえば、「**asset_storage**」という名前のストレージを移動するとします。 - -- 古い場所から新しい場所にプロジェクト ファイルをコピー(または移動)します。 -- {% include product %} で、**[管理者] (Admin) > [サイト基本設定] (Site Preferences)**ページに移動して、**[ファイル管理] (File Management)**セクションを開きます。 - ![サイト基本設定の {% include product %} ストレージのルート セクション。](./images/shotgun-storage-roots.png) -- 各プラットフォームでプロジェクト ファイルの新しいストレージへのパスを設定して、「primary」と言う名前のローカル ファイル ストレージを更新します。特定のプラットフォームを使用していない場合は、空白のままにします。 -- ページの上部または下部にある**[変更を保存] (Save Changes)**ボタンをクリックします。 -- {% include product %} で保存したばかりの新しいパスの値と一致するようにプロジェクト設定の `config/core/roots.yml` ファイルを更新します。 - -Toolkit はパブリッシュ パスをストレージ ルートの相対パスとして保存します。そのため、古いストレージ ルートを使用すると、パスはその前提に基づいて展開されていました。 - - [asset_storage]/assets/Character/betty => /mnt/smalldrive/assets/Character/betty - -新しいストレージ ルートの定義を使用すると、パスは次のように展開されます。 - - [asset-storage]/assets/Character/betty => /mnt/bigdrive/foo/assets/Character/betty - -これで、{% include product %} や Toolkit 内の他のパブリッシュ情報の更新を心配する必要はありません。 - -{% include warning title="警告" content="上記の手順では、既存のストレージ ルートのパスを変更していると想定しています。既存のストレージを破棄するか、新規のストレージを作成する場合は、すべてのフォルダを再登録して `PublishedFiles` エンティティを再公開する必要があります。"%} - -## 参考情報 - -シーン ファイルで古いパスを指定している場合は、自分でパスを更新するか、パスが適切に解決されるようにシンボリック リンクを作成する必要があります。 - -## バージョン - -この変更の影響を受ける[ムービーのパス] (Path to Movie)フィールドまたは[フレームのパス] (Path to Frames)フィールドに情報を持つバージョン エンティティを {% include product %} で使用する場合、これらのフィールドも新しい場所をポイントするように更新する必要があります。これらのフィールドは、メディアへの絶対パスを含む文字列フィールドであるためです。 \ No newline at end of file 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 deleted file mode 100644 index f6dc35723..000000000 --- a/docs/ja/quick-answers/administering/resetup-project-with-sg-desktop.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: ShotGrid Desktop を使用して Toolkit プロジェクトを再セットアップするにはどうすればいいですか? -pagename: resetup-project-with-sg-desktop -lang: ja ---- - -# {% include product %} Desktop を使用して Toolkit プロジェクトを再セットアップするにはどうすればいいですか? - -既にプロジェクト用に Toolkit 構成をセットアップしていて、最初からやり直す必要がある場合、以前のセットアップ構成を削除しない限り {% include product %} Desktop の詳細セットアップ ウィザードでプロジェクトを再セットアップすることはできません。 - -これらの設定を手動で削除する手順は次のとおりです。 - -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. これでプロジェクト セットアップ プロセスを再び実行できます。 - -**別の方法** - -コマンド ラインで `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 deleted file mode 100644 index 081cfba47..000000000 --- a/docs/ja/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: ShotGrid Desktop は Ubuntu のような Debian システムで動作しますか? -pagename: sg-desktop-run-on-ubuntu -lang: ja ---- - -# {% include product %} Desktop は Ubuntu のような Debian システムで動作しますか? - -現在、{% include product %} Desktop では Debian ベースのディストリビューションをサポートしていません。cpio を使用して RPM から {% include product %} Desktop を抽出し、そのライブラリの依存関係を維持して、うまく動作させようとしたクライアントが過去にいましたが、良い結果は得られませんでした。参考として、[当社の開発グループで次のスレッドを確認することができます](https://groups.google.com/a/shotgunsoftware.com/d/msg/shotgun-dev/nNBg4CKNBLc/naiGlJowBAAJ)。 - -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 deleted file mode 100644 index 99283ebaf..000000000 --- a/docs/ja/quick-answers/administering/share-assets-between-projects.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: プロジェクト間でアセットを共有するにはどうすればいいですか? -pagename: share-assets-between-projects -lang: ja ---- - -# プロジェクト間でアセットを共有するにはどうすればいいですか? - -他のプロジェクトのショットにロードできるアセットを含むアセット ライブラリとして使用されるプロジェクトを指定するのは珍しくありません。 - -これを実現するには、このアセット ライブラリ プロジェクトのアセットをリストする[Loader アプリ](https://developer.shotgridsoftware.com/ja/a4c0a4f1/)にタブを追加します。このためには、作業しているエンジンと環境のローダー設定でこのタブを定義する必要があります。このタブは複数の場所で更新する必要があります。 - -たとえば、[ショットのステップ環境の Maya エンジン](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-loader2.yml#L122)にこのタブを追加するには、次のスニペットを追加します。 - -```yaml -caption: Asset Library -hierarchy: [project, sg_asset_type, code] -entity_type: Asset -filters: -- [project, is, {'type': 'Project', 'id': 207}] -``` - -`207` をライブラリ プロジェクトの ID と置き換えます。 - -Maya のショットのステップ環境で作業している場合、このプロジェクトで使用可能なすべてのパブリッシュを表示する新しいタブが追加されます。他のエンジンのローダーにこのタブを追加する場合(Nuke や 3dsmax)、各エンジンで `tk-multi-loader2` 設定を変更する必要があります。他の環境でこの設定を有効にする場合は、アセットのステップ環境と設定する他の環境で同じ手順を実行する必要があります。手間が少しかかりますが、詳細に制御できるようになります。 - -これらの設定を使用すると、Loader アプリで一般的なプロジェクトのパブリッシュをリストするタブを表示できます。 \ No newline at end of file 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 deleted file mode 100644 index c6d32a4b2..000000000 --- a/docs/ja/quick-answers/administering/uninstalling-an-app-or-engine.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: アプリまたはエンジンをアンインストールするにはどうすればいいですか? -pagename: uninstalling-an-app-or-engine -lang: ja ---- - -# アプリまたはエンジンをアンインストールする方法 - -アプリまたはエンジンを削除するには、設定の YAML 環境ファイルを編集して、アプリまたはエンジンを記述から除外します。環境ファイルを使用すると、特定のコンテキストまたはエンジンでのみ使用できるようにアプリを設定できます。アプリを完全に削除する必要はありません。環境ファイルの一般的な編集方法については、[このガイド](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)を参照してください。 - -## 例 - -次に、既定の設定から Publish アプリを完全に削除する方法について説明します。アプリは環境設定内のエンジンに追加されるため、Publish アプリが追加されたすべてのエンジンからこのアプリを削除する必要があります。 - -### エンジンからアプリを削除する - -各エンジンは [`.../env/includes/settings`](https://github.com/shotgunsoftware/tk-config-default2/tree/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings) 内に独自の YAML ファイルを保持しています。Publish アプリはすべてのエンジンに含まれているため、各エンジンの YAML ファイルを変更する必要があります。Maya エンジンを例に挙げると、[tk-maya.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml) を開いて、Publish アプリに対するすべての参照を削除します。 - -まず、includes セクションに Publish アプリに対する参照があります。
-[`.../env/includes/settings/tk-maya.yml L18`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L18) - -アセット ステップのコンテキストの場合、このアプリは Maya エンジンにも含まれています。
-[`.../env/includes/settings/tk-maya.yml L47`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L47)
-次の行を使用して、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) - -他のすべてのエンジンの yml 環境ファイル(`tk-nuke`、`tk-3dsmaxplus`、`tk-desktop` など)にこれらの手順を繰り返します。 - -{% include info title="重要" content="この時点で、ユーザの統合環境にこのアプリが表示されないようにするのに必要な操作が完了しているので、必要な作業はここまです。ただし、設定からアプリに対する参照を完全に削除して、設定を常に整理しておくには、残りの手順を完了する必要があります。"%} - -### アプリの設定を削除する - -これらのエンジンのすべての YAML ファイルには、[`tk-multi-publish2.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-publish2.yml) 設定ファイルが含まれていました。エンジンの YAML ファイル内にある、このアプリに対する参照が削除されたので、このファイルを完全に削除することができます。 - -{% include warning title="重要" content="`tk-multi-publish2.yml` を削除したにもかかわらず、これを指しているエンジン ファイルが存続している場合は、次の行と共にエラーが表示される可能性があります。 - - 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!" %} - -### アプリの場所を削除する - -既定の設定では、[.../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 deleted file mode 100644 index 06bb4fb3b..000000000 --- a/docs/ja/quick-answers/administering/update-configuration-core-locations.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: default -title: パイプライン設定のコアの場所を更新するにはどうすればいいですか? -pagename: update-configuration-core-locations -lang: ja ---- - -# パイプライン設定のコアの場所を更新するにはどうすればいいですか? - -## ローカル コアを使用するようにパイプライン設定を更新するにはどうすればいいですか? - -共有 Toolkit コアを使用するようにパイプラインが設定されている場合は、基本的に、このプロセスを元に戻すことができます。つまり、コアの「共有を解除」し、tank localize コマンドを使用してパイプライン設定内に Toolkit Core API のコピーをインストールできます。これをコアの「ローカライズ」と呼んでいます。  - -1. ターミナルを開いて、Toolkit コアのインストール先のパイプライン設定に移動します。 - - $ cd /sgtk/software/shotgun/scarlet - -2. 次の tank コマンドを実行します。 - - $ ./tank localize - - ... - ... - - ---------------------------------------------------------------------- - 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 がすべてを確認します。パイプライン設定が現在指定している Toolkit コアのコピーは、パイプライン設定にローカルにコピーされます。 - -3. Toolkit は、パイプライン設定で使用中のすべてのアプリ、エンジン、フレームワークを `install` フォルダにローカルにコピーします。次に Toolkit コアがコピーされ、新たにインストールされたローカルな Toolkit コアを使用するようにパイプライン設定内の設定ファイルが更新されます。 - - - Copying 59 apps, engines and frameworks... - 1/59: Copying tk-multi-workfiles v0.6.15... - 2/59: Copying tk-maya v0.4.7... - 3/59: Copying tk-nuke-breakdown v0.3.0... - 4/59: Copying tk-framework-widget v0.2.2... - 5/59: Copying tk-shell v0.4.1... - 6/59: Copying tk-multi-launchapp Undefined... - 7/59: Copying tk-motionbuilder v0.3.0... - 8/59: Copying tk-hiero-openinshotgun v0.1.0... - 9/59: Copying tk-multi-workfiles2 v0.7.9... - ... - ... - 59/59: Copying tk-framework-qtwidgets v2.0.1... - Localizing Core: /sgtk/software/shotgun/studio/install/core -> - /sgtk/software/shotgun/scarlet/install/core - Copying Core Configuration Files... - 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), no - other configurations or projects will be affected. - -{% include info title="注" content="出力は、インストールしたアプリ、エンジン、およびフレームワークのバージョンによって異なります。" %} - -## 既存の共有コアを使用するようにパイプライン設定を更新するにはどうすればいいですか? -既存の共有 Toolkit コアを使用する場合は、tank コマンドを使用して共有コアを使用するように「ローカライズされた」既存のパイプライン設定を更新できます。 - -1. ターミナルを開いて、更新するパイプライン設定に移動します。 - - $ cd /sgtk/software/shotgun/scarlet - -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: - - - 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. - - Do you want to proceed [yn] - - 続行する前に、Toolkit がすべてを確認します。この共有コアは複数のプラットフォーム用に既にセットアップされているため、それぞれの場所を示します。 - - *新しいプラットフォームに場所を追加する必要がある場合、共有コア設定内の config/core/install_location.yml を更新して、必要なパスを追加します。* - -3. Toolkit は、パイプライン設定のローカル コア API をバックアップし、ローカライズされたコアを削除し、共有コアでパイプライン設定を指定するために必要な設定を追加します。 - - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - - 後で、パイプライン設定内で Toolkit コアをローカライズする(つまり、共有コアからパイプライン設定を切り離して、ローカルにインストールされたバージョンを使用する)場合は、`tank localize` コマンドを使用してこの操作を行うことができます。 - -{% include info title="注" content="スタジオの共有コアは、現在のパイプライン設定のコアと同じかそれ以降のバージョンである必要があります。" %} - -## プロジェクト間で Toolkit コアを共有するにはどうすればいいですか? - -現在、Toolkit Core API は、SG Desktop を使用してプロジェクトを設定するときに「ローカライズ」されます。つまり、この API がパイプライン設定内にインストールされます。 これは、すべてのパイプライン設定が完全に独立した Toolkit インストールであることを意味します。プロジェクト間で共有する Toolkit Core API のバージョンを使用して、メンテナンスを最小限に抑え、すべてのプロジェクトで同じコア コードが使用されるようにします。これを「**スタジオの共有コア**」と呼ぶこともあります。 - -次に、異なるプロジェクト パイプライン設定間で共有できる新しい Toolkit Core API 設定を作成する方法を示します。 - -1. ターミナルを開いて、共有する Toolkit Core バージョンが含まれる既存のパイプライン設定に移動します。プロセスが完了すると、このパイプライン設定はローカライズされなくなりますが、新しく作成した共有コアは使用されます。 - - $ cd /sgtk/software/shotgun/pied_piper - -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 が処理を続ける前に、加えられる変更の概要が表示されます。 - - ---------------------------------------------------------------------- - Command: Share core - ---------------------------------------------------------------------- - 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 - locations: - - Linux: '/mnt/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. - Do you want to proceed [yn] - -4. Toolkit は新しい共有場所にコア インストールをコピーし、新しい共有コアを指定するように既存のパイプライン設定を更新します。 - - Setting up base structure... - Copying configuration files... - Copying core installation... - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - -これで他のパイプライン設定からこの新しい共有コアを使用できます。既存の共有コア(先ほど作成したコアなど)を使用するようにパイプライン設定を更新するには、`tank attach_to_core` コマンドを使用します。 \ No newline at end of file diff --git a/docs/ja/quick-answers/administering/what-is-path-cache.md b/docs/ja/quick-answers/administering/what-is-path-cache.md deleted file mode 100644 index 0b2df0d16..000000000 --- a/docs/ja/quick-answers/administering/what-is-path-cache.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: パス キャッシュとは何ですか? ファイルシステムの場所とは何ですか? -pagename: what-is-path-cache -lang: ja ---- - -# パス キャッシュとは何ですか? ファイルシステムの場所とは何ですか? - -パス キャッシュは、ディスクのフォルダと {% include product %} のエンティティ間の関連付けをトラックするために Toolkit で使用されます。 -マスター キャッシュは、エンティティ タイプ `FilesystemLocation` を使用して {% include product %} 内に保存されます。各ユーザには、[ディスクの Toolkit キャッシュ ディレクトリにローカルに保存された](./where-is-my-cache.md)独自のバージョンのパス キャッシュがあり、アプリケーションを起動するときやフォルダを作成するときはいつでもバックグラウンドで同期されます。 - -通常は、パス キャッシュを手動で変更しないことをお勧めします。オートデスクの内部プロセスで、ローカル キャッシュと {% include product %} 内の FilesystemLocation エンティティを同期するだけでなく、イベント ログ エントリを作成して、すべてのユーザのマシンが {% include product %} との同期を維持できるようにもしています。 - -パス キャッシュを変更するために使用できる tank コマンドがいくつかあります。 - -- `tank unregister_folders` は、パス キャッシュの関連付けを削除します。 -- `tank synchronize_folders` は、ローカル パス キャッシュと {% include product %} を強制的に同期します。 - -通常、これらのコマンドのいずれかを実行する必要はありませんが、状況によっては、これらが役立つことがあります。 -たとえば、プロジェクト内のエンティティの名前を変更するか、エンティティを再作成する場合は、その前に `unregister_folders` を実行する必要があります。 \ No newline at end of file diff --git a/docs/ja/quick-answers/administering/where-is-my-cache.md b/docs/ja/quick-answers/administering/where-is-my-cache.md deleted file mode 100644 index 88e922c71..000000000 --- a/docs/ja/quick-answers/administering/where-is-my-cache.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: default -title: キャッシュの場所 -pagename: where-is-my-cache -lang: ja ---- - -# キャッシュの場所 - - -## ルート キャッシュの場所 - -Toolkit は、{% include product %} サーバに対する不要な呼び出しを防止するために、一部のデータをローカル キャッシュに保存します。ローカル キャッシュには[パス キャッシュ](./what-is-path-cache.md)、バンドル キャッシュ、およびサムネイルが含まれます。ほとんどのユーザは既定の場所を使用しますが、変更の必要がある場合は、[cache_location コア フック](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py)を使用して設定可能です。 - -既定のキャッシュ ルートの場所は次のとおりです。 - -**Mac OS X** - -`~/Library/Caches/Shotgun` - -**Windows** - -`%APPDATA%\Shotgun` - -**Linux** - -`~/.shotgun` - -## パス キャッシュ - -キャッシュ パスは次の場所にあります。 - -`/pc/path_cache.db` - -## バンドル キャッシュ - -**分散設定** - -バンドル キャッシュとは、{% include product %} サイト上のプロジェクトすべてで使用される、すべてのアプリケーション、エンジン、およびフレームワークのキャッシュ コレクションです。分散設定用のバンドル キャッシュは次の場所に保存されています。 - -Mac: `~/Library/Caches/Shotgun/bundle_cache` - -Windows: -`%APPDATA%\Shotgun\bundle_cache` - -Linux: `~/.shotgun/bundle_cache` - -{% include info title="注" content="これらの場所は `SHOTGUN_BUNDLE_CACHE_PATH` 環境変数を使用してオーバーライドできるため、具体的な実装は変わる可能性があります。"%} - -**一元管理設定** - -一元管理設定用のバンドル キャッシュは、一元管理設定内に配置されます。 - -`...{project configuration}/install/` - -設定で共有コアを使用している場合は、代わりに、共有コアのインストール フォルダ内に配置されます。 - -## サムネイル - -Toolkit アプリ([Loader](https://developer.shotgridsoftware.com/ja/a4c0a4f1) など)で使用されるサムネイルは、Toolkit のローカル キャッシュに保存されます。サムネイルは、プロジェクト、パイプライン設定、およびアプリごとに(必要に応じて)保存されます。ルート キャッシュ ディレクトリ下の構造は次のとおりです。 - -`/pc//thumbs/` diff --git a/docs/ja/quick-answers/developing.md b/docs/ja/quick-answers/developing.md deleted file mode 100644 index 07ddcc8c6..000000000 --- a/docs/ja/quick-answers/developing.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 開発 -pagename: quick-answers-developing -lang: ja ---- - -開発 -=== - -Toolkit を使用した開発に基づくクイック アンサーのコレクションです。 - -- [ソフトウェアを起動する前に環境変数を設定するにはどうすればいいですか?](./developing/setting-software-environment-variables.md) -- [カスタム スクリプトで認証とログイン資格情報を使用するにはどうすればよいですか?](./developing/sgtk-script-authentication.md) -- [as_template_fields() でコンテキスト内に存在する値が見つからない](./developing/as-template-fields-missing-values.md) -- [Maya で Toolkit アプリを起動するシェルフ ボタンを追加するにはどうすればいいですか?](./developing/maya-shelf-app-launcher.md) -- [Shotgun のイベント デーモンを使用してさまざまな Toolkit コア モジュールをロードするにはどうすればいいですか?](./developing/toolkit-core-event-daemon.md) -- [API を使用して Toolkit の設定をプログラムによって更新するにはどうすればいいですか?](./developing/update-config-with-api.md) -- [API を使用してパブリッシュを作成するにはどうすればいいですか?](./developing/create-publishes-via-api.md) diff --git a/docs/ja/quick-answers/developing/as-template-fields-missing-values.md b/docs/ja/quick-answers/developing/as-template-fields-missing-values.md deleted file mode 100644 index e2fca7a7e..000000000 --- a/docs/ja/quick-answers/developing/as-template-fields-missing-values.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -title: as_template_fields() でコンテキスト内に存在する値が見つからない -pagename: as-template-fields-missing-values -lang: ja ---- - -# as_template_fields() でコンテキスト内に存在する値が見つからない - -[as_template_fields()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Context.as_template_fields) メソッドはパス キャッシュを使用するため、テンプレートのキーに対応するフォルダがまだ作成されていない場合、フィールドは返されません。これにはいくつかの原因があります。 - -- テンプレート定義とスキーマを同期させる必要があります。このテンプレート定義またはパイプライン設定のスキーマの両方ではなく、いずれかを修正した場合は、予想フィールドが返されません。 -- フォルダはこの特定のコンテキスト用に作成されていません。まだ作成されていない場合は、パス キャッシュで一致するレコードがないため、予想フィールドが返されません。 diff --git a/docs/ja/quick-answers/developing/create-publishes-via-api.md b/docs/ja/quick-answers/developing/create-publishes-via-api.md deleted file mode 100644 index 36733f2ba..000000000 --- a/docs/ja/quick-answers/developing/create-publishes-via-api.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: default -title: API を使用してパブリッシュを作成するにはどうすればいいですか? -pagename: create-publishes-via-api -lang: ja ---- - -# API を使用してパブリッシュを作成するにはどうすればいいですか? - -オートデスクの sgtk API には、ShotGrid で `PublishedFiles` エンティティを登録するための[便利なメソッド](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)が用意されています。 - -また、[独自の API](https://developer.shotgridsoftware.com/tk-multi-publish2/) が付属している Publish アプリもあります。 -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 エンティティを作成し、ツールキットの概念を使用してその作業を容易にするよう試行します。 以下の行に従ってコードを実行する必要があります。 - -```python -# Get access to the Toolkit API -import sgtk - -# this is the file we want to publish. -file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk" - -# alternatively, for file sequences, we can just use -# a standard sequence token -# file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/renders/v034/foreground.%04d.exr" - -# The name for the publish should be the filename -# without any version number or extension -name = "foreground" - -# 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. -tk = sgtk.sgtk_from_path(file_to_publish) - -# use the file to extract the context. The context denotes the current work area in Toolkit -# and will control which entity and task the publish will be linked up to. 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 context. -ctx = tk.context_from_path(file_to_publish) - -# alternatively, if the file you are trying to publish is not in a location that is -# recognized by toolkit, you could create a context directly from a ShotGrid entity instead: -ctx = tk.context_from_entity("Shot", 123) -ctx = tk.context_from_entity("Task", 123) - -# Finally, run the publish command. -# 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, - published_file_type="Nuke Script", - version_number=34 -) -``` - -上記の基本的なコードに加えて、入力可能なオプションがいくつかあります。パラメータの完全なリストとその機能については、[Core API のドキュメント](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)を参照してください。 - -{% include info title="ヒント" content="Toolkit アプリ内からコードを実行している場合は、`self.sgtk` を介して sgtk インスタンスを、`self.context` を使用してコンテキストを取得することができます。 -コードがアプリに含まれていないにもかかわらず、Toolkit 統合が組み込まれているソフトウェア内で実行される場合は、次のコードを使用して現在のコンテキストおよび sgtk インスタンスにアクセスすることができます。 - -```python -import sgtk -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/images/sign_in_window.png b/docs/ja/quick-answers/developing/images/sign_in_window.png deleted file mode 100644 index b01bc705a..000000000 Binary files a/docs/ja/quick-answers/developing/images/sign_in_window.png and /dev/null differ diff --git a/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md b/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md deleted file mode 100644 index 55710bcc3..000000000 --- a/docs/ja/quick-answers/developing/maya-shelf-app-launcher.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Maya で Toolkit アプリを起動するシェルフ ボタンを追加するにはどうすればいいですか? -pagename: maya-shelf-app-launcher -lang: ja ---- - -# Maya で Toolkit アプリを起動するシェルフ ボタンを追加するにはどうすればいいですか? - -Maya で Toolkit アプリを起動するシェルフ ボタンを Maya に追加するのは非常に簡単です。次に、[Loader アプリ](https://developer.shotgridsoftware.com/ja/a4c0a4f1/)を起動するカスタム シェルフ ボタンの追加方法の例を示します。 - -{% include info title="注" content="これは、Toolkit が現在の Maya セッションで有効であることが前提です。このコード例では Toolkit をブートストラップしません。"%} - -Maya でスクリプト エディタを開き、次の Python コードを貼り付けます。  - -```python -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: - 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!") - - # 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) - - # now we have the command we need to call the registered callback - command['callback']() - -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) -``` - -このコードを選択して、カスタム シェルフにドラッグします。[カスタム シェルフ ボタンの使用方法に関する詳細については、Maya ドキュメント](https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/JPN/Maya/files/GUID-C693E884-F81A-4858-B5D6-3856EB8F394E-htm.html)を参照してください。 - -上部の `tk_app` と `call_func` の各変数を修正して、Maya で有効な Toolkit アプリを起動するには、このコード サンプルを使用できる必要があります。 diff --git a/docs/ja/quick-answers/developing/setting-software-environment-variables.md b/docs/ja/quick-answers/developing/setting-software-environment-variables.md deleted file mode 100644 index dec7ea9b2..000000000 --- a/docs/ja/quick-answers/developing/setting-software-environment-variables.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: ソフトウェアを起動する前に環境変数を設定するにはどうすればいいですか? -pagename: setting-software-environment-variables -lang: ja ---- - -# ソフトウェアを起動する前に環境変数を設定するにはどうすればいいですか? - -{% include product %} Toolkit では、起動プロセス中にフックを使用して環境を設定し、カスタム コードを実行することができます。 - -Nuke や Maya などのソフトウェアを {% include product %} Desktop またはブラウザ統合を使用して起動すると、`tk-multi-launchapp` が実行されます。 -このアプリには、ソフトウェアを起動し、{% include product %} 統合が予測どおりに起動したことを確認するという役割があります。このプロセス内にフックを使用して公開されている 2 つのポイントがあり、そこでカスタム コードを実行することができます。 - -## before_app_launch.py - -[`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) フックは、ソフトウェアを起動する直前に呼び出されます。このフックを使用すると、起動されたソフトウェアに渡す任意のカスタム環境変数を完全に設定することができます。 - -例: - -```python -import os -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="警告" content="ShotGrid で設定された環境変数を完全に再定義しないよう注意してください。 -たとえば、`NUKE_PATH` (Nuke の場合)、または `PYTHONPATH` (Maya の場合)にパスを追加する必要がある場合は、既存の値を置き換えるのではなく、そこにパスを追加するようにしてください。このための便利な方法が提供されています。 - -```python -tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") -``` -" %} - -## カスタム ラッパー - -スタジオによっては、環境変数の設定とソフトウェアの起動を処理するカスタム ラッパーが用意されている場合があります。このようなカスタム コードを使用して環境を設定する場合は、`Software` エンティティの[パス フィールド](https://developer.shotgridsoftware.com/ja/8085533c/#example-add-your-own-software)が実行可能なラッパーを示すように指定すると、`tk-multi-launchapp` によって代わりに実行されます。 - -{% include warning title="警告" content="この方法を使用する場合は、ShotGrid で設定された環境変数を保持するよう注意してください。そうしないと、統合が起動しなくなります。" %} \ No newline at end of file diff --git a/docs/ja/quick-answers/developing/sgtk-script-authentication.md b/docs/ja/quick-answers/developing/sgtk-script-authentication.md deleted file mode 100644 index 6eca8879f..000000000 --- a/docs/ja/quick-answers/developing/sgtk-script-authentication.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: default -title: カスタム スクリプトで認証とログイン資格情報を使用するにはどうすればよいですか? -pagename: sgtk-script-authentication -lang: ja ---- - -# カスタム スクリプトで認証とログイン資格情報を使用するにはどうすればよいですか? - -## エラー メッセージ -スクリプトで次のようなエラーが表示された場合は、スクリプトと {% include product %} サイトの通信が許可されていないことを意味します。 - -```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 -# Import the Toolkit API so we can access Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either programmatically or, in this -# case, interactively. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Optionally clear the current user if you've already logged in before. -authenticator.clear_default_user() - -# Get an authenticated user. In this scenario, since we've passed in the -# CoreDefaultsManager, the code will first look to see if there is a script_user inside -# shotgun.yml. If there isn't, the user will be prompted for their username, -# password and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating a Sgtk instance. -sgtk.set_authenticated_user(user) - -# -# Add your app code here... -# -# When you are done, you could optionally clear the current user. Doing so -# however, means that the next time the script is run, the user will be prompted -# for their credentials again. You should probably avoid doing this in -# order to provide a user experience that is as frictionless as possible. -authenticator.clear_default_user() -``` - -`QApplication` が利用可能な場合は、次のような結果が得られます。 - -![](./images/sign_in_window.png) - -{% include info title="注" content="ダウンロードした Toolkit API (`sgtk` パッケージ)を使用して別の環境設定にブートストラップする場合のように、環境設定に関連付けられていない Toolkit API を読み込む場合は、`CoreDefaultsManager` を作成しないでください。代わりに、既定のマネージャを渡さずに、`ShotgunAuthenticator()` のインスタンスを作成します。 -```python -authenticator = ShotgunAuthenticator() -``` -" %} - -## ユーザ向け以外のスクリプト -レンダリング ファームやイベント ハンドラなど、スクリプトがユーザ向けではない場合は、Sgtk/Tank インスタンスを作成する前に、最初に以下を追加します。 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either interactively or, in this -# case, programmatically. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Toolkit", - api_key="4e48f...." -) - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -{% include info title="注" content="[ユーザ向けのスクリプト](#user-facing-scripts)のセクションの末尾で示したように、読み込んだ `sgtk` パッケージがスタンドアロンである場合や、環境設定から取得したものでない場合は、既定のマネージャを作成しないでください。また、`create_script_user()` メソッドに `host` kwarg を指定する必要があります。 - -```python -user = authenticator.create_script_user( - host=\"https://yoursite.shotgunstudio.com\", - api_script=\"Toolkit\", - 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 deleted file mode 100644 index 99e81768c..000000000 --- a/docs/ja/quick-answers/developing/toolkit-core-event-daemon.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: default -title: ShotGrid のイベント デーモンを使用してさまざまな Toolkit コア モジュールをロードするにはどうすればいいですか? -pagename: toolkit-core-event-daemon -lang: ja ---- - -# shotgunEvent デーモンを使用してさまざまな Toolkit コア モジュールをロードするにはどうすればいいですか? - -**[Benoit Leveau @ Milk VFX](https://github.com/benoit-leveau) の協力に感謝します。** - -## 問題 - -Toolkit の sgtk API はプロジェクト中心です。つまり、API を使用するプロジェクトから明示的に API を読み込まなければなりません。つまり、1 つの Python セッションで複数のプロジェクトに対して sgtk API 操作を使用すると、Python では同じ名前のモジュールを 1 回しか読み込めないため、問題が発生します。 - -[{% include product %} Event デーモン](https://github.com/shotgunsoftware/shotgunEvents) を使用している場合、特定のイベントについてはプラグイン内で Toolkit のアクションを実行することができます。 これは、Python がモジュールを一度しか読み込まないため少々厄介です。そのため、プロジェクト A の Toolkit Core API をプラグインの初回実行時に読み込む場合、このバージョンはデーモンの存続期間中読み込まれたままになります。つまり、プラグインに割り当てられる次のイベントがプロジェクト B 用である場合、プロジェクト A の Core API を使用してプロジェクト B の新しい Toolkit オブジェクトのインスタンスを作成しようとすると、Toolkit にエラーが表示されます。 - -**一元管理設定を使用する場合の問題の例:** - -- イベント 123 はプロジェクト A 用である。 -- プロジェクト A 用の Core API が `/mnt/toolkit/projectA/install/core/python` に配置されている。 -- このディレクトリの先頭に `sys.path` を追加する。 -- `import sgtk` でこの場所から読み込む。 -- この Core API を使用して Toolkit のインスタンスを作成していくつかのアクションを実行する。 -- `sys.path` から Core API ディレクトリを取り出す。 -- イベント 234 はプロジェクト B 用である。 -- プロジェクト B 用の Core API が `/mnt/toolkit/projectB/install/core/python` に配置されている。 -- このディレクトリの先頭に `sys.path` を追加する。 -- Python に sgtk が既に読み込まれていると表示されるため、`import sgtk` は何も実行しない -- この Core API を使用して Toolkit のインスタンスを作成していくつかのアクションを実行する。 -- これにより、Toolkit コアがアクションの実行対象のプロジェクト(B)とは異なるプロジェクト(A)用であるため、エラーが発生します。 - -## 解決策 - -次の例では、異なるバージョンのモジュールが既に読み込まれている場合にスクリプトやプラグインで正しいバージョンの sgtk コアを読み込む方法を説明します。元の読み込みのロードが解除され、Python のメモリから削除されるため、モジュールの新しいインスタンスを読み込んで適切に使用することができます。 - -```python -""" -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. -""" - -import os -import sys - - -def import_sgtk(project): - """ - Import and return the sgtk module related to a Project. - This will check where the Core API is located on disk (in case it's localized or shared). - It shouldn't be used to get several instances of the sgtk module at different places. - This should be seen as a kind of 'reload(sgtk)' command. - - :param project: (str) project name on disk for to import the Toolkit Core API for. - """ - # 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) - del mod - - # check which location to use to import the core - python_subfolder = os.path.join("install", "core", "python") - is_core_localized = os.path.exists(os.path.join(shotgun_base, project, "install", "core", "_core_upgrader.py")) - if is_core_localized: - # the core API is located inside the configuration - core_python_path = os.path.join(shotgun_base, project, python_subfolder) - else: - # the core API can still be localized through the share_core/attach_to_core commands - # so look in the core_Linux.cfg file which will give us the proper location (modify this - # to match your primary platform) - core_cfg = os.path.join(shotgun_base, project, "install", "core", "core_Linux.cfg") - if os.path.exists(core_cfg): - core_python_path = os.path.join(open(core_cfg).read(), python_subfolder) - else: - # use the studio default one - # this assumes you have a shared studio core installed. - # See https://developer.shotgridsoftware.com/b12f2510/#how-do-i-share-the-toolkit-core-between-projects - core_python_path = os.path.join(shotgun_base, "studio", python_subfolder) - - # 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 - - # Remove the TANK_CURRENT_PC env variable so that it can be populated by the new import - if "TANK_CURRENT_PC" in os.environ: - del os.environ["TANK_CURRENT_PC"] - - # now import the sgtk module, it should be found at the 'core_python_path' location above - import sgtk - return sgtk -``` - -## 分散設定 - -上の例では、[一元管理設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations)を使用していると想定しており、[分散設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)を使用している場合は、状況が多少異なります。分散設定用の sgtk API を読み込むには、[ブートストラップ API](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)を使用する必要があります。ブートストラップ API を使用する場合は、通常プロジェクト中心ではない sgtk API を読み込むことから始め、それを使用して特定のプロジェクトのエンジンをブートストラップします。ブートストラップ プロセスは sgtk モジュールのスワップ アウトを処理するので、ブートストラップ プロセスの最後にはエンジン オブジェクトがあります。ブートストラップの後に sgtk を読み込むと、プロジェクトに適した適切な sgtk モジュールが読み込まれます。上記の例のように複数のプロジェクトに対して sgtk をロードする必要がある場合は、代わりに複数のプロジェクトに対してブートストラップする必要があります。ここで少し問題になるのは、一度に実行できるエンジンは 1 つであるため、別のエンジンをロードする前に現在のエンジンを破棄する必要があることです。 - -{% include warning title="警告" content="設定をブートストラップする場合、設定をローカルにキャッシュし、すべての依存関係をダウンロードする必要があるため、処理が遅くなる可能性があります。Event デーモン プラグインのブートストラップはパフォーマンスに深刻な影響を与える可能性があります。考えられるアプローチの 1 つは、プロジェクトのブートストラップごとに別々の Python インスタンスを生成し、プラグインからの通信によりコマンドを送信することです。これにより、必要になるたびにプロジェクトをブートストラップし直す必要がなくなります。"%} - - -次に例を示します。 - -```python -# insert the path to the non project centric sgtk API -sys.path.insert(0,"/path/to/non/project/centric/sgtk") -import sgtk - -sa = sgtk.authentication.ShotgunAuthenticator() -# Use the authenticator to create a user object. -user = sa.create_script_user(api_script="SCRIPTNAME", - api_key="SCRIPTKEY", - host="https://SITENAME.shotgunstudio.com") - -sgtk.set_authenticated_user(user) - -mgr = sgtk.bootstrap.ToolkitManager(sg_user=user) -mgr.plugin_id = "basic." - -engine = mgr.bootstrap_engine("tk-shell", entity={"type": "Project", "id": 176}) -# import sgtk again for the newly bootstrapped project, (we don't need to handle setting sys paths) -import sgtk -# perform any required operations on Project 176 ... - -# Destroy the engine to allow us to bootstrap into another project/engine. -engine.destroy() - -# now repeat the process for the next project, although we don't need to do the initial non-project centric sgtk import this time. -# We can reuse the already import sgtk API to bootstrap the next -... -``` - -{% include info title="注" content="一元管理設定もブートストラップすることができるので、両方の設定が混在する場合は別の方法は必要ありません。"%} \ No newline at end of file diff --git a/docs/ja/quick-answers/developing/update-config-with-api.md b/docs/ja/quick-answers/developing/update-config-with-api.md deleted file mode 100644 index 31a7946c0..000000000 --- a/docs/ja/quick-answers/developing/update-config-with-api.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: API を使用して Toolkit の設定をプログラムによって更新するにはどうすればいいですか? -pagename: update-config-with-api -lang: ja ---- - -# API を使用して Toolkit の設定をプログラムによって更新するにはどうすればいいですか? - -## アプリ、エンジン、およびフレームワークを更新する -エンジン、アプリ、およびフレームワークのすべてをプログラムによって最新バージョンに更新する場合は、次のコードを使用できます。 - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("updates") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="注意" content="これにより、追加の操作や確認を行うことなく、このパイプライン設定のエンジン、アプリ、およびフレームがすべて最新バージョンに更新されます。作業を進める前にこの操作を把握してください。"%} - -## コアを更新する - -スクリプトからプロジェクトのコア バージョンを非インタラクティブに更新する場合は、次のコードを使用できます。 - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("core") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="注意" content="これにより、追加の操作や確認を行うことなく、Toolkit コアが最新バージョンに更新されます。このコードを実行しているコアが共有コアの場合は、このコア バージョンを共有するすべてのプロジェクトで使用されているコア バージョンが更新されます。作業を進める前にこの操作を把握してください。" %} - -関連トピック - -- [カスタム スクリプトによる認証とログイン資格情報](https://developer.shotgridsoftware.com/ja/724152ce/) diff --git a/docs/ja/quick-answers/images/search_community.gif b/docs/ja/quick-answers/images/search_community.gif deleted file mode 100644 index 4a6b86a1d..000000000 Binary files a/docs/ja/quick-answers/images/search_community.gif and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting.md b/docs/ja/quick-answers/troubleshooting.md deleted file mode 100644 index 0c724b012..000000000 --- a/docs/ja/quick-answers/troubleshooting.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: トラブルシューティング ガイド -pagename: quick-answers-troubleshooting -lang: ja ---- - -トラブルシューティング ガイド -=== - -問題のトラブルシューティングを目的としたクイック アンサーのコレクションです。 - -#### 一般的なトラブルシューティングのヘルプ - -- [パフォーマンスのトラブルシューティング](./troubleshooting/performance-troubleshooting.md) -- [デバッグ ログをオフにするにはどうすればいいですか?](./troubleshooting/turn-debug-logging-on.md) -- [リモート デバッグ](https://community.shotgridsoftware.com/t/remote-debugging/3869) -- [ログ ファイルはどこにありますか?](./troubleshooting/where-are-my-log-files.md) -- [Toolkit のログの仕組みと参照するログの確認方法](https://community.shotgridsoftware.com/t/how-do-the-toolkit-logs-work-and-how-do-i-know-which-one-to-look-at/6721) -- [設定の場所](https://community.shotgridsoftware.com/t/ive-asked-a-client-for-their-config-but-they-dont-know-where-it-is/6729) -- [メニュー、{% include product %} Desktop、または AMI で Toolkit アプリがロードされない、表示されない、欠落している場合のデバッグ方法](https://community.shotgridsoftware.com/t/how-to-debug-toolkit-apps-not-loading-showing-up-missing-in-the-menus-shotgun-desktop-or-the-amis/6739) -- [タスク/ステップがファイル名の一部としては存在しているのにコンテキストで見つからないのはなぜですか?](./troubleshooting/context-missing-task-step.md) -- [フォルダを登録解除する理由と方法](https://community.shotgridsoftware.com/t/toolkit-episode-sequence-shot-task/4604) -- [フォルダの登録を解除する代わりに、サイトから FilesystemLocations を削除できますか?](https://community.shotgridsoftware.com/t/unregistering-folders-in-tank-vs-moving-file-system-locations-to-trash/536) -- [分散設定を使用している場合にフォルダを登録解除するにはどうすればいいですか?](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config) - -#### エラー メッセージのガイダンス -- [`ASCII` codec can’t decode byte 0x97 in position 10: ordinal not in range](./troubleshooting/ascii-error-message.md) -- [Configurations does not point to a valid bundle on disk!](./troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md) -- [Cannot find procedure "MTsetToggleMenuItem"](./troubleshooting/mtsettogglemenuitem-error-message.md) -- [Could not resolve row id for path!](./troubleshooting/row-id-error-message.md) -- [data_handler_cache error message: ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog!](./troubleshooting/data-handler-cache-error-message.md) -- [Database concurrency problems: The path `` is already associated with {% include product %} entity ``](./troubleshooting/path-associated-error-message.md) -- [ERROR: App store does not contain an item named my-app](./troubleshooting/myapp-appstore-error-message.md) -- [[ERROR] Attempted to communicate without completing encryption handshake.](./troubleshooting/encryption-handshake-error-message.md) -- [error Invalid LUT selected : Gamma2.2](./troubleshooting/invalid-lut-error-message.md) -- [[ERROR] [PROXY] Error calling __commands::unreal_engine](./troubleshooting/unreal-proxy-error-message.md) -- [[ERROR publish_creation] ](./troubleshooting/publish-certificate-fail-error-message.md) -- [Error: {% include product %} tk-maya: An exception was raised from Toolkit](./troubleshooting/tk-maya-exception-error-message.md) -- [ERROR 18:13:28.365:Hiero(34236): Error! タスク タイプ](./troubleshooting/hiero-task-type-error-message.md) -- [Exception: Review submission failed. Could not render and submit the review associated sequence.](./troubleshooting/review-submission-error-message.md) -- [Windows パスが長すぎるためのエラー(256 文字を超過)](./troubleshooting/paths-long-error-message.md) -- [Failed to change work area - Error during execution of MEL script](。/troubleshooting/error-during-execution-mel-script.md) -- [Failed to create folders: Folder creation aborded](./troubleshooting/folder-creation-aborded.md) -- [The Frame Server has encountered an error.](./troubleshooting/frame-server-error.md) -- [ModuleNotFoundError](./troubleshooting/modulenotfounderror-error.md) -- [Maya で context.task を出力すると、空の「None」になる](./troubleshooting/maya-context-task-empty-none-error.md) -- [Python API で発生する SSL: CERTIFICATE_VERIFY_FAILED の問題の解決](./troubleshooting/fix-ssl-certificate-verify-failed.md) -- [ローカルな {% include product %} サイトで {% include product %} Desktop を使用しているときに CERTIFICATE_VERIFY_FAILED が表示される](./troubleshooting/certificate-fail-local-error-message.md) -- [SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol](./troubleshooting/eof-occurred-violation-protocol-tls.md) -- [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate](./troubleshooting/unable-to-get-local-issuer-certificate-error.md) -- [TankInitError: You are loading the Toolkit platform from the pipeline configuration located in](./troubleshooting/tankinit-error-pipeline-config-location.md) -- [TankError: Cannot resolve template data for context](./troubleshooting/tankerror-cannot-resolve-template-data-error.md) -- [TankError: Tried to resolve a path from the template](./troubleshooting/tankerror-tried-to-resolve-a-path.md) -- [Tk-desktop console silently ignoring errors](./troubleshooting/tk-desktop-console-silently-ignoring-errors.md) -- [SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)](./troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md) -- [TankError: Could not create folders on disk. Error reported: Critical! Could not update {% include product %} with folder data.](./troubleshooting/could-not-update-with-folder-data.md) -- [[WARNING] Storage root primary could not be mapped to a SG local storage](./troubleshooting/storage-root-primary-error-message.md) - - -#### ソフトウェア統合 -- [プロジェクト間でパイプライン設定を共有/更新する場合の推奨方法](https://community.shotgridsoftware.com/t/recommended-way-to-share-update-pipeline-configurations-between-projects/5609) -- [自宅で作業するユーザにパイプライン設定を配布する方法](https://community.shotgridsoftware.com/t/distributing-your-pipeline-configuration-to-users-working-from-home/7910) -- [一部のユーザの一元管理設定を分散設定に変換する方法](https://community.shotgridsoftware.com/t/turning-a-centralized-config-into-a-distributed-config-for-some-users/7744) -- [Windows で Qt の UI ファイルおよびリソース ファイルをコンパイルする方法](https://community.shotgridsoftware.com/t/how-to-compile-qt-ui-and-resource-files-on-windows/7099) -- [{% include product %} の UI に Toolkit コンテキスト メニュー項目を追加する方法](https://community.shotgridsoftware.com/t/toolkit-context-menu-items/8426) -- [Houdini {% include product %} 統合が起動しないのはなぜですか。](./troubleshooting/houdini-integrations-not-starting.md) -- [SG Desktop から Nuke や Maya などを起動したが {% include product %} Desktop から起動したが、{% include product %} のメニューにエントリが表示されない](./troubleshooting/menu-entries-missing-in-launched-dcc.md) -- [環境変数 NUKE_PATH を設定すると Nuke 統合の起動に失敗するのはなぜですか?](./troubleshooting/nuke-path-environment-variable.md) -- [2 つの機能拡張がインストールされている場合の Photoshop 統合のトラブルシューティング](./troubleshooting/two-photoshop-shotgun-extensions.md) -- [{% include product %} Toolkit を使用すると 3ds Max の起動時にクラッシュするのはなぜですか?](./troubleshooting/3dsmax-crashes-on-startup.md) -- [ソフトウェアの既定のバージョンを設定する方法](https://community.shotgridsoftware.com/t/setting-a-default-software-version/1116) -- [ローダー アプリで Alembic パブリッシュが表示されない理由](https://community.shotgridsoftware.com/t/why-is-the-loader-app-not-showing-my-alembic-publishes/906) -- [Toolkit がブートストラップする場合に、正しい PipelineConfiguration エンティティを決定するために使用される順序](https://community.shotgridsoftware.com/t/when-toolkit-bootstraps-what-order-is-used-to-determine-the-correct-pipelineconfiguration-entity/7400) -- [Photoshop で 2 つの異なる SG パネルが表示される理由](https://community.shotgridsoftware.com/t/why-do-i-get-two-different-sg-panels-in-photoshop/6976) -- [Photoshop 統合パネルがロード中に停止して「Some thing went wrong」が表示される](https://community.shotgridsoftware.com/t/photoshop-integration-panel-is-stuck-loading-some-thing-went-wrong/6977) -- [Desktop にソフトウェア エンティティが見つからない場合の修正方法](https://community.shotgridsoftware.com/t/shotgun-deskop-missing-software-entities-help/858) -- [Tank.template_from_path() が複数のテンプレートを返すことができない場合の対処法](https://community.shotgridsoftware.com/t/tank-template-from-path-cant-return-multiple-templates/614) -- [一連のショット(シーケンス全体)にアーティストの作業ファイルを段階的に取り込む方法](https://community.shotgridsoftware.com/t/create-first-maya-workfile/3029) -- [ユーザが tk-maya を起動したときに userSetup.py を制御する方法](https://community.shotgridsoftware.com/t/maya-usersetup-py/3993) -- [開発設定用の Tank コマンド](https://community.shotgridsoftware.com/t/tank-command-for-dev-config/3373) -- [アーティストが既存のパブリッシュを開いているときのみアクションを実行して、アーティストが既存の作業ファイルを開いているときはアクションを実行しないように、フックを使用して設定する方法](https://community.shotgridsoftware.com/t/open-from-publish-in-tk-multi-workfiles2-scene-operation-hooks/352) -- [フォルダ作成時に、エンティティ名の空白をハイフンではなくアンダースコアに変換する方法](https://community.shotgridsoftware.com/t/how-do-i-convert-white-spaces-in-entity-names-to-underscores-and-not-hyphens-during-folder-creation/48) - -#### ブラウザの統合 -- [ローカル ファイル リンクを使用できず、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) - -#### 回答が見つからない場合 -さらにトラブルシューティングを行う場合は、[コミュニティで回答を検索](https://community.shotgridsoftware.com/)することができます。 - -![コミュニティ](images/search_community.gif) diff --git a/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md deleted file mode 100644 index 9dccab3dc..000000000 --- a/docs/ja/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: ShotGrid Toolkit を使用する場合、3ds Max が起動時にクラッシュするのはなぜですか? -pagename: 3dsmax-crashes-on-startup -lang: ja ---- - -# {% include product %} Toolkit を使用する場合、3ds Max が起動時にクラッシュするのはなぜですか? - -{% include product %} Desktop または {% include product %} Web サイトから 3ds Max を起動すると、真っ白なダイアログが表示されて 3ds Max がフリーズするか、または次のメッセージが表示されます。 - - Microsoft Visual C++ Runtime Library (Not Responding) - Runtime Error! - Program: C:\Program Files\Autodesk\3ds Max 2016\3dsmax.exe - R6034 - 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 のバージョンの競合が原因です。  - -## 解決策 - -最初に、パイプライン設定の `config/hooks` フォルダに移動し、ファイル `before_app_launch.py` を作成します。そのファイル内に次のコードを貼り付けます。 - -```python - -""" -Before App Launch Hook -This hook is executed prior to application launch and is useful if you need -to set environment variables or run scripts as part of the app initialization. -""" -import os -import tank - -class BeforeAppLaunch(tank.get_hook_baseclass()): - """ - Hook to set up the system prior to app launch. - """ - def execute(self, **kwargs): - """ - The execute functon of the hook will be called to start the required application - """ - env_path = os.environ["PATH"] - paths = env_path.split(os.path.pathsep) - # Remove folders which have msvcr90.dll from the PATH - paths = [path for path in paths if "msvcr90.dll" not in map( - str.lower, os.listdir(path)) - ] - env_path = os.path.pathsep.join(paths) - os.environ["PATH"] = env_path -``` - -ここでファイルを保存します。 - -次に、パイプライン設定で `config/env/includes/app_launchers.yml` を開き、エントリ `launch_3dsmax` を探します。`hook_before_app_launch: default` を `hook_before_app_launch: '{config}/before_app_launch.py'` に置き換える必要があります。 - -これで {% include product %} と {% include product %} Desktop から 3ds Max を正しく起動できるようになりました。問題が解決しない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 diff --git a/docs/ja/quick-answers/troubleshooting/ascii-error-message.md b/docs/ja/quick-answers/troubleshooting/ascii-error-message.md deleted file mode 100644 index 994f93f5e..000000000 --- a/docs/ja/quick-answers/troubleshooting/ascii-error-message.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ascii codec can’t decode byte 0x97 in position 10 -pagename: ascii-error-message -lang: ja ---- - -# ASCII codec can’t decode byte 0x97 in position 10: ordinal not in range - -## 関連するエラーメッセージ: - -設定のクローン作成している場合 -- TankError: Could not create file system structure: `ascii`! codec can’t decode byte 0x97 in position 10: ordinal not in range(128) - -別のプロジェクトを使用してプロジェクト設定をセットアップしている場合 -- " ‘ascii’ codec can’t decode byte 0x97 in position 10: ordinal not in range(128)" - -## 修正方法: - -通常、「config」フォルダ内に Unicode または特殊文字が存在する場合は、このエラーが表示されます。ユーザが特殊文字を見つけることができるかどうかを確認するために、コメントを追加しました。 - -## このエラーの原因の例: - -この場合、エラーは、Windows がファイル名の末尾に接尾語 `–` を追加したことに起因していました。これらのファイルをすべて削除すると、機能するようになりました。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/ascii-problem/7688)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md deleted file mode 100644 index 9099c02d2..000000000 --- a/docs/ja/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: default -title: Linux で ShotGrid Desktop/ブラウザ統合の起動に失敗する -pagename: browser-integration-fails-linux -lang: ja ---- - -# Linux で {% include product %} Desktop/ブラウザ統合の起動に失敗する - -Linux で {% include product %} Desktop を初めて実行すると、次のいずれかのエラー メッセージが表示される場合があります。この場合、特定のエラーに合わせて次の手順を実行して問題が解決されるかどうかを確認します。 -問題が解決しない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -## 目次 -- [OPENSSL_1.0.1_EC または HTTPSConnection に関連する問題](#openssl_101_ec-or-httpsconnection-related-issues) -- [libffi.so.5 に関連する問題](#libffiso5-related-issues) -- [証明書検証の失敗に関連する問題](#certificate-validation-failed-related-issues) -- [互換性のない Qt バージョン](#incompatible-qt-versions) - -## OPENSSL_1.0.1_EC または HTTPSConnection に関連する問題 - -**エラー** - -``` -importing '/opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so': - /opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so: symbol ECDSA_OpenSSL, version OPENSSL_1.0.1_EC not defined in file libcrypto.so.10 with link time reference -AttributeError: 'module' object has no attribute 'HTTPSConnection' -``` - -**解決策** - -OpenSSL をインストールする必要があります。このためには、管理者として次のコマンドを実行します。 - -``` -$ yum install openssl -``` - -## libffi.so.5 に関連する問題 - -**エラー** - -``` -Browser Integration failed to start. It will not be available if you continue. -libffi.so.5: cannot open shared object file: No such file or directory -``` - -**解決策** - -libffi をインストールする必要があります。このためには、管理者として次のコマンドを実行します。 - -``` -yum install libffi -``` - -libffi をインストールしても問題が継続する場合は、次の symlink を作成して {% include product %} Desktop を再起動してください。 - -``` -sudo ln -s /usr/lib64/libffi.so.6.0.1 /usr/lib64/libffi.so.5 -``` - -上記の手順で成功したユーザもいますが、問題が解決しなかったユーザもいます。最新バージョンの {% include product %} Desktop には、現在調査している Web ソケット サーバとの依存関係がいくつか追加されています。 - -## 証明書検証の失敗に関連する問題 - -**考えられるエラー** - -``` -Browser Integration failed to start. It will not be available if you continue. -Error: There was a problem validating if the certificate was installed. -certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database. -``` - -**解決策** - -コンピュータに Google Chrome をインストールしている場合は、Google Chrome を起動してから {% include product %} Desktop を再起動します。問題が解決しない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -Chrome がインストールされていない場合は、端末を開いて、次のコマンドを実行します。 - -``` -ls -al $HOME/.pki/nssdb -``` - -ここで何か見つかった場合は、サポートまでご連絡ください。チケットに次のログ ファイルの内容を添付してください。 - -``` -~/.shotgun/logs/tk-desktop.log -``` - -何も見つからなかった場合は、次のコードを入力します。 - -``` -$ mkdir --parents ~/.pki/nssdb -$ certutil -N -d "sql:$HOME/.pki/nssdb" -``` - -パスワードは入力しないでください。 - -これで、{% include product %} Desktop が正しく起動されるようになります。 - -## 互換性のない Qt バージョン - -**考えられるエラー** - -互換性のない Qt ライブラリ(バージョン `0x40805`)とこのライブラリ(バージョン `0x40807`)を混在させることができない - -**解決策** - -多くの場合、互換のない Qt ライブラリをロードするオーバーライドが実行されると発生します。 -このエラーが発生しないようにするには、次のコマンドを使用して環境を修正します。 - -``` -unset QT_PLUGIN_PATH -``` 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 deleted file mode 100644 index bb5c993ae..000000000 --- a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: default -title: ローカル ファイル リンクを使用できず、Chrome から Toolkit アプリケーションを起動できない -pagename: cant-use-file-linking-toolkit-app-chrome -lang: ja ---- - -# ローカル ファイル リンクを使用できず、Chrome から Toolkit アプリケーションを起動できない - -## 概要 - -{% include product %} のアクション メニューで Toolkit アプリケーションのリストが表示されなかったり、{% include product %} Desktop が動作していてもローカル ファイル リンクを使用するときにエラーが発生したりする場合があります。 - これは Chrome での {% include product %} Desktop のブラウザ統合のトラブルシューティングに関するガイドです。皆さんの役に立つことを願っています。[Firefox のための個別のガイドがあります](./cant-use-file-linking-toolkit-app-firefox.md)。 - -- [問題を診断する](#diagnosing-the-issue) -- [証明書問題をすばやく修正する方法](#how-to-quickly-fix-certificate-issues) -- [すべてのプラットフォームの ERR_CERT_COMMON_NAME_INVALID または ERR_SSL_SERVER_CERT_BAD_FORMAT を修正する](#fixing-neterr_cert_common_name_invalid-and-err_ssl_server_cert_bad_format-on-all-platforms) -- [Windows で ERR_CERT_AUTHORITY_INVALID を修正する](#fixing-neterr_cert_authority_invalid-on-windows) - -## 問題を診断する - -### {% include product %} Desktop は動作していますか? - -もちろん、そうだと思います。既に確認済みだと思いますが、念のためお尋ねしました。:) - -### {% include product %} Desktop の起動後に Chrome を再起動しましたか? - -{% include product %} Desktop が証明書を登録する前に Chrome を起動した場合({% include product %} Desktop を初めて起動した場合にのみ発生し、その後は問題になりません)、Chrome は期限切れの証明書のコピーを使用し、{% include product %} Desktop への接続を拒否します。すべてのタブを閉じても Chrome が終了するとは限らないため、アドレス バーに [chrome://restart](chrome://restart) と入力して[Enter]キーを押すことをお勧めします。これにより、Chrome に関連するすべてのプロセスを終了し、Chrome を再起動させます。 - -### ファイアウォール ソフトウェアを使用していますか? - -ファイアウォール ソフトウェアが localhost またはポート 9000 との接続を妨げていないことを確認します。 - -### Chrome が証明書を拒否していますか? - -Chrome が証明書を受け入れていることを確認するには、https://localhost:9000 を参照します。これは、ローカル ファイル リンクを使用して Toolkit アプリケーションを起動するために {% include product %} Web サイトがアクセスを試みるアドレスです。通常、次のメッセージが表示されます。 - -![Autobahn Python メッセージ](images/autobahn-python.png) - -または、次のいずれかのメッセージが表示された場合は、証明書の登録プロセスに問題があったことを示しています。  - -![接続はプライベート メッセージではありません](images/your-connection-is-not-private-chrome.png) - -![安全な接続メッセージを提供できません](images/cant-provide-sceure-connection-chrome.png) - -## 証明書問題をすばやく修正する方法 - -この問題を回避する最も簡単な方法は、**ADVANCED** と **Proceed to localhost (unsafe)** をクリックすることです。これにより、Chrome は証明書を承認していることを把握でき、{% include product %} Web サイトが {% include product %} Desktop と通信できるようになります。 - -{% include info title="注" content="このため、Web ブラウザと ShotGrid Desktop 間の接続のみが有効になります。信頼設定は 2 つのアプリケーション間のトラフィック フローを許可しますが、**インターネット上の他のサーバの信頼性を暗示しているわけではありません**。残念なことに、問題を抱えたすべてのコンピュータにこのプロセスを繰り返し適用する必要があります。問題が解決されない場合、またはすべてのユーザに展開するには複雑すぎる場合は、次の手順を試すことをお勧めします。"%} - -{% include info title="注" content="この手順は **ERR_SSL_SERVER_CERT_BAD_FORMAT** エラーには適用されません。以下の説明のとおりに証明書を再生成する必要があります。"%} - -## すべてのプラットフォームの NET::ERR_CERT_COMMON_NAME_INVALID と ERR_SSL_SERVER_CERT_BAD_FORMAT を修正する - -Chrome は自己署名証明書のセキュリティを定期的に更新しますが、ブラウザ統合がこの更新で壊れることがあります。残念ながら、このような問題を解決するには証明書の certificate_path を再生成するしかありません。 - -証明書を再生成するには、{% include product %} Desktop のユーザ メニューの **[詳細設定] (Advanced)**セクションにある **Regenerate Certificates** オプションを選択します。(このオプションが表示されない場合は、ロック解除のために `tk-desktop` エンジンを更新してください。) - -証明書の再生成を確定すると、証明書を初めて生成したときのように一連のダイアログが表示されます。Windows と macOS で、Windows Certificate Store または macOS キーチェーンの更新を求めるプロンプトが 2 回表示されます。1 回目は古い証明書の削除のときで、2 回目は新しい証明書の登録のときです。Linux では、確認なしで登録されます。登録されると、{% include product %} Desktop が再起動されます。 - -{% include product %} Desktop の準備が完了したら、Chrome が完全にシャットダウンしてその証明書キャッシュがクリアされるように、アドレス バーに [chrome://restart](chrome://restart/) と入力して Chrome を再起動することをお勧めします。 - -コンピュータがインターネットに接続されておらず、更新をダウンロードできない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -## Windows で NET::ERR_CERT_AUTHORITY_INVALID を修正する - -特定の状況において、Windows で証明書の読み込みが成功した場合でも、証明書を必要とするアプリケーションがその証明書を使用できないことがあります。これは Windows の証明書ダイアログにアクセスすると確認できます。アクセスするには、[Windows]キーを押してから **インターネット オプション** と入力します。**[インターネットのプロパティ] (Internet Properties)**ダイアログで**[コンテンツ] (Content)**タブに切り替え、**[証明書] (Certificates)** ボタンをクリックします。最後に、**[信頼されたルート証明機関] (Trusted Root Certification Authorities)** をクリックし、**localhost** を探します。 - -![インターネット オプションの検索ウィンドウ](images/windows-search-internet-options.png) - -![インターネット プロパティの[コンテンツ] (Content)タブ](images/windows-internet-properties.png) - -![Windows 証明書](images/windows-certificates.png) - -エントリが見つからない場合は、Windows ドメインまたはローカル コンピュータのグループ ポリシーに問題がある可能性があります。問題がある場合は、[サポート チーム](https://knowledge.autodesk.com/ja/contact-support)に連絡することをお勧めします。 - -ここで、組織の Windows コンピュータを管理するユーザに連絡し、自己署名証明書を信頼しないように Windows に指示しているグループ ポリシーがないかどうかを確認してもらうことをお勧めします。 - -## グループ ポリシーの問題を調査する - -コンピュータがドメイン上にある場合、管理者は[この StackExchange の投稿](https://superuser.com/questions/145394/windows-7-will-not-install-a-root-certificate/642812#642812)で説明されている手順を試してみてください。 - -コンピュータがドメイン上にない場合は、管理者によってコンピュータがまだロックされている可能性があります。次の手順には Windows の管理者アカウントが必要です。 - -[Windows]キーを押して、**mmc** と入力して[Enter]キーを押します。これにより、**Microsoft 管理コンソール**が起動します。このアプリケーションで、**[ファイル] (File)**メニューをクリックし、**[スナップインの追加と削除] (Add/Remove Snap-In)**を選択します。これにより、**[スナップインの追加と削除] (Add/Remove Snap-In)**ダイアログが表示されます。左側で、**Group Policy Object Editor** を探して選択し、**[追加 >] (Add >)**をクリックします。新しいダイアログが表示されたら、**[終了] (Finish)**をクリックして閉じます。最後に、**[スナップインの追加と削除] (Add/Remove Snap-In)**ダイアログで、**[OK]** をクリックします。 - -![Microsoft 管理コンソールの[スナップインの追加と削除](Add/Remove Snap-In)](images/microsoft-management-console.png) - -最後に、メイン ダイアログの左側から **[ローカル コンピュータ ポリシー/コンピューターの構成/Windows 設定/セキュリティ設定/公開キーのポリシー] (Local Computer Policy/Computer Configuration/Windows Settings/Security Settings/Public Key Policies)**に移動します。選択したら、中央のペインで **[証明書パス検証の設定] (Certificate Path Validation Settings)** をダブルクリックします。 - -![[証明書パス検証の設定] (Certificate Path Validation Settings)](images/certificate-path-valiation-settings.png) - -次のダイアログ ボックスで、**[これらのポリシーの設定を定義する] (Define these policy settings)** の選択が解除されていることを確認します。選択されている場合は、**[ユーザーが信頼するルート証明機関 (CA) が証明書の検証に使用されることを許可する(推奨)] (Allow user trusted root CAs to be used to validate certificates (recommended))** が選択されていることを確認します。完了後、**OK** をクリックすると、設定が保存されます。 - -ここで、Chrome のすべてのウィンドウを閉じて、Chrome を再起動する必要があります。上述のとおりに [chrome://restart](chrome://restart) を使用することをお勧めします。この操作は変更を有効にするために必要です。証明書リストを参照すると、**localhost** 証明書が表示されます。 - -この変更後にブラウザ統合を使用して問題が発生した場合、または元の設定が正しい場合は、[サポート チーム](https://knowledge.autodesk.com/ja/contact-support)までご連絡ください。 - -## 他の OS でのトラブルシューティング - -他の OS での {% include product %} Desktop 統合に問題がある場合は、この記事を更新してサポートできるように、[サポート チーム](https://knowledge.autodesk.com/ja/contact-support)までご連絡ください。 \ No newline at end of file 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 deleted file mode 100644 index c96c3e882..000000000 --- a/docs/ja/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: ローカル ファイル リンクを使用できず、Firefox から Toolkit アプリケーションを起動できない -pagename: cant-use-file-linking-toolkit-app-firefox -lang: ja ---- - -# ローカル ファイル リンクを使用できず、Firefox から Toolkit アプリケーションを起動できない - -## 概要 - -{% include product %} のアクション メニューで Toolkit アプリケーションのリストが表示されなかったり、{% include product %} Desktop が動作していてもローカル ファイル リンクを使用するときにエラーが発生したりする場合があります。 -これは Firefox での {% include product %} Desktop のブラウザ統合のトラブルシューティングに関するガイドです。皆さんの役に立つことを願っています。[Chrome のための個別のガイドがあります](./cant-use-file-linking-toolkit-app-chrome.md)。 - -## 問題を診断する - -### {% include product %} Desktop は動作していますか? - -もちろん、そうだと思います。既に確認済みだと思いますが、念のためお尋ねしました。:) - -### ファイアウォール ソフトウェアを使用していますか? - -ファイアウォール ソフトウェアが **localhost** またはポート **9000** との接続を妨げていないことを確認します。 - -### Firefox が証明書を拒否していますか? - -Firefox が証明書を受け入れていることを確認するには、https://localhost:9000 を参照します。これは、ローカル ファイル リンクを使用して Toolkit アプリケーションを起動するために {% include product %} Web サイトがアクセスを試みるアドレスです。通常、次のメッセージが表示されます。 - -![Autobahn Python メッセージ](images/autobahn-python.png) - -次のいずれかのメッセージが表示された場合は、証明書の登録プロセスに問題があったことを示しています。 - -![接続は安全なメッセージではありません](images/connection-is-not-secure.png) - -![安全な接続の失敗のメッセージ](images/connection-failed.png) - -## 「安全な接続ではありません」というエラーを解決する方法 - -証明書を受け入れられるように例外を Firefox ブラウザに追加する必要があります。**https://localhost:9000** にアクセスしたばかりの場合は、**[詳細] (Advanced)**をクリックし、**[例外を追加] (Add Exception)**ボタンをクリックして例外を追加するのが最も簡単な方法です。ダイアログが表示されます。 - -![Firefox に例外を追加](images/add-exception-firefox.png) - -**[証明書を取得] (Get Certificate)**、**[セキュリティ例外を承認] (Confirm Security Exception)**の順にクリックします。 証明書を信頼できないというメッセージは無視します。証明書は認証局ではなく {% include product %} Desktop によって生成されているため、問題ありません。 - -これで {% include product %} サイトからローカル ファイル リンクにアクセスし、Toolkit アプリケーションを起動できるようになるはずです。例外を追加しても問題が解決しない場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -## 「安全な接続ができませんでした」というエラーを解決する方法 - -**[メニューを開きます] (Open Menu)**ボタンをクリックして、**[基本設定] (Preferences)**を選択します。次に、左側で**[詳細] (Advanced)**を選択し、**[証明書] (Certificates)**、**[証明書を表示] (View Certificates)**の順に選択します。 - -![Firefox の詳細設定](images/firefox-advanced-settings.png) - -![Firefox ビューの証明書](images/firefox-view-certificates.png) - -**[サーバー証明書] (Servers)**セクションで項目をクリックし、`localhost` と入力するか、または単に **localhost:9000** という名前のエントリが表示されるまでスクロールします。このエントリを削除します。次に、**[認証局証明書] (Authorities)**タブに移動して `localhost` と再び入力します。もう一度、**localhost** エントリを持つ **Autodesk** セクションが表示されるまでスクロールします。**localhost** エントリを削除します。これが完了したら、**[OK]** をクリックして Firefox を再起動します。Firefox の再起動が完了したら、**https://localhost:9000** にアクセスします。次のメッセージが表示されます。 - -![接続は安全なメッセージではありません](images/connection-is-not-secure.png) - -ここで、例外を追加するために上記の手順を実行する必要があります。 - -これとは異なる画面が表示される場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/certificate-fail-local-error-message.md b/docs/ja/quick-answers/troubleshooting/certificate-fail-local-error-message.md deleted file mode 100644 index ae9c397ea..000000000 --- a/docs/ja/quick-answers/troubleshooting/certificate-fail-local-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: ローカルな {% include product %} サイトで {% include product %} Desktop を使用しているときに CERTIFICATE_VERIFY_FAILED が表示される -pagename: certificate-fail-local-error-message -lang: ja ---- - -# ローカルな {% include product %} サイトで {% include product %} Desktop を使用しているときに CERTIFICATE_VERIFY_FAILED が表示される - -## 使用例: - -{% include product %} のローカル インストールを使用する場合、このエラーは次の 2 つのシナリオで発生する可能性があります。 - -- {% include product %} Desktop にログインする場合 -- Toolkit AppStore からメディアをダウンロードする場合 - -## 修正方法: - -この問題を解決するには、すべての有効な CA のリスト(ユーザ独自のリストを含む)が格納されているファイルを {% include product %} API に提供する必要があります。通常は、最初に Python の `certifi` パッケージから[このファイル](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)の新しいコピーをダウンロードして、ファイルの末尾に独自の CA を追加することをお勧めします。次に、すべてのユーザがアクセスできる場所に、このファイルを保存します。最後に、各コンピュータで、環境変数 `SHOTGUN_API_CACERTS` をこのファイルのフル パスに設定します(例: `/path/to/my/ca/file.pem`)。 - -この操作を行うと、ローカル サイトで発生する `CERTIFICATE_VERIFY_FAILED` エラーが解決されます。{% include product %} サイトに接続できる場合でも、Toolkit AppStore から更新をダウンロードできないときは、`.pem` ファイルに Amazon CA が含まれていないことが原因である可能性があります。この状況は通常、空のファイルから開始して、カスタム CA のみを追加した場合に発生します。上記のリンク先ファイルなどから開始した場合は、問題が発生しません。 - -この情報は、ローカル インストールに*のみ*適用されることにご注意ください。ホスト サイトを使用しているときに、Windows 環境でこのエラーが発生する場合は、[このフォーラムの投稿](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860)を参照してください。エラーが別の OS で発生している場合は、[このドキュメント](https://developer.shotgridsoftware.com/ja/c593f0aa/)を参照してください。 - -## このエラーの原因の例: - -この問題は通常、HTTPS を使用するようにローカルサイトが設定されているにもかかわらず、ローカル サイトの証明書への署名に使用した認証局(これ以降、CA と表記)が認識されるように Toolkit が設定されていない場合に発生します。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/getting-certificate-verify-failed-when-using-shotgun-desktop-on-a-local-shotgun-site/10466)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md b/docs/ja/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md deleted file mode 100644 index b1733d697..000000000 --- a/docs/ja/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Configurations does not point to a valid bundle on disk! -pagename: configurations-does-not-point-to-valid-bundle-on-disk -lang: ja ---- - -# Configurations does not point to a valid bundle on disk! - -## 使用例 - -{% include product %} Desktop を初めてインストールするときに、プロジェクトを開くと、ファイル パスの後にこのエラーが表示されることがあります。 - -## 修正方法 - -プロジェクトのパイプライン設定エンティティが、Windows の設定のパス `...\{% include product %}\Configurations` を指しています。これが正しいパスでない可能性があるため、最初の手順として、このパスが存在することを確認するか、パスを修正してください。 - -また、このパスの場所にアクセスできない一元管理セットアップからアクセスしようとしている可能性もあります。この場合は、分散セットアップに切り替えると便利です。 - - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md b/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md deleted file mode 100644 index f198c0f4d..000000000 --- a/docs/ja/quick-answers/troubleshooting/context-missing-task-step.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: タスク/ステップがファイル名の一部としては存在しているのにコンテキストで見つからないのはなぜですか? -pagename: context-missing-task-step -lang: ja ---- - -# タスク/ステップがファイル名の一部としては存在しているのにコンテキストで見つからないのはなぜですか? - -Toolkit でフォルダを作成すると、エンティティに対する[パスが登録され](../administering/what-is-path-cache.md)、検索を実行できるようになります。これは、パスを指定することによって正しいコンテキストを決定できることを意味します。Toolkit はスキーマから生成されたフォルダに対してのみレジストリを作成するので、`templates.yml` ファイルでのみ定義されているファイル名やフォルダを考慮しません。スキーマに `Task` フォルダがない場合、Toolkit がファイルのタスクを知る必要があっても、パスだけではタスクを解決できない状況になる可能性があります。 - -**例** - -次の既定のスキーマ構造を取ります。`Asset` および `Step` フォルダはフォルダ作成プロセス中に登録されます。 - -![既定のアセット スキーマ](./images/asset-schema.png) - -次のようなテンプレートを使用してファイル パスを生成した場合: - - assets/{sg_asset_type}/{Asset}/{Step}/work/maya/{task_name}_{name}.v{version}.{maya_extension}` - -生成されたパスからコンテキストを見つけようとすると、タスクの名前がファイル パスにあるにもかかわらず、確立できるのは `Asset` と `Step` のみで、`Task`を確立することは**できません**。 - -**解決策** - -ほとんどのワークフローでは、スキーマに `Step` フォルダがあり、`Task` フォルダがないことは問題ありません。通常は、Workfiles アプリを使用して、実行するタスクを選択してからファイルを選択し、シーン ファイルを開きます。UI で選択したタスクは、開いたファイルのパスからコンテキストを把握しようとするのではなく、コンテキストを駆動するために使用されます。 - -ただし、次のような場合は、パスからコンテキストを取得できることが重要になります。 - -- 当社の自動コンテキスト切り替え機能を使用する場合。この機能を使用すると、Toolkit はユーザーが(Workfiles アプリを介さずに)ソフトウェアのネイティブの開くダイアログでファイルを開いたことを検出し、それに応じて現在のコンテキストを切り替えることができます。 -- 特定のファイルのコンテキストを知る必要があるスタンドアロン プ​​ロセスで API を使用する場合。 - -このような場合の解決策は、スキーマに `Task` フォルダを導入するか、自動コンテキスト切り替え機能を使用しないことです。API スクリプトの場合は、プロセスに必要なコンテキスト情報が既に存在し、この検索を実行する必要がないことを確認します。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/could-not-update-with-folder-data.md b/docs/ja/quick-answers/troubleshooting/could-not-update-with-folder-data.md deleted file mode 100644 index ed78fcc70..000000000 --- a/docs/ja/quick-answers/troubleshooting/could-not-update-with-folder-data.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Critical! Could not update ShotGrid with folder data. -pagename: could-not-update-with-folder-data -lang: ja ---- - -# TankError: Could not create folders on disk. Error reported: Critical! Could not update {% include product %} with folder data. - -## 使用例 - -オートデスクでは一元管理設定を使用して、既存のプロジェクトに Linux のサポートを追加していますが、ファイルシステムの設定に問題があります。 - -以下の作業は完了しています。 - -- 対応するルートを roots.yml に追加する -- パイプライン設定(install_location.yml など)に Linux パスを追加する -- ソフトウェア エンティティの Linux パスを追加する - -{% include product %} Desktop は正常に起動しますが、プログラムを起動しようとすると、次のように表示されます。 - -``` -TankError: Could not create folders on disk. Error reported: Critical! Could not update Shotgun with folder data. Please contact support. Error details: API batch() request with index 0 failed. All requests rolled back. -API create() CRUD ERROR #6: Create failed for [Attachment]: Path /mnt/cache/btltest3 doesn't match any defined Local Storage. -``` - -同様に、Tank フォルダやその他のコマンドを実行しようとすると、同じエラーが出力されます。 - -必要なすべての場所に Linux パスが追加されているはずです。データベースの同期に問題があるか確認してください。 - -`tank synchronize_folders` を実行すると、特に次のように出力されます。 - -- The path is not associated with any {% include product %} object. - -## 修正方法 - -[サイト基本設定](Site Preferences) > [ファイル管理](File Management)で、{% include product %} のローカル ストレージに Linux のパスを追加します。 - - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/data-handler-cache-error-message.md b/docs/ja/quick-answers/troubleshooting/data-handler-cache-error-message.md deleted file mode 100644 index 05e1c2761..000000000 --- a/docs/ja/quick-answers/troubleshooting/data-handler-cache-error-message.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog! -pagename: data-handler-cache-error-message -lang: ja ---- - -# data_handler_cache error message: ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2 Failed to create File Open dialog! - -## 使用例: - -このエラーは、Nuke などのアプリを起動したときに発生します。`data_handler_cache` の `get_children` メソッドに関するスタック トレースの最後にエラーが発生して、`tk-multi-workfiles2` の[File Open]ダイアログ ボックスが障害状態になり、操作できなくなりました。原因は、dict 値が予期されていたのに、文字列値が渡されたことです。 - -スタック全体は次のようになります。 - -``` -2020-12-07 09:42:03,571 [7192 ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2] Failed to create File Open dialog! -Traceback (most recent call last): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\work_files.py", line 115, in _show_file_dlg - self._dialog_launcher(dlg_name, app, form) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1822, in show_dialog - dialog, widget = self._create_dialog_with_widget(title, bundle, widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1684, in _create_dialog_with_widget - widget = self._create_widget(widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1658, in _create_widget - widget = derived_widget_class(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_open_form.py", line 46, in __init__ - FileFormBase.__init__(self, parent) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 64, in __init__ - self._my_tasks_model = self._build_my_tasks_model() - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 134, in _build_my_tasks_model - bg_task_manager=self._bg_task_manager) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\my_tasks\my_tasks_model.py", line 57, in __init__ - bg_task_manager=bg_task_manager - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\entity_models\extended_model.py", line 74, in __init__ - **kwargs - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_entity_model.py", line 70, in __init__ - self._load_data(entity_type, filters, hierarchy, fields) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_model.py", line 367, in _load_data - self._create_item - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler.py", line 266, in generate_child_nodes - for data_item in self._cache.get_children(unique_id): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler_cache.py", line 129, in get_children - for item in cache_node[self.CACHE_CHILDREN].itervalues(): -AttributeError: 'str' object has no attribute 'itervalues' -``` - -## エラーの原因 - -キャッシュに問題が発生したため、キャッシュを削除して修正する必要があります(次のセクションを参照)。 - -## 修正方法 - -キャッシュの場所と削除方法については、[こちら](https://developer.shotgridsoftware.com/ja/7c9867c0/)の手順に従ってください。全体を削除することはできますが、そうすると、すべてをダウンロードする必要が生じて、次回に Desktop を再起動するときに遅延が生じます。ルート キャッシュ フォルダ内にある {% include product %} サイトに由来する名前の付いたフォルダを削除することをお勧めします。この場合も若干の再構築が行われますが、それほど時間はかかりません。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/data-handler-cache-error/10955)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/encryption-handshake-error-message.md b/docs/ja/quick-answers/troubleshooting/encryption-handshake-error-message.md deleted file mode 100644 index 829652b5d..000000000 --- a/docs/ja/quick-answers/troubleshooting/encryption-handshake-error-message.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Attempted to communicate without completing encryption handshake -pagename: encryption-handshake-error-message -lang: ja ---- - -# `[ERROR]` Attempted to communicate without completing encryption handshake - -## 使用例: - -{% include product %} Desktop のブラウザ統合を起動して実行するときに問題が発生しました。 - -Shotgun Desktop を起動すると、Web サーバが実行されていることが通知されます。 - -``` -[ INFO] WebSocketServerFactory (TLS) starting on 9000 -[ INFO] Starting factory -``` - -...その後に、エラーが表示されないデバッグ レコードがロードされます。 - -{% include product %} サイトにログインすると、次のように表示されます。 - -``` -[ INFO] Connection accepted. -``` - -プロジェクトを右クリックすると、{% include product %} がアクションを取得していることが示され、次のログ出力が表示されます。 - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -{% include product %} でプロジェクトを開くと、次のログ出力が生成されます。 - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ WARNING] dropping connection to peer tcp4:127.0.0.1:52451 with abort=True: WebSocket closing handshake timeout (peer did not finish the opening handshake in time) -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -## 修正方法: - -プロキシ バイパス リストに `shotgunlocalhost.com` を追加します。 - -## このエラーの原因の例: - -プロキシ設定 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/shotgun-desktop-browser-integration/3574)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md b/docs/ja/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md deleted file mode 100644 index 3744e3c7b..000000000 --- a/docs/ja/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: default -title: EOF occurred in violation of protocol -pagename: eof-occurred-violation-protocol-tls -lang: ja ---- - -# SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol - -## 使用例 - -Desktop から Nuke 10.5 を開くと、次の SSL エラーが表示されます。 - -``` -[13:57.14] ERROR: Shotgun Error: [ERROR tk-nuke] App /media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2 failed to initialize. It will not be loaded. -Traceback (most recent call last): -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/engine.py”, line 2792, in __load_apps -app.init_app() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/app.py”, line 26, in init_app -self._tk_multi_workfiles = self.import_module(“tk_multi_workfiles”) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/bundle.py”, line 462, in import_module -self.__module_uid, None, python_folder, ("", “”, imp.PKG_DIRECTORY) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/init.py”, line 11, in -from . import tk_multi_workfiles -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/init.py”, line 14, in -from .file_open_form import FileOpenForm -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/file_open_form.py”, line 19, in -from .actions.file_action_factory import FileActionFactory -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/file_action_factory.py”, line 19, in -from .interactive_open_action import InteractiveOpenAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/interactive_open_action.py”, line 17, in -from .open_file_action import OpenFileAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/open_file_action.py”, line 22, in -from …work_area import WorkArea -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/work_area.py”, line 19, in -from .user_cache import g_user_cache -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 203, in -g_user_cache = UserCache() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 32, in init -self._current_user = sgtk.util.get_current_user(self._app.sgtk) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/util/login.py”, line 125, in get_current_user -“HumanUser”, filters=[[“login”, “is”, current_login]], fields=fields -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 882, in find_one -additional_filter_presets=additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1003, in find -additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1072, in _construct_read_parameters -params[“paging”] = {“entities_per_page”: self.config.records_per_page, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 471, in records_per_page -self._records_per_page = self._sg.server_info.get(“api_max_entities_per_page”) or 500 -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 763, in server_info -return self.server_caps.server_info -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 778, in server_caps -self._server_caps = ServerCapabilities(self.config.server, self.info()) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 833, in info -return self._call_rpc(“info”, None, include_auth_params=False) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/authentication/shotgun_wrapper.py”, line 63, in _call_rpc -return super(ShotgunWrapper, self)._call_rpc(*args, **kwargs) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3302, in _call_rpc -encoded_payload, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3442, in _make_call -return self._http_request(verb, path, body, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3496, in _http_request -resp, content = conn.request(url, method=verb, body=body, headers=headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 2192, in request -cachekey, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1845, in _request -conn, request_uri, method, body, headers -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1750, in _conn_request -conn.connect() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1399, in connect -self.key_password, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 109, in _ssl_wrap_socket -ssl_version=ssl_version, -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 381, in wrap_socket -ciphers=ciphers) -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 143, in init -self.do_handshake() -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 305, in do_handshake -self._sslobj.do_handshake() -SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol -``` - -これは、Nuke バージョン 11 または 12 では発生しません。 - -## 修正方法 - -表示されている問題の原因は、Nuke 10.x が TLS 1.2 に準拠していないことです。ソフトウェアは TLS に準拠している必要があります。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/sslerror-in-nuke-10-5/9299)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/error-during-execution-mel-script.md b/docs/ja/quick-answers/troubleshooting/error-during-execution-mel-script.md deleted file mode 100644 index 55b27e3d1..000000000 --- a/docs/ja/quick-answers/troubleshooting/error-during-execution-mel-script.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -title: Failed to change work area - Error during execution of MEL script -pagename: error-during-execution-mel-script -lang: ja ---- - -# Failed to change work area - Error during execution of MEL script - -## 使用例 - -ネットワークにアクセスできないフリーランス専用の新しいパイプライン設定を作成するときに、新しいルート名を作成して、別のパスを指すように指定しました。プロダクション パイプライン設定には、ファイル サーバを指すルート パスが含まれています。 - -ところが、Maya で `tk-multi-workfiles` を使用して新しいファイルを作成すると、次のエラーが発生します。 - -``` -Failed to change work area - Error during execution of MEL script: file: C:/Program files/Autodesk/Maya2019/scripts/others/setProject.mel line 332: New project location C:\VetorZero\work\Shotgun-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya is not a valid directory, project not created. -Calling Procedure: setProject, in file “C:\Program Files\Shotgun\c” set project(“C:\Vetorzero\work\SHOTGUN-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya”) -``` - -フォルダは作成されましたが、「maya」フォルダは作成されませんでした。 - -## 修正方法 - -フォルダ「maya」が誤って削除されていないか確認します。このエラーは、エラーが発生した場合に表示されています。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/new-file-maya-action-error/8225)を参照してください。 \ No newline at end of file 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 deleted file mode 100644 index 99cdf86ac..000000000 --- a/docs/ja/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: "Python API で発生する SSL: CERTIFICATE_VERIFY_FAILED の問題の解決" -pagename: fix-ssl-certificate-verify-failed -lang: ja ---- - -# Python API で発生する SSL: CERTIFICATE_VERIFY_FAILED の問題の解決 - -Python API は、API にバンドルされ、マシンに格納されている証明書のリストを利用して、{% include product %} で使用されているさまざまな Web サービスに接続します。ただし、新しい認証局がリリースされた場合は、これらが Python API または OS にバンドルされていないことがあります。 - -オートデスクの Python API には、2019 年 2 月 21 日時点の証明書の最新コピーが付属していますが、最新バージョンの API を使用している場合でも、API がこれらの証明書を使用して Amazon S3 にアップロードするのを妨害するバグが存在します。背景情報については、[この AWS に関するブログの投稿](https://aws.amazon.com/jp/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/)を参照してください。状況を一時的に修正するには、次の解決策を試してください。 - -{% include info title="注" content="これらは一時的な回避策です。オートデスクでは長期的な解決策を模索しています。"%} - -## 推奨される解決策 - -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 を起動します。 - -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 を閉じることができます。 - -## 代わりの解決策 - -### Python API を使用している場合 - -1. Python API **v3.0.39** にアップグレードします。 - -2. a. `SHOTGUN_API_CACERTS` を `/path/to/shotgun_api3/lib/httplib2/cacerts.txt` に設定します。 - - または - - b. スクリプトを更新し、`Shotgun` オブジェクトをインスタンス化するときに `ca_certs=/path/to/shotgun_api3/lib/httplib2/cacerts.txt` を設定します。 - -### Toolkit を使用している場合 - -1. Toolkit の展開方法に応じて、`tank core` コマンドを使用するか、パイプライン設定の `core/core_api.yml` ファイルを更新して、最新バージョンの Toolkit API にアップグレードします。 - -2. [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem) にある証明書の最新リストをダウンロードします。 - -3. `SHOTGUN_API_CACERTS` をこのファイルの保存場所に設定します。ただし、接続を作成するときに、Python API のように Toolkit から `ca_certs`ca_certs パラメータを指定することはできません。 - -### Python API または Toolkit を更新できない場合 - -1. [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem) にある証明書の最新リストをダウンロードします。 - -2. `SSL_CERT_FILE` 環境変数をこのファイルの保存場所に設定します。 diff --git a/docs/ja/quick-answers/troubleshooting/folder-creation-aborded.md b/docs/ja/quick-answers/troubleshooting/folder-creation-aborded.md deleted file mode 100644 index 59fa763ab..000000000 --- a/docs/ja/quick-answers/troubleshooting/folder-creation-aborded.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: Folder creation aborded -pagename: folder-creation-aborded -lang: ja ---- - -# Failed to create folders: Folder creation aborded - -## 使用例 - -現在は、Web インタフェースで新しいプロジェクトを作成してから、{% include product %} Desktop を使用して一元管理セットアップとして Toolkit を設定します。ただし、アセット名を編集しようとしても、機能は停止している(アーティストはファイルを開いて、Maya などの CCD で編集することができない)ため、「Failed to create folders」というエラーが返されます。{% include product %} から、Tank コマンドを再実行してアセットを登録解除し、再登録して修正するよう求められますが、どこで実行する必要があるかは不明です。 - -## 修正方法 - -プロジェクトに対して高度なセットアップ ウィザードを実行した場合、この操作を実行するオプションは意図的に削除されています。ただし、必要に応じて[プロジェクトを再セットアップ](https://developer.shotgunsoftware.com/ja/fb5544b1/)することができます。 - -エラー メッセージに記載された Tank コマンドを実行する必要があります。 - -``` -tank.bat Asset ch03_rockat_drummer unregister_folders -``` - -`tank.bat` はユーザがセットアップした設定のルートにあります。場所が不明な場合は、[こちらのトピック](https://community.shotgridsoftware.com/t/how-do-i-find-my-pipeline-configuration/191)が検索する際に役立ちます。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/error-in-toolkit-after-renaming-asset/4108)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/frame-server-error.md b/docs/ja/quick-answers/troubleshooting/frame-server-error.md deleted file mode 100644 index 6108fe0ac..000000000 --- a/docs/ja/quick-answers/troubleshooting/frame-server-error.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: The Frame Server has encountered an error -pagename: frame-server-error -lang: ja ---- - -# The Frame Server has encountered an error - -## 使用例 - -SG Desktop から Nuke を起動すると、「The Frame Server has encountered an error」というエラー メッセージが表示され、作業を続行できます。 - -完全なエラーは、次のとおりです。 - -``` -The Frame Server has encountered an error. - -Nuke 12.1v5, 64 bit, built Sep 30 2020. -Copyright (c) 2020 The Foundry Visionmongers Ltd. All Rights Reserved. -Loading - init.py -Traceback (most recent call last): -File “/Applications/Nuke12.1v5/Nuke12.1v5.app/Contents/Resources/pythonextensions/site-packages/foundry/frameserver/nuke/workerapplication.py”, line 18, in -from util import(asUtf8, asUnicode) -ImportError: cannot import name asUtf8 -cannot import name asUtf8 -``` - -## 修正方法 - -このエラーは、設定にまだ dev パスが含まれている場合に発生することがあります。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/the-frame-server-has-encountered-an-error/11192)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/hiero-task-type-error-message.md b/docs/ja/quick-answers/troubleshooting/hiero-task-type-error-message.md deleted file mode 100644 index 06685539c..000000000 --- a/docs/ja/quick-answers/troubleshooting/hiero-task-type-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: ERROR 18:13:28.365:Hiero(34236) Error! タスク タイプ -pagename: hiero-task-type-error-message -lang: ja ---- - -# ERROR 18:13:28.365:Hiero(34236): Error! タスク タイプ - -## 使用例: -`config_default2` に更新した後、nuke_studio が初期化されません。Nuke 12.0 Studio では、スクリプト エディタでエラーは発生しませんが、Nuke 11.1v3 では次のエラーが発生します。 - -``` -ERROR 18:13:28.365:Hiero(34236): Error! Task type tk_hiero_export.sg_shot_processor.ShotgunShotProcessor Not recognised -``` - -ロールバック後にエラーが発生しなかった場合も、tk-nuke エンジンは初期化されず、{% include product %} で何もロードされません。 - -[コミュニティの投稿](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)に完全なログが含まれているので、詳細を確認できます。 - -## エラーの原因 -Nuke Studio の起動として処理されず、標準的な Nuke の起動として処理されている可能性があります。 - -Nuke Studio ソフトウェア エンティティとパスが定義されていて、引数が `-studio` に設定されています。引数は `--studio` に設定する必要があります。 - -## 修正方法 -ソフトウェア エンティティの引数を `-studio` に設定する必要があります。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md deleted file mode 100644 index f9bedc9ec..000000000 --- a/docs/ja/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: Houdini ShotGrid 統合が起動しないのはなぜですか。 -pagename: houdini-integrations-not-starting -lang: ja ---- - -# Houdini {% include product %} 統合が起動しないのはなぜですか。 - - -ここでは、{% include product %} の統合で Houdini が起動しない場合に見られる、最も一般的な理由について説明します。この場合、Houdini は {% include product %} Desktop、{% include product %} の Web サイト、または tank コマンドからエラーなしで起動します。ただし、Houdini が起動すると、{% include product %} メニューまたはシェルフは表示されません。 - -この問題は、`HOUDINI_PATH` 環境変数がオーバーライドされていて、{% include product %} がその環境変数に基づいて起動スクリプト パスを渡そうとしているために発生することがよくあります。 - -Houdini を {% include product %} から起動すると、起動アプリケーション ロジックは {% include product %} ブートストラップ スクリプト パスを `HOUDINI_PATH` 環境変数に追加します。しかし、Houdini に [houdini.env ファイル](http://www.sidefx.com/docs/houdini/basics/config_env.html#setting-environment-variables)があると問題が発生することがあります。このファイルがあると、ユーザーは Houdini がロードされたときに存在する環境変数を設定できますが、ファイルに定義されている値によって現在のセッションの既存の環境変数が上書きされます。 - -これを修正するには、その変数の新しい定義に既存の `HOUDINI_PATH` 環境変数を含めます。 - -たとえば、`houdini.env` ファイルに既に次のように記述されている場合: - - HOUDINI_PATH = /example/of/an/existing/path;& - -次のように、ファイルに定義されているパスの終端に `$HOUDINI_PATH;` と追加して保存する必要があります。 - - HOUDINI_PATH = /example/of/an/existing/path;$HOUDINI_PATH;& - -これにより、Houdini の起動時に {% include product %} の設定値が維持されます。 - -{% include warning title="注意" content="Windows では、`$HOUDINI_PATH` によって問題が発生することがあります。この変数によって Shotgun の統合へのブートストラップが数回試行され、次のようなエラーが表示されます。 - - Toolkit bootstrap is missing a required variable : TANK_CONTEXT - -このエラーが表示される場合は、代わりに `%HOUDINI_PATH%` を使用してください。"%} - -問題が解決しない場合は、[サポート チーム](https://knowledge.autodesk.com/ja/contact-support)に問い合わせて問題の診断を依頼してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/images/Thumbs.db b/docs/ja/quick-answers/troubleshooting/images/Thumbs.db deleted file mode 100644 index 085cb1bed..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/Thumbs.db and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/add-exception-firefox.png b/docs/ja/quick-answers/troubleshooting/images/add-exception-firefox.png deleted file mode 100644 index d175bb845..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/add-exception-firefox.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/asset-schema.png b/docs/ja/quick-answers/troubleshooting/images/asset-schema.png deleted file mode 100644 index c4ce80527..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/asset-schema.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/autobahn-python.png b/docs/ja/quick-answers/troubleshooting/images/autobahn-python.png deleted file mode 100644 index a3b57f906..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/autobahn-python.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png b/docs/ja/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png deleted file mode 100644 index 4c4dbc267..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png b/docs/ja/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png deleted file mode 100644 index c6d92e475..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/connection-failed.png b/docs/ja/quick-answers/troubleshooting/images/connection-failed.png deleted file mode 100644 index 13d4efc28..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/connection-failed.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/connection-is-not-secure.png b/docs/ja/quick-answers/troubleshooting/images/connection-is-not-secure.png deleted file mode 100644 index c0cbb1989..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/connection-is-not-secure.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png b/docs/ja/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png deleted file mode 100644 index a26130a2b..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/firefox-advanced-settings.png b/docs/ja/quick-answers/troubleshooting/images/firefox-advanced-settings.png deleted file mode 100644 index d90ebbb27..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/firefox-advanced-settings.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/firefox-view-certificates.png b/docs/ja/quick-answers/troubleshooting/images/firefox-view-certificates.png deleted file mode 100644 index 445c8f7b9..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/firefox-view-certificates.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/microsoft-management-console.png b/docs/ja/quick-answers/troubleshooting/images/microsoft-management-console.png deleted file mode 100644 index 19baa4f18..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/microsoft-management-console.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/photoshop-extension-panel.png b/docs/ja/quick-answers/troubleshooting/images/photoshop-extension-panel.png deleted file mode 100644 index f6c214304..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/photoshop-extension-panel.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg b/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg deleted file mode 100644 index 8e2bc3f25..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg b/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg deleted file mode 100644 index 4de3c3636..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg b/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg deleted file mode 100644 index 2b5fe9a7b..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg b/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg deleted file mode 100644 index ece427bb1..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png b/docs/ja/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png deleted file mode 100644 index faaa09de8..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png b/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png b/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png b/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png b/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png b/docs/ja/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png deleted file mode 100644 index 2a8ca0540..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/troubleshoot_powershell.png b/docs/ja/quick-answers/troubleshooting/images/troubleshoot_powershell.png deleted file mode 100644 index 09d3f2057..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/troubleshoot_powershell.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/windows-certificates.png b/docs/ja/quick-answers/troubleshooting/images/windows-certificates.png deleted file mode 100644 index 26af6bb10..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/windows-certificates.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/windows-internet-properties.png b/docs/ja/quick-answers/troubleshooting/images/windows-internet-properties.png deleted file mode 100644 index 920191b26..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/windows-internet-properties.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/windows-search-internet-options.png b/docs/ja/quick-answers/troubleshooting/images/windows-search-internet-options.png deleted file mode 100644 index bf0195c35..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/windows-search-internet-options.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/windows-setting-environment-variable.png b/docs/ja/quick-answers/troubleshooting/images/windows-setting-environment-variable.png deleted file mode 100644 index e38670e62..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/windows-setting-environment-variable.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png b/docs/ja/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png deleted file mode 100644 index a5f8e6626..000000000 Binary files a/docs/ja/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png and /dev/null differ diff --git a/docs/ja/quick-answers/troubleshooting/invalid-lut-error-message.md b/docs/ja/quick-answers/troubleshooting/invalid-lut-error-message.md deleted file mode 100644 index 0a73136fd..000000000 --- a/docs/ja/quick-answers/troubleshooting/invalid-lut-error-message.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Invalid LUT selected -pagename: invalid-lut-error-message -lang: ja ---- - -# error Invalid LUT selected : Gamma2.2 - -## 使用例: -ACES カラー管理プロジェクトで作業しているときに、既定の Toolkit パブリッシュを使用すると、エラー `Invalid LUT selected : Gamma2.2` が発生して失敗します。 - -## エラーの原因 -Nuke の Toolkit パブリッシュに QuickTime を作成するアプリ `tk-multi-reviewsubmission` が含まれていて、このアプリで既定で作成される QT は Nuke 標準カラー モデルで機能します。 - -## 修正方法 -ACES (ICIO モデルを想定)を使用しているため、`tk-multi-reviewsubmission` アプリでカラー スペース設定を変更するには、設定を引き継いで `codec_settings.py` フックに追加するだけで済みます。 - -コーデックは基本設定によって異なりますが、この例では `Output - sRGB Codec`を使用しています。そのため、`codec_settings.py` フック内のセットアップに適した場所に設定 `settings["colorspace"] = "Output - sRGB"` を追加します。(ここではすべての場所に追加しました) - -```python - settings = {} - if sys.platform in ["darwin", "win32"]: - settings["file_type"] = "mov" - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 changed the codec knob name to meta_codec and added an encoder knob - # (which defaults to the new mov64 encoder/decoder). - settings["meta_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - settings["codec"] = "jpeg" - settings["colorspace"] = "Output - sRGB" - - elif sys.platform == "linux2": - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 removed ffmpeg and replaced it with the mov64 writer - # http://help.thefoundry.co.uk/nuke/9.0/#appendices/appendixc/supported_file_formats.html - settings["file_type"] = "mov64" - settings["mov64_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - # the 'codec' knob name was changed to 'format' in Nuke 7.0 - settings["file_type"] = "ffmpeg" - settings["format"] = "MOV format (mov)" - settings["colorspace"] = "Output - sRGB" - - return settings -``` - -これで問題がなければ、Nuke でパブリッシュするときに、QT は ACES と互換性のあるカラースペースで作成されるようになります。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/what-to-do-when-publish-from-aces-nuke-script-fails-with-error-invalid-lut-selected-gamma2-2/197)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/maya-context-task-empty-none-error.md b/docs/ja/quick-answers/troubleshooting/maya-context-task-empty-none-error.md deleted file mode 100644 index 2e1dfb06a..000000000 --- a/docs/ja/quick-answers/troubleshooting/maya-context-task-empty-none-error.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: Maya で context.task を出力すると、空の「None」になる -pagename: maya-context-task-empty-none-error -lang: ja ---- - -# Maya で context.task を出力すると、空の「None」になる - -## 使用例 - -Maya で `context.task` を出力すると `empty “None”` になりますが、別のステップ/タスクで別のレイアウト ファイルを試すと、`context.task` の詳細が表示されます。`Open > Layout > new file` をナビゲートするときに `context.task` の詳細を出力することもできますが、[File Save]を使用してファイルを保存すると、`context.task` は「None」になります。 - -## 修正方法 - -動作しないショットの 1 つに対して[フォルダの登録解除](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config/189)を試して、フォルダの作成を再実行します。 - - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/context-task-none/3705)を参照してください。 \ No newline at end of file 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 deleted file mode 100644 index 349cde189..000000000 --- a/docs/ja/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Nuke や Maya などを ShotGrid Desktop から起動したが、ShotGrid のメニューにエントリが表示されない -pagename: menu-entries-missing-in-launched-dcc -lang: ja ---- - -# Nuke や Maya などを {% include product %} Desktop から起動したが、{% include product %} のメニューにエントリが表示されない - -{% include product %} メニューに表示されるアクションはコンテキストに応じて設定されます。つまり、利用可能なアクションのリストは、現在のコンテキストによって異なる可能性があります。コンテキストが間違っているためにアプリが表示されない可能性があります。 - -## 例 - -[{% include product %} Desktop](https://developer.shotgridsoftware.com/ja/d587be80/#getting-started-with-desktop) からアプリケーションを起動すると、既定ではプロジェクト環境が表示されます。この環境は、`config/env/project.yml` に格納されたパイプライン設定内の設定ファイルによって管理されます。ユーザーの作業のほとんどはこの環境では行わないため、多くのアプリでは操作用に設定されていません。 - -**既定の Maya プロジェクト アクション:** - -![{% include product %} メニューのプロジェクト アクション](images/shotgun-menu-project-actions.png) - -[{% include product %} Workfiles アプリ](https://developer.shotgridsoftware.com/ja/9a736ee3/)を使用すると、作業するアセット、ショット、またはタスクを選択できます。これにより、新しい適切な環境をロードし、多くのアプリで {% include product %} メニューのメニュー項目を有効にできます。 - -**既定の Maya アセット タスク アクション:** - -![{% 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 diff --git a/docs/ja/quick-answers/troubleshooting/modulenotfounderror-error.md b/docs/ja/quick-answers/troubleshooting/modulenotfounderror-error.md deleted file mode 100644 index f3557b655..000000000 --- a/docs/ja/quick-answers/troubleshooting/modulenotfounderror-error.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: ModuleNotFoundError -pagename: modulenotfounderror-error -lang: ja ---- - -# ModuleNotFoundError - -## 使用例 - -分散設定の場合に、エンジンの外部で `tk.templates` コマンドにアクセスするために `tk-shell` ブートストラップすると、このエラーが表示されます。[このドキュメント](https://developer.shotgridsoftware.com/ja/3d8cc69a/#part-2-logging)(パート 4)に従って、インストール フォルダから sgtk v0.19.18 を読み込むと、次のエラーが発生します。 - -``` -Traceback (most recent call last): - File ".../_wip/sgtk_bootstrap.py", line 9, in - import sgtk - File "L:/_tech/sgtk_sandbox/install/core/python\sgtk\__init__.py", line 16, in - import tank - File "L:/_tech/sgtk_sandbox/install/core/python\tank\__init__.py", line 58, in - from . import authentication - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\__init__.py", line 33, in - from .shotgun_authenticator import ShotgunAuthenticator - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\shotgun_authenticator.py", line 13, in - from .sso_saml2 import ( - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\__init__.py", line 15, in - from .core.errors import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\__init__.py", line 15, in - from .sso_saml2_core import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\sso_saml2_core.py", line 19, in - from Cookie import SimpleCookie -ModuleNotFoundError: No module named 'Cookie' -``` - -## 修正方法 - -この問題は、Python 3 の使用が原因である可能性があります。Python 2.7 には Cookie モジュールがありますが、3.x にはありません。したがって、この問題は python 2.7 を使用することで修正できます。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/bootstrap-sgtk-modulenotfounderror/11708)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md b/docs/ja/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md deleted file mode 100644 index b50bafbe0..000000000 --- a/docs/ja/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Cannot find procedure “MTsetToggleMenuItem” -pagename: mtsettogglemenuitem-error-message -lang: ja ---- - -# Cannot find procedure “MTsetToggleMenuItem” - -## 関連するエラーメッセージ: - -通常のスプラッシュ画面が表示されてから、ウィンドウ全体がロードされる直前までの間に Maya がクラッシュする。 -- Cannot find procedure "MTsetToggleMenuItem" - -## 修正方法: - -Maya を起動する前に before_app_launch フックでパスの一部が誤って削除されたために、Maya の起動時にエラーになる可能性があります。この場合、Python インストールを `PTHONPATH` に追加すると、Maya 2019 によるプラグイン パスの検索を防止することができます。 - -## このエラーの原因の例: -ユーザにはいくつかの問題がありました。このフックにより、`C:\Python27` が `PYTHONPATH` として設定され、この `PYTHONPATH` を使用してワークステーションが実際にインストールされたためです。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/tk-maya-cannot-find-procedure-mtsettogglemenuitem/4629)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/myapp-appstore-error-message.md b/docs/ja/quick-answers/troubleshooting/myapp-appstore-error-message.md deleted file mode 100644 index e41b5a0ac..000000000 --- a/docs/ja/quick-answers/troubleshooting/myapp-appstore-error-message.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: App store does not contain an item named my-app -pagename: myapp-appstore-error-message -lang: ja ---- - -# ERROR: App store does not contain an item named my-app - -## 修正方法: - -これは、カスタム アプリの場所の記述子に関係します。[このドキュメント](https://developer.shotgridsoftware.com/ja/2e5ed7bb/#part-6-preparing-your-first-release)を参照してください - -場所については、パス ディスクリプタを使用して my-app を設定します。詳細については[こちら](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)を参照してください。 - -## このエラーの原因の例: - -tk-multi-snapshot が Maya に表示されないため、tank validate を使用しようとすると、カスタム アプリを検証するときに、このアプリがアプリ ストアにないことを示すエラーが表示されます。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/tank-validate-errors-on-custom-apps/10674)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md deleted file mode 100644 index 04a1509ba..000000000 --- a/docs/ja/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: default -title: 環境変数 NUKE_PATH を設定すると Nuke 統合の起動に失敗するのはなぜですか? -pagename: nuke-path-environment-variable -lang: ja ---- - -# 環境変数 NUKE_PATH を設定すると Nuke 統合の起動に失敗するのはなぜですか? - -当社の統合では Nuke の起動時に `NUKE_PATH` 環境変数が設定され、Nuke の起動プロセス中にブートストラップ スクリプトが実行されます。[`before_launch_app.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) フックを実行する前に `NUKE_PATH` を明示的に定義するのは [`tk-multi-launchapp`](https://developer.shotgridsoftware.com/ja/1b9c259a/#set-environment-variables-and-automate-behavior-at-launch) です。 - -起動プロセス中に `os.environ['NUKE_PATH'] = "/my/custom/path"` などを使用してこの環境変数を設定している場合、{% include product %} の統合は開始されません。これは、起動スクリプトのパスを環境変数から削除したためです。 - -この機能を `tank.util` で使用すると、Toolkit ブートストラップへのパスを維持しながら、パスが環境変数 `NUKE_PATH` またはその先頭に追加されます。 - -```python -tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") -``` - -または、`prepend_path_to_env_var()` を使用してパスを先頭に追加できます。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/path-associated-error-message.md b/docs/ja/quick-answers/troubleshooting/path-associated-error-message.md deleted file mode 100644 index 6e8567feb..000000000 --- a/docs/ja/quick-answers/troubleshooting/path-associated-error-message.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: The path `` is already associated with {% include product %} entity `` -pagename: path-associated-error-message -lang: ja ---- - -# Database concurrency problems: The path `` is already associated with {% include product %} entity `` - -## 関連するエラーメッセージ: - -- Database concurrency problems: The path `` is already associated with {% include product %} entity ``. -- Could not resolve row id for path! - -## 例: - -このエラーは、Toolkit ユーザがフォルダの作成を試みたときに発生します。次に、完全なエラーを示します。 - -``` -ERROR: Database concurrency problems: The path -'Z:\projects\SpaceRocks\shots\ABC_0059' is already associated with -Shotgun entity {'type': 'Shot', 'id': 1809, 'name': 'ABC_0059'}. Please re-run -folder creation to try again. -``` -## エラーの原因 - -FilesystemLocation エンティティが既に含まれているフォルダに対してこのエンティティを作成しようとしているときに発生します。 - -## 修正方法 - -不正な FilesystemLocation エンティティをクリアします。エラーのある FilesystemLocation エンティティのセットに絞り込むことができた場合は、これらを削除するだけで済みます。通常はプロジェクトのすべてのパスが損なわれているため、すべてのパスを削除する必要があります。 - -- FilesystemLocation エンティティをクリアする方法: 理想的なのは、`tank unregister_folders` を実行できることです。これらすべてをクリアするには、tank `unregister_folders --all` を実行します。(`tank unregister_folders` のすべてのオプションでは、引数を指定しないで実行するだけで、使用上の注意事項が出力されます。) -- ただし、データベースは既に不安定な状態になっているため、この方法が機能しないか、部分的にしか機能しない場合があります。コマンドを実行したら、{% include product %} の FilesystemLocations に戻って、削除予定の内容が実際に削除されていることを確認します。削除されていない場合は、不適切なエンティティを選択し、手動でごみ箱に移動します。 - -この時点で、{% include product %} の FilesystemLocations はクリーンな状態ですが、アーティストのローカル キャッシュには変更が反映されていない可能性があります。最後の手順では、各ユーザのマシンのローカル キャッシュを実際に同期します。この操作を行うには、tank `synchronize_folders --full` を実行する必要があります。 - -これらの手順をすべて実行すると、パスのキャッシュは適切な状態になり、エラーは表示されなくなります。 - -## 関連リンク - -- [問題のあるコード](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [パス キャッシュとは何ですか? ファイルシステムの場所とは何ですか?](https://developer.shotgridsoftware.com/ja/cbbf99a4/) - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/paths-long-error-message.md b/docs/ja/quick-answers/troubleshooting/paths-long-error-message.md deleted file mode 100644 index d41feabf5..000000000 --- a/docs/ja/quick-answers/troubleshooting/paths-long-error-message.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: Windows パスが長すぎるためのエラー -pagename: paths-long-error-message -lang: ja ---- - -# Windows パスが長すぎるためのエラー(256 文字を超過) - -## 厳然たる事実 - -Windows のパス名に関する既定の制限である 255/260 文字は、非常に低い値です。この制限に関する Microsoft の情報については、[こちら](https://docs.microsoft.com/ja/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation)を参照してください。技術的な情報については、[こちら](https://docs.microsoft.com/ja/windows/win32/fileio/maximum-file-path-limitation)を参照してください。 - -## エラー - -このエラー自体はさまざまな方法で現れますが、通常は SG Desktop が設定を初めてロードして、バンドル キャッシュに項目をダウンロードしている間に発生します。Windows 10 の最新バージョンでエラーはわずかに改善されたように見えますが、多少意味不明なところがあります。次に、表示されるエラーの例をいくつか示します。 - -``` -[ WARNING] Attempt 1: Attachment download of id 3265791 from https://xxxxx.shotgunstudio.com failed: [Error 206] The filename or extension is too long: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\0933a8b9a91440a2baf3dd7df44b40ce\\bundle_cache\\git\\tk-framework-imageutils.git\\v0.0.2\\python\\vendors\\osx\\lib\\python2.7\\site-packages\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname' -[ WARNING] File 'c:\users\xxxxx\appdata\local\temp\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' -``` - -``` -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\123456789012a34b567c890d1e23456: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=uploaded_config&id=38&version=123456 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -``` - -``` -WARNING sgtk.core.util.shotgun.download Attempt 4: Attachment download of id 1182 from https://xxxxx.shotgunstudio.com failed: [Errno 2] No such file or directory: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\dd2cc0804122403a87ac71efccd383ea\\bundle_cache\\app_store\\tk-framework-desktopserver\\v1.3.1\\resources\\python\\build\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname\\_implementation.py' -WARNING sgtk.core.util.filesystem File 'c:\users\xxxxx\appdata\local\temp\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -ERROR sgtk.core.bootstrap.cached_configuration Failed to install configuration sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182. Error: Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Cannot continue. -``` - -## このエラーが発生する理由 - -Windows では、{% include product %} Desktop はデータを `%APPDATA%` フォルダ(通常は `C:\Users\jane\AppData\Roaming\Shotgun`)に保存します。標準の default2 Toolkit 設定を使用しているときは、ユーザ名が極端に長い場合を除いて、ほとんどの場合問題ありません。ただし、独自のアプリ、エンジン、またはフレームワークを作成する場合は、この問題が発生するリスクが高くなります。特に、(オートデスクと同様に)コードとの依存関係をバンドルしていて、バンドル内のディレクトリ ツリーの階層が深い場合はリスクが高くなります。 - -## 問題の回避策 - -この問題を解決するには、通常、環境変数 `$SHOTGUN_HOME` を `C:\SG` のような非常に短い値に設定します。これにより、SG Desktop は `C:\Users\jane\AppData\Roaming\Shotgun` でなく、`C:\SG` にデータを保存するようになるため、文字数が節約されます。制限内に収まるよう維持するには、通常はこの方法で十分です。環境変数については、[こちら](http://developer.shotgunsoftware.com/tk-core/initializing.html?#environment-variables)を参照してください。 - -### 将来の可能性 - -[こちら](https://docs.microsoft.com/ja/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later)に記載されているように、レジストリを更新することにより、新しいバージョンの Windows 10 でこの問題を軽減できる*可能性があります*。ただし、`longPathAware` の設定を利用することを指定するには、SG Desktop のマニフェスト ファイルを更新する必要もあります。私は Mac ユーザであるため、この内容が役に立たないかどうかは分かりません。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/errors-due-to-windows-paths-too-long-256-characters/10101)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md deleted file mode 100644 index 9aabcc869..000000000 --- a/docs/ja/quick-answers/troubleshooting/performance-troubleshooting.md +++ /dev/null @@ -1,227 +0,0 @@ ---- -layout: default -title: パフォーマンスのトラブルシューティング -pagename: performance-troubleshooting -lang: ja ---- - -# パフォーマンスのトラブルシューティング - -Toolkit の使用速度が低下することがあります。速度が低下する理由はさまざまです。サーバ速度やインターネット接続などのクライアント側インフラストラクチャの問題、Toolkit や {% include product %} が高いパフォーマンスで実行されるように設定されていない設定ベースの問題、さらに最適化を行う余地があるコード上の問題などがあります。 - -次に、チェック項目のクイック リストを示します。これらのチェック項目については、以下で詳細に説明します。 - -- アプリ、エンジン、フレームワーク、コア、{% include product %} Desktop が[最新](#keeping-up-to-date)であることを確認します。 -- 一般的な用途のときに、[デバッグ ログ](./turn-debug-logging-on.md)が無効になっていることを確認します。 -- [必要なフォルダのみを作成](#folder-creation-is-slow)し、フォルダ数を制限して、実際に必要な場合に限りフォルダが作成されるようにします。スキーマにフォルダを追加しすぎると、速度が低下します。 -- サーバにユーザ キャッシュを保存する、速度が低下することがあります。ユーザの {% include product %} キャッシュをリダイレクトするには、ローカル ドライブ上の場所を指定するように [`{% include product %}_HOME` の環境変数](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables)を設定します。 -- [アーティストが必要としていないコンテンツを除外するように、作業ファイルおよびローダー アプリを設定](#file-open-file-save-or-the-loader-app-is-slow)します。ステータスを基準とするフィルタを実行して、エンティティ リストを短くし、アーティストの現在のタスクに関連するエントリが表示されるようにします。 -- カスタム フックの有無を調べて、追加のオーバーヘッドがないか確認します。 - -次に、適切な方法と、速度が低下する一般的なシナリオを示します。このリストは、まだすべてを網羅するものではありません。新しいパターンが見つかったときに、適宜追加されます。このガイドを参照しても、現在発生している問題の根本的な原因が見つからない場合は、[サポート チケット](https://knowledge.autodesk.com/ja/contact-support)をお送りください。担当チームがサポートいたします。 - -目次: -- [一般的なお勧めの方法](#general-good-practice) - - [キャッシュの場所](#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) -- [[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) - -## 一般的なお勧めの方法 - -### キャッシュの場所 - - {% include product %} Toolkit は、[データをユーザのホーム ディレクトリにキャッシュ](../administering/where-is-my-cache.md) します。このキャッシュには、さまざまな SQLite データベース、およびキャッシュされたアプリと設定を含めることができます。通常、ユーザのホーム ディレクトリはマシンのローカル ハード ドライブに保存されますが、スタジオでは、ネットワーク上のストレージにこれらをリダイレクトすることが一般的に行われています。この方法の場合、パフォーマンスが低下することがあります。特に大きな影響を受けるのが、ブラウザの統合やフォルダの作成/検索に使用される SQLite データベースです。 - -ユーザ ディレクトリがサーバ上の場所に保存されている場合は、[`{% include product %}_HOME` の環境変数](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables) を使用して、{% include product %} Toolkit のキャッシュのパスを再設定することをお勧めします。`{% include product %}_HOME` 環境変数は、データおよびその他の項目の高速検索に使用されるバンドル キャッシュ、サムネイル、SQLite データベースなど、Toolkit がさまざまなデータをキャッシュする場所を設定する際に使用されます。 - -### デバッグ - -{% include product %} Toolkit でデバッグ ログを有効にして、さまざまなプロセスから詳細な出力を取得することができます。このようにすると、問題を診断するときに非常に便利です。ただし、デバッグ設定は、通常の日常的な用途のときは有効にならないように設計されています。ログの出力量が増えると、パフォーマンスが大幅に低下することがあります。 - -パフォーマンスの問題が発生した場合、特に、特定のマシンやユーザに限定された問題が発生する場合は、最初に[デバッグ ログ](./turn-debug-logging-on.md)が無効になっていることを確認してください。 - -### 最新の状態を保つ - -パフォーマンスの問題が発生した場合は、コア、アプリ、エンジン、およびフレームワークが最新状態になっていることを確認します。新しいリリースで修正プログラムや最適化が既に提供されていることがあります。 - -### 一元管理設定と分散設定 - -Toolkit の詳細設定は、[一元管理設定と分散設定](https://developer.shotgridsoftware.com/tk-core/initializing.html#the-toolkit-startup)の 2 つの方法で行うことができます。主な違いは、一元管理設定は通常、スタジオのネットワーク ストレージに配置されていて、すべてのユーザがアクセスできることです。一方、分散設定は一般にクラウド内に保存されていて、ユーザ単位でローカルにキャッシュされます。 - -この 2 つの方法の違いはパフォーマンス以外にもありますが、パフォーマンスに関しては長所と短所の両面があります。次の表に、純粋にパフォーマンスの観点から見た長所と短所を示します。 - -| | 利点 | 欠点 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **一元管理設定** | - 初期設定プロセスが完了すると、必要なすべてのものが既にダウンロードされていて、すべてのユーザが使用できる状態になっています。 | - 一元管理設定は通常、ネットワーク ストレージに保存されるため、Toolkit の一般的な用途のときにパフォーマンスが低下することがあります。 | -| | - 将来の更新は、一元管理された場所に 1 回ダウンロードするだけで済みます。 | - Toolkit の設定には多数の小さなファイルが含まれています。多数の小さなファイルにメタデータ操作を行うと、処理速度が大幅に低下し、サーバの負荷が増大することがあります。また、Toolkit を使用する読み取り操作と、サーバの一般的な用途における読み取り操作の負荷が増大すると、設定をすばやく読み取ることができなくなって、Toolkit のパフォーマンスが低下することがあります。 | -| **分散設定** | - キャッシュされたアプリ、エンジン、フレームワーク、およびコアは、他のローカルにキャッシュされた設定と共有できるような方法で保存されます。つまり、複数のプロジェクトを今後ロードするときに、これらが同じ依存関係を共有していれば、キャッシュ速度が上がる可能性があります。 | - 分散設定はユーザ単位でローカルにキャッシュする必要があります。この操作を行うには、通常、設定、および必要なすべてのアプリ、エンジン、フレームワーク、コアをダウンロードします。 | -| | - これらはローカル ハード ドライブ上のユーザ キャッシュに保存されるため、通常はサーバ速度よりもパフォーマンスが向上します。つまり、最初のキャッシュ以降のパフォーマンスは一元管理設定よりも高くなります。 | - このプロセスはシーンの背後でシームレスに行われますが、これらをダウンロードする初期コストがかかります。 | -| | | - 新しいバージョンの依存関係を指定するように設定を更新するたびに、設定と新しい依存関係の両方をキャッシュする必要があります。 | - -手短に言えば、ストレージは低速だが妥当な速度のインターネット接続を使用している場合は、分散設定が最適な設定になる可能性がありますが、サーバ ストレージのパフォーマンスが高く、インターネットのパフォーマンスが低い場合は、一元管理設定が適している可能性があります。 - -{% include info title="注" content="分散設定に興味はあっても、マシンごとに依存関係をダウンロードすることについて懸念を抱いている場合は、バンドル キャッシュのみを一元管理して、すべてのユーザで共有することができます。" %} - -分散設定を使用している場合、ユーザはキャッシュ内にまだ保存されていないデータのみダウンロードする必要があります。ユーザがデータをダウンロードすると、他のユーザもそのデータを利用できるようになります。このようにするには、各マシンの共有場所を指定するように、[`{% include product %}_BUNDLE_CACHE_PATH` の環境変数](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables)を設定します。 - -## ソフトウェアの起動速度が遅い - -Maya、Nuke、Houdini などのソフトウェアを起動するときに、{% include product %} を使用しない場合に比べて起動時間が長くなることがあります。{% include product %} を使用しない場合に比べて起動時間が長くなるのは通常のことですが、これらの時間が許容できないレベルまで増大することがあります(ソフトウェアによって異なりますが、通常は起動時間が 1 分未満であると予測しています)。ソフトウェアの起動には多くのプロセスが関係しているため、この問題を診断するのは面倒なことがあります。 - -### 診断 - -最初に行う必要があるのは、この問題が発生する場合の条件を特定することです。 - -1. **{% include product %} を使用しないで起動したときに低速になりますか?** - 明らかなことかもしれませんが、{% include product %} を使用して起動した場合のみ問題が発生することを確認することが重要です。 -2. **起動方法に関係なく低速ですか? つまり、SG Desktop から起動した場合と、ブラウザ統合を使用して SG サイトから起動した場合で違いはありますか?** - {% include product %} サイトから起動したときに低速になり、SG Desktop から起動したときに低速にならない場合は、ブラウザ統合に問題があるか、ディスク上にフォルダを作成するときに問題が発生している可能性があります。プロジェクト以外のコンテキストから起動した場合は、ディスク上に作成されるフォルダ数が増える可能性があるため、時間がかかることがあります。また、ソフトウェアが起動されるたびに、必要なフォルダの有無を確認することも重要です。 -3. **すべてのプロジェクトで発生しますか?** - 問題が発生しないプロジェクトがある場合は、設定方法に固有の問題である可能性があります。 -4. **1 日の特定の時点で発生しますか?** - 1 日の特定の時点で発生する場合は、1 日の特定の時間帯にサーバ使用量が増大しているなど、インフラストラクチャに対する要求が増加している可能性があります。 -5. **使用しているすべてのマシン/OS で発生しますか?** - 特定のマシンの速度が低下する場合、問題の原因は Toolkit の外部にある可能性があります。ただし、最初の手順として、このマシンに Toolkit のキャッシュを作成することをお勧めします。ソフトウェアおよび Python パッケージごとに異なるバージョンの OS が付属していて、特定のバンドルでパフォーマンスの問題が発生することがあります。特に、Windows で Samba (SMB)共有を使用している場合に、パフォーマンスの問題が発生するケースが見られます。このような問題の修正プログラムはありませんが、これを使用する場合にこの問題を認識することが大事です。この問題が特定の OS、Python パッケージ、またはソフトウェア バージョンに限定されていると判断される場合は、[サポート チーム](https://knowledge.autodesk.com/ja/contact-support)に問い合わせてさらに調査するよう依頼してください。 -6. **すべてのユーザで発生しますか?** - 上記と同様に、同じマシンを使用している別のユーザでは、この問題が発生しないことがあります。この場合は、まずユーザのローカル {% include product %} キャッシュをクリアします。また、通常のプロダクションでの用途に対してデバッグ ログが有効になっていないことを確認してください。パフォーマンスが低下しなくなります。 -7. **起動速度の低下は特定のアプリ/ソフトウェアに特有のものですか、それともすべてのアプリ/ソフトウェアで起動速度が異常に低下しますか?** - 特定のソフトウェアの起動速度が低下する場合は、設定に問題がある可能性があります。起動の前後に実行されるようにカスタム フックが設定されていて、パフォーマンス低下の原因となっている可能性があるかどうかを確認することをお勧めします。起動時に使用される一般的なフックは [`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)、およびコア フックの [`engine_init.py`](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/engine_init.py) です。ときどき、新しいバージョンのソフトウェアがリリースされ、Toolkit の統合の起動速度が突然大幅に低下することもあります。このような場合は、[サポート](https://knowledge.autodesk.com/ja/contact-support)に問い合わせて、この問題が認識されているかどうか、および既知の修正プログラムがあるかどうかを確認する必要があります。使用しているソフトウェア(パッチ/サービス パックが適用可能な場合は、これらを含む)のバージョン番号、および実行している Toolkit エンジンとコアのバージョンをお知らせください。 - -### 問題が発生するタイミング(起動前または起動後) - -上記の手順を行っても原因を絞り込むことができなかった場合は、次に、起動プロセスのどの段階で速度が低下するのかを確認します。Toolkit を介してソフトウェアを起動している場合は、一般に起動プロセスを 2 段階のプロセスにまとめることができます。 - -最初の手順では、いくつかの初期操作を実行します。たとえば、ソフトウェアの起動に必要な情報を収集したり、コンテキストからフォルダを自動的に作成し、その後でソフトウェアを実際に起動したりします。次に、起動プロセスの 2 番目の手順が行われ、ソフトウェアの起動後に Toolkit の統合が起動されます。 - -通常は、ログを調べなくても、プロセスの最初の手順と 2 番目の手順のどちらでパフォーマンスの問題が発生しているのかを確認できます。 - -- そのためには、ソフトウェアのスプラッシュ画面を観察して、この画面の起動時間が長いかを確認します。スプラッシュ画面の起動時間が長い場合は、問題が最初の手順で発生している可能性があります。 -- また、ソフトウェアの起動時間が比較的短いにもかかわらず、初期化が終了して {% include product %} メニューが表示された後に速度が低下することがあります。この場合は、2 番目の手順で問題が発生しています。 - -この情報を把握しておくと、この次の作業でログを確認する際に役立ちます。 - -### ログを調べる - -起動の最初の手順または 2 番目の手順のどちらで問題が発生しているのかを確認したら、調査対象のログを特定することができます。ログはエンジンごとに分かれているため、問題が起動前の段階で発生している可能性がある場合は、SG Desktop から起動しているのか、それとも SG サイトから起動しているのかに応じて、`tk-desktop.log` または `tk-{% include product %}.log` を調べる必要があります。 - -次に、デバッグ ログを有効にする必要があります。{% include info title="注" content="デバッグ ログが既に有効になっている場合は、[上記のとおり](#debugging)、これが動作低下の原因になっていることがあるため、デバッグ ログを有効にしないでテストしてください。" %} -デバッグ ログを有効にしたら、既存のログをクリアして、起動プロセスを再現する必要があります。ログ内のタイムスタンプを使用して、時間が急に変化している行を確認します。 - -たとえば、フォルダの作成中に、時間が 5 秒間突然変化している行がいくつかあります。 - - 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://knowledge.autodesk.com/ja/contact-support)に問い合わせて、この作業のサポートを依頼することができます。 - -### ソフトウェアの起動速度が低下する一般的な原因 - -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **インターネットの速度低下** | Toolkit のほぼあらゆる使用状況において {% include product %} サイトに接続して通信する必要がありますが、インターネットの速度が低下すると、この動作が影響を受けます。この場合は通常、ソフトウェアの起動だけでなく、他の状況においても、速度に関する問題が発生します。ただし、接続速度が低下するのではなく、接続が不安定になる場合は、起動時にパフォーマンスの問題が生じる可能性があります(大量の {% include product %} 通信がプロセスを通して行われるためです)。 | -| **サーバ アクセス速度の低下** | この問題は確実に起動時間に影響します。[一元管理設定](#centralized-configs-vs-distributed-configs)を使用している(設定が中央サーバに保存されている)場合は、設定ファイルを読み取るときに大量の I/O が発生することがあります。特に、ソフトウェアを起動すると、起動時の状況に応じてフォルダが作成されます。つまり、フォルダが作成されているかどうかが確認され、作成されていなければ作成されます。 | -| **フォルダの作成** | 上記のように、フォルダ作成が速度低下の一般的な原因になることがあります。[詳細については、以下のフォルダ作成時のパフォーマンスに関するトラブルシューティングを参照してください。](#folder-creation-is-slow) | - -## [File Open]、[File Save]、Loader アプリのいずれかで速度が低下する場合 - -最初に、問題となっているアプリの速度が低下する状況を絞り込んで、特定します。 - -- **アプリを起動するときに速度が低下しますか、それともタブ間で移動するときに低下しますか?** - - アプリは現在、極端に多くの情報を表示するように設定されている可能性があります。[マイ タスク] (My Tasks)タブやその他のタブは、リスト内の不要なエンティティ除外するように設定できます。たとえば、[保留中] (On Hold) (`hld`)や[最終] (Final) (`fin`)などの特定のステータスを持つタスクを除外できます。このようにすると、パフォーマンスが向上するだけでなく、アーティストは自分が必要としている情報のみを表示することができます。[Loader アプリ](https://developer.shotgridsoftware.com/ja/a4c0a4f1/)と Workfiles アプリの両方を除外できます。Workfiles には現在、フィルタに関する特定のドキュメント セクションが用意されていませんが、[階層設定](https://developer.shotgridsoftware.com/ja/9a736ee3/#step-filtering)中にフィルタを適用することができます。 - - File Open アプリの階層を、[この階層が展開されるまでサブ項目のロードを遅らせる](https://developer.shotgridsoftware.com/ja/9a736ee3/#deferred-queries)ように設定することもできます。これが既定の設定になっていますが、古い設定を使用している場合は、この設定を使用するように移行することができます。 - - デバッグ ログが有効になっていないことを確認します。デバッグ ログが有効になっていると、追加の I/O が大量に発生するため、速度が低下することがあります。これらのアプリには、大量のデバッグ出力が含まれています。 -- **ファイルを開く、保存する、または新規作成するときに速度が低下しますか?** - - シーンの操作やアクションのフックを引き継いで処理したかどうか、およびこれらの関数の前後に速度低下の原因となるカスタム動作が行われているかどうかを確認します。 - - ファイルを作成するときや、保存するときに、Workfiles はこのコンテキストに必要なすべてのフォルダが作成されていることを確認します。パフォーマンスの[問題](#folder-creation-is-slow)が発生する一般的な原因は、フォルダの作成です。 - -## フォルダ作成速度が低下する - -フォルダの作成は多くの要素で構成されていて、問題が発生したときに処理速度が低下する原因となることがあります。 - -フォルダの作成では、次の処理が行われます。 -- ローカル パス キャッシュを同期する -- 設定のスキーマを読み取る -- 状況に応じて作成する必要があるパスのリストを生成する -- ローカルに保存されたパス レジストリと比較してパスを確認する -- SG サイトとローカルな場所の両方に新しいパスが登録されていない場合は、登録を試みる -- フォルダの登録の有無に関係なく、このフォルダがディスク上に実際にあるかどうかを確認し、存在しない場合は作成する - -つまり、フォルダを作成すると、ディスクの I/O 使用量が大幅に増えるとともに、ローカル データベースへの書き込みと SG サイトとの通信が必要になります。 - -### I/O 使用量を制御する - -多数の小規模な読み取り/書き込み操作を処理するときに、ストレージの速度や効率が低下することがあるため、インフラストラクチャの効率化に役立つ手順を行うと、フォルダ作成の処理時間を短縮できます。ただし、できるだけ負荷を軽減するために Toolkit 設定側で試行できる手順があります。 - -最初に行うのは、この状況、および作業中の環境にとって重要なフォルダのみが作成されるように制限することです。たとえば、Maya でタスクやショットを操作している場合は、特定のショットおよびソフトウェアのフォルダのみを確認して、作成することが理想的です。 - -基本的に、作品を保存およびパブリッシュするのに最低限必要なフォルダを作成するようにします。 - -#### 親フォルダを使用して作成する - -スキーマ フォルダに適用できる [ `create_with_parent`設定](https://developer.shotgridsoftware.com/ja/82ff76f7/#create-with-parent-folder)があります。 -これを true に設定すると、フォルダが親フォルダであるときにそのフォルダが作成されるようになります。この設定を true に設定するときは、多数のフォルダが確認および作成されるという状況にならないように注意してください。 - -**例** - -シーケンス/ショットのフォルダ階層がある場合に、親のシーケンスを使用して作成するようにショット フォルダを設定すると、シーケンス フォルダを作成するときはいつでも関連するすべてのショットが確認され、これらのフォルダが作成されるようになります。 - -状況によってはこの方法が便利なことがありますが、多数のフォルダの確認と作成が一度に行われることがあります。このシナリオで、タスクまたはショットの作業ファイル内に新しいファイルを作成すると、ショットの親となるシーケンス フォルダが作成され、作業中のショットだけでなく、この子となるすべてのショット フォルダが作成されます - -{% include info title="注" content="ステップ スキーマ フォルダの設定は、既定で true になっています。" %} - -#### 作成の遅延 - -[`defer_creation` 設定](https://developer.shotgridsoftware.com/ja/82ff76f7/#workspaces-and-deferred-folder-creation)により、特定のエンジンが実行されている場合に限ってフォルダが作成されるように制限することで、フォルダの作成時期を調整することができます。カスタム名を使用し、[sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure) を使用してこの名前のフォルダが作成されるようにすることもできます。 - -**例** - -場合によっては、一連のフォルダの作成時期をパブリッシュ段階に限定する必要があります。この場合は、カスタム名を maya_publish という遅延キーワードに設定し、その後で API を使用してこのキーワードをエンジン名として持つフォルダを作成することができます。 -スキーマ内のフォルダは次のようになります。 - - # the type of dynamic content - type: "static" - # defer creation and only create this folder when Photoshop starts - defer_creation: "publish" - -その後、次のようなスクリプトを使用してフォルダを作成します。 - -```python -sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") -``` - -**拡張された例** - -フォルダを遅延することにした場合、プロジェクトのルートに動的でないフォルダが複数あれば、通常はこれらを 1 回のみ作成する必要があります。たとえば、[「editorial」および「reference」](https://github.com/shotgunsoftware/tk-config-default2/tree/master/core/schema/project)フォルダが既定の設定のスキーマのルートに配置されている場合は、通常、プロジェクトの開始時にこれらのフォルダを 1 回だけ作成しなければならないことがありますが、既定では、フォルダ作成を行うたびにこれらのフォルダの有無が確認されます。 - -この動作を制限するには、これらのフォルダの [yml ファイル](https://developer.shotgridsoftware.com/ja/82ff76f7/#static-folders)を作成して遅延キーワードを設定し、フォルダの作成が特定のエンジンで実行された場合、またはキーワードが渡された場合のみ、これらのフォルダが作成されるようにします。遅延キーワードを `tk-shell` に設定して、`tank folders` のような tank コマンドを使用してフォルダ作成を実行することができます。 - -これは、これらのフォルダ作成が tank コマンドを介して実行された場合に限り実行されることを意味します。tank コマンドは、プロジェクトを初めて設定するときに Toolkit 管理者が実行することができます。また、上の例のようなカスタム キーワードを使用してフォルダ作成を実行する、小規模なスクリプトを記述することもできます - -### フォルダを登録する - -フォルダ作成プロセス中にフォルダが[登録](../administering/what-is-path-cache.md)されるため、後でコンテキストを調べる際に登録されたパスを使用することができます。[上記](#folder-creation-is-slow)のように、この処理中に、レジストリが保存されている一元的な場所である {% include product %} サイトと通信する必要があります。ただし、ツールによる高速検索を有効にするために、これらのレジストリもローカルにキャッシュされます。 - -#### SQLite データベース - -ローカルな[パス キャッシュ](../administering/what-is-path-cache.md)は SQLite データベースを使用してデータを保存します。ネットワーク上のストレージにデータベースが保存されている場合は、データベースに対する読み取りおよび書き込みのパフォーマンスが大幅に低下することがあります。 - -#### 初期同期 - -プロジェクトに多数のフォルダが登録されている場合は(進行中のプロジェクトに新しいユーザが参加する場合など)、状況に応じて、ローカル キャッシュをゼロから生成しなければならないことがあります。この処理には非常に長い時間がかかることがあるため、このようなプロジェクトにはこの処理が 1 回だけ行われるように効率化されました。 - -以降の同期では、ローカル キャッシュとサイトのレジストリの間の差分のみが取得されます。ユーザがプロジェクトを操作する頻度が少なく、セッションの合間に多数のフォルダが作成されている場合は、すべてのデータをキャッシュする間の待ち時間が非常に長くなることがあります。 - -この場合にユーザが使用してきた方法の 1 つは、ローカル キャッシュの最新と見なされるバージョンをユーザのマシンに転送することでした。 - -{% include info title="注意" content="この方法は、プロジェクトに極めて多数のフォルダが作成されている場合に限って必要となります。" %} - -この更新プロセスは、コア フック cache_location.py を使用して自動的に実行できます。このフックを使用してキャッシュの場所を設定できますが、場所を変更しなくても、このフックを使用して path_cache.db ファイルの特定のバージョンを一元管理された場所からユーザの既定の場所にコピーして、負担のかかる完全同期を不要にすることができます。 - -一元的に保存されたパス キャッシュを定期的に更新するには、他のユーザのキャッシュから手動でコピーすることができますが、通常はスクリプトを使用して定期的に転送します。 - -{% include warning title="警告" content="cache_location.py フックを使用するとキャッシュの場所を設定できますが、すべてのユーザに単一の場所を指定する設定は避けてください。1 つまたは複数のプロセッサがデータベースを同時に編集しようとすると、データベースがロックされることがあります。"%} \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/publish-certificate-fail-error-message.md b/docs/ja/quick-answers/troubleshooting/publish-certificate-fail-error-message.md deleted file mode 100644 index 1d6f28ac3..000000000 --- a/docs/ja/quick-answers/troubleshooting/publish-certificate-fail-error-message.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: urlopen error SSL CERTIFICATE_VERIFY_FAILED certificate verify failed (_ssl.c:726) -pagename: publish-certificate-fail-error-message -lang: ja ---- - -# `[ERROR publish_creation] ` - -## 使用例 - -Houdini 17.5 でデジタル アセット用のツールを開発するためにビルド Toolkit アプリを使用しているときに、パブリッシュ ファイルを登録するフックを実行するとします。 - -スクリプトによって次のコードが実行されます。 - - args = { - "tk": self.parent.tank, - "context": self.parent.engine.context, - "path": esto['operator'], - "name": os.path.basename(esto['operator']), - "version_number": 6, - "published_file_type": "Library item", - } - print 'sgtk: ', sgtk.__file__ - sg_publish = sgtk.util.register_publish(**args) - -パブリッシュされたファイルは {% include product %} に正しく登録されていますが、次のエラーが表示されます。 - -``` ---------------------------------------------------------------------------- -[ERROR publish_creation] -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 308, in register_publish - tk.shotgun.upload_thumbnail(published_file_entity_type, entity.get("id"), no_thumb) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2173, in upload_thumbnail - field_name="thumb_image", **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2263, in upload - tag_list, is_thumbnail) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2383, in _upload_to_sg - result = self._send_form(url, params) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3806, in _send_form - resp = opener.open(url, params) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 429, in open - response = self._open(req, data) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 447, in _open - '_open', req) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 407, in _call_chain - result = func(*args) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1241, in https_open - context=self._context) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1198, in do_open - raise URLError(err) -URLError: -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/config/hooks/publish_digital_asset.py", line 66, in register_publishedfile - description='Alembic nodes.') - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 323, in register_publish - entity=entity -ShotgunPublishError: Unable to complete publishing because of the following error: , although PublishedFile PIGS_libary_tool_hda_asasas_v017.hda (id: 114715 -) was created. ---------------------------------------------------------------------------- -``` - -## エラーの原因 - -`cacert.pem` と、その場所を指す必須の環境変数 `SHOTGUN_API_CACERTS` が見つかりません。 - -## 修正方法 - -`cacert.pem` とその場所を指す環境変数 `SHOTGUN_API_CACERTS` を追加します。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/ssl-certificate-error-on-sgtk-util-regiter-publish/3291)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/review-submission-error-message.md b/docs/ja/quick-answers/troubleshooting/review-submission-error-message.md deleted file mode 100644 index 01ac27ba3..000000000 --- a/docs/ja/quick-answers/troubleshooting/review-submission-error-message.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: default -title: Exception Review submission failed. Could not render and submit the review associated sequence. -pagename: review-submission-error-message -lang: ja ---- - -# Exception: Review submission failed. Could not render and submit the review associated sequence. - -## 使用例: - -Nuke の「Submit for publish」が機能していません、 - -**質問 1:** -上流に移動するにはどうしたらよいですか?「HookBaseClass」までは到達しますが、そこから進めません。 - -現在、Nuke で作業内容をレビューするために送信すると、問題が発生します。 - -Nuke の SG パブリッシュ GUI で次のエラーが発生します。 - - - Traceback (most recent call last): - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 282, in _handle_plugin_error - - yield - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 198, in run_publish - - self._hook_instance.publish(settings, item) - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-nuke\v0.12.5\hooks\tk-multi-publish2\basic\submit_for_review.py", line 272, in publish - - raise Exception("Review submission failed. Could not render and " - - Exception: Review submission failed. Could not render and submit the review associated sequence. - -また、次の例外も発生します。 - -`'sg_publish_data' was not found in the item's properties. Review Submission for 'path/to/sequences/AB/AB_001/comp/work/images/AB_001_comp_v002_output/AB_001_comp_v002_output.%04d.jpg' failed. This property must be set by a publish plugin that has run before this one.` - - -そのため、「publish_plugin_instance.py」内で以下を検索しています。 - - - _handle_plugin_error - yield - - run_publish - self._hook_instance.publish(settings, item) - -これらはローカルの Appdata フォルダ内にありますが、メイン インストールには含まれていません。そのため、この問題を解決するには、「submit_for_review.py」を参照する必要があると想定しています。 - -このファイルを参照すると、「HookBaseClass」の上流にある項目の設定と情報を使用していることが分かります。 - -「submit_for_review.py」内で「sg_publish_data」の設定場所を探すと、行 225 が見つかります。`sg_publish_data = item.properties.get("sg_publish_data")` - -**質問 2** -「item.properties」は上流のどこで設定されていますか?Nuke collector.py に含まれている可能性がありますが、「sg_publish_data」はそこにはなく、「HookBaseClass」の子にもなっています。 - -## 修正方法 - -### 簡潔な回答: - -カスタム コードの追加や設定の大幅な変更を行わなかった場合は、レビュー用に送信している項目の `Publish to {% include product %}` がオンになっていることを確認する必要があります - -![publish_checkbox](images/review-submission-error-message-01.jpeg) - -### 詳細な回答: - -まず、パブリッシャー API のドキュメントについては、[こちら](https://developer.shotgunsoftware.com/tk-multi-publish2/)を参照してください。この問題の解決に関連する概念のほとんどは、ここに記載されています。ただし、特定の問題については、ここで詳細に説明します。このような状況を経験することで、今後の問題のデバッグに役立てることもできます。 - -上記スクリーンショットの `ShorgunWrite1` 項目の下に 2 つの `plugins` が表示されています。これらは、設定で定義されたプラグインに対応しています。 - -![config](images/review-submission-error-message-02.jpeg) - -これらのプラグインは順番に実行され、メモリ内の同じ項目に作用します。問題を見極めるには、これら 2 つのプラグインのコードを調べる必要があります。`hook` の設定を確認して、これらが有効な場所を特定することができます。 - -最初のプラグインで確認しているのは `tk-multi-publish2` の設定であるため、`{self}` は `tk-multi-publish2` を表します。そのため、 -``` -{self}/publish_file.py -``` -は、tk-multi-publish2 アプリ フォルダ内にあります。 - -![publish_file_hook](images/review-submission-error-message-03.jpeg) - -ファイル システム上のアプリの場所は、`app_locations.yml` の設定方法によって異なりますが、何も変更していない場合は、バンドル キャッシュ フォルダ内にあります。必要に応じて、[キャッシュの場所の確認方法](https://developer.shotgunsoftware.com/ja/7c9867c0/)を参照してください。 - -2 番目のプラグインのフック パスは次のとおりです -``` -{engine}/tk-multi-publish2/basic/submit_for_review.py -``` -Nuke では `tk-nuke` エンジンを実行しているため、このパブリッシュ フックを見つけるには、`tk-nuke` でバンドル キャッシュの内容を調べる必要があります。 - -![nuke_config](images/review-submission-error-message-04.jpeg) - -コードの場所が分かったので、この場所を調べると、[1 番目のプラグインには、2 番目のプラグインで使用されると予測される値が設定されていることが分かります](https://github.com/shotgunsoftware/tk-multi-publish2/blob/a83e35dbf1a85eac7c3abd7e7f5509a42a8b8cf1/hooks/publish_file.py#L425)。 - -これら 2 つのプラグインを組み合わせるということは、パブリッシュされた(変更されない)内容をレビューするために送信するということです。そのため、ワークフローでは、まずソース ファイルをパブリッシュし、そこからレビューのための SG バージョンを作成します。このバージョンはパブリッシュにもリンクされます。1 番目のプラグインはファイルのパブリッシュを実行し、2 番目のパブリッシュで使用する項目に情報を格納します。 - -継承についての指摘があったので、この点を明確にする必要がありました。このドキュメントで説明する内容は、設定によって制御されるフック継承に関するものです。ユーザにとって意味があると思われる Python 継承に関するものではありません。 - -Python ファイルを参照すると、すべてのフックが `HookBaseClass` から継承されていることが分かります。ただし、設定のフック メカニズムを使用すると、基本的にこれらのベース フックを混合可能な要素と見なして結合し、コードを再利用するときに必要なすべての機能を取得することができます。`tk-multi-publish2` 設定で、この例を確認することができます。 - -``` -settings.tk-multi-publish2.nuke.shot_step: - collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py" -``` - -ここで定義されたコレクタは、どの Python ファイルにも存在しません。このコレクタは、実際には `tk-multi-publish2` の `collector.py` と `tk-nuke` の `collector.py` を組み合わせたものです。 - -クイック修正で十分に対応できず、これらのフックを修正する必要がある場合は、「[パブリッシュ ワークフローのカスタマイズ](https://developer.shotgridsoftware.com/ja/869a6fab/#shotgrid-toolkit-webinar-videos)」のビデオを参照してください。作業を開始するには、このビデオを見るのが最適です。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/nuke-submit-for-review-py/10026)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/row-id-error-message.md b/docs/ja/quick-answers/troubleshooting/row-id-error-message.md deleted file mode 100644 index fd448dce4..000000000 --- a/docs/ja/quick-answers/troubleshooting/row-id-error-message.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Could not resolve row id for path! -pagename: row-id-error-message -lang: ja ---- - -# Could not resolve row id for path! - -## 関連するエラーメッセージ: - -- Could not resolve row id for path! -- Database concurrency problems: The path `` is already associated with {% include product %} entity ``. - -## サンプル - -Toolkit ユーザがフォルダを生成すると、「Could not resolve row id for path!」というエラーが表示されます。 - -FileSystemLocation エンティティが作成されますが、場合によっては重複することがあり、その結果、多数の問題が発生する可能性があります。 - -完全なエラーは次のようになります。 - -``` -Creating folders, stand by... - -ERROR: Could not resolve row id for path! Please contact support! trying to -resolve path '\\server\nas_production\CLICK\00_CG\scenes\Animation\01\001'. -Source data set: [{'path_cache_row_id': 8711, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001', -'metadata': {'type': '{% include product %}_entity', 'name': 'sg_scenenum', 'filters': -[{'path': 'sg_sequence', 'values': ['$sequence'], 'relation': 'is'}], -'entity_type': 'Shot'}, 'primary': True, 'entity': {'type': 'Shot', 'id': -1571, 'name': '001_01_001'}}, {'path_cache_row_id': 8712, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Fx', -'metadata': {'type': '{% include product %}_step', 'name': 'short_name'}, 'primary': True, -'entity': {'type': 'Step', 'id': 6, 'name': 'FX'}}, {'path_cache_row_id': -8713, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Comp', -``` -_注: エラーはこれより大幅に長くなることがあります。_ - -## エラーの原因 - -このエラーは、{% include product %} ([サイト基本設定] (Site Preferences) -> [ファイル管理] (File Management))とパイプライン設定の c`onfig/core/roots.yml` で指定されているストレージ ルート間に不一致があること示しています。 - -Windows を実行しているスタジオでは、大文字と小文字の不一致が原因でこのエラーが発生することがあります。これらのスタジオでパスの大文字と小文字は区別されませんが、オートデスクの設定では大文字と小文字が区別されます。`E:\Projects` と `E:\projects` のような単純な違いによって、このエラーが発生する可能性があります。 - -## シーンの背後で実行される動作 - -このコードは、{% include product %} によって作成されたパスに FilesystemLocation エンティティを作成し、{% include product %} のストレージ ルートを使用してパスのルートを決定します。次に、ローカル キャッシュ内に同じエントリを作成し、データベース内の配置場所を決定する必要があります。ローカル キャッシュの場合は、`roots.yml` を使用してパスのルートを決定します。大文字と小文字が一致しないため、生成されたパスは {% include product %} に入力されたパスと一致しません。この時点で、エラーが発生します。 - -エラーが整然と発生しない場合は、特に不適切な状態になります。フォルダが作成され、FilesystemLocation エントリが作成されても、ローカル パス キャッシュでこれらが同期されることはなく、ストレージ ルートの不一致が原因で同期することもできなくなります。 - -## 修正方法 - -まず、[サイト基本設定] (Site Preferences)のストレージ ルート パスが `config/core/roots.yml` のパスと必ず一致するようにします。不一致を修正すると、以降のフォルダ作成呼び出しでエラーが解消されます。 - -次に、不正な FilesystemLocation エンティティをクリアします。エラーのある FilesystemLocation エンティティのセットに絞り込むことができた場合は、これらを削除するだけで済みます。通常はプロジェクトのすべてのパスが損なわれているため、すべてのパスを削除する必要があります。 - -- FilesystemLocation エンティティをクリアする方法: 理想的なのは、`tank unregister_folders` を実行できることです。これらすべてをクリアするには、tank `unregister_folders --all` を実行します。(`tank unregister_folders` のすべてのオプションでは、引数を指定しないで実行するだけで、使用上の注意事項が出力されます。) -- ただし、データベースは既に不安定な状態になっているため、この方法が機能しないか、部分的にしか機能しない場合があります。コマンドを実行したら、{% include product %} の FilesystemLocations に戻って、削除予定の内容が実際に削除されていることを確認します。削除されていない場合は、不適切なエンティティを選択し、手動でごみ箱に移動します。 - -この時点で、{% include product %} の FilesystemLocations はクリーンな状態ですが、アーティストのローカル キャッシュには変更が反映されていない可能性があります。最後の手順では、各ユーザのマシンのローカル キャッシュを実際に同期します。この操作を行うには、tank `synchronize_folders --full` を実行する必要があります。 - -これらの手順をすべて実行すると、パスのキャッシュは適切な状態になり、エラーは表示されなくなります。 - -## 関連リンク - -- [問題のあるコード](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [パス キャッシュとは何ですか? ファイルシステムの場所とは何ですか?](https://developer.shotgridsoftware.com/ja/cbbf99a4/) - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md b/docs/ja/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md deleted file mode 100644 index 183a0cd83..000000000 --- a/docs/ja/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: SSLHandshakeError CERTIFICATE_VERIFY_FAILED certificate verify failed -pagename: sslhandshakeerror-ssl-certificate-verify-failed -lang: ja ---- - -# SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed - -## 使用例 - -ローカル パケット検査を行うファイアウォールを使用して設定されたローカル ネットワークで、次のエラー メッセージが表示されます。 - -``` -SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -``` - -これらのファイアウォールは、通常、ネットワーク管理者が自身で作成した、Python からアクセスできない自己署名証明書を使用して設定されています。他のアプリケーションとは異なり、Python は常に OS のキーチェーン内で証明書を検索するとは限らないため、ユーザ自身が指定する必要があります。 - -## 修正方法 - -Python API および Shotgun Desktop が信頼できる認証局についての完全なリストが含まれているディスク上のファイルを指すように、環境変数 `SHOTGUN_API_CACERTS` を設定する必要があります。 - -このような[コピー](https://raw.githubusercontent.com/certifi/python-certifi/master/certifi/cacert.pem)は、Github の `certifi` パッケージの最新コピーからダウンロードできます。この操作が完了したら、このファイルの最後にある企業ファイアウォールの公開鍵を追加して、保存する必要があります。 - -この操作が完了したら、環境変数 `/opt/certs/cacert.pem` をパスの場所(`SHOTGUN_API_CACERTS` など)に設定して、Shotgun Desktop を起動します。 - - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/using-shotgun-desktop-behind-an-firewall-with-ssl-introspection/11434)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/storage-root-primary-error-message.md b/docs/ja/quick-answers/troubleshooting/storage-root-primary-error-message.md deleted file mode 100644 index 698e90f66..000000000 --- a/docs/ja/quick-answers/troubleshooting/storage-root-primary-error-message.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: WARNING Storage Root Primary Could Not Be Mapped to a SG Local Storage -pagename: review-error-message-root -lang: ja ---- - -# WARNING: Storage Root Primary Could Not Be Mapped to a SG Local Storage - -## 使用例 - -ドライブ ファイル ストリームを使用してプロジェクトをセットアップし、Google ドライブをプライマリ ストレージとして使用するよう試みているときに、ストレージ設定にアクセスすると、プロジェクト ウィザードによってコンソールに警告が表示されます。 - -`[WARNING] Storage root primary could not be mapped to a SG local storage` - -**[Continue]**ボタンを押しても機能しません。 - -## 修正方法 - -この問題は、ストレージ名に誤字がある場合に発生することがあります。ストレージ名が、Google ドライブの名前と正確に一致していることを確認します。 - -さらに、Google Drive を使用する場合は、重複したプロジェクトが表示されないように、常にファイルをローカルに保持する設定になっていることを確認します。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/11185)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md b/docs/ja/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md deleted file mode 100644 index 71b5dbb7b..000000000 --- a/docs/ja/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: Cannot resolve template data for context -pagename: tankerror-cannot-resolve-template-data-error -lang: ja ---- - -# TankError: Cannot resolve template data for context - -## 使用例 - -新しいプロジェクトで高度なプロジェクト設定を行っているときに、{% include product %} Desktop のスタンドアロンの Publisher アプリを使用して、作成した新しいアセット タスク用のイメージをいくつかパブリッシュするとします。この場合に、パブリッシュを検証するコンテキストを選択すると、次のエラーが表示されます。 - - -``` -creation for %s and try again!" % (self, self.shotgun_url)) -TankError: Cannot resolve template data for context ‘concept, Asset door-01’ - this context does not have any associated folders created on disk yet and therefore no template data can be extracted. Please run the folder creation for and try again! -``` - -ターミナルで `tank.bat Asset door-01 folders` を実行すると、この問題が解決されました。ただし、以前のプロジェクトではこの問題が発生しませんでした。 - -## 修正方法 - -この原因として考えられるのは、最初に DCC を対象にしないで、新しいエンティティまたはタスクにスタンドアロン パブリッシュを初めて試みたことです。 - -以前にこの問題が発生しなかったのは、スタンドアロン パブリッシャーを使用する前にソフトウェアでアセットの作業を開始していたため、フォルダの作成/同期が既に完了していたためです。ソフトウェアを(Toolkit を介して)起動すると、起動したときのコンテキストのフォルダが作成され、アプリを開くと、新しいファイルを開始したときのコンテキストのフォルダが作成されます。したがって、通常はフォルダを特に作成する必要はありません。 - -スタジオでは通常、{% include product %} でショットやアセットが追加された後に、手動でフォルダを作成することが一般的に行われています。 - -この方法は「フォルダのスキーマ」の影響を受けるため、フォルダのスキーマがテンプレートと完全に一致しない場合は問題になることもあります。 - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/tank-folder-creation/8674/5)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md b/docs/ja/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md deleted file mode 100644 index a7ff75da6..000000000 --- a/docs/ja/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: TankError Tried to Resolve a Path From The Template -pagename: tank-error-tried-to-resolve-a-path -lang: ja ---- - -# TankError: Tried to resolve a path from the template - -## 使用例 1 - -SGTK の新しい設定をセットアップするときに、[File Open]ダイアログボックス(tk-multi-workfiles2)で新しいファイルを作成しようとすると、次のエラーが発生します。 - -``` -TankError: Tried to resolve a path from the template > -# ('animal', 'dog') -# ('age', '3') -# ('args', ('needs a bath',)) -``` - -Maya では、次のような操作を実行します。 - -```python -import sgtk - -# get the engine we are currently running in. -engine = sgtk.platform.current_engine() -# Run the app. -engine.commands['print_animal']['callback']("unicorn",4,"it's soooo fluffy!!!!") - ->> -# ('animal', 'unicorn') -# ('age', 4) -# ('args', ("it's soooo fluffy!!!!",)) -``` - -## エラー メッセージ - -Maya のメニューからアプリを起動しようとすると、次のようなエラーが表示されます。 - -``` -// Error: Shotgun tk-maya: An exception was raised from Toolkit -Traceback (most recent call last): - File "/Users/philips1/Library/Caches/Shotgun/bundle_cache/app_store/tk-maya/v0.10.1/python/tk_maya/menu_generation.py", line 234, in _execute_within_exception_trap - self.callback() - File "/Users/philips1/Library/Caches/Shotgun/mysite/p89c1.basic.maya/cfg/install/core/python/tank/platform/engine.py", line 1082, in callback_wrapper - return callback(*args, **kwargs) -TypeError: run_method() takes at least 3 arguments (1 given) // -``` - -これは、アプリが引数を必要とするように設定されているのに、メニュー ボタンが引数を提供するよう指定されていないためです。 - -## 修正方法 - -次のようなキーワード引数を使用するようにアプリの `run_method` を記述することをお勧めします。 - -```python - def run_method(self, animal=None, age=None, *args): - print ("",animal) - print ("age",age) - print ("args", args) -``` -こうすると、引数が提供されない場合の動作を処理し、フォールバック動作を実装することができます。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/custom-app-args/8893)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md deleted file mode 100644 index 041506e19..000000000 --- a/docs/ja/quick-answers/troubleshooting/turn-debug-logging-on.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: default -title: デバッグ ログをオフにするにはどうすればいいですか? -pagename: turn-debug-logging-on -lang: ja ---- - -# デバッグ ログをオフにするにはどうすればいいですか? - -Toolkit ツールの出力よりも多くのログ データを既定で表示することが必要な場合があります。詳細なログ出力を表示するには、**デバッグ ログ**を有効にします。このための方法はいくつかあります。 - -{% include info title="注" content="ログ ファイルの検索場所が不明な場合は、「[ログ ファイルはどこにありますか?](./where-are-my-log-files.md)」ドキュメントを参照してください。" %} - -## {% include product %} Desktop によるデバッグを有効にする - -デバッグを有効にする最も簡単な方法は、{% include product %} Desktop アプリを使用してオンに切り替えることです。これは、{% include product %} Desktop にログインした後で設定できます。アプリの右下にあるプロファイル画像をクリックして、**[Advanced] -> [Toggle Debug Logging]**を選択します。この設定はセッションの終了後も維持されるため、デバッグが終了したら忘れずにオフにしてください。 - -![SG Desktop でのデバッグ ログの切り替え](images/desktop-enable-debug-logging.png) - -デバッグをオンにすると、{% include product %} Desktop から起動されたアプリ、またはブラウザ統合を介した Toolkit コマンドも、このデバッグ状態を継承することに注意してください。 - -## 環境変数をセットアップする - -### デバッグ ログを常にオンにする - -最初に、新しい環境変数 `TK_DEBUG=1` をセットアップする必要があります。 - -{% include info title="注" content="手順はプラットフォームによって異なるため、スタジオ内の専門家を集めて環境変数をセットアップする方法について話し合うことをお勧めします。次の例では、Windows 7 マシンで環境変数をセットアップする方法について説明しています。"%} - -#### Windows 7 を使用する場合 - -- デバッグ ログを常にオンにするには、 **Windows アイコン > [コントロール パネル] > [システム] > [システムの詳細設定] > [環境変数…] > [新規…]にアクセスします** - -![Windows 環境変数を設定する](images/windows-setting-environment-variable.png) - - -- **変数名**: `TK_DEBUG` -- **変数の値**: `1` -- [OK]を選択します。 - -これで、環境変数が正しくセットアップされ、デバッグ ログがオンになりました。 - -{% include info title="注" content="ログを有効にするために Desktop を必ず再起動してください。"%} - -デバッグ ログをオフにするには、次のいずれかを実行します。 - -a. `TK_DEBUG` 環境変数を 0 に設定します。 - -b. `TK_DEBUG` 環境変数を削除します。 - -### 環境変数が既に設定されているかどうかを確認する - -環境変数が正しく設定されているかどうかを確認するには、ターミナルを開いて `set` コマンドを実行します。 - -次に、`TK_DEBUG=1` を検索します。 - -これにより、Desktop を起動すると、デバッグ ログがオンになります。 - -### デバッグ ログを一時的にオンにする - -セッションの代わりにデバッグ ログを一時的に使用する場合は、ターミナルを開き、`set TK_DEBUG=1` コマンドを使用してデバッグ ログを設定できます。 - -次に、ターミナルを介して Desktop を起動します。 - -{% include info title="注" content="ShotGrid Desktop とターミナルを閉じると、デバッグ ログはオンではなくなります。" %} - - - -## 詳細設定のデバッグ ログ オプション - -詳細設定にはいくつかのオプションがあります。この機能は、Toolkit の設定をコントロールできる場合のみ利用可能です。 - -すべてのエンジンの環境ファイルには `debug_logging` 設定があります。これをオンにすると、ソフトウェア(Nuke または Maya のスクリプト エディタなど)の既定の出力に追加のデバッグレベル ログ メッセージが送信されます。エンジンで実行中のアプリすべてがこのようなデバッグ レベルのメッセージを発行するため、エンジンでこの設定をオンにすると、すべてのアプリの設定も実質的にオンになります。 - -これにより、ファイルにログ メッセージが出力されることはありません。標準的なロギング フレームワークでこの出力が可能になるように現在取り組んでいます。例外は [{% include product %} Desktop](https://developer.shotgridsoftware.com/ja/d587be80/#getting-started-with-desktop) および [Photoshop エンジン](https://developer.shotgridsoftware.com/ja/8d461cbe/)で、これらはログの出力を GUI コンソールとファイルの両方に記録します。 - -### ソフトウェアでエンジンのデバッグ ログをオンにする - -たとえば、ショットのステップ環境で Nuke エンジンのデバッグ出力をオンにするには、環境ファイルで Nuke エンジン(`tk-nuke`)セクションを見つけて、この設定を `debug_logging: true` に更新します。 - -`config/env/shot_step.yml` を編集します。 - -```yaml -engines: - ... - ... - tk-nuke: - apps: - ... - ... - compatibility_dialog_min_version: 9 - debug_logging: true - favourite_directories: [] - location: {name: tk-nuke, type: app_store, version: v0.2.23} - ... - ... -``` - -ファイルを保存し、ショットのステップ環境で Nuke を再起動します。これで、スクリプト エディタ ウィンドウにデバッグ出力が表示されます。 - -{% include info title="注" content="ShotGrid Desktop のチェックボックス、環境変数、またはエンジン設定のいずれかを使用してデバッグ ログが有効になっている場合は、デバッグ ログが出力されます。また、この 3 つの各設定は、他の設定とは別に変更されます。チェックボックスの値を設定すると、アプリが永続的に設定されますが、この設定はエンジンの設定または環境変数から完全に独立しています。つまり、Desktop のチェックボックスをオフにした場合も、他のいずれかの方法を使用してデバッグ ログを有効にすることができます。"%} - -### tank コマンドのデバッグ ログをオンにする - -tank コマンドを実行し、ターミナルでデバッグ出力を確認する場合は、実行するコマンドで `--debug` オプションを使用すると、コマンドのデバッグ ログがオンになります。 - - ./tank --debug core - DEBUG [10:11:38 617.835998535]: - DEBUG [10:11:38 618.768930435]: Running with debug output enabled. - DEBUG [10:11:38 618.921995163]: - DEBUG [10:11:38 619.092941284]: Core API resides inside a (localized) pipeline - configuration. - DEBUG [10:11:38 619.235992432]: Full command line passed: - ['/sgtk/software/shotgun/scarlet/install/core/scripts/tank_cmd.py', - '/sgtk/software/shotgun/scarlet', '--debug', 'core'] - DEBUG [10:11:38 619.364023209]: - DEBUG [10:11:38 619.463920593]: - DEBUG [10:11:38 619.575977325]: Code install root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.678020477]: Pipeline Config Root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.756937027]: - DEBUG [10:11:38 619.826078415]: - DEBUG [10:11:38 619.905948639]: - DEBUG [10:11:38 619.978904724]: Context items: - ['/sgtk/software/shotgun/scarlet'] - DEBUG [10:11:38 620.06688118]: Command: core - DEBUG [10:11:38 620.129108429]: Command Arguments: [] - DEBUG [10:11:38 620.193004608]: Sgtk Pipeline Config Location: - /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' - - The path is not associated with any Shotgun object. - - Falling back on default project settings. - DEBUG [10:11:39 125.463962555]: Sgtk API and Context resolve complete. - DEBUG [10:11:39 126.449108124]: Sgtk API: Sgtk Core v0.15.18, config - /sgtk/software/shotgun/scarlet - DEBUG [10:11:39 126.588106155]: Context: scarlet - - Using configuration 'Primary' and Core v0.15.18 - - Setting the Context to scarlet. - 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/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md deleted file mode 100644 index b4e6ffc68..000000000 --- a/docs/ja/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 2 つの機能拡張がインストールされている場合の Photoshop 統合のトラブルシューティング -pagename: two-photoshop-shotgun-extensions -lang: ja ---- - -# 2 つの機能拡張がインストールされている場合の Photoshop 統合のトラブルシューティング - -## どんな問題がありますか? - -After Effects 統合のリリースに伴い、{% include product %} と統合されるすべての Adobe アプリで使用できる共通プラグインが用意されました。この変更の一環として、以前の Photoshop 統合との後方互換性を保ち、スタジオが更新プログラムに正しく移行できるようにするため、機能拡張の名前を変更する必要がありました。 - -これは残念ながら、アップグレード時に 2 つの {% include product %} 機能拡張がインストールされる可能性があることも意味します。 - -![Photoshop メニューに複数の {% include product %} 機能拡張が表示される](./images/photoshop-extension-panel.png) - -**{% include product %} Adobe Panel** が新しい機能拡張であり、`v1.7.0` 以降の Photoshop 統合を使用している場合にはこちらを使用する必要があります。 - -## エラーの修正方法 - -古い機能拡張を削除するには、ホーム ディレクトリの Adobe 製品のインストール場所から削除します。フォルダは、Photoshop 起動時に以下のデバッグ出力に表示されます。 - -- `~/Library/Application Support/Adobe/CEP/extensions/com.sg.basic.ps`OSX: -- Windows: `%AppData%\Adobe\CEP\extensions\com.sg.basic.ps` - -![Photoshop メニューに複数の {% include product %} 機能拡張が表示される](./images/shotgun-desktop-console-photoshop-extension.png) - -Photoshop を終了してそのディレクトリを削除すると、再起動時の拡張拡張は 1 つだけになります。 - -{% include info title="注" content="複数の環境または複数の設定に Photoshop 統合があり、古いプラグインと新しいプラグインが混在している場合、あるユーザがその古い統合で Photoshop を起動すると、古いプラグインが返されます。このクリーンアップが一度で済むよう、Photoshop を組織全体で更新することを推奨します。" %} \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md b/docs/ja/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md deleted file mode 100644 index 8efd3af3e..000000000 --- a/docs/ja/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: Unable to get local issuer certificate -pagename: unable-to-get-local-issuer-certificate-error -lang: ja ---- - -# [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate - -## 使用例 - -Windows で Python API を使用して Amazon に対してメディアをアップロードおよびダウンロードする際に問題が発生します。この問題が発生すると、Python API によって次のエラー メッセージが表示されます。 - -``` -shotgun_api3.shotgun.ShotgunFileDownloadError: Failed to open https://xxx.shotgunstudio.com/file_serve/attachment/xyz - -``` -Amazon は一部の証明書をバックエンドで更新しました。Windows で新しい証明書を必要とする Web ページを参照すると、通常は、証明書ストアが更新されます。通常の参照アクティビティを認識しないコンピュータで実行されているスタンドアロンの Python スクリプトでは証明書の更新が取得されないため、コンピュータの証明書が大量に不足する可能性があります。 - -## 修正方法 - -問題のあるマシンに GUI でアクセスできる場合は、S3 に現在保存されているメディアを再生するだけで、証明書ストアが更新されます。この再生ソリューションは、Chrome、Internet Explorer、Edge、またはその他の Chromium ベース ブラウザでのみ機能します。Firefox または Safari では機能しません。これらのブラウザでは、証明書の検証に Windows の標準 API が使用されないためです。 - -このソリューションが機能しない場合や、更新するコンピュータ数が非常に多い場合は(Deadline レンダリング ファームなど)、不足している証明書をコンピュータに追加するスクリプトも提供されます。[公開されているスクリプトのリンクはこちら](https://developer.shotgridsoftware.com/ja/c593f0aa/)です。 - -Windows 10 の Powershell ユーザまたは Windows 7 の Powershell 3 ユーザは、コンピュータの管理者として次のスクリプトを実行して新しい証明書を取得することができます。 - -![Powershell](images/troubleshoot_powershell.png) - -``` -$cert_url = "https://www.amazontrust.com/repository/AmazonRootCA1.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 -``` - -コマンドが機能した場合は、次のように表示されます。 - -``` - PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root - -Thumbprint Subject ----------- ------- -8DA7F965EC5EFC37910F1C6E59FDC1CC6A6EDE16 CN=Amazon Root CA 1, O=Amazon, C=US -``` - -これにより、証明書が実行されているコンピュータでは、すべてのユーザ アカウントがこの証明書を使用できるようになります。ユーザに管理者アクセス権がない場合は、次の方法で最後の行を変更できます。 - -``` -Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\CurrentUser\Root -``` - -証明書が現在のユーザにのみ追加されます。 - -筆者のような保守的なユーザがまだ `cmd.exe` を使用している場合は、`certutil` を使用することもできます。まず、`https://www.amazontrust.com/repository/AmazonRootCA1.cer` から証明書をダウンロードし、コンピュータ上の任意の場所に保存する必要があります。 - -次に、管理モードでコマンド プロンプトを起動します。 - -![管理モード](images/troubleshoot_admin_mode.png) - -次の行を実行します。 - -``` -certutil -addstore root -``` - -これで、すべてのユーザ アカウントが証明書を使用できるようになります。管理者アクセス権がない場合は、次のように、`-user` を追加して現在のユーザにのみ証明書をインストールすることができます - -``` -certutil -user -addstore root -``` - -## 関連リンク - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860)を参照してください。 \ No newline at end of file diff --git a/docs/ja/quick-answers/troubleshooting/unreal-proxy-error-message.md b/docs/ja/quick-answers/troubleshooting/unreal-proxy-error-message.md deleted file mode 100644 index d301abf41..000000000 --- a/docs/ja/quick-answers/troubleshooting/unreal-proxy-error-message.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Error calling __commands::unreal_engine -pagename: unreal-proxy-error-message -lang: ja ---- - -# `[ERROR] [PROXY]` Error calling __commands::unreal_engine] - -## 使用例: - -{% include product %} デスクトップ アプリをセットアップした後に、UE4 を取得して {% include product %} アプリに表示できるようになったので、Unreal を起動しようとすると、次のメッセージが表示されます。 - -``` -2020-06-06 03:22:24,246 [ ERROR] [PROXY] Error calling __commands::unreal_engine_4.24.3((), {}): -Traceback (most recent call last): -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-desktop\v2.4.12\python\tk_desktop\desktop_engine_project_implementation.py”, line 164, in _trigger_callback -callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\babilgames\p91c38.basic.desktop\cfg\install\core\python\tank\platform\engine.py”, line 1084, in callback_wrapper -return callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 125, in launch_version -*args, **kwargs -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 343, in _launch_callback -“Could not create folders on disk. Error reported: %s” % err -TankError: Could not create folders on disk. Error reported: Could not resolve row id for path! Please contact support! trying to resolve path ‘D:\UEProjects\SON\D:\UEProjects\SON’. Source data set: [{‘path_cache_row_id’: 2, ‘path’: ‘D:\UEProjects\SON’, ‘metadata’: {‘root_name’: ‘primary’, ‘type’: ‘project’}, ‘primary’: True, ‘entity’: {‘type’: ‘Project’, ‘id’: 91, ‘name’: ‘SON’}}] - -``` - -## エラーの原因 - -ディスク上の UE4 プロジェクトのパス `D:\UEProjects\PROJECT_NAME\` が正しくありませんでした。 - -## 修正方法 - -この問題は、{% include product %} の設定用フォルダを新規に作成することで解決します。 - -[コミュニティの完全なスレッド](https://community.shotgridsoftware.com/t/error-launching-ue4-from-shotgun/8938)を参照してください。 - diff --git a/docs/ja/quick-answers/troubleshooting/where-are-my-log-files.md b/docs/ja/quick-answers/troubleshooting/where-are-my-log-files.md deleted file mode 100644 index a036dc534..000000000 --- a/docs/ja/quick-answers/troubleshooting/where-are-my-log-files.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: ログ ファイルはどこにありますか? -pagename: where-are-my-log-files -lang: ja ---- - -# ログ ファイルはどこにありますか? - -既定では、{% include product %} Desktop と統合は、ログ ファイルを次のディレクトリに保存します。 - -**Mac** - -`~/Library/Logs/Shotgun/` - -**Windows** - -`%APPDATA%\Shotgun\logs\` - -**Linux** - -`~/.shotgun/logs/` - -ログ ファイル名の形式は `tk-.log` です。例として `tk-desktop.log` や `tk-maya.log` があります。 - -ユーザのキャッシュの場所をオーバーライドするように [`{% include product %}_HOME` 環境変数](http://developer.shotgridsoftware.com/tk-core/utils.html#localfilestoragemanager)を設定している場合、ログ ファイルは `$SHOTGUN_HOME/logs` にあります。 - -{% include info title="注" content="ShotGrid Desktop からこのディレクトリにアクセスすることもできます。プロジェクトを選択し、プロジェクト名の右側にある下矢印ボタンをクリックして、**[Open Log Folder]**を選択します。"%} diff --git a/docs/ja/quick-answers/workflow.md b/docs/ja/quick-answers/workflow.md deleted file mode 100644 index 7b11d205a..000000000 --- a/docs/ja/quick-answers/workflow.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: ワークフロー -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 deleted file mode 100644 index 86bc7a742..000000000 --- a/docs/ja/quick-answers/workflow/version-publishedfile-difference.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: バージョンと Published File の違いは何ですか? -pagename: version-publishedfile-difference -lang: ja ---- - -# バージョンと Published File の違いは何ですか? - -「**パブリッシュ**」は、アプリケーション内で使用可能なディスク上のファイル(またはイメージ シーケンス)またはデータを表します。これには、exr シーケンス、abc、Maya ファイルなどがあります。パブリッシュは ShotGrid の `PublishedFile` エンティティによって表されます。 - -「**バージョン**」(ShotGrid の `Version` エンティティ)はパブリッシュの視覚表現で、レビューやノートの作成に使用されます。`Version` エンティティ上に Published Files という名前のフィールドがあり、互いに接続する任意の数のパブリッシュ レコードを入力することができます。このフィールドを使用して、パブリッシュ グループに関連付けられているレビュー `Version` をトラックできます。パブリッシュ時にこの関係を設定することをお勧めします。バージョンは ShotGrid の `Version` エンティティによって表されます。 - -究極的には、ファイル形式は異なるが実際は同じコンテンツを表す(Maya ファイル、obj、alembic などの)一連のファイルをパブリッシュ時に生成できることが理想です。これらのファイルは、同じ内容をすべて異なる形式で表現しています。その後、パブリッシュ データをプレビューしてノートを作成するために、1 つのレビュー `Version` に関連付けます。 - -パブリッシュされたデータがイメージ シーケンスの場合、これは少し冗長な考え方になります。実際イメージ シーケンスは、レビュー対象であり、かつパイプラインに送信する対象でもあります。この場合、パブリッシュと `Version` の両方を「1 つにまとめて」作成する必要があります。この操作を行うと、(Loader アプリを使用するなどの方法により)パブリッシュされたデータのうち、`Version` を表すものがロードされます。 - diff --git a/docs/ja/reference/api/images/dv-api-permissions-ApiPermGroup-02.png b/docs/ja/reference/api/images/dv-api-permissions-ApiPermGroup-02.png deleted file mode 100644 index dda6d9ae5..000000000 Binary files a/docs/ja/reference/api/images/dv-api-permissions-ApiPermGroup-02.png and /dev/null differ diff --git a/docs/ja/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png b/docs/ja/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png deleted file mode 100644 index a1c68d3a3..000000000 Binary files a/docs/ja/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png and /dev/null differ diff --git a/docs/ja/reference/api/images/dv-developers-api-01-scripts-01.png b/docs/ja/reference/api/images/dv-developers-api-01-scripts-01.png deleted file mode 100644 index 80b420c4b..000000000 Binary files a/docs/ja/reference/api/images/dv-developers-api-01-scripts-01.png and /dev/null differ diff --git a/docs/ja/reference/api/images/dv-manage-scripts-application-key-02.png b/docs/ja/reference/api/images/dv-manage-scripts-application-key-02.png deleted file mode 100644 index eda107708..000000000 Binary files a/docs/ja/reference/api/images/dv-manage-scripts-application-key-02.png and /dev/null differ diff --git a/docs/ja/reference/api/images/dv-manage-scripts-script-01.png b/docs/ja/reference/api/images/dv-manage-scripts-script-01.png deleted file mode 100644 index 7b2701b35..000000000 Binary files a/docs/ja/reference/api/images/dv-manage-scripts-script-01.png and /dev/null differ diff --git a/docs/ja/reference/api/python-api-best-practices.md b/docs/ja/reference/api/python-api-best-practices.md deleted file mode 100644 index 991b7615f..000000000 --- a/docs/ja/reference/api/python-api-best-practices.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Python API のベスト プラクティス -pagename: python-api-best-practices -lang: ja ---- - -# Python API のベスト プラクティス - - -{% include product %} Python API を使用するときのベスト プラクティスのリストを次に示します。 - -## パフォーマンス - -1. スクリプトにとって不要なフィールドを要求しないでください。余分なフィールドを含めると、要求に不要なオーバーヘッドが追加されることがあります。 -2. 可能な限り具体的なフィルタを作成してください。可能な場合は、結果が戻ってきた後に API クエリーを解析するのではなく、API クエリーでフィルタすることをお勧めします。 -3. 部分一致フィルタよりも完全一致フィルタの方が適切に機能します。たとえば、「contains」よりも「is」の方が適切に動作します。 - -## 制御とデバッグ - -1. スクリプトごとに個別のキーを使用し、ツールごとに一意のキーとしてください。これは、デバッグでは重要です。 -2. 各スクリプトに所有者または管理者が存在すること、および [管理者] (Admin)メニューにある[スクリプト] (Scripts)ページの情報が最新であることを確認します。 -3. [API ユーザの読み取り専用権限グループ](https://developer.shotgridsoftware.com/ja/bbae2ca7/)を作成することを検討します。多くのスクリプトには読み取りアクセスのみが必要であるため、これらのグループを作成することで、誤って変更されることを防ぐことができます。 -4. 使用中のキーをトラックして、古いスクリプトが削除できるようにします。この操作を簡単にするために、一部のスタジオでは、API ラッパーで監査情報をスクリプト化しています。 -5. エンティティ名とフィールドをチェックしてください。{% include product %} にはフィールドごとに 2 つの名前があります。1 つは UI に使用される表示名(一意とは限らない)で、もう 1 つが API で使用される内部フィールド名です。表示名はいつでも変更することができるため、表示名からフィールド名を確実に予測できるわけではありません。フィールド名を確認するには、[管理者] (Admin)メニューのフィールド オプションに移動するか、[http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema](http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema) で説明されている `schema_read(), schema_field_read(), schema_entity_read() methods` を使用します。 - -## デザイン - -1. 特に大きいスタジオでは、API 分離レイヤー(ラッパー)を使用することを検討してください。これにより、{% include product %} API に変更が加えられてもツールに影響はありません。また、API アクセスの制御、デバッグの管理、トラック監査なども実行できます。この際、API 自体の変更は不要です。 -2. 最新バージョンの API を使用してください。バグ修正とパフォーマンスの改善が含まれています。 -3. スクリプトが実行される場所に注意してください。スクリプトがレンダリング ファームで実行される場合、1 つの情報を要求するために 1 分間に数千回、{% include product %} を呼び出すため、サイトのパフォーマンスに影響を与えることがあります。このようなケースでは、読み取り専用のキャッシング レイヤを導入し、不必要に繰り返される呼び出しを減らすことを検討してください。 -4. スクリプトのイベント生成をオフにすることができます。これは、後でトラックする必要のないイベントを含む、実行頻度が高いスクリプトで最も役に立ちます。頻繁に実行されるスクリプトの場合、イベント ログが非常に大きくなるため、オフにすることを強くお勧めします。 \ No newline at end of file diff --git a/docs/ja/reference/api/python-api-create-manage.md b/docs/ja/reference/api/python-api-create-manage.md deleted file mode 100644 index 97a85b2f1..000000000 --- a/docs/ja/reference/api/python-api-create-manage.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: API スクリプトの作成と管理 -pagename: python-api-create-manage -lang: ja ---- - -# API スクリプトの作成と管理 - - -新しいスクリプトを作成するには、次の手順に従います。 - -1. [管理者] (Admin)メニューに移動して、[スクリプト] (Scripts)を選択します。 - ![スクリプト](./images/dv-manage-scripts-script-01.png) -2. [+ スクリプト] (+ Scripts)ボタンを使用して新しいスクリプトを作成します。 -3. アプリケーション キーから値を取得します。これを使用して {% include product %} との接続を開始します。 - ![アプリケーション キー](./images/dv-manage-scripts-application-key-02.png) - - > **注:** API キーはパスワードのように扱われ、一度作成されると、{% include product %} の Web アプリや API で再び表示することはできません。続行する前に、キーをコピーしておきます。 - -4. これで、スクリプト キーを使用して {% include product %} に接続できるようになりました。スクリプトに {% include product %} を接続する方法の詳細については、[API ドキュメントの「{% include product %} メソッド」](http://developer.shotgridsoftware.com/python-api/reference.html#shotgun-methods)を参照してください。 - -> **ヒント:** 何らかの理由で、スクリプトのアプリケーション キーをリセットする必要がある場合は、その操作を実行する新しい {% include product %} スクリプト エンティティを作成する必要があります。最初に、既存のスクリプトの名前を「[My Script]—OLD」などに変更してから削除します。新しいスクリプトを作成します。{% include product %} で古いスクリプトの名前を変更するのは、各スクリプトに一意の名前が必要であるからです。 - -## 新しいスクリプトを設定するタイミング - -スクリプトの処理はログに記録できます。個々のスクリプト キーの使用がきめ細かくなればなるほど、どのスクリプトがデバッグのための変更を行っているかを簡単にトラックできるようになります。個別のスクリプトを使用する方法は、{% include product %} サイトの変更によって影響を受けるスクリプトおよびスクリプト管理者をトラックする際にもお勧めします。 \ No newline at end of file diff --git a/docs/ja/reference/api/python-api-overview.md b/docs/ja/reference/api/python-api-overview.md deleted file mode 100644 index 2aae2593c..000000000 --- a/docs/ja/reference/api/python-api-overview.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: API の概要 -pagename: python-api-overview -lang: ja ---- - -# API の概要 - -**注:** {% include product %} API の詳細については、[API ドキュメント](http://developer.shotgridsoftware.com/python-api/)を参照してください。 - -{% include product %} Python のアプリケーション プログラミング インタフェース(API)を使用すると、ユーザは独自のツールを {% include product %} に簡単に統合することができます。これにより、自動プロセスの作成、数多くのサード パーティ ソフトウェア パッケージとの統合、スタジオ内の既存のツールとの通信が可能になります。スタジオごとにニーズが大きく異なるため、{% include product %} API は最低限の強力な機能のみを提供し、ビジネス ロジックのほとんどはお客様が決定できます。 - -API は、メディア・エンターテインメント業界で広く使用される一般的なプログラミング言語である [Python](https://www.python.org/) を使用して作成されています。[{% include product %} Python API](https://github.com/shotgunsoftware/python-api) は、{% include product %} サイトから無料で使用できます。 - -API は CRUD パターンに従うため、単一のエンティティ タイプに対して作成、読み取り、更新、および削除の操作をスクリプトで実行することができます。多くの操作には、フィルタ、返される列、およびソート結果を定義する機能が含まれています。 - -API を使用して {% include product %} サーバと通信する場合、ユーザの資格情報を提供するか、スクリプト キーを使用して、スクリプトをサーバで認証できます。新しいスクリプト キーは、[管理者] (Admin)メニューに表示される[スクリプト] (Scripts)ページから生成することができます。 - -![スクリプト](./images/dv-developers-api-01-scripts-01.png) - -**ヒント:** スクリプトは個別に登録し、それぞれに個別の API キーを設定します。これにより、各スクリプトと実行されるアクションを[イベント ログ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_event_logs_html)でより正確に監視できます。 - -## 一般的な最初のプロジェクト - -API は [https://github.com/shotgunsoftware/python-api](https://github.com/shotgunsoftware/python-api) でダウンロードすることができます。 一般的な最初のプロジェクトのいくつかには、以下のものが含まれます。 - -1. [バージョンを作成し、ショットにリンク](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_create_version_link_shot.html)します。レビュー用に新しいレンダラの送信を自動化できます。 -2. [サムネイルをアップロード](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_upload_thumbnail_version.html)します。サイト上のすべての要素に、手動で追加することなく最新のサムネイルを反映できます。 -3. [SVN などのコード リポジトリと {% include product %} を統合](http://developer.shotgridsoftware.com/python-api/cookbook/examples/svn_integration.html)します。{% include product %} を利用してソフトウェア開発のプロジェクトを管理します。 - -## API で実行できない操作 - -* 権限ルールへのアクセスまたは変更(セキュリティ上の理由による) -* ページ設定の読み取りまたは変更 -* 個々のページまたはウィジェットのフィルタまたはクエリー設定へのアクセス -* UI の操作 -* 条件付きフォーマット設定ルールの追加、編集または削除 -* クエリー フィールドの作成または編集 - -## アクション メニュー アイテム(AMI) - -{% include product %} のインタフェース内から簡単に起動できるスクリプトを作成するには、[AMI](https://developer.shotgridsoftware.com/ja/67695b40/) を使用します。これらは、データの行を右クリックして表示するコンテキスト メニューに表示される、カスタマイズ可能なオプションです。クリックするとコンテキスト データ ダンプが Web サーバまたはカスタム ブラウザ プロトコル ハンドラに送信されます。ここでカスタム ビジネス ロジックを実行できます。 - -エンティティごとに異なる AMI を設定することができ、プロジェクトまたは権限グループ別にそれらの項目へのアクセスを制限することができます。 - -## イベント トリガ デーモン - -{% include product %} で(ユーザまたは API スクリプトにより)実行されるあらゆるアクションでイベントが生成されます。[イベント デーモン](https://github.com/shotgunsoftware/shotgunEvents)では、イベント ストリームを監視し、定義された条件に基づいて特定の API スクリプトを実行することができます。次に、いくつかの例を示します。 - -* 上流工程のタスクのステータスに基づいて、下流工程のタスクのステータスを自動的に変更する -* 値が変更された場合に関連する cut duration フィールドを再計算する -* ショットが特定のステータスに設定されている場合、ファイルのパッケージ化と転送操作を実行する - -## 追加情報 - -{% include product %} API に関する詳細については、次の記事を参照してください。 - -* [GitHub からの {% include product %} API のダウンロード](https://github.com/shotgunsoftware/python-api/) -* [{% include product %} APIドキュメント](http://developer.shotgridsoftware.com/python-api/) -* [{% include product %}-dev リスト(公開)](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) -* [{% include product %} イベント デーモン サンプル コード](https://github.com/shotgunsoftware/shotgunEvents) -* [イベント駆動型トリガの書き込み](https://developer.shotgridsoftware.com/ja/0d8a11d9/) -* [{% include product %} スキーマ](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_get_started_ar_shotgun_schema_html) -* [API のベスト プラクティス](https://developer.shotgridsoftware.com/ja/09b77cf4/) - -## 投稿とコラボレーション - -世界中の人と共有したいと思うような優れたツールを {% include product %} で作成したことはありませんか。それはすばらしいことです。オートデスクには、情報を共有したり、協力し合うことが大好きな開発者向けの、活発な[開発者コミュニティ](https://community.shotgridsoftware.com/)があります。参加するには: - -* [{% include product %} コミュニティ](https://community.shotgridsoftware.com/)に参加してください。 -* [GitHub](https://github.com/) にコードを投稿します(コードはパイプライン固有のものではなく、十分に立証されたものであり、.txt または .mdk 形式の README が必要です)。 -* リンクと説明を dev リストに投稿します。開発者コミュニティと {% include product %} の開発者はその投稿をよく調べて、フィードバックを提供したり、良い点は高く評価します。 - -当社は、絶えずお客様が提供するさまざまなツールや統合に感動し、刺激を受けています。ぜひお客様の実力をお見せください。 \ No newline at end of file diff --git a/docs/ja/reference/api/python-api-permissions.md b/docs/ja/reference/api/python-api-permissions.md deleted file mode 100644 index 430629fc3..000000000 --- a/docs/ja/reference/api/python-api-permissions.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: API ユーザの権限グループ -pagename: python-api-permissions -lang: ja ---- - -# API ユーザの権限グループ - - -API ユーザに対して個別に権限グループを作成し、ユーザと同様に、スクリプトおよびキーにさまざまな権限レベルを設定することができます。 - -## API ユーザ ページにアクセスする - -[管理者] (Admin)メニューに移動し、[権限] (Permissions) > [スクリプト] (Scripts)を選択します。 - -![](./images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png) - -使用方法については、[](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_site_configuration_ar_permissions_html) を参照してください。 - -## API ユーザの権限グループを使用する方法 - -初期の API 管理者を超える API 権限グループを作成すると、それらを API スクリプトに使用することができます。 - -1. [管理者] (Admin)メニューから、[スクリプト] (Scripts)を選択します。 -2. [権限グループ] (Permission Group)列が表示されるので、適切な権限グループを選択します。 - ![API 権限グループ](./images/dv-api-permissions-ApiPermGroup-02.png) - -## 例 - -これはどのような目的で使用したら良いでしょうか。さまざまな用途が考えられますが、以下に 2 つの用途を示します。 - -**例 1:** 完全な管理者権限を持たないスタジオ内のユーザに API キーを与える。 - -**例 2:** 一方向の同期({{ akn_product_name }} データベースから該当ユーザの {{ akn_product_name }} データベースへ)を実行するための読み取り専用 API キーをパートナー スタジオに与え、制限されたエンティティ セットのみ公開する。 - -**例 3:** プロジェクトごとに API スクリプトを制限する。 - -1. [管理者] (Admin)メニューから**[権限 - スクリプト] (Permissions - Scripts)**ページに移動し、新しいロールを作成します。 [割り当てられたプロジェクトのみを表示] (See Assigned Projects Only)の詳細権限が有効になっていることを確認します。また、その他の必要な権限を微調整することもできます(たとえば特定のエンティティ/フィールドに対する読み取りアクセス権のみを付与する場合など)。 -2. [管理者] (Admin)メニューから**[スクリプト] (Scripts)**ページに移動します。[プロジェクト] (Projects)フィールドを公開します。ここで、スクリプトの範囲を制限するプロジェクトを入力することができます。 -3. [権限グループ] (Permission Group)フィールドを使用して、手順 1 で作成した新しいスクリプトにスクリプトの権限を割り当てます。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations.md b/docs/ja/reference/pipeline-integrations.md deleted file mode 100644 index 92ebe6b7c..000000000 --- a/docs/ja/reference/pipeline-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: パイプライン統合コンポーネント -pagename: pipeline-integrations-reference -lang: ja ---- - -# パイプライン統合コンポーネント - -ここでは、Toolkit プラットフォームのコンポーネントのリファレンス ドキュメントを示します。 diff --git a/docs/ja/reference/pipeline-integrations/env-config-ref.md b/docs/ja/reference/pipeline-integrations/env-config-ref.md deleted file mode 100644 index 748e93749..000000000 --- a/docs/ja/reference/pipeline-integrations/env-config-ref.md +++ /dev/null @@ -1,349 +0,0 @@ ---- -layout: default -title: 環境設定リファレンス -pagename: env-config-ref -lang: ja ---- - -# 環境設定リファレンス - -## はじめに - -Toolkit パイプラインの中心にあるのは環境設定です。Toolkit パイプライン設定内の環境構成ファイルでは、さまざまな DCC 内で使用可能な Toolkit アプリを定義し、それぞれの設定をカスタマイズできます。このドキュメントは環境設定ファイルの構造と機能についての完全なリファレンスです。ここでは、プロジェクト内のさまざまなワークフローを設定するための Toolkit の**「環境」の概念、環境設定の構成、ファイル参照、そしてどのようなカスタマイズが行えるかを確認する方法について説明します。 - -{% include info title="注" content="このドキュメントは環境設定ファイルのリファレンスとして使用しますが、『[パイプライン設定の編集に関する Toolkit の基本ガイド](./learning-resources/guides/editing_app_setting.md)』には、構成設定を編集するステップバイステップの手順が例として記載されています。" %} - -## 環境について - -{% include product %} Toolkit プラットフォームは、一般的に使用されるコンテンツ作成ソフトウェアのための完全にカスタマイズ可能な統合セットを提供するため、これを使用してスタジオのパイプラインを構築できます。プロジェクトの構成において、統合されているソフトウェア パッケージはどれか、そのそれぞれで利用可能な Toolkit アプリはどれかを指定し、さらに各アプリのオプションを指定することにより、スタジオのニーズに合わせてアーティストのワークフローを構築できます。 - -しかし、スタジオのパイプラインでは、さまざまなタイプのアーティストが異なるワークフローを使用するのが一般的です。簡単な例として、アセットを扱うアーティストの場合は Mari などのテクスチャ ペイント ソフトウェアを利用可能にし、ショットを扱うアーティストの場合は Nuke などの合成ソフトウェアを利用可能にします。 - -ソフトウェア パッケージの他にも、異なるアーティストに対して、同じ Toolkit アプリで異なる設定を使用することができます。たとえば、ショットのアーティストとアセットのアーティストの両方が [Workfiles アプリ](https://developer.shotgridsoftware.com/ja/9a736ee3)を使用することがありますが、ショットのアーティストは Shot エンティティ、アセットのアーティストは Asset エンティティに関連付けられているファイルにのみナビゲートできるように制限することができます。 - -プロジェクト内でこれらの個別のワークフローをサポートするために、Toolkit はアプリとエンジンの構成を環境上で分離しています。環境には、一連のソフトウェア パッケージの統合とその設定が含まれています。それらのすべてには、特定の共通するコンテキストがあります。 - -上記の例では、アセットを扱うアーティストはアセットの手順の環境で作業し、ショットを扱うアーティストはショットの手順の環境で作業しています。環境はそれぞれ独立して構成されているため、プロジェクト内で異なるワークフローを使用できます。 - -## Toolkit の既定の設定に関するメモ - -Toolkit での環境設定の構築には多くの自由が与えられています。このドキュメントは利用可能なすべてのオプションのリファレンスで、実際のパイプラインのニーズに最も適した選択をするのに必要な知識を得ることができます。 - -またこのドキュメントでは、[既定の設定](https://github.com/shotgunsoftware/tk-config-default2)と呼ばれる、パイプライン設定の出発点として選択された特別な設定についても説明します。パイプラインをカスタマイズする準備が整ったら、最初の手順は[プロジェクト用の編集可能なパイプライン設定を作成する](./learning-resources/guides/editing_app_setting.md)ことです。 - -これらの選択は単なる規則であり、Toolkit のワークフローにハードコードされているわけではありませんが、既定の設定を例として参照すると、パイプラインのカスタマイズを開始した後に使用できる機能や、独自の設定を構築するためのベスト プラクティスについて学ぶことができます。また、新しい Toolkit ユーザが既定の設定を出発点として参照すれば、Toolkit の規則について知るのにも役立ちます。このドキュメントでは、Toolkit の環境設定の一般的な機能と、既定の設定における特定の選択とを常に区別します。既定の設定の環境構成の詳細については、[README ファイル](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)を参照してください。 - -## ファイルの場所 - -パイプライン設定内の `config/` ディレクトリには、カスタマイズ対象のすべてのファイルとフォルダが含まれています。`config/` には、`cache`、`core`、および `env` の 3 つのサブディレクトリがあります。`env` ディレクトリには環境設定ファイルが保持されるため、このドキュメントでは `config/env` 内のファイルを参照します。 - -![env フォルダの内容](./images/env-config-ref/1.png) - -既定の設定では、`config/env/` に次のファイルが表示されます。 - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -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 環境を設定します。 - -## カスタム環境 - -上記の環境設定ファイルは、既定の設定で提供されます。ただし、スタジオによっては、異なる環境や追加の環境を採用することがあります。たとえば、スタジオによっては、パイプラインのステージごとに異なる構成設定が必要な場合があります(`asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` など)。 その場合、利用可能な環境を完全にカスタマイズできます。 - -これを行うには、目的の環境設定ファイルを `config/env` ディレクトリに追加します。次に、`pick_environment` コア フックをオーバーライドして、新しい環境をいつ使用するかを定義するロジックを追加します。 - -## 基本構造 - -Toolkit の設定ファイルは [YAML](https://yaml.org/) で記述されます。バンドル(アプリ、エンジン、またはフレームワーク)の一般的な設定の構成は次のとおりです。 - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -この構成を説明するために、非常に単純な例を示します。単一のエンジンがあり、その中に単一のアプリケーションが定義されている環境です。以下は、この設定の `project.yml` の内容です。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### エンジン ブロック - -すべての環境設定ファイルは `engines` ブロックで始まります。ここに、その環境用に定義されているすべてのエンジンがネストされています。 - -この例では、単一のエンジン `tk-maya` のみが定義されています。`apps` と `location` の 2 つの設定がリストされています。 - -`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 -``` - -これはタイプ `app_store` のディスクリプタで、指定されたバンドルを {% include product %} App Store から入手するよう Toolkit に指示します。タイプ `app_store` のディスクリプタの設定は `name` と `version` です。 - -対照的に、スタジオでカスタム バンドルをアクティブに開発している場合、たとえば特定のワークフロー用の Toolkit アプリを作成している場合は、ディスク上のパスから直接入手することができます。この場合、以下に示すようにタイプ `dev` のディスクリプタを使用します。 - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` ディスクリプタは `app_store` ディスクリプタとは設定が異なります。他の設定を使用することもできますが、ディスク上のアプリの場所を参照する `path` 設定を使用して簡単にセットアップすることができます。 - -利用可能なすべてのディスクリプタ タイプとその設定に関する詳細は、[Toolkit Core API ドキュメントの「ディスクリプタ」セクション](https://developer.shotgridsoftware.com/tk-core/descriptor.html)を参照してください。 - -### アプリ ブロック - -アプリは Toolkit のユーザ ツールであり、各アプリは他のアプリから独立して実行できます。パイプラインのニーズに基づいてどのアプリを使用するかを選択できます。エンジン ブロック内の `apps` 設定は、特定のエンジンで使用できるアプリを定義します。 - -以下に、上記の例の `apps` 設定をもう一度示します。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -単一のアプリ、`tk-multi-workfiles2` アプリが定義されていることがわかります。現在のところ、単一の設定、すなわちディスクリプタのみが定義されています。 - -`project` 環境の `tk-maya` エンジンで他のアプリを利用できるようにするには、ここで追加します。ここでは、エンジンに Panel、`tk-multi-shotgunpanel`、および About アプリ、`tk-multi-about` を追加します。例の `project.yml` ファイルは次のようになります。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -ここでは、いくつかの重要な注意事項があります。 - -* 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 -* ファイルが長くなり始めていますが、構成設定はまだ追加していません。 -* 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 - -最後の 2 つの問題を軽減するために、Toolkit 設定は*インクルード*をサポートします。 - -### インクルード - -*「インクルード」*を使用すると、あるファイルのセクションを構成内の別のファイルで参照できます。インクルードを使用すると、構成設定を一箇所で設定し、複数の環境で使用できます。 - -インクルードは次の 2 つの部分で構成されます。 - -* `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 -* 構成設定内のリファレンス。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 - -上記の例を具体化するために、すべてのエンジンのロケーション ディスクリプタを保持する単一のファイルを作成しているとします。そのファイルを `includes` サブフォルダに置き、`engine_locations.yml` という名前を付けます。 - -`engine_locations.yml` の内容は以下のようになります。 - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -このファイルはすべてのエンジンの場所に対する単一のソースとして機能し、すべての環境設定から参照することができます。このインクルード ファイルを使用した場合、この例は次のようになります。 - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations include file](./images/env-config-ref/2.png) - -ここでは、`tk-maya` エンジンの `location` 設定の値が、インクルードされる YAML ファイルのキーを参照していることがわかります。 - -{% include info title="注" content="この例では、既定の設定の規則に従い、すべてのエンジンの場所を `config/env/includes/engine_locations.yml` ファイルに含めています。"%} - -アプリの場所を示すために、2 番目のインクルード ファイルを追加することができます。実際には、これは既定の設定によって行われます。例を拡張してみましょう。 - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -インクルードされた `engine_locations.yml` ファイルから `tk-maya` エンジンのディスクリプタを取得し、インクルードされた `app_locations.yml` ファイルから `tk-maya` エンジン用に定義された各アプリのディスクリプタを取得します。 - -{% 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 は**「スパース構成」を許可します: 構成設定が環境設定ファイル(またはそこに含まれるファイル)で明示的に指定されていない場合、バンドルの既定値が使用されます。 - -この例では、`location` 以外にアプリの設定を指定していません。したがって、設定の現在の状態では、3 つのアプリはすべての設定に既定値を使用します。それでは、どの構成設定が利用可能であるかを知るにはどうすれば良いでしょうか。 - -{% include info title="注" content="Toolkit の構成がスパース構成であることは必須ではありませんが、既定の設定はスパース構成です。" %} - -## 利用可能な構成設定を検出する - -スパース構成では、単に設定ファイルを見ただけでは、どの構成設定がアプリに使用できるかをすぐに判断することはできません。アプリで利用可能な構成設定を確認する場合、2 つの選択肢があります。 - -* **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://developer.shotgridsoftware.com/ja/9a736ee3)を参照することができます。[アプリとエンジンのページ](https://developer.shotgridsoftware.com/ja/9a736ee3)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 -* **マニフェスト:** すべての 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))にあります。 - -## 構成設定を修正する - -既定値の設定を変更するには、パイプライン設定の適切な環境で、適切なブロックに構成を追加し、その値を設定します。 - -例に戻って、プロジェクト環境で Maya が起動されると `tk-multi-workfiles2` が自動的に起動するように設定してみましょう。[アプリのマニフェスト](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)を見ると、アプリの起動時に Workfiles UI を起動するかどうかを制御する `launch_at_startup` 設定があり、その既定値が `False` であることがわかります。そこで、`launch_at_startup` オプションを追加して `True` に設定します。`project.yml` ファイルは次のようになります。 - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -`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://developer.shotgridsoftware.com/ja/82ff76f7) -* [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-flare_review.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-export-flare_review.png deleted file mode 100644 index d8789830f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-flare_review.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-menu.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-export-menu.png deleted file mode 100644 index ca7d88866..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-render_range.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-export-render_range.png deleted file mode 100644 index 9c70b2958..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-render_range.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-shot_export.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-export-shot_export.png deleted file mode 100644 index 15451eb68..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-export-shot_export.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-menu.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-review-menu.png deleted file mode 100644 index b92701194..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-select.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-review-select.png deleted file mode 100644 index a1dbb0191..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-select.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-ui.png b/docs/ja/reference/pipeline-integrations/images/apps/flame-review-ui.png deleted file mode 100644 index f0193ed1a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/flame-review-ui.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate.png deleted file mode 100644 index ed1e483ab..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate_ex.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate_ex.png deleted file mode 100644 index 4ed7029e2..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-collate_ex.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-cut_type.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-cut_type.png deleted file mode 100644 index 8d3cb7b4f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-cut_type.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_queue.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_queue.png deleted file mode 100644 index 9abbc3881..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_queue.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_window.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_window.png deleted file mode 100644 index 318a6cd59..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-export_window.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-finder.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-finder.png deleted file mode 100644 index bf11c85b1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-finder.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png deleted file mode 100644 index e439c7a51..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png deleted file mode 100644 index 203f9b18a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-paths.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-paths.png deleted file mode 100644 index d61be78a9..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-paths.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-processor.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-processor.png deleted file mode 100644 index a69d63102..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-processor.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png b/docs/ja/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png deleted file mode 100644 index e468bc217..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png deleted file mode 100644 index a85e4e017..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png deleted file mode 100644 index f5def6a5a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png deleted file mode 100644 index 37a09983c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png deleted file mode 100644 index 91d3ba01b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png deleted file mode 100644 index 05c6398e9..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png deleted file mode 100644 index 35632b864..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png b/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png deleted file mode 100644 index e814ec416..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about1.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about1.png deleted file mode 100644 index 1aa45ba11..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about2.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about2.png deleted file mode 100644 index ed35ef07d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about2.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about3.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about3.png deleted file mode 100644 index b1b2a6021..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-about3.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-menu.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-about-menu.png deleted file mode 100644 index a6d8e2678..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-about-menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png deleted file mode 100644 index 593c3dab5..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png deleted file mode 100644 index c6d9092d3..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png deleted file mode 100644 index 372911c00..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png deleted file mode 100644 index a1dc359b8..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png deleted file mode 100644 index f7a5dda41..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png deleted file mode 100644 index 314895368..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png deleted file mode 100644 index 1493a2982..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png deleted file mode 100644 index aa85e3c28..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png deleted file mode 100644 index 0a3388fda..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png deleted file mode 100644 index 9cb68f6f8..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png deleted file mode 100644 index b1158fac5..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png deleted file mode 100644 index 15d7915a1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png deleted file mode 100644 index 3bc7fd92e..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png deleted file mode 100644 index b26858fb7..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png deleted file mode 100644 index 0e4573387..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png deleted file mode 100644 index 4fc670c15..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png deleted file mode 100644 index 49c0ccf61..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png deleted file mode 100644 index 03b34104b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png deleted file mode 100644 index 04074cc3b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png deleted file mode 100644 index 47e35aec0..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png deleted file mode 100644 index d154a4d86..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png deleted file mode 100644 index 5b911971b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png deleted file mode 100644 index 1a1f676b1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png deleted file mode 100644 index 472e1e67b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png deleted file mode 100644 index d1174da4e..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png deleted file mode 100644 index 0055f737c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png deleted file mode 100644 index 67bae3004..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png deleted file mode 100644 index 91133b8b5..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png deleted file mode 100644 index c2fa2072f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png deleted file mode 100644 index d2cfdee22..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png b/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png deleted file mode 100644 index 8ce560526..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png deleted file mode 100644 index 6577a454c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png deleted file mode 100644 index 104c14d94..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png deleted file mode 100644 index 847fa19cd..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png deleted file mode 100644 index 47e9dd91c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png deleted file mode 100644 index b609e1d71..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png deleted file mode 100644 index 79539ae8c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png deleted file mode 100644 index 88e44cff3..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png b/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png deleted file mode 100644 index f5183a830..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/sg_publisher_1.png b/docs/ja/reference/pipeline-integrations/images/apps/sg_publisher_1.png deleted file mode 100644 index 3b5afe00d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/sg_publisher_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png b/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png deleted file mode 100644 index 74c251f8a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png b/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png deleted file mode 100644 index d7949b514..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png b/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png deleted file mode 100644 index b80b0bf5c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png b/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png deleted file mode 100644 index 8ed2fba73..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/3dsmax_engine.png b/docs/ja/reference/pipeline-integrations/images/engines/3dsmax_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/3dsmax_engine.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png b/docs/ja/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/add_shelf.png b/docs/ja/reference/pipeline-integrations/images/engines/add_shelf.png deleted file mode 100644 index f759de6d6..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/add_shelf.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/aftereffects_extension.png b/docs/ja/reference/pipeline-integrations/images/engines/aftereffects_extension.png deleted file mode 100644 index e21656265..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/aftereffects_extension.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-01.png b/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-01.png deleted file mode 100644 index 6f60c53b3..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-01.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-02.png b/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-02.png deleted file mode 100644 index a22c8a1cc..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/create-dcc-02.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_commands.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_commands.png deleted file mode 100644 index 22c2a402f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_commands.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_components.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_components.png deleted file mode 100644 index eeb86f40f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_components.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_console.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_console.png deleted file mode 100644 index 25422c0b9..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_console.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_context_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_context_menu.png deleted file mode 100644 index 883612423..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_context_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_header.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_header.png deleted file mode 100644 index c0da97cec..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_header.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_menu.png deleted file mode 100644 index f522ffe67..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/extension_shelf.png b/docs/ja/reference/pipeline-integrations/images/engines/extension_shelf.png deleted file mode 100644 index 110076566..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/extension_shelf.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/flame_project.png b/docs/ja/reference/pipeline-integrations/images/engines/flame_project.png deleted file mode 100644 index b9ccfaf80..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/flame_project.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/houdini_engine.png b/docs/ja/reference/pipeline-integrations/images/engines/houdini_engine.png deleted file mode 100644 index 8d3e51b69..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/houdini_engine.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/houdini_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/houdini_menu.png deleted file mode 100644 index 178cfe9cd..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/houdini_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/houdini_shelf.png b/docs/ja/reference/pipeline-integrations/images/engines/houdini_shelf.png deleted file mode 100644 index 66fc34963..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/houdini_shelf.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/maya_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/maya_menu.png deleted file mode 100644 index d3bf18dc1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/maya_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/mobu.png b/docs/ja/reference/pipeline-integrations/images/engines/mobu.png deleted file mode 100644 index bbdd364ab..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/mobu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-favourites.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-favourites.png deleted file mode 100644 index 2e0efcf68..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-favourites.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-gizmo.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-gizmo.png deleted file mode 100644 index 25dcda35e..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-gizmo.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png deleted file mode 100644 index 3d5f16498..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png deleted file mode 100644 index aa7dea45c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png deleted file mode 100644 index 28b74d2fc..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-menu.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-menu.png deleted file mode 100644 index 2f157f594..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png deleted file mode 100644 index 595bac2b1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/otls_path.png b/docs/ja/reference/pipeline-integrations/images/engines/otls_path.png deleted file mode 100644 index 3ab2fb93e..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/otls_path.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png deleted file mode 100644 index 22c2a402f..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png deleted file mode 100644 index 92391d3b5..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png deleted file mode 100644 index 4c463fecc..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png deleted file mode 100644 index 750041317..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png deleted file mode 100644 index c0da97cec..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png deleted file mode 100644 index 110076566..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png deleted file mode 100644 index d078247a3..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png b/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png deleted file mode 100644 index 6c5826a46..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/processes.png b/docs/ja/reference/pipeline-integrations/images/engines/processes.png deleted file mode 100644 index 4a68bad39..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/processes.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png b/docs/ja/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png deleted file mode 100644 index c4cd16a61..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/sg_mobu_1.png b/docs/ja/reference/pipeline-integrations/images/engines/sg_mobu_1.png deleted file mode 100644 index 55ec54104..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/sg_mobu_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/sg_shell_1.png b/docs/ja/reference/pipeline-integrations/images/engines/sg_shell_1.png deleted file mode 100644 index 678e3b7c3..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/sg_shell_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png b/docs/ja/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png deleted file mode 100644 index 029fd2a32..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/sg_softimage_1.png b/docs/ja/reference/pipeline-integrations/images/engines/sg_softimage_1.png deleted file mode 100644 index 3064fca61..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/sg_softimage_1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action1.png b/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action1.png deleted file mode 100644 index 820f24266..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action2.png b/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action2.png deleted file mode 100644 index f69e1a7a7..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/shotgun-action2.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/engines/softimage_menu.png b/docs/ja/reference/pipeline-integrations/images/engines/softimage_menu.png deleted file mode 100644 index 9b16e56d1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/engines/softimage_menu.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/env-config-ref/1.png b/docs/ja/reference/pipeline-integrations/images/env-config-ref/1.png deleted file mode 100644 index 8df3b4d14..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/env-config-ref/1.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/images/env-config-ref/2.png b/docs/ja/reference/pipeline-integrations/images/env-config-ref/2.png deleted file mode 100644 index 236ac183d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/images/env-config-ref/2.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apis.md b/docs/ja/reference/pipeline-integrations/toolkit-apis.md deleted file mode 100644 index 180aae96d..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apis.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: API -pagename: toolkit-apis -lang: ja ---- - -# Toolkit API - -ここでは、Toolkit プラットフォームで提供される API のリファレンス ドキュメントを紹介します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps.md b/docs/ja/reference/pipeline-integrations/toolkit-apps.md deleted file mode 100644 index cc43820f2..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: アプリ -pagename: toolkit-apps -lang: ja ---- - -# Toolkit アプリ - -ここでは、Toolkit プラットフォームで使用できるアプリのリファレンス ドキュメントを紹介します。 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 deleted file mode 100644 index 21d4eefb1..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: default -title: Flame の書き出し -pagename: tk-flame-export -lang: ja ---- - -# Flame の書き出し - -{% include product %} Flame Export アプリはプロジェクトの開始時に役立ちます。 - -Flame で最初のコンフォームを作成したら、ショット書き出し機能を使用して、{% include product %} でコンテンツをすばやく生成し、ディスクにプレートをレンダリングして、レビュー用にコンテンツを送信できます。 - -いったん軌道に乗った後は、書き出しアプリが Flare または Flame バッチ モードで実行されているすべてのレンダリングのトラックも行うため、ワークフローの一部としてコンテンツをレビュー用に簡単に送信できます。 - -## {% include product %} にコンフォームを送信する - -Flame でシーケンスのコンフォームをセットアップし、タイムラインのすべてのセグメントに**ショット名を割り当て**たら、シーケンスを選択し、右クリックして[{% include product %} ショット書き出し] (Shotgun Shot Export)オプションを選択します。 - -![メニュー](../images/apps/flame-export-menu.png) - -これにより、パブリッシュの冒頭のコメントを入力できる {% include product %} の UI が表示されます。このコメントはレビューに送信され、パブリッシュとその他のコンテンツに説明を追加する場合にも使用されます。 - -説明とは別に、書き出されるプレートに使用する出力データ形式を選択することもできます。これらのプリセットは Toolkit アプリ設定の一部であり、貴社のニーズに合うように設定できます。 - -![ショット書き出し](../images/apps/flame-export-shot_export.png) - -送信ボタンをクリックすると、多くの処理がすぐに実行されます。 - -- ショットとタスクが {% include product %} で作成されます。作成される新しいショットに関連するタスクのリストは、一貫性のある構造をすぐに無駄なく作成できるように、タスク テンプレート設定を介して設定可能です。既定では、ショットはシーケンスの子として関連付けられますが、これも設定可能で、シーンまたはエピソードを作業している場合は、代わりにショットと連携するように書き出し機能を再設定できます。 - -- {% include product %} に正しいデータが含まれる場合は、標準的なフォルダ作成メカニズムを使用して、ディスク上にフォルダが作成されます。これにより、作成されるすべてのショットに一貫したフォルダのセットを使用してプロジェクトが開始できるようになります。 - -上記の 2 つの手順を実行したら、以降の手順を続行するための基本的な構造ができあがります。これらの処理はバックグラウンドで実行されます。 - -- プレートが、設定で定義されたプリセットに従ってショットごとにディスク上に書き出されます。ファイルの場所は Toolkit テンプレート システムを使用して定義されます。つまり、このプレートの場所は適切に定義されているため、パイプラインの下流工程にある他のツールからでも参照できます。 - -- バッチ ファイルとクリップ XML ファイルが書き出されます。これらのファイルは、反復ワークフローを有効にするために Flame で使用されます。これにより、Flame のメイン コンフォームに後で取り込まれる新しいバージョンをすぐにレンダリングできます。 - -- QuickTime が生成され、レビュー用に {% include product %} にアップロードされます。 - - -## レビューにバッチ レンダリングを送信する - -ショットの Flame バッチ ファイルをパブリッシュしたら、レンダリングと出力の設定が事前に入力されたバッチ ファイルを開くために、このショットから Flare を直接起動できます。新しいバージョンをレンダリングするには、単純に Render Range ボタンをクリックします。 - -![レンダリング範囲](../images/apps/flame-export-render_range.png) - -Toolkit にダイアログが表示され、{% include product %} Review にレンダリングを送信するかどうかを選択できます。 - -![レビューの選択](../images/apps/flame-export-flare_review.png) - -{% include product %} によってファイルがパブリッシュおよびトラックされ、必要に応じてレビューにも送信されます。 - -## 詳細について - -詳細および処理のワークフローを確認する場合は、Flame エンジンのマニュアルを参照してください。このマニュアルには、処理のさまざまなワークフローを説明したいくつかのビデオ コンテンツがあります。 - -LINKBOX_ENGINE:{% include product %}software/tk-flame:Flame エンジン - -統合やカスタマイズに関して疑問がある場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。 - -# 高度なトピック - -以下に、設定とカスタマイズに関する高度な詳細情報を示します。 - -## 書き出しプリセットを使用する - -書き出し機能は、設定の *「書き出しプリセット」* の概念を使用します。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://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html を参照してください。 - -## ffmpeg をカスタマイズする - -書き出し機能で QuickTime を生成する場合は、Flame に付属する ffmpeg バージョンが使用されます。書き出し機能の設定フックを修正すると、組み込まれた ffmpeg の代わりに外部の ffmpeg バージョンを指定できます。Flame に付属する ffmpeg バージョンは ffmpeg のトランスコーディングとパフォーマンスの最新機能をトラッキングするため、最新バージョンを使用すると、パフォーマンスを改善できる可能性があります。 - -h264 パラメータが ffmpeg に渡される方法は、既定のバージョンと最新バージョンとの間で変更されています。ffmpeg を最新バージョンに切り替えると、推奨するトランスコーディング ガイドラインを完全に実装できるため、{% include product %} 側でアップロードとパフォーマンスが最適化されます。このガイドラインは以下を参照してください。 - -https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -ffmpeg バージョンの変更は上級ユーザのみにお勧めします。変更する場合は、次の手順に従ってください。 - -### 設定フックをコピーする - -修正が必要なすべての設定は、Flame 書き出しアプリに付属する設定フック内にあります。このフックを修正するには、最初にアプリの場所の内部にある既定の場所からユーザの設定にこのフック ファイルをコピーする必要があります。通常、フック ファイルはプロジェクト設定内の `install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py` と同じような場所にあります。`config/hooks` など、設定内の `hooks` の場所にこのファイルをコピーします。分かりやすい名前にするため、単なる `settings.py` よりも、さらに詳細な名前を付けることをお勧めします。 - -``` -install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py -> config/hooks/flame_export_settings.py -``` - -それでは Flame 環境設定ファイルを編集しましょう。通常は `config/env/includes/flame.yml` です。見出し `tk-flame-export` の下に、`settings_hook: '{self}/settings.py'` と定義されたフックのパスがあります。基本的に、環境設定はアプリの場所(`{self}` など)内部でフック ファイルを探します。これを `settings_hook: '{config}/flame_export_settings.py'` に変更すると、代わりに環境設定内のフック ファイルを探すように Toolkit に指示されます。まとめると次のようになります。 - -``` -settings_hook: '{self}/settings.py' -> '{config}/flame_export_settings.py' -``` - -### フックを修正する - -これで `config/hooks/flame_export_settings.py` フックを修正する準備ができました。テキスト エディタで開きます。ffmpeg に関連するメソッドと ffmpeg 設定があることにお気づきでしょう。最初に修正するのは次の項目です。 - -``` -def get_external_ffmpeg_location(self): - """ - Control which version of ffmpeg you want to use when doing transcoding. - By default, this hook returns None, indicating that the app should use - the built-in version of ffmpeg that comes with Flame. - - If you want to use a different version of ffmpeg, simply return the path - to the ffmpeg binary here. - - :returns: path to ffmpeg as str, or None if the default should be used. - """ - return None -``` - -既定で `None` を返すことで、書き出し機能が Flame に組み込まれた ffmpeg を使用します。ffmpeg にフル パスを返すように変更します。Backburner クラスタを実行している場合は、クラスタ内のすべてのマシンから ffmpeg を呼び出せるため、実行可能ファイルは任意の場所にインストールされます。 - -ffmpeg の場所を更新すると、おそらくは ffmpeg に渡されるパラメータを微調整することになります。これは次の異なる 2 つのメソッドで変更する必要があります。 - -- `get_ffmpeg_quicktime_encode_parameters` は、{% include product %} にアップロードする QuickTime を生成するときに使用されるパラメータを返します。 - -- `get_local_quicktime_ffmpeg_encode_parameters` は、QuickTime をディスクに書き込むときに使用されるパラメータを返します。 - -{% include product %} のアップロードの場合、最初は既定の {% include product %} のエンコード設定を使用することをお勧めします。 - -``` -def get_ffmpeg_quicktime_encode_parameters(self): - return "-vcodec libx264 -pix_fmt yuv420p -vf 'scale=trunc((a*oh)/2)*2:720' -g 30 -b:v 2000k -vprofile high -bf 0" -``` - -ローカルの {% include product %} トランスコードの場合、{% include product %} トランスコードに基づいて設定しながら、解像度の制限を削除してビット レートを増やすことをお勧めします。 - -``` -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 deleted file mode 100644 index 791442fc1..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Flame のレビュー -pagename: tk-flame-review -lang: ja ---- - -# Flame のレビュー - -{% include product %} Flame Review アプリにより、Flame の 1 つまたは複数のシーケンスを {% include product %} Review に簡単にプッシュできます。 - -レビュー対象の 1 つのシーケンスまたは一連のシーケンスを右クリックします。 - -![メニュー](../images/apps/flame-review-menu.png) - -{% include product %} Review のオプションを選択します。 - -![選択](../images/apps/flame-review-select.png) - -レビュー ノートを追加できる Toolkit の UI が表示されます。 - -![UI](../images/apps/flame-review-ui.png) - -[OK]をクリックすると、バックグラウンド ジョブが生成され、すべての処理がシーンの背後で実行されます。 -次の手順が実行されます。 - -- シーケンスが QuickTime 形式でディスクに書き出されます。この書き出しは Flame の QuickTime 書き出しとして処理され、設定フックを使用してさまざまな設定をすべて制御できます。 - -- シーケンスが完了すると、Toolkit は {% include product %} に一致するシーケンスがあるかどうかを確認します。一致するシーケンスがない場合は、シーケンスが自動的に作成されます。 - -- レビュー バージョンが作成され、シーケンスと関連付けられます。 - -- 最後に、QuickTime はレビュー バージョンにアップロードされます。 - -このプロセスはオーディオ トラックやトランジションなどをサポートし、「見たままが得られる」ようになっています。{% include product %} にアクセスすると、Client Review Site や {% include product %} iPhone アプリなど、さまざまな方法でメディアをレビューできます。 - -## カスタマイズと設定 - -Flame レビュー アプリはいくつかの異なる方法でカスタマイズすることができます。 - -- Flame でシーケンスを表示するために {% include product %} で使用する**エンティティ タイプ**を制御できます。たとえば、エピソード形式のコンテンツで作業している場合は、レビュー バージョンを {% include product %} のシーケンスよりもエピソードにリンクするほうが便利な場合があります。 - -- {% 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 deleted file mode 100644 index 34ce4bdcf..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: Hiero/Nuke Studio の書き出し -pagename: tk-hiero-export -lang: ja ---- - -# Hiero/Nuke Studio の書き出し - -### はじめに - -このアプリを使用すると、{% include product %} は Hiero のシーケンス用の書き出しダイアログを認識するようになります。 - -#### 概要のビデオとデモ - -{% include product %} Toolkit や Hiero の統合が初めての場合は、次のビデオを視聴すると、{% include product %} Toolkit や Hiero を統合した場合のパイプライン機能の概要が簡単に分かります。 - -Toolkit と Hiero を既に使用している場合は、以降の説明をお読みください。 - -
- -
- -### {% include product %} ショット プロセッサ - -このアプリ自体が起動すると、Hiero 書き出しダイアログに変更が登録されます。 - -![書き出しウィンドウ](../images/apps/hiero-export_window.png) - -最初に、新しいプロセッサが登録されていることが分かります。 - -![プロセッサ](../images/apps/hiero-processor.png) - -このボタンをクリックすると、いくつかの変化があることが分かります。 - -ダイアログの上部には、シーケンスの書き出し後に {% include product %} でショットを作成または更新する方法を制御する UI が追加されています。 - -![Shotgun 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) - -たとえば、ショット 010 と 020 を表す 2 つのトラック項目があるとします。010 から始まり、020 は別のトラックで 010 の最後とオーバーラップします。010 が最初のトラック項目であり、Hiero の項目です。照合が有効になっているため、{% include product %} はこの 2 つの項目を 1 つのショット 010 として処理され、ショット 010 は {% include product %} で作成または更新されます。カットインはトラック項目 010 の先頭と一致し、カットアウトはトラック項目 020 の最後と一致します。Screening Room 対応バージョンは項目ごとに作成されますが、両方ともショット 010 にリンクされます。プレートは項目ごとにパブリッシュされたファイルとして作成されますが、両方ともショット 010 にリンクされます。1 つの Nuke スクリプトはショット 010 とリンクしてパブリッシュされます。2 つの読み取りノードが含まれ、項目ごとに 1 つのノードが割り当てられます。この場合、ショット 010 と照合しているため、{% include product %} でショット 020 は作成または更新されません。 - -![照合拡張機能](../images/apps/hiero-collate_ex.png) - -### パス -次の {% include product %} の UI は標準的なパス ダイアログです。既定で Hiero を介してショットに追加される項目は 3 つあります。既定の Nuke スクリプト、既定の Nuke 書き込み場所、プレート トランスコード用の既定の場所です。これらの項目の場所はアプリの設定によって決まり、テンプレート作成システムの機能をフル活用できます。 - -![パス](../images/apps/hiero-paths.png) - -このアプリによって、Hiero で `{tk_version}` トークンを使用できるようになります。このトークンはバージョン文字列で置き換えられ、{% include product %} Toolkit 用に正しくフォーマットされます。 - -### カスタム テンプレートのフィールド -`custom_template_fields` 設定で定義されて `resolve_custom_strings` フックで解決されるトークンは、有効な置き換えトークンの Hiero のリストに自動的に追加され、Toolkit テンプレートパスで有効な置き換えとみなされます。 - -たとえば、Toolkit `templates.yml` ファイルで次のようにキーを定義するとします。 - -``` - resolution: - type: str - filter_by: alphanumeric -``` - -`tk-hiero-export` の `project.yml` 設定は次のようになります。 - -``` - ... - ... - tk-hiero: - apps: - tk-hiero-export: - custom_template_fields: - - {description: Shot Resolution, keyword: resolution} - ... - ... -``` - -その後、次のように `resolve_custom_strings` フックを修正します。 - -``` -# Copyright (c) 2014 {% include product %} Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the {% include product %} Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by {% include product %} Software Inc. - -from tank import Hook - - -class HieroResolveCustomStrings(Hook): - """Translates a keyword string into its resolved value for a given task.""" - - RESOLUTION_TOKEN_NAME = "{resolution}" - - - def execute(self, task, keyword, **kwargs): - """ - """ - - self.parent.log_debug("attempting to resolve custom keyword: %s" % keyword) - if keyword == self.RESOLUTION_TOKEN_NAME: - translated_value = self._clip_resolution_string(task) - else: - raise RuntimeError("No translation handler found for custom_template_field: %s" % keyword) - - self.parent.log_debug("Custom resolver: %s -> %s" % (keyword, translated_value)) - return translated_value - - - # 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() - 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'] - height = task_reformat_settings['height'] - - return "%sx%s" % (width, height) -``` - -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) - -アプリ設定 `plate_published_file_type` と `nuke_script_published_file_type` を使用すると、PublishedFiles を登録する際のファイル タイプを制御できます。さらに、`nuke_script_toolkit_write_nodes` を使用すると、書き出しダイアログで利用可能な WriteNode 設定を制御できます。 - -### 書き出しプロセス - -書き出しを実行すると、書き出しキューにいくつかの追加タスクが表示されます。 - -![キューの書き出し](../images/apps/hiero-export_queue.png) - -各ショットは、{% include product %} でのショットの作成と、スキーマ設定で指定した完全なショット構造の作成を行う {% include product %}ShotUpdater タスクを実行します。 - -![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 から推定されます。 - -![カット タイプ](../images/apps/hiero-cut_type.png) - -この値は**カット**の**[タイプ] (Type)**フィールドに表示されます。 - -いずれかの照合オプションが選択されている場合、カット スキーマはサポートされません。**カット**と**カット項目**エンティティの作成は省略されます。 - -また、カット スキーマはリタイム クリップを処理しません。リタイム クリップを書き出すと、デバッグの警告がログに記録されます。 - -### 代わりのショット階層 -標準的な「シーケンス > ショット」階層では作業しないが、エピソードやシーンを使用する可能性がある場合は、どのようなショット階層が使用されていてもアプリが連携するように設定可能な `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 deleted file mode 100644 index 951553f73..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: ShotGrid で Hiero/Nuke Studio を開く -pagename: tk-hiero-openinshotgun -lang: ja ---- - -# {% include product %} で Hiero/Nuke Studio を開く - -このアプリによって、Hiero のスプレッドシートとタイムラインにコンテキスト メニューが追加されるため、任意のトラック項目にショットがある場合に、{% include product %} でこの項目を表示することができます。 - -![Shotgun で開く](../images/apps/hiero-open_in_shotgun.png) - -通常、このアプリを設定する場合は、{% 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} -``` - - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md deleted file mode 100644 index 82d5dcaca..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: Houdini Alembic Node -pagename: tk-houdini-alembicnode -lang: ja ---- - -# Houdini Alembic Node - -Houdini Alembic Node アプリは、Alembic ファイルの出力場所を簡単に標準化できるカスタムの {% include product %} Alembic 出力ノードを提供します。各環境に合わせた設定が可能です。 - -## 一般用途 - -{% include product %} Alembic 出力を使用するには、最初にスクリプトを Toolkit 作業ファイルとして保存し、Houdini の TAB メニューから新しいノードを作成します。これにより、通常の Alembic 出力ノードに類似したノードが作成されます。 - -![Alembic Node](../images/apps/houdini-alembicnode-create_node.png) - -このノードは複数の出力プロファイルを使用して設定できます。Alembic キャッシュをディスクに書き込む必要がある場合に、それぞれのプロファイルで異なるテンプレート パスを使用します。 - -![Alembic Node](../images/apps/houdini-alembicnode-output_profile.png) - -手動でパスを入力するのではなく、使用する出力プロファイルを指定するだけで、ノードが残りのパスを自動的に計算してくれます。UI には計算されたパスが表示されます。 - -![Alembic Node](../images/apps/houdini-alembicnode-computed_path.png) - -出力 Alembic ファイルはバージョンで管理され、バージョン番号は、Multi Publish を使用したパブリッシュ時に自動的に増分される現在の Houdini シーン ファイル バージョンに常に準拠します。 - -## 環境設定 - -Toolkit Alembic Node は、環境設定ごとに複数の出力プロファイルを指定することができます。次に、複数のプロファイルを使用したノードの設定例を示します。 - -
-  tk-houdini:
-    apps:
-      tk-houdini-alembicnode:
-        location:
-          name: tk-houdini-alembicnode
-          type: app_store
-          version: v0.2.2
-        work_file_template: houdini_shot_work
-        default_node_name: tk_alembic_out
-        output_profiles:
-          - name: For Publishing
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_cache_template: houdini_shot_work_alembic_cache
-          - name: Local Testing
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_cache_template: houdini_shot_local_alembic_cache
-
- -`color` フィールドを介してノードの外観を変更するために出力プロファイルを使用したり、基本の Alembic ノードで個別のパラメータを調整するために `settings` フィールドにそのパラメータと一致するキーと値のペアを入力したりできます。最後に、`output_cache_template` フィールドは、ディスクに書き込まれる Alembic キャッシュの出力パスを操作します。 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 deleted file mode 100644 index e23a08bb6..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: Houdini Mantra Node -pagename: tk-houdini-mantranode -lang: ja ---- - -# Houdini Mantra Node - -Houdini Mantra Node アプリは、レンダリング ファイルの出力場所を簡単に標準化できるカスタムの {% include product %} Mantra 出力ノードを提供します。各環境に合わせた設定が可能です。 - -## 一般用途 - -{% include product %} Mantra Node を使用するには、最初にスクリプトを Toolkit 作業ファイルとして保存し、Houdini の TAB メニューから新しいノードを作成します。これにより、通常の Mantra 出力ノードに類似したノードが作成されます。 - -![Mantra Node](../images/apps/houdini-mantranode-create_node.png) - -このノードは複数の出力プロファイルを使用して設定できます。レンダリング出力(イメージ、ifd、dcm、aov など)をディスクに書き込む必要がある場合に、それぞれのプロファイルで一連の異なるテンプレート パスを使用します。 - -![Mantra Node](../images/apps/houdini-mantranode-output_profile.png) - -手動でパスを入力するのではなく、使用する設定を指定するだけで、ノードが残りのパスを自動的に計算してくれます。UI には計算されたパスが表示されます。 - -![Mantra ノード](../images/apps/houdini-mantranode-computed_path.png) - -レンダリングされたファイルはバージョンで管理され、バージョン番号は、Multi Publish を使用したパブリッシュ時に自動的に増分される現在の Houdini シーン ファイル バージョンに常に準拠します。 - -## 環境設定 - -Toolkit Mantra Node は、環境設定ごとに複数の出力プロファイルを指定することができます。次に、複数のプロファイルを使用したノードの設定例を示します。 - -
-  tk-houdini:
-    apps:
-      tk-houdini-mantranode:
-        location:
-          name: tk-houdini-mantranode
-          type: dev
-          version: v0.2.2
-        default_node_name: tk_mantra_out
-        work_file_template: houdini_shot_work
-        output_profiles:
-          - name: Primary Render
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_render_template: houdini_shot_render
-            output_ifd_template: houdini_shot_ifd
-            output_dcm_template: houdini_shot_dcm
-            output_extra_plane_template: houdini_shot_extra_plane
-          - name: Local Render
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_render_template: houdini_shot_local_render
-            output_ifd_template: houdini_shot_local_ifd
-            output_dcm_template: houdini_shot_local_dcm
-            output_extra_plane_template: houdini_shot_local_extra_plane
-
- -`color` フィールドを介してノードの外観を変更するために出力プロファイルを使用したり、基本の Alembic ノードで個別のパラメータを調整するために `settings` フィールドにそのパラメータと一致するキーと値のペアを入力したりできます。最後に、`output_*_template` フィールドは、Mantra レンダラによってディスクに書き込まれるファイルの出力パスを操作します。 \ No newline at end of file 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 deleted file mode 100644 index ffe65fb95..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Mari プロジェクト マネージャ -pagename: tk-mari-projectmanager -lang: ja ---- - -# Mari プロジェクト マネージャ - -Mari プロジェクト マネージャは Mari での新しいプロジェクトの作成プロセスを合理化します。アーティストは {% include product %} ローダーを使用して、ロードするパブリッシュ済みジオメトリをすぐに選択できます。このアプリ内で作成されるプロジェクトは {% include product %} に対応しているため、アーティストは書き出しオプションやファイルの場所を気にすることなく、パイプラインの他の部分にテクスチャをパブリッシュできます。 - 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 deleted file mode 100644 index 20b940810..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: 概要 -pagename: tk-multi-about -lang: ja ---- - -# 概要 - -このアプリは、現在の作業領域と現在の環境で実行しているすべてのアプリの詳細情報をグラフィカルに表示します。コンテキスト メニューからアクセスできます。 - -![スクリーンショット](../images/apps/multi-about-menu.png) - -## すべてのアプリをリロードする -このアプリには、環境全体をリロードする便利なボタンがあります。これは、開発中に一部のコードを変更する場合に便利です。Maya や Nuke を再起動せず、リロード ボタンをクリックするだけです。 - - -リロード機能とは別に、このアプリは、現在の作業領域と現在ロードされているすべてのアプリの詳細情報を表示します。 - -次の 3 つの異なるビューがあります。 - -## 現在の作業領域 - -![スクリーンショット](../images/apps/multi-about-about1.png) - -ここには現在のショット、アセット、タスクなどが表示されます。リスト内の項目をダブル クリックすると、その項目の {% include product %} の[詳細] (Detail)ページが表示されます。 - -## 実行中のアプリ - -![スクリーンショット](../images/apps/multi-about-about2.png) - -現在実行中のすべてのアプリおよびそのバージョンと説明を表示します。アプリをダブル クリックすると、そのアプリのマニュアル ページが開きます。 - - -## 現在の環境 - -![スクリーンショット](../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 deleted file mode 100644 index c1598ab5b..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: default -title: 詳細情報 -pagename: tk-multi-breakdown -lang: ja ---- - -# 詳細情報 - -Scene Breakdown アプリは、参照コンテンツのリストを表示し、期限切れの項目を通知します。{% include product %} メニューから利用できます。 - -![Breakdown の概要](../images/apps/multi-breakdown-breakdown.png) - -1 つまたは複数の項目を選択し、選択項目の更新をクリックします。これにより、最新バージョンのコンテンツを使用するよう項目が切り替わります。 - -## シーンをスキャンする - -Breakdown アプリが参照用にシーンをスキャンする場合は、特別なスキャン フックが呼び出されます。このスキャン フックは、ファイルに対応したパスを含むノードのリストを返します。検出した各参照はファイル パスを返し、Tank がファイル パスを確認して、パブリッシュとして認識するかどうかを最初にチェックし、パブリッシュとして認識した場合には、最新バージョンが利用可能かどうかを確認します。 - -ユーザが古いバージョンに表示される更新ボタンをクリックすると、アプリは実際の更新作業を実行する別のフックを呼び出します。つまり、このフックをカスタマイズすることで、Breakdown に新しいカスタム ノードを比較的簡単に追加できます。 - -## {% include product %} のデータにアクセスする - -フック内で更新しようとしているパブリッシュ用の {% include product %} データにアクセスする必要がある場合、次のように `find_publish` を 1 回呼び出すだけで、アプリで受け渡しを行う全項目のメタデータを取得できます。 - -```python -class BreakdownHook(Hook): - - def update(self, items): - """ - Perform replacements given a number of scene items passed from the app. - - Once a selection has been performed in the main UI and the user clicks - the update button, this method is called. - - The items parameter is a list of dictionaries on the same form as was - generated by the scan_scene hook above. The path key now holds - the that each node should be updated *to* rather than the current path. - """ - - engine = self.parent.engine - - # resolve {% include product %} data for all paths passed via the items dictionary - sg_data = tank.util.find_publish(engine.sgtk, - [i["path"] for i in items], - fields=["id", "code", "version_number"]) - - for i in items: - node_name = i["node"] - node_type = i["type"] - new_path = i["path"] - # now that each item is processed, it is easy to access the - # {% include product %} data via a dictionary lookup: - sg_data = sg_data.get(i["path"]) - - # once we have all our desired info and metadata, we can go ahead - # and apply the update business logic. - # [-business logic here-] - -``` - -## API アクセス - -API を使用すると、プログラムによって Breakdown アプリにアクセスできます。次のようなメソッドがあります。 - -### Breakdown の UI を表示する - -``` -app_object.show_breakdown_dialog() -``` - -Breakdown の UI を表示するには、`show_breakdown_dialog()` メソッドを実行します。アプリが現在実行している環境の `tk-multi-breakdown` セクションに含まれていると仮定すると、次のように実行できます。 - -``` ->>> import sgtk ->>> e = sgtk.platform.current_engine() ->>> e.apps["tk-multi-breakdown"].show_breakdown_dialog() -``` - -### シーン解析を実行する - -``` -items = app_object.analyze_scene() -``` - -`analyze_scene()` メソッドを使用すると、プログラムによってシーン解析ロジックを実行できます。これにより、Breakdown の UI がシーン項目のリストを作成するときに使用するのとまったく同じロジックが実行されます。 - -このメソッドは、詳細情報項目のリストを返します。各項目は、項目を定義する複数のキーが含まれるディクショナリによって表されます。検出されるのは、パスが Toolkit テンプレート ファイルのテンプレートに対応するファイルのみです。{% include product %} にパブリッシュ ファイルは必要はありませんが、パブリッシュ ファイルがある場合、このメソッドは基本的な {% include product %} パブリッシュ メタデータを返します。 - -`node_name` と `node_type` の 2 つのキーを使用すると、DCC 中心の「アドレス」またはリプリゼンテーションが返されるため、DCC 内のパスを特定できます。たとえば、Maya と Nuke の場合、ノード名とタイプを返します。このロジックはフックに実装され、DCC 間で異なります。このメソッドは {% include product %} への接続を試行しますが、実行される呼び出しの数は一定で、シーンの複雑さとは関係ありません。 - -次に、返されるデータ内のディクショナリの一般的な例を示します。 - -``` -{'fields': {'Sequence': 'aaa', - 'Shot': 'aaa_00010', - 'Step': 'Comp', - 'eye': '%V', - 'height': 1556, - 'name': 'test', - 'output': 'output', - '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, - 'name': 'test', - 'published_file_type': {'id': 3, - 'name': 'Rendered Image', - 'type': 'PublishedFileType'}, - 'task': {'id': 4714, 'name': 'Comp', 'type': 'Task'}, - 'type': 'PublishedFile', - 'project': {'id': 234, 'name': 'Climp', 'type': 'Project'}, - 'version_number': 1}, - } -``` - -**ヒント**: 上記から分かるように、各項目はパスを表すために `template` オブジェクトと `fields` ディクショナリを返します。この項目について実際の未処理のパスを確認するには、`template_obj.apply_fields(fields_dict)` を実行します。このメソッドで返されるいずれかのディクショナリ項目のコンテキストでは、コードが次のようになります - -``` -breakdown_items = analyze_scene() -for item in breakdown_items: - path = item["template"].apply_fields(item["fields"]) -``` - - -### 項目の最新バージョンを計算する - -``` -highest_version = app_object.compute_highest_version(template, fields) -``` - -項目の最新バージョンを計算するには、`compute_highest_version(template, fields)` メソッドを使用します。パラメータ `template` と `fields` は解析すべきパスを表し、通常は `analyze_scene()` メソッドの出力から取得します。Breakdown アプリを使用する場合は、バージョン番号を含むテンプレート キーを常に `{version}` という名前にする必要があります。 - -これにより、ディスクをスキャンして最新バージョンを判断します。このメソッドはディスク上の最新バージョン番号を返します。詳細については、次の使用例を参照してください。 - - -### シーン項目を更新する - -``` -app_object.update_item(node_type, node_name, template, fields) -``` - -項目を更新するには `update_item(node_type, node_name, template, fields)` メソッドを使用します。パラメータ `template` と `fields` は更新する必要のあるパスを表します。パラメータ `node_name` と `node_type` を使用すると、修正する必要のあるシーン内のノードを特定できます。通常、この値は `analyze_scene()` メソッドの出力から取得します。 - -これは、Breakdown の UI で更新を実行する場合に似ています。実際の更新の呼び出しは、DCC 固有のロジックを処理するフックにディスパッチされます。詳細については、次の使用例を参照してください。 - - - - -### Breakdown の API の例 - -次の例では、シーンの内訳を取得し、最新バージョンを使用していないすべての項目を更新する方法について説明します。 - -``` -# find the breakdown app instance -import sgtk -engine = sgtk.platform.current_engine() -breakdown_app = engine.apps["tk-multi-breakdown"] - -# get list of breakdown items -items = breakdown_app.analyze_scene() - -# now loop over all items -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) - -``` diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md deleted file mode 100644 index 9c8609142..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: デモ -pagename: tk-multi-demo -lang: ja ---- - -# デモ - -Demo アプリでは、{% include product %} Utilities フレームワーク、Qt ウィジェット フレームワーク、Toolkit コアなど、{% include product %} のネイティブ開発プラットフォーム コンポーネントのライブ デモを視聴できます。 - -![Demo アプリ](../images/apps/multi-demo-demo_app.png) - -アプリに表示される各デモには、ネイティブ プラットフォームの 1 つまたは複数のコンポーネントを使用する方法を示す、動作可能でインタラクティブな UI が含まれています。さらに、実行しているコードは、自分のアプリに簡単にコピーして貼り付けることができます。 - -![Demo の基本画面](../images/apps/multi-demo-help_demo.png) - -アプリは簡単に使用できます。左側のリストからデモを選択し、右側のコンポーネントを操作します。一部のデモは、Qt ウィジェット フレームワークから単一のウィジェットを表示するだけです。{% include product %} プラットフォーム コンポーネントをプロダクション アプリで使用する場合の一般的な接続例を紹介するデモもあります。 - -![サンプル デモ](../images/apps/multi-demo-delegate_demo.png) - -![コード タブ](../images/apps/multi-demo-code_tab.png) - -新しいデモは、新しいコンポーネントがプラットフォームに追加されたのち、時間があるときに追加されます。コンポーネントの使用法に一定のパターンがある場合や、ご覧になりたいデモがある場合は、[サポート リクエスト](https://knowledge.autodesk.com/ja/contact-support)からお知らせください。 - -## インストール - -Demo アプリをインストールするには、次のコマンドを実行します。 - -``` -tank install_app project tk-shell tk-multi-demo -``` - -インストールしたら、次のコマンドを実行するとアプリを起動できます。 - -`./tank demos` 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 deleted file mode 100644 index d92b81863..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: アプリを起動 -pagename: tk-multi-launchapp -lang: ja ---- - -# アプリを起動 - -このアプリを使用すると、{% include product %} からサポート対象のアプリケーションに簡単に移動できます。選択した設定に応じて、{% include product %} のさまざまなエンティティを呼び出す {% include product %} アクション項目を登録します。 - -## 仕組み - -設定するオプションによって異なりますが、エンティティを右クリックしたり、{% include product %} アクション メニューや歯車メニューをクリックすると、メニュー項目が {% include product %} に表示されます。 - -たとえば、これはサイトの設定でこのアプリを 3 回使用し、Maya、Nuke、Photoshop にメニューを実装した場合のスクリーンショットです。 - -![タスク アクション メニュー](../images/apps/multi-launchapp-tank_actions_menu.png) - -現在サポートされているアプリケーションとエンジンは次のとおりです。 - -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame - -### 起動時にコマンド ライン引数を使用する - -多くのアプリケーションにはコマンド ライン オプションがあり、異なるエディションのアプリケーションを選択したり( Nuke と NukeX など)、使用に関する他のさまざまな設定を行う際に呼び出すことができます。ランチャーのアプリには、この目的に合わせて設定できる各 OS 用の「引数」の設定があります。たとえば、ここで「--nukex」と設定すると、これがコマンド ラインの起動に追加され、NukeX が通常の Nuke の代わりに実行されます。 - ----FOLD--- -NukeX の起動の例 - -```yaml -launch_nuke: - engine: tk-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' - menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' -``` ----FOLD--- - -### 環境変数を設定して起動時に動作を自動化する - -多くの場合、アプリケーションには、パイプラインで適切に機能するように設定された特定の環境変数やプラグイン パスなどが 必要になります。起動アプリケーションは「before_app_launch」フックを介してこのようなケースをカバーしており、アプリケーションの起動のたびに実行されるコードのスニペットを定義できます。既定では、「before_app_launch」フックは何も実行しない単純なパススルーですが、このドキュメントの説明に従ってオーバーライドできます。 - -たとえば、Zync Render を使用する場合は、Zync Maya プラグイン ディレクトリを `$PYTHONPATH` と `$XBMLANGPATH` の両方に含める必要があります。起動アプリでこの環境変数を設定するには、次のように `before_app_launch` フックのコード数行を更新します。 - ----FOLD--- -環境変数の設定例 - -```python -def execute(self, **kwargs): - """ - 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 - - # Append the desired path to the existing $PYTHONPATH to ensure - # everything upstream still works - os.environ["PYTHONPATH"] = os.environ["PYTHONPATH"] + os.pathsep + "~/Library/zync/zync-maya" - - # Set $XBMLANGPATH to the desired path, may need to append it as - # with $PYTHONPATH if already defined in your pipeline - os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" -``` ----FOLD--- - -「before_app_launch」を使用すると、{% include product %} の更新など、他の動作を自動化することもできます。たとえば、起動アプリが実行されるたびに(タスクからの起動のみ)タスク ステータスが更新されるように起動アプリを設定できます。次の例では「in progress」に更新するよう設定しています。 - ----FOLD--- -タスク ステータス更新の自動化の例 - -```python -def execute(self, **kwargs): - """ - 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' - - if self.parent.context.task: - task_id = self.parent.context.task['id'] - data = { - 'sg_status_list':'ip' - } - self.parent.shotgun.update("Task", task_id, data) -``` ----FOLD--- - -ご想像のとおり、多くの選択肢があります。起動アプリの目的は、パイプラインのニーズに合わせた柔軟性を提供することです。 - -### エンジンをまだ指定していないアプリケーションを起動する - -起動アプリケーションを使用して、Toolkit のエンジンをまだ指定していないアプリケーションを起動することもできます。この場合、フォルダは、起動元のショット、タスク、またはアセットのディスク上に作成されます。アプリケーションは起動されますが、アプリケーション起動後にコードは実行されず、アプリケーション内に {% include product %} メニューは表示されません。つまり、{% include product %} 内の Toolkit でサポートされていないアプリケーションを起動できます。 - -これを行うには、エンジンのオプションを空にしたまま、起動するアプリケーションのパスを起動アプリケーションに指定します。 - -## 技術の詳細 - -### 3DSMax - -このアプリは、3DSMax が起動プロセスの一部として実行する 3DSMax コマンド ラインに、MaxScript の `init_tank.ms` を自動的に追加します。 - -3DSMax が起動すると、次のプロセスが実行されます。 - -1. 3DSMax が起動時に `init_tank.ms` を実行します。 -1. `init_tank.ms` により、Python インタプリタが利用可能で `tank_startup.py` が実行されることが確認されます。 -1. {% include product %} Toolkit コンテキスト API を使用して、{% include product %} から渡されたエンティティ ID が Toolkit コンテキストに変換されます。 -1. `tank.system.start_engine()` を介して適切なエンジンを起動し、コンテキストに渡します。エンジンが残りのプロセスを処理します。 - -### Maya - -このアプリは `userSetup.py` 自動開始スクリプトを Maya に登録し、Maya はそれを起動プロセスの一部として呼び出します。 - -Maya が起動すると、次のプロセスが実行されます。 - -1. Maya が `userSetup.py` 起動スクリプトの実行を開始します -1. {% include product %} Toolkit コンテキスト API を使用して、{% include product %} から渡されたエンティティ ID が Toolkit コンテキストに変換されます。 -1. `tank.system.start_engine()` を介して適切なエンジンを起動し、コンテキストに渡します。エンジンが残りのプロセスを処理します。 - -### MotionBuilder - -このアプリは `init_tank.py` 自動開始スクリプトを MotionBuilder に登録し、MotionBuilder はそれを起動プロセスの一部として呼び出します。 - -MotionBuilder が起動すると、次のプロセスが実行されます。 - -1. MotionBuilder が `init_tank.py` 起動スクリプトの実行を開始します -1. {% include product %} Toolkit コンテキスト API を使用して、{% include product %} から渡されたエンティティ ID が Toolkit コンテキストに変換されます。 -1. `tank.system.start_engine()` を介して適切なエンジンを起動し、コンテキストに渡します。エンジンが残りのプロセスを処理します。 - -### Nuke - -このアプリは `menu.py` 自動開始スクリプトを Nuke に登録し、Nuke はそれを起動プロセスの一部として呼び出します。 - -Nuke が起動すると、次のプロセスが実行されます。 - -1. Nuke が `menu.py` 起動スクリプトの実行を開始します -1. {% include product %} Toolkit コンテキスト API を使用して、{% include product %} から渡されたエンティティ ID が Toolkit コンテキストに変換されます。 -1. `tank.system.start_engine()` を介して適切なエンジンを起動し、コンテキストに渡します。エンジンが残りのプロセスを処理します。 - -### Photoshop - -このアプリは、Adobe Extension Manager を使用して Tank プラグインのインストールやインストール確認を行います。 - -Photoshop が起動すると、次のプロセスが実行されます。 - -1. Photoshop が Tank プラグインの実行を開始します -1. {% include product %} Toolkit コンテキスト API を使用して、{% include product %} から渡されたエンティティ ID が Toolkit コンテキストに変換されます。 -1. `tank.system.start_engine()` を介して適切なエンジンを起動し、コンテキストに渡します。エンジンが残りのプロセスを処理します。 - -#### 追加の設定 - -このアプリを使用して Photoshop を起動する場合、 _追加_ のセクションで 4 つの設定値を指定する必要があります。次に、システムとインストールの場所に合わせた調整が必要な設定および適切な既定値を示します。 - -```yaml -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" -``` 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 deleted file mode 100644 index 6ef916d19..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: ローダー -pagename: tk-multi-loader2 -lang: ja ---- - -# ローダー - -このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『[{% include product %} 統合ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/)』を参照してください。 - -## 環境設定 - -ローダーは高度にカスタマイズ可能で、さまざまな方法でセットアップできます。設定できる領域は主に 2 つあります。 - -- ツリー ビューの左側に表示するタブとコンテンツをセットアップします。 -- それぞれのパブリッシュで表示するアクションとそのアクションの実際の内容を制御します。 - -次のセクションでは、ローダーの設定方法の概要を説明します。 -設定に関する技術詳細については、本ドキュメントの後半部分を参照してください。 - -### ツリー ビュー - -ツリー ビューは柔軟に設定できます。標準的な {% include product %} フィルタ構文を使用してさまざまなタブのコンテンツを制御できます。各タブは 1 つの階層にグループ化される 1 つの {% include product %} API クエリーで構成されます。表示項目を制御する任意のフィルタを追加し、`{context.entity}`、`{context.project}`、`{context.project.id}`、`{context.step}`、`{context.task}`、および `{context.user}` といった特別なキーワードを使用して、現在のコンテキストに基づいてクエリーを範囲指定できます。各キーワードは、`None` (コンテキストの該当部分が入力されていない場合)、またはキー ID、タイプ、名前を含む標準的な {% include product %} リンク ディクショナリのどちらかの関連コンテキスト情報に置き換えられます。 - -既定では、ローダーは現在のプロジェクトに属するアセットとショットを表示します。再設定することで、他のプロジェクト(または特定のアセット ライブラリ プロジェクトなど)の項目を表示するといった拡張設定を簡単に行うことができます。また、フィルタを使用して、特定の承認ステータスの項目のみを表示したり、ステータス別、他の {% include product %} フィールド別に項目をグループ化することもできます。次に、ツリー ビュー タブの設定方法を示したいくつかの構成設定例を紹介します。 - -```yaml -# An asset library tab which shows assets from a specific -# {% include product %} project -caption: Asset Library -entity_type: Asset -hierarchy: [sg_asset_type, code] -filters: -- [project, is, {type: Project, id: 123}] - -# Approved shots from the current project -caption: Shots -hierarchy: [project, sg_sequence, code] -entity_type: Shot -filters: -- [project, is, '{context.project}'] -- [sg_status_list, is, fin] - -# All assets for which the current user has tasks assigned -caption: Assets -entity_type: Task -hierarchy: [entity.Asset.sg_asset_type, entity, content] -filters: -- [entity, is_not, null] -- [entity, type_is, Asset] -- [task_assignees, is, '{context.user}'] -- [project, is, '{context.project}'] -``` - -### パブリッシュをフィルタリングする - -ローダーが {% include product %} からパブリッシュ データをロードする場合に実行するパブリッシュ クエリーに {% include product %} フィルタを適用できます。フィルタは `publish_filters` パラメータを介して制御されます。たとえば、フィルタを使用すると、承認されていないパブリッシュまたはそれに関連するレビュー バージョンが承認されていない場合にパブリッシュを非表示にできます。 - -### アクションが何も表示されない - -ローダーには、各エンジン用にさまざまな *アクション* がたくさん用意されています。たとえば、Nuke の場合、「スクリプトの読み込み」と「ノードの作成と読み取り」の 2 つのアクションがあります。アクションはフック内で定義されます。つまり、その動作を変更したり、必要に応じて他のアクションを追加したりできます。その後、ローダーの設定で、このアクションを特定の *パブリッシュ タイプ* にバインドできます。基本的に、パブリッシュ タイプにアクションをバインドするということは、アクションがローダー内のこのタイプの項目すべてのアクション メニューに表示されるということです。 - -たとえば、既定では、Nuke のマッピングは次のように設定されています。 - -``` -action_mappings: - Nuke Script: [script_import] - Rendered Image: [read_node] -``` - -アクション メニューが何も表示されていない場合は、使用しているパブリッシュ タイプとは異なる名前を選択している可能性があります。この場合、設定に移動して、ローダー内に表示するためにこのタイプを追加します。 - -### アクションを管理する - -ローダーがサポートするアプリケーションごとに、このアプリケーションでサポートされるアクションを実装するアクション フックがあります。たとえば Maya などの場合、既定のフックは `reference`、`import`、および `texture_node` の各アクションを実装し、それぞれが特定の Maya コマンドを実行して現在の Maya シーンにコンテンツを取り込みます。すべてのフックと同様に、アクションを完全にオーバーライドおよび変更できます。また、埋め込まれたフックに基づいたフックも作成できるため、たくさんのコードを複製しなくても、組み込みのフックに他のアクションを簡単に追加できます。 - -アクション フックでアクションのリストを定義したら、このアクションをパブリッシュ ファイル タイプにバインドできます。たとえば、「Maya Scene」という名前のパイプラインにパブリッシュ ファイル タイプを指定すると、フック内で定義されている `reference` アクションと `import` アクションにこの設定をバインドできます。これにより、Toolkit は表示される各「Maya Scene」パブリッシュに reference と import のアクションを追加します。このようにして実際のフックからパブリッシュ タイプを分離すると、既定の設定で用意されるローダーとは異なるパブリッシュ タイプ設定を使用できるようにローダーを簡単に再設定できます。 - -ローダーは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これはローダーにインストールされた既定の構成設定で次のように表示されます。 - -``` -actions_hook: '{self}/tk-maya_actions.py' -``` - -キーワード `{self}` は、フックの `hooks` アプリ フォルダを確認するように Toolkit に指示します。このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/loader/my_hook.py` に変更します。これにより、設定フォルダ内の `hooks/loader/my_hook.py` と呼ばれるフックを使用するように Toolkit に指示します。 - -ローダーが使用する別の第 2 世代フック機能では、`execute()` メソッドを指定する必要がなくなりました。代わりに、フックは通常のクラスのような形式になり、すべてのグループ化に適したメソッドのコレクションが含まれます。ローダーの場合、使用するアクション フックは次の 2 つのメソッドを実装する必要があります。 - -``` -def generate_actions(self, sg_publish_data, actions, ui_area) -def execute_multiple_actions(self, actions) -``` - -詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。 - -`v1.12.0` よりも前のバージョンでは、アプリケーションがアクションを実行するには `execute_action` フックを起動していました。新しいバージョンでは `execute_multiple_actions` フックを起動します。既存のフックとの下位互換性を提供するために、`execute_multiple_actions` フックは提供される各アクションの `execute_action` を実際に起動します。アプリケーションを `v1.12.0` 以降にアップグレードした後に `execute_multiple_actions` フックが定義されていないと報告される場合は、環境の `actions_hook` 設定が組み込みフック `{self}/{engine_name}_actions.py` から正しく継承されるようにします。組み込みフックからカスタム フックを取得する方法については、[Toolkit リファレンス ドキュメント](http://developer.shotgridsoftware.com/tk-core/core.html#hook)を参照してください。 - -LINKBOX_DOC:5#The%20hook%20data%20type:こちらで、第 2 世代のフック形式を確認してください。 - -フックの継承を使用すると、次のように既定のフックに他のアクションを追加できるようになります。 - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -class MyActions(HookBaseClass): - - def generate_actions(self, sg_publish_data, actions, ui_area): - """ - Returns a list of action instances for a particular publish. - This method is called each time a user clicks a publish somewhere in the UI. - The data returned from this hook will be used to populate the actions menu for a publish. - - The mapping between Publish types and actions are kept in a different place - (in the configuration) so at the point when this hook is called, the loader app - has already established *which* actions are appropriate for this object. - - The hook should return at least one action for each item passed in via the - actions parameter. - - 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 publish, 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. - - If it will be shown in the details area, "details" is passed. - - If it will be shown in the history area, "history" is passed. - - Please note that it is perfectly possible to create more than one action "instance" for - an action! You can for example do scene introspection - if the action passed in - is "character_attachment" you may for example scan the scene, figure out all the nodes - where this object can be attached and return a list of action instances: - "attach to left hand", "attach to right hand" etc. In this case, when more than - one object is returned for an action, use the params key to pass additional - data into the run_action hook. - - :param sg_publish_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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_publish_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_publish_data): - """ - 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_publish_data: {% include product %} data dictionary with all the standard publish fields. - :returns: No return value expected. - """ - - # resolve local path to publish via central method - path = self.get_publish_path(sg_publish_data) - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_publish_data) -``` - -これで、この新しいアクションを設定内のパブリッシュ タイプのセットにバインドできます。 - -```yaml -action_mappings: - Maya Scene: [import, reference, my_new_action] - Maya Rig: [reference, my_new_action] - Rendered Image: [texture_node] -``` - -上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。 - -## リファレンス - -次のメソッドがアプリ インスタンスで利用可能です。 - -### 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 %} エンティティ ディクショナリのリストです。 - -**例** - -```python ->>> engine = sgtk.platform.current_engine() ->>> loader_app = engine.apps.get["tk-multi-loader2"] ->>> selected = loader_app.open_publish("Select Geometry Cache", "Select", ["Alembic Cache"]) ->>> print selected -``` diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md deleted file mode 100644 index 352df884d..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Publish -pagename: tk-multi-publish2 -lang: ja ---- - -# パブリッシュ - -![Publisher](../images/apps/sg_publisher_1.png) - -## 概要 - -アーティストは Publish アプリを使用して作品をパブリッシュすることにより、下流工程に関わるアーティストが自分の作品を使用できるようにすることができます。アーティストのコンテンツ作成ソフトウェア内における従来のパブリッシュ ワークフローと、ディスク上にある任意のファイルのスタンドアロン パブリッシュがサポートされます。コンテンツ作成ソフトウェアで作業し、基本的な {% include product %} の統合を使用している場合、このアプリはアーティストがパブリッシュする項目を自動的に探して表示します。さらに高度な制作上のニーズがある場合は、アーティストのワークフローを操作するカスタム パブリッシュ プラグインを作成することもできます。 - -## ドキュメント - -Publisher の完全なドキュメントは、[こちら](https://developer.shotgridsoftware.com/ja/d587be80/?title=Integrations+User+Guide#the-publisher)にあります。 - 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 deleted file mode 100644 index 2edb66634..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: default -title: Python コンソール -pagename: tk-multi-pythonconsole -lang: ja ---- - -# Python コンソール - -これは、Python インタープリタにアクセスする DCC で使用するための Python コンソール パネルです。該当のインタープリタとのインタラクションが制限されている、またはそのサポートがない場合に使用します。 - -![{% include product %} Python コンソール](../images/apps/multi-pythonconsole-python_console.png) - -## パネル - -![Maya にドッキングされたコンソール](../images/apps/multi-pythonconsole-docked.png) - -コンソールをインストールするとパネルとして DCC に登録され、{% include product %} メニューで利用できるようになります。組み込みの Toolkit パネル(maya、nuke、houdini)をサポートするアプリでは、コンソールはドッキングされたパネルに表示されます。古いバージョンの DCC またはパネルをサポートしない DCC で使用する場合、コンソールは通常の Toolkit ダイアログとして表示されます。 - -## タブ - -![タブ](../images/apps/multi-pythonconsole-tabs.png) - -Python コンソールには 1 つまたは複数のタブが表示され、それぞれエディタと出力ウィンドウが含まれています。右下隅にある `+` ボタンをクリックすると、新しいタブを作成できます。タブ名の横には `x` ボタンがあり、タブを削除できます。タブ自体をダブルクリックすると、タブの新しい名前を入力するよう求められます。タブの配置はドラッグ アンド ドロップによって変更することができます。DCC を閉じるときにタブの状態が保存され、次回の起動時に復元されます。 - -### エディタ - -![エディタ](../images/apps/multi-pythonconsole-input.png) - -コンソールには、Python を編集するための入力領域があります。エディタには行番号が含まれ、カーソルの現在の行を強調表示し、またいくつかの基本構文を強調表示します。コンソールは DCC のパレットを使用して統合されたルック アンド フィールを提供しようとします。 - -ブロックのインデントおよびインデント解除がサポートされています。1 つまたは複数の行を選択し、`tab` を押すとスペース 4 つ分がインデントされ、`shift + tab` を押すとスペース 4 つ分のインデントが解除されます。4 つのスペースを 1 つのインデントのグループとして維持しようとするため、4 つのスペースのブロック単位でインデント/インデント解除が行われます。 - -ブロックのコメント付けとコメント解除もサポートされています。1 行または複数の行を選択し、Mac では `cmd + /`、Windows と Linux では `ctrl + /` を押します。選択した行の先頭に `#` がない場合は、選択したすべての行に 1 つづつ追加されます。すべての行に `#` が存在する場合は、それらが削除されます。 - -### 出力 - -![出力](../images/apps/multi-pythonconsole-output.png) - -出力領域には実行した Python の結果が表示されます。ソースの Python コマンド エコーは既定でオンになっており、`>>>` で始まるので出力画面で区別できます。各実行にはタイムスタンプも付けられます。エコーをオフにするためのトグルがあります。構文およびランタイム エラーは、デバッグ用の完全なスタック トレースとともに赤色で表示されます。 - -## ボタン - -![ボタン](../images/apps/multi-pythonconsole-buttons.png) - -### 出力 - -* **[クリア] (Clear)** - 出力ブラウザの内容をクリアします。 -* **[エコー] (Echo)** - 実行されたコマンドを出力ブラウザにエコーするかどうかを切り替えます。 - -### エディタ - -* **[実行] (Execute)** - エディタの内容を実行します。 -* **[保存] (Save)** - エディタの現在の内容をファイルに保存します。 -* **[開く] (Open)** - エディタでファイルを開きます。 -* **[クリア] (Clear)** - エディタの内容をクリアします。 -* **[行番号] (Lines)** - 現在のタブの行番号を切り替えます。 - -## グローバル - -![グローバル](../images/apps/multi-pythonconsoleglobals.png) - -一部の {% include product %}/Toolkit グローバル変数は、[シェルの {% include product %} エンジン](https://developer.shotgridsoftware.com/ja/2ad59ee8/?title=Shell)で利用可能なグローバル変数と同様、コンソールにあらかじめ定義されています。 - -* Tk API ハンドルは `tk` 変数を介して利用できます -* {% include product %} API ハンドルは `shotgun` 変数を介して利用できます -* 現在のコンテキストは `context` 変数に格納されます -* シェル エンジンは `engine` 変数を介してアクセスできます - -## 外部ソース - -アプリには、外部ロケーションから Python ソースをロードするために実装できるフックが付属しています。フックは `external_sources_hook` と呼ばれ、使用するには `get_external_source_actions` というメソッドを実装する必要があります。このメソッドは、`QActions` のリストを返し、アクションがトリガされると新しいタブが(コンテンツとともに)コンソールに追加されます。事前定義されたユーザのリストのために github から gist をロードする実装例が提供されます。フックによって返されるアクションは、**[開く] (Open)**ボタンを押し続けると表示されるポップアップ メニューに表示されます。 - -![外部ソース](../images/apps/multi-pythonconsole-external_sources.png) - -## ホットキー - -* `Ctrl + Enter` で選択内容を実行 -* `Ctrl + T` を押して新しいタブを作成 -* `Ctrl + Shift + [` または `Ctrl + Shift + ]` でタブ間を移動 -* `Ctrl + Wheel` によって入力/出力フォントのサイズを調整 - -**注:** これらのホットキーはすべての DCC で使用できるわけではありません。 - -## その他の注意事項 - -* 一部の古いバージョンの DCC では、セッションを閉じるときに Python コンソールを開いたままにしておくとクラッシュする可能性があります。これは一部の古いバージョンの PySide のバグの可能性があります。新しいバージョンの PySide にバンドルされている最新バージョンの DCC は終了時にクラッシュしないようです。最新の DCC リリースでこの問題が発生する場合は、[チケットを送信](https://knowledge.autodesk.com/ja/contact-support)してください。調査にご協力をお願いいたします。 \ No newline at end of file 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 deleted file mode 100644 index 45a1531b7..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: default -title: レビュー提出 -pagename: tk-multi-reviewsubmission -lang: ja ---- - -# レビュー提出 - -## このアプリの使用方法 - -### API として使用する場合 - -このアプリには、Multi Publish アプリのような他のアプリ内から呼び出して使用するためのモードがあります。 - -このモードはイメージ シーケンスから QuickTime ファイルを作成して、レビューできるようにバージョンとして {% include product %} に送信します。生成された QuickTime にはスレートとバーンインがあります。フォント、ロゴの位置、ムービーの圧縮オプション、バーンイン/スレート情報などの項目は現在既定のフックでハードコードされているため、動作を調整するためにフック関数を再実装することをお勧めします。 - -次に、スレートとバーンインの、現在の既定の形式を示します。 - -![メイン メニュー](../images/apps/multi-reviewsubmission-quicktime_slate.png) - -![メイン メニュー](../images/apps/multi-reviewsubmission-quicktime_burnin.png) - -独自のアプリまたはフック内からこのアプリを使用する場合について、その方法の概要を簡単に説明します。 - -- 現在のエンジンから `tk-multi-reviewsubmission` アプリを取得します。これは呼び出し `self.parent.engine.apps.get('tk-multi-reviewsubmission')` を使用してフック内部から実行できます。 -- アプリが使用可能な場合は、`render_and_submit_version()` メソッドを呼び出します。 - -次に、フック コードの内容の例を示します。 - -```python -review_submission_app = self.parent.engine.apps.get("tk-multi-reviewsubmission") -if review_submission_app: - review_submission_app.render_and_submit_version( - template, - fields, - first_frame, - last_frame, - sg_publishes, - sg_task, - comment, - thumbnail_path, - progress_cb, - color_space - ) -``` - -`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 では、書き込みノードに使用するカラースペース ノブの列挙値のいずれかになります。 - -### メニュー項目として使用する場合 - -このモードは、DCC 内の {% include product %} メニューにメニュー項目を追加します。  - -また、現在のビューポートのクイック スナップショットを作成して、バージョンのドラフトとして {% include product %} Create に送信します。これにより、{% include product %} Create 内で注釈、文字、比較のメモを追加できるため、詳しいレビューを提出できます。 - -この機能をコンテキストに追加するには、次の操作を行う必要があります。 -* `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' - location: - type: app_store - name: tk-multi-reviewsubmission - version: v1.0.1 -``` diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md deleted file mode 100644 index cbe5a97ac..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Screening Room -pagename: tk-multi-screeningroom -lang: ja ---- - -# Screening Room - -これは、Screening Room で現在の Maya セッションに接続する小さなアプリです。**[Screening Room にジャンプする] (Jump to Screening Room)**という項目が {% include product %} メニューに追加されます。このボタンをクリックすると Screening Room が起動され、ショット、アセット、タスクなど、現在の {% include product %} Toolkit コンテキストが表示されます。その後、Screening Room を使用して、送信したすべてのコンテンツを検索できます。 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 deleted file mode 100644 index a68ab5f7b..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: フレーム範囲の設定 -pagename: tk-multi-setframerange -lang: ja ---- - -# フレーム範囲の設定 - -このアプリは、現在開いているシーンのフレーム範囲を管理します。{% include product %} メニューで**[フレーム範囲と {% include product %} を同期する] (Sync Frame Range with Shotgun)**メニュー オプションをクリックすると、このアプリを利用できます。 - -このオプションをクリックすると、{% include product %} Toolkit は現在の作業領域(通常はショット)に関連する {% include product %} エンティティを確認し、インとアウトのフレーム情報を含むイン フィールドとアウト フィールドを探します。通常、これはショットと一緒に使用されるため、この場合、アプリは {% include product %} の既定の設定で定義された標準的なショットのイン フィールドとアウト フィールドを使用します。ただし、他のフィールドからフレーム範囲を取得するようにアプリを完全に設定することもできます。 - -![{% include product %}](../images/apps/multi-setframerange-shotgun.png) - -アプリを実行すると、このインとアウトを使用して現在のシーンが更新され、最後に概要メッセージが表示されます。 - -![Nuke](../images/apps/multi-setframerange-nuke.png) - -## 複数の {% include product %} フィールドの同期オプション - -`menu_name` プロパティを設定すると、{% include product %} メニューでこのアプリの複数のインスタンスを定義できます。これにより、さまざまな {% include product %} フィールドを同期する複数のメニュー アクションを定義することができます。 - -定義するには、`menu_name` にそれぞれのアプリ インスタンス名を設定し、各インスタンスにフレーム イン フィールドとフレーム アウト フィールドを設定します。 - -```yaml -tk-multi-setframerange_cuts: - menu_name: Sync frame range using cut fields - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - location: "@apps.tk-multi-setframerange.location" -tk-multi-setframerange_handles: - menu_name: Sync frame range using handle fields - sg_in_frame_field: sg_handle_in - sg_out_frame_field: sg_handle_out - location: "@apps.tk-multi-setframerange.location" -``` -{% include product %} メニューには、別個のオプションとして表示されます。 - -![複数インスタンス](../images/apps/multi-setframerange-multiple_instances.png) - -注: この機能は、バージョン `v0.4.0` のアプリで新しく導入されました。 - -## 操作フック - -現在のシーン フレーム範囲の取得、またはフレーム範囲の設定に使用するソフトウェア固有のロジックは、フレーム操作フックで処理されます。新しいエンジンのサポートを追加する場合、または動作の実装方法を変更する場合は、`hook_frame_operation` アプリ プロパティを設定して取得と設定の独自のロジックを実装すると、フレーム操作フックを引き継ぐことができます。 - -注: この機能は、バージョン `v0.4.0` のアプリで新しく導入されました。 \ No newline at end of file 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 deleted file mode 100644 index f4982bc88..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -layout: default -title: ShotGrid Panel -pagename: tk-multi-shotgunpanel -lang: ja ---- - -# {% include product %} パネル - -このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『[{% include product %} 統合ユーザ ガイド](https://developer.shotgridsoftware.com/ja/d587be80/#the-panel)』を参照してください。 - -## {% include product %} Panel を設定する - -{% include product %} Panel で広範囲に設定できる主な領域は 2 つあります。UI の文字の表示と、データに関連付けるアクションです。次のセクションでは、2 つのシステムの設定を制御する方法について説明します。 - -### 表示内容を設定する - -詳細領域の値とリストは両方とも `{% include product %}_fields` フックから設定可能です。正確な値を表示するために、このフックをサブクラス化して実装を変更できます。 - -![設定](../images/apps/multi-shotgunpanel-config.png) - -**システムをテンプレート化する** - -フックはシンプルなテンプレート言語をサポートしているため、優れた柔軟性が得られます。また、Qt でサポートされている HTML サブセットもサポートしているため、表示される値の色、フォント サイズ、ウェイトなどを制御できます 。テンプレート言語は次のように機能します。 - -- {% include product %} の値は、`{brackets}` のように `Description: {description}` で囲まれています。このテンプレートをレンダリングすると、`{description}` の部分が説明フィールドの値で置き換えられます。 - -- 値が空以外の場合にのみ表示される値にオプションの接頭辞または接尾辞を指定する場合、`{[Prefix]sg_field[suffix]}` 構文を使用できます。両方の値が追加されている場合、テンプレート `{[Start: ]start_date} {[End: ]end_date}` は `Start: 12 July 2009 End: 14 July 2012` をレンダリングします。ただし、終了日を設定していない場合は `Start: 12 July 2009` をレンダリングします。 - -- 一部の値が設定されていない場合はフォールバックを定義することができます。{% include product %} のバージョンについては、プロデューサがアーティストの代わりにバージョンを送信するというワークフローをサポートするため、`created_by` フィールドが `artist` フィールドよりも優先されます。この場合、バージョンはプロデューサによって作成されますが、`artist` フィールドはアーティストに設定されます。ただし、いつもそういうわけではありません。アーティストが自分の作業を送信するパイプラインでは、アーティスト欄は空欄になります。バージョンを表示する場合、最初に `artist` フィールドを確認できるようにしておくと役立ちます。今回このフィールドは設定されていないため、`created_by` フィールドにフォールバックします。このようにするには、`Created By: {artist|created_by}` のように構文 `{field1|field2}` を使用します。`{[Created By: ]artist|created_by}` のようにオプション フィールドを組み合わせることができます。 - - -このフックには次のメソッドが含まれます。 - -**リストに表示される項目を制御する** - -`get_list_item_definition()` メソッドは、{% include product %} のエンティティ タイプを考慮して、さまざまなリストの項目の外観を制御するディクショナリを返します。たとえば、`top_left`、`top_right`、および `body` といったキーを持つディクショナリを返します。 - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**上部の細部領域を制御する** - -`get_main_view_definition()` メソッドは、{% include product %} のエンティティ タイプを考慮して、`title` キーと `body` キーを含むディクショナリを返します。これらの値は、詳細領域のオブジェクトの外観を次のように制御します。 - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**[情報] (Info)タブに表示されるフィールドを制御する** - -`get_all_fields()` メソッドは、[情報] (Info)タブで任意のエンティティがレンダリングされる場合に表示するフィールドのリストを返します。 - -### アクションを設定する - -アクションは {% include product %} のデータを操作するコードの小さなスニペットです。例を次に示します。 - -- 任意の {% include product %} バージョンの RV を起動するアクション -- 任意のタスクに自分に割り当てることができるアクション -- 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} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -上記の例では、`reference`、`import`、`texture_node`、`assign_task`、および `play_in_rv` といったアクションを使用します。次に、さまざまな {% include product %} のオブジェクトと条件にこのアクションをマップします。たとえば `import` アクションは、タイプが「Maya Scene」であるすべてのパブリッシュに表示されるよう要求しています。 - -オブジェクトがパネルにロードされると、上記のアクション設定が読み込まれ、分析されます。現在のオブジェクトに適したアクションのリストが決定され、`generate_actions()` フック メソッドが実行されます。この特定の {% include product %} オブジェクトに対してアクションを実行できるかどうかをフック コードが判断できるように、この時点で指定したエンティティの {% include product %} データがフックに渡されます。この方法により、各フックで表示前にチェックを実行できます。たとえば、`play_in_rv` フックはメディアをローカルで利用できる場合にのみ意味を持ちます。設定でセットアップされたアクション マッピングは指定した {% include product %} エンティティで有効にするアクションをパネルに通知しますが、指定したオブジェクトに適していないと `generate_actions()` メソッドによって判断された場合は、すべてのアクションが表示されない可能性があります。 - -`generate_actions()` メソッドから返されるアクションはアクション メニューに表示されます。ユーザがクリックすると、`execute_action()` フック メソッドが呼び出されてアクションが実行されます。 - -パネルがサポートするアプリケーションごとに、適切なアクションを実装するアクション フックがあります。たとえば Maya などの場合、既定のフックは `reference`、`import`、`texture_node` の各アクションを実装し、それぞれが特定の Maya コマンドを実行して現在の Maya シーンにパブリッシュを取り込みます。すべてのフックと同様に、アクションを完全にオーバーライドおよび変更できます。また、埋め込まれたフックに基づいたフックも作成できるため、たくさんのコードを複製しなくても、組み込みのフックに他のアクションを簡単に追加できます。 - -パネルは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これは既定の構成設定で次のように表示されます。 - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -キーワード `{self}` は、フックのアプリの `hooks` フォルダを確認するように Toolkit に指示します。 - このフックをユーザが設定した実装でオーバーライドする場合は、値を `{config}/panel/maya_actions.py` に変更します。これにより、設定フォルダ内の `hooks/panel/maya_actions.py` と呼ばれるフックを使用するように Toolkit に指示します。 - -詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。 - -LINKBOX_DOC:5#The%20hook%20data%20type:こちらで、第 2 世代のフック形式を確認してください。 - -フックの継承を使用すると、次のように既定のフックに他のアクションを追加できるようになります。 - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption, group and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "group": "Pipeline Utils", - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) - - -``` - -これで、この新しいアクションを設定内のパブリッシュ タイプのセットにバインドできます。 - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。 - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md b/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md deleted file mode 100644 index 33b1be579..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Snapshot -pagename: tk-multi-snapshot -lang: ja ---- - -# Snapshot - -{% include product %} Snapshot は簡単な差分バックアップ機能であるため、他のユーザと共有しなくても、作業の差分をバージョン付けしたり、管理することができます。スナップショットの作成、説明やサムネイルの追加、後でいつでも復帰できるポイントの作成、および復元が可能です。これは、大きな変更を行う際に以前のバージョンのシーンをバックアップしておく必要がある場合に役立ちます。 \ No newline at end of file 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 deleted file mode 100644 index 1d55f2682..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: 作業ファイル -pagename: tk-multi-workfiles2 -lang: ja ---- - -# 作業ファイル - -## File Open ダイアログ - -### 作業領域を移動する - -![タスク](../images/apps/multi-workfiles2-tasks.png) - -メイン ダイアログは半分ずつに分かれています。左側には一連のタブがあります。最初のタブは「My Tasks」と呼ばれ、現在のユーザに割り当てられているすべてのタスクが表示されます。{% include product %} の Web サイトの[マイ タスク](My Tasks)ページに非常によく似ています。 - -エンティティのタブを使用して {% include product %} エンティティを参照することもできます。既定では、作業ファイル アプリケーションにより、それぞれのタブを確認することでショットまたはアセットに関連したタスクを参照できます。 - -一連のタブは、環境ファイルの `entities` 設定を利用して完全に設定可能です。 - -アプリ設定で `show_file_open: true/false` を設定すると、このダイアログを無効または有効にできます。 - -### ファイルを検索する - -![ファイル選択](../images/apps/multi-workfiles2-file_selection.png) - -右側には、左側で選択した内容に関連する作業ファイルとパブリッシュが表示されます。作業ファイルとパブリッシュは、「All」、「Working」、「Publishes」の各タブを使用して一緒に表示したり、別々に表示したりできます。 - -### 以前のバージョンにアクセスする - -![以前のバージョン](../images/apps/multi-workfiles2-previous_versions.png) - -以前のバージョンにアクセスする方法は 2 つあります。1 つ目の方法では、ブラウザ上部の「All versions」ボックスをクリックしてバージョンを展開し、ブラウザですべてのバージョンを個別に表示します。もう 1 つの方法では、ファイルを右クリックし、最新 10 件のバージョンにアクセスします。 - -### ユーザ サンドボックス - -![サンドボックス](../images/apps/multi-workfiles2-sandboxes.png) - -パイプライン設定でユーザ サンドボックスを使用する場合、既定で表示されるのは現在のユーザのファイルのみです。他のユーザのサンドボックスにあるファイルを表示する場合は、上部のボタンをクリックすると、サンドボックスを選択して元のファイルを表示できます。 - -### 結果を絞り込む - -![検索](../images/apps/multi-workfiles2-search.png) - -文字を入力すると、表示の結果を絞り込むことができます。検索は項目の名前と一致します。 - -## File Save ダイアログ - -既定では、「File Save」ダイアログを使用すると、現在のコンテキストでファイルを保存できます。シーン名、バージョン番号、およびオプションのファイル拡張子(該当する場合)の入力が要求されます。「Save」ボタンはグレー表示されます。いったんアプリケーションでシーン名として次に利用可能なバージョン番号が確認されると、右下の「Save」ボタンが有効になります。 - -アプリ設定で `show_file_save: true/false` を設定すると、このダイアログを無効または有効にできます。 - -### 異なるコンテキストで保存する - -![保存の拡張](../images/apps/multi-workfiles2-expanding_save.png) - -異なるコンテキストでファイルを保存するためにダイアログの左上にある展開ボタンをクリックすると、「File Save」ダイアログが展開し、保存先として別のコンテキストを選択できます。 - -### ファイル拡張子ドロップダウンを追加する - -![ファイル保存タイプ](../images/apps/multi-workfiles2-file_save_file_type.png) - -新しい File Save ダイアログで、保存するファイルの拡張子を選択できます。これを有効にするためには、パイプライン設定の `templates.yml` ファイルを調整する必要があります。最初に、`templates.yml` 内のトークン リストでトークンを定義する必要があります。 - -```yaml -maya_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` は作業ファイル アプリケーションで必要なヒントです。このトークンが拡張子であり、ドロップダウン ウィジェットに表示されるということがアプリケーションに通知されます。 - -その後、このトークンは Maya 固有のテンプレートに追加できます。 - -```yaml -maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' -``` - -## [コンテキスト変更] (Context Change)ダイアログ - -![コンテキスト変更](../images/apps/multi-workfiles2-change_context.png) - -[コンテキスト変更] (Context Change)ダイアログは、右側にファイルを参照する領域がないことを除けば、[開く] (Open)ダイアログと同様です。[コンテキスト変更] (Context Change)ボタンを押すと、タスクまたはエンティティを選択して、現在のエンジンのコンテキストを変更できます。 - -アプリ設定で `show_change_context: true/false` を設定すると、このダイアログを無効または有効にできます。 - -## ステップ フィルタ - -タスクを取得するときに、階層に `step` が含まれている場合は、パイプライン ステップのフィルタを使用して、{% include product %} から取得されるデータの量を減らすことができます。選択したステップ リストにリンクされているタスクのみが取得されます。 - -タブに表示されるステップのリストは、`step_filter_on` 設定によってコントロールされます。設定しない場合は、すべての既存のパイプライン ステップが表示されます。 - -次の例では、アセットおよびショットのタスクをそれぞれ表示する 2 つのタブを定義します。 - -```yaml - - 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: - - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] -``` - -![ステップのフィルタ](../images/apps/multi-workfiles2-step_filter.png) - -## 遅延クエリー - -エンティティ ツリーを次のように 2 つのステップ クエリーに分割して構築すると、パフォーマンスを向上させることができます。 -- 最初のクエリーは、{% include product %} からレコードを取得し、ツリーの上部に入力するために使用します。 -- 2 番目のクエリーは、ツリーを展開するときに子を取得するために使用します。 - -次の設定では、アプリを起動するときに {% include product %} からアセットおよびショットを取得します。特定のアセットまたはショットを選択した場合、またはツリー ビューで展開した場合は、このアセットまたはショットにリンクされたタスクのみが取得されます。 - -```yaml - entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] -``` - -![エンティティ ツリーの表示](../images/apps/multi-workfiles2-entity_tree_view.png) 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 deleted file mode 100644 index 7f340566c..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Nuke Quickreview -pagename: tk-nuke-quickreview -lang: ja ---- - -# Nuke Quickreview - -Quickreview アプリを使用すると、Nuke でレンダリングしたファイルを {% include product %} に送信してレビューする作業が簡単になります。Quickreview で送信するたびに、{% include product %} に**バージョン**が作成されます。バージョンは、Nuke 内の {% include product %} ノード メニューにノードとして表示されます。新しいノードを作成し、Nuke ネットワークに接続してから、ダブルクリックして[アップロード] (Upload)ボタンをクリックするだけです。 - -![Nuke の概要](../images/apps/nuke-quickreview-nuke_ui.png) - -次の UI が表示され、{% include product %} でのバージョンの作成方法を制御できるようになります。 - -![送信 UI](../images/apps/nuke-quickreview-submit.png) - -次のアイテムを制御できます。 - -- バージョン名は現在ロードされている Nuke スクリプトに基づいて事前に入力され、必要に応じて調整することができます。 -- バージョンに関連付けられているエンティティ リンクおよびタスクは現在のコンテキストに基づいて決まり、調整することができます。 -- 送信するフレーム範囲を調整することができます。 -- 作成されたバージョンは、プレイリストに追加できます。最新のプレイリストを含むドロップ ダウンが表示されます。 - -[アップロード] (Upload)ボタンをクリックすると、Nuke 内に QuickTime が生成されて、{% include product %} にアップロードされます。アップロードすると、次の画面が表示され、Nuke に組み込まれている {% include product %} Panel や Web オーバーレイ プレイヤにバージョンを表示できるようになります。 - -## バーンインとスレート - -既定では、アプリはスレートおよびバーンインを使用して QuickTime を生成します。 - -![スレートの例](../images/apps/nuke-quickreview-slate.png)![バーンインの例](../images/apps/nuke-quickreview-burnins.png) - -## カスタマイズ - -レビュー送信のほとんどの要素は、フックを使用して調整できます。詳細な説明については、[こちら](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 deleted file mode 100644 index 1c8c3d45e..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ /dev/null @@ -1,603 +0,0 @@ ---- -layout: default -title: Nuke Write Node -pagename: tk-nuke-writenode -lang: ja ---- - -# Nuke Write Node - -Nuke Write Node アプリは、イメージのレンダリング先を簡単に標準化できる、カスタムの {% include product %} 書き込みノードを提供します。各環境に合わせた設定が可能です。パス以外に、使用するレンダリング形式も設定で決まります。 - -## 一般用途 - -{% include product %} Write Node を使用するには、最初にスクリプトを Toolkit 作業ファイルとして保存し、Nuke メニューから新しいノードを作成します。これにより、通常の書き込みノードに類似したノードが作成されます。 - -![Write Node](../images/apps/nuke-writenode-write_node_creation.png) - -手動でパスを入力するのではなく、出力名を指定するだけで、Toolkit が残りのパスを自動的に計算してくれます。計算されたパスが UI に表示されます。*Show in File System* ボタンをクリックすると、ディスク上の該当する場所が開きます。レンダリングの書き込み先は Toolkit の設定に応じて異なります。 - -レンダリングはバージョンで管理され、バージョン番号は、Multi Publish を使用してパブリッシュする場合に自動的に増分される現在の Nuke スクリプト バージョンに常に準拠します。 - -## レンダリング パスをリセットする - -Write Node は、ファイルを Toolkit 作業領域外から開いても有効になるように現在のパスをキャッシュ化します。場合によっては、パスが同期できなくなり「ロック状態」になることがあります。レンダリング パスがロックされた場合、この Write Node で作成されたレンダリングはパブリッシュできません。 - -レンダリング パスをリセットするには、作業ファイル アプリの「Version Up Scene」コマンドを使用してシーンをバージョンアップするか、書き込みノードを個別に選択して **Reset Path** をクリックします。 - -![書き込み方法](../images/apps/nuke-writenode-write_node_reset_path.png) - -## 別の書き込みノード プロファイルを追加する - -{% include product %} Write Node は Nuke に組み込まれた書き込みノードをラップするため、Nuke でサポートされている形式をアプリで使用して、別のノードを設定から追加できます。最も簡単な開始方法は、任意のパラメータを使用して簡単な Nuke 書き込みノードをセットアップすることです。次の例では、LZW 圧縮で 16 ビット TIF を実行しているものと仮定します。テキスト エディタで Nuke スクリプトを確認すると、書き込みノードは次のように表示されます。 - -``` -Write { - file /Users/ryanmayeda/Desktop/test.%04d.tif - file_type tiff - datatype "16 bit" - compression LZW - checkHashOnRead false - name Write1 - xpos -145 - ypos -61 -} -``` - -テキストから必要なパラメータ名と値が分かります。この場合は `datatype` と `compression` です。次に、環境設定(例: `/path/to/pipeline/config/env/shot_step.yml`)に移動し、`tk-nuke-writenode` アプリを設定する領域を探します。`settings` に次の 2 つのパラメータを指定した別の Write Node を追加します。 - -```yaml -tk-nuke-writenode: - location: {name: tk-nuke-writenode, type: app_store, version: v0.1.6} - template_script_work: nuke_shot_work - ... - write_nodes: - - file_type: exr - ... - - file_type: dpx - ... - - file_type: tiff - name: Mono Tif - publish_template: nuke_shot_render_pub_mono_tif - render_template: nuke_shot_render_mono_tif - proxy_publish_template: null - proxy_render_template: null - settings: {datatype: 16 bit, compression: LZW} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [] -``` - -設定を更新すると、追加した {% include product %} Write Node が Nuke で表示されるようになります。 - -![新規追加](../images/apps/nuke-writenode-write_node_add_new.png) - -__注:__ 新しいテンプレート(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」オプションも使用します。これにより、プロファイルの品質に既定の値が設定され、この設定自体を変更するためのスライダもユーザに表示されます。 - -```yaml -tk-nuke-writenode: - write_nodes: - - file_type: jpeg - name: Compressed JPEG - publish_template: nuke_shot_render_pub_jpeg - 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"} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [_jpeg_quality] -``` - -### 書き込みノブをプロモートする - -上記のプロファイルに示すように、カプセル化された書き込みノードのノブをプロモートして、{% include product %} Write Node のプロパティ パネルに表示することができます。プロモートされた書き込みノブはプロファイルの一部として定義され、ノブ名で識別されます。複数のノブをプロモートすることができます。 - -## レンダリング ファーム統合 - -スタジオでは一般的に、[Deadline](https://deadline.thinkboxsoftware.com/) などのジョブ管理ツールを実行するレンダリング ファームを使用します。このようなツールを使用すると、通常は、レンダリング時に Nuke が直接起動されます。このようなツールは、{% include product %} が認識できる方法(デスクトップや `tank` コマンドなどの使用)で Nuke を起動しないため、{% include product %} 書き込みノードには Nuke を実行するために必要な情報が保持されません。この制限を回避するために、いくつかのオプションが用意されています。 - -### {% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換する - -簡単な方法は、{% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換してから、レンダリングするスクリプトを送信することです。これには次の 2 つのオプションがあります。1. 変換メニュー オプションを有効にして、使用します。2. この API 変換方法をアプリ上で使用します。 - -#### 変換メニューオプションを有効にする - -yml 環境ファイル内のアプリの設定に追加できる、`show_convert_actions` という名前の設定オプションがあります。設定 `show_convert_actions: True` を追加するときに、*[SG 書き込みノードを書き込みノードに変換...]*および*[書き込みノードを SG 形式に再変換...]*メニュー オプションが使用できるようになります。 - -![書き込みノード変換メニュー オプション](../images/apps/nuke-writenode-write_node_convert_menu_options.png) - -ただし、書き込みノブをプロモートする、定義済みの {% include product %} 書き込みノード プロファイルがある場合は、`show_convert_actions` が `True` に設定されている場合でも、このメニュー オプションは表示されません。これは、現時点で、再変換機能がプロモートされたノブをサポートしていないためです。 - -#### API を使用して変換する - -この変換を実行する `convert_to_write_nodes()` メソッドが、`tk-nuke-writenode` アプリに用意されています。 - -スクリプト内のすべての {% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換するには、Nuke 内で次のコードを実行します。 - -```python -import sgtk -eng = sgtk.platform.current_engine() -app = eng.apps["tk-nuke-writenode"] -if app: - app.convert_to_write_nodes() -``` - -これにより、シーンから {% include product %} 書き込みノードが削除されるため、レンダリングするスクリプトのコピーを作成し、そのコピーを変換してファームに送信するというワークフローをお勧めします。シーンには Toolkit の参照が含まれなくなっているため、レンダリング ファームで Nuke スクリプトを開いたときに、Toolkit は不要になります。 - -**注:** 対応する `convert_from_write_nodes()` メソッドを使用できますが、データの整合性を維持するために、パイプラインの一部としてではなく、デバッグでのみ使用することをお勧めします。 - -### init.py を使用して {% include product %} Pipeline Toolkit エンジンをブートストラップする - -Nuke は、プラグイン パス上にあるすべての `init.py` スクリプトを実行します。このオプションを使用すると、`tk-nuke` エンジンの最小限のブートストラップを実行するコードが `init.py` に追加されるため、{% include product %} 書き込みノードはレンダリング ファーム上で期待どおりに動作します。 - -このワークフローにはいくつかの手順があります。最初に、{% include product %} 対応の Nuke セッション内で実行される「pre-flight」送信スクリプトによって、ファーム ジョブの環境設定に使用するデータが取得されます。次に、レンダリング ファーム管理者が、レンダリング ファーム上の {% include product %} セッションを認証するために使用する追加の環境変数を設定します。最後に、{% include product %} ブートストラップ コードを含む `init.py` が、レンダリング ファーム上の Nuke セッションによって検出および実行される場所に配置され、セッション内で `tk-nuke` エンジンをブートストラップします。これにより、{% include product %} 書き込みノードが適切に機能するようになります。 - -#### 1. 事前送信スクリプト - -この方法は、アーティストが Nuke の {% include product %} 対応セッション内でファーム ジョブを送信していることが前提となります。送信時に、次のコードを実行する必要があります。これにより、Toolkit コンテキスト、パイプライン設定 URI、Toolkit Core API の場所など、環境に関する情報が現在の Nuke セッションから取得されて、ディクショナリに入力されます。このディクショナリがレンダリング ジョブに渡され、そこでこの情報を使用して環境変数が設定されます。 - -```python -# Populating environment variables from running Nuke: -# http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.create_engine_launcher -current_engine = sgtk.platform.current_engine() -launcher = sgtk.platform.create_engine_launcher( - current_engine.sgtk, - current_engine.context, - current_engine.name -) - -# Get a dictionary with the following keys: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -environment = launcher.get_standard_plugin_environment() - -# Get the current pipeline config descriptor -environment["SHOTGUN_CONFIG_URI"] = os.path.join(current_engine.sgtk.configuration_descriptor.get_uri(),"config") - -# Get the current tk-core installation path -environment["SHOTGUN_SGTK_MODULE_PATH"] = sgtk.get_sgtk_module_path() -``` - -この情報の収集が完了したら、レンダリング送信ツールに渡すことができます。このプロセスは、使用しているレンダリング ファーム管理システムによって異なります。レンダリング送信スクリプトの記述方法の詳細については、ファーム管理システムのドキュメントを参照してください。 - -#### 2. {% include product %} 認証 - -ブートストラップ API の ToolkitManager を初期化するには、スクリプト ユーザが必要です。オートデスクの例では、ファーム マシン上にサイト名、スクリプト ユーザ、およびスクリプト キーが環境変数として存在することを想定しています。通常、これはレンダリング ファームの管理者によって管理されます。次に、オートデスクのコードで想定されている環境変数の名前と、サンプル値を示します。 - -``` -SHOTGUN_SITE = “https://mysitename.shotgunstudio.com” -SHOTGUN_FARM_SCRIPT_USER = “sg_api_user” -SHOTGUN_FARM_SCRIPT_KEY = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” -``` - -認証の詳細については、オートデスクの[開発者用ドキュメント](http://developer.shotgridsoftware.com/tk-core/authentication.html)を参照してください。 - -**スクリプト ユーザの保護に関する注意事項:** ファームで使用するスクリプト ユーザをロックして、管理者レベルの権限が付与されないようにすることをお勧めします。[こちらで、API ユーザの権限を確認してください。](https://developer.shotgridsoftware.com/ja/bbae2ca7/) - -#### 3. init.py スクリプト - -この時点で、レンダリング送信ツールから Toolkit 環境データが渡されていて、レンダリング ファーム マシンの環境変数に認証データが格納されています。レンダリング ジョブ内で Toolkit をブートストラップするためには、最後に、次の `init.py` サンプル コードを Nuke のプラグイン パスに配置して、Nuke を開始するときに起動されるようにする必要があります。(詳細については、[起動スクリプトに関する Foundry のドキュメント](https://support.foundry.com/hc/ja/articles/360003811839-Q100490)を参照してください。) - -```python -# This script shows how a Toolkit as a plugin approach could be used to bootstrap -# Toolkit in Nuke on the render farm. -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#bootstrapping-toolkit - -import sys -import os - -# If your render nodes can access the same tk-core install location as -# artist workstations, retrieve its path from the environment and ensure -# it is in the PYTHONPATH -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 -# about it here: -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip - -import sgtk - -# Authenticate using a pre-defined script user. -sa = sgtk.authentication.ShotgunAuthenticator() - -# Here we retrieve credentials from environment variables, assuming a script user -# will be used when rendering. This should be typically be handled by your render -# farm administrators. -SG_SITE_URL = os.environ["SHOTGUN_SITE"] -SG_SCRIPT_USER = os.environ["SHOTGUN_FARM_SCRIPT_USER"] -SG_SCRIPT_KEY = os.environ["SHOTGUN_FARM_SCRIPT_KEY"] -user = sa.create_script_user( - api_script=SG_SCRIPT_USER, - api_key=SG_SCRIPT_KEY, - host=SG_SITE_URL -) - -# Start up a Toolkit Manager with our script user -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 -# Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override -# Pipeline Configuration defined in {% include product %}. -mgr.do_shotgun_config_lookup = False - -# Set a plugin id to indicate to the bootstrap that we are starting -# up a standard Nuke integration -mgr.plugin_id = "basic.nuke" - -# Retrieve the Toolkit context from environment variables: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -sg_entity = mgr.get_entity_from_environment() - -# Now start up the Nuke engine for a given {% include product %} Entity -nuke_engine = mgr.bootstrap_engine("tk-nuke", entity=sg_entity) -``` - -設定がこの例よりも複雑な場合、または Nuke (`.nk`)スクリプトでなく `-t` フラグを使用して、Python スクリプトをコマンド ラインに渡している場合は、このスクリプトを拡張しなければならない可能性があります。 - -#### 期限固有の手順 - -Deadline は、レンダリング時に Nuke スクリプトを一時的な場所にコピーします。この手順を行うと、Toolkit が認識可能なディスク上の場所にファイルが存在しなくなるため、問題が発生します。この動作を無効にして元の場所からスクリプトをロードするには、次の操作を行います。 - -1. Deadline で、Tools > Configure Plugin に移動します(スーパー ユーザ モード) -2. [Enable Path Mapping]オプションを無効にします。 - -## 技術の詳細 - -アプリでは次の API メソッドを使用できます。 - -### get_write_nodes() - -現在のシーンの {% include product %} 書き込みノードすべてが含まれるリストを返します。 - -`list` app.get_write_nodes() - -**パラメータと戻り値** - -* **戻り値:** `list` - シーン内で見つかった Toolkit 書き込みノードのリスト - -**例** - -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() -``` - -### get_node_name() - -指定した書き込みノードの名前を返します。 - -`string` get_node_name(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - ノードの名前 - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_name(nodes[0]) -``` - -### get_node_profile_name() - -指定した書き込みノードによって使用される設定プロファイルの名前を取得します。 - -`string` get_node_profile_name(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - 設定で定義されたこの書き込みノードのプロファイル名 - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_profile_name(nodes[0]) -``` - -### get_node_render_path() - -指定した書き込みノードがイメージのレンダリング先として使用するパスを取得します。 - -`string` get_node_render_path(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードのレンダリング パス - -**例** -```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]) -``` - -### get_node_render_files() - -指定した書き込みノードに対してレンダリングされているすべてのイメージ ファイルのリストを取得します。 - -`list` get_node_render_files(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `list` - この書き込みノードでレンダリングされるイメージ ファイルのリスト - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_render_files(nodes[0]) -``` - -### get_node_render_template() - -設定の定義に従い、指定した書き込みノードに対するレンダリング イメージが書き込まれる場所を決定するテンプレートを取得します。 - -`template` get_node_render_template(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているレンダリング テンプレート - -**例** -```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]) -``` - -### get_node_publish_template() - -設定の定義に従い、指定した書き込みノードに対するレンダリング イメージがパブリッシュされる場所を決定するテンプレートを取得します。 - -`template` get_node_publish_template(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているパブリッシュ テンプレート - -**例** -```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]) -``` - -### get_node_proxy_render_path() - -指定した書き込みノードがプロキシ イメージのレンダリング先として使用するパスを取得します。 - -`string` get_node_proxy_render_path(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードのプロキシ レンダリング パス - -**例** -```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]) -``` - -### get_node_proxy_render_files() - -指定した書き込みノードに対してレンダリングされているすべてのプロキシ イメージ ファイルのリストを取得します。 - -`list` get_node_proxy_render_files(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `list` - この書き込みノードでレンダリングされるプロキシ イメージ ファイルのリスト - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_files(nodes[0]) -``` - -### get_node_proxy_render_template() - -設定の定義に従い、指定した書き込みノードに対するプロキシ レンダリング イメージが書き込まれる場所を決定するテンプレートを取得します。 - -指定したノードにプロキシ レンダリング テンプレートが設定されていない場合は、代わりに通常のレンダリング テンプレートを返します。 - -`template` get_node_proxy_render_template(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているプロキシ レンダリング テンプレート - -**例** -```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]) -``` - -### get_node_proxy_publish_template() - -設定の定義に従い、指定した書き込みノードに対するプロキシ レンダリング イメージがパブリッシュされる場所を決定するテンプレートを取得します。 - -指定したノードにプロキシ パブリッシュ テンプレートが設定されていない場合は、代わりに通常のパブリッシュ テンプレートを返します。 - -`template` get_node_proxy_publish_template(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `template` - このノードが使用するように設定されているプロキシ パブリッシュ テンプレート - -**例** -```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]) -``` - -### get_node_published_file_type() - -設定の定義に従い、指定した書き込みノードがレンダリング イメージに対してパブリッシュ ファイルを作成するときに使用されるパブリッシュ ファイル タイプを取得します。 - -`string` get_node_published_file_type(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - このノードが使用するように設定されているパブリッシュ ファイル タイプ - -**例** -```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]) -``` - -### generate_node_thumbnail() - -指定した書き込みノードのサムネイルを生成します。一時ファイル(.png)として最大サイズ 800x800 ピクセルでシーケンスの中からフレームをレンダリングします。不要になったら、呼び出し側がこのファイルをクリーンアップします。 - -`string` generate_node_thumbnail(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `string` - ディスク上にあるレンダリングされたサムネイル イメージのパス - -**例** -```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]) -``` - -### reset_node_render_path() - -現在のスクリプトと一致するように、指定した書き込みノードのレンダリング パスをリセットします。 - -`None` reset_node_render_path(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `None` - 値は何も返されません。 - -**例** -```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]) -``` - -### is_node_render_path_locked() - -指定した書き込みノードのレンダリング パスがロック状態かどうかを判別します。 - -`bool` is_node_render_path_locked(`node` ノード) - -**パラメータと戻り値** - -* `node` **ノード**: クエリーする書き込みノード -* **戻り値:** `bool` - レンダリング パスがロックされている場合は True で、それ以外の場合は False です - -**例** -```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]) -``` - -### convert_to_write_nodes() - -現在のスクリプトで見つかったすべての {% include product %} 書き込みノードを標準の Nuke 書き込みノードに変換します。追加の Toolkit 情報は「tk_*」という名前のユーザ ノブに保存されます。 - -`None` convert_to_write_nodes() - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_to_write_nodes() -``` - -### convert_from_write_nodes() - -以前に {% include product %} 書き込みノードから変換された標準の Nuke 書き込みノードを、すべて {% include product %} 書き込みノードに戻します。 - -`None` convert_from_write_nodes() - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_from_write_nodes() -``` - -### process_placeholder_nodes() - -プレースホルダ ノードを完全な {% include product %} 書き込みノードに変換します。これは主に、スクリプトを最初に Nuke で開いたときに Hiero Toolkit スクリプト書き出し機能によって作成されるプレースホルダ ノードを変換するために使用します。 - -`None` process_placeholder_nodes() - -**例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.process_placeholder_nodes() -``` 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 deleted file mode 100644 index aac84585b..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: ShotGrid フォルダ -pagename: tk-shotgun-folders -lang: ja ---- - -# ShotGrid フォルダ - -{% include product %} Toolkit には、設定に基づいて標準化されたフォルダ構造を作成するシステムが組み込まれています。このため、複数のショットで一貫したファイル システム レイアウトを簡単に作成できます。 - -このアプリは、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 deleted file mode 100644 index 49e761d3a..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid 起動フォルダ -pagename: tk-shotgun-launchfolder -lang: ja ---- - -# ShotGrid 起動フォルダ - -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 deleted file mode 100644 index 38f835a3a..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: ShotGrid 起動パブリッシュ -pagename: tk-shotgun-launchpublish -lang: ja ---- - -# ShotGrid 起動パブリッシュ - -このアプリにより、{% include product %} のパブリッシュされたファイルのエンティティで、[関連アプリケーションで開く] (Open in Associated Application)アクションを実行できるようになります。これにより、既にパブリッシュされたファイルを簡単に開くことができます。ファイルに移動して右クリックし、アクションを選択するだけです。 - -![作業ファイル システム](../images/apps/shotgun-launchpublish-open_assoc.png) - -このアプリにより、異なるファイルに別々のアプリ起動シーケンスを簡単に設定できます。このすべての操作はフック内から実行します。また、ビューア(RV など)にイメージ シーケンスを割り当てることもできます。このフックで認識されないファイルは、OS レベルのアプリに割り当てられます。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations/toolkit-configuration.md b/docs/ja/reference/pipeline-integrations/toolkit-configuration.md deleted file mode 100644 index 05db759b7..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-configuration.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 環境設定 -pagename: toolkit-configuration -lang: ja ---- - -# Toolkit の設定 - -ここでは、Toolkit プラットフォームの設定に関するリファレンス ドキュメントを紹介します。 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 deleted file mode 100644 index 275f97b48..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -layout: default -title: 環境設定 -pagename: toolkit-config-ref -lang: ja ---- - -# 環境設定リファレンス - -## はじめに - -Toolkit パイプラインの中心にあるのは環境設定です。Toolkit パイプライン設定内の環境構成ファイルでは、さまざまな DCC 内で使用可能な Toolkit アプリを定義し、それぞれの設定をカスタマイズできます。このドキュメントは環境設定ファイルの構造と機能についての完全なリファレンスです。ここでは、プロジェクト内のさまざまなワークフローを設定するための Toolkit の*「環境」*の概念、環境設定の構成、ファイル参照、そしてどのようなカスタマイズが行えるかを確認する方法について説明します。 - -{% include info title="注" content="このドキュメントは環境設定ファイルのリファレンスとして使用しますが、『[パイプライン設定の編集に関する Toolkit の基本ガイド](https://developer.shotgridsoftware.com/ja/37f575b8/)』には、構成設定を編集するステップバイステップの手順が例として記載されています。" %} - - - -## 環境について - -{% include product %} Toolkit プラットフォームは、一般的に使用されるコンテンツ作成ソフトウェア用に、完全にカスタマイズ可能な統合セットを提供するため、これを使用してスタジオのパイプラインを構築できます。プロジェクトの構成において、統合されているソフトウェア パッケージはどれか、そのそれぞれで利用可能な Toolkit アプリはどれかを指定し、さらに各アプリのオプションを指定することにより、スタジオのニーズに合わせてアーティストのワークフローを構築できます。 - -しかし、スタジオのパイプラインでは、さまざまなタイプのアーティストが異なるワークフローを使用するのが一般的です。簡単な例として、アセットを扱うアーティストの場合は Mari などのテクスチャ ペイント ソフトウェアを利用可能にし、ショットを扱うアーティストの場合は Nuke などの合成ソフトウェアを利用可能にします。 - -ソフトウェア パッケージの他にも、異なるアーティストに対して、同じ Toolkit アプリで異なる設定を使用することができます。たとえば、ショットのアーティストとアセットのアーティストの両方が [Workfiles アプリ](https://developer.shotgridsoftware.com/ja/9a736ee3/)を使用することがありますが、ショットのアーティストは Shot エンティティ、アセットのアーティストは Asset エンティティに関連付けられているファイルにのみナビゲートできるように制限することができます。 - -プロジェクト内でこれらの個別のワークフローをサポートするために、Toolkit はアプリとエンジンの構成を環境上で分離しています。環境には、一連のソフトウェア パッケージの統合とその設定が含まれています。それらのすべてには、特定の共通するコンテキストがあります。 - -上記の例では、アセットを扱うアーティストはアセットの手順の環境で作業し、ショットを扱うアーティストはショットの手順の環境で作業しています。環境はそれぞれ独立して構成されているため、プロジェクト内で異なるワークフローを使用できます。 - -## Toolkit の既定の設定に関するメモ - -Toolkit での環境設定の構築には多くの自由が与えられています。このドキュメントは利用可能なすべてのオプションのリファレンスで、実際のパイプラインのニーズに最も適した選択をするのに必要な知識を得ることができます。 - -またこのドキュメントでは、[既定の設定](https://github.com/shotgunsoftware/tk-config-default2)と呼ばれる、パイプライン設定の出発点として選択された特別な設定についても説明します。パイプラインをカスタマイズする準備が整ったら、最初の手順は[プロジェクト用の編集可能なパイプライン設定を作成する](https://developer.shotgridsoftware.com/ja/37f575b8/)ことです。 - -これらの選択は単なる規則であり、Toolkit のワークフローにハードコードされているわけではありませんが、既定の設定を例として参照すると、パイプラインのカスタマイズを開始した後に使用できる機能や、独自の設定を構築するためのベスト プラクティスについて学ぶことができます。また、新しい Toolkit ユーザが既定の設定を出発点として参照すれば、Toolkit の規則について知るのにも役立ちます。このドキュメントでは、Toolkit の環境設定の一般的な機能と、既定の設定における特定の選択とを常に区別します。既定の設定の環境構成の詳細については、[README ファイル](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)を参照してください。 - -## ファイルの場所 - -パイプライン設定内の `config/` ディレクトリには、カスタマイズ対象のすべてのファイルとフォルダが含まれています。`config/` には、`cache`、`core`、および `env` の 3 つのサブディレクトリがあります。`env` ディレクトリには環境設定ファイルが保持されるため、このドキュメントでは `config/env` 内のファイルを参照します。 - -![env フォルダの内容](../images/env-config-ref/1.png) - -既定の設定では、`config/env/` に次のファイルが表示されます。 - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -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 環境を設定します。 - -## カスタム環境 - -上記の環境設定ファイルは、既定の設定で提供されます。ただし、スタジオによっては、異なる環境や追加の環境を採用することがあります。たとえば、スタジオによっては、パイプラインのステージごとに異なる構成設定が必要な場合があります(`asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` など)。その場合、利用可能な環境を完全にカスタマイズできます。 - -これを行うには、目的の環境設定ファイルを `config/env` ディレクトリに追加します。次に、`pick_environment` コア フックをオーバーライドして、新しい環境をいつ使用するかを定義するロジックを追加します。 - -## 基本構造 - -Toolkit の設定ファイルは [YAML](https://yaml.org/) で記述されます。バンドル(アプリ、エンジン、またはフレームワーク)の一般的な設定の構成は次のとおりです。 - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -この構成を説明するために、非常に単純な例を示します。単一のエンジンがあり、その中に単一のアプリケーションが定義されている環境です。以下は、この設定の `project.yml` の内容です。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### エンジン ブロック - -すべての環境設定ファイルは `engines` ブロックで始まります。ここに、その環境用に定義されているすべてのエンジンがネストされています。 - -この例では、単一のエンジン `tk-maya` のみが定義されています。`apps` と `location` の 2 つの設定がリストされています。 - -`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 -``` - -これは、タイプが `app_store` のディスクリプタです。指定したバンドルを {% include product %} App Store から入手するように Toolkit に指示します。タイプ `app_store` のディスクリプタの設定は `name` と `version` です。 - -対照的に、スタジオでカスタム バンドルをアクティブに開発している場合、たとえば特定のワークフロー用の Toolkit アプリを作成している場合は、ディスク上のパスから直接入手することができます。この場合、以下に示すようにタイプ `dev` のディスクリプタを使用します。 - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` ディスクリプタは `app_store` ディスクリプタとは設定が異なります。他の設定を使用することもできますが、ディスク上のアプリの場所を参照する `path` 設定を使用して簡単にセットアップすることができます。 - -利用可能なすべてのディスクリプタ タイプとその設定に関する詳細は、[Toolkit Core API ドキュメントの「ディスクリプタ」セクション](https://developer.shotgridsoftware.com/tk-core/descriptor.html)を参照してください。 - -### アプリ ブロック - -アプリは Toolkit のユーザ ツールであり、各アプリは他のアプリから独立して実行できます。パイプラインのニーズに基づいてどのアプリを使用するかを選択できます。エンジン ブロック内の `apps` 設定は、特定のエンジンで使用できるアプリを定義します。 - -以下に、上記の例の `apps` 設定をもう一度示します。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -単一のアプリ、`tk-multi-workfiles2` アプリが定義されていることがわかります。現在のところ、単一の設定、すなわちディスクリプタのみが定義されています。 - -`project` 環境の `tk-maya` エンジンで他のアプリを利用できるようにするには、ここで追加します。ここでは、エンジンに Panel、`tk-multi-shotgunpanel`、および About アプリ、`tk-multi-about` を追加します。例の `project.yml` ファイルは次のようになります。 - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -ここでは、いくつかの重要な注意事項があります。 - -* 既定の設定ではバンドルがアルファベット順にリストされ、この例ではその規則に従います。 -* ファイルが長くなり始めていますが、構成設定はまだ追加していません。 -* 他のエンジンや他の環境でこれらと同じアプリを使用していることが想像できます。たとえば、Panel、About アプリ、Workfiles アプリの 3 つのすべてのアプリが、異なるエンジン(Houdini、Nuke、Photoshop など)および異なる環境(`asset_step` や `shot_step`)で実行されている可能性があります。設定内の異なる場所で共通のアプリ設定を定義することは、変更が必要なときに、それぞれの場所で変更が必要になることを意味します。 - -最後の 2 つの問題を軽減するために、Toolkit 設定は*インクルード*をサポートします。 - -### インクルード - -*「インクルード」*を使用すると、あるファイルのセクションを構成内の別のファイルで参照できます。インクルードを使用すると、構成設定を一箇所で設定し、複数の環境で使用できます。 - -インクルードは次の 2 つの部分で構成されます。 - -* `includes` リスト: キーが `includes` で、インクルードするすべてのファイルのリストを値に持つ YAML 辞書。 -* 構成設定内の参照。`@` 記号で始まり、インクルード ファイルから参照するセクションの名前をポイントする名前が付けられています。 - -上記の例を具体化するために、すべてのエンジンのロケーション ディスクリプタを保持する単一のファイルを作成しているとします。そのファイルを `includes` サブフォルダに置き、`engine_locations.yml` という名前を付けます。 - -`engine_locations.yml` の内容は以下のようになります。 - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -このファイルはすべてのエンジンの場所に対する単一のソースとして機能し、すべての環境設定から参照することができます。このインクルード ファイルを使用した場合、この例は次のようになります。 - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations インクルード ファイル](../images/env-config-ref/2.png) - -ここでは、`tk-maya` エンジンの `location` 設定の値が、インクルードされる YAML ファイルのキーを参照していることがわかります。 - -{% include info title="注" content="この例では、既定の設定の規則に従い、すべてのエンジンの場所を `config/env/includes/engine_locations.yml` ファイルに含めています。"%} - -アプリの場所を示すために、2 番目のインクルード ファイルを追加することができます。実際には、これは既定の設定によって行われます。例を拡張してみましょう。 - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -インクルードされた `engine_locations.yml` ファイルから `tk-maya` エンジンのディスクリプタを取得し、インクルードされた `app_locations.yml` ファイルから `tk-maya` エンジン用に定義された各アプリのディスクリプタを取得します。 - -{% 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 の基本ガイド](https://developer.shotgridsoftware.com/ja/37f575b8/)』を参照してください。" %} - - -## スパース構成 - -すべての Toolkit バンドルには、使用可能な構成設定のセットがあり、それぞれの設定に既定値があります。Toolkit は*「スパース構成」*を許可します: 構成設定が環境設定ファイル(またはそこに含まれるファイル)で明示的に指定されていない場合、バンドルの既定値が使用されます。 - -この例では、`location` 以外にアプリの設定を指定していません。したがって、設定の現在の状態では、3 つのアプリはすべての設定に既定値を使用します。それでは、どの構成設定が利用可能であるかを知るにはどうすれば良いでしょうか。 - -{% include info title="注" content="Toolkit の構成がスパース構成であることは必須ではありませんが、既定の設定はスパース構成です。" %} - -## 利用可能な構成設定を検出する - -スパース構成では、単に設定ファイルを見ただけでは、どの構成設定がアプリに使用できるかをすぐに判断することはできません。アプリで利用可能な構成設定を確認する場合、2 つの選択肢があります。 - -* **アプリのドキュメント**: 各アプリには独自のドキュメント ページがあり、それぞれのページに「設定オプション」セクションがあります。このセクションでは、アプリで使用可能なすべての構成設定が、それぞれの説明と既定値と共に一覧表示されています。たとえば、[Workfiles ドキュメント ページ](https://developer.shotgridsoftware.com/ja/9a736ee3/)を参照することができます。[アプリとエンジンのページ](https://developer.shotgridsoftware.com/ja/162eaa4b/)には、すべてのアプリとエンジンのドキュメント ページが一覧表示されています。 -* **マニフェスト:** すべての 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))にあります。 - -## 構成設定を修正する - -既定値の設定を変更するには、パイプライン設定の適切な環境で、適切なブロックに構成を追加し、その値を設定します。 - -例に戻って、プロジェクト環境で Maya が起動されると `tk-multi-workfiles2` が自動的に起動するように設定してみましょう。[アプリのマニフェスト](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)を見ると、アプリの起動時に Workfiles UI を起動するかどうかを制御する `launch_at_startup` 設定があり、その既定値が `False` であることがわかります。そこで、`launch_at_startup` オプションを追加して `True` に設定します。`project.yml` ファイルは次のようになります。 - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -`tk-multi-workfiles2` の設定がインクルード ファイルからのものである場合は、そのファイルでこの変更を行います。 - - -## その他の参考情報 - -* [Toolkit の基本ガイド: パイプライン設定を編集する](https://developer.shotgridsoftware.com/ja/37f575b8/) -* [Toolkit の基本ガイド: アプリを追加する](https://developer.shotgridsoftware.com/ja/4d147fb2) -* [アニメーション パイプラインのチュートリアル](https://developer.shotgridsoftware.com/ja/cb8926fc/) -* [ディスクリプタのリファレンス ドキュメント](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [ウェビナー: Toolkit の管理](https://youtu.be/7qZfy7KXXX0) -* [ファイル システム設定リファレンス](https://developer.shotgridsoftware.com/ja/82ff76f7/) -* [既定の設定の環境構成に関する README](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines.md b/docs/ja/reference/pipeline-integrations/toolkit-engines.md deleted file mode 100644 index b5ba0e4af..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: エンジン -pagename: toolkit-engines -lang: ja ---- - -# Toolkit エンジン - -ここでは、Toolkit プラットフォームで使用できるエンジンのリファレンス ドキュメントを紹介します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md deleted file mode 100644 index 5f7918f7c..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: 3ds Max Plus -pagename: tk-3dsmax-plus -lang: ja ---- - -# 3dsMax Plus - -{% include product %} Engine for 3ds Max Plus は、3ds Max アプリケーションと {% include product %} Pipeline Toolkit の橋渡しを行います。エンジンは PySide とすべてのマルチ アプリをサポートします。つまり、3ds Max 内の標準的なアプリ(Maya や Nuke などで動作するのと同じアプリ)を実行できます。このエンジンは 3ds Max と Python API を使用します。 - - -![エンジン](../images/engines/sg_3dsmax_plus_1.png) - -## サポート対象のアプリケーション バージョン - -この項目はテスト済みです。アプリケーション バージョン 2016-2020 で動作することが分かっています。 最新のリリースでの動作は十分可能ですが、正式なテストはまだ完了していません。 - -## ドキュメント - -このエンジンは、Max Plus の Python サポートを介して {% include product %} Pipeline Toolkit (Sgtk) と 3D studio Max を接続します。 - -![エンジン](../images/engines/3dsmaxplus_engine.png) - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-3dsmaxplus -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、update コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または Studio の tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-3dsmaxplus からアクセスできます。 - -## 特殊な要件 - -上記の操作を行うには、{% include product %} Pipeline Toolkit Core API バージョン v0.19.18 以降が必要です。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md deleted file mode 100644 index 16d688881..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: 3ds Max -pagename: tk-3dsmax -lang: ja ---- - -# 3dsMax - -{% include product %} Engine for 3dsMax は、{% include product %} Toolkit (Sgtk)アプリと 3dsMax を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、メイン メニューに {% include product %} のメニューを追加します。 - -![エンジン](../images/engines/3dsmax_engine.png) - -## サポート対象のアプリケーション バージョン - -この項目はテスト済みです。アプリケーション バージョン 2017 以上で動作することが分かっています。 最新のリリースでの動作は十分可能ですが、正式なテストはまだ完了していません。 - -## ドキュメント - -{% include product %} Engine for 3dsMax は、{% include product %} Pipeline Toolkit (Sgtk)アプリと 3dsMax を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、メイン メニューに {% include product %} のメニューを追加します。 - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-3dsmax -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、update コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または Studio の tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-3dsmax からアクセスできます。 - -## 特殊な要件 - -上記の操作を行うには、{% include product %} Pipeline Toolkit Core API バージョン v0.19.18 以降が必要です。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md deleted file mode 100644 index 5ba8da064..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -layout: default -title: After Effects -pagename: tk-aftereffects -lang: ja ---- - -# After Effects - -{% include product %} Engine for After Effects は、{% include product %} と After Effects のワークフローを統合するプラットフォームを提供します。{% include product %} Toolkit の標準エンジンで構成され、[tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP) を使用します。 - -有効にすると、**[{% include product %} Adobe パネル] (Shotgun Adobe Panel)** というパネルが After Effects で使用できるようになります。現在の {% include product %} コンテキストの情報とそのコンテキストにインストールされたアプリに登録されているコマンドが表示されます。 - -![エンジン](../images/engines/aftereffects_extension.png) - -# インタフェースの概要 - -{% include product %} の拡張パネルには、After Effects のネイティブ パネルと同じカラー パレットと基本レイアウトが使用されます。次の 5 つのコンポーネントで構成されます。 - -![コンポーネント](../images/engines/extension_components.png) - -1. **コンテキスト ヘッダ**: 現在のコンテキストのサムネイルとフィールドです。 -2. **お気に入りシェルフ**: 現在のコンテキストで最もよく使用するアプリを表示するように設計されています。 -3. **コマンド リスト**: 現在のコンテキストのお気に入りではないすべてのコマンドです。 -4. **コンテキスト メニュー**: 追加のコンテキスト関連コマンドとデバッグ ツールです。 -5. **ロギング コンソール**: デバッグのログ出力を表示するコンソール オーバーレイです。 - -# インストール - -{% include product %} Engine for After Effects のインストールには、{% include product %} の他の統合と同じプロトコルを使用します。エンジンやアプリのインストールについては、「[Toolkit を管理する](https://developer.shotgridsoftware.com/ja/425b1da4/)」という記事を参照してください。また、統合の設定方法については、「[Toolkit の既定の設定](https://github.com/shotgunsoftware/tk-config-default2)」の例を参照してください。 - -# 拡張を有効にする - -拡張をインストールしたら、After Effects の拡張メニューから起動する必要があります。 - -![メニュー](../images/engines/extension_menu.png) - -これは、1 回のみ実行する必要があります。それ以降は起動すると {% include product %} 拡張パネルが After Effects のレイアウトに表示されるようになり、逐一有効にする必要はありません。 - -一度有効にすると、それ以降の起動では、{% include product %} 統合のブートストラップ時に、拡張パネルにロード画面が表示されます。 - -通常、この画面は、現在のコンテキストが決定され、コマンドが表示されるまでの数秒間表示されます。 - -# インタフェースのコンポーネント - -以降のセクションでは、{% include product %} と After Effects を統合した場合のコンポーネントについて説明します。 - -## コンテキスト ヘッダ - -コンテキスト ヘッダは、現在の {% include product %} コンテキストに関する情報を表示するカスタマイズ可能な領域です。 - -![ヘッダ](../images/engines/extension_header.png) - -コンテキストは現在アクティブなドキュメントによって決定されます。コンテキストがエンジンによって決定されると、ヘッダはコンテキストのサムネイル フィールドの詳細を表示するように更新されます。フィールド情報はフックで制御されます。フィールド表示のカスタマイズ方法については、「**コンテキスト フィールド表示フック**」を参照してください。 - -また、コンテキストの切り替えは、{% include product %} で[開く] (Open)が使用されていた場合にのみ認識されることにもご注意ください。 - -## お気に入りシェルフ - -お気に入りシェルフは、Maya や Houdini のような他の {% include product %} DCC 統合で利用できるお気に入りメニューと似ています。インタフェースのこのセクションはコンテキスト ヘッダのすぐ下にあるので、よく使用する Toolkit アプリが使いやすく、簡単に見つけられるようになります。 - -![シェルフ](../images/engines/extension_shelf.png) - -シェルフにはお気に入りのコマンドがボタンで表示されます。マウスを上に重ねると、灰色から色付きに変化し、上部のラベルにその名前が表示されます。マウスを上に重ねると、ボタンの説明が表示されます。 - -いずれかのボタンをクリックすると、実行する登録済みコマンドのコールバックがトリガされます。 - -コマンドをお気に入りとして指定する方法については、下記の「**shelf_favorites**」セクションを参照してください。 - -## コマンド リスト - -コマンド リストには、現在のコンテキストに登録されているその他の「標準」コマンドが表示されます。 - -![コマンド](../images/engines/extension_commands.png) - -通常、パイプライン設定内にインストールされたアプリはここに表示される 1 つまたは複数のコマンドを登録します。コマンドがお気に入りとして識別されず、コンテキスト メニュー コマンドとしても識別されていない場合は、ここに表示されます。 - -コマンド リスト ボタンは、お気に入りシェルフ内のボタンと同じように動作します。唯一異なる点は、アイコンの右側に完全な名前のリストとして表示されることです。 - -## コンテキスト メニュー - -コンテキスト メニュー コマンドとして登録されているコマンドは、{% include product %} 拡張パネルのコンテキスト メニューに表示されます。 - -![コンテキスト メニュー](../images/engines/extension_context_menu.png) - -他のコマンド領域と同様に、このコマンドはコンテキストに応じて変化します。**Jump to {% include product %}** や **Jump to Filesystem** などのコマンドは常にここから使用できます。 - -## ロギング コンソール - -ロギング コンソールは、CEP JavaScript インタプリタと Toolkit の Python プロセスの両方のログ出力をすべて表示します。 - -![コンソール](../images/engines/extension_console.png) - -拡張機能に問題があり、サポートが必要な場合、ロギング コンソール出力は、{% include product %} のサポート チームが問題をデバッグする際に非常に役立ちます。 - -# 設定と技術の詳細 - -次のセクションでは、貴社のパイプライン固有のニーズに合わせて統合を設定できるよう、統合の技術的な側面について少し説明します。 - -## PySide - -{% include product %} Engine for After Effects は PySide を使用します。正式な手順については、「[PySide をインストールする](http://pyside.readthedocs.io/en/latest/installing/index.html)」を参照してください。 - -## CEP 拡張機能 - -拡張機能自体はエンジンにバンドルされており、After Effects の初回起動時にエンジンが自動的にインストールします。拡張機能は、アーティストが使用するローカル マシンにある OS 固有の標準的な CEP 拡張ディレクトリにインストールされます。 - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -After Effects が起動するたびに、エンジン ブートストラップ コードが、エンジンにバンドルされている拡張機能のバージョンとマシン上にインストールされているバージョンを比較します。つまり、新しいバージョンの拡張機能がバンドルされている場合は、エンジンを更新するとインストールされている拡張機能がバンドルされている新しいバージョンに自動的にアップデートされます。 - -## お気に入りを設定する - -**お気に入りシェルフ**は、インストールしたアプリに登録されているコマンドを表示するように設定できます。表示するには、`shelf_favorites` 設定を環境設定の `tk-aftereffects` セクションに追加するだけです。次に例を示します。 - -```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...} -``` - -設定の値は、環境設定にインストールされたアプリの 1 つで提供される、登録済みコマンドを識別するディクショナリのリストです。`app_instance` キーは特定のインストール済みアプリを識別し、`name` キーはこのアプリによって登録されたコマンドの表示名に一致します。上記の例では、4 つのお気に入りコマンドが表示されています。`tk-multi-workfiles2` アプリのファイルの表示と保存のダイアログと、標準の Toolkit のパブリッシュとスナップショットのダイアログです。これら 4 つのコマンドはお気に入りシェルフに表示されます。 - -## 環境変数 - -デバッグをサポートするために、エンジンの既定値の一部を変更する環境変数のセットが用意されています。 - -- `SHOTGUN_ADOBE_HEARTBEAT_INTERVAL`: Python ハートビート間隔(単位は秒、既定は 1 秒)。 -- `SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE`: 終了までのハートビートのエラー数(既定は 2)。この変数を設定すると、従来の環境変数 -- `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE` が優先されます。 -- `SHOTGUN_ADOBE_NETWORK_DEBUG`: ログ出力時に追加のネットワーク デバッグ メッセージを含めます。この変数を設定すると、従来の環境変数 -- `SGTK_PHOTOSHOP_NETWORK_DEBUG` が優先されます。 -- `SHOTGUN_ADOBE_PYTHON`: エンジンの起動時に使用する Python の実行可能ファイルへのパス。設定しない場合は、システムの Python が使用されます。Photoshop が {% include product %} Desktop や tk-shell エンジンなどの Python プロセスから起動される場合、このプロセスで使用する Python は Photoshop との統合で使用されます。 - -注: 追加の環境変数が Adobe のフレームワークに存在します。詳細については、[開発者用ドキュメント](https://developer.shotgridsoftware.com/tk-framework-adobe/)を参照してください。 - - -## コンテキスト フィールド表示フック - -エンジンには、パネルの**コンテキスト ヘッダ** セクションに表示されるフィールドを制御するフックがあります。フックには表示する内容をカスタマイズするためにオーバーライドできる 2 つのメソッドがあります。 - -最初のメソッドは `get_entity_fields()` メソッドです。このメソッドは、現在の {% include product %} コンテキストを表すエンティティ タイプを受け入れます。予想される戻り値は、表示するためにクエリーの必要があるエンティティのフィールドのリストです。エンジン自体はデータのクエリーを非同期に処理します。 - -{% include product %} からデータをクエリーすると、フックの 2 番目のメソッドが呼び出されます。この `get_context_html()` メソッドは、`get_entity_fields()` メソッドで指定されたクエリー フィールドが入力されたコンテキスト エンティティ ディクショナリを受け取ります。予想される戻り値は、クエリー対象のエンティティ フィールドを表示するためにフォーマット化された HTML を含む文字列です。 - -このメソッドで指定する必要がある内容については、「[既定のフックの実装](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/context_fields_display.py)」を参照してください。 - -エンジンは、エンティティのサムネイルが使用可能であれば、それを常に表示します。 - -## 映像フックの読み込み - -エンジンにはフックが付属し、それにより一部のファイル タイプの読み込み動作を制御することができます。PSD ファイルを、コンポジションではなく単一レイヤとして読み込むほうが良い場合もあります。このような状況では、その動作の仕方を上書きするためにフックが使用されることがあります。 - -[既定のフックの実装](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/import_footage.py) - -## 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 deleted file mode 100644 index 0fcfe3203..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Alias -pagename: tk-alias -lang: ja ---- - -# Alias - -{% include product %} Engine for Alias は、{% include product %} アプリと Alias を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、Alias のメニューに {% include product %} のメニューを追加します。 - -# アプリ開発者向けの情報 - -## PySide - -{% include product %} Engine for Alias には、{% include product %} Desktop に付属の PySide がインストールされており、必要に応じて有効になります。 - -## Alias プロジェクトの管理 - -{% include product %} Engine for Alias が起動すると、このエンジンの設定で定義された場所を Alias プロジェクトが参照するように設定されます。つまり、新しいファイルを開くと、このプロジェクトも変更される場合があります。ファイルに基づく Alias プロジェクトの設定方法に関連する詳細設定は、テンプレート システムを使用して設定ファイルで指定できます。 - -*** - -# tk-alias を使用する - -この {% include product %} の統合では、Alias アプリケーション ファミリ(Concept、Surface、AutoStudio)がサポートされます。 - -Alias を開くと、{% include product %} のメニュー(Alias エンジン)がメニュー バーに追加されます。 - -![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunOtherApps.png) - - -### ファイルの表示と保存 - -[マイ タスク] (My Tasks)タブと[アセット] (Assets)タブを使用すると、割り当てられたすべてのタスクを表示して、アセットを参照できます。右側では、これらのタブを使用してすべてのファイル、作業ファイル、またはパブリッシュ ファイルを表示します。これらのファイルは、左側で選択されているものに関連付けられています。 - -![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunFileOpen.png) - -![](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)」を参照してください。 - -![](https://help.autodesk.com/cloudhelp/2020/JPN/Alias-Shotgun/images/ShotgunLoader.png) - -### シーンの詳細情報 - -[詳細情報] (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-create.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-create.md deleted file mode 100644 index 2ba4302e3..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-create.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Create -pagename: tk-create -lang: ja ---- - -# {% include product %} Create - -Desktop2 Engine は [{% include product %} Create](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) アプリケーション内で実行されるエンジンです。{% include product %} Create から DCC を起動した場合と、ブラウザの統合を使用して {% include product %} Web アプリケーションから DCC を起動した場合を処理します。 - -tk-desktop2 エンジンは、Toolkit と {% include product %} Create の統合を実現します。{% include product %} Create は、[DCC の起動](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Supervisor_Artist_sa_create_sa_create_artists_html#launching-your-creative-apps)など、Toolkit のユーザが精通している機能をサポートしています。 - -![](../images/engines/create-dcc-01.png) - -![](../images/engines/create-dcc-02.png) - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-desktop2 -Updating to the latest version -``` - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または、`tank` コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコードリポジトリには、https://github.com/shotgunsoftware/tk-desktop2 からアクセスできます。 - -## 特殊な要件 - -上記の操作を行うには、{% include product %} Pipeline Toolkit Core API バージョン v0.19.1 以降が必要です。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md deleted file mode 100644 index 0de9b7332..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Desktop -pagename: tk-desktop -lang: ja ---- - -# Desktop - -tk-desktop エンジンは Toolkit アプリケーションを簡単に実行できるアプリケーションです。これはシステム トレイ ベースのウィンドウで、Toolkit の開始、Toolkit のプロジェクトのセットアップ、プロジェクトのパイプラインへのアクセスを簡単に行うことができます。 - -## サイト設定とプロジェクト設定 - -![プロセス](../images/engines/processes.png) - -デスクトップ アプリケーションを起動すると、サイト設定用に tk-desktop エンジンが起動されます。この動作を無効にして、その環境の内容を制御することもできますが、通常はこの設定が自動的に管理されます。 - -Toolkit の基本原則の 1 つは、プロジェクト同士を完全に分離できることです。これは通常、あるプロジェクトに対して行った変更が(配信間近の)他のプロジェクトに悪影響を与えないようにするために行います。このようにプロジェクトを分離するため、特定のプロジェクトのコマンドを実行する場合、デスクトップ エンジンはこのプロジェクト用に初期化された個別の Python インタプリタでコマンドを実行するようにします。 - -プロジェクトをクリックすると、Python インタプリタはバックグラウンドで起動されます。この Python インタプリタは、プロジェクトが使用できるように設定されているため、起動時にこのプロジェクトの tk-desktop を初期化します。エンジンのこのインスタンスは起動するコマンドを GUI に通知します。 - -コマンドをクリックすると、このバックグラウンド Python プロセスがコマンドの起動を管理します。これにより、あるプロジェクトで Python 2.6 を実行し、別のプロジェクトで Python 2.7 をテストすることなどが可能です。 - -## カスタム パネルを登録する - -[パネル ベースの UI](http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.show_panel) がある Toolkit アプリは、実行時に Desktop の内側のタブに自動的にドッキングされます。 - -{% include product %} Panel などのパネル ベースのアプリを {% include product %} Desktop でタブとして表示したい場合は、起動時に実行されるように設定します。Desktop がサイト コンテキスト モード(すべてのプロジェクトが表示される)で起動すると、自動起動するよう登録されたすべての項目が起動します。これらの項目にパネルが含まれる場合、ドッキングされます。項目は、設定で定義された順序で処理され、これによりタブの順序が決まります。 - -たとえば、{% include product %} Panel を {% include product %} Desktop にタブとして表示する場合は、サイト レベルの環境に次の設定を追加します。 - -```yaml -tk-desktop: - apps: - tk-multi-shotgunpanel: - actions_hook: ... - action_mappings: ... - location: ... - location: ... - run_at_startup: - - {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 deleted file mode 100644 index a70a5cd55..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: default -title: Flame -pagename: tk-flame -lang: ja ---- - -# Flame - -## インストール - -{% 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 設定を選択します。 - -## Flame プロジェクトのセットアップ - -{% include product %} Engine for Flame は {% include product %} プロジェクトと Flame プロジェクトを関連付け、必要に応じてプロジェクトを作成します。Flame データが {% include product %} の適切なデータと関連付けられるため、これが統合の鍵となります。追加機能として、エンジンには Flame プロジェクトの命名規則およびプロジェクトの他のさまざまな設定を管理するための機能が用意されています。 - -Flame を {% include product %} から初めて起動すると、Flame プロジェクト作成 UI が表示されるため、アーティストは標準的な Flame プロジェクト作成画面から通常の設定を編集できます。 - -![プロジェクト](../images/engines/flame_project.png) - -ただし、{% include product %} と統合すると、パイプラインに最適な値があらかじめ設定されるため、アーティストは設定値について検討しなくてもすぐに使用することができます。既定値は `project_setup_hook` を介してカスタマイズできます。次のオプションをサポートしています。 - -`use_project_settings_ui` `True` に設定すると、プロジェクト作成 UI が表示されます。`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 ストリームを構築する場所です。次のパラメータを指定する必要**があります。 - -* 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 のマニュアル](https://www.autodesk.co.jp/developer-network/platform-technologies/wiretap)を参照してください。 - -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 deleted file mode 100644 index 38b361a1f..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: default -title: Houdini -pagename: tk-houdini -lang: ja ---- - -# Houdini - -{% include product %} Engine for Houdini は、{% include product %} アプリと Houdini を統合するための標準プラットフォームを提供します。 - -![{% include product %} Engine for Houdini](../images/engines/houdini_engine.png) - - -# アプリ開発者向けの情報 - -## サポート対象プラットフォーム - -現在、{% include product %} Engine for Houdini は Windows、Linux、OSX でサポートされています。 - -## PySide - -古いバージョンの Houdini (13 以前)の場合、PySide の外部ビルドが必要です。Windows の場合、Houdini が実行する Python と連携する、互換性のある PySide ビルドがバンドルされています。Linux の場合、Houdini は PySide または PyQt のサポートが必要な Python システム(http://www.sidefx.com/docs/houdini12.0/hom/)を使用しています。 - -## メニューのロード - -![{% include product %} メニュー](../images/engines/houdini_menu.png) - -Houdini 15 以降では、Side Effects により動的メニュー システムが導入され、このエンジンでコンテキスト切り替え時に {% include product %} メニューの再構築がサポートされるようになりました。 - -Houdini 14 以前では、Houdini の {% include product %} メニューは Houdini の起動前に生成され、セッション全体で固定されます。このため、メニューに登録されている Toolkit コマンドは、コンテキストが変更されても更新されません。 - -## {% include product %} シェルフ - -![{% include product %} シェルフ](../images/engines/houdini_shelf.png) - -リリース **v0.2.4** では、エンジンに動的 {% include product %} シェルフが導入されています。このシェルフでは登録されたアプリ コマンドがツール ボタンとして表示されます。ボタンはメニュー コマンドとほとんど同じ順序で表示されます。 - -環境内のシェルフをオンにするには `enable_sg_shelf` 設定を使用します。動的メニューをサポートしないバージョンの Houdini (14 以前)を使用する場合、シェルフの使用時に {% include product %} メニューをオフにすることもできます。その場合は、`enable_sg_menu` 設定を `false` に設定します。 - -シェルフを使用したコンテキストの切り替えを有効にするには、エンジン設定の `tk-multi-workfiles` アプリの `sg_entity_types` 設定にエンティティ タイプも追加する必要があります。 - -次に、{% include product %} シェルフに関連する設定を示します。 - -```yaml -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 - enable_sg_shelf: true - enable_sg_menu: false - # ... other engine settings -``` - -{% include product %} シェルフを有効にしたら、Houdini 内で設定したシェルフに手動で追加する必要があります。 - -![{% include product %} シェルフの追加](../images/engines/add_shelf.png) - -{% include product %} シェルフをシェルフ セットに追加すると Houdini セッション間をまたいで保持されますが、{% include product %} コンテキストが変更されると動的に更新されます。 - -## パネル - -**v0.2.8** 以降のエンジンでは、埋め込み Toolkit パネルのサポートを追加できます。 - -埋め込まれた適切なパネルをサポートするには、**15.0.272** 以降のバージョンの Houdini が必要です。登録パネルは、サポート対象バージョンの Houdini でペイン メニューのペインとして表示されます。 - -古いバージョンの Houdini では登録パネルがダイアログとして表示されます。SESI はいくつかのバグ修正を Houdini 14 の最新ビルドに移植する場合があります。その場合は、埋め込みパネルがそれぞれのバージョンで動作するようにします。 - -## OTL を使用したアプリ - -{% include product %} Engine for Houdini を使用すると、アプリケーションによって提供される OTL ファイルを簡単にロードできます。OTL を使用するアプリを作成する場合、**otls** と呼ばれるフォルダにドロップするだけで、エンジンがアプリをセッションに自動的にロードします。 - -![Houdini OTL](../images/engines/otls_path.png) - -通常の Houdini メソッドからノードに簡単にアクセスできます。 - -**警告:**OTL の使用は便利ですが、シーン内で保持されるノードを作成する場合、一般的には適切な解決方法ではありません。その理由は、シーン内に OTL を配置するとすぐに、このシーンと OTL コードの間に依存関係が生まれるためです。シーンのロードのたびに {% include product %} Toolkit をロードする必要があるだけでなく、コードを更新するときにシーン内で使用されている古い OTL が分割されないように慎重に管理する必要もあります。 - -## OSX のターミナルからデバッグを起動する - -OS X の `tk-houdini` の `debug_logging` をオンにしても、すべてのデバッグ メッセージがターミナルに送信されるわけではありません。これは、既定で [`tk-multi-launchapp`](https://github.com/shotgunsoftware/tk-multi-launchapp) アプリが実行可能ファイルの起動に `open` コマンドを使用するためです。これでターミナルから新しいサブプロセスがスポーンされることはありませんが、代わりに OS X の起動サービスを使用して新しい場所が作成されます。その結果、ログのステートメントが表示されなくなります。Houdini でユーザの既定のデスクトップに Python シェルを保存しても、起動時にデバッグのステートメントは表示されないようです。起動後、埋め込み Python シェルはデバッグ ログのステートメントを表示しますが、起動時に使用可能な出力にはずれが生じます。エンジンの起動時にデバッグ ログのステートメントにアクセスする必要がある場合は、次の 2 つの変更を行います。 - -最初に、Houdini アプリ バンドル内の実行可能ファイルを指定するようにテスト設定で `houdini_mac` パスを(一時的に)変更します。以下に例を示します。 - -```yaml -#houdini_mac: /Applications/Houdini 15.0.272/Houdini Apprentice.app -houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/MacOS/happrentice -``` - -次に、テスト設定の `config/hooks` ディレクトリの `tk-multi-launchapp` アプリの `app_launch` フックのコピーを作成し、`config/env/includes/app_launchers.yml` ファイルでそのコピーを指定します。 - -```yaml -launch_houdini: - defer_keyword: '' - engine: tk-houdini - extra: {} - 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' - menu_name: Launch Houdini - versions: [] - windows_args: '' - windows_path: '@houdini_windows' -``` - -その後は実行可能ファイルを直接起動するように起動ロジックを修正するだけです。たとえば、ディレクトリの古い動作(アプリケーション バンドル)を維持し、それ以外のコマンドを直接実行するとします。次に例を示します。 - -```python - elif system == "darwin": - # on the mac, the executable paths are normally pointing - # to the application bundle and not to the binary file - # embedded in the bundle, meaning that we should use the - # built-in mac open command to execute it - if os.path.isdir(app_path): - cmd = "open -n \"%s\"" % (app_path) - if app_args: - cmd += " --args \"%s\"" % app_args.replace("\"", "\\\"") - - # not a directory, execute directly - else: - cmd = "%s %s" % (app_path, app_args.replace("\"", "\\\"")) -``` - -ターミナルで `tank` を使用して `launch_houdini` を実行すると、すべてのデバッグ出力を取得できます。テストが完了したら、パスを元に戻して、アプリ起動の変更を取り消してください。デバッグの成功をお祈りします。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-mari.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-mari.md deleted file mode 100644 index 85e114f72..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-mari.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Mari -pagename: tk-mari -lang: ja ---- - -# Mari - -{% include product %} Engine for Mari は、{% include product %} Toolkit アプリと Mari を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、メイン メニューに {% include product %} のメニューを追加します。 - -## サポート対象のアプリケーション バージョン - -この項目はテスト済みであり、アプリケーション バージョン 2.6 ~ 4.6 で動作することが分かっています。より新しいリリースで動作する可能性も十分にありますが、これらのバージョンでは正式にテストされていません。 - -## 概要ビデオ - -概要ビデオについては、[こちら](https://youtu.be/xIP7ChBWzrY)を参照してください。 - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-mari -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または、`tank` コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、および{% include product %}のソース コードにも Github からアクセスできます。オートデスクでは、これらのソース コードを Github で格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-mari からアクセスできます。 - - - - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-maya.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-maya.md deleted file mode 100644 index 608291eeb..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-maya.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: Maya -pagename: tk-maya -lang: ja ---- - -# Maya - -{% include product %} Engine for Maya は、{% include product %} アプリと Maya を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、Maya のメニュー バーに {% include product %} のメニューを追加します。 - -![エンジン](../images/engines/maya_menu.png) - -## PySide - -{% include product %} Engine for Maya には PySide がインストールされており、必要に応じて有効になります。 - -## Maya のプロジェクト管理 - -{% include product %} Engine for Maya が起動すると、このエンジンの設定で定義された場所を Maya プロジェクトが参照するように設定されます。つまり、新しいファイルを開くと、このプロジェクトも変更される場合があります。ファイルに基づく Maya プロジェクトの設定方法に関連する詳細設定は、テンプレート システムを使用して設定ファイルで指定できます。 - -## サポート対象のアプリケーション バージョン - -この項目はテスト済みです。アプリケーション バージョン 2014 ~ 2022 で動作することが分かっています。 最新のリリースでの動作は十分可能ですが、正式なテストはまだ完了していません。 - -## インストールと更新 - -このエンジンを {% include product %} Pipeline Toolkit に追加します。 -このエンジンを Project XYZ に追加して、さらに asset という環境に追加するには、次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-maya -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または Studio の tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-maya からアクセスできます。 - - - - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md deleted file mode 100644 index 2445a505a..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Motion Builder -pagename: tk-motionbuilder -lang: ja ---- - -# Motion Builder - -![エンジン](../images/engines/sg_mobu_1.png) - -{% include product %} Engine for Motion Builder は、{% include product %} Toolkit アプリと MotionBuilder を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、メイン メニューに {% include product %} のメニューを追加します。 - -![エンジン](../images/engines/mobu.png) - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-motionbuilder -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または Studio の tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-motionbuilder からアクセスできます。 - - - diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md deleted file mode 100644 index ebce70cbe..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -layout: default -title: Nuke -pagename: tk-nuke -lang: ja ---- - -# Nuke - -{% include product %} Engine for Nuke は、{% include product %} アプリと Nuke、Nuke Studio、および Hiero を統合するための標準プラットフォームを提供します。軽量で操作性に優れており、たくさんの新しい項目を Nuke に追加できます。 - -Nuke に **{% include product %} メニュー**が作成され、さまざまな項目が表示されます。 - -![メニュー](../images/engines/nuke-menu.png) - -Nuke に **{% include product %} ノード メニュー**が作成され、さまざまな項目が表示されます。 - -![ノード メニュー](../images/engines/nuke-nodes_menu.png) - -ファイル システムのさまざまな場所に簡単にジャンプできる {% include product %} ショートカットがファイル ダイアログに追加されます。 - -![お気に入り](../images/engines/nuke-favorites.png) - -`favourite_directories` 設定を使用すると、現在の環境のテンプレート パスに基づいて独自のショートカットを追加できます。この設定は、リスト内の各項目が新しいお気に入りのディレクトリを表す、ディクショナリのリストを必要とします。次に、使用するフォーマットの例を示します(値として「""」と指定すると、アイコンを未指定のまま残すこともできます)。 - -```yaml - favourite_directories: - - display_name: "Shot Publish Path" - template_directory: "shot_publish_area_nuke" - icon: "icons/custom_publish_icon.png" - - display_name: "Shot Work Path" - template_directory: "shot_work_area_nuke" - icon: "icons/custom_work_icon.png" -``` - -[{% include product %} の現在のプロジェクト] (Shotgun Current Project)というお気に入りが、定義済みの各ルートに自動的に追加されます。`project_favourite_name` 設定を使用して名前をカスタマイズするか、値を空の文字列 `''` に設定してお気に入りを無効にします。 - - - -*** - -_注: 現在、CentOS 6.5 上で実行される Nuke 8.0 に限り、バグによって Toolkit の実行時に Nuke がクラッシュしてしまいます。他のバージョンの CentOS には影響ありません。Foundry はこの問題を認識しています(バグ 43766)。この問題が発生した場合は、当社までお問い合わせください。Nuke の今後の更新で解決されるまで、問題の回避をお手伝いします。_ - - -## アプリ開発者向けの情報 - -### コンテキストのトラッキング - -{% include product %} Engine for Nuke は、ファイルのロード時にコンテキストを自動的に切り替えます。ファイルをロードすると、エンジンがファイルを確認してからコンテキストを解決します。 - -### カスタム ギズモを使用するアプリ - -{% include product %} Engine for Nuke を使用すると、カスタム ギズモを簡単に処理できます。カスタム ギズモを使用するアプリを作成する場合、**gizmos** と呼ばれるフォルダにドロップするだけで、エンジンがこの場所を Nuke のパスに自動的に追加します。 - -![ギズモ](../images/engines/nuke-gizmo.png) - -これでノード作成機能からギズモに簡単にアクセスできます。 - -* `nuke.createNode("WriteTank")` - -{% include info title="警告" content="ギズモを使用すると便利ですが、ノードを作成してシーン内で保持する場合、一般的には適切な方法ではありません。その理由は、シーン内にギズモを配置するとすぐに、このシーンとギズモ コードの間に依存関係が生まれるためです。シーンのロードのたびに ShotGrid Toolkit をロードする必要があるだけでなく、コードを更新するときにシーン内で使用されている古いギズモが分割されないように慎重に管理する必要もあります。"%} - -### ノードを作成するアプリ - -カスタム Nuke ノードを作成するアプリは慎重に作成する必要があります。シーンとギズモ コードの間に依存関係が必要になるため、ギズモを使用しないことをお勧めします。その代わりに、カスタム ノードを Nuke ファイルとして保存し、シーンに読み込みます。 - -```python - group_node_script = os.path.join(self.disk_location, "resources", "my_group_node.nk") - group_node = nuke.nodePaste(group_node_script) -``` - -アプリ内からノードを呼び出すコードは、返されたインスタンスのみを使用できます。 - -グループ内からアプリを呼び出す必要があるコードは下位互換性を持つように慎重に処理する必要があります。次の手順をお勧めします。 - -アプリの起動時に、アプリ ハンドルを Nuke ネームスペースの一部として登録します。 - -```python - def init_app(self): - - nuke.tk_nuke_nameofmyapp = self -``` - -たとえば、グループ ノードにボタンがあり、何らかの {% include product %} アプリ コードを呼び出す場合、{% include product %} Toolkit が見つからないときには故意に失敗するようにしてください。次のコードは、アプリが作成したグループ ノードに属している Python ボタン ノブに関連付けられたコードです。 - -```python -# have to gracefully support the case when -# sgtk is not in the system at all! -import nuke -try: - app = nuke.tk_nuke_nameofmyapp - app.do_something_v1(nuke.thisNode()) -except: - nuke.warning("Could not do XYZ! Most likely Sgtk is not currently active.") -``` - -アプリの動作を変更する場合は、アプリのコールバックでバージョン番号を最新にしておきます。これにより、アプリ コードは新旧両方の動作をサポートできます。 - -## Hiero 内で {% include product %} Engine for Nuke を使用する - -{% include product %} Engine for Nuke は、Hiero 内で実行される {% include product %} 対応の統合にも使用されます。 - -アプリケーションの複数の場所(メイン メニュー バーの特定の {% include product %} メニューや、他の Hiero パネルにあるさまざまな右クリック コンテキスト メニュー)に、{% include product %} アプリのアクションを登録できます。 - -![メニュー](../images/engines/nuke-hiero-menus.png) - -### Hiero メニューの設定方法 - -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...} -``` - -ほとんどのエンジンには `menu_favourites` オプションがあります。これは、{% include product %} のメイン メニューに登録する「ショートカット」を指定するリストです。これとは別に、Hiero 固有の設定には次の 3 つの特別なセクションがあります。 - -- `timeline_context_menu` は、タイム ライン エディタのクリップを右クリックすると表示されるメニューを表します。 -- `spreadsheet_context_menu` は、スプレッドシート エディタの項目をクリックすると表示されるメニューを表します。 -- `bin_context_menu` は、bin エディタの項目を右クリックすると表示されるメニューを表します。ここにはさまざまなプロジェクトとメディアがすべて表示されます。 - -これらのメニューに項目を追加するには、設定で定義する `name` フィールドとアプリがメニューに表示する内容が一致するようにするだけです。 - -#### 現在のシーンという概念を必要とするアプリ - -一部の Toolkit アプリには、既定のシーンまたはプロジェクトの概念が必要です。たとえば、スナップショット アプリは現在のシーンのスナップショットを作成する方法を把握しています。ただし、Maya や Nuke とは異なり、Hiero に現在のシーンという概念はありません。Hiero では複数のプロジェクトを同時に開くことができます。そのため、アプリがクリック対象のプロジェクトを理解できるようにするため、多くの場合フックに特別なロジックを追加することが必要になります。以降のセクションではこの仕組みについて説明します。 - -### アプリ開発者向けの情報 - -Hiero には現在のプロジェクトという概念がないため、アプリが Hiero 内でクリックされた内容を簡単に確認できるようにするため、たくさんの強力なツールが追加されています。{% include product %} Engine for Hiero には、次の 2 つのメソッドが追加されています。 - - -#### get_menu_selection() - -最後にクリックしたメニューで選択された Hiero オブジェクトのリストを返します。 -このリストにはさまざまなタイプの項目が含まれます。どのメソッドで何が返されたのかを正確に確認するには、デバッグ ログをオンにします。これにより動作内容の詳細が出力されます。 - -返されるオブジェクトの例は次のとおりです。 - -- bin ビューでプロジェクトを選択する: [hiero.core.Bin](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.Bin) -- bin ビューで項目を選択する: [hiero.core.BinItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.BinItem) -- トラックを選択する: [hiero.core.TrackItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.TrackItem) - -`list` engine_object.get_menu_selection() - -**パラメータと戻り値** - -* **戻り値:** Hiero オブジェクトのリスト - -**例** - -最後にクリックして選択したオブジェクトを取得します。1 つのオブジェクトが選択されており、このオブジェクトが有効な Hiero プロジェクトであることを確認します。これは Hiero でプロジェクトの保存、ロード、またはパブリッシュ操作をトリガする場合などに役立ちます。 - -```python -# get the menu selection from the engine -selection = engine_obj.get_menu_selection() - -if len(selection) != 1: - raise TankError("Please select a single Project!") - -if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - -project = selection[0].project() -if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") -``` - -#### HieroEngine.get_menu_category() - -最後にクリックしたメニューがある UI 領域を返します。このコマンドはあまり使用しないかもしれません。読み出し元のメニューに応じて異なる動作を求めるアプリ コマンドを使用する場合に必要になることがあります。 - -`area_enum` engine_object.get_menu_category() - -**パラメータと戻り値** - -次の定数の 1 つを返します。 - -- `HieroEngine.HIERO_BIN_AREA` -- `HieroEngine.HIERO_SPREADSHEET_AREA` -- `HieroEngine.HIERO_TIMELINE_AREA` -- `None` (不明または未定義の場合) - -#### Hiero と連携するようにフックを設定する方法 - -通常、Hiero で設定したマルチ アプリでは、どのプロジェクトがクリックされているかを特定する必要があります。たとえば、`tk-multi-workfiles` アプリでプロジェクトの[{% include product %} を名前を付けて保存] (Shotgun Save As)を実行する必要があるとします。そのため、ユーザが bin ビュー内のプロジェクトを右クリックして *[名前を付けて保存] (Save As)*オプションを選択できるように、Hiero の bin メニューに Tank Save As コマンドを追加します。 - -![メニュー](../images/engines/nuke-hiero-bin_menu.png) - -エンジンの設定は次のようになります。 - -```yaml -bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} -``` - -ここでは、アプリ自体の各エンジンで保存やロードなどのシーン イベントを処理するフックを設定する必要があります。Maya や Nuke などのアプリケーションの場合、通常は保存やロードなどを実行するだけです。 -ただし Hiero の場合は、実際にクリックされたプロジェクトを見つけてから開始する必要があります。前述のフック コードの例は、次のようになります。 - -```python -class SceneOperation(Hook): - """ - Hook called to perform an operation with the - current scene - """ - - def execute(self, operation, file_path, context, **kwargs): - """ - Main hook entry point - - :operation: String - Scene operation to perform - - :file_path: String - File path to use if the operation - requires it (e.g. open) - - :context: Context - The context the file operation is being - performed in. - - :returns: Depends on operation: - 'current_path' - Return the current scene - file path as a String - 'reset' - True if scene was reset to an empty - state, otherwise False - all others - None - """ - - if operation == "current_path": - # return the current script path - project = self._get_current_project() - curr_path = project.path().replace("/", os.path.sep) - return curr_path - - elif operation == "open": - # open the specified script - hiero.core.openProject(file_path.replace(os.path.sep, "/")) - - elif operation == "save": - # save the current script: - project = self._get_current_project() - project.save() - - elif operation == "save_as": - project = self._get_current_project() - project.saveAs(file_path.replace(os.path.sep, "/")) - - elif operation == "reset": - # do nothing and indicate scene was reset to empty - return True - - elif operation == "prepare_new": - # add a new project to hiero - hiero.core.newProject() - - - def _get_current_project(self): - """ - Returns the current project based on where in the UI the user clicked - """ - - # get the menu selection from the engine - selection = self.parent.engine.get_menu_selection() - - if len(selection) != 1: - raise TankError("Please select a single Project!") - - if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - - project = selection[0].project() - if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") - - return project -``` - -#### メニュー イベントの確認にデバッグ ログを使用する - -特定の選択項目がクリックされた場合に 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 deleted file mode 100644 index 47303c593..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: Photoshop -pagename: tk-photoshopcc -lang: ja ---- - -# Photoshop - -{% include product %} Engine for Photoshop CC は、{% include product %} と Photoshop CC のワークフローを統合するプラットフォームを提供します。{% include product %} Pipeline Toolkit の標準エンジンで構成され、[tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP)を使用します。 - -有効にすると、**{% include product %}** パネルを Photoshop CC で使用できるようになります。現在の {% include product %} コンテキストの情報とそのコンテキストにインストールされたアプリに登録されているコマンドが表示されます。 - -![拡張機能](../images/engines/photoshopcc-photoshopcc_extension.png) - -## インタフェースの概要 - -{% include product %} 拡張パネルは、Photoshop CC のネイティブ パネルと同じカラー パレットと基本レイアウトを使用します。次の 5 つのコンポーネントで構成されます。 - -![拡張コンポーネント](../images/engines/photoshopcc-extension_components.png) - -1. **コンテキスト ヘッダ**: 現在のコンテキストのサムネイルとフィールドです。 -2. **お気に入りシェルフ**: 現在のコンテキストで最もよく使用するアプリを表示するように設計されています。 -3. **コマンド リスト**: 現在のコンテキストのお気に入りではないすべてのコマンドです。 -4. **コンテキスト メニュー**: 追加のコンテキスト関連コマンドとデバッグ ツールです。 -5. **ロギング コンソール**: デバッグのログ出力を表示するコンソール オーバーレイです。 - -## インストール - -{% include product %} Engine for Photoshop CC のインストールには、{% include product %} と他の製品を統合する場合と同じプロトコルを使用します。エンジンやアプリのインストールについては、「[Toolkit を管理する](https://developer.shotgridsoftware.com/ja/425b1da4/)」という記事を参照してください。また、統合の設定方法については、「[Toolkit の既定の設定](https://github.com/shotgunsoftware/tk-config-default2)」の例を参照してください。 - -## 拡張を有効にする - -拡張をインストールしたら、Photoshop CC の拡張メニューから起動する必要があります。 - -![拡張メニュー](../images/engines/photoshopcc-extensions_menu.png) - -これは、1 回のみ実行する必要があります。それ以降は起動すると、有効にしなくても、{% include product %} 拡張パネルが Photoshop CC のレイアウトに表示されるようになります。 - -一度有効にすると、それ以降の起動では、{% include product %} 統合のブートストラップ時に、拡張パネルにロード画面が表示されます。 - -通常、この画面は、現在のコンテキストが決定され、コマンドが表示されるまでの数秒間表示されます。 - -## インタフェースのコンポーネント - -以降のセクションでは、{% include product %} と Photoshop CC を統合した場合のコンポーネントについて説明します。 - -### コンテキスト ヘッダ - -コンテキスト ヘッダは、現在の {% include product %} コンテキストに関する情報を表示するカスタマイズ可能な領域です。 - -![拡張ヘッダ](../images/engines/photoshopcc-extension_header.png) - -コンテキストは現在アクティブなドキュメントによって決定されます。コンテキストがエンジンによって決定されると、ヘッダはコンテキストのサムネイル フィールドの詳細を表示するように更新されます。フィールド情報はフックで制御されます。フィールド表示のカスタマイズ方法については、「**コンテキスト フィールド表示フック**」を参照してください。 - -また、Photoshop CC はマルチドキュメント インタフェースであるため、アクティブなドキュメントを変更するとコンテキストが更新され、それに従って {% include product %} 拡張機能も更新されます。アーティストは、複数の {% include product %} コンテキストで同時に作業する場合は特に、この動作を把握していることが重要です。 - -### お気に入りシェルフ - -お気に入りシェルフは、Maya や Houdini のような他の {% include product %} DCC 統合で利用できるお気に入りメニューと似ています。インタフェースのこのセクションはコンテキスト ヘッダのすぐ下にあるので、よく使用する Toolkit アプリが使いやすく、簡単に見つけられるようになります。 - -![拡張シェルフ](../images/engines/photoshopcc-extension_shelf.png) - -シェルフにはお気に入りのコマンドがボタンで表示されます。マウスを上に重ねると、灰色から色付きに変化し、上部のラベルにその名前が表示されます。マウスを上に重ねると、ボタンの説明が表示されます。 - -いずれかのボタンをクリックすると、実行する登録済みコマンドのコールバックがトリガされます。 - -コマンドをお気に入りとして指定する方法については、下記の「**shelf_favorites**」セクションを参照してください。 - -### コマンド リスト - -コマンド リストには、現在のコンテキストに登録されているその他の「標準」コマンドが表示されます。 - -![拡張コマンド](../images/engines/photoshopcc-extension_commands.png) - -通常、パイプライン設定内にインストールされたアプリはここに表示される 1 つまたは複数のコマンドを登録します。コマンドがお気に入りとして識別されず、コンテキスト メニュー コマンドとしても識別されていない場合は、ここに表示されます。 - -コマンド リスト ボタンは、お気に入りシェルフ内のボタンと同じように動作します。唯一異なる点は、アイコンの右側に完全な名前のリストとして表示されることです。 - -### コンテキスト メニュー - -コンテキスト メニュー コマンドとして登録されているコマンドは、{% include product %} 拡張パネルのコンテキスト メニューに表示されます。 - -![拡張コンテキスト メニュー](../images/engines/photoshopcc-extension_context_menu.png) - -他のコマンド領域と同様に、このコマンドはコンテキストに応じて変化します。**Jump to {% include product %}** や **Jump to Filesystem** などのコマンドは常にここから使用できます。 - -### ロギング コンソール - -ロギング コンソールは、CEP JavaScript インタプリタと Toolkit の Python プロセスの両方のログ出力をすべて表示します。 - -![拡張機能](../images/engines/photoshopcc-extension_console.png) - -拡張機能に問題があり、サポートが必要な場合、ロギング コンソール出力は、{% include product %} のサポート チームが問題をデバッグする際に非常に役立ちます。 - -## 設定と技術の詳細 - -次のセクションでは、貴社のパイプライン固有のニーズに合わせて統合を設定できるよう、統合の技術的な側面について少し説明します。 - -### PySide - -{% include product %} Engine for Photoshop CC は PySide を使用します。正式な手順については、「[Pyside をインストールする](http://pyside.readthedocs.io/en/latest/installing/index.html)」を参照してください。 - -### CEP 拡張機能 - -拡張機能自体はエンジンにバンドルされており、エンジンが Photoshop CC の初回起動時に自動的にインストールします。拡張機能は、アーティストが使用するローカル マシンにある OS 固有の標準的な CEP 拡張ディレクトリにインストールされます。 - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -Photoshop CC を起動すると、エンジン ブートストラップ コードは、エンジンにバンドルされている拡張機能のバージョンとマシン上にインストールされているバージョンを比較します。つまり、新しいバージョンの拡張機能がバンドルされている場合は、エンジンを更新するとインストールされている拡張機能がバンドルされている新しいバージョンに自動的にアップデートされます。 - -### お気に入りを設定する - -**お気に入りシェルフ**は、インストールしたアプリに登録されているコマンドを表示するように設定できます。表示するには、`shelf_favorites` 設定を環境設定の `tk-photoshopcc` セクションに追加するだけです。次に例を示します。 - -```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...} -``` - -設定の値は、環境設定にインストールされたアプリの 1 つで提供される、登録済みコマンドを識別するディクショナリのリストです。`app_instance` キーは特定のインストール済みアプリを識別し、`name` キーはこのアプリによって登録されたコマンドの表示名に一致します。上記の例では、4 つのお気に入りコマンドが表示されています。`tk-multi-workfiles2` アプリのファイルの表示と保存のダイアログと、標準の Toolkit のパブリッシュとスナップショットのダイアログです。これら 4 つのコマンドはお気に入りシェルフに表示されます。 - -### コンテキスト フィールド表示フック - -エンジンには、パネルの**コンテキスト ヘッダ** セクションに表示されるフィールドを制御するフックがあります。フックには表示する内容をカスタマイズするためにオーバーライドできる 2 つのメソッドがあります。 - -最初のメソッドは `get_entity_fields()` メソッドです。このメソッドは、現在の {% include product %} コンテキストを表すエンティティ タイプを受け入れます。予想される戻り値は、表示するためにクエリーの必要があるエンティティのフィールドのリストです。エンジン自体はデータのクエリーを非同期に処理します。 - -{% include product %} からデータをクエリーすると、フックの 2 番目のメソッドが呼び出されます。この `get_context_html()` メソッドは、`get_entity_fields()` メソッドで指定されたクエリー フィールドが入力されたコンテキスト エンティティ ディクショナリを受け取ります。予想される戻り値は、クエリー対象のエンティティ フィールドを表示するためにフォーマット化された HTML を含む文字列です。 - -このメソッドで指定する必要がある内容については、「[既定のフックの実装](https://github.com/shotgunsoftware/tk-photoshopcc/blob/master/hooks/context_fields_display.py)」を参照してください。 - -エンジンは、エンティティのサムネイルが使用可能であれば、それを常に表示します。 - -### Photoshop API - -エンジンは Photoshop CC の JavaScript API を Python に公開します。この API の完全なマニュアルについては、[こちら](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2015.pdf)を参照してください。 - -Photoshop API オブジェクトは `engine.adobe` として公開されます。次の例では、Toolkit のアプリやフック内から Photoshop DOM を直接操作する方法を示します。標準的な Toolkit アプリには、Photoshop マニュアルの操作方法に関する作業例が含まれています。 - -#### 例 -ファイルをロードする。 - -```python -f = adobe.File('/Path/To/File.jpeg') -adobe.app.load(f) -``` - -ルーラの単位をピクセルに設定する。 - -```python -pixels = adobe.Units.PIXELS -adobe.app.preferences.rulerUnits = pixels -``` - -既定のオプションを使用して Web の現在のドキュメントを書き出す。 - -```python -temp_thumb_file = adobe.File(out_path) -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() -adobe.app.activeDocument.exportDocument(temp_thumb_file, save_for_web, export_options) -``` - -各レイヤを個別のファイルとして書き出す。 - -```python -doc = adobe.app.activeDocument -layers = doc.artLayers -layers = [layers[i] for i in xrange(layers.length)] -original_visibility = [layer.visible for layer in layers] - -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() - -for layer in layers: - layer.visible = False - -for layer in layers: - layer.visible = True - out_file = adobe.File("c:/layer.%s.jpg" % str(layer.name)) - doc.exportDocument( - out_file, - save_for_web, - export_options, - ) - layer.visible = False - -for (i, layer) in enumerate(layers): - layer.visible = original_visibility[i] -``` - -### 環境変数 - -デバッグをサポートするために、エンジンの既定値の一部を変更する環境変数のセットが用意されています。 - -`SHOTGUN_ADOBE_HEARTBEAT_INTERVAL`: Python ハートビート間隔(秒単位、既定は 1 秒)。従来の環境変数 `SGTK_PHOTOSHOP_HEARTBEAT_INTERVAL` が設定されている場合は優先されます。 - -`SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE`: 終了までのハートビートのエラー数(既定は 2)。従来の環境変数 `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE` が設定されている場合は優先されます。 - -`SHOTGUN_ADOBE_NETWORK_DEBUG`: ログ出力時に追加のネットワーク デバッグ メッセージを含めます。従来の環境変数 `SGTK_PHOTOSHOP_NETWORK_DEBUG` が設定されている場合は優先されます。 - -`SHOTGUN_ADOBE_PYTHON`: エンジンの起動時に使用する Python の実行可能ファイルへのパス。設定しない場合は、システムの Python が使用されます。Photoshop が {% include product %} Desktop や tk-shell エンジンなどの Python プロセスから起動される場合、このプロセスで使用する Python は Photoshop との統合で使用されます。 - -注: 追加の環境変数が Adobe のフレームワークに存在します。詳細については、[開発者用ドキュメント](https://developer.shotgridsoftware.com/tk-framework-adobe/)を参照してください。 - -### アプリ開発者メモ - -* 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-shell.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shell.md deleted file mode 100644 index 31995510e..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shell.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: シェル -pagename: tk-shell -lang: ja ---- - -# シェル - -シェル用の {% include product %} Engine はコマンド ライン操作を処理し、Core API の 1 つとして配布される `tank` コマンドと緊密に統合されます。ターミナルで `tank` コマンドを実行すると、Toolkit はアプリの実行を処理するエンジンを起動します。 - -tank コマンドの詳細については、「[高度な Toolkit 管理](https://developer.shotgridsoftware.com/ja/425b1da4/?title=Advanced+Toolkit+Administration#using-the-tank-command)」のドキュメントを参照してください。 - -![エンジン](../images/engines/sg_shell_1.png) - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - - -``` -> tank Project XYZ install_engine asset tk-shell -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または、`tank` コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-shell からアクセスできます。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md deleted file mode 100644 index 0d6a1dce6..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: ShotGrid -pagename: tk-shotgun -lang: ja ---- - -# {% include product %} - -![エンジン](../images/engines/sg_shotgrid_engine_1.png) - -{% include product %} Engine は {% include product %} 内から起動できるアプリを管理します。この Toolkit アプリを *アクション* として参照することもあります。通常、このアプリは {% include product %} 内のメニュー項目として表示されます。 - -## {% include product %} Pipeline Toolkit アクションを使用する - -アクションは {% include product %} のホーム ページに表示されます。 - -![アクション 1](../images/engines/shotgun-action1.png) - -また、{% include product %} の標準的なコンテキスト メニューにも表示されます。オブジェクトや選択項目を右クリックすると表示できます。 - -![アクション 1](../images/engines/shotgun-action2.png) - -アクションをクリックすると、処理がすぐに開始されます。アプリの処理が完了すると、通常はいくつかのステータス情報を含むメッセージが表示されます。動作しなかった場合にはエラー メッセージが表示されます。 - -## {% include product %} 用のアプリを開発する - -{% include product %} 内で実行するアプリの開発は簡単です。通常のアプリ開発の仕組みが分からない場合は、プラットフォームのマニュアルを見つけて、概要部分を確認してください。このセクションでは、{% include product %} 固有のアプリ開発プロセスの側面について説明します。 - -Core v0.13 以降では、{% include product %} Engine ですべてのマルチ アプリを使用できます。技術的には、{% include product %} Engine と他のエンジンの違いはほとんどありません。ただし、微妙な違いがあります。 - -* {% include product %} Engine で QT ベースのアプリを実行する場合は、標準的な Python 環境に PySide や PyQt を手動でインストールする必要があります。 -* {% include product %} Engine では、ユーザが属する権限グループに応じてアクションを表示することができます。これは、{% include product %} アクション メニューにコマンドを追加して、このコマンドを管理者にのみ表示する場合などに便利です。 - -{% include product %} アプリで、管理者にのみ「Hello, World!」と表示する場合は、次のように記述します。 - -```python -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!") -``` - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-shotgun -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または Studio の tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-shotgun からアクセスできます。 - -## 特殊な要件 - -上記の操作を行うには、{% include product %} Pipeline Toolkit Core API バージョン v0.19.5 以降が必要です。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-softimage.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-softimage.md deleted file mode 100644 index d61bc2bee..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-softimage.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Softimage -pagename: tk-softimage -lang: ja ---- - -# Softimage - -> **警告:** Softimage エンジンは 2021 年 2 月 13 日をもってサポート終了になりました。詳細については、[こちら](https://community.shotgridsoftware.com/t/end-of-life-for-softimage-support-on-february-13th-2021/10694)を参照してください。 - -![](../images/engines/sg_softimage_1.png) - -{% include product %} Engine for Softimage は {% include product %} Pipeline Toolkit アプリと Softimage の橋渡しを行います。PySide/Qt ディストリビューションが含まれているため、エンジン内で動作する Python と PySide を使用してアプリを作成できます。ここでは高度な設定のセットアップ例を示します。 - -{% include product %} Engine for Softimage には、{% include product %} アプリと Softimage を統合するための標準プラットフォームが含まれています。このエンジンは、自動ファイル管理、適切に定義された作業エリアとパブリッシュ用ワークフロー、スナップショットなどを提供する通常のアプリ スイートをサポートします。 - -エンジンをロードすると、Softimage のメイン メニューバーに {% include product %} メニューが表示されます。 - -![](../images/engines/softimage_menu.png) - -## サポート対象のアプリケーション バージョン - -この項目はテスト済みです。アプリケーション バージョン 2012 と 2013 で動作することが分かっています。 最新のリリースでの動作は十分可能ですが、正式なテストはまだ完了していません。 - -使用可能な Toolkit のコマンドはここに表示されます。 - -{% include product %} Engine for Softimage はベータ版であり、いくつかの既知の問題があることに注意してください。完全なリストについては、以下を参照してください。 - -## アプリ開発者向けの情報 - -### サポート対象プラットフォーム - -{% include product %} Engine for Softimage は、現在 Windows の Softimage 2012 と 2013 および Linux の Softimage 2013 をサポートしています。 - -Softimage 2014 は Linux ではサポートされていません。Windows 上で実行することはできますが、安定性の問題があるため、使用はお勧めしません。 - -### PySide - -#### Windows - -Windows では、Softimage は組み込みの Python ディストリビューションまたは外部のディストリビューションのいずれかを使用するように設定できます。詳細については、http://download.autodesk.com/global/docs/softimage2013/ja_jp/userguide/index.html?url=files/userprefs528.htm,topicNumber=d30e797817 を参照してください。 - -このエンジンは、インストールされたバージョンの Python for Softimage (バージョン 2012 (Python 2.6 x64)、2013 (Python 2.6 x64)、および 2014 (Python 2.7 x64))向けのバージョンの PySide と Qt にバンドルされています。ただし、外部の Python ディストリビューションを使用している場合は、バイナリ互換性のある PySide と Qt も用意する必要があります。 - -Windows PySide ディストリビューションに最適なリソースについては、http://www.lfd.uci.edu/~gohlke/pythonlibs/ を参照してください。 - -#### Linux - -Linux で、Softimage は組み込みバージョンの Python を使用する必要があります。Softimage 2013 の場合、構築済みの PySide と Qt のディストリビューションが必要です。[tk-framework-softimageqt](https://github.com/shotgunsoftware/tk-framework-softimageqt) から入手できます。このディストリビューションは Python 2.5.2 向けの GCC 4.1.2 を使用して構築されています。これは Softimage 2013 で使用されているのと同じバージョンです。 - -Linux にはたくさんの異なるディストリビューションがあり、すべての環境で動作するとは限らないため、動作するように自分で再構築することが必要な場合があります。対象バージョンの構築方法に関する詳細については、次のフレームワークに含まれる Readme を参照してください。 - -https://github.com/shotgunsoftware/tk-framework-softimageqt/tree/master/resources/pyside121_py25_qt485_linux - -### 既知の問題(Windows) - -#### Softimage 2014 の不安定性 - -このエンジンは Windows 上の Softimage 2014 で実行できますが、既知の問題があり、すべてのテストは完了していません。Publish ダイアログを開くと、Softimage がクラッシュします。 - -#### Softimage 2014 の SSL バグ - -Softimage 2014 に付属する `_ssl.pyd` ファイルには、起動時の処理能力を低下する可能性のある既知のバグがあります。この問題を解決するには、このファイルのバックアップを作成し、Maya 2014 に付属する `_ssl.pyd` ファイルでこのファイルを上書きすることをお勧めします。この問題のサポートやアドバイスが必要な場合は、Toolkit のサポートまでお気軽にお問い合わせください。 - -#### ウィンドウのペアレント化 - -親を設定せず、エンジンの `show_modal` メソッドまたは `show_dialog` メソッドを使用せずに作成した Qt ウィンドウは、Softimage のメイン アプリケーションに正しくペアレント化されません。 - -### 既知の問題(Linux) - -#### ssl と sqlite3 ライブラリの欠落 - -特定のバージョンの PySide が必要となる(詳細は上記参照)以外にも、Softimage には {% include product %} Python API と Toolkit で必要となる ssl と sqlite3 ライブラリも欠落しています。 - -このライブラリは `tk-multi-launchapp` アプリの一部として含まれており、Softimage の起動前に LD_LIBRARY_PATH & PYTHONPATH にも追加されます。また、このライブラリに問題がある場合、システムに合わせてライブラリを構築する方法に関する詳細な説明を確認するには、アプリに付属する次の README を参照してください。 - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -#### libX11 のセグメント化の失敗。 - -Linux 上の Softimage には、特定の Linux ディストリビューション上の速度の問題に対応するためにオプションのハックが含まれています。詳しくは次の URL を参照してください。 - -http://xsisupport.com/2011/01/19/the-case-of-the-slow-2011-startup-on-fedora-14/ - -この方法を使用すると、次の URL にある異なるバージョンの libX11 ライブラリを使用するよう Softimage に通知されます。 - -/usr/Softimage/Softimage_2013/Application/mainwin/mw/lib-amd64_linux_optimized/X11 - -このハックを使用している場合、Qt で libX11 ライブラリを呼び出す場合(呼び出しスタックの SIGSEGV)、高い確率でセグメント化の失敗が発生するため、頻繁にクラッシュします。これは、ハック バージョンの libX11 ライブラリが非常に古く、Qt が構築されたときのバージョンと互換性がないためです。 - -この問題を解決するには、Softimage ハック バージョンと互換性のある libX11 バージョンで新しいバージョンの Qt を構築する必要があります。 - -#### libssl のセグメント化の失敗 - -正しいバージョンの GCC (4.1.2) ではなく、最新バージョンの openssl を使用している場合、{% include product %} API を使用するとセグメント化の失敗(SIGSEGV)が発生する可能性があります。 - -これは Qt/PySide に固有ではありませんが、2 番目に一般的な問題であるためここに明記しておく必要があります。 - -次の URL もご覧ください。 - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -Softimage 2013 で互換性のあるバージョンの openssl を構築する方法を参照できます。 - -#### ウィンドウのペアレント化 - -現在、Toolkit のウィンドウは、Linux 上の Softimage メイン アプリケーション ウィンドウとペアレント化されていません。回避策としてウィンドウが一番上に作成されますが、これにより他のウィンドウ(特に確認ダイアログ)がこのウィンドウの後ろに隠れてしまう可能性があります。 - -Softimage が停止したように見える場合は、開いた Toolkit ウィンドウを動かして、この後ろにダイアログが隠れていないかを確認してください。 - -#### ウィンドウを移動した後に Softimage/Toolkit がフリーズする - -モードレス ダイアログ({% include product %} File Manager など)を移動すると、Softimage とダイアログの両方の内容がフリーズするか、応答しなくなります。これは Qt メッセージ キューが実装されている場合の問題ですが、残念ながら、解決方法はまだ見つかっていません。 - -簡単な回避方法は、この問題が発生したら、Softimage のメイン ビューポート内をクリックすることです。これですべてが再び正しく動作し始めます。 - -## インストールと更新 - -### {% include product %} Pipeline Toolkit にこのエンジンを追加する - -Project XYZ にこのエンジンを追加するには、asset という名前の環境で次のコマンドを実行します。 - -``` -> tank Project XYZ install_engine asset tk-softimage -``` - -### 最新バージョンに更新する - -この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、`update` コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。 - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -または、`tank` コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。 - -``` -> tank Project XYZ updates -``` - -## コラボレーションと発展 - -{% include product %} Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-softimage からアクセスできます。 - -## 特殊な要件 - -上記の操作を行うには、{% include product %} Pipeline Toolkit Core API バージョン v0.14.56 以降が必要です。 \ No newline at end of file diff --git a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md deleted file mode 100644 index 689cbc9b5..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: VRed -pagename: tk-vred -lang: ja ---- - -# VRED - -{% include product %} Engine for VRED は、{% include product %} アプリと VRED を統合する標準プラットフォームを提供します。軽量で操作性に優れており、VRED のメニューに {% include product %} のメニューを追加します。 - -## アプリ開発者向けの情報 - -### PySide - -{% include product %} Engine for VRED には PySide がインストールされており、必要に応じて有効になります。 - -### VRED プロジェクト管理 - -{% include product %} Engine for VRED が起動すると、このエンジンの設定で定義された場所を VRED プロジェクトが参照するように設定されます。つまり、新しいファイルを開くと、このプロジェクトも変更される場合があります。ファイルに基づく VRED プロジェクトの設定方法に関連する詳細設定は、テンプレート システムを使用して設定ファイルで指定できます。 - -## tk-vred を使用する - -この {% include product %} 統合は、VRED 製品ファミリ(Pro および Design)をサポートします。 - -VRED を開くと、{% include product %} メニュー(VRED エンジン)がメニュー バーに追加されます。 -![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunMenuVRED.png) - - -### ファイルの表示と保存 - -[マイ タスク] (My Tasks)タブと[アセット] (Assets)タブを使用すると、割り当てられたすべてのタスクを表示して、アセットを参照できます。右側では、これらのタブを使用してすべてのファイル、作業ファイル、またはパブリッシュ ファイルを表示します。これらのファイルは、左側で選択されているものに関連付けられています。 -![](https://help.autodesk.com/cloudhelp/2020/JPN/VRED-Shotgun/images/ShotgunFileOpenVRED.png) - -![](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](を参照してください。) - - -### ローダー -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.md b/docs/ja/reference/pipeline-integrations/toolkit-frameworks.md deleted file mode 100644 index 33f0ae29f..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: フレームワーク -pagename: toolkit-frameworks -lang: ja ---- - -# Toolkit のフレームワーク - -ここでは、Toolkit プラットフォームで使用可能なフレームワークのリファレンス ドキュメントを紹介します。 diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg deleted file mode 100644 index acc6917fb..000000000 Binary files a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png deleted file mode 100644 index bb5714a0c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg deleted file mode 100644 index af7bd19ac..000000000 Binary files a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg deleted file mode 100644 index 50b7fcf2c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md b/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md deleted file mode 100644 index 0f76bfcf6..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 管理 UI -pagename: tk-framework-adminui -lang: ja ---- - -# Toolkit 管理 UI フレームワーク - -管理 UI フレームワークは、Toolkit 管理コマンドをラップする標準ユーザ インタフェースを保持する場所を実装します。 - -現在、唯一のインタフェースは setup_project コマンドに対するものです。 - -## SetupProjectWizard API リファレンス - -![](images/setup_project_wizard.png) - -このフレームワークには QWizard が実装されており、Toolkit の {% include product %} インスタンスからプロジェクトを設定できます。ウィザードを使用するには、クラスのインスタンスを作成し、設定するプロジェクトを標準の {% include product %} API エンティティ ディクショナリとして渡し、親にするウィンドウを渡すだけです。 - -```python -adminui = sgtk.platform.import_framework("tk-framework-adminui", "setup_project") -setup = adminui.SetupProjectWizard(project, parent) -dialog_result = setup.exec_() -``` - -これによりウィザードが実行され、標準の QDialog Accepted または Rejected 値が返されます。 - -### SetupProjectWizard コンストラクタ - -SetupProjectWizard を初期化します。これは、QtGui.QWizard のサブクラスです。 - -```python -SetupProjectWizard() -``` 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 deleted file mode 100644 index 35e439a62..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: default -title: デスクトップ サーバ フレームワーク -pagename: tk-framework-desktopserver -lang: ja ---- - -# Toolkit デスクトップ サーバ フレームワーク - -デスクトップ サーバ フレームワークは、{% include product %} のローカル ファイル リンクと Toolkit による統合で使用します。デスクトップ アクセスを必要とするアクションに、{% include product %} Web サイトからの要求を安全にリッスンするローカル Websocket サーバを提供します。 - -ローカル ファイル リンクの場合、この要求により、{% include product %} は Web インタフェースからローカル ファイル パスにアクセスし、要求時に {% include product %} ページからこのファイルを直接開くことができます。Toolkit の場合、この要求により、{% include product %} は任意のエンティティに登録されたパイプライン アクションを特定し、そのアクションを実行できます。 - -## デスクトップ統合を実行する方法 - -この {% include product %} 機能を使用するには、サポートされたデスクトップ統合が実行されている必要があります。 -{% include product %} とデスクトップを統合する場合のさまざまなオプションについては[こちらのページ](https://developer.shotgridsoftware.com/ja/c79f1656/)を参照してください。Websocket サーバのセクションでは、このフレームワークが提供する機能について説明します。 - -### {% include product %} Desktop - -このフレームワークは {% include product %} Desktop にバンドルされています。Desktop は、[こちらに記されている手順](https://developer.shotgridsoftware.com/ja/d587be80/#installation-of-desktop)に従ってダウンロードできます。{% include product %} Desktop を実行すると、Websocket サーバが自動的に起動されます。{% include product %} Desktop を既に実行している場合、セットアップ プロセスは完了しています。 - -### サーバを設定する - -設定ファイルにブラウザ統合設定を保存できます。この環境設定ファイルを設定するには、環境変数 `SGTK_BROWSER_INTEGRATION_CONFIG_LOCATION` を設定します。ローカル サーバの設定方法については、[サンプル ファイル](https://github.com/shotgunsoftware/tk-framework-desktopserver/blob/master/app/config.ini.example)を参照してください。 - -### 証明書を削除する - -作成した証明書を削除する場合は、`python certificates.py --remove` コマンドを実行することができます。 - -## ラッパーを使用して起動する - -既定では、サーバはオペレーティング システムの既定値を使用してコマンド(Linux では「xdg-open」、OS X では「open」、Windows では「run」に相当)を起動します。ファイルを起動するために独自のラッパーを指定する場合は、カスタム ラッパーを指定するように環境変数 **SHOTGUN_PLUGIN_LAUNCHER** を設定します。設定されている場合は、ラッパーはその唯一の引数としてパスで呼び出されます。 - -## 証明書 - -サーバを初めて実行すると、安全な接続の確立に必要な証明書が生成されます。この証明書はマシンのローカルに保存され、一般的に共有されることはありません。 -証明書により、Websocket で必要な暗号化接続が許可されます。暗号化接続は、すべてのトラフィックがローカル(ブラウザからサーバ)で送受信される場合も必要です。{% include product %} の Websocket トラフィックはインターネット経由で送受信されることはありません。 - -証明書がシステムに登録されると、次のようなダイアログが表示されます。 -「OK」をクリックすると、登録が続行されます。 - -![](images/osx_warning_1.jpg) -![](images/windows_warning_1.jpg) -![](images/windows_warning_2.jpg) - - -{% include product %} Desktop を使用する場合、生成された証明書は次の場所に保存されます。 - -**OS X**: ~/Library/Caches/Shotgun/desktop/config/certificates
-**Windows**: %AppData%\Shotgun\desktop\config\certificates
-**Linux**: ~/.shotgun/desktop/config/certificates
- -## セキュリティ セットアップ: ローカルの {% include product %} にインストール - -既定では、Websocket サーバはポート 9000 でホストされる {% include product %} サイトをリッスンするようにセットアップされます。 -ローカルで {% include product %} サーバを実行する場合、Websocket サーバからの接続を許可するように、{% include product %} サーバの設定を更新する必要があります。 - -{% include product %} Desktop を実行する場合は、{% include product %} のバイナリ ファイルを含む ```config.ini``` ファイルを設定する必要があります。 - -このファイル内に Websocket サーバの機能を制御するセクションがあります。 -一般的な設定は次のようになります。 - -```ini -[BrowserIntegration] -low_level_debug=0 -port=9000 -enabled=1 -whitelist=*.shotgunstudio.com -``` - -## トラブルシューティング - -Linux 上でサーバは libffi に依存しています。Desktop が起動時にクラッシュし、libffi が見つからないというメッセージがログに記録された場合は、このパッケージをインストールする必要があります。 - -セットアップ中の問題や質問がある場合は、[サポート サイト](https://knowledge.autodesk.com/ja/contact-support)にアクセスしてサポートを依頼してください。サーバの実行に関して問題が発生する場合は、**config.ini** ファイルの **debug** を **1** に設定して、Desktop のログ ファイルを追加します。 - -ログ ファイルは次の場所にあります。 - -**OS X**: ~/Library/Logs/Shotgun/tk-desktop.log
**Windows**: ~\%APPDATA%\Shotgun\tk-desktop.log
**Linux**: ~/.shotgun/tk-desktop.log
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 deleted file mode 100644 index 01bbd2a0d..000000000 --- a/docs/ja/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: デスクトップ起動 -pagename: tk-framework-desktopstartup -lang: ja ---- - -# Toolkit デスクトップ起動フレームワーク -デスクトップ起動フレームワークには、{% include product %} Desktop の起動ロジックが実装されています。主な機能は次のとおりです。 - -1. ブラウザの統合の初期化 -2. ユーザのログイン -3. Toolkit のダウンロード -4. サイト構成の設定 -5. 自分自身の自動更新とサイト構成(必要な場合) -6. `tk-desktop` エンジンを起動します。 - -> これは内部の Toolkit フレームワークなので、実装するインタフェースは変更される可能性があります。プロジェクトではこのフレームワークを使用しないことを推奨します。 - -### 起動ロジックのロックダウン - -> これには、バージョン `1.3.4` の {% include product %} Desktop アプリが必要です。アプリケーションのバージョンが不明な場合は、{% include product %} Desktop を起動します。ログインしたら、右下のユーザ アイコンをクリックし、`About...` をクリックします。`App Version` は `1.3.4` 以上でなければなりません。 - -既定では、{% include product %} Desktop はユーザのローカル マシンに `tk-framework-desktopstartup` アップデートをダウンロードし、アプリケーションの起動シーケンス時に使用します。アプリケーションを起動すると、Toolkit は自動的にフレームワークの更新をチェックします。利用可能なアップデートがあれば、自動的にダウンロードしてインストールします。 - -または、ローカル コピーではなくフレームワークの特定のコピーを使用するように {% include product %} Desktop を構成することもできます。これにより自動更新機能が無効になり、ユーザが自分自身が起動ロジックを更新できるようになります。 - -#### GitHub から特定のリリースをダウンロードする - -GitHub から手動でアップデートをダウンロードする必要があります。バンドルは、[リリース](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases) ページから簡単にダウンロードできます。公式リリースの詳細については、[こちら](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)を参照してください。 - -#### 特定のコピーを使用する場合の {% include product %} Desktop の設定 - -起動ロジックをロックダウンする唯一の方法は環境変数を使用することです。`SGTK_DESKTOP_STARTUP_LOCATION` をフレームワークのコピーのルート フォルダに設定すると、{% include product %} Desktop は起動時にこのコードのコピーを使用します。環境変数を設定すると、このコピーの起動ロジックを使用して {% include product %} Desktop を起動できます。 - -> 本マニュアルの執筆時点では、技術的な制限のため、起動ロジックをロックするときに `About...` ボックスの `Startup Version` フィールドは `Undefined` になります。 - -#### 以前の動作に戻す - -変更を元に戻すには、環境変数の設定を解除して {% include product %} Desktop を起動します。 diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png deleted file mode 100644 index c9875154c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png deleted file mode 100644 index 40f58a829..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png deleted file mode 100644 index b98a2f1f8..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png deleted file mode 100644 index 935b98a6d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png deleted file mode 100644 index dd48cd1e4..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png deleted file mode 100644 index d542e0c07..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png deleted file mode 100644 index 186482580..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png deleted file mode 100644 index abdf70929..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png deleted file mode 100644 index ce14a7908..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png deleted file mode 100644 index 6efa8f329..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png deleted file mode 100644 index d79f3723a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png deleted file mode 100644 index e12a27f6c..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png deleted file mode 100644 index 19e25d3f1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png deleted file mode 100644 index 9909da367..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png deleted file mode 100644 index 434182364..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png deleted file mode 100644 index b408ed09d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png deleted file mode 100644 index 8ef07a725..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg deleted file mode 100644 index 181f1a9c2..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png deleted file mode 100644 index cf5823087..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png deleted file mode 100644 index 7d856ab4d..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png deleted file mode 100644 index bed44a1c5..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png deleted file mode 100644 index 6ffbac029..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png deleted file mode 100644 index a7c1823fa..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png deleted file mode 100644 index 69d46ced8..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png deleted file mode 100644 index d3edcb158..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png deleted file mode 100644 index caeafeecb..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png deleted file mode 100644 index 4f94a8fad..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png deleted file mode 100644 index 7e13fe65a..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png deleted file mode 100644 index f834c9726..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png deleted file mode 100644 index 3d86d5053..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png deleted file mode 100644 index e879402b0..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png deleted file mode 100644 index f9f029901..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png deleted file mode 100644 index 6c567981b..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png deleted file mode 100644 index 2be4458da..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png deleted file mode 100644 index f33ff5185..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png deleted file mode 100644 index 6d0673865..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png deleted file mode 100644 index 072d936b1..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png deleted file mode 100644 index 0df5bfa58..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png deleted file mode 100644 index 69c00bcf4..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png deleted file mode 100644 index c3f3b7548..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png deleted file mode 100644 index 37c5693eb..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png deleted file mode 100644 index 604483819..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png deleted file mode 100644 index c0ce62216..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png deleted file mode 100644 index a0b1389fd..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png b/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png deleted file mode 100644 index 221efcb66..000000000 Binary files a/docs/ja/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png and /dev/null differ diff --git a/docs/ja/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md b/docs/ja/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md deleted file mode 100644 index d7980df09..000000000 --- a/docs/ja/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md +++ /dev/null @@ -1,510 +0,0 @@ ---- -layout: default -title: 統合ユーザ ガイド -pagename: integrations-user-guide -lang: ja ---- - - -# 統合ユーザ ガイド - -本書の内容: -- [はじめに](#introduction) -- [Desktop のスタートアップ](#getting-started-with-desktop) - - [Desktop のインストール](#installation-of-desktop) - - [セルフ ホスト環境またはプロキシ サーバの背後からログインする](#logging-in-when-self-hosted-or-behind-a-proxy-server) - - [認証およびブラウザの統合](#authentication-and-browser-integration) - - [システム トレイ](#the-system-tray) - - [プロジェクト ブラウザ](#the-project-browser) - - [コマンド ランチャー](#the-command-launcher) - - [コンソール](#the-console) -- [アプリケーションを起動する](#launching-applications) -- [Panel](#the-panel) - - [概要](#overview) - - [UI の詳細](#ui-details) - - [アクティビティ ストリーム](#the-activity-stream) - - [ノートの作成およびノートへの返信](#creating-and-replying-to-notes) - - [ノート、バージョン、パブリッシュ、およびタスク](#notes-versions-publishes-and-tasks) - - [情報タブ](#the-info-tab) - - [検索](#searching) - - [アクション](#actions) - - [現在の作業領域とホーム領域](#the-current-work-area-and-the-me-area) - - [現在の作業領域](#current-work-area) -- [Publisher](#the-publisher) - - [概要](#overview-1) - - [インタフェースのコンポーネントおよび概念](#interface-components-and-concepts) - - [基本的なワークフロー](#basic-workflow) - - [コンテンツ作成ソフトウェア内でパブリッシュする](#publishing-within-content-creation-software) - - [項目およびタスクをパブリッシュする](#publish-items-and-tasks) - - [コンテキスト](#context) - - [検証](#validation) - - [複数ドキュメントのワークフロー](#multi-document-workflows) - - [スタンドアロン パブリッシュ](#stand-alone-publishing) - - [パブリッシュ タイプ](#publish-types) - - [スタンドアロン](#standalone) - - [3ds Max](#3ds-max) - - [Houdini](#houdini) - - [Maya](#maya) - - [Nuke](#nuke) - - [Nuke Studio](#nuke-studio) - - [Photoshop CC](#photoshop-cc) -- [Loader](#the-loader) - - [概要](#overview-2) - - [ツリー ビュー](#the-tree-view) - - [ナビゲーション](#navigation) - - [パブリッシュを見る](#looking-at-publishes) - - [1 つまたは複数のパブリッシュをシーンに取り込む](#bringing-one-or-multiple-publishes-into-your-scene) - - [古いパブリッシュを操作する](#working-with-older-publishes) - - [関連付けられたレビュー](#associated-review) -- [高度な機能](#advanced-functionality) -- [謝辞](#acknowledgments) - -## はじめに - -{% include product %} の統合により、コンテンツ作成ツールに {% include product %} を組み込むことができます。{% include product %} を統合して使用することにより、ソフトウェアを素早く起動する、パネルを使って {% include product %} に保管されたタスク関連のノートやデータをトラックする、パブリッシャーやローダーを使用してファイルをトラックし、シーンに取り込む、などの操作を行えるようになります。アーティストはタスクに関するすべての {% include product %} データおよびプロジェクトに関するすべてのタスクに、アプリ内からアクセスすることができます。また、ノートへの返信、バージョンの再生、ファイルのパブリッシュ、同僚のパブリッシュ ファイルのロードを行うことができます。 - -{% include product %} の統合に対する最新の更新については、[リリース ノート](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)を参照してください。 - -## Desktop のスタートアップ - -この統合の中心となるのが、**{% include product %} Desktop** アプリです。このソフトウェア アプリケーションによって {% include product %} がローカル マシンでも使用できるように拡張され、{% include product %} データにアクセスしたり、アプリケーションを起動したり、自分のマシンからパイプライン統合ツールを直接実行したりといった操作を簡単に行うことができます。 - -**従来型ツールキットまたはカスタム設定を実行する** - -{% include product %} - の統合は自動的にインストールされます。 システムに精通しているクライアントが**従来型**のツールキット構成をインストールする必要がある場合、または **Desktop Setup Wizard** を使用して**カスタム** ツールキット設定をインストールする必要がある場合は、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』でその方法を確認してください。 - -### Desktop のインストール - -{% include product %} Desktop は[アプリ] (Apps)メニューからダウンロードできます。 - -![shotgun-desktop-app-01.png](./images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png) - -プロンプトに従って、Desktop for Mac、Desktop for Windows、または Desktop for Linux のいずれをダウンロードするのかを選択します。 - -![download-desktop-02.png](./images/sa-integrations-user-guide-download-desktop-02-v2.png) - -### セルフ ホスト環境またはプロキシ サーバの背後からログインする - -*注: ここに記載されているログインに関する内容は、セルフ ホスト環境の場合またはプロキシ サーバを使用している場合を想定しています。これは既定の動作ではありません。* - -セルフ ホスト環境の場合またはプロキシ サーバを使用している場合に、Desktop を初めて開くと、証明書に関するプロンプトがブラウザに表示されます。このプロンプトが表示されるのは、{% include product %} と Desktop アプリを接続するためです。証明書の設定を取得できない場合は、[Firefox](https://developer.shotgunsoftware.com/ja/d4936105/) および [Chrome とその他のブラウザ](https://developer.shotgunsoftware.com/ja/95518180/)のトラブルシューティングに関するドキュメントを参照してください。 - -![guide-desktop-cert-window-03.png](./images/sa-integrations-user-guide-desktop-cert-window-03.png) - -セキュリティ証明書のリストは 1 回のみ更新する必要があります。Mac および Windows では証明書を求めるプロンプトが表示されますが、Linux では表示されません。 - -証明書が設定されたら、{% include product %} のサイトにログインする必要があります。 - -プロキシを経由する場合は、追加設定をいくつか行う必要があります。実行手順については、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/#toolkit-configuration-file)』を参照してください。 - -#### 認証およびブラウザの統合 - -Desktop には、{% include product %} Web アプリケーションとコンピュータの連携を実現するためのサービスが用意されています。このサービスを使用すると、[ローカル ファイル リンク](https://help.autodesk.com/view/SGSUB/JPN/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)やソフトウェアの起動などの機能を実行できるようになります。セキュリティ上の理由から、ブラウザを使ってログインしたときと同じ {% include product %} サイトに、同じユーザ名で Desktop にログインする必要があります。異なるユーザとしてログインするか、または異なるサイトにログインすると、アカウントを切り替えるように促すプロンプトが表示されます。アカウントを切り替えると、Desktop が再起動して、適切な資格情報を求めるプロンプトが表示されます。 - -### システム トレイ - -アプリケーションが起動すると、システム トレイにアイコンとして表示されます。アプリのウィンドウを表示するには、このアイコンをクリックします。既定では、ウィンドウはシステム トレイに固定されるため、フォーカスを失ったウィンドウは自動的に非表示になります。 - -ウィンドウを固定解除するには、ユーザ メニューで「Undock from Menu」を選択するか、ヘッダーをドラッグします。固定解除したウィンドウは通常のウィンドウのようになり、フォーカスを失っても非表示になることはなくなります。 - -ウィンドウがドッキング解除されている場合は、[閉じる]ボタンをクリックして非表示にすることができます。再表示するには、システム トレイ アイコンをクリックします。 - -### プロジェクト ブラウザ - -アプリの最初のメイン ビューはプロジェクト ブラウザです。ここに、{% include product %} インスタンス内のすべてのプロジェクトが表示されます。最近アクセスしたプロジェクトが最初に表示されます。 - -ウィンドウの右下付近に {% include product %} アカウントのサムネイルが表示されます。このユーザ メニューからウィンドウのドッキングやドッキング解除を行ったり、他のウィンドウの上に常に表示したり、ログ コンソールを表示したりできます。 - -![user-menu-04.png](./images/sa-integrations-user-guide-user-menu-04.png) - -ウィンドウの上部にある虫めがねアイコンをクリックして、検索ボックスを表示することができます。このボックスに入力すると、プロジェクトのリストがフィルタされて、入力している文字を含むプロジェクトのみが表示されます。 - -![search-05.png](./images/sa-integrations-user-guide-search-05.png) - -プロジェクトをクリックすると、このプロジェクトのコマンド ランチャー ビューが表示され、プロジェクトで使用可能なツールを起動できるようになります。 - -### コマンド ランチャー - -プロジェクトを選択すると、そのプロジェクトのコマンド ランチャーが表示されます。このウィンドウには、プロジェクトで使用可能なツールおよびアプリケーションが、ボタンとしてグリッド状に表示されます。ボタンをクリックするだけで、対応するアプリケーションを起動できます。コマンド ランチャーは、プロジェクト固有の環境で実行されます。{% include product %} がコマンド ランチャーと統合されている場合は、使用可能なすべてのツールが {% include product %} のメニューに表示されます。 - -### コンソール - -ユーザ メニューからコンソールを起動できます。コンソールには、プロジェクトを起動してからのログが表示されます。エラーが発生した場合は、ここにエラーの詳細が表示されます。 - -コンソールを右クリックすると、標準の編集メニューが表示され、テキスト全体の選択、選択内容のコピー、またはコンソール内のテキストのクリアを行うことができます。 - -![console-06.png](./images/sa-integrations-user-guide-console-06.png) - -## アプリケーションを起動する - -{% include product %} Desktop を起動してプロジェクトを選択すると、標準のアプリケーション フォルダ内でオペレーティング システムがスキャンされます。Desktop に、[統合対象のすべてのアプリケーション](https://www.shotgridsoftware.com/integrations/)のランチャーが表示されます。同じソフトウェアのバージョンが複数ある場合は、使用可能なすべてのバージョンを含むドロップダウン リストがランチャーに表示されます。ランチャー アイコン自体をクリックすると、最新バージョンが起動します。 - -Maya や Nuke などのアプリケーションは {% include product %} Desktop からすぐに起動するか、{% include product %} から直接起動することができます。いずれの方法でも、アプリケーション内から {% include product %} の統合を使用することができます。 - -![launching-software-07.jpg](./images/sa-integrations-user-guide-launching-software-07.jpg) - -制作スタジオでは通常、出荷設定のままで使用することはなく、さまざまな追加設定が必要になります。スタジオによっては、標準以外の場所にソフトウェアが配置されていたり、ネイティブにサポートされていないソフトウェア用の社内エンジンが使用されていたりすることがあります。このような場合は、{% include product %} の Web アプリから簡単に設定できます。詳細については、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。 - -表示される予定のアプリが表示されない場合は、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』の {% include product %} Desktop のソフトウェアの設定に関するセクションを参照してください。 - -## Panel - -### 概要 - -Desktop または {% include product %} からアプリケーションを起動すると、{% include product %} Panel が表示されます。{% include product %} Panel は、Maya や Nuke などのアーティスト用アプリケーション内で直接実行される、小型かつ軽量バージョンの {% include product %} です。このパネルを使用すると、作業中のアプリケーションを終了することなく、{% include product %} の情報にすばやくアクセスできます。また、現在のタスクに関する情報に簡単にアクセスしたり、{% include product %} からアクティビティ ストリーム、ノート、タスク、バージョン、およびパブリッシュに瞬時にアクセスしたりできます。さらに、チーム内の他のメンバーから確認のために送信されたバージョンを再生したり、ノートへの返信、新しいタスクの作成、{% include product %} サイトの検索を行ったりできます。 - -### UI の詳細 - -{% include product %} Panel はいくつかの主要な UI 要素で構成されています。上部には、ナビゲーションや検索用のボタンを含む _「ツールバー」_ があります。ツールバーの右下にある _「詳細エリア」_ には、現在表示している項目の情報が表示されます。この詳細領域は設定可能であるため、カスタム フィールドを表示したい場合や、パイプラインに極めて重要なデータがある場合は、ここに簡単に表示することができます。最後に、複数の _「コンテンツ タブ」_ があります。 これらの要素に {% include product %} のリストがすべて表示されるため、{% include product %} Panel 内でのナビゲーションが容易になり、パブリッシュなどの項目の参照、バージョンの確認、または現在のフォーカスにリンクされているタスクに割り当てられているユーザの確認をすばやく行うことができます。 - -![overview-08.png](./images/sa-integrations-user-guide-overview-08.png) - -統合でドッキングがサポートされているアプリケーションでは、{% include product %} Panel が UI 内にシームレスにドッキングされた状態で表示されます。その他のアプリケーションでは、パネルは通常のウィンドウとして表示されます。 - -![maya-09.png](./images/sa-integrations-user-guide-maya-09.png) - -次に、{% include product %} Panel で使用できるさまざまなタブおよび機能の概要を示します。 - -#### アクティビティ ストリーム - -![activity-stream-010.png](./images/sa-integrations-user-guide-activity-stream-010.png) - -アクティビティ ストリームは、{% include product %} 内のアクティビティ ストリームと同様に機能して、次のような参照先のオブジェクトの中、または周囲で発生した動作を表示します。 - -* ノートを作成しているユーザ -* レビューのために送信されているバージョン -* パイプラインで作成されたパブリッシュ - -アクティビティ ストリームから新しいノートを直接追加することも、既存のノートに返信することもできます。添付ファイルは自動的に表示され、添付ファイルをクリックすると、大きなプレビューが表示されます。 - -ファイルをアップロードした後に、プレースホルダ アイコンが表示される可能性があることに注意してください。最後のサムネイルを表示するパネルが使用可能になったら、手動で更新します。 - -![thumbnail-placeholder-11.png](./images/sa-integrations-user-guide-thumbnail-placeholder-11.png) - -#### ノートの作成およびノートへの返信 - -![notes-12.png](./images/sa-integrations-user-guide-notes-12.png) - -ノートの作成やノートへの返信は、{% include product %} Panel から簡単に行うことができます。アクティビティ ストリームまたはノートの詳細ページに移動して、_create note_ や _reply to note_ をクリックするだけです。 ノートのテキストを入力するためのダイアログ ボックスが表示されます。ノートを特定のユーザに送信する場合は、`@name` の表記を使用できます。こうすると、ノートの TO フィールドにこのユーザが自動的に追加されます。 - -#### ノート、バージョン、パブリッシュ、およびタスク - -![tasks-and-versions-13.png](./images/sa-integrations-user-guide-tasks-and-versions-13.png) - -ノート、バージョン、パブリッシュ、およびタスクのタブはすべて同じように機能し、現在表示されている項目に関連付けられたデータが表示されます。項目をダブルクリックすると、この項目にフォーカスを設定できます。_「パブリッシュ」_ に移動すると、このパブリッシュの依存関係を表示できます。この操作は、パイプラインで依存関係情報をトラッキングする場合に役立ち、アセットの相互接続方法に関する情報にすぐにアクセスできるようになります。 - -#### 情報タブ - -![info-14.png](./images/sa-integrations-user-guide-info-14.png) - -探している情報が他のタブに見つからない場合は、情報タブに移動してください。このタブにはフォーカスされているエンティティのほとんどの {% include product %} フィールドが表示されていて、青のハイパーリンクをクリックすると、{% include product %} の他の場所に移動できます。 - -#### 検索 - -![search2-15.png](./images/sa-integrations-user-guide-search2-15.png) - -{% include product %} 内の別の場所や別のオブジェクトにすばやく移動する場合は、組み込みの検索機能を使用します。この検索機能は、{% include product %} Web アプリケーションのグローバル検索と似ています。まず、探している情報の名前または説明を入力します。3 文字以上を入力すると、結果が表示されます。 - -#### アクション - -![actions-16.png](./images/sa-integrations-user-guide-actions-16.png) - -{% include product %} Panel を使って {% include product %} データを使用することにより、シーン内で操作を実行することもできます。ローダーと同様に、パネルにもアクション システムが用意されていて、メニューによってトリガされるコードのスニペットを、ブラウザ内のメニュー項目として簡単に登録することができます。詳細領域から、およびリストからアクションにアクセスできます。詳細領域のアクション ボタンには、{% include product %} にすばやく移動して、現在のビューを更新するための便利な組み込み関数もいくつか含まれています。 - -#### 現在の作業領域とホーム領域 - -![work-home-17.png](./images/sa-integrations-user-guide-work-home-17.png) - -左上のアイコンをクリックすると、現在の作業領域に移動できます。通常は、この領域が現在作業中のタスクになります。この領域を使用すると、ノートへのアクセスや、バージョンおよび現在の作業内容に関連するその他の情報の確認をすばやく行うことができます。{% include product %} Panel の起動時に常にフォーカスが設定されるのも、この場所です。 - -右上に、現在のユーザのサムネイルを表示するボタンがあります。このボタンをクリックすると、現在のユーザに関連付けられている情報の表示ページに移動します。この領域には、以下が含まれています。 - -* 自分が提出したすべてのパブリッシュおよびバージョン -* 自分に割り当てられているタスク -* 自分が参加している、または自分に関連しているノート(自分が割り当てられているタスクに関連付けられているノートなど)を含むすべての会話 - -#### 現在の作業領域 - -タスクの作業を開始するときに、パネルを使用して現在の作業領域を設定できます。その後、作品をパブリッシュすると、その作品に {% include product %} の現在のタスクが関連付けられます。 - -## Publisher - -### 概要 - -アーティストは Publish アプリを使用して作品をパブリッシュすることにより、下流工程に関わるアーティストが自分の作品を使用できるようにすることができます。アーティストのコンテンツ作成ソフトウェア内における従来のパブリッシュ ワークフローと、ディスク上にある任意のファイルのスタンドアロン パブリッシュがサポートされます。コンテンツ作成ソフトウェアで作業し、基本的な {% include product %} の統合を使用している場合、このアプリはアーティストがパブリッシュする項目を自動的に探して表示します。さらに高度な制作上のニーズがある場合は、アーティストのワークフローを操作するカスタム パブリッシュ プラグインを作成することもできます。 - -次のセクションでは、パブリッシャーの UI および基本的な統合ワークフローについて説明します。スタジオ固有のニーズに合わせてパブリッシャーをカスタマイズする方法については、『[パブリッシャー開発ガイド](http://developer.shotgridsoftware.com/tk-multi-publish2/)』を参照してください。 - -### インタフェースのコンポーネントおよび概念 - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -ローカル ファイルシステム上の任意の場所からファイルをドラッグ アンド ドロップします。参照ボタンを使用してファイル ブラウザを開き、パブリッシュする 1 つまたは複数のファイルを選択します。 - -![main-view-19.png](./images/sa-integrations-user-guide-main-view-19.png) - -左側の項目ツリーに、パブリッシュされる項目が表示されます。最上位の項目には、作業ファイル内で生成されたレンダーやキャッシュなど、関連するサブ項目が含まれる場合があります。各項目の下に、パブリッシュ時に実行されるアクションを表す、1 つまたは複数のパブリッシュ タスクがあります。 - -![items-tree-20.png](./images/sa-integrations-user-guide-items-tree-20.png) - -項目自体は、パブリッシュ ファイルに関連付けられる {% include product %} コンテキストを示すコンテキスト ヘッダでグループ化されます。 - -最上位項目が複数ある場合は、パブリッシュする項目や実行されるアクションの全体像を示す概要項目が表示されます。 - -![selection-detail-21.png](./images/sa-integrations-user-guide-selection-detail-21.png) - -項目を選択すると、インタフェースの右側にその項目の詳細が表示されます。詳細には宛先のコンテキスト、およびパブリッシュのサムネイルや説明が含まれます。項目および任意のサブ項目の概要を含めることもできます。 - -![buttons-and-status-22.png](./images/sa-integrations-user-guide-buttons-and-status-22.png) - -インタフェースの左下に、一連のツール ボタンがあります。これらのボタンは、次のとおりです。 - -* **[参照] (Browse)**: パブリッシュするファイルを参照する -* **[更新] (Refresh)**: パブリッシュ項目リストを更新する -* **[削除] (Delete)**: 選択した項目をリストから削除する -* **[展開] (Expand)**: リスト内のすべての項目を展開する -* **[折りたたむ] (Collapse)**: リスト内のすべての項目を折りたたむ -* **[ドキュメント] (Documentation)**: ワークフロー ドキュメントを開く - -中央にステータス ラベルがあります。このラベルは、パブリッシャーが検証を実行してパブリッシュ タスクを実行すると、更新されます。このラベルをクリックすると、進行状況の詳細オーバーレイが表示されます。 - -右端には、**[検証] (Validate)**および**[パブリッシュ] (Publish)**ボタンがあります。[検証] (Validate)ボタンをクリックすると、すべてのおよびタスクに初期検証パスが実行されて、これらがパブリッシュ可能な状態になります。Publish ボタンをクリックすると、リスト内の項目のパブリッシュが開始されます。 - -![progress-details-23.png](./images/sa-integrations-user-guide-progress-details-23.png) - -進行状況の詳細オーバーレイには、リスト内の項目の収集、検証、およびパブリッシュの出力が表示されます。 - -ユーザは[クリップボードにコピー] (Copy to Clipboard)ボタンをクリックして、パブリッシュ ログを簡単に共有できます。検証またはパブリッシュ エラーが発生した場合は、ログ メッセージにアクション ボタンが追加され、これをクリックすることによりユーザに追加情報を案内したり、場合によってはエラーをただちに修正することもできます。 - -### 基本的なワークフロー - -パブリッシュ アプリの目的は、アーティストが自分の作品を他のアーティストにも使用できるようにすることです。{% include product %} でファイルをパブリッシュすることは、パス、バージョン番号、アーティストの情報、関連する {% include product %} コンテキストなど、パブリッシュするファイルの情報を含むレコードを {% include product %} で作成することを意味します。{% include product %} でファイルがトラックされている場合、他のユーザは [Loader](#the-loader) アプリを使用してそのファイルを利用することができます。 - -基本的な {% include product %} の統合には、パイプラインでパブリッシュ アプリを使用する方法が 2 つ用意されています。スタンドアロン パブリッシュ方式と、コンテンツ作成ソフトウェア内でパブリッシュする方式です。次のセクションでは、それぞれのシナリオのワークフローの概要を示します。 - -#### コンテンツ作成ソフトウェア内でパブリッシュする - -基本的な {% include product %} の統合では、3dsMax、Houdini、Maya、Nuke、Nuke Studio、Photoshop などのコンテンツ作成ソフトウェアのパブリッシュ ワークフローがサポートされています。コンテンツ作成ソフトウェアを使用してパブリッシャーを起動すると、パブリッシャーはパブリッシュする項目を自動的に検出しようとします。パブリッシュのために表示されている項目はソフトウェアおよびアーティストの作業ファイルの内容に応じて若干異なりますが、パブリッシュに関する基本的な概念は同じものが適用されます。次に、Nuke 内でパブリッシュする例を示します。 - -![publish-in-dcc-24.png](./images/sa-integrations-user-guide-publish-in-dcc-24.png) - -#### 項目およびタスクをパブリッシュする - -このウィンドウの左側には、収集されたパブリッシュ項目が表示されています。3 つのパブリッシュ項目があります。作業ファイルが選択されていて、その下に 2 つの子項目があります。また、イメージ ファイル シーケンスおよび Alembic キャッシュがあります。これらの各項目には、**Publish to {% include product %}** パブリッシュ タスクがアタッチされていて、このタスクを実行すると、{% include product %} でパブリッシュ エントリの作成が処理され、個々のファイルまたはイメージ シーケンスがトラックされます。 - -Nuke スクリプトを表す親項目には、**Begin file versioning** プラグインがアタッチされています。このプラグインは、作業ファイルのパスにバージョン番号が含まれていない場合に表示されます。このプラグインをオンにすると、このタスクを実行したときにファイル名にバージョン番号が挿入されます。この場合、ファイル名は `bunny_010_0010.nk` から`bunny_010_0010.v001.nk` に変更されます。 こうすることで、アーティストの作業ファイルの履歴が維持されます。このタスクは既定でオフになっていて、実行する必要はありません。このタスクを有効にした状態で項目をパブリッシュすると、次に作業ファイルをパブリッシュするときはファイル名にバージョン番号が挿入されているため、このタスクは表示されなくなります。 - -パブリッシュ タスクは必要に応じてオンまたはオフにすることができます。項目のチェックボックスにはサブタスクのオン/オフ状態が反映されていて、これらをコントロールします。たとえば、ある項目をオフにすると、そのすべてのタスクがオフになります。複数のタスクの中の 1 つをオフにすると、項目が半分オンの状態になります。特定のタイプのすべてのタスク(すべての **Publish to {% include product %}** タスクなど)のオン/オフ状態を切り替えるには、`Shift` キーを押しながらチェックボックスをオンまたはオフにします。 - -パブリッシュ タスクを選択すると、このタスクの実行内容に関する情報が表示されます。 - -![items-and-tasks-25.png](./images/sa-integrations-user-guide-items-and-tasks-25.png) - -##### コンテキスト - -Nuke スクリプト項目の上に、{% include product %} でパブリッシュされた項目に関連付けられるコンテキストの名前が表示されます。このコンテキストを変更するには、インタフェースの右側にある Task または Link フィールドを変更します。複数の項目をパブリッシュする場合は、それらが異なるコンテキストで表示されることがあります。パブリッシュ項目の左側にある 3 つの水平線を含むアイコンは、コンテキスト間で項目を移動するためのドラッグ ハンドルです。 - -タスク エントリ フィールドの横に、ドロップダウン形式のメニュー ボタンも配置されています。このメニューで、ユーザが関心を持っている可能性のあるタスク グループをいくつか表示することができます。現在のユーザに割り当てられているタスク、現在のコンテキストに関連しているタスク(同じショットに割り当てられた別のタスクなど)、および最近参照されたタスクが表示されます。 - -![context-menu-26.png](./images/sa-integrations-user-guide-context-menu-26.png) - -タスクまたはエンティティのリンクを検索するには、いずれかのフィールドをクリックするか、検索アイコンをクリックして関心のあるコンテキストの名前を入力します。一致するタスクまたはエンティティのリンクがフィールドに表示されたら、これをクリックするか、または目的のコンテキストに移動できます。 - -![search-27.png](./images/sa-integrations-user-guide-context-search-27.png) - -![thumbnail-and-desc-28.png](./images/sa-integrations-user-guide-thumbnail-and-desc-28.png) - -各パブリッシュ項目のカメラ アイコンをクリックすることにより、{% include product %} 内でパブリッシュのサムネイルとして使用する画面の一部を選択することができます。子項目があるシナリオの場合、既定では、子項目は親からサムネイルを継承します。子を選択してそのサムネイルをクリックすることにより、子項目のサムネイルをオーバーライドすることができます。 - -{% include product %} のパブリッシュ データに、入力した説明を含めることができます。サムネイルと同様に、説明は親項目から継承されますが、子の詳細エントリに新しい説明を入力して説明をオーバーライドすることができます。 - -##### 検証 - -項目をパブリッシュする準備ができたら、[検証] (Validate)ボタンをクリックして、ファイルの状態を確認します。パブリッシュ項目を使用したときに、パブリッシュを予測どおりに完了できるようになります。 - -![validation-29.png](./images/sa-integrations-user-guide-validation-29.png) - -すべての項目が正常に検証されると、右側に緑のチェックマークが表示されます。検証されていない項目には、警告アイコンが表示されます。 - -![validation-warning-30.png](./images/sa-integrations-user-guide-validation-warning-30.png) - -パブリッシャーの下部にあるステータス ラベル領域にもこのステータスが表示されます。 - -![status-warning-31.png](./images/sa-integrations-user-guide-status-warning-31.png) - -項目のアイコンまたはステータスのラベルをクリックすると、進行状況の詳細オーバーレイが開き、検証の必要な問題がハイライトされます。 - -![warning-details-32.png](./images/sa-integrations-user-guide-warning-details-32.png) - -上記の例では、Nuke スクリプトが保存されませんでした。シナリオによっては、問題の解決策にユーザをすばやく誘導するため、または問題に関する詳細を取得するためのアクション ボタンが用意されています。ここには、Nuke の保存ダイアログを開くための**[名前を付けて保存] (Save As)**アクション ボタンが表示されています。 - -検証問題が修正されたら、進行状況の詳細オーバーレイを閉じて、パブリッシュ項目ビューに戻ることができます。パブリッシュ タスクに関する警告またはエラーを解決している場合は、検証を必要な回数だけ実行できます。 - -**Publish** ボタンをクリックすると、アプリはリスト内の項目およびタスク間を移動して、それぞれに異なる検証パスを実行し、それからパブリッシュ ロジックを実行して {% include product %} でのエントリ作成、サムネイルのアップロード、作業ファイルのバージョン引き上げなどを行います。項目ごとにパブリッシュの概要を作成し、必要なクリーンアップ作業を行うための仕上げパスも実行されます。 - -![publish-complete-33.png](./images/sa-integrations-user-guide-publish-complete-33.png) - -プロセス全体の結果を後で確認するには、パブリッシャーの下部にあるステータス ラベルをクリックして、プロジェクトの詳細オーバーレイを表示します。また、パブリッシュ中に進行状況の詳細ビューを表示したままにして、パブリッシュが発生したときに出力を確認することもできます。上の図には、{% include product %} で新たに作成されたパブリッシュ エントリにすばやく移動するための追加のアクション ボタンが表示されています。 - -##### 複数ドキュメントのワークフロー - -Photoshop や Nuke Studio などのコンテンツ作成ソフトウェアで複数ドキュメントのワークフローを使用している場合は、パブリッシュ項目リストに最上位項目が複数表示されます。 - -![multi-doc-34.png](./images/sa-integrations-user-guide-multi-doc-34.png) - -展開してオンにできるのは、現在のドキュメントまたはアクティブなドキュメントのみです。パブリッシュするすべてのドキュメントをオンにするには、`Shift` を押したまま、オフになっている項目のチェックボックスの中の 1 つをクリックします。折りたたまれた項目を展開するには、下部のツールバーにある展開ボタンを使用します。 - -複数の最上位項目がある場合は、リストの上部に概要項目が示されます。 - -![summary-35.png](./images/sa-integrations-user-guide-summary-35.png) - -この項目を選択すると、パブリッシュ対象として選択されているすべての項目の概要の全体が表示されます。上の図には、4 つの項目と、4 つの異なるコンテキストで実行する合計 8 個のタスクが表示されています。必要に応じて、このビューのすべての項目のコンテキストおよび説明をオーバーライドできます。 - -上の図には **Upload for review** タスクも表示されています。このタスクは Photoshop ワークフローに限定されません。レビュー可能なメディアとして、トランスコードして {% include product %} にアップロードすることができるすべてのファイル タイプで使用できます。 - -#### スタンドアロン パブリッシュ - -Publish アプリは、コンテンツ作成ソフトウェア内から実行しなくてもかまいません。 - -![desktop-launch-36.png](./images/sa-integrations-user-guide-desktop-launch-36.png) - -ここには、{% include product %} Desktop から直接起動できるパブリッシャーを示しています。スタンドアロン モードで起動すると、ファイルの参照またはドラッグ アンド ドロップを実行するための領域が表示されます。 - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -参照ボタンをクリックすると、標準のファイル ブラウザが開き、パブリッシュするファイルを選択できるようになります。 - -ブラウザでファイルを選択するか、どこかの場所からファイル システムにファイルをドラッグ アンド ドロップすると、これらのファイルがパブリッシュ対象のファイルとして最上位に表示されます。 - -![collected-drop-38.png](./images/sa-integrations-user-guide-collected-drop-38.png) - -前の例と同様に、パブリッシュするときに、各項目のコンテキストを選択し、説明を設定して、実行するタスクを識別することができます。 - -#### パブリッシュ タイプ - -次のセクションでは、基本的な {% include product %} の統合ごとに自動収集されるパブリッシュ タイプについて説明します。 - -##### スタンドアロン - -スタンドアロンのワークフローでは、パブリッシュ対象のファイルが自動的に収集されません。ユーザがファイルをパブリッシュするには、ファイルのパスをインタフェースにドラッグするか、ファイルのパスを参照する必要があります。**Publish** ボタンをクリックする前の任意の時点で参照またはドロップされたファイルが、パブリッシャーに受け入れられます。基本的な統合では、既知のファイル タイプを使用して {% include product %} のパブリッシュ タイプと関連付けることにより、任意のファイル拡張子を使用することができます。ファイルの拡張子が認識されない場合は、MIME タイプのファイルが使用されます。認識されたイメージおよびビデオの MIME タイプがパブリッシュ可能になり、確認のためにアップロードするタスクがアタッチされます。 - -基本的な統合では、ドロップされたフォルダ内にイメージシーケンスが含まれていることが前提となります。フォルダ内に認識されるイメージ シーケンスが見つかると、これらがすべてパブリッシュ対象項目として表示されます。シーケンスが見つからない場合は、パブリッシュ対象の項目が作成されません。 - -##### 3ds Max - -パブリッシュ タイプに **3dsmax Scene** を指定した場合は、現在の Max セッションがパブリッシュ対象として収集されます。収集されたセッションは、Loader を介して別の Max セッションに結合したり、参照したりできます。 - -現在のセッションのプロジェクト フォルダを判別できる場合は、プロジェクトの **export** フォルダ内にあるすべてのファイルがパブリッシュ対象として表示されます。同様に、プロジェクトの **preview** フォルダ内にあるすべてのムービー ファイルがパブリッシュ可能になります。 - -##### Houdini - -パブリッシュ タイプに **Houdini Scene** を指定した場合は、現在の Houdini セッションがパブリッシュ対象として収集されます。収集されたセッションは、Loader を介して別の Houdini セッションに結合したり、参照したりできます。 - -次のタイプのノードからディスクに書き込まれたファイルも自動的に収集されて、パブリッシュ項目として表示されます。 - -* **alembic** -* **comp** -* **ifd** -* **opengl** -* **wren** - -##### Maya - -パブリッシュ タイプに **Maya Scene** を指定した場合は、現在の Max セッションがパブリッシュ対象として収集されます。収集されたセッションは、Loader を介して別の Maya セッションに読み込んだり、参照したりできます。 - -現在のセッションのプロジェクト ルートを判別できる場合は、プロジェクトの **cache/Alembic** フォルダ内にあるすべての Alembic ファイルがパブリッシュ対象として表示されます。同様に、プロジェクトの **movies** フォルダ内にあるすべてのムービー ファイルがパブリッシュ可能になります。 - -##### Nuke - -パブリッシュ タイプに **Nuke Script** を指定した場合は、現在の Nuke セッションがパブリッシュ対象として収集されます。収集されたセッションは、Loader を介して別の Nuke セッションに読み込んだり、新しいセッションとして開いたりできます。 - -次のタイプのノードからディスクに書き込まれたファイルも自動的に収集されて、パブリッシュ項目として表示されます。 - -* **Write** -* **WriteGeo** - -##### Nuke Studio - -パブリッシュ タイプに **NukeStudio Project** を指定した場合は、開いているすべての Nuke Studio プロジェクトがパブリッシュ対象として収集されます。収集されたプロジェクトは、Loader を介して別の Nuke Studio セッション内で新しいプロジェクトとして開くことができます。 - -##### Photoshop CC - -パブリッシュ タイプに **Photoshop Image** を指定した場合は、開いているすべての Photoshop ドキュメントがパブリッシュ対象として収集されます。収集されたドキュメントは、Loader を介して別の Photoshop セッション内で新しいレイヤとしてロードしたり、新しいドキュメントとして開いたりできます。 - -## Loader - -{% include product %} の Loader を使用すると、{% include product %} にパブリッシュしたファイルの概要確認と参照をすばやく行うことができます。検索可能なツリー ビュー ナビゲーション システムを使用することで、探しているタスク、ショット、またはアセットにすばやく、簡単にアクセスすることができます。アクセスしたら、この項目のすべてのパブリッシュについての概要がローダーにサムネイルで表示されます。その後は、設定可能なフックを利用して、パブリッシュを参照したり、現在のシーンに簡単に読み込んだりできます。 - -ディスク上のファイルまたはファイルのシーケンス(イメージのシーケンスなど)をそれぞれ表すパブリッシュが {% include product %} に記録されます。パブリッシュは任意のアプリケーションで作成できますが、通常は Publisher で作成されます。 - -パブリッシュを作成すると、別のユーザがそのパブリッシュをパイプラインでロードできるようになります。ローダーが関係するのは、この段階です。ローダーを使用すると、ファイル システム ブラウザを連想させる方法で、{% include product %} 内に格納されたパブリッシュを参照することができます。 - -### 概要 - -ローダー アプリを使用すると、{% include product %} にパブリッシュされたファイルをすばやく参照することができます。ローダ アプリには、タスク、ショット、またはアセットのサムネイルを簡単に表示できる検索可能なツリー ビュー ナビゲーション システムがあります。 - -![overview2-39.png](./images/sa-integrations-user-guide-overview2-39.png) - -### ツリー ビュー - -探しているショット、アセット、またはるタスクをすばやく見つけるには、左側のツリー ビューを使用します。探している項目の名前がわかっている場合は、検索領域にこの名前を入力して、検索フレーズと一致する項目のみをツリーに表示することができます。 - -![search3-40.png](./images/sa-integrations-user-guide-search3-40.png) - -入力を開始するとすぐに、ツリーの周りに青いバーが表示されます。このバーが表示されると、ツリー全体を表示することができなくなり、検索フレーズに基づいてツリー内の項目の一部が表示されます。検索を開始すると、ツリー内のすべてのノードが自動的に展開されます。便利なように、ツリーを右クリックすると、ツリー内のすべてのノードを展開する、または折りたたむオプションが表示されます。 - -### ナビゲーション - -ツリー ビューの上部には、3 つのナビゲーション ボタンがあります。 - -![buttons-41.png](./images/sa-integrations-user-guide-buttons-41.png) - -ホーム ボタンをクリックすると、ローダーは現在の作業領域を表すショットまたはアセットに自動的に移動します。現在実行中の作業に関連する内容をすばやくロードする場合は、この方法が便利です。起動時にローダーに既定で表示されるのも、この場所です。ツリー ビューでさまざまな項目を選択すると、時間の経過と共に履歴が作成されます。この履歴内で移動するには、ブラウザと同様に、戻るボタンおよび進むボタンを使用します。 - -### パブリッシュを見る - -ツリー内の項目を選択すると、UI の中央にあるパブリッシュ領域に使用可能なパブリッシュが表示されます。このビューの各項目は、一連のパブリッシュ内の最新の項目を表しています。したがって、例としてバージョン 15 のテクスチャが表示されている場合は、この項目のバージョン履歴にこれ以前の 14 個のバージョンが含まれています。 - -パブリッシュだけでなく、ショット、シーケンス、アセット、または他の {% include product %} エンティティ タイプを表すフォルダ アイコンも表示されます。オブジェクトのサムネイルがある場合は、フォルダの上部にサムネイルがオーバーレイされ、ナビゲーションをすばやく、視覚的に行うことができます。フォルダをダブルクリックすると、階層内のこのフォルダに移動できます。 - -![thumb-view-42.png](./images/sa-integrations-user-guide-thumb-view-42.png) - -2 つの表示モードがあります。視覚的に参照して、テクスチャなどを検索する場合は、サムネイル モードが非常に便利です。リストをすばやく確認し、ズーム ハンドルを使用して即座にズーム インおよびズーム アウトすることができます。 - -![list-view-43.png](./images/sa-integrations-user-guide-list-view-43.png) - -Nuke スクリプトや Maya ファイルのように、テクスチャほど視覚的な情報が多くないデータを参照する場合は、サムネイル ビューでなくリスト ビューを使用します。このモードでは一部の追加情報がコンパクトに表示されるため、多数の項目内ですばやくスクロールすることができます。 - -特定のタイプの項目のみを表示する場合は、左下の _フィルタ パネル_ を使用して、パブリッシュの表示/非表示をすばやく切り替えることができます。また、このリスト内の各タイプの横にある概要を参照して、現在選択されているツリー項目に対して検索されたパブリッシュ数をタイプごとに確認することもできます。 - -### 1 つまたは複数のパブリッシュをシーンに取り込む - -項目をシーンに取り込む場合は、単にダブルクリックしてください。ローダーがパブリッシュに対して _既定のアクション_ を実行します。項目をシーンに追加する方法が複数あることがあります(たとえば、Maya では別の Maya ファイルを参照したり、このファイルをシーンに読み込んだりできます)。この場合は、 _[アクション] (Actions)_ ドロップダウン メニューをクリックするか、パブリッシュの任意の場所を右クリックして、使用可能なすべてのオプションを表示します。 - -複数の項目をシーンに取り込む場合は、複数の要素を選択し、選択範囲内の任意の項目を右クリックして、 _[アクション] (Actions)_ ポップアップ メニューを表示します。表示されるのは、選択範囲内のすべての項目に適用できるアクションのみであることに注意してください。 - -![actions2-44.png](./images/sa-integrations-user-guide-actions2-44.png) - -パブリッシュでなく、ショットまたはアセット フォルダ オブジェクトを選択した場合は、{% include product %} またはファイル システムでこの項目を表示するオプションが表示されます。 - -### 古いパブリッシュを操作する - -右側の詳細ペインを開くと、選択したパブリッシュのすべてのバージョン履歴が表示されます。このバージョン履歴から旧バージョンをロードすることができます。この操作を行うには、メイン ビューでパブリッシュを操作する場合と同様に、バージョン履歴内でバージョンを選択し、アクション メニューを使用してロードします。 - -### 関連付けられたレビュー - -パブリッシュにレビュー バージョンが関連付けられている場合は、詳細ペインに再生ボタンが表示されます。このボタンをクリックすると、Web ページ内で Screening Room が起動し、ノートの確認や、バージョンへのノートの追加、および関連付けられたレビュー用 Quicktime の再生をすばやく行うことができます。 - -![screening-room-45.png](./images/sa-integrations-user-guide-screening-room-45.png) - -## 高度な機能 - -{% include product %} のすべての統合は、高度にカスタマイズ可能で拡張可能なプラットフォームの上に構築されていて、ツールキットというパイプラインを作成するのに役立ちます。この機能にアクセスして設定する方法については、『[管理者ガイド](https://developer.shotgridsoftware.com/ja/8085533c/)』を参照してください。 - -## 謝辞 - -* PySide のバグ修正バージョンは {% include product %} Desktop と共に配布されており、[こちら](http://www.autodesk.com/content/dam/autodesk/www/Company/files/PySide-1.2.2.sgtk.zip)から入手できます。 -* Big Buck Bunny - 画像提供: (CC) Blender Foundation (www.blender.org) - -特殊マークアップ「TANK_NO_HEADER」を追加して、ヘッダが不要だということをドキュメント作成システムに通知します。 diff --git a/docs/ja/reference/python-api-intro.md b/docs/ja/reference/python-api-intro.md deleted file mode 100644 index f83c50d8a..000000000 --- a/docs/ja/reference/python-api-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Python API -pagename: python-api-intro -lang: ja ---- - -# Python API - -ここでは、Python API のリファレンス ドキュメントを紹介します。 \ No newline at end of file diff --git a/docs/ja/shotgun.md b/docs/ja/shotgun.md deleted file mode 100644 index fabedff97..000000000 --- a/docs/ja/shotgun.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 概要 -pagename: shotgun-index -lang: ja ---- - -# {% include product %} 開発 - -プロダクション管理では、すべての個別の要素を同期させる必要があるため、多大な労力を必要とします。 - -データに直接接続するには、{% include product %} REST API または Python API を使用します。反復的なタスクを自動化するにはイベント トリガ フレームワーク、{% include product %} の Web インタフェースからアプリを直接起動するにはアクション メニュー アイテムを使用します。 - -独自のサービスまたは許可されたユーザ用のサービスを基に動作する、または一緒に動作するサービス、アプリケーション、モジュール、およびコンポーネントを独自に開発するには、{% include product %} API を使用することをお勧めします。 - -{% include warning title="認証キー" content="オートデスクからユーザのみなさまにお願いしたいことは、API 情報を開示しないこと(および許可されたユーザに開示を許可しないこと)ことのみです。ユーザは API 情報に含まれている認証キーなどを使用することで、ログオンしなくても、サービスやその機能にアクセスできるようになります。また、ログオンすることなくサービスまたはその機能にアクセスできる権限を、API を使用して自分自身に与えることや、ユーザに与えることも行わないでください。"%} - - - diff --git a/docs/ja/test.md b/docs/ja/test.md new file mode 100644 index 000000000..15509f3b1 --- /dev/null +++ b/docs/ja/test.md @@ -0,0 +1,12 @@ +--- +layout: default +title: Overview +pagename: test +lang: ja +--- + +# {% include product %} Development + +Test page ja test 123 + +![test](./images/color.png) diff --git a/docs/ja/toolkit.md b/docs/ja/toolkit.md deleted file mode 100644 index b45555b34..000000000 --- a/docs/ja/toolkit.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: パイプライン統合 -pagename: toolkit-index -lang: ja ---- - -# パイプライン統合 - -{% include product %} には、アーティストが毎日使用するクリエイティブ ツールに {% include product %} のエクスペリエンスを取り込む統合機能が含まれています。特に何も設定しなくても、アーティストのツール内にプラグインを取得して、基本的なパブリッシュ パイプラインの基盤を得ることができます。 - -これらの統合は、Toolkit プラットフォーム、一連の API、UI、および環境設定に基づいて構築されており、スタジオがカスタム ワークフローを構築するためのツールを提供します。 diff --git a/docs/ja/trusted-solutions/cloud.md b/docs/ja/trusted-solutions/cloud.md deleted file mode 100644 index 7883947ce..000000000 --- a/docs/ja/trusted-solutions/cloud.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: ShotGrid in the Cloud -pagename: cloud-index -lang: en ---- - -# {% include product %} in the Cloud - -## What is {% include product %} in the Cloud? - -{% include product %} Cloud is our default offering, hosted on AWS and built on top of Autodesk's Cloud technology platform. {% include product %} Cloud is the latest generation of our hosted service and is completely cloud based. - -## Further Reading - -Administration documentation can be found [here](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_html). \ No newline at end of file diff --git a/docs/ja/trusted-solutions/tier1.md b/docs/ja/trusted-solutions/tier1.md deleted file mode 100644 index 794358a37..000000000 --- a/docs/ja/trusted-solutions/tier1.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Isolation Features -pagename: tier1-index -lang: en ---- - -# Isolation Feature Set - -![isolation-theme](./tier1/images/isolation_theme.jpg) - -The isolation feature set is an hybrid solution that satisfies strict security and legal requirements, while minimizing {% include product %} System Admin specific required knowledge and maintenance. These features enable creative studios to confidently meet their supplier’s and studio’s highly stringent security, privacy, and performance requirements—from the cloud. - -Continue to [About the isolation feature set](./tier1/getting_started/about.md) for more details. - -Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation features. - -## 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) - -### 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) - -### 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) - - -### 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) diff --git a/docs/ja/trusted-solutions/tier1/features/features.md b/docs/ja/trusted-solutions/tier1/features/features.md deleted file mode 100644 index e51276b67..000000000 --- a/docs/ja/trusted-solutions/tier1/features/features.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Features Description -pagename: tier1-features -lang: en ---- - -# Isolation Feature Set - -This section describes in detail each of the Isolation Features. - -features-description-overview - -To get the onboarding process started, go to [Onboarding Process](../getting_started/onboarding.md). - -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 diff --git a/docs/ja/trusted-solutions/tier1/features/media_isolation.md b/docs/ja/trusted-solutions/tier1/features/media_isolation.md deleted file mode 100644 index a50d57fdf..000000000 --- a/docs/ja/trusted-solutions/tier1/features/media_isolation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-features-media-isolation -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. - -This is rendered possible by leveraging [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). When setting up Media Isolation, an AWS Role allowing {% include product %} to access your media for the action listed above is created, and the {% include product %} service is allowed to assume that role. - -{% 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 diff --git a/docs/ja/trusted-solutions/tier1/features/media_replication.md b/docs/ja/trusted-solutions/tier1/features/media_replication.md deleted file mode 100644 index 28446b7ab..000000000 --- a/docs/ja/trusted-solutions/tier1/features/media_replication.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-features-media-replication -lang: en ---- - -# 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. - -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 - -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 is 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/ja/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md deleted file mode 100644 index 1b6d36037..000000000 --- a/docs/ja/trusted-solutions/tier1/features/media_traffic_isolation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-features-media-traffic-isolation -lang: en ---- - -# Media Traffic Isolation - -Communication between your client systems and S3 bucket targets a number of AWS network endpoints and data traverses the open Internet by default. Media Traffic Isolation allows you to limit the number of network endpoints used to transfer data to and from your S3 bucket and optionally restrict access to your AWS VPC or a defined set of public address scopes. - -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. - -## 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/ja/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md deleted file mode 100644 index e062739bc..000000000 --- a/docs/ja/trusted-solutions/tier1/features/web_traffic_isolation.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-features-web-traffic-isolation -lang: en ---- - -# Web Traffic Isolation - -Communication between your client systems and your {% include product %} site will traverse the open Internet by default. Web Traffic Isolation allows you to restrict access to your {% include product %} site from the public Internet entirely and ensure that all traffic transits directly between your AWS VPC and Autodesk's AWS VPC. - -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 deleted file mode 100644 index 78453dc54..000000000 --- a/docs/ja/trusted-solutions/tier1/getting_started/about.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default -title: About the Isolation Feature Set -pagename: tier1-getting_started-about -lang: en ---- - -# What is the Isolation Feature Set - -The isolation feature set combines our Cloud Hosted Platform with client-managed AWS resources to provide a solution that satisfies the most stringent security and privacy requirements. Clients retain control of their sensitive content without having to host {% include product %} on their infrastructure. - -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 - -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 - -## 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. - - -# Eligibility - -The Isolation feature set is available to clients with an active ShotGrid subscription. 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: - -**Compute Stack:** The part of the {% include product %} Service that handles client requests and serves data to the client. - -**Data Stack:** Metadata storage (databases). - -**Media Storage:** Where the client's attachments, media, and assets are stored. {% include product %} uses AWS S3 to store client content. - -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/ja/trusted-solutions/tier1/getting_started/getting_started.md b/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md deleted file mode 100644 index 05a455ec3..000000000 --- a/docs/ja/trusted-solutions/tier1/getting_started/getting_started.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Getting Started -pagename: tier1-getting_started -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. -**The Isolation feature set is available to clients with an active ShotGrid subscription. Before starting, please be sure to complete your subscription purchase.** - - -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 diff --git a/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md b/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md deleted file mode 100644 index b44d00ed3..000000000 --- a/docs/ja/trusted-solutions/tier1/getting_started/onboarding.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Onboarding Process -pagename: tier1-getting_started-onboarding -lang: en ---- - -# Onboarding Process - -Leveraging the isolation features requires adopters to become AWS users. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. - -Autodesk and Amazon will provide dedicated resources during the onboarding process to help you on this journey. - -To start the on-boarding process for any of the Isolation features, please open a [{% include product %} Support ticket](https://knowledge.autodesk.com/contact-support), before proceeding with [your setup](../setup/setup.md) - -## Onboarding Process Overview - -![onboarding-process](../images/tier1-onboarding-process.png) - -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 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. - -**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. - -## Onboarding Resources - -**{% include product %} Community:** The [{% include product %} Isolation Community](https://community.shotgridsoftware.com/c/trusted-solutions/isolation/34) forum can be used to ask questions that can be answered by either {% include product %} Experts or other isolation features users. This should be your first stop when asking general questions about isolation features, during setup and beyond. - -**Private Slack Channel:** During the onboarding, you will be given access to a dedicated Autodesk Slack Channel. Your {% include product %} and AWS Leaders will be available for quick feedback, answers, and ad-hoc meetings to help you progress as fast as possible with your {% include product %} Isolation setup. This channel will be available only for the onboarding period. - -**{% include product %} Support:** A [{% include product %} Support](https://knowledge.autodesk.com/contact-support) ticket will be used to track your onboarding at a higher level. Once your {% include product %} Isolation setup is complete, follow-up support tickets can be opened with the support team as needed. - -## Next Steps - -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file diff --git a/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md deleted file mode 100644 index e27deaa04..000000000 --- a/docs/ja/trusted-solutions/tier1/getting_started/responsibilities.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Client Responsibilities -pagename: tier1-getting_started-responsibilities -lang: en ---- - -# Client Responsibilities - -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. - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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/ja/trusted-solutions/tier1/images/features-description-overview.png b/docs/ja/trusted-solutions/tier1/images/features-description-overview.png deleted file mode 100644 index cdaf6f168..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/features-description-overview.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/isolation_theme.jpg b/docs/ja/trusted-solutions/tier1/images/isolation_theme.jpg deleted file mode 100644 index 720b002ac..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/isolation_theme.jpg and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-isolation-arch.png b/docs/ja/trusted-solutions/tier1/images/media-isolation-arch.png deleted file mode 100644 index 4a1b6f397..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-isolation-arch.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-isolation-overview.png b/docs/ja/trusted-solutions/tier1/images/media-isolation-overview.png deleted file mode 100644 index 525b0130f..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-isolation-overview.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-replication-arch.png b/docs/ja/trusted-solutions/tier1/images/media-replication-arch.png deleted file mode 100644 index 78b48462d..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-replication-arch.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-replication-overview.png b/docs/ja/trusted-solutions/tier1/images/media-replication-overview.png deleted file mode 100644 index 3bc685942..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-replication-overview.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-replication-preferences.png b/docs/ja/trusted-solutions/tier1/images/media-replication-preferences.png deleted file mode 100644 index 2dcf50da8..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-replication-preferences.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-arch.png b/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-arch.png deleted file mode 100644 index 116505c66..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-overview.png b/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-overview.png deleted file mode 100644 index 09e9144eb..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/media-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-about-arch.png b/docs/ja/trusted-solutions/tier1/images/tier1-about-arch.png deleted file mode 100644 index 4de0459f7..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-about-arch.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-about-transcoding.png b/docs/ja/trusted-solutions/tier1/images/tier1-about-transcoding.png deleted file mode 100644 index 60780e45a..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-about-transcoding.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_other.png b/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_other.png deleted file mode 100644 index 4c0793153..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_other.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png b/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png deleted file mode 100644 index 27f735970..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-arch-setup.png b/docs/ja/trusted-solutions/tier1/images/tier1-arch-setup.png deleted file mode 100644 index 727585e6d..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-arch-setup.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-1.png b/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-1.png deleted file mode 100644 index 19c31b631..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-1.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-2.png b/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-2.png deleted file mode 100644 index 7a650d5a4..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-2.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-3.png b/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-3.png deleted file mode 100644 index a2aa900f6..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create-3.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png b/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png deleted file mode 100644 index 206b55453..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-onboarding-process.png b/docs/ja/trusted-solutions/tier1/images/tier1-onboarding-process.png deleted file mode 100644 index 49fcf262a..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-onboarding-process.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-s3-replication.png b/docs/ja/trusted-solutions/tier1/images/tier1-s3-replication.png deleted file mode 100644 index 987b45c08..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-s3-replication.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/tier1-setup-process.png b/docs/ja/trusted-solutions/tier1/images/tier1-setup-process.png deleted file mode 100644 index acb989c7e..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/tier1-setup-process.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-arch.png b/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-arch.png deleted file mode 100644 index 738878820..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-overview.png b/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-overview.png deleted file mode 100644 index 66b11ed59..000000000 Binary files a/docs/ja/trusted-solutions/tier1/images/web-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/ja/trusted-solutions/tier1/knowledge/aws.md b/docs/ja/trusted-solutions/tier1/knowledge/aws.md deleted file mode 100644 index 4047e2782..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/aws.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: AWS Knowledge -pagename: tier1-knowledge-aws -lang: en ---- - -# AWS Knowledge - -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/) diff --git a/docs/ja/trusted-solutions/tier1/knowledge/connecting.md b/docs/ja/trusted-solutions/tier1/knowledge/connecting.md deleted file mode 100644 index aa9aad9dd..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/connecting.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Connecting Your Studio With Your AWS VPC -pagename: tier1-knowledge-connecting -lang: en ---- - -# Connecting Your Studio With Your AWS VPC - -You can connect your studio networks with AWS using one of many options, described in detail in this [Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) whitepaper. - -Some of the common options our clients have used include: - -## VPN Connection - -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.md b/docs/ja/trusted-solutions/tier1/knowledge/direct_connect.md deleted file mode 100644 index 14339c232..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/direct_connect.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Direct Connect -pagename: tier1-knowledge-direct_connect -lang: en ---- - -# Direct Connect - -[AWS Direct Connect](https://aws.amazon.com/directconnect/) is a service from AWS that allows you to establish a dedicated connection from your on-premise data center (or offices) to AWS. Direct Connect will allow you to create a dedicated link between your network and one of the AWS Direct Connect locations. - -Leveraging AWS Direct Connect ensure that you will benefit from the best experience possible when using the isolation feature set, optimizing reliability and performance for all your access points across the globe. diff --git a/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md deleted file mode 100644 index acf1ab748..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: default -title: ShotGrid AWS Direct Connect Onboarding -pagename: tier1-knowledge-direct_connect_onboarding -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. - -## Review of Shogun Configuration in AWS - -![high-level-architecture](../images/tier1-arch-s3_ue1.png) - -## Customer Types - -1. Customer already has AWS Direct Connect dedicated connection -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 -2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - - -## 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): - -- Do you already have equipment and presence in an AWS Direct Connect location? -- Do you know the process for requesting a cross-connect within the Direct Connect location facility? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console and select a Partner to assist (Option 1b): - -- Are you planning to use AWS Direct Connect to connect to other AWS resources outside of {% include product %}? -- Do you have the time and resources to complete the setup? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then you should work with an AWS Direct Connect Partner to request a hosted Direct Connect connection (Option 2): - -- 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.* - -## 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). -1. (Option 1b only) [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/) and share the LOA with them. -1. Once the dedicated connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). - -### 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 -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). - -## FAQ - -**How long should it take to set up AWS Direct Connect?** - -Short Answer - It depends. A lot of factors go into the time it takes to set up AWS Direct Connect. The timeline can vary from a few days to a few months. Some of the factors include current infrastructure, location of equipment, providers, partners, and more. If you are looking to expedite the process, consider using an AWS Direct Connect Partner who is geographically nearby. - -**Further questions about AWS Direct Connect?** - -[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). - -## AWS Documentation & Resources - -- [What is AWS Direct Connect?](https://www.youtube.com/watch?v=eNxPhHTN8gY&feature=youtu.be&t=716) -- [Direct Connect User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dc-ug.pdf) -- [re:Invent 2018 - 400 level Deep Dive on Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc) -- [AWS Direct Connect Locations](https://aws.amazon.com/directconnect/features/#AWS_Direct_Connect_Locations) -- [AWS Direct Connect Partners](https://aws.amazon.com/directconnect/partners/) diff --git a/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md b/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md deleted file mode 100644 index 12d99d191..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/endpoints.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: VPC Endpoints -pagename: tier1-knowledge-endpoints -lang: en ---- - -# VPC Endpoints - -Coming soon. \ No newline at end of file diff --git a/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md b/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md deleted file mode 100644 index 6eaae7b9d..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/knowledge.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Knowledge -pagename: tier1-knowledge -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 diff --git a/docs/ja/trusted-solutions/tier1/knowledge/private_link.md b/docs/ja/trusted-solutions/tier1/knowledge/private_link.md deleted file mode 100644 index daa50aa49..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/private_link.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Private Link -pagename: tier1-knowledge-private_link -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. - -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/ja/trusted-solutions/tier1/knowledge/s3.md b/docs/ja/trusted-solutions/tier1/knowledge/s3.md deleted file mode 100644 index 3caac5bbf..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/s3.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: S3 -pagename: tier1-knowledge-s3 -lang: en ---- - -# S3 - -[Amazon S3](https://aws.amazon.com/s3/) is an object storage service offered by AWS. It can be thought of as a highly durable storage space in the cloud. {% include product %} uses S3 to store uploaded media and files. - -In order to use {% include product %} isolation features, you will bring your own S3 bucket and configure {% include product %} to use it for storage. Please refer to our [S3 Bucket Setup article](../setup/s3_bucket.md) for details on how to do this. diff --git a/docs/ja/trusted-solutions/tier1/knowledge/vpc_iam_sec.md b/docs/ja/trusted-solutions/tier1/knowledge/vpc_iam_sec.md deleted file mode 100644 index effbe85bf..000000000 --- a/docs/ja/trusted-solutions/tier1/knowledge/vpc_iam_sec.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: VPC / IAM / Security Group -pagename: tier1-knowledge-vpc_iam_sec -lang: en ---- - -# VPC / IAM / Security Group - -[Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/) permits users to logically separate virtual networks that host their AWS resources and provides you complete control over access to your AWS network. - -Within a VPC, [security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) act as a basic firewall and control what inbound and outbound connections are permitted to each given resource. For example, a security group can allow inbound **HTTPS** traffic to a proxy server but block all other inbound traffic. - -With [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/), access to AWS resources and services can be controlled at a more fine-grained level. For example, IAM can be leveraged to control who or which resources can access S3 buckets used by {% include product %}. - -All three of the above features are used in the {% include product %} isolation features implementation to ensure that you securely connect your closed VPC to {% include product %} and allow access to the [media S3 buckets](../setup/s3_bucket.md). diff --git a/docs/ja/trusted-solutions/tier1/learn/learn.md b/docs/ja/trusted-solutions/tier1/learn/learn.md deleted file mode 100644 index fc1364ac6..000000000 --- a/docs/ja/trusted-solutions/tier1/learn/learn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Learn -pagename: tier1-learn -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 diff --git a/docs/ja/trusted-solutions/tier1/setup/media_segregation.md b/docs/ja/trusted-solutions/tier1/setup/media_segregation.md deleted file mode 100644 index ace2a3a7b..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/media_segregation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-setup-media_segregation -lang: en ---- - -# Media Traffic Isolation using AWS PrivateLink for Amazon S3 - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the {% include product %} Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used." %} - -Simply add an `com.amazonaws.us-west-2.s3` Interface VPC Endpoint to your existing VPC. Make sure the associated security group allow traffic from your site network. - -### Add the VPC to your S3 bucket policy - -In order for the S3 VPC endpoint to communicate with your S3 bucket your bucket policy must allow access from the S3 endpoint's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 VPC endpoint - -Use the endpoint URL to list objects in your bucket using AWS CLI. In the following example, replace the VPC endpoint ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` and bucket name `my-bucket` with appropriate information. - -``` - aws s3 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com ls s3://my-bucket/ -``` - -### Configure your test site to use your S3 VPC endpoint - -* Please contact {% include product %} support via the dedicated Slack channel and provide the following information: - * Your S3 bucket name - * Your S3 VPC endpoint DNS Name -* Autodesk will configure your test site to use your S3 VPC endpoint -* Confirm that you are still able to access existing media -* Attempt to upload new media - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/media_segregation_s3_proxy.md b/docs/ja/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md deleted file mode 100644 index 3de278e64..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation - S3 Proxy -pagename: tier1-setup-media_segregation_s3_proxy -lang: en ---- - -{% include info title="Deprecated" content="The preferred way is to use S3 Private Link instead of a S3 proxy, see [Media Traffic Isolation](./media_segregation.md)" %} - -# Media Traffic Isolation using an S3 proxy (DEPRECATED) - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the ShotGrid Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -{% include info title="Disclaimer" content="Before starting, decide whether your S3 proxy will be privately accessible within your VPC or publicly accessible via the Internet and choose the relevant templates in the following instructions." %} - -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): - [`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: - [`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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used when configuring [Media Isolation](./s3_bucket.md)." %} - -![Add endpoint](../images/tier1-endpoint-create-1.png) -![Add endpoint](../images/tier1-endpoint-create-2.png) -![Add endpoint](../images/tier1-endpoint-create-3.png) - -## Set up S3 proxy - -You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC endpoint. We provide both [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) and [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) S3 proxy CloudFormation templates as starting points for this purpose. These will create the necessary Elastic Container Service (ECS) cluster and other resources to run the S3 proxy on AWS Fargate behind an AWS Application Load Balancer (ALB). - -### 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: - ``` - 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 - docker push 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 - ``` - -### Create S3 proxy CloudFormation stack - -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): - [`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: - [`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 - -### 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 - 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 - 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 - -### Add S3 proxy VPC to S3 bucket policy - -In order for the S3 proxy to communicate with your S3 bucket your bucket policy must allow access from the S3 proxy's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 proxy - -Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio.com/ping` - -### 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 - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/migration.md b/docs/ja/trusted-solutions/tier1/setup/migration.md deleted file mode 100644 index fcada3bf8..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/migration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Migration -pagename: tier1-setup-migration -lang: en ---- - -# Migration - -Once everything is configured and properly tested with the migration test site, it's now time to migrate your production site to use the isolation features. - -## Test migration - -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. - -## 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. - diff --git a/docs/ja/trusted-solutions/tier1/setup/planning.md b/docs/ja/trusted-solutions/tier1/setup/planning.md deleted file mode 100644 index e365d92b6..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/planning.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Planning Your Setup -pagename: tier1-getting_started-planning -lang: en ---- - -# Planning Your Setup - -![Architecture](../images/tier1-arch-setup.png) - -## Pick your options - -Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication - -## AWS Account Creation - -Before going further, you will require an AWS Account. If you don't already have an AWS Account, [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). - -## Choose an AWS Region - -Choose an AWS Region for your AWS S3 bucket and VPC. Which region to use? You should chose the a region that is the closest possible to your studio. - -If your company is located in different locations, consider enabling the media replication feature to reduce latency and improve performance - -## Plan the VPC IP ranges - -Plan your AWS VPC and subnets IP ranges. - -### IP Range Example - -| 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 - -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 diff --git a/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md b/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md deleted file mode 100644 index 91339137f..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/s3_bucket.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-setup-s3_bucket -lang: en ---- - -# Media Isolation - -{% include info title="Disclaimer" content="The security of your S3 bucket is solely a client responsibility, and the integrity of your data will be at risk without it. We very strongly recommend [securing your S3 bucket properly](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - -## AWS Account Creation - -You can quickly [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). -You should also contact your AWS contacts to get help with your AWS account setup. - -## AWS CloudFormation template - -It's possible to start from the [Private S3 bucket AWS CloudFormation template](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml) and customize it for your needs for a faster deployment. - -{% 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 - -### CORS Configuration - -CORS policy on your S3 bucket will be minimally configured, allowing only the required origin (your site) and methods, amongst other things. - -### IAM Role - -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. - -## 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 - -{% include product %} will configure your test site to use your own S3 bucket. - -## Validation - -At this stage, you should be able to upload and download media. The {% include product %} Transcoding Service should also be able to read, transcode and write back the thumbnails, filmstrip and web friendly versions of your media back to your S3 Bucket. To validate this: - -1. Log in your Migration Test Site. -2. From the Navigation Bar, go the the Media app -3. Once in the Media App, drag and drop or upload an image or a video from your computer. If you didn't created a Project yet, you may have to create one first. -4. A version should appear, with a thumbnail, in the Media App. -5. Validate that you can playback the media by clicking the Play button. -6. To validate that the media has been stored in your S3 bucket, from the media viewer, click on the cog and then select or hover over ‘view source’. The HTTPS link should contain your bucket name. - -## Next Steps - -See [Media Traffic Isolation](./media_segregation.md) to activate the Media Traffic Isolation feature. - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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 deleted file mode 100644 index 20b465ada..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/s3_replication.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-setup-s3_replication -lang: en ---- - -# Media Replication - -## Description - -It's possible to add S3 replication between two S3 buckets in different regions and configure {% include product %} to leverage it for faster access to media. - -![S3 Replication Diagram](../images/tier1-s3-replication.png) - -## Features - - * 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 - -When S3 bucket replication is activated, users will be able download media files from the replica S3 bucket. - -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| - -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 - -# 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 - -## FAQ - -### Copy existing media - -S3 replication only applies to media uploaded after the feature has been enabled. Existing media in the primary bucket must be copied to the replica bucket manually. You can simply use `aws-cli` sync or use [Amazon S3 Batch Operations](https://aws.amazon.com/s3/features/batch-operations/) if you have a lot of media to achieve this. - -## Next Steps - -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 diff --git a/docs/ja/trusted-solutions/tier1/setup/setup.md b/docs/ja/trusted-solutions/tier1/setup/setup.md deleted file mode 100644 index 759f5637f..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/setup.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Setup -pagename: tier1-setup -lang: en ---- - -# {% include product %} Isolation Feature Set - Setup - -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. - -## 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) - -# Setup Overview - -![tier1-setup-process](../images/tier1-setup-process.png) - -## [Understand your responsibilities](../getting_started/responsibilities.md) - -Make sure that you understand the [client responsibilities and the implication](../getting_started/responsibilities.md) of activating any of the Isolation feature. - -## [Start the onboarding process](../getting_started/onboarding.md) - -Leveraging the isolation features requires adopters to become AWS users. The features activation also requires Autodesk Support intervention. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. [Kick-start the onboarding process](../getting_started/onboarding.md) before going further. - -## [Planning your Setup](./planning.md) - -Before you start working on your setup, [put a plan in place](./planning.md). Choose the features you need and get the required security/legal approval from your team to get started with the Isolation feature set. - -## [Migration Test Site](./shotgun_poc_site.md) - -To help you setting up the Isolation features without breaking your production environment and to helping smooting the migration to your isolated environment, {% include product %} propose to use a test site on which to test your setup before applying the result to production. - -## [Media Isolation](./s3_bucket.md) - -This feature allow you to use a S3 Bucket owned by your studio to store media. - -## [Media Traffic Isolation](./media_segregation.md) - -This feature allows for private routing of the media through the AWS Backbone and your studio network, isolating the media traffic from the public internet. - -## [Web Traffic Isolation](./traffic_segregation.md) - -This feature isolate the web traffic on AWS Backbone and your studio network, isolating the traffic from the public internet. - -## [Media Replication](./s3_replication.md) - -This feature allows the media to be replicated between AWS Regions, for faster access in your world wide studios. Media Isolation is required. - -## [Fine Tuning](./tuning.md) - -Once the isolation features you need are activated, make sure that you everything is properly configured for security and cost-efficiency by reviewing this fine tuning guide. - -## [Migration](./migration.md) - -Once everything is ready, it's now time to migrate your production site to use the isolation features. diff --git a/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md deleted file mode 100644 index 18a4cfd1d..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: Migration Test Site -pagename: tier1-setup-shotgun_poc_site -lang: en ---- - -# {% include product %} Migration Test Site - -Activating the isolation feature set is an intrusive procedure that can have an impact on the usability of your site. To prevent a production stopping event, we require clients to follow an approach where the configuration is first validated on a test site, before being applied to the production site. - -The {% include product %} team will create a temporary site to be used as a Proof of Concept for your {% include product %} Isolation deployment. Upon the successful completion of the setup process, your existing {% include product %} site can be migrated to your {% include product %} Isolation environment. - -If your Migration Test Site has not been created yet, please reach out to our Support team through your Zendesk ticket or your dedicated on-boarding Slack Channel. - -## Next Steps - -Once you have your test site, you can the implementation of the feature you need. - -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 diff --git a/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md deleted file mode 100644 index bdeb2f1bf..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/traffic_segregation.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-setup-traffic_segregation -lang: en ---- - -# Web Traffic Isolation - -The goal is to set up an AWS PrivateLink to privately access your {% include product %} site. - -## Set up PrivateLink to ShotGrid - - * 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. - -### Manual steps if needed - - * 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. - -![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`. - -## Validation - -Verify that your site private URL resolves to IPs in your AWS VPC block. - -``` -nslookup mystudio-staging.priv.shotgunstudio.com -``` - -Try to access your test site from inside your office ie https://mystudio-staging.priv.shotgunstudio.com - -## Next Steps - -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 diff --git a/docs/ja/trusted-solutions/tier1/setup/tuning.md b/docs/ja/trusted-solutions/tier1/setup/tuning.md deleted file mode 100644 index c06d6ef05..000000000 --- a/docs/ja/trusted-solutions/tier1/setup/tuning.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: default -title: Fine Tuning -pagename: tier1-setup-tuning -lang: en ---- - -# Fine Tuning - -## Cost Management Recommendations - -### S3 Infrequent Access - -We recommend enabling S3 Infrequent Access to easily reduce costs without impacting performance. For the {% include product %} Cloud hosted offering, we apply a policy for all objects older than one month. - -With Infrequent Access, objects are stored at a lower cost. However, if they are accessed, it will involve an additional cost. {% include product %} has observed that one month was the right policy to use globally, but you may want to adapt that policy to your studio workflows as needed. - -Read more about S3 Infrequent Access and other storage classes [here](https://aws.amazon.com/s3/storage-classes/). - -## S3 Bucket policy - -We recommend you restrict access to your S3 bucket to only your VPC and {% include product %} transcoding services IPs. There is an example policy, replace `your_vpc_id` and `your_s3_bucket` by your values. - -We strongly recommend you test media access and media transcoding in your migration test site right after applying the bucket policy changes to be sure your S3 bucket is still accessible from your VPC and from {% include product %} transcoders. - -``` -{ - "Version": "2012-10-17", - "Id": "Policy1415115909152", - "Statement": [ - { - "Sid": "AllowSSLRequestsOnly", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": [ - "arn:aws:s3:::your_s3_bucket", - "arn:aws:s3:::your_s3_bucket/*" - ], - "Condition": { - "Bool": { - "aws:SecureTransport": "false" - } - } - }, - { - "Sid": "Access-to-specific-VPC-only and Shotgun transcoder", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": "arn:aws:s3:::your_s3_bucket/*", - "Condition": { - "NotIpAddress": { - "aws:SourceIp": [ - "34.200.155.69/32", - "34.224.232.103/32", - "34.202.127.170/32" - ] - }, - "StringNotEquals": { - "aws:sourceVpc": [ - "vpc-2fd62a56", - "your_vpc_id" - ] - } - } - } - ] -} -``` - -## S3 endpoint policy - -We recommend setting a VPC endpoint policy on your S3 endpoint to allow access to your S3 bucket only. See [here](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) for an example. - -## 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. - -## Next Steps - -See [Migration](./migration.md) to migrate your production site to use the isolation features. - -Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ja/videos/images/dev-day-playlist.png b/docs/ja/videos/images/dev-day-playlist.png deleted file mode 100644 index 269534352..000000000 Binary files a/docs/ja/videos/images/dev-day-playlist.png and /dev/null differ diff --git a/docs/ja/videos/images/toolkit-playlist.png b/docs/ja/videos/images/toolkit-playlist.png deleted file mode 100644 index f87247919..000000000 Binary files a/docs/ja/videos/images/toolkit-playlist.png and /dev/null differ diff --git a/docs/ja/videos/video-webinars.md b/docs/ja/videos/video-webinars.md deleted file mode 100644 index b358a6f8a..000000000 --- a/docs/ja/videos/video-webinars.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: default -title: Toolkit ウェビナー -pagename: video-webinars -lang: ja ---- - -# {% include product %} Toolkit ウェビナー - -*更新日: 2020/5/8* - -## {% include product %} Toolkit ウェビナー プレイリスト - -[![](images/toolkit-playlist.png)](https://www.youtube.com/watch?v=rgzHEwUhENI&list=PLEOzU2tEw33q65lv0_AKDT6tbpi6vgMDH) - -## {% include product %} Toolkit ウェビナー ビデオ - - -1: {% include product %} Toolkit ウェビナー: 追加設定が不要な統合*(60 分)* - -新しい一連の Toolkit ウェビナーではまず、Rob Blau と Manne Öhrström が、すぐに開始できる統合についての質問に答えます。 - -[![](http://img.youtube.com/vi/rgzHEwUhENI/0.jpg)](http://www.youtube.com/watch?v=rgzHEwUhENI) - -2: {% include product %} Toolkit ウェビナー: 新しい既定の設定についての解説*(60 分)* - -このウェビナーでは、Josh Tomlinson と Rob Blau が、Toolkit プロジェクトの新しい既定の設定での変更点(およびその理由)について説明します。 - -[![](http://img.youtube.com/vi/eKHaC1dZCeE/0.jpg)](http://www.youtube.com/watch?v=eKHaC1dZCeE) - -3: {% include product %} Toolkit ウェビナー: パブリッシュ ワークフローのカスタマイズ - ライブ デモ*(60 分)* - -このウェビナーでは、Josh Tomlinson が、Maya でカスタムのパブリッシュ ワークフローを作成する方法について手順に沿って説明します。ここでは、パブリッシュ アプリの構成、構成方法、およびデータの収集とパブリッシュのためのカスタム フックの作成方法について学びます。 - -[![](http://img.youtube.com/vi/pH4mylrnktY/0.jpg)](http://www.youtube.com/watch?v=pH4mylrnktY) - -*補足資料* - -[パイプラインのチュートリアル](https://developer.shotgridsoftware.com/ja/cb8926fc/) - -4: {% include product %} Toolkit ウェビナー: クラウド設定とマルチロケーション ワークフロー*(60 分)* - -このウェビナーでは、Manne Ohrstrom が複数の場所にあるスタジオのアーティストのためのワークフローについて説明します。 - -[![](http://img.youtube.com/vi/NyIk07F2RoM/0.jpg)](http://www.youtube.com/watch?v=NyIk07F2RoM) - -*補足資料* - -[Toolkit の初期化と設定管理の開発者向けドキュメント](https://developer.shotgridsoftware.com/tk-core/initializing.html) - -[Manne が動画で引用している記述子タイプの一覧](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types) - -5: {% include product %} エコシステム ウェビナー: REST API *(60 分)* - -このウェビナーでは、Brandon Ashworth が、役に立つデモ、使用例、レシピの紹介を通じて REST API の全体像と重要性、使用方法について説明します。 - -[![](http://img.youtube.com/vi/3xPPj2pbHVQ/0.jpg)](http://www.youtube.com/watch?v=3xPPj2pbHVQ) - -*補足資料* - -[REST API リファレンス ドキュメント](https://developer.shotgridsoftware.com/rest-api/) - -6: {% include product %} Toolkit ウェビナー: 新しい Publisher API *(35 分)* - -最新の統合リリースには、改善された Publish API が含まれています。これによって GUI アプリからパブリッシュ ロジックを分離し、各自のツールから、あるいはレンダー ファームからパブリッシュを実行できます。このウェビナーでは、Jean-Francois Boismenu が、API を使用して Publisher UI からパブリッシュ項目ツリーをレンダー ファームのジョブに渡す方法について説明します。 - -[![](http://img.youtube.com/vi/ZxP3IXHt47U/0.jpg)](http://www.youtube.com/watch?v=ZxP3IXHt47U) - -*補足資料* - -[設定を含む Github リポジトリ](https://github.com/shotgunsoftware/tk-config-publish_api_webinar) - -[31:00 で言及されている Pull 要求](https://github.com/shotgunsoftware/tk-config-publish_api_webinar/pull/1) - -[Publish API のドキュメント](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -7: {% include product %} Toolkit ウェビナー: After Effects の統合*(38 分)* - -Adobe After Effects は、{% include product %} の最新の統合対象です。このウェビナーでは、Rob Blau が、機能のライブ デモを通じて After Effects の統合について詳しく説明します。また、Photoshop との統合における困難な仕事を振り返り、Adobe 統合のための再利用可能なフレームワークを開発する方法について議論を展開します。 - -また、Tannaz Sassooni が、新しい開発者向けドキュメント サイトを紹介し、{% include product %} との統合方法を学ぶユーザ向けによりわかりやすいコンテンツを作成している現状を説明します。 - -[![](http://img.youtube.com/vi/g-062_VTbAI/0.jpg)](http://www.youtube.com/watch?v=g-062_VTbAI) - -*補足資料* - -[After Effects の統合ドキュメント](https://developer.shotgridsoftware.com/ja/1eca509c/) - -[開発者用ドキュメント ポータル](https://developer.shotgridsoftware.com/ja) - -## {% include product %} Developer Day プレイリスト - - -[![](images/dev-day-playlist.png)](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d) - - -## {% include product %} Developer Day のビデオ - - -{% include product %} チームは SIGGRAPH 2018 および 2019 において {% include product %} Developer Day を発表しました。このコースへの参加を通じて、開発者はタスクの自動化、カスタム アプリの作成などで使用できるさまざまなリソースについて学ぶことができます。SIGGRAPH の後、Developer Day のコンテンツを特集した一連のウェビナーを開催しました。このプレイリストには、それらのウェビナーの記録が含まれています。 - -完全なスライド資料、サンプル コード、およびこのコンテンツに関連するその他の資料は、[2019 の場合はこちら](https://github.com/shotgunsoftware/sg-siggraph-2019)、[2018 の場合はこちら](https://github.com/shotgunsoftware/sg-devday-2018/)にあります。 - -1: SIGGRAPH Developer Day 2019: {% include product %} 開発の概要*(83 分)* - -このウェビナーでは、Tannaz Sassooni と Patrick Boucher が {% include product %} 開発の概要を説明し、{% include product %} の自動化エントリ ポイント、{% include product %} の Python および REST API、{% include product %} の API を使用してスタジオのタスクやデータ トラッキングを自動化する方法について紹介します。 - -[![](http://img.youtube.com/vi/i0aVJepZw8Y/0.jpg)](http://www.youtube.com/watch?v=i0aVJepZw8Y) - -[0:56](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=56s) 挨拶とオリエンテーション - -[3:00](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=180s) {% include product %} 開発の概要: 一般的なパイプラインのニーズと、{% include product %} の API と開発フレームワークを使用してそのニーズを満たす方法の概要を説明します。[Tannaz Sassooni] - -[25:59](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=1559s) {% include product %} API を使用したデータ管理の概要: 簡単な Python スクリプトと REST スクリプト、およびアクション メニュー アイテムを作成するためのフレームワークを使用して {% include product %} の API について説明します。[Patrick Boucher] - -2: SIGGRAPH Developer Day 2019: 高度な {% include product %} 開発*(78 分)* - -このウェビナーでは、Brandon Ashworth と Manne Öhrström が、{% include product %} について説明します。イベント デーモンと新しい Webhooks を使用して {% include product %} でのデータ変更に対応し、{% include product %} Toolkit を使用して簡単なパイプライン ツールを作成する方法を紹介します。 - -[![](http://img.youtube.com/vi/xUeY1pECHdI/0.jpg)](http://www.youtube.com/watch?v=xUeY1pECHdI) - -[0:39](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=39s) 挨拶とオリエンテーション - -[2:33](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=153s) {% include product %} イベントの操作 [Brandon Ashworth] - -[41:25](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=2485s) 複数のアーティスト アプリで実行する {% include product %} Tool の開発 [Manne Öhrström] - -3: SIGGRAPH Developer Day: Toolkit の管理*(1 時間 15 分)* - -このウェビナーでは、Josh Tomlinson、Tannaz Sassooni、Phil Scadding が、統合を引き継ぎ、カスタム ディレクトリ構造を作成し、フックによってスタジオのデータフローをさらに自動化する方法をデモを通じて説明します。 - -[![](http://img.youtube.com/vi/7qZfy7KXXX0/0.jpg)](http://www.youtube.com/watch?v=7qZfy7KXXX0) - -[0:00](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=0s) 挨拶とオリエンテーション - -[1:04](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=64s) {% include product %} Toolkit の管理: {% include product %} Desktop アプリを使用して一般的なコンテンツ作成ソフトウェアを起動する方法、および既定のパイプライン統合を使用して、アーティストが作業中のセッションを離れることなく {% include product %} で作業する方法について説明します。[Phil Scadding] - -[32:41](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=1961s) Toolkit の設定の概要: Toolkit のパイプライン設定を自由にナビゲートして、パイプライン ワークフローをカスタマイズする方法について説明します。[Tannaz Sassooni] - -[56:20](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=3380s) フックの管理: {% include product %} Toolkit の広範なフック セットを使用して設定にカスタム ロジックを追加し、Toolkit パイプラインをスタジオのニーズに合わせて調整する方法について説明します。[Josh Tomlinson] - -4: SIGGRAPH Developer Day: 高度な {% include product %} 開発*(1 時間 15 分)* - -Manne Ohrstrom、Jeff Beeland、Rob Blau が、ソース管理とクラウドベースのパイプライン展開のベスト プラクティスを実演し、アプリのビルドおよび Toolkit の標準フレームワークを使用した UI の迅速な設計とデータ処理について説明します。 - -[![](http://img.youtube.com/vi/bT2WlQaJVmY/0.jpg)](http://www.youtube.com/watch?v=bT2WlQaJVmY) - -[0:00](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=0s) 挨拶とオリエンテーション - -[2:31](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=151s) Toolkit プラットフォーム: 開発と展開パターン: 開発のワークフロー、バージョン管理のベスト プラクティス、{% include product %} サイトへのアップロードによるリモート ユーザへのパイプライン設定の配布など、Toolkit パイプライン構成を設定および展開するためのさまざまな方法について説明します。 [Manne Ohrstrom] - -[30:23](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=1823s) Toolkit プラットフォーム: 独自のアプリを作成する: 提供されている API とフレームワークを利用して強力な UI を迅速に作成する方法を、簡単な Toolkit アプリの作成を通じて説明します。[Jeff Beeland] - -[1:02:22](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=3742s) Autodesk Forge の紹介: オートデスクの一連の API 駆動型クラウド サービスである Forge、およびこのサービスを使用して {% include product %} をさらに便利にする方法について説明します。[Rob Blau] - diff --git a/docs/ko/action-menu-items/action-menu-items-create.md b/docs/ko/action-menu-items/action-menu-items-create.md deleted file mode 100644 index 91c14e7b3..000000000 --- a/docs/ko/action-menu-items/action-menu-items-create.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: default -title: 커스텀 액션 메뉴 항목 -pagename: action-menu-items-create -lang: ko ---- - -# 커스텀 액션 메뉴 항목 - -API 개발자는 액션 메뉴 항목(AMI)을 통해 엔티티별로 상황에 맞는 메뉴 항목을 커스터마이즈할 수 있습니다. 예를 들어, 여러 버전을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 "PDF 보고서 작성(Build a PDF Report)"을 선택할 수 있습니다. - -![보고서](./images/dv-custom-amis-01-report-01.png) - -## 액션 메뉴 항목 필드 - - - -## 액션 메뉴 항목 유형 - -생성할 수 있는 메뉴 항목 유형은 두 가지입니다. - -## HTTP URL 예시 - -한 예로, "PDF 보고서 작성(Build a PDF Report)"이라는 커스텀 메뉴 항목을 생성할 수 있습니다. 이렇게 하면 사람들이 버전 페이지로 이동하여 하나 이상의 버전을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 {% include product %} 메뉴에서 "PDF 보고서 작성(Build a PDF Report)"을 선택할 수 있습니다. 그러면 스크립트(사용자가 생성해야 함)가 실행되면서 깔끔한 형식의 보고서가 브라우저로 다시 전송됩니다. 작동 방식은 다음과 같습니다. - -### UI를 통해 메뉴 항목 생성 - -![AMI 메뉴](./images/dv-custom-amis-04-ami-menu-03.png) - - -설정(Settings) 메뉴에서 액션 메뉴 항목(Action Menu Items)을 선택하여 AMI 관리자(AMI Admin) 페이지를 엽니다. - -새 AMI를 생성하려면 ![AMI 추가(Add AMI)](./images/dv-custom-amis-05-add-ami-04.png). - -제목(Title) 및 기타 필수 필드를 입력하고, "액션 메뉴 항목 만들기(Create Action Menu Item)"를 클릭합니다. - -### 사용자가 AMI를 클릭하면 어떻게 될까요? - -{% include product %} 소프트웨어가 새 창에서, 또는 해당 옵션을 선택한 경우 모달 대화상자에서 POST 요청을 발송하고, 현재 페이지에서 수신 URL로 데이터를 함께 전송합니다(POST 요청의 일부로 전송). 다음은 이 워크플로우의 예입니다. - -* 사용자가 버전 페이지로 이동 -* 사용자가 하나 이상의 버전 선택 -* 사용자가 상황에 맞는 메뉴 호출(마우스 오른쪽 버튼 클릭 또는 도구막대에서 기어 메뉴 클릭) -* 사용자가 'PDF 보고서 작성(Build a PDF Report)' 클릭 -* {% include product %} 소프트웨어가 새 창에서 AMI의 URL로 POST 요청 발송({% include product %} 서버는 HTTPS에서 구동되고, 사용자 URL은 HTTP에서 구동되는 경우에는 브라우저 경고가 표시될 수 있음) -* 지정된 URL에 위치한 사용자 스크립트가 POST 데이터를 처리하고, PDF 문서 생성 -* 사용자가 보거나 다운로드할 수 있는 깔끔한 형식의 PDF 보고서가 사용자에게 다시 전송됨 - -## 커스텀 프로토콜 처리기 예시 - -커스텀 AMI를 한 차원 높게 구현하는 작업에는 커스텀 프로토콜 처리기(예: {% include product %}://process_version)를 설정하는 작업이 수반됩니다. 이렇게 하면 로컬 컴퓨터에서 스크립트를 통해 {% include product %} 소프트웨어를 Maya, RV 또는 Cinesync 같은 응용프로그램과 연동할 수 있습니다. 비-HTTP(S) 프로토콜을 지정하면 데이터가 POST 대신 GET을 통해 사용자 URL로 전송됩니다. 이 방법을 사용하여 내부 도구를 실행하고 다양한 요청을 발송할 수도 있습니다. - -커스텀 프로토콜에 관한 자세한 정보는 [커스텀 브라우저 프로토콜을 사용하여 응용프로그램 실행](https://developer.shotgridsoftware.com/ko/67695b40/)을 참조하십시오. - -> **참고:** [{% include product %} 통합](https://developer.shotgridsoftware.com/ko/d587be80/)을 통해 Maya 및 기타 소프트웨어 패키지와의 통합도 기본 제공됩니다. -### 경량 페이로드 - -커스텀 프로토콜 사용 시 쿼리 정보는 GET 요청으로 전송됩니다. 특정 운영 체제와 브라우저 조합에 따라 허용되는 GET 요청 크기에 다양한 제약이 있습니다. 그래서 커스텀 프로토콜 AMI에서 경량 페이로드 체크박스를 선택하는 것이 좋습니다. 경량 페이로드를 선택한 상태에서는 스크립트가 단일 이벤트 로그 항목 ID를 수신하고, 이를 불러와 레코드 `meta` 필드의 `ami_payload` 키를 읽어 풀 페이로드를 가져올 수 있습니다. - -## 예 - -다음은 시작하는 데 도움이 될 만한 몇 가지 관련 예시 스크립트입니다. - -* [ActionMenuItem 호출 처리](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) -* [버전 패키저](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_version_packager.html) - -## 페이로드 컨텐츠 - -### 사용자 데이터 - -* **user_id:** 현재 로그인한 사용자의 사용자 ID(예: 34) -* **user_login:** 현재 로그인한 사용자의 로그인 정보(예: joe) - -### 엔티티 데이터 - -* **entity_type:** 현재 페이지 또는 뷰의 엔티티 유형(예: 버전) -* **selected_ids:** 선택한 엔티티 ID를 쉼표로 분리한 목록(예: 931, 900) -* **ids:** 현재 페이지의 쿼리에서 반환된 모든 엔티티 ID를 쉼표로 분리한 목록. 이는 페이지 매김 때문에 보이지 않는 항목을 포함한 모든 ID를 반환합니다 (예: 931, 900, 904, 907). AMI에서 "선택 필수(Selection required)"를 선택한 경우 이 값은 **selected_ids**와 같아집니다. - -### 페이지 데이터 - -* **title:** 페이지 제목(예: "모든 버전") -* **page_id:** 액션 메뉴 항목이 클릭된 페이지의 ID(예: 1353) -* **server_hostname:** AMI가 트리거된 시스템의 호스트 이름. 스테이징 서버와 프로덕션 서버 등 같은 AMI를 호출하는 여러 서버가 있는 경우 유용할 수 있습니다. -* **referrer_path:** AMI가 호출된 URL의 정규 경로. -* **session_uuid:** 이 AMI가 호출된 창의 고유 식별자. "데이터 업데이트 폴링(Poll for Data Updates)" 체크박스 및 Python API의 [`set_session_uuid`](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid) 메서드와 함께 사용하면 AMI가 호출된 페이지로 정보를 다시 브로드캐스팅할 수 있습니다. **참고:** 이 기능의 업데이트 폴링은 기하급수적으로 감소하며, 폴링이 중지될 때까지 AMI가 업데이트되지 않으면 결국 중지되어 소스 페이지에서 업데이트를 볼 수 없게 될 수도 있습니다. -* **cols:** 페이지에 표시되는 모든 열의 시스템 필드 이름을 쉼표로 분리한 목록(예: code, sg_status_list, description) -* **column_display_names:** 페이지에 표시되는 모든 열의 표시 이름을 쉼표로 분리한 목록(예: 버전, 상태, 설명) -* **view:** AMI가 호출되었을 때 선택했던 뷰. 페이지 디자인 모드를 통해 특정 페이지에 대한 여러 뷰를 생성할 수 있습니다. -* **sort_column:** 정렬 기준이 된 열의 시스템 이름(예: code). 정렬 키가 여러 개인 경우 첫 번째 키만 전송합니다(**sort_columns** 참조). -* **sort_direction:** (예: asc 또는 desc) 정렬 방향이 여러 개인 경우 첫 번째 방향만 전송합니다(**sort_directions** 참조). -* **sort_columns:** 페이지 또는 뷰의 정렬 기준이 된 열의 시스템을 이름을 쉼표로 분리한 목록(예: code,created_at). 정렬 키가 여러 개인 경우에만 전송됩니다. -* **sort_directions:** 페이지 또는 뷰의 정렬 기준이 된 열의 시스템을 이름을 쉼표로 분리한 목록(예: code,created_at). 정렬 키가 여러 개인 경우에만 전송됩니다. -* **grouping_column:** 그룹 지정 기준이 된 열의 시스템 이름(예: code). 그룹 지정 열이 여러 개인 경우 첫 번째 열만 전송됩니다(**grouping_columns** 참조). -* **grouping_method:** 그룹 지정이 이루어진 방식(예: 엔티티 필드의 경우 `entitytype`, 날짜 필드의 경우 `month` 방식으로 그룹 지정). 그룹 지정 방식이 여러 개인 경우 첫 번째 방식만 전송됩니다(**grouping_columns** 참조). -* **grouping_direction:** 그룹 지정 방향(예: asc 또는 desc). 그룹 지정 방향이 여러 개인 경우 첫 번째 방향만 전송됩니다(**grouping_directions** 참조). -* **grouping_columns:** 데이터의 그룹 지정 기준이 된 열의 시스템 이름을 쉼표로 분리한 목록(예: code,created_at). 그룹 지정 열이 여러 개인 경우에만 전송됩니다. -* **grouping_methods:** 그룹 지정 방식을 쉼표로 분리한 목록(예: entity_type,month). 그룹 지정 열이 여러 개인 경우에만 전송됩니다. -* **grouping_directions:** 그룹 지정 방향을 쉼표로 분리한 목록(예: asc,desc). 그룹 지정 열이 여러 개인 경우에만 전송됩니다. - -### 프로젝트 데이터(현재 페이지의 모든 엔티티가 같은 프로젝트를 공유하는 경우에만 전송) - -* **project_name:** 프로젝트의 이름(예: Gunslinger) -* **project_id:** 프로젝트의 ID(예: 81) \ No newline at end of file diff --git a/docs/ko/action-menu-items/action-menu-items-intro.md b/docs/ko/action-menu-items/action-menu-items-intro.md deleted file mode 100644 index fa70ea7f1..000000000 --- a/docs/ko/action-menu-items/action-menu-items-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 액션 메뉴 항목 -pagename: action-menu-items-intro -lang: ko ---- - -# 액션 메뉴 항목 - -이 섹션에는 커스텀 AMI(액션 메뉴 항목) 만들기 및 커스텀 브라우저 프로토콜을 사용한 응용프로그램 실행에 대한 정보가 포함됩니다. \ No newline at end of file diff --git a/docs/ko/action-menu-items/custom-browser-protocols.md b/docs/ko/action-menu-items/custom-browser-protocols.md deleted file mode 100644 index d8f84ca18..000000000 --- a/docs/ko/action-menu-items/custom-browser-protocols.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -layout: default -title: 커스텀 브라우저 프로토콜을 사용하여 응용프로그램 실행 -pagename: custom-browser-protocols -lang: ko ---- - -# 커스텀 브라우저 프로토콜을 사용하여 응용프로그램 실행 - -## 컨텐츠 - -- [프로토콜 등록](#registering-a-protocol) - - [Windows에서 프로토콜 등록](#registering-a-protocol-on-windows) - - [OSX에서 프로토콜 등록](#registering-a-protocol-on-osx) - - [Linux에서 프로토콜 등록](#registering-a-protocol-on-linux) - -가장 실질적인 [AMI(액션 메뉴 항목)]() 버전은 로컬 컴퓨터에서 응용프로그램 또는 스크립트를 실행하는 AMI입니다. 이 AMI가 작동하도록 하려면 실행하려는 스크립트나 응용프로그램과 브라우저 간 연결을 설정해 주어야 합니다. 이 링크를 커스텀 브라우저 프로토콜이라고 합니다. - -사용자가 클릭하면 [foo] 응용프로그램이 실행되는 링크 유형을 설정하는 경우를 생각해 보겠습니다. 'http'를 접두사로 쓰는 대신 'foo' 같은 커스텀 프로토콜을 지정해야 합니다. 다음과 같은 링크가 될 것입니다. -``` -foo://some/info/here -``` - -운영 체제가 프로토콜 처리 방법을 알아야 합니다. 기본적으로 현재의 모든 운영 체제는 'http'는 기본 웹 브라우저가 처리해야 하고 'mailto'는 기본 메일 클라이언트가 처리해야 한다는 것을 알고 있습니다. 때로 응용프로그램이 설치되면 OS에 등록되고, OS에 특정 프로토콜에서 이 응용프로그램을 실행하도록 알립니다. - -예를 들어 RV를 설치하는 경우, 응용프로그램이 `rvlink://`를 OS에 등록하고, RV가 모든 `rvlink://` 프로토콜 요청을 처리하여 이미지나 시퀀스를 RV에 표시할 것임을 알립니다. 따라서 사용자가 {% include product %}에서 하는 것처럼 `rvlink://`로 시작하는 링크를 클릭하면 운영 체제가 이를 인식하여 해당 링크를 통해 RV를 실행하고, 응용프로그램이 링크를 구문 분석하여 어떻게 처리할지 결정합니다. - -URL 및 "rvlink" 프로토콜에 대한 자세한 정보는 [RV가 프로토콜 처리기 역할을 하는 방법에 대한 자세한 내용이 담긴 RV 사용자 매뉴얼](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_manuals_rv_user_manual_rv_user_manual_chapter_c_html#c-2-installing-the-protocol-handler)을 참조하십시오. - -# 프로토콜 등록 - -## Windows에서 프로토콜 등록 - -Windows에서 프로토콜 처리기를 등록할 때에는 Windows 레지스트리를 수정하게 됩니다. 다음은 해당 레지스트리 키의 일반적인 예입니다. - -``` -HKEY_CLASSES_ROOT -foo -(Default) = "URL:foo Protocol" -URL Protocol = "" -shell -open -command (Default) = "foo_path" "%1" -``` -대상 URL은 다음과 같습니다. - -``` -foo://host/path... -``` - -> **참고:** 자세한 정보는 [http://msdn.microsoft.com/ko-kr/library/aa767914(VS.85).aspx](https://docs.microsoft.com/ko-kr/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914(v=vs.85)?redirectedfrom=MSDN)를 참조하십시오. -> **Windows QT/QSetting 예시** - -개발 중인 응용프로그램이 QT(또는 PyQT / PySide) 프레임워크로 작성되었다면 QSetting 객체를 활용하여 레지스트리 키 생성을 관리할 수 있습니다. - -다음은 자동으로 응용프로그램이 레지스트리 키를 설정하도록 하기 위한 코드입니다. - -``` -// cmdLine points to the foo path. -//Add foo to the Os protocols and set foobar to handle the protocol -QSettings fooKey("HKEY_CLASSES_ROOT\\foo", QSettings::NativeFormat); -mxKey.setValue(".", "URL:foo Protocol"); -mxKey.setValue("URL Protocol", ""); -QSettings fooOpenKey("HKEY_CLASSES_ROOT\\foo\\shell\\open\\command", QSettings::NativeFormat); -mxOpenKey.setValue(".", cmdLine); -``` - -**{% include product %} AMI를 통해 Python 스크립트를 시작하는 Windows 예** - -로컬로 실행되는 많은 AMI가 Python 인터프리터를 통해 간단한 Python 스크립트를 시작하려고 합니다. 덕분에 GUI(PyQT, PySide 또는 사용자가 선택하는 GUI 프레임워크)를 통해 간단한 스크립트나 앱까지 실행할 수 있는 것입니다. 이렇게 시작해 보는 데 도움이 될 만한 유용한 예를 살펴보겠습니다. - -**1단계: 커스텀 "{% include product %}" 프로토콜 설정** - -Windows 레지스트리 편집기 사용: - -``` -[HKEY_CLASSES_ROOT\{% include product %}] -@="URL:{% include product %} Protocol" -"URL Protocol"="" -[HKEY_CLASSES_ROOT\{% include product %}\shell] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open\command] -@="python""sgTriggerScript.py""%1" -``` - -이 설정을 통해 스크립트의 첫 번째 인자 `sgTriggerScript.py` 및 두 번째 인자 `%1`을 통해 `python` 인터프리터를 실행하는 `{% include product %}://` 프로토콜을 등록합니다. `%1`은 브라우저에서 클릭한 URL 또는 호출된 AMI의 URL로 대체된다는 점에 유의하십시오. 이는 사용자의 Python 스크립트에서 첫 번째 인자가 됩니다. - -> **참고:** Python 인터프리터 및 Python 스크립트의 전체 경로가 필요할 수 있습니다. 적절하게 조정하십시오. - -**2단계: Python 스크립트의 수신 URL 구문 분석** - -스크립트에서 제공되는 첫 번째 인자인 URL을 가져와 이를 구성요소 단위로 구문 분석하여 AMI가 호출된 컨텍스트를 파악합니다. 다음 코드에서 이를 어떻게 수행하는지 보여 주는 간단한 스캐폴딩을 확인할 수 있습니다. - -**Python 스크립트** - -``` -import sys -import urlparse -import pprint -def main(args): - # Make sure we have only one arg, the URL - if len(args) != 1: - return 1 - # Parse the URL: - protocol, fullPath = args[0].split(":", 1) - path, fullArgs = fullPath.split("?", 1) - action = path.strip("/") - args = fullArgs.split("&") - params = urlparse.parse_qs(fullArgs) - # This is where you can do something productive based on the params and the - # action value in the URL. For now we'll just print out the contents of the - # parsed URL. - fh = open('output.txt', 'w') - fh.write(pprint.pformat((action, params))) - fh.close() -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) -``` - -**3단계: {% include product %} 인터페이스를 커스텀 프로토콜, 그리고 궁극적으로는 스크립트와 연결** - -끝으로 {% include product %}에 AMI를 생성합니다. 해당 URL 값은 `shotgrid://processVersion`이 됩니다. 이 AMI를 원하는 어떠한 엔티티 유형에든 할당할 수 있지만 다음 예에서는 버전 엔티티를 사용합니다. - -버전 페이지로 이동하여 버전을 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 AMI를 선택합니다. 이렇게 하면 브라우저가 `shotgrid://` URL을 열고, 이 URL이 다시 등록된 커스텀 프로토콜을 통해 사용자의 스크립트로 리디렉션됩니다. - -이제 스크립트와 같은 디렉토리에 있는 `output.txt` 파일에서 다음과 같은 항목을 볼 수 있습니다. -``` -('processVersion', - {'cols': ['code', - 'image', - 'entity', - 'sg_status_list', - 'user', - 'description', - 'created_at'], - 'column_display_names': ['Version Name', - 'Thumbnail', - 'Link', - 'Status', - 'Artist', - 'Description', - 'Date Created'], - 'entity_type': ['Version'], - 'ids': ['6933,6934,6935'], - 'page_id': ['4606'], - 'project_id': ['86'], - 'project_name': ['Test'], - 'referrer_path': ['/detail/HumanUser/24'], - 'selected_ids': ['6934'], - 'server_hostname': ['patrick.shotgunstudio.com'], - 'session_uuid': ['9676a296-7e16-11e7-8758-0242ac110004'], - 'sort_column': ['created_at'], - 'sort_direction': ['asc'], - 'user_id': ['24'], - 'user_login': ['shotgun_admin'], - 'view': ['Default']}) -``` - -**가능한 변형** - -AMI에서 URL의 `//` 부분 뒤에 오는 키워드를 변경함으로써 스크립트 내 `action` 변수의 내용을 변경할 수 있습니다. 이때 같은 `shotgrid://` 프로토콜이 유지되고, 커스텀 프로토콜 하나만 등록됩니다. 그러면 `action` 변수의 내용과 매개변수의 내용을 통해 의도된 동작이 무엇인지 스크립트가 파악할 수 있습니다. - -이 방법을 사용하여 응용프로그램을 열고, FTP 같은 서비스를 통해 컨텐츠를 업로드하고, 데이터를 보관하고, 이메일을 보내거나, PDF 보고서를 생성할 수 있습니다. - -## OSX에서 프로토콜 등록 - -OSX에서 프로토콜을 등록하려면 응용프로그램 또는 스크립트를 실행하도록 구성된 .app 번들을 생성해야 합니다. - -AppleScript 스크립트 편집기에서 다음 스크립트를 작성하는 것부터 시작하십시오. - -``` -on open location this_URL - do shell script "sgTriggerScript.py '" & this_URL & "'" -end open location -``` - -> **팁:** tcsh 등의 특정 셸에서 Python을 실행하도록 하려면 do shell script를 다음과 같이 변경하면 됩니다. -> -> do shell script "tcsh -c \"sgTriggerScript.py '" & this_URL & "'\"" -In the Script Editor, save your short script as an “Application Bundle”. - -저장된 응용프로그램 번들을 찾아 컨텐츠를 엽니다. 그런 다음 info.plist 파일을 열고, 다음을 plist dict에 추가합니다. -``` - CFBundleIdentifier - com.mycompany.AppleScript.Shotgun - CFBundleURLTypes - - - CFBundleURLName - Shotgun - CFBundleURLSchemes - - shotgun - - - -``` - -다음 세 개 문자열을 바꾸면 됩니다. -``` -com.mycompany.AppleScript.{% include product %} -{% include product %} -{% include product %} -``` - -세 번째 문자열은 프로토콜 처리기이므로 URL은 다음과 같습니다. - -``` -shotgrid://something -``` - - -끝으로, `.app` 번들을 Mac의 Applications 폴더로 옮깁니다. 그런 다음 번들을 두 번 클릭하여 프로토콜을 운영 체제에 등록합니다. - -데이터 흐름은 이렇습니다. {% include product %}에서 AMI를 클릭하거나 `shotgrid://`으로 시작하는 URL을 클릭하면 `.app` 번들이 응답하여 이 URL을 Python 스크립트로 전달합니다. 이때 Windows 예에서 사용한 것과 같은 스크립트를 사용할 수 있으며, 동일한 가능성이 모두 적용됩니다. - -## Linux에서 프로토콜 등록 - -다음 코드를 사용합니다. -``` -gconftool-2 -t string -s /desktop/gnome/url-handlers/foo/command 'foo "%s"' -gconftool-2 -s /desktop/gnome/url-handlers/foo/needs_terminal false -t bool -gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled true -t bool -``` -그리고 다음 위치에서 로컬 GConf 파일의 설정을 전역 기본값으로 사용합니다. -``` -/etc/gconf/gconf.xml.defaults/%gconf-tree.xml -``` - -Gnome 설정만 변경해도 KDE에도 적용됩니다. Firefox 및 GNU IceCat은 인식할 수 없는 접두사(`foo://` 등)를 만나면 사용자가 실행 중인 창 관리자에 상관없이 gnome-open을 따릅니다. 때문에 KDE의 Konqueror 같은 다른 브라우저는 이 시나리오에서 작동하지 않습니다. - -Ubuntu에서 액션 메뉴 항목의 프로토콜 처리기를 설정하는 방법에 대한 자세한 정보는 [http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity](http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity)를 참조하십시오. \ No newline at end of file diff --git a/docs/ko/action-menu-items/images/dv-asterisk.png b/docs/ko/action-menu-items/images/dv-asterisk.png deleted file mode 100644 index c2fbed5a7..000000000 Binary files a/docs/ko/action-menu-items/images/dv-asterisk.png and /dev/null differ diff --git a/docs/ko/action-menu-items/images/dv-custom-amis-01-report-01.png b/docs/ko/action-menu-items/images/dv-custom-amis-01-report-01.png deleted file mode 100644 index ce8d1afd6..000000000 Binary files a/docs/ko/action-menu-items/images/dv-custom-amis-01-report-01.png and /dev/null differ diff --git a/docs/ko/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png b/docs/ko/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png deleted file mode 100644 index 3452ce477..000000000 Binary files a/docs/ko/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png and /dev/null differ diff --git a/docs/ko/action-menu-items/images/dv-custom-amis-05-add-ami-04.png b/docs/ko/action-menu-items/images/dv-custom-amis-05-add-ami-04.png deleted file mode 100644 index 8b26fda7d..000000000 Binary files a/docs/ko/action-menu-items/images/dv-custom-amis-05-add-ami-04.png and /dev/null differ diff --git a/docs/ko/contribution.md b/docs/ko/contribution.md deleted file mode 100644 index 1fc5c954d..000000000 --- a/docs/ko/contribution.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: 기여 가이드 -pagename: contribution-index -lang: ko ---- - -# 기여 가이드 - -가능한 모든 사항을 공개하려는 노력의 일환으로 Autodesk Shotgun 팀에서는 [Creative Commons 라이센스](https://github.com/shotgunsoftware/developer-beta/blob/master/LICENSE.md)에 따라 공용 리포지토리에 개발자 문서를 올리기로 했습니다. 이 문서를 더 효율적으로 작성할 수 있는 방법을 아신다면 개선 사항과 함께 리포지토리에 대한 pull 요청을 주십시오. pull 요청을 수락하기 위해서는 다음 기여자 계약서 중 하나에 서명하여 보내 주셔야 합니다. - -- [개별 분담금 계약서](../all_langs/contribution/ind_contrib_agmt_for_shotgun_developer_documentation.pdf) -- [기업 분담금 계약서](../all_langs/contribution/corp_contrib_agmt_for_shotgun_developer_documentation.pdf) - -위의 계약서 중 하나를 제출한 후에는 변경 사항 제출 방법에 대한 [읽어보기](https://github.com/shotgunsoftware/developer-beta/#Making-a-change-to-the-documentation)의 지침을 따르면 됩니다. diff --git a/docs/ko/developer-overview.md b/docs/ko/developer-overview.md deleted file mode 100644 index 6bec1ebc4..000000000 --- a/docs/ko/developer-overview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 개발자 개요 -pagename: developer-overview -lang: ko ---- - -# 개발자 개요 - -### Python API - -{% include product %} 소프트웨어는 {% include product %}에 액세스하고 다른 도구와 통합하는 데 사용할 수 있는 Python 기반 API를 제공합니다. 이 API는 {% include product %} 서버에서 생성, 읽기, 업데이트 및 삭제 액션의 실행을 허용하는 CRUD 패턴을 따릅니다. 각 요청은 단일 엔티티 유형에 작용하며, 특정 액션에 따라 필터, 반환할 열, 정렬 정보, 그 밖에 추가 옵션을 정의할 수 있습니다. - -* [코드 리포지토리](https://github.com/shotgunsoftware/python-api) -* [설명서](http://developer.shotgridsoftware.com/python-api/) -* [포럼](https://community.shotgridsoftware.com/c/pipeline/6) - -### 이벤트 트리거 프레임워크 - -{% include product %} 이벤트 스트림에 액세스하려면 이벤트 테이블을 모니터링하고 새로운 이벤트를 파악하여 처리하는 작업을 반복하는 것이 좋습니다. - -많은 항목이 성공적으로 작동하려면 이 프로세스를 거쳐야 하며, 비즈니스 규칙과 직접적인 관련이 없는 항목은 적용해야 하는지 여부를 결정해야 합니다. - -프레임워크의 역할은 비즈니스 로직 구현자를 대신해 따분한 모니터링 작업을 처리해 주는 것입니다. - -이 프레임워크는 서버에서 실행되면서 {% include product %} 이벤트 스트림을 모니터링하는 데몬 프로세스입니다. 이벤트가 발견되면 데몬은 이벤트를 일련의 등록된 플러그인으로 전달합니다. 각각의 플러그인은 원하는 대로 이벤트를 처리할 수 있습니다. - -* [코드 리포지토리](https://github.com/shotgunsoftware/shotgunevents) -* [설명서](https://github.com/shotgunsoftware/shotgunevents/wiki) - -### 액션 메뉴 항목 프레임워크 - -API 개발자는 엔티티별로 상황에 맞는 메뉴 항목을 커스터마이즈할 수 있습니다. 예를 들어, 버전 페이지에서 여러 버전을 선택하고 마우스 오른쪽 버튼을 클릭한 후 PDF 보고서 작성 등을 선택할 수 있습니다. 이를 액션 메뉴 항목(AMI)이라고 합니다. - -* [설명서]() -* [코드 리포지토리 예](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) diff --git a/docs/ko/event-daemon/event-daemon-api.md b/docs/ko/event-daemon/event-daemon-api.md deleted file mode 100644 index 3bb8ffe53..000000000 --- a/docs/ko/event-daemon/event-daemon-api.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default -title: API -pagename: event-daemon-api -lang: ko ---- - -# API - - -## registerCallbacks - -프레임워크에 플러그인의 이벤트 처리 진입점에 대해 알리는 데 사용되는 모든 플러그인의 전역 수준 함수입니다. - -**registerCallbacks(reg)** - -* reg: [`Registrar`](#Registrar)과 상호 작용하여 프레임워크에 호출할 함수를 알립니다. - - - -## Registrar - -Registrar은 프레임워크에 플러그인과 상호 작용하는 방법을 알리는 데 사용되는 객체이며 [`registerCallbacks`](#registerCallbacks) 함수로 전달됩니다. - -### 속성 - - -**logger** - -[`getLogger`](#getLogger)를 참조하십시오. - -### 메서드 - - -**getLogger** - -플러그인 내에서 메시지를 기록하는 데 사용되는 python Logger 객체를 가져옵니다. - - - -__setEmails(*emails)__ - -이 플러그인 또는 해당 콜백 중 하나에서 잘못된 상황이 발생하는 경우 오류 및 중요한 알림을 수신해야 하는 이메일을 설정합니다. - -구성 파일에 지정된 기본 주소로 이메일을 보내려면(기본값) - -```python -reg.setEmails(True) -``` - -이메일을 비활성화하려면(오류 메시지를 받아볼 수 없게 되므로 이 방법은 권장되지 않음) - -```python -reg.setEmails(False) -``` - -특정 주소로 이메일을 보내려면 - -```python -reg.setEmails('user1@domain.com') -``` - -또는 - -```python -reg.setEmails('user1@domain.com', 'user2@domain.com') -``` - - -**registerCallback(sgScriptName, sgScriptKey, callback, matchEvents=None, args=None, stopOnError=True)** - -이 플러그인에 대해 엔진에 콜백을 등록합니다. - -* `sgScriptName`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 이름입니다. -* `sgScriptKey`: {% include product %} 스크립트 페이지에서 가져온 스크립트의 응용프로그램 키입니다. -* `callback`: `__call__` 메서드가 있는 함수 또는 객체입니다. [`exampleCallback`](#exampleCallback)을 참조하십시오. -* `matchEvents`: 콜백에 전달하려는 이벤트 필터입니다. -* `args`: 프레임워크가 콜백으로 다시 전달되게 하려는 모든 객체입니다. -* `stopOnError`: 부울이며 이 콜백의 예외가 이 플러그인의 모든 콜백에 의한 이벤트 처리를 중단해야 합니다. 기본값은 `True`입니다. - -`sgScriptName`은 {% include product %}에 대한 플러그인을 식별하는 데 사용됩니다. 모든 이름은 여러 콜백에서 공유되거나, 단일 콜백에 대해 고유할 수 있습니다. - -`sgScriptKey`는 {% include product %}에 대한 플러그인을 식별하는 데 사용되며 지정된 `sgScriptName`에 적합한 키여야 합니다. - -필터와 일치하는 이벤트를 처리해야 하는 경우 지정된 콜백 객체가 호출됩니다. 호출 가능한 모든 객체를 실행할 수 있어야 하지만 여기에 클래스를 사용하는 것은 적합하지 않습니다. 함수 또는 `__call__` 메서드가 있는 인스턴스를 사용하는 것이 더 적합합니다. - -`matchEvent` 인수는 등록 중인 콜백의 관심 이벤트를 지정할 수 있는 필터입니다. `matchEvents`가 지정되지 않았거나 None을 지정하면 모든 이벤트가 콜백으로 전달됩니다. 그렇지 않으면 `matchEvents` 필터의 각 키는 이벤트 유형이고 각 값은 가능한 속성 이름 목록입니다. - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], -} -``` - -여러 이벤트 유형 또는 속성 이름이 있을 수 있습니다. - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], - 'Shotgun_Version_Change': ['description', 'sg_status_list'] -} -``` - -지정된 속성 이름이 있는 이벤트 유형을 필터링할 수 있습니다. - -```python -matchEvents = { - '*': ['sg_status_list'], -} -``` - -또한 지정된 이벤트 유형의 속성 이름을 필터링할 수도 있습니다. - -```python -matchEvents = { - 'Shotgun_Version_Change': ['*'] -} -``` - -다음은 유효하며 아무것도 지정하지 않는 것과 같은 기능을 하지만 실제로는 쓸모가 없습니다. - -```python -matchEvents = { - '*': ['*'] -} -``` - -“_New” 또는 “_Retirement” 등 필드용이 아닌 특정 이벤트 유형에 대해 일치시키는 경우 목록을 제공하지 않고 대신 `None`을 값으로 전달합니다. - -```python -matchEvents = { - 'Shotgun_Version_New': None -} -``` - -`args` 인수는 이벤트 프레임워크 자체에서 사용되지 않지만 수정 없이 콜백으로 다시 전달됩니다. - -{% include info title="참고" content="`args` 인수의 요점은 [`registerCallbacks`](#registerCallbacks) 함수에서 시간이 많이 걸리는 작업을 처리할 수 있고 이벤트 처리 시 사용자에게 다시 전달할 수 있다는 것입니다." %} - -`args` 인수의 또 다른 용도는 데이터를 공유하도록 여러 콜백에 대한 변경 가능한 공통 인수로 전달하는 것입니다(예: `dict`). - -`stopOnError` 인수는 이 콜백의 예외가 플러그인 내 모든 콜백에 대한 이벤트 처리가 중지될 수 있는지 여부를 시스템에 알려 줍니다. 기본적으로 이 값은 `True`이지만 `False`로 전환할 수 있습니다. 오류가 있는 경우 오류에 대한 메일 알림이 계속 표시되지만 이벤트 처리는 중지되지 않습니다. 콜백당 설정이므로 `True`인 중요한 콜백을 사용할 수 있지만 `False`인 다른 콜백을 사용할 수 있습니다. - - -## 콜백 - -[`Registrar.registerCallback`](#registerCallback)에 의해 등록된 모든 플러그인 진입점은 일반적으로 다음과 같은 전역 수준 함수입니다. - - -**exampleCallback(sg, logger, event, 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 deleted file mode 100644 index 4cb61f1be..000000000 --- a/docs/ko/event-daemon/event-daemon-configuration.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -layout: default -title: 구성 -pagename: event-daemon-configuration -lang: ko ---- - -# 구성 - -다음 안내서는 스튜디오에 대한 {% include product %}Events 구성을 지원합니다. - -{% include product %}Events에 대한 대부분의 구성은 `shotgunEventDaemon.conf` 파일에 의해 제어됩니다. 이 파일에는 요구사항에 따라 변경할 수 있는 여러 가지 설정이 있습니다. 대부분의 기본값은 대부분의 스튜디오에서 올바르게 작동하지만, 몇몇 설정은 반드시 구성해야 합니다(특히 {% include product %}EventDaemon이 {% include product %} 서버에 연결할 수 있도록 {% include product %} 서버 URL, 스크립트 이름, 응용 프로그램 키 등). - -{% include info title="참고" content="**Windows:** Windows 사용자는 Windows에서 해당하는 구성 파일의 모든 경로를 변경해야 합니다. 로깅을 포함한 모든 경로를 단일 위치로 유지해 단순하게 관리하는 것이 좋습니다. 이 문서에서는 Windows 경로를 설명할 때 `C:\shotgun\shotgunEvents`를 주로 사용합니다." %} - - -## Edit shotgunEventDaemon.conf - -{% include product %}Events를 설치했다면 다음 단계는 텍스트 편집기에서 `shotgunEventDaemon.conf` 파일을 열고 스튜디오의 요구사항에 맞게 설정을 수정하는 것입니다. 대부분의 스튜디오에는 기본값이 적합하지만, 데몬을 실행하기 위해서 반드시 제공해야 할 기본값이 없는 설정도 일부 있습니다. - -*반드시* 제공해야 하는 항목은 다음과 같습니다. - -- {% include product %} 서버 URL -- {% include product %}에 연결하기 위한 스크립트 이름 및 응용프로그램 키 -- 실행할 {% include product %}EventDaemon 플러그인에 대한 전체 경로 - -선택적으로, SMTP 서버 및 이메일 관련 설정을 지정하여 오류 이메일 알림을 설정할 수도 있습니다. 이 작업은 선택 사항이지만 이 값을 설정하도록 선택하면 이메일 섹션의 모든 구성 값을 입력해야 합니다. - -데몬에서 성능 문제가 발생한 경우 문제 해결에 도움이 될 수 있는 선택적 타이밍 로그에 대한 섹션도 있습니다. 타이밍 로깅을 활성화하면 자체 개별 로그 파일에 타이밍 정보가 입력됩니다. - - -### {% include product %} 설정 - -`[{% include product %}]` 섹션 아래에서 기본 토큰을 `server`, `name` 및 `key`에 대한 올바른 값으로 변경합니다. 이러한 값은 {% include product %}에 연결하는 표준 API 스크립트에 제공한 값과 같아야 합니다. - -예 - -``` -server: https://awesome.shotgunstudio.com -name: {% include product %}EventDaemon -key: e37d855e4824216573472846e0cb3e49c7f6f7b1 -``` - - -### 플러그인 설정 - -실행할 플러그인을 찾을 위치를 {% include product %}EventDaemon에 알려야 합니다. `[plugins]` 섹션 아래에서 기본 토큰을 `paths`에 대한 올바른 값으로 변경합니다. - -여러 위치를 지정할 수 있습니다(데몬을 사용하는 부서나 리포지토리가 여러 개인 경우 유용할 수 있음). 이 값은 읽을 수 있는 기존 디렉토리에 대한 전체 경로여야 합니다. - -예 - -``` -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 파일을 다른 디렉토리에 저장해야 하는 경우 현재 디렉토리에서 해당 위치에 대한 심볼릭 링크를 생성하는 것이 좋습니다. - -{% include info title="참고" content="위 방법이 효과가 없는 경우 config 파일의 검색 경로는 `shotgunEventDaemon.py` 스크립트 하단의 `_getConfigPath()` 함수에 위치합니다." %} - -{% include info title="참고" content="**Windows의 경우** Windows에 `/etc`가 존재하지 않으므로 구성 파일은 Python 파일과 동일한 디렉터리에 있어야 합니다." %} - - -## 데몬 테스트 - -데몬은 백그라운드에서 실행되기 때문에 테스트하기가 어려울 수 있습니다. 항상 어떻게 작동하고 있는지 확인할 수 있는 명확한 방법이 없습니다. 다행스럽게도 {% include product %}EventDaemon에는 이를 포그라운드 프로세스로 실행할 수 있는 옵션이 있습니다. 이제 최소 필수 설정을 완료했으므로 데몬을 테스트하고 어떻게 되는지 확인해 보겠습니다. - -{% include info title="참고" content="여기에 사용된 기본값에는 루트 액세스 권한이 필요합니다(예: /var/log 디렉터리에 쓰려는 경우). 제공된 사용 예에서는 이를 위해 `sudo`를 사용하여 실행됩니다." %} - -``` -$ sudo ./{% include product %}EventDaemon.py foreground -INFO:engine:Using {% include product %} version 3.0.8 -INFO:engine:Loading plugin at /usr/local/shotgun/{% include product %}Events/src/examplePlugins/logArgs.py -INFO:engine:Last event id (248429) from the {% include product %} database. -``` - -스크립트를 시작할 때 위의 행이 표시됩니다(일부 세부 사항은 다를 수 있음). 스크립트를 포그라운드에서 실행하기로 선택했기 때문에 오류가 발생하면 스크립트가 종료됩니다. 중단되면 몇몇 일반적인 오류가 아래에 표시됩니다. - -`logArgs.py` 플러그인은 {% include product %}에서 발생한 이벤트를 찾아 로거로 전달합니다. 아주 흥미진진하지는 않지만 스크립트가 실행되고 플러그인이 작동하게 하는 간단한 방법입니다. 분주한 스튜디오에 있다면 이미 빠르게 진행되는 메시지의 흐름을 알아차리셨을 것입니다. 그렇지 않은 경우 웹 브라우저에서 {% include product %} 서버에 로그인하여 값을 변경하거나 값을 생성합니다. 터미널 창에 변경 사항으로 생성된 이벤트 유형에 해당하는 로그 구문이 출력됩니다. - -{% include info title="참고" content="logArgs.py 파일에는 적절한 값을 입력해야 하는 변수가 있습니다. 로깅이 올바르게 작동하려면 shotgunEventDaemon.conf 파일에 사용된 것과 동일한 값을 포함하도록 '$DEMO_SCRIPT_NAMES$' 및 '$DEMO_API_KEY$'를 편집해야 합니다." %} - -로그 파일에 로깅된 내용이 보이지 않는 경우 {% include product %}EventDaemon.conf에서 로그 관련 설정을 확인하여 ``logging`` 값이 로그 INFO 수준 메시지로 설정되어 있고 - -``` -logging: 20 -``` - -logArgs 플러그인도 INFO 수준 메시지를 표시하도록 구성되어 있는지 확인하십시오. registerCallbacks() 메서드의 끝에는 읽어야 하는 행이 있습니다. - -```python -reg.logger.setLevel(logging.INFO) -``` - -모두 올바르게 표시된다고 가정하면, {% include product %}EventDaemon 프로세스를 중지하려는 경우 터미널에 `-c`을 입력하면 스크립트가 종료되는 것을 확인할 수 있습니다. - - -## 데몬 실행 - -테스트 시 모든 것이 순조로웠다고 가정하면, 이제 의도대로 백그라운드에서 데몬을 실행할 수 있습니다. - -``` -$ sudo ./{% include product %}EventDaemon.py start -``` - -결과가 표시되지 않으며 터미널에서 컨트롤이 반환되어야 합니다. 두 가지 방법으로 제대로 실행되고 있는지 확인할 수 있습니다. 첫 번째는 실행 중인 프로세스를 확인하고 이것이 그중 하나인지 확인하는 것입니다. - -``` -$ ps -aux | grep shotgunEventDaemon -kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 grep shotgunEventDaemon -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 -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -``` - -웹 브라우저로 돌아가서 엔티티를 약간 변경합니다. 그런 다음 터미널로 다시 돌아가 출력된 내용이 있는지 확인합니다. 다음과 같이 표시되어야 합니다. - -``` -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -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에서 로그 관련 설정을 확인하십시오. - - -### 로깅에 대한 참고 사항 - -로그 회전은 {% include product %} 데몬의 기능이라는 점에 유의하십시오. 로그는 매일 밤 자정에 회전되며 플러그인당 10개의 일일 파일이 보관됩니다. - - -## 일반적인 오류 - -다음은 직면할 수 있는 몇몇 일반적인 오류와 그 해결 방법에 대한 몇 가지 설명입니다. 문제가 발생하면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -### 잘못된 경로: $PLUGIN_PATHS$ - -shotgunEventDaemon.conf 파일에서 플러그인 경로를 지정해야 합니다. - -### 권한이 거부됨: '/var/log/shotgunEventDaemon' - -쓰기 작업을 위해 데몬에서 로그 파일을 열 수 없습니다. - -`sudo`로 데몬을 실행하거나 ShotgunEventDaemon.conf의 `logPath` 및 `logFile` 설정에서 지정한 로그 파일에 쓸 수 있는 권한이 있는 사용자로 데몬을 실행해야 할 수 있습니다. (기본 위치는 일반적으로 루트 소유의 `/var/log/shotgunEventDaemon`입니다.) - -### ImportError: 이름이 shotgun_api3인 모듈 없음 - -{% include product %} API가 설치되어 있지 않습니다. 현재 디렉토리에 있거나 `PYTHONPATH`의 디렉토리에 있어야 합니다. - -sudo로 실행해야 하는데 `PYTHONPATH`가 올바르게 설정되어 있는 경우, sudo가 환경 변수를 재설정한다는 점을 기억하십시오. `PYTHONPATH`를 유지하거나 sudo -e(?)를 실행하도록 sudoers 파일을 편집할 수 있습니다. - - -## 구성 파일 설정 리스트 - - -### 데몬 설정 - -다음은 일반적인 데몬 작동 설정입니다. - -**pidFile** - -pidFile은 데몬이 실행 중인 동안 해당 프로세스 ID를 저장하는 위치입니다. 데몬이 실행되는 동안 이 파일이 제거되면 다음 이벤트 처리 루프를 거친 후 완전히 종료됩니다. - -디렉토리가 이미 있으며 쓰기 가능해야 합니다. 원하는 대로 파일 이름을 지정할 수 있지만 실행 중인 프로세스와 일치하는 기본 이름을 사용하는 것이 좋습니다. - -``` -pidFile: /var/log/shotgunEventDaemon.pid -``` - -**eventIdFile** - -eventIdFile은 데몬이 마지막으로 처리된 {% include product %} 이벤트의 ID를 저장할 위치를 나타냅니다. 이를 통해 데몬은 마지막 종료 시 중지된 지점으로 복귀할 수 있으므로 이벤트가 누락되지 않습니다. 데몬이 마지막으로 종료된 이후의 이벤트를 무시하려면 데몬을 시작하기 전에 이 파일을 제거해 시작된 후 새로 생성된 이벤트만 데몬이 처리하게 합니다. - -이 파일은 *각* 플러그인에 대한 마지막 이벤트 ID를 추적하여 이 정보를 pickle 형식으로 저장합니다. - -``` -eventIdFile: /var/log/shotgunEventDaemon.id -``` - -**logMode** - -로깅 모드는 다음 두 값 중 하나로 설정할 수 있습니다. - -- **0** = 기본 로그 파일에 모든 로그 메시지 기록 -- **1** = 엔진에 대해 하나의 기본 파일, 플러그인당 하나의 파일 - -값 **1**을 사용할 때 엔진에서 생성되는 로그 메시지는 `logFile` 구성 설정에서 지정한 기본 로그 파일에 로깅됩니다. 플러그인이 로깅하는 모든 메시지는 `plugin.`라는 파일에 저장됩니다. - -``` -logMode: 1 -``` - -**logPath** - -로그 파일을 저장할 경로(기본 엔진 및 플러그인 로그 파일 모두) 기본 로그 파일의 이름은 아래의 ``logFile`` 설정에 의해 제어됩니다. - -``` -logPath: /var/log/shotgunEventDaemon -``` - -{% include info title="참고" content="shotgunEventDaemon에 이 디렉터리에 대한 쓰기 권한이 있어야 합니다. 일반적인 설정에서는 시스템이 시작될 때 데몬이 자동으로 실행되도록 설정되고 해당 시점에 루트 권한이 부여됩니다." %} - -**logFile** - -기본 데몬 로그 파일의 이름입니다. 로깅은 매일 밤 자정에 회전하는 로그 파일을 최대 10개까지 저장하도록 구성되어 있습니다. - -``` -logFile: shotgunEventDaemon -``` - -**logging** - -로그 파일로 전송된 로그 메시지의 임계값 수준입니다. 이 값은 기본 디스패치 엔진의 기본값이며 플러그인별 기준으로 재정의될 수 있습니다. 이 값은 Python 로깅 모듈로 전달됩니다. 가장 일반적인 값은 다음과 같습니다. -- **10:** 디버그 -- **20:** 정보 -- **30:** 경고 -- **40:** 오류 -- **50:** 중요 - -``` -logging: 20 -``` - -**timing_log** - -이 값을 `on`로 설정하여 타이밍 로깅을 활성화하면, 데몬의 성능 문제를 더 간단히 해결할 수 있게 해주는 타이밍 정보가 있는 별도의 로그 파일이 생성됩니다. - -각 콜백 호출에 대해 제공되는 타이밍 정보는 다음과 같습니다. - -- **event_id** 콜백을 트리거한 이벤트의 ID -- **created_at** 이벤트가 {% include product %}에서 생성된 시점의 ISO 형식 타임스탬프 -- **callback** `plugin.callback` 형식으로 호출된 콜백의 이름 -- **start** 콜백 처리 시작 시점의 ISO 형식 타임스탬프 -- **end** 콜백 처리 종료 시점의 ISO 형식 타임스탬프 -- **duration** 콜백 처리 시간의 `DD:HH:MM:SS.micro_second` 형식 지속 시간 -- **error** 콜백의 실패 여부 값은 `False` 또는 `True`일 수 있습니다. -- **delay** 이벤트 생성과 콜백별 처리 시작 시간 사이의 지연 시간(`DD:HH:MM:SS.micro_second` 형식) - -**conn_retry_sleep** - -{% include product %}에 대한 연결이 실패할 경우 다시 연결을 시도할 때까지 대기하는 시간(초)입니다. 이를 통해 간헐적인 네트워크 문제, 서버 재시작, 응용프로그램 유지 관리 작업 등이 발생할 수 있습니다. - -``` -conn_retry_sleep = 60 -``` - -**max_conn_retries** - -오류 수준 메시지를 로깅하기 전에 연결을 다시 시도하는 횟수입니다(아래의 이메일 알림이 구성된 경우 이메일을 보낼 수 있음). - -``` -max_conn_retries = 5 -``` - -**fetch_interval** - -각 이벤트 배치가 처리된 후 새 이벤트를 요청할 때까지 대기할 시간(초)입니다. 이 설정은 일반적으로 조정할 필요가 없습니다. - -``` -fetch_interval = 5 -``` - - -### {% include product %} 설정 - -다음은 {% include product %} 인스턴스와 관련된 설정입니다. - -**server** - -연결할 {% include product %} 서버의 URL입니다. - -``` -server: %(SG_ED_SITE_URL)s -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. `SG_ED_SITE_URL` 환경 변수를 ShotGrid 서버의 URL(예: https://awesome.shotgunstudio.com)로 설정하십시오." %} - -**name** - -{% include product %}EventDaemon이 연결해야 하는 {% include product %} 스크립트 이름입니다. - -``` -name: %(SG_ED_SCRIPT_NAME)s -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. `SG_ED_SCRIPT_NAME` 환경 변수를 ShotGrid 서버의 스크립트 이름(예: `shotgunEventDaemon`)" %} - -**key** - -위에 지정된 스크립트 이름에 대한 {% include product %} 응용프로그램 키입니다. - -``` -key: %(SG_ED_API_KEY)s -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. `SG_ED_API_KEY` 환경 변수를 위의 스크립트 이름에 대한 응용프로그램 키로 설정하십시오(예:`0123456789abcdef0123456789abcdef01234567`)." %} - -**use_session_uuid** - -{% include product %} 인스턴스의 모든 이벤트에서 session_uuid를 설정해 플러그인이 생성한 모든 이벤트에 전파합니다. 이렇게 하면 {% include product %} UI가 플러그인의 결과로 발생하는 업데이트를 표시할 수 있습니다. - -``` -use_session_uuid: True -``` - -- 이 기능을 사용하려면 {% include product %} server v2.3 이상이 필요합니다. -- 이 기능을 사용하려면 {% include product %} API v3.0.5 이상이 필요합니다. - -{% include info title="참고" content="ShotGrid UI는 원래 이벤트를 생성한 브라우저 세션에 *대해서만* 업데이트를 실시간으로 표시합니다. 동일한 페이지가 열려 있는 다른 브라우저 창에는 실시간 업데이트가 표시되지 않습니다." %} - - -### 플러그인 설정 - -**paths** - -프레임워크가 로드할 플러그인을 찾아야 하는 쉼표로 구분된 전체 경로 목록입니다. 상대 경로를 사용하지 마십시오. - -``` -paths: /usr/local/shotgun/plugins -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. 플러그인 파일(예: Windows의 경우 `/usr/local/shotgun/shotgunEvents/plugins` 또는 `C:\shotgun\shotgunEvents\plugins`)의 위치로 값을 설정해야 합니다." %} - - -### 이메일 설정 - -로그를 지속적으로 추적하기보다는 활성 알림 시스템을 가지고 있을 것이라는 점을 알고 있으므로 이 방식이 오류 보고에 사용됩니다. - -아래의 모든 설정이 제공되는 경우 레벨 40(ERROR)보다 높은 오류가 이메일을 통해 보고됩니다. - -이메일 알림이 전송되려면 이 모든 값을 입력해야 합니다. - -**server** - -SMTP 연결에 사용해야 하는 서버입니다. SMTP 연결에 대한 자격 증명을 제공하기 위해 사용자 이름 및 암호 값의 주석 처리를 해제할 수 있습니다. 서버에서 인증을 사용하지 않는 경우에는 `username` 및 `password`에 대한 설정에 주석 처리를 해야 합니다. - -``` -server: smtp.yourdomain.com -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. smtp.yourdomain.com 토큰을 SMTP 서버의 주소로 대체해야 합니다(즉, `smtp.mystudio.com`)." %} - -**username** - -SMTP 서버에 인증이 필요한 경우 이 행의 주석 처리를 제거하고 SMTP 서버에 연결하는 데 필요한 사용자 이름으로 `SG_ED_EMAIL_USERNAME` 환경 변수를 구성했는지 확인하십시오. - -``` -username: %(SG_ED_EMAIL_USERNAME)s -``` - -**password** - -SMTP 서버에 인증이 필요한 경우 이 행의 주석 처리를 제거하고 SMTP 서버에 연결하는 데 필요한 암호로 `SG_ED_EMAIL_PASSWORD` 환경 변수를 구성했는지 확인하십시오. - -``` -password: %(SG_ED_EMAIL_PASSWORD)s -``` - -**from** - -이메일에 사용되어야 하는 보낸 사람 주소입니다. - -``` -from: support@yourdomain.com -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. `support@yourdomain.com`을 유효한 값으로 대체해야 합니다(예: `noreply@mystudio.com`)." %} - -**to** - -알림을 받을 이메일 주소의 쉼표로 구분된 목록입니다. - -``` -to: you@yourdomain.com -``` - -{% include info title="참고" content="여기에는 기본값이 없습니다. `you@yourdomain.com`을 유효한 값으로 대체해야 합니다(예: `shotgun_admin@mystudio.com`)." %} - -**subject** - -{% include product %} 이벤트 프레임워크에서 보낸 알림을 정렬할 수 있도록 메일 클라이언트가 사용할 수 있는 이메일 제목 접두어입니다. - -``` -subject: [SG] -``` diff --git a/docs/ko/event-daemon/event-daemon-example-plugins.md b/docs/ko/event-daemon/event-daemon-example-plugins.md deleted file mode 100644 index 7d7d8a0b8..000000000 --- a/docs/ko/event-daemon/event-daemon-example-plugins.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: 예시 플러그인 -pagename: event-daemon-example-plugins -lang: ko ---- - -# 예시 플러그인 - -소스 코드에 [예시 플러그인 폴더](https://github.com/shotgunsoftware/shotgunEvents/tree/master/src/examplePlugins)가 있습니다. - -이 페이지에는 누구나 시작할 수 있는 몇 가지 간단한 예제가 나와 있습니다. 이 코드를 복사해서 붙여넣으면 실행됩니다(참고: `script_name` 및 `script_key` 값을 설치에 해당되는 값으로 업데이트해야 함). - -먼저, 다음은 SG 이벤트 코드를 기록해야 하는 템플릿입니다. -## 1. 코드 템플릿 -### 이를 복사하여 붙여넣으면 새 플러그인을 시작할 수 있습니다. -```python -""" -Necessary Documentation of the code - -Author: You -Template Author: Andrew Britton -""" - -def registerCallbacks(reg): - # This takes the form of: - # matchEvents = {'Shotgun_Entity_EventType': ['list', 'of', 'field', 'names', 'you', 'need', 'sg_custom_field']} - # the 'id' is always returned, in addition to any fields specifically requested by your callback - matchEvents = { - 'Shotgun_Task_Change': ['content'] - } - - # script_name and script_key are defined by you whenever you create a SG script - # the entry_function_call refers to the function that performs the work of the event plugin - reg.registerCallback('script_name', 'script_key', entry_function_call, matchEvents, None) - - -# This gives you -# shotgun handle = sg -# a logger object... please use this instead of python print, especially if you respect your time and your fellow developers -# an event object... this is the metadata that describes what's happening with the particular event. -# some very good information comes from the event['meta'] object, below is the example event['meta'] data from the subject renamer plugin -# { -# "type": "attribute_change", -# "attribute_name": "subject", -# "entity_type": "Note", -# "entity_id": 2, -# "field_data_type": "text", -# "old_value": "My Note Subject", -# "new_value": "2017-05 May-09 - My Note Subject" -# } -def entry_function_call(sg, logger, event, args): - # Now do stuff - pass -``` -## 2. 노트 제목 이름 바꾸기 -### `New` 엔티티 이벤트 작업 -이 작업은 간단해서 시작하기 좋지만 `Shotgun_Entity_New` 이벤트를 포착하는 것은 매우 까다로운 측면이기도 합니다. -```python -import time -from pprint import pprint - -def registerCallbacks(reg): - matchEvents = { - 'Shotgun_Note_New': ['*'], - } - - reg.registerCallback('script_name', 'script_key', Function_Name, matchEvents, None) - - -def Function_Name(sg, logger, event, args): - # 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") - asset_id = event['meta']['entity_id'] - asset_type = event['meta']['entity_type'] - - asset = sg.find_one(asset_type, [['id', 'is', asset_id]], ['subject']) - if asset['subject'] is None: - current_name = current_date + ' - ' + event['project']['name'] + ' - ' + event['user']['name'] - else: - current_name = current_date + ' - ' + asset['subject'] - - # Modify ALL notes except those in 'Software Development' - if event['project'] == None: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - return - - if event['project']['id'] != 116: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - - else: - 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 - -""" -Create a Note when a field is deleted - -Author: Andrew Britton -""" - -def registerCallbacks(reg): - """ - fn: registerCallbacks - @brief required function. It connects to the event daemon and calls the trashedFieldWarning Function. - It runs every time a field is deleted (retired) - - @param[in] reg variable that is required by shotgun event daemon plugins - @return none - """ - matchEvents = { - 'Shotgun_DisplayColumn_Retirement': ['*'] - } - - reg.registerCallback('script_name', 'script_key', - trashedFieldWarning, matchEvents, None) - - -def CreateNote(sg, logger, event): - constants = {'note header': ':: FIELD DELETION :: '} - def GetListOfPipelineUsers(): - pipeline_users = sg.find('Group', [['code', 'is', 'People_Who_Need_to_Know']], ['code', 'users', 'addressings_to', - 'sg_ticket_type', 'sg_priority']) - return pipeline_users[0]['users'] - - def CreateToolsNote(): - # Note to members of the pipeline group - # Body text = CreateNoteRequestText() - # Date Created = event['event']['created_at'] - # Created By = event['user']['id'] - # Project = Software Development['id'] - # Subject = ':: Field Delete Warning :: ' + event['entity']['name'] - note_data = { - 'project': {'type': 'Project', 'id': 'ID OF PROJECT WHERE YOU WANT THE NOTE REPORTED TO'}, - # ex: 'project': {'type': 'Project', 'id': 2}, - 'content': CreateNoteRequestText(), - 'created_at': event['created_at'], - 'created_by': event['user'], - 'addressings_to': GetListOfPipelineUsers(), - 'subject': constants['note header'] + event['meta']['display_name'] - } - - sg.create('Note', note_data) - - def CreateNoteRequestText(): - OUT = '' - - # Tool Name = event['entity']['name'] - # sg_assigned_to = members of the pipeline group - # Description = linked Ticket decription - # Project = decided in GUI - # sg_sg_request_ticket = event['entity']['id'] - # task_template = Software task template - # Software Projects = defined in GUI - - OUT = '::FIELD DELETION WARNING::\n' - OUT += ':: A Field was deleted ::\n' - OUT += ':: It was called %s ::\n'%event['meta']['display_name'] - - return OUT - - logger.info('::WARNING:: A FIELD has been deleted') - CreateToolsNote() - - -def trashedFieldWarning(sg, logger, event, args): - """ - fn: finalizeTasksFromShot - @brief Function to create and send a warning note, via SG, whenever a field is deleted - event['entity']['id'] yields the id of the current entity that was caught by the plugin as having been changed. - ie. this is the id of the field that was just deleted - - @param[in] sg defines the Shotgun handle to access the database - @param[in] logger sets logging messages to the shotgun event daemon - @param[in] event the collection of shots that have changed - @param[in] args useless variable for this particular function - @return none - """ - - if event['meta']['entity_type'] == 'DisplayColumn': - logger.info('This DisplayColumn was deleted %s', event['meta']['display_name']) - if event['event_type'] == 'Shotgun_DisplayColumn_Retirement': - logger.info('The incoming event call is for deleting a field from an entity. Field name: %s', event['meta']['display_name']) - - # logger.info(' TEST ') - # logger.info('Deleted Field ID is #%d, and is called: %s', event['entity']['id'], event['entity']['name']) - - 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 deleted file mode 100644 index 210fac783..000000000 --- a/docs/ko/event-daemon/event-daemon-installation.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default -title: 설치 -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 %} 서버에 대한 네트워크 액세스 - - -## {% include product %} API 설치 - -Python이 이미 컴퓨터에 설치되어 있다고 가정하면 {% include product %} 이벤트 데몬에서 Python API를 사용하여 {% include product %} 서버에 연결할 수 있도록 {% include product %} Python API를 설치해야 합니다. 다음과 같은 방법으로 이 작업을 수행할 수 있습니다. - -- {% include product %} 이벤트 데몬과 동일한 디렉토리에 배치합니다. -- [`PYTHONPATH` 환경 변수](http://docs.python.org/tutorial/modules.html)에서 지정한 디렉토리 중 하나에 배치합니다. - -터미널 창에서 {% include product %} API가 제대로 설치되었는지 테스트하려면: - -``` -$ python -c "import shotgun_api3" -``` - -출력이 표시되지 않아야 합니다. 아래 출력과 같은 결과가 있는 경우 `PYTHONPATH`가 올바르게 설정되었는지 또는 {% include product %} API가 현재 디렉토리에 있는지 확인해야 합니다. - -``` -$ python -c "import shotgun_api3" -Traceback (most recent call last): -File "", line 1, in -ImportError: No module named shotgun_api3 -``` - - -## {% include product %}Events 설치 - -{% include product %}Events 설치 위치는 사용자가 임의로 선택할 수 있습니다. 다시 말하지만 Python 및 {% include product %} API가 컴퓨터에 설치되어 있고 {% include product %} 서버에 대한 네트워크 액세스 권한이 있는 경우 어디에서나 실행할 수 있습니다. 그러나 스튜디오에 적합한 위치(예: `/usr/local/shotgun/shotgunEvents`)에 설치하는 것이 타당하므로 이 위치를 예제에서 사용합니다. - -소스 및 아카이브는 GitHub([https://github.com/shotgunsoftware/shotgunEvents]())에서 사용할 수 있습니다. - -{% include info title="참고" content="**Windows:** Windows 서버가 있는 경우 `C:\shotgun\shotgunEvents`를 사용할 수 있지만 이 설명서에서는 Linux 경로를 사용합니다." %} - - -### 소스 복제 - -컴퓨터에 `git`가 설치된 경우 소스를 가져오는 가장 쉬운 방법은 프로젝트를 복제하는 것입니다. 이러한 방식으로 업데이트를 쉽게 가져와 버그 수정 및 새로운 기능으로 최신 상태를 유지할 수도 있습니다. - -``` -$ cd /usr/local/shotgun -$ git clone git://github.com/shotgunsoftware/shotgunEvents.git -``` - -{% include info title="경고" content="아무 것도 손실되지 않도록 GitHub에서 업데이트를 가져오기 전에 항상 shotgunEvents의 구성, 플러그인 및 모든 수정 사항을 백업해야 합니다. 또는 자체 변경 리포지토리를 유지할 수 있도록 프로젝트를 직접 분기(fork)합니다. :)" %} - - -### 아카이브 다운로드 - -컴퓨터에 `git`가 없거나 단순히 소스 아카이브를 다운로드하려는 경우에는 다음 단계를 수행하여 시작할 수 있습니다. - -- [https://github.com/shotgunsoftware/shotgunEvents/archives/master]()로 이동합니다. -- 원하는 형식으로 소스를 다운로드합니다. -- 이를 컴퓨터에 저장합니다. -- `/usr/local/shotgun` 디렉토리에 파일을 추출합니다. -- `/usr/local/shotgun/shotgunsoftware-shotgunEvents-xxxxxxx` 디렉토리 이름을 `/usr/local/shotgun/shotgunEvents`로 바꿉니다. - -#### `/usr/local/shotgun`에 아카이브 압축 풀기 - -.tar.gz 아카이브의 경우: - -``` -$ tar -zxvf shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.tar.gz -C /usr/local/shotgun -``` - -.zip 아카이브의 경우: - -``` -$ unzip shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.zip -d /usr/local/shotgun -``` - -그런 다음 GitHub에서 할당된 디렉토리 이름을 `shotgunEvents`로 바꿀 수 있습니다. - -``` -$ mv shotgunsoftware-shotgunEvents-1c0c3eb shotgunEvents -``` - -결과는 다음과 같습니다. - -``` -$ ls -l /usr/local/shotgun/shotgunEvents -total 16 --rw-r--r-- 1 kp wheel 1127 Sep 1 17:46 LICENSE --rw-r--r-- 1 kp wheel 268 Sep 1 17:46 README.mkd -drwxr-xr-x 9 kp wheel 306 Sep 1 17:46 docs -drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src -``` - - -### 설치 요구사항 - -리포지토리의 루트에 `requirements.txt` 파일이 제공됩니다. 이 파일을 사용하여 필요한 패키지를 설치해야 합니다. - -``` -$ pip install -r /path/to/requirements.txt -``` - - - -### Windows 세부 사항 - -Windows 시스템에 다음 중 하나가 필요합니다. - -* [PyWin32](http://sourceforge.net/projects/pywin32/)와 함께 Python이 설치됨 -* [Active Python](http://www.activestate.com/activepython) - -활성 Python은 {% include product %} 이벤트 데몬을 Windows 서비스 아키텍처와 통합하는 데 필요한 PyWin32 모듈과 함께 제공됩니다. - -다음 명령을 실행하여 서비스 데몬을 설치할 수 있습니다. `C:\Python27_32\python.exe`가 Python 실행 파일의 경로라고 가정하므로 그에 맞게 조정합니다. - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py install -``` - -또는 다음 방법으로 제거할 수 있습니다. - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py remove -``` - -서비스 시작 및 중지는 일반 서비스 관리 도구 또는 다음과 같은 명령행을 통해 수행할 수 있습니다. - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py start -> C:\Python27_32\python.exe shotgunEventDaemon.py stop -``` - -대부분의 경우 나열된 각 명령을 시스템의 관리 사용자로 실행해야 합니다. 이렇게 하려면 cmd 응용프로그램을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택합니다. - -{% include info title="참고" content="네트워크 위치의 Windows에서 데몬을 설치한 경우 또는 네트워크 위치에서 로그 및 기타 리소스를 읽고 쓰도록 구성한 경우, 서비스를 실행하는 사용자를 로컬 시스템 계정에서 네트워크 리소스에 액세스할 수 있는 도메인 계정으로 변경하기 위해 서비스 특성을 편집해야 합니다." %} diff --git a/docs/ko/event-daemon/event-daemon-plugins.md b/docs/ko/event-daemon/event-daemon-plugins.md deleted file mode 100644 index f90ec6921..000000000 --- a/docs/ko/event-daemon/event-daemon-plugins.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: 플러그인 -pagename: event-daemon-plugins -lang: ko ---- - -# 플러그인 개요 - -플러그인 파일은 구성 파일에 지정된 플러그인 경로의 *.py* 파일입니다. - -코드 다운로드 시 `src/examplePlugins` 폴더에 몇 가지 예시 플러그인이 제공됩니다. 이러한 플러그인은 생성된 특정 이벤트를 찾기 위해 자체 플러그인을 빌드하고 해당 이벤트에 작동하여 {% include product %} 인스턴스에서 다른 값을 변경하는 방법에 대한 간단한 예제를 제공합니다. - -플러그인을 업데이트할 때마다 데몬을 다시 시작할 필요가 없으며 데몬이 플러그인이 업데이트되었음을 감지하고 자동으로 다시 로드합니다. - -플러그인에서 오류가 발생할 경우 데몬이 충돌하지 않습니다. 플러그인은 다시 업데이트(수정)될 때까지 비활성화됩니다. 다른 모든 플러그인은 계속 실행되고, 이벤트는 계속 처리됩니다. 데몬은 오류가 발생한 플러그인이 성공적으로 처리된 마지막 이벤트 ID를 계속해서 트래킹합니다. 플러그인이 업데이트(수정)되면 데몬이 이를 다시 로드하고 해당 플러그인이 중단된 위치부터 이벤트를 처리하려고 시도합니다. 다시 모든 것이 정상이라고 가정하면 데몬은 현재 이벤트까지 플러그인을 포착한 다음 정상적으로 모든 플러그인을 사용하여 이벤트를 계속 처리합니다. - -{% include product %} 이벤트 처리 플러그인에는 두 가지 주요 부분이 있습니다. 콜백 등록 함수와 콜백 수입니다. - - -## registerCallbacks 함수 - -프레임워크에서 로드하려면 플러그인이 최소한 다음 함수를 구현해야 합니다. - -```python -def registerCallbacks(reg): - pass -``` - -이 함수는 이벤트 처리 시스템에 이벤트를 처리하기 위해 호출할 함수를 전달하는 데 사용됩니다. - -이 함수는 [`Registrar`](./event-daemon-api.md#Registrar) 객체인 하나의 인수를 사용해야 합니다. - -[`Registrar`](./event-daemon-api.md#Registrar)는 아주 중요한 한 가지 메서드를 사용합니다([`Registrar.registerCallback`](./event-daemon-api.md#registercallback)). - -{% include product %} 이벤트를 처리해야 하는 각 함수에 대해 [`Registrar.registerCallback`](./event-daemon-api.md#registerCallback)을 적절한 인수와 함께 한 번 호출합니다. - -원하는 수만큼 함수를 등록할 수 있으며, 파일의 모든 함수를 이벤트 처리 콜백으로 등록해야 하는 것은 아닙니다. - - -## 콜백 - -시스템에 등록할 콜백은 다음 4개의 인수를 사용해야 합니다. - -- 추가 정보를 위해 {% include product %}를 쿼리해야 하는 경우 {% include product %} 연결 인스턴스 -- 보고에 사용해야 하는 Python Logger 객체. 오류 및 중요 메시지는 구성된 모든 사용자에게 이메일을 통해 전송됩니다. -- 처리할 {% include product %} 이벤트 -- 콜백 등록 시 전달되는 `args` 값. (참조 항목: [`Registrar.registerCallback`](./event-daemon-api.md#wiki-registerCallback)) - -{% include info title="경고" content="플러그인에서 원하는 모든 작업을 수행할 수 있지만 예외가 프레임워크에 다시 발생하면 디스크의 파일이 변경될 때까지(읽기: 수정) 잘못된 콜백(및 포함된 모든 콜백)이 있는 플러그인이 비활성화됩니다." %} - - -## 로깅 - -이벤트 플러그인에서 print 문을 사용하는 것은 권장되지 않습니다. Python 표준 라이브러리에서 표준 로깅 모듈을 사용하는 것이 좋습니다. 로거 객체는 다양한 함수로 제공됩니다. - -```python -def registerCallbacks(reg): - reg.setEmails('root@domain.com', 'tech@domain.com') # Optional - reg.logger.info('Info') - reg.logger.error('Error') # ERROR and above will be sent via email in default config -``` - -및 - -```python -def exampleCallback(sg, logger, event, args): - logger.info('Info message') -``` - -이벤트 프레임워크가 데몬으로 실행 중인 경우 이 프레임워크가 파일에 로깅되며, 그렇지 않으면 stdout에 로깅됩니다. - - -## 강력한 플러그인 빌드 - -데몬은 {% include product %}에 대해 쿼리를 실행하지만 실패할 경우 find() 명령을 재시도하는 기본 기능이 포함되어 있어 데몬 자체에 특정한 수준의 안전성을 제공합니다. - -[https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456](https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456) - -플러그인에 네트워크 리소스(즉, {% include product %} 또는 다른 리소스)가 필요한 경우 자체 재시도 메커니즘/안전성을 제공해야 합니다. {% include product %} 액세스의 경우 데몬의 항목을 제거하고 해당 기능을 플러그인에 제공할 수 있는 도우미 함수 또는 클래스를 만들 수 있습니다. - -{% include product %} Python API가 이미 네트워크 문제에 대해 어느 정도 재시도하지만 몇 분 동안 실행할 수 있는 {% include product %} 유지보수 기간에 도달하거나 네트워크 문제가 발생하면 충분하지 않을 수 있습니다. - -[https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554](https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554) - -플러그인이 수행하는 작업에 따라 이벤트를 처리하는 동안 문제가 발생하는 경우 트래킹을 계속하도록 플러그인을 등록할 수도 있습니다. registerCallback 함수의 stopOnError 인수를 확인합니다. - -[https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback) - -{% include info title="참고" content="플러그인이 중지되지 않지만 실패한 시도는 재시도하지 않습니다." %} diff --git a/docs/ko/event-daemon/event-daemon-technical-details.md b/docs/ko/event-daemon/event-daemon-technical-details.md deleted file mode 100644 index 160d2df8c..000000000 --- a/docs/ko/event-daemon/event-daemon-technical-details.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: default -title: 기술적 상세 정보 -pagename: event-daemon-technical-details -lang: ko ---- - -# 기술 개요 - - -## 이벤트 유형 - -알림을 받을 수 있게 트리거를 등록할 수 있는 이벤트 유형은 일반적으로 다음 양식을 따릅니다. `Shotgun_[entity_type]_[New|Change|Retirement|Revival]`. 다음은 이 패턴의 몇 가지 예입니다. - - Shotgun_Note_New - Shotgun_Shot_New - Shotgun_Task_Change - Shotgun_CustomEntity06_Change - Shotgun_Playlist_Retirement - Shotgun_Playlist_Revival - -이 패턴의 일부는 엔티티 레코드 활동과 관련되지 않고 응용프로그램 동작의 요점과 관련된 이벤트에 사용됩니다. - - CRS_PlaylistShare_Create - CRS_PlaylistShare_Revoke - SG_RV_Session_Validate_Success - Shotgun_Attachment_View - Shotgun_Big_Query - Shotgun_NotesApp_Summary_Email - Shotgun_User_FailedLogin - Shotgun_User_Login - Shotgun_User_Logout - Toolkit_App_Startup - Toolkit_Desktop_ProjectLaunch - Toolkit_Desktop_AppLaunch - Toolkit_Folders_Create - Toolkit_Folders_Delete - -이 목록은 완벽하지는 않지만 시작하기에 적합합니다. {% include product %} 사이트의 활동 및 이벤트 유형에 대해 자세히 알아보려면 다른 엔티티 유형의 다른 그리드 페이지를 통해 필터링하고 검색할 수 있는 EventLogEntries 페이지를 참조하십시오. - -### 썸네일의 이벤트 로그 항목 -엔티티에 대한 새 썸네일이 업로드되면 ``` `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", - "old_value": null, "new_value": 11656, - "is_transient": true -} -``` -2. 썸네일을 사용할 수 있게 되면 이제 ```‘is_transient’``` 필드 값을 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 -} -``` -3. 썸네일을 다시 업데이트하면 다음 새 이벤트 로그 항목이 표시됩니다. -``` -{ "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 -} -{ "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. 첨부 파일의 썸네일이 자리 표시자 썸네일인 경우 ```‘old_value’``` 필드는 null로 설정됩니다. - - - -## 플러그인 처리 순서 - -각 이벤트는 항상 동일한 예측 가능한 순서로 처리되므로 플러그인이나 콜백이 상호 종속적인 경우 처리를 안전하게 구성할 수 있습니다. - -구성 파일은 하나 이상의 플러그인 위치를 포함하는 `paths` 구성을 지정합니다. 목록의 위치가 앞쪽일수록 포함된 플러그인이 더 빨리 처리됩니다. - -플러그인 경로 내의 각 플러그인은 알파벳 오름차순으로 처리됩니다. - -{% include info title="참고" content="내부적으로 파일 이름은 목록에 추가되고 정렬됩니다." %} - -마지막으로, 플러그인에 의해 등록된 각 콜백이 등록 순서대로 호출됩니다. 첫 번째 등록된 콜백이 첫 번째로 실행됩니다. - -하나 이상의 콜백과 같은 플러그인에서 상태를 공유해야 하는 기능을 유지하는 것이 좋습니다. - - -## 상태 공유 - -여러 콜백에 대해 상태를 공유해야 하는 여러 옵션이 있습니다. - -- 전역 변수. Ick. 이 작업을 수행하지 마십시오. -- 상태 정보가 들어 있는 가져온 모듈. Ick, 단순한 전역보다는 낫습니다. -- [`Registrar.registerCallback`](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#registerCallbacks)을 호출할 때 `args` 인수로 전달된 변경 가능한 것. 설계의 상태 객체 또는 `dict`처럼 간단한 것. 선호. -- 객체 인스턴스에 대해 `__call__`과 같은 콜백을 구현하고 콜백 객체 초기화 시 일부 공유 상태 객체를 제공합니다. 가장 강력하면서도 가장 어려운 방법입니다. 위의 args 인수 방법에 비해 중복될 수 있습니다. - - - -## 이벤트 백로그 - -이 프레임워크는 모든 플러그인이 관심 있는 모든 단일 이벤트를 예외 없이 정확히 한 번만 처리하도록 설계되었습니다. 이를 위해, 프레임워크는 각 플러그인에 대해 처리되지 않은 이벤트의 백로그를 저장하고 각 플러그인이 제공된 마지막 이벤트를 기억합니다. 다음은 백로그가 발생할 수 있는 상황에 대한 설명입니다. - -### 이벤트 로그 항목 시퀀스의 간격으로 인한 백로그 - -{% include product %}에서 발생하는 각 이벤트(필드 업데이트, 엔티티 생성, 엔티티 삭제 등)는 해당 이벤트 로그 항목에 대한 고유 ID 번호가 있습니다. 경우에 따라 ID 번호 시퀀스에 간격이 있을 수 있습니다. 이러한 간격은 여러 가지 이유로 발생할 수 있지만 그중 하나는 아직 완료되지 않은 대규모 데이터베이스 트랜잭션입니다. - -이벤트 로그 시퀀스에 간격이 생길 때마다 이후 처리를 위해 "누락된" 이벤트 ID가 백로그에 입력됩니다. 이렇게 하면 이벤트 데몬이 긴 데이터베이스 트랜잭션이 완료된 후 이 트랜잭션의 이벤트를 처리할 수 있습니다. - -실패한 트랜잭션 또는 되돌린 페이지 설정 수정과 같이 이벤트 로그 시퀀스의 간격을 채울 수 없는 경우도 있습니다. 이 경우 5분 시간 제한 후 시스템이 이벤트 로그 항목 ID 번호를 더 이상 기다리지 않고 백로그에서 제거합니다. 이렇게 되면 "백로그 이벤트 ID #에서 시간 제한이 경과됨"이라는 메시지가 표시됩니다. 이벤트 시퀀스의 간격이 처음 표시되고 이미 시간 제한을 초과한 것으로 간주되면 메시지가 “이벤트 # 발생하지 않음 - 무시 중”으로 표시되고 첫 번째 위치의 백로그에 입력되지 않습니다. - -### 플러그인 오류로 인한 백로그 - -정상적으로 작동하는 동안 프레임워크는 항상 각 플러그인에서 처리된 마지막 이벤트를 트래킹합니다. 어떤 이유로든 실패한 플러그인이 있는 경우 추가 이벤트 처리를 중지합니다. 예를 들어 버그를 수정함으로써 플러그인을 수정하면, 마지막으로 저장된 이벤트에서 수정된 플러그인에 대한 이벤트 처리가 시작됩니다. 이 작업은 새로 수정된 플러그인이 과거에 실패와 수정 사이에 발생한 이벤트를 포함하여 모든 이벤트를 처리하도록 하기 위해 수행됩니다. 오래 전에 오류가 발생했다면 많은 이벤트를 재검토해야 할 수 있으며, 수정된 플러그인이 정상적으로 작동하던 다른 플러그인을 따라잡는 데 시간이 걸릴 수 있습니다. - -수정된 플러그인이 따라잡는 동안 다른 플러그인은 동일한 플러그인에 의해 단일 이벤트가 두 번 처리되지 않도록 하기 위해 이러한 이벤트를 무시합니다. 이렇게 되면 "이벤트 X가 너무 오래되었습니다. 마지막으로 처리된 이벤트는 (Y)입니다."라는 메시지가 나타납니다. 이 메시지는 디버그 메시지이며 무시해도 됩니다. - -이를 회피할 수 있는 공식적인 방법은 없습니다. 이 프레임워크는 모든 단일 플러그인이 모든 이벤트를 한 번만 처리하도록 설계되었습니다. 그러나 Python과 그 pickle 데이터 형식에 익숙하다면 데몬을 중지하고 Python 인터프리터/대화식 셸로 .id 파일을 열고 해당 내용을 pickle 모듈로 디코딩하고 해당 내용을 편집하여 저장된 ID를 제거하면 누적 백로그를 건너뛸 수 있습니다. 이 방법은 지원되지 않으며 사용자 자신의 책임하에 수행해야 합니다. 이 작업을 수행하기 전에 `.id` 파일을 적절하게 백업하십시오. diff --git a/docs/ko/event-daemon/event-daemon.md b/docs/ko/event-daemon/event-daemon.md deleted file mode 100644 index 14315245b..000000000 --- a/docs/ko/event-daemon/event-daemon.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: default -title: 이벤트 구동 트리거 작성 -pagename: event-daemon -lang: ko ---- - -# {% include product %} 이벤트 프레임워크 -이 소프트웨어는 [Rodeo Fx](http://rodeofx.com) 및 Oblique의 지원을 받아 [Patrick Boucher](http://www.patrickboucher.com)에서 처음 개발했습니다. 이제 [{% include product %} 소프트웨어](http://www.shotgridsoftware.com) [오픈 소스 이니셔티브](https://github.com/shotgunsoftware)의 일부가 되었습니다. - -이 소프트웨어는 라이선스 파일 또는 [오픈 소스 이니셔티브](http://www.opensource.org/licenses/mit-license.php) 웹 사이트에서 찾을 수 있는 MIT 라이선스로 제공됩니다. - -**컨텐츠:** - -- [개요](#overview) -- [프레임워크의 이점](#advantages-of-the-framework) -- [이벤트 구동 트리거 작성](#writing-event-driven-triggers) - - [활용 사례](#example-use-cases) - - [이벤트 구동 트리거의 작동 방식](#how-event-driven-triggers-work) - - [EventLog 폴링과 트리거 비교](#polling-the-eventlog-versus-triggers) - - [이벤트 유형](#event-types) - - [트랜잭션 및 잠재적 누락 이벤트](#transactions-and-potentially-missing-events) - -## 개요 - -{% include product %} 이벤트 스트림에 액세스하려면 이벤트 테이블을 모니터링하고 새로운 이벤트를 파악하여 처리하는 작업을 반복하는 것이 좋습니다. - -많은 항목이 성공적으로 작동하려면 이 프로세스를 거쳐야 하며, 비즈니스 규칙과 직접적인 관련이 없는 항목은 적용해야 하는지 여부를 결정해야 합니다. - -프레임워크의 역할은 비즈니스 로직 구현자를 대신해 따분한 모니터링 작업을 처리해 주는 것입니다. - -이 프레임워크는 서버에서 실행되면서 {% include product %} 이벤트 스트림을 모니터링하는 데몬 프로세스입니다. 이벤트가 발견되면 데몬은 이벤트를 일련의 등록된 플러그인으로 전달합니다. 각각의 플러그인은 원하는 대로 이벤트를 처리할 수 있습니다. - -데몬은 다음을 처리합니다. - -- 지정된 하나 이상의 경로에서 플러그인 등록 -- 충돌하는 플러그인을 모두 비활성화 -- 플러그인이 디스크에서 변경된 경우 다시 로드 -- {% include product %} 이벤트 스트림 모니터링 -- 마지막으로 처리된 이벤트 ID와 백로그 기억 -- 데몬 시작 시 마지막으로 처리된 이벤트 ID부터 시작 -- 연결 오류 확인 -- 필요에 따라 stdout, 파일 또는 이메일에 정보 로깅 -- 콜백에서 사용되는 {% include product %}에 대한 연결 설정 -- 등록된 콜백으로 이벤트 전달 - -플러그인은 다음을 처리합니다. - -- 콜백의 번호를 프레임워크에 등록 -- 프레임워크에서 이벤트를 제공하는 경우 단일 이벤트 처리 - - -## 프레임워크의 이점 - -- 스크립트당이 아니라 모든 스크립트에 대해 하나의 모니터링 메커니즘만 처리합니다. -- 네트워크 및 데이터베이스 로드를 최소화합니다(단일 모니터만으로 여러 이벤트 처리 플러그인에 이벤트 공급). - -# 이벤트 구동 트리거 작성 - -**참고:** 이벤트 구동 트리거에 대한 자세한 정보는 [https://github.com/shotgunsoftware/shotgunEvents](https://github.com/shotgunsoftware/shotgunEvents)의 설명서를 참조하십시오. - -{% include product %} 소프트웨어는 {% include product %}에서 수행된 모든 작업에 대해 [이벤트 로그 항목](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_event_logs_html)을 작성합니다. 이 이벤트는 {% include product %} 사이트와 {% include product %} API를 통해 확인할 수 있습니다. - -{% include product %}에서 이벤트 세부 기록을 확인하는 것뿐 아니라, EventLog를 폴링하고 사용자가 관심을 두고 있는 특정 이벤트에 대해 작동하는 이벤트 리스너 스크립트를 직접 작성할 수도 있습니다. 이 스크립트는 파이프라인 내 다른 내부 스크립트를 실행하거나 {% include product %} API를 사용하여 {% include product %} 내 다른 정보를 업데이트할 수 있으며, 그 둘 모두도 가능합니다. - -## 활용 사례 - -다음은 이벤트 구동 트리거의 몇 가지 활용 사례입니다. - -* 샷의 '레이아웃(Layout)' 태스크 상태가 '최종(final)'으로 지정되면 '애니메이션(Animation)' 태스크 상태가 '시작 준비(ready to start)'로 자동 설정되기 때문에 애니메이터가 샷 작업을 시작할 수 있음을 알게 됩니다. -* 새 샷이 {% include product %}에 생성되면 적절한 샷 디렉토리가 파일 시스템에 생성됩니다. -* 샷이 '대기 중(on hold)' 상태가 되면 이 샷에 할당된 아티스트에게 알림이 전달됩니다. -* 자산이 마무리되면 디렉토리가 읽기 전용으로 설정됩니다. -* {% include product %}에서 버전이 리뷰에 추가되면 해당 버전(또는 테이크) 정보를 데일리 시스템에 복사합니다. -* 씬이 25개 샷으로 커지면 씬의 설명 필드에 적힌 세 번째 단어와 같은 글자로 시작하는 문구를 무작위로 트윗합니다. - -## 이벤트 구동 트리거의 작동 방식 - -아래는 {% include product %}에서 생성된 EventLogEntries의 간단한 다이어그램입니다. 스크립트는 API를 사용하여 마지막으로 요청한 이후 발생한 이벤트 목록을 가져옵니다. 그런 다음 각 이벤트 유형(예: {% include product %}_Task_Change)을 살펴보고, 관심을 두고 있는 항목이 있는지 확인합니다. - -해당 이벤트를 찾으면 이벤트의 상세 정보(예: 변경된 필드, 변경된 값 등. 이 시점에서 API를 사용하여 필요한 엔티티에 대한 추가 정보를 요청할 수도 있음)를 확인합니다. - -이벤트가 유의미한 것으로 증명되면 스크립트가 해당 이벤트에 작동하여 사용자가 실행하도록 결정한 코드({% include product %} API를 사용하거나 파이프라인 내 항목을 사용하거나, 둘 다 사용할 수 있음)를 실행합니다. 살펴볼 이벤트가 더 이상 없으면 프로세스를 반복하면서 API를 사용하여 마지막으로 요청한 이후 발생한 이벤트 목록을 가져옵니다. - -![이벤트 로그 폴링](/images/dv-writing-event-triggers-event-log-polling-01.png) - -## EventLog 폴링과 트리거 비교 - -{% include product %} 소프트웨어는 지속적인 이벤트 정보 스트림을 제공하며, 사용자는 이를 모두 수신하다가 원하는 이벤트에만 반응하면 됩니다. 이렇게 하면 {% include product %} 소프트웨어가 트리거를 직접 제어하도록 하는 것과 비교해 다음과 같은 이점이 있습니다. - -* **유연성**: 사용자의 트리거 스크립트가 {% include product %} 소프트웨어와 무관하게 실행될 수 있습니다. 덕분에 스크립트가 {% include product %} 및 사용자 파이프라인 모두와 원하는 방식으로 상호 작용할 수 있습니다. 사용자는 어떠한 제약도 없이 원하는 대로 규칙 및 액션을 정의할 수 있습니다. {% include product %} 소프트웨어는 사용자의 이벤트 트리거에 관해 아무것도 알 필요가 없습니다. 수행할 일이라고는 EventLogEntries를 지속적으로 생성하는 것뿐입니다. 그 뒤에 일어나는 다른 모든 일들은 사용자가 제어합니다. -* **원격**: 사용자 스크립트가 네트워크를 통해 {% include product %} 서버에 액세스할 수 있는 모든 위치에서 실행될 수 있습니다. 스크립트 실행에 필요한 것은 API 액세스뿐입니다. -* **다중성**: 여러 스크립트를 동시에 실행할 수 있습니다. 각 부서마다 요구 사항이 서로 다르기 때문에 서로 다른 이벤트를 수신하는 경우가 있을 수 있습니다. 이런 경우에도 동일한 스크립트를 통해 모든 트리거를 실행하는 데 아무런 제약이 없습니다. 트리거를 개별적인 여러 논리 스크립트로 분할할 수도 있습니다. 폴링 쿼리는 매우 가볍기 때문에 성능에 별다른 영향을 미치지 않습니다. -* **책임성**: 스크립트가 {% include product %}에 어떤 변화를 가져오면 자체 이벤트도 생성하기 때문에 스크립트가 어떤 변화를 일으켰는지 정확하게 확인할 수 있습니다. - -## 이벤트 유형 - -모든 내부 이벤트 유형은 **`Shotgun_[entity_type]_[New|Change|Retirement]`** 형식을 따릅니다. 예를 들어 `Shotgun_Shot_New` 및 `Shotgun_Asset_Change`가 있습니다. 자세한 정보는 [이벤트 유형 설명서](https://github.com/shotgunsoftware/shotgunEvents/wiki/Technical_Overview#event-types)를 참조하십시오. - -## 트랜잭션 및 잠재적 누락 이벤트 - -{% include product %} 소프트웨어는 트랜잭션에서 파괴적(destructive) 데이터베이스 쿼리를 실행하고, 트랜잭션이 완료된 경우에만 EventLog를 작성합니다. 이 때문에 여기에서 "highest ID" 방식을 사용하는 이벤트를 놓칠 수도 있습니다. 하지만 [GitHub 사이트의 이벤트 트리거 프레임워크](https://github.com/shotgunsoftware/shotgunEvents)에 이 상황을 처리해 줄 코드가 있습니다. \ No newline at end of file diff --git a/docs/ko/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png b/docs/ko/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png deleted file mode 100644 index 3e6242f86..000000000 Binary files a/docs/ko/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/create_webhook_button.png b/docs/ko/guides/images/webhooks/create_webhook_button.png deleted file mode 100644 index 077b6501c..000000000 Binary files a/docs/ko/guides/images/webhooks/create_webhook_button.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/create_webhook_dialog.png b/docs/ko/guides/images/webhooks/create_webhook_dialog.png deleted file mode 100644 index 2a15d7fc0..000000000 Binary files a/docs/ko/guides/images/webhooks/create_webhook_dialog.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/delivery_details.png b/docs/ko/guides/images/webhooks/delivery_details.png deleted file mode 100644 index 736f5f0ef..000000000 Binary files a/docs/ko/guides/images/webhooks/delivery_details.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/delivery_status.png b/docs/ko/guides/images/webhooks/delivery_status.png deleted file mode 100644 index f6b69ad75..000000000 Binary files a/docs/ko/guides/images/webhooks/delivery_status.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/webhook_selected_status.png b/docs/ko/guides/images/webhooks/webhook_selected_status.png deleted file mode 100644 index eed50df69..000000000 Binary files a/docs/ko/guides/images/webhooks/webhook_selected_status.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/webhook_status_active.png b/docs/ko/guides/images/webhooks/webhook_status_active.png deleted file mode 100644 index 7115ba381..000000000 Binary files a/docs/ko/guides/images/webhooks/webhook_status_active.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/webhook_status_disabled.png b/docs/ko/guides/images/webhooks/webhook_status_disabled.png deleted file mode 100644 index 6a3c9c8ed..000000000 Binary files a/docs/ko/guides/images/webhooks/webhook_status_disabled.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/webhook_status_failed.png b/docs/ko/guides/images/webhooks/webhook_status_failed.png deleted file mode 100644 index d22ee39f9..000000000 Binary files a/docs/ko/guides/images/webhooks/webhook_status_failed.png and /dev/null differ diff --git a/docs/ko/guides/images/webhooks/webhook_status_unstable.png b/docs/ko/guides/images/webhooks/webhook_status_unstable.png deleted file mode 100644 index 4acb74217..000000000 Binary files a/docs/ko/guides/images/webhooks/webhook_status_unstable.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations.md b/docs/ko/guides/pipeline-integrations.md deleted file mode 100644 index 0f9088cfa..000000000 --- a/docs/ko/guides/pipeline-integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 파이프라인 통합 -pagename: toolkit-pipeline-integrations -lang: ko ---- - -# 파이프라인 통합 - -{% include product %}의 파이프라인 통합을 통해 {% include product %} 데이터를 아티스트에게 제공할 수 있습니다. 인기 있는 컨텐츠 제작 소프트웨어 내에서 UI를 커스터마이즈하여 아티스트들이 태스크에 대한 정보를 확인하고, 노트를 읽고 추가하며, 팀 구성원과 파일을 공유할 수 있도록 기본적인 도구를 제공할 수 있습니다. 파이프라인 통합은 {% include product %} 툴킷 플랫폼을 기반으로 하며, 개발자는 툴킷 API를 사용하여 기능을 확장하거나 커스텀 툴킷 앱을 만들 수 있습니다. - -이 섹션에는 {% include product %} 파이프라인 관리를 시작하는 데 도움이 되는 학습 자료가 포함되어 있습니다. 파이프라인 구성 및 프로덕션 파일 시스템 관리에 대한 안내서, 기본 VFX 파이프라인을 빌드하기 위한 튜토리얼, 자체 파이프라인 도구를 작성하기 위한 리소스가 제공됩니다. diff --git a/docs/ko/guides/pipeline-integrations/administration.md b/docs/ko/guides/pipeline-integrations/administration.md deleted file mode 100644 index 366957345..000000000 --- a/docs/ko/guides/pipeline-integrations/administration.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 관리 -pagename: toolkit-administration -lang: ko ---- - -# 관리 - -{% include product %}의 파이프라인 통합은 방대한 커스터마이제이션 옵션 세트를 제공합니다. 스튜디오에서 원하는 파이프라인을 시작하고 실행하려면 구성, 명령줄 도구 실행, {% include product %} 도구가 스튜디오 환경에서 작동하도록 하는 등의 작업을 수행해야 합니다. - -이 섹션에서는 스튜디오의 {% include product %} 툴킷 파이프라인 관리에 대한 내용을 소개합니다. diff --git a/docs/ko/guides/pipeline-integrations/administration/advanced-toolkit-administration.md b/docs/ko/guides/pipeline-integrations/administration/advanced-toolkit-administration.md deleted file mode 100644 index 5896f703b..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/advanced-toolkit-administration.md +++ /dev/null @@ -1,1525 +0,0 @@ ---- -layout: default -title: 고급 툴킷 관리 -pagename: advanced-toolkit-administration -lang: ko ---- - -# 고급 툴킷 관리 - -고급 구성을 위한 툴킷을 관리하고 구성하는 방법을 소개합니다. - -이 항목의 내용: -- [소개](#Introduction) -- [tank 명령 사용](#using-the-tank-command) - - [디버그 모드로 실행](#running-in-debug-mode) - - [Tookit API를 통해 tank 명령 실행](#running-tank-commands-via-the-tookit-api) - - [유용한 tank 명령](#useful-tank-commands) - - [setup_project](#setup_project) - - [core](#core) - - [configurations](#configurations) - - [updates](#updates) - - [install_app, install_engine](#install_app-install_engine) - - [app_info](#app_info) - - [folders, preview_folders](#folders-preview_folders) - - [shell](#shell) - - [dump_config](#dump_config) - [고급 tank 명령](#advanced-tank-commands) -- [툴킷 Python API](#the-toolkit-python-api) -- [파이프라인 구성 및 샌드박스](#pipeline-configurations-and-sandboxes) - - [샌드박스용 tank 명령 실행](#running-the-tank-command-for-a-sandbox) - - [샌드박스에서 Core API 사용](#using-the-core-api-from-a-sandbox) - - [샌드박스 액세스](#accessing-a-sandbox) - - [파이프라인 구성 현지화](#localizing-a-pipeline-configuration) - - [복제한 구성 삭제](#deleting-a-cloned-configuration) -- [업데이트 확인](#checking-for-updates) - - [스테이징 샌드박스 만들기](#creating-a-staging-sandbox) -- [앱 시작 방법 구성](#configuring-how-apps-are-launched) -- [디스크에 폴더 만들기](#creating-folders-on-disk) - - [파일 시스템 위치](#filesystem-locations) - - [툴킷 폴더 이름 바꾸기](#renaming-toolkit-folders) - - [생성 유예 및 사용자 샌드박스](#deferred-creation-and-user-sandboxes) -- [템플릿 구성](#configuring-templates) - - [템플릿 파일의 @include 구문](#include-syntax-in-the-template-file) - - [템플릿 파일에 외부 파일 포함](#including-external-files-in-your-template-file) - - [폴더 생성 및 템플릿](#folder-creation-and-templates) -- [후크](#hooks) - - [앱 레벨 후크](#app-level-hooks) - - [코어 레벨 후크](#core-level-hooks) - - [스튜디오 레벨 후크](#studio-level-hooks) - - [프로젝트 이름 후크](#project-name-hook) - - [연결 후크](#connection-hook) -- [앱 및 엔진 구성](#configuring-apps-and-engines) - - [각 앱에는 위치 설정이 있음](#each-app-has-a-location-setting) - - [파일 포함](#including-files) - - [템플릿 설정 구성 - 파일 경로](#configuring-template-settings---file-paths) - - [후크를 사용하여 앱 동작 커스터마이즈](#using-hooks-to-customize-app-behaviour) - - - - -# 소개 - -{% include product %} 툴킷 관리자 안내서입니다. 이 문서에서는 관리적인 관점에서 {% include product %} Pipeline Toolkit을 사용하여 앱을 설치 및 업데이트하고, 새 프로젝트를 설정하고, 스튜디오 구성을 관리하는 방법을 설명합니다. 툴킷은 비교적 기술적인 부분이므로 구성 및 관리 담당자가 sysadmin, 파이프라인/도구 개발자 또는 TD라고 가정합니다. 자세한 설명을 시작하기 전에 필요하면 다음 문서를 읽어 보시기 바랍니다. 많은 기본 개념을 다루고 구성 관리 및 업데이트에 대해 간략하게 소개합니다. - -[{% include product %} Pipeline Toolkit의 기본 개념 소개](https://developer.shotgridsoftware.com/ko/e95205a8/) - -아직 {% include product %} 툴킷으로 설정하지 않은 경우 [통합 사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/)를 읽는 것이 좋습니다. - -# tank 명령 사용 - -일반적으로 {% include product %} 툴킷을 관리하고 사용할 때 `tank` 명령을 사용하는 것이 좋습니다. `tank` 명령을 사용하면 관리 명령과 실제 앱을 명령 셸에서 쉽고 빠르게 실행할 수 있습니다. - -기본적으로 새로 만든 각 프로젝트에는 자체 독립적인 Core API와 함께 고유한 `tank` 명령도 있습니다. 간단히 프로젝트 구성 위치로 이동하여 `tank` 명령을 실행하면 해당 프로젝트에 적용 가능한 모든 명령을 볼 수 있습니다. - -``` -cd /mnt/software/{% include product %}/big_buck_bunny -./tank -``` -tank 명령은 다양한 방법으로 사용할 수 있습니다. 기본 개념은 먼저 tank 명령에 작동 위치와 수행할 작업을 지정하는 것입니다. 수행할 작업을 지정하지 않으면 사용 가능한 모든 명령 목록이 표시됩니다. 작동 위치를 지정하지 않으면 현재 디렉토리가 사용됩니다. tank 명령을 사용하여 {% include product %} 항목을 나열할 수도 있습니다. - -tank 명령 사용 방법에 대한 기본 개요: - -```python -# Show all tank commands for an asset named 'piano' -> tank Asset piano - -# We can also list all assets containing the phrase 'pi' -> tank Asset pi - -# We can execute the built-in folder creation command for -# the piano -> tank Asset piano folders - -# If the application launcher app is installed, we can launch maya -# and set the work area to the piano -> tank Asset piano launch_maya - -# Alternatively, we can specify a path on disk instead of a {% include product %} entity -> tank /mnt/projects/hero/assets/piano launch_maya - -# Or we can change our work directory and run tank like this -> cd /mnt/projects/hero/assets/piano launch_maya -> tank launch_maya -``` -## 디버그 모드로 실행 - -내부적으로 수행되는 작업을 확인하는 것이 유용할 때도 있습니다. `--debug` 플래그를 `tank` 명령에 전달할 수 있으며 이를 통해 상세한 출력 및 타이밍을 가능하게 하고 쉽게 문제를 트래킹하거나 작업이 예상대로 수행되지 않는 이유를 이해할 수 있습니다. - -## Tookit API를 통해 tank 명령 실행 - -또한 대부분의 tank 명령은 API를 통해 실행되도록 완전히 지원됩니다. 이를 실행하여 보다 광범위한 스크립팅 워크플로우의 일부로 툴킷 관련 유지 관리 작업을 쉽게 수행할 수 있습니다. 이를 실행하는 방법에 대한 자세한 정보는 [Core API 참조](https://developer.shotgridsoftware.com/tk-core/)를 참조하십시오. - -## 유용한 tank 명령 - -다음은 {% include product %} 툴킷을 관리할 때 사용할 수 있는 유용한 tank 명령 목록입니다. - -### setup_project - -{% include product %} 데스크톱에 있는 프로젝트 설정 마법사의 명령행 버전입니다. {% include product %} 툴킷으로 새 프로젝트를 설정합니다. {% include product %}에 프로젝트가 있고 툴킷을 사용하도록 확장하려고 할 때 이 설정으로 시작합니다. 이 명령은 프로세스를 통해 안내하며 사용할 구성 및 설정할 프로젝트와 같은 다양한 정보를 요청합니다. - -**동일한 프로젝트에서 setup_project 다시 실행** - -기본적으로 setup_project는 아직 설정되지 않은 프로젝트만 나열합니다. 그러나 동일한 프로젝트에서(특히 테스트하는 동안) setup_project를 다시 실행해야 하는 경우가 종종 있습니다. 이는 이전에 이미 설정한 프로젝트를 식별하는 노트와 함께 모든 프로젝트를 나열하는 --force 플래그를 전달하여 수행할 수 있습니다. - -```python -> tank setup_project --force - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -- Running setup_project... - -force mode: Projects already set up with Toolkit can be set up again. - -Welcome to SGTK Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - big_buck_bunny: '/mnt/software/sgtk/big_buck_bunny' - ghosts: '/mnt/software/sgtk/ghosts' - chasing_perfection: '/mnt/software/sgtk/chasing_perfection' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can just enter the -path to this config it will be used for the new project. - -[tk-config-default]: -Downloading Config tk-config-default v0.4.15 from the App Store... - -This is the 'Default Config' config. - -Below are all active projects, including ones that have been set up: --------------------------------------------------------------------- - -[ 4] Demo Project - Fubar is an epic story of an on-going political wa... - -[ 5] Big Buck Bunny -Note: This project has already been set up. - A killer bunny movie - -[ 6] The Ghosts of Pere Lachaise -Note: This project has already been set up. - De Films en Aiguille and ChezEddy present this year... - -[ 7] Chasing Perfection -Note: This project has already been set up. - You've seen the car commercials, the car races, and... - -[ 8] What Happened to My Headphones? - The Ryan Mayeda story - -Please type in the id of the project to connect to or ENTER to exit: -``` - -툴킷은 프로젝트 설정 프로세스의 일부로 프로젝트 이름을 제안합니다. 이름에 만족하면 Enter 키를 눌러 계속 진행하고 만족하지 않은 경우 다른 이름을 직접 입력합니다. - -프로젝트에 대해 특별한 스튜디오 이름 지정 규칙이 있는 경우 프로젝트 설정 프로세스에서 제안하는 기본값을 제어할 수도 있습니다. 이 작업은 고급 스튜디오 레벨 후크를 통해 수행됩니다. 자세한 정보는 이 문서 뒷부분의 스튜디오 레벨 후크 섹션을 참조하십시오. - -### core - -Core API 업데이트를 확인합니다. 이 명령은 App Store에 연결하여 최신 버전의 Core API가 있는지 확인합니다. Core API가 있는 경우 업데이트할 것인지 묻습니다. - -이 명령의 출력 예: - -```python -> tank core - -Welcome to Sgtk! -Starting Sgtk for your current directory '/private/tmp' -- Running core... - -WARNING: You are potentially about to update the Core API for multiple -projects. - -Welcome to the Sgtk update checker! -This script will check if the Sgtk Core API -installed in /mnt/software/sgtk/studio -is up to date. - -You are currently running version v0.13.22 of the Sgtk Platform -No need to update the Sgtk Core API at this time! -``` - -### configurations - -프로젝트의 모든 구성에 대한 개요를 제공합니다. 이 명령은 프로젝트의 현재 액티비티를 분석하고자 할 때 유용할 수 있습니다. - -이 명령의 출력 예: - -```python -> tank Project Bunny configurations - -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Project Big Buck Bunny -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Big Buck Bunny. -- Running configurations... - -Fetching data from {% include product %}... - -====================================================================== -Available Configurations for Project 'Big Buck Bunny' -====================================================================== - -Configuration 'Primary' (Public) -------------------------------------------------------- - -This is the Project Master Configuration. It will be used whenever this -project is accessed from a studio level sgtk command or API constructor. - -Linux Location: /mnt/software/sgtk/big_buck_bunny -Winows Location: z:\mnt\software\sgtk\big_buck_bunny -Mac Location: /mnt/software/sgtk/big_buck_bunny - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank localize - -If you want to check for app or engine updates, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank updates - -If you want to change the location of this configuration, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank move_configuration - -This is a public configuration. In {% include product %}, the actions defined in this -configuration will be on all users' menus. - -Configuration 'Dev Area' (Private) -------------------------------------------------------- - -Linux Location: /Users/manne/sgtk_dev -Winows Location: z:\Users\manne\sgtk_dev -Mac Location: /Users/manne/sgtk_dev - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /Users/manne/sgtk_dev/tank localize - -If you want to check for app or engine updates, you can run: -> /Users/manne/sgtk_dev/tank updates - -If you want to change the location of this configuration, you can run: -> /Users/manne/sgtk_dev/tank move_configuration - -This is a private configuration. In {% include product %}, only Admin 3 will see the actions -defined in this config. If you want to add additional members to this -configuration, navigate to the SG Pipeline Configuration Page and add -them to the Users field. -``` - -### updates - -이 명령은 프로젝트와 관련된 모든 환경에 사용 가능한 최신 버전의 앱 또는 엔진이 있는지 확인합니다. 앱과 엔진의 설치 방법에 따라 이 업데이트 프로그램이 로컬 git 리포지토리, Github 또는 {% include product %} 툴킷 App Store에 대해 검사를 진행할 수 있습니다. 최신 버전이 검색되면 설정을 업데이트할지 묻습니다. 새로운 구성 매개변수가 새 버전의 앱에 도입된 경우 값을 묻는 메시지가 나타날 수 있습니다. - -일반 구문: - -``` -> 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` -- 모든 위치에서 Loader 앱이 최신 버전인지 확인: `tank updates ALL ALL tk-multi-loader` -- Maya에서 Loader 앱이 최신 버전인지 확인: `tank updates ALL tk-maya tk-multi-loader` - -### install_app, install_engine - -프로젝트와 관련된 환경 중 하나에 새 엔진 또는 앱을 설치합니다. 이 명령을 사용하여 툴킷 App Store 또는 git에서 설치할 수 있습니다. - -### app_info - -모든 앱과 주요 구성 설정에 대한 분석 보기 - -### folders, preview_folders - -디스크에 항목에 대한 폴더를 만듭니다. - -이 명령의 출력 예 - -```python -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Asset Squirrel (Project 'Big Buck Bunny') -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Asset Squirrel. -- Running folders... - -Creating folders, stand by... - -The following items were processed: - - /mnt/projects/big_buck_bunny - - /mnt/projects/big_buck_bunny/reference - - /mnt/projects/big_buck_bunny/reference/artwork - - /mnt/projects/big_buck_bunny/reference/footage - - /mnt/projects/big_buck_bunny/sequences - - /mnt/projects/big_buck_bunny/assets - - /mnt/projects/big_buck_bunny/assets/Character - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/sgtk_overrides.yml - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop/snapshots - -In total, 93 folders were processed. -``` -### shell - -현재 선택된 컨텍스트에서 대화식 Python 셸을 시작합니다. 미리 초기화된 API, 컨텍스트 및 엔진 객체에 대한 유용한 참조를 설정합니다. `./tank shell`을 사용하여 툴킷 및 {% include product %} API 코드 예제를 테스트해 볼 수 있습니다. tank 실행 파일은 로컬 컴퓨터의 **파이프라인 구성 루트**에 있으며 다음과 같이 표시됩니다. - -``` -> cd /my_tank_configs/project_foobar -``` - -이 명령의 출력 예: - -```python -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -You are running a tank command associated with {% include product %} Project 'Chasing the -Light'. Only items associated with this project will be considered. -- Found Shot moo87 (Project 'Chasing the Light') -- Starting the SG pipeline toolkit v0.15.14. -- Setting the Context to Shot moo87. -- Started Shell Engine version v0.3.3 -- Environment: /mnt/software/tank/chasing_the_light/config/env/shot.yml. -- Running shell... - -Welcome to SG Pipeline Toolkit Python! -2.7.1 (r271:86832, Jul 31 2011, 19:30:53) -[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -Running on darwin - -- A tk API handle is available via the tk variable -- A Shotgun API handle is available via the Shotgun variable -- Your current context is stored in the context variable -- The shell engine can be accessed via the engine variable ->>> ->>> tk - ->>> ->>> context - ->>> ->>> Shotgun - ->>> ->>> engine - ->>> -``` - -위의 예제에서 `./tank`는 Python 셸을 시작하고 필요한 몇 가지 변수를 설정합니다. 이 명령은 위의 변수에 다음과 같은 핸들과 컨텍스트를 제공하므로 인증과 사용자 세션 설정 및 {% include product %} 사이트에 대한 커넥션 시작과 같은 몇 가지 기초 작업을 수행하지 않아도 됩니다. - -- `tk` 변수에는 [툴킷 API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#the-toolkit-core-api)에 액세스할 수 있는 핸들이 있습니다. -- `{% include product %}` 변수에는 이미 사이트에 연결되고 데이터베이스 및 [{% include product %} 사이트의 다른 항목을 쿼리할 준비가 된 [{% include product %} API](https://developer.shotgridsoftware.com/python-api/)에 대한 핸들이 있습니다.] -- 컨텍스트 변수는 현재 컨텍스트(프로젝트, 샷, 에셋, 파이프라인 단계, 사용자 등)를 참조합니다. [다음은 활성 컨텍스트](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#sgtk.Context)의 예입니다. 이 예에서 컨텍스트 인스턴스는 현재 컨텍스트를 설명하는 일련의 주요 필드를 수집하는 데 사용됩니다. 컨텍스트를 현재 작업 영역이라고도 합니다. 일반적으로 컨텍스트는 사용자가 작업 중인 현재 샷 또는 에셋입니다. 이 예에서 프로젝트는 "Chasing the Light"이고, ID는 1184이며, 샷은 "moo87"임을 알 수 있습니다. 할당된 파이프라인 단계 또는 태스크는 없지만 사용자는 Manne입니다. 툴킷 API용 스크립트를 작성할 때 이 정보가 필요할 수도 있으며 이 유용한 컨텍스트 변수에서 모든 항목을 사용할 수 있습니다. - -```python - -``` - -`engine` 변수는 현재 실행 중인 [셸 엔진](https://developer.shotgridsoftware.com/ko/2ad59ee8/)의 인스턴스를 가리킵니다. - -### dump_config - -Core `v0.18`에서 사용 가능합니다. - -기존 환경 구성을 `STDOUT` 또는 다른 파일에 덤프합니다. 구성의 전체 또는 스파스 표현을 덤프할 수 있습니다. 전체 표현에는 모든 설정의 기본값이 포함되지만 스파스 표현에는 설정의 기본값과는 다른 값만 포함됩니다. 기본적으로 명령의 출력에는 기본값이 있는 매니페스트를 기록한 각 설정의 코멘트가 포함되며 구성에 있는 항목과 다른 경우 기본값이 포함됩니다. 이 명령은 안전을 위해 기존 파일에 환경 구성을 덤프하는 것을 허용하지 않습니다. - -용도: - -``` -./tank dump_config env_name [--sparse | --full] [--no_debug-comments] [--file=/path/to/output/file.yml] -``` - -이 명령의 출력 예: - -```python -> ./tank dump_config shot_step --sparse --file=/tmp/shot_step.yml - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -Starting toolkit for path '/Shotgun/configs/sparse34913' -- The path is not associated with any SG object. -- Falling back on default project settings. -- Running as user 'Toolkit' -- Using configuration 'Primary' and Core HEAD -- Setting the Context to sparse34913. -- Running command dump_config... - ----------------------------------------------------------------------- -Command: Dump config ----------------------------------------------------------------------- - -Dumping config... -``` - -위의 명령을 실행하면 현재 프로젝트의 `shot_step` 환경 파일에 대한 스파스 복사본이 `/tmp/shot_step.yml`에 기록됩니다. - -추가 디버그 코멘트를 제외하려면 `--no_debug_comments` 플래그를 사용합니다. - -### 고급 tank 명령 - -다음은 {% include product %} 툴킷을 관리할 때 사용할 수 있는 고급 tank 명령 목록입니다. - -- `tank share_core` - 새 프로젝트가 만들어지면 각 프로젝트가 독립적으로 Core API의 복사본을 유지하는 상태로 종종 만들어집니다. 이 명령을 사용하면 이러한 프로젝트의 코어를 가져와서 디스크의 별도 위치로 이동할 수 있습니다. 이렇게 하면 여러 개의 프로젝트가 Core API의 단일 복사본을 공유하는 공유 코어를 만들 수 있습니다. - -- `tank attach_to_core` - 새 프로젝트가 만들어지면 각 프로젝트가 독립적으로 Core API의 복사본을 유지하는 상태로 종종 만들어집니다. 이 명령을 사용하면 Core API의 자체 포함 버전을 유지 관리하지 않고 기존 Core API 설치에 구성을 연결할 수 있습니다. - -- `tank localize` - 이 명령은 Core API를 특정 파이프라인 구성 위치로 다운로드합니다. 이 방법은 툴킷 스테이징 영역 내에서 새 버전의 Core API를 테스트하려는 경우에 유용합니다. 이 문서에서 이 프로세스에 대해 자세히 설명합니다. - -- `tank clear_cache` - 툴킷의 일부 캐시를 지웁니다. 이 명령은 어떤 이유로든 {% include product %} 내에 메뉴 항목이 나타나지 않는 경우 유용할 수 있습니다. - -- `tank validate` - 프로젝트 구성의 유효성을 확인합니다. - -- `tank cache_apps` - 필요한 모든 앱, 엔진 및 프레임워크 버전이 디스크에 있는지 확인합니다. - -- `tank switch_app` - 개발에 유용합니다. 앱을 App Store 모드에서 로컬 또는 git 모드로 전환하거나 그 반대로 전환합니다. - -- `tank push_configuration` - 현재 파이프라인 구성에 포함된 구성을 다른 파이프라인 구성으로 밉니다. - -# 툴킷 Python API - -{% include product %} 데스크톱, `tank` 명령 또는 {% include product %}를 사용하여 응용프로그램을 시작하는 경우 툴킷은 자동으로 `PYTHONPATH`에 추가되고 초기화됩니다. 툴킷 API를 수동으로 소싱하고 실행하는 것이 유용한 경우가 있습니다. Toolkit Core API를 pythonpath에 추가한 다음 가져와서 수행할 수 있습니다. - -각 프로젝트 구성에는 `project_config_root/install/core/python` 안에 `python` 폴더가 있습니다. 해당 위치를 Python 경로에 추가하기만 하면 `sgtk` API를 가져올 수 있습니다. - -```python -import sgtk - -# create a Sgtk API object for a {% include product %} entity -tk = sgtk.sgtk_from_entity("Shot", 123) - -# Create a Sgtk API object based on a file system location -tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair") -``` - -# 파이프라인 구성 및 샌드박스 - -파이프라인 구성은 스튜디오 설치와 기본 구조가 동일합니다. 가장 중요한 점은 `install/core/python` 내부에 `tank` 명령과 툴킷 API가 모두 포함되어 있다는 것입니다. API와 tank 명령이 각 구성 전반에서 중복되는 이유는 개발을 쉽게 수행하고 프로덕션 구성 외부에서 작업을 수행하기 위해서입니다. - -{% include product %} 툴킷에 새 프로젝트가 설정되면 해당 프로젝트 설정에 따라 프로젝트에 대한 ***기본 파이프라인 구성***이 생성됩니다. 이 구성을 '기본(Primary)'이라고 하며 프로젝트의 기본 구성을 나타냅니다. {% include product %} 내부에서 구성은 프로젝트에 대한 파이프라인 구성 엔티티 형태로 표현됩니다. 개발을 수행하거나 구성을 변경할 때는 일반적으로 기본(Primary) 구성에서 작업하지 않습니다. 실수로 일부 구성을 변경할 경우 해당 프로젝트에서 작업하는 모든 사람에게 영향을 줍니다. 대신 {% include product %} 내부의 구성을 복제할 수 있습니다. 이제 다른 사람에게 영향을 주지 않고 변경 작업을 수행할 수 있는 자체 병렬 구성을 가질 수 있습니다. - -## 샌드박스용 tank 명령 실행 - -스튜디오 레벨의 `tank` 명령을 사용하여 앱을 실행하면 항상 프로젝트의 기본 구성이 사용됩니다. 따라서 `tank Shot ABC123 launch_maya`를 입력하면 {% include product %} 툴킷은 샷 ABC123이 속한 프로젝트를 찾고 기본 파이프라인 구성을 찾은 다음 Maya를 시작할 때 해당 구성 설정을 사용합니다. 대신 dev 샌드박스에서 실험 구성을 사용하려는 경우 개발 샌드박스 내에서 특정 tank 명령을 사용하여 Maya를 시작합니다(`~/sgtk_dev_sandbox/tank Shot ABC123 launch_maya`). 이제 툴킷은 프로젝트의 기본 구성이 아닌 dev 샌드박스의 구성을 사용합니다. - -## 샌드박스에서 Core API 사용 - -마찬가지로, 스튜디오 설치 위치가 아닌 파이프라인 구성 내부에서 툴킷 API를 실행하려는 경우 스튜디오 Python API가 아닌 `PYTHONPATH`에 dev 샌드박스를 추가할 수 있습니다. - -## 샌드박스 액세스 - -{% include product %} 내부는 훨씬 더 간단합니다. 프로젝트의 각 파이프라인 구성에는 해당 구성을 볼 수 있는 사용자의 목록이 있습니다. 필드를 공백으로 두면 모든 사용자가 구성을 볼 수 있습니다. - -![](images/advanced-toolkit-administration/sg_work_area.png) - -구성을 복제하면({% include product %}에서 마우스 오른쪽 버튼으로 클릭) 자동으로 해당 구성에 연결되어 해당 구성에 대한 독점적인 가시성이 부여됩니다. Maya에서 새로 개발한 도구를 아티스트가 테스트하도록 하려면 해당 아티스트를 파이프라인 구성 dev 샌드박스에만 추가하면 됩니다. 그러면 아티스트가 샌드박스에서 Maya를 시작한 다음 프로세스 도구에서 작업에 액세스할 수 있습니다. - -## 파이프라인 구성 현지화 - -기본적으로 파이프라인 구성은 {% include product %} 툴킷 스튜디오 설치에서 해당 코드를 선택합니다. 툴킷 스튜디오 설치에는 {% include product %} 툴킷이 사용하는 모든 앱 및 엔진 코드의 캐시와 Toolkit Core API 설치가 포함됩니다. 각 파이프라인 구성은 스튜디오 위치에서 Core API와 앱 캐시를 공유합니다. 이 방법을 사용하면 Core API 업데이트를 모든 프로젝트에 동시에 적용할 수 있기 때문에 유용할 때가 있습니다. 스튜디오 위치를 업데이트하면 모든 프로젝트에 영향을 줍니다. - -그러나 때로는 파이프라인 구성을 잘라서 독립적으로 만들 수도 있습니다. 이러한 경우의 예는 다음과 같습니다. - -- 업데이트를 중단하고 아무 변경 없이 프로젝트를 완료하려는 경우 -- Toolkit Core API의 새 버전을 테스트하려는 파이프라인 구성이 있는 경우 -- 집에서 작업할 때 사용할 최소한의 툴킷 번들을 조립하려는 경우 - -이 프로세스는 스튜디오 위치에서 완전히 독립적인 파이프라인 구성을 만들므로 구성을 ***현지화***한다고 하며 기본적으로 Core API가 파이프라인 구성에 복사됩니다. `tank localize` 명령을 실행하여 이 작업을 수행합니다. - -구성을 현지화한 후에는 더 이상 스튜디오 tank 명령을 실행할 수 없습니다. 일반적으로 프로젝트가 현지화된 후에는 로컬 tank 명령과 Python API를 사용해야 합니다. - -## 복제한 구성 삭제 - -복제한 구성 또는 dev 영역을 더 이상 사용하지 않으려면 해당 레코드를 삭제한 다음 디스크에서 해당 구성을 삭제합니다. - -# 업데이트 확인 - -앱이나 엔진에 대한 업데이트가 있는지를 쉽게 확인할 수 있습니다. 프로젝트에 대해 `tank updates` 명령을 실행하기만 하면 됩니다. {% include product %} 툴킷은 업데이트를 확인하고 업데이트할 것인지 묻습니다. 기본값이 없는 새 매개변수가 있으면 업데이트 스크립트에서 값을 묻는 메시지를 표시합니다. 변경된 사항의 상세 정보를 확인하려는 경우 각 업데이트의 릴리즈 정보 페이지에 대한 URL 링크를 참조하십시오. 언제든지 프로세스를 종료할 수 있습니다. - -Toolkit Core API를 업데이트하는 방법도 간단합니다. `tank core` 명령을 실행하기만 하면 됩니다. - -## 스테이징 샌드박스 만들기 - -대부분은 기본 구성에서 `tank updates`를 실행하기만 해도 안전하지만 프로덕션 환경에 배포하기 전에 테스트하는 것이 좋습니다. 이 경우 기본 파이프라인 구성을 복제한 다음 업데이트 명령을 실행합니다. Core API 업그레이드의 경우 `core` 명령을 실행하기 전에 샌드박스를 현지화해야 합니다(현지화에 대한 자세한 정보는 윗부분 참조). 업데이트가 작동하는지 확인되면 기본 구성에서 다시 실행합니다. 이 작업을 수행하는 방법에 대한 자세한 정보는 [구성 관리](https://developer.shotgridsoftware.com/ko/60762324/)를 참조하십시오. - -# 앱 시작 방법 구성 - -설치 직후 종종 구성에 필요한 툴킷 구성의 한 부분은 앱 시작 구성입니다. 당사에서는 이미 스튜디오가 커스터마이즈 및 도구를 갖추고 있는 경우가 많으므로 유연하고 구성 가능하도록 만들려고 노력해 왔습니다. - -{% include product %} 내부에서 또는 tank 명령을 사용하여 응용프로그램(예: Maya 또는 Nuke)을 시작하면 응용프로그램 시작 및 툴킷 초기화를 담당하는 앱을 호출하게 됩니다. 이 앱을 `tk-multi-launchapp`이라고 합니다. - -툴킷 스타터 구성 중 하나를 사용하여 새 프로젝트를 설정하면 시작 앱과 함께 사용되는 응용프로그램 경로를 변경하는 방법에 대한 지침이 표시됩니다. 대신 사용할 수 있는 대체 시스템이 있는 경우 이 앱을 반드시 사용할 필요는 없습니다. 시작 관리자 응용프로그램은 일반적으로 다음 단계를 수행합니다. - -1. 사용할 컨텍스트를 파악합니다. 컨텍스트는 현재 작업 영역을 나타냅니다. 마우스 오른쪽 버튼으로 {% include product %} 내부의 태스크, 에셋 또는 샷을 클릭하면 이를 기반으로 컨텍스트가 만들어집니다. tank 명령을 사용하는 경우 명령줄의 일부로 지정하는 것이거나 현재 디렉토리에서 선택됩니다. - -2. 그런 다음 앱 구성의 설정에 따라 응용프로그램을 시작합니다. 시작 앱은 응용프로그램의 경로, 전달할 명령줄 인자, 응용프로그램을 실행하는 실제 코드 및 응용프로그램 시작 전에 설정해야 하는 환경 변수 등 여러 가지 방법으로 구성할 수 있습니다. - -3. 툴킷 API가 나중에 초기화될 수 있도록 Pythonpath를 설정합니다. - -4. 응용프로그램이 시작되면 툴킷 API를 가져와서 초기화합니다. - -5. 마지막으로 엔진이 시작됩니다. - -**예: {% include product %} 툴킷 시작 방법에 대한 추가 연습 예** - -툴킷의 일반적인 부트스트래핑은 몇 단계로 진행됩니다. - -- 기본 호스트 응용프로그램이 시작됩니다. 여기에는 Python 인터프리터가 있습니다. 이는 매우 간단한 형식으로 표준 셸에서 실행하는 CPython 인터프리터일 뿐입니다. Maya 또는 Nuke이거나 포함된 Python 인터프리터가 기본 제공되는 다른 항목일 수도 있습니다. - -- Toolkit Core API를 `PYTHONPATH`에 추가하고 가져옵니다. `import sgtk` - -- 이제 컨텍스트를 파악해야 합니다. 디스크상의 경로 또는 {% include product %} 객체일 수 있습니다. 이제 팩토리 방식을 사용하여 툴킷 API 인스턴스를 만들 수 있습니다. `tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair01/lighting")` 또는 {% include product %} 엔티티를 사용할 수 있습니다. `tk = sgtk.sgtk_from_entity("Shot", 123)` 엔티티를 사용할 때 위의 코드가 {% include product %}에 연결되고 해당 샷의 파이프라인 구성을 해결하고 디스크의 파이프라인 구성을 찾은 다음 파일 시스템 템플릿과 같은 Sgtk의 기본 설정을 로드합니다. 이 시점에서는 앱이나 엔진이 로드되지 않습니다. 경로 조회의 경우 파일 시스템을 사용하여 파이프라인 구성을 찾습니다. - -- 이제 현재 작업 영역을 나타내는 컨텍스트 객체를 만듭니다. 엔티티 또는 경로에서 이 작업을 수행할 수도 있습니다. `ctx = tk.context_from_entity("Shot", 123)` 또는 `ctx = tk.context_from_path("/mnt/projects/hero/assets/chair01/lighting")` - -- 마지막으로 엔진을 시작합니다. Maya 내부에서 Maya의 Python 인터프리터에 있는 이 명령을 실행하는 경우 다음을 수행합니다. `sgtk.platform.start_engine('tk-maya', tk, ctx)` 이렇게 하면 다음 작업이 수행됩니다. - - - 컨텍스트에 대한 환경 선택 후크를 실행합니다. 환경 선택 후크는 사용할 환경을 반환합니다. 환경에는 로드할 모든 앱 목록과 해당 구성이 포함되어 있습니다. - - - 환경 파일이 결정되면 엔진이 메모리에 로드됩니다. 그런 다음 엔진 기반 객체가 동적으로 로드되고 해당 init 방식을 실행합니다. 엔진이 로드되면 모든 앱이 동일한 방식으로 로드됩니다. 로드되는 동안 일반적으로 엔진이 응용프로그램 어딘가에 "{% include product %}" 메뉴를 등록하고 각 앱은 일련의 명령을 엔진에 등록합니다. 이러한 명령은 나중에 실행을 위한 진입점이 됩니다. 사용자가 {% include product %} 메뉴에서 특정 항목을 클릭하면 앱 실행이 트리거됩니다. - -전체적인 예의 모습은 다음과 같습니다. - -```python -# starting up sgtk when your context is based on a path -import sgtk -path = "/mnt/projects/hero/assets/chair01/lighting" -# create a sgtk api handle -tk = sgtk.sgtk_from_path(path) -# create a context object -ctx = tk.context_from_path(path) -# start the tank engine -sgtk.platform.start_engine('tk-maya', tk, ctx) - -# starting up sgtk when your context is based on a {% include product %} object -import sgtk -entity_type = "Shot" -entity_id = 123 -# create a sgtk api handle -tk = sgtk.sgtk_from_entity(entity_type, entity_id) -# create a context object -ctx = tk.context_from_entity(entity_type, entity_id) -# start the sgtk engine -sgtk.platform.start_engine('tk-maya', tk, ctx) -``` - -# 디스크에 폴더 만들기 - -툴킷 구성의 핵심 부분은 파일 시스템 구성입니다. {% include product %} 툴킷을 사용하면 일관된 방식으로 디스크에 폴더를 만들 수 있으며 생성 프로세스는 {% include product %}에서 구동됩니다. 다음은 구성 내부의 핵심 폴더에 대한 개요입니다. - -![](images/advanced-toolkit-administration/file_system_config.png) - -폴더 구성을 설정하는 것은 비교적 쉽습니다. 구성은 기본적으로 사용자가 만든 템플릿 폴더 구조이며, 여기에는 폴더가 에셋 또는 샷 등을 나타내야 함을 가리키는 일부 구성 파일이 있습니다. 파일 시스템 구조를 구성할 때 언제든지 ***폴더 미리보기*** 기능을 사용하여 만들 항목의 목록을 가져올 수 있습니다. 이 명령은 {% include product %}와 tank 명령에서 모두 사용할 수 있습니다. - -일반적인 폴더를 사용하여 스캐폴드의 윤곽을 그리면서 시작합니다. 예를 들어 에셋, 샷 또는 파이프라인 단계를 나타내는 스캐폴드에 동적 폴더 레벨이 있는 경우 우선 무시합니다. 결과에 만족하면 각 동적 폴더에 동적 기능을 단계별로 추가합니다. 이 작업을 수행하려면 폴더와 이름이 같은 yml 파일을 추가합니다. - -yaml 파일에서 특수 구문을 사용하여 폴더를 만드는 방법을 정의합니다. {% include product %} 툴킷은 많은 동적 동작을 지원하지만 일반적으로는 {% include product %} 엔티티를 나타내는 동적 노드입니다. 이 경우 구성 파일의 모양은 다음과 유사할 수 있습니다. - -```python -# the type of dynamic content -type: "Shotgun_entity" - -# the Shotgun field to use for the folder name -name: "{code}_{sg_prefix}" - -# the Shotgun entity type to connect to -entity_type: "Asset" - -# Shotgun filters to apply when getting the list of items -# this should be a list of dicts, each dict containing -# three fields: path, relation and values -# (this is std Shotgun API syntax) -# any values starting with $ are resolved into path objects -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -``` - -동적 폴더가 에셋 엔티티에 두 개의 {% include product %} 필드를 사용하여 명명된 폴더를 만들어야 한다는 정보가 제공됩니다. 또한 현재 프로젝트 및 에셋 유형의 에셋만 고려하여 표준 {% include product %} API 쿼리 구문을 사용하여 상위 폴더를 기반으로 제약 조건을 정의합니다. - -지원되는 노드 유형에 대한 자세한 정보는 [참조 문서를 참조하십시오](https://developer.shotgridsoftware.com/ko/82ff76f7/). - -## 파일 시스템 위치 - -툴킷 폴더 생성 시스템을 통해 디스크에 폴더를 만들면 이러한 폴더도 {% include product %}에 저장되고 트래킹됩니다. 폴더는 관리자 메뉴 아래에 있을 수 있는 {% include product %}의 **파일 시스템 위치** 엔티티로 표시됩니다. 일반적으로 이 데이터는 툴킷에 의해 백그라운드에서 트래킹되며 사용자가 볼 필요는 없습니다. 이러한 파일 시스템 위치 엔티티는 툴킷에서 디스크의 폴더를 동기화하고 트래킹하는 데 사용되며 폴더 만들기가 처음 실행될 때 만들어진 방식대로 디스크의 폴더 구조를 다시 만드는 데 사용할 수 있습니다. 파일 시스템 위치 엔티티 데이터는 차례로 디스크의 특정 경로와 관련된 {% include product %} 엔티티를 파악하려고 할 때 주로 사용됩니다. - -성능상의 이유로 파일 시스템 위치 테이블의 컨텐츠는 사용자의 로컬 시스템에 캐시됩니다. 이는 폴더/엔티티 조회 속도를 높이기 위한 것입니다. 전문가의 경우 `cache_location` 코어 후크를 수정하여 이 캐시의 위치를 커스터마이즈할 수 있습니다. 캐시된 로컬 폴더 표현은 응용프로그램을 시작할 때와 디스크에 폴더를 만들 때마다 동기화됩니다. - -## 툴킷 폴더 이름 바꾸기 - -툴킷 폴더 생성을 실행하면 {% include product %}의 엔티티와 디스크의 폴더 간에 연결이 설정됩니다. 툴킷은 폴더 스키마 구성을 사용하여 디스크에 일련의 폴더를 생성하고 이러한 각 폴더는 {% include product %}의 `Filesystem Location` 엔티티로 등록됩니다. 즉, {% include product %} 데이터(예: 샷 및 에셋 이름) 및 구성이 디스크 및 {% include product %}의 실제 폴더에 "지정"된다고 생각할 수 있습니다. - -폴더가 만들어지면 더 이상 {% include product %}에서 엔티티 이름을 자유롭게 변경할 수 없습니다. 엔티티의 이름을 바꾸고 툴킷을 시작하려고 하면 오류 메시지가 나타납니다. 이는 특정 엔티티와 관련된 폴더의 트래킹을 피하기 위한 것입니다. - -툴킷 폴더의 이름을 바꾸려면 다음을 수행합니다. - -- 먼저 {% include product %}에서 엔티티(에셋 또는 샷)의 이름을 변경합니다. -- `tank unregister_folders` 명령을 실행하여 등록된 폴더의 등록을 취소합니다. 그러면 엔티티와 디스크 간의 관계를 트래킹하는 {% include product %}의 파일 시스템 위치 엔티티가 제거됩니다. 이 명령은 디스크의 컨텐츠에는 영향을 주지 않으며 디스크의 위치를 가리키는 {% include product %}의 `Filesystem Location` 엔티티에만 영향을 줍니다. 예를 들어, Plant라는 에셋에 대한 폴더의 등록을 취소하려면 `tank Asset Plant unregister_folders` 명령을 실행합니다. 폴더의 등록이 취소된다는 간략한 내용과 함께 작업 확인을 요청합니다. -- 폴더의 등록이 취소되면 본질적으로 에셋이 "재설정"됩니다. 현재 에셋과 관련된 폴더가 없을 때 {% include product %}에서 새 이름으로 폴더 생성을 실행하면 디스크에 새 폴더가 만들어집니다. -- 마지막으로 디스크의 이전 위치에서 새 위치로 모든 데이터를 이동합니다. 또한 파일 간의 링크가 새 위치를 가리키도록 업데이트되는지 확인합니다. - -## 생성 유예 및 사용자 샌드박스 - -툴킷 폴더 생성도 두 가지 단계로 실행되도록 설정할 수 있습니다. 하나의 단계는 사용자가 폴더 생성 명령을 실행할 때마다 실행되고 또 다른 단계는 응용프로그램이 시작되기 직전에 실행됩니다. 이 동작은 툴킷 응용프로그램 시작 관리자(폴더 생성을 수행하기 위한 표준 API 방식 호출)에서 기본으로 제공합니다. 폴더 생성 유예의 경우 다음과 같은 사례를 처리할 수 있습니다. - -- 파이프라인에 다양한 컨텐츠 생성 응용프로그램이 여러 개 있고 실제로 필요할 때까지 모든 응용프로그램 각각에 대해 전체 폴더 스캐폴드를 포함하지 않으려는 경우 각각의 컨텐츠 생성 앱에 구성에서 유예된 하위 트리가 포함되도록 폴더 생성을 설정할 수 있습니다. 프로덕션 담당자 또는 관리자가 샷에 대한 폴더를 만들면 Maya, Nuke, Mari 등의 작업 영역을 만들기 직전에 중지됩니다. 그런 다음 응용프로그램이 시작되면 이러한 폴더가 응용프로그램이 시작되기 직전에 만들어집니다. -- 파일 시스템에 사용자 기반 샌드박스를 만들려면 작업을 수행하기 직전에 샌드박스를 만들어야 합니다. 폴더 생성 유예를 사용하면 이 프로세스를 쉽게 수행할 수 있는 특별한 사용자 노드를 추가할 수 있습니다. 그런 다음 템플릿 구성에서는 사용자 노드를 {% include product %} API에서 나타내는 방식인 HumanUser로 참조합니다. - -생성 유예에 대한 자세한 정보는 [참조 설명서를 참조하십시오](https://developer.shotgridsoftware.com/ko/82ff76f7/). - -# 템플릿 구성 - -파일 시스템 구조를 만들었으면 위의 폴더 구조를 기반으로 일련의 파일 시스템 위치를 구성할 차례입니다. 이러한 위치는 템플릿이라고 하며 {% include product %} 툴킷의 필수적인 부분입니다. 템플릿 파일에는 각 필드의 의미를 정의하는 키 섹션, 템플릿 경로를 정의할 수 있는 경로 섹션 및 문자열 표현식을 정의할 수 있는 문자열 섹션 등 세 부분이 있습니다. 파일에서 두 가지 구문을 사용할 수 있습니다. 즉, 단일 저장소 루트가 있는 구성에 사용할 수 있는 단순 형식의 구문과 다중 루트 구성에 사용할 수 있는 고급 구문이 있습니다. - -**예: 단일 루트 템플릿 형식** - -```yml -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: '@shot_root/work/maya' - - # define the location of a publish area - shot_publish_area_maya: '@shot_root/publish/maya' - - # The location of WIP files - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.ma' - - ########################################################################################## - # Asset pipeline / maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: '@asset_root/work/maya' - - # define the location of a publish area - asset_publish_area_maya: '@asset_root/publish/maya' - - # The location of WIP files - maya_asset_work: '@asset_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_asset_snapshot: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_asset_publish: '@asset_root/publish/maya/{name}.v{version}.ma' - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. -strings: - - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -**예: 다중 루트 템플릿 형식** - -```yml -# -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -# -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / Maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: - definition: '@shot_root/work/maya' - root_name: primary - - # define the location of a publish area - shot_publish_area_maya: - definition: '@shot_root/publish/maya' - root_name: primary - - # The location of WIP files - maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.ma' - root_name: primary - - # The location of backups of WIP files - maya_shot_snapshot: - definition: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: primary - - # The location of published maya files - maya_shot_publish: - definition: '@shot_root/publish/maya/{name}.v{version}.ma' - root_name: primary - - ########################################################################################## - # Asset pipeline / Maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: - definition: '@asset_root/work/maya' - root_name: secondary - - # define the location of a publish area - asset_publish_area_maya: - definition: '@asset_root/publish/maya' - root_name: secondary - - # The location of WIP files - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: secondary - - # The location of backups of WIP files - maya_asset_snapshot: - definition: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: secondary - - # The location of published maya files - maya_asset_publish: - definition: '@asset_root/publish/maya/{name}.v{version}.ma' - root_name: secondary - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. - -strings: - - # when a review version in {% include product %} is created inside of nuke, this is the - # name that is being given to it (the code field) - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -템플릿 파일에 사용할 수 있는 여러 가지 구성 옵션이 있습니다. [여기에서 전체 참조를 찾을 수 있습니다](https://developer.shotgridsoftware.com/ko/82ff76f7/). - -## 템플릿 파일의 @include 구문 - -템플릿 파일에서 반복을 줄이기 위해 필드를 다시 사용할 수 있습니다. - -```yml -paths: - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - maya_asset_work: '@asset_root/work/maya/@maya_asset_file' - -strings: - maya_asset_file: '{name}.v{version}.ma' -``` - -템플릿을 여러 파일로 분할하고 파일을 다른 파일에 포함할 수도 있습니다. 자세한 정보는 [참조 문서](https://developer.shotgridsoftware.com/ko/82ff76f7/)를 참조하십시오. - - -## 템플릿 파일에 외부 파일 포함 - -환경 구성을 여러 파일로 분리한 다음 다른 파일에 파일을 포함할 수 있는 것과 같이 이 방법으로 템플릿 파일을 관리할 수 있습니다. 예를 들어 다중 프로젝트에서 공유되는 전역 구성을 설정하는 경우에 유용할 수 있습니다. - -include 구문 중 하나를 사용하여 `templates.yml` 파일에 추가 파일을 포함합니다. - -```yml -# single include using a path local to the location of the current file -include: './include_file.yml' -# multiple incudes, processed in order -includes: ['./include_file_1.yml', './include_file_2.yml'] -# you can also use absolute paths when including things: -include: -# files that are not recognized are skipped, so you can put paths for -# windows and linux next to each other for multi platform support: -includes: ['/foo/bar/hello.yml', 'z:\foo\bar\hello.yml'] -# you can use environment variables inside of full paths too -includes: ['$STUDIO_ROOT/foo/bar/hello.yml', '%STUDIO_ROOT%\foo\bar\hello.yml'] -``` - -포함된 파일은 기본 templates.yml 파일과 동일한 구조를 가져야 합니다. 즉, `paths`, `keys` 및 `strings` 섹션을 포함해야 합니다. 툴킷 프로세스가 포함되면, 위에서 아래로, 깊은 순서대로 재귀적으로 읽으며 데이터를 `paths`, `keys` 및 `paths` 등 세 가지 "버킷"에 개별적으로 추가합니다. 이 프로세스 도중 버킷에 이미 값이 있으면 덮어씁니다. 모든 include가 처리되면 전체 구성의 유효성을 확인합니다. - -간단한 예를 살펴보겠습니다. 다음과 같이 기본 `templates.yml` 파일이 있습니다. - -```yml -include: ./global_defs.yml -keys: - name: - type: str - filter_by: alphanumeric - version: - type: int - format_spec: "03" -paths: - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' -``` -그리고 여기에 포함된 파일 `global_defs.yml`의 컨텐츠가 있습니다. - -```yml -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str -paths: - shot_root: sequences/{Sequence}/{Shot}/{Step} -``` - -각 파일에 필요한 모든 항목이 포함되도록 키와 경로를 함께 유지하는 것이 좋습니다(하지만 적절하지 않은 경우도 있음). 이렇게 하면 일반적으로 유지 관리가 더 쉬워집니다. - -## 폴더 생성 및 템플릿 - -폴더 생성 시스템에서 만든 폴더를 참조하는 템플릿을 만들 때 '{% include product %} API' 스타일 표기법을 사용하여 필드를 지정해야 합니다. 이는 놓치기 쉬운 감지하기 힘든 사항입니다. 위의 예는 이러한 부분에 대한 좋은 예입니다. 폴더를 만들 때 먼저 항목을 에셋 유형별로 그룹화한 다음 에셋 이름별로 그룹화하는 구성을 설정했습니다. 예를 들면 다음과 같습니다. - -``` -/mnt/projects/my_project/assets/character/Hero -``` - -그런 다음 이 경로와 일치하는 툴킷에서 템플릿을 만들려고 합니다. {% include product %} 툴킷이 템플릿을 경로 및 컨텍스트와 일치시키려면 {% include product %} API를 사용하는 경우와 마찬가지로, 필드의 이름을 지정해야 합니다. 에셋 유형 폴더 레벨은 {% include product %}에서 이 필드의 필드 이름인 `sg_asset_type`이라고 해야 하며, 에셋 레벨 폴더는 {% include product %} API를 사용할 때 에셋 엔티티 유형을 참조하는 방법인 `Asset`(대문자 A)이라고 해야 합니다. - -# 후크 - -후크는 툴킷 구성의 유연한 부분입니다. 일반적으로 앱, 엔진 또는 Core API를 구성할 때 매개변수 컬렉션을 지정하여 일부 동작을 정의합니다. 그러나 이것만으로는 부족한 경우가 있으며 여기에서 후크가 작동하게 됩니다. 후크는 Python 코드의 작은 부분이며 앱, 엔진 또는 실제로 코어의 모양을 커스터마이즈하는 데 사용할 수 있습니다. Shotgun은 가벼운 원자 레벨의 후크를 디자인하려고 했습니다. 툴킷에는 후크가 나타나는 3가지 레벨이 있습니다. 아래 섹션에서 각 레벨에 대한 자세한 정보를 참조하십시오. - -## 앱 레벨 후크 - -각 툴킷 앱(및 해당 엔진)에는 설정 모음이 있으며 그중 일부가 후크일 수 있습니다. 각 앱에는 기본 후크 모음이 있으며 사용자가 특별히 재정의하지 않는 한 자동으로 사용됩니다. 후크는 일반적으로 응용프로그램과 밀접하게 관련된 항목을 커스터마이즈하는 데 사용됩니다. 예를 들어 이미지를 Maya에 로드하는 툴킷의 경우 UI 코드와 모든 상호 작용 로직은 앱 내에 있지만 실제로 이미지를 Maya에 로드하는 비즈니스 로직의 작은 부분은 후크 내부에 있습니다. 이렇게 하면 스튜디오가 동작을 커스터마이즈할 수 있습니다. 기본 후크가 Maya에서 표준 텍스처 노드를 간단히 만들 수 있지만 다른 노드 유형을 사용하려는 스튜디오는 후크를 재정의할 수 있으므로 코드를 다시 작성할 필요 없이 전체 앱의 동작을 쉽게 변경할 수 있습니다. - -앱 후크를 커스터마이즈할 때는 일반적으로 기본 후크를 앱의 후크 폴더에서 프로젝트의 후크 폴더에 복사합니다. 그런 다음 기본 후크가 아닌 새로운 후크를 읽도록 환경 파일 내부의 앱 설정을 업데이트해야 합니다. 커스터마이즈 후크는 앱에서 제공하는 기본 후크에서 자동으로 상속되므로 수정 및 작은 조정을 쉽게 추가할 수 있지만 비즈니스 로직의 대부분을 기본 후크에 유지할 수 있습니다. 후크 상속에 대한 자세한 정보는 [환경 구성 참조](https://developer.shotgridsoftware.com/ko/6d10dedf/)를 참고하십시오. - -## 코어 레벨 후크 - -코어 후크를 사용하면 툴킷에서 시스템 레벨의 동작을 재정의할 수 있습니다. 코어 레벨 후크는 모두 프로젝트별로 재정의되므로 재정의를 통해 각 프로젝트를 개별적으로 설정해야 합니다. 새 프로젝트를 설정할 때 동일한 구성을 계속 재사용하는 경우 일반적으로 간단합니다. - -코어 구성 영역에는 특별한 `hooks` 폴더가 있습니다. 이 폴더에서는 특정 코어 후크를 구현할 수 있습니다. 코어 후크는 앱에서 찾을 수 있는 후크와 유사하며 툴킷에서 코드 조각을 추출하여 커스터마이즈할 수 있는 방법입니다. Core API를 사용하면 파일 시스템 I/O, 폴더 생성 및 파일 시스템 구조의 유효성 확인을 포함하여 다양한 코어 동작을 재정의할 수 있습니다. - -![](images/advanced-toolkit-administration/hooks.png) - -기본적으로 툴킷은 API 폴더에서 필요한 코어 후크를 선택합니다. 동작을 커스터마이즈하려면 후크 파일을 가져 와서 구성의 `config/core/hooks` 영역에 복사합니다. 그런 다음 코드를 수정합니다. - -사용 가능한 코어 후크 목록은 Core API 내부의 후크 폴더를 확인합니다. 각 후크에는 무엇을 수행하고 어떻게 수정될 수 있는지에 대한 매우 많은 문서가 포함되어 있습니다. - -## 스튜디오 레벨 후크 - -또한 스튜디오 레벨 후크라고 하는 몇 가지 특별한 후크가 있습니다. 이러한 후크는 전역적이며 모든 항목에 영향을 미치며 특정 프로젝트 외부에 있는 툴킷의 모습을 제어합니다. - -## 프로젝트 이름 후크 - -프로젝트 설정 프로세스에서 프로젝트의 '디스크 이름'을 묻는 메시지가 표시되며 {% include product %}의 프로젝트 이름을 기반으로 이름을 제안하지만 공백과 파일 시스템 형식이 아닌 글자는 밑줄로 바뀝니다. 디스크 이름은 프로젝트 데이터 및 구성이 저장되는 폴더의 이름입니다. - -디스크 이름을 지정할 때 슬래시를 사용할 수 있습니다. 이렇게 하면 아래로 여러 폴더를 갖는 프로젝트 루트 포인트가 생성되며, 스튜디오에서 예를 들어 분야(광고, vfx 등)를 기반으로 해당 프로젝트가 구성된 경우이거나 스튜디오 프로젝트의 업무량이 너무 커서 파일 시스템을 단일 레벨로 인해 관리하기 어렵게 된 경우에 유용할 수 있습니다. 항상 슬래시('/')를 사용해야 합니다. 툴킷은 Windows에서 필요한 조정을 수행합니다. - -위에서 설명한 다중 레벨 폴더와 함께 툴킷에서 설정 프로세스의 일부로 제안하는 이름을 커스터마이즈할 수도 있습니다. 이 작업은 특별한 스튜디오 레벨의 후크에서 수행됩니다. 이 동작을 커스터마이즈하려면 `config/core` 폴더의 스튜디오 API 위치 안에 `project_name.py`라는 파일을 만듭니다. 이 폴더에는 `install_location.yml`, `app_store.yml` 및 `shotgun.yml`과 같은 파일이 있어야 합니다. - -`project_name.py` 후크 파일은 예를 들어 다음과 같이 표시될 수 있습니다. - -```python -from tank import Hook -import os - -class ProjectName(Hook): - - def execute(self, sg, project_id, **kwargs): - """ - Gets executed when the setup_project command needs a disk name preview. - """ - - # example: create a name based on both the sg_type field and the name field - - sg_data = sg.find_one("Project", [["id", "is", project_id]], ["name", "sg_type"]) - - # create a name, for example vfx/project_x or commercials/project_y - name = "%s/%s" % ( sg_data["sg_type"], sg_data["name"] ) - - # perform basic replacements - return name.replace("_", "/").replace(" ", "/") -``` - -## 커넥션 후크 - -툴킷은 관련된 {% include product %} 인스턴스에 연결할 수 있도록 커넥션 설정을 저장합니다. 때로는 동적 방식으로 이러한 커넥션 설정을 제어하는 것이 유용할 수 있습니다. 이 경우 `config/core` 폴더의 스튜디오 API 위치 내에 `sg_connection.py`라는 후크 파일을 만듭니다. 이 폴더에는 `install_location.yml`, `app_store.yml` 및 `shotgun.yml`과 같은 파일이 있어야 합니다. - -이 후크는 {% include product %} 커넥션 설정 후 호출되며 `shotgun.yml` 및 `app_store.yml` 구성 파일에서 읽혀집니다. 절차를 통해 커넥션 설정을 쉽게 수정할 수 있습니다. 예를 들어 일부 외부 환경 변수에 따라 다른 프록시 서버를 설정할 수 있습니다. - -다음 3개의 매개변수가 후크에 전달됩니다. - -- `config_data`는 읽은 {% include product %} 구성 파일의 설정을 포함하는 사전이며 일반적으로 `host`, `api_script`, `api_key` 및 `http_proxy` 키가 포함되어 있습니다. - -- `user`는 커넥션 정보와 관련된 사용자 프로파일로서 전문가 설정이며 거의 항상 `defualt`로 설정됩니다. - -- `cfg_path`는 `config_data`가 로드된 구성 파일의 경로입니다. - -후크는 config_data와 같은 형식으로 사전을 반환해야 합니다. - -프록시 설정을 커스터마이즈하는 경우 반환되는 프록시 문자열은 {% include product %} API 생성자에서 예상하는 것과 동일한 형식(예: 123.123.123.123, 123.123.123.123:8888 또는 username:pass@123.123.123.123:8888)이어야 합니다. - -다음은 시작 지점으로 사용할 수 있는 구현의 예입니다. - -```python -from tank import Hook -import os - -class CustomShotunConnection(Hook): - """ - Allows for post processing of {% include product %} connection data prior to connection - """ - def execute(self, config_data, user, cfg_path, **kwargs): - - # explicitly set the proxy server setting - config_data["http_proxy"] = "123.123.123.123" - return config_data -``` - -# 앱 및 엔진 구성 - -이제 디스크상의 모든 키 위치를 정의하는 템플릿 파일을 설정했으므로 구성에 포함할 앱 및 엔진을 결정하기 시작할 수 있습니다. 소개 문서의 다른 부분에서 설명한 것처럼 앱 및 엔진 구성은 일련의 ***환경***으로 세분화됩니다. 환경은 기본적으로 대체 구성이며 샷 작업 및 에셋 작업과 같이 다르게 구성된 다양한 앱 제품군을 제공해야 할 경우가 많기 때문에 유용합니다. 좀 더 복잡한 파이프라인의 경우, 모델링 설정이 리깅과 다르도록 부서에서 더 세분화할 수 있습니다. 이러한 작업은 모두 환경을 통해 처리됩니다. - -환경 파일에 다수의 가능한 엔진이 정의되며 실행 중인 응용프로그램에 따라 이 섹션 중 하나가 사용됩니다. 예를 들어 Maya를 실행 중인 경우 툴킷에서 'tk-maya' 엔진이 시작되도록 합니다. {% include product %} 툴킷은 먼저 현재 작업 영역을 기준으로 사용할 환경을 결정한 다음 이 환경 내에서 `tk-maya` 엔진을 찾습니다. 엔진을 찾으면 이 섹션에 정의된 모든 앱에 로드됩니다. - -각 앱에 여러 가지 설정을 구성할 수 있습니다. 앱을 설치하거나 업그레이드할 때 {% include product %} 툴킷의 안내에 따라 기본값이 없는 모든 설정을 구성해야 합니다. 툴킷 앱은 재활용이 가능하도록 설계되기 때문에 설정 방법에 따라 다양한 방식으로 많은 워크플로우에서 사용할 수 있습니다. 동일한 환경에서 동일한 앱을 여러 번 정의할 수도 있습니다. 예를 들어 구성이 다르지만 동일한 게시 앱을 사용하는 두 가지 게시자(리깅 게시용 및 모델 게시용)를 Maya 메뉴에 표시할 수 있습니다. - -**예: 환경 파일** - -```yml -include: ./includes/app_launchers.yml - -engines: - - # 3dsmax engine - tk-3dsmax: - debug_logging: false - location: {name: tk-3dsmax, type: app_store, version: v0.2.6} - - # all the registered apps for this engine - apps: - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-texture: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Texture... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Diffuse Texture, Specular Texture] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current 3ds Max scene - primary_display_name: 3ds Max Publish - primary_icon: icons/publish_3dsmax_main.png - primary_publish_template: max_shot_publish - primary_scene_item_type: work_file - primary_tank_type: 3dsmax Scene - secondary_outputs: [] - template_work: max_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: max_shot_snapshot - template_work: max_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: max_shot_publish - template_publish_area: shot_publish_area_max - template_work: max_shot_work - template_work_area: shot_work_area_max - - # the maya engine - tk-maya: - debug_logging: false - location: {name: tk-maya, type: app_store, version: v0.2.7} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - - # all the registered apps for this engine - apps: - - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.7} - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-1: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Assets... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Maya Model, Maya Rig] - - tk-multi-loader-2: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Shots... - publish_filters: [] - sg_entity_types: - Shot: [] - single_select: true - tank_types: [Maya Anim, Maya Lighting, Maya Scene] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current Maya scene - primary_display_name: Maya Publish - primary_icon: icons/publish_maya_main.png - primary_publish_template: maya_shot_publish - primary_scene_item_type: work_file - primary_tank_type: Maya Scene - secondary_outputs: [] - template_work: maya_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-setframerange: - location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: maya_shot_snapshot - template_work: maya_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: maya_shot_publish - template_publish_area: shot_publish_area_maya - template_work: maya_shot_work - template_work_area: shot_work_area_maya -``` - -## 각 앱에는 위치 설정이 있음 - -환경 파일의 각 항목에는 특별한 `location` 토큰이 있습니다. 이 토큰은 툴킷에서 앱 코드를 선택하는 위치와 앱의 새 버전을 확인해야 하는 방법을 정의합니다. 예를 들어 위치 토큰은 다음과 같이 정의될 수 있습니다. - -``` -location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} -``` - -이 유형은 App Store에서 이 앱을 제공했으며 특정 버전이 사용되고 있음을 나타냅니다. 업데이트 확인을 실행하면 {% include product %} 툴킷이 App Store에 연결되어 `v0.1.2`보다 최신 버전이 있는지 확인합니다. 그러한 경우 업그레이드할 것인지 묻습니다. 툴킷은 git 및 github를 포함하여 몇 가지 다른 위치 유형을 지원하므로 직접 앱을 빌드하고 git를 사용하여 앱을 트래킹하며 업그레이드 확인 시 git에서 새 태그를 만들 때 올바로 처리되는지 업데이트에서 감지합니다. 자세한 정보는 [참조 문서를 참조하십시오](https://developer.shotgridsoftware.com/ko/6d10dedf/). - -## 파일 포함 - -외부 파일을 환경 파일에 포함할 수 있습니다. 이 방법은 설정을 중앙 집중화하거나 재정의를 관리할 때 유용합니다. - -- 여러 환경에서 Maya를 시작하더라도 응용프로그램(Maya, Nuke)에 대한 모든 파일 경로를 한 곳에서 관리할 수 있도록 구성할 수 있습니다. - -- 여러 환경에서 동일한 설정으로 사용되는 앱을 한 곳에서 정의할 수 있습니다. - -- 다중 프로젝트에서 공유되는 '중앙' 파이프라인 구성을 유지 관리할 수 있으며, 업데이트될 때 모든 프로젝트에 업데이트가 반영될 수 있습니다. 각 프로젝트는 특정 동작이 필요한 경우 포함되는 중앙 구성을 잠재적으로 재정의하거나 확장할 수 있습니다. - -- 컨텍스트의 파일을 재정의로 포함할 수 있습니다. 즉 설정 매개변수를 샷 단위 또는 에셋 단위로 재구성할 수 있습니다. 이것은 기본 구성에 설명되어 있으며 여기에서 샷 또는 에셋 단위로 Maya, Nuke 등에 대한 경로 설정을 재정의할 수 있습니다. - -- 전체 경로에서 환경 변수를 사용하면 자동으로 확장됩니다. Linux에서는 include 구문 분석기에 혼동을 줄 수 있으므로 `${ENV_VAR}` 형식이 아닌 `$ENV_VAR` 형식이어야 합니다. 예: includes: `['$STUDIO_ROOT/foo/bar/hello.yml'`, `'%STUDIO_ROOT%\foo\bar\hello.yml']`. - -**예: 앱 시작을 위한 샷별 재정의** - -셸 엔진에 대해 다음과 같은 환경 파일이 있다고 가정합니다. - -```yml -include: ./includes/app_launchers.yml - -engines: - tk-shell: - debug_logging: false - location: {name: tk-shell, type: app_store, version: v0.3.0} - - apps: - tk-multi-launch3dsmax: '@launch_3dsmax' - tk-multi-launchmaya: '@launch_maya' - tk-multi-launchmotionbuilder: '@launch_motionbuilder' - tk-multi-launchnuke: '@launch_nuke' - tk-multi-launchphotoshop: '@launch_photoshop' -``` - -이러한 각 앱은 참조 파일이며 `app_launchers` 포함 파일에 정의되어 있습니다. 이 파일은 각 앱의 실제 앱 구성을 포함하며 다음과 같이 표시됩니다. - -```yml -includes: - - # first include the configuration's global settings for application paths - - ./paths.yml - - # now include overrides - these will be loaded if they are found - - sequences/{Sequence}/{Shot}/sgtk_overrides.yml - - assets/{sg_asset_type}/{Asset}/sgtk_overrides.yml - -launch_3dsmax: - engine: tk-3dsmax - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '' - menu_name: Launch 3DSMax - windows_args: '' - windows_path: '@3dsmax_windows' - -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -위의 파일에는 Maya, Nuke 등에 대한 실제 경로가 포함되어 있지 않습니다. 대신, 실제 경로는 별도의 파일 `paths.yml`에 정의됩니다. - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' -maya_mac: /Applications/Autodesk/maya2012/Maya.app -maya_linux: maya - -# nuke -nuke_mac: /Applications/Nuke6.3v8/Nuke6.3v8.app -nuke_windows: 'C:\Program Files\Nuke6.3v8\Nuke6.3.exe' -nuke_linux: Nuke6.3 -``` - -`app_launchers` 파일은 우선 위의 파일을 포함하지만 `sequences/{Sequence}/{Shot}/sgtk_overrides.yml`도 포함합니다. 템플릿과 마찬가지로, 컨텍스트별 파일 경로이므로 현재 컨텍스트에 대한 경로를 확인하려고 시도합니다. 경로를 확인하고 나면 해당 경로를 찾아서 로드합니다. 즉, 샷 위치에 `sgtk_overrides.yml`을 만들고 특정 샷에 대해서만 응용프로그램 경로를 재정의할 수 있습니다. - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\special_maya.exe' -``` - -여기에서는 Windows용 특별한 버전의 Maya를 사용합니다. 나머지 경로는 `paths.yml` 파일에 정의된 원래 경로입니다. - -include 작동 방법에 대한 자세한 정보는 [참조 문서를 참조하십시오](https://developer.shotgridsoftware.com/ko/82ff76f7/). - -## 템플릿 설정 구성 - 파일 경로 - -많은 앱에서 사용하는 중요한 설정 유형은 `template` 설정입니다. 파일 시스템 위치를 지정해야 하는 앱은 이 설정을 사용합니다. 앱은 파일 시스템 구조 또는 명명 규칙을 사용하도록 설계되어 일반적이거나 유연성 있게 개발되었습니다. 템플릿은 기본 파일 시스템과 독립적으로 앱을 사용할 수 있도록 하는 주요 요소입니다. 자세한 정보는 [개념 소개](https://developer.shotgridsoftware.com/ko/e95205a8/)를 참조하십시오. - -앱을 구성하고 템플릿을 설정할 때 올바른 필드 집합이 포함된 템플릿을 지정해야 합니다. 필드는 필수적이거나 선택적일 수 있습니다. 필수 필드는 템플릿에 반드시 포함되어야 하며, 선택 필드는 템플릿의 일부가 될 수 있지만 필드가 템플릿에서 정의되지 않더라도 앱이 작동한다는 의미합니다. - -![](images/advanced-toolkit-administration/templates.png) - -앱이 실행되면 구성에서 지정한 템플릿의 경로가 만들어집니다. 이 경로는 현재 컨텍스트와 앱 로직에서 제공하는 일련의 필드를 기반으로 만들어집니다. 즉, 템플릿에 컨텍스트의 일부가 아니거나 앱에 대한 선택 또는 필수 필드의 일부가 아닌 필드가 있는 경우 앱이 해당 필드에 값을 설정할 수 없으므로 작동하지 않습니다. 툴킷에서 시작할 때 구성의 유효성을 확인하여 이러한 상황을 방지할 수 있습니다. - -템플릿 설정의 유효성을 확인할 때 툴킷은 먼저 컨텍스트를 확인하고 컨텍스트에서 제공한 필드를 템플릿의 필드와 비교합니다. 컨텍스트를 비교하여 필드 목록이 앱에 대한 필수/선택 매개변수 정의와 일치하지 않으면 유효성 확인 오류가 발생합니다. - -**실제 예: 스냅샷 앱** - -다음은 작동 방식에 대한 실제 예입니다. 툴킷 앱 중 하나인 **스냅 샷 앱**을 살펴보겠습니다. - -이 앱은 여러 템플릿 설정을 사용합니다. 다음은 앱 설정 분석에 정의된 이러한 설정 중 하나입니다. - -- **설정 이름**: template_snapshot -- **유형**: template -- **필수 템플릿 키**: version -- **선택적 템플릿 키**: name, timestamp, increment -- **설명**: 스냅샷 백업을 디스크에 저장할 위치를 정의하는 템플릿에 대한 참조입니다. - -런타임에 컨텍스트에서 제공하는 필드 외에도 이 템플릿 설정에는 `version` 필드가 포함된 템플릿이 필요합니다. 선택적 `name`, `timestamp` 또는 `increment` 필드를 포함할 수 있지만 다른 필드는 포함할 수 없습니다. 예를 들면 다음과 같습니다. - -샷의 태스크에 대해 Maya를 시작한다고 가정합니다. 그러면 컨텍스트에 다음 필드가 포함됩니다. - -- 현재 프로젝트가 설정된 필드 -- 현재 엔티티(예: 샷)가 설정된 필드 -- 현재 단계가 설정된 필드 -- 현재 태스크가 설정된 필드 - -엔진이 시작되면 구성의 유효성을 확인합니다. 다음은 위의 `template_snapshot` 필드에 대해 다른 설정이 적용되면 발생하게 되는 몇 가지 예입니다. - -- `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.ma` 템플릿은 스냅샷 `template_snapshot` 설정과 함께 사용할 수 있습니다. - - - `Sequence`, `Shot` 및 `Step`은 컨텍스트에 의해 채워집니다. 컨텍스트는 현재 샷을 인식하기 때문에 현재 시퀀스(파일 시스템의 상위 폴더임)를 자동으로 파악할 수 있습니다. - - 템플릿의 `version` 필드는 앱 설정에 필요한 필드입니다. - - `name` 필드는 선택 필드입니다. - - 다른 필드는 없습니다. - -- (샷) 컨텍스트에서 `Asset` 필드를 확인하는 방법을 알 수 없기 때문에 `assets/{Asset}/work/maya/{name}.v{version}.ma` 템플릿은 유효하지 않습니다. - -- 필수 `version` 필드가 없기 때문에 `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.ma` 템플릿은 유효하지 않습니다. - -- `extension` 필드를 알 수 없고 앱에서 입력하는 방법을 알 수 없기 때문에 `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{extension}` 템플릿은 유효하지 않습니다. - -## 후크를 사용하여 앱 동작 커스터마이즈 - -앱에서 자주 사용하는 또 다른 설정 유형은 `hook` 설정 유형입니다. 후크는 앱이 정상적인 실행의 일부로 실행될 코드 조각입니다. 후크를 사용하면 매우 유연한 앱 커스터마이즈가 가능하므로 앱의 일부 비즈니스 로직을 실제 앱 코드와 분리할 수 있습니다. - -예를 들어 다양한 참조와 파일 입력을 위해 씬을 스캔해야 하는 분석 앱이 있다고 가정합니다. Maya의 경우 Maya가 제공하는 표준 참조 노드를 처리하는 기본 동작을 제공할 수 있지만 Studio에서 커스텀 유형의 참조 노드를 사용하는 경우에는 어떻게 해야 할까요? 물론 스튜디오에서 언제나 앱을 가져와서 github에서 포크(fork)할 수 있지만 참조 노드에 대한 씬을 스캔하는 코드에 커스터마이즈 노드 유형을 추가하기만 하면 실제로 변경할 수 있으므로 그렇게까지 할 필요는 없습니다. - -대신, 분석을 통해 씬 스캔 코드 조각을 후크로 구현할 수 있습니다. 이는 앱 구성의 일부인 효과적인 설정이라는 것을 의미합니다. plain-vanilla Maya의 사례를 처리하는 기본값이 제공되므로 즉시 작동할 수 있지만 원하는 경우 {% include product %} 툴킷을 간편하게 구성하여 이 동작을 완전히 변경할 수도 있습니다. - -앱이 설치되면 기본값으로 모든 후크 설정이 구성에 표시됩니다. 즉, 앱은 함께 제공되는 기본 제공 후크 구현을 사용합니다. 예를 들어 시작 관리자 앱 구성은 다음과 같습니다. - -```yml -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -`hook_app_launch` 및 `hook_before_app_launch`는 기본 앱 구현을 사용하는 두 개의 후크가 있음을 알 수 있습니다. 이러한 후크는 스튜디오가 시작 프로세스를 커스터마이즈하고 환경 변수를 설정할 수 있도록 하기 위해 만들어졌습니다. - -![](images/advanced-toolkit-administration/app_hooks.png) - -이러한 후크를 커스터마이즈하려면 먼저 원래 구현을 찾아야 합니다. 각 앱에는 후크가 등록되는 후크 폴더가 있습니다. 이제 커스터마이즈하려는 후크를 가져와서 ***구성의 후크 폴더에 해당 후크를 복사***합니다. 코드를 필요에 따라 변경합니다. - -환경 구성에는 `default`로 설정된 후크가 아직 있으며, 이 경우에는 앱과 함께 제공되는 기본 후크만 선택됩니다. 새 설정을 선택하려면 기본값을 구성 후크 폴더 안에 있는 Python 후크 파일의 이름으로 변경합니다. - -**예: 후크를 커스터마이즈하는 방법** - -다음은 앱 시작 관리자의 `hook_before_app_launch` 후크를 커스터마이즈하는 방법에 대한 간단한 요약입니다. - -1. 기본 후크 구현을 복사합니다. 앱과 함께 제공되는 기본 후크의 위치는 위의 이미지를 참조하십시오. 이제 이 파일을 구성 영역의 후크 폴더에 복사합니다. 예를 들어 파이프라인 구성이 `/mnt/software/sgtk/big_buck_bunny`에 있으면 이 파일을 `/mnt/software/sgtk/big_buck_bunny/config/hooks/before_app_launch.py`에 복사합니다. - -2. Python 코드를 필요에 따라 변경합니다. - -3. 마지막으로 새 코드를 사용하도록 환경 구성을 업데이트합니다. - -```yml -yaml launch_maya: engine: tk-maya extra: {} hook_app_launch: default hook_before_app_launch: before_app_launch # <-- uses custom hook! linux_args: '' linux_path: '@maya_linux' location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} mac_args: '' mac_path: '@maya_mac' menu_name: Launch Maya windows_args: '' windows_path: '@maya_windows' -``` - -다음에 시작 앱을 실행하면 코드가 기본 후크 코드 대신 실행됩니다. \ No newline at end of file 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 deleted file mode 100644 index 192c3cd53..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: default -title: 앱 및 엔진 구성 참조 -pagename: toolkit-apps-and-engines-config-ref -lang: ko ---- - -# 앱 및 엔진 구성 참조 - -이 문서에서는 {% include product %} Pipeline Toolkit의 앱, 엔진 및 프레임워크에 대한 구성을 만들 때 포함할 수 있는 다양한 모든 옵션을 개략적으로 설명합니다. 이러한 옵션은 앱의 고급 구성을 수행할 때 유용할 수 있으며, 개발 중에 매개변수를 앱 구성 매니페스트에 추가해야 할 때 중요합니다. - -_이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 내용은 [{% include product %} 통합 관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오._ - -# 소개 - -이 문서에서는 Sgtk에서 구성과 설정을 위해 사용하는 다양한 파일 형식에 대한 사양을 설명합니다. 이 문서는 사용 가능한 다양한 옵션과 매개변수에 대해 간략히 설명하는 참조 문서입니다. 구성을 관리하는 방법에 대한 모범 사례는 다음 문서를 참조하십시오. - -[구성 관리 모범 사례](https://developer.shotgridsoftware.com/ko/60762324/) - -# {% include product %} Pipeline Toolkit 환경 - -툴킷에는 세 가지 주요 구성요소가 있습니다. - -- _엔진_ 은 호스트 응용프로그램(예: Maya 또는 Nuke)과 Sgtk 앱 간에 전환 계층 또는 어댑터를 제공합니다. 앱은 일반적으로 Python과 PySide를 사용하고 엔진은 호스트 응용프로그램을 표준화된 방식으로 표시하는 작업을 담당합니다. 예를 들어 호스트 응용프로그램 상위에 PySide가 없으면 추가합니다. -- _앱_ 은 비즈니스 로직을 제공하며 본질적으로 특정 작업을 수행하는 도구입니다. 앱은 특정 호스트 응용프로그램에서 작업하거나 둘 이상의 호스트 응용프로그램에서 실행되도록 설계할 수 있습니다. -- _프레임워크_ 는 엔진, 앱 또는 기타 프레임워크에서 사용할 수 있는 라이브러리입니다. 프레임워크를 사용하면 여러 앱 간에 공유되는 코드 또는 동작을 보다 쉽게 관리할 수 있습니다. - -_환경 파일_ 에는 엔진, 앱 및 프레임워크 컬렉션에 대한 구성 설정이 있습니다. 이러한 컬렉션을 환경이라고 합니다. Sgtk는 파일이나 작업자별로 다른 환경을 시작합니다. 예를 들어 샷 프로덕션용 환경과 리깅용 환경을 구성할 수 있습니다. 각 환경은 단일 yaml 파일입니다. - -환경 파일은 `//software/shotgun//config/env`에 있습니다. - -yaml 파일의 기본 형식은 다음과 같습니다. - -```yaml - engines: - 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 - framework settings -``` - -각 앱과 엔진은 설정을 통해 구성할 수 있습니다. 이러한 설정은 앱/엔진이 매니페스트 파일 `info.yml`에 표시하는 설정 목록과 일치합니다. Sgtk Core의 `v0.18.x`에서는 매니페스트 파일에 지정된 기본값과 다를 경우에만 설정을 지정해야 합니다. 매니페스트 파일 외에도 일반적으로 툴킷 App Store 내의 앱/엔진 페이지에서 구성 가능한 설정을 찾을 수 있습니다. - -각 앱, 엔진 및 프레임워크는 각 항목에 대해 정의할 수 있는 다양한 설정 외에도 코드가 있는 위치를 정의해야 합니다. 이 작업은 특수 `location` 매개변수를 사용하여 수행됩니다. - -## 코드 위치 - -환경 파일에 정의된 각 앱, 엔진 또는 프레임워크에는 실행할 앱 버전과 다운로드 위치를 정의하는 `location` 매개변수가 있습니다. 대부분의 경우 `tank updates` 및 `tank install` 명령에 의해 자동으로 처리됩니다. 그러나 구성을 직접 편집하는 경우 툴킷을 배포하고 구조화할 수 있도록 하는 다양한 옵션을 사용할 수 있습니다. - -툴킷은 현재 다음 위치 _디스크립터_ 를 사용한 앱 설치 및 관리를 지원합니다. - -- **app_store** 디스크립터는 툴킷 App Store의 항목을 나타냅니다. -- **{% include product %}** 디스크립터는 {% include product %}에 저장된 항목을 나타냅니다. -- **git** 디스크립터는 git 리포지토리의 태그를 나타냅니다. -- **git_branch** 디스크립터는 git 분기의 커밋을 나타냅니다. -- **path** 디스크립터는 디스크상의 위치를 나타냅니다. -- **dev** 디스크립터는 개발자 샌드박스를 나타냅니다. -- **manual** 디스크립터는 커스텀 배포 및 롤아웃에 사용됩니다. - -다양한 디스크립터 사용 방법에 대한 자세한 정보는 [툴킷 참조 문서](http://developer.shotgunsoftware.com/tk-core/descriptor.html#descriptor-types)를 참조하십시오. - -## 앱 및 엔진 비활성화 - -때로는 앱이나 엔진을 일시적으로 비활성화하는 것이 유용할 수 있습니다. 이 작업을 수행할 때는 앱 또는 엔진을 로드해야 하는 위치를 지정하는 위치 사전에 `disabled: true` 매개변수를 추가하는 것이 좋습니다. 이 구문은 서로 다른 위치 유형 모두에서 지원됩니다. 예를 들어 다음과 같이 표시될 수 있습니다. - -```yaml -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]} -``` - -_deny_platforms_ 매개변수의 가능한 값은 `windows`, `linux` 및 `mac`입니다. - -## 설정 및 매개변수 - -각 앱, 엔진 또는 프레임워크는 구성 파일에서 재정의할 수 있는 여러 가지 설정을 명시적으로 정의합니다. 이러한 설정은 문자열, 정수, 목록 등에 명확히 입력됩니다. 자세한 내용은 [툴킷 참조 문서](http://developer.shotgunsoftware.com/tk-core/platform.html#configuration-and-info-yml-manifest)를 참조하십시오. 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 deleted file mode 100644 index 0f58e6e19..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -layout: default -title: 첫 번째 프로젝트 실행 이후 작업 -pagename: beyond-your-first-project -lang: ko ---- - - -# 첫 번째 프로젝트 실행 이후 작업 - -이제 {% include product %} 데스크톱을 사용하여 첫 번째 프로젝트를 실행한 후의 작업에 대해 설명하겠습니다. 여기서는 공통 질문 및 주제를 다루고 유용한 문서 리소스를 소개합니다. - - -# 툴킷 소개 - -툴킷 소개 이 문서를 읽고 있다면 {% include product %} 데스크톱을 사용하여 첫 번째 {% include product %} Pipeline Toolkit 프로젝트를 성공적으로 설치했다는 것을 의미합니다. - -![](images/Beyond-your-first-project/project_ready.png) - -이 단계에서는 이미 프로젝트를 실행 중이고 위의 스크린샷처럼 여러 응용프로그램 시작 관리자가 있는 프로젝트 페이지가 표시되어 있어야 합니다. 이제 Maya, Nuke 또는 다른 응용프로그램을 열어 보십시오. 파일 및 에셋을 관리하기 위한 추가 기능이 있는 {% include product %} 메뉴를 찾아야 합니다. - -다음으로 수행할 작업은 무엇일까요? 툴킷은 구성 및 작동 방식 면에서 많은 유연성을 제공합니다. 이 문서에서는 {% include product %} 데스크톱을 사용하여 첫 번째 프로젝트를 실행한 후에 수행하면 좋은 일부 단계에 대해 설명합니다. - -# 기초 구성 - -이 섹션에는 구성에 필요한 여러 가지 조정 및 유용한 정보가 포함되어 있습니다. 첫 번째 툴킷 프로젝트를 방금 설정했다면 아마도 올바른 작동을 위해 여러 가지 설정을 조금씩 조정해야 할 것입니다. 이 섹션에서는 이러한 다양한 단계를 설명합니다. 이 중 일부는 구성 파일 편집 및 내부적으로 진행되는 작업과 관련이 있습니다. 궁금한 사항이 있으시면 언제든지 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)를 방문해 도움을 주시기 바랍니다. - -## 응용프로그램 경로 설정 - -첫 번째 프로젝트를 설정하고 시작 버튼 중 하나를 클릭하여 Maya, Motionbuilder 또는 Nuke를 시작하면 다음과 같은 오류 메시지가 표시될 수 있습니다. - -![](images/Beyond-your-first-project/failed_to_launch.png) - -툴킷 프로젝트 구성에는 시작할 수 있는 다양한 실행 파일의 경로가 저장됩니다. 위의 메시지가 표시되면 해당 경로가 스튜디오 설정과 일치하지 않는 것일 수 있습니다. 또한 잘못된 버전의 응용프로그램이 시작되고 있음을 알 수 있습니다. 예를 들어 기본 구성에는 Maya 2015 경로가 있지만 스튜디오는 Maya 2014를 실행 중일 수 있습니다. 이 경우 경로를 변경해야 합니다. - -기본 구성에서 이러한 경로는 모두 `paths.yml`이라는 단일 파일에 저장됩니다. 경로를 변경하려면 디스크에서 프로젝트 구성을 찾은 다음 `paths.yml` 파일을 찾을 때까지 config 폴더를 탐색합니다. - -![](images/Beyond-your-first-project/paths_config.png) - -이 파일을 열고 경로를 원하는 대로 변경합니다. 파일을 저장한 후에는 {% include product %} 데스크톱에 프로젝트를 그대로 두고 다시 클릭해야 합니다. 그러나 전체 응용프로그램을 다시 시작할 필요는 없습니다. - -**추가 정보** - -응용프로그램에 대한 자세한 정보는 다음 항목을 참조하십시오. - -- [툴킷 응용프로그램 시작 관리자](https://developer.shotgridsoftware.com/ko/1b9c259a/) -- [명령행 인자 전달](https://developer.shotgridsoftware.com/ko/1b9c259a/) - - -## {% include product %} 통합 - -툴킷은 {% include product %}와 통합되며 UI의 다양한 부분에 특별한 툴킷 액션 메뉴 항목을 추가하여 기존 인터페이스를 확장합니다. - -![](images/Beyond-your-first-project/shotgun_integration.png) - -이를 통해 {% include product %}에서 직접 데이터를 조작하는 툴킷 응용프로그램 또는 커스텀 도구를 시작할 수 있게 됩니다. 통합에 대한 자세한 내용은 {% include product %} 사이트, [관리 안내서의 브라우저 통합 섹션](https://developer.shotgridsoftware.com/ko/8085533c/)을 참조하십시오. - -## {% include product %} UI에 게시 추가 - -툴킷을 설치한 후에는 일반적으로 {% include product %} UI 레이아웃을 약간 조정하는 것이 좋습니다. {% include product %} Pipeline Toolkit은 파일을 게시할 때 _게시 엔티티_ 를 만들므로 에셋 및 샷과 같은 주요 에셋에 _게시(Publishes) 탭_ 을 추가하기에 편리합니다. 이렇게 하려면 관리자(admin)로 로그인해야 합니다. 에셋 또는 샷으로 이동하고 _디자인 모드_ 를 시작합니다. - -![](images/Beyond-your-first-project/design_mode.png) - -이제 탭 중 하나에서 작은 메뉴 삼각형을 클릭하고 _새 탭 추가(Add New Tab)_ 액션을 선택합니다. 그러면 대화상자 UI가 나타납니다. _게시(Publishes)_ 탭을 호출하고 _게시된 파일(Published File)_ 엔티티와 연결되어 있는지 확인합니다. - -![](images/Beyond-your-first-project/create_tab.png) - -이제 _저장(Save)_ 을 클릭하여 변경 사항을 저장합니다. 설정이 끝났습니다. - -참고: 사용자가 새 탭을 만들 때 {% include product %}는 몇 개의 기본 필드를 선택하여 가져옵니다. 게시할 필드를 몇 개 더 추가할 수 있습니다. 새 게시 탭에서 볼 수 있는 스프레드시트의 오른쪽 상단에 있는 작은 더하기 버튼을 클릭하면 됩니다. 다음 필드를 추가하는 것이 좋습니다. - -- **설명(Description)** - 이 게시에서 변경한 사항에 대한 설명 저장 -- **만든 사람(Created by)** - 게시를 만든 사용자 -- **만든 날짜(Date Created)** - 게시를 만든 날짜 - -레이아웃을 변경하는 경우 완료 후 반드시 페이지를 저장해야 합니다. - -## 다중 운영 체제 - -경우에 따라 설명서의 이 섹션에 대한 링크와 함께 **Python을 찾을 수 없음(Python cannot be found)**이라는 메시지가 표시될 수 있습니다. - -툴킷은 [Python](https://www.python.org/)이라는 언어를 사용하여 스크립트와 기능을 실행합니다. {% include product %} 데스크톱에는 완전한 Python 설치가 기본 제공되므로 보통은 이 메시지에 대해 신경쓸 필요가 없습니다. {% include product %} 데스크톱을 사용하여 새 툴킷 프로젝트를 설정한 경우 프로젝트는 기본적으로 {% include product %} 데스크톱과 함께 번들로 제공되는 Python을 사용하도록 설정됩니다. 그러나 툴킷에 Python을 사용하도록 명시적으로 알려야 할 때도 있습니다. 다음과 같은 경우를 예로 들 수 있습니다. - -- 모든 Python 기본값을 자동으로 설정하지 않는 이전 버전의 {% include product %} 데스크톱을 사용할 경우 -- {% include product %} 데스크톱을 디스크의 표준 위치가 아닌 위치에 설치한 경우 -- 수동 또는 복잡한 툴킷 프로젝트 설정을 실행하는 경우 - -Python 경로는 수동으로 편집할 수 있는 구성 파일에 저장됩니다. - -![](images/Beyond-your-first-project/interpreter.png) - -올바른 파일을 찾으려면 먼저 프로젝트 구성으로 이동합니다. 그런 다음 `interpreter_`로 시작하는 트리 파일을 찾습니다. 여기에는 Linux, Windows 및 Mac("Darwin")용 Python 인터프리터에 대한 경로가 포함되어 있습니다. 이러한 파일에는 세 가지 운영 체제 각각에 대한 Python의 위치가 들어 있습니다. 이제 사용하려는 운영 체제에 대한 Python 위치를 수동으로 추가해야 합니다. - -파일이 비어 있으면 이전 버전의 {% include product %} 데스크톱을 사용하고 있는 것입니다. 이 경우 빈 파일을 기본 Python 경로로 업데이트하십시오. 다음을 참조하십시오. - -- Macosx(Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` -- Windows: `C:\Program Files\Shotgun\Python\python.exe` -- Linux: `/opt/Shotgun/Python/bin/python` - -{% include product %} 데스크톱을 표준 위치가 아닌 곳에 설치했거나 별도로 설정한 Python 위치를 사용하려는 경우 파일 경로가 유효한 Python 설치를 가리키는지 확인합니다. Python은 v2.6 이상이어야 합니다(단, Python 3 제외). UI 기반 응용프로그램과 도구를 실행하려면 지정한 Python에 PyQt 또는 PySide가 설치되어 있고 QT v4.6 이상에 링크되어 있는지 확인하십시오. - -또한 여러 운영 체제에서 툴킷을 실행하려면 프로젝트 설정 마법사를 실행할 때 원하는 모든 플랫폼에 대한 경로를 지정해야 합니다. 이 작업을 수행하지 않고 저장소 경로 또는 구성 위치에 추가 운영 체제를 추가하려는 경우 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -# 다음 단계 - -이제 {% include product %} 프로젝트(또는 테스트 프로젝트)에서 기본 {% include product %} 설정을 사용할 수 있습니다. 응용프로그램이 시작되고 상황에 맞는 메뉴 액션 및 게시가 {% include product %}에 표시되고 항목이 원하는 운영 체제 플랫폼에서 작동합니다. - -다음 섹션에서는 해당 기본 구성을 가져와 나머지 스튜디오 파이프라인처럼 작동하도록 조정하는 프로세스에 대해 설명합니다. 툴킷은 유연하고 상세한 구성이 가능하며 당사에서는 많은 문서를 제공합니다. 시작하기 전에 실제 모든 작동 방식을 확인하려면 몇 분 정도 시간을 내어 다양한 연습 동영상을 확인하는 것이 좋습니다. 이 동영상은 {% include product %} Pipeline Toolkit이 Maya 및 Nuke와 같은 응용프로그램 내에서 작동하는 방식을 보여 줍니다. 또한 게시, 버전 제어, 로딩 등과 같은 기본 개념도 설명합니다. - -## 툴킷 프로젝트 분석 - -새로운 툴킷 프로젝트를 만들면 몇 가지 주요 위치에 구성됩니다. - -![](images/Beyond-your-first-project/storage.png) - -- {% include product %} 데스크톱 및 해당 구성은 로컬 시스템에 설치됩니다. 원하는 경우 응용프로그램과 구성을 공유 저장소에 재배치할 수 있습니다. -- 툴킷 프로젝트는 텍스처, 파일, 렌더링 등을 데이터 영역에 저장합니다. 이 데이터를 다른 사용자와 공유하기 때문에 일반적으로 이 영역은 공유 저장소에 있지만 이 규칙에는 예외가 있습니다. 사용자 작업 영역은 로컬(사용자 전용) 저장소에 저장할 수 있으며 Perforce 통합과 같은 통합은 외부 시스템을 사용하여 컨텐츠를 배포하는 데 도움이 됩니다. -- 툴킷 구성은 코드, 앱, Core API 등을 비롯하여 완전한 자체 포함 번들입니다. 이 구성은 일반적으로 공유 저장소에 저장되므로 모든 사용자가 쉽게 액세스할 수 있습니다. - -디스크의 프로젝트 구성에는 몇 가지 서로 다른 항목이 있습니다. - -![](images/Beyond-your-first-project/project_overview.png) - -다음 섹션에서는 프로젝트 구성 폴더의 여러 부분을 살펴보겠습니다. - -### 명령줄 액세스 - -{% include product %} 데스크톱뿐만 아니라 터미널 또는 셸을 통해 툴킷에 액세스할 수도 있습니다. 디스크에 생성하는 각 프로젝트에는 API 세션 시작 및 응용프로그램 시작을 포함하여 많은 기능에 명령행 기반으로 액세스할 수 있는 특수 `tank` 명령이 있습니다. - -프로젝트 구성으로 이동하면 구성 루트에 `tank` 및 `tank.bat` 명령이 표시됩니다. 옵션 없이 이러한 명령을 실행하면 다음의 유용한 명령을 포함하여 현재 구성에서 지원되는 모든 명령 목록을 확인할 수 있습니다. - -- `tank shell` - tk api 액세스 권한으로 대화형 Python 셸 시작 -- `tank core` - 이 프로젝트에 사용할 수 있는 Core API 업데이트가 있는지 확인 -- `tank updates` - 이 구성의 앱이나 엔진에 사용 가능한 업데이트가 있는지 확인 - -`tank` 명령을 사용하여 수행할 수 있는 작업에 대한 자세한 정보는 자세한 기술 문서를 참조하십시오. - -[툴킷 관리 방법](https://developer.shotgridsoftware.com/ko/425b1da4/) - -### 주요 구성 파일 - -`config` 폴더에는 몇 가지 주요 구성 파일이 있습니다. - -![](images/Beyond-your-first-project/config_overview.png) - -응용프로그램을 시작할 때 필요한 모든 구조가 디스크상에 있고 사전에 준비되도록 하기 위해 디스크에 폴더를 자동으로 만드는 폴더 생성 시스템이 툴킷과 함께 제공됩니다. 이에 대한 구성은 위에 표시된 `schema` 폴더에서 찾을 수 있습니다. - -또한 툴킷 _템플릿 시스템_ 을 함께 사용하면 게시, 작업 파일, 렌더링 등 구성할 수 있는 파일에 대한 다양한 경로를 쉽게 정의할 수 있습니다. 이 항목은 위의 `templates.yml` 파일에 저장됩니다. - -프로젝트 구성의 이 두 부분을 함께 사용하면 툴킷이 기존 파이프라인에서 이해할 수 있도록 디스크의 위치에 데이터를 기록하는 데 사용되는 다양한 앱을 조정할 수 있습니다. - -자세한 정보는 다음과 같은 고급 문서를 참조하십시오. - -- [폴더 구성](https://developer.shotgridsoftware.com/ko/425b1da4/) -- [파일 시스템 템플릿](https://developer.shotgridsoftware.com/ko/425b1da4/) - -기본적으로 툴킷은 구성된 **앱 및 엔진**의 모음으로 구성됩니다. 이 구성은 `env` 폴더에 있습니다. 위에 설명된 파일 시스템 구성 파일이 디스크상에서의 리소스 _위치_ 를 정의하면 해당 앱 및 엔진이 있는 환경 구성이 파이프라인이 수행해야 할 _작업_ 을 정의합니다. - - -### Core API 플랫폼 - -각 프로젝트 구성은 앱 및 엔진의 컬렉션을 사용합니다. 이러한 앱 및 엔진의 구성은 구성 내의 `env` 폴더에 저장됩니다. 툴킷은 이러한 앱 및 엔진을 실행하는 데 필요한 다양한 버전의 코드를 자동으로 다운로드하고 관리합니다. 코드는 `install` 폴더 안에 있습니다. - -구성, 앱 및 엔진은 모두 Toolkit Core 플랫폼 상단에서 실행됩니다. 새로운 프로젝트의 경우 `install` 폴더 내에도 저장됩니다. 기본적으로 프로젝트 구성은 완전하게 자체 포함되어 있습니다. 즉, 툴킷을 실행하는 데 필요한 모든 부분이 단일 위치에 있습니다. 또한 각 프로젝트가 독립적이며 하나의 프로젝트를 업데이트해도 다른 프로젝트가 중단되지 않는다는 것을 의미합니다. - -기술 참고 사항: 공유 Toolkit Core 사용(클릭하여 확장) - -### 추가 정보 - -{% include product %} Pipeline Toolkit의 개략적인 개념을 살펴보고 '전체적인 내용'을 설명하는 좀 더 기술적인 문서도 있습니다. 툴킷이 기본적으로 제공하는 기능을 잘 이해한 다음 이러한 문서로 옮겨가서 특정 스튜디오 요구 사항에 맞게 툴킷을 조정할 수 있는 방법을 더 깊이 이해하는 것이 좋습니다. - -[{% include product %} 툴킷](https://developer.shotgridsoftware.com/ko/e95205a8/)의 개괄적인 개념에 대한 소개 - -## 툴킷 커뮤니티 - -TD 및 파이프라인 엔지니어의 커뮤니티는 툴킷의 한 부분을 구성합니다. 우리는 강력하고 유연한 파이프라인 환경으로 툴킷을 함께 개선할 수 있는 역동적인 코드 공유 커뮤니티를 만드는 데 주력하고 있습니다. - -궁금한 점이 있거나 기존 게시물 및 논의를 살펴보고 싶다면 [커뮤니티](https://community.shotgridsoftware.com/c/pipeline/6)를 방문하십시오. - diff --git a/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md b/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md deleted file mode 100644 index d3a5d317e..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/community-shared-integrations.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -title: 커뮤니티 공유 통합 -pagename: community-shared-integrations -lang: ko ---- - -# 커뮤니티 공유 통합 - -다음은 툴킷 커뮤니티에 있는 사람들이 공유할 정도로 유용한 프로젝트들입니다. 이 프로젝트들은 {% include product %}에서 작성하지 않았고 보증할 수도 없지만 답변 가능한 질문에 대해서는 성심껏 답변해 드리겠습니다. 목록에 추가하려는 프로젝트가 있는 경우 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -### 엔진 - ----------- - -| 통합 | 엔진 | 정보 | -|:-----------:|:------:| ----------- | -| 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/4.26/ko/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/](https://docs.unrealengine.com/4.26/ko/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/)
프로젝트 기여: [Epic Games](https://www.epicgames.com/store/ko/)
프로젝트 유지보수:
프로젝트 설명: [Unreal Engine](https://www.unrealengine.com/ko/)용 {% 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.shotgridsoftware.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/ko/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/)
프로젝트 설명: [Krita](https://krita.org/ko/)용 {% include product %} 엔진으로, 주로 디지털 페인팅 및 2D 애니메이션용으로 설계된 무료 오픈 소스 래스터 그래픽 편집기입니다.
추가 정보: [{% include product %} 커뮤니티 포럼](https://community.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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 deleted file mode 100644 index 2002e8b33..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ /dev/null @@ -1,498 +0,0 @@ ---- -layout: default -title: 구성 스테이징 및 롤아웃 -pagename: config-staging-and-rollout -lang: ko ---- - -# 구성 스테이징 및 롤아웃 - -이 문서에서는 프로덕션 파이프라인의 변경 사항을 안전하게 롤아웃하는 방법에 대한 모범 사례를 설명합니다. 여기에서는 스테이징 샌드박스(즉, 프로덕션 구성 사본)를 만들고, 이 샌드박스를 업데이트하여 테스트를 진행한 다음 마지막으로 변경 사항을 프로덕션 구성으로 푸시하는 방법을 설명합니다. - -_이 문서에서는 툴킷 구성에 대한 제어 권한을 갖고 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 기본 설정에 대한 자세한 내용은 [{% include product %} 통합 관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오._ - -# 소개 - -이 문서에서는 툴킷 구성을 관리하는 방법을 간략히 설명합니다. 툴킷에는 샌드박스가 적용된 안전한 환경에서 구성을 안전하게 관리하고 업그레이드 및 변경 사항을 전체 프로덕션으로 롤아웃하기 전에 테스트하도록 하는 몇 가지 유틸리티와 도구가 포함되어 있습니다. - -이 문서에서는 다음과 같은 방법을 설명합니다. - -- Toolkit Core API를 안전하게 업그레이드하는 방법 -- 앱 및 엔진을 업그레이드하는 방법 -- 다중 프로젝트에서 구성을 관리하는 다양한 방법 -- 툴킷의 _복제_ 및 _밀기_(푸시) 기능을 통해 프로덕션에 영향을 주지 않고 업그레이드 및 변경 사항을 안전하게 테스트하는 방법 -- `git` 소스 제어 및 툴킷으로 작업하는 방법 - -# 구성 관리의 기본 사항 - -각 툴킷 프로젝트에는 하나 이상의 구성이 관련되어 있습니다. 구성에는 프로젝트에 필요한 모든 설정(파일 시스템 위치(템플릿), 엔진 앱 등)이 있습니다. 툴킷에서 각 프로젝트를 독립적으로 구성할 수 있습니다. 즉, 서로 다른 프로젝트가 병렬적으로 실행될 수 있으며 하나의 프로젝트를 업그레이드해도 다른 프로젝트에 영향을 미치지 않습니다. - -많은 프로젝트에 대한 작업을 수행하는 경우 번거로울 수 있으며 이 프로세스를 쉽고 안전하며 원활하게 실행할 수 있게 해 주는 여러 가지 방법이 제공됩니다. - -{% include product %}의 각 프로젝트에는 많은 **파이프라인 구성**이 있습니다. 프로젝트가 툴킷으로 먼저 설정되면 `primary`라는 파이프라인 구성이 만들어집니다. {% include product %}의 파이프라인 구성 엔티티는 툴킷 구성을 찾을 수 있는 디스크상의 위치를 가리킵니다. - -프로젝트 과정에서 종종 구성을 변경해야 합니다. 구성을 조정할 수도 있거나 앱 또는 엔진을 추가해야 할 수 있습니다. 또한 새 앱 버전이 자주 릴리즈되므로 가능하면 최신 버전을 사용하는 것이 좋습니다. - -_기본_ 프로젝트 구성을 즉시 업그레이드할 수는 있지만 위험할 수 있습니다. 이 구성은 프로젝트의 모든 사람이 사용하므로 문제가 발생할 경우 모든 사람에게 영향을 미칩니다. 그러므로 해당 그룹의 작업자가 액세스할 수 있는 격리된 버전의 구성을 만드는 것이 좋습니다. 이렇게 설정된 안전한 환경에서는 업그레이드, 구성 변경 및 개발 시에 다른 프로덕션에 영향을 주지 않습니다. 변경 사항을 테스트한 후에 안전하고 확실하게 기본 구성으로 푸시할 수 있습니다. - -이 프로세스를 _복제_ 라고 하며, 해당 사용자(및 해당 사용자가 초대한 다른 사용자)만 복제본에 액세스할 수 있도록 기본 구성의 개인 복사본을 만드는 것을 의미합니다. 이 환경에서 안전하게 변경할 수 있으며, 성공적으로 변경한 후 기본 구성으로 변경 사항을 다시 푸시할 수 있습니다. - -## 구성 복제 - -툴킷을 설정하고 프로젝트를 구성하면 설치 프로그램이 다음과 같이 표시될 것입니다. - -![](images/config-staging-and-rollout/config_overview.png) - -_스튜디오_ 설치에는 모든 프로젝트의 Core API가 포함되어 있습니다. 또한 이 _스튜디오_ 위치에는 툴킷이 활성화된 {% include product %} 프로젝트에 액세스하는 데 사용할 수 있는 `tank` 명령과 툴킷 Python API가 포함되어 있습니다. - -이 외에도 각 프로젝트에 대한 구성 폴더가 있습니다. 이 폴더에는 해당 프로젝트에 대한 모든 설정이 있습니다. 또한 이 구성에서 특별히 작동하는 `tank` 명령(및 Python API)도 포함되어 있습니다. 이 `tank` 명령 또는 API 코드를 사용하는 경우 이 구성에서만 작동합니다. - -새 프로젝트가 설정되면 _기본_ 구성이 만들어집니다. 이 구성은 기본적으로 툴킷이 프로젝트에 대해 사용됩니다. 기본 구성 외에도 프로젝트에 대한 추가 구성을 만들 수 있습니다. 이러한 구성은 병렬로 존재할 수 있습니다. 예를 들어 일부 수정 사항을 개인적으로 테스트하거나 일부 앱을 업그레이드하거나 전체 팀에 영향을 주지 않고 개발을 수행하려는 경우에 유용합니다. 추가 구성은 _복제_, 즉 구성이 새 위치로 복사되는 프로세스에 의해 만들어집니다. - -구성을 복제하면 설정이 다음과 같이 표시될 수 있습니다. - -![](images/config-staging-and-rollout/pc_overview.png) - -스튜디오 레벨 `tank` 명령과 기본 프로젝트 구성 `tank` 명령 외에도 새로운 파이프라인 구성에 자체 `tank` 명령이 있습니다. 이 `tank` 명령을 실행하면 스테이징 샌드박스에 있는 구성에서만 작동합니다. 따라서 Maya에서 새로운 일부 항목을 테스트하려면 간단히 복제 샌드박스로 이동하여 `./tank Shot xyz launch_maya`를 실행합니다. 그러면 Maya에 표시되는 {% include product %} 메뉴에 기본 구성이 아닌 스테이징 샌드박스 내부의 구성이 반영됩니다. - -스튜디오 레벨 `tank` 명령은 항상 기본 구성을 사용하므로 복제 구성에 액세스하려면 반드시 해당 위치로 이동하여 해당 폴더에 있는 `tank` 명령을 사용해야 합니다. {% include product %}에서는 특정 사용자 집합을 파이프라인 구성 항목에 할당할 수 있으며, 이제 구성과 관련된 모든 사용자에게 기본 구성의 항목 외에 메뉴 항목이 표시됩니다. - -![](images/config-staging-and-rollout/pc_shotgun.png) - -### 복제 구성 만들기 - -업그레이드를 안전하게 테스트할 수 있는 스테이징 샌드박스를 만들려면 {% include product %}에서 프로젝트의 파이프라인 구성을 탐색하고 마우스 오른쪽 버튼으로 기본 구성을 클릭합니다. 구성을 복제하는 옵션이 나타납니다. - -![](images/config-staging-and-rollout/clone_menu.png) - -이 옵션을 클릭하면 새로운 구성이 위치할 디스크의 경로를 지정하는 대화상자가 나타납니다. 다중 OS 설정을 실행하는 경우 모든 관련 플랫폼의 경로를 입력해야 합니다. - -![](images/config-staging-and-rollout/clone_dialog.png) - -확인(OK)을 누르면 툴킷이 구성을 복사하고 복제본을 설정합니다. 또한 {% include product %} 사용자와 이 구성이 연결되므로 복제를 만들자마자 {% include product %} 내에 새로운 메뉴 항목이 표시됩니다. - -### 스테이징 샌드박스의 변경 사항을 기본 구성으로 푸시 - -관련 업데이트를 적용하고 필요한 테스트를 실행한 다음 `tank push_configuration` 명령을 실행하여 변경 사항을 프로덕션 구성으로 다시 푸시할 수 있습니다. 이렇게 하면 스테이징 샌드박스의 모든 변경 사항이 기본 구성으로 전송됩니다. - -`push_configuration` 명령을 실행하면 현재 구성이 백업 위치로 이동됩니다. 실수로 푸시하거나 푸시에 문제가 있는 경우 백업 폴더의 컨텐츠를 가져와서 구성 폴더로 복사하는 방법으로 간단히 롤백할 수 있습니다. - -기본적으로 이 명령은 파일 모음을 대상 파이프라인 구성의 `config` 폴더에 복사합니다. Unix를 사용하고 있고 더 원자적인 업데이트를 원할 경우 `push_configuration` 명령에 `--symlink` 플래그를 추가할 수 있습니다. 이렇게 하면 대상 파이프라인 구성의 `config` 폴더가 기호 링크로 바뀌므로 현재 실행 중인 세션에서 구성 불일치의 위험 없이 쉽게 업그레이드할 수 있습니다. - -### 이전 복제 구성 새로 고침 - -이전 dev 또는 스테이징 샌드박스 설정이 있고 컨텐츠를 최신 프로덕션 구성과 동기화해야 하는 경우에는 기본 구성에 대해 `push_configuration` 명령을 실행합니다. -```shell -tank push_configuration - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/tmp' -- Using configuration 'Primary' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command push_configuration... - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary') to another pipeline configuration in the project. - -Your existing configuration will be backed up. - -The following pipeline configurations are available to push to: - - [324] Staging Sandbox (/my/staging/sandbox) - -Please type in the id of the configuration to push to (ENTER to exit): 324 -Hold on, pushing config... -Checking if there are any apps that need downloading... -Push Complete! - -Your old configuration has been backed up into the following folder: -/my/staging/sandbox/config.bak.20140108_093218 -``` -기본 프로젝트 구성에서 스테이징 샌드박스로 푸시하는 방법을 확인하십시오. _기본_ 구성의 `tank` 명령을 실행하여 이 작업을 수행합니다. 여러 샌드박스가 설정된 경우 해당 샌드박스 간에 데이터를 푸시할 수도 있습니다. - -### 복제한 구성 삭제 - -복제 구성을 삭제하려면 {% include product %}에서 해당 항목을 삭제하고 디스크에서 폴더를 제거하기만 하면 됩니다. - -## 최신 앱 및 엔진 가져오기 - -스테이징 샌드박스(또는 기타 다른 구성)에서 `tank updates` 명령을 실행하여 사용 가능한 앱 업데이트가 있는지 확인할 수 있습니다. 이 명령에는 구성의 특정 영역만 확인하려는 경우 사용할 수 있는 기초적인 필터가 있습니다. - -```shell ----------------------------------------------------------------------- -Command: Updates ----------------------------------------------------------------------- - -This command will go through your current configuration and check if there are -any updates available. If there are updates, you will be asked if you want to -perform an upgrade. If settings has been added to the new version that you are -installing, you may be prompted to specified values for these. - -Running this command with no parameters will check all environments, engines -and app. This may take a long time. You can also run the updater on a subset -of your installed apps and engines. - -General syntax: -> 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 -``` -## Toolkit Core API 업그레이드 - -이 섹션에서는 복제 스테이징 샌드박스 구성을 사용하여 Toolkit Core API를 안전하게 업그레이드하는 방법에 대해 설명합니다. 스테이징 샌드박스가 아직 준비되지 않았다면 이전 섹션의 지침을 따르십시오. - -스테이징 샌드박스가 [공유 스튜디오 Core API](https://developer.shotgridsoftware.com/ko/b12f2510/#how-do-i-update-my-pipeline-configuration-to-use-an-existing-shared-core)를 사용하는 파이프라인 구성에서 복제된 경우 고유한 Core API 코드를 사용하도록 샌드박스를 업데이트합니다. 이러한 작업을 일컬어 코어를 "현지화"한다고 하며 스테이징 샌드박스로 이동한 다음 `tank localize`를 실행하여 수행할 수 있습니다. 이 명령은 스튜디오 설치에서 Core API를 샌드박스에 복사하며 나중에 다른 버전의 Core API를 실행하고 테스트할 수 있습니다. - -_툴킷의 기본 동작은 기본적으로 코어를 현지화하는 것입니다. 이전에 공유 스튜디오 코어를 명시적으로 만들지 않은 경우 코어가 이미 현지화되어 있다고 가정하는 것이 안전합니다._ -```shell -cd /my/staging/sandbox -./tank localize - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/my/staging/sandbox' -- Using configuration 'Staging Sandbox' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command localize... - ----------------------------------------------------------------------- -Command: Localize ----------------------------------------------------------------------- - -This will copy the Core API in /mnt/software/shotgun/studio into the Pipeline -configuration /my/staging/sandbox. - -Do you want to proceed [yn]y - -Localizing Core: /mnt/software/shotgun/studio/install/core -> /my/staging/sandbox/install/core -Copying Core Configuration Files... -Localizing Apps: /mnt/software/shotgun/studio/install/apps -> /my/staging/sandbox/install/apps -Localizing Engines: /mnt/software/shotgun/studio/install/engines -> /my/staging/sandbox/install/engines -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), -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의 스튜디오 버전 업데이트를 진행할 수 있습니다. 일반적인 툴킷 설정에서는 모든 프로젝트 간에 Core API가 공유되므로 스튜디오 위치 `tank` 명령에서의 `tank core` 명령을 실행하여 모든 프로젝트의 Core API를 업데이트합니다. - -# 프로젝트 수명 주기 관리 - -각 툴킷 프로젝트에는 해당 프로젝트의 모든 설정이 있는 독립적인 구성이 포함됩니다. 많은 프로젝트를 관리한다는 것은 많은 구성을 관리해야 한다는 의미입니다. 따라서 툴킷에는 개별 프로젝트와 스튜디오 수명 주기 및 구성 개선을 위해 구성을 다룰 수 있는 다양한 도구 및 방법이 포함되어 있습니다. 이 섹션에서는 몇몇 모범 사례를 간략히 설명하고 구성을 설정하는 실제 단계를 소개합니다. - -스튜디오의 요구 사항에 따라 복잡성이 다양할 수 있습니다. 툴킷은 세 가지 접근 방식을 제공하며 각각에 대해 자세히 설명하겠습니다. - -- 가장 간단한 방법은 새 프로젝트를 설정할 때 이전 프로젝트의 구성을 복사하는 것입니다. 이 방법은 소규모 스튜디오나 프로젝트가 많지 않은 경우에 유용합니다. -- 프로젝트 회전율이 높고 두 개 이상의 프로젝트를 병렬로 실행하는 경우 다음 통합 레벨에 `git` 버전 제어를 포함하는 것이 좋습니다. 툴킷은 git에 대한 기본적인 지원을 제공합니다. git 기반 워크플로우를 통해 시작하고 실행한 후에는 스튜디오에 대한 단일 구성을 가지게 되며 시간 경과에 따라 해당 구성에 대한 모든 변경 사항을 트래킹할 수 있습니다. 각 프로젝트는 필요할 때마다 구성 변경 사항을 안전하게 가져올 수 있습니다. -- 대규모 프로덕션에서는 단일 구성을 설정하고 스튜디오에서 현재 진행되는 모든 프로젝트에 직접 연결하는 방식을 고려해 볼 수 있습니다. 이 경우 한 번의 구성 변경으로 모든 프로젝트에 즉각적인 영향을 미칠 수 있습니다. - -다음 섹션에서는 다양한 접근 방식을 자세히 설명합니다. - -## 이전 프로젝트에서 구성 상속 - -구성 관리에 대한 가장 간단한 방법입니다. 툴킷을 사용하여 프로젝트를 처음 설정하면 기본 구성이 다운로드됩니다. 그런 다음 파이프라인 설정, 파일 시스템 위치 등에 맞게 첫 번째 프로젝트를 설정합니다. 프로젝트가 실행 중일 때 `tank updates`와 같은 명령 등을 실행하여 실행 중인 앱 버전을 업데이트합니다. - -두 번째 프로젝트를 시작할 때 기초 구성으로 다시 시작하지 않으려면 프로젝트 설정 단계에서 첫 번째 프로젝트의 구성을 새 프로젝트의 시작 지점으로 지정합니다. 즉, 첫 번째 프로젝트에서 수행한 모든 변경, 조정 및 개선 사항을 두 번째 프로젝트에서도 활용할 수 있습니다. 세 번째 프로젝트의 경우 두 번째 프로젝트의 구성을 사용합니다. - -![](images/config-staging-and-rollout/copy_config.png) - -이 간단한 방법으로 시간이 지남에 따라 구성을 점차 개선시킬 수 있습니다. 변경과 개선 사항은 프로젝트 간에 필요에 따라 전달됩니다. `setup_project` 명령을 처음 실행하려면 설정 프로세스에서 사용할 구성을 묻는 메시지가 나타날 때 Enter 키를 누릅니다. 이렇게 하면 기본 구성이 다운로드되어 설치됩니다. - -두 번째 프로젝트의 경우 이전 프로젝트 구성에 대한 경로 목록이 제공됩니다. 이러한 경로 중 하나를 선택하여 설정 프로세스에서 구성을 묻는 메시지가 표시될 때 입력합니다. 이렇게 하면 해당 구성이 새 프로젝트에 복사됩니다. -``` -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -- Running command setup_project... - ----------------------------------------------------------------------- -Command: Setup project ----------------------------------------------------------------------- - -Welcome to the {% include product %} Pipeline Toolkit Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - My very first project: '/mnt/software/shotgun/first_project/config' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can enter the path -to this config and it will be used for the new project. - -You can also enter an url pointing to a git repository. Toolkit will then -clone this repository and base the config on its content. - -[tk-config-default]: /mnt/software/shotgun/first_project/config -``` -## git 소스 제어의 스튜디오 구성 - -첫 번째 접근 방식에는 프로젝트가 서로 연결되지 않는다는 제한이 있습니다. 10개의 프로젝트가 있고 중요한 버그 수정이 릴리즈되어 업데이트해야 하는 경우 각 프로젝트를 수동으로 확인하고 `tank updates` 명령을 실행해야 합니다. - -이 문제를 해결하는 한 가지 방법은 마스터 구성을 만들고 git 소스 제어에 저장하는 것입니다. 새 프로젝트를 만들 때마다 프로젝트 설정 대화상자에 이 git 리포지토리의 경로를 입력하기만 하면 툴킷에서 복제됩니다. 이제 모든 프로젝트가 동일한 "스튜디오 마스터" 구성에 연결됩니다. 프로젝트 구성을 변경한 후에는 커밋하고 스튜디오 마스터에 푸시할 수 있습니다. 그러면 다른 프로젝트에서 이 변경 사항을 쉽게 가져올 수 있습니다. 또한 git를 통해 변경한 모든 내역은 기록으로 유지됩니다. - - git란? - -![](images/config-staging-and-rollout/git_config.png) - -기본 개념은 git 구성을 저장하는 git 리포지토리를 설정하는 것입니다. `tank setup_project`를 실행할 때마다 이 리포지토리에 git URL을 지정하면(예: `username@someserver.com:/studio_config.git`) 새 프로젝트가 기본 스튜디오 리포지토리에 연결된 리포지토리가 되도록 설치 프로세스에서 리포지토리가 복제됩니다. 연결된 후에는 변경 사항을 푸시(push)하고 풀(pull)해서 분기에서 보다 세부적으로 작업할 수 있습니다. - -### 스튜디오 구성 리포지토리 설정 - -다른 작업을 수행하기 전에 스튜디오 구성 리포지토리를 만들어야 합니다. 이 섹션에서는 기존 툴킷 구성을 가져와서 git 리포지토리를 만드는 방법을 보여 줍니다. - -먼저 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 -``` - -이제 git에서 두 시스템 파일을 무시합니다. 그런 다음 나머지 파일을 구성에 추가하고 커밋하여 스튜디오 리포지토리로 푸시할 수 있습니다. - -```shell -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 리포지토리를 복제하므로 완벽하게 작동합니다. - -### 프로젝트 변경 - -기본 구성을 변경할 때마다 간단히 `config` 폴더로 가서 `git diff`, `git commit` 및 `git push`를 실행할 수 있습니다. 이렇게 하면 프로젝트 구성을 복제한 스튜디오 구성에 변경 사항이 푸시됩니다. - -### 프로젝트를 최신 버전으로 업데이트 - -또한 일부를 변경하여 스튜디오 레벨 구성을 업데이트하여 프로젝트로 가져오려는 경우 `config` 폴더에서 `git pull`을 실행합니다. **중요**: 이 작업을 완료한 후에는 `tank cache_apps`를 실행하여 변경된 구성에 필요한 모든 앱 버전이 시스템에 있는지 확인하십시오. - -### 고급 git 사용: 분기 - -새 프로젝트가 만들어질 때 툴킷의 기본 동작은 간단한 복제 작업입니다. 프로젝트는 git `master` 분기를 사용합니다. 고급 설정으로, 예를 들어 프로젝트의 특정 구성 변경 사항을 비공개로 유지하고 다른 프로젝트와 공유하지 않으려는 경우 프로젝트를 만든 후에 git 분기를 설정할 수 있습니다. 그런 다음 이 분기에 커밋합니다. 스튜디오 구성으로 푸시하려는 변경 사항을 프로젝트의 로컬 마스터 분기와 병합한 다음 푸시할 수 있습니다. - -### 고급 git 사용: 배치(Batch) 배포 - -툴킷은 파이프라인 구성 엔티티를 통해 {% include product %} 사이트에 대한 다른 모든 구성의 목록을 유지하므로 이 목록을 반복하고 각 항목에 대해 `git pull` 명령을 실행하는 방법으로 모든 프로젝트에서 배치(Batch) 업데이트를 효과적으로 실행할 수 있습니다. 이 기능은 현재 툴킷의 기본 제공 기능에 포함되어 있지 않지만 Python 및 {% include product %} Python API를 사용하여 스크립팅할 수 있습니다. - -## include를 사용한 전역 구성 - -위의 git 기반 접근 방식은 git를 통해 연결된 독립적인 프로젝트 구성을 처리합니다. 업데이트는 프로젝트 전체에 자동으로 반영되지 않으므로 강제로 풀/푸시해야 합니다. - -구성이 실제로 한 곳에 저장되고 단일 변경으로 프로젝트 그룹에 즉시 반영할 수 있는 완전한 중앙 집중식 구성의 경우 툴킷 구성의 `@include` 기능을 사용해야 합니다. 이렇게 하면 각 프로젝트 구성이 실제 구성이 저장된 중앙 위치를 가리키도록 참조를 만들 수 있습니다. - -![](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' -maya_mac: '/Applications/Autodesk/maya2012/Maya.app' -maya_linux: 'maya' - -# a configured toolkit app -file_manager: - allow_task_creation: true - file_extensions: [] - hook_copy_file: default - hook_filter_publishes: default - hook_filter_work_files: default - hook_scene_operation: default - launch_at_startup: false - launch_change_work_area_at_startup: false - location: {name: tk-multi-workfiles, type: app_store, version: v0.4.8} - saveas_default_name: scene - saveas_prefer_version_up: false - sg_entity_type_filters: {} - sg_entity_types: [Shot, Asset] - task_extra_display_fields: [] - template_publish: null - template_publish_area: null - template_work: null - template_work_area: null -``` -위에서 볼 수 있듯이 서로 다른 여러 레벨에서 include 정의를 만들 수 있습니다. 위의 경우에는 앱 정의와 세 개의 문자열 값이 있습니다. 그런 다음 환경 파일에서 이를 참조할 수 있습니다. -``` -includes: ['/tmp/stuff.yml'] - -engines: - - tk-maya: - - # First all our app definitions - 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: - tk-multi-workfiles: '@file_manager' - - # alternatively, for simple values, we can use them as parameter values for apps: - tk-maya-launcher: - mac_path: '@maya_mac' - linux_path: '@maya_linux' - windows_path: '@maya_windows' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.19} - - # and after the apps section follows specific configuration options for the engine - location: {name: tk-maya, type: app_store, version: v0.4.1} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - template_project: null - use_sgtk_as_menu_name: false -``` -또한 여러 include 파일을 차례로 읽을 수 있습니다. 두 개의 다른 파일에 동일한 include 정의가 존재하면 가장 최근에 읽은 파일이 우선합니다. 위 예시 환경을 확장할 수 있습니다. -``` -includes: - - # first include a global config file which contains all the studio level app definitions - - '/studio/configurations/studio_apps.yml' - - # now we can include an include containing overrides, for example based on project type. - # if the global config contains an entry named file_manager and the vfx_apps.yml contains - # the same, the vfx_apps definition will be used. - - '/studio/configurations/vfx_apps.yml' - -engines: - - 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 -``` -방금 설명한 방법으로 프로젝트 유형 기본값에 의해 재정의될 수 있는 스튜디오 기본값을 설정할 수 있으며 이 기본값은 특정 프로젝트 설정에 의해 재정의될 수 있습니다. 위의 예와 같이 앱 레벨에서 수행하거나 다음 섹션에서와 같이 엔진 레벨에서 수행할 수 있습니다. - -### 전역 구성 설정 모범 사례 - -전역 구성을 설정하는 몇 가지 방법이 있습니다. 이를 설정하기 위한 모범 사례 접근 방식으로서 구성을 엔진별로 세분화하는 것이 좋습니다. 각 환경 파일은 완전히 비어 있으며 별도의 파일에 정의된 엔진(및 앱)을 참조합니다. 따라서 한 번에 엔진 하나씩 쉽게 조정하고 재구성할 수 있습니다. - -이러한 각 include 파일은 표준 형식으로 되어 있으며 엔진 이름을 따서 명명됩니다. 예를 들어, Maya 엔진을 사용하는 경우 include 파일에는 엔진과 해당 앱만 포함됩니다. 최상위 항목의 이름은 간단히 `maya`로 지정됩니다. -```yaml -maya: - apps: - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.13} - tk-multi-loader2: - action_mappings: - Maya Scene: [reference, import] - Photoshop Image: [texture_node] - Rendered Image: [texture_node] - actions_hook: '{self}/tk-maya_actions.py' - entities: - - caption: Assets - entity_type: Asset - filters: - - [project, is, '{context.project}'] - hierarchy: [sg_asset_type, code] - filter_publishes_hook: '{self}/filter_publishes.py' - location: {name: tk-multi-loader2, type: app_store, version: v1.0.6} - menu_name: Load - publish_filters: [] - title_name: Loader - [... additional app entries here ...] - - debug_logging: true - location: {name: tk-maya, type: app_store, version: v0.3.10} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: {% include product %} Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - use_sgtk_as_menu_name: false - -# each include file has a framworks section containing all the frameworks needed for -# all apps in the file -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' - -engines: - 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`를 환경 파일 자체에 있는 일련의 앱 및 엔진 정의로 간단하게 대체합니다. - -### 전역 구성 관리 - -전역 구성을 관리하는 것은 일반 구성을 관리하는 것보다 복잡합니다. 여러 프로젝트를 하나의 파일 구조로 결합했기 때문에 프로젝트에서 `tank updates` 명령을 실행하고 앱 버전을 업데이트하도록 선택하면 다른 모든 프로젝트에 영향을 주므로 주의하여 진행해야 합니다. - -또한 복제할 대상이 이제 include만 포함하는 프로젝트 구성이기 때문에 표준 복제 워크플로우는 기본적으로 작동하지 않습니다. - -안전한 테스트 및 유지 관리를 위해 소스 컨트롤(예: `git`)에 전역 구성을 저장하고 특별한 테스트 프로젝트로 별도의 테스트 영역에서 업데이트하는 것이 좋습니다. 품질 관리가 통과되면 변경 사항을 커밋하여 실제 전역 구성으로 가져옵니다. 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 deleted file mode 100644 index 59d6a9f46..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/file-system-config-reference.md +++ /dev/null @@ -1,1422 +0,0 @@ ---- -layout: default -title: 파일 시스템 구성 참조 -pagename: toolkit-fs-config-ref -lang: ko ---- - -# 파일 시스템 구성 참조 - -이 항목의 내용: -- [소개](#Introduction) -- [1부 - 폴더 생성 구문](#part-1---folder-creation-syntax) - - [쿼리 폴더](#query-folders) - - [다중 폴더](#multiple-folders) - - [상위 폴더를 사용하여 만들기](#create-with-parent-folder) - - [선택 필드](#optional-fields) - - [정규식 토큰 일치](#regular-expression-token-matching) - - [예](#examples) - - [목록 필드 폴더](#list-field-folders) - - [파이프라인 단계 폴더](#pipeline-step-folder) - - [다양한 파이프라인 단계에 대한 다양한 파일 시스템 레이아웃](#different-file-system-layouts-for-different-pipeline-steps) - - [고급 - 상위 항목 지정](#advanced---specifying-a-parent) - - [태스크 폴더](#task-folder) - - [고급 - 상위 항목 지정](#advanced---specify-a-parent) - - [작업공간 및 폴더 생성 유예](#workspaces-and-deferred-folder-creation) - - [현재 사용자 폴더](#current-user-folder) - - [정적 폴더](#static-folders) - - [기호 링크](#symbolic-links) - - [파일 및 폴더 무시](#ignoring-files-and-folders) - - [IO 및 권한 커스터마이즈](#customizing-io-and-permissions) - - [후크에 전달된 데이터](#data-passed-to-the-hook) - - [후크에 자체 폴더 생성 지시문 전달](#passing-your-own-folder-creation-directives-to-the-hook) - - [정적 폴더에 커스텀 구성 추가](#adding-custom-configuration-to-static-folders) - - [간단한 폴더 생성 방법 커스터마이즈](#simple-customization-of-how-folders-are-created) -- [2부 - 파일 시스템 템플릿 구성](#part-2---configuring-file-system-templates) - - [키 섹션](#the-keys-section) - - [예 - 영숫자 이름](#example---an-alphanumeric-name) - - [예 - 버전 번호](#example---version-number) - - [예 - 스테레오 눈](#example---a-stereo-eye) - - [예 - 이미지 시퀀스](#example---image-sequences) - - [예 - 별칭을 통해 버전 이름이 지정된 두 개의 필드](#example---two-fields-both-named-version-via-an-alias) - - [예 - 타임스탬프](#example---timestamp) - - [예 - 매핑](#example---mappings) - - [예 - 두 개의 유효 값이 있는 문자열 필드](#example---string-field-with-two-valid-values) - - [예 - 값 허용 안 함](#example---disallowing-a-value) - - [예 - 문자열 하위 세트](#example---subsets-of-strings) - - [경로 섹션](#the-paths-section) - - [문자열 섹션](#the-strings-section) - - [템플릿에서 선택적 키 사용](#using-optional-keys-in-templates) -- [고급 질문 및 문제 해결](#advanced-questions-and-troubleshooting) - - [파일 구조에 새 엔티티 유형을 추가하는 방법](#how-can-i-add-a-new-entity-type-to-my-file-structure) - - [에피소드(Episode) > 시퀀스(Sequence) > 샷(Shot) 계층에 필요한 필드](#fields-required-for-the-episode--sequence--shot-hierarchy) - - [에피소드](#episode) - - [시퀀스](#sequence) - - [샷](#shot) - - [에피소드](#episodes) - - [툴킷 템플릿 정의](#toolkit-template-definitions) - - [구조에 분기를 설정하는 방법](#how-can-i-set-up-a-branch-in-my-structure) - - [커스텀 엔티티를 사용하여 커스텀 파이프라인 단계를 만드는 방법](#how-can-i-create-a-custom-pipeline-step-using-a-custom-entity) - - -이 문서는 {% include product %} Pipeline Toolkit의 파일 시스템 중심 구성에 대한 완전한 참조 문서입니다. 여기에서는 템플릿 시스템 작동 방식 및 사용 가능한 옵션을 설명합니다. 또한 폴더 생성 구성에 포함할 수 있는 다양한 매개변수를 모두 보여 줍니다. -_이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 내용은 [{% include product %} 통합 관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오._ - -# 소개 - -이 문서에서는 파일 시스템과 관련된 툴킷 구성의 해당 부분을 구성하는 방법과 그 예를 설명합니다. 툴킷은 많은 파일과 디렉토리를 처리하며, 툴킷의 구성을 활용하여 경로의 결합 방법 및 의미를 표현할 수 있습니다. 일반적으로 파일 시스템은 완전히 다른 두 가지 방법으로 액세스됩니다. - -**폴더 생성:** {% include product %}에서 객체를 만든 후에는 작업이 시작될 수 있도록 디스크에 폴더를 만들어야 합니다. 이 작업은 디스크에 샷을 나타내는 폴더를 만드는 것처럼 간단할 수도 있고, 샷에 대해 작업하는 각 사용자가 디스크의 개별 영역에서 작업할 수 있도록 사용자별 작업 샌드박스를 설정하는 것처럼 복잡할 수 있습니다. - -- 툴킷은 응용프로그램을 시작할 때(예: 샷 BECH_0010을 위해 Maya를 시작할 때) 폴더 생성을 자동화하며 Maya를 시작하기 전에 폴더가 있는지 확인합니다. 폴더가 없으면 즉시 만들어집니다. 폴더는 [셸에서의 tank 명령](https://developer.shotgridsoftware.com/ko/425b1da4/#useful-tank-commands)으로 API 방식으로 만들거나 [Shotgun의 폴더 만들기(Create Folders)](https://developer.shotgridsoftware.com/ko/c3b662a6/) 메뉴를 통해 만들 수 있습니다. 이 폴더 생성 프로세스는 특별한 구성 파일 세트를 통해 진행됩니다. 자세한 정보는 아래 문서의 [1부](#part-1---folder-creation-syntax)를 참조하십시오. - -**작업 열기 및 저장:** 작업하는 동안 디스크의 표준화된 위치에서 파일을 열고 저장해야 합니다. 이러한 파일 위치는 일반적으로 작업 시작 전에 만들어진 폴더 구조 내에 있습니다. - -- 폴더 구조가 설정되면 해당 구조를 사용하여 디스크의 주요 위치를 식별할 수 있습니다. 이러한 위치를 [템플릿](#part-2---configuring-file-system-templates)이라고 합니다. 예를 들어 `maya_shot_publish`라는 템플릿을 정의하여 샷을 위해 게시된 Maya 파일을 참조할 수 있습니다. [툴킷 앱](https://developer.shotgridsoftware.com/ko/f8596e35/)은 이 템플릿을 사용합니다. Publish 앱은 이 템플릿을 사용하여 파일을 작성해야 할 위치를 제어할 수 있으며 [Workfiles 앱](https://developer.shotgridsoftware.com/ko/9a736ee3/)은 템플릿을 사용하여 파일을 열 위치를 확인할 수 있습니다. 툴킷의 환경 구성 내에서 각 앱이 사용하는 템플릿을 제어할 수 있습니다. 툴킷에서 사용되는 모든 주요 파일 위치는 단일 템플릿 파일에 정의되므로 쉽게 확인할 수 있습니다. - -# 1부 - 폴더 생성 구문 - -폴더 구성은 {% include product %}의 엔티티를 디스크의 위치에 매핑합니다. 구성은 단일 구성 파일을 사용하는 것이 아니라 구성된 각 단위의 템플릿 역할을 하는 "미니 파일 시스템" 형식입니다. 이를 **스키마 구성**이라고 합니다. 툴킷의 폴더 생성이 실행되면 폴더와 파일이 이 "미니 파일 시스템"에서 대상 위치로 복사됩니다. 동적 동작을 만들 수 있습니다. 예를 들어 폴더가 {% include product %}에서 샷을 나타낼 수 있으며 해당 폴더의 이름 지정을 제어할 수 있습니다. 구체적으로 말하면, 여러 개의 {% include product %} 필드에서 해당 폴더의 이름을 가져온 다음 폴더가 만들어지기 전에 문자 변환을 수행할 수 있습니다. - -![구성](./images/file-system-config-reference/core_config.png) - -위의 이미지는 스키마 구성을 보여 줍니다. 툴킷 폴더 생성을 실행하면 {% include product %}의 엔티티와 디스크의 폴더 간에 연결이 설정됩니다. 툴킷은 이 폴더 스키마 구성을 사용하여 디스크에 일련의 폴더를 생성하고 각 폴더는 {% include product %}에 [`Filesystem Location`](https://developer.shotgridsoftware.com/ko/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 파일**은 폴더가 처리될 때 기호 링크를 생성합니다. [기호 링크는 이 문서](#symbolic-links)의 뒷부분에서 설명합니다. - -현재 YAML 파일에 표시된 동적 구성 설정은 다음 모드를 지원합니다. - -- **[{% include product %} 쿼리 폴더:](#shotgun-query-folders)** {% include product %} 데이터베이스 쿼리를 기반으로 하는 동적 폴더. 예를 들어 이 모드는 프로젝트의 모든 샷에 대한 폴더를 만드는 데 사용할 수 있습니다. - -- **[{% include product %} 목록 필드 폴더: ](#shotgun-list-field-folders)**{% include product %} 목록 필드를 기반으로 하는 동적 폴더 이름입니다. 예를 들어 이 모드는 {% include product %}의 에셋 엔티티에 있는 {% include product %} 목록 필드 "Asset Type"의 모든 값에 대한 폴더를 만드는 데 사용할 수 있습니다. - -- **[유예된 폴더:](#workspaces-and-deferred-folder-creation)** 툴킷 API의 폴더 생성 방식을 통해 두 번째 폴더 생성 패스가 요청될 때(일반적으로 Maya와 같은 응용프로그램이 시작될 때)만 실행됩니다. 일반적으로 이 방식은 응용프로그램을 시작하기 직전에 툴킷의 다양한 응용프로그램 시작 관리자에 의해 실행됩니다. - -- **[현재 사용자 폴더:](#current-user-folder)** 현재 사용자를 나타내는 특수 폴더입니다. - - -이러한 모드에 대해 자세히 살펴보겠습니다. - -## 쿼리 폴더 - -{% include product %} 쿼리에 해당하는 동적 폴더의 경우 YAML 파일에서 다음 구문을 사용합니다. - - - # 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 - - # 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" ] } ] - -- 동적 컨텐츠 **type** 필드의 값을 **shotgun_entity**로 설정합니다. -- **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.shotgunsoftware.com/python-api/reference.html)을 비슷하게 따릅니다. 이는 사전 목록이며 각 사전에는 _path_, _relation_ 및 _values_ 키가 있어야 합니다. 유효한 $syntax 값은 상응하는 {% include product %} 엔티티(예: 프로젝트의 경우 `"$project"`, sequence.yml이 상위 디렉토리 계층에 있는 경우 `"$sequence"`)가 있는 모든 상위 폴더입니다. {% include product %} 엔티티 링크의 경우 $syntax(예: `{ "path": "project", "relation": "is", "values": [ "$project" ] }`)를 사용하여 구성에서 상위 폴더를 참조할 수 있습니다. [아래 예](#examples)에서 자세히 설명합니다. - - -## 다중 폴더 - -한 번에 여러 폴더를 만드는 표현식을 만들려면 이름 정의에 슬래시를 포함합니다. - - - # 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 - - # 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" ] } ] - -이러한 종류의 경로에 대한 파일 시스템 템플릿(자세한 정보는 이 문서의 2부 참조)을 만들 때 마지막 폴더는 {% include product %} 엔티티를 나타냅니다. 예를 들어 위의 예는 다음 템플릿으로 표현될 수 있습니다. - - asset_step_folder: assets/{asset_type}/{Asset}/{Step} - -`{asset_type}` 및 `{Asset}`은 모두 문자열 템플릿 키로 정의되며 `{Asset}` 토큰은 지정된 경로의 컨텍스트를 결정할 때 컨텍스트 계산에서 사용합니다. - -## 상위 폴더를 사용하여 만들기 - -{% include product %}에서는 {% include product %} 데이터 구조 내에 중첩이 있습니다. 이 중첩은 상위-하위 또는 하위-상위 관계일 수 있습니다. 예를 들어 시퀀스는 일반적으로 파일 시스템에서 샷에 대한 상위 항목이며, 마찬가지로 샷은 일반적으로 시퀀스의 하위 항목입니다. - -![create_with_parent_folder](images/file-system-config-reference/create_with_parent_folder_02_DS.png) - -{% include info title="참고" content="이 파일 시스템 중첩 관계는 [ShotGrid 계층](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html)과 독립적이며 서로 연결되어 있지 않습니다. 이들은 완전히 독립적으로 구성됩니다." %} - -shotgun_entity 유형 폴더는 폴더 생성 프로세스에서 상위 항목을 만들 때 하위 항목도 만들어지도록 반복할지 여부를 제어하는 선택적 플래그를 지원합니다. 플래그는 특정 고정 값(이 경우 "true" 또는 "false")만을 지정할 수 있는 설정입니다. 이 플래그를 추가하려면 다음 예를 사용합니다. - - - # recurse down from parent folder - create_with_parent: true - -언급한 바와 같이 이 설정은 선택 사항이며 기본적으로 false로 설정됩니다. true로 설정하면 툴킷에서 검색되는 모든 하위 엔티티에 대한 폴더를 만듭니다. 예를 사용하여 계속 진행하려면 상위 시퀀스가 만들어질 때마다 샷을 만들려면 샷에 대해 `create_with_parent`를 `true`로 설정합니다. - -{% include info title="참고" content="기본 설정은 `false`입니다. 즉, 시퀀스에 대해 폴더를 만들어도 샷 폴더가 자동으로 만들어지지 않습니다. 마찬가지로 true로 설정하려면 이 플래그를 추가해야 합니다. false는 기본 동작이므로 shotgun_entity 폴더에는 false를 지정하는 플래그가 없습니다." %} - -## 선택 필드 - -일반적으로 폴더 이름을 정의(예: `{code}_{sg_extra_field}`)할 때, 툴킷에서는 모든 필드의 값이 {% include product %}에 있어야 합니다. 예를 들어 `sg_extra_field`가 비어 있으면 오류 메시지가 생성됩니다. 필드가 채워질 수도 있고 채워지지 않을 수도 있다면 해당 필드를 선택 필드로 만듭니다. 즉, 툴킷에서는 값이 있으면 필드가 포함되고 값이 오류 없이 공백이면 제외됩니다. - -선택 필드는 `{code}[_{sg_extra_field}]`와 같이 대괄호를 사용하여 정의합니다. 이렇게 하면 다음 폴더 이름이 생성됩니다. - -- `code`가 BECH_0010이고 `sg_extra_field`가 extra인 경우 폴더 이름은 `BECH_0010_extra`가 됩니다. - -![optional_fields_BECH_0010_extra](images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png) - -- `code`가 BECH_0010이고 `sg_extra_field`가 비어 있는 경우 폴더 이름은 `BECH_0010`가 됩니다. - -![optional_fields_BECH_0010](images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png) - -{% include info title="참고" content="선택 필드는 스키마에서 폴더 이름의 일부를 정의하는 데에만 사용할 수 있습니다. 전체 폴더를 선택 필드로 지정할 수는 없습니다." %} - -## 정규식 토큰 일치 - -툴킷을 통해 정규식을 사용하여 {% include product %} 필드 이름의 일부를 추출할 수 있습니다. 이렇게 하면 {% include product %}의 값으로 폴더 생성을 유도할 수 있는 간단한 표현식을 만들 수 있습니다. 예를 들어 {% include product %}의 모든 에셋 이름이 세 문자 접두어와 밑줄로 지정되면(예: `AAT_Boulder7`) 두 개의 파일 시스템 폴더 수준으로 나눌 수 있습니다(예: `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 - - # 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" ] } ] - -구문은 템플릿 시스템의 `subset` 토큰과 유사합니다. {% include product %} 필드 이름 다음에 콜론에 이어서 일반 표현식을 추가하기만 하면 됩니다. 정규식으로 정의된 모든 그룹(예: `()`로 둘러싸인 섹션)은 값을 추출하는 데 사용됩니다. 정규식에 여러 그룹이 있는 경우 이 그룹이 함께 연결됩니다. 예를 들어 다음 표현식은 객체를 만든 사용자의 이니셜을 추출합니다. `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` - -## 예 - -다음은 필터 구문을 사용하는 방법을 보여 주는 사례 모음입니다. - -**현재 프로젝트에 속해 있고 진행 중인 모든 샷을 찾으려면** 아래 구문을 사용합니다. {% include product %} 샷 엔티티에는 샷을 프로젝트에 연결하는 project라는 링크 필드가 있습니다. 현재 프로젝트와 연결된 샷의 폴더만 만들려고 합니다. 구성 파일 시스템에서 프로젝트 수준이 더 높기 때문에 $syntax를 통해 이를 참조할 수 있으며, 여기에 툴킷은 자동으로 {% include product %} 엔티티 링크 참조를 만듭니다. 유효한 $syntax 값은 상응하는 {% include product %} 엔티티(예: 프로젝트의 경우 `"$project"`, sequence.yml이 상위 디렉토리 계층에 있는 경우 `"$sequence"`)가 있는 모든 상위 폴더여야 합니다. - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "status", "relation": "is", "values": [ "ip" ] } - -트리의 상위에 시퀀스 폴더가 있고 **해당 시퀀스에 속한 모든 샷에 대한 폴더를 만들려면** 다음과 같은 필터를 만들 수 있습니다. - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } - -**모든 에셋을 찾으려면** 이 구문을 사용합니다. - - entity_type: Asset - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] - -## 목록 필드 폴더 - -[{% include product %} 예를 들어 목록 필드](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_field_types_html) 폴더는 {% include product %}의 모든 에셋 유형에 대해 하나의 폴더를 만들려는 경우에 유용합니다. 에셋 유형은 {% include product %}의 목록 필드이며 이 폴더 구성 유형을 사용하면 이러한 에셋 유형 목록이 반영된 파일 시스템의 계층을 정의할 수 있습니다. - -![list_field_folders](images/file-system-config-reference/list_field_folders_02_DS.png) - -{% include info title="참고" content="디스크에 폴더가 생성되면 연결된 데이터의 값(예: 에셋 유형)을 변경하지 않을 것을 강력히 권고합니다." %} - -{% include product %} 목록 필드의 모든 항목에 해당하는 동적 폴더의 경우 YAML 파일에서 다음 구문을 사용합니다. - - - # 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 - - # by setting the create_with_parent parameter to true you ensure that list field - - # nodes are always created - create_with_parent: false - - - # the {% include product %} field to use for the folder name - field_name: "{sg_asset_type}_type" - -- 동적 컨텐츠 **type** 필드의 값을 `shotgun_list_field`로 설정합니다. -- `entity_type` 필드는 데이터를 가져올 {% include product %} 엔티티(예: "에셋", "시퀀스", "샷" 등)로 설정해야 합니다. -- `field_name` 필드는 데이터를 가져온 {% include product %} 필드로 설정해야 하며 [목록 유형 필드](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_field_types_html)여야 합니다. 표현식을 사용하여 정적 텍스트를 동적 컨텐츠와 함께 추가할 수 있습니다.`field_name: "{sg_asset_type}_type"` 이 표현식 예는 텍스트와 템플릿 키를 포함합니다. - -- 선택적 `skip_unused` 매개변수는 사용되지 않는 목록 유형 필드 값에 대해 디렉토리가 생성되는 것을 방지합니다(위의 [선택 필드](#optional-fields) 섹션 참조). {% include info title="참고" content="이 값을 True로 설정하면 폴더 생성 성능에 부정적인 영향을 줄 수 있습니다. 또한, 컬링 알고리즘은 현재 완전하지 않아 관련 엔티티에 복잡한 필터가 적용된 시나리오에서는 작동하지 않습니다." %} - -- 선택적 `create_with_parent` 매개변수는 현재 처리 중인 하위 엔티티 레벨 노드가 없는 경우에도 list_field 노드를 만듭니다(위의 [상위 폴더를 사용하여 만들기](#create-with-parent-folder) 섹션 참조). - - -## 파이프라인 단계 폴더 - -파이프라인 단계 폴더는 {% include product %}의 [파이프라인 단계](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Producer_pr_scheduling_tasks_pr_tasks_pipeline_steps_html)를 나타냅니다. 파이프라인 단계는 단계라고도 합니다. - -![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" - -여기에서는 [위에서 설명한 {% include product %} 엔티티](#list-field-folders)와 같은 방식으로 이름 표현식을 사용할 수 있습니다. 노드는 {% include product %} 엔티티 폴더 구성을 찾을 때까지 상위, 최상위 항목을 검색합니다. 이 엔티티 폴더는 단계와 연관되며 엔티티의 유형은 작성할 단계를 결정하는 데 사용됩니다. - -{% include info title="참고" content="파이프라인 단계가 있는 최상위 폴더를 만들려면 ShotGrid 엔티티 노드를 사용하여 관련 유형을 단계로 설정합니다." %} - -기본적으로 단계 폴더는 특정 엔티티에 대한 모든 관련 단계를 자동으로 만들려고 합니다. 예를 들어 5단계(레이아웃, 애니메이션, FX, 조명, 합성)가 있는 샷에 대해 폴더 생성이 트리거되면 5단계(레이아웃, 애니메이션, FX, 조명, 합성)에 대한 단계 폴더가 자동으로 만들어집니다. - -그러나 다음 구문을 사용하여 이 기능을 끌 수 있습니다. - - - # recurse down from parent folder - create_with_parent: false - -이 설정을 구성에 추가하면 샷 폴더를 만들 때 단계 폴더가 만들어지지 않습니다. 대신, 단계 폴더는 태스크에서 폴더 만들기를 실행할 때만 만들어집니다. 이 방법은 작업을 시작하기 직전에 만들어지는 사용자 샌드박스 및 기타 구조를 구성하려는 경우 유용할 수 있습니다. - -### 다양한 파이프라인 단계에 대한 다양한 파일 시스템 레이아웃 - -조명 및 Comp(합성)에 대해 하나의 폴더 구조를 만들고, 다른 모든 폴더에 대해 하나의 폴더 구조를 만든다고 가정합니다. 여러 파이프라인 단계에 서로 다른 파일 시스템 레이아웃을 사용하려면 `filter` 절을 구성에 추가합니다. 이 필터를 사용하면 특정 단계의 구성에서 처리할 파이프라인 단계의 범위를 지정할 수 있습니다. 이 예에서는 두 개의 구성 파일 `step_lightcomp.yml` 및 `step.yml`을 만들 수 있습니다. 첫 번째 파일에서는 다음 필터를 추가합니다. - - filters: [ { "path": "short_name", "relation": "in", "values": [ "Light", "Comp" ] } ] - -위의 구문은 `Light` 또는 `Comp` 유형의 단계 폴더가 만들어질 때만 사용됩니다. 다른 파일의 경우 다른 모든 항목에 대한 규칙을 만들려고 합니다. - - filters: [ { "path": "short_name", "relation": "not_in", "values": [ "Light", "Comp" ] } ] - -이제 이러한 각 폴더에서 별도의 하위 구조를 정의할 수 있습니다. - -## 고급 - 상위 항목 지정 - -폴더 생성 중 툴킷은 파이프라인 단계를 엔티티(예: "샷", "에셋" 등)와 연결해야 합니다. 기본적으로 툴킷은 폴더 트리를 검색하고 찾은 첫 번째 {% include product %} 엔티티 폴더를 선택하여 이 작업을 수행합니다. 예를 들어 `Sequence > Shot > Step` 계층이 있는 경우, 일반적으로 원하는 대로 단계 폴더가 자동으로 샷과 연결됩니다. - -그러나 기본 엔티티 아래에 엔티티가 있는 계층(예: `Sequence > Shot > Department > Step`)에서는 기본적으로 단계가 부서 레벨과 연관되는데 이는 바람직하지 않습니다. 이 경우 찾을 위치를 툴킷에 명시적으로 지정해야 합니다. 단계 구성에 다음을 추가하여 이를 수행할 수 있습니다. - - associated_entity_type: Shot - -## 태스크 폴더 - -태스크 폴더는 {% include product %}의 [태스크](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Producer_pr_scheduling_tasks_pr_my_tasks_html)를 나타냅니다. 기본적으로 태스크 폴더는 상위 폴더와 함께 만들어지지 않습니다. 예를 들어 태스크 노드가 연결된 샷에 대해 폴더 생성이 트리거되면 태스크 폴더가 자동으로 만들어지지 않습니다. 대신, 태스크 폴더는 태스크에 대해 폴더 생성이 실행될 때(예: {% 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" - -그러나 다음 구문을 사용하여 상위 엔티티와 함께 태스크가 만들어지도록 생성을 켤 수 있습니다. - - - # recurse down from parent folder - create_with_parent: true - -단계와 마찬가지로, 폴더 구성이 작동해야 하는 태스크를 필터링하려면 선택적으로 `filter` 매개변수를 제공할 수도 있습니다. - -[위에서 설명한 {% include product %} 엔티티](#list-field-folders)에서와 마찬가지로 이름 표현식을 사용할 수 있습니다. 여기서 동적 컨텐츠와 함께 정적 텍스트를 사용하여 동적 컨텍스트와 정적 컨텍스트를 모두 가진 이름을 만들 수 있습니다. - -`name: "task_{content}"` - -노드는 {% include product %} 엔티티 폴더 구성을 찾을 때까지 상위, 최상위 항목을 검색합니다. 이 엔티티 폴더는 태스크와 연결되며 만들 태스크 폴더를 결정하는 데 사용됩니다. - -### 고급 - 상위 항목 지정 - -폴더 생성 중 툴킷은 태스크를 엔티티(예: 샷, 에셋 등)와 연결해야 합니다. 기본적으로 툴킷은 폴더 트리를 검색하고 찾은 첫 번째 {% include product %} 엔티티 폴더를 선택하여 이 작업을 수행합니다. 예를 들어 `Sequence > Shot > Task` 계층이 있는 경우, 일반적으로 원하는 대로 태스크 폴더가 자동으로 샷과 연결됩니다. - -그러나 기본 엔티티(예: 샷) 아래에 엔티티가 있는 계층(예: `Sequence > Shot > Department > Task,`)에서는 툴킷이 기본적으로 태스크가 부서 레벨과 연관되는데 이는 바람직하지 않습니다. 이 경우 [이전 섹션](#create-with-parent-folder)의 단계로 업데이트하는 방법과 같이 찾을 위치를 툴킷에 명시적으로 지정해야 합니다. 태스크 구성에 다음을 추가하여 이 작업을 수행할 수 있습니다. - -`associated_entity_type: Shot` - -## 작업공간 및 폴더 생성 유예 - -폴더 생성 유예란 툴킷 API의 폴더 생성 방식에서 선택적 `engine` 매개변수를 통해 두 번째 폴더 생성 패스가 요청된 경우에만 생성이 실행됨을 의미합니다. 일반적으로 이 방식은 응용프로그램을 시작하기 직전에 툴킷의 다양한 응용프로그램 시작 관리자에 의해 실행됩니다. 대부분의 폴더 유형은 유예됨 플래그(기본적으로 `false`)를 지원합니다. 폴더 생성 유예를 `true`로 설정하려면 이 플래그를 추가합니다. - - - # 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 - -이 플래그를 사용하면 첫 번째 "전역" 패스에서 실행되는 절반 부분과 나중에 두 번째 패스에서 실행되는 부분으로 폴더 생성을 분리할 수 있습니다. 일반적으로 두 번째 패스는 기본값이 `false`이기 때문에 자동으로 수행되지는 않지만 엔진 시작과 관련되어 있으므로 엔진이 시작되기 직전에 사용자가 폴더를 만들 수 있습니다. 이렇게 하면 두 가지 기본 워크플로우가 허용됩니다. - -1. **작업공간:** 응용프로그램별 폴더 설정입니다. 응용프로그램이 시작되기 직전에 폴더를 만들 수 있습니다. -2. 이를 위한 일반적인 워크플로우에는 샷에 필요한 항목과 아티스트가 선택하는 처리 방법에 따라 Houdini, Maya 및 다른 엔진이 필요한 파이프라인 단계가 있습니다. 아티스트는 처음에 해당 파이프라인 단계에 대해 maya/, houdini/ 및 기타 디렉토리를 만들 수 있지만 지정된 샷의 아티스트가 Maya에서만 계속 작업하는 경우 Houdini 및 기타 다른 엔진의 빈 폴더는 필요하지 않습니다. 따라서 개별 엔진 시작 시점에 발생하는 폴더 생성을 유예하는 경우 아티스트가 Houdini를 사용하지 않는다면 해당 샷에 대해 houdini/ 폴더가 생성되지 않습니다. -3. **사용자 폴더:** 사용자 폴더는 응용프로그램 시작 직전에 만들어집니다. 위에서 설명한 사용자 폴더 구성 구조는 기본적으로 유예됩니다. -4. 이렇게 하면 {% include product %}에서 할당된 사용자를 기반으로 하는 사용자 폴더 대신 엔진을 시작할 때마다 현재 사용자에 대한 폴더를 만들 수 있습니다. 예를 들어 샷에서 작업을 시작하고 Maya를 시작하면 사용자 이름 폴더가 {% include product %}의 사용자 이름을 기반으로 만들어지고 다른 사용자 작업에 영향을 주지 않습니다. - -_팁: Maya와 같은 응용프로그램이 시작될 때 일반적이고 정적인 폴더를 만들려면 폴더와 동일한 이름의 구성 YAML 파일을 만들고 다음을 추가합니다._ - - - # 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" - -## 현재 사용자 폴더 - -현재 사용자 폴더는 다른 사용자의 작업 영역을 설정할 수 있도록 하는 특수한 구성입니다. 일반적인 시나리오는 한 부서에서 근무하는 여러 아티스트가 같은 샷에 대해 작업하는 경우입니다. 아티스트가 자신의 디렉토리에 작업 파일을 저장할 수 있으므로 사용자 폴더가 사용될 수 있으며 [Workfiles 앱](https://developer.shotgridsoftware.com/ko/9a736ee3/)에서 자신의 파일에 대해서만 필터링할 수 있습니다. 이 경우 구성 파일에 다음 옵션이 포함되어야 합니다. - - - # the type of dynamic content - type: "user_workspace" - - name: "login" - -- **type** 필드의 값을 `user_workspace`로 설정합니다. -- **name** 필드는 사용자 폴더에 지정해야 하는 이름입니다. {% include product %}의 작업자(People)에서 가져온 필드({% include product %}의 `HumanUser`)의 조합으로 구성되어야 합니다. -- 위의 예와 같이 단일 필드를 사용할 수 있습니다(예: `name: login`). -- 여러 필드를 괄호로 묶어 사용할 수 있습니다(예: `name: "{firstname}_{lastname}"`). -- 링크된 다른 엔티티의 필드를 포함하려면 표준 `name: "{sg_group.Group.code}_{login}"` 도트 구문을 사용할 수 있습니다(예: {% include product %}). - -현재 사용자 폴더는 기본적으로 유예된 폴더로 만들어집니다. 즉, 툴킷 API의 폴더 생성 방식에서 선택적 매개변수인 `engine`을 통해 두 번째 폴더 생성 패스가 요청된 경우에만 생성이 실행됩니다. - -## 정적 폴더 - -정적 폴더(및 파일)는 가장 간단한 유형입니다. 폴더를 구성 구조에 놓을 수 있으며 폴더 생성 프로세스가 실행될 때 자동으로 복사됩니다. [다음은 정적 폴더의 몇 가지 예](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")을 지정해야 합니다. 이제 다음 구문을 사용합니다. - - - # the type of dynamic content - type: "static" - - - # pick one of the {% include product %} folders that are above this folder - - # in the folder hierarchy. In this case it is a parent folder - - # named step that we want to look at when deciding if this - - # static folder should be created or not. - constrain_by_entity: "$step" - - - # we can now define constraints for this step. Constraints are simple - - # {% include product %} queries, following the same syntax as the other {% include product %} filters - - # shown in previous sections. - # - - # In our example, if the parent step matches the constraints given - - # in the filter below, the static folder will be created. If not, - - # it (and its children) will be ignored by the folder creation process. - constraints: - - { "path": "short_name", "relation": "is", "values": [ "edit" ] } - -기본적으로 정적 폴더는 상위 폴더와 함께 자동으로 만들어집니다. 이렇게 되는 것을 원하지 않을 수 있으며, 그럴 경우 정적 폴더가 상위 폴더와 함께 만들어지지 않도록 특수 플래그를 추가합니다. - - - # do not recurse down automatically - create_with_parent: false - -## 기호 링크 - -동적 폴더 생성 중에 기호 링크(symlink)를 만들 수 있습니다. 이름이 `artwork`인 기호 링크를 만들려면 스키마 구성에서 `artwork.symlink.yml`이라는 파일을 만듭니다. 이 파일은 시스템에서 기호 링크 요청으로 식별되며 복사되지 않는 대신 처리됩니다. - -`artwork.symlink.yml` 파일에는 적어도 `target` 키가 포함되어야 합니다. - - - # 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 - - # so you can for example include permission hints or other stuff - - # that you may need for advanced customization - additional_param1: abc - additional_param2: def - -대상 매개변수에 `$Asset`, `$Shot` 또는 `$Project` 등의 `$EntityType` 토큰이 포함되면 해당 엔티티(에셋, 샷, 프로젝트 등)를 나타내는 폴더의 이름으로 확인하려고 시도합니다. 툴킷은 파일 시스템 트리에서 이러한 값을 검색하고 트리에서 상위 항목으로 정의되지 않은 경우 오류가 보고됩니다. - -에셋의 에셋 유형과 같은 목록 필드는 엔티티 유형을 포함하는 구문으로 표현됩니다(예: `$Asset.sg_asset_type`). 예: - - - # Example of a .symlink.yml file - - - # A target parameter is required. - target: "../renders/$Project/$Asset.sg_asset_type/$Asset" - -기호 링크 생성은 모든 입력/출력 또는 I/O와 같이 폴더 처리 후크 내부에서 발생합니다. 특별한 `symlink` 액션이 시스템에서 후크로 전달되면 기호 링크의 이름, 완전히 확인된 대상 그리고 이 요청과 함께 정의 파일에 포함된 모든 YAML 메타데이터를 가져옵니다. 위의 `artwork` 예의 경우 샷 아래에 다음과 같은 폴더를 만듭니다. - - {'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'} - } - -## 파일 및 폴더 무시 - -스키마 스캐폴드에 배치된 파일은 폴더 생성 중에 대상 영역으로 복사됩니다. 이 복사 프로세스는 코어 후크에 의해 처리되므로 예를 들어 프로젝트 또는 스튜디오에 대한 권한 처리를 커스터마이즈할 수 있습니다. - -{% include info title="참고" content="이 유형의 처리에 대한 자세한 내용은 간단한 커스터마이즈 아래의 [I/O 및 권한 커스터마이즈 섹션](#simple-customization-of-how-folders-are-created)I/O 및 권한 커스터마이즈 섹션을 참조하십시오. 많은 폴더 설정을 처리하는 [process_folder_creation 코어 후크](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)가 있습니다. 이 후크에 chmod 호출을 추가하여(및/또는 mkdir 시 권한 설정) 만드는 폴더에 대한 권한을 설정할 수 있습니다." %} - -폴더 생성 중에 특정 파일 및 폴더를 복사 대상에서 제외하려는 경우에도 유용할 수 있습니다. 예를 들어 Git 또는 SVN에 폴더 생성 구성을 저장하는 경우 각 샷 또는 에셋 폴더로 복사하지 않으려는 `.git` 및 `.svn` 폴더가 있습니다. 복사하지 않으려는 파일이 있는 경우 `ignore_files` 파일을 프로젝트 구성 내의 `config/core/schema` 폴더에 놓을 수 있습니다. 이 파일에는 복사하지 않을 파일을 정의하는 전역 스타일의 패턴이 있어야 합니다. 각 패턴은 별도의 줄에 있어야 합니다. - - - # 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 - -와일드카드를 사용할 수도 있습니다. 예를 들어 TMP 익스텐션이 있는 모든 파일을 제외해야 하는 경우 *.tmp 줄을 파일에 추가하기만 하면 됩니다. - - - # 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 - -## IO 및 권한 커스터마이즈 - -샷 및 에셋 폴더를 특별한 권한 및 매개변수를 사용하여 만들어야 하는 경우가 많이 있습니다. 이 작업은 폴더 생성 중에 권한 비트를 설정하는 것처럼 간단할 수도 있고, 적절한 자격 증명, 그룹 및 권한이 있는 폴더를 만드는 특정 폴더 생성 서버에 원격 요청을 보내는 것처럼 복잡할 수도 있습니다. - -또한 파일 시스템 트리 내 다양한 수준의 폴더가 서로 다른 권한을 가져야 하는 경우가 일반적입니다. 작업 영역 폴더는 일반적으로 모든 사람에게 쓰기 권한이 있지만 샷 폴더는 훨씬 더 엄격한 권한이 있을 수 있습니다. - -툴킷을 사용하면 단일 후크를 통해 폴더 생성을 커스터마이즈할 수 있습니다. 이는 코어 후크이며 이름은 `process_folder_creation.py`입니다. 폴더 생성 API 호출은 폴더 구성을 탐색하여 만들어야 하는 폴더를 결정할 때 만들 수 있는 항목 목록을 작성합니다. 이러한 항목은 파일일 수도 있고 폴더일 수 있습니다. 폴더 생성의 마지막 단계로 이 목록이 실제 폴더 프로세싱을 처리하기 위해 후크로 전달됩니다. 기본 [process_folder_creation 코어 후크는 여기](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)에서 검토할 수 있습니다. - -### 후크에 전달된 데이터 - -폴더 생성 후크는 각 폴더 생성 요청에 대해 한 번만 실행됩니다. 목록의 모든 폴더 생성 데이터는 후크로 전달되며 후크는 일반적으로 이 작업을 반복하고 Core API에서 전달된 매개변수에 따라 폴더를 만듭니다. - -목록의 데이터는 항상 깊이를 우선하여 반복되며 최상위 레벨의 폴더 및 파일부터 시작하여 점점 더 깊게 이동합니다. 다음 예에서 후크에 전달된 데이터를 보여 줍니다. - - [ - - {'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', - 'filters': [{'path': 'project', - 'relation': 'is', - 'values': []}], - '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', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'}, - - {'action': 'copy', - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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'} - }, - - ] - -데이터는 사전 목록입니다. 각 사전에는 `action`이라는 키가 있습니다. 이 키는 요청된 I/O 항목의 유형을 나타냅니다. 폴더 생성 후크를 구현하는 경우 다음과 같은 다양한 액션에 대한 지원을 추가해야 합니다. - -- `entity_folder`: {% include product %} 엔티티와 관련된 디스크상의 폴더 -- `folder`: 디스크상의 폴더 -- `copy`: 소스 위치에서 대상 위치로 복사해야 하는 파일 -- `create_file`: 디스크에 만들어야 하는 파일 -- `symlink`: 만들어야 하는 기호 링크 - -각각의 액션에는 각기 다른 사전 키 집합이 있습니다. 예를 들어 `entity_folder` 액션에는 연결된 엔티티의 상세 정보를 포함하는 `entity key`가 있습니다. `create_file`에는 `source_path` 및 `target_path` 키가 있으며, 이 키를 통해 후크에서 복사할 파일과 위치를 알 수 있습니다. - -또한 모든 `actions`에는 `metadata`라는 키가 있습니다. 이 키는 스키마 설정의 관련 구성 파일에서 가져온 YAML 구성 데이터를 나타냅니다. 위의 예에서 스키마 구성 내에 설정된 모든 필터 및 이름 지정 정보가 {% include product %} 폴더의 `metadata` 키에 어떻게 포함되어 있는지 볼 수 있습니다. 예를 들어 위의 예에서 샷 폴더의 메타데이터는 다음과 같습니다. - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -...`shot.yml` 스키마 구성 파일에 해당합니다. - - - # Copyright (c) 2013 {% include product %} Software Inc. - # - - # CONFIDENTIAL AND PROPRIETARY - # - - # This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit - - # Source Code License included in this distribution package. See LICENSE. - - # By accessing, using, copying or modifying this work you indicate your - - # 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 - - # 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" ] } ] - -_동적 토큰 `$sequence`는 런타임에 실제 객체로 해석되었습니다._ - -### 후크에 자체 폴더 생성 지시문 전달 - -툴킷에서 필요로 하는 다양한 구성 지시문 외에도 스키마 구성의 일부로 고유한 구성 항목을 정의할 수도 있습니다. 이러한 항목은 위에서 설명한 `metadata` 키를 통해 후크로 전달되며 폴더 생성을 유도하는 데 사용할 수 있습니다. - -예를 들어 스키마 설정의 구조가 다음과 같은 경우입니다. - - - # 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" - -...폴더 생성 후크를 통해 데이터가 전달됩니다. - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity', - 'studio_permissions_level': 'admin'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -이제 특별한 매개변수 `studio_permissions_level`이 후크로 전달되면 이를 사용하여 파일 권한 제어 등을 수행할 수 있습니다. 이 방법을 사용하여 임의로 복잡한 데이터 구조를 전달할 수도 있습니다. 이에 대한 일반적인 활용 사례는 매우 상세한 레벨에서 권한을 제어하는 것입니다. - -### 정적 폴더에 커스텀 구성 추가 - -일반적으로 폴더 스키마 구성 내에 폴더를 만들고 해당 YAML 파일이 없는 경우, 툴킷은 정적 폴더로 가정하고 간단하게 만듭니다. - -커스텀 구성 메타데이터를 정적 폴더와 연관시키려는 경우 `static` 유형으로 YAML 구성 파일을 만들어야 합니다. 예를 들어 프로젝트 루트 바로 아래에 정적 `assets` 폴더가 있고 에셋을 그룹화하여 커스텀 구성 메타데이터를 추가하려고 한다고 가정합니다. 이를 수행하려면 다음 `assets.yml` 파일을 만듭니다. - - type: static - studio_permissions_level: "admin" - -그러면 후크에 전달된 구성 데이터에 다음 내용이 포함됩니다. - - {'action': 'folder', - 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, - 'path': '/mnt/projects/chasing_the_light/assets'}, - - -다시 말하지만, 임의로 복잡한 데이터는 YAML 구성 파일에서 이런 방법으로 후크에 전달될 수 있습니다. - -## 간단한 폴더 생성 방법 커스터마이즈 - -간단한 폴더 생성 후크는 다음과 같이 표시될 수 있습니다. - - 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") - if not os.path.exists(path): - if not preview_mode: - # 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") - target_path = i.get("target_path") - if not os.path.exists(target_path): - if not preview_mode: - # do a standard file copy - shutil.copy(source_path, target_path) - # 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") - parent_folder = os.path.dirname(path) - content = i.get("content") - if not os.path.exists(parent_folder) and not preview_mode: - os.makedirs(parent_folder, 0777) - if not os.path.exists(path): - if not preview_mode: - # create the file - fp = open(path, "wb") - fp.write(content) - fp.close() - # 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 - -# 2부 - 파일 시스템 템플릿 구성 - -툴킷 템플릿 파일은 툴킷 구성의 허브 중 하나입니다. 프로젝트마다 항상 이러한 파일 중 하나가 있으며 파이프라인 구성 내의 **config/core** 폴더 내에 있습니다. - -![configuration](images/file-system-config-reference/templates_file.png) - -이 파일에는 _템플릿_ 과 해당 _키_ 에 대한 정의가 있습니다. - -**키**는 정의된 동적 필드로서 이름, 버전 번호, 화면 해상도, 샷 이름 등이 될 수 있습니다. 키는 유형으로 구성되므로 예를 들어 키를 문자열 또는 정수로 정의할 수 있습니다. 또한 형식화되어 있기 때문에 문자열에 영숫자만 포함하거나 모든 정수를 8개의 0으로 채우도록 정의할 수 있습니다. - -**템플릿**은 동적 경로입니다. 템플릿의 예는 `shots/{shot}/publish/{name}.{version}.ma`입니다. 이 템플릿을 사용하여 Maya에서 샷을 위해 게시할 수 있습니다. 괄호로 묶인 필드는 키입니다. - -템플릿 파일은 키, 경로 및 문자열의 세 부분으로 나뉩니다. - -## 키 섹션 - -키는 필드에 허용되는 값을 정의합니다. 템플릿 구성 파일에서 키는 다음 형식으로 정의됩니다. - - key_name: - type: key_type - option: option_value - option: option_value - -키 유형은 `str`, `int` 또는 `sequence` 중 하나입니다. str 키는 값이 문자열인 키이고, int 키는 값이 정수인 키이고, sequence 키는 값이 정수 시퀀스인 키입니다. - -유형을 지정하는 것 외에도 추가 옵션을 지정할 수 있습니다. 다음과 같은 옵션이 있습니다. - -- `default: default_value` - 값이 제공되지 않은 경우 사용되는 값입니다. 예를 들어 툴킷 API를 사용하는 중 필드 값 세트를 경로로 해석하려고 하는 경우 발생할 수 있습니다. - -- `choices: [choice1, choice2, etc]` - 이 키에 사용할 수 있는 값의 열거입니다. - -- `exclusions: [bad1, bad2, etc]` - 이 키에 사용할 수 없는 값의 열거입니다. 키가 sequence 유형인 경우, 이 설정으로 프레임 사양 값을 무효화할 수 없습니다. - -- `length: 12` - 이 키는 정확한 길이여야 합니다. - -- `alias: new_name` - key_name 대신 이 키를 사용하여 템플릿에서 사용할 이름을 제공합니다. 예를 들어 버전 번호에 대한 두 가지 개념이 있는 경우 하나는 클라이언트가 원하는 방식대로 4개의 0으로 채워지고, 다른 하나는 내부적으로 처리되는 방식대로 3개의 0으로 채워집니다. 이 경우 키 이름은 고유해야 하므로 두 키의 이름을 "version"으로 지정하는 것은 실제 가능하지 않습니다. 이 경우 별칭을 만들 수 있습니다. 자세한 정보는 아래 예 중 하나를 참조하십시오. - -- `filter_by: alphanumeric` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영숫자 값(일반적으로 ASCII 문자열의 경우 a-z, A-Z 및 0-9이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. - -- `filter_by: alpha` - string 유형의 키에만 작동합니다. 이 옵션을 지정하면 영문자 값(일반적으로 ASCII 문자열의 경우 a-z 및 A-Z이지만 입력 데이터가 유니코드인 경우 다른 문자를 포함할 수 있음)을 포함하는 문자열만 유효한 값으로 간주됩니다. - -- `filter_by: '^[0-9]{4}_[a-z]{3}$'` - string 유형의 키에만 작동합니다. 정규식을 유효성 확인 마스크로 정의할 수 있습니다. 예를 들어, 위의 예에서는 키에 4자리 숫자, 밑줄 및 3개의 소문자가 필요합니다. - -- `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)을 따릅니다. - -- `strict_matching: true` - int 유형의 키에서만 작동합니다. 이 설정은 해당 필드가 적절한 형식의 숫자일 때만 일치함을 의미합니다. 예를 들어 strict_matching이 true로 설정된 경우 "003"을 지정하면 "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)와 같이 경로를 설명하는 데 패턴이 필요한 경우 사용됩니다. 추상 필드에는 기본값이 필요합니다. - -- `subset` 및 `subset_format` - 지정된 입력 문자열의 하위 집합을 추출하여 키 값으로 만듭니다. 예를 들어 사용자 이름 전체에서 이니셜 키를 만들거나 모든 샷 이름의 첫 세 글자를 포함하는 키를 만들 수 있습니다. - - -템플릿 키에 대한 기술적인 상세 정보는 [API 참조](http://developer.shotgunsoftware.com/tk-core/core.html#template-system)를 참조하십시오. - -### 예 - 영숫자 이름 - -기본값이 "comp"인 영숫자 이름입니다. - - name: - type: str - default: "comp" - filter_by: alphanumeric - - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk - -### 예 - 버전 번호 - -002, 102, 034, 12341과 같이 숫자와 일치하는 버전 번호입니다. - - version: - type: int - format_spec: "03" - -002, 102, 034, 12341뿐만 아니라 0002, 2 및 0102와 같이 숫자와 일치하는 버전 번호입니다. - - version: - type: int - format_spec: "03" - strict_matching: false - -### 예 - 스테레오 눈 - -일반적인 스테레오 눈 설정입니다. 눈 필드는 L 또는 R이지만 소프트웨어에서 사용되는 경우 일반적으로 추상적인 방식으로 %V로 참조됩니다. 실제 %V는 파일 이름이 아니라 파일 컬렉션을 참조하므로 _abstract_ 플래그를 설정합니다. 추상 필드에는 추상 표현이 요청될 때마다 가져오는 기본값이 있어야 합니다. - - 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 - -### 예 - 이미지 시퀀스 - -이미지 시퀀스는 추상으로 정의되며 별도로 지정하지 않는 한 기본값은 %0Xd로 설정됩니다. 아래 시퀀스 사양은 0001, 1234 및 12345와 같은 프레임 번호를 식별합니다. - - SEQ: - type: sequence - format_spec: "04" - - nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{channel}_{eye}_v{version}.{SEQ}.exr - -### 예 - 별칭을 통해 버전 이름이 지정된 두 개의 필드 - -"version"이라는 이름의 키가 필요한 코드에서 사용할 수 있는 버전 번호의 두 가지 정의입니다. 이는 두 개의 툴킷 앱이 각 _버전_ 필드가 필요하지만 버전 필드의 형식을 다르게 지정하려는 경우에 유용합니다. - - nuke_version: - type: int - format_spec: "03" - alias: version - maya_version: - type: int - format_spec: "04" - alias: version - - - # nuke versions are using numbers on the form 003, 004, 005 - - # the nuke publish app requires a field called {version} - - # however {nuke_version} is a valid replacement for {version} - - # 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 - -### 예 - 타임스탬프 - -현재 로컬 시간으로 기본 설정되는 YYYY-MM-DD-HH-MM-SS 형식의 타임스탬프입니다. - - now: - type: timestamp - format_spec: "%Y-%m-%d-%H-%M-%S" - default: now - -UTC 시간으로 기본 설정되는 YYYY.MM.DD 형식의 타임스탬프입니다. - - year_month_day: - type: timestamp - format_spec: "%Y.%m.%d" - default: utc_now - -9:00:00으로 기본 설정되는 HH-MM-SS 형식의 타임스탬프입니다. - - nine_am_time: - type: timestamp - format_spec: "%H-%M-%S" - default: "09-00-00" - -### 예 - 매핑 - -예를 들어 파일 이름에 {% include product %} 필드를 추가하려는 경우에 유용합니다. 파일 이름에 사용자 이름을 포함하려는 경우 다음 정의를 사용합니다. - - current_user_name: - 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 - -툴킷 앱이 `context.as_template_fields()` 방식을 통해 모든 컨텍스트 필드를 입력하면 상위 레벨 필드인 `Shot`, `Sequence` 및 `Step`이 자동으로 입력됩니다. 또한 `shotgun_entity_type`이 정의된 모든 필드(위의 `current_user_name` 필드와 같이)를 스캔합니다. {% include product %} 엔티티가 컨텍스트에 정의되어 있으면 자동으로 값을 확인할 수 있습니다. 현재 사용자는 컨텍스트에서 항상 트래킹되며, 위의 예에서는 샷, 시퀀스 및 단계의 필드에서 데이터를 가져올 수도 있습니다. 이는 이러한 데이터가 상위 레벨 경로의 일부로 정의되어 컨텍스트의 일부로 정의되기 때문입니다. 그러나 툴킷이 {% include product %}의 어떤 에셋에서 데이터를 가져오는지 알 수 없으므로 위의 예에서는 필드의 에셋 엔티티를 참조할 수 없습니다. - -### 예 - 두 개의 유효 값이 있는 문자열 필드 - -스튜디오에는 ASCII 및 Binary Maya 파일을 저장해야 하는 프로젝트가 있는 경우가 종종 있습니다. 이 시나리오에서 두 개의 유효 값이 있는 문자열 값은 다음과 같습니다. - - maya_file_extension: - type: str - choices: ["ma", "mb"] - -{% include info title="참고" content="기본 앱은 `templates.yml`에 구성된 항목에 따라 `.ma` 또는 `.mb` 중 하나를 사용합니다. 예를 들어 프로젝트에서 `.ma` 대신 `.mb`를 저장하도록 Work Files 앱을 변경하려는 경우 샷에 대한 다음의 세 템플릿을 변경할 수 있습니다." %} - - 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' - -자세한 정보는 아래의 [경로 섹션](#the-paths-section)을 참조하십시오. - -### 예 - 값 허용 안 함 - -"assets" 값이 허용되지 않는 문자열 필드입니다. 예를 들어 프로젝트의 모든 시퀀스에 대한 폴더를 포함하는 폴더와 모든 에셋이 보관된 단일 "assets" 폴더를 함께 가지고 있는 경우 유용합니다. - - project - |--- sequence1 - |--- sequence2 - |--- sequence3 - \--- assets - -툴킷에서 assets 폴더가 다른 시퀀스가 아니라는 것을 올바로 이해하게 하려면 "assets"가 시퀀스 템플릿의 유효한 값이 아니라고 정의할 수 있습니다. - - sequence: - type: str - exclusions: ["assets"] - -위의 예외 필드를 사용하면 두 개의 템플릿 모두 올바르게 확인되도록 정의할 수 있습니다. - - sequence_work_area: {sequence}/{shot}/work - asset_work_area: assets/{asset}/work - -### 예 - 문자열 하위 세트 - -다음 예는 앞의 예를 확장하여 파일 이름 앞에 사용자의 이니셜을 사용하는 방법을 보여 줍니다. - - user_initials: - type: str - shotgun_entity_type: HumanUser - shotgun_field_name: login - 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 - -## 경로 섹션 - -경로 섹션은 작업을 저장할 위치를 지정합니다. 모든 경로는 최소한 하나의 이름과 정의로 구성되며, 정의는 괄호로 묶여 있는 키 이름의 조합이며 경로를 나타내는 키가 아닌 값을 섞어서 사용합니다. 예를 들어 샷 작업 파일의 정의는 다음과 같습니다. - - shot_work: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - -시퀀스, 샷, 단계 및 버전은 동일한 템플릿 파일에 정의된 키입니다. - -{% include info title="참고" content="문자열 키의 이름이 연관된 ShotGrid 엔티티가 있는 동적 스키마 폴더의 엔티티 유형과 일치하면 해당 폴더 이름이 토큰으로 대체됩니다. 예를 들어 위의 코드 조각과 같이 'string' 유형의 {Sequence} 템플릿 키를 사용하고 스키마에서 'sequence'라는 동적 폴더가 있는 경우 해당 `sequence.yml` 파일에서 `shotgun_entity` 유형으로 정의되며 ShotGrid의 'Sequence' 엔티티 유형에 연결됩니다. 툴킷은 템플릿 키가 이 동적 폴더의 엔티티 유형이라는 것을 인식합니다(여기서는 둘 다 Sequence임). 따라서 툴킷은 폴더 이름(즉, 특정 시퀀스의 이름)을 가져와서 템플릿 키로 대체합니다." %} - -선택적 속성을 정의해야 하는 경우 이 양식이 필요합니다. 현재 유일한 선택적 속성은 `root_name`이며 이 속성은 다중 루트가 있는 프로젝트의 경로에 대한 프로젝트 루트를 지정하는 데 사용할 수 있습니다. [다중 루트](https://developer.shotgridsoftware.com/ko/9ea9dd4e/)는 새로운 저장소 루트를 추가하여 일부 프로젝트 파일을 저장할 때 사용됩니다. - -`root_name: name_of_project_root` - -예를 들어 다음과 같이 표시될 수 있습니다. - - shot_work: - definition: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - root_name: primary - -기본 저장소가 아닌 다른 저장소 루트를 사용하려면 위의 형식을 사용해야 합니다. 이 예에서 이 간단한 형식을 사용한다는 것은 모든 항목에 대해 기본 루트를 사용한다는 의미입니다. - -## 문자열 섹션 - -문자열은 이름과 정의를 포함해야 한다는 점에서 경로와 비슷하며 이는 간단한 형식으로 제공할 수 있습니다. - - string_name: string_definition - -문자열 정의는 파일 시스템 경로가 아니라 문자열로 해석되는 키 이름 및 다른 값으로 구성된 템플릿입니다. {% include product %}에서 게시용으로 사용된 이름의 예는 다음과 같습니다. - - maya_publish_sg_name: "Maya publish, {name}, v{version}" - -name과 version은 동일한 파일에 정의된 키 이름입니다. - -## 템플릿에서 선택적 키 사용 - -템플릿의 선택적 키는 여러 가지 이유로 유용합니다. 한 가지 일반적인 예로 `{SEQ}`는 렌더링된 이미지에 대해 선택적입니다. 이 예에서는 `/path/to/render/shot.101.exr`(및 102, 103 등)과 같은 프레임 번호로 구성된 exr 세트가 있을 수 있지만 `/path/to/render/shot.qt`와 같은 Quicktime 영상에 대해서도 동일한 템플릿을 사용할 수 있습니다. 또 다른 일반적인 예로는 스테레오 이미지를 렌더링하는 경우가 있습니다. `left eye: file.LFT.exr, right eye: file.RGT.exr, stereo image: file.exr?` 규칙이 있는 스튜디오에서 `{eye}`를 선택적 키로 만들 수 있습니다. - -선택적 섹션은 대괄호를 사용하여 정의할 수 있습니다. - - shot_work: sequences/{Shot}/work/{Shot}.[v{version}.]ma - -선택적 섹션에는 하나 이상의 키가 있어야 합니다. 선택적 섹션의 키에 대한 값이 없는 경로를 해석하면 해당 섹션이 정의에 없는 것처럼 경로가 해석됩니다. 위의 예는 단일 정의로 만들어진 두 개의 템플릿으로 생각할 수 있습니다. - - shot_work: sequences/{Shot}/work/{Shot}.v{version}.ma - shot_work: sequences/{Shot}/work/{Shot}.ma - -필드 사전을 전달할 때 툴킷은 값에 따라 올바른 버전의 템플릿을 선택합니다. - - >>> template = tk.templates["shot_work"] - >>> 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 - -# 고급 질문 및 문제 해결 - -## 파일 구조에 새 엔티티 유형을 추가하는 방법 - -{% include product %} 사이트에서 장편 및 단편 애니메이션 작업을 하여 에피소드를 만들었다고 가정해 보겠습니다. 에피소드 워크플로우를 툴킷에 통합하는 방법을 살펴보겠습니다. 가장 먼저 해야 할 일은 {% include product %}에 계층을 설정하여 [여기](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html)의 지침에 따라 에피소드 작업을 수행하는 것입니다. - -![episode_hierarchy](images/file-system-config-reference/episode_hierarchy.jpg) - -{% include info title="참고" content="[위의 상위 폴더를 사용하여 만들기 섹션](#create-with-parent-folder)을 참조하여 툴킷의 중첩 관계를 다시 확인합니다(Shotgun의 프로젝트 계층과는 완전히 독립적임)." %} - -**추가 참조:** - -- [에피소드 엔티티는 어떻게 작동합니까?](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html) -- [엔티티의 계층 커스터마이즈](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html) - - -### 에피소드 > 시퀀스 > 샷 계층에 필요한 필드 - -`Episode`용 [커스텀 엔티티](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)(사이트 기본 설정(Site Preferences) > 엔티티(Entities))를 사용하도록 선택하거나 {% include product %} 7.0.7.0에서 사용할 수 있었던 공식 에피소드 엔티티를 사용할 수 있습니다. 7.0.7.0이전의 {% include product %}(2017 이전)에 등록했다면 "TV Show" 템플릿에서 에피소드용 `CustomEntity02`를 사용합니다. `CustomEntity02` 또는 공식 에피소드 엔티티가 아닌 다른 엔티티를 사용하는 경우에는 신경쓸 필요가 없습니다. {% include product %} 및 툴킷은 유연합니다. 두 경우를 모두 살펴보겠습니다. - -이 연습을 위해 에피소드(`CustomEntity02`)와 공식 에피소드 엔티티를 프로젝트 계층 업데이트에 에피소드를 통합하는 방법의 예(either/or 사용 가능)로 사용합니다. 첫째, 프로젝트의 **에피소드> 시퀀스> 샷** 계층을 올바르게 설정하는 방법은 다음 필드가 {% include product %}에 있는지 확인하는 것입니다. - -#### 에피소드 - -a) **공식 에피소드 엔티티 사용:** "에피소드" 엔티티는 프로젝트 템플릿에서 TV Show 프로젝트를 만들 때 사용되는 엔티티일 수 있습니다. - -![official_episode_entity](images/file-system-config-reference/official_episode_entity.png) - -**또는** - -b) **커스텀 엔티티 사용:** `CustomEntity02`는 프로젝트 템플릿에서 TV Show 프로젝트를 만들 때 사용되는 커스텀 엔티티일 수 있습니다. _앞에서 언급했듯이, 다른 커스텀 엔티티를 활성화하고 `CustomEntity02` 대신 사용할 수 있습니다. 모든 `CustomEntity02`를 사용자가 활성화한 특정 엔티티로 바꿔야 합니다._ - -![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) - -#### 시퀀스 - -에피소드 엔티티에 링크되는 에피소드라는 단일 엔티티 링크(`sg_episode`)가 필요합니다. - -**공식 `Episode` 엔티티 사용** - - - -**`CustomEntity02` 사용** - - - -#### 샷 - -시퀀스 엔티티에 링크되는 시퀀스라는 단일 엔티티 필드(`sg_sequence`)입니다. 이미 {% include product %}의 TV Show 프로젝트 템플릿의 일부로 있어야 합니다. - -**공식 `Episode` 엔티티 사용** - - - -**`CustomEntity02` 사용** - - - -### 툴킷 스키마 정의 - -다음과 같은 계층을 가정해 봅니다. 여기서 `{}`의 폴더는 {% include product %}의 이름을 기반으로 동적으로 이름이 지정됩니다. - - - {project_name} - - shots - episode.yml - - {episode_name} - sequence.yml - - {sequence_name} - shot.yml - - {shot_name} - ... - … - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### 에피소드 - -`config/core/schema/project/shots` 폴더에서 `episode`라는 이름의 폴더를 다음 컨텐츠와 동일한 디렉토리에 해당 `episode.yml` 파일과 함께 만듭니다. - -**공식 `Episode` 엔티티 사용** - - - # 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 - - # 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" ] } ] - -**`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 - - # 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" ] } ] - -이렇게 하면 툴킷이 이 프로젝트의 모든 에피소드에 대한 폴더를 만듭니다. - -#### 시퀀스 - -`config/core/schema/project/shots/episode` 폴더에서 `sequence`라는 이름의 폴더를 다음 컨텐츠와 동일한 디렉토리에 해당 `sequence.yml` 파일과 함께 만듭니다. - - - # 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 - - # 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" ] } ]` - -이렇게 하면 툴킷이 디렉토리 트리에서 위의 에피소드에 링크된 모든 시퀀스에 대한 폴더를 만듭니다. - -#### 샷 - -`config/core/schema/project/shots/episode/sequence` 폴더에서 `shot`라는 이름의 폴더를 다음 컨텐츠와 동일한 디렉토리에 해당 `shot.yml` 파일과 함께 만듭니다. - - - - # 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 - - # 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" ] } ]` - -이렇게 하면 툴킷이 디렉토리 트리에서 위의 시퀀스에 링크된 모든 샷에 대한 폴더를 만듭니다. - -이 작업을 완료한 후에 스키마에 다음이 반영되어야 합니다. - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### 툴킷 템플릿 정의 - -툴킷이 스키마에서 에피소드를 사용하도록 하려면 맨 위에 있는 [키 섹션](#the-keys-section)에 새 키를 만들어 정의해야 합니다. - -**공식 `Episode` 엔티티 사용** - - keys: - ... - Episode: - type: str - ... - -그런 다음 아래의 템플릿 경로에서 디렉토리 구조에 에피소드를 지정하기 위해 `{Episode}`를 적절한 위치에 삽입하여 에피소드 계층과 일치하도록 샷 계층에 있는 다른 템플릿 경로와 함께 `shot_root` 템플릿을 업데이트합니다. - - ... - paths: - shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} - … - -**`CustomEntity02` 사용** - - keys: - ... - CustomEntity02: - type: str - ... - -그런 다음 아래의 템플릿 경로에서 디렉토리 구조에 에피소드를 지정하기 위해 `{CustomEntity02}`를 적절한 위치에 삽입하여 에피소드 계층과 일치하도록 샷 계층에 있는 다른 템플릿 경로와 함께 `shot_root` 템플릿을 업데이트합니다. - - ... - paths: - shot_root: shots/{CustomEntity02}/{Sequence}/{Shot}/{Step} - … - -기본 **에피소드> 시퀀스> 샷** 워크플로우에 필요한 작업이 모두 끝났습니다. - -## 구조에 분기를 설정하는 방법 - -이는 [서로 다른 파이프라인 단계에 대한 각기 다른 파일 시스템 레이아웃](#different-file-system-layouts-for-different-pipeline-steps)과 관련이 있습니다. 특히, 구조에 분기를 추가하려는 경우에 더욱 그렇습니다. 예를 들어 "파이프라인 단계 A"에 대한 구조 하나와 다른 모든 파이프라인 단계에 대한 구조 하나를 설정할 수 있습니다. - -파이프라인에 다른 종류의 [에셋 유형](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_site_configuration_ar_customizing_fields_html)을 추가하고 새로운 에셋 유형이 차량이라고 가정해 봅니다. 차량에 대한 파일 구조를 변경하여 각 파이프라인 단계(예: "geoprep" 및 "lookdev")에 대해 서로 다른 폴더가 있도록 하고 각 파이프라인 단계 폴더 내에 추가 폴더가 있도록 하려고 합니다. 이 업데이트와 병행하여 현재 에셋을 만드는 방법은 동일하게 유지되어야 합니다. 이 새로운 흐름을 위해 파이프라인을 업데이트하는 방법을 살펴보겠습니다. - -**1단계: 스키마 수정** - -먼저 새 에셋 유형으로 폴더 구조가 표시되는 방식을 반영하도록 스키마를 수정합니다. - -- 스키마에서 새로운 에셋 유형인 차량에 대한 새 분기를 만들어 시작합니다. -- `asset/` 및 `asset.yml`과 같은 레벨에서 `asset_vehicle/` 폴더 및 `asset_vehicle.yml`을 추가합니다. -- 이러한 YAML 파일에도 필터 설정이 있습니다. `asset.yml`의 필터를 수정하여 차량을 _제외_한 모든 에셋에 적용한 다음 `asset_vehicle.yml`을 수정하여 차량 유형의 에셋에_만_ 적용합니다. [여기 있는 예에서는 필터를 보여 줍니다](#different-file-system-layouts-for-different-pipeline-steps). -- `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단계: 새 환경 파일 만들기** - -현재 새 에셋 유형에 대한 디렉토리 구조가 있으며 새 디렉토리 구조에서 파일을 저장하고 게시할 위치를 설명하는 템플릿이 있습니다. 이제 툴킷에 이러한 새 템플릿을 사용할 시기를 알려야 합니다. 이렇게 하려면 새 환경 파일을 만듭니다. - -- `env/asset_vehicle_step.yml`이라는 `env/asset_step.yml` 사본을 만듭니다. `env/asset_vehicle_step.yml`이 새 템플릿을 사용한다는 점을 제외하면 이 두 파일은 동일합니다. `maya_asset_work`의 모든 인스턴스를 `maya_asset_work_vehicle`로 바꿉니다. 만든 다른 차량 템플릿에 대해서도 같은 작업을 수행합니다. -- 마지막으로 툴킷에서 새로운 환경을 선택할 시기를 지정해야 합니다. 이렇게 하려면 컨텍스트의 에셋이 `vehicle` 유형인 경우 [pick_environment](https://github.com/shotgunsoftware/tk-config-default/blob/master/core/hooks/pick_environment.py) 코어 후크를 수정하여 `asset_vehicle` 또는 `asset_vehicle_step`을 반환합니다. 이제 이 새로운 유형의 에셋(차량)을 사용하여 작업할 때 툴킷이 해당 환경 구성을 사용하고 파일을 대체 파일 시스템 구조에 저장하고 게시할 수 있게 됩니다. - -## 커스텀 엔티티를 사용하여 커스텀 파이프라인 단계를 만드는 방법 - -{% include product %} 7.0.6.0에서는 [관리자 메뉴를 통한 파이프라인 단계 관리](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_site_configuration_ar_configure_pipeline_steps_html#managing-pipeline-steps)가 도입되었습니다. 이 기능을 사용하면 파이프라인 단계에 커스텀 필드를 쉽게 추가할 수 있습니다. **전문가 팁: 대부분의 경우 파이프라인 단계에서 커스텀 필드를 사용하면 해당 파이프라인 단계를 관리할 커스텀 엔티티를 만드는 것보다 체계적으로 파이프라인을 유지할 수 있습니다.** - -그러나 고급 사례에서는 대체 파이프라인 단계가 유용할 수 있습니다. 예를 들어 파이프라인 단계 영역에서 프로덕션과 파이프라인에 대한 다양한 명명 규칙 및 구조의 유연성과, 독립적으로 이름을 지정하고 구조화할 수 있는 유연성을 가질 수 있습니다. 일반적으로 {% include product %}에서 기본 제공하는 파이프라인 단계는 일정 계획 목적으로 사용되지만 다른 [커스텀 엔티티](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)를 사용하여 파일 시스템을 구성하고 파이프라인에서 개별 태스크를 그룹으로 지정할 수 있습니다. 태스크에서 커스텀 엔티티로 커스텀 링크 필드를 만들어 이 작업을 수행할 수 있습니다. 그런 다음 시스템에서 단계 노드를 통해 태스크를 함께 그룹으로 지정하는 데 사용됩니다. - -폴더 구성에서 {% include product %}의 기본 제공 파이프라인 단계 대신 커스텀 단계 설정을 사용하도록 두 가지 특별한 옵션을 추가합니다. - - entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png deleted file mode 100644 index 6090c245b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png deleted file mode 100644 index a085eff1c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png deleted file mode 100644 index ca000330a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png deleted file mode 100644 index bd8f8498c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png deleted file mode 100644 index 3719f99ac..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png deleted file mode 100644 index 1765ae50f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png deleted file mode 100644 index d03eb10dd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png deleted file mode 100644 index a9371f5bb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png deleted file mode 100644 index 146d40a46..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png b/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png deleted file mode 100644 index 5186eccba..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png deleted file mode 100644 index d3bc9947c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png deleted file mode 100644 index 361af7a18..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg deleted file mode 100644 index f5d021774..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png deleted file mode 100644 index e93f55868..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg deleted file mode 100644 index d63bd989b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png deleted file mode 100644 index 1cda5f569..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg deleted file mode 100644 index ff7f4d642..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png deleted file mode 100644 index 991e09535..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png deleted file mode 100644 index 6d9ec5853..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png deleted file mode 100644 index a3e69b57b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png deleted file mode 100644 index 3f7cb0d66..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png deleted file mode 100644 index 097a75b6c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png deleted file mode 100644 index 154c8c542..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png deleted file mode 100644 index 265743164..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png deleted file mode 100644 index a45867095..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png deleted file mode 100644 index 8228f9574..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png deleted file mode 100644 index 17ffecb65..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png deleted file mode 100644 index 30dcea707..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png deleted file mode 100644 index d8f018ce0..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png deleted file mode 100644 index fc2381408..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png deleted file mode 100644 index 91f44c3a7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png deleted file mode 100644 index 9d64036ab..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png deleted file mode 100644 index 41d644263..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png deleted file mode 100644 index 7a78a97b6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png deleted file mode 100644 index ced4416b6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png b/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png deleted file mode 100644 index 1fb7f91bf..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png b/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png deleted file mode 100644 index 28ad5a270..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png b/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png deleted file mode 100644 index e99172933..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png b/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png deleted file mode 100644 index 79b32bafd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png b/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png deleted file mode 100644 index aef179f1a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png b/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png deleted file mode 100644 index 7e5253b18..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png deleted file mode 100644 index 6d93de390..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png deleted file mode 100644 index 91168abcf..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png deleted file mode 100644 index 6a0efb64a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png deleted file mode 100644 index cbef9e60a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png deleted file mode 100644 index d638c5ddd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png deleted file mode 100644 index 4755b7174..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png deleted file mode 100644 index 44e138a03..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png deleted file mode 100644 index 0ab33d0c3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png deleted file mode 100644 index 0b935b1b1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png deleted file mode 100644 index 2330991f2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png deleted file mode 100644 index 2f80c2fa6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png deleted file mode 100644 index 15b3430d6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png b/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png deleted file mode 100644 index a4fd273c4..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png deleted file mode 100644 index b0ec0996f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png deleted file mode 100644 index 425efe59e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png deleted file mode 100644 index b77377491..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png deleted file mode 100644 index 4ca9e684f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png deleted file mode 100644 index 1d85b1113..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png deleted file mode 100644 index ddc0e810f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png deleted file mode 100644 index a04bc3da7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png deleted file mode 100644 index 10ad3838b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png b/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png deleted file mode 100644 index 7face3205..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png deleted file mode 100644 index eb9a775f4..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png deleted file mode 100644 index 393f75051..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png deleted file mode 100644 index af3f33782..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg deleted file mode 100644 index 269e7a090..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png deleted file mode 100644 index 702118d8f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png deleted file mode 100644 index bdf020b6e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png deleted file mode 100644 index d86fc66d9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png deleted file mode 100644 index d38f8678f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png deleted file mode 100644 index 4aebe397c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png deleted file mode 100644 index 10746a0de..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png deleted file mode 100644 index 630be0b5a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png b/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png deleted file mode 100644 index 27cfbe3d2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg deleted file mode 100644 index b757cc6dd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg deleted file mode 100644 index 6d9502dfb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png deleted file mode 100644 index 671244ee1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg deleted file mode 100644 index 559262ff2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg deleted file mode 100644 index 77e5c1c04..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png deleted file mode 100644 index f1e50cf3e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png b/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png deleted file mode 100644 index c86fcbcfb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png deleted file mode 100644 index ea8062e15..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/context.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/context.png deleted file mode 100644 index c78d1c4ef..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/context.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png deleted file mode 100644 index f6844527b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png deleted file mode 100644 index 1e099a4db..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png deleted file mode 100644 index 0602adfe2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/login.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/login.png deleted file mode 100644 index d113b92c3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/login.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png deleted file mode 100644 index f5acbf3f2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png deleted file mode 100644 index fff317bf9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png b/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png deleted file mode 100644 index 75a14e763..000000000 Binary files a/docs/ko/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md b/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md deleted file mode 100644 index 250dce767..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ /dev/null @@ -1,695 +0,0 @@ ---- -layout: default -title: ShotGrid 통합 관리자 안내서 -pagename: integrations-admin-guide -lang: ko ---- - -# {% include product %} 통합 관리자 안내서 - -## 소개 - -이 문서는 {% include product %} 통합 관리자를 위한 안내서 역할을 합니다. 사용자 안내서, 관리자 안내서, 개발자 안내서 중 하나입니다. [사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/)는 일상적인 워크플로우에서 {% include product %} 통합의 최종 사용자가 될 아티스트를 위한 것이며 [개발자 안내서](https://developer.shotgridsoftware.com/ko/93c6e555/)는 Python 코드를 작성하여 기능을 확장하려는 개발자를 위한 기술 문서입니다. 이 문서는 이 두 지점 사이에 존재합니다. 스튜디오에서 {% include product %} 통합을 구현하고, 소프트웨어 버전을 관리하며 게시된 파일의 저장소를 결정하는 사용자를 위해 작성되었습니다. - -## 표준 파이프라인 구성 - -툴킷 설정의 중심에는 파이프라인 구성이 있습니다. 파이프라인 구성은 설치된 앱부터 소프트웨어 버전까지 모든 것을 관리하는 YAML 파일 세트이며, 프로덕션 디렉토리 구조 및 파일 이름을 설정하기 위한 템플릿까지 보유하는 경우도 있습니다. 파이프라인 구성은 매우 세부적인 사항까지 커스터마이즈할 수 있지만 두 가지 시작 지점이 제공됩니다. - -### 기초 구성 - -기본 제공 통합은 구성 파일을 설정하거나 수정할 필요 없이 실행할 수 있도록 디자인되었습니다. 기본 제공 통합을 사용할 때에는 관리할 필요가 없습니다. 하지만 툴킷이 내부에서 함축된 파이프라인 구성을 사용하는 경우에는 이 파이프라인 구성을 기초 구성이라고 합니다. 기초 구성은 지원되는 모든 소프트웨어 패키지에서 사용할 수 있는 3개의 툴킷 앱(Panel, Publisher 및 Loader)을 구성하며, {% include product %}의 소프트웨어 엔티티를 고려하여 {% include product %} 데스크톱에 표시할 소프트웨어 패키지를 결정합니다. 기초 구성에는 파일 시스템 위치 지원이 포함되지 않습니다. 프로젝트에서 기본 제공 통합을 사용할 때에는 데스크톱을 시작할 때마다 기초 구성 사본이 자동으로 업데이트되므로 통합을 항상 최신 버전으로 유지할 수 있습니다. [여기에서 릴리즈 정보를 구독](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)하고 [여기에서 Github의 기초 구성을 확인](https://github.com/shotgunsoftware/tk-config-basic/)할 수 있습니다. - -### 기본 구성 - -고급 프로젝트 설정의 기본 시작 지점입니다. 여기에는 [파일 시스템 위치 지원](https://developer.shotgridsoftware.com/ko/82ff76f7/)과 다양한 툴킷 앱 및 엔진이 포함됩니다. - -[여기에서 Github의 기본 구성을 확인](https://github.com/shotgunsoftware/tk-config-default2)할 수 있습니다. 기본 구성 구조에 대한 자세한 정보는 파이프라인 구성에 있는 `config/env/README.md` 파일을 참조하거나 [Github에서 확인](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)하십시오. - -{% include info title="참고" content="이전 구성 구조를 찾고 계십니까? v1.1 통합 릴리즈의 경우 효율성과 가독성을 극대화하고 기초 구성의 구조를 보다 일관되게 유지할 수 있도록 기본 구성 구조를 재편성했습니다. 여전히 레거시 기본 구성을 기반으로 프로젝트를 만들 수 있습니다. 데스크톱 설정 프로젝트 마법사에 구성을 선택하라는 메시지가 표시되면 '레거시 기본값(Legacy Default)'을 선택하기만 하면 됩니다." %} - -## Publisher - -Publisher는 기본 제공 워크플로우와 전체 파이프라인 구성 간에 쉽게 전환할 수 있도록 설계되었었습니다. 기본 제공 설정의 경우 파일이 즉시 게시되기 때문에 템플릿 또는 파일 시스템 스키마를 정의할 필요가 없습니다. 프로젝트가 고급 설정 단계를 지나 전체 파이프라인 구성을 갖추고 나면 동일한 게시 플러그인이 앱 설정으로의 템플릿 도입을 인식하고 게시 전에 파일을 지정된 게시 위치로 복사하기 시작합니다. 그러면 스튜디오는 전체 구성을 가진 프로젝트에 필요한 대로 환경별 또는 DCC 기준별로 템플릿 기반 설정을 도입할 수 있습니다. 기본 구성은 템플릿 기반 워크플로우에 대해 완전히 구성된 상태로 제공되며 Publish 앱에서 템플릿을 어떻게 구성할 수 있는지 살펴볼 수 있는 좋은 참조가 됩니다. 자세한 정보는 Github의 기본 구성에 있는 [tk-multi-publish2.yml 파일](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-multi-publish2.yml)을 참조하십시오. - -Publisher용 플러그인 작성에 대한 자세한 정보는 [개발자 안내서의 Publisher 섹션](https://developer.shotgridsoftware.com/ko/93c6e555/#publisher)을 참조하십시오. - -## 소프트웨어 시작 구성 - -{% include product %}이 시스템에 있는 호스트 응용프로그램을 자동으로 탐지하는 기능에 맡기면 됩니다. {% include product %} 데스크톱을 시작하고 프로젝트만 선택하면 데스크톱에 지원되는 모든 소프트웨어 패키지(표준 응용프로그램 디렉토리에서 확인 가능)의 시작 관리자가 표시됩니다. 스튜디오에서 보다 세밀하게 소프트웨어를 관리할 수 있는 견고한 도구도 역시 제공됩니다. 응용프로그램 가시성을 특정 프로젝트, 그룹 또는 개별 사용자로도 제한할 수 있습니다. 버전을 지정하고 전체 사이트에서 특정 소프트웨어 패키지를 비활성화하며 소프트웨어 패키지 그룹을 지정할 수 있습니다. 이 모든 것이 {% include product %}의 소프트웨어 엔티티를 통해 관리됩니다. - -새 {% include product %} 사이트를 만들면 기본 소프트웨어 엔티티 세트가 설정됩니다(지원되는 호스트 응용프로그램에 대해 각각 하나씩). 이러한 엔티티를 수정하고 자체 엔티티를 추가하여 데스크톱에 나타나는 소프트웨어를 원하는 방식으로 관리할 수 있습니다. - -{% include product %}의 소프트웨어 엔티티를 보려면 화면 오른쪽 위에 있는 프로파일 아이콘을 클릭하여 관리자(Admin) 메뉴를 열고 `Software`를 선택합니다. - -소프트웨어 엔티티에는 다음과 같은 필드가 있습니다. - -- **소프트웨어 이름(Software Name):** 데스크톱에 표시되는 소프트웨어 이름입니다. -- **썸네일(Thumbnail):** 데스크톱 아이콘용으로 업로드된 이미지 파일입니다. -- **상태(Status):** 소프트웨어 사용 가능 여부를 제어합니다. -- **엔진(Engine):** 컨텐츠 생성 도구용 통합의 이름입니다. -- **제품(Products):** 변형(예: Houdini와 Houdini FX)이 포함된 소프트웨어 패키지의 경우 여기에서 쉼표로 구분된 목록을 지정할 수 있습니다. 수동 모드가 아닌 자동 탐지 모드에서만 유효합니다. -- **버전(Versions):** 표시할 특정 소프트웨어 버전을 지정합니다. 여기에서 쉼표로 구분된 목록을 지정할 수 있습니다. 수동 모드가 아닌 자동 탐지 모드에서만 유효합니다. -- **그룹(Group):** `Group` 필드의 값이 동일한 엔티티는 데스크톱의 경우 단일 아이콘 아래에 그리고 {% include product %}의 경우 단일 메뉴 아래에 그룹 지정됩니다. 예를 들어, Houdini 및 Nuke를 포함하는 FX 그룹을 만들 수 있습니다. -- **그룹 기본값(Group Default)**: 그룹의 한 구성원이 `Group Default`을 선택한 경우 해당 그룹의 아이콘 또는 메뉴 항목을 클릭하면 이 소프트웨어가 시작됩니다. -- **프로젝트(Projects):** 소프트웨어를 특정 프로젝트로 제한하는 방법입니다. -- **사용자 제한(User Restrictions):** 소프트웨어를 특정 사용자 또는 그룹으로 제한하는 방법입니다. -- **Linux/Mac/Windows 경로(Linux/Mac/Windows Path):** 이 필드를 사용하여 소프트웨어에 대한 OS별 경로를 명시적으로 지정합니다. -- **Linux/Mac/Windows 인자(Linux/Mac/Windows Args):** 소프트웨어 시작 시 명령에 추가할 명령행 인자입니다. - -이러한 필드를 사용하는 몇 가지 방법을 살펴봄으로써 이러한 필드가 함께 작동하는 방식에 대해 많은 것을 배울 수 있습니다. - -### 예: 동일한 응용프로그램 버전 그룹 지정, 자동 탐지 - -파일 시스템에 세 가지 버전의 Maya(Maya 2016, Maya 2017 및 Maya 2018)가 있는 경우 아티스트는 이러한 버전을 모두 사용할 수 있으며 이들을 데스크톱에 있는 단일 아이콘 아래에 그룹으로 지정할 수 있습니다. - -이러한 세 가지 버전의 Maya가 파일 시스템에 있는 표준 위치에 설치된 경우에는 그룹 지정이 모두 자동으로 이루어집니다. 데스크톱에서 프로젝트를 선택하면 로컬 컴퓨터에 있는 표준 응용프로그램 디렉토리를 스캔하여 세 버전을 찾습니다. 이미 {% include product %}에는 Maya 소프트웨어 엔티티가 있기 때문에 특정 버전 또는 경로를 지정하지 않아도 데스크톱에서 찾은 모든 버전이 표시됩니다. - -![](images/Integration-admin-guide/maya_software.png) - -몇 가지 참고 사항: - -- {% include product %}가 소프트웨어를 자동 탐지하면 단일 소프트웨어 엔티티가 모든 버전에 대한 메뉴 항목을 생성합니다. -- 어느 경로 필드에도 값이 지정되지 않습니다. 소프트웨어 엔티티는 자동 탐지 모드이므로 앱은 표준 위치에 있는 것으로 간주됩니다. - -이러한 항목은 여기서 보는 것처럼 데스크톱에도 표시됩니다(사용 가능한 모든 버전을 나열하는 드롭다운이 있는 단일 Maya 아이콘). 아이콘을 클릭한 경우 최신 버전의 Maya가 시작됩니다. - -### 예: 동일한 응용프로그램 버전 그룹 지정, 수동 모드 - -스튜디오의 비표준 위치에 Maya를 저장하기에 완벽한 조건입니다. 자체 소프트웨어 엔티티를 만든 다음 {% include product %}에서 소프트웨어를 어디서 찾아야 하는지 알 수 있도록 경로를 지정하기만 하면 됩니다. 설정은 다음과 같을 수 있습니다. - -![](images/Integration-admin-guide/maya_group_software.png) - -몇 가지 참고 사항: - -- 자동 탐지 모드와는 달리, 여기에서는 특정 소프트웨어 패키지의 각 버전마다 소프트웨어 엔티티가 있습니다. -- 이를 그룹으로 지정하려면 `Group` 및 `Group Default` 필드를 사용합니다. `Group`에 대해 동일한 값을 공유하는 소프트웨어 엔티티는 데스크톱에서 단일 아이콘 아래에 드롭다운 형태로 그룹 지정되며 해당 이름으로 `Group` 값을 사용합니다. -- 아이콘을 클릭하면 `Group Default`이 선택된 그룹 내에서 소프트웨어가 시작됩니다. -- **소프트웨어 엔티티에서 Linux 경로, Mac 경로 또는 Windows 경로에 대해 _어떤_ 값이라도 지정한 경우 해당 엔티티가 수동 모드로 전환됩니다.** 경로 필드가 비어 있을 때 소프트웨어가 데스크톱에 _표시되는_ 자동 탐지 모드와 달리 수동 모드에서는 해당 운영 체제에 대해 경로가 지정되어 있고, 파일이 지정된 경로에 존재하는 _경우에만_ 해당 운영 체제에 소프트웨어 패키지가 표시됩니다. -- 이 예에서는 `Windows Path`가 지정되지 않았기 때문에 Windows상의 데스크톱에 세 가지 Maya 버전 중 어느 것도 표시되지 않습니다. - -### 예: 사용자 또는 그룹별로 제한 - -현재 마지막 예에서 언급한 것처럼 아직 모든 사용자가 Maya 2018을 사용하도록 할 준비가 되지 않았습니다. 하지만 TD, 개발자, QA 엔지니어, Tessa 테스터는 액세스할 수 있어야 합니다. 이는 `User Restrictions` 필드를 통해 처리할 수 있습니다. 다음은 예입니다. - -![](images/Integration-admin-guide/maya_software_restrictions.png) - -마지막 예에서 다음과 같이 몇 가지 사항을 변경했습니다. - -- 그룹 기본값은 현재 Maya 2017입니다. 여기서는 프로덕션 버전을 원하기 때문에 해당 체크박스를 선택한 상태에서 Maya 아이콘을 클릭하면 이제 이 버전으로 이동합니다. -- `User Restrictions` 필드에 일부 값을 추가했습니다. 이는 사용자 및 그룹 모두에 적용될 수 있고 Dev 및 TD 그룹뿐만 아니라 사용자 Tessa 테스터도 추가했습니다. 이제 이 사람들만이 데스크톱에서 Maya 2018을 확인할 수 있습니다. - -### 예: 프로젝트별 소프트웨어 버전 제한 - -스튜디오의 프로젝트 전체에서 좀 더 복잡한 버전 관리를 해야 하는 경우가 있습니다. 신속하게 전달해야 하는 프로젝트가 있을 경우 새 소프트웨어 버전을 차단해야 하는데, 그와 동시에 후속 버전이 시작되어 최신 버전을 평가할 수 있게 될 수도 있습니다. 이런 경우 다음과 같이 소프트웨어 엔티티를 설정해야 할 수 있습니다. - -![](images/Integration-admin-guide/maya_restrict_permissions.png) - -몇 가지 중요 참고 사항: - -- 여기에서 `Group` 및 `Group Default` 값은 제거되었는데, 특정 환경에서는 하나의 Maya 버전만 데스크톱에 표시되기 때문입니다. -- 세 "Maya" 버전 모두에 대해 `Software Name`을 설정했습니다. 이렇게 하면 모든 프로젝트에서 사용자에게 동일한 이름의 아이콘이 표시되지만 여기에서 구성한 내용에 따라 다른 버전을 가리키게 됩니다. -- Maya 2016의 `Status` 필드를 `Disabled`로 설정했습니다. 스튜디오에서는 더 이상 이 버전을 사용하지 않으며 이 필드는 모든 프로젝트에 대해 전역 가시성을 전환합니다. -- Maya 2017 및 Maya 2018에 대해 `Projects`의 값을 지정했습니다. 이 `Projects` 필드는 제한 역할을 합니다. Maya 2017은 _오직_ Chicken Planet 프로젝트에만 표시되고 Maya 2018은 Chicken Planet II에만 표시됩니다. -- 소프트웨어 엔티티에 대해 `Projects`의 값을 지정하면 해당 소프트웨어는 여러분이 지정한 프로젝트에만 표시됩니다. 따라서 스튜디오에 Chicken Planet 시리즈 외에 다른 프로젝트가 있을 경우 해당 프로젝트에 대해 명시적으로 소프트웨어를 지정해야 합니다. - -### 예: 보유 중인 소프트웨어 추가 - -새 소프트웨어 엔티티를 추가하는 데에는 {% include product %} 데스크톱이 시스템에서 자동 탐지한 것 외에도 다음과 같은 몇 가지 이유가 있습니다. - -- 사용자가 데스크톱을 통해 사용할 수 있는 엔진이 없는 응용프로그램을 만들고 싶습니다. -- 직접 엔진을 작성한 내부 소프트웨어 또는 해당 통합이 없는 타사 소프트웨어를 보유하고 있습니다. -- 소프트웨어가 표준 위치에 있지 않으므로 수동으로 {% include product %}이 이를 가리키도록 하고 싶습니다. (이 사례는 위에 있는 "동일한 응용프로그램 버전 그룹 지정, 수동 모드" 예에서 설명했습니다.) - -이런 경우 보유 중인 소프트웨어 엔티티를 추가할 수 있습니다. `Software Name` 필드의 값을 입력해야 합니다. 소프트웨어용 내부 엔진을 사용 중인 경우 `Engine` 필드에 엔진 이름을 지정합니다. 일부 스튜디오에서는 아티스트의 편의를 위해 데스크톱에 {% include product %} 통합이 없는 앱을 포함할 수 있습니다. 아티스트는 데스크톱에서 해당 앱을 바로 시작할 수 있습니다. 위 설정을 모두 사용하여 버전을 관리하고 사용을 제한할 수도 있습니다. 이 경우 `Engine` 필드는 비워 두고, 대신 `Mac Path`, `Linux Path` 및 `Windows Path` 중 적어도 하나의 값을 지정해야 합니다. - -## 게시된 파일 경로 해석 구성 - -파일을 게시하면 Publisher가 {% include product %}에 PublishedFile 엔티티를 만드는데, 여기에는 `Path`라 불리는 [파일/링크](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_field_types_html)가 포함됩니다. 나중에 다른 사용자가 로더를 사용하여 자신의 작업 세션에 이 파일을 로드하려고 할 수 있습니다. 로더는 복잡한 로직을 사용하여 전체 운영 체제에서 PublishedFile의 유효한 로컬 경로를 해석합니다. - -Loader가 게시 데이터를 경로로 해석하려고 시도하는 방법은 해당 게시가 로컬 파일 링크 또는 `file://` URL과 연결되어 있는지 여부에 따라 다릅니다. - -### 로컬 파일 링크 해석 - -게시 중인 경로가 {% include product %} 사이트 기본 설정에서 정의한 로컬 저장소와 일치하는 경우 게시할 때 로컬 파일 링크가 자동으로 생성됩니다. 게시가 로컬 파일 링크인 경우에는 해당 로컬 운영 체제 표현이 사용됩니다. 로컬 파일 링크에 대한 자세한 정보는 [여기](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)를 참조하십시오. - -로컬 저장소가 현재 사용 중인 운영 체제의 경로를 정의하지 않는 경우에는 환경 변수를 사용하여 로컬 저장소 루트를 지정할 수 있습니다. 환경 변수 이름은 `SHOTGUN_PATH__` 형식이어야 합니다. 따라서, Mac에 "Renders"라고 하는 저장소 루트에 대한 경로를 정의하려면 `SHOTGUN_PATH_MAC_RENDERS` 환경 변수를 만들어야 합니다. 이 예를 더 구체적으로 살펴보겠습니다. - -- {% include product %} 사이트에 경로가 다음과 같이 지정된 "Renders"라고 하는 저장소 루트가 있다고 가정합니다. -- Linux 경로: `/studio/renders/` -- Windows 경로: `S:\renders\` -- Mac 경로: `` - -- 현재 Mac을 사용 중입니다. - -- 경로 `/studio/renders/sq100/sh001/bg/bg.001.exr`의 게시를 세션에 로드하려고 합니다. - -Loader는 해당 경로를 구문 분석하여 `/studio/renders/`가 저장소 루트의 일부이지만 Mac에 대해 정의되어 있는 저장소 루트가 없다는 것을 추론할 수 있습니다. 따라서 `SHOTGUN_PATH_MAC_RENDERS` 환경 변수를 찾게 되고, 이를 찾는 경우 경로에 있는 `/studio/renders`를 해당 값으로 대체합니다. - -**참고:** `SHOTGUN_PATH_MAC_RENDERS` 환경 변수를 정의하고 로컬 저장소 렌더에 Mac 경로가 설정되어 *있는* 경우 해당 로컬 저장소 값이 사용되고 경고가 기록됩니다. - -**참고:** 현재 운영 체제에 대한 저장소를 해석할 수 없는 경우 `PublishPathNotDefinedError`가 발생합니다. - -### 파일 URL 해석 - -Loader는 `file://` URL 해석도 지원합니다. 게시할 때 게시 중인 경로가 사이트의 로컬 저장소와 일치하지 않는 경우 경로는 `file://` URL로 저장됩니다. 로컬 파일 링크와는 달리, 이러한 경로는 다중 OS 표현으로 저장되지 않으며 해당 링크가 만들어진 운영 체제에 대해서만 정의됩니다. - -해당 URL이 만들어진 운영 체제와 다른 운영 체제에서 `file://` URL을 해석하려는 경우 Loader는 다음과 같은 일련의 접근 방식을 사용하여 유효한 경로로 URL을 해석하려고 시도합니다. - -- 먼저 세 가지 환경 변수 `SHOTGUN_PATH_WINDOWS`, `SHOTGUN_PATH_MAC` 및 `SHOTGUN_PATH_LINUX`를 찾습니다. 이러한 환경 변수가 정의되어 있으면 방식이 이런 식으로 경로를 변환하려고 시도합니다. 예를 들어, Windows에서 `file:///prod/proj_x/assets/bush/file.txt`를 해석하려는 경우 경로를 해석해야 하는 방법에 대한 힌트를 제공하기 위해 `SHOTGUN_PATH_WINDOWS=P:\prod` 및 `SHOTGUN_PATH_LINUX=/prod`를 설정할 수 있습니다. -- 둘 이상의 환경 변수 세트를 사용하려는 경우 여러 저장소를 표현하려면 위 변수 이름 구문을 다음 접미사로 확장하면 됩니다. -- 렌더용 저장소가 있는 경우 `SHOTGUN_PATH_LINUX_RENDERS`, `SHOTGUN_PATH_MAC_RENDERS` 및 `SHOTGUN_PATH_WINDOWS_RENDERS` 등을 정의하여 게시된 모든 `file://` URL에 대해 렌더 저장소 내부의 데이터를 참조하는 변환 메커니즘을 제공할 수 있습니다. -- 그런 다음 편집 데이터를 위한 저장소도 있는 경우 `SHOTGUN_PATH_LINUX_EDITORIAL`, `SHOTGUN_PATH_MAC_EDITORIAL` 및 `SHOTGUN_PATH_WINDOWS_EDITORIAL`을 정의하여 편집 저장소 루트에 변환 메커니즘을 제공할 수 있습니다. - -이러한 환경 변수를 표준화하고 나면 이를 {% include product %} 로컬 저장소로 변환하는 것을 고려할 수 있습니다. {% include product %} 기본 설정에서 이 환경 변수를 정의하고 나면 자동으로 선택되기 때문에 환경 변수가 필요하지 않습니다. - -- 위 내용 외에도 {% include product %} 기본 설정에 정의되어 있는 모든 로컬 저장소는 동일한 방식으로 처리됩니다. -- 로컬 저장소는 정의되었지만 운영 체제가 없는 경우 환경 변수를 통해 제공할 수 있습니다. 예를 들어, Linux 및 Windows에서 정의되어 있는 `Renders`라는 로컬 저장소가 있는 경우 이름이 `SHOTGUN_PATH_MAC_RENDERS`인 환경 변수를 생성하여 Mac을 지원하도록 확장할 수 있습니다. 이에 대한 일반 구문은 `SHOTGUN_PATH__`입니다. -- 일치하는 루트가 없는 경우 해당 파일 경로는 그대로 반환됩니다. - -다음은 예입니다. - -`/projects/some/file.txt` 파일을 Linux에 게시했고 URL이 `file:///projects/some/file.txt`인 {% include product %} 게시가 생성되었다고 가정해 보겠습니다. 스튜디오에서 Linux 경로 `/projects`는 Windows의 `Q:\projects`와 동일하기 때문에 전체 경로가 `Q:\projects\some\file.txt`로 변환될 것으로 예상할 수 있습니다. - -다음 설정은 모두 이를 처리합니다. - -- 일반 환경 기반 재정의: -- `SHOTGUN_PATH_LINUX=/projects` -- `SHOTGUN_PATH_WINDOWS=Q:\projects` -- `SHOTGUN_PATH_MAC=/projects` - -- 다음과 같이 설정된 "Projects"라고 하는 {% include product %} 로컬 저장소: - -- Linux 경로: `/projects` -- Windows 경로: `Q:\projects` -- Mac 경로: `/projects` - -- 다음 환경 변수를 인자로 가지는 "Projects"라고 하는 {% include product %} 로컬 저장소: - -- Linux 경로: `/projects` -- Windows 경로: -- Mac 경로: `/projects` -- `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` - -**참고:** {% include product %}에서 `Linux path` 설정을 통해 로컬 저장소 `Renders`를 정의했고 `SHOTGUN_PATH_LINUX_RENDERS` 환경 변수도 정의한 경우 해당 저장소가 우선 순위를 가지고, 환경 변수는 무시되며 경고가 기록됩니다. 일반적으로 로컬 저장소 정의는 항상 환경 변수보다 우선 순위를 가집니다. - -### 고급 구성 - -PublishedFile 경로 해석을 수행하는 기본 방법에 대한 자세한 정보는 [개발자 참조 문서](http://developer.shotgunsoftware.com/tk-core/utils.html#sgtk.util.resolve_publish_path)를 참조하십시오. - -고급 프로젝트 설정을 사용하는 경우 `resolve_publish` 코어 후크를 커스터마이즈하는 방식으로 로컬 파일 링크 및 `file://` URL 이상의 지원을 추가할 수 있습니다. 가능한 커스터마이즈 항목은 다음과 같습니다. - -- 관련 업로드 파일과 함께 게시된 항목은 코어 후크에 의해 캐시 위치에 자동으로 다운로드되고 해당 경로가 반환됩니다. -- 커스텀 URL 구성표(예: `perforce://`)는 로컬 경로로 해석될 수 있습니다. - -## 브라우저 통합 - -{% include product %} 툴킷의 브라우저 통합 덕분에 {% include product %} 웹 응용프로그램의 상황에 맞는 메뉴를 마우스 오른쪽 버튼으로 클릭하여 툴킷 앱 및 시작 관리자에 액세스할 수 있습니다. 위에 표시된 예와 같이 이러한 메뉴에는 다양한 엔티티 유형에 대해 구성된 액션이 있습니다. 한 프로젝트에 여러 파이프라인 구성을 사용하는 경우 액션은 파이프라인 구성별로 구성됩니다. 브라우저 통합을 통해 Maya 또는 Nuke와 같이 {% include product %} 컨텍스트를 인식하고 있는 컨텐츠 생성 소프트웨어를 브라우저에서 바로 시작할 수 있습니다. - -![](images/Integration-admin-guide/browser_integration.jpg) - -### 간단한 브라우저 통합 내역 - -지난 몇 년간, {% include product %} 툴킷의 브라우저 통합은 여러 형태를 거쳤습니다. 기술 및 보안 요구사항이 발전함에 따라 브라우저 통합을 구현하는 접근 방식이 필요합니다. - -**Java 애플릿(더 이상 사용되지 않음)** - -첫 번째 구현은 {% include product %} 웹 응용프로그램에서 로컬 데스크톱에 액세스할 수 있게 해 주는 Java 애플릿으로 구성됩니다. Java 애플릿은 악용될 수 있는 보안 위험 요소로 인식되었기 때문에 선호도가 낮아져 이제는 더 이상 사용되지 않습니다. - -**브라우저 플러그인(더 이상 사용되지 않음)** - -더 이상 사용되지 않는 Java 애플릿을 대체한 것은 브라우저 플러그인으로, NPAPI를 사용하여 {% include product %} 웹 응용프로그램에서 로컬 데스크톱으로 액세스할 수 있었습니다. NPAPI도 보안 위험 요소로 인식되었기 때문에 주요 웹 브라우저에서 사용을 중단하기 시작했습니다. 이로 인해 브라우저 플러그인은 더 이상 사용하지 않게 되었습니다. - -**{% include product %} 데스크톱을 통한 Websockets v1(레거시)** - -{% include product %} 데스크톱 앱에서 Websocket 서버를 호스트하는 방식은 과거에도, 그리고 현재에도 {% include product %} 웹 응용프로그램에서 로컬 데스크톱과 통신하는 방식입니다. 이 Websocket 서버의 RPC API를 이용한 첫 번째 구현에는 이전에 Java 애플릿 및 브라우저 플러그인을 위해 개발된 것과 동일한 기반 기술이 활용되었습니다. 서버가 {% include product %}로부터 요청을 받으면 관련 프로젝트의 파이프라인 구성에 있는 탱크 명령을 사용하여 액션 메뉴에 표시할 명령 목록을 가져옵니다. - -**{% include product %} 데스크톱을 통한 Websockets v2** - -Websocket 서버의 RPC API를 이용한 두 번째 반복은 툴킷 액션을 가져오고, 캐싱 및 실행하는 데 사용되는 기반 메커니즘을 변경합니다. 이 구현은 이전의 브라우저 통합과 관련된 많은 성능 문제를 해결하고 액션 메뉴의 시각적 구성을 개선하며 명시적으로 툴킷을 구성하지 않아도 작동하는 [기본적인 {% include product %} 통합](https://developer.shotgridsoftware.com/ko/d587be80/#getting-started-with-desktop)에 대한 지원을 추가합니다. 이것이 현재 구현되어 있는 브라우저 통합입니다. - -### 구성 - -각 엔티티 유형마다 사용자에게 표시되는 액션을 제어하려면 프로젝트의 파이프라인 구성에서 YAML 환경 파일을 수정합니다. 처음 커스터마이즈를 시도할 때 이해하고 고려할 몇 가지 사항이 있습니다. - -**구성할 엔진** - -{% include product %} 웹 앱 내에서 툴킷 액션을 관리하는 툴킷 엔진은 `tk-shotgun`이므로 이것이 액션 메뉴에 표시되는 항목을 제어하는 이 엔진의 구성입니다. - -![](images/Integration-admin-guide/tk-shotgun_config.png) - -위의 [tk-config-basic](https://github.com/shotgunsoftware/tk-config-basic/) 예에는 많은 엔진 명령이 메뉴 액션으로 바뀌게 되는 두 가지 앱이 구성되어 있습니다. 툴킷 앱은 액션 메뉴에 포함될 명령을 등록합니다. 여기에는 {% include product %} 사이트의 [소프트웨어 엔티티](https://developer.shotgridsoftware.com/ko/8085533c/#configuring-software-launches) 목록에 해당하는 로컬 시스템의 각 소프트웨어 패키지에 대한 시작 관리자 명령이 포함됩니다. 그 결과가 다음과 같이 표시되는 메뉴 액션 목록입니다. - -![](images/Integration-admin-guide/action_menu.png) - -브라우저 통합 코드는 사용자의 시스템에 Houdini, Maya, Nuke 및 Photoshop을 설치할 때 찾을 수 있으며 이러한 각 통합을 시작하기 위한 메뉴 액션이 됩니다. 특정 환경 구성 파일에서 해당 소프트웨어의 시작 관리자가 해당 환경의 엔티티를 표시하도록 하려면 소프트웨어 엔티티의 _엔진_ 이 있어야 합니다. 따라서 이 예에서는 이 코드 조각을 가져온 파일에 `tk-houdini`, `tk-maya`, `tk-nuke` 및 `tk-photoshopcc` 엔진이 모두 있어야 합니다. 예를 들어, 이 엔티티에 있는 시작 관리자 목록에서 Maya를 제거하려면 환경 구성 파일에서 `tk-maya` 엔진 블록만 제거하면 됩니다. - -이러한 시작 관리자뿐만 아니라 Publish 앱의 "게시...(Publish...)" 명령도 메뉴에 포함됩니다. - -**YML 파일이란 무엇입니까?** - -기본 환경 구성(`config/env/*.yml`)을 활용하며 구성의 [pick_environment.py core hook](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py)에 의해 제어되는 경로와 [tk-config-default](https://github.com/shotgunsoftware/tk-config-default/)에 의해 적용된 레거시 접근 방식(`config/env/shotgun_.yml` 파일 사용)을 활용하는 경로 중 하나를 사용할 수 있습니다. - -표준 환경 파일이 사용된 경우 브라우저 통합은 `pick_environment` 코어 후크를 사용하여 특정 엔티티의 액션 메뉴에 사용할 환경 구성 파일을 결정합니다. 가장 간단한 사례에서는 환경이 곧 엔티티 유형에 해당합니다. 예를 들어, 샷을 마우스 오른쪽 버튼으로 클릭하면 최종 액션 메뉴가 `tk-shotgun` 블록에 의해 `config/env/shot.yml`에 구성됩니다. `pick_environment` 후크를 커스터마이즈하여 보다 복잡한 로직을 사용할 수 있습니다. 표준 환경 파일에는 `tk-shotgun` 엔진을 구성해서는 안 됩니다. `shotgun_.yml` 파일이 있으면 대체될 수 있습니다. 이렇게 하면 브라우저 통합이 엔티티 특정 환경 파일을 사용하는 레거시 구성과 연동될 수 있습니다. - -**_팁: tk-config-default2를 사용하여 브라우저 시작 관리자에서 소프트웨어 제거_** - -{% include product %} 브라우저에서 소프트웨어를 시작하기 위한 구성을 업데이트하는 작업은 tk-config-default부터 tk-config-default2까지 다양합니다. - -tk-config-default2를 사용하면 업데이트를 config/env/includes/settings/[`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml)에 적용해야 합니다. 반면에 tk-config-default에서는 업데이트를 config/env/`shotgun_task.yml`에 적용했습니다. - -예를 들어 브라우저를 통해 에셋에서 실행할 때 옵션 목록에서 Mari를 제거해 보겠습니다. - -먼저 [`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 -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmari: "@settings.tk-multi-launchapp.mari" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -브라우저의 에셋에 대한 옵션 목록에서 Mari를 제거하려면 Mari 행([`tk-multi-launchmari: "@settings.tk-multi-launchapp.mari"`](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-shotgun.yml#L29))을 제거합니다. - -``` - -# asset -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -그런 다음 {% include product %} 브라우저에서 특정 소프트웨어를 시작하는 기능을 제거하려는 각 엔티티(Shot과 같은)에 대해 동일한 지침을 따릅니다. 파일을 저장하고 나면 잠시 기다렸다가 브라우저를 새로 고침하여 적용해야 할 수 있습니다. - -### 캐싱 - -브라우저 통합의 강력한 캐싱 메커니즘을 통해 사용자에게 메뉴 액션을 최대한 빨리 표시할 수 있습니다. 캐싱이 필요한 이유는 툴킷 부트스트래핑 및 엔진 명령 목록 가져오기 프로세스에 많은 시간이 소요될 수 있기 때문입니다. - -**캐시가 무효화되는 경우는 언제입니까?** - -Websocket 서버의 RPC API는 두 가지(YAML 파일 수정 시간 및 사이트의 소프트웨어 엔티티 컨텐츠)를 확인하여 캐시된 데이터가 여전히 유효한지 여부를 결정합니다. 캐시 데이터가 작성된 이후 특정 구성의 환경 YAML 파일 중 하나가 수정된 경우 필수 데이터가 다시 캐시되어 새 데이터가 {% include product %} 웹 응용프로그램으로 반환됩니다. 마찬가지로, 해당 데이터가 캐시된 이후 {% include product %}에서 소프트웨어 엔티티에 있는 필드가 수정된 경우 툴킷은 부트스트래핑되고 새 데이터가 캐시됩니다. - -**디스크에서 캐시 파일은 어디에 위치합니까?** - -캐시 파일 위치는 운영 체제에 따라 다릅니다. - -``` -OS X: ~/Library/Caches/Shotgun//site.basic.desktop/tk-desktop -Windows: %APPDATA%\Shotgun\\site.basic.desktop\tk-desktop -Linux: ~/.shotgun\\site.basic.desktop\tk-desktop -``` - -### 후크 방법 - -`browser_integration.py` 후크는 `tk-framework-desktopserver`에 포함되어 있으며 다음과 같은 후크 방법을 제공합니다. - -- `get_cache_key`: 이 방법을 통해 특정 구성 URI, 프로젝트 엔티티 및 엔티티 유형에 대한 캐시 항목 키를 확인합니다. 기본 구현에서는 구성 URI와 엔티티 유형을 결합합니다. -- `get_site_state_data`: 이 방법은 {% include product %}의 추가 쿼리 데이터를 캐시된 데이터의 유효성을 테스트하는 데 사용된 해시에 포함할 때 사용할 수 있습니다. 기본적으로 사이트에 존재하는 모든 소프트웨어 엔티티의 현재 상태 그대로 사용되지만 해시에 추가 데이터를 포함해야 하는 경우 이 후크 방법으로 구현할 수 있습니다. -- `process_commands`: 이 방법을 사용해 {% include product %} 웹 응용프로그램으로 반환되는 명령을 커스터마이즈 또는 변경할 수 있습니다. 이 방법에 제공되는 데이터의 구조는 사전 목록으로, 각 사전은 단일 메뉴 액션을 나타냅니다. 데이터는 변경하거나, 필터링하거나, 아니면 그대로 목록에 추가할 수 있으며 즉각적인 툴킷 액션을 요청하는 메뉴에 반영됩니다. - -### 로그 - -브라우저 통합 로그는 툴킷의 [표준 로그 위치](https://developer.shotgridsoftware.com/ko/38c5c024/)에서 확인할 수 있습니다. 관련 로그 파일은 `tk-desktop.log` 및 `tk-shotgun.log`입니다. 또한 Google Chrome을 사용하는 경우 브라우저의 개발자 콘솔에서 몇 가지 관련 로그 출력을 사용할 수도 있습니다. - -### 문제 해결 - -웹 응용프로그램과 로컬 데스크톱 사이의 통신은 복잡하기 때문에 그 과정에서 장애가 발생할 수도 있습니다. 다음은 그러한 몇 가지 상황과 장애 발생 시 취해야 하는 첫 번째 단계의 제안 사항입니다. - -**액션 메뉴에 "{% include product %} 데스크톱을 열거나 설치...(Open or install Shotgun Desktop...)"가 표시됨** - -![](images/Integration-admin-guide/install_desktop.png) - -다음 세 가지 중 하나를 의미합니다. - -1. 현재 로컬 컴퓨터에서 {% include product %} 데스크톱이 실행되고 있지 않습니다. 실행되는 것처럼 보이더라도 반드시 다시 확인할 필요가 있습니다. - -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/ko/38c5c024/)에 표시되며 이 내용은 [{% include product %}의 지원 팀으로 전송](https://knowledge.autodesk.com/ko/contact-support)될 수 있습니다. - -**액션 메뉴에 표시되는 액션이 없음** - -![](images/Integration-admin-guide/no_actions.png) - -이 엔티티 유형에 대한 액션이 예상되었던 경우 구성에 문제가 있음을 의미합니다. 몇 가지 가능한 문제: - -1. `tk-shotgun` 엔진이 올바른 환경 YAML 파일에서 구성되었지만 해당 구성에 앱이 없습니다. 이 경우, 이 엔티티 유형에 대한 액션이 없는 것이 의도된 것일 수 있습니다. - -2. `tk-shotgun` 엔진이 올바른 환경 YAML 파일에서 구성되었고 앱도 있지만 메뉴에 여전히 액션이 표시되지 않습니다. 앱을 초기화하지 못한 것이 원인일 가능성이 높습니다. 이 경우 [tk-shotgun.log and tk-desktop.log](https://developer.shotgridsoftware.com/ko/38c5c024/)에 해당 문제를 설명하는 정보가 있을 것입니다. - -3. 이 엔티티 유형에 해당하는 환경에 `tk-shotgun`에 대한 구성이 포함되어 있지 않습니다. 최종 결과는 이 목록에 있는 1번과 동일합니다. 이 경우, 파이프라인 구성의 `pick_environment` 후크를 살펴보고 이 엔티티 유형에 대해 로드되고 있는 환경을 살펴본 후에 거기에서 `tk-shotgun`의 구성을 검증하면 됩니다. - -4. 디스크에 캐시된 메뉴 액션 목록이 비어 있습니다. 강제로 캐시를 다시 생성할 수 있는 몇 가지 방법이 있습니다. - - - 프로젝트 구성에서 YAML 파일의 수정 시간을 업데이트합니다. 이렇게 하면 다음에 {% include product %}에서 요청했을 때 메뉴 액션이 다시 캐시됩니다. 단, 이 방법을 사용하면 해당 프로젝트에서 작업 중인 _모든_ 사용자를 다시 캐시합니다. - - {% include product %} 사이트에서 소프트웨어 엔티티의 필드 값을 업데이트합니다. 여기서 수행되는 작업은 YAML 파일 수정 시간에 관한 위 옵션과 동일하지만 {% include product %} 사이트에서 _모든_ 프로젝트의 모든 사용자에 대해 캐시된 데이터를 무효화합니다. 소프트웨어 엔티티는 비 프로젝트 엔티티이므로 모든 프로젝트에서 공유됩니다. 소프트웨어 엔티티의 데이터를 변경하면 모든 프로젝트가 영향을 받습니다. - - 문제가 발생한 호스트에 있는 캐시 파일은 삭제할 수 있습니다. 일반적으로 캐시는 제거해도 문제가 없으며 각 호스트에 로컬로 저장되기 때문에 해당 시스템에서 데이터만 처음부터 다시 캐시합니다. 캐시는 {% include product %} 캐시 위치 내부의 다음 SQLite 파일에 저장됩니다. `/site.basic.desktop/tk-desktop/shotgun_engine_commands_v1.sqlite` - -**"툴킷: 액션 검색 중...(Toolkit: Retrieving actions...)"이 메뉴 액션으로 대체되지 않음** - -![](images/Integration-admin-guide/retrieving_actions.png) - -이 문제가 발생할 수 있는 몇 가지 원인이 있습니다. - -1. Websocket 서버가 아직 캐싱 액션을 완료하지 않았습니다. 이번이 프로젝트 구성에 대한 중요한 업데이트 후 검색하는 첫 번째 액션인 경우 프로세스를 완료하는 데 시간이 약간 걸릴 수 있습니다. 조금 더 기다리다가 아직 진행 중인지 확인하려면 `tk-desktop.log`의 내용을 살펴봅니다. - -2. Websocket 서버가 계속 응답하지 않습니다. 이런 상황은 드물게 나타나지만 `tk-desktop.log`를 살펴보았을 때 액션 요청의 결과로 발생하는 추가 프로세스가 없는 것이 확실하다면, [ShotGrid 지원 팀에 문의](https://knowledge.autodesk.com/ko/contact-support)하고 관련 로그 데이터를 제공합니다. - -3. 사용자가 두 개 이상의 {% include product %} 사이트에서 작업 중입니다. 단일 사이트에서 {% include product %} 데스크톱을 인증한 상태에서 두 번째 {% include product %} 사이트에서 메뉴 액션을 요청하면 사용자에게 {% include product %} 데스크톱을 다시 시작하여 새 사이트에 로그인하라는 메시지가 표시됩니다. 해당 요청을 무시하면 두 번째 사이트는 메뉴 액션 목록을 받을 수 없습니다. - - -## 툴킷 구성 파일 - -스튜디오에서 프록시 서버를 사용하는 경우, 초기 로그인 화면에 몇 가지 값을 미리 입력해 두려는 경우 또는 브라우저 기반 응용프로그램 시작 관리자가 {% include product %} 데스크톱과 상호 작용하는 방식을 변경하려는 경우에 사용할 수 있는 `toolkit.ini`라는 특수 구성 파일이 있습니다. {% include product %} 데스크톱을 실행하는 데는 이 파일이 필요하지 않으며 데스크톱의 동작을 구성해야 하는 경우에만 필요합니다. 툴킷은 다음과 같은 순서로 여러 위치에서 이 파일을 찾습니다. - -1. 파일 경로를 가리키는 `SGTK_PREFERENCES_LOCATION`이라는 환경 변수 -2. {% include product %} 툴킷 기본 설정 폴더 내: (이 파일은 기본적으로 이러한 위치에 없으며 직접 생성해야 함) - - Windows: `%APPDATA%\Shotgun\Preferences\toolkit.ini` - - macOS: `~/Library/Preferences/Shotgun/toolkit.ini` - - Linux: `~/.shotgun/preferences/toolkit.ini` - -`SGTK_PREFERENCES_LOCATION` 환경 변수 옵션을 사용하면 컴퓨터 또는 네트워크의 다른 곳에 구성 파일을 저장할 수 있습니다. `toolkit.ini`가 현재 표준 파일 이름입니다. `config.ini`를 사용 중인 경우 아래 _"레거시 위치"_ 섹션을 확인하십시오. - -[여기](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example)에서 설명된 구성 파일의 예를 확인할 수 있습니다. - -이 예제 파일은 `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` - - Linux: `~/shotgun/desktop/config/config.ini` - -**프록시 구성** - -스튜디오에서 프록시를 통해 인터넷에 액세스하는 경우 인터넷에 액세스할 때 이 프록시를 사용하도록 툴킷을 설정해야 합니다. 그렇게 하려면 프록시를 `http_proxy` 설정 값으로 지정하면 됩니다. - -`http_proxy: ` - -**로컬에서 호스팅되는 사이트를 통해 {% include product %} 데스크톱 실행** - -{% include product %} 사이트 URL이 `shotgunstudio.com` 또는 `shotgrid.autodesk.com`으로 끝나지 않는 경우 로컬 {% include product %} 사이트에서 실행 중임을 의미합니다. 이 경우 아직 사이트가 {% include product %} 통합에 맞춰 완벽하게 준비되지 않았을 가능성이 있기 때문에 {% include product %} 팀에서 현장을 방문하여 통합을 진행하기 전에 약간의 조정 작업을 해야 할 수 있습니다! 이 경우 [티켓을 제출](https://knowledge.autodesk.com/ko/contact-support)하면 준비를 지원해 드리겠습니다. - -**로컬에서 호스팅되는 사이트를 통해 앱 스토어에 연결** - -로컬 {% include product %} 사이트를 사용하여 프록시를 통해 인터넷에 액세스하는 경우 로컬 {% include product %} 웹 사이트가 아닌 앱 스토어에 액세스하도록 HTTP 프록시를 설정할 수 있습니다. 이렇게 하려면 다음 행을 `toolkit.ini`에 추가하면 됩니다. - -`app_store_http_proxy: ` - -여기서 ``는 [개발자 문서](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=reference%20methods#shotgun-methods) - -프로젝트에 따라 이 설정을 재지정해야 하는 경우 프로젝트의 파이프라인 구성에 있는 `config/core/shotgun.yml`에서 수행할 수 있습니다. - -## 오프라인 사용 시나리오 - -일반적 사용 시 {% include product %} 데스크톱은 시작할 때 데스크톱 앱, tk-desktop 엔진 및 기초 구성에 대한 업데이트를 자동으로 확인합니다. 그러나 오프라인 상태 또는 인터넷 연결이 완전히 해제된 컴퓨터에서 통합을 실행해야 하는 경우도 있습니다. 다음 섹션에서는 이러한 각 시나리오에서의 해결 방법에 대해 설명합니다. - -### {% include product %} Create - -이 문서에 설명된 오프라인 사용 시나리오의 해결 방법은 [{% include product %} Create](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html)에서 제공하는 통합 기능에도 적용됩니다. {% include product %} 툴킷의 동작을 맞춤 설정하는 데 사용되는 다양한 환경 변수(예: `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`)는 {% include product %} Create를 {% include product %} 데스크톱과 동일한 방법으로 사용하는 경우 적용됩니다. - -### 오프라인 상태에서 통합 실행 - -_시나리오: {% include product %} 통합을 실행하고 싶지만 인터넷에 연결되어 있지 않습니다. 로컬 {% include product %} 설치가 가능합니다._ - -**솔루션** - -- 일시적으로 인터넷에 연결할 수 있는 경우 그냥 {% include product %} 데스크톱을 다운로드합니다. 여기에는 일련의 [통합 항목](https://developer.shotgridsoftware.com/ko/d587be80/#introduction)이 미리 패키징되어 있으며 지원되는 모든 DCC에서 {% include product %} 통합에 필요한 모든 앱과 엔진을 사전 번들로 제공합니다. 데스크톱을 시작하면 자동으로 업그레이드를 검색합니다. 하지만, {% include product %} 앱 스토어에 연결할 수 없는 경우 로컬에 있는 가장 최신 버전을 실행합니다. - -**유용한 정보** - -- 일부 툴킷 작업(예: 게시 등록)을 사용하려면 {% include product %} 사이트에 액세스해야 합니다. 따라서 이 솔루션은 로컬에서 호스팅되는 사이트에서만 유효합니다. -- 업데이트는 로컬 컴퓨터에 다운로드됩니다. -- 연결과 연결 해제 사이를 오가는 경우 데스크톱뿐만 아니라 Maya 및 Nuke에 있는 앱 내 통합도 시작 시 업그레이드를 다운로드합니다(연결되어 있을 때마다). - -### 수동 다운로드를 통해 업데이트 관리 - -_시나리오: 아티스트의 워크스테이션이 인터넷에 연결되어 있지 않기 때문에 데스크톱에서 자동 업데이트를 사용할 수 없습니다. 업데이트를 다운로드하고 싶지만 단일 온라인 컴퓨터를 통해 다운로드한 다음 이를 수동으로 아티스트의 컴퓨터 또는 중앙 위치로 전송해야 합니다._ - -**솔루션** - -- 인터넷에 연결된 워크스테이션에서 {% include product %} 데스크톱을 실행합니다. 시작할 때 최신 업그레이드가 자동으로 다운로드됩니다. -- 옵션 1: 공유 데스크톱 번들 -- [번들 캐시](https://developer.shotgridsoftware.com/ko/7c9867c0/)를 모든 컴퓨터가 액세스할 수 있는 공유 위치에 복사합니다. -- 오프라인 컴퓨터에서 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 환경 변수가 이 위치를 가리키도록 설정합니다. -- 오프라인 컴퓨터에서 데스크톱을 시작하면 번들 캐시에서 사용할 수 있는 최신 업그레이드를 선택합니다. -- 옵션 2: 로컬 배포 -- 업데이트된 번들 캐시를 각 로컬 컴퓨터의 올바른 번들 캐시 위치에 배포합니다. - -**유용한 정보** - -- 옵션 1을 사용하면 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`에 정의된 위치에서 툴킷 코드가 로드됩니다. 이 위치가 공유 저장소인 경우 작은 파일을 여러 개 로드할 수 있는지 확인합니다. -- Windows 설정에서는 이 옵션이 적합하지 않은 경우가 많습니다. 여기서는 옵션 2를 권장합니다. - -## 업데이트 잠그기 - -데스크톱의 자동 업데이트는 항상 최신 버전을 사용할 수 있다는 점에서 편리하지만, 간혹 프로젝트 또는 사이트 전체를 동결하고 특정 버전으로 잠그거나 모든 업데이트를 차단해야 하는 경우가 있을 수도 있습니다. - -### 단일 프로젝트에 대한 업데이트 중지 - -_시나리오: 프로젝트가 거의 마무리 단계인데 {% include product %} 통합 업데이트가 자동으로 다운로드되지 않도록 프로젝트를 동결하려고 합니다._ - -**솔루션** - -- 프로젝트를 잠글 버전을 결정합니다. [통합 릴리즈는 여기에서 확인할 수 있습니다.](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes) -- {% include product %}에서 잠그려는 프로젝트에 대한 파이프라인 구성 엔티티를 만들고 다음 필드를 입력합니다(이 예에서는 v1.0.36의 통합을 사용하도록 구성을 잠금). -- 이름: `Primary` -- 프로젝트: 잠그려는 프로젝트 -- 플러그인 ID: `basic.*` -- 디스크립터: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - -- 이제 프로젝트에서 {% include product %} 데스크톱을 시작하는 모든 사람은 항상 v1.0.36을 사용하게 됩니다. 프로젝트에서 작업을 시작하는 새 사용자도 v1.0.36을 받게 됩니다. - - -![](images/Integration-admin-guide/freeze_single_project.png) - -**유용한 정보** - -- 업데이트는 로컬 컴퓨터에 다운로드됩니다. -- 다음에 사용자가 인터넷에 연결된 상태에서 데스크톱을 시작하면 기초 구성 `v1.0.36` 및 해당 기초 구성의 모든 관련 코드가 컴퓨터로 다운로드됩니다. -- `basic.*`은 기초 구성에 있는 모든 플러그인이 이 재정의를 선택하게 됨을 의미합니다. 예를 들어, Nuke 및 Maya 통합만 중지하려는 경우 `basic.maya, basic.nuke`를 지정하면 됩니다. -- 테스트하려면 이 파이프라인 구성 엔티티를 복제한 다음 `User Restrictions` 필드에 사용자 이름을 추가하면 됩니다. 이렇게 하면 엔티티를 제한하게 되는데, 사용자에게만 적용되고 다른 사용자에게는 영향을 주지 않습니다. 그런 다음 이 복제 구성에서 Maya 또는 다른 소프트웨어를 시작하여 예상 통합 버전을 실행 중인지 확인할 수 있습니다. - -**알려진 문제** - -- Flame 통합의 네임스페이스는 `basic.flame`으로 지정되기 때문에 `basic.*`의 일부로 생각될 수 있습니다. 그러나 실제로 Flame 통합은 기초 구성에 포함되지 않습니다. 따라서 프로젝트에 Flame을 사용 중이고 이 재정의를 구현하는 경우 Flame 통합의 작동이 중지됩니다. -- 이 솔루션은 특히 Flame에 있어 추가 파이프라인 구성 재정의를 생성하게 됩니다. -- 이름: `Primary` -- 프로젝트: 잠그려는 프로젝트(또는 모든 프로젝트에 대해 "없음(None)") -- 플러그인 ID: `basic.flame` -- 디스크립터: `sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### 사이트에 대한 업데이트 중지 - -_시나리오: 업데이트를 하고 싶지 않습니다. 다운로드되는 항목과 스튜디오의 모든 프로젝트에서 사용되는 항목을 완전하게 제어하고 싶습니다._ - -**솔루션** - -- 위의 예에 있는 단계를 따르고 `Project` 필드만 비워 둡니다. `Project` 필드를 재정의하지 않은 상태에서 이 파이프라인 구성 엔티티는 "사이트" 프로젝트(즉, 프로젝트 외부에 있는 데스크톱에서 사용되는 사이트 구성)를 포함한 모든 프로젝트에 적용됩니다. - -![](images/Integration-admin-guide/freeze_site.jpg) - -**유용한 정보** - -- 이는 "사이트 구성을 잠그려는" 경우 사용할 워크플로우입니다. 이렇게 하면 모든 항목이 잠기며 이제 데스크톱 메뉴를 통해 고급 프로젝트 설정으로 진행할 수 있습니다. -- 사용할 사이트 전체를 잠글 경우에도(예: `v1.2.3`) 개별 프로젝트를 잠근 후 다른 구성을 사용할 수 있습니다. - -**알려진 문제** - -- 이 작업은 Flame에 영향을 줍니다. 솔루션은 위 시나리오의 ‘알려진 문제’ 섹션을 참조하십시오. - -### 하나만 제외하고 모든 프로젝트에 대한 업데이트 중지 - -_시나리오: 자동 업데이트를 계속 허용할 테스트 프로젝트를 제외하고 사이트에 있는 모든 프로젝트를 잠그려고 합니다._ - -![](images/Integration-admin-guide/freeze_all_but_one_project.jpg) - -**솔루션** - -- 위 섹션에서 설명한 대로 사이트에 대한 업데이트를 중지합니다. -- 예외 프로젝트의 파이프라인 구성 엔티티가 다음 필드 값을 갖도록 구성합니다. -- 이름: `Primary` -- 프로젝트: 잠그지 _않으려는_ 프로젝트 -- 플러그인 ID: `basic.*` -- 디스크립터: `sgtk:descriptor:app_store?name=tk-config-basic` - -**유용한 정보** - -- 프로젝트의 디스크립터 필드에서 버전 번호를 생략했습니다. 따라서 프로젝트가 최신 기초 구성 릴리즈를 추적하게 됩니다. - -### 잠긴 사이트 안전하게 업그레이드 - -- 시나리오: 현재 v1.0.0으로 잠근 상태인데 v2.0.0으로 업그레이드하려고 합니다. 하지만 스튜디오로 배포하기 전에 먼저 새 버전을 테스트하려고 합니다.* - -**솔루션** - -- {% include product %}에서 파이프라인 구성 엔티티를 마우스 오른쪽 버튼으로 클릭하고 "선택 항목 복제(Duplicate Selected)"를 선택하여 복제합니다. -- 복제한 구성 이름을 "update test"로 지정하고 자신을 사용자 제한(User Restrictions) 필드에 할당합니다. -- 이제 이 파이프라인 구성을 사용하기 시작합니다. -- 테스트할 버전을 가리키도록 디스크립터를 변경합니다. -- 테스트에 참여하게 하려는 모든 사용자를 사용자 제한(User Restrictions) 필드에 추가하면 초대할 수 있습니다. -- 테스트에 만족한 경우 기본 파이프라인 구성이 해당 버전을 사용하도록 업데이트하기만 하면 됩니다. -- 사용자가 데스크톱 또는 DCC를 다시 시작하면 해당 업데이트가 선택됩니다. - -## 파이프라인 구성 가져오기 - -구성을 전혀 설정하지 않고 기본 {% include product %} 통합 항목을 즉시 가져올 수 있습니다. 이 문서에서는 이러한 기본 제공 통합에서 수행 가능한 관리 작업 유형에 대해 설명합니다. 이 기본 설정은 {% include product %}의 툴킷 플랫폼을 기반으로 하기 때문에 훨씬 더 다양한 커스터마이즈를 지원합니다. 데스크톱의 툴킷 프로젝트 설정 마법사가 프로젝트에서 커스터마이즈 가능한 파이프라인 구성을 완벽하게 생성하는 프로세스를 안내합니다. - -아래의 각 섹션에서는 설정 방법을 잘 모르는 사용자를 위해 적절한 기본값에 대한 예시 및 제안 사항과 함께 마법사의 각 단계를 자세히 설명합니다. - -#### 데스크톱에서 설정 마법사 시작 - -![](images/Integration-admin-guide/advanced_setup.png) - -프로젝트로 이동하면 데스크톱 오른쪽 아래 사용자 메뉴에 "고급 프로젝트 설정...(Advanced Project Setup...)" 메뉴 항목이 있습니다. 이 메뉴 항목을 클릭하여 툴킷 설정 마법사를 시작합니다. - -#### 구성 유형 선택 - -![](images/Integration-admin-guide/wizard_select.png) - -새 프로젝트 구성을 시작할 때 가장 먼저 결정해야 할 사항은 _사용할 구성 템플릿_ 입니다. 구성 템플릿은 기본적으로 프로젝트를 실행하는 데 필요한 모든 설정, 파일 시스템 템플릿, 앱 및 로직이 포함된 완전한 프로젝트 구성입니다. - -- 프로젝트를 처음 사용하는 경우 {% include product %} 기본값으로 시작하는 것이 좋습니다. -- 이전 프로젝트에서 이미 프로젝트 및 구성을 구성한 경험이 있는 경우 기존 프로젝트를 기반으로 새 프로젝트를 만들면 이러한 항목을 쉽게 다시 사용할 수 있습니다. -- 고급 워크플로우의 경우 외부 구성이나 git 리포지토리에 저장된 구성을 사용할 수 있습니다. - -#### 기본 구성 템플릿 - -![](images/Integration-admin-guide/wizard_config_default.png) - -처음부터 시작하려는 경우 가야 할 곳입니다. 기본 구성에는 기본 파일 구조 및 파일 명명 규칙으로 설정된 모든 최신 앱과 엔진이 포함되어 있습니다. - -기본 구성을 설치하면 구성 파일을 수동으로 변경하고 파이프라인의 특정 요구 사항에 맞게 커스터마이즈할 수 있습니다. 프로젝트를 실행한 후에는 이 구성을 기반으로 다음 프로젝트를 진행할 수 있습니다. - -##### 기본 구성 - -기본 툴킷 VFX 구성이며 일반적으로 설정을 시작할 때 유용한 시작점이 됩니다. 기본 구성은 3dsmax, Flame, Houdini, Nuke, Mari, Maya, Motionbuilder 및 Photoshop 설정과 함께 제공되며 단순하고 간편한 디스크 폴더 설정이 포함됩니다. - -구성에는 다음과 같은 다양한 항목이 포함됩니다. - -- 파일 시스템 설정 -- 디스크의 주요 위치를 식별하기 위한 일련의 템플릿 -- 워크플로우에 함께 연결되어 있는 미리 구성된 일련의 엔진 및 앱 - -**파일 시스템 개요** - -표준 구성은 {% include product %}에서 에셋 및 샷을 처리합니다. 표준 구성은 파이프라인을 단계별로 나눕니다. 파이프라인 단계는 부서와 유사합니다. 각 파이프라인 단계에는 지원되는 다양한 응용프로그램에 대한 작업 및 게시 영역이 포함됩니다. 샷 구조는 다음과 같은 형태입니다. - -![](images/Integration-admin-guide/folder_structure.png) - -**응용프로그램 및 워크플로우** - -구성에는 다음과 같은 구성 요소가 포함됩니다. - -- Maya, Mari, Nuke, 3dsmax, Flame, Houdini, Photoshop 및 Motionbuilder 지원 -- {% include product %} 응용프로그램 시작 관리자 -- 게시, 스냅샷 만들기 및 버전 제어 -- Nuke 커스텀 Write Node -- {% include product %} 통합 -- 기타 수많은 도구 및 유틸리티 - -위에 나온 앱 외에도 구성을 설치하면 추가 앱과 엔진을 쉽게 설치할 수 있습니다. - -#### 기존 프로젝트를 기반으로 새 프로젝트 만들기 - -![](images/Integration-admin-guide/wizard_project_config.png) - -이전 프로젝트에서 사용했던 모든 기본값과 설정으로 새 프로젝트를 실행할 수 있는 빠르고 간편한 방법입니다. 툴킷에서 이전 설정의 모든 구성을 새 프로젝트로 간단하게 복사합니다. 이는 구성을 발전시키는 간단하고 실용적인 방법입니다(각각의 새 프로젝트는 기존 프로젝트를 기반으로 함). - -파이프라인 구성을 발전시키고 유지하는 방법에 대한 자세한 내용과 문서는 다음을 참조하십시오. - -[프로젝트 구성 관리](https://developer.shotgridsoftware.com/ko/60762324/#inheriting-the-config-from-your-previous-project) - -#### git의 구성 템플릿 사용 - -![](images/Integration-admin-guide/wizard_git.png) - -소스 제어에 연결된 프로젝트 구성을 유지하려는 경우 이 옵션을 사용합니다. 원격 git 또는 github 리포지토리에 대한 URL을 지정하면 설정 프로세스가 이를 복제합니다. 이는 단지 github뿐만 아니라 모든 git 리포지토리에서도 작동합니다. 리포지토리 경로가 `.git`으로 끝나기만 하면 툴킷이 이를 git 설정으로 처리하려고 시도합니다. 프로젝트 구성은 git 리포지토리이기 때문에 마스터 리포지토리를 변경하고 해당 변경 사항을 푸시할 수 있으며 이후 다른 프로젝트에서도 가능합니다. github 기반 구성을 사용하면 여러 툴킷 프로젝트를 지속적으로 동기화할 수 있습니다. 다음에서 자세한 내용을 확인할 수 있습니다. - -[프로젝트 구성 관리](https://developer.shotgridsoftware.com/ko/60762324/#a-studio-configuration-in-git-source-control) - -Windows에서 실행 중인 경우 컴퓨터에 git를 설치하고 `PATH`에서 액세스할 수 있어야 합니다. Linux 및 Mac OS X에서는 기본적으로 설치되어 있습니다. - -#### 구성 템플릿 찾아보기 - -![](images/Integration-admin-guide/wizard_browse.png) - -디스크에 구성이 있는 경우 이 옵션을 사용합니다(폴더로 또는 zip 파일로 압축). 이 옵션은 다른 사람이 이메일로 구성을 보냈거나 모든 프로젝트의 기반이 되는 마스터 구성을 디스크에 유지하는 경우 유용할 수 있습니다. 이는 일반적으로 전문가 옵션이며 다른 프로젝트의 구성을 사용하거나 앱 스토어 기본 구성 중 하나를 사용하는 것이 좋습니다. - -#### 저장소 설정 - -각 툴킷 프로젝트는 모든 파일 및 데이터를 디스크에 있는 하나 이상의 공유 저장소 위치에 씁니다. 예를 들어, 구성에서 텍스처를 유지할 저장소 하나, 렌더를 유지할 저장소 하나 그리고 씬 파일을 저장할 저장소 하나를 요구할 수도 있습니다. 일반적으로 이러한 저장소는 {% include product %} 사이트 기본 설정의 파일 관리(_File Management_) 탭에서 제어됩니다. - -툴킷 설정 마법사는 구성에 필요한 각 저장소 루트를 {% include product %}의 로컬 저장소에 매핑하도록 요청합니다. - -![](images/Integration-admin-guide/wizard_storage.png) - -필수 루트는 설명(구성의 `roots.yml` 파일에 정의된 대로)과 함께 왼쪽에 나열됩니다. 오른쪽에는 기존 {% include product %} 로컬 저장소 목록이 나열됩니다. 필수 루트마다 저장소를 선택하고 현재 OS의 경로가 {% include product %}에 없는 경우 해당 경로를 입력해야 합니다. - -또한 정의되지 않은 다른 운영 체제에 대한 경로를 추가할 수 있습니다. 기존 경로는 잘못해서 해당 저장소 경로를 사용하는 다른 프로젝트에 영향을 주지 않도록 잠겨 있습니다. 마법사의 매핑 페이지를 통해 각 필수 루트를 매핑했으며 각 매핑이 유효한지 확인합니다. - -저장소 선택 목록 끝에 있는 `+New` 항목을 선택하여 마법사에서 새 로컬 저장소를 만들 수도 있습니다. 현재 OS의 로컬 저장소 이름과 경로를 묻는 메시지가 나타납니다. - -프로젝트가 설정되면 툴킷에서 각 저장소 위치에 각 새 프로젝트에 대한 폴더를 생성합니다. 예를 들어, 기본 저장소 위치가 `/mnt/projects`인 경우 _The Edwardian Cry_ 라는 프로젝트는 `/mnt/projects/the_edwardian_cry`에 생성됩니다. 그리고 구성에서 기본 저장소 외에 더 많은 저장소를 사용하는 경우 각 저장소는 `the_edwardian_cry` 폴더에 생성됩니다. - -기본 저장소 위치는 일반적으로 `/mnt/projects` 또는 `\\studio\projects`와 유사한 형태이며 보통 이미 프로젝트 데이터를 프로젝트별로 그룹 지정하여 저장하고 있는 위치입니다. 이 위치는 거의 항상 공유 네트워크 저장소입니다. - -#### 프로젝트 폴더 이름 선택 - -![](images/Integration-admin-guide/wizard_project_name.png) - -이제 프로젝트의 디스크 이름을 선택할 시간입니다. 이 폴더는 구성에서 필요로 하는 서로 다른 모든 저장소에 생성됩니다. 저장소는 UI에서 빠르게 미리 볼 수 있습니다. 대부분의 구성은 기본 저장소만 미리 볼 수 있지만 다중 루트 구성을 사용 중인 경우 추가 저장소도 표시됩니다. 툴킷은 {% include product %}에서의 이름을 기반으로 기본 프로젝트 이름을 제안하지만, 각자의 설정에 맞게 원하는 대로 이름을 바꿀 수 있습니다. - -#### 구성 위치 선택 - -![](images/Integration-admin-guide/wizard_config.png) - -마지막으로 디스크에서 구성 파일을 저장할 위치를 결정하십시오. 툴킷은 이전 프로젝트를 기반으로 위치를 제안하기 때문에 모든 구성 파일은 동일한 디스크 위치에 저장됩니다. - -일반적으로 구성은 공유 저장소 또는 디스크에 있으므로 스튜디오에서 이를 필요로 하는 모든 사용자가 액세스할 수 있습니다. 이 프로젝트에서 둘 이상의 운영 체제 사용을 계획 중인 경우 필요한 모든 경로를 입력해야 합니다. 모든 경로는 동일한 디스크 위치를 나타내야 합니다. 종종 Mac OS X과 Linux에서는 경로가 같을 수 있지만 Windows에서는 다릅니다. - -이번이 첫 번째 프로젝트라면 대개의 경우 향후 모든 파이프라인 구성을 저장할 디스크의 공유 영역을 확인해야 할 것입니다. 일반적으로 이 위치는 스튜디오 전체에서 공유하는 소프트웨어 또는 소프트웨어 설정을 저장하는 위치입니다. 형식은 `/mnt/software/shotgun`과 비슷할 수 있으며, 스튜디오 네트워크 및 파일 명명 규칙에 따라 다를 수 있습니다. - -첫 번째 구성을 설정할 때는 스튜디오에서 사용하는 모든 플랫폼에 대한 경로로 설정합니다. 이렇게 하면 나중에 모든 컴퓨터에서 액세스할 수 있는 환경을 쉽게 생성할 수 있습니다. 예를 들면, 프로젝트 이름이 _Golden Circle_ 인 경우 다음 세 경로를 입력할 수 있습니다. -``` -linux: /mnt/software/shotgun/golden_circle -macosx: /servers/production/software/shotgun/golden_circle -windows: \\prod\software\shotgun\golden_circle -``` - -#### 구성을 완료하면 어떤 작업을 수행할 수 있습니까? - -첫 번째 구성을 완료 및 실행했으면 '다음 단계' 문서로 이동하여 스튜디오 요구 사항에 더 잘 맞게 툴킷을 구성 및 조정하는 방법에 대해 알아보십시오. - -[첫 번째 프로젝트 실행 이후 작업](https://developer.shotgridsoftware.com/ko/c3b662a6/) - -## 고급 기능 - -### 자동 설치 - -Windows 네트워크를 사용하는 경우 "/S" 인자를 사용하여 .exe {% include product %} 데스크톱 설치 프로그램이 자동 설치를 수행하도록 할 수 있습니다. 그런 다음 실행 파일 단축키 사본을 시작 폴더로 푸시하면 됩니다. 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 deleted file mode 100644 index 6aac068f7..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -layout: default -title: 오프라인 사용 및 자동 업데이트 끄기 -pagename: turn-off-auto-updates-and-offline -lang: ko ---- - -# 오프라인 사용 및 자동 업데이트 끄기 - -- [자동 업데이트](#auto-updates) - - [자동 업데이트되는 부분](#what-parts-auto-update) - - [자동으로 업데이트되지 않는 부분](#what-doesnt-auto-update) -- [오프라인으로 통합 실행](#running-the-integrations-offline) - - [초기 설정](#initial-setup) - - [업데이트 관리](#managing-updates) -- [자동 업데이트 끄기](#turning-off-auto-updates) - - [프로젝트 또는 사이트 수준에서 업데이트 끄기](#turning-off-updates-at-a-project-or-site-level) - - [한 프로젝트만 제외하고 모든 프로젝트에 대한 업데이트 끄기](#turning-off-updates-for-all-but-one-project) - - [업그레이드](#upgrading) - -## 자동 업데이트 -### 자동 업데이트되는 부분 - -기본적으로 {% include product %} 데스크톱은 업데이트를 자동으로 확인하고, 업데이트가 있을 경우 로컬 컴퓨터에 설치합니다. - -다음 두 구성요소에 대한 업데이트를 확인합니다. - -- `tk-framework-desktopstartup` - {% include product %} 데스크톱 시작을 지원하는 프레임 작업입니다. -- `tk-config-basic` - 기본 사이트 구성입니다. - -구성은 {% include product %} 데스크톱에서 사용해야 하는 앱, 엔진, 프레임워크 및 코어 버전의 매니페스트 역할을 합니다. -구성을 업데이트해야 이러한 구성요소도 업데이트할 수 있게 됩니다. -업데이트가 검색되면 다운로드되어 {% include product %} 데스크톱에 설치된 원래 파일을 수정하지 않고 사용자의 로컬 캐시에 저장됩니다. - -응용프로그램인 {% include product %} Create는 {% include product %} 데스크톱과는 별개의 자체 업데이트 메커니즘을 보유하고 있습니다(여기서는 다루지 않음). -그러나 {% include product %} Create에서 제공되는 통합 기능은 유사한 방식으로 작동하며 `tk-config-basic`도 동일한 사용자 캐시로 자동 업데이트됩니다. - -### 자동으로 업데이트되지 않는 부분 - -- 사이트 구성을 인계받은 경우 `tk-config-basic`에 새로운 업데이트가 있는지 확인하지 않고 그 아래 단위에서만 [추가 사항](#turning-off-updates-at-a-project-or-site-level)을 확인합니다. - -- 기본 사이트 구성을 사용하지 않는 프로젝트(예: 툴킷 고급 설정 마법사를 실행한 프로젝트)에서는 해당 구성이 자동 업데이트되지 않습니다. - -- {% include product %} 데스크톱과 함께 번들로 제공되는 Python 및 QT와 같은 리소스는 자동 업데이트되지 않습니다. - 이러한 부분을 업데이트해야 할 경우에는 새 {% include product %} 데스크톱 설치 프로그램을 릴리즈해야 합니다. - -## 오프라인으로 통합 실행 - -### 초기 설정 - -스튜디오에서 인터넷 액세스를 제한했거나 인터넷에 액세스할 수 없는 경우 필요한 모든 부분이 로컬로 캐시되어야 합니다. -{% include product %} Create 또는 {% include product %} 데스크톱을 다운로드하려면 인터넷에 연결할 수 있는 컴퓨터가 한 대 있어야 합니다. - -{% include product %} 데스크톱에는 기본 통합을 실행하는 데 필요한 모든 종속 요소가 미리 패키징되어 있습니다. -또한 {% include product %} Create는 종속 요소와 함께 번들로 제공되지만 [업데이트 관리](#managing-updates)에 설명된 단계도 따라야 합니다. - -둘 중 하나를 시작하면 자동으로 업그레이드를 검색합니다. {% include product %} 앱 스토어에 연결할 수 없는 경우에는 로컬에 있는 가장 최신 버전을 실행합니다. - -설치 프로그램과 함께 번들로 제공되는 구성요소가 최신 버전이 아닐 수도 있으므로 {% include product %} 데스크톱을 설치한 후에는 [업데이트 관리](#managing-updates) 단계를 따르는 것이 좋습니다. - -{% include info title="참고" content="네트워크 설정에 따라서는 업데이트를 액세스할 수 없더라도 온라인에서 업데이트를 찾는 것이 이따금씩 중단될 수 있습니다. -이 경우 `SHOTGUN_DISABLE_APPSTORE_ACCESS` 환경 변수를 `\"1\"`로 설정하여 검색을 중지할 수 있습니다." %} - -{% include info title="참고" content="ShotGrid 사이트에는 계속 연결할 수 있어야 합니다. 오프라인은 앱 스토어에 연결하여 업데이트를 다운로드할 수 없는 것을 말합니다." %} - -### 업데이트 관리 - -`tk-framework-desktopstartup` 구성요소를 업데이트하려면 [최신 버전을 다운로드](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases)하고 디스크의 해당 위치를 가리키도록 `SGTK_DESKTOP_STARTUP_LOCATION` 환경 변수를 설정해야 합니다({% include product %} 데스크톱에만 적용됨). - -`tk-config-basic` 구성요소의 경우 모든 종속성으로 인해 약간 더 까다로워집니다. - -1. 인터넷에 연결된 워크스테이션에서 {% include product %} 데스크톱 또는 {% include product %} Create를 실행합니다. 시작할 때 최신 업그레이드가 자동으로 다운로드됩니다. - (이 컴퓨터에 `SHOTGUN_DISABLE_APPSTORE_ACCESS` 항목이 설정되어 있지 않은 것을 확인하십시오.) -2. 번들 캐시를 모든 컴퓨터가 액세스할 수 있는 공유 위치에 복사합니다. -3. 오프라인 컴퓨터에서 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 환경 변수가 이 위치를 가리키도록 설정합니다. -4. 오프라인 컴퓨터에서 {% include product %} 데스크톱 또는 {% include product %} Create를 시작하면 오프라인 컴퓨터가 번들 캐시에 있는 최신 업그레이드를 선택합니다. - -{% include info title="경고" content="네트워크 설정에 따라서는 업데이트를 액세스할 수 없더라도 온라인에서 업데이트를 찾는 것이 이따금씩 중단될 수 있습니다. -이 경우 `SHOTGUN_DISABLE_APPSTORE_ACCESS` 환경 변수를 `\"1\"`로 설정하여 검색을 중지할 수 있습니다." %} - -## 자동 업데이트 끄기 - -### 프로젝트 또는 사이트 수준에서 업데이트 끄기 - -{% include info title="참고" content="가능하면 자동 업데이트를 계속 허용하여 새로운 기능 및 버그 수정에 대한 업데이트가 누락되지 않도록 하는 것이 좋습니다." %} - -통합에 대한 자동 업데이트를 끄려면 다음 단계를 수행하십시오. - -1. 유지할 버전을 결정합니다. 통합 릴리즈는 [여기](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)에서 찾을 수 있습니다. -2. {% include product %}의 프로젝트 또는 전역 페이지에서 파이프라인 구성 엔티티를 만들고 다음 필드를 입력합니다(이 예에서는 v1.0.36의 통합을 사용하도록 구성을 잠금). - - 1. 이름: `Primary` - 2. 프로젝트: 모든 프로젝트에 대해 업데이트를 끄려면 비어 있는 상태로 두고, 단일 프로젝트에 대해서만 잠그려면 특정 프로젝트를 선택합니다. - 3. 플러그인 ID: `basic.*` - 4. 디스크립터: `sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - - ![업데이트가 꺼진 프로젝트에 대한 설정이 포함된 파이프라인 구성 엔티티.](images/offline-and-disabled-auto-updates/freeze-all-projects.jpg) -3. {% include product %} 데스크톱을 시작합니다. 프로젝트 필드를 비워 둔 경우에는 {% include product %} 데스크톱이 이 버전을 사용하도록 전환됩니다(아직 사용하지 않은 경우). - - ![{% include product %} 데스크톱 정보](images/offline-and-disabled-auto-updates/shotgun-desktop-about.png) - - 프로젝트를 설정한 경우 해당 프로젝트만 영향을 받으며 {% include product %} 데스크톱 정보 창에 변경 사항이 표시되지 않습니다. -4. [선택 사항] `tk-framework-desktopstartup` 버전을 잠그려면 [최신 버전을 다운로드](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases)하고 디스크의 해당 위치를 가리키도록 `SGTK_DESKTOP_STARTUP_LOCATION` 환경 변수를 설정해야 합니다({% include product %} 데스크톱에만 적용됨). - -대부분의 기능은 이전 단계에서 잠글 수 있는 구성에 의해 제어되지만 "자동 업데이트되는 부분" 섹션에서 설명한 대로 구성요소도 업데이트되며 구성과 별도로 처리됩니다. 이 또한 {% include product %} 데스크톱에만 적용됩니다. - -#### 유용한 정보 - -- 구성의 릴리즈를 수동으로 다운로드할 필요가 없으며, {% include product %} 데스크톱은 이 구성이 실행되거나 프로젝트를 시작할 때 이 문제를 처리합니다. -- `basic.*`은 기초 구성에 있는 모든 플러그인이 이 재정의를 선택하게 됨을 의미합니다. 예를 들어 Nuke 및 Maya 통합만 중지하려는 경우 `basic.maya`, `basic.nuke`를 지정하면 됩니다. -- 테스트하려면 이 파이프라인 구성 엔티티를 복제한 다음 `User Restrictions` 필드에 사용자 이름을 추가하면 됩니다. 이렇게 하면 엔티티를 제한하게 되는데, 사용자에게만 적용되고 다른 사용자에게는 영향을 주지 않습니다. 그런 다음 이 복제 구성에서 Maya 또는 다른 소프트웨어를 시작하여 예상 통합 버전을 실행 중인지 확인할 수 있습니다. -- 프로젝트 필드를 비워 두면 사이트 구성을 사용하는 것입니다. {% include product %} 데스크톱은 프로젝트 외부에서 작동하므로 사이트 구성을 사용합니다. {% include product %} 데스크톱에서 프로젝트를 선택하면 프로젝트 구성도 로드됩니다. - -- Flame 통합의 네임스페이스는 `basic.flame`으로 지정되기 때문에 `basic.*`의 일부로 생각될 수 있습니다. - 그러나 실제로 Flame 통합은 기초 구성에 포함되지 않습니다. 따라서 프로젝트에 Flame을 사용 중이고 이 재정의를 구현하는 경우 Flame 통합의 작동이 중지됩니다. - 이 솔루션은 특히 Flame에 있어 추가 파이프라인 구성 재정의를 생성하게 됩니다. - - 이름: `Primary` - - 프로젝트: 잠그려는 프로젝트(또는 모든 프로젝트에 대해 "없음(None)") - - 플러그인 ID: `basic.flame` - - 디스크립터: `sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### 하나만 제외하고 모든 프로젝트에 대한 업데이트 끄기 - -위의 예에서 설명한 대로 모든 프로젝트에 대한 업데이트를 껐지만 특정 프로젝트에 대해 업데이트를 사용하려는 경우 다음을 수행할 수 있습니다. - -1. 위 섹션에서 설명한 대로 사이트에 대한 업데이트를 끕니다. -2. 예외 프로젝트의 파이프라인 구성 엔티티가 다음 필드 값을 갖도록 구성합니다. - - 이름: `Primary` - - 프로젝트: 잠그지 않으려는 프로젝트 - - 플러그인 ID: `basic.*` - - 디스크립터: `sgtk:descriptor:app_store?name=tk-config-basic` - ![두 개의 파이프라인 구성. 하나는 전체 사이트에 대한 업데이트를 끄는 것이고 다른 하나는 단일 프로젝트에 대한 업데이트를 활성화하는 것입니다.](images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg) - 디스크립터 필드에서 생략한 버전 번호로 이제 프로젝트는 기본 구성의 최신 릴리즈를 추적합니다. - -### 업그레이드 - -구성을 업데이트하게 되면 모든 사용자에게 롤아웃하기 전에 최신 버전을 테스트할 수 있습니다. - -1. {% include product %}에서 파이프라인 구성 엔티티를 마우스 오른쪽 버튼으로 클릭하고 **"선택 항목 복제(Duplicate Selected)"**를 선택하여 복제합니다. -2. 복제한 구성 이름을 "update test"로 지정하고 자신을 사용자 제한(User Restrictions) 필드에 할당합니다. -3. 이제 이 파이프라인 구성을 사용하기 시작합니다. -4. 테스트할 버전을 가리키도록 디스크립터를 변경합니다. -4. 테스트에 참여하게 하려는 모든 사용자를 `User Restrictions` 필드에 추가하면 초대할 수 있습니다. -5. 테스트에 만족한 경우 기본 파이프라인 구성이 해당 버전을 사용하도록 업데이트하기만 하면 됩니다. -6. 사용자가 {% include product %} 데스크톱을 다시 시작하고 {% include product %} 통합이 실행 중인 상태에서 현재 열려 있는 소프트웨어를 다시 시작하면 업데이트가 선택됩니다. diff --git a/docs/ko/guides/pipeline-integrations/administration/other-integrations.md b/docs/ko/guides/pipeline-integrations/administration/other-integrations.md deleted file mode 100644 index 45e2543bd..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/other-integrations.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: 기타 통합 -pagename: other-integrations -lang: ko ---- - -# 기타 통합 - -{% include product %} API를 사용하면 많은 타사 패키지를 통합할 수 있는데 즉각적으로 {% include product %}와 통합할 수 있는 패키지도 몇 가지 있습니다. - -## Cinesync - -Cinesync를 사용하면 여러 위치 사이를 동시에 동기화하여 재생할 수 있습니다. {% include product %} 통합을 통해 버전 재생 목록을 만들고, 이를 Cinesync에서 재생하고, 세션 중에 작성한 노트를 {% include product %}로 바로 보낼 수 있습니다. - -자세한 정보는 [http://www.cinesync.com/manual/latest](http://www.cinesync.com/manual/latest/)를 참조하십시오. - -## Deadline - -{% include product %}+Deadline 통합을 사용하면 썸네일, 프레임 링크 및 기타 메타데이터가 모두 포함된 렌더링된 버전을 {% include product %}에 자동으로 제출할 수 있습니다. - -자세한 내용은 [https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html](https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html)을 참조하십시오. - -## Rush - -Deadline 통합과 마찬가지로, {% include product %}+Rush 통합을 사용하면 썸네일, 프레임 링크 및 기타 메타데이터가 모두 포함된 렌더링된 버전을 {% include product %}에 자동으로 제출할 수 있습니다. - -자세한 정보는 [http://seriss.com/rush-current/index.html](http://seriss.com/rush-current/index.html)을 참조하십시오. - -## Subversion(SVN) - -{% include product %}는 저희가 내부에서도 사용하고 있는 가볍지만 유연한 통합으로, 이를 사용하여 리비전 내역을 트래킹하고, {% include product %}에 있는 티켓 및 릴리즈에 링크할 수 있습니다. 또한 외부 웹 SVN 리포지토리 뷰어를 통합하기 위한 Trac 링크도 제공합니다. 커밋에서 몇몇 ENV 변수를 가져온 다음 {% include product %}에서 여러 필드가 입력되어 있는 리비전 엔티티를 생성하는 {% include product %} API 스크립트인 SVN에 포스트 커밋(post-commit) 후크만 추가하면 모든 작업이 이루어집니다. SVN은 스튜디오 요구 사항에 맞게 수정할 수 있으며 API만 사용하기 때문에 로컬 또는 호스팅되는 설치에 사용할 수 있습니다. 자세한 정보는 [https://subversion.apache.org/docs](https://subversion.apache.org/docs/)를 참조하십시오. diff --git a/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md deleted file mode 100644 index 310e857bc..000000000 --- a/docs/ko/guides/pipeline-integrations/administration/toolkit-overview.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -layout: default -title: 툴킷 개요 -pagename: toolkit-overview -lang: ko ---- - -# 툴킷 개요 - -![](https://sg-toolkit.s3.amazonaws.com/tank/docs/docs/10/no_version_0330_043251/icon_256.png) - -# {% include product %} Pipeline Toolkit의 다양한 개념에 대한 개요입니다. - -여기에서는 앱 및 엔진의 작동 방식, 툴킷의 시작 방법 및 현재 컨텍스트(작업 영역) 관리, 디스크에서 폴더를 만드는 방법 등의 주요 개념에 대해 자세히 설명합니다. 구성 또는 개발에 관련된 사람은 여기에서 시작하는 것이 좋습니다. - -_이 문서에서는 툴킷 구성에 대한 제어 권한을 갖고 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 내용은 [{% include product %} 통합 관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오._ - -# 소개 - -이 문서에서는 몇 가지 핵심 기능에 대해 자세히 설명합니다. 설명, 예제 및 간단한 데모를 통해 툴킷에 대한 모든 것을 보여 줍니다. 이 문서는 툴킷을 익히거나 툴킷을 통해 스튜디오의 가치를 높일 수 있는 방법을 알고 싶은 경우에 좋은 시작점입니다. 이 문서를 읽고 나면 주요 개념과 실제로 어떻게 작동하는지 이해할 수 있게 됩니다. - -![](images/toolkit-overview/overview.png) - -아래는 툴킷(SGTK)에 대한 간단한 설명입니다. - -- 툴킷은 {% include product %} 플랫폼 기반의 _파이프라인 툴킷_ 입니다. 이 툴킷을 사용하면 스튜디오용 도구를 쉽게 작성하고 설치할 수 있습니다. -- 툴킷은 파일 시스템을 기반으로 합니다. 디스크에서 항목의 저장 위치를 정리하여 디스크에 있는 항목을 깔끔하게 구성할 수 있습니다. -- 툴킷은 보조적인 역할을 합니다. 파이프라인에서 데이터를 인수하거나 추상화하지는 않지만, 아티스트에게 정보를 쉽게 찾고 오류를 방지할 수 있는 강력한 도구를 제공합니다. -- 툴킷을 통해 {% include product %}에 모든 게시를 저장하여 작업을 공유할 수 있습니다. 툴킷을 사용하면 프로덕션 전반에 걸쳐 발생하는 업데이트 및 작업을 쉽게 공유할 수 있습니다. - -다음 섹션에서는 툴킷과 그 작동 방식을 자세히 살펴보겠습니다. - -# 프로젝트 및 구성 - -툴킷에서는 모든 항목이 프로젝트 중심입니다. 일반적으로 프로젝트는 {% include product %} 내부에서 수명 주기를 시작하고 입찰 및 사전 프로덕션 단계를 거쳐 컨텐츠 생성 단계에 대해 준비되면 툴킷을 해당 프로젝트에 맞게 설정할 수 있습니다. - -![](images/toolkit-overview/new_project.png) - -새 프로젝트를 설정할 때 _템플릿 구성_ 을 사용합니다. 이는 엔진 및 앱, 파일 시스템 구성, 기타 설정이 포함된 사전 정의된 구성입니다. 툴킷으로 시작하는 경우 예제 구성을 탐색의 시작점으로 사용할 수 있습니다. 다른 프로젝트에서 툴킷을 사용하고 있는 경우, 해당 구성을 새 프로젝트의 시작점으로 사용하는 것이 좋습니다. 그렇게 하면 스튜디오 구성을 개선시켜 각각의 새로운 프로젝트에 맞게 조정할 수 있습니다. 물론 스튜디오 구성을 개별적으로 유지 관리하고 이를 모든 새 프로젝트의 템플릿으로 사용할 수도 있습니다. - -각 구성은 여러 _저장 지점_ 을 정의합니다. 표준 샘플 구성인 `tk-config-default`의 경우 _기본_ 이라는 단일 저장소 지점을 정의합니다. 즉, 모든 프로덕션 데이터가 단일 파일 시스템 프로젝트 루트 아래에 있음을 의미합니다. 두 개 이상의 파일 시스템 루트를 사용하여 구성을 설정할 수도 있습니다. 이를 _다중 루트 구성_ 이라고 합니다. 다중 루트 구성이 필요한 경우에는 렌더링과 편집을 위해 별도의 저장소가 있어야 할 경우 등이 있습니다. 이러한 저장 지점은 각각 {% include product %}의 _로컬 파일 저장소_ 여야 하며 사이트 기본 설정(Site Preferences)의 _파일 관리_ (File Management) 탭 아래에서 설정할 수 있습니다. - -툴킷은 원하는 위치에 실제 프로젝트 구성을 설치합니다. 일반적으로 프로젝트 데이터 영역 자체가 아니라 디스크의 _소프트웨어 설치_ 영역으로 이동됩니다. - -## 스튜디오 구성 개선 - -새 프로젝트를 설정할 때 기존 프로젝트를 기반으로 시작할 수 있습니다. 툴킷은 해당 프로젝트의 구성 폴더를 새 프로젝트로 복사합니다. 즉, 새 프로젝트는 기반이 되는 프로젝트와 동일한 버전의 앱과 엔진, 동일한 설정 및 동일한 커스터마이제이션을 가져옵니다. 이 기능은 _파이프라인을 개선_ 시키고 기존 프로덕션의 개선 및 조정 사항을 활용하려는 경우 유용할 수 있습니다. - -또는 해당 프로젝트 설정에 만족하는 경우 프로젝트의 구성 폴더를 가져와서 중앙 위치에 저장할 수 있습니다. 그러면 이 구성을 스튜디오 템플릿으로 사용할 수 있으며 새 프로젝트를 만들 때마다 이 구성을 기반으로 설정할 수 있습니다. 원하는 경우, git 또는 이와 유사한 리비전 제어 시스템을 사용하여 이 스튜디오 템플릿 구성을 소스 제어할 수도 있으며, 파이프라인 구성 템플릿이 시간이 지남에 따라 어떻게 개선되는지를 간단하고 투명하게 트래킹할 수 있습니다. 업데이트할 때마다 프로젝트 중 하나에서 구성을 복사하고 변경 사항을 커밋합니다. - -구성 관리에 대한 자세한 정보는 다음 상세 문서를 확인하십시오. - -[프로젝트 구성 관리.](https://developer.shotgridsoftware.com/ko/60762324/) - -## 각 프로젝트의 파이프라인 구성 - -프로젝트에 대한 툴킷을 설정할 때마다 파이프라인 구성이 만들어집니다. 이 구성에는 프로젝트에 필요한 모든 설정과 파일이 포함됩니다. 구성에는 프로젝트를 직접 지정하려는 경우 셸에서 실행할 수 있는 전용 `tank` 명령이 있습니다(모든 프로젝트에서 작동하는 전역 tank 명령도 있음). {% include product %}에서는 프로젝트 구성이 디스크에 상주하는 위치를 쉽게 트래킹할 수 있도록 파이프라인 구성이 특수 파이프라인 구성 엔티티로 등록되었습니다. - -프로젝트가 설정될 때 생성되는 마스터 구성 외에도 프로젝트에 대한 추가 구성을 만들 수 있습니다. 이 기능은 프로젝트의 다른 사람들에게 영향을 주지 않고 구성을 변경하려는 경우에 유용합니다. 이 작업을 수행하려면 {% include product %}의 파이프라인 구성으로 이동하고 이를 마우스 오른쪽 버튼으로 클릭하여 복제하도록 선택할 수 있습니다. 이렇게 하면 다른 프로젝트를 기반으로 한 프로젝트의 새로운 파이프라인 구성이 만들어지며 새로운 구성을 사용하여 다른 사용자에게 영향을 주지 않고 새로운 앱을 안전하게 테스트할 수 있습니다. - -프로젝트의 기본 구성의 이름을 `Primary`로 지정해야 합니다. 이름을 바꾸거나 수정하거나 삭제하면 예상대로 작동하지 않을 수 있습니다. {% include product %}에 저장된 파이프라인 구성은 수동이 아니라 다양한 `tank` 관리 명령을 통해 조작되도록 고안되었습니다. - -예시: - -[구성을 복제하는 방법](https://developer.shotgridsoftware.com/ko/60762324/#cloning-your-configuration) - -## 업데이트 확인 - -다른 App Store와 마찬가지로, 툴킷 App Store는 앱과 엔진을 위한 새로운 버전을 지속적으로 제공합니다. 이러한 새 버전에는 중요한 버그 수정이나 흥미로운 새 기능이 포함될 수 있습니다. 앱과 엔진을 업그레이드하는 것은 전적으로 선택 사항입니다. 일반적으로 빠른 프로세스이며 업그레이드 스크립트는 변경하기 전에 항상 메시지를 표시합니다. 마찬가지로, 실수로 설치한 버전이 만족스럽지 않은 경우 간단히 롤백할 수 있습니다. - -단일 명령으로 업그레이드 프로세스를 처리합니다. 프로젝트 구성 폴더에 있는 `tank` 명령을 실행하고 `updates` 매개변수를 추가하기만 하면 됩니다. - -```shell -/software/shotgun/bug_buck_bunny/tank updates -``` - -매개변수 없이 이 명령을 실행하면 모든 환경, 엔진 및 앱이 검사되므로 이 작업에는 시간이 오래 걸릴 수 있지만 설치된 앱 및 엔진의 하위 세트에 대해 업데이트 프로그램을 실행할 수도 있습니다. - -일반 구문: - -```shell -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` -- 모든 위치에서 Loader 앱이 최신 버전인지 확인: `tank updates ALL ALL tk-multi-loader` -- Maya에서 Loader 앱이 최신 버전인지 확인: `tank updates ALL tk-maya tk-multi-loader` - -이 스크립트는 App Store를 확인하는 것 외에도 등록된 다른 위치를 모두 확인하므로 앱을 배포한 위치에 따라 로컬 git, Github 리포지토리, 디스크의 파일 및 App Store를 쿼리할 수 있습니다. - -새 버전의 앱이 앱 구성을 변경할 수 있습니다. 예를 들어 새 기능에 새로운 구성 매개변수가 필요할 수 있습니다. 이 경우 `tank` 업그레이드 스크립트는 이러한 매개변수의 값을 입력하라는 메시지를 표시합니다. - -## Core API에 대한 업데이트 확인 - -Toolkit Core API의 새 버전이 릴리즈될 때가 있습니다. Core API를 업데이트하는 데는 별도의 명령이 사용됩니다. 이 경우 명령은 `tank core`입니다. - -# 디스크에 폴더 만들기 - -프로젝트에 툴킷이 설정되면 이를 사용하여 일관된 폴더 구조를 만들 수 있습니다. 이 폴더 구조는 디스크에 있는 파이프라인 구성의 일부로 파일 시스템 템플릿을 작성하여 구성됩니다. 이 폴더 구조에서 일부 경로는 동적입니다. 예를 들어 {% include product %} 에셋을 나타내는 `asset`이라는 폴더가 있을 수 있습니다. 이러한 동적 폴더는 {% include product %} 쿼리 및 기타 여러 항목에 연결할 수 있습니다. - -![](images/toolkit-overview/folder_creation.png) - -툴킷은 다양한 설정과 시나리오를 처리하는 다양한 동적 폴더 유형을 제공합니다. 폴더 생성을 설정할 때 표준 {% include product %} API 쿼리 구문을 사용할 수 있습니다. 따라서 파일 시스템을 구성하여 자산 유형이 다른 에셋이 파일 시스템의 다른 폴더에 저장되도록 할 수 있습니다. - -이러한 작업 방법에 대한 자세한 정보는 관리자 안내서를 참조하십시오. - -[{% include product %} Pipeline Toolkit 관리](https://developer.shotgridsoftware.com/ko/425b1da4/) - -툴킷 폴더 생성은 두 가지 패스로 진행됩니다. 즉, 언제든지 다른 사람이 실행할 수 있는 직접 패스와 일반적으로 응용프로그램 시작 직전에 아티스트가 실행하는 유예 패스입니다. 이 유예 패스는 완전히 자동으로 이루어지며 응용프로그램별 폴더 및 사용자 샌드박스를 설정하는 데 사용할 수 있습니다. - -# 현재 컨텍스트 - -파일 시스템 구조가 만들어지면 툴킷은 디스크상의 폴더와 폴더를 가져온 {% include product %} 객체 사이의 관계를 인식합니다. 이는 경로를 게시, 로드 또는 확인할 때 툴킷이 {% include product %}의 객체를 폴더, 디스크 또는 파일과 쉽게 연관시킬 수 있기 때문에 중요합니다. 또한 _컨텍스트_ 또는 _현재 작업 영역_ 과도 연관됩니다. 컨텍스트 객체는 Toolkit Core의 일부이며 작업 중인 현재 항목을 트래킹합니다. 이는 툴킷이 파일 시스템 경로를 확인할 때의 중앙 메커니즘입니다. - -![](images/toolkit-overview/context.png) - -컨텍스트는 태스크, 에셋 또는 샷과 같은 {% include product %} 객체 또는 디스크의 경로에서 만들 수 있습니다. 앱이 실행 중일 때 항상 컨텍스트에 액세스할 수 있으므로 파일 시스템 명명 규칙이나 앱이 에셋 또는 샷 파이프라인에서 사용되는지 여부를 몰라도 앱을 쉽게 만들 수 있습니다. 이러한 사항은 모두 Toolkit Core API와 컨텍스트에 의해 처리됩니다. - -# 파일 시스템 템플릿 - -Toolkit Core에는 파일 경로를 처리하는 시스템이 있습니다. 이를 _템플릿 시스템_ 이라고 합니다. 툴킷은 파일 시스템 기반이므로, 앱에서 디스크의 데이터를 읽거나 쓸 필요가 있을 때마다 파일 경로를 확인해야 합니다. 앱은 파일 시스템 구조로부터 독립적입니다. 즉, 파일 시스템이 어떻게 구성되어 있는지 모릅니다. 이러한 사항은 템플릿 시스템에서 처리합니다. - -템플릿 시스템의 핵심에는 _템플릿 구성 파일_ 이 있습니다. 이 파일에는 프로젝트의 중요한 파일 시스템 위치가 모두 들어 있습니다. _템플릿_ 의 모양은 다음과 같습니다. - -```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' -``` - -특정 동적 필드를 포함하는 경로를 정의합니다. 각 필드는 유효성 확인 및 입력을 통해 구성될 수 있습니다. 예를 들어 위 템플릿의 `{version}` 필드를 3개의 0으로 채워진 정수(예: `001`, `012`, `132`)로 정의할 수 있습니다. 앱이 디스크에서 쓰거나 읽을 필요가 있을 때마다 해당 위치를 설명하기 위해 템플릿 파일에 템플릿이 추가됩니다. 앱은 종종 파이프라인을 형성하도록 설정되기 때문에 한 앱(예: 게시 앱)의 출력 템플릿은 종종 다른 앱(예: 로딩 앱)의 입력 템플릿이 됩니다. 이것이 모든 파일 시스템 위치가 단일 파일에 보관되는 이유입니다. - -템플릿 API를 사용하면 경로와 필드 값 목록 사이를 이동할 수 있습니다. - -```python -# get a template object from the API ->>> template_obj = sgtk.templates["maya_shot_publish"] - - -# we can use the template object to turn a path into a set of fields... ->>> path = '/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' ->>> fields = template_obj.get_fields(path) - -{'Shot': '001_002', - 'Step': 'comp', - 'name': 'main_scene', - 'version': 3} - -# alternatively, we can take a fields dictionary and make a path ->>> template_obj.apply_fields(fields) -'/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' -``` - -위의 경로와 템플릿에는 두 가지 유형의 필드가 있음에 유의하십시오. `Shot` 및 `Step` 필드는 {% include product %}에서 동일한 오브젝트(샷 및 파이프라인 단계)를 가진 상위 수준 필드이며 여기서 `name` 및 `version` 필드는 이 특정 유형의 템플릿에 대해 매우 구체적입니다. 샷이 아닌 에셋의 게시 경로를 설명하려면 `name`과 `version` 필드가 있어야 합니다. 이는 데이터 유형에 상관없이 모든 게시에 필요하기 때문입니다. 그러나 `Shot` 및 `Step` 필드는 없습니다. 대신 `Asset`과 `Step` 필드가 있을 수 있습니다. Asset 필드는 {% include product %}의 에셋과 연결됩니다. - -게시를 수행하는 앱을 개발하는 경우 샷 게시 앱과 에셋 게시 앱을 별도로 개발하는 것보다 단일 게시 앱에서 시퀀스, 샷, 에셋 중 무엇인지와 상관없이 모든 항목에 대한 게시 시나리오를 처리하는 것이 좋습니다. - -![](images/toolkit-overview/templates.png) - -이를 위해 _툴킷 컨텍스트_ 가 개입됩니다. 툴킷 컨텍스트를 사용하면 템플릿 필드를 두 개의 개별 그룹으로 나눌 수 있습니다. 컨텍스트 필드(`Shot`, `Step`, `Asset` 등)는 앱 로직이 샷 및 에셋과 같은 개념을 특별히 처리하는 코드를 가질 필요가 없도록 앱 밖에서 확인되는 필드입니다. 대신 앱은 앱의 특정 _비즈니스 로직_ 과 직접 연관된 필드에 정보를 입력해야 합니다. Publish 앱의 이 예에서는 비즈니스 로직이 `name` 및 `version` 필드로 구성됩니다. 위의 그림에서 알 수 있듯이 툴킷은 필드 확인을 두 개의 진행단계로 나눕니다. 일부 필드는 컨텍스트에 의해 입력되고 일부 필드는 앱 내부의 비즈니스 로직에 의해 입력됩니다. 이렇게 하면 특정 파일 시스템 레이아웃에 연결되지 않은 앱을 설계할 수 있습니다. 이는 좋은 파이프라인 도구를 만드는 중요한 요소입니다. - -경로 확인을 처리하는 앱 코드는 일반적으로 다음과 같습니다. - -```python -# start with an empty fields dictionary -fields = {} - -# first let the context populate all its fields -fields.update( self.context.as_template_fields( publish_template_obj ) ) -# fields is now {'Shot': '001_002', 'Step': 'comp' } - -# now the app can add its business logic -fields["name"] = "main_scene" -fields["version"] = 234 - -# and finally the app can produce the path it needs in -# order to save out the file -path = publish_template_obj.apply_fields(fields) -``` -템플릿 API를 구성하고 사용하는 방법에 대한 자세한 정보는 다음을 참조하십시오. - -[파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) - -[Core API 참조](https://developer.shotgridsoftware.com/tk-core/core.html#) - -# 실행할 엔진 및 앱 선택 - -Toolkit Core의 또 다른 중요한 역할은 _사용자에게 어떤 앱을 제공할지_ 결정하는 것입니다. 캐릭터 리깅 작업을 하고 Maya를 시작하는 경우 한 샷에 집중할 때보다 다른 앱 컬렉션을 원할 것입니다. 또한 앱 작동 방법에 따라 앱을 다르게 구성할 수 있습니다. 즉, 리깅을 위한 리뷰 앱은 턴테이블을 생성하고 동일한 리뷰 앱을 애니메이터가 실행할 경우 해당 앱이 샷 카메라를 사용하여 playblast를 만들 수 있습니다. - -이러한 유연성을 고려하여 툴킷 프로젝트 구성에는 여러 _환경_ 컬렉션이 포함되어 있습니다. 환경은 앱 및 엔진 컬렉션과 모든 구성 매개변수를 정의하는 구성 파일입니다. - -툴킷이 시작되면 _어떤_ 환경을 초기화할지 결정해야 합니다. 이 과정은 고유한 비즈니스 로직을 추가할 수 있는 Python 코드 조각, 즉 _후크_ 를 통해 수행됩니다. _컨텍스트_ 객체가 이 코드 조각으로 전달되며 이는 종종 사용할 환경을 결정하는 데 사용됩니다. - -![](images/toolkit-overview/environment.png) - -이렇게 하면 파이프라인의 다른 부분에 대해 별도의 앱 컬렉션을 구성할 수 있습니다. 또한 이들을 독립적으로 업데이트할 수 있으며 각기 다른 감독이 별도로 관리할 수도 있습니다. - -## 기본 구성의 환경 - -환경의 작동 방법과 구조에 대한 실질적 예제를 제공하기 위해 기본 구성과 함께 제공되는 환경을 살펴보겠습니다. - -- `project.yml` - 컨텍스트에 프로젝트만 포함된 경우 실행할 앱 및 엔진 -- `shot_and_asset.yml` - 컨텍스트에 샷 또는 에셋이 포함된 경우 실행할 앱 및 엔진 -- `shot_step.yml` - 컨텍스트에 샷 및 파이프라인 단계가 포함된 경우 실행할 앱 및 엔진 -- `asset_step.yml` - 컨텍스트에 에셋 및 파이프라인 단계가 포함된 경우 실행할 앱 및 엔진 - -기본 구성은 파이프라인 단계를 기반으로 해당 파일 시스템을 구성했습니다. 즉, 샷 위치에서 Modeling, Rigging 등의 폴더를 찾을 수 있습니다. 기본적으로 작업 중인 각 파이프라인 단계마다 하나의 폴더가 있습니다. 디스크의 이러한 각 폴더에는 자체 작업 및 게시 영역이 있습니다. 게시 템플릿은 다음과 같이 표시될 수 있습니다. - -```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' -``` - -이 템플릿을 사용하려면 컨텍스트에 엔티티와 파이프라인 단계가 모두 포함되어야 합니다. 시퀀스 `ABC`의 하위인 샷 `1122`와 파이프라인 단계 `Modeling`의 경우 위의 템플릿은 `sequences/ABC/1122/Modeling/...`로 해석됩니다. 즉, 샷은 있지만 파이프라인 단계는 포함하지 않은 컨텍스트는 위의 템플릿을 채우기에 충분하지 않습니다. 샷만 있는 컨텍스트에서 위의 템플릿을 사용하여 Maya를 시작할 수는 없습니다. 작동시키기 위해서는 단계를 수행해야 합니다. - -그 결과 위와 같이 환경이 분할됩니다. 기본 구성에 정의된 파일 시스템 구조는 단계를 중심으로 하므로 모든 기본 앱은 단계가 정의된 컨텍스트에서 실행해야 합니다. 이러한 두 환경은 기본 구성인 `asset_step.yml` 파일과 `shot_step.yml` 파일에서 정의합니다. 이러한 각 파일에는 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는 대신 _Workfiles_ 앱만 포함하는 기본 구성으로 시작됩니다. 이 앱을 사용하면 작업할 태스크를 선택할 수 있습니다. 일단 태스크를 선택하면 툴킷이 컨텍스트를 전환하고 엔진을 다시 시작하며 모든 범위의 앱으로 `shot_step` 환경을 로드합니다. - -마찬가지로, `project` 환경은 다목적 폴백이며 _Workfiles_ 앱만 포함합니다. 이렇게 하면 프로젝트 내부의 거의 모든 곳에서 Maya를 시작할 수 있으며 툴킷이 최소 상태로 초기화되므로 _Workfiles_ 앱을 사용하여 유효한 작업 영역으로 바로 이동할 수 있습니다. - -# 앱 구성 - -각 앱에는 지정해야 하는 여러 구성 매개변수가 있습니다. 앱을 설치하거나 업그레이드할 때 툴킷은 필요한 모든 설정을 지정했는지 확인합니다. - -문자열 또는 정수 등의 간단한 설정 값은 환경 구성에서 직접 지정됩니다. 템플릿은 서로 다르고 툴킷에서는 모든 템플릿을 한 곳에 보관하려고 하므로 환경 파일은 템플릿 파일에 정의된 템플릿을 가리키기만 하면 됩니다. 각 앱은 해당 구성에서 사용하는 템플릿에 각기 다른 필드가 있어야 합니다. 앞의 예제의 Publish 앱에서는 디스크에 출력 파일을 만들 때 `name` 및 `version` 필드가 있는 템플릿을 사용했습니다. 따라서 이 앱에는 `name` 및 `version` 필드가 포함된 템플릿을 요구하는 구성 설정이 필요합니다. - -![](images/toolkit-overview/app_config.png) - -컨텍스트 필드(`name` 및 `version`) 외의 필드가 있는 템플릿을 사용하여 앱을 구성하려는 경우 앱이 이러한 추가 필드를 채우는 방법을 모르기 때문에 해당 템플릿에서 경로를 생성할 수 없습니다. 마찬가지로, 필드 중 하나가 누락된 템플릿을 제공한 경우 혼란스러운 결과가 발생할 수 있습니다. 이 경우 앱에서 버전 번호가 작성되지 않습니다. 따라서 툴킷은 시작할 때 구성을 확인하여 모든 템플릿에 필요한 필드가 제공되었는지 확인합니다. 또한 툴킷은 기본값과 선택적 필드를 사용하는 몇 가지 방법을 지원합니다. - -전체 참조를 보려면 다음 링크를 확인하십시오. - -[앱 및 엔진 구성 참조](https://developer.shotgridsoftware.com/ko/162eaa4b/) - -[파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) - -## 후크 - -툴킷은 템플릿을 사용하는 앱 설정 외에도 _후크_ 라는 개념을 지원합니다. 후크는 Python 코드의 작은 조각이므로 구성의 일부로 앱 일부를 커스터마이즈할 수 있습니다. - -다음은 작동 방식과 유용성에 대한 설명입니다. - -앱은 여러 엔진과 프로젝트에서 재사용할 수 있기 때문에 강력합니다. 그러나 앱에 작은 조각의 일부 엔진별 로직이 필요할 수 있습니다. 예를 들어 Nuke와 Maya에서 모두 작동하는 Loader 앱을 빌드하는 경우 _실제 파일 로드_ 를 처리하는 코드가 있어야 합니다. 이 코드는 Nuke 및 Maya에서 달라야 합니다. 모든 엔진과 함께 이 앱을 사용할 수 있다면 더욱 좋을 것입니다. 또한 스튜디오마다 씬에 항목을 로드하는 방법이 다를 수 있습니다. 어떤 스튜디오에서는 커스텀 Maya 참조 노드를 지원해야 하고 어떤 스튜디오에서는 가져오기만 수행할 수도 있습니다. - -이 상황은 툴킷에서 _후크_ 를 사용하여 처리됩니다. 후크는 커스터마이즈 가능한 코드 조각입니다. 앱은 기본 레벨의 구현을 포함하는 기본 후크와 함께 제공됩니다. 즉, 앱은 즉시 사용이 가능합니다. 그러나 동작을 커스터마이즈하려는 경우 해당 후크 파일을 구성에 복사하면 툴킷이 해당 코드를 대신 사용합니다. - -[관리자 안내서에서 후크 작업 방법에 대해 읽기.](https://developer.shotgridsoftware.com/ko/425b1da4/#hooks) - -# {% include product %} 및 셸에서 실행 - -툴킷이 설치되면 몇 가지 기본 진입점에서 액세스할 수 있습니다. - -- {% include product %} 액션은 {% include product %}의 마우스 오른쪽 버튼 클릭 메뉴에 나타납니다. -- 시작 아이콘은 {% include product %} 데스크톱 앱의 프로젝트에 대해 나타납니다. -- 콘솔에서 `tank` 명령을 사용할 수 있습니다. -- 툴킷 Python API는 응용프로그램과 셸 모두에서 사용할 수 있습니다. - -일반적으로 응용프로그램을 시작하고 태스크를 수행하려면 {% include product %}에서 툴킷을 실행합니다. {% include product %}는 {% include product %} 데스크톱을 사용하여 컴퓨터에서 로컬 툴킷 설치와 통신하고 로컬 Python을 사용하여 툴킷 명령을 실행합니다. 즉, {% include product %} 내부에서 바로 폴더 생성과 같은 로컬 작업을 실행할 수 있습니다. - -셸에서 툴킷에 액세스할 수도 있습니다. 각 프로젝트 구성은 자체 `tank` 명령과 함께 제공됩니다. 프로젝트 구성 루트로 이동하여 `./tank` 명령을 실행하기만 하면 됩니다. - -마지막으로 `PYTHONPATH` 환경 변수에 툴킷 API를 추가하고 가져올 수 있습니다. API 사용은 간단합니다. 예를 들어 Maya 내부에서 툴킷을 수동으로 시작하거나, {% include product %} 데스크톱을 사용하지 않고 기존 스튜디오 시작 시스템의 일부로 시작하려면 몇 가지 간단한 명령을 실행하기만 하면 됩니다. - -# 게시 - -다른 사람들과 작업 중인 파일을 공유하려면 해당 파일을 게시하면 됩니다. 이는 다른 사용자가 툴킷의 Loader 앱을 사용하여 가져올 수 있는 `PublishedFile` 엔티티가 {% include product %}에서 생성된다는 의미입니다. - -![](images/toolkit-overview/dependencies.png) - -데이터 관리 측면에서 이러한 의미에 대한 자세한 내용(디스크 항목이 저장된 위치, 파일에 포함된 내용 등)은 실제 작업을 수행하는 앱에 따라 달라집니다. 툴킷 API는 개발자가 {% include product %} 내부에 쉽게 게시를 생성하고 이러한 게시를 올바른 객체에 링크할 수 있도록 함으로써 {% include product %}이 모든 올바른 작업자에게 알림을 전달할 수 있도록 합니다. 다용도로 구성할 수 있는 기본 Publish 앱도 제공하지만 이 앱이 툴킷을 사용하여 버전 제어를 구현하는 유일한 방법은 아닙니다. 툴킷은 확장 가능하므로 원하는 경우 툴킷을 사용하여 자체 커스텀 버전 제어 및 게시 시스템을 빌드할 수 있습니다. - -그러나 시작점으로 아래 Publish 앱을 권장합니다. - -[기본 다중 Publish 앱.](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -# 재사용 가능한 앱 빌드 - -툴킷은 단순히 앱 및 엔진의 컬렉션이 아닙니다. 자체 도구 및 기술을 개발하는 데 사용할 수 있는 프레임워크이기도 합니다. 툴킷에는 유용한 스튜디오 개발 플랫폼으로 사용할 수 있도록 많은 기능이 포함되었습니다. 스스로 기본 파이프라인을 빌드하는 대신 툴킷을 기반으로 당면한 문제에 집중할 수 있습니다. 개발자는 아티스트의 파이프라인에 영향을 주지 않고 소프트웨어를 빌드, 평가 및 릴리즈할 수 있습니다. - -- 엔진을 사용하면 기본 기반에 관계없이 Python 및 Qt(PySide/PySide2)로 앱을 작성할 수 있습니다. 이는 일부 엔진은 매우 간단하지만 일부 엔진은 제공된 API에 따라 더 복잡하다는 의미입니다. 즉, 간단하고 일관된 방법으로 스튜디오용 도구를 개발할 수 있습니다. 경험에 따르면 Python과 Qt는 개발 환경 스튜디오에서 사용되는 경우가 많으며 많은 TD가 이에 익숙합니다. -- 엔진 레이어는 또한 앱을 한 번 작성한 다음 여러 환경에 배포할 수 있음을 의미합니다. 당사는 표준 앱 제품군을 _다중 앱_ 으로 개발했습니다. 이는 동일한 앱이 모든 엔진에서 사용된다는 것을 의미합니다. 특정 코드는 반드시 각 DCC 응용프로그램이 노출하는 특정 API로 작업하도록 작성되어야 하지만 일반적으로 하나 이상의 후크에 포함되어 있기 때문에 앱을 쉽게 재활용할 수 있습니다. 이와 같은 다중 앱을 만들 수 있기 때문에 생기는 또 다른 결과는 새로운 엔진이 개발될 때 모든 표준 앱이 새로운 엔진과 작동하도록 쉽게 구성할 수 있다는 것입니다. -- 파이프라인 구성 및 복제를 통해 개발 샌드박스를 쉽게 만들 수 있기 때문에 개발자는 일상적인 프로덕션 액티비티를 방해하지 않고 프로덕션에서 작업을 수행할 수 있습니다. 도구를 배포할 준비가 되면 기본 프로젝트 구성을 쉽게 업데이트하고 도구를 모든 아티스트에게 롤아웃할 수 있습니다. -- 앱은 엔진 내부에서 실행되므로 쉽게 다시 로드할 수 있습니다. 새 코드 변경을 테스트할 때마다 Nuke 또는 Maya를 다시 시작하지 않고 툴킷에서 다시 로드 버튼을 누르기만 하면 최신 코드가 로드됩니다. - -앱 개발에 대한 더 자세한 소개는 다음 문서를 참조하십시오. - -[툴킷 앱 개발 소개.](https://developer.shotgridsoftware.com/ko/2e5ed7bb/) - -[툴킷 API 참조](https://developer.shotgridsoftware.com/tk-core/) - -[앱 및 엔진 구성 참조](https://developer.shotgridsoftware.com/ko/162eaa4b/) diff --git a/docs/ko/guides/pipeline-integrations/development.md b/docs/ko/guides/pipeline-integrations/development.md deleted file mode 100644 index c7a041ad7..000000000 --- a/docs/ko/guides/pipeline-integrations/development.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 개발 -pagename: toolkit-development -lang: ko ---- - -# 개발 - -## 툴킷은 무엇일까요? - -툴킷은 파이프라인 통합의 토대가 되는 플랫폼입니다. -예를 들어 Maya에서 {% include product %} Panel 앱을 사용하거나 {% include product %} Create에서 Publish 앱을 실행하는 경우 툴킷 플랫폼을 기반으로 하는 도구를 사용하게 됩니다. - -## 툴킷을 사용하여 개발하려면 어떻게 해야 합니까? - -툴킷을 사용하여 개발하는 방법에는 여러 가지가 있습니다. - -- 후크라고 하는 커스텀 코드를 작성하여 기존 앱, 엔진 또는 프레임워크 동작을 확장할 수 있습니다. -- 자체 앱, 엔진 또는 프레임워크를 작성할 수 있습니다. -- 또는 API를 사용하는 독립 실행형 스크립트를 작성할 수 있습니다. - -이러한 작업을 수행하려면 툴킷 API를 사용하는 방법을 이해하는 것이 중요합니다. - -{% include product %}에는 전체적으로 세 가지 주요 API가 있습니다. -- [{% include product %} Python API](https://developer.shotgridsoftware.com/python-api) -- [{% include product %} REST API](https://developer.shotgridsoftware.com/rest-api/) -- [{% include product %} 툴킷 API](https://developer.shotgridsoftware.com/tk-core) - -툴킷 API는 {% include product %} Python API 또는 REST API와 함께 사용하도록 설계된 Python API이며 대체용 API가 아닙니다. -툴킷 API에 몇 가지 래퍼 방식이 있지만 일반적으로 {% include product %} 사이트에서 데이터에 액세스해야 할 때는 {% include product %} Python API 또는 REST API를 사용합니다. - -대신 툴킷 API는 파일 경로의 통합 및 관리에 중점을 둡니다. -일부 툴킷 앱 및 프레임워크에는 [자체 API](../../reference/pipeline-integrations.md)도 있습니다. - -이 문서에서는 툴킷을 사용하여 개발하는 방법에 대해 설명합니다. \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/development/images/dev-configuration.png b/docs/ko/guides/pipeline-integrations/development/images/dev-configuration.png deleted file mode 100644 index e70c73ae9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/development/images/dev-configuration.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/development/images/develop.png b/docs/ko/guides/pipeline-integrations/development/images/develop.png deleted file mode 100644 index 2b31baef7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/development/images/develop.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/development/images/reload-restart.png b/docs/ko/guides/pipeline-integrations/development/images/reload-restart.png deleted file mode 100644 index 8b3dbf12a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/development/images/reload-restart.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/development/images/starter-app.png b/docs/ko/guides/pipeline-integrations/development/images/starter-app.png deleted file mode 100644 index b9293c8ae..000000000 Binary files a/docs/ko/guides/pipeline-integrations/development/images/starter-app.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png b/docs/ko/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png deleted file mode 100644 index f8b353863..000000000 Binary files a/docs/ko/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md deleted file mode 100644 index 321e797ae..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-app.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -layout: default -title: 앱 개발 -pagename: sgtk-developer-app -lang: ko ---- - -# 자체 앱 개발 - -## 소개 - -이 안내서에서는 툴킷 앱의 정의, 툴킷 앱을 제작하는 방법 및 앱 개발과 관련한 몇 가지 기본적인 사항에 대해 설명합니다. -{% include product %} Pipeline Toolkit은 {% include product %} 소프트웨어가 관리하는 앱과 엔진의 모음일 뿐 아니라 커스텀 파이프라인 도구를 빠르고 쉽게 빌드할 수 있게 해 주는 개발 플랫폼이기도 합니다! - -- [툴킷 앱이란?](#what-is-a-toolkit-app) -- [자체 앱 제작](#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) -4. [앱 개발](#part-4-developing-the-app) - - [템플릿 스타터 앱의 구조](#anatomy-of-the-template-starter-app) - - [구성 설정](#configuration-settings) - - [프레임워크](#frameworks) - - [변경 사항 다시 로드](#reloading-your-changes) -5. [테스트](#part-5-testing) -6. [첫 번째 릴리즈 준비](#part-6-preparing-your-first-release) - -추가 정보: -- [기존 앱 수정](#modifying-an-existing-app) - - [기여](#contributing) - -## 툴킷 앱이란? - -툴킷 앱은 다음과 같이 정의할 수 있습니다. - -- 일반적으로 최종 사용자가 {% include product %} 통합을 통해 실행하는 도구입니다. -- 앱은 대개 사용자가 앱의 작업을 안내할 수 있는 그래픽 사용자 인터페이스를 갖추고 있지만 필수 사항은 아닙니다. 또한 앱은 통합에 등록된 명령일 수 있습니다. 이러한 명령은 호스트 소프트웨어의 {% include product %} 메뉴에서 사용자가 실행할 수 있습니다. -- 다른 프로세스 또는 앱이 상호 작용할 수 있는 API/공용 방식을 가질 수 있습니다. -- 다중 플랫폼에 기반하며 소프트웨어에 구속받지 않습니다. -- 툴킷 앱은 [환경](https://developer.shotgridsoftware.com/487a9f2c/#what-is-an-environment)별로 다르게 구성할 수 있습니다. -- 컨텍스트를 인식할 수 있습니다. 예를 들어 앱은 사용자가 작업 중인 태스크를 인식하고 그에 따라 작업을 수행할 수 있습니다. -- 툴킷 엔진에서만 실행할 수 있습니다. - -툴킷 앱은 툴킷 엔진에 의해 초기화됩니다. [엔진](https://developer.shotgunsoftware.com/tk-core/platform.html#engines)은 특정 소프트웨어 환경에서 실행되도록 설계되었으며 툴킷 앱을 실행할 인터페이스를 제공합니다. 엔진은 앱에서 다양한 소프트웨어 환경을 처리하는 데 필요한 복잡성을 추상화합니다. -따라서 앱은 해당 목적을 이행하기 위한 기능을 제공하는 데만 중점을 두며 창 부모-자식 관리, 사용자의 컨텍스트 추적 또는 앱 시작 단축키 등의 기능을 처리할 필요가 없습니다. - -## 자체 앱 제작 -{% include product %} 소프트웨어를 통해 관리 및 릴리즈되는 모든 앱과 엔진은 오픈 소스로, [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를 가져올 수 있습니다. - -![툴킷 스타터 앱 기본 GUI](./images/starter-app.png) - -이 방식을 사용하려면 git 리포지토리를 포크(fork)한 다음 디스크의 로컬 dev 영역에 복제하거나, 이 단계에서 git 소스 제어를 사용하지 않으려면 GitHub에서 파일을 zip 파일로 다운로드하고 로컬에 압축을 풀면 됩니다(나중에 언제든지 git 리포지토리를 설정할 수 있음). -어느 방법을 사용하든 목표는 스타터 앱 코드의 로컬 사본을 만들어 수정할 수 있도록 하는 것입니다. - -## 3부: 구성에 앱 추가 -구성에 앱을 추가하는 방법에 대한 자세한 내용은 "[앱 추가](../getting-started/installing_app.md)" 안내서를 참조하십시오. - -앱을 구성에 추가할 때는 앱이 사용되는 위치(예: Nuke에서만 사용, 여러 다른 소프트웨어 또는 {% include product %} 데스크톱에서 독립 실행형으로 사용)를 고려해야 합니다. -또한 앱의 기반 컨텍스트도 고려해야 합니다. -예를 들어 사용자가 작업 중인 태스크에 대해 알고 있는 경우에만 앱을 실행하거나, 알려진 프로젝트에서만 실행할 수 있습니까? -이을 알면 그에 맞게 앱 설정을 추가해야 하는 환경 YAML 및 엔진을 지정합니다. - -확실하지 않을 경우에는 먼저 프로젝트 환경의 `tk-shell` 엔진에 추가해 두는 것이 좋습니다. -이 방법을 사용하면 [IDE에서 실행](./sgtk-developer-bootstrapping.md)하거나 [중앙 집중식 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)이 있는 경우에는 tank 명령을 사용하여 명령행을 통해 실행할 수 있습니다. 이렇게 하면 개발 속도가 빨라집니다. - -시작하려면 앱 위치에 대한 [dev 디스크립터](https://developer.shotgunsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)를 사용하십시오. - -```yaml -tk-multi-starterapp: - location: - type: dev - path: /path/to/source_code/tk-multi-starterapp -``` -이렇게 하면 코드를 변경하고 싶은 경우에는 언제든지, 툴킷이 개발에 용이한 지정된 위치의 디스크에서 직접 앱 코드를 로드합니다. -나중에 앱을 프로덕션 구성에 추가할 때는 다른 디스크립터를 사용할 수 있습니다. - -이제 앱을 환경에 추가했으니 앱을 실행할 수 있습니다. 실행하는 방법은 정의한 엔진 및 환경에 따라 다릅니다. - -## 4부: 앱 개발 - -이제 앱 개발을 시작할 준비가 되었습니다. - -### 템플릿 스타터 앱의 구조 - -[템플릿 스타터 앱](https://github.com/shotgunsoftware/tk-multi-starterapp)의 기본 구조는 다음과 같습니다. - -![](./images/tk-multi-starterapp-directory.png) - -- **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`로 저장해야 합니다. -- **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 -``` -이 설정을 지정하면 앱 코드에서 템플릿 이름을 하드 코딩할 필요가 없고 대신 `info.yml`에 기본적으로 정의되거나 환경 YAML 파일에서 재정의된 설정에서 [값을 가져올](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Application.get_setting) 수 있습니다. - -```python -template = app.get_setting("save_template") -``` -즉, 앱이 실행되는 환경에 따라 다른 템플릿을 사용하도록 앱을 구성할 수 있습니다. - -[참조 문서](https://developer.shotgunsoftware.com/tk-core/platform.html#the-configuration-section)에서 구성 설정에 대한 자세한 내용을 확인할 수 있습니다. - -### 프레임워크 - -앞으로 프레임워크를 사용할 것이라면 프레임워크를 매니페스트 파일에 추가할 수 있습니다. - -예를 들어 Qt Widgets 및 {% include product %} 유틸리티 프레임워크를 앱에 사용할 것이라면 다음을 `info.yml`에 추가하십시오. - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x"} -``` - -#### 최소한으로 필요한 프레임워크 버전 -최소한으로 필요한 프레임워크 버전이 있다면 minimum_version 설정을 `info.yml`에서 사용할 수 있습니다. - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x", "minimum_version": "v1.5.0"} -``` - -위 내용은 `tk-framework-qtwidgets`의 `v1.5.0`을 앱에 사용할 수 있도록 해줍니다. -그렇지 않으면 앱이 시작 시 로드되지 않고, 콘솔에 오류가 표시됩니다. -`tank updates`를 사용하여 앱을 업데이트하면 구성되어 있는 프레임워크 중 최소한으로 필요한 버전을 충족하지 않는 프레임워크는 자동으로 앱과 함께 업데이트됩니다. - -프레임워크와 그 유용성에 대한 자세한 정보는 다음 링크에서 확인하십시오. - -- [Qt Widgets 프레임워크](https://developer.shotgunsoftware.com/tk-framework-qtwidgets/) -- [{% include product %} utils 프레임워크](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/) - -### 변경 사항 다시 로드 - -Maya 등의 소프트웨어 내에서 앱을 테스트하는 경우, 구성에 하나 이상의 dev 항목을 추가한 즉시 툴킷에서 자동으로 {% include product %} 메뉴에 **다시 로드 및 다시 시작**(Reload and Restart) 옵션을 추가합니다. ![{% include product %} 메뉴 다시 로드 및 다시 시작 옵션.](/images/reload-restart.png) - -이 버튼을 클릭하면 구성 및 코드가 다시 로드되고 엔진이 다시 시작됩니다. -즉, Maya를 시작하고, 시도해 보려는 코드나 구성 변경을 적용할 때마다 **다시 로드 및 다시 시작**(Reload and Restart) 버튼을 누르기만 하면 변경 사항을 가져오는 과정을 빠르게 반복할 수 있습니다. - -{% include info title="참고" content="화면에 활성 상태인 UI가 있는 경우 이 UI는 자동으로 업데이트되지 않으며, 메뉴에서 해당 UI로 이동하여 다시 시작해야 합니다." %} - -## 5부: 테스트 -코드를 테스트하려면 다른 사용자들을 {% include product %}에서 `PipelineConfiguration` 엔티티의 `User Restrictions` 필드에 추가하여 dev 샌드박스로 초대하기만 하면 됩니다. -사용자를 추가하면 바로 {% include product %} Create 및 브라우저 액션 내의 메뉴에 새 항목이 표시되고, {% include product %} 데스크톱 내부에서 구성을 선택하는 옵션도 제공됩니다. - -![{% include product %} 데스크톱에서 선택 가능한 Dev 구성.](/images/dev-configuration.png) - -{% include info title="참고" content="사용자들에게도 앱 코드를 볼 수 있는 액세스 권한이 있어야 합니다. 그렇지 않으면 앱이 로드되지 않습니다." %} - -## 6부: 첫 번째 릴리즈 준비 - -[3부](#part-3---adding-the-app-to-your-config)에서는 dev 디스크립터를 사용하여 앱을 가리키도록 구성을 설정했습니다. -릴리즈한 소프트웨어의 경우 모든 사용자가 앱에 액세스할 수 있고 안전하고 쉽게 업그레이드할 수 있도록 버전이 지정되어야 할 것입니다. - -{% include product %}에서 제공하는 모든 앱은 툴킷 앱 스토어를 사용하여 업데이트 및 릴리즈를 트래킹합니다. 앱은 다음과 비슷한 형식의 위치 태그를 가집니다. - -```yaml -location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 -``` -이 태그를 통해 툴킷(예: `tank updates` 명령)은 업데이트가 제공될 때 이를 확인하여 매우 안전한 방식으로 구성을 업데이트 및 관리할 수 있습니다. -업데이트 명령이 실행되고 새 버전이 나올 때마다 툴킷은 코드를 다운로드하여, 디스크의 로컬 "번들 캐시"에 배치하고, 사용자가 여기에 액세스할 수 있도록 합니다. - -앱 릴리즈를 소싱하는 몇 가지 옵션이 있습니다. - -- [Git](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-tags-in-git) 및 [GitHub](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-releases-on-github) -- [{% include product %} 업로드](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) -- [로컬 경로](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk) - -프로덕션 구성에서 앱을 추가하고 필요에 맞는 디스크립터를 사용하도록 전환합니다. - -### Git 기반 디스크립터 - -git 디스크립터 사용 여부에 관계없이 소스 제어를 사용하여 변경 사항이 트래킹되게 하는 것이 좋습니다. - -툴킷은 기본적으로 git(http://git-scm.com/)을 지원하므로 구성에서 `tank updates`를 실행할 경우에도 앱 스토어 디스크립터와 마찬가지로 git 리포지토리에서 최신 릴리즈를 확인하고 구성을 업데이트할 수 있습니다. - -이에 대한 요구 사항은 다음과 같습니다. - -- git 리포지토리에는 단일 앱만 포함되어야 합니다. -- git 리포지토리는 [스타터 앱 리포지토리](https://github.com/shotgunsoftware/tk-multi-starterapp)와 동일한 구조를 가져야 합니다. -- 태그를 생성할 때는 [시맨틱(Semantic) 버전](https://semver.org/lang/ko/)을 사용해야 합니다. - 툴킷은 이 버전 번호를 사용하여 어느 버전이 최신인지 판단하고 `vX.Y.Z` 규칙을 따릅니다. - -git에 첫 번째 태그를 생성하고 나면(예: `v1.0.0`) 태그를 가리키는 git 디스크립터를 사용하도록 구성을 설정할 수 있습니다. -설정하고 나면 `tank updates`를 간단히 실행할 수 있고, 새 태그가 생성되었다면 업그레이드할지 묻는 메시지가 나타납니다. -이제 워크플로우는 공식 앱 스토어 앱의 경우와 동일합니다. - -{% include warning title="주의" content="git 디스크립터는 [중앙 집중식 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)에서 잘 작동합니다. 중앙 집중식 구성에서 앱 캐싱은 일반적으로 관리자(admin)가 실행하며 모든 사용자가 액세스할 수 있는 중앙 위치에 저장됩니다. 그러나 [분산 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#distributed-configurations)을 사용하는 경우에는 적합하지 않을 수 있습니다. 앱이 사용자별로 다운로드되므로 각 사용자가 리포지토리에서 인증받고 코드에 액세스하기 위해 git를 설치하고 설정해야 합니다." %} - -## 기존 앱 수정 -빈 스타터 템플릿으로 시작하는 것보다 기존 앱(예: {% include product %} 소프트웨어의 표준 앱 중 하나)에 작은 기능을 추가하는 것이 좋을 때도 있습니다. -수정된 버전의 앱으로 작업할 때에는 보통 소스 앱과 비교하여 차이점을 '트래킹'하면서 변경 사항이나 버그 픽스를 정기적으로 끌어오는 방식을 사용합니다. - -이러한 유형의 개발을 진행할 때에는 부모 코드를 픽업한 다음 일부 변경 사항을 적용하고, 이를 파이프라인에 릴리즈합니다. -릴리즈는 실질적으로 앱의 기본 버전과 여러분이 적용한 로컬 변경 사항으로 구성됩니다. -기존 버전 번호에 버전 접미사를 추가하는 것이 좋습니다. -이렇게 하면 툴킷과 매끄럽게 연동되고, 비교적 직관적인 방법입니다. -다음 워크플로우는 진행 방식을 보여 줍니다. - -- 부모 앱을 포크(fork)하고, 자체 리포지토리를 생성합니다. 포크(fork)를 통해 모든 git 태그를 가져옵니다. - 최신 태그는 `v0.2.12`이며, 마스터 분기는 기본적으로 이 태그의 컨텐츠와 동일하다고 가정해 보겠습니다. -- 변경 사항을 적용하고 마스터 분기로 커밋합니다. 이제 `v0.2.12` 및 변경 사항이 준비되었습니다. - 이를 프로덕션으로 릴리즈할 때 태그를 생성해야 합니다. 태그 이름을 `v0.2.12.1`로 지정하여 코드가 `v0.2.12`를 기반으로 하고 있으며, 이것이 첫 번째 릴리즈임을 나타냅니다. -- 누군가가 수정 사항에서 버그를 발견합니다. 버그를 수정하고, 태그를 지정한 다음 `v0.2.12.2`를 릴리즈합니다. -- 다수의 중요한 버그 픽스가 부모 리포지토리에 릴리즈되었습니다. - 이를 여러분의 리포지토리로 끌어옵니다. 이제 가장 최신 태그는 부모 리포지토리에서 이루어진 릴리즈로 인해 `v0.2.15`가 됩니다. - 변경 사항을 마스터와 병합하고, 테스트합니다. 이제 기본적으로 부모 앱 `v0.2.15`에 변경 사항이 병합됩니다. `v0.2.15.1`에 태그를 지정합니다. - -위에서 설명한 태그 지정 체계를 따르면 툴킷 업데이트가 올바로 작동하고, 포크(fork)의 각 태그가 어느 코드를 기반으로 하는지 쉽고 빠르게 확인할 수 있습니다. - -### 기여 -저희는 여러분들의 요청을 환영합니다. 다른 사람에게도 도움이 될 만한 변경 사항이 있다면 주저하지 말고 사용자 요청으로 알려 주십시오. -피드백을 앱의 메인 버전에 적용할 수도 있을 것입니다. -[로드맵 페이지](https://www.shotgunsoftware.com/roadmap/)에서 새 아이디어에 대한 제안을 추가해 주셔도 좋습니다. - -전체 앱을 커뮤니티와 공유하려면 [포럼](https://community.shotgunsoftware.com/)을 통해 알려 주십시오! diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md deleted file mode 100644 index 08829dfc8..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ /dev/null @@ -1,372 +0,0 @@ ---- -layout: default -title: 앱 부트스트랩 및 실행 -pagename: sgtk-developer-bootstrapping -lang: ko ---- - -# 앱 부트스트랩(Bootstrapping) 및 실행 - -이 안내서에서는 커스텀 코드를 실행하거나 앱을 시작할 수 있도록 툴킷 엔진을 초기화하는 과정을 안내합니다. 부트스트랩(Bootstrapping)이라고도 하는 과정입니다. - -부트스트랩(Bootstrapping)은 툴킷 엔진이 아직 시작되지 않고 API를 사용해야 하는 경우에 유용합니다. -예를 들어 렌더 팜에서 실행되는 처리 스크립트가 있을 수 있고 툴킷 API를 활용하여 경로 및 컨텍스트를 처리해야 할 수 있습니다. -또는 즐겨찾는 IDE에서 툴킷 앱을 실행할 수도 있습니다. - -{% include info title="참고" content="[분산 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#distributed-configurations)을 사용하는 경우 툴킷 엔진은 툴킷 API 방식을 실행하기 전에 초기화되어야 합니다. [중앙 집중식 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)을 사용하는 경우 엔진을 부트스트랩(Bootstrapping)하지 않고 [팩토리 방식](https://developer.shotgunsoftware.com/tk-core/initializing.html#factory-methods)을 사용하여 API를 사용할 수 있지만 `sgtk`를 가져올 때 프로젝트에 맞는 올바른 Core API의 경로를 수동으로 찾아야 합니다." %} - - -### 요구사항 - -- Python 프로그래밍 기본 사항에 대한 이해 -- 고급 구성을 사용하는 프로젝트. 구성을 설정하지 않은 경우 ["구성 시작하기"](../getting-started/advanced_config.md) 안내서를 참조하십시오. - -### 단계 - -1. [부트스트랩(Bootstrapping)을 위한 툴킷 API 가져오기](#part-1-importing-the-toolkit-api-for-bootstrapping) -2. [로깅](#part-2-logging) -3. [인증](#part-3-authentication) -4. [엔진 부트스트랩(Bootstrapping)](#part-4-bootstrapping-an-engine) -5. [앱 시작](#part-5-launching-an-app) -6. [전체 스크립트](#part-6-the-complete-script) - -## 1부: 부트스트랩(Bootstrapping)을 위한 툴킷 API 가져오기 - -### 어디에서 sgtk를 가져와야 합니까? - -["경로 생성 및 게시"](sgtk-developer-generating-path-and-publish.md) 안내서에 `sgtk` 가져오기 단계에 대해 나와 있습니다. -이 안내서에는 작업할 프로젝트 구성에서 `sgtk` 패키지를 가져와야 한다고 설명되어 있습니다. -맞는 설명이기는 하지만 부트스트랩(Bootstrapping)을 사용할 경우에는 툴킷 API가 다른 프로젝트 구성으로 부트스트랩 작업을 수행할 수 있으므로 어떤 초기 `sgtk` 패키지를 가져오는지는 중요하지 않습니다. -부트스트랩(Bootstrap) 프로세스는 현재 가져온 sgtk 패키지를 새 프로젝트 구성의 툴킷 API로 교체합니다. - -### 독립 실행형 Toolkit Core API 다운로드 - -시작하려면 [`tk-core`](https://github.com/shotgunsoftware/tk-core/tree/v0.18.172/python)에 있는 `sgtk` API 패키지를 가져와야 합니다. -기존 프로젝트에서 가져올 수도 있지만 이 방법은 좀더 까다로울 수 있습니다. -권장되는 방법은 순수하게 부트스트랩(Bootstrapping) 용도로 사용되는 [최신 Core API](https://github.com/shotgunsoftware/tk-core/releases)의 독립 실행형 사본을 다운로드하는 것입니다. -이 파일을 편리하게 가져올 수 있는 위치에 저장해야 합니다. -추가하는 경로가 `sgtk` 패키지가 위치하는 `tk-core` 폴더 내의 `python` 폴더를 가리키는지 확인하십시오. - -### 코드 - -```python -# If your sgtk package is not located in a location where Python will automatically look -# then add the path to sys.path. -import sys -sys.path.insert(0, "/path/to/tk-core/python") - -import sgtk -``` - -## 2부: 로깅 - -IDE 또는 셸을 통해 이 스크립트를 실행 중인 경우 대부분은 로깅을 활성화하여 출력되게 할 수 있습니다. -이렇게 하려면 [`LogManager().initialize_custom_handler()`](https://developer.shotgunsoftware.com/tk-core/utils.html#sgtk.log.LogManager.initialize_custom_handler)를 실행해야 합니다. -이 작업을 위해 커스텀 처리기를 제공할 필요는 없습니다. 커스텀 처리기를 제공하지 않으면 표준 스트림 기반의 로깅 처리기가 설정됩니다. - -필요한 경우 [`LogManager().global_debug = True`](https://developer.shotgunsoftware.com/tk-core/utils.html#sgtk.log.LogManager.global_debug)를 설정하여 보다 상세하게 출력을 표시할 수도 있습니다. -이렇게 설정하면 코드에서 `logger.debug()` 호출 시 출력이 수행됩니다. -로깅은 성능에 영향을 줄 수 있으므로 개발 시에만 디버그 로깅을 활성화하고 정상 작동 중에 가시성을 높이는 것이 중요한 영역에 대한 `logger.info()` 방식 호출의 양을 제한해야 합니다. - -```python -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True -``` - -## 3부: 인증 - -{% include product %} 툴킷이 이미 시작된 환경 외부에서 툴킷 API를 사용하는 스크립트를 실행하는 경우 항상 인증을 거쳐야 합니다. -따라서 부트스트랩(Bootstrapping)을 수행하려면 먼저 {% include product %} 사이트에서 툴킷 API를 인증받아야 합니다. - -사용자 자격 증명 또는 스크립트 자격 증명으로 인증받을 수 있습니다. - -- 앱 시작 또는 사용자 입력이 필요한 일부 코드를 실행하는 등 사용자 대상 프로세스를 부트스트랩(Bootstrapping)하는 것이 목적이라면 사용자 인증을 진행하는 것이 가장 좋습니다(모든 통합의 기본적인 작동 방식임). -- 스크립트를 작성하여 자동화하려고 할 때 사용자가 아직 인증되지 않은 경우 스크립트 자격 증명을 사용해야 합니다. - -인증은 [`{% include product %}Authenticator`](https://developer.shotgunsoftware.com/tk-core/authentication.html?highlight=shotgunauthenticator#sgtk.authentication.ShotgunAuthenticator) 클래스를 통해 처리됩니다. -다음은 사용자 인증과 스크립트 인증을 모두 보여 주는 예입니다. - -### 사용자 인증 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Optionally you can clear any previously cached sessions. This will force you to enter credentials each time. -authenticator.clear_default_user() - -# The user will be prompted for their username, -# password, and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating an `Sgtk` instance. -sgtk.set_authenticated_user(user) -``` - -### 스크립트 인증 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -## 4부: 엔진 부트스트랩(Bootstrapping) - -이제 세션을 위해 툴킷 API를 인증받았으므로 부트스트랩(Bootstrapping) 프로세스를 시작할 수 있습니다. -[참조 문서](https://developer.shotgunsoftware.com/tk-core/initializing.html#bootstrap-api)에서 부트스트랩(Bootstrap) API에 관한 많은 정보를 확인할 수 있습니다. - -부트스트랩(Bootstrapping) 프로세스는 기본적으로 다음과 같은 단계를 수행합니다. - -1. 툴킷 구성 폴더를 검색하거나 찾습니다. -2. 앱 및 엔진과 같은 구성 종속 요소가 [번들 캐시](../../../quick-answers/administering/where-is-my-cache.md#bundle-cache)에 있는지 확인합니다. - 구성 종속 요소가 없고 [`app_store`](https://developer.shotgunsoftware.com/tk-core/descriptor.html#the-shotgun-app-store) 또는 [`{% include product %}`](https://developer.shotgunsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun)과 같은 클라우드 기반 디스크립터를 사용하는 경우 번들 캐시에 이러한 디스크립터를 다운로드합니다. -3. 현재 로드된 Sgtk Core를 구성에 적합한 Sgtk Core로 교체합니다. -4. 엔진, 앱 및 프레임워크를 초기화합니다. - - -{% include info title="참고" content="일반적으로 부트스트랩(Bootstrapping)은 해당 엔진이 성공적으로 실행되기 위해 필요한 모든 사항을 처리합니다. -그러나 엔진이 부트스트랩(Bootstrapping) 프로세스를 벗어나는 설정 요구사항을 가지고 있다면 개별적으로 처리해야 할 수도 있습니다." %} - - -### 부트스트랩(Bootstrap) 준비 -부트스트랩(Bootstrap)하려면 먼저 [`ToolkitManager`](https://developer.shotgunsoftware.com/tk-core/initializing.html#toolkitmanager) 인스턴스를 작성해야 합니다. - -```python -mgr = sgtk.bootstrap.ToolkitManager() -``` - -툴킷을 부트스트랩(Bootstrapping)하려면 최소한 엔티티, 플러그인 ID 및 엔진에 대해 알아야 합니다. -이 안내서에서는 사용 가능한 모든 매개변수와 옵션 중 일부만을 설명합니다. 전체 내용은 [참조 문서](https://developer.shotgunsoftware.com/tk-core/initializing.html#bootstrap-api)에서 참조하십시오. - -#### 플러그인 ID - -부트스트랩(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.shotgunsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식에 직접 전달됩니다. 아래 [엔티티 섹션](#entity)의 예를 참조하십시오. - -#### 엔티티 -[`ToolkitManager.bootstrap_engine()`](https://developer.shotgunsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식 `entity` 매개변수는 시작한 엔진에 대해 [컨텍스트](https://developer.shotgunsoftware.com/tk-core/core.html#context) 및 [환경](https://developer.shotgunsoftware.com/tk-core/core.html?highlight=environment#module-pick_environment)을 설정하는 데 사용됩니다. -이 엔티티는 구성이 작동하도록 설정된 엔티티 유형 중 하나일 수 있습니다. -예를 들어 `Project` 엔티티를 제공하는 경우 엔진은 프로젝트 환경 설정을 사용하여 프로젝트 컨텍스트에서 시작됩니다. -마찬가지로, 태스크가 `Asset`에 링크되어 있는 `Task` 엔티티를 제공할 수 있으며, 이 엔티티는 `asset_step.yml` 환경을 사용하여 시작됩니다. -이는 기본 구성 동작을 기반으로 하며, [선택한 환경](https://developer.shotgridsoftware.com/ko/c73fcb84/#how-toolkit-determines-the-current-environment)은 코어 후크, [`pick_environment.py`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.11/core/hooks/pick_environment.py)를 통해 제어되므로 컨텍스트 또는 기타 매개변수를 기반으로 다른 환경을 선택하도록 변경할 수 있습니다. - -유형과 ID를 하나 이상 포함해야 하는 {% include product %} 엔티티 사전(dictionary) 형식으로 엔티티를 제공해야 합니다. - -```python -task = {"type": "Task", "id": 17264} -engine = mgr.bootstrap_engine("tk-shell", entity=task) -``` - -`Project` 외의 다른 엔티티 유형으로 부트스트랩(Bootstrapping)하는 경우 [경로 캐시](https://developer.shotgridsoftware.com/ko/cbbf99a4/)가 동기화되어 있는지 확인해야 할 수 있습니다. 그렇지 않으면 템플릿을 해석하려고 시도하는 등의 경우에 환경을 로드할 수 없을 수 있습니다. -부트스트랩하기 전에는 `Sgtk` 인스턴스가 없으므로 부트스트랩(Bootstrapping) 프로세스가 `Sgtk` 인스턴스를 생성한 후, 엔진을 시작하기 전에 동기화하도록 해야 합니다. -이 작업은 [`ToolkitManager.pre_engine_start_callback`](https://developer.shotgunsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.pre_engine_start_callback) 특성을 커스텀 방식을 가리키도록 설정하여 수행할 수 있습니다. -그런 다음 해당 방식으로 동기화를 실행할 수 있습니다. - -```python -def pre_engine_start_callback(ctx): - ''' - Called before the engine is started. - - :param :class:"~sgtk.Context" ctx: Context into - which the engine will be launched. This can also be used - to access the Toolkit instance. - ''' - ctx.sgtk.synchronize_filesystem_structure() - -mgr.pre_engine_start_callback = pre_engine_start_callback -``` - - -#### 구성 선택 - -부트스트랩할 구성을 명시적으로 정의할 수도 있고 부트스트랩(Bootstrapping) 로직이 [적절한 구성을 자동 감지](https://developer.shotgunsoftware.com/tk-core/initializing.html#managing-distributed-configurations)하도록 할 수도 있습니다. -적절한 구성이 자동으로 감지되지 않는 경우 폴백 구성을 설정할 수도 있습니다. -이 안내서에서는 프로젝트에 이미 구성이 설정되어 있고 자동으로 검색된다고 가정합니다. - -### 부트스트랩(Bootstrapping) - -모든 [`ToolkitManager`](https://developer.shotgunsoftware.com/tk-core/initializing.html#toolkitmanager) 매개변수가 설정된 경우 [`ToolkitManager.bootstrap_engine()`](https://developer.shotgunsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식을 호출하면 엔진이 시작되고 엔진 인스턴스로 포인터가 반환됩니다. - -다음은 지금까지 코드의 요약입니다. - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) -``` - -## 5부: 앱 시작 - -이제 엔진 인스턴스가 있으므로 툴킷 API를 사용할 준비가 되었습니다. - -앱을 시작하는 방법을 설명하기 전에 엔진을 통해 [현재 컨텍스트](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context), [Sgtk 인스턴스](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) 및 [{% include product %} API 인스턴스](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.shotgun)를 확인할 수 있습니다. - -```python -engine.context -engine.sgtk -engine.shotgun -``` -이 안내서의 최종 목표는 앱 시작 방법을 보여 주는 것입니다. 이 시점에서 위의 속성을 사용하여 일부 코드 조각을 테스트하거나 툴킷 API를 사용하는 일부 자동화를 실행할 수 있습니다. - -### 앱 시작 - -엔진이 시작되면 환경에 대해 정의된 모든 앱이 초기화됩니다. -앱이 차례로 엔진에 명령을 등록하며, Maya와 같은 소프트웨어에서 실행하는 경우 엔진은 대개 이 명령을 메뉴에 액션으로 표시합니다. - -#### 명령 찾기 -등록된 명령을 먼저 확인하려면 [`Engine.commands`](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) 특성을 출력하면 됩니다. - -```python -# use pprint to give us a nicely formatted output. -import pprint -pprint.pprint(engine.commands.keys()) - ->> ['houdini_fx_17.5.360', - 'nukestudio_11.2v5', - 'nukestudio_11.3v2', - 'after_effects_cc_2019', - 'maya_2019', - 'maya_2018', - 'Jump to Screening Room Web Player', - 'Publish...', -...] -``` - -출력된 목록에서 등록된 명령 및 실행 가능한 명령을 확인할 수 있습니다. - -#### 명령 실행 - -현재 표준화된 방식이 없으므로 명령을 실행하는 방법은 엔진에 따라 달라집니다. -`tk-shell` 엔진의 경우 편리한 `Engine.execute_command()` 방식을 사용할 수 있습니다. -앞의 목록에 있는 명령 문자열 이름과 앱의 명령을 전달할 매개변수 목록이 필요합니다. - -```python -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...",[]) -``` - -`tk-shell` 엔진에서 실행하지 않는 경우 등록된 콜백을 직접 호출하도록 폴백할 수 있습니다. - -```python -# now find the command we specifically want to execute -app_command = engine.commands.get("Publish...") - -if app_command: - # now run the command, which in this case will launch the Publish app. - app_command["callback"]() -``` - -이제 앱이 시작되고 `tk-shell` 엔진을 실행 중인 경우 출력이 터미널/콘솔에 표시됩니다. - -## 6부: 전체 스크립트 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing) -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) - -# Optionally print out the list of registered commands: -# use pprint to give us a nicely formatted output. -# import pprint -# pprint.pprint(engine.commands.keys()) - -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...",[]) -``` diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md deleted file mode 100644 index 210d54399..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -layout: default -title: 엔진 개발 -pagename: sgtk-developer-engine -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 창 부모-자식 관리](#qt-window-parenting) -- [시작 동작](#startup-behavior) -- [호스트 소프트웨어 위시리스트](#host-software-wish-list) - -## 툴킷 엔진이란? -엔진 개발 시, 엔진에 로드되는 다양한 툴킷 앱 및 프레임워크와 호스트 소프트웨어를 효과적으로 연결할 수 있습니다. -엔진을 사용하면 소프트웨어 간의 차이점을 추상화할 수 있기 때문에 Python 및 QT를 사용하여 소프트웨어에 구속받지 않는 방식으로 앱을 작성할 수 있습니다. - -엔진은 파일 모음으로 [앱과 구조가 비슷합니다](sgtk-developer-app.md#anatomy-of-the-template-starter-app). 엔진은 `engine.py` 파일을 포함하며 이는 코어 [`Engine` 기본 클래스](https://github.com/shotgunsoftware/tk-core/blob/master/python/tank/platform/engine.py)에서 파생되어야 합니다. -그러면 다양한 엔진이 내부 복잡성에 따라 이 기본 클래스의 여러 요소를 다시 구현합니다. -엔진은 일반적으로 다음과 같은 서비스를 처리 또는 제공합니다. - -- 메뉴 관리. 엔진 시작 시 앱이 로드되고 나면 엔진은 해당 {% include product %} 메뉴를 생성하고, 여러 앱을 이 메뉴에 추가합니다. -- 일반적으로 로깅 방식은 소프트웨어의 로그/콘솔에 기록하도록 재정의됩니다. -- UI 대화상자 및 창을 표시하는 방식. 엔진이 QT를 처리하는 방식이 기본적인 기본 클래스 동작과 다를 경우 이 방식은 툴킷 앱 및 기본 호스트 소프트웨어 창 관리 설정에서 시작한 창을 원활하게 통합할 수 있도록 재정의됩니다. -- 앱에 의해 등록된 모든 명령 객체를 포함하는 `commands` 사전(dictionary) 제공. 보통 메뉴 항목이 생성될 때 이 사전에 액세스합니다. -- 기본 클래스는 시작 프로세스의 여러 지점에서 실행되는 다양한 init 및 destroy 방식을 제공합니다. 시작 및 종료 실행을 제어하기 위해 이 방식을 재정의할 수 있습니다. -- 자동 소프트웨어 탐색 및 시작 시 `tk-multi-launchapp`에 의해 호출되는 시작 로직. - -엔진은 [`sgtk.platform.start_engine()`](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.start_engine) 또는 [`sgtk.bootstrap.ToolkitManager.bootstrap_engine()`](https://developer.shotgunsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 방식을 사용하여 툴킷 플랫폼에 의해 시작됩니다. -이 명령은 구성 파일을 읽고, 엔진을 시작하고, 모든 앱을 로드하는 등의 역할을 수행합니다. -엔진의 목표는 일단 시작된 후에 앱에 일관된 Python/QT 인터페이스를 제공하는 것입니다. -모든 엔진이 같은 기본 클래스를 구현하므로 앱은 UI 생성 등의 작업을 수행하기 위해 엔진에서 이 방식을 호출할 수 있습니다. -호스트 소프트웨어 내에서 원활하게 작동하도록 이 방식을 구현하는 것은 각 엔진의 몫입니다. - -## 시작하기 전에 알아야 할 사항 - -Shotgun 팀에서는 가장 일반적으로 사용되는 컨텐츠 생성 소프트웨어에 대한 [통합](https://developer.shotgridsoftware.com/ko/162eaa4b/)을 제공합니다. -[툴킷 커뮤니티 멤버가 작성해 공유한](https://developer.shotgridsoftware.com/ko/58a557ee/) 엔진도 있습니다. 하지만 툴킷 엔진이 없는 소프트웨어에 대한 파이프라인 통합이 필요한 경우도 있습니다. - -시간과 리소스가 있다면 누락된 엔진 중 사용하고 싶은 엔진을 직접 작성하여 툴킷 커뮤니티(그리고 여러분 자신)를 지원해 주시기 바랍니다! - -코드 작성을 시작하기 전에 [저희에게 알려 주십시오!](https://knowledge.autodesk.com/ko/contact-support) 약속을 드리기는 어렵지만 귀하의 의견을 제안해 주시면 감사하겠습니다. -관심이 있거나 같은 엔진에서 작업한 경험이 있는 다른 사용자들과 연결해 드릴 수 있을 것입니다. -가능한 경우 툴킷을 통합하려는 소프트웨어의 기술 담당자나 개발자와의 커뮤니케이션 채널을 열어 두면 -가능성이나 장애물에 대한 정보를 파악할 수 있어 작업을 진행하는 데 도움이 될 것입니다. -커뮤니케이션 채널을 설정하고 생각하고 있는 기본적인 사항에 대한 이야기를 나눈 후에는 저희 팀을 대화에 초대해 함께 미팅을 진행하면서 엔진의 특정 요소에 대한 대화를 나눌 수 있습니다. -[{% include product %} 커뮤니티 포럼](https://community.shotgunsoftware.com/c/pipeline)에서 툴킷 커뮤니티에 참여할 수도 있습니다. - -더욱 발전할 새로운 통합을 기대합니다! 툴킷 커뮤니티에 열성적으로 참여해 주시는 여러분의 노력에 늘 감사드립니다. - -{% include info title="팁" content="[자체 앱 개발](sgtk-developer-app.md)에는 앱 개발에 대한 단계별 안내가 포함되어 있으며 이 안내서에서 다루지 않는 엔진 개발에 적용되는 원칙도 포함됩니다." %} - -## 엔진 통합 방식 - -호스트 앱의 기능이 무엇인지에 따라 엔진 개발의 복잡성이 결정됩니다. -이 섹션에서는 엔진 개발 중에 지금까지 발견된 여러 복잡성 수준을 간략하게 살펴봅니다. - - -### Qt , PyQt/PySide 및 Python이 포함되는 호스트 소프트웨어 -이 방식이 최선의 툴킷 설정입니다. 엔진을 Qt, Python 및 PySide를 지원하는 호스트 소프트웨어에 구현하는 작업은 매우 직관적입니다. -[Nuke 엔진](https://github.com/shotgunsoftware/tk-nuke) 또는 [Maya 엔진](https://github.com/shotgunsoftware/tk-maya)이 좋은 예입니다. 통합은 단지 일부 로그 파일 관리를 연결하는 것이며, 코드를 작성하여 {% include product %} 메뉴를 설정합니다. - - -### 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 이벤트 루프가 정기적으로(예: on-idle 호출을 통해) 실행되도록 해야 합니다. - - -### Python이 포함되지 않지만 플러그인을 작성할 수 있는 호스트 소프트웨어 -이 클래스에는 [Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) 및 [After Effects](https://github.com/shotgunsoftware/tk-aftereffects)가 포함됩니다. -Python 스크립팅이 없지만 C++ 플러그인을 생성할 수 있습니다. -이 경우에는 IPC 레이어를 포함하며, 시작 시 별도 프로세스로 Qt 및 Python을 실행하는 플러그인을 생성하는 것이 일반적인 전략입니다. -보조 프로세스가 실행되고 나면 IPC 레이어를 사용하여 명령이 양방향으로 전송됩니다. -이 호스트 소프트웨어 유형의 경우 적절한 엔진 솔루션을 얻기 위해서는 상당한 작업이 필요합니다. - -{% include info title="팁" content="Shotgun 팀에서는 Photoshop 및 After Effects 엔진을 사용하여 실제로 [Adobe 플러그인을 처리하는 프레임워크](https://github.com/shotgunsoftware/tk-framework-adobe)를 만들었습니다. -두 엔진 모두 프레임워크를 사용해 호스트 소프트웨어와 커뮤니케이션하고 나머지 Adobe 제품군에 대한 엔진을 더 쉽게 빌드할 수 있습니다." %} - - -### 스크립트 작성 기능을 전혀 제공하지 않는 호스트 소프트웨어 -호스트 소프트웨어를 프로그래밍 방식으로 액세스할 수 없는 경우에는 엔진을 생성할 수 없습니다. - - -## Qt 창 부모-자식 관리 -보통 창 부모-자식 관리에는 특별한 주의를 기울여야 합니다. -일반적으로 PySide 창은 위젯 계층에 친부모가 없으며, 이는 명시적으로 호출해야 합니다. -창 부모-자식 관리는 일관된 환경을 제공하는 데 중요한 요소이며, 이를 구현하지 않으면 툴킷 앱 창이 메인 창 뒤에 표시되어 혼동을 줄 수 있습니다. - -## 시작 동작 -엔진은 소프트웨어 시작 방법 및 통합의 시작 방법도 담당합니다. -이 로직은 `tk-multi-launchapp`이 엔진을 사용해 소프트웨어를 시작하려고 할 때 호출됩니다. -이 설정 방법에 대한 자세한 내용은 [코어 설명서](https://developer.shotgunsoftware.com/tk-core/initializing.html?highlight=create_engine_launcher#launching-software)에서 확인할 수 있습니다. - -## 호스트 소프트웨어 위시리스트 -다음 호스트 소프트웨어 특성을 툴킷 엔진이 활용할 수 있습니다. -많은 특성이 지원될수록 엔진 사용 환경이 향상됩니다! - -- 기본 제공 Python 인터프리터, Qt 및 PySide! -- 소프트웨어 시작/초기화 시 코드를 실행할 수 있는 능력. -- 두 시점(소프트웨어가 시작 및 실행되고 있을 때와 UI가 완전히 초기화되었을 때)에 코드에 액세스하여 자동 실행할 수 있는 능력. -- 파일 시스템 상호 작용을 래핑하는 API 명령: 열기, 저장, 다른 이름으로 저장, 참조 추가 등. -- UI 요소를 추가하기 위한 API 명령 - - - 커스텀 Qt 위젯을 앱에 패널로 추가(이상적으로는 번들 PySide를 통해 추가) - - 커스텀 메뉴/상황에 맞는 메뉴 항목 추가 - - 노드 기반 패키지의 커스텀 노드(상호 작용을 위한 커스텀 UI 통합 용이) - - 선택한 항목/노드 등을 가져오기 위한 인트로스펙션 -- 유연한 이벤트 시스템 - - "흥미로운" 이벤트가 커스텀 노드 트리거 가능 -- 비동기적 UI 실행 지원 - - 예를 들면, 커스텀 메뉴 항목이 트리거되면 나타나지만 인터페이스를 잠그지 않는 팝업 대화상자 - - 커스텀 UI 창의 부모-자식 관계가 올바로 지정되도록 최상위 창에 핸들 제공 \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md deleted file mode 100644 index 76fc96442..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: 프레임워크 개발 -pagename: sgtk-developer-framework -lang: ko ---- - -# 자체 프레임워크 개발 - -## 소개 -이 문서에서는 Toolkit 프레임워크 개발에 관한 몇 가지 기술적인 정보를 간략히 소개합니다. - -목차: -- [툴킷 프레임워크란?](#what-is-a-toolkit-framework) -- [사전 작성된 {% include product %} 프레임워크](#pre-made-shotgun-frameworks) -- [프레임워크 작성](#creating-a-framework) -- [후크에서 프레임워크 사용](#using-frameworks-from-hooks) - -## 툴킷 프레임워크란? - -툴킷 [프레임워크](https://developer.shotgunsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)는 툴킷 앱과 매우 유사합니다. -주요 차이점은 프레임워크는 자체적으로 실행할 수 없다는 점입니다. -프레임워크는 앱이나 엔진으로 가져오는 방식으로 사용됩니다. 따라서 여러 엔진과 앱에서 사용할 수 있도록 재사용 가능한 로직을 분리할 수 있습니다. -재사용 가능한 UI 구성요소 라이브러리를 프레임워크의 예로 들 수 있습니다. 여기에는 재생 목록 선택기 구성요소가 포함될 수 있습니다. -그런 다음 앱에서 해당 프레임워크를 가져오고 재생 목록 선택기 구성 요소를 메인 앱 UI에 연결할 수 있습니다. - -## 사전 작성된 {% include product %} 프레임워크 - -{% include product %}는 자체 앱을 제작할 때 유용한 몇 가지 사전 작성 [프레임워크](https://developer.shotgridsoftware.com/ko/c6db88dd/)를 제공합니다. -[Qt Widgets](https://developer.shotgunsoftware.com/tk-framework-qtwidgets/) 및 [{% include product %} 유틸리티](https://developer.shotgunsoftware.com/tk-framework-shotgunutils/) 프레임워크는 앱 개발 시 특히 유용합니다. - -## 프레임워크 작성 - -자체 프레임워크를 작성하는 경우 설정은 앱을 작성하는 것과 거의 동일합니다. ["자체 앱 개발"](sgtk-developer-app.md) 안내서에서 자세한 내용을 확인할 수 있습니다. -프레임워크에는 `app.py` 파일 대신 프레임워크 패키지의 루트에 [`Framework`](https://developer.shotgunsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#framework) 기본 클래스에서 파생된 클래스가 포함된 `framework.py`가 있습니다. 또한 프레임워크는 엔진에 명령을 등록하지 않습니다. - -대신, 프레임워크 인스턴스 자체에 방식을 직접 저장하거나 `python/` 폴더 내에 모듈을 저장할 수 있습니다. -예를 들어 [shotgunutils 프레임워크는 이를 python 폴더에 저장](https://github.com/shotgunsoftware/tk-framework-shotgunutils/tree/v5.6.2/python)합니다. -여기에 액세스하려면 프레임워크를 가져온 다음 [`import_module()` 방식](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Framework.import_module)을 사용하여 하위 모듈에 액세스합니다. - -API 문서에는 [프레임워크를 가져오는 방법](https://developer.shotgunsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)에 대한 예가 있습니다. - -## 후크에서 프레임워크 사용 -후크를 통해 몇 가지 공통 로직을 공유하도록 프레임워크를 생성하는 것이 유용할 수 있습니다. -[`Hook.load_framework()`](https://developer.shotgunsoftware.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 deleted file mode 100644 index 4e11d7c11..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ /dev/null @@ -1,504 +0,0 @@ ---- -layout: default -title: 경로 생성 및 게시 -pagename: sgtk-developer-generating-path-and-publish -lang: ko ---- - -# 경로 생성 및 게시 - -이 안내서에서는 파이프라인 통합을 빌드하는 {% include product %} 툴킷 Python API를 시작하는 방법에 대해 설명합니다. - -이 안내서를 통해 API를 사용하는 방법에 대한 기본적인 예제를 살펴보십시오. 학습을 모두 마치면 툴킷 API를 가져와 경로를 생성하고 게시할 수 있게 될 것입니다. - -### 요구사항 - -- Python 프로그래밍 기본 사항에 대한 이해 -- 고급 구성을 사용하는 프로젝트. 구성을 설정하지 않은 경우 [구성 시작하기](https://developer.shotgridsoftware.com/ko/5d83a936/) 안내서를 참조하십시오. - -### 단계 - -1. [Sgtk 가져오기](#part-1-importing-sgtk) -2. [Sgtk 인스턴스 가져오기](#part-2-getting-an-sgtk-instance) -3. [컨텍스트 가져오기](#part-3-getting-context) -4. [폴더 생성](#part-4-creating-folders) -5. [템플릿을 사용하여 경로 빌드](#part-5-using-a-template-to-build-a-path) -6. [기존 파일 찾기 및 최신 버전 번호 가져오기](#part-6-finding-existing-files-and-getting-the-latest-version-number) -7. [게시된 파일 등록](#part-7-registering-a-published-file) -8. [전체 스크립트로 모두 가져오기](#part-8-the-complete-script) - -## 1부: Sgtk 가져오기 - -툴킷 API는 `sgtk`라는 Python 패키지에 포함되어 있습니다. -각 툴킷 구성에는 [`tk-core`](https://developer.shotgunsoftware.com/tk-core/overview.html)의 일부로 제공되는 자체 API 사본이 있습니다. -프로젝트 구성에서 API를 사용하려면 작업할 구성에서 `sgtk` 패키지를 가져와야 합니다. 이 패키지를 다른 구성에서 가져오면 오류가 발생합니다. - -{% include info title="참고" content="경우에 따라 `tank` 패키지에 대한 참조가 있을 수 있습니다. 이는 동일한 작업에 대한 이전 이름입니다. 앞으로 계속 사용할 수 있는 올바른 이름은 `sgtk`입니다." %} - -API를 가져오려면 [코어의 python 폴더](https://github.com/shotgunsoftware/tk-core/tree/v0.18.167/python)에 대한 경로가 [`sys.path`](https://docs.python.org/3/library/sys.html#sys.path)에 있는지 확인해야 합니다. -그러나 이 예의 경우 {% include product %} 데스크톱의 Python 콘솔에서 이 코드를 실행하는 것이 좋습니다. -이 경우 올바른 `sgtk` 패키지 경로가 `sys.path`에 이미 추가되어 있습니다. -마찬가지로, {% include product %} 통합이 이미 실행 중인 소프트웨어 내에서 이 코드를 실행하는 경우에는 경로를 추가할 필요가 없습니다. - -{% include product %}가 이미 시작된 환경에서 코드를 실행하는 경우 다음과 같이 간단한 방식으로 API를 가져올 수 있습니다. - -```python -import sgtk -``` -{% include product %} 통합 외부에서 API를 사용하려면(예: 즐겨 사용하는 IDE에서 테스트하는 경우) 먼저 API에 대한 경로를 설정해야 합니다. - -```python -import sys -sys.path.append("/shotgun/configs/my_project_config/install/core/python") - -import sgtk -``` - -{% include info title="참고" content="분산 구성을 사용 중이고 툴킷이 이미 부트스트랩(Bootstrapping)되지 않은 환경에서 `sgtk`를 가져오려는 경우에는 다른 방법을 사용해야 합니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오." %} - -## 2부: Sgtk 인스턴스 가져오기 - -툴킷 API를 사용하려면 [`Sgtk`](https://developer.shotgunsoftware.com/tk-core/core.html#sgtk) 클래스의 인스턴스를 만들어야 합니다. - -[`Sgtk`](https://developer.shotgunsoftware.com/tk-core/core.html#sgtk)는 `sgtk` 패키지의 클래스로, API에 대한 메인 인터페이스 역할을 합니다. -`Sgtk` 인스턴스를 만들면 컨텍스트 가져오기, 폴더 만들기 또는 템플릿 액세스 같은 작업을 수행할 수 있습니다. - -API 설명서에 언급된 것처럼 `Sgtk` 인스턴스를 직접 만들지는 않습니다. 다음은 `Sgtk` 인스턴스를 가져오기 위한 몇 가지 옵션입니다. - -1. {% include product %} 통합이 이미 실행 중인 환경(예: Maya가 {% include product %}에서 시작된 경우 Maya Python 콘솔)에서 Python 코드를 실행하는 경우 현재 엔진에서 `Sgtk` 인스턴스를 가져올 수 있습니다. - `Engine.sgtk` 특성은 엔진의 `Sgtk` 인스턴스를 유지합니다. - 따라서 Maya와 같은 응용프로그램에서 다음을 실행할 수 있습니다. - - ```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 - ``` - - [`Engine.sgtk`](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) 특성을 통해 `Sgtk` 인스턴스에 액세스할 수 있습니다. - - *참고: `Engine.sgtk` 특성을 1부에서 가져온 `sgtk` 패키지와 혼동하거나 동일하게 간주해서는 안 됩니다.* - -2. [`sgtk.sgtk_from_entity()`](https://developer.shotgunsoftware.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.shotgunsoftware.com/tk-core/initializing.html#sgtk.sgtk_from_path) - 구성 경로나 프로젝트 루트 폴더 내부 또는 이에 대한 경로(예: 작업 파일 또는 샷 폴더)를 허용하는 경우를 제외하고 `sgtk_from_entity()`와 비슷합니다. - *이 방식은 분산 구성에서 작동하지 않습니다. 자세한 내용은 [부트스트랩 안내서](sgtk-developer-bootstrapping.md)를 참조하십시오.* - -이 안내서에서는 엔진이 이미 시작된 환경에서 이 코드를 실행한다고 가정하므로 옵션 1을 사용합니다. -또한 `Sgtk` 클래스 인스턴스를 `tk`라는 변수에 저장합니다. -{% include product %} Python 콘솔을 사용 중인 경우 `tk` 변수가 이미 전역 변수로 미리 정의되어 있습니다. - -이제 `Sgtk` 인스턴스가 있으므로 API를 사용할 준비가 되었습니다. -이제 게시 스크립트는 다음과 같습니다. - -```python -import sgtk - -# 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 -``` - -## 3부: 컨텍스트 가져오기 - -### 컨텍스트는 무엇이며 필요한 이유는 무엇입니까? - -툴킷에서 발생하는 많은 작업은 컨텍스트를 중심으로 이루어집니다. 즉, 사용자가 무슨 작업 중인지 인지하고 이에 맞게 진행한다는 의미입니다. -툴킷 API를 사용하여 작업 중인 엔티티에 대한 중요한 상세 정보를 저장하고 앱 또는 다른 프로세스와 공유할 수 있어야, 이렇게 컨텍스트를 인식한 작동이 가능합니다. -예를 들어 툴킷에서 작업 중인 태스크를 인식할 경우 게시된 파일을 ShotGrid에서 해당하는 태스크에 자동으로 링크할 수 있습니다. - -[`Context` 클래스](https://developer.shotgunsoftware.com/tk-core/core.html#context)는 이러한 정보의 컨테이너로 사용됩니다. -클래스 인스턴스 내에 몇 가지 항목 중 `Task`, `Step`, `entity`(예: `Shot` 또는 `Asset`), `Project` 및 현재 `HumanUser`를 저장할 수 있습니다. - -지정된 세션에서 원하는 만큼의 컨텍스트 객체 유형을 생성할 수 있습니다. 그러나 엔진이 있는 경우 엔진이 트래킹할 수 있는 단일 컨텍스트의 개념이 적용됩니다. -이 개념이 사용자가 현재 작업 중이고 앱이 작동해야 하는 컨텍스트입니다. - -이후 단계에서는 이 컨텍스트를 사용하여 파일을 저장하거나 복사하는 데 사용할 수 있는 경로를 해석합니다. - -### 컨텍스트 획득 - -컨텍스트를 생성하려면 생성자 방식 `Sgtk.context_from_entity()`, `Sgtk.context_from_entity_dictionary()` 또는 `Sgtk.context_from_path()` 중 하나를 사용해야 합니다. -이전 단계에서 만든, `tk` 변수에 저장한 `Sgtk` 인스턴스를 통해 이러한 방식에 액세스합니다. - -{% include info title="참고" content="경로에서 컨텍스트를 가져오려면 이미 생성된 폴더가 있어야 합니다. 이 부분은 안내서의 다음 단계에서 설명합니다." %} - -그러나 새 컨텍스트를 생성하는 대신 다음과 같이 [2부](#part-2-getting-an-sgtk-instance)에서 수집한 [현재 컨텍스트를 엔진에서 가져올](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context) 수 있습니다. - -```python -context = current_engine.context -``` -이후 단계에서 샷의 태스크 파일 경로를 해석하는 데 컨텍스트를 사용하므로 관련 정보가 컨텍스트에 포함되어 있어야 합니다. - -코드가 툴킷 앱의 일부로 실행되고 앱이 shot_step 환경에서만 실행되도록 구성된 경우에는 적합한 현재 컨텍스트를 가져온다고 충분히 가정할 수 있습니다. -그러나 이 안내서에서는 보다 확실하게 하기 위해 `Sgtk.context_from_entity()`를 사용하여 `Task`(`Shot`에 속해야 함)에서 명시적으로 컨텍스트를 생성합니다. - -컨텍스트를 생성할 때는 작업에 필요한 가장 깊은 수준을 제공합니다. -예를 들어 태스크에서 컨텍스트를 만들 수 있으며 툴킷이 나머지 컨텍스트 매개변수를 처리합니다. - -```python -context = tk.context_from_entity("Task", 13155) -``` - -컨텍스트 인스턴스 표현을 출력할 경우 다음과 같이 나타납니다. - -```python -print(repr(context)) - ->> - -``` - -태스크만 제공했는데 다른 관련 세부 사항도 채워져 있습니다. - -이제 게시 스크립트는 다음과 같이 됩니다. - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) -``` - -## 4부: 폴더 생성 - -툴킷은 프로젝트 엔티티를 기반으로 디스크에 폴더 구조를 동적으로 생성할 수 있습니다. - -이 단계는 두 가지 목적을 충족합니다. - -1. 파일을 배치할 수 있는 디스크에 조직화된 구조를 생성합니다. -2. 이렇게 하면 툴킷이 프로그래밍 방식으로 구조를 이해하고 해당 구조에서 컨텍스트를 파생하고 파일을 배치할 위치를 알 수 있습니다. - -나중에 경로를 해석할 수 있도록 디스크에 폴더가 있는지 확인해야 합니다. -이를 위해서는 [Sgtk.create_filesystem_structure()](https://developer.shotgunsoftware.com/tk-core/core.html?#sgtk.Sgtk.create_filesystem_structure) 방식을 사용합니다. - -```python -tk.create_filesystem_structure("Task", context.task["id"]) -``` -컨텍스트 객체를 사용하여 태스크 ID를 가져와 폴더를 생성할 수 있습니다. - -이제 코드는 다음과 같아야 합니다. - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) -``` - -이제 모든 준비 단계를 완료했으며 템플릿을 사용한 경로 생성 단계를 진행할 준비가 되었습니다. - -## 5부: 템플릿을 사용하여 경로 빌드 - -### 경로 생성 - -파일을 배치하거나 툴킷에서 찾을 위치를 확인해야 할 때 템플릿을 사용하여 디스크 내에서의 절대 경로를 해석할 수 있습니다. - -[템플릿](https://developer.shotgunsoftware.com/tk-core/core.html#templates)은 기본적으로 컨텍스트 및 기타 데이터를 적용할 때 파일 시스템 경로로 해석할 수 있는 토큰화된 문자열입니다. -템플릿은 [프로젝트의 파이프라인 구성](https://developer.shotgridsoftware.com/ko/82ff76f7/#part-2---configuring-file-system-templates)을 통해 커스터마이즈할 수 있으며 템플릿의 목적은 파일이 저장된 위치에서 작업하기 위한 표준화된 방법을 제공하는 것입니다. - -가장 먼저 수행할 작업은 생성하려는 경로에 대한 템플릿 인스턴스를 가져오는 것입니다. -생성한 `Sgtk` 인스턴스를 사용하여 `Sgtk.templates` 속성을 통해 원하는 `Template` 인스턴스에 액세스할 수 있습니다. 이 속성은 키가 템플릿 이름이고 값이 [`Template`](https://developer.shotgunsoftware.com/tk-core/core.html#template) 인스턴스인 사전(dictionary)입니다. - -```python -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}' -``` - -템플릿은 실제 값으로 해석되어야 하는 키로 구성됩니다. -대부분의 키에 대한 정보가 컨텍스트에 충분히 포함되어 있으므로 이를 사용하여 값을 추출할 수 있습니다. - -```python -fields = context.as_template_fields(template) - ->> {'Sequence': 'seq01_chase', 'Shot': 'shot01_running_away', 'Step': 'comp'} -``` -[`Context.as_template_fields()`](https://developer.shotgunsoftware.com/tk-core/core.html#sgtk.Context.as_template_fields) 방식을 사용하면 템플릿 키를 올바르게 해석하기 위한 값을 포함하는 사전(dictionary)이 제공됩니다. -그러나 모든 키에 대해 값이 제공되지는 않습니다. `name`, `version` 및 `maya_extension`은 여전히 누락된 상태입니다. - -`maya_extension` 키는 템플릿 키 섹션에서 [기본값을 정의](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.8/core/templates.yml#L139)하므로 기본값을 제외한 다른 값을 원하더라도 해당 값을 제공할 필요가 없습니다. - -그러면 `name`과 `version`이 남습니다. 이름은 선택의 문제이므로 기본값을 하드 코딩하거나 인터페이스를 팝업하는 등의 방식으로 사용자가 값을 입력할 수 있는 기회를 제공할 수 있습니다. -지금은 둘 다 모두 하드 코딩하지만, 다음 단계에서는 사용 가능한 다음 버전 번호를 찾는 방법을 알아보겠습니다. - -```python -fields["name"] = "myscene" -fields["version"] = 1 -``` - -이제 모든 필드가 준비되었습니다. 다음과 같이 [`Template.apply_fields()`](https://developer.shotgunsoftware.com/tk-core/core.html#sgtk.Template.apply_fields)를 사용하여 템플릿을 절대 경로로 해석할 준비가 되었습니다. - -```python -publish_path = template.apply_fields(fields) - ->> /sg_toolkit/mysite.shotgunstudio.com/my_project/sequences/seq01_chase/shot01_running_away/comp/publish/maya/myscene.v001.ma -``` - -### 폴더 존재 여부 확인 - -앞에서 폴더 생성 방식을 실행했지만 모든 폴더가 있는지 확인하기 위해 추가 단계를 수행해야 할 수 있습니다. -이 단계는 예를 들어 템플릿이 스키마에 없는 폴더를 정의하여 이에 따라 원래 `create_filesystem_structure()` 호출에서 생성되지 않은 폴더를 정의하는 경우에 필요할 수 있습니다. - -이 작업을 수행할 때 편리하게 사용할 수 있는 몇 가지 방법이 있습니다. -코드가 툴킷 앱 또는 후크에서 실행 중인 경우 [`Application.ensure_folder_exists()`](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Application.ensure_folder_exists) 방식을 사용할 수 있습니다. -엔진이 있는 경우 [`Engine.ensure_folder_exists()`](https://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.ensure_folder_exists) 방식을 사용할 수 있습니다. -또는 엔진 외부에서 코드를 실행하는 경우 [`sgtk.util.filesystem.ensure_folder_exists()`](https://developer.shotgunsoftware.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.shotgunsoftware.com/tk-core/utils.html?#sgtk.util.filesystem.touch_file)을 사용하여 툴킷이 디스크에 빈 파일을 생성하도록 할 수 있습니다. - - -### 최종 결과 - -```python -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) - -# Get a template instance by providing a name of a valid template in your config's templates.yml. -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" -fields["version"] = 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders. -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Create an empty file on disk. (optional - should be replaced by actual file save or copy logic) -sgtk.util.filesystem.touch_file(publish_path) -``` - -다음 단계는 하드 코딩하지 않고 다음 버전 번호를 동적으로 처리하는 것입니다. - -## 6부: 기존 파일 찾기 및 최신 버전 번호 가져오기 - -여기에서 사용할 수 있는 두 가지 방법이 있습니다. - -1. 이 특별한 예제에서는 게시 파일을 해석하므로 [{% include product %} API](https://developer.shotgunsoftware.com/python-api/)를 사용하여 `PublishedFile` 엔티티에 대해 다음으로 사용 가능한 버전 번호를 쿼리할 수 있습니다. -2. 디스크의 파일을 스캔하고 이미 있는 버전을 확인한 후 다음 버전 번호를 추출할 수도 있습니다. - 이 옵션은 작업 중인 파일이 {% include product %}에서 트래킹되지 않는 경우(예: 작업 파일)에 유용합니다. - -첫 번째 옵션이 이 안내서의 예에 가장 적합하지만 두 방법 모두 각자 용도가 있으므로 사용되므로 둘 다 설명하겠습니다. - -### {% include product %}에 다음 버전 번호 쿼리 - -{% include product %} API와 [`summarize()` 방식](https://developer.shotgunsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.summarize)을 사용하여 동일한 이름과 태스크를 공유하는 `PublishedFile` 엔티티 중에서 가장 높은 버전 번호를 가져온 다음 1을 추가하면 됩니다. - -```python -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 -``` - -### 파일 시스템에서 다음 버전 번호 검색 - -툴킷 API를 사용하여 기존 파일 목록을 수집하고 기존 파일에서 템플릿 필드 값을 추출한 후 다음 버전을 계산할 수 있습니다. - -아래 예에서는 작업 파일 템플릿에서 최신 버전을 수집합니다. -작업 파일 템플릿과 게시 파일 템플릿에 동일한 필드가 있다고 가정하면 아래의 방식을 동일한 필드로 두 번 호출하여 가장 높은 게시 및 작업 파일 버전을 확인하고 두 버전의 조합을 사용할지 결정할 수 있습니다. - -```python -def get_next_version_number(tk, template_name, fields): - template = tk.templates[template_name] - - # Get a list of existing file paths on disk that match the template and provided fields - # Skip the version field as we want to find all versions, not a specific version. - skip_fields = ["version"] - file_paths = tk.paths_from_template( - template, - fields, - skip_fields, - skip_missing_optional_keys=True - ) - - versions = [] - for a_file in file_paths: - # 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. -fields["version"] = get_next_version_number(tk, "maya_shot_work", fields) -``` - -[`sgtk.paths_from_template()`](https://developer.shotgunsoftware.com/tk-core/core.html?highlight=paths_from_template#sgtk.Sgtk.paths_from_template) 방식은 제공된 템플릿 및 필드와 일치하는 디스크의 파일을 모두 수집합니다. -이 방식은 파일 목록을 찾아서 사용자에게 표시하려는 시나리오에도 유용합니다. - -두 옵션 중 하나를 사용하도록 선택할 수 있으며, 이 안내서에서는 코드를 간단하게 유지할 수 있도록 옵션 1의 코드를 사용합니다. - -## 7부: 게시된 파일 등록 - -이제 경로가 생성되고 게시할 준비가 되었습니다. 유틸리티 방식 [`sgtk.util.register_publish()`](https://developer.shotgunsoftware.com/tk-core/utils.html?#sgtk.util.register_publish)를 사용하여 이 작업을 수행할 수 있습니다. - -{% include product %} API의 [`{% include product %}.create()`](https://developer.shotgunsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.create) 방식을 사용하여 `PublishedFile` 엔티티를 만들 수도 있지만 필요한 모든 필드가 제공되고 올바르게 입력되기 때문에 툴킷 API를 사용하는 것이 가장 좋습니다. - -```python -# So as to match the Publish app's default behavior, we are adding the extension to the end of the publish name. -# This is optional, however. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -또한 [Publish 앱](https://developer.shotgridsoftware.com/ko/bc718491/)이 [자체 API](https://developer.shotgridsoftware.com/tk-multi-publish2/)와 함께 제공된다는 점도 주목할 만합니다. -이 경우에도 기본적으로 동일한 [`sgtk.util.register_publish()`](https://developer.shotgunsoftware.com/tk-core/utils.html?#sgtk.util.register_publish) 방식을 사용하지만 컬렉션, 유효성 확인 및 게시를 처리하는 프레임워크를 제공하여 게시 프로세스를 기반으로 빌드합니다. - -## 8부: 전체 스크립트 - -```python -# Initialization -# ============== - -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task -tk.create_filesystem_structure("Task", context.task["id"]) - -# Generating a Path -# ================= - -# Get a template instance by providing a name of a valid template in your config's templates.yml -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" - -# Get an authenticated Shotgun API instance from the engine -sg = current_engine.shotgun - -# Run a Shotgun API query to summarize the maximum version number on PublishedFiles that -# are linked to the task and match the provided name. -# Since PublishedFiles generated by the Publish app have the extension on the end of the name we need to add the -# extension in our filter. -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Creating a file -# =============== - -# This is the bit where you would add your own logic to copy or save a file using the path. -# In the absence of any file saving in the example, we'll use the following to create an empty file on disk. -sgtk.util.filesystem.touch_file(publish_path) - -# Publishing -# ========== - -# So as to match publishes created by the Publish app's, we are adding the extension to the end of the publish name. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -{% include info title="팁" content="지금까지 코드가 약간 길었으므로 다음 단계에서는 여러 방식으로 나누는 방법을 알아보겠습니다." %} - -### 최종 의견 - -이 안내서를 통해 툴킷 API를 시작하는 방법에 대한 기본적인 이해를 갖추게 되었기를 바랍니다. -물론 API를 사용하는 다른 방법도 많이 있으므로 자세한 내용은 [tk-core API](https://developer.shotgunsoftware.com/tk-core/index.html)를 참조해 주십시오. - -또한 API에 대한 질문에 답을 구하고 이 안내서에 대해 피드백을 남길 수 있는 [포럼](https://community.shotgunsoftware.com/c/pipeline/6)도 방문해 주십시오. \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md b/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md deleted file mode 100644 index 2284d8bf6..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: 통합 개발자 가이드 -pagename: sgtk-developer-guide -lang: ko ---- - -# 통합 개발자 가이드 - -## 패널 - -패널 액션 예는 [https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks)를 참조하십시오. - -### 표시 내용 구성 - -상세 정보 영역의 값과 목록은 둘 다 `shotgun_fields` 후크를 통해 구성할 수 있습니다. 이 후크를 소분류하고, 그 구현 결과를 변경하여 원하는 정확한 값을 표시할 수 있습니다. - -**템플릿 시스템** - -후크는 간단한 템플릿 언어를 지원하므로 유연성이 뛰어납니다. 또한 Qt에서 지원하는 HTML 하위 세트를 지원하므로 표시되는 값의 색상, 글꼴 크기, 두께 등을 제어할 수 있습니다. - -템플릿 언어는 다음과 같은 방식으로 작동합니다. - -- {% include product %} 값은 `{brackets}`로 묶여 있습니다(예: `Description: {description}`). 이 템플릿이 렌더링되면 `{description}` 부분은 설명 필드 값으로 대체됩니다. - -- 값의 선택적 접두사 또는 접미사(값이 비어 있지 않은 경우에만 표시)를 원한다면 `{[Prefix]sg_field[suffix]}` 구문을 사용하면 됩니다. 템플릿 `{[Start: ]start_date} {[End: ]end_date}`는 두 값이 모두 입력될 경우 `Start: 12 July 2009 End: 14 July 2012`를 렌더링하지만 종료 날짜가 설정되지 않은 경우 `Start: 12 July 2009`를 렌더링합니다. - -- 일부 값이 설정되지 않은 경우에는 폴백을 정의할 수 있습니다. {% include product %} 버전의 경우 제작자가 아티스트 대신 버전을 제출하는 워크플로우를 지원하기 위해 `artist` 필드가 `created_by` 필드보다 우선권을 가집니다. 이 경우, 버전은 제작자에 의해 생성되지만 `artist` 필드는 아티스트로 설정됩니다. 그러나 항상 그렇지는 않습니다. 아티스트가 자신의 작업을 제출하는 파이프라인에 아티스트를 비워 두는 경우도 있습니다. 따라서 버전을 표시할 때에는 `artist` 필드를 먼저 확인하고, 이 필드가 설정되어 있지 않은 경우에는 `created_by` 필드로 폴백할 수 있도록 하는 것이 좋습니다. 이 작업은 `{field1|field2}` 구문을 사용하여 수행할 수 있습니다(예: `Created By: {artist|created_by}`). 이 구문을 선택적 필드(예: `{[Created By: ]artist|created_by}`)와 결합할 수도 있습니다. - -이 후크에는 다음 방식이 포함됩니다. - -**목록에 표시되는 항목 제어** - -`get_list_item_definition()` 방식은 {% include product %} 엔티티 유형이 지정된 다양한 목록의 항목 모양을 제어하는 사전을 반환합니다. `top_left`, `top_right` 및 `body` 키가 포함된 사전을 반환합니다. 예를 들면 다음과 같습니다. - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**상단 상세 정보 영역 제어** - -`get_main_view_definition()` 방식은 {% include product %} 엔티티 유형에 따라 키 `title` 및 `body`를 사용하여 사전을 반환합니다. 이 값은 상세 정보 영역의 객체 모양을 제어합니다. 예를 들면 다음과 같습니다. - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**정보(Info) 탭에 표시되는 필드 제어** - -`get_all_fields()` 방식은 정보(Info) 탭에 렌더링될 때 해당하는 엔티티에 따라 표시할 필드의 목록을 반환합니다. - -### 액션 구성 - -액션은 {% include product %} 데이터에서 작동하는 작은 코드 조각입니다. 다음과 같은 예를 들 수 있습니다. - -- 지정된 {% include product %} 버전에 대해 RV를 시작하는 액션 -- 사용자가 지정된 태스크에 자신을 할당할 수 있는 액션 -- Maya에 {% include product %} 게시를 Maya 참조로 로드하는 액션 - -액션의 실제 페이로드는 _액션 후크_ 에 정의됩니다. 액션 로직을 정의한 후에는 앱 구성에서 해당 액션을 {% include product %} 객체에 매핑할 수 있습니다. 이 액션 매핑은 다음 예와 같은 모습입니다. - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -위의 예에서는 `reference`, `import`, `texture_node`, `assign_task` 및 `play_in_rv` 액션을 사용합니다. 다음으로 다양한 {% include product %} 객체 및 조건에 액션을 매핑합니다. 예를 들어 모든 Maya 씬 게시 유형에 `import` 액션을 표시하려고 합니다. - -객체가 패널에 로드되면 위의 액션 구성을 확인하고 분석합니다. 현재 객체에 대한 적절한 액션 목록이 판별되고 `generate_actions()` 후크 방식이 실행됩니다. 이때 지정된 엔티티의 {% include product %} 데이터가 후크로 전달되므로 후크 코드가 이 특정 {% include product %} 객체에 대한 액션을 실행할 수 있는지 확인할 수 있습니다. 이렇게 하면 각 후크가 표시되기 전에 검사를 실행할 수 있습니다. 예를 들어 `play_in_rv` 후크는 로컬에서 사용할 수 있는 미디어가 있는 경우에만 관련될 수 있고 구성에서 설정된 액션 매핑은 지정된 {% include product %} 엔티티에 대해 활성화할 액션을 패널에 알려 주지만 `generate_actions()` 방식이 지정된 객체에 적합하지 않다고 판단할 수 있으므로 모두 표시되지 않을 수 있습니다. - -`generate_actions()` 방식에서 반환되는 액션은 액션 메뉴에 표시되고 사용자가 이를 클릭하면 `execute_acton()` 후크 방식이 호출되어 액션을 실행합니다. - -패널이 지원하는 각 응용프로그램에 대해 적절한 액션을 구현하는 액션 후크가 있습니다. 예를 들어 Maya 등을 사용하면 기본 후크가 `reference`, `import` 및 `texture_node` 액션을 구현하고 각각 특정 Maya 명령을 수행하여 현재 Maya 씬으로 게시를 가져옵니다. 모든 후크와 마찬가지로 재정의 및 변경이 완벽히 가능하고, 기본 제공 후크로부터 파생되는 후크를 생성하는 것 역시 가능하기 때문에 많은 코드를 복제할 필요 없이 기본 제공 후크에 다른 액션을 쉽게 추가할 수 있습니다. - -패널은 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. 기본 구성 설정에서 다음과 같은 형식을 볼 수 있습니다. - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 키워드를 통해 툴킷은 앱의 `hooks` 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 `{config}/panel/maya_actions.py`로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 `hooks/panel/maya_actions.py`라는 후크를 사용하게 됩니다. - -자세한 정보는 앱과 함께 제공되는 후크 파일을 참조하십시오. 후크는 또한 상속을 이용합니다. 즉, 후크의 모든 사항을 재지정할 필요는 없지만 다양한 방식으로 기본 후크를 좀 더 쉽게 확장하거나 확대하여 보다 쉽게 후크를 관리할 수 있습니다. - -[2세대 후크 형식에 대한 자세한 정보는 여기를 참조하십시오.](https://developer.shotgridsoftware.com/ko/6d10dedf/) - -후크에서 상속을 사용하면 다음과 같은 기본 후크에 액션을 추가할 수 있습니다. - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) -``` - -그런 다음 이 새 액션을 구성의 게시 유형 세트에 바인딩할 수 있습니다. - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다. - -## Publisher - -Publish 앱은 퍼블리싱을 위해 항목이 아티스트에게 제공되는 방식과 해당 항목이 그 이후 처리되는 방식을 제어하는 후크를 통해 커스터마이즈할 수 있는 범위가 매우 넓습니다. - -Publisher 앱의 전체 개발자 문서를 이제 [툴킷 개발자 사이트](http://developer.shotgunsoftware.com/tk-multi-publish2)에서 살펴볼 수 있습니다. - -Publish 앱을 사용하는 자세한 방법은 [사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/#the-publisher)를 참조하십시오. - -## Loader - -로드 액션 예는 [https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks)를 참조하십시오. - -## 고급 기능 - -## 도구를 쉽게 개발할 수 있도록 해 주는 {% include product %} 툴킷 - -앱을 직접 작성할 수 있다는 것을 알려 드렸나요? 각 엔진이 Python 및 PySide 기반의 일관된 인터페이스를 표시하기 때문에 Nuke, Photoshop 및 3dsmax에서 모두 작동하는 단일 앱을 작성할 수 있습니다. Core API 기능을 이용하면 스튜디오용 대규모 파이프라인 스택을 빌드할 필요가 없고, 대신 프로덕션 문제 해결에 dev 리소스를 집중할 수 있습니다. 이 툴킷 덕분에 프로젝트마다 도구를 재사용하는 것도 쉽습니다. 파일 명명 규칙이나 기타 요구 사항이 바뀌는 경우에는 앱을 재구성하기만 하면 됩니다. 툴킷의 기본 제공 Git 및 Github 지원을 통해 도구를 안전하게 롤아웃하고, 개발 시에는 빠르게 코드를 핫로드하십시오. 자체 Dev Sandbox에서 작업하고, 코드를 프로젝트 구성원 모두에게 롤아웃할 필요 없이 TD 및 얼리 어답터를 초대해 코드를 테스트할 수 있습니다. - -![](images/develop.png) \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md b/docs/ko/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md deleted file mode 100644 index 4866a4fb5..000000000 --- a/docs/ko/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: 통합 수정 사항을 제출하는 방법 -pagename: sgtk-how-to-submit-fixes -lang: ko ---- - -# 통합 수정 사항을 제출하는 방법 - -툴킷 커뮤니티의 아낌 없는 참여를 환영합니다! 버그의 잠재적 픽스를 발견했거나 툴킷에 포함되어야 한다고 생각하는 기능을 구현했다면 아래 가이드라인에 따라 적절한 채널을 통해 전송해 주시기 바랍니다. - -## 연락 주십시오 - -개발하거나 해결하고 싶은 사항이 있다면 알려 주십시오. 여러분이 올바른 방향으로 나아가고 불필요한 작업에 얽매이지 않도록 필요한 정보를 제공해 드릴 수 있습니다. 무엇보다 사용자 여러분이 빌드하고 싶은 것이 무엇인지, 툴킷을 어떻게 사용하고 있는지, 툴킷을 어떻게 하면 더 멋지게 만들 수 있을지 이야기를 나누고 싶습니다. - -## Github에서 리포지토리 포크(fork) - -대부분의 툴킷 엔진, 앱, 프레임워크 코드는 Github에서 공개적으로 개발됩니다. 수정 중인 리포지토리를 Github에서 로컬 환경으로 포크(fork)하십시오. - -## 변경 작업 - -개발 작업을 분기에서 로컬로 진행하고, 자체 환경에서 제출 준비가 되었다는 확신이 들 때까지 테스트하십시오. 기존 코드 베이스의 스타일과 맞추고 목적에 맞게 변경하십시오. 예를 들어, 코드 행 3개에서 버그를 수정하는 중이라면 파일 전체에서 공백 문제를 수정하려고 하지 마십시오. 그렇게 하면 툴킷 그렘린들이 화를 냅니다. - -## 코멘트! - -어떤 작업을 하는 중인지, 왜 하는지 자세한 코멘트를 추가하십시오. 나중에 여러분 같은 누군가가 이 리포지토리를 포크(fork)할 수 있고, 그 사람도 여러분의 코드의 목적과 그 이유를 이해해야 한다는 사실을 기억해 두시기 바랍니다. 그렇다고 해서 과한 코멘트를 남기지는 마십시오. :) - -## 테스트 - -다른 사용자들은 매우 다양한 환경과 변수를 가지고 있고, 그 환경과 변수가 여러분이 스튜디오에 보유하고 있는 것과 일치하지 않을 수 있다는 점을 기억해 두십시오. 툴킷은 이러한 일들이 사용자에게 미치는 영향을 최소화하려고 하지만 언제나 그렇듯 다른 사용자들의 환경에는 서로 다른 점이 존재할 수 있습니다. 예: - -- 코드가 OS X, Windows, Linux에서 동일하게 작동합니까? -- 지원되는 모든 소프트웨어 버전에서 작동합니까? -- 사용자가 터미널, SG 데스크톱, {% include product %} 또는 자체 커스텀 앱 중 어디에서 실행하든 항상 동일하게 작동합니까? - -## 사용자 요청 생성  - -준비가 되면 변경 사항을 Github로 다시 푸시하고 사용자 요청을 생성하십시오. 사용자 요청은 코드가 무슨 기능을 하는지, 왜 변경이 필요한지 등에 관해 자세한 내용을 담고 있어야 합니다. 풀 리퀘스트를 작성할 때에는 이 영역의 코드에 관해 지식이 거의 없는 사용자를 염두에 두고 작성해야 합니다. 사용자 요청은 누구든 공개적으로 볼 수 있기 때문에 다른 사용자들도 쉽게 이해할 수 있도록 설명을 자세하게 잘 써놓으면 좋습니다! - -## 그 다음은? - -시간 여유가 되면 여러분들의 요청을 검토합니다. 코드 또는 사용 사례에 관해 의견을 남기고, 궁금한 점에 답변도 달아 드립니다. 요청을 반송해 변경을 요청할 수도 있습니다. 기분 나쁘게 해드릴 의도는 전혀 없습니다! 여러분의 참여와 헌신에 항상 감사하며 일이 진행되는 방식도 잘 이해하고 있습니다. 매일 코드를 접하다 보니 모든 사람이 완벽한 코드를 제출할 수 없다는 점도 잘 알고 있습니다. - -검토를 마친 후에 사용자 요청을 수락하는 경우에는 QA 대기열에 올리고, 그러면 리포지토리에 병합되어 적절한 시점에 릴리즈됩니다. 타임라인은 여러 요인에 따라 달라질 수 있으니 이해해 주시기 바랍니다. - -사용자 요청을 정중히 거절할 수도 있습니다. 역시 기분 나쁘게 생각하지 않으셨으면 좋겠습니다. 여러분의 노고와 기여에 항상 감사하고 있습니다. 거절 요인은 여러 가지일 수 있습니다. 하지만 위의 가이드라인을 잘 지킨다면 거절될 가능성도 거의 없습니다. diff --git a/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md b/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md deleted file mode 100644 index f28e77f50..000000000 --- a/docs/ko/guides/pipeline-integrations/getting-started/advanced_config.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: 구성 설정 -pagename: toolkit-guides-advanced-config -lang: ko ---- - -# 구성 시작하기 - -이 안내서를 완료하면 구성에 프로젝트 정보를 추가하고, 구성을 프로젝트와 연결하고, 커스터마이즈할 파이프라인 구성을 준비하는 기본적인 지식을 갖출 수 있습니다. - -## 안내서 정보 - -이 안내서에서는 {% include product %} 데스크톱에서 **고급 프로젝트 설정 마법사**를 사용하여 디지털 컨텐츠 생성 파이프라인의 구성을 생성하는 방법에 대해 설명합니다. 구성 도구에 대해 간단히 살펴보고, 마법사를 사용하는 방법을 설명하며, 자세한 내용을 확인할 수 있는 자료도 제공합니다. 마법사를 사용하면 프로젝트에 대한 파이프라인 구성이 생성되고 파이프라인의 각 단계를 지원하기 위해 편집 및 확장할 수 있는 준비가 이루어집니다. 이 구성은 UI, {% include product %} 앱 및 프로덕션 파이프라인을 지원하는 데 필요한 다양한 도구의 여러 측면을 제어합니다. 마법사를 사용하는 것은 구성을 확장하는 한 가지 방법에 불과합니다. 마법사에서는 파이프라인의 각 단계에 설정을 추가하고 소프트웨어 응용프로그램과의 통합도 추가할 수 있습니다. 이 안내서에서는 툴킷의 기본 구성을 기반으로 프로젝트의 구성을 설정할 것입니다. - -이 안내서를 학습하는 사용자는 다음과 같은 준비를 갖추어야 합니다. - -1. 고급 프로젝트 설정 마법사를 사용한 적이 없음 -2. {% include product %} 사용 방법에 대한 기초적인 지식을 갖추고 있음 -3. {% include product %} 툴킷을 처음 접함 - -### 이 문서 사용 - -이 안내서를 사용하고 프로젝트에 대해 커스터마이즈 가능한 구성을 생성하려면 다음과 같은 준비가 필요합니다. - -1. 유효한 {% include product %} 사이트. [여기서 {% include product %}에 등록](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management)하면 30일 무료 체험판을 다운로드해 직접 체험해 볼 수 있습니다. -2. {% include product %} 데스크톱. 데스크톱이 설치되어 있지 않은 경우 [이 링크를 따라 시작할 수 있습니다.](https://developer.shotgridsoftware.com/ko/d587be80/#installation-of-desktop) -3. 프로젝트 파일과 파이프라인 구성을 저장할 수 있는 파일 시스템. 파일 시스템에 `Shotgun` 폴더를 생성하고, 이 폴더 안에 `projects` 및 `configs` 폴더를 생성합니다. - -## 고급 프로젝트 설정 마법사 정보 - -{% include product %} 데스크톱의 고급 프로젝트 설정(Advanced Project Setup) 마법사는 기본 구성을 기반으로 파이프라인 구성을 생성합니다. 기본 구성을 사용하면 탄탄한 기초를 토대로 파이프라인 프로세스를 지원하는 커스터마이즈 가능한 설정, 앱 및 UI 요소를 작성할 수 있습니다. 이 마법사를 통해 생성되는 구성은 프로젝트의 파이프라인 요구사항을 충족하도록 편집 및 확장할 수 있습니다. - -기본 구성에는 다음이 포함됩니다. -* 디스크에서 파일이 저장되는 위치를 결정하는 기본 파일 시스템 스키마 및 템플릿 -* 사용자의 소프트웨어 응용프로그램에서 바로 {% include product %} 및 파이프라인 기능과 상호 작용할 수 있게 해 주는, 지원되는 모든 [소프트웨어 통합](https://developer.shotgridsoftware.com/ko/162eaa4b/) - -커스터마이즈 수준은 상상력과 기발함, 그리고 프로그래밍 지식 또는 {% include product %} 커뮤니티의 다른 사용자가 만든 것을 가져다 쓸 수 있는 능력 등에 따라 달라질 수 있습니다. - -### 구성 만들기 - -모든 프로젝트에는 구성이 필요합니다. {% include product %} 데스크톱을 통해 프로젝트에 처음 액세스하면 기초 구성이 다운로드되고 설정됩니다. 이 기초 구성에서는 사용자의 시스템에서 지원되는 컨텐츠 생성 소프트웨어를 자동으로 탐지하고 구성을 프로젝트와 연결합니다. 지원되는 소프트웨어 응용프로그램 내 통합은 파이프라인 구성의 설정에 의해 제어됩니다. [Panel](https://developer.shotgridsoftware.com/ko/c0b0ce05/) 앱에 {% include product %}의 프로젝트 정보가 표시되므로 아티스트가 작업 세션을 떠나지 않고도 노트에 회신하고 버전을 확인할 수 있습니다. [Publisher](https://developer.shotgridsoftware.com/ko/bc718491/) 앱에서는 자신의 작업물을 팀의 다른 작업자와 공유할 수 있으며 [Loader](https://developer.shotgridsoftware.com/ko/a4c0a4f1/) 앱을 통해서는 팀원이 게시한 파일을 로드할 수 있습니다. 기초 구성에는 파일 시스템 관리 설정이나 파일 및 디렉토리의 디스크 내 명명 방식을 템플릿 개발 등이 포함되지 않습니다. 또한, 기본 구성이 설정될 때 추가되는 다양한 앱도 포함되지 않습니다. 기초 구성은 구성 파일을 직접 편집하지 않고도 툴킷을 바로 실행할 수 있게 해주는 단순한 구성입니다. 이 마법사는 기초 구성을 기본 구성으로 변환합니다. 또한, 사용자의 작업을 지원하기 위해 추가적인 앱과 소프트웨어 통합을 제공합니다. 기초 구성도 편집 가능하기는 하지만, 고급 설정을 통해 프로젝트를 커스터마이즈할 수 있도록 설정할 때까지는 편집할 수 없습니다. - - -### 기초 구성과 기본 구성의 차이점 - -| 기능 | 기초 구성 | 기본 구성 | -| ------- | ------------------- | --------------------- | -| 다운로드 | 프로젝트에 액세스하면 자동으로 다운로드됨 | 고급 설정 마법사를 통해 생성됨 | -| 접근성 | 시스템 위치에 저장됨 | 수동으로 편집 가능한 파일 | -| 업데이트 | 자동으로 업데이트됨 | 수동으로 업데이트됨 | -| 파일 시스템 지원 | 파일 시스템 스키마 지원 안 함 | 폴더 구조와 파일 명명 표준을 지원하는 도구 포함 | -| 소프트웨어 통합 | 3ds Max, Houdini, Maya, Nuke, Photoshop, Flame | 기초 구성 + Hiero, Motionbulder, Mari | -| 툴킷 앱 | {% include product %} Panel, Publisher, Loader | 기초 구성 + Workfiles, Snap Shot, Scene Breakdown, Nuke Write Node, Houdini Mantra Node 등 | - -이 안내서에서는 {% include product %} 데스크톱의 마법사를 사용하여 기본 구성을 기반으로 프로젝트의 파이프라인 구성을 생성합니다. 이 구성을 생성하면 자체 프로덕션 파이프라인을 지원하는 데 필요한 커스터마이즈를 수행할 수 있게 됩니다. - -## 연습 시작 - -### 기본 구성 사용 준비 - -**1단계:** {% include product %}에 "the_other_side"라는 프로젝트를 생성합니다. - -![새 프로젝트](./images/advanced_config/2_new_project.png) - -**2단계:** {% include product %} 데스크톱 앱을 실행하고 {% include product %} 사이트의 사용자 이름 및 암호를 사용하여 로그인합니다. - -![로그인](./images/advanced_config/3_login.png) - -![프로젝트 로드](./images/advanced_config/4_load_project.png) - -**3단계:** 썸네일 이미지를 선택하여 마법사를 실행할 프로젝트로 이동합니다. - -{% include info title="팁" content="데스크톱이 열려 있는 상태에서 새 프로젝트를 생성한 경우 새 프로젝트를 표시하려면 **프로젝트**(Projects) 창을 새로 고쳐야 할 수 있습니다. 데스크톱의 오른쪽 아래에 있는 프로파일 **아바타**를 선택하고 프로젝트 새로 고침(Refresh Projects)을 선택하십시오." %} - -![프로젝트 새로 고침](./images/advanced_config/5_refresh_projects_list.png) - -### 기본 구성 액세스 - -프로젝트에 액세스할 때 기초 구성이 다운로드되고 설정되었습니다. Publish 앱 및 지원되는 소프트웨어 패키지가 탐지되어 {% include product %} 데스크톱의 **앱**(Apps) 창에 자동으로 추가되었습니다. - -**4단계:** 프로젝트가 로드되면 화면 오른쪽 아래에 있는 프로파일 **아바타**를 선택합니다. 팝업 메뉴에서 **고급 프로젝트 설정…**(Advanced project setup…)을 선택하여 마법사를 시작합니다. - -![고급 프로젝트 설정](./images/advanced_config/6_advanced_project_setup.png) - -네 개의 옵션이 있고 그중에 Shotgun 기본값({% include product %} Default)이 선택되어 있는 대화상자가 표시됩니다. 여기서 프로젝트의 파이프라인 구성을 기존 프로젝트의 구성, git 리포지토리의 구성, 디스크의 경로 중 무엇을 기반으로 할지 선택할 수 있습니다. - -이 연습에서는 **{% include product %} 기본값(Shotgun Default)**을 선택하겠습니다. 이 옵션을 선택하면 {% include product %}의 기본 구성을 기반으로 프로젝트의 파이프라인 구성이 생성됩니다. - -![구성 선택](./images/advanced_config/7_select_config.png) - -**5단계:** **계속**(Continue)을 선택합니다. - -두 개의 옵션이 있고 그중에서 **기본값**(Default)이 선택되어 있는 대화상자가 표시됩니다. 이 대화상자에는 레거시(Legacy) 기본 구성 설정을 선택할 수 있는 옵션이 있습니다. 이 구성 설정은 이전 버전의 {% include product %}를 계속 사용하는 스튜디오를 위해 제공되는 이전 버전의 설정입니다. 이 연습에서는 기본값(Default)을 사용하겠습니다. - -![구성 선택](./images/advanced_config/8_select_config.png) - -**6단계:** **계속**(Continue)을 선택합니다. - -### 프로젝트 파일의 저장소 위치 정의 - -`Storage:`라는 단어 옆에 드롭다운 메뉴가 표시되는 대화상자가 나타납니다. - -![저장소 정의](./images/advanced_config/9_define_storage1.png) - -**7단계:** 이 프로젝트에 대한 프로젝트 데이터를 저장할 위치를 나타냅니다. 대화상자 맨 위에 있는 드롭다운에서 **+ 신규**(+ New)를 선택하고 필드에 **프로젝트**(projects)를 입력합니다. - -![저장소 정의](./images/advanced_config/10_define_storage2.png) - -{% include product %} 툴킷은 세 개의 운영 체제인 Linux, Mac, Windows를 지원합니다. - -**8단계:** 프로젝트 데이터를 저장하는 데 사용되는 운영 체제 옆에 있는 필드를 선택합니다. 폴더 아이콘을 선택하고 이 연습을 진행하기 전에 파일 시스템에 생성한 프로젝트 폴더로 이동합니다. - -![저장소 루트 폴더](./images/advanced_config/11_storage_root_folder.png) - -이 설정을 진행하면 프로덕션 데이터 저장 위치로 지정한 폴더에만 {% include product %}가 액세스할 수 있게 됩니다. 이 연습의 준비 과정에서 {% include product %} 루트 디렉토리에 `projects/` 디렉토리를 추가했습니다. `projects/` 디렉토리는 툴킷이 로컬 프로젝트 관련 정보를 저장할 위치입니다. - -![저장소 정의](./images/advanced_config/12_define_Storage3.png) - -**9단계:** **저장**(Save)을 선택하여 프로젝트 데이터를 저장할 프로젝트 폴더를 지정합니다. - -![저장소 정의](./images/advanced_config/13_define_storage4.png) - -프로젝트 데이터가 저장되는 경로를 나타내도록 운영 체제 경로가 자동으로 업데이트됩니다. - -**10단계:** **계속**(Continue)을 선택합니다. - -### 프로젝트 폴더의 이름 지정 - -텍스트 필드에 프로젝트 이름이 입력된 상태로 대화상자가 표시됩니다. 이 이름은 프로젝트 정보에서 가져와서 자동으로 입력되며 경로도 자동으로 업데이트됩니다. - -![프로젝트 폴더](./images/advanced_config/14_project_folder_name.png) - -툴킷은 파이프라인 구성이 {% include product %}에 업로드되고 각 사용자에 대해 로컬로 캐시되는 분산 설정이나 사용자가 디스크에서 공유된 위치에 있는 단일 구성에 액세스하는 중앙 집중식 설정에서도 작동할 수 있습니다. 이 연습에서는 중앙 집중식 설정을 사용하겠습니다. [분산 설정에 대한 자세한 내용은 여기서 확인할 수 있습니다](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations). - -마지막 단계에서는 프로젝트와 관련된 구성을 생성하기 위해 적합한 폴더, 파일 및 데이터를 생성합니다. - -![중앙 저장소](./images/advanced_config/15_centralized_storage.png) - -**11단계:** 해당하는 운영 체제에서 **찾아보기...**(Browse...)를 선택하고 이 연습을 준비할 때 생성한 구성 폴더 `configs`로 이동한 후 프로젝트 이름 **the_other_side**를 입력합니다. 그러면 폴더가 생성되고, 이 폴더에 프로젝트 구성이 저장됩니다. **설정 실행**(Run Setup)을 선택하고 설정이 완료될 때까지 기다립니다. - -![프로젝트 설정](./images/advanced_config/16_project_setup_config.png) - -**12단계:** **완료**(Done)를 선택하여 프로젝트 창에 나타나는 새 아이콘을 표시합니다. - -![설정 완료](./images/advanced_config/17_project_setup_complete.png) - -**팁:** {% include product %} 데스크톱에 신속하게 액세스하기 위해 메뉴 막대에 앱을 고정할 수 있습니다. 이렇게 하려면 **아바타**를 선택하고 **메뉴에 고정(Pin to Menu)**을 선택하십시오. - -다 되었습니다. 프로젝트 설정이 완료되었습니다. 이제 기본 구성을 기반으로 지정한 위치에 프로젝트에 대한 툴킷 파이프라인 구성이 생성되었으므로 커스터마이즈 작업을 시작할 수 있습니다. - -`configs` 폴더를 살펴보면 여러 폴더와 파일을 보실 수 있을 것입니다. 어떠한 것들이 있는지 잠시 살펴보시기 바랍니다. - -![구성](./images/advanced_config/18_config.png) - -이제 정말로 재미있는 내용으로, 구성으로 수행할 수 있는 모든 작업에 대해 살펴보겠습니다. 여기서 살펴볼 고급 항목은 다음과 같습니다. - -## 고급 항목 - -{% include product %} 툴킷에서는 구성을 간편하게 편집하고 복제하고 가져올 수 있는 방법을 다양하게 제공합니다. 기존의 구성을 확장하면 시간을 절약할 수 있으며 네트워크에 있는 다른 작업자가 만든 모든 멋진 구성을 이용할 수 있습니다. 필요한 구성을 찾기 위해 방대한 {% include product %} [커뮤니티](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=ko#!forum/shotgun-dev)를 활용할 수 있습니다. {% include product %} 커뮤니티는 정보를 공유하는 커뮤니티이므로 서로에게 친절하게 대하고, 작업에 도움이 되는 구성을 발견하면 작성자의 공로를 인정하고 감사의 인사를 전해 주시기 바랍니다. 그리고 {% include product %} 사용자들에게 도움이 될 새로운 정보를 게시하는 것도 잊지 마십시오. 이런 식으로 우리는 서로를 도와가며 특별한 커뮤니티를 만들어 가고 있습니다! - -다음은 재미있게 구성 관련 작업을 진행할 수 있는 몇 가지 방법입니다. - -### 명령행을 사용하여 기본 구성 생성 - -프로젝트 구성에서 `tank` 명령을 사용하여 터미널에서 관리자 명령을 실행할 수 있습니다. 프로젝트마다 고유한 전용 `tank` 명령이 있습니다. `tank setup_project` 명령의 기능은 고급 설정 마법사와 유사합니다. 이 명령은 기존 프로젝트의 구성이나 기본 구성을 기반으로 디스크에 프로젝트에 대한 편집 가능한 구성을 생성합니다. [`tank setup_project`를 실행하는 방법에 대한 자세한 내용은 여기](https://developer.shotgridsoftware.com/ko/425b1da4/#setup_project)서 확인하고 [`tank` 명령에 대한 자세한 내용은 여기](https://developer.shotgridsoftware.com/ko/425b1da4/#using-the-tank-command)서 확인하십시오. - -### 프로덕션 단계에 적용된 구성 편집 - -현재 프로덕션 단계에 적용된 구성을 수정하고 싶지만 아티스트가 사용하는 동안에는 편집하고 싶지 않은 경우가 있습니다. {% include product %}에서는 단 몇 개의 명령으로 기존 구성을 복사하여 수정된 구성을 프로덕션에 적용하기 전에 안전하게 수정 사항을 테스트해 볼 수 있습니다. 이 프로세스에서는 프로덕션 구성을 새 구성으로 교체하고 이전 구성은 자동으로 백업합니다. - -구성의 복사본을 작성하는 것은 대개 다음과 같은 이유 때문입니다. - -1. 구성 업데이트 -2. 라이브로 적용하기 전에 수정 사항 테스트 -3. 일부 앱 업그레이드 또는 추가 -4. 테스트 후 개발 진행 및 롤아웃 - -구성을 복제하는 방법과 구성 관리에 대한 기타 기본 사항을 알아보려면 [구성 스테이징 및 롤아웃 문서](https://developer.shotgridsoftware.com/ko/60762324/#cloning-your-configuration)를 참조하십시오. - -### 파이프라인 구성의 클라우드 배포 - -이 안내서에서는 공유 네트워크 위치에 있으면서 모든 사용자가 액세스하게 되는 파이프라인 구성의 단일 사본인 **중앙 집중식 구성**을 생성하는 과정을 살펴봅니다. 하지만 작업 인력이 여러 위치 및 네트워크에 분산되어 있는 경우 파이프라인 구성의 단일 사본을 공유하는 것이 가능하지 않을 수 있습니다. 이 시나리오의 툴킷을 사용하면 **분산 구성** 옵션을 통해 파이프라인 구성을 {% include product %}에 업로드할 수 있으며 사용자가 프로젝트에 액세스할 때마다 구성이 다운로드되고 로컬로 캐시됩니다. [Core API 개발자 문서](https://developer.shotgunsoftware.com/tk-core/initializing.html#distributed-configurations)에서 분산 구성에 대한 자세한 내용을 알아볼 수 있습니다. - -### 둘 이상의 루트 폴더 사용 - -스튜디오에서 대개 특정한 작업에 맞게 최적화하는 것을 이상적으로 여깁니다. 둘 이상의 루트 폴더를 사용하여 한 서버에서는 데일리를 위한 비디오 재생과 같은 작업을, 다른 서버에서는 대화식 처리를 수행하는 식으로 작업을 최적화할 수 있습니다. 툴킷에서는 이와 같은 워크플로우를 용이하게 하기 위해 둘 이상의 저장소 루트를 사용할 수 있도록 허용합니다. [단일 루트에서 다중 루트 구성으로 변환하는 방법](../../../quick-answers/administering/convert-from-single-root-to-multi.md)을 확인하십시오. - -프로젝트에 대한 파이프라인 구성을 갖추었으므로 편집을 시작해 보시기 바랍니다. 다음 안내서인 [파이프라인 구성 편집](editing_app_setting.md)으로 이동하여 방법을 알아보십시오. 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 deleted file mode 100644 index 20227ee05..000000000 --- a/docs/ko/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: default -title: 파일 시스템 구성 -pagename: toolkit-guides-filesystem-configuration -lang: ko ---- - -# 동적 파일 시스템 구성 - -이 안내서에서는 툴킷 파이프라인 구성을 수정하여 프로덕션 폴더 구조와 파일 명명 규칙을 커스터마이즈하는 방법을 설명합니다. - -## 안내서 정보 - -파이프라인 관리의 가장 어려운 점 중 하나는 생성되는 다양한 파일을 추적하는 것입니다. 툴킷 파이프라인은 {% include product %}의 데이터 및 구성된 폴더 구조를 기반으로 폴더를 만들고 올바른 위치에 표준화된 명명 규칙을 사용하여 자동으로 파일을 작성하는 방식으로 파일 시스템 관리를 자동화해 주므로 아티스트는 컨텐츠 생성에 집중할 수 있습니다. 파이프라인 구성은 기본 폴더 세트 및 파일 명명 규칙과 함께 제공되지만 프로덕션에서는 이를 커스터마이즈하는 경우가 많습니다. 이 안내서에서는 이러한 커스터마이즈에 필요한 지식을 제공합니다. - -기본 구성에서 에셋은 `asset_type/asset/pipeline_step`과 같은 폴더 구조로 관리됩니다. 이 안내서에서는 "Set"라는 커스텀 엔티티를 사용하여 각 에셋이 사용되는 프로덕션 세트별로 에셋을 추가 구성합니다. 먼저 {% include product %}에서 커스텀 엔티티를 설정한 다음 이를 사용하여 지정된 세트에 생성된 에셋을 관리합니다. 폴더 구조는 `set/asset_type/asset/pipeline_step`과 같은 형태입니다. - -일부 씬은 차고에서 진행되고 나머지 씬은 다이닝룸에서 진행하는 프로젝트를 수행한다고 가정하고 세트별로 에셋을 구성하는 방식을 설명하겠습니다. 설정을 사용하면, "wrench", "oilcan" 또는 “workbench"와 같은 에셋에 대한 파일은 "garage" 폴더에 구성되고 "plate", "winebottle" 또는 "tablecloth"와 같은 에셋에 대한 파일은 "dining_room" 폴더에 구성됩니다. 예제에서 군침 도는 "filet" 에셋은 적절하게 다이닝룸에 배치됩니다. - -예제에서는 프로젝트에 대한 파일 명명 템플릿도 편집하여 에셋에 대한 Maya 작업 파일에 해당 이름의 세트가 포함되도록 합니다. 동적으로 생성된 파일 이름은 다이닝룸에 대한 파일과 다른 세트에서 사용된 파일로 구분됩니다. - -### 이 안내서는 다음과 같이 세 부분으로 구성됩니다. - -* {% include product %}에서 "Set"라는 **커스텀 엔티티** 만들기. 아티스트가 만드는 다이닝룸 요소와 연결하는 데 사용됩니다. -* **스키마** 폴더 편집. 툴킷이 폴더 구조에서 현재 세트를 기반으로 동적으로 이름이 지정된 폴더를 포함할 수 있게 합니다. -* 에셋 작업 파일 이름 지정에 사용되는 **템플릿** 편집. 툴킷이 파일 이름에 연관된 세트 이름을 포함할 수 있게 합니다. - -### 필수 요건 - -이 안내서를 사용하려면 다음이 필요합니다. - -1. 활성 [{% include product %}](https://www.shotgridsoftware.com/signup/) 사이트 하나 이상의 에셋이 생성된 프로젝트가 있어야 합니다. 에셋에는 모델 태스크가 있어야 합니다. -2. {% include product %} 사이트를 에셋 관리에 사용하는 방법에 대한 기본적인 이해 -3. [{% include product %} 데스크톱](https://developer.shotgridsoftware.com/ko/d587be80/#installation-of-desktop)이 시스템에 설치되어 있어야 합니다. -4. 식별된 프로젝트에 대한 복제된 파이프라인 구성이나 [구성 시작하기](./advanced_config.md) 안내서를 완료하고 해당 연습에서 생성한 구성 복제 -5. YAML에 대한 기본 지식 -6. 파이프라인 구성이 저장된 파일 시스템에 대해 읽기 및 쓰기 권한을 적절하게 설정합니다. -7. 툴킷이 프로덕션 파일 시스템에 읽고 쓸 수 있도록 읽기 및 쓰기 권한을 적절하게 설정합니다. -8. 활성 상태의 Maya 서브스크립션. [Maya](https://www.autodesk.co.kr/products/maya/free-trial)의 30일 체험판을 구할 수 있습니다. - -이 안내서는 `tk-config-default2` 파이프라인 구성을 기반으로 합니다. 이 구성을 수정한 경우 YAML 설정의 파일, 폴더 및 블록의 위치가 여기에 설명된 것과 다를 수 있습니다. - -### 파일 스키마 및 템플릿 정보 - -툴킷 파이프라인 구성에서 스키마 및 템플릿을 사용하면 {% include product %} 데이터를 활용하여 디스크의 프로덕션 파일을 관리할 수 있습니다. 기본 구성의 스키마에는 **샷**, **시퀀스**, **에셋**, **에셋 유형** 등의 엔티티가 포함됩니다. **레벨**, **에피소드**, **시즌**과 같은 다른 엔티티나 앞에서 설명한 **세트(Set)**같은 커스텀 엔티티를 추가할 수 있습니다. - -툴킷 플랫폼을 통해 **스키마**를 사용하여 동적으로 폴더 구조를 빌드할 수 있습니다. 스키마는 실제 프로덕션 파일 시스템을 빌드할 때 템플릿으로 사용되는 프로덕션 폴더 구조의 미니어쳐 버전입니다. 스키마는 동적 폴더 생성을 위한 명시적 지침으로, YAML 파일을 사용하여 동적으로 생성된 폴더의 규칙을 정의합니다. 기본 구성에는 에셋 및 샷 파이프라인에 대한 폴더 생성을 지원하는 사전 구성된 스키마가 포함됩니다. 에셋 폴더 구조(`/assets///`) 생성을 지원하는 스키마 부분을 수정하여 새로 생성하는 **Set** 엔티티도 지원할 수 있습니다. - -**템플릿**을 사용하면 {% include product %} 데이터 및 스키마 구조의 정보를 사용하여 만든 파일을 동적으로 이름을 지정하고 저장할 수 있습니다. 기본 구성은 파이프라인의 요구에 맞게 편집할 수 있는 일련의 초보자용 템플릿을 제공합니다. - -ShotGrid 통합의 기본 설정에는 파일 시스템 관리가 포함되지 않습니다. 프로젝트에 대한 파일 시스템 관리를 구성하려면 프로젝트에 고급 설정이 필요합니다. 첫 번째 안내서인 [구성 시작하기](./advanced_config.md)에서 고급 설정 프로세스에 대해 설명합니다. - -## 연습 시작 - -스키마 및 템플릿을 커스터마이즈하면 상차림, 뜨거운 필레미뇽, Penfolds Grange Hermitage 1951 와인, 감자 그라탱, 레몬 갈릭 아스파라거스 등 다이닝룸 세트를 만들 때 생성된 파일을 동적으로 관리할 수 있습니다. 다이닝룸 세트에 사용된 에셋은 보다 쉽게 관리할 수 있도록 "Dining Room" Set 엔티티와 연결됩니다. Set는 기본 구성과 함께 제공되는 표준 엔티티 유형이 아니므로 [커스텀 엔티티](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)를 활성화한 후 스키마 및 템플릿을 확장하기 전에 Set로 호출해야 사용할 수 있습니다. - -### 커스텀 엔티티 활성화하기 - -**1단계:** 브라우저에서 {% include product %} 사이트를 엽니다. 아바타를 클릭하고 관리자(ADMIN) > 사이트 기본 설정(Site Preferences)으로 이동합니다. 결과 페이지에서 **엔티티**(Entities) 섹션을 확장합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/1_site_preferences.png) - -{% include product %}에서 사용할 수 있는 엔티티 유형 목록이 표시됩니다. 아래 이미지에서 목록 상단에는 현재 {% include product %} 사이트에 구성된 일부 엔티티 유형이 있습니다. 이러한 엔티티 유형 아래에는 구성되지 않았거나 활성화되지 않은 몇 가지 **커스텀 엔티티**가 있습니다. - -### 커스텀 엔티티 유형 중 하나를 선택하고 구성하고 활성화합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/2_custom_entity.png) - -**2단계:** 화살표를 선택하여 회색으로 비활성화된 커스텀 엔티티에 대한 설정을 엽니다. **예, 커스텀 엔티티 사용...**(Yes, use Custom Entity...) 옆의 라디오 버튼을 선택하고 **표시 이름**(Display name)을 **Set**로 변경한 다음 창의 맨 위로 스크롤하여 변경 사항 저장(Save Changes)을 선택합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/4_enable_entity.png) - -이렇게 하면 {% include product %}에서 해당 커스텀 엔티티가 활성화되고 표시 이름이 *Set*로 표시됩니다. 기본적으로 엔티티의 시스템 이름은 `CustomEntity01`로 유지되므로 커스텀 엔티티에 대한 별칭을 작성합니다. 이 예제에서는 `CustomEntity01`을 사용하지만 다른 커스텀 엔티티를 사용할 수 있습니다. - -선택한 커스텀 엔티티의 시스템 이름을 기억하십시오. - -### 데이터 필드를 추가하여 에셋을 세트와 연결 - -에셋 엔티티에 데이터 필드를 추가하면 에셋을 새 엔티티에 링크할 수 있습니다. 아티스트가 다이닝룸에 대해 만드는 에셋은 **Dining Room** Set 엔티티와 연결됩니다. - -**3단계:** 페이지 맨 위에 있는 **프로젝트**(Projects) 드롭다운을 선택하고 이 연습에서 사용할 프로젝트를 엽니다. - -**4단계:** 프로젝트 메뉴 막대에서 **에셋**(Assets)을 선택하여 에셋(Assets) 페이지로 이동합니다. 에셋(Assets) 메뉴에서 **필드(Fields) > 에셋 필드 관리...(Manage Asset Fields…)**를 선택합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/5_manage_asset_fields.png) - -그러면 에셋 필드 관리자가 표시됩니다. - -![Python 앱](./images/dynamic_filesystem_configuration/6_manage_asset_fields.png) - -**새 필드 추가**(+ Add a new field)를 선택합니다. - -새 필드에 대한 매개변수를 선택합니다. - -**새 필드 이름**(New Field Name)에 "Set"를 입력합니다. **일반**(GENERAL) 메뉴 아래 **필드 유형**(Field Type)에서 **엔티티**(Entity)를 선택하고 **유형 제한**(Restrict the type)을·스크롤하여 **Set**를 선택합니다. **다음**(Next)을 선택합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/7_field_parameters.png) - -이 안내서에서는 이를 **현재 프로젝트만**(Only the current project)으로 적용하고 **필드 만들기**(Create Field)를 선택합니다. - -{% include product %}가 새 필드를 구성합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/8_only_current_project.png) - -변경 사항이 적용되면 **완료**(Done)를 선택할 수 있습니다. - -### **Dining Room** Set 엔티티 만들기 - -**5단계:** 에셋의 새 **Set** 필드를 선택하고 Dining Room을 입력합니다. **일치하는 항목을 찾을 수 없습니다. "Dining Room" 만들기**라고 적힌 대화상자가 표시됩니다. - -![Python 앱](./images/dynamic_filesystem_configuration/11_create_set.png) - -**"Dining Room" 만들기**(Create “Dining Room”)를 선택합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/12_dining_room_set.png) - -**Set 만들기**(Create Set)를 선택합니다. - -에셋의 Set 필드에 **Dining Room**을 추가하면 Dining Room Set 엔티티와 [연결](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_linking_custom_entities_html)이 만들어집니다. - -![Python 앱](./images/dynamic_filesystem_configuration/13_dining_room_associated.png) - -**6단계:** 테스트용으로 쉽게 찾을 수 있도록 **필레** 에셋에 대한 모델 태스크를 자신에게 할당합니다. - -### 스키마 설정 - -이제 Set 커스텀 엔티티가 활성화되고 "Dining Room"이라는 Set 엔티티가 만들어지고 에셋 엔티티가 Dining Room Set에 링크되었습니다. {% include product %} 사이트에서 모든 부분이 준비되었으며 이제 폴더 구조를 수정할 수 있습니다. 아티스트가 태스크에 대한 작업을 시작하면 툴킷은 연결된 {% include product %} 데이터를 사용하여 파일 시스템에 만들 폴더를 결정합니다. 새 폴더가 생성되고 파이프라인 구성 스키마를 기반으로 이름이 자동으로 지정됩니다. - -이제 아티스트가 프로덕션 파이프라인을 단계별로 수행할 때 툴킷에서 동적으로 생성할 폴더 구조를 정의할 수 있습니다. 이 작업은 스키마를 편집하여 수행합니다. - -활성 프로덕션 구성에 영향을 주지 않도록 *복제된* 구성에서 구성을 테스트하는 것이 좋습니다. 복제 프로세스는 구성의 *복사본*을 만들어 변경 사항을 라이브 구성에 적용하기 전에 안전하게 편집할 수 있습니다. 구성 복제에 대한 자세한 내용은 [구성 스테이징 및 롤아웃](https://developer.shotgridsoftware.com/ko/60762324/#cloning-your-configuration) 문서에서 찾을 수 있습니다." - -**7단계:** 파이프라인 구성으로 이동합니다. 스키마 폴더(`/config/core/schema`)로 찾아 들어가고 `project` 폴더를 엽니다. - -![Python 앱](./images/dynamic_filesystem_configuration/15_file_structure.png) - -현재 스키마는 다음과 같으며 - -`/assets///` - -다음 폴더 구조를 동적으로 만들 수 있습니다. - -`the_other_side/assets/prop/filet/model` - -여기서는 다음과 같은 구조가 필요합니다. - -`the_other_side/assets/Dining-Room/Prop/filet/model` - -이렇게 하려면 다음과 같은 스키마를 설정합니다. - -`/assets////` - -Set 엔티티는 `CustomEntity01`로 표시됩니다. {% include product %}에서 Set의 *표시 이름*으로 CustomEntity01을 제공했지만 구성에서 항상 시스템 이름으로 `CustomEntity01`을 참조합니다. - -### 스키마가 YAML 파일을 사용하는 방법 - -스키마는 정적 및 동적 폴더를 포함할 수 있습니다. "assets"라는 스키마에 정적 폴더가 있는 경우 "assets"라는 프로덕션 파일 시스템의 단일 폴더에 해당합니다. 반면 프로젝트의 각 에셋에 대한 하나의 폴더를 나타내는 "asset"이라는 스키마의 동적 폴더가 있을 수 있습니다. 모든 동적 폴더에는 그 옆에 폴더와 동일한 이름을 가진 YAML 파일이 있습니다(예: `asset/` 및 `asset.yml`). 이 파일은 스키마 폴더를 기반으로 프로덕션 폴더를 생성하는 방법에 대한 규칙을 정의합니다. - -### Set 엔티티에 대한 새 폴더 및 YAML 파일 만들기 - -스키마에는 {% include product %}에서 추적하는 다른 엔티티에 대한 폴더가 포함된 `project` 폴더가 있습니다. 새 에셋 엔티티 CustomEntity01을 추가하여 {% include product %}에서 Set의 항목을 추적할 수 있도록 합니다. 이러한 항목은 에셋이므로 에셋에서 폴더 및 YAML 파일을 편집할 수 있습니다. - -다시 말하지만 우리의 목표는 `asset_type/asset/step` 폴더 구조에서 `set/asset_type/asset/step` 폴더 구조로 바꾸는 것입니다. 따라서 해당 YAML 파일을 사용하여 스키마에서 세트를 나타내는 폴더를 추가하려고 합니다. 커스텀 엔티티에 대한 시스템 이름을 사용해야 하므로 `CustomEntity01/` 폴더와 `CustomEntity01.yml`을 만듭니다. - -**8단계:** 스키마의 `project/assets` 폴더 내에 `CustomEntity01` 폴더를 추가합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - - -**9단계:** 다음 내용으로 `CustomEntity01` 폴더 옆에 `CustomEntity01.yml` 파일을 만듭니다. - -```yaml -type: "shotgun_entity" - -name: "code" - -entity_type: "CustomEntity01" - -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } -``` - -YAML 파일은 툴킷에서 `CustomEntity01` 폴더 이름을 무엇으로 지정할지에 대한 지침을 제공합니다. 여기서는 유형이 `{% include product %}_entity`인 폴더를 만들고 있으며 이는 {% include product %} 쿼리에 해당함을 의미합니다. `entity_type` 필드는 {% include product %}에서 `CustomEntity01` 엔티티를 쿼리함을 나타내고 `name`필드는 쿼리할 엔티티에 대한 *필드*를 나타내며 여기서는 `CustomEntity01`에서 `code` 필드를 가져옵니다. - -`filters` 필드는 이 동적 폴더를 만들어야 하는 경우를 제한합니다. - -**10단계:** `asset_type/` 및 `asset_type.yml`을 `CustomEntity01` 폴더로 이동합니다. - -`Dining-Room/Prop/filet`와 같은 폴더 구조가 필요하므로 계층에서 `asset_type` 폴더는 `CustomEntity01` 폴더 *아래*에 있어야 합니다. `asset_type/` 및 `asset_type.yml`을 `CustomEntity01` 폴더로 이동합니다. - -![Python 앱](./images/dynamic_filesystem_configuration/17_schema.png) - -### asset.yml 파일 편집 - -`filters` 필드는 지정 시간에 생성된 폴더가 있는 엔티티를 제한합니다. 현재 상태에서 `asset.yml`의 필터 필드는 다음과 같습니다. - -```yaml -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } -``` - -에셋에 대한 폴더를 만들기로 결정할 때 올바른 프로젝트 폴더에 있는지 올바른 asset_type 폴더에 있는지 확인하고 싶습니다. 이제 세트 폴더를 추가했으며 세 번째 필터를 추가하려고 합니다. 이 작업을 하지 않고 다음과 같은 폴더로 끝내면 잘못됩니다. - -``` -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": [ "$CustomEntity01" ] } -``` - - -## 폴더 생성 테스트 - -이제 Set 커스텀 엔티티별로 에셋을 구성하도록 스키마가 성공적으로 수정되었습니다. 이제 테스트해 보겠습니다. - -폴더는 툴킷 파이프라인 워크플로우의 몇 지점에서 생성됩니다. - -* **응용프로그램 시작 관리자**: 사용자가 태스크에 대한 DCC를 시작할 때마다 툴킷은 해당 태스크에 대한 디렉토리를 만듭니다(아직 없는 경우). 툴킷을 사용하여 수행하는 첫 번째 작업이 보통 DCC를 시작하는 것이기 때문에 이 방법이 디렉토리를 생성하는 가장 일반적인 방법입니다. 이 작업은 {% include product %} 또는 {% include product %} 데스크톱이나 Create 앱에서 마우스 오른쪽 버튼 클릭 메뉴를 통해 수행할 수 있습니다. -* **{% include product %} 메뉴**: 태스크에 대해 폴더를 만드는 가장 직접적인 방법은 {% include product %}에서 태스크를 마우스 오른쪽 버튼으로 클릭하고 "폴더 만들기"(Create Folders) 메뉴 항목을 선택하는 것입니다. -* **툴킷 API**: 툴킷 API를 통해 직접 디렉토리 생성 로직을 트리거할 수 있습니다. 툴킷 API는 커스텀 시작 관리자에 툴킷을 연결하거나, {% include product %}에서 샷이 생성될 때 샷에 대한 디렉토리를 자동으로 만들려는 워크플로우의 이벤트 트리거 등에 사용할 수 있습니다. -* **tank 명령**: {% include product %}의 메뉴 항목과 유사하며 `tank folders` 터미널 명령도 태스크에 대한 폴더를 만듭니다. - -`tank` 명령을 사용하여 테스트하겠습니다. - -**12단계:** `filet` 에셋에서 `tank folders`를 실행합니다. 터미널에서 다음을 실행합니다. - -``` -> cd -> ./tank Asset Filet folders -``` - -출력을 요약하면 다음과 같습니다. - -``` ----------------------------------------------------------------------- -Command: Folders ----------------------------------------------------------------------- - -Creating folders, stand by... - -The following items were processed: - - /Users/michelle/Documents/Shotgun/projects/the_other_side -. . . - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/ - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/publish -. . . - -In total, 23 folders were processed. -``` - -최종 구조는 예상과 일치하며 Dining과 Room 사이에 대시가 추가될 정도로 툴킷이 스마트합니다. - -`/the_other_side/assets/Dining-Room/Prop/Filet/model` - - -![Python 앱](./images/dynamic_filesystem_configuration/folders_done.png) - -### 파일을 읽고 쓰기 위한 툴킷 템플릿 - -이제 폴더 구조가 설정되었으며 다음 단계는 프로덕션 파일의 이름이 적절하게 지정되고 생성 시 올바른 폴더에 들어가도록 *템플릿*을 편집하는 것입니다. - -### 툴킷 앱의 템플릿 사용 방법 - -먼저 세트를 나타내는 CustomEntity01을 활성화한 다음 에셋 엔티티에 에셋과 세트 간 링크를 나타내는 링크 필드를 추가하면 {% include product %}에서 세트와 에셋을 연결할 수 있습니다. 에셋과 세트 간에 관계를 설정한 후 폴더 스키마를 설정하여 해당 연결을 사용해 모든 에셋 *폴더*를 연결된 세트의 폴더 내에 배치합니다. 이제 *파일*의 이름을 동적으로 지정하고 툴킷 앱에서 자동으로 파일을 관리할 수 있습니다. - -아티스트가 프로젝트의 태스크 작업을 시작하면 필수 폴더 구조가 생성됩니다. 그러 다음 아티스트가 Workfiles 앱의 **파일 저장**(File Save) 액션을 시작하면 자동으로 파일 이름이 지정됩니다. 툴킷의 Workfiles 앱을 통해 액세스한 템플릿은 해당 파일의 이름을 지정하는 데 사용됩니다. Nuke Write 노드 및 Houdini Mantra 노드와 같은 렌더 앱은 템플릿을 사용하여 렌더링된 파일의 이름을 지정하고 파일을 저장합니다. 게시된 파일의 경우 Publisher 앱에서 수행하는 작업입니다. - -Workfiles **파일 열기**(File Open) 액션을 사용하여 파일이 액세스되면 앱은 템플릿을 사용하여 해당 파일을 찾아 로드합니다. Publisher, Loader 및 Nuke Studio Export 앱도 템플릿을 사용하여 파일을 찾고 관리합니다. 아티스트는 파일 이름이나 위치에 대해 걱정할 필요가 없으며 툴킷이 템플릿과 수행할 태스크를 기반으로 모두 관리합니다. - -템플릿은 구성 파일 `//config/core/templates.yml`에 의해 관리됩니다. 마지막 두 안내서에서는 작업 환경에 관련된 설정을 관리하고 만들었습니다. 스키마 및 템플릿 설정은 `config/core` 폴더에 저장되며 환경에 한정되지 않습니다. 모든 템플릿은 단일 파일에 저장되고 다른 환경 구성 파일의 앱 설정 시 이 파일에서 참조됩니다. 예를 들어 `template_work`는 작업 파일에 사용하기 위해 `templates.yml`에서 템플릿을 지정하는 Workfiles 앱의 설정입니다. Workfiles가 구성된 환경 및 엔진에 따라 이 구성 설정을 사용하여 `templates.yml`에서 `maya_shot_work` 템플릿 또는 `houdini_asset_work` 템플릿을 지정할 수 있습니다. - -**13단계:** 파이프라인의 구성에서 `config/core/templates.yml`을 엽니다. - -이 파일은 다음 세 개의 섹션으로 나뉩니다. - -* **키:** 템플릿 작성에 사용할 토큰 세트입니다(예: `{version}`, `{Asset}`, 등). 템플릿이 실제로 사용될 때 실제 값으로 대체됩니다. 각 키에는 필요한 이름과 유형 및 기타 선택적 매개변수가 있습니다. -* **경로:** 키를 사용하여 디스크의 폴더 및 파일에 대한 경로를 나타내는 명명된 문자열입니다. `paths` 섹션의 템플릿은 유효성이 검사되고 디스크에 실제로 존재해야 합니다. -* **문자열:** 경로 섹션과 유사하지만 임의 텍스트에 대한 템플릿입니다. 경로 섹션의 항목은 유효성이 검사되고 디스크의 실제 경로와 일치해야 하며 문자열은 툴킷 워크플로우에서 참조하려는 텍스트 데이터를 저장하는 데 사용할 수 있습니다. - -### Set 엔티티에 대한 템플릿 키 추가 - -가장 먼저 할 일은 엔티티의 시스템 이름을 사용하여 Set 엔티티에 대한 새 키를 정의하는 것입니다. - -**14단계:** 들여쓰기에 유의하여 `templates.yml`의 `keys` 섹션에 다음 줄을 추가합니다. - -```yaml - CustomEntity01: - type: str -``` - -### 템플릿 수정 - -템플릿은 툴킷이 파일을 읽고 쓰는 위치를 정의하기 때문에 여기에서 정의한 경로와 스키마에서 정의한 폴더 구조가 일치하는 것이 중요합니다. 결국 프로덕션 파일은 여기에서 생성하는 파일 시스템으로 이동해야 합니다. 따라서 모든 에셋 관련 템플릿을 스키마에서 정의한 새 폴더 구조와 일치하도록 수정합니다. - -그런 다음 Maya에서 에셋 단계의 작업 파일에 대한 템플릿을 수정하여 세트도 파일 이름에 포함하도록 합니다. 기본 구성에서 문제의 템플릿은 `maya_asset_work`이며 이 템플릿부터 살펴보겠습니다. - -Maya에서 에셋 기반 Workfiles에 대해 `maya_asset_work`라는 템플릿을 사용하는 것이 기본 구성의 규칙입니다. 올바른 템플릿인지 확인하려면 `asset_step` 환경([여기서는 GitHub](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.4/env/includes/settings/tk-multi-workfiles2.yml#L217))에서 `tk-maya` 엔진의 `tk-multi-workfiles2`에 대한 `template_work` 설정 값을 확인합니다. - -**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`로 시작합니다. `@` 기호는 `@asset_root` 값이 다른 곳에서 정의된 것임을 나타냅니다. - -앞의 `@` 기호는 환경 구성 파일에서처럼 `templates.yml`에서 *포함*을 나타내지 않습니다. - -각 통합, 각 앱 및 각 환경이 다른 설정을 사용할 수 있기 때문에 경로의 첫 번째 부분은 `templates.yml` 내의 다양한 지점에 사용될 수 있음을 가정할 수 있습니다. 구성은 단일 변수를 사용하여 공통 경로 루트를 저장한 다음 템플릿 내에서 해당 변수를 참조할 수 있도록 설정됩니다. 공통 루트를 참조할 수 있는 경우 경로 생성 설정의 각 인스턴스를 변경할 필요가 없습니다. - -기본 구성에는 세 개의 공통 루트 변수 `@shot_root`, `@sequence_root` 및 `@asset_root`가 있습니다. `@asset_root`를 수정하겠습니다. 이렇게 한 번 변경하면 모든 에셋 관련 템플릿에 영향이 미칩니다. - -### 템플릿을 파일 시스템 스키마의 경로와 일치하도록 편집 - -**16단계:** `templates.yml`의 `paths` 섹션 맨 위에서 `asset_root`를 찾습니다. 기본 구성에서는 다음과 같습니다. - -`asset_root: assets/{sg_asset_type}/{Asset}/{Step}` - -스키마 수정 사항과 일치하도록 `asset_root` 경로에 `CustomEntity01`을 추가합니다. - -`asset_root: assets/{CustomEntity01}/{sg_asset_type}/{Asset}/{Step}` - -### 파일 이름에 세트 추가 - -스키마 변경 사항을 반영하도록 파일의 폴더 구조를 변경했으며 이제 적절한 위치에서 파일을 읽고 쓸 수 있습니다. 그럼 이제 Maya 에셋 작업 파일 템플릿에 대한 파일 *이름*에도 세트가 포함되도록 수정하겠습니다. - -`maya_asset_work` 템플릿 정의를 다시 찾습니다. 현재 상태에서 파일 *이름*은 다음과 같습니다. - -`{name}.v{version}.{maya_extension}` - -`{name}` 템플릿 키는 Workfiles 앱의 파일 저장(File Save) 액션에서 사용자 입력을 나타내는 특수 키입니다. 템플릿에 어떤 사용자 입력도 포함하지 않고 대신 현재 세트 및 에셋으로만 구성되도록 수정하겠습니다. - -**17단계:** `maya_asset_work` 템플릿 정의를 다음과 같이 수정합니다. - -```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' -``` - -이 액션을 통해 파일 이름에 Dining-Room 엔티티의 적절한 이름을 사용할 수 있습니다. 결과는 `Dining-Room_Filet.v1.mb`와 같이 지정됩니다. - -이제 프로덕션 폴더 구조에 새 세트 폴더를 반영하고 Maya에서 에셋 태스크에 대한 작업 파일에 세트 이름을 포함하도록 `templates.yml`이 수정되었습니다. 변경 사항을 테스트해 보겠습니다. - -### 테스트 - -**18단계:** {% include product %} 데스크톱에서 Maya를 시작합니다. - -![Python 앱](images/dynamic_filesystem_configuration/23_test_file_creation.png) - -Maya에서 **{% include product %} > 파일 열기(File Open)**로 이동하여 결과 대화상자에서, {% include product %}에서 Set를 지정한 에셋에 대한 태스크를 선택합니다. - -![Python 앱](images/dynamic_filesystem_configuration/24_test_new_file.png) - -**+새 파일**(+New File)을 선택합니다. - -간단한 3D 객체를 만들거나 **{% include product %} > 파일 저장(Save File)**을 사용하여 파일을 저장할 수 있습니다. - -![Python 앱](images/dynamic_filesystem_configuration/file_save.png) - -다 되었습니다! - -**파일 저장**(File Save) 대화상자에 새 템플릿 설정을 사용하여 **미리보기: Dining-Room_scene.v001.ma**(Preview: Dining-Room_scene.v001.ma)가 표시되어 있습니다. - -**작업 영역(Work Area)**에는 Workfiles가 파일을 저장하는 경로인 **...{% include product %}/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/work/maya**가 표시되어 있습니다. - -## 고급 항목 - -### 예제 확장 - -이 예제에서는 단일 템플릿을 수정했지만 파일 시스템 구성을 사용하여 수행할 수 있는 작업은 훨씬 많습니다. 실제 사례에서는 동일한 파일 명명 규칙을 갖도록 *모든* 에셋 관련 파일을 변경합니다. 다른 엔티티(시즌, 에피소드, 레벨 등)를 기반으로 수정하고, 사용자 폴더를 만들고, 정규 표현식으로 조작된 {% include product %} 데이터를 기반으로 폴더 이름을 지정하는 등 많은 작업을 수행할 수 있습니다. 툴킷의 모든 폴더 및 스키마 옵션에 대한 자세한 내용은 [파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/)를 참조하십시오. - -### 경로 캐시 - -폴더가 생성될 때 디스크의 폴더와 {% include product %} 엔티티 간에 매핑이 만들어집니다. 이러한 매핑은 {% include product %}에 FilesystemLocation 엔티티로 저장되고 사용자 컴퓨터의 SQLite 데이터베이스에서 캐시됩니다. 경로 캐시 작동 방식과 이를 사용한 작업 방법에 대한 자세한 내용은 [이 문서](../../../quick-answers/administering/what-is-path-cache.md)를 참조하십시오. - - -### 추가 리소스 - -* [파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) -* [툴킷 구성 소개 웨비나 동영상](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 deleted file mode 100644 index abe8d6c21..000000000 --- a/docs/ko/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -layout: default -title: 구성 편집 -pagename: toolkit-guides-editing-config -lang: ko ---- - -# 파이프라인 구성 편집 -이 안내서를 통해 다음과 같은 기본 사항을 익힐 수 있습니다. - -* 특정 툴킷 앱의 구성 설정 찾기 -* 설정 편집 -* 구성 설정에서 확장할 수 있는 다른 기능 살펴보기 - -## 안내서 정보 - -이 안내서에서는 기존 파이프라인 구성 내에서 설정을 프로젝트 파이프라인의 요구 사항에 맞게 편집하는 방법에 대해 설명합니다. 첫 번째 안내서인 **[구성 시작하기](./advanced_config.md)**에서는 편집을 위해 파이프라인 구성을 준비하는 방법을 설명합니다. 편집 가능한 프로젝트 구성을 만드는 데 익숙하지 않다면 먼저 **구성 시작하기**를 전체적으로 검토하십시오. - -기본 구성을 확장하는 방법으로 {% include product %} 툴킷에서 파이프라인 워크플로우 내의 태스크를 커스터마이즈할 수 있습니다. 커스터마이즈의 간단한 예로, 하나 이상의 소프트웨어 패키지 내에서 툴킷 앱의 버튼을 활성화 또는 비활성화하여 사용자들이 툴킷의 기능과 상호 작용하는 방식을 변경할 수 있습니다. 툴킷은 독자적인 구성을 지원하므로 커스텀 워크플로우를 생성하고, 반복적이고 일상적인 태스크를 자동화하고, 후크를 수정하고, 툴킷 플랫폼에 커스텀 도구를 추가함으로써 더 스마트하고 빠르게 작업할 수 있습니다. 그러나 {% include product %} 소프트웨어 통합을 통해서만 액세스할 수 있으며 일상적인 작업용으로는 아직 출시되지 않았습니다. - -이 안내서의 연습을 통해 {% include product %} 소프트웨어 통합 내에서 구성 설정 제어 액션을 찾는 방법과 설정이 존재하는 위치, 설정을 편집하는 방법을 익힐 수 있습니다. 특히 Maya 내에서 프로젝트 작업 중에 아티스트가 새 태스크를 생성하지 못하도록 **+새 태스크**(+New Task) 버튼의 동작을 관리하는 Workfiles 앱의 설정을 편집해 보겠습니다. - -## 이 문서 사용 - -이 안내서를 사용하고 파이프라인 구성에 대한 편집을 수행하려면 다음이 필요합니다. - -1. 활성 [{% include product %}](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) 사이트 -2. 하나 이상의 에셋이 있는 프로젝트. 첫 번째 안내서에서 생성한 the_other_side 프로젝트에 에셋을 추가할 수 있습니다. [구성 시작하기](./advanced_config.md) 안내서에서 프로젝트의 에셋을 생성하는 방법을 익힐 수 있습니다. -3. 식별된 프로젝트에 대한 파이프라인 구성이나 [구성 시작하기](./advanced_config.md) 안내서를 완료하고 해당 연습에서 생성한 구성을 사용합니다. -4. 파이프라인 구성이 저장된 파일 시스템에 대해 읽기 및 쓰기 권한을 적절하게 설정합니다. -5. {% include product %} 데스크톱이 시스템에 설치되어 있어야 합니다. -6. 활성 상태의 Maya 서브스크립션. Maya의 30일 체험판은 [여기](https://www.autodesk.co.kr/products/maya/free-trial)에서 구할 수 있습니다. - -{% include info title="참고" content="이 안내서는 `tk-config-default2` 파이프라인 구성을 기반으로 합니다. 이 구성을 수정한 경우 YAML 설정의 파일, 폴더 및 블록의 위치가 여기에 설명된 것과 다를 수 있습니다." %} - -## Workfiles 앱 정보 - -Workfiles 앱은 {% include product %} 소프트웨어 통합에서 파일 관리를 제어하고, 작업 파일을 검색하고 열고 저장하는 기능에 대한 액세스를 제어합니다. **+새 태스크(+New Task)** 버튼은 사용자가 이 작업을 수행하기 위해 {% include product %}로 이동할 필요 없이 태스크를 추가할 수 있게 해 주는 Workfiles 앱의 동작입니다. 구성은 환경별 파일로 나뉩니다. 이를 통해 파일을 생성하고, 파일에 이름을 지정하고, 파일을 저장하는 시기 또는 태스크를 실행하거나 특정 기능을 수행하는 시기를 제어하는 등 파이프라인의 여러 단계와 관련된 기능을 관리할 수 있습니다. 이러한 구성은 Workfiles 앱의 모든 기능과 연관되며 앱 또는 엔진의 설정을 수정할 때도 적용됩니다. 자세한 내용은 이 문서의 끝부분에 있는 [고급 항목](#advanced-topics)을 참조하십시오. - -## 구성 파일 익히기 - -{% include product %}의 파이프라인 구성 목록을 사용하여 작업 중인 프로젝트의 파이프라인 구성이 저장된 위치를 찾을 수 있습니다. 파일이 저장된 위치를 알고 있는 경우 [5단계](#finding-the-pipeline-configuration)로 건너뛸 수 있습니다. - -## 파이프라인 구성 찾기 - -**1단계:** 이 연습에서 사용하게 될 프로젝트를 관리하는 **{% include product %} 사이트**를 엽니다. - -**2단계:** **{% include product %} 사이트**의 **프로젝트 페이지**에서 프로젝트를 선택하여 액세스합니다. - -![{% include product %} 프로젝트](./images/editing_app_setting/1_shotgun_project.png) - -**3단계:** 오른쪽 상단에 있는 **아바타**를 선택하여 **관리자**(ADMIN) 메뉴를 표시하고 아래로 스크롤하여 **기본 레이아웃(Default Layouts) > 파이프라인 구성(Pipeline Configuration) > 파이프라인 구성 목록(Pipeline Configuration List)**을 선택합니다. - -![파이프라인 구성](./images/editing_app_setting/2_pipeline_configuration.png) - -**4단계:** **파이프라인 구성 목록**(Pipeline Configuration List)이 표시되면 열 헤더 맨 오른쪽의 **+** 기호를 선택하여 다른 열을 추가합니다. 드롭다운 목록에서 적절한 운영 체제 경로를 선택합니다. - -![OS 경로](./images/editing_app_setting/3_mac_path.png) - -경로가 새 필드에 표시됩니다. - -![OS 경로2](./images/editing_app_setting/4_mac_path2.png) - -**5단계:** 터미널 또는 파일 관리자에서 프로젝트의 파이프라인 구성이 저장된 폴더를 찾아 폴더를 엽니다. - -툴킷 구성 루트 폴더에는 **cache**, **config** 및 **install**이라는 3개의 하위 폴더가 있습니다. **config** 폴더를 열면 몇 개의 하위 폴더와 파일이 중첩되어 있음을 확인할 수 있습니다. - -![구성 컨텐츠](./images/editing_app_setting/5_config_content.png) - -**env** 폴더는 아티스트가 작업하는 환경을 지원하는 통합 설정을 저장합니다. 환경을 통해 파이프라인의 여러 단계에서 구성을 커스터마이즈할 수 있습니다. 기본 구성이 일련의 미리 정의된 환경과 함께 제공되지만 이 구성은 파이프라인을 더 세부적으로 설정하기 위해 수정할 수 있습니다. - -**6단계:** **env** 폴더를 엽니다. - -툴킷은 YAML 파일을 사용하여 기능을 구성합니다. YAML은 툴킷 내의 파일 형식을 읽기 쉽고 간단하고 단순한 방식으로 커스터마이즈할 수 있기 때문에 YAML이 구성 언어로 선택되었습니다. YAML에 대한 자세한 내용은 [여기](https://yaml.org/)를 참조하십시오. 구성은 식별자 엔진, 앱 및 프레임워크를 제공하는 중첩된 YAML 파일로 구성됩니다. 구성은 적용할 액션을 제어하는 특정 코드 번들로 안내하는 일종의 로드맵입니다. - -## 구성 파일 편집 - -{% include product %} 툴킷을 통해 다양한 소프트웨어 패키지 내에 통합된 앱으로 변경할 수 있습니다. Workfiles 앱의 기능 중 하나는 **+새 태스크**(+New Task) 버튼으로, 사용자가 **파일 열기**(File Open) 대화상자에서 새 태스크를 추가할 수 있게 해 줍니다. 기본적으로 이 기능은 모든 사용자에 대해 프로젝트의 모든 진행단계에서 활성화되어 있습니다. 그러나 이 기능을 제한하고 싶은 스튜디오도 있을 수 있습니다. 특정 명명 규칙이 있거나 프로젝트의 프로덕션 관리 팀만 태스크를 생성할 수 있도록 제한하려는 경우에 그렇습니다. 이 경우 아티스트가 Maya에서 작업할 파이프라인의 모든 지점에 대해 **+새 태스크**(+New Task) 버튼을 비활성화하면 됩니다. - -## Maya에서 프로젝트에 대해 +새 태스크(+New Task) 버튼 비활성화 - -**7단계:** **{% include product %} 데스크톱**을 엽니다. - -**8단계:** 편집할 구성의 프로젝트를 선택합니다. - -![프로젝트 로드](./images/editing_app_setting/6_load_project.png) - -**9단계:** {% include product %} 데스크톱에서 Maya를 시작합니다. - -![프로젝트 로드](./images/editing_app_setting/7_view_project.png) - -**{% include product %}** 메뉴가 완전히 로드될 때까지 기다립니다. 인터넷 연결 속도가 느릴 경우 메뉴가 로드되는 동안 커피 한 잔 준비하는 것도 좋습니다. - -Maya와 {% include product %}가 완전히 로드되면 **파일 열기(File Open)** 대화상자가 자동으로 열립니다. {% include product %} 데스크톱에서 Maya를 실행하면 **프로젝트** 환경에서 Maya가 시작되고 툴킷 워크플로우의 구성이 `config/env/project.yml` 파일에 의해 구동됩니다. 기본 구성에서 식별되는 환경은 `project`, `sequence`, `shot`, `shot_step`, `asset`, `asset_step`입니다. - -**10단계:** **파일 열기**(File Open) 대화상자의 왼쪽 창에서 **에셋**(Assets) 탭을 선택합니다. 검색 결과에 표시되는 폴더 내의 모든 에셋을 선택합니다. - -![태스크 버튼 보기](./images/editing_app_setting/8_21_view_task_button.png) - -**+새 태스크**(+New Task) 버튼이 활성화되어 있습니다. - -## +새 태스크(+New Task) 버튼을 제어하는 설정 찾기 - -파이프라인 요구 사항을 충족하기 위해 툴킷 파이프라인 구성을 사용하여 사용자 환경을 커스터마이즈할 수 있습니다. 파이프라인 구성은 프로젝트 파이프라인의 요구 사항에 맞게 필요에 따라 기본 {% include product %} 통합 설정을 재정의할 수 있습니다. {% include product %} 코어 코드의 기본값과 다른 설정만 추가하여 구성을 간단하게 생성할 수 있는 구조입니다. 이 연습에서는 Workfiles 앱의 **+새 태스크**(+New Task) 버튼을 사용할 수 없게 할 예정이지만 그전에 이 버튼을 제어하는 구성 설정을 확인해야 합니다. - -**11단계:** **프로젝트(프로젝트 이름)**(Project(프로젝트 이름)) 옆에 있는 **파일 열기**(File Open) 창의 오른쪽 상단에서 **>**를 선택합니다. - -이 참조 상자는 **파일 열기**(File Open) 창의 기능을 제어하는 구성 설정에 대한 상세한 정보를 보여 줍니다. 툴킷의 일부 앱에는 앱에 사용된 설정과 기본 설정을 보여 주는 참조 상자가 있습니다. **위치:**(Location:) 식별자는 **tk-multi-workfiles2**입니다. 이 식별자는 Workfiles 앱을 만드는 코드 번들의 식별자입니다. 파이프라인 구성을 검색할 때 이 이름으로 앱의 설정이 있는 위치를 확인할 수 있습니다. {% include product %} 통합에서 사용할 수 있는 모든 구성 설정, 앱 및 엔진이 나열된 [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/162eaa4b/)가 있습니다. - -![Current_work_area](./images/editing_app_setting/9_current_work_area.png) - -이 특정 환경에 대한 설정을 찾으려면 **구성**(Configuration) 헤더 아래를 확인하십시오. - -![Configuration_ref](./images/editing_app_setting/10_configuration_ref.png) - -{% include info title="참고" content="**my_tasks_filters** 설정 다음이 **launch_at_startup** 설정입니다. 프로젝트 환경에서 **파일 열기**(File Open) 설정의 기본 설정이므로 유의해야 합니다. 이는 ShotGrid 데스크톱에서 Maya가 실행되면 **파일 열기**(File Open) 대화상자가 자동으로 열린다는 의미입니다." %} - -설정 **allow_task_creation**까지 아래로 스크롤합니다. 이 설정의 기본값은 **True**이므로 사용자가 Maya 프로젝트 환경에 있는 동안 새 태스크를 생성할 수 있습니다. - -![파일 열기 옵션](./images/editing_app_setting/11_open_file_options.png) - -설정을 검색할 때 다음 사항을 고려해야 합니다. - -* 실행 중인 소프트웨어 응용프로그램 -* 작업 중인 파일과 환경. 이 부분은 앱의 참조 상자에서 확인할 수 있습니다. -* 호출되는 설정. 이 부분은 앱의 참조 상자 또는 [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/162eaa4b/)에서 확인할 수 있습니다. -* 확장할 YAML 파일. YAML 파일에 자세히 나와 있는 식별자와 로드맵으로 설정이 있는 위치를 확인할 수 있습니다. -* 확장할 YAML 파일 내의 특정 블록. 이는 로드맵에서 확인할 수 있습니다. -* YAML 파일에서 사용되는 식별자 및 기호. -* 현재 프로젝트의 구성이 저장된 위치(가장 중요). - -설정은 파이프라인 구성 내의 여러 곳에서 활용될 수 있습니다. 적용할 소프트웨어 통합 및 변경할 파이프라인 프로세스에 따라 활용 방법이 결정됩니다. - -## `allow_task_creation` 값을 설정할 위치 찾기 - -**12단계:** 기본 Maya 창을 앞으로 가져옵니다. - -**13단계:** Maya 창의 오른쪽 상단에서 **{% include product %}** 메뉴 항목을 찾습니다. - -![Maya{% include product %}2](./images/editing_app_setting/12_Maya_Shotgun2.png) - -**팁:** 메뉴가 표시되지 않을 경우 일부 숨겨진 메뉴 항목을 볼 수 있는 **>>**가 표시됩니다. **>>**를 선택하여 {% include product %} 메뉴를 표시하거나 Maya 창을 넓히면 됩니다. - -**14단계:** 메뉴 오른쪽 상단에서 **{% include product %} > 프로젝트 the_other_side(Project the_other_side) > 작업 영역 정보…(Work Area Info…)**를 선택합니다. - -![작업 영역 정보](./images/editing_app_setting/13_work_area_info.png) - -**작업 영역 정보**(Work Area Info) 대화상자에는 현재 작업 영역이 어떻게 돌아가는지 및 상세 정보가 표시됩니다. 여기에는 작업 중인 환경 및 설정이 위치한 환경 구성 파일의 경로도 포함됩니다. - -**15단계:** **현재 작업 영역**(Your Current Work Area) 대화상자에서 아래에 있는 **환경**(Environment) 탭을 선택합니다. - -첫 번째 항목에서 사용 중인 엔진이 확인됩니다. 엔진은 특정 소프트웨어 응용프로그램 내에서 {% include product %} 도구를 통합하는 기능을 구동합니다. 여기에는 각 소프트웨어 통합에 해당하는 로직이 포함됩니다. 창에 표시된 두 번째 항목은 현재 프로젝트 환경이 위치한 경로를 보여 줍니다. - -![작업 영역 정보 환경](./images/editing_app_setting/14_shotgun_work_area_info_Environment.png) - -마지막 두 폴더는 `project.yml`이고 그 다음에 `config/env/`이 표시됩니다. `project.yml` 파일은 현재 환경에 대한 설정이 있는 위치를 안내하는 로드맵의 시작입니다. - -**16단계:** 즐겨 사용하는 텍스트 편집기에서 `project.yml`을 엽니다. - -```yaml -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 - -################################################################################ -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - tk-photoshopcc: "@settings.tk-photoshopcc.project" - tk-shell: "@settings.tk-shell.project" - tk-shotgun: "@settings.tk-shotgun.project" - -################################################################################ -# reference all of the common frameworks - -frameworks: "@frameworks" - -``` - - - -`project.yml` 내에는 설명 아래 세 가지 섹션 `includes`, `engines` 및 `frameworks`가 있습니다. `includes` 섹션은 구성에서 다른 YAML 파일을 *참조*하는 파일 포인터의 목록입니다. 기본 구성의 아키텍처에서는 파일을 간단하게 유지하기 위한 또 다른 방법으로 파일 중첩 및 포인터를 활용합니다. **includes**를 따라가면 원하는 구성 설정을 찾을 때까지 다음 파일로 이동합니다. 이는 적절한 구성 설정을 찾을 때까지 계속해서 내부에 포개진 인형이 하나씩 열리는 러시아 마트료시카 인형과 비슷합니다. - -모든 엔진은 `tk-`으로 식별됩니다. Maya에서 설정을 적용하려고 하므로 찾아야 할 식별자는 `tk-maya`입니다. - -`project.yml` 파일의 `includes:` 섹션에서 `./includes/settings/tk-maya.yml` 행을 찾습니다. 이 행은 **settings** 폴더 내의 **includes** 폴더에 중첩된, Maya 엔진의 **설정**을 제어하는 구성 `tk-maya`를 나타냅니다. - -`engines:` 섹션에서 `tk-maya` 값을 찾습니다. - -`tk-maya: "@settings.tk-maya.project"` - -이 `@` 기호는 값이 포함된 파일에서 제공되었음을 나타냅니다. - -`settings` 및 `project`는 프로젝트의 설정임을 나타냅니다. 이는 식별하는 데 도움이 되는 기본 구성 내의 명명 규칙입니다. - -이 전체 행은 Maya 엔진의 구성 설정인 `tk-maya`를 찾기 위해 포함된 파일에서 `settings.tk-maya.project` 블록을 찾는다는 것을 나타냅니다. - -{% include product %} 툴킷은 YAML 파일에서 간단한 용어를 사용하여 설정의 이름과 설정으로 이동하는 경로를 나타냅니다. **+새 태스크**(+New Task) 버튼 수행 방식을 제어하는 코드 번들이 `tk-multi-workfiles2`로 식별되는 것은 Maya **파일 열기**(File Open) 참조 상자를 볼 때 이미 알고 있습니다. 툴킷 번들은 이러한 식별자를 사용하여 YAML 파일에서 참조됩니다. ‘tk-multi-workfiles2’는 Workfiles 앱 코드 번들의 식별자이며 **+새 태스크**(+New Task) 버튼은 Workfiles 앱의 기능입니다. - -tk-maya.yml에서 Workfiles 앱 설정 찾기 - -**17단계:** 파일 브라우저에서 **env/includes/settings** 폴더를 찾아 `tk-maya.yml`을 엽니다. - -![tk maya 작업 파일](./images/editing_app_setting/16_tk_maya_workfiles.png) - -**18단계:** `project.yml`에서 include를 따라가면서 `tk-maya.yml` 파일에서 `settings.tk-maya.project`를 찾습니다. 구체적으로는 특정 프로젝트의 프로젝트 환경에서 **+새 태스크** (+New Task) 버튼을 비활성화하려고 합니다. 현재 해당 프로젝트에 대한 구성에 있으며 프로젝트 환경에 있는 동안 위치 정보를 얻었습니다. - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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...} - location: "@engines.tk-maya.location" -``` - - - -`settings.tk-maya.projects` 아래에 `tk-multi-workfiles2` 앱 설정이 다음과 같이 나열됩니다. - -`tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup"` - -`@` 기호는 `tk-multi-workfiles2` 값이 포함된 파일에서 제공된 것임을 나타냅니다. `tk-maya.yml`의 맨 위에 있는 `includes` 섹션에서 다음을 확인할 수 있습니다. - -```yaml -includes: -... -- ./tk-multi-workfiles2.yml -``` - -현재 파일 `config/env/includes/settings`와 동일한 디렉토리에 있는 `tk-multi-workfiles2.yml` 파일에서 `settings.tk-multi-workfiles2.launch_at_startup`을 찾아야 합니다. - -**19단계:** `tk-multi-workfiles2.yml` 파일을 열고 `settings.tk-multi-workfiles2.launch_at_startup`을 찾습니다. - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - launch_at_startup: true - entities: -``` - - - -`allow_task_creation` 설정을 나타내는 Maya 참조 상자에서 기본값은 `true`입니다. 가장 좋은 방법은 파이프라인 구성에 기본 설정을 반영하지 않는 것입니다. 이렇게 하면 **스파스** 형식이 허용되어 기본 코드와 다른 설정만 구성에 추가됩니다. 설정이 명시적으로 제공되지 않는 경우 해당 설정이 액세스하는 모든 호출이 기본값을 받습니다. 툴킷이 구성을 읽고 환경을 빌드하면 해당 환경에서 실행되는 앱, 엔진 및 프레임워크는 해당 프로젝트의 파이프라인 구성 설정을 사용하고 구성에 있는 항목을 기반으로 모든 기본 설정을 재정의합니다. - -**20단계:** `tk-multi-workfiles2.yml`에서 `settings.tk-multi-workfiles2.launch_at_startup:` 아래 `allow_task_creation`을 추가하고 값을 `false`로 설정합니다. - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - allow_task_creation: false - launch_at_startup: true - entities: -``` - - - -**참고:** 툴킷 기본 구성 설정은 특정 설정을 찾기 쉽도록 알파벳순으로 구성됩니다. 이 규칙을 유지해야 구성이 복잡해질 경우에도 처리하기가 편리합니다. - -**21단계:** 파일을 저장합니다. - -## 구성 다시 로드 - -**22단계:** Maya 내의 **파일 열기**(File Open) 대화상자에서 참조 상자를 열고 **엔진 및 앱 다시 로드**(Reload Engines and Apps)를 선택합니다. - -![엔진 다시 로드](./images/editing_app_setting/20_refresh_engines_apps.png) - -그러면 구성 설정이 다시 로드됩니다. - -## 변경 사항 보기 - -**23단계:** **파일 열기**(File Open) 대화상자로 이동하여 에셋을 선택합니다. - -![태스크 버튼 보기](./images/editing_app_setting/8_21_view_task_button.png) - -**+새 태스크**(+New Task) 버튼이 표시되지 않습니다. - -Workfiles 앱의 구성 설정을 수정하여 프로젝트 환경의 버튼 동작을 변경했습니다. 이 프로젝트 환경의 해당 설정만 수정했기 때문에 다른 환경에서 작업을 시작하면 **+새 태스크**(+New Task) 버튼에 대한 설정은 여전히 활성 상태입니다. 예를 들어 실제 프로덕션에서 *모든*환경에 대해 지금처럼 변경할 수 있습니다. - -## 환경 변경 - -**24단계:** 에셋(Assets) 검색 결과에서 폴더를 열고 작업할 에셋을 선택합니다. - -![에셋 환경으로 이동](./images/editing_app_setting/22_moving_to_asset_environment.png) - -**25단계:** **+새 파일**(+New File)을 선택합니다. - -**+새 파일**(+New File)을 선택하여 새 에셋에 대한 작업을 시작했으며 Maya에서 `asset_step` 환경이 로드되었습니다. 아티스트가 에셋 태스크를 선택하고 새 파일을 생성하거나 기존 파일을 열면 `asset_step` 환경이 자동으로 로드되어 파이프라인의 해당 단계에 구성된 도구 및 기능이 제공됩니다. - -## 작업 중인 환경 검색 - -**26단계:** Maya 메뉴 오른쪽 상단에서 **{% include product %}**를 선택합니다. - -![아트 에셋 환경](./images/editing_app_setting/23_Art_Asset.png) - -**아트, 에셋 텍스트 오버레이(Art, Asset Text Overlay)**는 작업 중인 환경과 현재 환경을 알려 줍니다. - -**27단계:** **아트, 에셋 텍스트 오버레이((Art, Asset Text Overlay) > 작업 영역 정보…(Work Area Info…)**를 선택하여 현재 작업 영역에 어떤 매개변수가 있는지 표시합니다. - -**28단계:** 아래에 있는 **환경**(Environment) 탭을 선택합니다. - -![에셋 단계 환경](./images/editing_app_setting/24_asset_step_env.png) - -각 환경은 파이프라인 구성에서 설정이 있는 위치를 확인할 수 있도록 필요한 정보를 표시합니다. 아티스트가 새 태스크를 추가하지 않도록 하려면 아티스트가 작업하는 모든 환경에 대해 **+새 태스크**(+New Task) 버튼을 비활성화해야 합니다. 각 환경에 대해 위에 설명한 것과 동일한 단계를 사용하여 적절하게 구성을 편집합니다. - -참고: 각 환경은 독립적이며 프로젝트는 전용 구성을 사용하고 소프트웨어 통합은 프로젝트가 로드될 때 파이프라인 구성에서 해당 특정 소프트웨어의 설정만 읽습니다. - -지금까지 파이프라인 구성을 편집하여 앱 설정을 변경했습니다. 이제 본격적으로 {% include product %} 툴킷 환경에서 수행할 수 있는 모든 작업에 대해 알아보겠습니다. 다음은 살펴볼 몇 가지 고급 항목입니다. - -## 고급 항목 - -이 안내서에서는 단일 엔진(`tk-maya`) 및 단일 환경(`project`)에서 앱의 구성 설정을 간단하게 변경했습니다. 툴킷은 환경별로 구성되고, 모든 소프트웨어 구현에 있어 각 환경은 고유하며, 정의된 파이프라인 지점에서 아티스트가 특정 기능을 사용할 수 있도록 프로젝트 및 태스크별로 초점을 맞추는 것에 대해 학습했습니다. 간단한 변경 사항을 일반화하면 툴킷 파이프라인 구성을 얼마든지 커스터마이즈할 수 있습니다. - -### 기타 엔진 - -Workfiles 앱의 시스템 이름은 `tk-multi-workfiles2`이고 여기서 `multi`는 이 앱이 **다중 앱**임을 암시합니다. 다중 앱은 소프트웨어에 구속받지 않는 앱으로, Maya, Nuke, Houdini에서 실행하든 기타 지원되는 앱에서 실행하든 앱의 기능이 동일합니다. 모든 소프트웨어 패키지의 Workfiles에서 태스크 생성을 비활성화하려면 모든 **엔진**(`tk-nuke`, `tk-houdini` 등)에 대해 이 안내서의 단계를 수행합니다. - -### 기타 환경 - -여기서는 프로젝트 환경에서 태스크 생성을 비활성화했지만 실제 스튜디오 환경에서는 아티스트가 작업 중인 모든 환경에 대해 태스크 생성을 비활성화하고 싶을 수 있습니다. 이를 위해서는 안내서의 단계를 수행하되 `project.yml`에서 시작하는 대신 `asset_step.yml`, `shot_step.yml` 등에서 시작합니다. - -### 커스텀 환경 생성 - -기본 구성은 일련의 미리 정의된 파이프라인 단계(`project`, `sequence`, `shot`, `shot_step`, `asset` 및 `asset_step`)와 함께 제공됩니다. 그러나 스튜디오에서는 파이프라인 단계(`asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light` 등)마다 다른 구성 설정을 원할 수 있습니다. 툴킷은 커스텀 환경을 지원합니다. 자세한 내용은 [환경 구성 참조의 "커스텀 환경" 섹션](https://developer.shotgridsoftware.com/ko/c73fcb84/#custom-environments)을 참조하십시오. - -### 비디오 리소스 - -* 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/images/advanced_config/10_define_storage2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png deleted file mode 100644 index 16ef3dcbd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png deleted file mode 100644 index 600e6c4fc..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png deleted file mode 100644 index 4a164c7b7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png deleted file mode 100644 index 01f31b998..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png deleted file mode 100644 index 8c8a5da0f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png deleted file mode 100644 index 960b1da6b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png deleted file mode 100644 index 615afd5ee..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png deleted file mode 100644 index 351ac9de6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png deleted file mode 100644 index 86171f31b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png deleted file mode 100644 index dda8b753b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png deleted file mode 100644 index f5737f5f6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png deleted file mode 100644 index ae1d845d3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png deleted file mode 100644 index 7f8377111..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png deleted file mode 100644 index 24bc74242..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png deleted file mode 100644 index 319c3d8ce..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png deleted file mode 100644 index 177b8ab31..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png deleted file mode 100644 index 5d0d28295..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png b/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png deleted file mode 100644 index 958fe3fd0..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png deleted file mode 100644 index 77861adfd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png deleted file mode 100644 index 040ad60df..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png deleted file mode 100644 index 3b48dbdf0..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png deleted file mode 100644 index 1a22f4261..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png deleted file mode 100644 index a2552cf8c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png deleted file mode 100644 index 9ca0fe1ca..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png deleted file mode 100644 index b613553e3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png deleted file mode 100644 index 06c47e2f2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png deleted file mode 100644 index 4a24c1407..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png deleted file mode 100644 index d57bb7475..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png deleted file mode 100644 index 673b6cfc7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png deleted file mode 100644 index 81d9cbc6f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png deleted file mode 100644 index 3e039d1f1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png deleted file mode 100644 index 53c803581..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png deleted file mode 100644 index 50c60f42d..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png deleted file mode 100644 index 693258831..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png deleted file mode 100644 index 8567b84a6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png deleted file mode 100644 index 05eeb2fcd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png deleted file mode 100644 index 4e3989b67..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png deleted file mode 100644 index b6c4b3915..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png deleted file mode 100644 index 7134c9332..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png deleted file mode 100644 index 3f373dbf5..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png deleted file mode 100644 index 5ff9b0906..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png deleted file mode 100644 index 543c0fe0c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png deleted file mode 100644 index 2ec275463..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png deleted file mode 100644 index 0573203ed..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png deleted file mode 100644 index 091a637b3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png deleted file mode 100644 index 33d191d29..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png b/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png deleted file mode 100644 index 6e6807098..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png deleted file mode 100644 index ce2ec144b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png deleted file mode 100644 index 24e78b3f5..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png deleted file mode 100644 index 02054435f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png deleted file mode 100644 index 21aae45ed..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png deleted file mode 100644 index 399139879..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png deleted file mode 100644 index 0b4983e6c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png deleted file mode 100644 index e2f174b72..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png deleted file mode 100644 index 83c687bbb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png deleted file mode 100644 index a3a2103ff..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png deleted file mode 100644 index 4fb1b81ba..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png deleted file mode 100644 index a5b10a8ab..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png deleted file mode 100644 index 90720adf4..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png deleted file mode 100644 index 4b46b3b9e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png deleted file mode 100644 index ce24fe454..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png deleted file mode 100644 index a1d855ceb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png deleted file mode 100644 index e0b264ca8..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png deleted file mode 100644 index dde8ca426..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png deleted file mode 100644 index 02e39697a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png deleted file mode 100644 index 6ad051dd7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png deleted file mode 100644 index be9d5d78b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png deleted file mode 100644 index bb3c90585..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png deleted file mode 100644 index 3041b4a7c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png b/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png deleted file mode 100644 index 5ac59e300..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png deleted file mode 100644 index f992ab553..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png deleted file mode 100644 index cfd2c37a4..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png deleted file mode 100644 index 8477325a1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png deleted file mode 100644 index 2d9a41690..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png deleted file mode 100644 index 166171392..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png deleted file mode 100644 index 8825d4a5b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png deleted file mode 100644 index 56bff55a2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png deleted file mode 100644 index 2e89edaaf..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png deleted file mode 100644 index daa0ba2e7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png deleted file mode 100644 index 0375bff17..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png deleted file mode 100644 index b6bc633da..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png deleted file mode 100644 index 549c43308..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png deleted file mode 100644 index f869b72e1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png deleted file mode 100644 index e0b264ca8..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png deleted file mode 100644 index 5bf3d8fbb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png deleted file mode 100644 index 63dc727e9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png deleted file mode 100644 index db41824fb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png deleted file mode 100644 index aaca1db35..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png deleted file mode 100644 index eec4e8e2b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png deleted file mode 100644 index f992ab553..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png deleted file mode 100644 index 63dc727e9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png b/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png deleted file mode 100644 index aaca1db35..000000000 Binary files a/docs/ko/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md b/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md deleted file mode 100644 index ab8101e7f..000000000 --- a/docs/ko/guides/pipeline-integrations/getting-started/installing_app.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -layout: default -title: 앱 추가 -pagename: toolkit-guides-adding-app -lang: ko ---- - -# 앱 추가 - -이 안내서를 마치면 툴킷의 구성 관리 도구를 간단히 익히고 다음과 같은 작업을 수행하는 방법을 익힐 수 있습니다. - -* 활성 파이프라인 구성의 복사본을 안전하게 생성 -* 앱을 구성에 추가 -* 특정 환경에서 앱을 사용하는 데 필요한 설정 추가 -* 활성 구성에 변경 사항 다시 적용 - -## 안내서 정보 - -이 안내서에서는 {% include product %} 툴킷 앱을 기존 파이프라인 구성에 추가하는 방법을 살펴보고 구성 관리 도구에 대해 간단히 알아보겠습니다. - -여기서 추가할 앱은 {% include product %} Python 콘솔 앱입니다. Maya에는 자체 Python 콘솔이 있지만 이 툴킷 앱에는 Maya 콘솔에 없는 일부 기능이 있습니다. - -이 안내서에서는 [파이프라인 구성 편집](./editing_app_setting.md) 안내서에서 생성한 파이프라인 구성을 활용합니다. 이 안내서를 완료하지 않았다면 기존 파이프라인 구성을 사용하여 앱을 추가할 수 있습니다. - -## 이 문서 사용 - -이 안내서를 사용하고 툴킷 앱을 설치하려면 다음이 필요합니다. - -1. 활성 [{% include product %}](https://www.shotgridsoftware.com/signup/) 사이트 -2. 식별된 프로젝트에 대한 파이프라인 구성이나 [구성 시작하기 안내서](./advanced_config.md)를 완료하고 해당 연습에서 생성한 구성을 사용합니다. -3. 파이프라인 구성이 저장된 파일 시스템에 대해 읽기 및 쓰기 권한을 적절하게 설정합니다. -4. {% include product %} 데스크톱이 시스템에 설치되어 있어야 합니다. -5. 활성 상태의 Maya 서브스크립션. [여기](https://www.autodesk.co.kr/products/maya/free-trial)에서 Maya 30일 체험판을 다운로드하십시오. - -{% include info title="참고" content="이 안내서는 tk-config-default2 파이프라인 구성을 기반으로 합니다. 이 구성을 수정한 경우 YAML 설정의 파일, 폴더 및 블록의 위치가 여기에 설명된 것과 다를 수 있습니다." %} - -## {% include product %} 툴킷 앱 정보 - -### Toolkit 앱의 작동 방식 - -파이프라인 구성에서 참조하는 앱은 다양한 위치에서 가져온 것일 수 있습니다. 기본 구성에서 표준인 앱은 {% include product %} 앱 스토어에서 가져온 것입니다. 파이프라인 구성의 파일은 툴킷에 "주소록에서 Python 콘솔 앱의 주소를 찾아줄래?"라고 묻는 것처럼 {% include product %} 통합이 앱에 액세스하는 방법을 지정합니다. 파이프라인 구성 파일은 툴킷에 특정 앱에 활용되는 코드의 번들을 찾는 위치를 알려줍니다. - -기본 구성에서 툴킷 앱의 "주소"는 `config/env/includes/app_locations.yml` 파일에 나열되어 있으며 코드를 찾는 위치를 지정합니다. 이러한 "주소"를 [디스크립터](https://developer.shotgunsoftware.com/tk-core/descriptor.html)라고 합니다. {% include product %} 통합은 앱에 대한 코드 번들을 찾는 위치뿐 아니라 앱을 사용하는 환경도 알아야 합니다. - -다음은 앱 설치 방법과 {% include product %} 통합에 앱을 사용하는 위치를 알리는 방법에 대한 개념적인 개요입니다. 여기서는 구성을 확장하고 툴킷에 디스크립터를 조회하도록 요청하고 {% include product %}에 앱을 사용하는 위치를 알리는 단계를 간략하게 설명합니다. 이 안내서에서는 다음 단계를 자세히 살펴봅니다. - -1. 추가하려는 앱의 디스크립터를 결정합니다. -2. 앱 디스크립터를 추가하려는 활성 파이프라인 구성의 복사본을 생성합니다. -3. 앱의 디스크립터가 구성에 존재하는지 확인하고, 존재하지 않는 경우 추가합니다. -4. 들여쓰기에 탭이 아니라 공백을 사용하여 YAML 파일의 서식을 올바르게 지정합니다. -5. 앱이 사용되는 환경을 결정합니다. -6. 이러한 환경 내에서 {% include product %}가 앱을 사용할 수 있도록 허용하는 설정을 추가합니다. -7. 새 구성을 테스트합니다. -8. 확장된 구성을 라이브로 적용합니다. - -### Python 콘솔 앱에 대한 위치 디스크립터 찾기 - -**1단계:** [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/9e62da4a/)를 열고 Maya에서 {% include product %} Python 콘솔에 대한 정보를 찾습니다. 제목을 선택합니다. - -![Python 앱](./images/installing_app/1_python_app.png) - -그러면 주소록에 필요한 항목이 모두 포함된 [앱 관련 정보](https://developer.shotgridsoftware.com/ko/770a748a/)가 표시됩니다. - -![Python 앱 정보](./images/installing_app/2_python_app_info.png) - -**시스템 이름**이 주 식별자이며 `tk-multi-pythonconsole`입니다. 또한 **최신 버전:** v1.1.2도 필요합니다. - -### Maya의 프로젝트 환경에서 Python 콘솔 앱이 없음을 확인 - -**2단계:** Maya를 실행하고 {% include product %} 메뉴 **{% include product %} > 프로젝트 the_other_side(Project the_other_side)**를 선택하면 프로젝트 환경에 해당 프로젝트에 사용할 수 있는 앱 목록이 표시됩니다. - -![앱 목록](./images/installing_app/3_list_of_apps.png) - -## 구성 확장 - -프로덕션 단계에 적용된 구성을 편집하려면 복사본을 먼저 생성한 후 편집해야 합니다. 그러면 라이브 구성에 영향을 미치지 않고 편집한 구성을 라이브로 적용하기 전에 테스트할 수 있는 안전한 공간이 만들어집니다. 스테이징 샌드박스를 생성하면 현재 프로덕션에서 사용되는 파이프라인 구성의 복사본을 시험해 볼 수 있습니다. 샌드박스에서 구성의 복사본을 변경한 후 변경 사항을 프로덕션에 라이브로 적용하기 전에 테스트해 볼 수 있습니다. - -파이프라인 구성을 복제하면 새 구성을 라이브 프로덕션에 적용하기 전에 복사본을 시험해 볼 수 있는 샌드박스를 구축하여 복사본 생성 프로세스를 자동화할 수 있습니다. - -## 앱을 추가하려는 파이프라인 구성 복제 - -### 파이프라인 구성 목록으로 이동합니다. - -**3단계:** {% include product %}를 열고 오른쪽 위에서 **관리자(Admin) 메뉴(아바타) > 기본 레이아웃(Default Layouts) > 파이프라인 구성(Pipeline Configuration) > 파이프라인 구성 목록(Pipeline Configuration List)**을 선택합니다. - -![파이프라인 구성 목록](./images/installing_app/4_REPLACE_pipeline_configuration_list.png) - -이렇게 하면 {% include product %} 사이트의 파이프라인 구성이 모두 포함된 상세 목록이 표시됩니다. - -**4단계:** 파이프라인 구성 목록이 표시되면 열 헤더의 맨 오른쪽에 있는 **+** 기호를 선택하고 **프로젝트**(Projects) 열을 추가합니다. - -![프로젝트 열 추가](./images/installing_app/5_add_project_column.png) - -### 프로젝트 구성의 위치 리뷰 - -**5단계:** 또한, 운영 체제에 적합한 **경로**(Path) 필드를 추가합니다. - -![config 경로](./images/installing_app/6_path_to_config.png) - -그러면 구성 파일의 경로가 표시됩니다. - -![config 2 경로](./images/installing_app/7_path_to_config2.png) - -**6단계:** **기본**(Primary) 행 항목 옆에 있는 빈 공간을 **마우스 오른쪽 버튼으로 클릭**하고 상황에 맞는 메뉴에서 **이 구성 복제…**(Clone this Configuration…)를 선택합니다. - -![복제 완료](./images/installing_app/8_clone_complete.png) - -**7단계:** 구성 목록의 구성과 디렉토리의 파일의 이름을 각각 "Primary Clone Config 2"와 "the_other_side_clone2"로 지정합니다. **확인**(OK)을 선택합니다. - -![복제본 이름 지정](./images/installing_app/9_name_clone.png) - -{% include product %}에서 구성에 포함된 모든 파일 및 폴더가 복사되고 앱에 대한 캐시가 생성될 때까지 기다립니다. 이제 앱을 사용할 수 있으므로 입에서 살살 녹는 크로아상과 함께 에스프레소를 마시면서 여유를 즐기십시오. - -![복제 완료](./images/installing_app/10_clone_complete.png) - -완료되면 구성 목록에 복제된 구성 관련 정보가 업데이트되고 새 구성이 로컬 구성 폴더에 추가됩니다. - -{% include info title="참고" content="**사용자 제한**(User Restrictions)에 사용자 이름이 추가되었습니다. 구성을 만든 작업자만 새 구성에 액세스할 수 있도록 자동으로 제한이 적용됩니다. 이 구성을 편집 및 테스트하고, 사용하게 하려는 작업자가 있으면 직접 추가할 수 있습니다. 또한 ShotGrid는 유연성과 제어 기능을 지원합니다." %} - -## 복제된 구성을 프로젝트와 연결 - -**8단계:** {% include product %} 데스크톱을 열고 복제된 구성을 생성한 프로젝트를 선택합니다. 오른쪽 위에 있는 **아래쪽 화살표**를 선택하여 이 프로젝트와 연결된 구성을 표시하고 방금 생성한 **Primary Clone Config 2**를 선택합니다. - -![복제본 선택](./images/installing_app/11_select_clone.png) - -{% include product %} 데스크톱이 이제 이 프로젝트에 대해 복제된 구성을 사용합니다. - -## 파이프라인 구성 편집 - -**9단계:** 파일 시스템에서 복제된 구성을 생성할 때 지정한 경로에서 해당 구성을 찾습니다. `config/env/includes/app_locations.yml` 파일을 봅니다. - -![복제 앱 위치](./images/installing_app/12_clone_app_locations.png) - -`app_locations.yml` 파일이 기본 구성의 주소록이며 앱의 디스크립터가 이 파일에 나열되어 있습니다. 이 파일에 앱의 위치가 지정되며 이 파일을 사용하여 앱에 대한 설정을 생성할 수 있습니다. - -사용하려는 앱이 이 주소록에서 참조되지 않을 경우 툴킷에 앱을 찾을 위치를 알려야 합니다. - -## 툴킷에 앱을 찾을 위치 알리기 - -**10단계:** 파일에서 `pythonconsole`을 검색합니다. 프로젝트에 기본 구성을 사용한 경우 Python 콘솔 앱에 대한 디스크립터가 이 파일에 나열되어 있는 것을 볼 수 있습니다. 이 디스크립터는 이 과정을 시작할 때 살펴본 Maya 앱의 [목록](https://developer.shotgridsoftware.com/ko/162eaa4b/)에 있는 설명과 일치해야 합니다. 버전이 Maya 앱 목록에서 확인한 항목과 일치하는지 확인합니다. - -```yaml -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 - -``` - -{% include info title="참고" content="다른 구성을 사용하는 경우 파일에 디스크립터를 추가해야 할 수 있습니다." %} - -모든 앱과 엔진에는 디스크립터가 있습니다. [Core API 문서의 디스크립터 섹션](https://developer.shotgunsoftware.com/tk-core/descriptor.html#descriptor-types)에서 디스크립터의 작동 방식과 `type:`를 설정하는 방법을 확인할 수 있습니다. - -## 툴킷에 디스크립터를 사용하도록 지시 - -이제 Maya의 프로젝트 환경에 있는 동안 툴킷에 디스크립터를 사용하여 Python 콘솔 앱을 찾아 사용하도록 지시해야 합니다. - -**11단계:** 복제된 구성에서 `config/env/project.yml` 파일을 열고 `tk-maya` 엔진에 대한 설정을 찾습니다. - -```yaml -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - 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`는 환경을 나타냅니다. - -### YAML 파일 - -{% include product %} 툴킷 파이프라인 구성은 [YAML](https://yaml.org/spec/1.2/spec.html) 파일에서 단순한 용어를 사용하여 앱과 엔진의 위치와 해당 설정을 식별합니다. - -이 블록에서 - -* `settings`는 기본 구성에 대해 설정 폴더의 참조로 선택된 항목입니다. -* `project`는 기본 구성에 대해 프로젝트 환경의 참조로 선택된 항목입니다. -* `tk-maya`는 Maya에 대한 툴킷 엔진의 식별자입니다. -* `@`은 설정 값을 포함된 파일에서 가져온다는 것을 나타내는 데 사용되는 툴킷 용어입니다. - -YAML 파일은 {% include product %} 통합으로 통하는 창입니다. 이 파일을 사용하면 파이프라인의 요구사항을 충족하는 작업 환경을 더욱 손쉽게 구성할 수 있습니다. - -### 구성이 툴킷 번들을 참조하는 방식 - -{% include product %} 통합의 코드는 앱, 엔진 및 프레임워크에 대한 번들로 구성됩니다. 번들은 툴킷의 YAML 파일에서 `tk-maya`, `tk-multi-pythonconsole` 등과 같은 식별자로 참조됩니다. YAML에서 각 번들에 해당하는 블록에는 식별된 번들의 액세스 및 활용 방식을 제어하는 설정이 포함됩니다. - -## Python 콘솔에 대한 설정을 추가할 위치 - -기본 구성의 이 블록에서 'tk-maya.project'는 프로젝트 환경에서 Maya 엔진을 나타내는 식별자입니다. 여기서 목표는 Python 콘솔 앱 코드 번들을 프로젝트 환경의 Maya 엔진에 추가하는 것입니다. 사용된 용어를 보면 `tk-maya.yml`은 프로젝트 환경의 설정이 위치한 YAML 파일의 이름입니다. `tk-maya.yml` 파일에서 `apps`에 대한 `settings.tk-maya.project`를 찾습니다. - -**13단계:** 파일을 찾기 위해 엔진 위에 있는 includes 섹션에서 `tk-maya.yml`을 찾습니다. - -`./includes/settings/tk-maya.yml` - -**14단계:** 복제된 구성에서 텍스트 편집기로 `config/env/includes/settings/tk-maya.yml`을 열고 `settings.tk-maya.project`를 검색합니다. - -![tk-maya](./images/installing_app/13_tk-maya.png) - -**15단계:** 다음 아래에 위치 디스크립터를 추가합니다. - -```yaml -settings.tk-maya.project: - apps: -``` - -위치 디스크립터를 추가하는 방법에 대한 가이드로 `about` 앱인 `tk-multi-about:`을 사용한 후 파일을 저장합니다. - -{% include info title="참고" content="[YAML](https://www.tutorialspoint.com/yaml/yaml_indentation_and_separation.htm) 파일의 서식이 탭이 아니라 공백을 사용하여 올바르게 지정되었는지 확인하십시오." %} - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" - tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" -``` - -**Screening Room, {% include product %} Panel 및 Workfiles2** 앱의 위치 식별자가 포함된 다른 파일에 나열되어 있고 **About** 앱과 다르게 액세스되는 것을 알 수 있습니다. 이러한 앱에는 추가 설정이 있으므로 정리를 위해 포함된 설정 폴더로 분리되었습니다. - -{% include info title="참고" content="Python 콘솔 앱은 기본 구성에 이미 있지만, 사용 중인 구성에 이전에 추가한 적이 없는 앱을 추가할 경우 또는 앱의 버전을 변경하고 [중앙 집중식 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)을 사용하는 경우에는 추가 단계를 수행해야 합니다. 터미널을 열고 복제된 구성이 저장된 위치를 찾습니다. 복제된 구성의 루트 폴더에서 다음 명령을 실행합니다.
- -Linux 또는 Mac: - - ./tank cache_apps - -Windows: - - tank.bat cache_apps - -이렇게 하면 앱, 엔진 및 프레임워크에 대해 구성을 스캔하고 모두 다운로드되었는지 확인합니다." %} - -## Maya에서 변경 사항 보기 - -**16단계:** {% include product %} 데스크톱을 열고 작업하는 프로젝트를 선택한 후 복제된 구성을 사용하고 있는지 확인합니다. - -프로젝트 이름 아래, 생성된 복제본의 이름에 파란색 막대가 표시됩니다. - -{% include info title="참고" content="기본 항목을 사용하는 경우 파란색 막대가 없고 구성 이름이 표시되지 않습니다." %} - -![Maya의 복제된 구성](./images/installing_app/14_maya_cloned_config.png) - -**17단계:** 데스크톱에서 Maya를 실행하고 **{% include product %} > 프로젝트(Project) > …** 메뉴를 선택합니다. - -다음에 해당하는 경우: - -* 방금 편집한 복제된 구성을 사용합니다. -* 복제된 구성이 올바르게 확장되었습니다. -* 확장된 파일을 저장했습니다. -* 복제된 구성과 프로젝트를 연결했습니다. -* {% include product %} 데스크톱에서 Maya를 다시 실행했습니다. - -Python 콘솔 앱을 Maya에서 사용할 수 있습니다. - -![프로젝트 ID](./images/installing_app/16_project_ID.png) - -## 변경 사항을 프로덕션에 적용 - -Python 콘솔 앱이 올바르게 추가된 것을 확인하고 나면 변경 사항을 라이브로 적용할 수 있습니다. - -**18단계:** 터미널을 열고 복제된 구성이 저장된 위치를 찾습니다. 복제된 구성의 루트 폴더에서 다음 명령을 실행합니다. - -Linux 또는 Mac: - -`./tank push_configuration` - -Windows: - -`tank.bat push_configuration` - -프롬프트에 따라 변경 사항을 적용하려는 구성인 프로젝트 기본 구성의 ID를 입력합니다. - -``` - -$ ls -cache config install tank tank.bat -$ ./tank push_configuration - -Welcome to the Shotgun Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current path -'/Users/michelle/Documents/Shotgun/configs/the_other_side_clone2' -- The path is not associated with any Shotgun object. -- Falling back on default project settings. -- Running as user 'Michelle' -- Using configuration 'Primary Clone Config 2' and Core v0.18.159 -- Setting the Context to Project the_other_side. -- Running command push_configuration... - - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary Clone Config 2') to another pipeline configuration in the project. -By default, the data will be copied to the target config folder. If pass a ---symlink parameter, it will create a symlink instead. - -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): - -``` - -복제된 구성을 적용할 수 있는 사용 가능한 파이프라인 구성 목록이 표시됩니다. 구성을 업데이트하려는 프로젝트에 대한 기본 파이프라인 구성의 ID를 입력합니다. - -{% include info title="참고" content="이 안내서의 **3단계**에서 확인한 ShotGrid의 파이프라인 구성(Pipeline Configuration) 페이지에서 파이프라인 구성의 ID를 찾을 수도 있습니다. 프로젝트 ID를 찾으려면 구성 목록(Configuration List)으로 이동하고 ID 열을 추가하십시오." %} - -![ID 열](./images/installing_app/17_id_column.png) - -ID를 입력하면 {% include product %}에서 다음 작업을 수행합니다. - -* 기본 구성 백업 -* 복제된 구성 복사 -* 복제본을 그대로 둔 상태로 복제된 구성의 복사본을 프로젝트와 연결 -* 기본 구성이 저장된 위치 표시 -* 다운로드하고 캐시해야 할 앱이 있는지 여부 확인 - -``` -Please type in the id of the configuration to push to (ENTER to exit): 1 -Hold on, pushing config… -Your old configuration has been backed up into the following folder: -/Users/michelle/Documents/Shotgun/configs/the_other_side/config.bak.20190118_111627 -Checking if there are any apps that need downloading… - -Push Complete! -``` - -## 기본 구성에서 수행한 변경 사항 표시 - -**19단계:** {% include product %} 데스크톱의 오른쪽 위에 있는 화살표를 클릭하고 **구성**(CONFIGURATION) 목록에서 **기본(Primary)**을 선택합니다. - -![Maya 구성 변경](./images/installing_app/18_change_config_maya.png) - -**20단계:** 데스크톱에서 Maya를 실행하고 **{% include product %} > 프로젝트(Project) > …** 메뉴에서 {% include product %} Python 콘솔...(Python Console...)을 찾습니다. - -![Maya 내 앱](./images/installing_app/19_app_in_maya.png) - -Python 콘솔 앱이 선택한 프로젝트의 프로젝트 환경에 추가되었습니다. 두 번째 안내서인 “[구성 편집](./editing_app_setting.md)"에서 각 환경은 서로 독립적이고, 프로젝트마다 전용 구성이 있으며, 프로젝트가 로드될 때 소프트웨어 통합이 파이프라인 구성에서 설정을 수집한다는 것을 살펴봤습니다. 환경에서 Python 콘솔을 사용할 수 있으려면 `app_locations.yml` 파일에서 위치 디스크립터를 찾는 지침이 환경에 제공되어야 합니다. 이 점을 고려해 볼 때 파이프라인에서 Python 콘솔 앱을 사용할 수 있게 할 위치에 "여기서 Python 콘솔 앱 사용"과 같은 설정을 지정해야 합니다. - -## 고급 항목 - -### {% include product %} 개발자 커뮤니티 - -툴킷의 놀라운 특징 중 하나는 모든 작업자가 툴킷 앱을 작성할 수 있다는 점입니다. 앱을 전용 앱으로 사용할 수도 있지만, {% include product %} 도구에 추가할 수 있도록 [{% include product %} 커뮤니티](https://community.shotgridsoftware.com/c/pipeline/6)에서 공유할 수도 있습니다. {% include product %} 커뮤니티 페이지에서 공유할 뛰어난 기능을 생성한 경우 도움을 받으려면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)를 방문하십시오. - -표준 툴킷 앱과 {% include product %} 커뮤니티에서 생성된 앱에 대한 활발한 논의가 **[{% include product %}-dev Google 그룹](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=ko#!forum/shotgun-dev)**에서 진행되고 있습니다. {% include product %} 커뮤니티에 새로운 정보 제공 사례가 늘어남에 따라 이러한 기술 및 도구 기반은 끊임없이 확장되고 있습니다. - -### 구성을 확장하는 방법 연구 - -프로젝트에 사용할 구성을 선택할 때 Python 콘솔 앱을 {% include product %} 데스크톱 드롭다운에서 찾을 수 있다는 것을 아셨을 것입니다. - -![데스크톱 Python 콘솔](./images/installing_app/20_desktop_python_console.png) - -파이프라인 구성에 추가하려는 앱을 사용하고 있는 환경이 있다면 간단한 탐색 작업을 거쳐 앱을 구성에 추가하는 데 필요한 정보를 찾을 수 있습니다. 환경의 구성 파일에서 앱이 사용되는 위치를 파악하면 앱 위치 디스크립터와 설정을 추가하는 방법을 확인할 수 있습니다. - -데스크톱 앱은 프로젝트 환경에서 열리므로 `project.yml` 파일에서 `tk-desktop`을 찾습니다. - -`config/env/project.yml`을 엽니다. - -엔진 블록에서 `tk-desktop`은 포함된 컨텐츠를 가리킵니다. - -```yaml -includes: - - ./includes/settings/tk-desktop.yml - -engines: - tk-desktop: "@settings.tk-desktop.project" -``` - -include의 경로를 따라 `config/env/includes/settings/tk-desktop.yml`을 열고 `settings.tk-desktop.project` 블록을 찾습니다. 해당 블록에서 다음을 확인할 수 있습니다.

- -```yaml -apps: - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" -``` - -이러한 블록은 프로젝트 단계에서 Python 콘솔 앱을 데스크톱 엔진에 추가합니다. - -include의 경로를 `../includes/app_locations.yml`까지 따라가 `apps.tk-multi-pythonconsole.location`을 검색하여 다음을 확인합니다.

- -```yaml -# pythonconsole -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 -``` - -모든 앱, 엔진 및 프레임워크에는 툴킷에 특정 번들에 액세스하는 위치를 알리는 데 사용되는 위치 디스크립터가 있습니다. 대부분의 앱 디스크립터는 `app_locations.yml` 파일에 있지만, Python 콘솔 앱에서 확인한 것처럼 원하는 위치에서 참조되지 않을 수도 있습니다. 모든 표준 앱 및 엔진은 [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/162eaa4b/)에 나와 있습니다. - -ShotGrid에서 지원하는 적합한 소프트웨어 통합에 앱을 추가할 수도 있고, 자신만의 전용 응용프로그램을 자체 툴킷 도구에 추가할 수도 있습니다. 지원되는 모든 소프트웨어 응용프로그램도 통합의 [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/162eaa4b/)에 나와 있습니다. - -원하는 앱을 찾을 수 없는 경우 직접 작성할 수 있습니다. 다른 ShotGrid 사용자도 동일한 기능을 필요로 할 수 있으므로 새로 만든 앱을 공유하는 것도 ShotGrid 커뮤니티에 기여하는 한 가지 방법입니다. - -[다음 안내서](https://developer.shotgridsoftware.com/ko/56b441c6/)에서는 스튜디오의 구조에 따라 프로덕션 폴더 구조를 커스터마이즈하는 방법을 알아봅니다. diff --git a/docs/ko/guides/pipeline-integrations/getting_started.md b/docs/ko/guides/pipeline-integrations/getting_started.md deleted file mode 100644 index d506a5e8c..000000000 --- a/docs/ko/guides/pipeline-integrations/getting_started.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 시작하기 -pagename: toolkit-getting-started -lang: ko ---- - -# 시작하기 - -{% include product %} 툴킷은 스튜디오 파이프라인 생성을 위해 매우 세부적인 사항까지 커스터마이즈할 수 있는 일련의 도구를 제공합니다. 이 도구를 통해 아티스트는 컨텐츠 생성 소프트웨어를 종료하지 않고도 {% include product %}의 정보에 액세스하고 아티스트 간에 작업을 공유할 수 있습니다. 이 안내서는 실습을 통해 커스텀 툴킷 파이프라인 설정을 시작할 수 있도록 디자인되었습니다. {% include product %} 데스크톱 앱을 사용하여 편집 가능한 프로젝트 구성을 생성하고, 기존 앱에서 설정을 수정하고, 다른 아티스트 환경에 툴킷 앱을 추가하여 커스텀 파이프라인을 디자인할 수 있습니다. 각 안내서는 이전 안내서를 토대로 작성되지만 어디서나 이동할 수 있는 지침이 포함되어 있습니다. diff --git a/docs/ko/guides/pipeline-integrations/workflows.md b/docs/ko/guides/pipeline-integrations/workflows.md deleted file mode 100644 index 5838d43df..000000000 --- a/docs/ko/guides/pipeline-integrations/workflows.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 워크플로우 -pagename: toolkit-workflows -lang: ko ---- - -# 워크플로우 - -{% include product %} 파이프라인 통합의 커스터마이제이션을 통해 도구를 사용하여 장편 애니메이션에서 에피소드 워크플로우, 시각 효과, 게임에 이르는 다양한 워크플로우를 생성할 수 있습니다. - -이 섹션에서는 특정 워크플로우 빌드를 위한 리소스를 소개합니다. diff --git a/docs/ko/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md b/docs/ko/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md deleted file mode 100644 index a7ff7b88a..000000000 --- a/docs/ko/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md +++ /dev/null @@ -1,422 +0,0 @@ ---- -layout: default -title: Nuke Studio의 에피소드 워크플로우 -pagename: episodic-nuke-tutorial -lang: ko ---- - -# Nuke Studio의 에피소드 워크플로우 - - -## 소개 및 준비 작업 - - -이 문서에서는 Nuke Studio 또는 Hiero에서 `tk-hiero-export` 앱으로 에피소드 워크플로우를 시작하고 실행하는 방법에 대해 설명합니다. 명확하게 정해진 방법은 없으며 원하는 워크플로우에 따라 접근 방식이 약간 다를 수 있습니다. 이 예제에서는 다음과 같이 가정합니다. - -* 목표는 `Episode > Sequence > Shot`의 3계층을 설정하는 것입니다. -* [파일 시스템 구성 안내서](https://developer.shotgridsoftware.com/ko/82ff76f7/)의 단계를 읽고 완료합니다. -* `CustomEntity02`가 아닌 `Episode` 엔티티 유형을 사용합니다(둘 다 이름만 다를 뿐 동일한 방식으로 작업할 수 있음). -* `Sequence` 엔티티에는 `episode`라는 엔티티 필드가 있습니다. -* Hiero의 경우에도 프로세스는 동일하지만 Nuke Studio를 사용합니다. -* 툴킷 프로젝트에 대한 [기본 구성](https://github.com/shotgunsoftware/tk-config-default2)부터 시작합니다. - -시작하기 전에 `Episode`를 확인하는 방법도 결정해야 합니다. 기본 제공 {% include product %} Hiero/Nuke Studio 내보내기 프로세스에서는 Nuke Studio 프로젝트의 컨텐츠에 기반하여 {% include product %} 사이트에 `Sequence` 및 `Shot` 엔티티를 생성합니다. 따라서 툴킷을 사용하여 Maya에서 작업할 때는 에셋 및 태스크를 미리 만드는 것이 좋지만 이와 달리 Nuke Studio에서는 `Episodes` `Sequences` 또는 `Shots`을 미리 만들 필요가 없습니다. 즉, Nuke Studio에서 `Episode`를 정의하는 방법을 결정해야 합니다. 가능한 옵션은 다음과 같습니다. - -* 먼저 {% include product %}에서 에피소드를 만들고 에피소드 컨텍스트에서 작동하도록 Nuke Studio 툴킷 통합을 구성하면 내보낼 때 현재 씬 컨텍스트에서 `Episode` 엔티티를 가져올 수 있습니다. -* `Episode` 엔티티가 아직 생성되지 않았다고 가정하고 Nuke Studio의 태그 지정 기능을 활용하여 에피소드 이름으로 시퀀스에 태그를 지정하고 이를 사용하여 내보낼 때 `Episode`를 확인합니다. - -Nuke Studio 시퀀스 또는 샷 이름의 일부에서 에피소드 이름을 추출(예: "ep1_s01" 시퀀스의 "ep1" 비트 사용)하는 등 워크플로우에 더 적합한 다른 방법이 있을 수 있습니다. 또는 내보내기 앱의 [hiero_customize_export_ui.py](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) 후크를 사용하여 에피소드와 내보내기를 링크할 GUI를 추가할 수 있습니다. - -이 예에서는 두 번째 옵션인 시퀀스 태그 지정 솔루션을 사용합니다. - -*이 연습은 3개의 계층 레이어(`Episode > Sequence > Shot`)를 구현하기 위한 것입니다. 간단하게 `Sequence` 엔티티 유형을 `Episodes` 엔티티 유형으로 대체하는 프로세스(`Episode > Shot`)는 더 쉽습니다. 이 시나리오는 이 안내서의 마지막 부분에서 간단하게 다룹니다. 나머지 부분을 살펴보면 보다 잘 이해할 수 있습니다.* - -## 스키마 및 템플릿 - - -앞서 설명한 바와 같이, 이 예에서는 [스키마 및 템플릿을 업데이트](https://developer.shotgridsoftware.com/ko/82ff76f7/#how-can-i-add-a-new-entity-type-to-my-file-structure)했다고 가정합니다. 또한 올바른 부분에 에피소드 키를 포함하도록 templates.yml의 `hiero_plate_path` 및 `hiero_render_path` 경로 값도 업데이트해야 합니다. - -## 후크 및 설정 - - -{% include product %} 내보내기 프로세스를 가져와 `Episode`를 올바르게 처리하려면 내보내기 후크의 일부를 수정해야 합니다. 이 문서에서는 [후크](https://developer.shotgridsoftware.com/ko/312b792f/#using-frameworks-from-hooks)가 무엇인지와 기본 구현을 재정의하는 방법을 잘 알고 있다고 가정합니다. - -다음은 에피소드를 활성화하는 데 도움이 되는 두 개의 내보내기 후크입니다. - -* `hiero_get_shot.py` -* `hiero_resolve_custom_strings.py` - -참고: `hiero_translate_template.py`라는 세 번째 후크가 있지만 이 예에서는 사용하지 않습니다. 이 후크는 시퀀스를 에피소드로 대체하고 두 개의 레이어 계층을 유지하려는 경우에만 필요합니다. 여기에 대해서는 문서 마지막에 좀 더 다룹니다. - -에피소드를 찾을 수 있도록 `hiero_get_shot.py`를 수정하고 {% include product %}에서 이에 대한 엔티티를 만듭니다. 그리고 Nuke Studio가 경로에서 {Episode} 키에 제공할 값을 알 수 있도록 `hiero_resolve_custom_strings.py`를 수정합니다. 다음은 자세한 단계입니다. - -### 1. 에피소드 필드 추가 - -이제 `Episode`라는 템플릿에 새 키가 있고 이를 확인하는 방법을 `tk-hiero-export` 앱에 지정해야 합니다. `/config/env/includes/settings/tk-hiero-export.yml` 파일에서 `custom_template_fields`를 다음과 같이 수정합니다. - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - ... -``` - -그러면 `{Episode}`라는 유효한 내보내기 토큰이 Hiero 내보내기에 추가됩니다. - -### 2. hiero_get_shot 후크 - -이제 `hiero_get_shot.py` 후크를 사용하여 내보내기 프로세스에 에피소드 이름을 찾는 방법을 지정하고 {% include product %}에서 `Episode`를 만들어야 합니다. - -[후크의 기본 버전(hiero_get_shot.py)](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip)은 TrackItem과 이름이 같은 {% include product %}의 `Shot`을 반환합니다. `Shot`은 Nuke Studio 시퀀스 항목과 이름이 같은 `Sequence`에 링크되어야 합니다. `Sequence` 또는 `Shot`이 {% include product %}에 없으면 후크가 이를 만듭니다. 다른 계층 수준을 추가하고 있으므로 `Episode`가 없는 경우 이 또한 후크가 만들도록 해야 합니다. - -`Sequence`는 `Episode`에 링크되므로 `Sequence`를 조회하는 코드에 연결해야 합니다(`get_shot_parent()` 메서드). - -구성의 후크 폴더에 `hiero_get_shot.py` 파일을 만들고 `hook_get_shot: '{config}/hiero_get_shot.py'`를 `tk-hiero-export.yml` 설정에 다음과 같이 추가합니다. - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - hook_get_shot: '{config}/hiero_get_shot.py' -``` - -다음은 `hiero_get_shot.py` 후크에 대한 전체 코드입니다. 이를 사용자가 만든 후크에 추가합니다. - -``` -from sgtk import Hook - -class HieroGetShot(Hook): - """ - Return a {% include product %} Shot dictionary for the given Hiero items - """ - - def execute(self, task, item, data, **kwargs): - """ - Takes a hiero.core.TrackItem as input and returns a data dictionary for - the shot to update the cut info for. - """ - - # get the parent entity for the Shot - parent = self.get_shot_parent(item.parentSequence(), data, item=item) - - # shot parent field - parent_field = "sg_sequence" - - # grab shot from {% include product %} - sg = self.parent.shotgun - filter = [ - ["project", "is", self.parent.context.project], - [parent_field, "is", parent], - ["code", "is", item.name()], - ] - - # default the return fields to None to use the python-api default - fields = kwargs.get("fields", None) - shots = sg.find("Shot", filter, fields=fields) - if len(shots) > 1: - # can not handle multiple shots with the same name - raise StandardError("Multiple shots named '%s' found", item.name()) - if len(shots) == 0: - # create shot in {{ akn_product_name_lower }} - shot_data = { - "code": item.name(), - parent_field: parent, - "project": self.parent.context.project, - } - shot = sg.create("Shot", shot_data, return_fields=fields) - self.parent.log_info("Created Shot in {% include product %} : %s" % shot_data) - else: - shot = shots[0] - - # update the thumbnail for the shot - upload_thumbnail = kwargs.get("upload_thumbnail", True) - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", - entity=shot, - source=item.source(), - item=item, - task=kwargs.get("task") - ) - - return shot - - def get_episode(self, data=None, hiero_sequence=None): - """ - Return the {{ akn_product_name_lower }} episode for the given Nuke Studio items. - We define this as any tag linked to the sequence that starts - with 'Ep'. - """ - - # If we had setup Nuke Studio to work in an episode context, then we could - # grab the episode directly from the current context. However in this example we are not doing this but here - # would be the code. - # return self.parent.context.entity - - # stick a lookup cache on the data object. - if "epi_cache" not in data: - data["epi_cache"] = {} - - # find episode name from the tags on the sequence - nuke_studio_episode = None - for t in hiero_sequence.tags(): - if t.name().startswith('Ep'): - nuke_studio_episode = t - break - if not nuke_studio_episode: - raise StandardError("No episode has been assigned to the sequence: %s" % hiero_sequence.name()) - - # For performance reasons, lets check if we've already added the episode to the cache and reuse it - # Its not a necessary step, but it speeds things up if we don't have to check {{ akn_product_name_lower }} for the episode again - # this session. - if nuke_studio_episode.guid() in data["epi_cache"]: - return data["epi_cache"][nuke_studio_episode.guid()] - - # episode not found in cache, grab it from {% include product %} - sg = self.parent.shotgun - filters = [ - ["project", "is", self.parent.context.project], - ["code", "is", nuke_studio_episode.name()], - ] - episodes = sg.find("Episode", filters, ["code"]) - if len(episodes) > 1: - # can not handle multiple episodes with the same name - raise StandardError("Multiple episodes named '%s' found" % nuke_studio_episode.name()) - - if len(episodes) == 0: - # no episode has previously been created with this name - # so we must create it in {{ akn_product_name_lower }} - epi_data = { - "code": nuke_studio_episode.name(), - "project": self.parent.context.project, - } - episode = sg.create("Episode", epi_data) - self.parent.log_info("Created Episode in {% include product %} : %s" % epi_data) - else: - # we found one episode matching this name in {{ akn_product_name_lower }}, so we will resuse it, instead of creating a new one - episode = episodes[0] - - # update the cache with the results - data["epi_cache"][nuke_studio_episode.guid()] = episode - - return episode - - def get_shot_parent(self, hiero_sequence, data, **kwargs): - """ - Given a Hiero sequence and data cache, return the corresponding entity - in {% include product %} to serve as the parent for contained Shots. - - :param hiero_sequence: A Hiero sequence object - :param data: A dictionary with cached parent data. - - .. note:: The data dict is typically the app's `preprocess_data` which maintains the cache across invocations of this hook.         - - """ - # stick a lookup cache on the data object. - if "parent_cache" not in data: - data["parent_cache"] = {} - - if hiero_sequence.guid() in data["parent_cache"]: - return data["parent_cache"][hiero_sequence.guid()] - - episode = self.get_episode(data, hiero_sequence) - - # parent not found in cache, grab it from {% include product %} - - sg = self.parent.shotgun filter = [ - ["project", "is", self.parent.context.project], - ["code", "is", hiero_sequence.name()], - ["episode", "is", episode], - ] - - # the entity type of the parent. - par_entity_type = "Sequence" - - parents = sg.find(par_entity_type, filter) - if len(parents) > 1: - # can not handle multiple parents with the same name - raise StandardError( - "Multiple %s entities named '%s' found" % (par_entity_type, hiero_sequence.name()) - ) - - if len(parents) == 0: - # create the parent in {{ akn_product_name_lower }} - par_data = { - "code": hiero_sequence.name(), - "project": self.parent.context.project, - "episode": episode, - } - - parent = sg.create(par_entity_type, par_data) - self.parent.log_info( - "Created %s in {% include product %} : %s" % (par_entity_type, par_data) - ) - else: - parent = parents[0] - - # update the thumbnail for the parent - upload_thumbnail = kwargs.get("upload_thumbnail", True) - - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", entity=parent, source=hiero_sequence, item=None - ) - - # cache the results - data["parent_cache"][hiero_sequence.guid()] = parent - return parent -``` - -#### 시퀀스 가져오기 - -위 코드를 사용하여 `get_shot_parent()` 메서드를 수정했습니다. 이제 `Sequence`를 찾거나 만들 때 새 `get_episode()` 방식에서 반환된 `Episode`를 사용합니다. {% include product %} 데이터베이스의 기존 `Sequence`를 확인할 때 이제 `episode %s" % (shot_code, keyword, result)) - return result - -``` - -스키마 에피소드 폴더 이름이 `code` 필드가 아닌 다른 필드에서 생성되는 경우에는 해당 이름을 여기에 복제해야 합니다. - -좀 더 복잡하지만 보다 정확한 해결 방법은 templates.yml에 `episode_root` 템플릿을 추가한 다음 템플릿에서 필드를 가져오는 것입니다. 이렇게 하면 스키마에서 에피소드 폴더 이름을 변경해도 반환되는 폴더 이름은 항상 스키마와 일치합니다. 다음과 같습니다. - -``` -ctx = tk.context_from_entity("Episode", episode_entity[id]) -my_template = tk.templates["episode_root"] -fields = my_template.get_fields(ctx.filesystem_locations[0]) -return fields["Episode"] - -``` - -## 마무리 - - -이제 마무리 단계입니다. 변경 사항이 제대로 작동하는지만 테스트하면 됩니다. - -Nuke Studio를 시작하고 프로젝트를 만들어 시퀀스와 footage로 채우면 이제 내보내기 프로세스를 테스트할 수 있습니다. 먼저 에피소드 태그를 만듭니다. `Ep`로 시작하는 시퀀스에 대한 태그를 찾도록 후크를 코딩했으므로 태그 이름을 `Ep…`로 지정해야 합니다. - -![에피소드 태그 만들기](/images/tutorial/tu-episodic-nuke-mceclip0-01.png) - -이제 시퀀스에 태그를 추가합니다. - -![시퀀스에 태그를 추가합니다](./images/tutorial/tu-episodic-nuke-mceclip2-02.png) -![시퀀스에 태그 추가](/images/tutorial/tu-episodic-nuke-mceclip1-03.png) - -완료되면 태그가 지정된 시퀀스에서 샷을 내보냅니다. - - -![샷 내보내기](/images/tutorial/tu-episodic-nuke-mceclip4-04.png) - -구조 내보내기 계층이 스키마의 계층과 일치하는지 확인합니다. 일치하지 않을 경우 [구조를 새로 고쳐야](#tip-refresh) 할 수 있습니다. - -![구조 내보내기 계층](/images/tutorial/tu-episodic-nuke-mceclip3-05.png) - - -내보내기(Export)를 클릭하면 {% include product %} 사이트에 에피소드, 시퀀스 및 샷이 만들어질 뿐만 아니라 디스크에 폴더 구조가 만들어집니다. 문제가 발생할 경우 발생할 수 있는 모든 오류에 대해 Nuke Studio 스크립트 편집기 또는 [ {% include product %} 로그(tk-nukestudio.log)](https://developer.shotgunsoftware.com/ko/38c5c024/)를 확인합니다. - -이로써 안내서가 완료되었습니다. 물론 이는 에피소드 작업을 수행하는 많은 방법 중 하나일 뿐이며 스튜디오에 가장 적합한 접근 방법 및 구조를 사용하면 됩니다. - -## 시퀀스를 에피소드와 교체 - - -위에서 간단하게 언급한 대로 기본 시퀀스/샷 계층을 에피소드/샷과 교체하려면 Nuke Studio 시퀀스 항목을 에피소드 이름의 소스로 사용할 수 있습니다. - -1. 에피소드/샷 구조를 사용하여 작업하도록 스키마 및 템플릿을 설정합니다. - -2. 위에 표시된 대로 기본 `hiero_get_shot.py` 후크를 인계받습니다. 그러나 이번에는 `parent_field` 변수 값을 `sg_episode`로 변경하고(샷 엔티티에 에피소드 필드가 있어야 함) `par_entity_type` `variable value to` `Episode`로 변경합니다. - -3. `hiero_translate_template.py` 후크를 인계받고 후크 파일에서 매핑을 변경합니다. - -``` - mapping = { - "{Episode}": "{sequence}", - "{Shot}": "{shot}", - "{name}": "{clip}", - "{version}": "{tk_version}", -} - -``` - - -에피소드 키는 Nuke Studio 시퀀스 키 값으로 확인됩니다. - -> **팁:** 이러한 변경을 수행하기 전에 Hiero/Nuke Studio 프로젝트를 열었거나, 변경하는 동안 테스트하려는 경우에는 내보내기 경로를 재설정해야 할 수 있습니다. 내보내기 대화상자를 열면 Nuke Studio가 내보내기 트리를 캐시하므로 변경 사항을 스키마로 다시 로드하려면 새로 고침 버튼을 눌러 다시 빌드해야 합니다. \ No newline at end of file diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_0.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_0.png deleted file mode 100644 index 5824310ef..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_0.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_1.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_1.png deleted file mode 100644 index a15d67758..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_1.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_10.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_10.png deleted file mode 100644 index c7377d2dd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_10.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_11.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_11.png deleted file mode 100644 index 03fd1d6fb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_11.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_12.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_12.png deleted file mode 100644 index cd19dbd00..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_12.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_13.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_13.png deleted file mode 100644 index 97d420ef0..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_13.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_14.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_14.png deleted file mode 100644 index 9d27ac762..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_14.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_15.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_15.png deleted file mode 100644 index 7c2b8efc1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_15.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_16.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_16.png deleted file mode 100644 index 62e275474..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_16.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_17.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_17.png deleted file mode 100644 index 41ed0eb5e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_17.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_18.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_18.png deleted file mode 100644 index ab14dcb0a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_18.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_19.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_19.png deleted file mode 100644 index 21cfe7051..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_19.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_2.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_2.png deleted file mode 100644 index 6ba10aaf7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_2.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_20.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_20.png deleted file mode 100644 index 1faaeb650..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_20.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_21.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_21.png deleted file mode 100644 index aa56cede3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_21.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_22.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_22.png deleted file mode 100644 index 9d6e98568..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_22.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_23.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_23.png deleted file mode 100644 index 4cd0d4138..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_23.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_24.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_24.png deleted file mode 100644 index 6f73c99bb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_24.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_25.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_25.png deleted file mode 100644 index ac143b087..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_25.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_26.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_26.png deleted file mode 100644 index 17f56888a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_26.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_27.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_27.png deleted file mode 100644 index 92917b897..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_27.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_28.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_28.png deleted file mode 100644 index d8f8813ea..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_28.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_29.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_29.png deleted file mode 100644 index c17f9bb2b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_29.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_3.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_3.png deleted file mode 100644 index 10c6dadd5..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_3.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_30.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_30.png deleted file mode 100644 index 6f761b33e..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_30.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_31.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_31.png deleted file mode 100644 index 0ee0be4ac..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_31.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_32.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_32.png deleted file mode 100644 index 519ac5458..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_32.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_33.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_33.png deleted file mode 100644 index c81fa0a7c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_33.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_34.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_34.png deleted file mode 100644 index d4827ad7b..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_34.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_35.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_35.png deleted file mode 100644 index 7fc51a8a5..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_35.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_36.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_36.png deleted file mode 100644 index 9960e0704..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_36.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_37.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_37.png deleted file mode 100644 index 6a158bdf6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_37.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_4.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_4.png deleted file mode 100644 index 4259e78bb..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_4.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_40.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_40.png deleted file mode 100644 index 110a3dd13..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_40.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif deleted file mode 100644 index b18aad6e4..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_42.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_42.png deleted file mode 100644 index 70c2f3827..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_42.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_43.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_43.png deleted file mode 100644 index e9e1c2f86..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_43.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_44.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_44.png deleted file mode 100644 index 3ba8087a3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_44.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_45.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_45.png deleted file mode 100644 index fe7a2fc4c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_45.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_46.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_46.png deleted file mode 100644 index ddff627ce..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_46.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_47.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_47.png deleted file mode 100644 index 6106fbac2..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_47.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_48.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_48.png deleted file mode 100644 index 653d5ede7..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_48.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif deleted file mode 100644 index 6b2746480..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_5.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_5.png deleted file mode 100644 index a46252d77..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_5.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_50.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_50.png deleted file mode 100644 index 729a6d2a3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_50.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_51.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_51.png deleted file mode 100644 index 0ddd3ee28..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_51.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_52.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_52.png deleted file mode 100644 index 1c8cd852a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_52.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_53.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_53.png deleted file mode 100644 index fb2f230a3..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_53.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54.png deleted file mode 100644 index 49301aa11..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif deleted file mode 100644 index 3decd4533..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_55.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_55.png deleted file mode 100644 index 9e1da12d1..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_55.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_56.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_56.png deleted file mode 100644 index 65489413f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_56.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_57.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_57.png deleted file mode 100644 index 75fd63854..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_57.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_58.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_58.png deleted file mode 100644 index 270c1d6a9..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_58.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_59.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_59.png deleted file mode 100644 index 9dea20d7f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_59.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_60.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_60.png deleted file mode 100644 index 2db46db0a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_60.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_61.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_61.png deleted file mode 100644 index 40310d75f..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_61.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_62.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_62.png deleted file mode 100644 index b117a82e6..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_62.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_63.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_63.png deleted file mode 100644 index 569866d92..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_63.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_64.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_64.png deleted file mode 100644 index 9c591b497..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/image_64.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png deleted file mode 100644 index 55cde0429..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png deleted file mode 100644 index 8fce5b3ea..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png deleted file mode 100644 index 7af0f7437..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png deleted file mode 100644 index 1857a1f4a..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png deleted file mode 100644 index ac26f2a54..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png deleted file mode 100644 index 968a3a7f8..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png deleted file mode 100644 index 824ccc1f5..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png deleted file mode 100644 index d5b6fd796..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png deleted file mode 100644 index 6ac096997..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png deleted file mode 100644 index d0fc6debd..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png deleted file mode 100644 index afac41f35..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png b/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png deleted file mode 100644 index ceee9446c..000000000 Binary files a/docs/ko/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png and /dev/null differ diff --git a/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md deleted file mode 100644 index c8a74cd6b..000000000 --- a/docs/ko/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ /dev/null @@ -1,853 +0,0 @@ ---- -layout: default -title: 애니메이션 파이프라인 튜토리얼 -pagename: toolkit-pipeline-tutorial -lang: ko ---- - -# 애니메이션 파이프라인 튜토리얼 - -이 튜토리얼에서는 애니메이션이나 시각 효과 프로덕션을 위한 단순하면서도 전형적인 파이프라인을 빌드하는 방법을 다룹니다. 이 튜토리얼을 수행하면 에셋을 모델링에서부터 모양 개발, 그리고 프로덕션 씬으로 푸시하는 데 필요한 모든 부분을 제공하는 파이프라인을 빌드하게 됩니다. - -이 파이프라인에서 다루는 대부분의 워크플로우는 {% include product %}의 기본 제공 통합에서 기본적으로 작동합니다. 이 튜토리얼은 스튜디오에서 커스텀 솔루션을 많이 빌드하는 파이프라인 부분에 대해 툴킷 플랫폼을 사용하여 아티스트 워크플로우를 커스터마이즈하는 프로세스를 안내합니다. - -다음은 이 튜토리얼에서 빌드할 파이프라인의 개략적인 뷰입니다. - -{% include figure src="./images/tutorial/image_0.png" caption="파이프라인 개요" %} - -## 파이프라인 개요 - -편의상 사용되는 DCC(디지털 컨텐츠 생성) 소프트웨어는 최소로 유지되며 Maya 및 Nuke로 제한됩니다. 마찬가지 이유로 파이프라인 단계 간에 전달되는 데이터는 Maya ascii 파일, Alembic 캐시 및 렌더링된 이미지 시퀀스로 제한됩니다. - -{% include info title="참고" content="이 튜토리얼에 설명된 간단한 파이프라인은 프로덕션에서 테스트되지 않았으므로 ShotGrid 기반 파이프라인을 빌드하는 방법에 대한 예제로만 사용해야 합니다." %} - -## 필수 요건 - -* **작업 중인 {% include product %} 프로젝트** - 이 튜토리얼에서는 프로덕션 데이터 트래킹 및 관리를 위해 {% include product %}을 사용하는 환경이라고 가정합니다. - -* **{% include product %} 통합 이해** - {% include product %}는 통합 기능을 통해 수동 구성이 필요 없는 몇 가지 간단한 프로덕션 워크플로우를 제공합니다. 이 튜토리얼에 설명된 수동 구성 및 커스터마이제이션에 대해 자세히 알아보기 전에 이러한 워크플로우의 기능 및 범위를 이해해야 합니다. {% include product %} 통합에 대한 자세한 정보는 [여기](https://developer.shotgridsoftware.com/ko/d587be80/)를 참조하십시오. - -* **Maya 및 Nuke 환경** - 이 튜토리얼은 Nuke와 Maya를 사용하여 간단한 파이프라인을 빌드하도록 설계되었습니다. {% include product %}에서 제공하는 통합을 커스터마이즈하기 위해서는 이러한 패키지를 기본적으로 이해하고 있어야 합니다. - -* **Python 실무 지식** - 이 튜토리얼에서는 Python으로 작성된 "후크"를 통해 {% include product %} 통합 기능을 수정해야 합니다. - -* **YAML 사용 경험** - 빌드할 파이프라인의 대부분의 구성은 YAML 파일을 수정하여 처리됩니다. - -## 추가 리소스 - -* [{% include product %} 지원 사이트](https://support.shotgunsoftware.com/hc/ko) - -* [{% include product %} 통합](https://www.shotgridsoftware.com/integrations/) - - * [사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/) - - * [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/) - - * [개발자 안내서](https://developer.shotgridsoftware.com/ko/93c6e555/) - -# 프로젝트 작성 및 설정 - -이 튜토리얼에서는 {% include product %}에 새 프로젝트를 만들고 프로덕션을 위해 시작할 준비가 된 것처럼 구성해야 합니다. 여기에는 필요한 모든 {% include product %} 엔티티가 제대로 배치되고 링크되어 있는지 확인하는 것도 포함됩니다. 이 튜토리얼에서는 에셋, 시퀀스, 샷 및 태스크 엔티티가 필요하며 새 프로젝트에서 기본값으로 사용할 수 있어야 합니다. 다음을 만듭니다. - -* 두 개의 **에셋**: - - * **_주전자_** 캐릭터 - - * **_테이블_** 소품 - -* 하나의 **시퀀스** - -* 만든 **시퀀스**에 링크된 하나의 **샷** - -* 파이프라인 단계별 **태스크** - -다음은 구성된 프로젝트 엔티티가 {% include product %}에서 어떻게 표시되는지 보여 주는 일부 스크린샷입니다. - -{% include figure src="./images/tutorial/image_1.png" caption="주전자 및 테이블 에셋" %} - -{% include figure src="./images/tutorial/image_2.png" caption="시퀀스에 링크된 샷" %} - -{% include figure src="./images/tutorial/image_3.png" caption="태스크" width="400px" %} - -## 소프트웨어 시작 관리자 - -다음으로, {% include product %} 데스크톱에서 Maya 및 Nuke를 시작할 수 있는지 확인해야 합니다. 이러한 각 패키지는 데스크톱에서 해당 아이콘을 클릭하여 시작할 수 있습니다. 각 패키지의 적절한 버전이 시작되는지 확인합니다. - -응용프로그램이 데스크톱에 표시되지 않거나 예상한 버전이 시작되지 않을 경우 소프트웨어 엔티티를 통해 {% include product %}에서의 시작을 수동으로 구성해야 할 수 있습니다. - -{% include figure src="./images/tutorial/image_4.png" caption="ShotGrid에 정의된 기본 소프트웨어 엔티티" %} - -소프트웨어 엔티티는 프로덕션에 사용할 DCC 패키지를 구동하는 데 사용됩니다. 기본적으로 통합은 표준 설치 위치에서 이러한 패키지를 검색하고 데스크톱을 통해 시작할 수 있도록 합니다. 둘 이상의 버전을 설치하거나 표준 위치가 아닌 곳에 설치한 경우 아티스트의 시작 환경을 조정하기 위해 {% include product %}의 해당 소프트웨어 엔티티 항목을 업데이트해야 할 수도 있습니다. - -소프트웨어 엔티티 및 적절한 구성 방법에 대한 자세한 정보는 [통합 관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오. 예상한 방식으로 DCC가 시작되면 다음 섹션으로 진행할 수 있습니다. - -# 구성 - -구성은 프로젝트에 대한 아티스트 워크플로우를 정의합니다. 여기에는 아티스트가 시작하는 DCC 내에 포함할 {% include product %} 통합, 프로젝트의 폴더 구조 정의 방법 및 아티스트가 데이터를 공유할 때 만든 파일 및 폴더에 대한 명명 규칙 지정이 포함됩니다. - -기본적으로 모든 새 프로젝트는 다양한 기성 소프트웨어 패키지를 사용하여 아티스트 간에 공유 파일에 대한 기본 워크플로우를 제공하는 기본 [{% include product %} 통합](https://developer.shotgridsoftware.com/ko/d587be80/)을 사용하도록 구성됩니다. 다음 섹션에서는 프로젝트의 파이프라인 구성을 인계받고 스튜디오에 맞게 커스터마이즈하는 방법에 대해 설명합니다. - -## 프로젝트 구성 설정하기 - -{% include product %} 데스크톱을 사용하여 프로젝트의 구성을 인계받습니다. 데스크톱 내에서 마우스 오른쪽 버튼을 클릭하거나 오른쪽 하단의 사용자 아이콘을 클릭하면 팝업 메뉴가 표시됩니다. **고급 프로젝트 설정...(Advanced project setup…)** 옵션을 선택하고 마법사를 수행하여 프로젝트 구성을 로컬로 설치합니다. 아래 이미지는 필요한 단계를 보여 줍니다. 통합 관리자 안내서에 설명된 [파이프라인 구성 가져오기](https://developer.shotgridsoftware.com/ko/8085533c/#taking-over-a-pipeline-configuration) 단계를 수행할 수도 있습니다. - -{% include figure src="./images/tutorial/image_5.png" caption="데스크톱 팝업 메뉴에서 **고급 프로젝트 설정...(Advanced project setup…)**을 선택합니다" %} - -{% include figure src="./images/tutorial/wizard_01.png" caption="**ShotGrid 기본값**(ShotGrid Default) 구성 유형을 선택합니다." %} - -{% include figure src="./images/tutorial/wizard_02.png" caption="**기본값 구성**(Default configuration)을 선택합니다." %} - -이번에 처음으로 {% include product %} 프로젝트를 설정하는 경우 프로젝트 데이터의 저장소 위치를 정의하라는 메시지가 표시될 수도 있습니다. 아니면 기존 저장소 위치를 선택할 수 있습니다. - -{% include figure src="./images/tutorial/wizard_03.png" caption="새 저장소를 만듭니다." %} - -{% include figure src="./images/tutorial/wizard_04.png" caption="새 저장소 이름을 지정합니다. 이 저장소는 사이트 전체 수준의 저장소이며 프로젝트별 저장소가 아닙니다." %} - -{% include figure src="./images/tutorial/wizard_05.png" caption="사용할 운영 체제에서 이 저장소에 액세스할 수 있는 경로를 설정합니다." %} - -**사이트 기본 설정(Site Preferences)**의 **파일 관리(File Management)** 섹션에서 {% include product %} 사이트에 대한 저장소를 보고 편집할 수 있습니다. 이러한 설정에 대한 자세한 정보는 [여기](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)에서 확인할 수 있습니다. - -저장소 위치를 선택했으므로 이제 해당 위치에서 새 프로젝트에 대한 디렉토리 이름을 선택합니다. - -{% include figure src="./images/tutorial/wizard_06.png" caption="프로젝트의 파일을 저장할 폴더 이름을 입력합니다." %} - -이 튜토리얼에서는 중앙 집중식 구성을 사용합니다. **분산 설정**(Distributed Setup) 옵션은 다른 혜택을 제공할 수 있는 대체 옵션을 제공하며 빠른 공유 저장소가 없는 스튜디오의 경우 자주 사용하는 옵션이 될 수 있습니다. 다른 구성 설정의 장단점에 대한 자세한 내용은 [툴킷 관리](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2) 프리젠테이션에서 확인할 수 있습니다. - -사이트 전체 수준의 저장소와 달리 구성은 프로젝트별로 다르므로 여기서 선택하는 디렉토리는 구성을 저장하는 데 직접 사용됩니다. - -{% include figure src="./images/tutorial/wizard_07.png" caption="현재 운영 체제에 대해 선택하는 구성 경로를 기록합니다." %} - -위 화면에서 선택하는 폴더가 구성이 설치될 위치입니다. 이 튜토리얼에서는 이 폴더의 구성 컨텐츠를 살펴보고 수정합니다. - -위 화면에서 **설정 실행(Run Setup)**을 클릭하면 데스크톱에서 구성에 필요한 모든 구성 요소를 다운로드하고 설치하기 시작합니다. 설치 프로세스를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 설치가 완료되면 전체 프로젝트 구성의 로컬 사본이 생기고 이를 다음 단계에서 수정합니다. - -데스크톱 설치 튜토리얼에서 지정한 구성 위치는 {% include product %}에서 해당 프로젝트에 대한 파이프라인 구성(Pipeline Configurations) 페이지에 기록됩니다. - -{% include figure src="./images/tutorial/image_10.png" caption="Shotgun에서 파이프라인 구성 엔티티 복제" %} - -다음 섹션을 위한 준비로 이 폴더의 컨텐츠를 숙지합니다. - -## 구성 편성 - -간단한 파이프라인 빌드 프로세스를 시작하기 전에 파이프라인 구성 편성 및 작동 방식을 이해해야 합니다. 다음 그래프에서 구성의 주요 구성 요소 및 해당 용도를 중점적으로 설명합니다. 구성 및 관리에 대한 자세한 정보는 [툴킷 관리](https://developer.shotgridsoftware.com/ko/425b1da4/) 문서를 참조하십시오. - -{% include figure src="./images/tutorial/image_11.png" %} - -### 프로젝트 스키마 - -이 튜토리얼에서 빌드할 간단한 파이프라인은 기본 구성에서 제공되는 프로젝트 스키마를 사용합니다. **`config/core/schema`** 폴더를 검색하면 툴킷 앱에서 디스크에 파일을 작성할 때 생성되는 구조에 대해 파악할 수 있습니다. 프로젝트 디렉토리 구조 구성에 대한 자세한 정보는 [파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) 설명서를 참조하십시오. - -### 템플릿 - -또한 이 튜토리얼에서는 기본 파이프라인 구성에 정의된 템플릿을 사용합니다. **`config/core/templates.yml`** 파일을 열고 디스크상의 경로에 입력 및 출력 파일을 매핑하기 위해 앱에서 가장 많이 사용되는 템플릿을 가져올 수 있습니다. 템플릿 지정 시스템에 대한 자세한 정보는 [파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) 설명서를 참조하십시오. - -### 후크 - -이 튜토리얼의 대부분에는 아티스트 워크플로우를 커스터마이즈하기 위한 앱 후크 수정 작업이 포함됩니다. 이 커스터마이제이션에 대해 자세히 알아보기 전에 후크가 무엇인지, 어떻게 작동하는지, 어디에 있는지에 대한 기본적인 이해가 필요합니다. [관리](https://developer.shotgridsoftware.com/ko/425b1da4/#hooks) 설명서의 후크 섹션을 참조하십시오. - -튜토리얼을 진행하면서 툴킷 앱 중 하나에서 정의된 후크를 "인계"받으라는 요청을 받게 됩니다. 앱 후크를 인계받는 프로세스는 간단합니다. 해당 요청을 받을 때마다 다음 단계를 수행하기만 하면 됩니다. - -1. 구성의 설치 폴더에서 재지정할 후크가 포함된 **앱을 찾습니다**. 해당 앱의 **`hooks`** 하위 디렉토리를 검색하여 재지정할 후크 파일을 찾습니다. - -2. 구성의 최상위 수준 **`hooks`** 디렉토리에 **후크를 복사하고** 필요한 경우 이름을 바꿉니다. - -{% include figure src="./images/tutorial/image_12.png" %} - -파일이 구성의 **`hooks`** 폴더에 있기만 하면 코드를 변경하고 커스터마이즈할 수 있습니다. 해당 앱을 이 새 위치로 지정하려면 추가 단계가 필요합니다. 이 단계는 튜토리얼의 후반부에 나옵니다. - -# 파이프라인 빌드 - -이제 파이프라인을 빌드할 준비가 되었습니다. {% include product %}에서 프로젝트를 설정하고 데스크톱을 통해 Maya & Nuke를 시작할 수 있으며 프로젝트 구성을 제어했습니다. 또한 구성의 기본 구조를 이해하고 아티스트 워크플로우를 구체화할 준비가 되었습니다. - -다음 섹션에서는 각 파이프라인 단계를 수행하면서 기본 제공 기능을 중점적으로 설명하고 {% include product %} 통합을 커스터마이즈하는 프로세스를 안내합니다. 이 섹션을 마칠 때쯤에는 완벽한 기능을 갖춘 간단한 전체 프로덕션 파이프라인을 갖게 됩니다. 또한 아티스트가 프로덕션에서 작업할 때 수행하는 단계도 파악할 수 있습니다. - -{% include info title="참고" content="이 튜토리얼의 모든 코드 및 구성은 [**`tk-config-default2`** 리포지토리](https://github.com/shotgunsoftware/tk-config-default2/tree/pipeline_tutorial/)의 **`pipeline_tutorial`** 분기에서 찾을 수 있습니다. 파일이 있을 위치, 코드를 추가할 위치 등의 힌트가 필요한 경우 이 분기를 활용하십시오." %} - -## 모델링 워크플로우 - -간단한 파이프라인의 첫 번째 단계는 모델링입니다. 이 섹션에서는 프로젝트의 주전자 에셋에 대한 첫 번째 반복을 만듭니다. 이를 프로젝트의 폴더 구조로 디스크에 저장한 다음 게시합니다. - -먼저 {% include product %} 데스크톱에서 Maya를 시작합니다. - -Maya가 완전히 로드되면 파일 열기(File Open) 대화상자가 나타납니다. 이 대화상자를 사용하여 프로젝트 내의 기존 Maya 파일을 찾을 수 있습니다. 또한 {% include product %} 통합에서 인식하는 새 파일을 만들 수 있습니다. - -에셋(Assets) 탭을 선택하고 주전자의 모델링 태스크로 찾아 들어갑니다. 이 태스크에 대한 아티스트 작업 파일이 아직 없으므로 **+ 새 파일(+ New File)** 버튼을 클릭합니다. - -{% include figure src="./images/tutorial/image_13.png" %} - -이 버튼을 클릭하여 비어 있는 새 Maya 세션을 만들고 현재 작업 중인 컨텍스트를 주전자 에셋의 모델 태스크로 설정합니다. - -{%include info title="참고" content="이 튜토리얼에서 언제든지 Maya 또는 Nuke의 ShotGrid 메뉴를 통해 ShotGrid Panel을 시작할 수 있습니다. 이 패널에서는 DCC를 종료하지 않고 프로젝트 데이터에 뷰를 제공합니다. 현재 작업 중인 컨텍스트와 해당 컨텍스트 내의 최근 액티비티가 표시됩니다. 또한 패널로 직접 피드백에 대한 노트를 추가할 수 있습니다. 자세한 정보는 [ShotGrid Panel 설명서](https://developer.shotgridsoftware.com/ko/c0b0ce05/)를 참조하십시오." %} - -다음으로, 주전자를 모델링하거나 제공된 주전자를 [다운로드](https://raw.githubusercontent.com/shotgunsoftware/tk-config-default2/pipeline_tutorial/resources/teapot.obj)하여 가져옵니다. - -{% include figure src="./images/tutorial/image_14.png" %} - -주전자 모델이 만족스러우면 **{% include product %} > 파일 저장...(File Save…)** 메뉴 액션을 선택합니다. 이 대화상자에 지정된 이름, 버전 및 유형으로 파일을 저장할지 묻는 메시지가 표시됩니다. - -{% include figure src="./images/tutorial/image_15.png" %} - -대화상자에 전체 저장 경로를 지정하라는 메시지는 표시되지 않는데 이는 앱이 **`maya_asset_work`** 템플릿으로 저장하도록 구성되었기 때문입니다. 이 템플릿은 기본적으로 다음과 같이 정의됩니다. - -**`@asset_root/work/maya/{name}.v{version}.{maya_extension}`** - -토큰화된 필드, **`{name}`**, **`{version}`** 및 **`{maya_extension}`**은 모두 앱에서 전체 경로를 입력해야 하는 필드입니다. 템플릿의 **`@asset_root`** 부분은 다음으로 정의됩니다. - -**`assets/{sg_asset_type}/{Asset}/{Step}`** - -여기서 토큰화된 필드는 위에서 새 파일을 만들 때 설정한 현재 작업 중인 컨텍스트에 따라 툴킷 플랫폼에 의해 자동으로 추정될 수 있습니다. - -또한 대화상자 하단에서 작성될 파일 이름 및 경로의 미리보기를 확인합니다. 프로젝트 구성을 설정할 때 정의한 기본 저장소 및 프로젝트 폴더가 템플릿 경로의 루트를 구성합니다. - -**저장(Save)** 버튼을 클릭하여 주전자 모델을 저장합니다. - -이때 주의해야 할 중요한 점은 방금 완료한 단계가 아티스트가 파이프라인 전체에서 작업 파일을 열고 저장할 때 수행할 단계와 동일하다는 점입니다. 파일 열기(File Open) 및 파일 저장(File Save) 대화상자는 Workfiles 앱의 일부입니다. 이 "다중" 앱은 {% include product %} 통합에서 지원하는 모든 DCC에서 실행되며 모든 아티스트에 대해 일관된 워크플로우를 제공합니다. - -다음 단계는 주전자를 약간 변경하는 것입니다. 뚜껑 지오메트리가 나중에 리깅할 수 있도록 모델의 나머지 부분과 분리되는지 확인합니다. - -{% include figure src="./images/tutorial/image_16.png" %} - -작업이 만족스러우면 **{% include product %} > 파일 저장...(File Save…)** 메뉴 액션을 다시 실행합니다. 이번 대화상자에서는 기본적으로 버전 번호가 2로 설정됩니다. 파일 버전 자동 증분을 사용하면 아티스트가 수행한 전체 작업 내역을 관리할 수 있습니다. 저장(Save) 버튼을 클릭합니다. - -{% include figure src="./images/tutorial/image_17.png" %} - -주전자 모델을 버전 2로 저장하고 나면 튜토리얼의 이번 섹션에서 마지막 단계를 진행할 준비가 된 것입니다. - -이제 주전자 모델이 준비되면 서페이스 처리 및 리깅할 수 있도록 게시해야 합니다. 게시하려면 **{% include product %} > 게시...(Publish…)** 메뉴 액션을 클릭합니다. Publish 앱 대화상자가 표시됩니다. - -{% include figure src="./images/tutorial/image_18.png" %} - -대화상자에 게시될 항목의 트리가 표시됩니다. 트리에서 일부는 게시할 항목을 나타내고 일부는 게시 작업 중 수행할 액션을 나타냅니다. - -대화상자의 왼쪽에 현재 Maya 세션을 나타내는 항목이 표시됩니다. 그 아래에 **ShotGrid에 게시(Publish to ShotGrid)** 하위 액션이 표시됩니다. **모든 세션 지오메트리(All Session Geometry)**를 나타내는 추가 항목이 현재 세션의 하위 항목으로 표시됩니다. 여기에도 **ShotGrid에 게시(Publish to ShotGrid)** 하위 액션이 있습니다. - -{% include info title="참고" content="**모든 세션 지오메트리**(All Session Geometry) 항목이 표시되지 않으면 Maya에서 Alembic 내보내기 플러그인이 활성화되어 있는지 확인합니다." %} - -트리 왼쪽의 항목을 클릭하여 Publish 앱을 탐색합니다. 수행할 항목을 선택하면 게시되는 항목에 대한 설명을 입력할 수 있습니다. 오른쪽의 카메라 아이콘을 클릭하여 항목과 관련된 스크린샷을 찍을 수 있습니다. - -준비가 되었으면 오른쪽 하단에 있는 **게시(Publish)** 버튼을 클릭하여 현재 작업 파일과 주전자 지오메트리를 게시합니다. 완료되면 {% include product %}에서 주전자 에셋을 검색하여 게시가 성공적으로 완료되었는지 확인할 수 있습니다. - -{% include figure src="./images/tutorial/image_19.png" %} - -위 이미지에서 주전자 모델이 포함되어 있는 게시된 Alembic 파일을 볼 수 있습니다. Maya 세션 파일에 대한 게시도 볼 수 있습니다. 이러한 게시는 Publish 앱의 트리 뷰에 있는 항목에 해당됩니다. - -파일 저장(File Save) 대화상자 사용 시 만든 작업 파일과 마찬가지로 이러한 두 게시의 출력 경로는 템플릿으로 구동됩니다. 다음과 같이 표시됩니다(나중에 앱에서 이 템플릿이 구성된 위치를 확인할 수 있음). - -**Maya 세션 게시:** - -**`@asset_root/publish/maya/{name}.v{version}.{maya_extension}`** - -이 템플릿은 기본적으로 작업 파일 템플릿과 매우 유사하며 유일한 차이점은 **`publish`** 폴더에 있다는 것입니다. - -**에셋 게시:** - -**`@asset_root/publish/caches/{name}.v{version}.abc`** - -이 템플릿은 Maya 세션 게시 템플릿과 유사하지만 파일이 **`caches`** 폴더에 작성됩니다. - -File Save 대화상자와 달리, 게시할 때는 이름, 버전 또는 파일 확장자 값을 제공할 필요가 없습니다. 왜냐하면 기본적으로 게시자가 작업 파일 경로에서 이러한 값을 가져오기 때문입니다. 후드에서 작업 템플릿을 통해 이러한 값을 추출한 다음 게시 템플릿에 적용합니다. 이 개념은 템플릿을 사용하여 한 파이프라인 단계의 출력을 다른 파이프라인 단계의 입력에 연결하는 방법 및 툴킷 플랫폼과 관련하여 중요한 개념입니다. 자세한 정보는 이후 섹션에서 다룹니다. - -디스크에서 파일을 찾아 올바른 위치에 만들어졌는지 확인합니다. - -축하합니다! 주전자의 첫 번째 게시된 반복을 성공적으로 만들었습니다. 학습한 내용을 활용하여 테이블 소품의 모델링 태스크에서 테이블 모델을 게시할 수 있는지 확인합니다. 결과는 다음과 같아야 합니다. - -{% include figure src="./images/tutorial/image_20.png" %} - -다음 단계는 서페이스 처리 워크플로우입니다. - -## 서페이스 처리 워크플로우 - -이 섹션은 모델링 섹션에서 배운 내용을 기반으로 합니다. Loader 앱을 사용하여 이전 섹션에서 만든 주전자 모델을 로드하는 방법을 배우게 됩니다. 또한 Publish 앱을 커스터마이즈하여 주전자 셰이더를 게시하는 방법도 배우게 됩니다. - -데스크톱에서 Maya를 실행하여 시작합니다. 이전 섹션의 작업 후에 계속 Maya가 열려 있는 경우 Maya를 다시 시작할 필요가 없습니다. Maya가 열려 있으면 **{% include product %} > 파일 열기...(File Open…)** 메뉴 항목을 사용하여 Workfiles 앱을 엽니다. 모델링 섹션에서와 마찬가지로 에셋(Assets) 탭을 사용하여 주전자 에셋의 태스크로 찾아 들어갑니다. 이때 서페이스 처리 태스크를 선택하고 **+ 새 파일(+ New File)**을 클릭합니다. - -{% include figure src="./images/tutorial/image_21.png" width="450px" %} - -이제 주전자의 서페이스 처리 태스크에서 작업하게 됩니다. 올바른 프로덕션 컨텍스트에 있는지 쉽게 확인하는 방법은 {% include product %} 메뉴의 첫 번째 항목을 확인하는 것입니다. - -{% include figure src="./images/tutorial/image_22.png" %} - -다음으로 주전자 모델을 새 서페이스 처리 작업 파일로 로드해야 합니다. 이렇게 하려면 Maya의 **{% include product %} > 로드...(Load…)** 메뉴 항목을 통해 Loader 앱을 시작합니다. - -{% include figure src="./images/tutorial/image_23.png" %} - -Loader 앱의 레이아웃은 Workfiles 앱과 유사하지만 지금은 작업 파일을 여는 대신 게시된 파일을 검색하여 로드합니다. - -에셋(Assets) 탭에서 주전자 캐릭터를 찾아 이전 섹션에서 만든 주전자 게시를 표시합니다. Maya 씬 및 Alembic 캐시 게시를 볼 수 있습니다. Alembic 캐시 게시를 선택하면 대화상자 오른쪽에 상세 정보가 표시됩니다. 그런 다음 Alembic 캐시 게시의 액션(Actions) 메뉴에서 **참조 만들기(Create Reference)** 항목을 클릭합니다. 기본적으로 추가 액션을 수행할 수 있게 로더가 계속 열려 있지만 로더를 닫고 계속 진행할 수 있습니다. 모델링 태스크에서 주전자 게시를 가리키는 참조가 생성된 것을 Maya에서 볼 수 있습니다. - -{% include figure src="./images/tutorial/image_24.png" %} - -다음으로, 주전자에 간단한 절차 셰이더를 추가합니다. - -{% include figure src="./images/tutorial/image_25.png" %} - -파이프라인을 빌드할 때 셰이더 관리는 시간이 오래 걸리는 복잡한 태스크일 수 있습니다. 이는 특히 스튜디오에만 해당되는 경우가 많습니다. 왜냐하면 제공되는 Maya 통합에서 셰이더 또는 텍스처 관리 기본 기능을 처리하지 않기 때문입니다. - -계속하기 전에 **{% include product %} > 파일 저장...(File Save…)** 메뉴 액션을 사용하여 현재 세션을 저장합니다. - -### 커스텀 셰이더 게시 - -이 간단한 파이프라인의 목적에 맞게 Publisher 앱을 커스터마이즈하여 서페이스 처리 단계에서 추가 게시 항목으로 Maya 셰이더 네트워크를 내보냅니다. 튜토리얼 후반에서 다운스트림 참조 시 셰이더를 Alembic 지오메트리 캐시에 다시 연결할 수 있는 빠르고 간편한 솔루션을 만듭니다. - - -{% include info title="참고" content="추가할 커스터마이즈는 확실히 매우 간단하고 쉽습니다. 보다 강력한 솔루션을 위해 외부 이미지를 텍스처 맵으로 사용하는 에셋 관리 측면뿐만 아니라 서페이스 처리된 캐릭터의 대체 표현을 고려해야 할 수 있습니다. 이 예제는 실제 솔루션을 빌드하기 위한 시작점만 제공합니다." %} - -{% include info title="참고" content="Publisher 플러그인을 작성하는 방법에 대한 전체 상세 정보는 [여기](https://developer.shotgunsoftware.com/tk-multi-publish2/)에서 확인할 수 있습니다." %} - -#### Maya 컬렉터 재지정 - -먼저 Publish 앱의 컬렉션 로직을 수정해야 합니다. 게시자는 앱에 게시하고 표시할 "수집" 항목에 대한 로직을 정의하는 컬렉터 후크로 구성됩니다. 프로젝트 구성 내의 다음 파일에서 구성된 앱의 설정을 찾을 수 있습니다. - -**`env/includes/settings/tk-multi-publish2.yml`** - -이 파일은 모든 아티스트 환경 내에서 Publish 앱이 사용되는 방법을 정의합니다. 파일을 열고 **Maya** 섹션, 특히 **에셋 단계**에 대한 구성을 검색합니다. 다음과 같이 표시됩니다. - -{% include figure src="./images/tutorial/image_26.png" %} - -컬렉터 설정은 게시자의 컬렉션 로직이 존재하는 후크를 정의합니다. 기본적으로 이 값은 다음과 같습니다. - -**`collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py"`** - -이 정의에는 두 개의 파일이 포함되어 있습니다. 후크 설정에 여러 파일이 나열된 경우 상속을 의미합니다. 첫 번째 파일에는 설치된 Publish 앱의 후크 폴더로 평가할 **`{self}`** 토큰이 포함되어 있습니다. 두 번째 파일에는 현재 엔진(이 경우 설치된 Maya 엔진)의 후크 폴더로 평가할 **`{engine}`** 토큰이 포함되어 있습니다. 요약하면, 이 값은 Maya 고유의 컬렉터에 Publish 앱의 컬렉터가 상속됨을 의미합니다. 앱의 컬렉터 후크는 실행 중인 DCC에 관계없이 유용한 로직을 갖기 때문에 이러한 형태가 Publisher 구성의 일반적인 패턴입니다. DCC 고유 로직은 해당 기본 로직으로부터 상속받고 기본 로직을 확장하여 현재 세션에 해당되는 항목을 수집합니다. - -{% include info title="참고" content="에셋 단계 환경에 대한 컬렉터 설정만 변경하므로 다른 컨텍스트(예: 샷 단계)에서 작업 중인 아티스트는 변경 사항을 볼 수 없습니다. 아티스트는 제공되는 기본 Maya 컬렉터를 계속 사용합니다." %} - -**구성** 섹션에서 후크를 인계받는 방법을 배웠습니다. 구성에 Maya 엔진의 컬렉터 후크를 인계받아 커스터마이제이션 프로세스를 시작합니다. - -{% include figure src="./images/tutorial/image_27.png" %} - -위의 이미지는 이 작업을 수행하는 방법을 보여 줍니다. 먼저 프로젝트 구성의 **hooks** 폴더에 폴더 구조를 만듭니다. 나중에 다른 DCC에 대해 동일한 후크를 재지정할 수 있으므로 이렇게 하면 컬렉터 플러그인에 약간의 네임스페이스를 제공합니다. 다음으로, install 폴더에서 Maya 엔진의 컬렉터 후크를 새 후크 폴더 구조로 복사합니다. 이제 구성에 다음 경로를 가진 Maya 컬렉터 사본이 생겼습니다. - -**`config/hooks/tk-multi-publish2/maya/collector.py`** - -다음으로, 새 후크 위치를 가리키도록 publish2 설정 파일을 업데이트합니다. 이제 컬렉터 설정은 다음 값을 갖습니다. - -**`collector: "{self}/collector.py:{config}/tk-multi-publish2/maya/collector.py"`** - -**`{config}`** 토큰을 확인합니다. 이제 경로가 프로젝트 구성에서 hooks 폴더로 해석됩니다. 새 컬렉터 사본이 앱 자체에서 정의되는 컬렉터에서 상속됩니다. - -{% include info title="참고" content="이때 게시했으면 게시 로직은 새 위치에서 간단하게 복사하고 참조한 컬렉터와 정확히 동일합니다." %} - -이제 원하는 IDE 또는 텍스트 편집기에서 컬렉터 사본을 연 다음 **`process_current_session`** 방식을 찾습니다. 이 방식은 현재 DCC 세션에서 모든 게시 항목 수집을 담당합니다. 새 게시 유형을 수집하게 되므로 이 방식의 하단으로 이동하여 다음 줄을 추가합니다. - -**`self._collect_meshes(item)`** - -이 줄은 현재 세션에 있는 모든 메쉬를 수집하기 위해 추가할 새 방식입니다. 이 방식은 나중에 만들 예정인 셰이더 게시 플러그인이 작동할 수 있는 메쉬 항목을 만듭니다. 전달되는 항목은 메쉬 항목의 상위가 될 세션 항목입니다. - -{% include info title="참고" content="이 방식은 기존 게시 플러그인을 수정하는 매우 직접적인 접근 방법입니다. 게시자 구조 및 움직이는 모든 부분에 대한 자세한 정보는 [개발자 문서](http://developer.shotgunsoftware.com/tk-multi-publish2/)를 참조하십시오." %} - -이제 파일 하단에 아래 새 방식 정의를 추가합니다. - -```python - def _collect_meshes(self, parent_item): - """ - Collect mesh definitions and create publish items for them. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "mesh.png" - ) - - # iterate over all top-level transforms and create mesh items - # for any mesh. - for object in cmds.ls(assemblies=True): - - if not cmds.ls(object, dag=True, type="mesh"): - # ignore non-meshes - continue - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.mesh) that will be - # used by an associated shader publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name (the group name). In the future, other publish - # plugins might attach to these mesh items to publish other things - mesh_item = parent_item.create_item( - "maya.session.mesh", - "Mesh", - object - ) - - # set the icon for the item - mesh_item.set_icon_from_path(icon_path) - - # finally, add information to the mesh item that can be used - # by the publish plugin to identify and export it properly - mesh_item.properties["object"] = object -``` - -코드가 주석 처리되어 있으며 수행할 작업에 대한 정보를 제공합니다. 요점은 이제 현재 세션에서 최상위 수준 메쉬에 대한 메쉬 항목을 수집하는 로직을 추가한 것입니다. 그러나 이때 게시자를 실행하면 항목 트리에서 어떤 메쉬 항목도 볼 수 없습니다. 왜냐하면 작동하도록 정의된 게시 플러그인이 없기 때문입니다. 다음으로, 메쉬 항목을 연결하고 다운스트림을 사용하기 위해 해당 항목 게시를 처리할 새 셰이더 게시 플러그인을 작성합니다. - -{% include info title="참고" content="위 코드에는 메쉬 항목에 대한 아이콘을 설정하는 호출이 있습니다. 이 작업을 위해 다음과 같이 지정된 경로로 구성에 아이콘을 추가해야 합니다." %} - -**`config/hooks/tk-multi-publish2/icons/mesh.png`** - -#### 셰이더 게시 플러그인 만들기 - -다음 단계에서는 메쉬의 셰이더를 디스크로 내보내 게시할 수 있는 게시 플러그인에 새로 수집한 메쉬 항목을 연결합니다. 이렇게 하려면 새 게시 플러그인을 만들어야 합니다. [이 후크의 소스 코드에 대한 이 링크를 따라 이동하고](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_shader_network.py) 이를 **`hooks/tk-multi-publish2/maya`** 폴더에 저장하고 이름을 **`publish_shader_network.py`**로 지정합니다. - -{% include info title="참고" content="이 플러그인은 툴킷 플랫폼 및 게시 코드를 처음 사용하는 경우 사용할 코드 집합입니다. 지금은 걱정할 필요가 없습니다. 이 튜토리얼을 진행하면서 진행되는 상황을 이해하고 게시자 기능을 사용하게 됩니다. 지금은 파일을 생성하고 그 용도가 셰이더 네트워크를 디스크에 기록하는 것이라는 점만 알아 두시면 됩니다." %} - -셰이더를 게시하기 전의 마지막 단계는 새 셰이더 게시 플러그인에서 정의한 템플릿 및 구성을 추가하는 것입니다. **`settings`** 속성에서 플러그인에 의해 정의된 설정을 다음과 같이 볼 수 있습니다. - -```python - @property - def settings(self): - "”” … "”” - - # inherit the settings from the base publish plugin - plugin_settings = super(MayaShaderPublishPlugin, self).settings or {} - - # settings specific to this class - shader_publish_settings = { - "Publish Template": { - "type": "template", - "default": None, - "description": "Template path for published shader networks. " - "Should correspond to a template defined in " - "templates.yml.", - } - } - - # update the base settings - plugin_settings.update(shader_publish_settings) - - return plugin_settings -``` - - -이 방식은 플러그인에 대한 구성 인터페이스를 정의합니다. **"게시 템플릿(Publish Template)"** 설정에는 디스크에 셰이더 네트워크를 작성하는 플러그인이 필요합니다. 새 게시 플러그인을 게시자 구성에 추가하고 템플릿 설정을 포함합니다. 이는 컬렉터를 인계받기 전에 수정한 구성 블록과 동일합니다. 해당 내용은 다음 파일에 정의되어 있습니다. - -**`env/includes/settings/tk-multi-publish2.yml`** - -이제 구성은 다음과 같습니다. - -{% include figure src="./images/tutorial/image_28.png" %} - -마지막으로, 구성에 새 **`maya_shader_network_publish`** 템플릿을 정의해야 합니다. 다음 파일을 편집하여 추가합니다. - -**`config/core/templates.yml`** - -에셋 관련 Maya 템플릿이 정의된 섹션을 찾아 새 템플릿 정의를 추가합니다. 정의는 다음과 같습니다. - -{% include figure src="./images/tutorial/image_29.png" %} - -모든 것이 정의되었습니다. 셰이더를 게시할 메쉬를 찾기 위해 Publish 앱의 컬렉터 후크를 재지정했습니다. 수집한 셰이더 항목에 연결할 새 게시 플러그인을 구현하고 디스크에 셰이더 네트워크를 작성할 새 게시 템플릿을 정의하고 구성했습니다. - -{% include info title="참고" content="구성을 커스터마이즈하는 동안 Maya를 닫아도 괜찮습니다. 간단히 Maya를 다시 시작하고 파일 열기(File Open) 대화상자를 사용하여 서페이스 처리 작업 파일을 열 수 있습니다. 아래의 다시 로드 단계는 건너뛸 수 있습니다." %} - -##### {% include product %} 통합 다시 로드 - -커스터마이제이션을 시도하려면 Maya 세션에서 통합을 다시 로드해야 합니다. 이렇게 하려면 **{% include product %} > [태스크 이름(Task Name)] > 작업 영역 정보...(Work Area Info…)** 메뉴 액션을 클릭합니다. - -{% include figure src="./images/tutorial/image_30.png" %} - -현재 컨텍스트에 대한 정보를 제공하는 Work Area Info 앱이 시작됩니다. 구성을 변경할 때 통합을 다시 로드할 수 있는 유용한 버튼도 있습니다. 버튼을 클릭하여 앱 및 엔진을 다시 로드한 다음 대화상자를 닫습니다. - -{% include figure src="./images/tutorial/image_31.png" %} - -### 셰이더 네트워크 게시 - -이제 프로젝트 구성 변경 결과를 보겠습니다. {% include product %} 메뉴에서 Publish 앱을 시작합니다. 다음과 같이 **Publish Shaders** 플러그인이 연결된 수집된 주전자 메쉬 항목이 표시됩니다. - -{% include figure src="./images/tutorial/image_32.png" %} - -작업 설명을 입력하고 게시된 파일과 연결할 서페이스 처리된 주전자의 썸네일을 캡처합니다. 마지막으로, 게시(Publish)를 클릭하여 주전자 셰이더를 디스크로 내보내고 파일을 {% include product %}의 게시로 등록합니다. 완료되면 세션 게시 플러그인이 자동으로 작업 파일을 다음 사용 가능한 버전으로 저장했는지 확인합니다. 지금까지가 {% include product %} 통합에서 지원되는 모든 DCC 내의 기본 동작입니다. - - -이제 {% include product %}에서 주전자 에셋을 검색하여 모두 예상대로 작동되는지 확인할 수 있습니다. - -{% include figure src="./images/tutorial/image_33.png" %} - -축하합니다! 성공적으로 파이프라인을 커스터마이즈하고 주전자에 대한 셰이더를 게시했습니다. 학습한 내용을 활용하여 테이블 소품의 서페이스 처리 태스크에서 셰이더를 게시할 수 있는지 확인합니다. 결과는 다음과 같아야 합니다. - -{% include figure src="./images/tutorial/image_34.png" %} - -다음 단계는 리깅 워크플로우입니다. - -## 리깅 워크플로우 - -이제는 {% include product %}에서 제공하는 Workfile 및 Publish 앱을 사용하여 작업 파일을 열거나 만들고 저장하고 게시하는 것이 어렵지 않을 것입니다. 또한 Loader 앱을 사용하여 업스트림에서 게시를 로드하기도 했습니다. 학습한 내용을 활용하여 다음 태스크를 완료합니다. - -* {% include product %} 데스크톱에서 Maya 시작 - -* 주전자 에셋의 리깅 단계에서 새 작업 파일 만들기 - -* 모델링 단계에서 주전자 alembic 캐시 게시 로드(참조) - -* 주전자 뚜껑을 리깅하여 열고 닫기(간단하게 유지) - -* 주전자 리그 저장 및 게시 - -{% include product %}에 다음과 같이 나타납니다. - -{% include figure src="./images/tutorial/image_35.png" %} - -다음으로, 아티스트가 해당 워크플로우에서 업스트림 변경을 처리하는 방법을 알아보겠습니다. 모델링 작업 파일을 열고 주전자 모델을 약간 변경합니다. 그런 다음 업데이트된 작업을 게시합니다. 결과는 다음과 같습니다. - -{% include figure src="./images/tutorial/image_36.png" %} - -주전자의 리깅 단계에서 작업 파일을 다시 엽니다(**{% include product %} > 파일 열기...(File Open…)**). 이제 **{% include product %} > 씬 분할...(Scene Breakdown…)** 메뉴 액션을 시작합니다. 작업 파일에 참조한 모든 업스트림 게시를 보여 주는 Breakdown 앱이 시작됩니다. 이 경우 업스트림 주전자 모델만 있습니다. 다음과 같이 표시됩니다. - -{% include figure src="./images/tutorial/image_37.png" width="400px" %} - -앱은 각 참조에 대해 두 개의 표시기 중 하나를 표시합니다. 초록색 체크 표시는 참조된 게시가 최신 버전임을 나타내고 빨간색 "x"는 사용 가능한 최신 게시물이 있음을 나타냅니다. 이 경우에는 사용 가능한 최신 게시물이 있음을 확인할 수 있습니다. - -이제 참조된 주전자 Alembic 캐시 항목을 선택한 다음(또는 하단의 **모든 빨간색 항목 선택(Select All Red)** 버튼 클릭) **선택 항목 업데이트(Update Selected)**를 클릭합니다. - -앱에서 Maya 참조가 주전자 Alembic 캐시의 최신 반복으로 업데이트됩니다. 이제 파일에 새 모델이 표시됩니다. - -{% include figure src="./images/tutorial/image_40.png" width="400px" %} - -새 모델에 고려해야 하는 리깅 설정을 조정한 다음 변경 사항을 게시합니다. - -다음 섹션에서는 샷 컨텍스트에서 작업합니다. 다음 단계는 샷 레이아웃입니다. - -## 레이아웃 워크플로우 - -이 섹션에서는 프로젝트에 대해 만든 샷에서 작업을 시작합니다. 이전 섹션에서 만든 에셋을 로드하고 샷을 실행해 봅니다. 그런 다음 게시자를 다시 커스터마이즈하고 이번에는 샷 카메라를 게시합니다. - -이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. - -* {% include product %} 데스크톱에서 Maya 시작 - -* 샷의 레이아웃 단계에서 새 작업 파일 만들기(힌트: Loader에서 샷(Shots) 탭 사용) - -* 주전자의 리깅 단계에서 주전자 게시 로드(참조) - -* 테이블의 모델 단계에서 테이블 게시 로드(참조) - -이제 테이블에 주전자가 있는 간단한 씬을 실행합니다. 씬에 **camMain**이라는 카메라를 추가하고 몇 프레임에 애니메이션을 적용하여 샷의 카메라 이동을 만듭니다. - -{% include figure src="./images/tutorial/image_41.gif" %} - -샷 레이아웃이 만족스러우면 **{% include product %} > 파일 저장...(File Save…)** 메뉴 액션을 통해 파일을 저장합니다. 이때 계속 진행하여 게시하면 게시할 수 있는 항목으로 전체 Maya 세션만 표시됩니다. - -파이프라인에 추가하여 많은 유연성을 제공하는 쉬운 커스터마이제이션은 다른 패키지에 쉽게 가져올 수 있는 파일 형식으로 독립 실행형 카메라를 게시하는 기능입니다. 이렇게 하면 일반적으로 레이아웃에 카메라를 한 번 생성한 다음 애니메이션, 조명 및 합성 등의 다른 모든 파이프라인 단계를 수행하고 직접 사용할 수 있습니다. - -### 카메라 수집 - -셰이더 게시에서와 같이 첫 번째 단계는 컬렉터 후크를 커스터마이즈하는 것입니다. 이미 Maya에 대한 컬렉터 후크를 인계받고 에셋 단계에 구성했습니다. 이제 샷 파이프라인 단계에 대한 구성을 업데이트해야 합니다. 이렇게 하려면 게시자의 구성 파일을 수정하고 Maya 샷 단계 컬렉터 설정을 편집합니다. - -{% include figure src="./images/tutorial/image_42.png" %} - -이제 샷 컨텍스트 내의 태스크에서 작업할 때 커스텀 컬렉터 로직이 실행됩니다. 다음 단계에서는 커스텀 카메라 컬렉션 로직을 추가합니다. - -커스텀 컬렉터 후크를 열고 서페이스 처리 섹션에서 메쉬를 수집하는 호출을 추가한 **`process_current_session`** 방식의 하단에 다음 방식 호출을 추가합니다. - -**`self._collect_cameras(item)`** - -다음으로 파일 하단에 다음과 같이 방식 자체를 추가합니다. - -```python - def _collect_cameras(self, parent_item): - """ - Creates items for each camera in the session. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "camera.png" - ) - - # iterate over each camera and create an item for it - for camera_shape in cmds.ls(cameras=True): - - # try to determine the camera display name - try: - camera_name = cmds.listRelatives(camera_shape, parent=True)[0] - except Exception: - # could not determine the name, just use the shape - camera_name = camera_shape - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.camera) that will be - # used by an associated camera publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name. In the future, other publish plugins might attach to - # these camera items to perform other actions - cam_item = parent_item.create_item( - "maya.session.camera", - "Camera", - camera_name - ) - - # set the icon for the item - cam_item.set_icon_from_path(icon_path) - - # store the camera name so that any attached plugin knows which - # camera this item represents! - cam_item.properties["camera_name"] = camera_name - cam_item.properties["camera_shape"] = camera_shape -``` - -다시 한 번 언급하지만 코드가 주석 처리되어 있으며 수행할 작업에 대한 정보를 제공합니다. 현재 세션의 모든 카메라에 대한 카메라 항목을 수집하는 로직을 추가했습니다. 이전과 마찬가지로, 이때 게시자를 실행하면 항목 트리에서 어떤 카메라 항목도 볼 수 없습니다. 왜냐하면 작동하도록 정의된 게시 플러그인이 없기 때문입니다. 다음으로, 이러한 항목을 연결하고 다운스트림을 사용하기 위해 해당 항목 게시를 처리할 카메라 게시 플러그인을 작성합니다. - -{% include info title="참고" content="위 코드에는 카메라 항목에 대한 아이콘을 설정하는 호출이 있습니다. 이 작업을 위해 다음과 같이 지정된 경로로 구성에 아이콘을 추가해야 합니다." %} - -**`config/hooks/tk-multi-publish2/icons/camera.png`** - -### 커스텀 카메라 게시 플러그인 - -다음 단계에서는 메쉬의 셰이더를 디스크로 내보내 게시할 수 있는 게시 플러그인에 새로 수집한 메쉬 항목을 연결합니다. 이렇게 하려면 새 게시 플러그인을 만들어야 합니다. [이 후크의 소스 코드에 대한 이 링크를 따라 이동하고](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_camera.py) 이를 **`hooks/tk-multi-publish2/maya`** 폴더에 저장하고 이름을 **`publish_camera.py`**로 지정합니다. - -### 카메라 게시 구성 - -마지막으로, 샷 단계에 대한 Publish 앱의 구성을 업데이트해야 합니다. 설정 파일을 편집하여 새 플러그인을 추가합니다. - -**`env/includes/settings/tk-multi-publish2.yml`** - -이제 구성은 다음과 같습니다. - -{% include figure src="./images/tutorial/image_43.png" %} - -새 플러그인의 **`settings`** 방식에서 정의한 대로 파일에 추가된 두 개의 설정을 확인할 수 있습니다. 셰이더 플러그인과 마찬가지로 카메라 파일이 작성될 위치를 정의하는 **게시 템플릿(Publish Template)** 설정이 있습니다. 카메라 설정은 플러그인이 작동해야 할 카메라를 구동하는 카메라 문자열의 목록입니다. 즉, 일부 유형의 카메라 명명 규칙이 있고 이 설정을 사용하면 사용자가 규칙과 일치하지 않는 카메라의 항목을 게시할 수 없습니다. 위의 이미지에서는 **`camMain`** 카메라만 게시할 수 있도록 제공됩니다. 추가한 플러그인의 구현은 **`cam*`** 같이 와일드카드 패턴으로도 작동합니다. - -변경 사항을 테스트하기 전 마지막 단계는 새 카메라 게시 템플릿에 대한 정의를 추가하는 것입니다. **`config/core/templates.yml`** 파일을 편집하고 Maya 샷 템플릿 섹션에 템플릿 정의를 추가합니다. - -{% include figure src="./images/tutorial/image_44.png" %} - -이제 새 플러그인을 사용하여 카메라를 게시할 수 있습니다. **Work Area Info** 앱을 사용하여 통합을 다시 로드한 다음 게시자를 시작합니다. - -{% include figure src="./images/tutorial/image_45.png" %} - -이미지에서 볼 수 있듯이, 새 카메라 항목이 수집되고 게시 플러그인이 연결됩니다. 계속 진행하여 **게시(Publish)**를 클릭하여 디스크에 카메라를 작성하고 ShotGrid에 등록합니다. - -{% include info title="참고" content="Alembic 내보내기와 유사하게 카메라 게시 플러그인을 사용하려면 FBX 내보내기 플러그인을 로드해야 합니다. 카메라 게시 플러그인 항목이 표시되지 않으면 FBX 플러그인이 로드되었는지 확인하고 게시자를 다시 시작합니다." %} - -{% include product %}에 다음과 같이 나타납니다. - -{% include figure src="./images/tutorial/image_46.png" %} - -이제 완료되었습니다. 다음 단계는 애니메이션입니다. - -## 애니메이션 워크플로우 - -지금까지는 커스텀 파일 유형/컨텐츠를 디스크에 작성하고 다른 파이프라인 단계에서 공유하기 위해 Publish 앱만 커스터마이즈했습니다. 이 섹션에서는 Loader 앱의 구성을 커스터마이즈하여 커스텀 게시를 가져오거나 참조할 수 있도록 하는 작업을 완료합니다. - -이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. - -* {% include product %} 데스크톱에서 Maya 시작 - -* 샷의 애니메이션 단계에서 새 작업 파일 만들기 - -* 샷의 레이아웃 단계에서 Maya 세션 게시 로드(참조) - -{% include info title="참고" content="레이아웃 세션 게시 파일에 카메라가 포함되었음을 확인할 수 있습니다. 강력한 파이프라인에서 별도의 카메라 게시 파일이 하나의 실제 카메라 정의가 될 수 있도록 세션 게시에서 카메라를 명시적으로 숨기거나 제외할 수 있습니다. 계속 진행하여 참조로 포함된 카메라를 삭제하거나 숨깁니다." %} - -### 커스텀 카메라 로더 액션 - -카메라 게시를 가져오거나 참조하도록 Loader 앱을 커스터마이즈하려면 앱의 설정 파일을 편집해야 합니다. 구성에서 파일 경로는 다음과 같습니다. - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -Maya에 대해 앱이 구성된 섹션을 찾고 **`action_mappings`** 설정의 액션 목록에 다음 줄을 추가합니다. - -**`FBX Camera: [reference, import]`** - -커스텀 카메라 게시 플러그인에서, 디스크에 카메라를 작성하는 데는 Maya의 **`FBXExport`** mel 명령이 사용되었으며 {% include product %}에 파일을 등록하는 데 사용된 게시 유형은 **`FBX Camera`**입니다. 설정에 추가한 줄은 **`FBX Camera`** 유형의 게시에 대해 **`reference`** 및 **`import`** 액션을 표시하도록 로더에 지시합니다. 이러한 액션은 Loader 앱의 [tk-maya-actions.py](https://github.com/shotgunsoftware/tk-multi-loader2/blob/master/hooks/tk-maya_actions.py) 후크에 정의되어 있습니다. 이러한 액션은 Maya가 참조하거나 가져올 수 있는 모든 파일 유형을 처리하는 방식으로 구현됩니다. 커스텀 플러그인에 의해 생성된 **`.fbx`** 파일은 이 범주에 해당하므로 이 작업이 게시된 카메라를 로드하는 데 필요한 유일한 변경 사항입니다. - -이제 앱 설정은 다음과 같습니다. - -{% include figure src="./images/tutorial/image_47.png" width="400px" %} - -이제 **Work Area Info** 앱을 통해 통합을 다시 로드하고 새 설정을 선택한 다음 레이아웃에서 게시된 카메라를 찾습니다. - -{% include figure src="./images/tutorial/image_48.png" %} - -새 게시 유형별로 필터링한 다음 카메라에 대한 참조를 만듭니다. 로더를 닫고 새 참조 카메라를 사용하여 이전 섹션에서 만든 카메라 모션을 다시 재생할 수 있습니다. - -다음으로, 주전자 모델이 무언가를 수행하는 애니메이션을 적용합니다(간단하게 유지). - -{% include figure src="./images/tutorial/image_49.gif" %} - -애니메이션이 만족스러우면 이전 섹션에서와 같이 작업 파일을 저장하고 게시합니다. - -다음 단계는 조명입니다. - -## 조명 워크플로우 - -이 섹션에서는 이전 섹션에서 게시한 모든 것을 함께 가져와 샷을 렌더링합니다. 이렇게 하려면 주전자 에셋의 서페이스 처리 단계에서 게시한 셰이더를 로드하도록 Loader 앱을 커스터마이즈합니다. - -먼저, 이전 섹션에서 학습한 내용을 활용하여 다음 태스크를 완료합니다. - -* {% include product %} 데스크톱에서 Maya 시작 - -* 샷의 조명 단계에서 새 작업 파일 만들기 - -* 샷의 애니메이션 단계에서 Maya 세션 게시 로드(참조) - -* 샷의 레이아웃 단계에서 카메라 게시 로드(참조) - -### 커스텀 셰이더 로더 액션 - -서페이스 처리 단계에서 게시한 셰이더를 로드하려면 이전 섹션에서 언급한 **`tk-maya-actions.py`** 후크를 인계받아야 합니다. 해당 후크를 설치 위치에서 구성으로 복사합니다. - -{% include figure src="./images/tutorial/image_50.png" %} - -이 후크는 지정된 게시에 대해 수행할 수 있는 액션 목록 생성을 담당합니다. Loader 앱은 제공된 통합에서 지원되는 각 DCC에 대해 이 후크와 다른 버전을 정의합니다. - -서페이스 처리 워크플로우 섹션에서 게시된 셰이더는 바로 Maya 파일이므로 내보낸 카메라와 같이 기존 로직을 변경하지 않고 로더에서 참조할 수 있습니다. 유일하게 변경해야 할 사항은 셰이더가 파일에 참조된 후 적절한 메쉬에 셰이더를 연결하도록 액션 후크에 새 로직을 추가하는 것입니다. - -액션 후크의 마지막에(클래스 외부) 다음 방식을 추가합니다. - -```python - def _hookup_shaders(reference_node): - """ - Reconnects published shaders to the corresponding mesh. - :return: - """ - - # find all shader hookup script nodes and extract the mesh object info - hookup_prefix = "SHADER_HOOKUP_" - shader_hookups = {} - for node in cmds.ls(type="script"): - node_parts = node.split(":") - node_base = node_parts[-1] - node_namespace = ":".join(node_parts[:-1]) - if not node_base.startswith(hookup_prefix): - continue - obj_pattern = node_base.replace(hookup_prefix, "") + "\d*" - obj_pattern = "^" + obj_pattern + "$" - shader = cmds.scriptNode(node, query=True, beforeScript=True) - shader_hookups[obj_pattern] = node_namespace + ":" + shader - - # if the object name matches an object in the file, connect the shaders - for node in (cmds.ls(references=True, transforms=True) or []): - for (obj_pattern, shader) in shader_hookups.iteritems(): - # get rid of namespacing - node_base = node.split(":")[-1] - if re.match(obj_pattern, node_base, re.IGNORECASE): - # assign the shader to the object - cmds.select(node, replace=True) - cmds.hyperShade(assign=shader) -``` - - -이제 셰이더 연결 로직을 호출하기 위해 **`_create_reference`** 방식 마지막에 다음 두 줄을 추가합니다. - -```python - reference_node = cmds.referenceQuery(path, referenceNode=True) - _hookup_shaders(reference_node) -``` - - -코드는 새 참조가 만들어질 때마다 실행되므로 셰이더가 이미 파일에 있는 경우 새 지오메트리 참조 시 셰이더를 할당해야 합니다. 마찬가지로, 셰이더를 참조하고 지오메트리가 이미 존재할 때 작동합니다. - -{% include info title="참고" content="이 연결 로직은 매우 억지스럽고 프로덕션에서 바로 사용할 수 있는 파이프라인을 구현할 때 고려해야 할 네임스페이스 및 기타 Maya와 관련된 미묘한 문제를 적절하게 처리하지 못합니다." %} - -마지막으로, 다음 파일을 편집하여 샷의 로더 설정을 새 후크로 지정합니다. - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -또한 Maya 셰이더 네트워크 게시 유형을 참조 액션과 연결합니다. 이제 로더 설정은 다음과 같습니다. - -{% include figure src="./images/tutorial/image_51.png" %} - -이제 **Work Area Info** 앱을 통해 통합을 다시 로드하여 새 설정을 선택한 다음 서페이스 처리에서 게시된 셰이더를 검색합니다. - -주전자 셰이더 네트워크 게시에 대한 참조를 만듭니다. - -{% include figure src="./images/tutorial/image_52.png" %} - -이제 테이블 셰이더 네트워크를 로드합니다. Maya에서 하드웨어 렌더링을 켜면 셰이더가 애니메이션 단계에서 자동으로 메쉬 참조에 연결해야 합니다. - -{% include figure src="./images/tutorial/image_53.png" %} - -이제 씬에 약간의 조명을 추가합니다(간단하게 유지). - -{% include figure src="./images/tutorial/image_54.png" %} - -### Maya 렌더 게시 - -디스크에 샷을 렌더링합니다. - -{% include figure src="./images/tutorial/image_54_5.gif" %} - -{% include info title="참고" content="여기에서 볼 수 있듯이 주전자 및 테이블 에셋 둘 다 서페이스 처리에 문제가 있습니다. 이 튜토리얼에서는 의도된 예술적 선택이었다고 가정합니다. 이러한 문제를 해결하려면 언제든지 이러한 에셋의 서페이스 처리 작업 파일을 로드하고 셰이더를 조정하여 다시 게시할 수 있습니다. 이 경우, 조명 작업 파일의 참조를 업데이트하고 다시 렌더링해야 합니다. 단계를 진행하면 참조를 다시 로드한 후 Breakdown 앱이 업데이트된 셰이더를 다시 연결하지 않는다는 사실을 알 수 있습니다. 셰이더 참조를 연결하도록 로더를 수정한 경험을 기반으로 필요한 로직을 추가하도록 Breakdown 앱의 씬 작업 후크를 업데이트할 수 있어야 합니다. 힌트: [이 파일](https://github.com/shotgunsoftware/tk-multi-breakdown/blob/master/hooks/tk-maya_scene_operations.py#L69)의 업데이트 방식을 참조하십시오." %} - -제공된 {% include product %} 통합은 파일에 정의된 렌더 레이어를 확인하여 이미지 시퀀스를 수집합니다. 렌더가 완료되면 게시자를 시작합니다. 렌더링된 시퀀스가 트리의 항목으로 표시됩니다. - -{% include figure src="./images/tutorial/image_55.png" %} - -계속 진행하여 세션 및 렌더링된 이미지 파일 시퀀스를 게시합니다. {% include product %}에 다음과 같이 나타납니다. - -{% include figure src="./images/tutorial/image_56.png" %} - -다음 단계는 합성입니다. - -## 합성 워크플로우 - -이 마지막 튜토리얼 섹션에서는 Nuke에서 제공하는 기본 통합의 일부를 소개합니다. 이전 섹션에서 확인한 앱 외에도 ShotGrid 인식 쓰기 노드와 리뷰를 위해 다른 작업자에게 빠르게 렌더를 보낼 수 있는 앱에 대해 알아봅니다. - -다음 단계를 수행하여 작업 파일을 준비합니다. - -* {% include product %} 데스크톱에서 Nuke를 시작합니다. - -* Maya에서와 마찬가지로, {% include product %} > 파일 열기...(File Open…) 메뉴 액션을 사용하여 샷의 합성 단계에서 새 작업 파일을 만듭니다. - - -Loader 앱을 통해 이전 섹션에서 렌더링 및 게시된 이미지 시퀀스를 로드합니다. - -{% include figure src="./images/tutorial/image_57.png" %} - -**`Image`** 및 **`Rendered Image`** 게시 유형(유형은 파일 확장자에 따라 다름)에 정의된 액션은 **읽기 노드 만들기(Create Read Node)**입니다. 이 액션을 클릭하여 Nuke 세션에 새 **`Read`** 노드를 만듭니다. - -Nuke 프로젝트 설정 출력 형식이 렌더링된 이미지와 일치하는지 확인합니다. 배경으로 사용할 균일 색상을 만들고 읽기 노드와 병합합니다. 합성을 볼 뷰어를 연결합니다. - -{% include figure src="./images/tutorial/image_58.png" %} - -합성에 만족하면 **{% include product %} > 파일 저장...(File Save…)** 메뉴 액션을 사용하여 작업 파일을 저장합니다. - -다음으로, Nuke의 왼쪽 메뉴에 있는 {% include product %} 로고를 클릭합니다. 해당 메뉴에서 ShotGrid 인식 쓰기 노드 중 하나를 클릭합니다. - -{% include figure src="./images/tutorial/image_59.png" width="400px" %} - -{% include product %} Write Node 앱에서는 기본 제공 Nuke Write node의 맨 위에 현재 {% include product %} 컨텍스트를 기반으로 출력 경로를 자동으로 평가하는 레이어를 제공합니다. - -{% include figure src="./images/tutorial/image_60.png" %} - -디스크로 이미지 프레임을 렌더링합니다. 이제 Nuke 세션을 게시하여 렌더링된 이미지와 작업 파일을 연결할 수 있습니다. 기본적으로 게시자는 렌더링된 프레임을 수집하고 플러그인을 연결하여 {% include product %}로 프레임을 등록합니다. 두 번째 플러그인은 백그라운드에서 실행되는 리뷰 제출이라는 통합 방식으로 리뷰할 프레임을 업로드합니다. 이 앱은 Nuke를 사용하여 업로드되어 리뷰에 사용할 수 있는 Quicktime을 생성합니다. - -{% include figure src="./images/tutorial/image_61.png" %} - -또 다른 유용한 통합은 Quick Review 앱입니다. 이 앱은 Quicktime을 빠르게 생성하고 리뷰를 위해 {% include product %}에 업로드하는 출력 노드입니다. 이 앱은 {% include product %} Write Node 옆의 왼쪽 메뉴에서 찾을 수 있습니다. - -{% include figure src="./images/tutorial/image_62.png" width="400px" %} - -빠른 리뷰 노드를 만든 다음 Upload 버튼을 클릭하여 디스크로 입력을 렌더링하고 Quicktime을 생성하고 리뷰를 위해 결과를 {% include product %}에 업로드합니다. 프레임을 제출하기 전에 몇 가지 표준 옵션이 제공됩니다. - -{% include figure src="./images/tutorial/image_63.png" %} - -업로드된 Quicktime을 모두 보려면 {% include product %}의 미디어(Media) 탭을 확인합니다. - -{% include figure src="./images/tutorial/image_64.png" %} - -{% include product %}의 미디어 리뷰에 대한 자세한 정보는 [공식 설명서](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_review_approval_html)를 참조하십시오. - -# 결론 - -축하합니다. 모두 완료했습니다. 이 튜토리얼이 {% include product %} 통합을 사용하여 고유한 커스텀 파이프라인을 빌드하는 시작점이 되었기를 바랍니다. 기본 통합을 확장하여 스튜디오의 특정 요구 사항을 충족하는 방법을 이해할 수 있어야 합니다. - -[shotgun-dev Google 그룹](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=ko#!forum/shotgun-dev)에서 다른 스튜디오에서는 툴킷을 어떻게 사용하는지 질문하고 배울 수 있습니다. 최신 게시물을 보려면 등록하십시오. - -기본 통합에서 제공되지 않는 기능이나 워크플로우가 있으면 언제든 자체 앱을 작성할 수 있습니다. [첫 번째 앱 작성을 시작하려면 이 문서](https://developer.shotgridsoftware.com/ko/2e5ed7bb/)를 참조하십시오. - -언제나처럼 이 튜토리얼에 대한 추가 질문이나 {% include product %} 또는 툴킷 플랫폼에 대한 일반적인 질문이 있으면 언제든지 [티켓을 제출해 주십시오](https://community.shotgridsoftware.com/c/pipeline/6). diff --git a/docs/ko/guides/review.md b/docs/ko/guides/review.md deleted file mode 100644 index f1c48e63f..000000000 --- a/docs/ko/guides/review.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: 리뷰 -pagename: review -lang: ko ---- - -# 리뷰 - -RV의 수상 경력에 빛나는 디지털 리뷰 도구 제품군을 최대한 활용하는 방법을 알아보고 협업 도구 및 심도 깊은 통합 기능을 사용하여 디지털 미디어를 재생, 비교 및 변환할 수 있습니다. - -노드 그래프, 커스텀 셰이더, 이벤트 처리 및 네트워킹에 대해 완전히 이해할 수 있도록 RV의 참조 매뉴얼을 꼼꼼히 살펴보십시오. - -RV-SDI 매뉴얼에서 NVIDIA SDI 동영상 장치를 프리젠테이션 모드 장치로 구현하는 방법을 알아보십시오. - -Maya, Nuke 및 {% include product %}를 사용한 원활한 워크플로우를 위해 통합 패키지를 살펴보십시오. diff --git a/docs/ko/guides/review/integrations.md b/docs/ko/guides/review/integrations.md deleted file mode 100644 index 1cc92f826..000000000 --- a/docs/ko/guides/review/integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 통합 -pagename: rv-integrations -lang: ko ---- - -# RV 통합 - -RV는 서로 다른 기능 세트를 가진 여러 {% include product %} 통합({% include product %} Integration, RV용 Screening Room 및 {% include product %} Review)을 비롯해 Nuke 및 Maya를 위한 통합 도구가 함께 제공됩니다. - -앞쪽의 두 문서에서는 Nuke 및 Maya 통합의 설치 및 워크플로우에 대해 설명하며, 뒤쪽의 두 문서에서는 선택에 도움을 주기 위해 다양한 {% include product %} 통합에 대해 설명합니다. diff --git a/docs/ko/guides/review/rv-developer-overview.md b/docs/ko/guides/review/rv-developer-overview.md deleted file mode 100644 index 4e0d1b093..000000000 --- a/docs/ko/guides/review/rv-developer-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: RV 개발자 개요 -pagename: rv-developer-overview -lang: ko ---- - -# RV 개발자 개요 - -RV 코어 참조 ------------------ - -### 사용자 매뉴얼 - -사용자 매뉴얼에는 RV 및 RVIO 시작 방법을 소개하는 자료와 전체 명령행 및 GUI 사용법이 포함되어 있습니다. 또한, 설치 참고 사항과 성능 극대화 팁, 그리고 LUT, RV 픽셀 파이프라인, 입체 3D, 패키지를 이용한 RV 확장, RV 및 RVLS 미디어 목록 유틸리티에 대한 자세한 정보도 살펴볼 수 있습니다. - -* [RV 사용자 매뉴얼](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_manuals_rv_user_manual_html) -* [질문 및 문제 해결 포럼](https://community.shotgridsoftware.com/c/rv/14) - -### 기술 참조 매뉴얼 - -이 참조 매뉴얼은 RV를 사용자화하는 방법을 배울 때 처음으로 참조할 수 있는 자료입니다. 이 매뉴얼에는 RV 패키지 시스템 및 Mu 스크립팅 기능에 대한 개요가 포함되어 있습니다. 핫 키를 변경하거나, 메뉴를 추가하거나, 색상 관리를 사용자화하거나, 새 위젯을 작성하거나, RV를 파이프라인에 통합하려는 경우 가장 먼저 이 매뉴얼을 참조하십시오. - -* [기술 참조 매뉴얼](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_manuals_rv_reference_manual_html) -* [RV 확장 포럼](https://community.shotgridsoftware.com/c/rv/14) - -### RV-SDI 매뉴얼 - -이 매뉴얼에서는 프리젠테이션 모드 장치로서 NVIDIA SDI 비디오 장치의 미세조정 구현에 대해 설명합니다. 프리젠테이션 모드와 이 모드가 일반적으로 RV와 어떠한 관련이 있는지에 대한 자세한 내용은 RV 사용자 매뉴얼을 참조하십시오. RV-SDI를 사용하려면 "rv"(또는 "rv.exe") 실행 파일을 실행해야 하며 "rvsdi" 라이선스가 있어야 합니다. - -* [RV-SDI 매뉴얼](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_manuals_rv_rv_sdi_manual_html) - - - -RV 통합 --------------- - -### RV/Nuke 통합 - -이제 RV는 Nuke 통합 도구와 함께 제공됩니다. 이 문서에서는 개별 또는 시스템 전체 설정을 위한 설치에 대해 설명하고, RV/Nuke의 워크플로우, 도구, 컨셉 및 사용법에 대해서도 설명합니다. - -* [RV-Nuke 통합 설명서](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_knowledge_base_rv_nuke_integration_html) - -### RV/Maya 통합 - -이제 RV는 Maya 통합 기능과 함께 제공됩니다. 이 문서에서는 RV/Maya 패키지를 설치하는 방법과 RV/Maya 워크플로우, Playblast를 비교 및 정리하는 방법, 그리고 편집, A/B 비교 및 레이아웃으로 렌더링하는 방법에 대해 설명합니다. - -* [RV-Maya 통합 설명서](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_RV_rv_manuals_rv_maya_integration_html) diff --git a/docs/ko/guides/webhooks.md b/docs/ko/guides/webhooks.md deleted file mode 100644 index 51b94bf70..000000000 --- a/docs/ko/guides/webhooks.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -layout: default -title: 웹후크 -pagename: shotgun-webhooks -lang: ko ---- - -# 웹후크 - -{% include info title="베타" content="웹후크는 현재 베타 테스트 중입니다. [웹후크 커뮤니티 포럼](https://community.shotgunsoftware.com/c/webhooks)에 가입하면 상세한 정보를 얻고 여러 활동에 참여할 수 있습니다." %} - -웹후크를 사용하면 사용자가 제어하는 서비스는 {% include product %}에서 발생하는 이벤트에 대한 알림을 받을 수 있습니다. 웹후크를 만들 때 관심 있는 이벤트 유형을 지정하고 이벤트가 트리거될 때 데이터를 보낼 URL을 {% include product %}에 알려 주십시오. {% include product %}에서 관련 이벤트가 발생하면 이벤트를 정의하는 데이터 페이로드가 웹후크의 URL로 전송됩니다. 이런 방법으로 {% include product %}와의 긴밀한 통합을 구축하고 워크플로우의 일부를 자동화할 수 있습니다. - -## 웹후크 사용 방법에는 어떤 것이 있습니까? - -다양한 웹후크 사용 사례가 있습니다. 설득력 있는 몇 가지 사례가 이 문서에 개략적으로 설명되어 있지만 이러한 몇 가지 예에 국한되지는 않습니다. - -### 엔티티 생성 시 디스크에 디렉토리 구조 만들기 - -우리가 여러 번 확인한 워크플로우 중에는 {% include product %}에서 새 엔티티가 생성될 때 디스크에 디렉토리 구조를 생성하는 것이 있습니다. {% include product %}에서 엔티티가 생성되면 자동으로 아티스트 작업을 위한 새 샷이 준비되도록 할 수 있습니다. - -### 상태 관리 자동화 - -애니메이션 팀이 작업을 완료하면, 후속 작업을 시작할 준비가 되었음을 나타내도록 동일한 샷의 다운스트림 태스크 상태를 변경할 수 있습니다. 이 방법을 통해 여러 분야에서 할당된 아티스트에게 작업을 시작할 수 있음을 자동으로 통지할 수 있습니다. - -상태 관리 자동화의 또 다른 좋은 예는 새 `Note`가 작성될 때 `Task` 엔티티의 상태 변경을 트리거하는 것입니다. 아티스트 및 프로덕션 팀에게 감독이 리뷰 세션 후에 현재 작업에 대한 변경 또는 수정을 요청했음을 알려 주기에 좋은 방법입니다. - -## 언제 {% include product %} 이벤트 데몬 대신 웹후크를 사용해야 합니까? - -웹후크와 [{% include product %} 이벤트 데몬](https://github.com/shotgunsoftware/shotgunEvents/wiki)은 비슷한 기능을 제공하지만 몇 가지 중요한 차이점이 있습니다. 이벤트 데몬을 사용하려면 사용자 고유의 서비스를 실행, 모니터링 및 유지 관리해야 합니다. 모든 사용자 코드는 Python으로 작성해야 하며 그래야 {% include product %}에 대한 사용자 고유의 연결을 시작할 수 있습니다. 웹후크는 이와 달리 연결에 응답하며 모든 프로그래밍 언어로 작성할 수 있습니다. 웹후크는 [AWS Lambda](https://aws.amazon.com/ko/lambda/)와 같은 서버리스 환경에서 호스트되거나 [Zapier](https://zapier.com) 및 [IFTTT](https://ifttt.com)와 같이 온라인으로 사용 가능한 모든 자동화 플랫폼을 트리거할 수 있습니다. 웹후크를 사용한 경우에는 이 솔루션을 사용하는 것이 좋습니다. - -## 웹후크 생성 - -웹후크 생성을 시작하려면 웹후크 페이지로 이동한 다음 웹후크 목록 위에 있는 버튼으로 이동합니다. 웹후크에 대한 액세스는 "고급(Advanced) -> 웹후크 표시(Show Webhooks)" 권한으로 제어됩니다. 이 권한은 기본 관리자(Admin) 및 매니저 역할에 사용할 수 있습니다. - -![웹후크 생성 버튼](./images/webhooks/create_webhook_button.png) - -다음으로 새 웹후크를 생성하는 데 필요한 정보를 입력합니다. - -![웹후크 생성 대화상자](./images/webhooks/create_webhook_dialog.png) - -### 비밀 토큰 - -웹후크에 비밀 토큰을 할당하는 것은 선택 사항입니다. 비밀 토큰을 제공한 경우, 해당 웹후크 URL에 전송된 모든 요청은 해당 토큰을 사용하여 서명됩니다. 토큰 값은 요청과 함께 `X-SG-SIGNATURE`라는 이름의 헤더로 전송됩니다. 서명은 SHA1과 함께 HMAC를 사용하여 계산되고 서명된 메시지는 요청의 JSON 본문입니다. - -#### 헤더 형식 - -`=` - -#### 비밀 토큰을 사용하는 이유는 무엇입니까? - -꼭 필요한 것은 아니지만 비밀 토큰을 제공하면 웹후크 URL로 전송된 페이로드가 서명됩니다. 이를 통해 사용자 서비스는 예상한 소스에서 데이터가 생성되었으며 전송 중에 페이로드가 변경되지 않았음을 확인할 수 있습니다. - -#### 서명 확인 - -Python을 사용한 페이로드 서명 확인 방법의 예가 아래에 나와 있습니다. - -``` ->>> import hmac ->>> import hashlib ->>> body | `' ->>> token | `mytoken' ->>> 'sha1=' + hmac.new(token, body, hashlib.sha1).hexdigest() == 'sha1=32824e0ea4b3f1ae37ba8d67ec40042f3ff02f6c' -True -``` - -### SSL 인증서 유효성 확인 - -SSL 인증서 유효성 확인은 웹후크의 사용자 URL에 대한 모든 연결의 보안을 유지하는 데 도움이 되는 선택적 기능입니다. 이 옵션이 설정된 경우 웹후크의 URL로 전달이 이루어지면 {% include product %}는 OpenSSL 인증서 유효성 확인 루틴을 사용하여 인증서를 확인합니다. - -## 웹후크 상태 - -웹후크의 상태는 여러 가지 중 하나이며 계속해서 전달을 받을 수 있는 기능 및 상태를 나타냅니다. - -![웹후크 생성 대화상자](./images/webhooks/webhook_selected_status.png) - -| 상태 | 예시 | 설명 | -|--------|:-------:|:-----------:| -| 활성(Active) | ![활성](./images/webhooks/webhook_status_active.png) | 웹후크가 안정적인 방식으로 작동합니다. 지난 24시간 동안 이 웹후크의 사용자 URL에 전달이 없으면 해당 대상에 도달하지 못한 것입니다. | -| 불안정(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) | 웹후크가 비활성화된 상태이며 다시 활성 상태가 될 때까지 전달이 더 이상 시도되지 않습니다. | - -## 전달 - -웹후크 목록에서 웹후크를 선택하면 7일 전까지 수행된 해당 웹후크의 모든 전달이 표시됩니다. - -{% include info title="참고" content="7일보다 오래된 전달 로그는 제거되며 복구할 수 없습니다." %} - -### 전달 상태 - -전달 상태는 웹후크의 URL로 성공적으로 전달되었는지 여부를 나타냅니다. - -![전달 상태](./images/webhooks/delivery_status.png) - -### 전달 상세 정보 - -전달을 확장하여 웹후크 URL로 전송한 요청과 해당 요청에 대한 응답의 상세 정보를 표시할 수 있습니다. - -![전달 상세 정보](./images/webhooks/delivery_details.png) - -#### 페이로드 요청 - -웹후크 URL로 전송한 페이로드에는 {% include product %}에서 발생한 이벤트 및 이벤트를 트리거한 사용자에 대한 정보가 포함됩니다. JSON 형식으로 제공됩니다. - -{% include warning title="페이로드 크기" content="전달 페이로드의 최대 크기는 1MB입니다. ShotGrid에서 트리거된 이벤트의 페이로드 크기가 1MB보다 크면 `new_value` 및 `old_value` 키가 제거되고 발생 이벤트, 원인 및 Shotgun에서 전체 이벤트 로그 항목을 검색하는 방법을 설명하는 메시지가 포함된 `warning` 키가 추가됩니다." %} - -##### 페이로드 예시 - -```json -{ - "data": { - "id": "95.0", - "meta": { - "type": "attribute_change", - "entity_id": 758, - "new_value": "This is the newest description ever!!", - "old_value": "This is the old description!", - "entity_type": "Asset", - "attribute_name": "description", - "field_data_type": "text" - }, - "user": { - "id": 113, - "type": "HumanUser" - }, - "entity": { - "id": 758, - "type": "Asset" - }, - "project": { - "id": 65, - "type": "Project" - }, - "operation": "update", - "created_at": "2019-07-12 21:14:36.598835", - "event_type": "Shotgun_Asset_Change", - "session_uuid": "07473c00-a4ea-11e9-b3b8-0242ac110006", - "attribute_name": "description", - "event_log_entry_id": 248249 - } -} -``` - -##### 세션 UUID - -{% include product %}에서 이벤트를 트리거한 `session_uuid`가 이벤트 페이로드의 일부로 제공됩니다. 이 값은 [{% include product %}의 Python API](https://developer.shotgunsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid)에 제공될 수 있으며, 그러면 이 session_uuid를 사용하여 열려 있는 모든 브라우저 세션에 API에서 생성한 이벤트에 대한 업데이트가 표시됩니다. - -### 전달에 대한 응답 - -시스템에서 성공적인 전달로 간주되려면 웹후크 사용자 서비스가 전달에 응답해야 합니다. - -{% include warning title="응답 시간 초과" content="웹후크의 URL로 전달이 전송된 후 6초 내에 응답을 받아야 합니다. 이후에는 연결이 종료됩니다. 시간 내에 응답하지 못하면 전달에 실패하게 됩니다." %} - -각 전달에 대한 처리 시간이 기록되며 응답 세부사항 탭에서 확인할 수 있습니다. - -#### 스로틀링 - -전달에 대한 사용자 응답 시간은 사이트의 웹후크 처리량에 영향을 미칩니다. -각 사이트에서는 분당 1분의 응답 시간이 허용됩니다. 따라서 사이트에 대해 구성된 모든 사용자 엔드포인트가 응답하는 데 총 6초가 걸릴 경우 해당 사이트의 웹후크 전달이 분당 10번으로 제한됩니다. - -전체 처리량 속도를 높여야 할 경우 다음 모델에 따라 사용자 엔드포인트를 설계해야 합니다. -1. 요청 받기 -2. 또 다른 프로세스/스레드를 생성하여 원하는 방식으로 처리 -3. 즉시 확인 200에 응답 - -#### 상태 코드 - -| 상태 | 코드 | 설명 | -|--------|:----:|:-----------:| -| 성공 | < 400 | 전달이 수신되고 성공적으로 처리되었습니다. | -| 오류 | >= 400 | 전달이 수신되었지만 성공적으로 처리되지 않았습니다. | -| 리디렉션 | 3xx | 전달이 수신되었지만 다른 URL로 리디렉션해야 합니다. | - -### 확인 응답 - -확인 응답을 포함하도록 전달을 업데이트할 수 있습니다. 전달이 만들어지면 요청의 일부로 헤더가 제공됩니다. 이러한 헤더에는 `x-sg-delivery-id` 키에 저장된 전달 레코드의 ID가 포함됩니다. 이 ID는 [{% include product %} REST API](https://developer.shotgunsoftware.com/rest-api)를 사용하여 확인 응답이 포함되도록 전달 레코드를 업데이트하는 데 사용할 수 있습니다. - -{% include warning title="확인 응답 크기" content="확인 응답에 허용되는 최대 크기는 4KB입니다." %} - -#### 헤더 예시 - -```json -{ - "accept": "application/json", - "content-type": "application/json; charset=utf-8", - "x-sg-webhook-id": "30f279a0-42a6-4cf2-bb5e-6fc550d187c8", - "x-sg-delivery-id": "dea7a71d-4896-482f-b238-b61820df8b65", - "x-sg-event-batch-id": "1", - "x-sg-event-batch-size": "4", - "x-sg-webhook-site-url": "http://yoursite.shotgunstudio.com/", - "x-sg-event-batch-index": "3" -} -``` - -#### 확인 응답의 역할은 무엇입니까? - -확인 응답은 웹후크의 URL에서 성공적으로 수신한 전달 처리의 성공 또는 실패에 대한 대역 외 상세 보고를 허용합니다. 이를 통해 {% include product %}에서 전달 수신 상태를, 해당 전달과 관련된 이벤트 처리의 성공 또는 실패와 구분할 수 있습니다. 이런 방법으로, 성공적으로 전달된 이벤트에서 디버깅을 위해 유용한 추가 정보를 포함할 수 있습니다. `Asset` 엔티티 생성 시 트리거되는 웹후크가 좋은 예입니다. 이 웹후크의 역할이 새로운 각 `Asset`에 대해 디스크에 디렉토리 구조를 만드는 것인 경우 웹후크의 URL을 성공적으로 전달받을 수 있지만 디스크 또는 네트워크 문제로 인해 관련 디렉토리를 만들지 못할 수도 있습니다. 이 경우 디렉토리 구조가 생성되지 않은 사실과 그 원인을 나타내는 자세한 오류 메시지와 함께 전달 레코드가 업데이트됩니다. - -## 웹후크 테스트 - -자유롭게 사용할 수 있는 온라인 웹후크 URL 생성기 중 하나를 테스트용으로 사용할 수 있습니다. 이러한 서비스는 특별히 웹후크 및 기타 유형의 HTTP 요청 테스트에 사용해야 합니다. 이 방법은 고유의 네트워크에 인프라를 설정할 필요 없이 웹후크를 배우기 시작할 때 좋습니다. - -### webhook.site 사용 - -[webhook.site](https://webhook.site)를 사용하는 것이 권장됩니다. 이는 웹후크에 복사하여 붙여넣을 수 있는 고유한 URL로, 해당 주소에 대한 전달을 실시간으로 보여 줍니다. 전달에 응답할 때 특정 상태 코드 및 본문을 사용하도록 이 페이지를 사용자 지정하여, 전달 성공 및 실패를 테스트할 수 있습니다. - -webhook.site의 서비스는 매우 속도에 제한적입니다. 즉, 일부 전달이 거부되거나 불안정해지거나 실패한 웹후크 상황에서 쉽게 종료될 수 있습니다. 테스트할 때는 프로덕션의 라이브 데이터 대신, 알려져 있으며 제어 가능한 프로젝트 환경을 사용하는 것이 좋습니다. - -{% include warning title="프로덕션 데이터" content="공개적으로 사용할 수 있는 타사 웹 서비스에는 프로덕션 이벤트 데이터를 보내지 않는 것이 좋습니다. webhook.site와 같은 서비스를 사용하여 웹후크를 테스트하는 경우 테스트 데이터만 사용하는 것이 좋습니다." %} diff --git a/docs/ko/guides/webhooks/batch-deliveries.md b/docs/ko/guides/webhooks/batch-deliveries.md deleted file mode 100644 index a156afecd..000000000 --- a/docs/ko/guides/webhooks/batch-deliveries.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: 웹후크 배치 전달 -pagename: webhooks-batch-deliveries -lang: ko ---- - -# 배치 전달 - -## 배치 전달(Batch) 활성화 - -"배치 형식으로 전달(Deliver in Batched Format)" 옵션을 선택하면 배치 페이로드 형식으로 요청할 수 있도록 웹후크를 구성할 수 있습니다. -이 옵션이 활성화된 경우 각 요청의 형식이 지정되면 해당 페이로드에 보류 중인 전달이 최대 50개까지 일괄 처리됩니다. - -짧은 시간 내에 많은 SG 이벤트가 발생하는 경우 이 방법은 대량의 전달 처리를 관리하는 데 도움을 줍니다. 일반적인 시스템 작업 중에 구독 이벤트가 2초에 두 번 이상 생성되는 경우에는 페이로드당 여러 건의 전달이 발생합니다. - -![배치 전달 활성화](./images/batch_delivery_enabled.png) - -## 전달에 대한 응답 - -배치(Batch) 전달을 활성화한 경우, 수신 서비스가 이벤트당 1초 이하의 빠른 응답 속도를 보장하도록 설계하는 것이 좋습니다. 그러지 않으면 배치가 큰 경우에 시간 초과 및 웹후크 오류 위험이 증가합니다. - -{% include info title="참고" content="단일 이벤트에 응답하는 데 1초가 걸리는 수신 서비스의 경우 응답 시간은 전달 오버헤드가 아니라 주요 성능 요소입니다. 이 경우 배치 처리를 선택해도 큰 이점이 없습니다." %} - -#### 비배치 전달 웹후크 -* 시간 초과 허용치는 전달당 6초입니다. 즉, 웹후크 엔드포인트는 6초 내에 각 요청에 응답해야 합니다. - -#### 배치 전달 웹후크 -* 배치에서 시간 초과 허용치의 최대값은 6초, 또는 배치 내 이벤트당 1초입니다. -* 스로틀링 한계로는 모든 웹후크에서 ShotGrid 사이트별로 분당 1분의 웹후크 엔드포인트 응답 시간이 적용됩니다. - -## 웹후크 전달 형식 비교 - -#### 비배치 전달 웹후크 메시지 본문(항상 1개의 전달): - -```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" - }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, - }, - "timestamp":"2021-02-22T17:40:27Z" -} -``` - -#### 배치 전달 웹후크 메시지 본문(1~50개의 전달이 포함될 수 있음) - -배치가 활성화된 경우 배치에 이벤트가 하나만 있어도 `deliveries` 키가 항상 존재합니다. 이 값은 개별 이벤트 전달 데이터의 배열이며 각 전달에 제공된 정보는 배치 해제 모드와 동일합니다. - -```json -{ - "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" - }, - "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*" - }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, - ] - } -} -``` diff --git a/docs/ko/guides/webhooks/images/batch_delivery_enabled.png b/docs/ko/guides/webhooks/images/batch_delivery_enabled.png deleted file mode 100644 index c3e3bc23b..000000000 Binary files a/docs/ko/guides/webhooks/images/batch_delivery_enabled.png and /dev/null differ diff --git a/docs/ko/images/color.png b/docs/ko/images/color.png new file mode 100644 index 000000000..a815d27dc Binary files /dev/null and b/docs/ko/images/color.png differ diff --git a/docs/ko/images/landing_page/book.png b/docs/ko/images/landing_page/book.png deleted file mode 100644 index 5db0b1698..000000000 Binary files a/docs/ko/images/landing_page/book.png and /dev/null differ diff --git a/docs/ko/images/landing_page/play.png b/docs/ko/images/landing_page/play.png deleted file mode 100644 index 7a6d24aa4..000000000 Binary files a/docs/ko/images/landing_page/play.png and /dev/null differ diff --git a/docs/ko/images/landing_page/rv.png b/docs/ko/images/landing_page/rv.png deleted file mode 100644 index 692e12166..000000000 Binary files a/docs/ko/images/landing_page/rv.png and /dev/null differ diff --git a/docs/ko/images/landing_page/sg.png b/docs/ko/images/landing_page/sg.png deleted file mode 100644 index 177fb8be6..000000000 Binary files a/docs/ko/images/landing_page/sg.png and /dev/null differ diff --git a/docs/ko/images/landing_page/sg_large_logo.png b/docs/ko/images/landing_page/sg_large_logo.png deleted file mode 100644 index 46ffa54aa..000000000 Binary files a/docs/ko/images/landing_page/sg_large_logo.png and /dev/null differ diff --git a/docs/ko/images/landing_page/tk.png b/docs/ko/images/landing_page/tk.png deleted file mode 100644 index cce9235c2..000000000 Binary files a/docs/ko/images/landing_page/tk.png and /dev/null differ diff --git a/docs/ko/index.md b/docs/ko/index.md deleted file mode 100644 index a4f4d6355..000000000 --- a/docs/ko/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: landing_page -title: 개요 -pagename: index -lang: ko ---- - diff --git a/docs/ko/quick-answers/administering.md b/docs/ko/quick-answers/administering.md deleted file mode 100644 index 9d2893c65..000000000 --- a/docs/ko/quick-answers/administering.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 관리 -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) -- [{% include product %} 데스크톱의 브라우저 통합을 어떻게 비활성화할 수 있습니까?](./administering/disable-browser-integration.md) - -#### 구성 관리: - -- [여러 개의 저장소 루트를 사용하도록 구성을 수정하려면 어떻게 해야 합니까?](./administering/convert-from-single-root-to-multi.md) -- [파이프라인 구성을 새 위치로 이동하려면 어떻게 해야 합니까?](./administering/move-configuration-location.md) -- [내 프로젝트 디렉토리를 새 로컬 저장소 루트로 어떻게 옮깁니까?](./administering/move-project-directories.md) -- [파이프라인 구성 코어 위치를 업데이트하려면 어떻게 해야 합니까?](./administering/update-configuration-core-locations.md) -- [프로젝트 간에 에셋을 어떻게 공유합니까?](./administering/share-assets-between-projects.md) -- [앱 또는 엔진을 어떻게 제거합니까?](./administering/uninstalling-an-app-or-engine.md) - -#### 캐시 기반 질문: - -- [경로 캐시가 무엇입니까? 파일 시스템 위치가 무엇입니까?](./administering/what-is-path-cache.md) -- [내 캐시는 어디에 있습니까?](./administering/where-is-my-cache.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 deleted file mode 100644 index 64541b89e..000000000 --- a/docs/ko/quick-answers/administering/convert-from-single-root-to-multi.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: 여러 개의 저장소 루트를 사용하도록 구성을 수정하려면 어떻게 해야 합니까? -pagename: convert-from-single-root-to-multi -lang: ko ---- - -# 여러 개의 저장소 루트를 사용하도록 구성을 수정하려면 어떻게 해야 합니까? - -기본 구성은 단일 로컬 저장소 루트를 사용하도록 설정됩니다(즉, 모든 프로젝트 파일이 `/sgtk/projects` 같은 단일 루트 지점에 저장됨). 그리고 일부 프로젝트 파일을 저장할 새 저장소 루트를 추가할 수 있습니다. 보통 디스크 공간이 부족하거나 일부 미디어를 더 빠른 저장소에 저장하고 싶을 때 이렇게 하게 됩니다. -그럼 이제 이름이 "secondary"인 다른 루트를 추가해 보겠습니다. 수행해야 할 단계는 다음과 같습니다. - -## {% include product %}의 로컬 저장소 추가 - -- {% include product %}에서 관리자(Admin) > 사이트 기본 설정(Site Preferences)** 페이지로 이동** -- **파일 관리(File Management)** 섹션 열기 -- **[+] 로컬 파일 저장소 추가([+] Add Local File Storage)** 클릭 -- 해당하는 모든 플랫폼에서 이름("secondary") 및 저장소 루트 경로 입력. *특정 플랫폼을 사용하고 있지 않다면 그냥 비워 두어도 됩니다.* -- 페이지 위나 아래에 있는 **페이지 저장(Save Page)** 버튼 클릭 - -![{% include product %} 파일 관리 기본 설정](images/shotgun-pref-file-management.png) - -## 파이프라인 구성에 새 루트 추가 - -툴킷은 파이프라인 구성에서 사용되는 로컬 저장소에 관한 정보를 `config/core/roots.yml` 파일에 캐시합니다. {% include product %}에서 지금 막 생성한 새로운 **보조** 저장소 루트를 추가하려면 이 파일을 편집합니다. - - primary: { - 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, - windows_path: 'z:\sgtk\secondaries' - } - -{% include info title="참고" content="`tk-core v0.18.141`부터 roots.yml에 정의된 루트 이름이 SG에 정의된 로컬 저장소 이름과 일치할 필요가 없습니다. `roots.yml` 정의에 `shotgun_storage_id: ` 키/값 쌍을 포함하여 연결을 명시적으로 정의할 수 있습니다. -예시: - - secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, - windows_path: 'z:\sgtk\secondaries' - shotgun_storage_id: 123 - } - -저장소 ID는 현재 API 호출을 통해서만 쿼리할 수 있습니다." %} - -## 새 로컬 저장소 루트를 사용하도록 스키마 수정 - -이제 새 저장소 루트를 정의하고 툴킷에 이를 알렸으므로 앞으로 디렉토리 구조에서 어떻게 사용할 것인지 결정해야 합니다. 이 예에서는 모든 에셋 작업이 secondary 저장소에 저장되고, 모든 샷 작업이 primary 저장소에 저장된다고 가정해 보겠습니다. `config/core/schema`에서 다음과 같이 스키마를 설정해야 할 것입니다. - -![다중 루트 스키마 레이아웃](images/schema-multi-root.png) - -**config/core/schema/project.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "primary" - -**config/core/schema/secondary.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "secondary" - -해당 필터에서 이 루트를 참조하는 모든 YAML 파일도 수정해야 합니다. -예를 들어, secondary 폴더 아래 어딘가에 asset.yml이 있다면 필터를 업데이트하여 secondary 폴더 값을 기준으로 해당 프로젝트를 필터링해야 합니다. - - filters: - - { "path": "project", "relation": "is", "values": [ "$secondary" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -## 템플릿 경로를 업데이트하여 사용할 루트 지정 - -끝으로 `config/core/templates.yml` 파일에 정의되어 있는 경로를 업데이트하여1 어느 저장소 루트를 사용할지 지정하고, 필요 시 모든 경로를 업데이트해야 합니다. 템플릿 경로는 스키마의 '절친'이기 때문에 둘은 일치되어야 한다는 점을 기억하십시오. 템플릿 경로가 스키마에 정의되어 있는 경로와 올바로 일치되지 않도록 정의되어 있으면 오류가 발생합니다. - -예를 들어, 여기에서는 모든 에셋 작업을 secondary 저장소에 저장하려고 하기 때문에 maya_asset_work 템플릿 경로를 업데이트하려면 이를 다음과 같이 수정해야 합니다. - - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: 'secondary' - -`config/core/templates.yml` 파일의 각 템플릿 경로에 대해 이와 같은 패턴을 따라야 합니다. 각각에 대해 올바른 `root_name`을 지정합니다(**'primary'** 또는 **'secondary'**). - -{% include info title="참고" content="기본 저장소 루트를 사용하는 템플릿에 대한 `root_name`을 지정할 필요가 없습니다. 기본 루트는 `roots.yml` 파일에서 `default: true`를 지정하여 표시됩니다. `roots.yml`에 기본값이 명시적으로 정의되지 않은 경우 **primary**라는 루트를 기본값으로 간주합니다." %} - -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 deleted file mode 100644 index b12775bfe..000000000 --- a/docs/ko/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: Linux에서 ShotGrid 데스크톱의 데스크톱/시작 관리자 아이콘을 어떻게 설정합니까? -pagename: create-shotgun-desktop-shortcut -lang: ko ---- - -# Linux에서 {% include product %} 데스크톱의 데스크톱/시작 관리자 아이콘을 어떻게 설정합니까? - -현재 {% include product %} 데스크톱 설치 관리자는 단축키를 자동으로 생성하지 않고 항목을 자동으로 실행하지도 않기 때문에 설치 후에 수동으로 해주어야 합니다. 아이콘을 추가하는 과정은 간단하지만, 어느 Linux 버전을 사용 중인지에 따라 달라질 수 있습니다. - -{% include product %} 데스크톱 설치 관리자를 실행하고 나면 {% include product %} 데스크톱 실행 파일이 `/opt/Shotgun folder`에 생성됩니다. 실행 파일 이름은 {% include product %}입니다. -설치 관리자와 함께 배포되는 아이콘은 없습니다. [{% 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 diff --git a/docs/ko/quick-answers/administering/disable-browser-integration.md b/docs/ko/quick-answers/administering/disable-browser-integration.md deleted file mode 100644 index bb4657d22..000000000 --- a/docs/ko/quick-answers/administering/disable-browser-integration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ShotGrid 데스크톱의 브라우저 통합을 어떻게 비활성화할 수 있습니까? -pagename: disable-browser-integration -lang: ko ---- - -# {% include product %} 데스크톱의 브라우저 통합을 어떻게 비활성화할 수 있습니까? - -브라우저 통합을 비활성화하려면 다음의 간단한 두 단계를 수행하십시오. - -1. 다음 위치에서 텍스트 파일을 생성하거나 엽니다. - - Windows: %APPDATA%\{% include product %}\preferences\toolkit.ini - Macosx: ~/Library/Preferences/{% include product %}/toolkit.ini - Linux: ~/.{% include product %}/preferences/toolkit.ini - -2. 다음 섹션을 추가합니다. - - [BrowserIntegration] - enabled=0 - -브라우저 통합 구성 방법에 대한 자세한 내용은 [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오. - -**대체 방법** - -툴킷 파이프라인 구성을 인계받은 경우 대체 방법은 [환경에서 `tk-{% include product %}` 엔진](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48)을 제거하여 어떤 액션도 로드할 수 없도록 하는 것입니다. \ No newline at end of file diff --git a/docs/ko/quick-answers/administering/images/Thumbs.db b/docs/ko/quick-answers/administering/images/Thumbs.db deleted file mode 100644 index 1cb7b264b..000000000 Binary files a/docs/ko/quick-answers/administering/images/Thumbs.db and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/clear-project-tank-name.png b/docs/ko/quick-answers/administering/images/clear-project-tank-name.png deleted file mode 100644 index ef8c37c40..000000000 Binary files a/docs/ko/quick-answers/administering/images/clear-project-tank-name.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/new-pipeline-configuration-locations.png b/docs/ko/quick-answers/administering/images/new-pipeline-configuration-locations.png deleted file mode 100644 index 4b6d24149..000000000 Binary files a/docs/ko/quick-answers/administering/images/new-pipeline-configuration-locations.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/pipeline-configuration-entity-page.png b/docs/ko/quick-answers/administering/images/pipeline-configuration-entity-page.png deleted file mode 100644 index 7a9629348..000000000 Binary files a/docs/ko/quick-answers/administering/images/pipeline-configuration-entity-page.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/schema-multi-root.png b/docs/ko/quick-answers/administering/images/schema-multi-root.png deleted file mode 100644 index e0ff5e768..000000000 Binary files a/docs/ko/quick-answers/administering/images/schema-multi-root.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/shotgun-pref-file-management.png b/docs/ko/quick-answers/administering/images/shotgun-pref-file-management.png deleted file mode 100644 index 8a694a6f2..000000000 Binary files a/docs/ko/quick-answers/administering/images/shotgun-pref-file-management.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/shotgun-storage-roots.png b/docs/ko/quick-answers/administering/images/shotgun-storage-roots.png deleted file mode 100644 index e85c5d715..000000000 Binary files a/docs/ko/quick-answers/administering/images/shotgun-storage-roots.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/images/shotgun_storage_roots.png b/docs/ko/quick-answers/administering/images/shotgun_storage_roots.png deleted file mode 100644 index e85c5d715..000000000 Binary files a/docs/ko/quick-answers/administering/images/shotgun_storage_roots.png and /dev/null differ diff --git a/docs/ko/quick-answers/administering/install-desktop-silent.md b/docs/ko/quick-answers/administering/install-desktop-silent.md deleted file mode 100644 index 37d9b3f50..000000000 --- a/docs/ko/quick-answers/administering/install-desktop-silent.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: Windows에서 ShotGrid 데스크톱을 자동으로 설치하려면 어떻게 해야 합니까? -pagename: install-desktop-silent -lang: ko ---- - -# Windows에서 {% include product %} 데스크톱을 자동으로 설치하려면 어떻게 해야 합니까? - -{% include product %} 데스크톱 설치 프로그램을 자동으로 실행하려면 다음 방법으로 {% include product %} 데스크톱 설치 프로그램을 실행하십시오. - -`ShotgunInstaller_Current.exe /S` - -설치 폴더를 지정하고 싶다면 `/D` 인자를 사용하여 실행하면 됩니다. - -`ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` - -{% include info title="참고" content="`/D` 인자는 마지막 인자여야 하며, 경로에 공백이 있다고 하더라도 `\"`를 사용해서는 안 됩니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/administering/move-configuration-location.md b/docs/ko/quick-answers/administering/move-configuration-location.md deleted file mode 100644 index 503c62a26..000000000 --- a/docs/ko/quick-answers/administering/move-configuration-location.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -layout: default -title: 파이프라인 구성을 새 위치로 이동하려면 어떻게 해야 합니까? -pagename: move-configuration-location -lang: ko ---- - -# 파이프라인 구성을 새 위치로 이동하려면 어떻게 해야 합니까? - -{% include info title="참고" content="이 문서의 내용은 [중앙 집중식 구성 설정](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)에만 적용됩니다. [분산 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#distributed-configurations)은 개별 클라이언트 시스템에 로컬로 캐시되고 툴킷에서 자동으로 관리됩니다." %} - -파이프라인 구성을 새 위치로 옮길 수 있는 가장 쉬운 방법은 `tank move_configuration` 명령을 사용하는 것입니다. 이렇게 하면 파일을 이동하고, {% include product %}를 업데이트하고, 새 위치를 가리키도록 구성 파일을 업데이트하는 작업이 모두 이루어집니다. - -이 명령은 단일 운영 체제의 위치만 옮기거나 이전에는 특정 운영 체제를 사용하지 않았지만 이제 운영 체제를 추가하고 싶은 경우에도 유용합니다. 이동하거나 추가해야 하는 항목과 그렇지 않은 항목은 툴킷이 감지하여 진행할 작업을 미리 보여 주기 때문에 진행하기 전에 확인할 수 있습니다. - -- [tank move_configuration 명령 사용](#using-the-tank-move_configuration-command) -- [수동으로 파이프라인 구성 이동](#manually-moving-your-pipeline-configuration) - -{% include warning title="주의" content="현지화된 코어가 있는 구성을 옮기려고 하고, 이 파이프라인 구성에 포함된 Toolkit Core를 사용 중인 다른 프로젝트가 있는 경우에는(즉, 다른 구성에서 공유 코어로 사용) 해당 프로젝트의 구성 파일을 이 파이프라인 구성의 새 위치를 가리키도록 수동으로 업데이트해야 합니다. 이 파일의 위치는 다음과 같습니다. - -- `/path/to/pipeline_configuration/install/core/core_Darwin.cfg` -- `/path/to/pipeline_configuration/install/core/core_Linux.cfg` -- `/path/to/pipeline_configuration/install/core/core_Windows.cfg`" %} - -## tank move_configuration 명령 사용: - - $ cd /sgtk/software/shotgun/scarlet - $ ./tank move_configuration - - Welcome to the {% include product %} Pipeline Toolkit! - For documentation, see https://toolkit.shotgunsoftware.com - Starting Toolkit for your current path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - Syntax: move_configuration linux_path windows_path mac_path - - This will move the location of the given pipeline configuration. - You can also use this command to add a new platform to the pipeline - configuration. - - Current Paths - -------------------------------------------------------------- - - Current Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - - You typically need to quote your paths, like this: - - > tank move_configuration "/linux_root/my_config" "p:\configs\my_config" - "/mac_root/my_config" - - If you want to leave a platform blank, just just empty quotes. For example, if - you want a configuration which only works on windows, do like this: - - > tank move_configuration "" "p:\configs\my_config" "" - - -### 예시: - - $ 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! - - For documentation, see https://toolkit.shotgunsoftware.com - Starting toolkit for path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - - Current Paths - -------------------------------------------------------------- - Current Linux Path: '/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - New Paths - -------------------------------------------------------------- - New Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet_new' - New Windows Path: 'z:\sgtk\software\shotgun\scarlet_new' - New Mac Path: '/sgtk/software/shotgun/scarlet_new' - - - The configuration will be moved to reflect the specified path changes. - - Note for advanced users: If your configuration is localized and you have other - projects which are linked to the core API embedded in this configuration, - these links must be manually updated after the move operation. - - Are you sure you want to move your configuration? [Yes/No] yes - Copying '/sgtk/software/shotgun/scarlet' -> '/sgtk/software/shotgun/scarlet_new' - Copying /sgtk/software/shotgun/scarlet/cache... - Copying /sgtk/software/shotgun/scarlet/config... - Copying /sgtk/software/shotgun/scarlet/config/core... - Copying /sgtk/software/shotgun/scarlet/config/core/hooks... - Copying /sgtk/software/shotgun/scarlet/config/core/schema... - Copying /sgtk/software/shotgun/scarlet/config/env... - Copying /sgtk/software/shotgun/scarlet/config/env/includes... - Copying /sgtk/software/shotgun/scarlet/config/hooks... - Copying /sgtk/software/shotgun/scarlet/config/icons... - Copying /sgtk/software/shotgun/scarlet/install... - Copying /sgtk/software/shotgun/scarlet/install/apps... - Copying /sgtk/software/shotgun/scarlet/install/apps/app_store... - Copying /sgtk/software/shotgun/scarlet/install/core... - Copying /sgtk/software/shotgun/scarlet/install/core/python... - Copying /sgtk/software/shotgun/scarlet/install/core.backup... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143244... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143940... - Copying /sgtk/software/shotgun/scarlet/install/engines... - Copying /sgtk/software/shotgun/scarlet/install/engines/app_store... - Copying /sgtk/software/shotgun/scarlet/install/frameworks... - Copying /sgtk/software/shotgun/scarlet/install/frameworks/app_store... - Updating cached locations in /sgtk/software/shotgun/scarlet_new/config/core/install_location.yml... - Updating {% include product %} Configuration Record... - Deleting original configuration files... - - All done! Your configuration has been successfully moved. - - -## 수동으로 파이프라인 구성 이동 - -{% include warning title="중요" content="아직 파이프라인 구성을 옮기지 않았다면 위의 [기본 제공 tank 명령](#using-the-tank-move_configuration-command)을 사용하여 이를 자동으로 처리하는 것이 가장 좋습니다." %} - -이미 수동 이동을 시작했는데 중간에 막혀 버렸다면 툴킷이 이제 새 위치에 있는 파이프라인 구성을 통해 계속 작동하도록 하기 위해 변경해야 하는 사항들이 있습니다. - -1. 파이프라인 구성 파일을 새 위치로 이동 - - $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new - -2. 툴킷이 파이프라인 구성의 위치를 파악하는 데 도움을 주도록 `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 - - # configuration defined for this project. - - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' - - # End of file. - -3. {% include product %}에서 이 프로젝트에 대한 해당 파이프라인 구성 엔티티를 찾아 Linux 경로, Mac 경로 및 Windows 경로 필드 값이 위에서 변경한 사항과 일치하도록 수정합니다. - -![ShotGrid에서 파이프라인 구성 위치](images/new-pipeline-configuration-locations.png) - -이제 파이프라인 구성이 새 위치에서 기대한 대로 작동할 것입니다. - -{% include info title="참고" content="SG 데스크톱을 사용 중인 경우 프로젝트에서 나와 프로젝트 아이콘을 다시 클릭해서 파이프라인 구성을 새 위치에서 다시 로드해야 합니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/administering/move-project-directories.md b/docs/ko/quick-answers/administering/move-project-directories.md deleted file mode 100644 index df106f73c..000000000 --- a/docs/ko/quick-answers/administering/move-project-directories.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: 내 프로젝트 디렉토리를 새 로컬 저장소 루트로 어떻게 옮깁니까? -pagename: move-project-directories -lang: ko ---- - -# 내 프로젝트 디렉토리를 새 로컬 저장소 루트로 어떻게 옮깁니까? - -{% include warning title="주의" content="프로젝트 위치를 이동하면 ShotGrid 툴킷을 넘어 확장해도 중간 프로젝트에 많은 영향을 미칠 수 있습니다. 가볍게 처리해서는 안 됩니다." %} - -간혹 프로젝트 파일(씬 파일, 렌더 등)을 새 루트 저장소 위치로 옮겨야 할 때가 있습니다(예: `/mnt/smalldrive`에서 `/mnt/bigdrive/foo`로). 이동은 단일 루트 구성을 사용 중이든 다중 루트 구성을 사용 중이든 상관없이 가능합니다. 이름이 **"asset_storage"**인 저장소를 옮기는 예를 살펴보겠습니다. - -- 이전 위치에서 새 위치로 프로젝트 파일을 복사(또는 이동)합니다. -- {% include product %}에서 **관리자(Admin) > 사이트 기본 설정(Site Preferences)** 페이지로 이동해 **파일 관리(File Management)** 섹션을 엽니다. - ![ 사이트 기본 설정의 {% include product %} 저장소 루트 섹션](./images/shotgun-storage-roots.png) -- 각 플랫폼의 경로와 함께 이름이 "primary"인 로컬 파일 저장소를 프로젝트 파일의 새 저장소로 업데이트합니다. 특정 플랫폼을 사용하고 있지 않다면 그냥 비워 두십시오. -- 페이지 위나 아래에 있는 **"변경 사항 저장(Save Changes)"** 버튼을 클릭합니다. -- 지금 막 {% include product %}에 저장한 새로운 경로 값과 일치하도록 프로젝트 구성의 `config/core/roots.yml` 파일을 업데이트합니다. - -툴킷이 게시 경로를 저장소 루트의 상대 경로로 저장합니다. 이전 저장소 루트도 마찬가지로 경로가 다음과 같이 확장되었습니다. - - [asset_storage]/assets/Character/betty => /mnt/smalldrive/assets/Character/betty - -새 저장소 루트 정의의 경우에는 이제 경로가 다음과 같이 확장됩니다. - - [asset-storage]/assets/Character/betty => /mnt/bigdrive/foo/assets/Character/betty - -그리고 {% include product %} 또는 툴킷에서 어떤 다른 게시 정보를 업데이트하는 일은 신경 쓸 필요가 없습니다! - -{% include warning title="경고" content="위 단계에서는 기존 저장소 루트 경로를 재지정한다고 가정합니다. 대신 기존 경로를 삭제하거나 새 경로를 만드는 경우 모든 폴더를 다시 등록하고 `PublishedFiles` 엔티티를 다시 게시해야 합니다." %} - -## 참조 - -어떤 씬 파일에 이전 경로를 가리키는 참조가 있는 경우에는 직접 해당 참조를 업데이트하거나 참조가 올바로 해석되도록 심볼릭 링크를 만들어야 합니다. - -## 버전 - -{% include product %}에 이 변경 사항의 영향을 받는 영상 경로 또는 프레임 경로 필드에 정보를 저장하는 버전 엔티티가 있는 경우 이 필드는 미디어에 대한 절대 경로를 포함하고 있는 문자열 필드이기 때문에 해당 버전 역시 새 위치를 가리키도록 업데이트되어야 합니다. \ No newline at end of file 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 deleted file mode 100644 index 656fa1eb3..000000000 --- a/docs/ko/quick-answers/administering/resetup-project-with-sg-desktop.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: ShotGrid 데스크톱을 사용하여 툴킷 프로젝트를 다시 설정하려면 어떻게 해야 합니까? -pagename: resetup-project-with-sg-desktop -lang: ko ---- - -# {% include product %} 데스크톱을 사용하여 툴킷 프로젝트를 다시 설정하려면 어떻게 해야 합니까? - -프로젝트에 대한 툴킷 구성을 이미 설정하고 새로 시작해야 하는 경우 {% include product %} 데스크톱의 고급 설정 마법사는 이전의 설정 구성을 제거하기 전에는 프로젝트를 다시 설정할 수 없습니다. - -수동으로 해당 설정을 제거하는 단계는 다음과 같습니다. - -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. 이제 프로젝트 설정 프로세스를 다시 실행할 수 있습니다. - -**대체 방법** - -명령줄을 사용하여 `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 deleted file mode 100644 index a7e338d00..000000000 --- a/docs/ko/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid 데스크톱이 Ubuntu 같은 Debian 시스템에서도 작동합니까? -pagename: sg-desktop-run-on-ubuntu -lang: ko ---- - -# {% include product %} 데스크톱이 Ubuntu 같은 Debian 시스템에서도 작동합니까? - -현재는 {% include product %} 데스크톱용 Debian 기반 배포판을 지원하지 않습니다. -과거에 몇몇 고객이 이를 구현하려고 했던 적이 있었는데, cpio를 사용하여 RPM에서 {% include product %} 데스크톱을 추출한 다음 라이브러리 종속성을 충족하려고 했지만 그리 좋은 결과를 내진 못했습니다. 추가 내용은 [dev 그룹에서 이 스레드를 확인할 수 있습니다](https://groups.google.com/a/shotgunsoftware.com/d/msg/shotgun-dev/nNBg4CKNBLc/naiGlJowBAAJ). - -Python 자체가 많은 시스템 레벨 라이브러리 위에 위치하기 때문에 명시적인 라이브러리 종속성 목록은 없습니다. - -지금으로서는 Debian 지원에 대한 공식적인 계획이 없습니다. Ubuntu를 위한 빌드에는 문제가 있지만 한편으로는 결코 사소하다고 할 수 없는 변화를 구현하다 보면 추가 운영 체제를 QA 및 지원해야 할 필요도 있습니다. - -{% include product %} 데스크톱 없이 툴킷을 수동으로 실행 및 활성화하려는 경우([여기 문서에서 설명](https://developer.shotgridsoftware.com/ko/3830df9d#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 deleted file mode 100644 index 722128705..000000000 --- a/docs/ko/quick-answers/administering/share-assets-between-projects.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 프로젝트 간에 에셋을 어떻게 공유합니까? -pagename: share-assets-between-projects -lang: ko ---- - -# 프로젝트 간에 에셋을 어떻게 공유합니까? - -어느 한 프로젝트가 다른 프로젝트의 샷에 로드할 수 있는 에셋을 포함하고 있는 에셋 라이브러리로 사용되는 경우는 흔히 볼 수 있습니다. - -프로젝트 간에 에셋을 공유하려면 이 에셋 라이브러리 프로젝트의 에셋을 나열해 주는 탭을 [Loader 앱](https://developer.shotgridsoftware.com/ko/a4c0a4f1/)에 추가하면 됩니다. 이렇게 하려면 작업 중인 엔진 및 환경에 대한 로더 설정에서 이를 정의해야 합니다. 아마도 이 설정을 여러 위치에서 업데이트해야 할 것입니다. - -예를 들어, [샷 단계 환경의 Maya 엔진](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-loader2.yml#L122)에 이를 추가하려면 다음 조각을 추가하면 됩니다. - -```yaml -caption: Asset Library -hierarchy: [project, sg_asset_type, code] -entity_type: Asset -filters: -- [project, is, {'type': 'Project', 'id': 207}] -``` - -`207`을 라이브러리 프로젝트의 ID로 바꿉니다. - -현재 Maya의 샷 단계 환경에서 작업 중인 경우 이렇게 하면 해당 프로젝트에서 사용할 수 있는 모든 게시를 보여 주는 새 탭이 추가됩니다. 이 탭을 다른 엔진(Nuke, 3dsmax 등)의 로더에 추가하려면 해당하는 각 엔진에 대한 `tk-multi-loader2` 설정도 수정해야 합니다. 다른 환경에서 이를 활성화하려면 에셋 단계 환경, 그리고 해당 탭을 추가할 모든 다른 환경에서도 같은 단계를 수행해야 합니다. 조금 지루하겠지만 이렇게 해야 좀 더 미세하게 조정할 수 있습니다. - -이렇게 설정하면 Loader 앱이 일반 프로젝트의 게시가 나열되는 탭을 보여 주어야 합니다. \ No newline at end of file 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 deleted file mode 100644 index 3753d6386..000000000 --- a/docs/ko/quick-answers/administering/uninstalling-an-app-or-engine.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: default -title: 앱 또는 엔진을 어떻게 제거합니까? -pagename: uninstalling-an-app-or-engine -lang: ko ---- - -# 앱 또는 엔진을 어떻게 제거합니까? - -앱 또는 엔진이 더 이상 존재하지 않도록 구성의 환경 YAML 파일을 편집하여 앱 또는 엔진을 제거할 수 있습니다. -환경 파일을 사용하면 앱을 완전히 제거하는 대신 특정 컨텍스트 또는 엔진에서만 사용할 수 있도록 앱을 구성할 수 있습니다. -일반적인 환경 파일 편집에 대한 자세한 내용은 [이 안내서](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)를 참조하십시오. - -## 예시 - -다음은 기본 구성에서 Publish 앱을 완전히 제거하는 방법을 보여 주는 예입니다. -앱은 환경 설정 내부의 엔진에 추가되므로 앱이 추가된 모든 엔진에서 Publish 앱을 제거해야 합니다. - -### 엔진에서 앱 제거 - -각 엔진에는 [`.../env/includes/settings`](https://github.com/shotgunsoftware/tk-config-default2/tree/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings) 내에 자체 YAML 파일이 있습니다. Publish 앱은 모든 엔진에 포함되어 있으므로 각 엔진 YAML 파일을 수정해야 합니다. 예를 들어 Maya 엔진을 사용하는 경우 [tk-maya.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml)을 열고 Publish 앱에 대한 모든 참조를 제거합니다. - -우선 includes 섹션에 앱에 대한 참조가 있습니다.
-[`.../env/includes/settings/tk-maya.yml L18`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L18) - -에셋 단계 컨텍스트에 있는 경우 Maya 엔진에도 앱이 포함됩니다.
-[`.../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) - -그런 다음 다른 모든 엔진 환경 yml 파일(예: `tk-nuke`, `tk-3dsmaxplus`, `tk-desktop` 등)에서 이 단계를 반복합니다. - -{% include info title="중요" content="이제 통합에서 사용자에게 앱이 표시되지 않으므로 이것으로 충분합니다. 그러나 깨끗하게 유지하기 위해 구성에서 앱에 대한 참조를 완전히 제거하려면 나머지 단계를 완료합니다." %} - -### 앱 설정 제거 - -이러한 모든 엔진 YAML 파일은 [`tk-multi-publish2.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-publish2.yml) 설정 파일을 포함하고 있었습니다. 이제 엔진 YAML 파일에서 해당 참조가 제거되어 이 파일을 완전히 제거할 수 있습니다. - -{% include warning title="중요" content="`tk-multi-publish2.yml`을 제거해도 이를 가리키는 엔진 파일이 남아 있는 경우 다음과 같은 내용의 오류가 발생합니다. - - 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! " %} - -### 앱 위치 제거 - -기본 구성에서 모든 앱은 [.../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 deleted file mode 100644 index 36879fac8..000000000 --- a/docs/ko/quick-answers/administering/update-configuration-core-locations.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: default -title: 파이프라인 구성 코어 위치를 업데이트하려면 어떻게 해야 합니까? -pagename: update-configuration-core-locations -lang: ko ---- - -# 파이프라인 구성 코어 위치를 업데이트하려면 어떻게 해야 합니까? - -## 파이프라인 구성이 로컬 코어를 사용하도록 업데이트하려면 어떻게 해야 합니까? - -파이프라인 구성이 공유 Toolkit Core를 사용하도록 설정되어 있는 경우에는 해당 프로세스를 실행 취소하거나 tank localize 명령을 사용하여 파이프라인 구성 내부에 Toolkit Core API의 사본을 설치함으로써 코어의 "공유를 해제"할 수 있습니다. 이를 가리켜 코어를 "지역화"한다고 합니다.  - -1. 터미널을 열고 Toolkit Core를 설치하려는 파이프라인 구성으로 이동합니다. - - $ cd /sgtk/software/shotgun/scarlet - -2. 다음 tank 명령을 실행합니다. - - $ ./tank localize - - ... - ... - - ---------------------------------------------------------------------- - 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 Core 사본이 파이프라인 구성에 로컬로 복사됩니다. - -3. 이제 툴킷이 파이프라인 구성에서 사용 중인 모든 앱, 엔진 및 프레임워크를 `install` 폴더에 로컬로 복사합니다. 그런 후 Toolkit Core를 복사하고 새로 설치된 로컬 Toolkit Core를 사용하도록 파이프라인 구성의 구성 파일을 업데이트합니다. - - - Copying 59 apps, engines and frameworks... - 1/59: Copying tk-multi-workfiles v0.6.15... - 2/59: Copying tk-maya v0.4.7... - 3/59: Copying tk-nuke-breakdown v0.3.0... - 4/59: Copying tk-framework-widget v0.2.2... - 5/59: Copying tk-shell v0.4.1... - 6/59: Copying tk-multi-launchapp Undefined... - 7/59: Copying tk-motionbuilder v0.3.0... - 8/59: Copying tk-hiero-openinshotgun v0.1.0... - 9/59: Copying tk-multi-workfiles2 v0.7.9... - ... - ... - 59/59: Copying tk-framework-qtwidgets v2.0.1... - Localizing Core: /sgtk/software/shotgun/studio/install/core -> - /sgtk/software/shotgun/scarlet/install/core - Copying Core Configuration Files... - 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), no - other configurations or projects will be affected. - -{% include info title="참고" content="설치한 앱, 엔진 및 프레임워크 버전에 따라 출력이 달라집니다." %} - -## 파이프라인 구성이 기존 공유 코어를 사용하도록 업데이트하려면 어떻게 해야 합니까? -기존 공유 Toolkit Core가 있는 경우 tank 명령을 사용하여 공유 코어를 사용하도록 기존의 "지역화된" 파이프라인 구성을 업데이트할 수 있습니다. - -1. 터미널을 열고 업데이트하려는 파이프라인 구성으로 이동합니다. - - $ cd /sgtk/software/shotgun/scarlet - -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: - - - 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. - - Do you want to proceed [yn] - - 계속 진행하기 전에 툴킷이 모든 사항을 확인합니다. 이 공유 코어는 이미 여러 플랫폼에 맞게 설정되었기 때문에 각 플랫폼의 위치가 표시됩니다. - - *새 플랫폼의 위치를 추가해야 한다면 공유 코어 구성에서 config/core/install_location.yml 파일을 업데이트하고 필요한 경로를 추가합니다.* - -3. 이제 툴킷이 파이프라인 구성에 로컬 Core API를 백업하고, 지역화된 코어를 제거한 후에 공유 코어에 있는 파이프라인 구성을 가리키도록 필요한 구성을 추가합니다. - - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - - 나중에 파이프라인 구성에서 Toolkit Core를 지역화하기로 결정할 경우(예: 공유 코어에서 파이프라인 구성을 분리하고 로컬로 설치된 버전을 사용) `tank localize` 명령을 사용하여 그렇게 할 수 있습니다. - -{% include info title="참고" content="공유 스튜디오 코어는 현재 파이프라인 구성의 코어 버전 이상이어야 합니다." %} - -## 프로젝트 간에 Toolkit Core를 어떻게 공유합니까? - -현재는 SG 데스크톱을 사용하여 프로젝트를 설정하는 경우 Toolkit Core API가 "지역화됩니다". 즉, 파이프라인 구성 내부에 설치됩니다. 모든 파이프라인 구성이 툴킷 설치를 완벽하게 포함하게 됩니다. 원한다면 Toolkit Core API 버전이 프로젝트 간에 공유되도록 하여 유지 관리 부담을 최소화하고, 모든 프로젝트가 같은 코어 코드를 사용하도록 할 수도 있습니다. 이를 대개 **"공유 스튜디오 코어"**라고 합니다. - -여기서는 여러 프로젝트 파이프라인 구성 간에 공유할 수 있는 새 Toolkit Core API 구성을 생성하는 방법을 소개합니다. - -1. 터미널을 열고, 공유하려는 Toolkit Core 버전이 포함된 기존의 파이프라인 구성으로 이동합니다. 프로젝트가 완료되면 이 파이프라인 구성은 더 이상 지역화된 상태로 유지되지 않고 새로 생성된 공유 코어를 사용하게 됩니다. - - $ cd /sgtk/software/shotgun/pied_piper - -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. 툴킷이 작업을 진행하기 전에 변경될 사항을 요약하여 보여 줍니다. - - ---------------------------------------------------------------------- - Command: Share core - ---------------------------------------------------------------------- - 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 - locations: - - Linux: '/mnt/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. - Do you want to proceed [yn] - -4. 툴킷이 새 공유 위치로 코어 설치를 복사하고, 새 공유 위치를 가리키도록 기존 파이프라인 구성을 업데이트합니다. - - Setting up base structure... - Copying configuration files... - Copying core installation... - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - -이제 다른 파이프라인 구성에서 이 새로운 공유 코어를 사용할 수 있습니다. (방금 생성한 것과 같은) 기존 공유 코어를 사용하도록 파이프라인 구성을 업데이트하려면 `tank attach_to_core` 명령을 사용하면 됩니다. \ No newline at end of file diff --git a/docs/ko/quick-answers/administering/what-is-path-cache.md b/docs/ko/quick-answers/administering/what-is-path-cache.md deleted file mode 100644 index 82089d171..000000000 --- a/docs/ko/quick-answers/administering/what-is-path-cache.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: default -title: 경로 캐시가 무엇입니까? 파일 시스템 위치가 무엇입니까? -pagename: what-is-path-cache -lang: ko ---- - -# 경로 캐시가 무엇입니까? 파일 시스템 위치가 무엇입니까? - -경로 캐시는 툴킷이 디스크의 폴더와 {% include product %}의 엔티티 간 연결을 트래킹하는 데 사용합니다. 마스터 캐시는 `FilesystemLocation` 엔티티 유형을 사용하여 {% include product %}에 저장됩니다. 그러면 각 사용자는 [디스크의 툴킷 캐시 디렉토리에 로컬로 저장](./where-is-my-cache.md)되는 각자의 경로 캐시 버전을 갖게 되고, 이 경로 캐시는 응용프로그램이 시작되거나 폴더가 생성될 때마다 백그라운드에서 동기화됩니다. - -보통 경로 캐시는 수동으로 수정하지 않는 것이 좋습니다. 저희의 내부 프로세스를 통해 여러분의 로컬 캐시가 {% include product %}의 파일 시스템 위치 엔티티와 동기화될 뿐 아니라, 모든 사용자의 컴퓨터가 {% include product %}와 동기화 상태를 유지할 수 있도록 이벤트 로그 항목도 생성됩니다. - -경로 캐시를 수정하는 데 사용할 수 있는 몇 가지 tank 명령이 있습니다. - -- `tank unregister_folders` 명령은 경로 캐시 연결을 제거합니다. -- `tank synchronize_folders` 명령은 로컬 경로 캐시와 {% include product %}의 동기화를 실행합니다. - -보통은 이 명령을 실행할 필요가 없지만 상황에 따라서는 실행하는 것이 유용할 수 있습니다. -예를 들어, `unregister_folders` 명령은 프로젝트 내 엔티티의 이름을 바꾸거나 엔티티를 다시 생성하기 전에 실행해야 합니다. \ No newline at end of file diff --git a/docs/ko/quick-answers/administering/where-is-my-cache.md b/docs/ko/quick-answers/administering/where-is-my-cache.md deleted file mode 100644 index 619c9f059..000000000 --- a/docs/ko/quick-answers/administering/where-is-my-cache.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: default -title: 내 캐시는 어디에 있습니까? -pagename: where-is-my-cache -lang: ko ---- - -# 내 캐시는 어디에 있습니까? - - -## 루트 캐시 위치 - -툴킷은 일부 데이터를 로컬 캐시에 저장하여 {% include product %} 서버에 대한 불필요한 호출을 방지합니다. 여기에는 [경로 캐시](./what-is-path-cache.md), 번들 캐시 및 썸네일이 포함됩니다. 대부분의 사용자는 기본 위치로도 문제 없지만 이를 변경해야 한다면 [cache_location 코어 후크](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/cache_location.py)를 사용하여 구성할 수 있습니다. - -기본 캐시 루트 위치는 다음과 같습니다. - -**Mac OS X** - -`~/Library/Caches/Shotgun` - -**Windows** - -`%APPDATA%\Shotgun` - -**Linux** - -`~/.shotgun` - -## 경로 캐시 - -경로 캐시 위치는 다음과 같습니다. - -`/pc/path_cache.db` - -## 번들 캐시 - -**분산 구성** - -번들 캐시는 {% include product %} 사이트의 프로젝트 전반에 사용되는 전체 응용프로그램, 엔진, 프레임워크의 캐시 모음입니다. 분산 구성의 번들 캐시는 다음 위치에 저장됩니다. - -Mac: `~/Library/Caches/Shotgun/bundle_cache` - -Windows: -`%APPDATA%\Shotgun\bundle_cache` - -Linux: -`~/.shotgun/bundle_cache` - -{% include info title="참고" content="`SHOTGUN_BUNDLE_CACHE_PATH` 환경 변수를 사용하여 이러한 위치를 재정의할 수 있으므로 실제 구현은 다를 수 있습니다." %} - -**중앙 집중식 구성** - -중앙 집중식 구성의 번들 캐시는 중앙 집중식 구성 내부에 저장됩니다. - -`...{project configuration}/install/` - -구성에서 공유 코어를 사용하는 경우 번들 캐시는 공유 코어의 설치 폴더 내부에 저장됩니다. - -## 썸네일 - -툴킷 앱(예: [Loader](https://developer.shotgridsoftware.com/a4c0a4f1))에서 사용하는 썸네일은 로컬 툴킷 캐시에 저장됩니다. 썸네일은 프로젝트, 파이프라인 구성, 앱(필요 시)별로 저장됩니다. 루트 캐시 디렉토리 아래의 구조는 다음과 같습니다. - -`/pc//thumbs/` diff --git a/docs/ko/quick-answers/developing.md b/docs/ko/quick-answers/developing.md deleted file mode 100644 index 9e012b0d9..000000000 --- a/docs/ko/quick-answers/developing.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 개발 -pagename: quick-answers-developing -lang: ko ---- - -개발 -=== - -툴킷을 사용한 개발을 기반으로 한 빠른 답변 모음입니다. - -- [소프트웨어를 실행하기 전에 환경 변수는 어떻게 설정합니까?](./developing/setting-software-environment-variables.md) -- [커스텀 스크립트에서 인증 및 로그인 자격 증명 관련 작업은 어떻게 진행합니까?](./developing/sgtk-script-authentication.md) -- [내 컨텍스트에 존재하는 값이 as_template_fields()에서 누락되었습니다.](./developing/as-template-fields-missing-values.md) -- [Maya에서 툴킷 앱 실행을 위한 쉘프 버튼을 추가하려면 어떻게 해야 합니까?](./developing/maya-shelf-app-launcher.md) -- [어떻게 하면 shotgunEvents 데몬을 사용하여 다른 Toolkit Core 모듈을 로드할 수 있습니까?](./developing/toolkit-core-event-daemon.md) -- [API를 사용하여 툴킷 구성을 프로그래밍 방식으로 업데이트하려면 어떻게 해야 합니까?](./developing/update-config-with-api.md) -- [API를 통해 게시물을 작성하려면 어떻게 해야 합니까?](./developing/create-publishes-via-api.md) diff --git a/docs/ko/quick-answers/developing/as-template-fields-missing-values.md b/docs/ko/quick-answers/developing/as-template-fields-missing-values.md deleted file mode 100644 index ef2968654..000000000 --- a/docs/ko/quick-answers/developing/as-template-fields-missing-values.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -title: 내 컨텍스트에 존재하는 값이 as_template_fields()에 누락되었습니다. -pagename: as-template-fields-missing-values -lang: ko ---- - -# 내 컨텍스트에 존재하는 값이 as_template_fields()에 누락되었습니다. - -[as_template_fields()](https://developer.shotgunsoftware.com/tk-core/core.html?#sgtk.Context.as_template_fields) 방식은 템플릿의 키에 해당하는 폴더가 아직 생성되지 않은 경우 경로 캐시를 사용하며, 그러면 필드가 반환되지 않습니다. 이 문제는 여러 이유에서 발생할 수 있습니다. - -- 템플릿 정의 및 스키마가 동기화 상태여야 합니다. 이 템플릿 정의, 또는 파이프라인 구성의 스키마를 수정했는데 둘 모두 동기화되지 않은 경우 예상한 필드가 반환되지 않습니다. -- 이 특정 컨텍스트에 대해 폴더가 생성되지 않았습니다. 아직 생성되지 않았다면 경로 캐시에 일치되는 레코드가 없게 되고, 따라서 예상한 필드가 반환되지 않습니다. diff --git a/docs/ko/quick-answers/developing/create-publishes-via-api.md b/docs/ko/quick-answers/developing/create-publishes-via-api.md deleted file mode 100644 index 31f5db0dc..000000000 --- a/docs/ko/quick-answers/developing/create-publishes-via-api.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: default -title: API를 통해 게시물을 작성하려면 어떻게 해야 합니까? -pagename: create-publishes-via-api -lang: ko ---- - -# API를 통해 게시물을 작성하려면 어떻게 해야 합니까? - -sgtk API는 ShotGrid에서 `PublishedFiles` 엔티티를 등록할 수 있는 [편의 방식](https://developer.shotgunsoftware.com/tk-core/utils.html#sgtk.util.register_publish)를 제공합니다. - -또한 [자체 API](https://developer.shotgunsoftware.com/tk-multi-publish2/)와 함께 Publish 앱도 제공합니다. -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.shotgunsoftware.com/tk-core/utils.html#sgtk.util.register_publish)라는 API 유틸리티 방식을 사용 중입니다. - -기본적으로 이 방식은 {% include product %}에서 새로운 PublishedFile 엔티티를 생성하며, 툴킷 컨셉을 사용하여 생성을 쉽게 만들어줍니다. 여러분의 코드로 무언가를 실행하려면 다음의 행을 이용해야 할 것입니다. - -```python -# Get access to the Toolkit API -import sgtk - -# this is the file we want to publish. -file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk" - -# alternatively, for file sequences, we can just use -# a standard sequence token -# file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/renders/v034/foreground.%04d.exr" - -# The name for the publish should be the filename -# without any version number or extension -name = "foreground" - -# 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. -tk = sgtk.sgtk_from_path(file_to_publish) - -# use the file to extract the context. The context denotes the current work area in Toolkit -# and will control which entity and task the publish will be linked up to. 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 context. -ctx = tk.context_from_path(file_to_publish) - -# alternatively, if the file you are trying to publish is not in a location that is -# recognized by toolkit, you could create a context directly from a ShotGrid entity instead: -ctx = tk.context_from_entity("Shot", 123) -ctx = tk.context_from_entity("Task", 123) - -# Finally, run the publish command. -# 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, - published_file_type="Nuke Script", - version_number=34 -) -``` - -위에 나온 기본 항목 외에도 사용자가 직접 입력할 수 있는 여러 가지 옵션이 있습니다. -전체 매개변수 목록 및 매개변수의 기능에 대한 자세한 내용은 [Core API 설명서](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)를 참조하십시오. - -{% include info title="팁" content="코드가 툴킷 앱 내에서 실행 중인 경우 `self.sgtk`를 통해 sgtk 인스턴스를 가져오고 `self.context`를 사용하여 컨텍스트를 가져올 수 있습니다. -앱 내는 아니지만 툴킷 통합이 있는 소프트웨어 내에서 실행될 경우 다음 코드를 사용하여 현재 컨텍스트 및 sgtk 인스턴스에 액세스할 수 있습니다. - -```python -import sgtk -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/images/sign_in_window.png b/docs/ko/quick-answers/developing/images/sign_in_window.png deleted file mode 100644 index b01bc705a..000000000 Binary files a/docs/ko/quick-answers/developing/images/sign_in_window.png and /dev/null differ diff --git a/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md b/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md deleted file mode 100644 index 50292b361..000000000 --- a/docs/ko/quick-answers/developing/maya-shelf-app-launcher.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Maya에서 툴킷 앱 실행을 위한 쉘프 버튼을 추가하려면 어떻게 해야 합니까? -pagename: maya-shelf-app-launcher -lang: ko ---- - -# Maya에서 툴킷 앱 실행을 위한 쉘프 버튼을 추가하려면 어떻게 해야 합니까? - -Maya에서 툴킷 앱을 실행하기 위한 선반 버튼을 Maya에 추가하는 작업은 정말 간단합니다. 다음은 [Loader 앱](https://developer.shotgridsoftware.com/ko/a4c0a4f1/)을 여는 커스텀 쉘프 버튼을 추가하는 방법을 보여 주는 예입니다. - -{% include info title="참고" content="이 예는 툴킷이 현재 Maya 세션에서 활성화되어 있다고 가정한 것입니다. 이 예제 코드는 툴킷을 부트스트랩(Bootstrap)하지 않습니다." %} - -Maya에서 스크립트 편집기를 열고 다음 Python 코드를 붙여 넣습니다.  - -```python -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: - 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!") - - # 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) - - # now we have the command we need to call the registered callback - command['callback']() - -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) -``` - -이 코드를 선택하고 커스텀 쉘프로 끌어다 놓습니다. 커스텀 쉘프 버튼으로 작업하는 방법에 대한 자세한 정보는 [Maya 설명서](https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Maya/files/GUID-C693E884-F81A-4858-B5D6-3856EB8F394E-htm.html)를 참조하십시오. - -이 코드 예를 사용하면 위쪽에 있는 `tk_app` 및 `call_func` 값을 수정하여 Maya에서 활성화되어 있는 툴킷 앱을 실행할 수 있을 것입니다. diff --git a/docs/ko/quick-answers/developing/setting-software-environment-variables.md b/docs/ko/quick-answers/developing/setting-software-environment-variables.md deleted file mode 100644 index 02ef0d881..000000000 --- a/docs/ko/quick-answers/developing/setting-software-environment-variables.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: 소프트웨어를 실행하기 전에 환경 변수는 어떻게 설정합니까? -pagename: setting-software-environment-variables -lang: ko ---- - -# 소프트웨어를 실행하기 전에 환경 변수는 어떻게 설정합니까? - -{% include product %} 툴킷을 사용하면 실행 프로세스 중에 후크를 사용하여 환경을 구성하고 커스텀 코드를 실행할 수 있습니다. - -Nuke 또는 Maya와 같은 소프트웨어를 실행할 때 {% include product %} 데스크톱 또는 브라우저 통합을 통해 `tk-multi-launchapp`가 실행됩니다. -이 앱은 소프트웨어 실행을 담당하며 {% include product %} 통합이 예상대로 시작되게 합니다. 이 프로세스 중에 후크를 통해 표시되는 두 지점을 사용하여 커스텀 코드를 실행할 수 있습니다. - -## before_app_launch.py - -[`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) 후크는 소프트웨어가 실행되기 직전에 호출됩니다. -이를 통해 실행된 소프트웨어에 전달될 모든 커스텀 환경 변수를 완벽하게 설정할 수 있습니다. - -예시: - -```python -import os -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="경고" content="ShotGrid에서 설정된 환경 변수를 완전히 다시 정의하지 않도록 주의해야 합니다. -예를 들어 `NUKE_PATH`(Nuke) 또는 `PYTHONPATH`(Maya)에 경로를 추가해야 하는 경우 경로를 변경하는 대신 기존 값에 경로를 추가해야 합니다. -이 경우 다음과 같이 편리한 방법을 사용할 수 있습니다. - -```python -tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") -``` -" %} - -## 커스텀 래퍼 - -일부 스튜디오에서는 환경 변수 설정 및 소프트웨어 실행을 처리하는 커스텀 래퍼를 사용합니다. -이와 같은 커스텀 코드를 사용하여 환경을 설정하려는 경우 `Software` 엔티티의 [경로 필드](https://developer.shotgridsoftware.com/ko/8085533c/#example-add-your-own-software)를 실행 가능한 래퍼로 지정하면 `tk-multi-launchapp`이 대신 실행합니다. - -{% include warning title="경고" content="이 경우 ShotGrid에서 설정한 환경 변수를 유지해야 합니다. 그러지 않으면 통합이 시작되지 않습니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/developing/sgtk-script-authentication.md b/docs/ko/quick-answers/developing/sgtk-script-authentication.md deleted file mode 100644 index 0b9277ec6..000000000 --- a/docs/ko/quick-answers/developing/sgtk-script-authentication.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: 커스텀 스크립트에서 인증 및 로그인 자격 증명 관련 작업은 어떻게 진행합니까? -pagename: sgtk-script-authentication -lang: ko ---- - -# 커스텀 스크립트에서 인증 및 로그인 자격 증명 관련 작업은 어떻게 진행합니까? - -## 오류 메시지 -스크립트에서 아래와 같은 오류가 표시되는 경우 {% include product %} 사이트에 액세스할 권한이 없음을 의미합니다. - -```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 -# Import the Toolkit API so we can access Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either programmatically or, in this -# case, interactively. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Optionally clear the current user if you've already logged in before. -authenticator.clear_default_user() - -# Get an authenticated user. In this scenario, since we've passed in the -# CoreDefaultsManager, the code will first look to see if there is a script_user inside -# shotgun.yml. If there isn't, the user will be prompted for their username, -# password and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating a Sgtk instance. -sgtk.set_authenticated_user(user) - -# -# Add your app code here... -# -# When you are done, you could optionally clear the current user. Doing so -# however, means that the next time the script is run, the user will be prompted -# for their credentials again. You should probably avoid doing this in -# order to provide a user experience that is as frictionless as possible. -authenticator.clear_default_user() -``` - -`QApplication`을 사용할 수 있다면 다음과 유사한 항목을 볼 수 있습니다. - -![](./images/sign_in_window.png) - -{% include info title="참고" content="구성과 연관되지 않은 툴킷 API(`sgtk` 패키지)를 가져오는 경우(예: 다른 구성으로 부트스트랩(Bootstrapping)하는 데 사용하기 위해 다운로드한 패키지) `CoreDefaultsManager`를 만들면 안 됩니다. 대신 기본값 관리자를 전달하지 말고 `ShotgunAuthenticator()` 인스턴스를 생성하십시오. -```python -authenticator = ShotgunAuthenticator() -``` -" %} - -## 비-사용자 대상 스크립트 -스크립트가 렌더 팜 또는 이벤트 처리기처럼 사용자 대상 유형이 아닌 경우에는 Sgtk/Tank 인스턴스를 생성하기 전에 다음을 시작 부분에 추가할 수 있습니다. - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either interactively or, in this -# case, programmatically. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Toolkit", - api_key="4e48f...." -) - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -{% include info title="참고" content="[사용자 대상 스크립트](user-facing-scripts`sgtk` 섹션의 끝 부분에 언급했듯이 가져온 ) 패키지가 독립 실행형이거나 구성에서 가져온 패키지가 아닌 경우 기본값 관리자를 생성하지 마십시오. 또한 `create_script_user()` 방식에 `host`를 제공해야 합니다. - -```python -user = authenticator.create_script_user( - host=\"https://yoursite.shotgunstudio.com\", - api_script=\"Toolkit\", - 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 deleted file mode 100644 index 1e1bf3f23..000000000 --- a/docs/ko/quick-answers/developing/toolkit-core-event-daemon.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: default -title: 어떻게 하면 ShotGrid 이벤트 데몬을 사용하여 다른 Toolkit Core 모듈을 로드할 수 있습니까? -pagename: toolkit-core-event-daemon -lang: ko ---- - -# 어떻게 하면 shotgunEvents 데몬을 사용하여 다른 Toolkit Core 모듈을 로드할 수 있습니까? - -**이 정보를 공유해 준 [Benoit Leveau @ Milk VFX](https://github.com/benoit-leveau)에게 깊이 감사드립니다.** - -## 문제 - -툴킷의 sgtk API는 프로젝트 중심입니다. 즉, 사용할 프로젝트에서 특별히 가져와야 합니다. 이는 단일 Python 세션에서 다중 프로젝트에 대해 sgtk API 작업을 사용하는 경우 Python은 이름이 동일한 모듈을 한 번만 가져올 수 있기 때문에 문제가 발생할 수 있음을 의미합니다. - -[{% include product %} 이벤트 데몬](https://github.com/shotgunsoftware/shotgunEvents)을 사용 중인 경우 특정 이벤트에 대해서는 플러그인 내에서 툴킷 액션을 수행하고 싶을 수 있습니다. 하지만 Python은 모듈을 한 번만 가져오기 때문에 이렇게 하는 것은 위험할 수 있습니다. 따라서 프로젝트 A용 Toolkit Core API를 플러그인을 처음 실행할 때 가져오면 그 버전이 데몬의 사용 기간 동안 가져온 채로 유지되는 버전이 됩니다. 즉, 플러그인으로 발송된 다음 이벤트가 프로젝트 B의 이벤트인 경우 프로젝트 A용 Core API를 사용하여 프로젝트 B를 위한 새 툴킷 객체의 인스턴스화를 시도하면 툴킷에서 오류가 발생할 수 있습니다. - -**중앙 집중식 구성을 사용하는 경우의 문제 예시:** - -- 이벤트 123은 프로젝트 A의 이벤트입니다. -- 프로젝트 A에 대한 Core API는 `/mnt/toolkit/projectA/install/core/python`에 있습니다. -- 이 디렉토리를 `sys.path`에 접두사로 붙입니다. -- `import sgtk`가 이 위치에서 이 API를 가져옵니다. -- 이 Core API로 툴킷 인스턴스를 인스턴스화하고 일부 액션을 수행합니다. -- Core API 디렉토리를 `sys.path`에서 분리합니다. -- 이벤트 234는 프로젝트 B의 이벤트입니다. -- 프로젝트 B에 대한 Core API는 `/mnt/toolkit/projectB/install/core/python`에 있습니다. -- 이 디렉토리를 `sys.path`에 접두사로 붙입니다. -- Python은 이를 이미 가져온 sgtk로 인식하기 때문에 `import sgtk`는 아무 동작도 하지 않습니다. -- 이 Core API로 툴킷 인스턴스를 인스턴스화하고 일부 액션을 수행합니다. -- 툴킷 코어가 작업을 수행하려는 프로젝트 (B)가 아닌 프로젝트 (A)를 위한 것이기 때문에 오류가 발생합니다. - -## 솔루션 - -아래 예는 다른 버전의 모듈을 이미 가져왔을 수도 있는 경우에 스크립트 또는 플러그인에서 올바른 버전의 sgtk 코어를 가져올 수 있는 방법을 보여 줍니다. 원래 가져온 항목은 언로드되어 Python 메모리에서 제거되기 때문에 새로운 모듈 인스턴스를 성공적으로 가져와 사용할 수 있습니다. - -```python -""" -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. -""" - -import os -import sys - - -def import_sgtk(project): - """ - Import and return the sgtk module related to a Project. - This will check where the Core API is located on disk (in case it's localized or shared). - It shouldn't be used to get several instances of the sgtk module at different places. - This should be seen as a kind of 'reload(sgtk)' command. - - :param project: (str) project name on disk for to import the Toolkit Core API for. - """ - # 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) - del mod - - # check which location to use to import the core - python_subfolder = os.path.join("install", "core", "python") - is_core_localized = os.path.exists(os.path.join(shotgun_base, project, "install", "core", "_core_upgrader.py")) - if is_core_localized: - # the core API is located inside the configuration - core_python_path = os.path.join(shotgun_base, project, python_subfolder) - else: - # the core API can still be localized through the share_core/attach_to_core commands - # so look in the core_Linux.cfg file which will give us the proper location (modify this - # to match your primary platform) - core_cfg = os.path.join(shotgun_base, project, "install", "core", "core_Linux.cfg") - if os.path.exists(core_cfg): - core_python_path = os.path.join(open(core_cfg).read(), python_subfolder) - else: - # use the studio default one - # this assumes you have a shared studio core installed. - # See https://developer.shotgridsoftware.com/b12f2510/#how-do-i-share-the-toolkit-core-between-projects - core_python_path = os.path.join(shotgun_base, "studio", python_subfolder) - - # 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 - - # Remove the TANK_CURRENT_PC env variable so that it can be populated by the new import - if "TANK_CURRENT_PC" in os.environ: - del os.environ["TANK_CURRENT_PC"] - - # now import the sgtk module, it should be found at the 'core_python_path' location above - import sgtk - return sgtk -``` - -## 분산 구성 - -위 예에서는 [중앙 집중식 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#centralized-configurations)을 사용한다고 가정하고 있지만 [분산 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#distributed-configurations)을 사용할 경우에는 상황이 약간 다릅니다. 분산 구성의 경우 sgtk API를 가져오려면 [부트스트랩(Bootstrap) API](https://developer.shotgunsoftware.com/tk-core/initializing.html#bootstrap-api)를 사용해야 합니다. 부트스트랩(Bootstrap) API를 사용하는 경우 일반적으로 비 프로젝트 중심 sgtk API를 가져온 다음 이를 사용하여 지정된 프로젝트에 대한 엔진을 부트스트랩합니다. -이 부트스트랩(Bootstrap) 프로세스는 sgtk 모듈 교환을 처리하여 부트스트랩 프로세스 마지막에 엔진 오브젝트를 사용할 수 있도록 합니다. 부트스트랩(Bootstrap) 후 sgtk를 가져오면 프로젝트에 적합한 관련 sgtk 모듈을 가져옵니다. 위의 예에서 다중 프로젝트에 대해 sgtk를 로드해야 하는 대신 다중 프로젝트에 대해 부트스트랩(Bootstrapping)해야 합니다. 여기 작은 캐시는 한 번에 하나의 엔진만 실행할 수 있으므로 다른 엔진을 로드하기 전에 먼저 삭제해야 합니다. - -{% include warning title="경고" content="구성을 부트스트랩(Bootstrapping)하면 프로세스가 구성을 로컬로 캐시하고 모든 종속성을 다운로드해야 하므로 속도가 느려질 수 있습니다. 이벤트 데몬 플러그인에서 부트스트랩(Bootstrapping)하면 성능에 심각한 영향을 미칠 수 있습니다. 한 가지 가능한 접근 방식은 각 프로젝트 부트스트랩(Bootstrap)에 대해 별도의 Python 인스턴스를 생성하여 플러그인에서 명령을 전달하는 것입니다. 이렇게 하면 필요할 때마다 프로젝트를 다시 부트스트랩(Bootstrapping)하지 않아도 됩니다." %} - - -예는 다음과 같습니다. - -```python -# insert the path to the non project centric sgtk API -sys.path.insert(0,"/path/to/non/project/centric/sgtk") -import sgtk - -sa = sgtk.authentication.ShotgunAuthenticator() -# Use the authenticator to create a user object. -user = sa.create_script_user(api_script="SCRIPTNAME", - api_key="SCRIPTKEY", - host="https://SITENAME.shotgunstudio.com") - -sgtk.set_authenticated_user(user) - -mgr = sgtk.bootstrap.ToolkitManager(sg_user=user) -mgr.plugin_id = "basic." - -engine = mgr.bootstrap_engine("tk-shell", entity={"type": "Project", "id": 176}) -# import sgtk again for the newly bootstrapped project, (we don't need to handle setting sys paths) -import sgtk -# perform any required operations on Project 176 ... - -# Destroy the engine to allow us to bootstrap into another project/engine. -engine.destroy() - -# now repeat the process for the next project, although we don't need to do the initial non-project centric sgtk import this time. -# We can reuse the already import sgtk API to bootstrap the next -... -``` - -{% include info title="참고" content="중앙 집중식 구성도 부트스트랩(Bootstrapping)할 수 있으므로 혼합하여 사용할 경우 다른 방식이 필요하지 않습니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/developing/update-config-with-api.md b/docs/ko/quick-answers/developing/update-config-with-api.md deleted file mode 100644 index 8d8b3515b..000000000 --- a/docs/ko/quick-answers/developing/update-config-with-api.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: API를 사용하여 툴킷 구성을 프로그래밍 방식으로 업데이트하려면 어떻게 해야 합니까? -pagename: update-config-with-api -lang: ko ---- - -# API를 사용하여 툴킷 구성을 프로그래밍 방식으로 업데이트하려면 어떻게 해야 합니까? - -## 앱, 엔진 및 프레임워크 업데이트 -프로그래밍 방식으로 엔진, 앱 및 프레임워크를 모두 최신 버전으로 업데이트하려면 다음 코드를 사용하면 됩니다. - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("updates") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="주의" content="이렇게 하면 추가적인 상호 작용 또는 확인 없이 파이프라인 구성에서 모든 엔진, 앱 및 프레임워크가 최신 버전으로 업데이트됩니다. 계속 진행하기 전에 유념하시기 바랍니다." %} - -## 코어 업데이트 - -프로젝트의 코어를 상호 작용하지 않는 방식으로 실행하기 위해 스크립트에서 프로젝트 코어 버전을 업데이트하려면 다음 코드를 사용하면 됩니다. - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("core") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="주의" content="이렇게 하면 추가적인 상호 작용 또는 확인 없이 Toolkit Core가 최신 버전으로 업데이트됩니다. 이 양식을 실행 중인 코어가 공유 코어인 경우 이렇게 하면 이 코어 버전을 공유 중인 모든 프로젝트가 사용하는 코어 버전이 업데이트됩니다! 계속 진행하기 전에 유념하시기 바랍니다." %} - -참고: - -- [커스텀 스크립트의 인증 및 로그인 자격 증명](https://developer.shotgridsoftware.com/ko/724152ce/) diff --git a/docs/ko/quick-answers/images/search_community.gif b/docs/ko/quick-answers/images/search_community.gif deleted file mode 100644 index 4a6b86a1d..000000000 Binary files a/docs/ko/quick-answers/images/search_community.gif and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting.md b/docs/ko/quick-answers/troubleshooting.md deleted file mode 100644 index aad87cef0..000000000 --- a/docs/ko/quick-answers/troubleshooting.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: 문제 해결 가이드 -pagename: quick-answers-troubleshooting -lang: ko ---- - -문제 해결 가이드 -=== - -문제 해결을 위한 빠른 답변 모음입니다. - -#### 일반적인 문제 해결 도움말 - -- [성능 문제 해결](./troubleshooting/performance-troubleshooting.md) -- [디버그 로깅을 어떻게 켭니까?](./troubleshooting/turn-debug-logging-on.md) -- [원격 디버깅](https://community.shotgridsoftware.com/t/remote-debugging/3869) -- [로그 파일은 어디에 있습니까?](./troubleshooting/where-are-my-log-files.md) -- [툴킷 로그는 어떻게 작동하며 확인해야 할 사항을 어떻게 알 수 있습니까?](https://community.shotgridsoftware.com/t/how-do-the-toolkit-logs-work-and-how-do-i-know-which-one-to-look-at/6721) -- [내 구성은 어디에 있습니까?](https://community.shotgridsoftware.com/t/ive-asked-a-client-for-their-config-but-they-dont-know-where-it-is/6729) -- [메뉴, {% include product %} 데스크톱 또는 AMI에서 로드되지 않거나 누락되는 툴킷 앱을 디버그하는 방법](https://community.shotgridsoftware.com/t/how-to-debug-toolkit-apps-not-loading-showing-up-missing-in-the-menus-shotgun-desktop-or-the-amis/6739) -- [내 컨텍스트에 태스크/단계가 누락되어 있는데 파일 이름의 일부로 존재하는 이유는 무엇입니까?](./troubleshooting/context-missing-task-step.md) -- [폴더의 등록을 해제하는 이유와 방법은 무엇입니까?](https://community.shotgridsoftware.com/t/toolkit-episode-sequence-shot-task/4604) -- [폴더의 등록을 해제하는 대신 사이트에서 FilesystemLocations를 삭제할 수 있습니까?](https://community.shotgridsoftware.com/t/unregistering-folders-in-tank-vs-moving-file-system-locations-to-trash/536) -- [분산 구성을 사용할 때 폴더의 등록을 취소하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config) - -#### 오류 메시지 지침 -- [`ASCII` 코덱이 위치 10의 바이트 0x97을 디코딩할 수 없음: 서수가 범위에 없음](/troubleshooting/ascii-error-message.md) -- [구성이 디스크의 유효한 번들을 가리키지 않습니다!](./troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md) -- ["MTsetToggleMenuItem" 프로시저를 찾을 수 없음](/troubleshooting/mtsettogglemenuitem-error-message.md) -- [경로에 대한 행 ID를 확인할 수 없습니다!](./troubleshooting/row-id-error-message.md) -- [data_handler_cache 오류 메시지: 오류 sgtk.env.project.tk-nuke.tk-multi-workfiles2에서 파일 열기(File Open) 대화상자를 만들지 못했습니다!](./troubleshooting/data-handler-cache-error-message.md) -- [데이터베이스 동시성 문제: `` 경로가 {% include product %} 엔티티 ``와 이미 연결되어 있습니다](./troubleshooting/path-associated-error-message.md) -- [오류: App Store에 my-app이라는 항목이 포함되어 있지 않음](/troubleshooting/myapp-appstore-error-message.md) -- [[오류] 암호화 핸드쉐이크를 완료하지 않고 통신을 시도함](./troubleshooting/encryption-handshake-error-message.md) -- [error 잘못된 LUT 선택: Gamma2.2](/troubleshooting/invalid-lut-error-message.md) -- [[오류] [프록시] __commands::unreal_engine을 호출하는 동안 오류가 발생함](/troubleshooting/unreal-proxy-error-message.md) -- [[publish_creation 오류] ](/troubleshooting/publish-certificate-fail-error-message.md) -- [오류: {% include product %}tk-maya: 툴킷에서 예외가 발생함](/troubleshooting/tk-maya-exception-error-message.md) -- [오류 18:13:28.365:Hiero(34236): 오류! 태스크 유형](/troubleshooting/hiero-task-type-error-message.md) -- [예외: 리뷰 제출에 실패했습니다. 리뷰 관련 시퀀스를 렌더링하고 제출할 수 없습니다.](./troubleshooting/review-submission-error-message.md) -- [너무 긴 Windows 경로(256자 초과)로 인한 오류](/troubleshooting/paths-long-error-message.md) -- [작업 영역 변경 실패 - MEL 스크립트를 실행하는 동안 오류가 발생함](/troubleshooting/error-during-execution-mel-script.md) -- [폴더 작성 실패: 폴더를 작성하지 못함](/troubleshooting/folder-creation-aborded.md) -- [프레임 서버에 오류가 발생함](./troubleshooting/frame-server-error.md) -- [ModuleNotFoundError](/troubleshooting/modulenotfounderror-error.md) -- [Maya에서 context.task를 출력하면 비어 있음("None")](/troubleshooting/maya-context-task-empty-none-error.md) -- [Python API에서 SSL: CERTIFICATE_VERIFY_FAILED 문제 수정](./troubleshooting/fix-ssl-certificate-verify-failed.md) -- [로컬 {% include product %} 사이트에서 {% include product %} 데스크톱을 사용할 때 CERTIFICATE_VERIFY_FAILED 오류 발생](/troubleshooting/certificate-fail-local-error-message.md) -- [SSLError: [Errno 8] _ssl.c:504: 프로토콜을 위반하여 EOF 발생](/troubleshooting/eof-occurred-violation-protocol-tls.md) -- [[SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패: 로컬 발급자 인증서를 가져올 수 없음](/troubleshooting/unable-to-get-local-issuer-certificate-error.md) -- [TankInitError: 툴킷이 있는 파이프라인 구성에서 툴킷 플랫폼을 로드하는 중입니다.](/troubleshooting/tankinit-error-pipeline-config-location.md) -- [TankError: 컨텍스트에 대한 템플릿 데이터를 확인할 수 없습니다.](/troubleshooting/tankerror-cannot-resolve-template-data-error.md) -- [TankError: 템플릿에서 경로를 확인하려고 시도했습니다.](/troubleshooting/tankerror-tried-to-resolve-a-path.md) -- [Tk-desktop console 콘솔에서 자동으로 오류 무시](/troubleshooting/tk-desktop-console-silently-ignoring-errors.md) -- [SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패(_ssl.c:727)](/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md) -- [TankError: 디스크에 폴더를 만들 수 없습니다. 오류 보고: 중요! 폴더 데이터로 {% include product %}를 업데이트할 수 없습니다.](./troubleshooting/could-not-update-with-folder-data.md) -- [[경고] 기본 루트 저장소를 SG 로컬 저장소에 매핑할 수 없습니다.](/troubleshooting/storage-root-primary-error-message.md) - - -#### 소프트웨어 통합 -- [프로젝트 간에 파이프라인 구성을 공유/업데이트하는 권장 방법](https://community.shotgridsoftware.com/t/recommended-way-to-share-update-pipeline-configurations-between-projects/5609) -- [집에서 작업하는 사용자를 위해 파이프라인 구성을 배포하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/distributing-your-pipeline-configuration-to-users-working-from-home/7910) -- [일부 사용자를 위해 중앙 집중식 구성을 분산 구성으로 전환하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/turning-a-centralized-config-into-a-distributed-config-for-some-users/7744) -- [Windows에서 Qt ui 및 리소스 파일을 컴파일하는 방법](https://community.shotgridsoftware.com/t/how-to-compile-qt-ui-and-resource-files-on-windows/7099) -- [{% include product %} UI에서 툴킷 컨텍스트 메뉴 항목을 추가하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/toolkit-context-menu-items/8426) -- [Houdini {% include product %} 통합이 시작되지 않는 이유는 무엇일까요?](./troubleshooting/houdini-integrations-not-starting.md) -- [Shotgun 데스크톱에서 Nuke/Maya 등을 실행했는데 {% include product %} 데스크톱에서 Nuke/Maya 등을 실행했는데 {% include product %} 메뉴에 해당 항목이 없습니다](./troubleshooting/menu-entries-missing-in-launched-dcc.md) -- [NUKE_PATH 환경 변수를 설정하면 Nuke 통합이 시작되지 않는 이유가 무엇입니까?](./troubleshooting/nuke-path-environment-variable.md) -- [두 개의 익스텐션이 설치된 경우 Photoshop 통합 문제 해결](./troubleshooting/two-photoshop-shotgun-extensions.md) -- [{% include product %} 툴킷 사용 시 3ds Max를 시작하면 충돌 오류가 발생하는 이유는 무엇입니까?](./troubleshooting/3dsmax-crashes-on-startup.md) -- [기본 소프트웨어 버전을 설정하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/setting-a-default-software-version/1116) -- [Loader 앱에 Alembic 게시가 표시되지 않는 이유는 무엇입니까?](https://community.shotgridsoftware.com/t/why-is-the-loader-app-not-showing-my-alembic-publishes/906) -- [툴킷 부트스트랩이 있을 때 올바른 PipelineConfiguration 엔티티를 결정하는 데 사용되는 순서는 무엇입니까?](https://community.shotgridsoftware.com/t/when-toolkit-bootstraps-what-order-is-used-to-determine-the-correct-pipelineconfiguration-entity/7400) -- [Photoshop에서 두 개의 서로 다른 SG 패널을 사용하는 이유는 무엇입니까?](https://community.shotgridsoftware.com/t/why-do-i-get-two-different-sg-panels-in-photoshop/6976) -- [Photoshop 통합 패널이 로드되는 동안 중단됩니다. "문제가 발생했습니다."](https://community.shotgridsoftware.com/t/photoshop-integration-panel-is-stuck-loading-some-thing-went-wrong/6977) -- [데스크톱에 소프트웨어 엔티티가 누락되었습니다. 이 문제를 해결하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/shotgun-deskop-missing-software-entities-help/858) -- [Tank.template_from_path()가 여러 템플릿을 반환할 수 없습니다.](https://community.shotgridsoftware.com/t/tank-template-from-path-cant-return-multiple-templates/614) -- [아티스트를 위한 작업 파일로 일련의 샷(전체 시퀀스)을 절차적으로 채우는 방법은 무엇입니까?](https://community.shotgridsoftware.com/t/create-first-maya-workfile/3029) -- [사용자가 tk-maya를 시작할 때 userSetup.py를 어떻게 제어할 수 있습니까?](https://community.shotgridsoftware.com/t/maya-usersetup-py/3993) -- [개발 구성을 위한 Tank 명령](https://community.shotgridsoftware.com/t/tank-command-for-dev-config/3373) -- [아티스트가 기존 작업 파일을 여는 것이 아니라 기존 게시를 여는 경우에만 액션을 취하려고 합니다. 후크를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/open-from-publish-in-tk-multi-workfiles2-scene-operation-hooks/352) -- [폴더 작성 중에 엔티티 이름의 공백을 하이픈이 아닌 밑줄로 변환하려면 어떻게 해야 합니까?](https://community.shotgridsoftware.com/t/how-do-i-convert-white-spaces-in-entity-names-to-underscores-and-not-hyphens-during-folder-creation/48) - -#### 브라우저 통합 -- [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) - -#### 답변을 찾을 수 없습니까? -추가 문제 해결을 위해 [커뮤니티를 검색](https://community.shotgridsoftware.com)하여 답변을 얻을 수 있습니다. - -![커뮤니티](images/search_community.gif) diff --git a/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md deleted file mode 100644 index 1495253ef..000000000 --- a/docs/ko/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: ShotGrid 툴킷 사용 시 3ds Max를 시작하면 충돌 오류가 발생하는 이유는 무엇입니까? -pagename: 3dsmax-crashes-on-startup -lang: ko ---- - -# {% include product %} 툴킷 사용 시 3ds Max를 시작하면 충돌 오류가 발생하는 이유는 무엇입니까? - -{% include product %} 데스크톱이나 {% include product %} 웹 사이트에서 3ds Max를 실행하면 하얀색 대화상자가 움직이지 않는 상태로 3ds Max가 멈추거나 다음 메시지가 나타날 수 있습니다. - - Microsoft Visual C++ Runtime Library (Not Responding) - Runtime Error! - Program: C:\Program Files\Autodesk\3ds Max 2016\3dsmax.exe - R6034 - 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 버전과 충돌하기 때문입니다.  - -## 솔루션 - -먼저, 파이프라인 구성의 `config/hooks` 폴더로 이동하여 `before_app_launch.py` 파일을 생성합니다. 이 파일에서 다음을 붙여 넣습니다. - -```python - -""" -Before App Launch Hook -This hook is executed prior to application launch and is useful if you need -to set environment variables or run scripts as part of the app initialization. -""" -import os -import tank - -class BeforeAppLaunch(tank.get_hook_baseclass()): - """ - Hook to set up the system prior to app launch. - """ - def execute(self, **kwargs): - """ - The execute functon of the hook will be called to start the required application - """ - env_path = os.environ["PATH"] - paths = env_path.split(os.path.pathsep) - # Remove folders which have msvcr90.dll from the PATH - paths = [path for path in paths if "msvcr90.dll" not in map( - str.lower, os.listdir(path)) - ] - env_path = os.path.pathsep.join(paths) - os.environ["PATH"] = env_path -``` - -이제 파일을 저장합니다. - -그런 다음, 파이프라인 구성에서 `config/env/includes/app_launchers.yml`을 열고 `launch_3dsmax` 항목을 찾습니다. `hook_before_app_launch: default`를 `hook_before_app_launch: '{config}/before_app_launch.py'`로 바꿔야 합니다. - -이제 {% include product %} 및 {% include product %} 데스크톱에서 3ds Max가 올바로 실행될 것입니다. 그래도 문제가 발생하면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. diff --git a/docs/ko/quick-answers/troubleshooting/ascii-error-message.md b/docs/ko/quick-answers/troubleshooting/ascii-error-message.md deleted file mode 100644 index ffaf4fb90..000000000 --- a/docs/ko/quick-answers/troubleshooting/ascii-error-message.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ascii 코덱이 위치 10의 바이트 0x97을 디코딩할 수 없음 -pagename: ascii-error-message -lang: ko ---- - -# ASCII 코덱이 위치 10의 바이트 0x97을 디코딩할 수 없음: 서수가 범위에 없음 - -## 관련 오류 메시지: - -구성을 복제하는 동안 -- TankError: `ascii` 파일 시스템 구조를 만들 수 없음! 코덱이 위치 10의 바이트 0x97을 디코딩할 수 없음: 서수가 범위(128)에 없음 - -다른 프로젝트를 사용하여 프로젝트 구성을 설정하는 동안 -- "‘ascii’ 코덱이 위치 10의 바이트 0x97을 디코딩할 수 없음: 서수가 범위(128)에 없음" - -## 해결 방법: - -일반적으로 "config" 폴더에 유니코드/특수 문자가 있는 경우 이 오류가 표시됩니다. 특수 문자를 찾을 수 있는지 확인하는 것이 좋습니다. - -## 이 오류가 발생하는 원인의 예: - -이 경우 오류는 Windows에서 파일 이름 끝에 `–` 접미어를 추가하여 발생했습니다. 해당 파일을 모두 제거한 후 작업이 시작되었습니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/ascii-problem/7688)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md b/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md deleted file mode 100644 index ec9c8f6de..000000000 --- a/docs/ko/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: default -title: ShotGrid 데스크톱/브라우저 통합을 Linux에서 실행할 수 없습니다 -pagename: browser-integration-fails-linux -lang: ko ---- - -# {% include product %} 데스크톱/브라우저 통합을 Linux에서 실행할 수 없습니다 - -Linux에서 {% include product %} 데스크톱을 처음 실행하면 다음 오류 메시지 중 하나가 나타날 수 있습니다. 그러면 해당 오류에 대해 아래 단계를 수행하여 오류가 해결되는지 확인해 보십시오. -여전히 해결되지 않으면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -## 목차 -- [OPENSSL_1.0.1_EC 또는 HTTPSConnection 관련 문제](#openssl_101_ec-or-httpsconnection-related-issues) -- [libffi.so.5 관련 문제](#libffiso5-related-issues) -- [인증서 유효성 확인 실패 관련 문제](#certificate-validation-failed-related-issues) -- [호환되지 않는 Qt 버전](#incompatible-qt-versions) - -## OPENSSL_1.0.1_EC 또는 HTTPSConnection 관련 문제 - -**오류** - -``` -importing '/opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so': - /opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so: symbol ECDSA_OpenSSL, version OPENSSL_1.0.1_EC not defined in file libcrypto.so.10 with link time reference -AttributeError: 'module' object has no attribute 'HTTPSConnection' -``` - -**솔루션** - -OpenSSL을 설치해야 합니다. 설치하려면 다음 명령을 관리자 권한으로 실행합니다. - -``` -$ yum install openssl -``` - -## libffi.so.5 관련 문제 - -**오류** - -``` -Browser Integration failed to start. It will not be available if you continue. -libffi.so.5: cannot open shared object file: No such file or directory -``` - -**솔루션** - -libffi를 설치해야 합니다. 설치하려면 다음 명령을 관리자 권한으로 실행합니다. - -``` -yum install libffi -``` - -libffi를 설치했는데도 여전히 작동하지 않으면 다음 symlink를 생성한 후 {% include product %} 데스크톱을 다시 실행해 보십시오. - -``` -sudo ln -s /usr/lib64/libffi.so.6.0.1 /usr/lib64/libffi.so.5 -``` - -위 방법으로 성공한 사용자들도 있고, 그렇지 못한 사용자들도 있습니다. 최신 버전 {% include product %} 데스크톱에는 웹 소켓 서버에 대한 종속성이 일부 추가되었습니다. 현재 Shotgun 팀에서 해당 내용을 살펴보고 있습니다. - -## 인증서 유효성 확인 실패 관련 문제 - -**가능한 오류** - -``` -Browser Integration failed to start. It will not be available if you continue. -Error: There was a problem validating if the certificate was installed. -certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database. -``` - -**솔루션** - -컴퓨터에 Google Chrome이 설치되어 있다면 이를 실행한 다음 {% include product %} 데스크톱을 다시 실행합니다. 그래도 문제가 발생하면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -Chrome이 없으면 터미널을 열고 다음 명령을 실행합니다. - -``` -ls -al $HOME/.pki/nssdb -``` - -해당 폴더가 검색되면 지원 팀에 문의하고, 다음 로그 파일의 내용을 지원 요청 티켓에 첨부해 주십시오. - -``` -~/.shotgun/logs/tk-desktop.log -``` - -폴더가 검색되지 않으면 다음을 입력합니다. - -``` -$ mkdir --parents ~/.pki/nssdb -$ certutil -N -d "sql:$HOME/.pki/nssdb" -``` - -암호를 입력하지 마십시오. - -{% include product %} 데스크톱을 실행하면 이제 올바로 작동할 것입니다. - -## 호환되지 않는 Qt 버전 - -**가능한 오류** - -호환되지 않는 Qt 라이브러리(버전 `0x40805`)를 이 라이브러리(버전 `0x40807`)와 혼합할 수 없음 - -**솔루션** - -이 오류는 대개 재정의가 발생하면서 호환되지 않는 Qt 라이브러리를 로딩하게 됨에 따라 발생합니다. -이 오류가 발생하지 않도록 하려면 다음 명령으로 환경을 수정해 보십시오. - -``` -unset QT_PLUGIN_PATH -``` 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 deleted file mode 100644 index a432d3f2c..000000000 --- a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: default -title: Chrome에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다 -pagename: cant-use-file-linking-toolkit-app-chrome -lang: ko ---- - -# Chrome에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다 - -## 개요 - -간혹 {% include product %}의 액션 메뉴에 사용 가능한 툴킷 응용프로그램 목록이 표시되지 않거나, {% include product %} 데스크톱이 실행 중인데도 로컬 파일 링크를 사용하면 오류가 발생할 수 있습니다. 이 문서는 Chrome에서 {% include product %} 데스크톱의 브라우저 통합 문제를 해결하고, 원하는 기능들이 제대로 작동하도록 지원하는 안내서입니다. [Firefox](./cant-use-file-linking-toolkit-app-firefox.md)의 경우 별도의 안내서가 있습니다. - -- [문제 진단](#diagnosing-the-issue) -- [인증서 문제를 빠르게 해결하는 방법](#how-to-quickly-fix-certificate-issues) -- [모든 플랫폼에서 ERR_CERT_COMMON_NAME_INVALID 또는 ERR_SSL_SERVER_CERT_BAD_FORMAT 해결](fixing-neterr_cert_common_name_invalid-and-err_ssl_server_cert_bad_format-on-all-platforms) -- [Windows에서 ERR_CERT_AUTHORITY_INVALID 해결](#fixing-neterr_cert_authority_invalid-on-windows) - -## 문제 진단 - -### {% include product %} 데스크톱이 실행 중입니까? - -예, 알고 있습니다. 이미 확인하셨을 것이라 생각했지만 다시 한번 확인했습니다. :) - -### {% include product %} 데스크톱을 시작한 후에 Chrome을 다시 시작했습니까? - -{% include product %} 데스크톱이 인증서를 등록({% include product %} 데스크톱을 처음 실행할 때에만 등록하면 되고, 이후부터는 문제 없음)하기 전에 Chrome을 실행했다면 Chrome이 오래된 인증서 사본을 사용하면서 {% include product %} 데스크톱 연결을 거부합니다. 모든 탭을 닫는다고 해서 Chrome까지 닫히는 것은 아니므로 주소 표시줄에 [chrome://restart](chrome://restart/)를 입력하고 Enter 키를 누르는 것이 좋습니다. 이렇게 하면 모든 Chrome 관련 프로세스가 종료되고, Chrome이 다시 시작됩니다. - -### 방화벽 소프트웨어를 사용 중입니까? - -방화벽 소프트웨어가 localhost 또는 포트 9000 접속을 차단 중이지 않은지 확인하십시오. - -### Chrome이 인증서를 거부합니까? - -https://localhost:9000으로 이동하여 Chrome이 인증서를 수락하는지 확인할 수 있습니다. 이 주소는 {% include product %} 웹 사이트가 로컬 파일 링크를 수행하고 툴킷 응용프로그램을 실행하기 위해 액세스하는 주소입니다. 보통 다음 메시지가 나타나야 합니다. - -![Autobahn Python 메시지](images/autobahn-python.png) - -이와 달리 다음 메시지 중 하나가 표시된다면 인증서 등록 프로세스에 문제가 발생했다는 의미입니다. - -![연결이 비공개가 아님 메시지](images/your-connection-is-not-private-chrome.png) - -![보안 연결을 제공할 수 없음 메시지](images/cant-provide-sceure-connection-chrome.png) - -## 인증서 문제를 빠르게 해결하는 방법 - -이 문제를 방지하는 가장 쉬운 방법은 **고급(ADVANCED)**, **localhost로 진행(Proceed to localhost)**(안전하지 않음)을 클릭하는 것입니다. 이렇게 하면 Chrome에서 여러분이 인증서를 수락하려고 한다는 것을 인식하고, {% include product %} 웹 사이트가 {% include product %} 데스크톱과 통신하도록 허용합니다. - -{% include info title="참고" content="웹 브라우저와 ShotGrid 데스크톱 간에 연결이 이루어지도록 할 수 있는 방법은 이것뿐입니다. 신뢰 설정은 두 응용프로그램 간 트래픽 흐름을 가능하도록 할 뿐, **인터넷 상의 다른 모든 서버에 대한 신뢰를 의미하는 것은 아닙니다**. 아쉽게도 이 프로세스는 문제가 있는 모든 컴퓨터마다 반복해야 합니다. 이렇게 해도 문제가 해결되지 않거나 모든 사용자들에게 알려주기에는 너무 복잡한 방법이라고 생각되는 경우 다음 단계를 살펴보시기 바랍니다." %} - -{% include info title="참고" content="이 단계 해결 방법은 **ERR_SSL_SERVER_CERT_BAD_FORMAT** 오류에는 적용되지 않으며, 아래 설명에 따라 인증서를 다시 생성해야 합니다." %} - -## 모든 플랫폼에서 NET::ERR_CERT_COMMON_NAME_INVALID 및 ERR_SSL_SERVER_CERT_BAD_FORMAT 해결 - -Chrome은 자체 서명 인증서에 관한 보안을 정기적으로 업그레이드하며, 이 업데이트로 인해 종종 브라우저 통합이 끊어집니다. 불행히도 이런 종류의 문제는 인증서의 certificate_path를 다시 생성하는 방법으로만 해결할 수 있습니다. - -인증서를 다시 생성하려면 {% include product %} 데스크톱의 사용자 메뉴에 있는 **고급(Advanced)** 섹션에서 **인증서 재생성(Regenerate Certificates)** 옵션을 선택해야 합니다. (이 옵션이 보이지 않으면 `tk-desktop` 엔진을 업데이트하여 잠금 해제합니다.) - -인증서 재생성을 확인하고 나면 인증서를 처음 생성했을 때처럼 일련의 대화상자가 나타납니다. Windows 및 macOS에서는 Windows 인증서 저장소 또는 macOS 키체인을 업데이트하라는 메시지가 두 번 나타납니다. 한 번은 이전 인증서를 제거하라는 메시지가 나타나고, 새 인증서를 등록하라는 메시지가 한 번 더 나타납니다. Linux에서는 등록이 자동으로 이루어집니다. 등록이 끝나면 {% include product %} 데스크톱을 다시 시작합니다. - -{% include product %} 데스크톱이 다시 시작되어 실행되면 주소 표시줄에 [chrome://restart](chrome://restart/)를 입력해 Chrome을 다시 시작함으로써 Chrome이 완전히 종료되고 인증서 캐시가 지워지도록 하는 것이 좋습니다. - -컴퓨터가 인터넷에 연결되어 있지 않아 업데이트를 다운로드할 수 없는 경우 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -## Windows에서 NET::ERR_CERT_AUTHORITY_INVALID 해결 - -경우에 따라 Windows가 인증서를 성공적으로 가져왔다고 보고하는데 인증서가 필요한 응용프로그램에 이를 사용할 수 없을 때가 있습니다. 이는 Windows에서 인증서 대화상자로 이동하여 확인할 수 있습니다. 대화상자에 액세스하려면 Windows 키를 누르고 **인터넷 옵션**을 입력합니다. **인터넷 속성** 대화상자에서 **내용** 탭으로 이동한 다음 **인증서** 버튼을 클릭합니다. 마지막으로 **신뢰할 수 있는 루트 인증 기관**을 클릭하고 **localhost**를 찾습니다. - -![Windows에서 인터넷 옵션 검색](images/windows-search-internet-options.png) - -![인터넷 속성의 내용 탭](images/windows-internet-properties.png) - -![Windows 인증서](images/windows-certificates.png) - -해당 항목이 없으면 Windows 도메인 또는 로컬 컴퓨터에 그룹 정책 문제가 있다는 의미일 수 있습니다. 이 문제가 있으면 [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에 문의하는 것이 좋습니다. - -이 경우, 조직의 Windows 컴퓨터 관리자에게 연락하여 Windows로 하여금 자체 서명 인증서를 신뢰하지 않도록 지시하는 그룹 정책이 설정되어 있지 않은지 문의해 보십시오. - -## 그룹 정책 문제 조사 - -컴퓨터가 도메인에 존재한다면 관리자는 [이 StackExchange 게시글](https://superuser.com/questions/145394/windows-7-will-not-install-a-root-certificate/642812#642812)에 나와 있는 단계대로 수행하면 됩니다. - -컴퓨터가 도메인에 존재하는 것이 아니라면 컴퓨터가 관리자에 의해 여전히 잠겨 있을 가능성이 있습니다. 다음 단계를 수행하려면 Windows 관리자 계정이 필요합니다. - -Windows 키를 클릭하고 **mmc**를 입력한 다음 Enter 키를 누릅니다. 그러면 **Microsoft 관리 콘솔**이 실행됩니다. 이 응용프로그램에서 **파일 메뉴**를 클릭하고 **스냅인 추가/제거**를 선택합니다. 그러면 **스냅인 추가/제거** 대화상자가 나타납니다. 왼쪽에서 **그룹 정책 개체 편집기**를 찾아 **추가 >**를 클릭합니다. 새 대화상자가 나타나면 **마침**을 클릭해 무시하면 됩니다. 끝으로 **스냅인 추가/제거** 대화상자에서 **확인**을 클릭합니다. - -![Microsoft 관리 콘솔 스냅인 추가/제거](images/microsoft-management-console.png) - -마지막으로 메인 대화상자 왼쪽에서 **로컬 컴퓨터 정책/컴퓨터 구성/Windows 설정/보안 설정/공개 키 정책**으로 이동합니다. 가운데 패널에서 **인증서 경로 유효성 검사 설정**을 선택한 다음 두 번 클릭합니다. - -![인증서 경로 유효성 검사 설정](images/certificate-path-valiation-settings.png) - -다음 대화상자에서 **이 정책 설정 정의**가 선택 해제되어 있는지 확인합니다. 선택되어 있으면 **사용자의 신뢰할 수 있는 루트 CA를 사용하여 인증서를 확인하도록 허용(권장)**이 선택되어 있는지 확인합니다. 마치면 **확인**을 클릭하여 설정을 저장합니다. - -이때 모든 Chrome 창을 닫고 Chrome을 다시 시작해야 합니다. 위에서처럼 [chrome://restart](chrome://restart)를 사용하여 다시 시작하는 것이 좋습니다. 이렇게 해야 변경 사항이 제대로 적용됩니다. 이제 인증서 목록을 찾으면 **localhost** 인증서가 보여야 합니다. - -이렇게 변경한 후에도 브라우저 통합을 사용할 때 문제가 계속 발생하거나 첫 번째 단계에서 설정이 올바르게 되어 있다면 [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에 문의하시기 바랍니다. - -## 다른 OS에서 문제 해결 - -다른 OS에서 {% include product %} 데스크톱 통합과 관련한 문제가 발생하면 [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에 연락해 도움을 받고, 이 게시글도 업데이트하도록 해 주십시오. \ No newline at end of file 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 deleted file mode 100644 index a740cf6f5..000000000 --- a/docs/ko/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: default -title: Firefox에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다. -pagename: cant-use-file-linking-toolkit-app-firefox -lang: ko ---- - -# Firefox에서 로컬 파일 링크를 사용할 수 없으며, 툴킷 응용프로그램도 실행할 수 없습니다. - -## 개요 - -간혹 {% include product %}의 액션 메뉴에 사용 가능한 툴킷 응용프로그램 목록이 표시되지 않거나, {% include product %} 데스크톱이 실행 중인데도 로컬 파일 링크를 사용하면 오류가 발생할 수 있습니다. 이 문서는 Firefox에서 {% include product %} 데스크톱의 브라우저 통합 문제를 해결하고, 원하는 기능들이 제대로 작동하도록 하는 데 도움을 주기 위한 안내서입니다. [Chrome](./cant-use-file-linking-toolkit-app-chrome.md)의 경우 별도의 안내서가 있습니다. - -## 문제 진단 - -### {% include product %} 데스크톱이 실행 중입니까? - -예, 알고 있습니다. 이미 확인하셨을 것이라 생각했지만 다시 한번 확인했습니다. :) - -### 방화벽 소프트웨어를 사용 중입니까? - -방화벽 소프트웨어가 **localhost** 또는 포트 **9000** 접속을 차단 중이지 않은지 확인하십시오. - -### Firefox가 인증서를 거부합니까? - -https://localhost:9000으로 이동하여 Firefox가 인증서를 수락하는지 확인할 수 있습니다. 이 주소는 {% include product %} 웹 사이트가 로컬 파일 링크를 수행하고 툴킷 응용프로그램을 실행하기 위해 액세스하려고 시도하는 주소입니다. 보통 다음 메시지가 나타나야 합니다. - -![Autobahn Python 메시지](images/autobahn-python.png) - -이와 달리 다음 두 메시지 중 하나가 표시된다면 인증서 등록 프로세스에 문제가 발생했다는 의미입니다. - -![연결이 안전하지 않음 메시지](images/connection-is-not-secure.png) - -![보안 연결 실패 메시지](images/connection-failed.png) - -## "연결이 안전하지 않음" 문제를 해결하는 방법 - -인증서가 수락되도록 Firefox 브라우저에 예외를 추가해야 합니다. **https://localhost:9000**을 막 방문한 경우라면 예외를 추가하는 가장 쉬운 방법은 **고급(Advanced)**을 클릭하고 **예외 추가(Add Exception)** 버튼을 클릭하는 것입니다. 대화상자가 나타납니다. - -![Firefox에 예외 추가](images/add-exception-firefox.png) - -**인증서 가져오기(Get Certificate)**를 클릭한 다음 **보안 예외 확인(Confirm Security Exception)**을 클릭합니다. 인증서를 신뢰할 수 없다는 메시지는 무시해도 됩니다. 인증서가 인증 기관이 아닌 {% include product %} 데스크톱에 의해 생성된 경우에 보통 발생하는 일입니다. - -이제 {% include product %} 사이트에서 로컬 파일 링크에 액세스하고 툴킷 응용프로그램을 실행할 수 있습니다. 예외를 추가하고도 계속 문제가 발생하면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. - -## "보안 연결 실패" 문제를 해결하는 방법 - -**메뉴 열기(Open Menu)** 버튼을 클릭하고 **기본 설정(Preferences)**을 선택해야 합니다. 그 다음 왼쪽에서 **고급(Advanced)**을 선택하고, **인증서(Certificates)** 그리고 끝으로 **인증서 보기(View Certificates)**를 선택합니다. - -![Firefox 고급 설정](images/firefox-advanced-settings.png) - -![Firefox 인증서 보기](images/firefox-view-certificates.png) - -**서버(Servers)** 섹션에서 아무 항목이나 클릭하고 `localhost`를 입력하거나 그냥 이름이 **localhost:9000**인 항목이 나올 때까지 스크롤합니다. 이를 삭제합니다. 그런 다음, **기관(Authorities)** 탭으로 이동해 `localhost`를 다시 입력합니다. 역시 그 아래 **localhost** 항목이 있는 **Autodesk** 섹션이 나올 때까지 스크롤해도 됩니다. **localhost** 항목을 제거하면 됩니다. 다 마치면 **확인(OK)**을 클릭해 Firefox를 다시 시작합니다. Firefox가 다시 시작되면 **https://localhost:9000**으로 이동합니다. 이제 다음 메시지가 나타나야 합니다. - -![연결이 안전하지 않음 메시지](images/connection-is-not-secure.png) - -이때 위에 설명된 단계에 따라 예외를 추가해야 합니다. - -이 화면이 나와 있지 않으면 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)에서 도움을 요청하십시오. \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/certificate-fail-local-error-message.md b/docs/ko/quick-answers/troubleshooting/certificate-fail-local-error-message.md deleted file mode 100644 index 41148eac3..000000000 --- a/docs/ko/quick-answers/troubleshooting/certificate-fail-local-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: 로컬 {% include product %} 사이트에서 {% include product %} 데스크톱을 사용할 때 CERTIFICATE_VERIFY_FAILED 오류 발생 -pagename: certificate-fail-local-error-message -lang: ko ---- - -# 로컬 {% include product %} 사이트에서 {% include product %} 데스크톱을 사용할 때 CERTIFICATE_VERIFY_FAILED 오류 발생 - -## 활용 사례: - -{% include product %}의 로컬 설치를 사용하는 경우 다음 두 가지 시나리오에서 이 오류가 발생할 수 있습니다. - -- {% include product %} 데스크톱 로그인 시 -- 툴킷 AppStore에서 미디어 다운로드 시 - -## 해결 방법: - -이 문제를 해결하려면 사용자의 CA를 포함하여 유효한 모든 CA 목록이 포함된 파일을 {% include product %} API에 제공해야 합니다. 일반적으로 Python의 `certifi` 패키지에서 [이 파일](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)의 새 사본을 다운로드한 후 파일 끝에 자체 CA를 추가하는 것이 좋습니다. 그런 다음 모든 사용자가 액세스할 수 있는 위치에 해당 파일을 저장합니다. 마지막으로 각 컴퓨터에서 `SHOTGUN_API_CACERTS` 환경 변수를 해당 파일에 대한 전체 경로(예: `/path/to/my/ca/file.pem`)로 설정합니다. - -이렇게 하면 로컬 사이트에서 발생하는 `CERTIFICATE_VERIFY_FAILED` 오류가 모두 해결됩니다. {% include product %} 사이트에 연결할 수는 있지만 툴킷 AppStore에서 업데이트를 다운로드할 수 없는 경우에는 `.pem` 파일에 Amazon CA가 없기 때문에 발생한 문제일 수 있습니다. 이 문제는 일반적으로 위에서 링크한 것과 같은 파일로 시작하지 않고 빈 파일로 시작한 후 커스텀 CA만 추가한 경우에 발생합니다. - -이 정보는 *로컬 설치에만* 적용됩니다. 호스트된 사이트가 있고 이 오류가 발생한다면 Windows의 경우 [이 포럼 게시물](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860)을 살펴보십시오. 다른 OS에서 이 문제가 발생하는 경우 [이 문서](https://developer.shotgridsoftware.com/ko/c593f0aa/)를 살펴보십시오. - -## 이 오류가 발생하는 원인의 예: - -이 문제는 일반적으로 로컬 사이트에서 HTTPS를 사용하도록 구성했지만 로컬 사이트의 인증서에 서명하는 데 사용한 인증 기관(여기서는 CA라고 함)이 인식되도록 툴킷을 구성하지 않은 경우에 발생합니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/getting-certificate-verify-failed-when-using-shotgun-desktop-on-a-local-shotgun-site/10466)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md b/docs/ko/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md deleted file mode 100644 index 68c6deebe..000000000 --- a/docs/ko/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: 구성이 디스크의 유효한 번들을 가리키지 않습니다! -pagename: configurations-does-not-point-to-valid-bundle-on-disk -lang: ko ---- - -# 구성이 디스크의 유효한 번들을 가리키지 않습니다! - -## 활용 사례 - -{% include product %} 데스크톱을 처음 설치할 때 프로젝트를 연 후 파일 경로 뒤에 이 오류가 표시될 수 있습니다. - -## 해결 방법 - -프로젝트의 파이프라인 구성 엔티티는 Windows의 구성에 대한 `...\{% include product %}\Configurations` 경로를 가리킵니다. 이는 올바른 경로가 아닐 수 있으므로 첫 단계에서 경로가 존재하는지 확인하거나 경로를 수정하십시오. - -또는 해당 경로 위치에 대한 액세스 권한이 없는 중앙 집중식 설정에서 액세스하려고 하는 것일 수도 있습니다. 이 경우 분산 설정으로 전환하면 도움이 됩니다. - - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md b/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md deleted file mode 100644 index 906d3407e..000000000 --- a/docs/ko/quick-answers/troubleshooting/context-missing-task-step.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: 내 컨텍스트에 태스크/단계가 누락되어 있는데 파일 이름의 일부로 존재하는 이유는 무엇입니까? -pagename: context-missing-task-step -lang: ko ---- - -# 내 컨텍스트에 태스크/단계가 누락되어 있는데 파일 이름의 일부로 존재하는 이유는 무엇입니까? - -툴킷을 통해 폴더를 생성하면 조회를 수행할 수 있도록 엔티티에 대해 [경로를 등록](../administering/what-is-path-cache.md)합니다. 즉, 경로가 지정되고 올바른 컨텍스트를 결정할 수 있습니다. -툴킷은 스키마에서 생성된 폴더에 대해서만 레지스트리를 생성하므로 `templates.yml` 파일에 단독으로 정의된 파일 이름이나 폴더 등은 고려하지 않습니다. -스키마에 `Task` 폴더가 없는 경우에는 툴킷이 파일의 태스크를 알고 있어야 하지만 경로만으로는 태스크를 알 수가 없는 상황에 빠질 수 있습니다. - -**예시** - -아래의 기본 스키마 구조 사용 시 폴더 생성 프로세스 중에 `Asset` 및 `Step` 폴더가 등록됩니다. - -![기본 에셋 스키마](./images/asset-schema.png) - -다음과 같은 템플릿을 사용하여 파일 경로를 생성하고 - - assets/{sg_asset_type}/{Asset}/{Step}/work/maya/{task_name}_{name}.v{version}.{maya_extension}` - -경로를 생성한 컨텍스트를 찾으려고 시도하면 `Asset` 및 `Step`만 설정할 수 있으며 파일 경로에 태스크 이름이 있어도 `Task`는 설정할 수 **없습니다**. - -**솔루션** - -스키마에 `Step` 폴더는 있고 `Task` 폴더는 없는 것이 대부분의 워크플로우에서 좋습니다. 일반적으로는 Workfiles 앱을 사용하여 작업할 태스크를 선택한 후 파일을 선택하여 씬 파일을 엽니다. 그런 다음 열린 파일의 경로에서 찾지 않고 UI에서 선택한 태스크를 사용하여 컨텍스트를 유도합니다. - -그러나 다음과 같은 상황에서는 경로에서 컨텍스트를 가져오는 것이 중요할 수 있습니다. - -- 자동 컨텍스트 전환 기능을 사용하는 경우, 이 기능은 툴킷이 사용자가 소프트웨어의 기본 열기 대화상자에서 파일을 여는지 탐지하고(Workfiles 앱을 사용하지 않고) 현재 컨텍스트를 적절하게 전환할 수 있도록 해줍니다. -- 지정된 파일에 대한 컨텍스트를 찾아야 하는 독립 실행형 프로세스에서 API를 사용하는 경우 - -이러한 상황을 해결할 수 있는 솔루션은 스키마에 `Task` 폴더를 추가하거나 자동 컨텍스트 전환을 사용하지 않는 것입니다. 또는 API 스크립트 사용 시에는 프로세스에 이미 필요한 컨텍스트 정보가 있는지 확인하면 이 조회를 수행할 필요가 없습니다. \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/could-not-update-with-folder-data.md b/docs/ko/quick-answers/troubleshooting/could-not-update-with-folder-data.md deleted file mode 100644 index bc54136d0..000000000 --- a/docs/ko/quick-answers/troubleshooting/could-not-update-with-folder-data.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: 중요! 폴더 데이터로 ShotGrid를 업데이트할 수 없습니다. -pagename: could-not-update-with-folder-data -lang: ko ---- - -# TankError: 디스크에 폴더를 만들 수 없습니다. 오류 보고: 중요! 폴더 데이터로 {% include product %}를 업데이트할 수 없습니다. - -## 활용 사례 - -중앙 집중식 구성을 사용하고 있으며 기존 프로젝트에 대한 Linux 지원을 추가하고 있지만 파일 시스템 구성에 문제가 있습니다. - -다음 작업을 완료했습니다. - -- roots.yml에 해당 루트 추가 -- 파이프라인 구성, install_location.yml 등에 linux 경로 추가 -- 소프트웨어 엔티티에 대한 linux 경로 추가 - -이제 {% include product %} 데스크톱이 성공적으로 시작되지만 프로그램을 시작하려고 하면 다음 오류가 발생합니다. - -``` -TankError: Could not create folders on disk. Error reported: Critical! Could not update Shotgun with folder data. Please contact support. Error details: API batch() request with index 0 failed. All requests rolled back. -API create() CRUD ERROR #6: Create failed for [Attachment]: Path /mnt/cache/btltest3 doesn't match any defined Local Storage. -``` - -마찬가지로 tank 폴더 및 기타 명령을 실행하려고 하면 동일한 오류가 출력됩니다. - -필요한 모든 곳에 linux 경로를 추가한 것으로 생각됩니다. 데이터베이스 동기화와 관련이 있을까요? - -특히 `tank synchronize_folders`가 출력됩니다. - -- 이 경로는 {% include product %} 개체와 관련이 없습니다. - -## 해결 방법 - -사이트 기본 설정(Site Preferences) > 파일 관리(File Management)에서 Linux 경로를 {% include product %}의 로컬 저장소에 추가합니다. - - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/data-handler-cache-error-message.md b/docs/ko/quick-answers/troubleshooting/data-handler-cache-error-message.md deleted file mode 100644 index 86c3ef863..000000000 --- a/docs/ko/quick-answers/troubleshooting/data-handler-cache-error-message.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: sgtk.env.project.tk-nuke.tk-multi-workfiles2에서 파일 열기(File Open) 대화상자를 만들지 못했습니다! -pagename: data-handler-cache-error-message -lang: ko ---- - -# data_handler_cache 오류 메시지: 오류 sgtk.env.project.tk-nuke.tk-multi-workfiles2 파일 열기(File Open) 대화상자를 만들지 못했습니다! - -## 활용 사례: - -Nuke와 같은 앱을 시작하면 `tk-multi-workfiles2` 파일 열기(File Open) 대화상자가 실패하고 `data_handler_cache`의 `get_children` 메서드에 대한 스택 트래킹 마지막에 오류가 발생합니다. dict가 필요한데 문자열 값이 전달되어 반복하지 못하는 상태가 발생합니다. - -전체 스택은 다음과 같습니다. - -``` -2020-12-07 09:42:03,571 [7192 ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2] Failed to create File Open dialog! -Traceback (most recent call last): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\work_files.py", line 115, in _show_file_dlg - self._dialog_launcher(dlg_name, app, form) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1822, in show_dialog - dialog, widget = self._create_dialog_with_widget(title, bundle, widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1684, in _create_dialog_with_widget - widget = self._create_widget(widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1658, in _create_widget - widget = derived_widget_class(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_open_form.py", line 46, in __init__ - FileFormBase.__init__(self, parent) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 64, in __init__ - self._my_tasks_model = self._build_my_tasks_model() - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 134, in _build_my_tasks_model - bg_task_manager=self._bg_task_manager) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\my_tasks\my_tasks_model.py", line 57, in __init__ - bg_task_manager=bg_task_manager - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\entity_models\extended_model.py", line 74, in __init__ - **kwargs - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_entity_model.py", line 70, in __init__ - self._load_data(entity_type, filters, hierarchy, fields) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_model.py", line 367, in _load_data - self._create_item - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler.py", line 266, in generate_child_nodes - for data_item in self._cache.get_children(unique_id): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler_cache.py", line 129, in get_children - for item in cache_node[self.CACHE_CHILDREN].itervalues(): -AttributeError: 'str' object has no attribute 'itervalues' -``` - -## 오류의 원인은 무엇입니까? - -캐싱에 문제가 있습니다. 캐시를 제거하면 수정할 수 있습니다(다음 섹션 참조). - -## 해결 방법 - -[이 지침](https://developer.shotgridsoftware.com/ko/7c9867c0/)에 따라 캐시를 찾아 제거합니다. 전체를 제거하면 다음에 데스크톱을 다시 시작할 때 모든 항목을 다운로드해야 하므로 지연이 발생할 수 있습니다. 따라서 루트 캐시 폴더 내에 있는 {% include product %} 사이트의 이름을 따서 명명된 폴더를 지우는 것이 좋습니다. 그러면 그리 긴 지연이 발생하지 않습니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/data-handler-cache-error/10955)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/encryption-handshake-error-message.md b/docs/ko/quick-answers/troubleshooting/encryption-handshake-error-message.md deleted file mode 100644 index c06a981cf..000000000 --- a/docs/ko/quick-answers/troubleshooting/encryption-handshake-error-message.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: 암호화 핸드쉐이크를 완료하지 않고 통신을 시도함 -pagename: encryption-handshake-error-message -lang: ko ---- - -# `[ERROR]` 암호화 핸드쉐이크를 완료하지 않고 통신을 시도함 - -## 활용 사례: - -{% include product %} 데스크톱의 브라우저 통합을 시작하고 실행하는 데 문제가 있습니다. - -Shotgun 데스크톱을 시작하면 웹 서버가 실행 중임을 알 수 있습니다. - -``` -[ INFO] WebSocketServerFactory (TLS) starting on 9000 -[ INFO] Starting factory -``` - -...그 다음에는 오류를 표시하지 않는 디버그 레코드가 로드됩니다. - -{% include product %} 사이트에 로그인할 때 다음과 같은 메시지가 표시됩니다. - -``` -[ INFO] Connection accepted. -``` - -프로젝트를 마우스 오른쪽 버튼으로 클릭하면 {% include product %}에서 작업을 검색 중이라고 표시되고 다음과 같은 로그 출력이 제공됩니다. - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -{% include product %}에서 프로젝트를 열면 다음과 같은 로그 출력이 생성됩니다. - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ WARNING] dropping connection to peer tcp4:127.0.0.1:52451 with abort=True: WebSocket closing handshake timeout (peer did not finish the opening handshake in time) -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -## 해결 방법: - -프록시 무시 목록에 `shotgunlocalhost.com`을 추가합니다. - -## 이 오류가 발생하는 원인의 예: - -프록시 구성 - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/shotgun-desktop-browser-integration/3574)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md b/docs/ko/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md deleted file mode 100644 index d1fbe92b2..000000000 --- a/docs/ko/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: default -title: 프로토콜을 위반하여 EOF 발생 -pagename: eof-occurred-violation-protocol-tls -lang: ko ---- - -# SSLError: [Errno 8] _ssl.c:504: 프로토콜을 위반하여 EOF 발생 - -## 활용 사례 - -데스크톱에서 Nuke 10.5를 열면 다음과 같은 SSL 오류가 표시됩니다. - -``` -[13:57.14] ERROR: Shotgun Error: [ERROR tk-nuke] App /media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2 failed to initialize. It will not be loaded. -Traceback (most recent call last): -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/engine.py”, line 2792, in __load_apps -app.init_app() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/app.py”, line 26, in init_app -self._tk_multi_workfiles = self.import_module(“tk_multi_workfiles”) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/bundle.py”, line 462, in import_module -self.__module_uid, None, python_folder, ("", “”, imp.PKG_DIRECTORY) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/init.py”, line 11, in -from . import tk_multi_workfiles -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/init.py”, line 14, in -from .file_open_form import FileOpenForm -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/file_open_form.py”, line 19, in -from .actions.file_action_factory import FileActionFactory -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/file_action_factory.py”, line 19, in -from .interactive_open_action import InteractiveOpenAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/interactive_open_action.py”, line 17, in -from .open_file_action import OpenFileAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/open_file_action.py”, line 22, in -from …work_area import WorkArea -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/work_area.py”, line 19, in -from .user_cache import g_user_cache -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 203, in -g_user_cache = UserCache() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 32, in init -self._current_user = sgtk.util.get_current_user(self._app.sgtk) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/util/login.py”, line 125, in get_current_user -“HumanUser”, filters=[[“login”, “is”, current_login]], fields=fields -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 882, in find_one -additional_filter_presets=additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1003, in find -additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1072, in _construct_read_parameters -params[“paging”] = {“entities_per_page”: self.config.records_per_page, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 471, in records_per_page -self._records_per_page = self._sg.server_info.get(“api_max_entities_per_page”) or 500 -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 763, in server_info -return self.server_caps.server_info -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 778, in server_caps -self._server_caps = ServerCapabilities(self.config.server, self.info()) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 833, in info -return self._call_rpc(“info”, None, include_auth_params=False) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/authentication/shotgun_wrapper.py”, line 63, in _call_rpc -return super(ShotgunWrapper, self)._call_rpc(*args, **kwargs) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3302, in _call_rpc -encoded_payload, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3442, in _make_call -return self._http_request(verb, path, body, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3496, in _http_request -resp, content = conn.request(url, method=verb, body=body, headers=headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 2192, in request -cachekey, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1845, in _request -conn, request_uri, method, body, headers -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1750, in _conn_request -conn.connect() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1399, in connect -self.key_password, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 109, in _ssl_wrap_socket -ssl_version=ssl_version, -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 381, in wrap_socket -ciphers=ciphers) -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 143, in init -self.do_handshake() -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 305, in do_handshake -self._sslobj.do_handshake() -SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol -``` - -Nuke 버전 11 또는 12에서는 이러한 문제가 발생하지 않습니다. - -## 해결 방법 - -Nuke 10.x는 TLS 1.2와 호환되지 않기 때문에 발생하는 문제입니다. 소프트웨어는 TLS를 준수해야 합니다. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/sslerror-in-nuke-10-5/9299) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/error-during-execution-mel-script.md b/docs/ko/quick-answers/troubleshooting/error-during-execution-mel-script.md deleted file mode 100644 index 509f37d49..000000000 --- a/docs/ko/quick-answers/troubleshooting/error-during-execution-mel-script.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -title: 작업 영역 변경 실패 - MEL 스크립트를 실행하는 동안 오류 발생 -pagename: error-during-execution-mel-script -lang: ko ---- - -# 작업 영역 변경 실패 - MEL 스크립트를 실행하는 동안 오류 발생 - -## 활용 사례 - -네트워크에 대한 액세스 권한이 없는 프리랜서를 위해 새 특수 파이프라인 구성을 만들 때 새 루트 이름을 만들고 다른 경로를 지정했습니다. 프로덕션 파이프라인 구성에는 파일 서버를 가리키는 루트 경로가 있습니다. - -그러나 Maya에서 `tk-multi-workfiles`를 사용하여 새 파일을 만들 때 다음 오류가 발생합니다. - -``` -Failed to change work area - Error during execution of MEL script: file: C:/Program files/Autodesk/Maya2019/scripts/others/setProject.mel line 332: New project location C:\VetorZero\work\Shotgun-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya is not a valid directory, project not created. -Calling Procedure: setProject, in file “C:\Program Files\Shotgun\c” set project(“C:\Vetorzero\work\SHOTGUN-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya”) -``` - -폴더를 만들었지만 "maya" 폴더가 만들어지지 않았습니다. - -## 해결 방법 - -"maya" 폴더가 실수로 삭제되지 않았는지 확인합니다. "maya" 폴더가 삭제된 경우 이 오류가 표시됩니다. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/new-file-maya-action-error/8225) \ No newline at end of file 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 deleted file mode 100644 index 36fe643bc..000000000 --- a/docs/ko/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: "Python API에서 SSL: CERTIFICATE_VERIFY_FAILED 문제 수정" -pagename: fix-ssl-certificate-verify-failed -lang: ko ---- - -# Python API에서 SSL: CERTIFICATE_VERIFY_FAILED 문제 수정 - -Python API는 {% include product %}에서 사용하는 다양한 웹 서비스에 연결하기 위해 사용자 시스템에 있고 API와 함께 번들로 제공되는 인증서 목록을 사용합니다. 그러나 새 인증서 인증 기관이 릴리즈되어 Python API 또는 OS와 함께 번들로 제공되지 않을 수 있습니다. - -Python API는 최신 인증서 사본을 제공하지만 2019년 2월 21일부터 최신 API 버전을 사용하는 경우에도 API에서 Amazon S3 업로드에 대해 해당 인증서를 사용하지 못하도록 하는 버그가 있습니다. 자세한 내용은 [이 AWS 블로그 게시물](https://aws.amazon.com/ko/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/)을 참조하십시오. 다음 솔루션을 통해 상황을 일시적으로 해결할 수 있습니다. - -{% include info title="참고" content="이 방법은 임시적인 해결 방법이며 장기적 솔루션을 찾고 있는 중입니다." %} - -## 기본 솔루션 - -필요한 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을 시작합니다. - -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을 닫을 수 있습니다. - -## 대체 솔루션 - -### Python API만 사용 중인 경우 - -1. Python API **v3.0.39**로 업그레이드합니다. - -2. a. `SHOTGUN_API_CACERTS`를 `/path/to/shotgun_api3/lib/httplib2/cacerts.txt`로 설정합니다. - - 또는 - - b. 스크립트를 업데이트하고 `Shotgun` 개체를 인스턴스화할 때 `ca_certs=/path/to/shotgun_api3/lib/httplib2/cacerts.txt`를 설정합니다. - -### 툴킷을 사용 중인 경우 - -1. 툴킷 배포 방법에 따라 `tank core` 명령을 통해 최신 버전의 툴킷 API로 업그레이드하거나 파이프라인 구성의 `core/core_api.yml` 파일을 업데이트하는 방법으로 업그레이드합니다. - -2. [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)에서 최신 인증서 목록을 다운로드합니다. - -3. `SHOTGUN_API_CACERTS`를 이 파일을 저장한 위치로 설정합니다. 하지만 툴킷은 Python API에서처럼 연결을 만들 때 `ca_certs` 매개변수 지정을 허용하지 않습니다. - -### Python API 또는 툴킷을 업데이트할 수 없는 경우 - -1. [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)에서 최신 인증서 목록을 다운로드합니다. - -2. `SSL_CERT_FILE` 환경 변수를 이 파일을 저장한 위치로 설정합니다. diff --git a/docs/ko/quick-answers/troubleshooting/folder-creation-aborded.md b/docs/ko/quick-answers/troubleshooting/folder-creation-aborded.md deleted file mode 100644 index b2585e2e6..000000000 --- a/docs/ko/quick-answers/troubleshooting/folder-creation-aborded.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 폴더 작성이 중단됨 -pagename: folder-creation-aborded -lang: ko ---- - -# 폴더 작성 실패: 폴더를 작성하지 못함 - -## 활용 사례 - -현재 웹 인터페이스에서 새 프로젝트를 만든 다음 {% include product %} 데스크톱을 사용하여 툴킷을 중앙 집중식 설정으로 구성합니다. 하지만 에셋 이름을 편집하려고 하면 더 이상 작동하지 않고(아티스트가 Maya와 같은 CCD에서 편집하기 위해 파일을 열 수 없음) "폴더를 작성하지 못함"이라는 오류가 반환됩니다. {% include product %}에서는 문제를 해결하기 위해 tank 명령을 다시 실행하여 에셋을 등록 해제한 후 다시 등록하라고 하는 데 어디서 실행해야 할지 알 수 없습니다. - -## 해결 방법 - -프로젝트에서 고급 설정 마법사를 실행하면 이 마법사를 실행하는 옵션이 의도적으로 제거됩니다. 하지만 원하는 경우 [프로젝트를 다시 설정](https://developer.shotgridsoftware.com/ko/fb5544b1/)할 수 있습니다. - -오류 메시지에 언급된 tank 명령을 실행해야 합니다. - -``` -tank.bat Asset ch03_rockat_drummer unregister_folders -``` - -`tank.bat`는 설치한 구성의 루트에서 찾을 수 있으며 위치를 잘 모르는 경우 [이 항목](https://community.shotgridsoftware.com/t/how-do-i-find-my-pipeline-configuration/191)을 참조하십시오. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/error-in-toolkit-after-renaming-asset/4108) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/frame-server-error.md b/docs/ko/quick-answers/troubleshooting/frame-server-error.md deleted file mode 100644 index 2c8110a1d..000000000 --- a/docs/ko/quick-answers/troubleshooting/frame-server-error.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: 프레임 서버에 오류가 발생함 -pagename: frame-server-error -lang: ko ---- - -# 프레임 서버에 오류가 발생함 - -## 활용 사례 - -SG 데스크톱에서 Nuke를 시작할 때 "프레임 서버에 오류가 발생했습니다."라는 오류 메시지가 표시되고 계속해서 작업할 수 있습니다. - -완료 오류: - -``` -The Frame Server has encountered an error. - -Nuke 12.1v5, 64 bit, built Sep 30 2020. -Copyright (c) 2020 The Foundry Visionmongers Ltd. All Rights Reserved. -Loading - init.py -Traceback (most recent call last): -File “/Applications/Nuke12.1v5/Nuke12.1v5.app/Contents/Resources/pythonextensions/site-packages/foundry/frameserver/nuke/workerapplication.py”, line 18, in -from util import(asUtf8, asUnicode) -ImportError: cannot import name asUtf8 -cannot import name asUtf8 -``` - -## 해결 방법 - -이 오류는 구성에 아직 개발 경로가 있는 경우 발생할 수 있습니다. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/the-frame-server-has-encountered-an-error/11192) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/hiero-task-type-error-message.md b/docs/ko/quick-answers/troubleshooting/hiero-task-type-error-message.md deleted file mode 100644 index 5169a5d21..000000000 --- a/docs/ko/quick-answers/troubleshooting/hiero-task-type-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: 오류 18:13:28.365:Hiero(34236) 오류! 태스크 유형 -pagename: hiero-task-type-error-message -lang: ko ---- - -# 오류 18:13:28.365:Hiero(34236): 오류! 태스크 유형 - -## 활용 사례: -`config_default2`로 업데이트한 후 nuke_studio가 초기화되지 않습니다. Nuke 12.0 Studio에서는 스크립트 편집기에 오류가 표시되지 않지만 Nuke 11.1v3에서는 다음과 같은 메시지가 표시됩니다. - -``` -ERROR 18:13:28.365:Hiero(34236): Error! Task type tk_hiero_export.sg_shot_processor.ShotgunShotProcessor Not recognised -``` - -롤백 후 오류가 발생하지 않아도 tk-nuke 엔진이 초기화되지 않고 {% include product %}에서 아무것도 로드하지 못합니다... - -[커뮤니티 게시물](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)에 자세한 내용을 볼 수 있는 전체 로그가 포함되어 있습니다. - -## 오류의 원인은 무엇입니까? -NukeStudio 시작으로 처리하지 않고 대신 표준 Nuke 시작으로 처리하는 것일 수 있습니다. - -경로가 있는 Nuke Studio 소프트웨어 엔티티를 정의하고 인자를 `-studio`로 설정했습니다. 인자는 `--studio`여야 합니다. - -## 해결 방법 -소프트웨어 엔티티의 인자를 `-studio`로 설정해야 합니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md b/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md deleted file mode 100644 index f17f35dcf..000000000 --- a/docs/ko/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Houdini ShotGrid 통합이 시작되지 않는 이유는 무엇일까요? -pagename: houdini-integrations-not-starting -lang: ko ---- - -# Houdini {% include product %} 통합이 시작되지 않는 이유는 무엇일까요? - - -여기서는 Houdini에서 {% include product %} 통합을 시작할 수 없는 가장 일반적인 원인을 살펴봅니다. 이 경우, Houdini는 {% include product %} 데스크톱, {% include product %} 웹 사이트 또는 tank 명령으로 오류 없이 시작됩니다. 하지만 Houdini가 시작된 후에 {% include product %} 메뉴 또는 쉘프가 나타나지 않습니다. - -원인은 {% include product %}가 재정의된 `HOUDINI_PATH` 환경 변수를 사용하여 시작 스크립트 경로를 전달하기 때문인 경우가 많습니다. - -{% include product %}에서 Houdini가 시작되면 시작 앱 로직에서는 {% include product %} 부트스트랩(Bootstrap) 스크립트 경로를 `HOUDINI_PATH` 환경 변수에 추가합니다. 그러나 Houdini에 [houdini.env 파일](http://www.sidefx.com/docs/houdini/basics/config_env.html#setting-environment-variables)이 있는 경우 문제가 발생할 수 있습니다. -이 파일을 통해 사용자는 Houdini가 로드될 때 제공되는 환경 변수를 설정할 수 있지만 파일에 정의된 모든 값이 현재 세션의 기존 환경 변수를 덮어씁니다. - -이 문제를 해결하려면 기존의 `HOUDINI_PATH` 환경 변수를 해당 변수에 대한 새 정의에 포함해야 합니다. - -예를 들어 `houdini.env` 파일에 다음과 같은 내용이 이미 있는 경우 - - HOUDINI_PATH = /example/of/an/existing/path;& - -파일에 정의된 경로 끝에 `$HOUDINI_PATH;`를 추가하고 저장해야 합니다. - - HOUDINI_PATH = /example/of/an/existing/path;$HOUDINI_PATH;& - -그러면 Houdini가 시작될 때 {% include product %} 설정 값을 유지할 수 있습니다. - -{% include warning title="주의" content="Windows에서 `$HOUDINI_PATH`에 문제가 발생하는 경우가 있습니다. 간혹 Shotgun 통합을 여러 번 부트스트랩(Bootstrap)하며 다음과 같은 오류가 발생합니다. - - 툴킷 부트스트랩(Bootstrap)에 필요한 변수가 누락되어 있음: TANK_CONTEXT - -이 오류가 발생하면 대신 `%HOUDINI_PATH%`를 사용해야 합니다." %} - -그래도 문제가 해결되지 않으면 문제를 진단할 수 있도록 당사 [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에 문의해 주십시오. \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/images/Thumbs.db b/docs/ko/quick-answers/troubleshooting/images/Thumbs.db deleted file mode 100644 index 2510675a1..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/Thumbs.db and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/add-exception-firefox.png b/docs/ko/quick-answers/troubleshooting/images/add-exception-firefox.png deleted file mode 100644 index 96b10b4dd..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/add-exception-firefox.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/asset-schema.png b/docs/ko/quick-answers/troubleshooting/images/asset-schema.png deleted file mode 100644 index c4ce80527..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/asset-schema.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/autobahn-python.png b/docs/ko/quick-answers/troubleshooting/images/autobahn-python.png deleted file mode 100644 index a3b57f906..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/autobahn-python.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png b/docs/ko/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png deleted file mode 100644 index 4c4dbc267..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png b/docs/ko/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png deleted file mode 100644 index 33d98bb03..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/connection-failed.png b/docs/ko/quick-answers/troubleshooting/images/connection-failed.png deleted file mode 100644 index 13d4efc28..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/connection-failed.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/connection-is-not-secure.png b/docs/ko/quick-answers/troubleshooting/images/connection-is-not-secure.png deleted file mode 100644 index a7d587415..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/connection-is-not-secure.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png b/docs/ko/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png deleted file mode 100644 index a26130a2b..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/firefox-advanced-settings.png b/docs/ko/quick-answers/troubleshooting/images/firefox-advanced-settings.png deleted file mode 100644 index dc72127a7..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/firefox-advanced-settings.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/firefox-view-certificates.png b/docs/ko/quick-answers/troubleshooting/images/firefox-view-certificates.png deleted file mode 100644 index 5eea05cf6..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/firefox-view-certificates.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/microsoft-management-console.png b/docs/ko/quick-answers/troubleshooting/images/microsoft-management-console.png deleted file mode 100644 index 22c83d945..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/microsoft-management-console.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/photoshop-extension-panel.png b/docs/ko/quick-answers/troubleshooting/images/photoshop-extension-panel.png deleted file mode 100644 index f6c214304..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/photoshop-extension-panel.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg b/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg deleted file mode 100644 index 8e2bc3f25..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg b/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg deleted file mode 100644 index 4de3c3636..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg b/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg deleted file mode 100644 index 2b5fe9a7b..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg b/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg deleted file mode 100644 index ece427bb1..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png b/docs/ko/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png deleted file mode 100644 index faaa09de8..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png b/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png b/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png b/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png b/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png b/docs/ko/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png deleted file mode 100644 index 8402708ab..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/troubleshoot_powershell.png b/docs/ko/quick-answers/troubleshooting/images/troubleshoot_powershell.png deleted file mode 100644 index dcd0b55ed..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/troubleshoot_powershell.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/windows-certificates.png b/docs/ko/quick-answers/troubleshooting/images/windows-certificates.png deleted file mode 100644 index 6e3cb95b3..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/windows-certificates.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/windows-internet-properties.png b/docs/ko/quick-answers/troubleshooting/images/windows-internet-properties.png deleted file mode 100644 index 37176e26e..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/windows-internet-properties.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/windows-search-internet-options.png b/docs/ko/quick-answers/troubleshooting/images/windows-search-internet-options.png deleted file mode 100644 index 3e20f53ba..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/windows-search-internet-options.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/windows-setting-environment-variable.png b/docs/ko/quick-answers/troubleshooting/images/windows-setting-environment-variable.png deleted file mode 100644 index ffcd79c44..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/windows-setting-environment-variable.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png b/docs/ko/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png deleted file mode 100644 index 1d7938260..000000000 Binary files a/docs/ko/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png and /dev/null differ diff --git a/docs/ko/quick-answers/troubleshooting/invalid-lut-error-message.md b/docs/ko/quick-answers/troubleshooting/invalid-lut-error-message.md deleted file mode 100644 index 9c8eaccac..000000000 --- a/docs/ko/quick-answers/troubleshooting/invalid-lut-error-message.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: 잘못된 LUT가 선택됨 -pagename: invalid-lut-error-message -lang: ko ---- - -# 오류 잘못된 LUT 선택: Gamma2.2 - -## 활용 사례: -ACES 색상 관리 프로젝트에서 작업할 때 기본 툴킷 게시를 사용하면 `Invalid LUT selected : Gamma2.2` 오류가 발생하여 작업이 실패합니다. - -## 오류의 원인은 무엇입니까? -Nuke에서 툴킷 게시의 일부인 QuickTime을 만드는 `tk-multi-reviewsubmission`이라는 앱이 있으며, 기본적으로 Nuke 표준 색상 모델에서 작동하는 QT를 만듭니다. - -## 해결 방법 -ACES(ICIO 모델이라고 가정함)를 사용 중이므로 `tk-multi-reviewsubmission` 앱에서 색상 공간 설정을 인계받아 `codec_settings.py` 후크에 추가하여 변경해야 합니다. - -코덱은 기본 설정에 따라 다르지만 이 예에서는 `Output - sRGB Codec`을 사용하므로 `codec_settings.py` 후크에서 설정에 적합한 위치에 `settings["colorspace"] = "Output - sRGB"` 설정을 추가합니다. (도처에 추가함) - -```python - settings = {} - if sys.platform in ["darwin", "win32"]: - settings["file_type"] = "mov" - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 changed the codec knob name to meta_codec and added an encoder knob - # (which defaults to the new mov64 encoder/decoder). - settings["meta_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - settings["codec"] = "jpeg" - settings["colorspace"] = "Output - sRGB" - - elif sys.platform == "linux2": - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 removed ffmpeg and replaced it with the mov64 writer - # http://help.thefoundry.co.uk/nuke/9.0/#appendices/appendixc/supported_file_formats.html - settings["file_type"] = "mov64" - settings["mov64_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - # the 'codec' knob name was changed to 'format' in Nuke 7.0 - settings["file_type"] = "ffmpeg" - settings["format"] = "MOV format (mov)" - settings["colorspace"] = "Output - sRGB" - - return settings -``` - -이제 이 모든 사항이 완료되면 Nuke에서 게시할 때 ACES 호환 색상 공간에서 QT가 생성됩니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/what-to-do-when-publish-from-aces-nuke-script-fails-with-error-invalid-lut-selected-gamma2-2/197)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/maya-context-task-empty-none-error.md b/docs/ko/quick-answers/troubleshooting/maya-context-task-empty-none-error.md deleted file mode 100644 index c3753e484..000000000 --- a/docs/ko/quick-answers/troubleshooting/maya-context-task-empty-none-error.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: Maya에서 context.task를 출력하면 비어 있음("None") -pagename: maya-context-task-empty-none-error -lang: ko ---- - -# Maya에서 context.task를 출력하면 비어 있음("None") - -## 활용 사례 - -Maya에서 `context.task`를 출력한 후에는 `empty “None”`이지만 다른 단계/태스크에서 다른 레이아웃 파일을 시도할 때는 `context.task` 상세 정보를 표시합니다. `Open > Layout > new file`을 통해 이동할 때도 `context.task` 상세 정보를 출력할 수 있지만 파일 저장(File Save)을 통해 파일을 저장할 때는 `context.task`가 없음(None)으로 표시됩니다. - -## 해결 방법 - -작동하지 않는 샷 중 하나에 대해 [폴더 등록을 취소](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config/189)한 다음 해당 폴더에 대한 폴더 생성을 다시 실행합니다. - - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/context-task-none/3705) \ No newline at end of file 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 deleted file mode 100644 index 9e3836817..000000000 --- a/docs/ko/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: ShotGrid 데스크톱에서 Nuke/Maya 등을 실행했는데 ShotGrid 메뉴에 해당 항목이 없습니다 -pagename: menu-entries-missing-in-launched-dcc -lang: ko ---- - -# 제가 {% include product %} 데스크톱에서 Nuke/Maya 등을 실행했는데 {% include product %} 메뉴에 해당 항목이 없습니다. - -{% include product %} 메뉴에 표시되는 액션은 상황에 맞게 구성됩니다. 즉, 사용 가능한 액션 목록은 상황에 따라 다를 수 있습니다. -잘못된 상황에 있기 때문에 앱이 표시되지 않을 수 있습니다. - -## 예시 - -[{% include product %} 데스크톱](https://developer.shotgridsoftware.com/ko/d587be80/#getting-started-with-desktop)에서 응용프로그램을 실행하면 기본적으로 프로젝트 환경으로 이동합니다. 이 환경은 `config/env/project.yml`에 있는 파이프라인 구성의 구성 파일에 의해 관리됩니다. 대부분의 사용자 작업이 이 환경에서 수행되지 않을 것이므로 이 환경에는 작업에 사용하는 앱이 대부분 구성되어 있지 않습니다. - -**기본 Maya 프로젝트 액션:** - -![{% include product %} 메뉴 프로젝트 액션](images/shotgun-menu-project-actions.png) - -[{% include product %} Workfiles 앱](https://developer.shotgridsoftware.com/ko/9a736ee3/)을 사용하여 작업할 에셋, 샷 또는 태스크를 선택할 수 있습니다. 이렇게 하면 적합한 새 환경이 로드되고 {% include product %} 메뉴에 더 많은 앱과 메뉴 항목이 활성화됩니다. - -**기본 Maya 에셋 태스크 액션** - -![{% 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 diff --git a/docs/ko/quick-answers/troubleshooting/modulenotfounderror-error.md b/docs/ko/quick-answers/troubleshooting/modulenotfounderror-error.md deleted file mode 100644 index c8290fcbb..000000000 --- a/docs/ko/quick-answers/troubleshooting/modulenotfounderror-error.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: ModuleNotFoundError -pagename: modulenotfounderror-error -lang: ko ---- - -# ModuleNotFoundError - -## 활용 사례 - -분산 구성을 사용하는 경우 엔진 외부에서 `tk.templates` 명령에 액세스하기 위해 `tk-shell` 부트스트래핑을 수행할 때 이 오류가 표시됩니다. [이 문서](https://developer.shotgridsoftware.com/ko/3d8cc69a/#part-2-logging)(4부)에 따라 설치 폴더에서 sgtk v0.19.18을 가져올 때 다음 오류가 발생합니다. - -``` -Traceback (most recent call last): - File ".../_wip/sgtk_bootstrap.py", line 9, in - import sgtk - File "L:/_tech/sgtk_sandbox/install/core/python\sgtk\__init__.py", line 16, in - import tank - File "L:/_tech/sgtk_sandbox/install/core/python\tank\__init__.py", line 58, in - from . import authentication - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\__init__.py", line 33, in - from .shotgun_authenticator import ShotgunAuthenticator - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\shotgun_authenticator.py", line 13, in - from .sso_saml2 import ( - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\__init__.py", line 15, in - from .core.errors import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\__init__.py", line 15, in - from .sso_saml2_core import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\sso_saml2_core.py", line 19, in - from Cookie import SimpleCookie -ModuleNotFoundError: No module named 'Cookie' -``` - -## 해결 방법 - -이 문제는 Python 3을 사용하기 때문일 수 있습니다. Python 2.7에는 쿠키 모듈이 있지만 3.x에는 없습니다. 따라서 Python 2.7을 사용하면 이 문제를 해결할 수 있습니다. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/bootstrap-sgtk-modulenotfounderror/11708) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md b/docs/ko/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md deleted file mode 100644 index bcfb46888..000000000 --- a/docs/ko/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: “MTsetToggleMenuItem” 프로시저를 찾을 수 없음 -pagename: mtsettogglemenuitem-error-message -lang: ko ---- - -# "MTsetToggleMenuItem" 프로시저를 찾을 수 없음 - -## 관련 오류 메시지: - -일반적인 시작 화면 후 전체 창을 로드하기 직전에 Maya에서 충돌이 발생합니다. -- "MTsetToggleMenuItem" 프로시저를 찾을 수 없음 - -## 해결 방법: - -Maya를 시작하기 전에 before_app_launch 후크에서 의도치 않게 특정 항목이 경로에서 제거되어 Maya 시작 시 오류가 발생할 수 있습니다. 이 경우 Python 설치를 `PTHONPATH`에 추가하면 Maya 2019에서 플러그인 경로를 찾을 수 없습니다. - -## 이 오류가 발생하는 원인의 예: -이 후크에서 `C:\Python27`이 `PYTHONPATH`로 설정되고 이 `PYTHONPATH`를 사용하여 워크스테이션을 실제로 설치했을 때 사용자에게 몇 가지 문제가 있었습니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/tk-maya-cannot-find-procedure-mtsettogglemenuitem/4629)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/myapp-appstore-error-message.md b/docs/ko/quick-answers/troubleshooting/myapp-appstore-error-message.md deleted file mode 100644 index cdcf1ec1d..000000000 --- a/docs/ko/quick-answers/troubleshooting/myapp-appstore-error-message.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: App Store에 my-app이라는 항목이 포함되어 있지 않음 -pagename: myapp-appstore-error-message -lang: ko ---- - -# 오류: App Store에 my-app이라는 항목이 포함되어 있지 않음 - -## 해결 방법: - -이 오류는 커스텀 앱의 위치 설명자와 관련이 있습니다. [이 문서를 확인](https://developer.shotgridsoftware.com/ko/2e5ed7bb/#part-6-preparing-your-first-release)하십시오. - -위치에 대해서는 경로 설명자를 사용하여 my-app을 설정합니다. [자세한 내용은 여기](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)를 참조하십시오. - -## 이 오류가 발생하는 원인의 예: - -tk-multi-snapshot이 Maya에 표시되지 않아 tank 유효성 검사를 사용하려는 동안 커스텀 앱의 유효성을 검사하려고 하면 해당 앱이 App Store에 없다는 오류가 표시됩니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/tank-validate-errors-on-custom-apps/10674)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md b/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md deleted file mode 100644 index b88b02985..000000000 --- a/docs/ko/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: NUKE_PATH 환경 변수를 설정하면 Nuke 통합이 시작되지 않는 이유가 무엇입니까? -pagename: nuke-path-environment-variable -lang: ko ---- - -# NUKE_PATH 환경 변수를 설정하면 Nuke 통합이 시작되지 않는 이유가 무엇입니까? - -통합은 Nuke 시작 프로세스 중에 부트스트랩(Bootstrap) 스크립트가 실행되도록 Nuke 시작 시 `NUKE_PATH` 환경 변수를 설정합니다. -[`before_launch_app.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) 후크를 실행하기 전에 특별히 `NUKE_PATH`를 정의하는 [`tk-multi-launchapp`](https://developer.shotgridsoftware.com/ko/1b9c259a/#set-environment-variables-and-automate-behavior-at-launch)입니다. - -`os.environ['NUKE_PATH'] = "/my/custom/path"` 등을 사용하여 시작 프로세스 중에 이 환경 변수를 설정하면 환경 변수에서 시작 스크립트 경로를 제거하기 때문에 {% include product %} 통합을 시작할 수도 없습니다. - -경로를 툴킷 부트스트랩(Bootstrap)으로 유지하는 동안에는 경로를 `NUKE_PATH` 환경 변수에 추가하거나 접두사로 붙이는 다음 함수를 `tank.util`에 사용하십시오. - -```python -tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") -``` - -아니면, `prepend_path_to_env_var()`을 사용하여 경로를 접두사로 붙여도 됩니다. \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/path-associated-error-message.md b/docs/ko/quick-answers/troubleshooting/path-associated-error-message.md deleted file mode 100644 index df8182a66..000000000 --- a/docs/ko/quick-answers/troubleshooting/path-associated-error-message.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: “” 경로가 {% include product %} 엔티티 ``와 이미 연결되어 있음 -pagename: path-associated-error-message -lang: ko ---- - -# 데이터베이스 동시성 문제: `` 경로가 {% include product %} 엔티티 ``와 이미 연결되어 있음 - -## 관련 오류 메시지: - -- 데이터베이스 동시성 문제: `` 경로가 {% include product %} 엔티티 ``와 이미 연결되어 있습니다. -- 경로에 대한 행 ID를 확인할 수 없습니다! - -## 예시: - -이 오류는 툴킷 사용자가 폴더를 작성하려고 할 때 발생합니다. 다음은 전체 오류입니다. - -``` -ERROR: Database concurrency problems: The path -'Z:\projects\SpaceRocks\shots\ABC_0059' is already associated with -Shotgun entity {'type': 'Shot', 'id': 1809, 'name': 'ABC_0059'}. Please re-run -folder creation to try again. -``` -## 오류의 원인은 무엇입니까? - -이미 FilesystemLocation 엔티티가 있는 폴더에 대해 이 엔티티를 만들려고 하는 경우에 발생합니다. - -## 해결 방법 - -잘못된 FilesystemLocation 엔티티를 지웁니다. 잘못된 FilesystemLocation 엔티티 세트로 범위를 좁힐 수 있는 경우 해당 엔티티 세트를 제거합니다. 그러나 대부분의 경우 프로젝트의 모든 경로가 손상되어 모두 이동해야 합니다. - -- FilesystemLocation 엔티티를 지우는 방법: 이상적으로는 `tank unregister_folders`를 실행할 수 있습니다. 모든 엔티티를 지우려면 tank `unregister_folders --all`을 실행합니다. (`tank unregister_folders`의 모든 옵션에 대해 인자 없이 실행하면 사용 정보가 출력됩니다.) -- 그러나 DB가 이미 불안정한 상태이므로 작동하지 않거나 부분적으로만 작동할 수 있습니다. 명령을 실행하고 나면 {% include product %}의 FilesystemLocations로 돌아가서 삭제될 것으로 예상되는 항목이 실제로 사라졌는지 확인합니다. 그렇지 않은 경우 잘못된 엔티티를 선택하고 수동으로 휴지통으로 이동합니다. - -이때 {% include product %}의 FilesystemLocations는 정리되지만 아티스트의 로컬 캐시에 변경 사항이 반영되지 않을 수 있습니다. 마지막 단계는 각 사용자의 컴퓨터에서 로컬 캐시를 실제로 동기화하는 것입니다. 이렇게 하려면 tank `synchronize_folders --full`을 실행해야 합니다. - -이 모든 단계를 수행하고 나면 경로 캐시가 양호한 상태가 되고 해당 오류가 더 이상 나타나지 않아야 합니다. - -## 관련 링크 - -- [해당 코드의 내용](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [경로 캐시는 무엇입니까? 파일 시스템 위치는 무엇입니까?](https://developer.shotgridsoftware.com/ko/cbbf99a4/) - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/paths-long-error-message.md b/docs/ko/quick-answers/troubleshooting/paths-long-error-message.md deleted file mode 100644 index f26aa38da..000000000 --- a/docs/ko/quick-answers/troubleshooting/paths-long-error-message.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: 너무 긴 Windows 경로로 인한 오류 -pagename: paths-long-error-message -lang: ko ---- - -# 너무 긴 Windows 경로(256자 초과)로 인한 오류 - -## 사실 정보 - -Windows는 경로 이름의 기본 제한 문자 수가 255자/260자로 매우 낮습니다. [이 제한에 대한 Microsoft의 정보는 여기](https://docs.microsoft.com/ko-kr/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation)에 있으며, [자세한 기술 정보는 여기](https://docs.microsoft.com/ko-kr/windows/win32/fileio/maximum-file-path-limitation)에서 확인할 수 있습니다. - -## 오류 - -이 문제는 여러 가지 방식으로 자체 발생하지만 대개는 SG 데스크톱이 구성을 처음 로드하는 경우에 발생하며 번들 캐시에 항목을 다운로드하는 동안 이 오류가 발생합니다. 이 오류는 Windows 10의 최신 버전에서 약간 개선된 것처럼 보이긴 하지만 다소 난해할 수 있습니다. 다음은 표시될 수 있는 몇 가지 예입니다. - -``` -[ WARNING] Attempt 1: Attachment download of id 3265791 from https://xxxxx.shotgunstudio.com failed: [Error 206] The filename or extension is too long: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\0933a8b9a91440a2baf3dd7df44b40ce\\bundle_cache\\git\\tk-framework-imageutils.git\\v0.0.2\\python\\vendors\\osx\\lib\\python2.7\\site-packages\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname' -[ WARNING] File 'c:\users\xxxxx\appdata\local\temp\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' -``` - -``` -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\123456789012a34b567c890d1e23456: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=uploaded_config&id=38&version=123456 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -``` - -``` -WARNING sgtk.core.util.shotgun.download Attempt 4: Attachment download of id 1182 from https://xxxxx.shotgunstudio.com failed: [Errno 2] No such file or directory: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\dd2cc0804122403a87ac71efccd383ea\\bundle_cache\\app_store\\tk-framework-desktopserver\\v1.3.1\\resources\\python\\build\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname\\_implementation.py' -WARNING sgtk.core.util.filesystem File 'c:\users\xxxxx\appdata\local\temp\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -ERROR sgtk.core.bootstrap.cached_configuration Failed to install configuration sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182. Error: Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Cannot continue. -``` - -## 이 문제가 발생하는 이유 - -Windows에서 {% include product %} 데스크톱은 데이터를 `%APPDATA%` 폴더(일반적으로 `C:\Users\jane\AppData\Roaming\Shotgun`)에 저장합니다. 표준 default2 툴킷 구성을 사용할 때는 사용자 이름이 지나치게 길지만 않으면 대부분 괜찮습니다. 그러나 자체 앱, 엔진 또는 프레임워크를 만드는 경우, 특히 코드와 함께 종속성을 번들로 묶고(여기서처럼) 번들에 디렉토리의 깊은 트리가 있는 경우 이 문제가 발생할 위험이 더 클 수 있습니다. - -## 문제 해결 - -이 문제를 해결하는 방법은 일반적으로 `$SHOTGUN_HOME` 환경 변수를 `C:\SG`와 같이 매우 짧게 설정하는 것입니다. 이렇게 하면 SG 데스크톱이 `C:\Users\jane\AppData\Roaming\Shotgun` 대신 `C:\SG`에 해당 데이터를 저장하게 되며 문자 길이가 줄어들어 일반적으로 제한 수준을 유지할 수 있습니다. [환경 변수에 대한 자세한 내용은 여기를 참조](http://developer.shotgunsoftware.com/tk-core/initializing.html?#environment-variables)하십시오. - -### 향후 가능성 - -[여기에 설명된 대로](https://docs.microsoft.com/ko-kr/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later) 레지스트리 업데이트를 통해 Windows 10의 최신 버전에서 이 문제를 완화하는 다른 방법이 *있을 수도 있지만* SG 데스크톱에서 매니페스트 파일을 업데이트하여 `longPathAware` 설정을 활용하도록 하는 것도 필요하다고 생각합니다. 제가 Mac 사용자라 그런지는 모르겠지만 말입니다. ;) - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/errors-due-to-windows-paths-too-long-256-characters/10101)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md deleted file mode 100644 index d682e7973..000000000 --- a/docs/ko/quick-answers/troubleshooting/performance-troubleshooting.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -layout: default -title: 성능 문제 해결 -pagename: performance-troubleshooting -lang: ko ---- - -# 성능 문제 해결 - -툴킷 사용 시 속도가 느려지는 문제가 발생할 수 있습니다. 이러한 문제의 원인으로는 서버 속도, 인터넷 연결 등의 클라이언트 측 인프라 문제부터 툴킷 또는 {% include product %} 구성 시 성능이 고려되지 않은 구성 관련 문제, 그리고 최적화를 추가적으로 적용할 코드 영역까지 다양할 수 있습니다. - -다음은 확인해야 할 사항의 목록으로, 아래에서 자세히 살펴보겠습니다. - -- 앱, 엔진, 프레임워크, 코어 및 {% include product %} 데스크톱이 [최신 상태](#keeping-up-to-date)인지 확인합니다. -- 일반적인 사용 중에 [디버그 로깅](./turn-debug-logging-on.md)이 활성화되지 않았는지 확인합니다. -- [필요한 폴더만 생성하며](#folder-creation-is-slow) 폴더가 실제로 필요할 때만 생성되도록 제한합니다. 너무 많은 폴더를 스키마에 추가하면 속도가 느려집니다. -- 서버에 사용자 캐시를 저장하면 속도가 느려질 수 있습니다. 로컬 드라이브 위치를 가리키도록 {% include product %} [`{% include product %}_HOME` 환경 변수](https://developer.shotgunsoftware.com/tk-core/initializing.html#environment-variables) 를 설정하여 사용자의 캐시를 리디렉션할 수 있습니다. -- 아티스트에게 필요하지 않은 컨텐츠는 필터링하여 제외하도록 [Workfiles 및 Loader 앱을 구성](#file-open-file-save-or-the-loader-app-is-slow)합니다. 엔티티 목록을 아티스트의 현재 태스크와 관련이 있는 항목으로 간결하게 유지하려면 상태를 기준으로 필터링해 보십시오. -- 커스텀 후크가 있는지 그리고 이러한 커스텀 후크로 인해 오버헤드가 증가하지는 않는지 확인하십시오. - -아래 목록에는 모범 사례와 속도 저하 문제가 발생하는 일반적인 사례가 정리되어 있습니다. 전체 사례가 수록된 완전한 목록은 아니며 새로운 패턴이 발견되는 대로 목록에 추가하겠습니다. 이 안내서가 문제 원인을 파악하는 데 도움이 되지 않을 경우 언제든지 [지원 티켓](https://knowledge.autodesk.com/ko/contact-support)을 제출해 주십시오. Shotgun 팀이 도와드리겠습니다. - -목차: -- [일반적인 모범 사례](#general-good-practice) - - [캐시 위치](#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) -- [File Open, File Save 또는 Loader 앱의 속도가 느립니까?](#file-open-file-save-or-the-loader-app-is-slow) -- [폴더 생성 속도가 느림](#folder-creation-is-slow) - - [입출력량 문제 해결](#tackling-io-usage) - - [폴더 등록](#registering-folders) - -## 일반적인 모범 사례 - -### 캐시 위치 - -{% include product %} 툴킷은 [사용자의 홈 디렉토리에 데이터를 캐시](../administering/where-is-my-cache.md)합니다. 이 캐시에는 여러 가지 SQLite 데이터베이스와 캐시된 앱 및 구성이 포함될 수 있습니다. 대개 사용자의 홈 디렉토리는 시스템의 로컬 하드 드라이브에 저장되지만, 스튜디오에서 이를 네트워크 저장소로 리디렉션하는 경우가 많습니다. 이렇게 되면 성능에 영향을 미칠 수 있습니다. 특히, 브라우저 통합 및 폴더 생성/조회 등에 사용되는 SQLite 데이터베이스에 주로 영향을 미칩니다. - -사용자 디렉토리가 서버 위치에 저장되는 경우 [`{% include product %}_HOME` 환경 변수](https://developer.shotgunsoftware.com/tk-core/initializing.html#environment-variables)를 사용하여 {% include product %} 툴킷 캐시의 경로를 변경하는 것이 좋습니다. `{% include product %}_HOME` 환경 변수는 툴킷이 번들 캐시, 썸네일, 그리고 데이터의 빠른 조회에 사용되는 SQLite 데이터베이스 등과 같은 다양한 데이터를 캐시하는 위치를 설정하는 데 사용됩니다. - -### 디버깅 - -{% include product %} 툴킷에서 디버그 로깅을 활성화할 수 있습니다. 그러면 다양한 프로세스에 대한 출력을 더욱 상세하게 얻을 수 있습니다. 문제를 진단하는 데 아주 유용한 기능이지만, 디버그 설정은 일상적인 사용 중에는 활성화되도록 설계되지 않았습니다. 로깅 출력이 늘어나면 성능에 상당한 영향을 미칠 수 있습니다. - -성능 문제가 발생하면, 특히 특정 시스템 또는 사용자에 국한되어 성능 문제가 발생하는 경우 먼저 [디버그 로깅](/turn-debug-logging-on.md)이 활성화되지 않았는지 확인합니다. - -### 최신 버전 유지 - -성능 문제가 발생하면 코어, 앱, 엔진 및 프레임워크가 최신 상태인지 확인하십시오. 최신 버전에서는 이미 수정 사항 또는 최적화 기능이 제공되었을 수 있습니다. - -### 중앙 집중식 구성과 분산 구성 비교 - -고급 툴킷 구성은 [중앙 집중식 구성과 분산 구성](https://developer.shotgunsoftware.com/tk-core/initializing.html#the-toolkit-startup)이라는 두 가지 방법으로 설정할 수 있습니다. 주된 차이점은 중앙 집중식 구성의 경우 일반적으로 모든 사용자가 액세스할 수 있는 스튜디오의 네트워크 저장소에 저장되며, 분산 구성의 경우 대개 클라우드에 저장되고 사용자별로 로컬로 캐시된다는 점입니다. - -이러한 차이점은 성능 이외의 측면에도 영향을 미치지만 성능 차원에서도 각기 다른 장단점을 가집니다. 다음 표에는 성능 측면의 장단점이 정리되어 있습니다. - -| | 장점 | 단점 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **중앙 집중식 구성** | - 초기 설정 프로세스가 완료되면 필요한 모든 항목이 이미 다운로드되어 모든 사용자가 이용할 수 있게 준비됩니다. | - 중앙 집중식 구성은 일반적으로 네트워크 저장소에 유지되므로 일반적인 툴킷 사용 중에 성능 저하가 나타날 수 있습니다. | -| | - 이후에 업데이트할 때는 중앙의 위치에 한 번만 다운로드하면 됩니다. | - 툴킷 구성에는 작은 파일이 많이 포함되므로 이러한 작은 파일에 대한 메타데이터 작업 처리가 상당히 느려지고 서버에 부담을 줄 수 있습니다. 또한, 구성을 빠르게 읽어올 수 없으므로 툴킷 사용을 통한 읽기 작업이든 일반적인 서버 사용을 통한 읽기 작업이든 읽기 작업이 과도하게 많은 경우 툴킷의 성능에 영향을 미칠 수 있습니다. | -| **분산 구성** | - 캐시된 앱, 엔진, 프레임워크 및 코어가 로컬로 캐시된 다른 구성과 공유할 수 있는 방식으로 저장됩니다. 즉, 여러 프로젝트가 동일한 종속 항목을 공유하는 경우 이러한 프로젝트를 이후에 로드할 때 캐시가 더 빨라질 수 있습니다. | - 분산 구성은 사용자별로 로컬에 캐시되어야 합니다. 보통, 이 과정에서 구성과 함께 필요한 모든 앱, 엔진, 프레임워크 및 코어가 다운로드됩니다. | -| | - 이러한 항목은 사용자의 로컬 하드 드라이브에 있는 캐시에 저장되며, 따라서 일반적으로 서버 속도보다 빠릅니다. 즉, 초기 캐시 후 성능이 중앙 집중식 구성보다 빠릅니다. | - 이 프로세스는 백그라운드에서 원활히 수행될 수 있지만, 이러한 항목을 다운로드해야 하는 초기 부담이 여전히 존재합니다. | -| | | - 구성이 종속 항목의 새 버전을 가리키도록 업데이트될 때마다 구성과 새 종속 항목이 모두 캐시되어야 합니다. | - -요약하자면 저장 장치의 속도는 느리지만 인터넷 연결 속도가 괜찮다면 분산 구성이 가장 좋은 선택이 될 수 있고, 서버 저장 장치 성능은 좋지만 인터넷 속도는 좋지 않을 경우에는 중앙 집중식 구성이 적합할 수 있습니다. - -{% include info title="참고" content="분산 구성을 사용하고 싶지만 시스템별로 종속 항목을 다운로드하는 것이 염려된다면 번들 캐시를 중앙 집중화하여 모든 사용자가 공유하도록 할 수 있습니다." %} - -분산 구성을 사용하는 경우 사용자는 캐시에 없는 항목만 다운로드하면 되며, 한 사용자가 다운로드한 항목을 다른 사용자도 활용할 수 있게 됩니다. 이렇게 하려면 각 시스템에서 공유 위치를 가리키도록 [`{% include product %}_BUNDLE_CACHE_PATH` 환경 변수](https://developer.shotgunsoftware.com/tk-core/initializing.html#environment-variables)를 설정하면 됩니다. - -## 소프트웨어의 시작 속도가 느림 - -Maya, Nuke, Houdini 등의 소프트웨어를 시작할 때 {% include product %} 없이 시작할 때보다 시간이 오래 걸리는 것을 알아차리셨을 것입니다. {% include product %} 없이 시작하는 경우보다 시간이 약간 더 오래 걸리는 것은 당연하겠지만, 용납할 수 없을 정도로 오래 걸리는 경우도 있을 수 있습니다. 소프트웨어에 따라 다르지만 대개 1분 안에 시작되어야 합니다. 소프트웨어를 시작하는 데는 많은 프로세스가 관련되기 때문에 이 문제를 진단하는 것은 더 어려울 수 있습니다. - -### 진단 - -먼저, 이 문제가 어떠한 상황에서 발생하는지 파악해야 합니다. - -1. **{% include product %} 없이 시작할 때도 속도가 느립니까?** - 뻔한 이야기일 수 있지만 {% include product %}와 함께 시작할 때만 문제가 발생하는지 확인하는 것이 좋습니다. -2. **시작 방법에 상관없이 동일하게 속도가 느립니까? 즉, SG 데스크톱에서 시작할 때나, 브라우저 통합을 사용하여 SG 사이트에서 시작할 때 느린 속도에 차이가 없습니까?** - {% include product %} 사이트에서 시작할 때는 속도가 느리지만 SG 데스크톱에서 시작할 때는 속도가 느리지 않은 경우 브라우저 통합 문제이거나 디스크에 폴더를 생성하는 것과 관련한 문제가 있음을 나타낼 수 있습니다. 프로젝트 이외의 컨텍스트에서 시작하는 경우 디스크에 추가로 폴더를 생성해 보면 시간이 어디서 많이 걸리는지 확인할 수 있습니다. 소프트웨어가 시작될 때마다 필요한 폴더가 존재하는지 확인한다는 사실도 주목해야 합니다. -3. **모든 프로젝트에서 이 문제가 발생합니까?** - 그렇지 않다면 구성이 설정된 방식과 관련하여 문제가 있을 가능성이 큽니다. -4. **하루 중 특정 시간에만 이 문제가 발생합니까?** - 그렇다면 하루 중 특정 시간에 서버 사용량이 많은 경우와 같이 인프라에 대한 수요가 높다는 것을 나타낼 수 있습니다. -5. **모든 시스템/OS에서 이 문제가 발생합니까?** - 특정 시스템에서만 속도가 느린 경우 툴킷 외부에 문제의 원인이 있을 가능성이 있습니다. 이 경우, 먼저 해당 시스템에서 툴킷 캐시를 지우는 것이 좋습니다. OS마다 제공되는 소프트웨어 버전 및 Python 패키지가 다르며, 특정 빌드에서 성능 문제가 발생하는 경우가 있을 수 있습니다. 특히, Samba(SMB) 공유를 사용하는 Windows에서 성능 문제를 확인했습니다. 이러한 문제에 대한 수정 사항은 없지만, Windows를 사용하는 경우 유의하시기 바랍니다. - 문제가 특정 OS, Python 패키지 또는 소프트웨어 버전으로 국한된다고 판단되는 경우 Shotgun [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에서 추가적인 조사를 진행할 수 있도록 알려주시기 바랍니다. -6. **모든 사용자에게 이 문제가 발생합니까?** - 위와 마찬가지로 동일한 시스템의 다른 사용자에게는 이 문제가 발생하지 않을 수 있습니다. 이 경우, 사용자의 로컬 {% include product %} 캐시를 먼저 지우십시오. 또한, 정상적으로 프로덕션 환경에서 사용할 때 디버그 로깅이 활성화되지 않은 것을 확인하십시오. 활성화할 경우 성능에 영향을 미치게 됩니다. -7. **느린 시작 문제가 특정 앱/소프트웨어에만 국한됩니까? 아니면 모든 앱/소프트웨어가 비정상적으로 느리게 시작됩니까?** - 특정 소프트웨어만 느리게 시작되는 경우 구성 문제가 있을 수 있습니다. 성능에 영향을 미칠 수 있는 커스텀 후크가 시작 전이나 후에 실행되도록 설정되었는지 확인하는 것이 좋습니다. 시작에 사용되는 일반 후크는 [`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)이며 코어 후크는 [`engine_init.py`](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/engine_init.py)입니다. 최신 버전의 소프트웨어가 출시될 때 Shotgun 통합이 갑자기 훨씬 더 느리게 시작되는 등의 문제가 발생할 수도 있습니다. 이러한 경우 [지원 팀](https://knowledge.autodesk.com/ko/contact-support)에 문의하여 이에 대해 알고 있는지, 그리고 알려진 수정 사항이 있는지 확인해야 합니다. 이때 현재 사용 중인 소프트웨어의 버전 번호(해당하는 경우 패치/서비스 팩 포함)와 현재 실행 중인 tk 엔진 및 코어의 버전을 알려 주십시오. - -### 문제가 시작 전에 발생합니까? 아니면 시작 후에 발생합니까? - -위의 방법으로 문제의 원인이 좁혀지지 않을 경우 다음 단계로 시작 프로세스가 언제 느려지는지 파악해야 합니다. 툴킷을 통해 소프트웨어를 시작하는 경우 대개 두 단계 프로세스로 간추릴 수 있습니다. - -첫 번째 단계에서는 소프트웨어를 시작하는 데 필요한 정보를 수집하고 컨텍스트에서 폴더를 자동으로 생성한 후 소프트웨어를 실제로 시작하는 등의 초기 작업을 수행합니다. 소프트웨어가 시작된 후 두 번째 단계에서는 툴킷 통합을 시작합니다. - -일반적으로, 성능 문제가 프로세스의 첫 번째 단계에서 발생하는지 아니면 두 번째 단계에서 발생하는지는 로그를 확인하지 않고도 알 수 있습니다. - -- 소프트웨어의 시작 화면이 시작하는 데 오래 걸리는 경우 첫 번째 단계에 문제가 있을 가능성이 큽니다. -- 소프트웨어가 시작 과정의 초반에는 상대적으로 속도가 빨랐다가 초기화가 완료되고 {% include product %} 메뉴가 표시된 후 느려지는지 확인하십시오. 이 경우 두 번째 단계에 문제가 있는 것입니다. - -이를 파악하고 나면 로그에서 무엇을 확인해야 할지 알 수 있습니다. - -### 로그 확인 - -이제 이 문제가 시작의 첫 번째 단계에서 발생했는지 아니면 두 번째 단계에서 발생했는지 파악되었을 것이므로 이에 따라 로그에서 확인할 부분을 결정할 수 있습니다. 로그는 엔진별로 나뉘어 있으므로 문제가 시작 전 단계에서 발생한 경우 SG 데스크톱에서 시작했는지 아니면 SG 사이트에서 시작했는지에 따라 각각 `tk-desktop.log` 또는 `tk-{% include product %}.log`를 확인해야 합니다. - -다음으로 수행해야 하는 작업은 디버그 로깅을 활성화하는 것입니다. -{% include info title="참고" content="위에서 설명한 대로 [디버그 로깅](#debugging)이 이미 활성화된 경우 이것이 속도 저하 문제의 원인이 될 수 있으므로 디버그 로깅이 활성화되지 않은 상태에서도 테스트해야 합니다." %} -디버그 로깅을 활성화하고 나면 기존 로그를 지운 후 시작 프로세스를 다시 실행해야 합니다. 그런 후에는 로그의 타임스탬프를 조사하여 시간이 갑자기 건너뛴 부분을 확인할 수 있습니다. - -예를 들어, 다음은 폴더 생성 중에 시간이 5초 이후로 건너뛴 행을 보여줍니다. - - 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://knowledge.autodesk.com/ko/contact-support)에 문의하여 도움을 받으십시오. - -### 소프트웨어의 실행 속도가 느려지는 일반적인 원인 - -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **인터넷 속도가 느림** | 툴킷 사용의 거의 모든 부분에서 {% include product %} 사이트에 연결하고 통신해야 하므로 인터넷 속도가 느릴 경우 영향을 받을 수 있습니다. 이 경우, 소프트웨어를 시작할 때뿐 아니라 다른 경우에도 속도 문제가 나타날 수 있습니다. 그러나, 연결 속도가 아닌 안정성에 문제가 있다면 프로세스 전반에 걸쳐 {% include product %} 통신이 꽤 많이 필요하기 때문에 시작 단계에서 성능 문제가 나타날 가능성이 더 큽니다. | -| **서버 액세스가 느림** | 이 경우 시작 시간에 확실히 영향을 미칠 수 있습니다. [중앙 집중식 구성](#centralized-configs-vs-distributed-configs)(구성이 중앙 서버에 저장됨)을 사용하는 경우 구성 파일을 읽을 때마다 많은 입출력이 발생할 수 있습니다. 또한, 소프트웨어를 시작하면 시작 컨텍스트에 대해 폴더 생성 작업이 트리거됩니다. 즉, 폴더가 생성되었는지 확인하고 생성되지 않은 경우 폴더가 새로 만들어집니다. | -| **폴더 생성** | 위에 설명한 대로 폴더 생성은 속도 저하 문제를 일으키는 일반적인 원인이 될 수 있습니다. [자세한 내용은 아래에서 폴더 생성과 관련한 성능 문제 해결 단원을 참조하십시오.](#folder-creation-is-slow) | - -## File Open, File Save 또는 Loader 앱의 속도가 느립니까? - -가장 먼저 문제가 있는 앱에서 어느 부분이 느려지는지 확인해야 합니다. - -- **앱을 시작할 때 속도가 느립니까? 아니면 탭을 탐색할 때 속도가 느립니까?** - - 앱이 너무 많은 정보를 표시하도록 구성되어 있는 것일 수 있습니다. 이 경우 목록에서 불필요한 엔티티를 필터링하여 제외하도록 내 태스크(My Tasks) 탭 및 기타 탭을 구성할 수 있습니다. 예를 들어, 대기 중(`hld`) 또는 최종(`fin`)과 같은 특정 상태의 태스크를 필터링하여 제외할 수 있습니다. 이렇게 하면 성능이 향상되고 아티스트는 중요한 정보만 볼 수 있게 됩니다. [Loader 앱](https://developer.shotgridsoftware.com/ko/a4c0a4f1/) 및 Workfiles 앱에서 모두 필터링이 가능합니다. 단, Workfiles에는 현재 필터링에 대한 특정 섹션이 없으며, [계층 설정](https://developer.shotgridsoftware.com/ko/9a736ee3/#step-filtering)을 통해 필터링을 적용할 수 있습니다. - - File Open 앱에서는 계층의 [하위 항목이 확장될 때까지](https://developer.shotgridsoftware.com/ko/9a736ee3/#deferred-queries) 하위 항목의 로드를 유예하도록 구성할 수 있습니다. 현재, 기본 구성 설정이지만 이전 구성을 사용하는 경우에는 이 설정을 사용하도록 전환할 수 있습니다. - - 디버그 로깅이 활성화되지 않은 것을 확인하십시오. 활성화되어 있으면 추가 입출력이 많이 발생하며, 이에 따라 속도가 느려질 수 있습니다. 이 앱은 많은 디버깅 출력을 포함합니다. -- **새 파일을 열거나 저장하거나 생성할 때 속도가 느립니까?** - - 씬 작업 또는 액션 후크를 인계받았는지 확인하고 이러한 기능과 관련하여 속도를 저하시킬 수 있는 커스텀 동작이 있는지 확인합니다. - - 파일을 만들거나 저장할 때 Workfiles는 컨텍스트에 필요한 모든 폴더가 생성되었는지 확인합니다. 폴더 생성은 성능 [문제](#folder-creation-is-slow)가 흔히 발생하는 부분입니다. - -## 폴더 생성 속도가 느림 - -폴더 생성은 여러 가지 부분으로 구성되기 때문에 문제가 발생하는 경우 프로세스 속도 저하가 나타날 수 있습니다. - -폴더 생성 과정은 다음과 같습니다. -- 로컬 경로 캐시를 동기화합니다. -- 구성 스키마를 읽어옵니다. -- 특정 컨텍스트에 따라 만들어야 하는 경로 목록을 생성합니다. -- 로컬로 저장된 경로 레지스트리와 비교하여 경로를 확인합니다. -- 아직 등록되지 않은 경우 SG 사이트와 로컬 모두에 새 경로를 등록하려고 시도합니다. -- 폴더의 등록 여부에 상관없이 폴더가 실제로 디스크에 있는지 확인하고 없는 경우 폴더를 생성합니다. - -정리하면, 폴더 생성 시 로컬 데이터베이스에 기록하고 SG 사이트와 통신하는 외에도 디스크에서 상당한 양의 입출력이 발생할 수 있습니다. - -### 입출력량 문제 해결 - -저장 장치가 대량의 작은 읽기-쓰기 작업을 처리하기에 느리거나 비효율적일 가능성이 있으므로 인프라를 개선하기 위해 수행하는 작업이라면 무엇이든 폴더 생성 속도를 높이는 데 도움이 됩니다. 하지만, 최대한 부담을 줄이기 위해 툴킷 구성 측면에서 수행할 수 있는 단계가 있습니다. - -첫 번째 단계는 해당 컨텍스트와 작업 환경에 중요한 폴더만 생성되도록 폴더를 제한하는 것입니다. 예를 들어, Maya의 샷에 대한 태스크를 진행하는 경우 해당하는 샷과 소프트웨어에 대한 폴더만 확인하고 생성하는 것이 바람직합니다. - -기본적으로, 작업물을 저장하고 게시하는 데 필요한 최소한의 폴더만 생성하는 것이 좋습니다. - -#### 상위 폴더와 동시에 생성 - -스키마 폴더에 적용될 수 있는 [`create_with_parent` 설정](https://developer.shotgridsoftware.com/ko/82ff76f7/#create-with-parent-folder)이 있습니다. -이 설정을 True로 설정하면 폴더와 상위 폴더가 동시에 생성됩니다. 이 설정을 True로 설정하면 대량 폴더에 대해 확인 및 생성 작업이 수행되지 않도록 주의해야 합니다. - -**예시** - -시퀀스/샷 폴더 계층이 있고 샷 폴더를 상위 폴더인 시퀀스 폴더와 함께 생성하도록 설정한 경우 시퀀스 폴더가 생성될 때마다 연결된 모든 샷에 대해 확인 작업이 수행되고 이에 대한 폴더가 생성됩니다. - -때로는 이러한 동작이 편리할 수 있지만 이로 인해 더 많은 폴더가 확인 작업을 거쳐 동시에 생성되는 문제가 발생합니다. 이러한 경우, 샷에 대한 태스크의 작업 파일에 새 파일을 생성하려고 하면 샷의 상위 폴더인 시퀀스 폴더의 생성 작업이 트리거되고, 이에 따라 현재 작업하는 샷만이 아니라 모든 하위 폴더인 샷 폴더가 생성됩니다. - -{% include info title="참고" content="단계 스키마 폴더에 대한 설정은 기본적으로 true로 설정됩니다." %} - -#### 생성 유예 - -[`defer_creation` 설정](https://developer.shotgridsoftware.com/ko/82ff76f7/#workspaces-and-deferred-folder-creation)을 사용하면 특정 엔진이 실행 중일 때에만 폴더 생성이 발생하도록 제한하여 폴더가 생성되는 경우를 세부적으로 조정할 수 있습니다. 커스텀 이름을 사용하여 [sgtk API](https://developer.shotgunsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure)를 통해 이에 대한 생성 작업을 트리거할 수도 있습니다. - -**예시** - -게시 단계에서만 생성해야 하는 폴더가 여러 개 있을 수 있습니다. 이 경우, maya_publish의 유예 키워드로 커스텀을 설정한 후 API를 사용하여 이 키워드를 엔진 이름으로 사용하여 폴더를 만들 수 있습니다. -스키마 내 폴더는 다음과 같습니다. - - # the type of dynamic content - type: "static" - # defer creation and only create this folder when Photoshop starts - defer_creation: "publish" - -그런 다음, 다음과 같은 스크립트를 사용하여 폴더를 만듭니다. - -```python -sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") -``` - -**확장된 예시** - -폴더를 유예하는 방법에서 더 나아가 프로젝트의 루트에 동적이 아닌 폴더가 여러 개 있는 경우 일반적으로 한 번만 생성하면 됩니다. 예를 들어, 기본 구성 스키마의 루트에 있는 [“editorial” 및 “reference”](https://github.com/shotgunsoftware/tk-config-default2/tree/master/core/schema/project) 폴더는 프로젝트 시작 시 한 번만 생성하면 되지만, 기본적으로 폴더 생성 작업 시 항상 이 폴더의 존재 여부를 확인합니다. - -이 폴더에 대해 [yml 파일](https://developer.shotgridsoftware.com/ko/82ff76f7/#static-folders)을 생성하여 이를 제한할 수 있습니다. 이 yml 파일에서는 폴더 생성이 특정 엔진에서 실행되거나 유예 키워드가 전달되는 경우에만 폴더가 생성되도록 유예 키워드를 설정할 수 있습니다. 유예 키워드를 `tk-shell`로 설정한 후 `tank folders`와 같은 tank 명령을 통해 폴더 생성을 실행할 수 있습니다. - -그러면 폴더 생성이 tank 명령을 통해 실행되는 경우에만 폴더가 생성됩니다. 이 작업은 툴킷 관리자가 처음으로 프로젝트를 설정할 때 수행할 수 있습니다. 또는, 위의 예시와 같은 커스텀 키워드를 사용하여 폴더 생성을 실행하는 간단한 스크립트를 작성할 수도 있습니다. - -### 폴더 등록 - -향후 컨텍스트를 조회할 때 경로가 사용될 수 있도록 폴더 생성 프로세스 중에 폴더가 [등록](../administering/what-is-path-cache.md)됩니다. [위에서 설명한 대로](#folder-creation-is-slow) 이 프로세스 부분을 실행하기 위해서는 레지스트리가 저장된 중앙 위치인 {% include product %} 사이트와의 통신이 필요합니다. 하지만, 도구에서 더욱 신속하게 조회할 수 있도록 이러한 레지스트리는 로컬로도 캐시됩니다. - -#### SQLite 데이터베이스 - -로컬 [경로 캐시](../administering/what-is-path-cache.md)에서는 데이터를 저장하기 위해 SQLite 데이터베이스를 사용합니다. 데이터베이스가 네트워크 저장소에 저장되는 경우 데이터베이스 읽기 및 쓰기 관련 성능이 심각한 영향을 받을 수 있습니다. - -#### 초기 동기화 - -많은 폴더가 등록된 프로젝트에 대해 로컬 캐시를 처음부터 생성해야 하는 경우가 있을 수 있습니다(예: 이미 진행 중인 프로젝트에 새 사용자가 참여하는 경우). 이 프로세스는 아주 긴 시간이 걸릴 수 있지만, 다행인 점은 이러한 현상이 해당 프로젝트에 대해 한 번만 발생한다는 것입니다. - -후속 동기화에서는 로컬 캐시와 사이트 레지스트리 사이의 차이점만 가져옵니다. 사용자의 프로젝트 작업 빈도가 낮고 세션 간에 많은 폴더가 생성되는 경우 모든 항목이 캐시되는 동안 대기하는 시간이 길어질 수 있습니다. - -사용자가 이러한 문제에 사용하는 것으로 확인된 한 가지 방법은 최신 버전의 로컬 캐시를 사용자 시스템으로 전송하는 것입니다. - -{% include info title="참고" content="이 방법은 프로젝트에 대해 과도하게 많은 폴더가 생성되는 경우에만 사용해야 합니다." %} - -이 업데이트 프로세스는 코어 후크 cache_location.py를 사용하여 자동으로 수행될 수 있습니다. 위치를 변경하는 대신 이 후크를 사용하여 캐시 위치를 설정할 수 있으며, 이 후크를 사용하여 비용이 많이 드는 전체 동기화를 수행할 필요 없이 중앙 위치의 path_cache.db 파일을 사용자의 기본 위치로 복사할 수 있습니다. - -이렇게 중앙에 저장된 경로 캐시는 작업자의 캐시에서 수동으로 복사하거나 정기적으로 이러한 캐시를 전송하는 스크립트를 작성하여 주기적으로 업데이트할 수 있습니다. - -{% include warning title="경고" content="cache_location.py 후크를 사용하여 캐시의 위치를 설정할 수 있지만, 모든 사용자에 대해 단일 위치를 가리키도록 설정하지 않아야 합니다. 그러면 하나 이상의 프로세스에서 동시에 데이터베이스를 편집하려고 할 때 데이터베이스 잠금이 발생할 수 있습니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/publish-certificate-fail-error-message.md b/docs/ko/quick-answers/troubleshooting/publish-certificate-fail-error-message.md deleted file mode 100644 index 4856d0a1b..000000000 --- a/docs/ko/quick-answers/troubleshooting/publish-certificate-fail-error-message.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: urlopen 오류 SSL CERTIFICATE_VERIFY_FAILED 인증서 확인 실패(_ssl.c:726) -pagename: publish-certificate-fail-error-message -lang: ko ---- - -# `[ERROR publish_creation] ` - -## 활용 사례 - -Houdini 17.5에서 디지털 에셋을 위한 도구를 개발하는 동시에 빌드 툴킷 앱을 사용하여 게시된 파일을 등록하는 후크를 실행합니다. - -스크립트는 다음 코드를 실행합니다. - - args = { - "tk": self.parent.tank, - "context": self.parent.engine.context, - "path": esto['operator'], - "name": os.path.basename(esto['operator']), - "version_number": 6, - "published_file_type": "Library item", - } - print 'sgtk: ', sgtk.__file__ - sg_publish = sgtk.util.register_publish(**args) - -게시된 파일은 {% include product %}에 올바르게 등록되지만 다음과 같은 오류가 표시됩니다. - -``` ---------------------------------------------------------------------------- -[ERROR publish_creation] -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 308, in register_publish - tk.shotgun.upload_thumbnail(published_file_entity_type, entity.get("id"), no_thumb) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2173, in upload_thumbnail - field_name="thumb_image", **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2263, in upload - tag_list, is_thumbnail) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2383, in _upload_to_sg - result = self._send_form(url, params) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3806, in _send_form - resp = opener.open(url, params) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 429, in open - response = self._open(req, data) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 447, in _open - '_open', req) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 407, in _call_chain - result = func(*args) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1241, in https_open - context=self._context) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1198, in do_open - raise URLError(err) -URLError: -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/config/hooks/publish_digital_asset.py", line 66, in register_publishedfile - description='Alembic nodes.') - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 323, in register_publish - entity=entity -ShotgunPublishError: Unable to complete publishing because of the following error: , although PublishedFile PIGS_libary_tool_hda_asasas_v017.hda (id: 114715 -) was created. ---------------------------------------------------------------------------- -``` - -## 오류의 원인은 무엇입니까? - -`cacert.pem` 및 해당 위치를 가리키는 필수 환경 변수 `SHOTGUN_API_CACERTS`가 누락되었습니다. - -## 해결 방법 - -`cacert.pem` 및 위치를 가리키는 환경 변수 `SHOTGUN_API_CACERTS`를 추가합니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/ssl-certificate-error-on-sgtk-util-regiter-publish/3291)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/review-submission-error-message.md b/docs/ko/quick-answers/troubleshooting/review-submission-error-message.md deleted file mode 100644 index 16bc99b1f..000000000 --- a/docs/ko/quick-answers/troubleshooting/review-submission-error-message.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: default -title: 예외 리뷰 제출에 실패했습니다. 리뷰 관련 시퀀스를 렌더링하고 제출할 수 없습니다. -pagename: review-submission-error-message -lang: ko ---- - -# 예외: 리뷰 제출에 실패했습니다. 리뷰 관련 시퀀스를 렌더링하고 제출할 수 없습니다. - -## 활용 사례: - -Nuke에서 '게시를 위해 제출'이 작동하지 않았습니다. - -**질문 1:** -상속 스트림을 찾는 가장 좋은 방법은 무엇입니까? 'HookBaseClass'까지는 찾았지만 제대로 되지 않았습니다. - -현재 문제는 Nuke에서 리뷰를 위해 제출하는 것입니다. - -Nuke의 SG 게시 GUI에서 다음 오류가 발생합니다. - - - Traceback (most recent call last): - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 282, in _handle_plugin_error - - yield - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 198, in run_publish - - self._hook_instance.publish(settings, item) - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-nuke\v0.12.5\hooks\tk-multi-publish2\basic\submit_for_review.py", line 272, in publish - - raise Exception("Review submission failed. Could not render and " - - Exception: Review submission failed. 리뷰 관련 시퀀스를 렌더링하고 제출할 수 없습니다. - -다음 예외도 표시됩니다. - -`'sg_publish_data' was not found in the item's properties. Review Submission for 'path/to/sequences/AB/AB_001/comp/work/images/AB_001_comp_v002_output/AB_001_comp_v002_output.%04d.jpg' failed. This property must be set by a publish plugin that has run before this one.` - - -'publish_plugin_instance.py'에서 다음을 찾을 수 있습니다. - - - _handle_plugin_error - yield - - run_publish - self._hook_instance.publish(settings, item) - -이러한 파일은 로컬 Appdata 폴더에서는 찾을 수 있지만 기본 설치에서는 찾을 수 없으므로 이 문제를 해결하려면 'submit_for_review.py'를 찾아야 한다고 생각됩니다. - -이 파일에서 상속 체인 'HookBaseClass' 상위 계층의 항목에 대한 설정 및 정보를 확인할 수 있습니다. - -'sg_publish_data'가 'submit_for_review.py'에 설정되어 있는 위치를 찾습니다. 225행은 다음과 같습니다. `sg_publish_data = item.properties.get("sg_publish_data")` - -**질문 2** -그렇다면 업스트림 'item.properties'는 어디에 설정되어 있습니까? nuke collector.py라고 짐작되지만 'sg_publish_data'가 없고 'HookBaseClass'의 하위이기도 합니다. - -## 해결 방법 - -### 간단한 답변: - -커스텀 코드를 추가하지 않았거나 구성을 너무 많이 수정한 경우 리뷰를 위해 제출하는 항목에 대해 `Publish to {% include product %}`를 선택했는지 확인해야 합니다. - -![publish_checkbox](images/review-submission-error-message-01.jpeg) - -### 자세한 답변: - -먼저 [여기에 게시자 API에 대한 설명서](https://developer.shotgunsoftware.com/tk-multi-publish2/)가 있습니다. 이 문제를 해결하는 데 관련된 대부분의 개념이 여기에 설명되어 있습니다. 하지만 구체적인 문제에 대한 분석 내용은 아래와 같습니다. 이러한 과정을 거치는 것이 향후 문제를 해결하는 데도 도움이 될 것입니다. - -위 스크린샷의 `ShorgunWrite1` 항목 아래에 두 개의 `plugins`이 있습니다. 이러한 플러그인은 구성에 정의된 플러그인에 해당합니다. - -![구성](images/review-submission-error-message-02.jpeg) - -이러한 플러그인은 순서대로 실행되며 메모리의 동일한 항목에 대해 작동합니다. 문제의 원인을 파악하기 위해 이 두 플러그인의 코드를 살펴보십시오. `hook` 설정을 보면 이러한 항목이 있는 위치를 확인할 수 있습니다. - -`tk-multi-publish2`에 대한 설정을 보고 있으므로 첫 번째 플러그인의 경우 `{self}`는 `tk-multi-publish2`를 나타냅니다. 따라서 다음과 같습니다. -``` -{self}/publish_file.py -``` -다음과 같이 tk-multi-publish2 앱 폴더에서 찾을 수 있습니다. - -![publish_file_hook](images/review-submission-error-message-03.jpeg) - -파일 시스템에 앱이 있는 위치는 `app_locations.yml`이 구성된 방식에 따라 달라지지만 아무 것도 변경하지 않은 경우 번들 캐시 폴더에서 앱을 찾을 수 있습니다. 필요한 경우 [캐시 위치를 찾는 방법](https://developer.shotgunsoftware.com/7c9867c0/)을 참조하십시오. - -두 번째 플러그인의 경우 후크 경로는 다음과 같습니다. -``` -{engine}/tk-multi-publish2/basic/submit_for_review.py -``` -Nuke에서 `tk-nuke` 엔진을 실행 중이므로 이 게시 후크를 찾으려면 다시 번들 캐시에서 `tk-nuke`를 확인해야 합니다. - -![nuke_config](images/review-submission-error-message-04.jpeg) - -이제 코드를 찾을 위치를 알았으므로 [첫 번째 플러그인이 두 번째 플러그인에 존재하는 것으로 예상되는 값을 설정](https://github.com/shotgunsoftware/tk-multi-publish2/blob/a83e35dbf1a85eac7c3abd7e7f5509a42a8b8cf1/hooks/publish_file.py#L425)함을 알 수 있습니다. - -이 두 플러그인의 조합은 게시되는 항목을 리뷰하기 위해 제출하는 플러그인이며 변경되지 않습니다. 따라서 워크플로우는 먼저 소스 파일을 게시한 다음 리뷰를 위해 이 파일에서 SG 버전을 만드는 것입니다. 해당 버전은 게시에도 링크됩니다. 첫 번째 플러그인은 파일을 게시하고, 두 번째 게시가 사용할 수 있도록 해당 정보를 항목에 저장합니다. - -상속에 대해 언급하셨으므로 이에 대해서도 명확히 밝히고 싶습니다. 설명서에서 언급하는 내용은 Python 상속이 아닌 구성에 의해 구동되는 후크 상속을 의미하는 것 같습니다. - -Python 파일에서 모든 후크는 `HookBaseClass`에서 상속됩니다. 그러나 구성의 후크 메커니즘을 통해 기본적으로 이러한 기본 후크를 같이 처리하고 결합하여 코드를 재사용하는 동안 필요한 모든 기능을 얻을 수 있습니다. `tk-multi-publish2` 구성에서 이에 대한 예를 확인할 수 있습니다. - -``` -settings.tk-multi-publish2.nuke.shot_step: - collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py" -``` - -여기에 정의된 컬렉터는 Python 파일에 없습니다. 실제로 `tk-multi-publish2`의 `collector.py`와 `tk-nuke`의 `collector.py`가 조합된 것입니다. - -빠른 해결 방법으로 충분하지 않고 이러한 후크를 수정해야 하는 경우 [게시 워크플로우 커스터마이즈 동영상](https://developer.shotgridsoftware.com/ko/869a6fab/#shotgrid-toolkit-webinar-videos)을 확인하십시오. 시작하는 데 도움이 될 것입니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/nuke-submit-for-review-py/10026)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/row-id-error-message.md b/docs/ko/quick-answers/troubleshooting/row-id-error-message.md deleted file mode 100644 index 033b1aa31..000000000 --- a/docs/ko/quick-answers/troubleshooting/row-id-error-message.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: 경로에 대한 행 ID를 확인할 수 없습니다! -pagename: row-id-error-message -lang: ko ---- - -# 경로에 대한 행 ID를 확인할 수 없습니다! - -## 관련 오류 메시지: - -- 경로에 대한 행 ID를 확인할 수 없습니다! -- 데이터베이스 동시성 문제: `` 경로가 {% include product %} 엔티티 ``와 이미 연결되어 있습니다. - -## 예시: - -툴킷 사용자가 폴더를 만들 때 "경로에 대한 행 ID를 확인할 수 없습니다!" 라는 오류가 표시됩니다. - -일반적으로 이 오류는 FileSystemLocation 엔티티를 만들지만 경우에 따라 중복 항목이 생성되어 전체 호스트 문제를 일으킬 수 있습니다. - -전체 오류는 다음과 같습니다. - -``` -Creating folders, stand by... - -ERROR: Could not resolve row id for path! Please contact support! trying to -resolve path '\\server\nas_production\CLICK\00_CG\scenes\Animation\01\001'. -Source data set: [{'path_cache_row_id': 8711, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001', -'metadata': {'type': '{% include product %}_entity', 'name': 'sg_scenenum', 'filters': -[{'path': 'sg_sequence', 'values': ['$sequence'], 'relation': 'is'}], -'entity_type': 'Shot'}, 'primary': True, 'entity': {'type': 'Shot', 'id': -1571, 'name': '001_01_001'}}, {'path_cache_row_id': 8712, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Fx', -'metadata': {'type': '{% include product %}_step', 'name': 'short_name'}, 'primary': True, -'entity': {'type': 'Step', 'id': 6, 'name': 'FX'}}, {'path_cache_row_id': -8713, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Comp', -``` -_참고: 이보다 훨씬 더 길게 표시될 수 있습니다._ - -## 오류의 원인은 무엇입니까? - -이 오류는 {% include product %}(사이트 기본 설정(Site Prefs) -> 파일 관리(File Management))에서 지정된 저장소 루트와 파이프라인 구성의 c`onfig/core/roots.yml` 간의 불일치를 가리킵니다. - -Windows를 실행하는 스튜디오에서 대소문자 불일치로 인해 종종 발생합니다. 해당 경로는 대소문자를 구분하지 않지만, 구성은 대소문자를 구분합니다. `E:\Projects`와 `E:\projects`처럼 간단한 차이로도 이 오류가 발생할 수 있습니다. - -## 백그라운드에서 어떤 일이 발생합니까? - -코드는 방금 생성한 경로에 대한 FilesystemLocation 엔티티를 {% include product %}에서 만들고, {% include product %}의 저장소 루트를 사용하여 경로의 루트를 결정합니다. 그런 다음 로컬 캐시에 동일한 항목을 만들고 데이터베이스에서 저장할 위치를 결정해야 합니다. 로컬 캐시의 경우 `roots.yml`을 사용하여 경로의 루트를 확인하며, 대소문자가 일치하지 않기 때문에 생성 경로가 {% include product %}에서 입력한 경로와 일치하지 않습니다. 여기서 오류가 발생합니다. - -특히 오류가 명확하게 발생하지 않아 좋지 않은 결과가 발생했습니다. 폴더가 작성되고, FilesystemLocation 항목이 작성되고, 로컬 경로 캐시에서 동기화되지 않았으며, 저장소 루트가 일치하지 않아 동기화할 수도 없습니다. - -## 해결 방법 - -먼저 사이트 기본 설정(Site Prefs)의 저장소 루트 경로가 `config/core/roots.yml`의 경로와 일치하는지 확인합니다. 불일치를 수정하면 후속 폴더 생성 호출 시 오류가 사라집니다. - -그런 다음 잘못된 FilesystemLocation 엔티티를 지웁니다. 잘못된 FilesystemLocation 엔티티 세트로 범위를 좁힐 수 있는 경우 해당 엔티티 세트를 제거합니다. 그러나 대부분의 경우 프로젝트의 모든 경로가 손상되어 모두 이동해야 합니다. - -- FilesystemLocation 엔티티를 지우는 방법: 이상적으로는 `tank unregister_folders`를 실행할 수 있습니다. 모든 엔티티를 지우려면 tank `unregister_folders --all`을 실행합니다. (`tank unregister_folders`의 모든 옵션에 대해 인자 없이 실행하면 사용 정보가 출력됩니다.) -- 그러나 DB가 이미 불안정한 상태이므로 작동하지 않거나 부분적으로만 작동할 수 있습니다. 명령을 실행하고 나면 {% include product %}의 FilesystemLocations로 돌아가서 삭제될 것으로 예상되는 항목이 실제로 사라졌는지 확인합니다. 그렇지 않은 경우 잘못된 엔티티를 선택하고 수동으로 휴지통으로 이동합니다. - -이때 {% include product %}의 FilesystemLocations는 정리되지만 아티스트의 로컬 캐시에 변경 사항이 반영되지 않을 수 있습니다. 마지막 단계는 각 사용자의 컴퓨터에서 로컬 캐시를 실제로 동기화하는 것입니다. 이렇게 하려면 tank `synchronize_folders --full`을 실행해야 합니다. - -이 모든 단계를 수행하고 나면 경로 캐시가 양호한 상태가 되고 해당 오류가 더 이상 나타나지 않아야 합니다. - -## 관련 링크 - -- [해당 코드의 내용](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [경로 캐시는 무엇입니까? 파일 시스템 위치는 무엇입니까?](https://developer.shotgridsoftware.com/ko/cbbf99a4/) - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md b/docs/ko/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md deleted file mode 100644 index ad11fd8e0..000000000 --- a/docs/ko/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: SSLHandshakeError CERTIFICATE_VERIFY_FAILED 인증서 확인 실패 -pagename: sslhandshakeerror-ssl-certificate-verify-failed -lang: ko ---- - -# SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패 - -## 활용 사례 - -로컬 패킷 검사를 수행하는 방화벽이 설정된 로컬 네트워크에서 다음 오류 메시지가 표시될 수 있습니다. - -``` -SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -``` - -이는 이러한 방화벽이 네트워크 관리자가 직접 생성했으며 Python이 액세스할 수 없는 자체 서명된 인증서로 구성된 경우가 많기 때문입니다. 다른 응용프로그램과 달리 Python은 OS의 인증서 키체인 내부를 들여다보지 않으므로 직접 제공해야 합니다. - -## 해결 방법 - -Python API 및 Shotgun 데스크톱이 신뢰할 수 있는 인증 기관의 전체 목록이 포함된 파일이 디스크에 저장되도록 `SHOTGUN_API_CACERTS` 환경 변수를 설정해야 합니다. - -이러한 [사본](https://raw.githubusercontent.com/certifi/python-certifi/master/certifi/cacert.pem)은 Github의 `certifi` 패키지 최신 사본에서 다운로드할 수 있습니다. 이 작업을 수행한 후에는 해당 파일의 맨 아래에 기업 방화벽의 공용 키를 추가하고 저장해야 합니다. - -이 작업이 완료되면 `SHOTGUN_API_CACERTS` 환경 변수를 경로 위치(예: `/opt/certs/cacert.pem`)로 설정하고 Shotgun 데스크톱을 시작하면 됩니다. - - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/using-shotgun-desktop-behind-an-firewall-with-ssl-introspection/11434) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/storage-root-primary-error-message.md b/docs/ko/quick-answers/troubleshooting/storage-root-primary-error-message.md deleted file mode 100644 index ffb579758..000000000 --- a/docs/ko/quick-answers/troubleshooting/storage-root-primary-error-message.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: 경고 기본 루트 저장소를 SG 로컬 저장소에 매핑할 수 없습니다. -pagename: review-error-message-root -lang: ko ---- - -# 경고: 기본 루트 저장소를 SG 로컬 저장소에 매핑할 수 없습니다. - -## 활용 사례 - -드라이브 파일 스트림을 사용하여 프로젝트를 설정하고 Google Drive를 기본 저장소로 사용하려고 하면 프로젝트 마법사가 저장소 구성에 액세스할 때 콘솔에 다음 경고가 표시됩니다. - -`[WARNING] Storage root primary could not be mapped to a SG local storage` - -**계속(continue)**을 눌러도 작동하지 않습니다. - -## 해결 방법 - -이 문제는 저장소 이름에 오타가 있을 때 발생할 수 있습니다. Google Drive의 이름과 정확히 일치하는지 확인하십시오. - -또한 Google Drive를 사용할 때 중복 프로젝트가 나타나지 않도록 파일을 항상 로컬로 유지하도록 설정되어 있는지 확인하십시오. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/11185) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md b/docs/ko/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md deleted file mode 100644 index 4b60c561e..000000000 --- a/docs/ko/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 컨텍스트에 대한 템플릿 데이터를 확인할 수 없습니다. -pagename: tankerror-cannot-resolve-template-data-error -lang: ko ---- - -# TankError: 컨텍스트에 대한 템플릿 데이터를 확인할 수 없습니다. - -## 활용 사례 - -새 프로젝트에서 고급 프로젝트 설정을 수행하고 {% include product %} 데스크톱의 독립 실행형 Publisher 앱을 사용하여 작성한 새 에셋 태스크에 대한 일부 이미지를 게시할 때 게시를 확인할 컨텍스트를 선택하면 다음과 같은 오류가 표시됩니다. - - -``` -creation for %s and try again!" % (self, self.shotgun_url)) -TankError: Cannot resolve template data for context ‘concept, Asset door-01’ - this context does not have any associated folders created on disk yet and therefore no template data can be extracted. Please run the folder creation for and try again! -``` - -터미널에서 `tank.bat Asset door-01 folders`를 실행하여 이 문제를 해결했습니다. 하지만 이전 프로젝트에서는 이런 오류가 발생한 적이 없습니다. - -## 해결 방법 - -이 오류는 DCC를 먼저 수행하지 않고 새 엔티티/태스크에 대해 독립 실행형 게시를 처음으로 시도하는 것이 그 원인일 수 있습니다. - -이전에는 이러한 문제가 발생하지 않았을 수 있는 이유는 독립 실행형 Publisher를 사용하기 전에 소프트웨어에서 에셋에 대한 작업을 시작했기 때문에 폴더가 이미 생성/동기화되었기 때문입니다. (툴킷을 통해) 소프트웨어를 실행하면 실행하는 컨텍스트에 대한 폴더가 생성되고, 열린 앱은 새 파일을 시작하는 컨텍스트에 대한 폴더를 만듭니다. 따라서 일반적으로 폴더를 특별히 만들 필요가 없습니다. - -일반적으로 스튜디오는 {% include product %}에 샷/에셋이 추가된 후 수동으로 폴더를 생성하는 것이 일반적입니다. - -또한 "폴더 스키마"의 영향을 받으므로 템플릿과 완전히 일치하지 않는 경우 이상한 문제가 발생할 수 있습니다. - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/tank-folder-creation/8674/5) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md b/docs/ko/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md deleted file mode 100644 index 81ff0b0ba..000000000 --- a/docs/ko/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: TankError 템플릿에서 경로를 확인하려고 시도했습니다. -pagename: tank-error-tried-to-resolve-a-path -lang: ko ---- - -# TankError: 템플릿에서 경로를 확인하려고 시도했습니다. - -## 활용 사례 1 - -SGTK에 대한 새 구성을 설정하고 파일 열기(File Open) 대화상자(tk-multi-workfiles2에서)를 통해 새 파일을 작성하려고 하면 다음 오류가 발생합니다. - -``` -TankError: Tried to resolve a path from the template > -# ('animal', 'dog') -# ('age', '3') -# ('args', ('needs a bath',)) -``` - -Maya를 사용 중이면 다음과 같은 작업을 수행할 수 있습니다. - -```python -import sgtk - -# get the engine we are currently running in. -engine = sgtk.platform.current_engine() -# Run the app. -engine.commands['print_animal']['callback']("unicorn",4,"it's soooo fluffy!!!!") - ->> -# ('animal', 'unicorn') -# ('age', 4) -# ('args', ("it's soooo fluffy!!!!",)) -``` - -## 오류 메시지 - -Maya의 메뉴에서 앱을 시작하려고 하면 다음과 같은 오류가 발생합니다. - -``` -// Error: Shotgun tk-maya: An exception was raised from Toolkit -Traceback (most recent call last): - File "/Users/philips1/Library/Caches/Shotgun/bundle_cache/app_store/tk-maya/v0.10.1/python/tk_maya/menu_generation.py", line 234, in _execute_within_exception_trap - self.callback() - File "/Users/philips1/Library/Caches/Shotgun/mysite/p89c1.basic.maya/cfg/install/core/python/tank/platform/engine.py", line 1082, in callback_wrapper - return callback(*args, **kwargs) -TypeError: run_method() takes at least 3 arguments (1 given) // -``` - -이는 앱이 인자를 요구하도록 설정되어 있고 메뉴 버튼은 인자를 제공하도록 설정되어 있지 않기 때문입니다. - -## 해결 방법 - -다음과 같은 키워드 인자를 사용하도록 앱의 `run_method`를 작성하는 것이 좋습니다. - -```python - def run_method(self, animal=None, age=None, *args): - print ("",animal) - print ("age",age) - print ("args", args) -``` -그러면 인자가 제공되지 않을 경우 발생하는 문제를 처리하고 폴백 동작을 구현할 수 있습니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/custom-app-args/8893)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md b/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md deleted file mode 100644 index 1d04e342e..000000000 --- a/docs/ko/quick-answers/troubleshooting/turn-debug-logging-on.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: default -title: 디버그 로깅을 어떻게 켭니까? -pagename: turn-debug-logging-on -lang: ko ---- - -# 디버그 로깅을 어떻게 켭니까? - -기본적으로 툴킷 도구 출력보다 많은 로깅 데이터를 보고 싶을 때가 있습니다. **디버그 로깅**을 활성화하면 자세한 로그 출력을 얻을 수 있으며 이를 수행하는 몇 가지 방법이 있습니다. - -{% include info title="참고" content="로그 파일을 어디서 찾아야 할지 모르십니까? [로그 파일은 어디에 있습니까?](./where-are-my-log-files.md) 문서를 참조하십시오." %} - -## {% include product %} 데스크톱을 통해 디버깅 활성화 - -디버깅을 활성화하는 가장 쉬운 방법은 {% include product %} 데스크톱 앱을 통해 켜는 것입니다. {% include product %} 데스크톱에 로그인하고 나면 설정할 수 있습니다. 앱 오른쪽 아래에 있는 프로파일 사진을 클릭하고 **고급(Advanced) -> 디버그 로깅 토글(Toggle Debug Logging)**을 선택합니다. 이 설정은 세션 간에 영속적이기 때문에 작업을 마치면 끄는 것을 잊지 마십시오. - -![SG 데스크톱에서 디버그 로깅 토글](images/desktop-enable-debug-logging.png) - -이 기능을 켜면 {% include product %} 데스크톱에서 실행한 앱 또는 브라우저 통합을 통한 툴킷 명령도 이 디버그 상태를 상속한다는 점에도 유의하십시오. - -## 환경 변수 설정 - -### 디버그 로깅 영구적으로 켜기 - -먼저 새 환경 변수 `TK_DEBUG=1`을 설정해야 합니다. - -{% include info title="참고" content="플랫폼에 따라 지침이 다르므로 스튜디오의 기술 전문가와 환경 변수를 설정하는 방법을 논의하는 것이 좋습니다. 어쨌든 아래 예에는 Windows 7 컴퓨터에서 환경 변수를 설정하는 방법이 나와 있습니다." %} - -#### Windows 7 사용 예시 - -- **Windows 아이콘 > 제어판 > 시스템 > 고급 시스템 설정 > 환경 변수... > 새로 만들기...**로 이동하여 디버그 로깅을 영구적으로 켤 수 있습니다. - -![Windows 환경 변수 설정](images/windows-setting-environment-variable.png) - - -- **변수 이름**: `TK_DEBUG` -- **변수 값**: `1` -- 확인을 선택합니다. - -이제 환경 변수가 올바로 설정되고, 디버그 로깅이 켜졌습니다. - -{% include info title="참고" content="로깅이 진행되도록 하려면 데스크톱을 다시 시작하십시오." %} - -디버그 로깅을 끄고 싶으면 다음을 수행합니다. - -a. `TK_DEBUG` 환경 변수 값을 0으로 설정합니다. - -b. `TK_DEBUG` 환경 변수를 삭제합니다. - -### 이 환경 변수가 이미 설정되어 있는지 확인 - -이 환경 변수가 이미 설정되어 있는지 확인하려면 터미널을 열고 `set` 명령을 실행합니다. - -그런 다음, `TK_DEBUG=1`을 검색합니다. - -그러면 데스크톱을 실행하고 나면 디버그 로깅이 켜집니다. - -### 디버그 로깅 일시적으로 켜기 - -대신 세션 동안에만 일시적으로 디버그 로깅을 사용하고 싶다면 터미널을 열고 `set TK_DEBUG=1` 명령을 통해 디버그 로깅을 설정하면 됩니다. - -그런 다음, 터미널을 통해 데스크톱을 실행합니다. - -{% include info title="참고" content="ShotGrid 데스크톱과 터미널을 닫으면 디버그 로깅이 더 이상 켜진 상태로 유지되지 않습니다." %} - - - -## 고급 구성 디버그 로깅 옵션 - -고급 설정을 사용 중인 경우 몇 가지 옵션을 더 사용할 수 있습니다. 이 기능은 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있습니다. - -모든 엔진은 환경 파일에 `debug_logging` 설정이 있습니다. 이 설정을 켜면 추가 디버그 레벨 로그 메시지가 소프트웨어(예: Nuke 또는 Maya의 스크립트 편집기)의 기본 출력으로 전송됩니다. 엔진에서 실행 중인 모든 앱이 이 디버그 레벨 메시지를 전송하기 때문에 엔진에 대해 이 설정을 켜면 결국 모든 앱에 대해서도 켜는 셈입니다. - -이렇게 해도 파일로 어떤 로그 메시지를 출력하지는 않습니다. 이를 가능하게 할 추가 표준 로깅 프레임워크를 구현하기 위해 작업 중입니다. 예외는 [{% include product %} 데스크톱](https://developer.shotgridsoftware.com/ko/d587be80/#getting-started-with-desktop) 및 [Photoshop 엔진](https://developer.shotgridsoftware.com/ko/8d461cbe/)이며 GUI 콘솔과 파일 모두에 출력을 로깅합니다. - -### 소프트웨어의 엔진에 대해 디버그 로깅 켜기 - -예를 들어, 샷 단계 환경의 Nuke 엔진에 대해 디버깅 출력을 켜려면 환경 파일에서 Nuke 엔진(`tk-nuke`) 섹션을 찾아 설정을 `debug_logging: true`로 업데이트합니다. - -`config/env/shot_step.yml`을 편집합니다. - -```yaml -engines: - ... - ... - tk-nuke: - apps: - ... - ... - compatibility_dialog_min_version: 9 - debug_logging: true - favourite_directories: [] - location: {name: tk-nuke, type: app_store, version: v0.2.23} - ... - ... -``` - -파일을 저장하고 샷 단계 환경에서 Nuke를 다시 실행합니다. 이제 스크립트 편집기 창에서 디버그 출력을 볼 수 있을 것입니다. - -{% include info title="참고" content="디버그 로깅이 ShotGrid 데스크톱 체크박스, 환경 변수 또는 엔진 구성 설정 중 하나를 통해 활성화된 경우 디버그 로깅이 출력됩니다. 또한 이러한 세 가지 각각의 설정은 서로 독립적으로 수정됩니다. 체크박스 값은 엔진 설정이나 환경 변수에 전혀 관계없이 영구적인 앱 설정입니다. 즉, 데스크톱 체크박스를 선택 취소해도 다른 방법 중 하나를 통해 디버그 로깅이 계속 활성화되어 있을 수 있다는 의미입니다." %} - -### tank 명령에 대해 디버그 로깅 켜기 - -tank 명령을 실행 중인데 터미널에서 디버그 출력을 보고 싶다면 실행 중인 명령과 함께 `--debug` 옵션을 사용하면 됩니다. 그러면 해당 명령에 대해 디버그 로깅이 켜집니다. - - . /tank --debug core DEBUG [10:11:38 617.835998535]: DEBUG [10:11:38 618.768930435]: Running with debug output enabled. - DEBUG [10:11:38 618.921995163]: DEBUG [10:11:38 619.092941284]: Core API resides inside a (localized) pipeline configuration. - DEBUG [10:11:38 619.235992432]: Full command line passed: ['/sgtk/software/shotgun/scarlet/install/core/scripts/tank_cmd.py', '/sgtk/software/shotgun/scarlet', '--debug', 'core'] DEBUG [10:11:38 619.364023209]: DEBUG [10:11:38 619.463920593]: DEBUG [10:11:38 619.575977325]: Code install root: /sgtk/software/shotgun/scarlet DEBUG [10:11:38 619.678020477]: Pipeline Config Root: /sgtk/software/shotgun/scarlet DEBUG [10:11:38 619.756937027]: DEBUG [10:11:38 619.826078415]: DEBUG [10:11:38 619.905948639]: DEBUG [10:11:38 619.978904724]: Context items: ['/sgtk/software/shotgun/scarlet'] DEBUG [10:11:38 620.06688118]: Command: core DEBUG [10:11:38 620.129108429]: Command Arguments: [] DEBUG [10:11:38 620.193004608]: Sgtk Pipeline Config Location: /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' - The path is not associated with any Shotgun object. - - Falling back on default project settings. - DEBUG [10:11:39 125.463962555]: Sgtk API and Context resolve complete. - DEBUG [10:11:39 126.449108124]: Sgtk API: Sgtk Core v0.15.18, config /sgtk/software/shotgun/scarlet DEBUG [10:11:39 126.588106155]: Context: scarlet - Using configuration 'Primary' and Core v0.15.18 - Setting the Context to scarlet. - DEBUG [10:11:39 129.276990891]: 이 명령의 경우 엔진을 로드할 필요가 없습니다. - - 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/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md deleted file mode 100644 index d34dca766..000000000 --- a/docs/ko/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 두 개의 익스텐션이 설치된 경우 Photoshop 통합 문제 해결 -pagename: two-photoshop-shotgun-extensions -lang: ko ---- - -# 두 개의 익스텐션이 설치된 경우 Photoshop 통합 문제 해결 - -## 어떤 문제가 있습니까? - -After Effects 통합 릴리즈에는 {% include product %}와 통합되는 모든 Adobe 앱에서 사용할 수 있는 공통 플러그인이 있습니다. 이를 구현하는 과정에서, 이전 Photoshop 통합과의 호환성을 유지하고 스튜디오에서 확실하게 해당 업데이트로 전환할 수 있도록 하기 위해 익스텐션의 이름을 변경해야 했습니다. - -하지만 이로 인해 업그레이드할 때 두 개의 {% include product %} 익스텐션이 설치될 수 있습니다. - -![Photoshop 메뉴에 여러 개의 {% include product %} 익스텐션 표시.](/images/photoshop-extension-panel.png) - -**{% include product %} Adobe Panel**은 새로운 익스텐션으로, `v1.7.0` 이상의 Photoshop 통합을 사용하는 경우에 사용해야 합니다. - -## 문제를 어떻게 해결할 수 있습니까? - -이전 익스텐션을 제거하려면 홈 디렉토리의 Adobe 설치 위치에서 제거할 수 있습니다. 해당 폴더는 Photoshop 시작 시 디버그 출력에서 볼 수 있으며 다음과 같습니다. - -- OSX: `~/Library/Application Support/Adobe/CEP/extensions/com.sg.basic.ps` -- Windows: `%AppData%\Adobe\CEP\extensions\com.sg.basic.ps` - -![Photoshop 메뉴에 여러 개의 {% include product %} 익스텐션 표시.](/images/shotgun-desktop-console-photoshop-extension.png) - -Photoshop을 종료하고 해당 디렉토리를 제거하고 난 후 다시 시작하면 하나의 익스텐션만 확인됩니다. - -{% include info title="참고" content="여러 환경 또는 여러 구성에 Photoshop 통합이 있고 이전 플러그인과 새 플러그인이 혼합된 경우 사용자가 이전 통합을 사용하여 Photoshop을 시작하면 이전 플러그인이 반환됩니다. 한 번에 정리할 수 있도록 전체적으로 Photoshop을 업데이트하는 것이 좋습니다." %} \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md b/docs/ko/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md deleted file mode 100644 index 56c59bb94..000000000 --- a/docs/ko/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: 로컬 발급자 인증서를 가져올 수 없음 -pagename: unable-to-get-local-issuer-certificate-error -lang: ko ---- - -# [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패: 로컬 발급자 인증서를 가져올 수 없음 - -## 활용 사례 - -사용자가 Windows의 Python API를 사용하여 Amazon에서 미디어를 업로드 및 다운로드하는 데 문제가 있습니다. 이 문제는 Python API에서 자체적으로 발생하며 다음 오류 메시지가 표시됩니다. - -``` -shotgun_api3.shotgun.ShotgunFileDownloadError: Failed to open https://xxx.shotgunstudio.com/file_serve/attachment/xyz - -``` -Amazon이 백엔드에서 일부 인증서를 업데이트했습니다. Windows는 일반적으로 새 인증서가 필요한 웹 페이지를 찾을 때 인증서 저장소를 새로 고칩니다. 정기적인 검색 작업이 없는 컴퓨터에서 실행되는 독립 실행형 Python 스크립트는 인증서 업데이트를 검색하지 않으므로 컴퓨터에 상당수의 누락이 발생할 수 있습니다. - -## 해결 방법 - -문제가 있는 시스템에 GUI 액세스 권한이 있는 경우 현재 S3에 저장된 미디어를 재생하기만 하면 인증서 저장소가 업데이트됩니다. 이 재생 솔루션은 Chrome, Internet Explorer, Edge 또는 기타 Chromium 기반 브라우저에서만 작동합니다. 이 재생 솔루션은 Firefox 또는 Safari에서는 작동하지 않습니다. 이러한 브라우저에서는 인증서 유효성 검사에 Windows의 표준 API를 사용하지 않기 때문입니다. - -이 솔루션이 작동하지 않는 사용자 또는 Deadline 렌더 팜과 같이 업데이트할 컴퓨터가 많은 경우 누락된 인증서를 컴퓨터에 추가하는 스크립트도 제공하고 있습니다. [공유한 스크립트에 대한 링크](https://developer.shotgridsoftware.com/ko/c593f0aa/)를 확인하십시오. - -Windows 10의 Powershell 또는 Windows 7의 Powershell 3 사용자의 경우 컴퓨터에서 관리자로 다음 스크립트를 실행하여 새 인증서를 가져올 수 있습니다. - -![Powershell](images/troubleshoot_powershell.png) - -``` -$cert_url = "https://www.amazontrust.com/repository/AmazonRootCA1.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 -``` - -명령이 작동할 경우 다음 내용이 표시되어야 합니다. - -``` - PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root - -Thumbprint Subject ----------- ------- -8DA7F965EC5EFC37910F1C6E59FDC1CC6A6EDE16 CN=Amazon Root CA 1, O=Amazon, C=US -``` - -이렇게 하면 실행되는 컴퓨터의 모든 사용자 계정에 대해 인증서를 사용할 수 있게 됩니다. 관리자 액세스 권한이 없는 경우 마지막 행을 다음과 같이 변경할 수 있습니다. - -``` -Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\CurrentUser\Root -``` - -그러면 인증서가 현재 사용자에 대해서만 추가됩니다. - -아직 `cmd.exe`를 사용하는 경우 `certutil`을 사용할 수도 있습니다. 먼저 `https://www.amazontrust.com/repository/AmazonRootCA1.cer`에서 인증서를 다운로드하여 컴퓨터에 저장해야 합니다. - -그런 다음 관리 모드에서 명령 프롬프트를 시작합니다. - -![관리 모드](images/troubleshoot_admin_mode.png) - -다음 행을 실행합니다. - -``` -certutil -addstore root -``` - -이렇게 하면 인증서를 모든 사용자 계정에 사용할 수 있습니다. 관리자 액세스 권한이 없는 경우에는 다음과 같이 `-user`를 추가하여 현재 사용자에 대해서만 인증서를 설치할 수 있습니다. - -``` -certutil -user -addstore root -``` - -## 관련 링크 - -[커뮤니티에서 전체 스레드 참조](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860) \ No newline at end of file diff --git a/docs/ko/quick-answers/troubleshooting/unreal-proxy-error-message.md b/docs/ko/quick-answers/troubleshooting/unreal-proxy-error-message.md deleted file mode 100644 index c817c5602..000000000 --- a/docs/ko/quick-answers/troubleshooting/unreal-proxy-error-message.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: __commands::unreal_engine을 호출하는 동안 오류 발생 -pagename: unreal-proxy-error-message -lang: ko ---- - -# `[ERROR] [PROXY]` __commands::unreal_engine]을 호출하는 동안 오류 발생 - -## 활용 사례: - -{% include product %} 데스크톱 앱을 설정하고 {% include product %} 앱에 UE4를 표시할 수 있게 된 후 Unreal을 실행하려고 하면 다음 메시지가 표시됩니다. - -``` -2020-06-06 03:22:24,246 [ ERROR] [PROXY] Error calling __commands::unreal_engine_4.24.3((), {}): -Traceback (most recent call last): -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-desktop\v2.4.12\python\tk_desktop\desktop_engine_project_implementation.py”, line 164, in _trigger_callback -callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\babilgames\p91c38.basic.desktop\cfg\install\core\python\tank\platform\engine.py”, line 1084, in callback_wrapper -return callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 125, in launch_version -*args, **kwargs -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 343, in _launch_callback -“Could not create folders on disk. Error reported: %s” % err -TankError: Could not create folders on disk. Error reported: Could not resolve row id for path! Please contact support! trying to resolve path ‘D:\UEProjects\SON\D:\UEProjects\SON’. Source data set: [{‘path_cache_row_id’: 2, ‘path’: ‘D:\UEProjects\SON’, ‘metadata’: {‘root_name’: ‘primary’, ‘type’: ‘project’}, ‘primary’: True, ‘entity’: {‘type’: ‘Project’, ‘id’: 91, ‘name’: ‘SON’}}] - -``` - -## 오류의 원인은 무엇입니까? - -디스크의 UE4 프로젝트 경로(`D:\UEProjects\PROJECT_NAME\`)가 잘못되었습니다. - -## 해결 방법 - -{% include product %} 설정에 대한 새 폴더를 만들면 문제가 해결됩니다. - -[커뮤니티에서 전체 스레드를 참조](https://community.shotgridsoftware.com/t/error-launching-ue4-from-shotgun/8938)하십시오. - diff --git a/docs/ko/quick-answers/troubleshooting/where-are-my-log-files.md b/docs/ko/quick-answers/troubleshooting/where-are-my-log-files.md deleted file mode 100644 index 6f9c080b0..000000000 --- a/docs/ko/quick-answers/troubleshooting/where-are-my-log-files.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 로그 파일은 어디에 있습니까? -pagename: where-are-my-log-files -lang: ko ---- - -# 로그 파일은 어디에 있습니까? - -기본적으로 {% include product %} 데스크톱 및 통합은 로그 파일을 다음 디렉토리에 저장합니다. - -**Mac** - -`~/Library/Logs/Shotgun/` - -**Windows** - -`%APPDATA%\Shotgun\logs\` - -**Linux** - -`~/.shotgun/logs/` - -로그 파일 이름의 형식은 `tk-.log`입니다. 예를 들면 `tk-desktop.log` 또는 `tk-maya.log`입니다. - -[`{% include product %}_HOME` 환경 변수](http://developer.shotgunsoftware.com/tk-core/utils.html#localfilestoragemanager)를 설정하여 사용자의 캐시 위치를 재정의한 경우 로그 파일이 `$SHOTGUN_HOME/logs`에 위치하게 됩니다. - -{% include info title="참고" content="ShotGrid 데스크톱에서도 이 디렉토리에 액세스할 수 있습니다. 프로젝트를 선택하고, 프로젝트 이름 오른쪽에 있는 아래쪽 화살표 버튼을 클릭하고, **로그 폴더 열기(Open Log Folder)**를 선택하면 됩니다." %} diff --git a/docs/ko/quick-answers/workflow.md b/docs/ko/quick-answers/workflow.md deleted file mode 100644 index ee48ab39d..000000000 --- a/docs/ko/quick-answers/workflow.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: 워크플로우 -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 deleted file mode 100644 index af88b2d6d..000000000 --- a/docs/ko/quick-answers/workflow/version-publishedfile-difference.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: 버전과 게시된 파일 간의 차이점은 무엇입니까? -pagename: version-publishedfile-difference -lang: ko ---- - -# 버전과 게시된 파일 간의 차이점은 무엇입니까? - -**"게시"**는 디스크에 저장되어 응용프로그램 내에서 사용할 수 있는 파일(또는 이미지 시퀀스)이나 데이터를 의미합니다. exr 시퀀스, abc, Maya 파일 등이 여기에 포함될 수 있습니다. 게시는 ShotGrid 내에서 `PublishedFile` 엔티티로 표현됩니다. - -**"버전"**(ShotGrid 내 `Version` 엔티티)은 게시의 시각적 표현이며 리뷰 및 노트 작성에 사용됩니다. `Version` 엔티티에는 게시된 파일이라고 하는 필드가 있습니다. 이 필드에는 서로 연결할 게시 레코드의 수를 입력할 수 있습니다. 이를 통해 어떠한 리뷰 `Version`이 게시 그룹과 연결되는지 트래킹할 수 있습니다. 게시할 때 이 관계를 입력하는 것이 좋습니다. 버전은 ShotGrid 내에서 `Version` 엔티티로 표현됩니다. - -궁극적인 아이디어는 게시할 때 파일 모음, 그러니까 대개 파일 형식은 다르지만 실질적으로 같은 내용을 가진 파일(Maya 파일, obj, alembic 등)을 생성할 수 있도록 하는 것입니다. 그리고 결국 이 파일들은 모두 같은 것을 서로 다르게 표현한 것입니다. 그런 후 이 파일들은 게시 데이터 미리보기 및 노트 작성을 위해 단일 리뷰 `Version`과 연결됩니다. - -게시된 데이터가 이미지 시퀀스인 경우에는 이 아이디어가 조금 쓸모없어질 수 있습니다. 사실 이미지 시퀀스는 리뷰하려는 것이기도 하면서 파이프를 따라 전송될 것이기도 합니다. 이 경우 게시와 `Version` 모두를 "더블 업"하고 생성해야 할 수 있습니다. 그러면 Loader 앱 등을 통해 `Version`을 표현하는 게시된 데이터를 로드할 수 있습니다. - diff --git a/docs/ko/reference/api/images/dv-api-permissions-ApiPermGroup-02.png b/docs/ko/reference/api/images/dv-api-permissions-ApiPermGroup-02.png deleted file mode 100644 index dda6d9ae5..000000000 Binary files a/docs/ko/reference/api/images/dv-api-permissions-ApiPermGroup-02.png and /dev/null differ diff --git a/docs/ko/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png b/docs/ko/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png deleted file mode 100644 index a1c68d3a3..000000000 Binary files a/docs/ko/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png and /dev/null differ diff --git a/docs/ko/reference/api/images/dv-developers-api-01-scripts-01.png b/docs/ko/reference/api/images/dv-developers-api-01-scripts-01.png deleted file mode 100644 index 80b420c4b..000000000 Binary files a/docs/ko/reference/api/images/dv-developers-api-01-scripts-01.png and /dev/null differ diff --git a/docs/ko/reference/api/images/dv-manage-scripts-application-key-02.png b/docs/ko/reference/api/images/dv-manage-scripts-application-key-02.png deleted file mode 100644 index eda107708..000000000 Binary files a/docs/ko/reference/api/images/dv-manage-scripts-application-key-02.png and /dev/null differ diff --git a/docs/ko/reference/api/images/dv-manage-scripts-script-01.png b/docs/ko/reference/api/images/dv-manage-scripts-script-01.png deleted file mode 100644 index 7b2701b35..000000000 Binary files a/docs/ko/reference/api/images/dv-manage-scripts-script-01.png and /dev/null differ diff --git a/docs/ko/reference/api/python-api-best-practices.md b/docs/ko/reference/api/python-api-best-practices.md deleted file mode 100644 index 2e674f896..000000000 --- a/docs/ko/reference/api/python-api-best-practices.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Python API 모범 사례 -pagename: python-api-best-practices -lang: ko ---- - -# Python API 모범 사례 - - -다음은 {% include product %} Python API 사용 시의 모범 사례 목록입니다. - -## 성능 - -1. 스크립트에 필요하지 않은 필드를 요청하지 않습니다. 추가 필드를 포함하면 요청에 불필요한 오버헤드가 추가될 수 있습니다. -2. 필터는 최대한 구체적으로 만듭니다. 가능하면 결과를 얻은 후에 분석하는 것보다 API 쿼리에서 필터링하는 것이 좋습니다. -3. 정확한 일치 필터는 부분 일치 필터보다 성능이 우수합니다. 예를 들어 "포함(contains)"보다 "일치함(is)"을 사용하는 것이 더 좋습니다. - -## 제어 및 디버깅 - -1. 스크립트에는 별도의 키를 사용하므로 모든 도구에 대해 고유한 키를 사용합니다. 이는 디버깅에 매우 중요합니다. -2. 모든 스크립트에는 소유자 또는 관리자(Admin)가 있어야 하며 관리자(Admin) 메뉴에서 스크립트(Scripts) 페이지의 정보는 최신 상태여야 합니다. -3. [API 사용자용 읽기 전용 권한 그룹](https://developer.shotgridsoftware.com/ko/bbae2ca7/)을 만드는 것이 좋습니다. 많은 스크립트는 읽기 액세스 권한만 필요하므로 실수로 변경되는 경우를 제한할 수 있습니다. -4. 사용 중인 키를 트래킹하여 이전 스크립트를 제거할 수 있습니다. 이 작업을 쉽게 하기 위해 일부 스튜디오는 API 래퍼로 감사 정보를 스크립팅합니다. -5. 엔티티 이름과 필드를 확인합니다. {% include product %}의 각 필드 이름은 UI에서 사용되는 표시 이름(반드시 고유하지는 않음)과 API에서 사용되는 내부 필드 이름, 두 가지가 있습니다. 표시 이름은 언제든지 변경할 수 있기 때문에 표시 이름에서 필드 이름을 안정적으로 예측할 수 없습니다. 관리자(Admin) 메뉴의 필드 옵션으로 이동하여 필드 이름을 보거나 [http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema](http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema)에서 설명한 대로 `schema_read(), schema_field_read(), schema_entity_read() methods`를 사용할 수 있습니다. - -## 디자인 - -1. 큰 스튜디오의 경우 특히 API 격리 레이어(래퍼)를 사용하는 것이 좋습니다. 이렇게 하면 {% include product %} API가 변경되지 않도록 도구가 격리됩니다. 또한 API 액세스를 제어하고 디버깅을 관리하며 감사를 트래킹할 수 있음을 의미합니다. API 자체를 수정할 필요가 없습니다. -2. 최신 버전의 API를 사용합니다. 최신 버전에는 버그 수정 및 성능 향상이 포함됩니다. -3. 스크립트가 실행되는 위치를 알고 있어야 합니다. {% include product %}에 동일한 정보를 분당 1000번 호출하는 렌더 팜에서 실행되는 스크립트는 사이트 성능에 영향을 줄 수 있습니다. 이와 같은 경우 불필요하게 반복되는 호출을 줄이기 위해 읽기 전용 캐싱 레이어를 구현하는 것이 좋습니다. -4. 스크립트의 이벤트 생성을 해제할 수 있습니다. 이는 나중에 트래킹할 필요가 없는 이벤트를 자주 실행하는 스크립트에 가장 유용합니다. 매우 자주 실행되는 스크립트의 경우 이벤트 로그가 매우 커질 수 있으므로 이 방법을 사용하는 것이 좋습니다. \ No newline at end of file diff --git a/docs/ko/reference/api/python-api-create-manage.md b/docs/ko/reference/api/python-api-create-manage.md deleted file mode 100644 index da63b05f9..000000000 --- a/docs/ko/reference/api/python-api-create-manage.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: API 스크립트 만들기 및 관리 -pagename: python-api-create-manage -lang: ko ---- - -# API 스크립트 만들기 및 관리 - - -아래 단계에 따라 새 스크립트를 만듭니다. - -1. 관리자(Admin) 메뉴로 이동하여 "스크립트(Scripts)"를 선택합니다. - ![스크립트](/images/dv-manage-scripts-script-01.png) -2. "+ 스크립트(+ Script)" 버튼을 사용하여 새 스크립트를 만듭니다. -3. 응용프로그램 키 값을 확인합니다. {% include product %}에 연결하려면 이 값이 필요합니다. - ![응용프로그램 키](/images/dv-manage-scripts-application-key-02.png) - - > **참고:** API 키는 암호처럼 처리되고 생성된 후에는 {% include product %} 웹 앱 또는 API를 통해 다시 볼 수 없습니다. 계속하기 전에 키를 복사해야 합니다. - -4. 이제 스크립트 키를 사용하여 {% include product %}에 연결할 수 있습니다. 스크립트를 사용하여 {% include product %}에 연결하는 방법에 대한 자세한 내용은 [API 설명서에 있는 "{% include product %} 메서드"](http://developer.shotgridsoftware.com/python-api/reference.html#shotgun-methods)를 참조하십시오. - -> **팁:** 어떤 이유로 스크립트의 응용프로그램 키를 재설정해야 하는 경우 이를 수행하려면 새 {% include product %} 스크립트 엔티티를 만들어야 합니다. 먼저 기존 스크립트의 이름을 변경(예: "[My Script]—OLD")한 다음 이를 삭제합니다. 새 스크립트를 만듭니다. 이전 스크립트의 이름을 변경해야 하는 이유는 {% include product %} 소프트웨어가 각 스크립트에 대해 고유한 이름을 요구하기 때문입니다. - -## 새 스크립트를 설정해야 하는 경우 - -스크립트 액션은 기록될 수 있습니다. 개별 스크립트 키를 보다 세밀하게 사용할수록 디버깅용으로 변경되는 스크립트를 쉽게 트래킹할 수 있습니다. 별도의 스크립트를 사용하면 {% include product %}사이트의 변경에 영향을 받는 스크립트 및 스크립트 관리자를 트래킹하기 좋습니다. \ No newline at end of file diff --git a/docs/ko/reference/api/python-api-overview.md b/docs/ko/reference/api/python-api-overview.md deleted file mode 100644 index 491cbfd8d..000000000 --- a/docs/ko/reference/api/python-api-overview.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: API 개요 -pagename: python-api-overview -lang: ko ---- - -# API 개요 - -**참고:** {% include product %} API에 대한 자세한 내용은 [API 설명서](http://developer.shotgridsoftware.com/python-api/)를 참조하십시오. - -{% include product %} Python API(응용프로그램 인터페이스)를 통해 사용자는 {% include product %} 소프트웨어와 자신의 도구를 쉽게 통합할 수 있습니다. 이를 통해 자동화된 프로세스를 만들고, 많은 타사 소프트웨어 패키지와 통합하며, 스튜디오 내 기존 도구와 통신할 수 있습니다. 스튜디오마다 요구 사항이 매우 다르기 때문에 {% include product %} API는 강력한 로우 레벨 기능을 제공하며 대부분의 비즈니스 로직을 유지합니다. - -API는 미디어 및 엔터테인먼트 업계 전반에 널리 사용되는 공통 프로그래밍 언어인 [Python](https://www.python.org/)을 사용하여 빌드됩니다. 사용자의 {% include product %} 사이트에서 [{% include product %} Python API](https://github.com/shotgunsoftware/python-api)를 무료로 사용할 수 있습니다. - -API는 CRUD 패턴을 따르므로 스크립트가 단일 엔티티 유형에 대한 만들기, 읽기, 업데이트 및 삭제 액션을 실행할 수 있습니다. 많은 작업에는 필터, 반환할 열 및 정렬 결과를 정의하는 기능이 포함됩니다. - -API를 통해 {% include product %} 서버와 통신하기 위해 사용자의 자격 증명을 제공하거나 스크립트 키를 사용해 서버로 스크립트를 인증할 수 있습니다. 관리자(Admin) 메뉴에 나열된 스크립트(Scripts) 페이지에서 새 스크립트 키를 생성할 수 있습니다. - -![스크립트](/images/dv-developers-api-01-scripts-01.png) - -**팁:** 스크립트를 별도로 등록하여 각각에 대해 개별 API 키를 생성합니다. 이렇게 하면 [이벤트 로그](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_event_logs_html)에서 각 스크립트와 스크립트가 수행하는 액션을 훨씬 정확하게 모니터링할 수 있습니다. - -## 일반적인 첫 번째 프로젝트 - -API는 [https://github.com/shotgunsoftware/python-api](https://github.com/shotgunsoftware/python-api)에서 다운로드할 수 있습니다. 다음은 몇 가지 일반적인 첫 번째 프로젝트입니다. - -1. [버전을 만들고 샷에 링크](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_create_version_link_shot.html). 리뷰를 위해 새 렌더의 제출을 자동화할 수 있습니다. -2. [썸네일 업로드](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_upload_thumbnail_version.html). 사이트의 모든 항목은 수동으로 추가하지 않고도 최신 썸네일을 보유할 수 있습니다. -3. [SVN과 같은 코드 리포지토리와 {% include product %} 통합](http://developer.shotgridsoftware.com/python-api/cookbook/examples/svn_integration.html) . 프로젝트에 {% include product %} 소프트웨어를 활용하여 모든 소프트웨어 개발을 관리합니다. - -## API를 사용하여 수행할 수 없는 작업 - -* 권한 규칙 액세스 또는 변경(보안상의 이유) -* 페이지 설정 읽기 또는 변경 -* 개별 페이지 또는 위젯에 대한 필터 또는 쿼리 설정 액세스 -* UI와 상호 작용 -* 조건부 형식 지정 규칙 추가, 편집 또는 제거 -* 쿼리 필드 만들기 또는 편집 - -## AMI(액션 메뉴 항목) - -[AMI](https://developer.shotgridsoftware.com/67695b40/)를 통해 {% include product %} 인터페이스 내에서 쉽게 시작할 수 있는 스크립트를 작성할 수 있습니다. AMI는 데이터 행을 마우스 오른쪽 버튼으로 클릭할 때 나타나는 상황에 맞는 메뉴에 표시되는 커스터마이즈 가능한 옵션입니다. 해당 옵션을 클릭하면 상황에 맞는 데이터 덤프를 웹 서버 또는 커스텀 브라우저 프로토콜 처리기로 보내 커스텀 비즈니스 로직을 실행할 수 있습니다. - -다른 엔티티에 다른 AMI를 설정할 수 있으며 프로젝트별 또는 권한 그룹별로 액세스를 제한할 수 있습니다. - -## 이벤트 트리거 데몬 - -{% include product %}에서 액션이 수행될 때마다(사용자 또는 API 스크립트에 의해) 이벤트가 생성됩니다. [이벤트 데몬](https://github.com/shotgunsoftware/shotgunEvents)은 해당 이벤트 스트림을 모니터링한 다음 사용자가 정의한 조건에 따라 특정 API 스크립트를 실행할 수 있습니다. 다음과 같은 예를 들 수 있습니다. - -* 업스트림 태스크 상태에 따라 다운스트림 태스크 상태를 자동으로 변경합니다. -* 값이 변경되면 관련 컷 기간 필드를 다시 계산합니다. -* 샷이 특정 상태로 설정될 때 파일 패키징 및 전송 작업을 수행합니다. - -## 추가 정보 - -{% include product %} API에 대한 자세한 정보는 다음 문서를 참조하십시오. - -* [GitHub에서 {% include product %} API 다운로드](https://github.com/shotgunsoftware/python-api/) -* [{% include product %} API 설명서](http://developer.shotgridsoftware.com/python-api/) -* [{% include product %}-dev 리스트(공개)](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) -* [{% include product %} 이벤트 데몬 샘플 코드](https://github.com/shotgunsoftware/shotgunEvents) -* [이벤트 구동 트리거 작성](https://developer.shotgridsoftware.com/ko/0d8a11d9/) -* [{% include product %} 스키마](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_get_started_ar_shotgun_schema_html) -* [API 모범 사례](https://developer.shotgridsoftware.com/ko/09b77cf4/) - -## 기여 및 협업 - -{% include product %} 소프트웨어로 세계와 공유하고 싶은 놀라운 도구를 만드셨다구요? 훌륭합니다. 정보를 서로 공유하고 협력하고자 하는 사람들이 모여 활발하게 활동하는 [개발자 커뮤니티](https://community.shotgridsoftware.com/)가 있습니다. 참여하려면 다음을 수행하십시오. - -* [{% include product %} 커뮤니티](https://community.shotgridsoftware.com/)에 가입합니다. -* [GitHub](https://github.com/)에 코드를 게시합니다. 코드는 특정 파이프라인에 맞게 작성되지 않고 잘 기술되어야 하며 .txt 또는 .mdk 형식의 읽어보기가 있어야 합니다. -* dev 목록에 링크와 설명을 게시합니다. Dev 커뮤니티 및 {% include product %} 개발자들이 검토한 후 피드백을 제공하고 활발하게 의견을 남길 것입니다. - -우리는 고객이 만든 많은 도구 및 통합을 통해 끊임없이 놀라운 영감을 얻습니다. 여러분도 할 수 있습니다. \ No newline at end of file diff --git a/docs/ko/reference/api/python-api-permissions.md b/docs/ko/reference/api/python-api-permissions.md deleted file mode 100644 index 1e4466f1c..000000000 --- a/docs/ko/reference/api/python-api-permissions.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: API 사용자 권한 그룹 -pagename: python-api-permissions -lang: ko ---- - -# API 사용자 권한 그룹 - - -API 사용자를 위한 별도의 권한 그룹을 만들어 작업자와 마찬가지로 스크립트 및 키에 다른 권한 레벨을 지정할 수 있습니다. - -## API 사용자 페이지 액세스 - -관리자(Admin) 메뉴로 이동하여 권한 - 스크립트(Permissions - Scripts)를 선택합니다. - -![](./images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png) - -사용법은 [](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_site_configuration_ar_permissions_html)을 참조하십시오. - -## API 사용자 권한 그룹 사용 방법 - -초기 API 관리자(Admin) 이외의 API 권한 그룹을 만든 후에는 API 스크립트에 사용할 수 있습니다. - -1. 관리자(Admin) 메뉴에서 "스크립트(Scripts)"를 선택합니다. -2. 권한 그룹(Permission Group) 열을 표시하고 적절한 권한 그룹을 선택합니다. - ![API 권한 그룹](/images/dv-api-permissions-ApiPermGroup-02.png) - -## 예 - -그렇다면 이 권한 그룹을 사용하는 이유는 무엇일까요? 많은 잠재적인 용도가 있지만 다음과 같은 경우에 사용할 수 있습니다. - -**예 1:** 전체 관리자(Admin) 권한이 없는 스튜디오의 누군가에게 API 키를 제공할 수 있습니다. - -**예 2:** 읽기 전용 API 키를 파트너 스튜디오에 제공하여 내 {{ akn_product_name }} 데이터베이스에서 파트너 스튜디오의 {{ akn_product_name }} 데이터베이스로 단방향 동기화를 수행하고 제한된 엔티티 세트만 노출할 수 있습니다. - -**예 3:** 프로젝트당 API 스크립트를 제한할 수 있습니다. - -1. 관리자(Admin) 메뉴를 통해 **권한 - 스크립트(Permissions - Scripts)** 페이지로 이동하여 새 역할을 만듭니다. "할당된 프로젝트만 보기(See Assigned Projects Only)" 고급 권한이 활성화되어 있어야 합니다. 필요한 다른 권한을 조정할 수도 있습니다(예: 특정 엔티티/필드에 대해 읽기 액세스 권한만 필요한 경우). -2. 관리자(Admin) 메뉴를 통해 **스크립트(Scripts)** 페이지로 이동합니다. "프로젝트(Projects)" 필드를 노출합니다. 여기서 프로젝트를 입력하여 스크립트 범위를 제한할 수 있습니다. -3. "권한 그룹(Permission Group)" 필드를 통해 1단계에서 만든 새 프로젝트에 해당 스크립트 권한을 할당해야 합니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations.md b/docs/ko/reference/pipeline-integrations.md deleted file mode 100644 index e11a6b782..000000000 --- a/docs/ko/reference/pipeline-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 파이프라인 통합 구성요소 -pagename: pipeline-integrations-reference -lang: ko ---- - -# 파이프라인 통합 구성요소 - -여기에서는 툴킷 플랫폼의 구성요소에 대한 참조 문서를 찾을 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/env-config-ref.md b/docs/ko/reference/pipeline-integrations/env-config-ref.md deleted file mode 100644 index a5947c913..000000000 --- a/docs/ko/reference/pipeline-integrations/env-config-ref.md +++ /dev/null @@ -1,349 +0,0 @@ ---- -layout: default -title: 환경 구성 참조 -pagename: env-config-ref -lang: ko ---- - -# 환경 구성 참조 - -## 소개 - -툴킷 파이프라인의 핵심에는 환경 구성이 있습니다. 툴킷 파이프라인 구성 내에서 환경 구성 파일은 다양한 DCC 내에서 사용할 수 있는 툴킷 앱을 정의하고 각 설정을 커스터마이즈할 수 있는 곳입니다. 이 문서는 환경 구성 파일의 구조 및 기능을 전체적으로 소개하는 완전한 참조 자료입니다. 이 문서에서는 프로젝트 내에서 다양한 워크플로우를 구성할 수 있게 해 주는 툴킷 *환경*의 개념과 커스터마이즈할 수 있는 항목을 찾는 방법에 대해 설명합니다. - -{% include info title="참고" content="이 문서는 환경 구성 파일에 대한 참조 자료로 사용될 수 있으며 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](./learning-resources/guides/editing_app_setting.md)에서는 구성 설정 편집에 대한 단계별 예제를 확인할 수 있습니다." %} - -## 환경이란? - -{% include product %} 툴킷 플랫폼은 스튜디오 파이프라인을 구축하는 데 일반적으로 사용되는 컨텐츠 작성 소프트웨어를 위해 완전히 커스터마이즈 가능한 통합 세트를 제공합니다. 프로젝트 구성 내에서 통합이 있는 소프트웨어 패키지, 각각 사용 가능한 툴킷 앱, 각 앱에 대한 옵션을 지정하여 스튜디오의 요구 사항에 맞게 아티스트 워크플로우를 구축할 수 있습니다. - -하지만 대부분의 스튜디오 파이프라인에서는 아티스트 유형별로 다른 워크플로우를 사용하는 것이 일반적입니다. 간단한 예로, 에셋 작업 중인 아티스트의 경우 텍스처 페인팅 소프트웨어(예: Mari)를 사용하게 하고 샷 작업 중인 아티스트의 경우에는 컴포지팅 소프트웨어(예: Nuke)를 사용하게 할 수 있습니다. - -소프트웨어 패키지뿐 아니라 동일한 툴킷 앱에 대한 설정도 아티스트별로 다르게 지정할 수 있습니다. 예를 들어 샷 아티스트와 에셋 아티스트 둘 다 [Workfiles 앱](https://developer.shotgridsoftware.com/ko/9a736ee3)을 사용할 수 있지만 샷 아티스트는 샷 엔티티, 에셋 아티스트는 에셋 엔티티와 관련된 파일로만 파일 탐색을 제한할 수 있습니다. - -프로젝트 내에서 이렇게 서로 다른 워크플로우를 지원하기 위해 툴킷은 환경에서 앱과 엔진 구성을 분리합니다. 각 환경에는 소프트웨어 패키지 셋트의 통합과 설정이 모두 공통적으로 포함되어 있습니다. - -위의 예에서 에셋 작업 중인 아티스트는 에셋 단계 환경에서 작업하고 샷 작업 중인 아티스트는 샷 단계 환경에서 작업합니다. 각 환경은 서로 독립적으로 구성되므로 한 프로젝트 내에서 각기 다른 워크플로우를 사용할 수 있습니다. - -## 툴킷의 기본 구성에 대한 참고 사항 - -툴킷은 환경을 구성하는 방식에 있어 매우 자유롭습니다. 이 문서에서는 사용 가능한 모든 옵션을 모두 소개하므로 파이프라인 요구 사항에 가장 적합한 선택을 하는 데 필요한 지식을 얻을 수 있습니다. - -또한 이 문서에서는 [기본 구성](https://github.com/shotgunsoftware/tk-config-default2)이라는 시작점으로 제공되는 파이프라인 구성의 선택 사항에 대해서도 설명합니다. 파이프라인을 커스터마이즈할 준비가 된 경우 첫 번째 단계는 [프로젝트에 대해 편집 가능한 파이프라인 구성을 만드는 것](./learning-resources/guides/editing_app_setting.md)입니다. - -이러한 선택 사항은 일반적인 규칙일 뿐이고 툴킷 워크플로우에 하드코딩되지 않으므로, 기본 구성은 파이프라인을 커스터마이즈한 후 사용할 수 있는 기능을 학습하기 위한 예제로 참조하거나 고유의 구성을 설정하기 위한 모범 사례로 사용하는 것이 좋습니다. 또한 새로운 툴킷 사용자를 위한 시작점으로도 좋으며 몇 가지 규칙을 알아 두면 유용합니다. 이 문서에서는 툴킷 환경 구성의 일반적인 기능과 기본 구성에 특정한 선택 사항을 구분해 두었습니다. 기본 구성의 환경 구조에 대한 자세한 내용은 [읽어보기 파일](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)을 참조하십시오. - -## 파일 위치 - -파이프라인 구성에서 `config/` 디렉토리에는 커스터마이즈할 수 있는 모든 파일 및 폴더가 포함됩니다. `config/`에는 세 개의 하위 디렉토리(`cache`, `core` 및 `env`)가 있습니다. `env` 디렉토리에 환경 구성 파일이 있으므로 이 문서에서는 `config/env`의 파일을 참조합니다. - -![env 폴더 컨텐츠](./images/env-config-ref/1.png) - -기본 구성의 `config/env/`에는 다음 파일이 있습니다. - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -shot_step.yml -``` - -이러한 각 파일이 환경에 해당하며 별도 파일을 사용하면 각 환경을 별도로 구성할 수 있습니다. - -## 툴킷이 현재 환경을 결정하는 방식 - -툴킷은 [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`을 반환하는 경우 툴킷은 `config/env/shot_step.yml`을 사용하여 툴킷 환경을 구성합니다. - -## 커스텀 환경 - -위에 나열된 환경 구성 파일은 기본 구성에서 제공하는 파일입니다. 그러나 일부 스튜디오에서는 다른 환경 또는 추가 환경을 필요로 할 수 있습니다. 예를 들어 스튜디오에서 파이프라인 단계(`asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light` 등)마다 다른 구성 설정을 사용해야 할 수 있습니다. 다행히도 사용 가능한 환경을 완전히 커스터마이즈할 수 있습니다. - -이렇게 하려면 원하는 환경 구성 파일을 `config/env` 디렉토리에 추가해야 합니다. 그런 다음 `pick_environment` 코어 후크를 재지정하여 새 환경을 사용할 때 정의하는 로직에 추가합니다. - -## 기본 구조 - -툴킷의 구성 파일은 [YAML](https://yaml.org/)로 작성됩니다. 모든 번들(앱, 엔진 또는 프레임워크)의 일반적인 구성은 다음과 같은 구조로 되어 있습니다. - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -이 구조를 보여 주는 간단한 예제가 아래에 있습니다(단일 엔진이 있고 엔진 내에 단일 앱이 정의된 환경). 다음은 이 구성에서 `project.yml`의 내용이 될 수 있습니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### 엔진 블록 - -모든 환경 구성 파일은 `engines` 블록으로 시작합니다. 해당 환경에 대해 정의된 모든 엔진이 이 블록 내에 중첩됩니다. - -이 예에서는 하나의 엔진, `tk-maya`만 정의되어 있습니다. 여기에는 두 개의 설정(`apps` 및 `location`)이 나열되어 있습니다. - -`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 -``` - -이 예는 `app_store` 유형의 설명자로, 툴킷이 {% include product %} 앱 스토어에서 지정된 번들을 가져오도록 합니다. `app_store` 유형의 설명자에는 `name` 및 `version` 설정이 있습니다. - -한편, 커스텀 번들을 개발 중이고 스튜디오의 특정 워크플로우에 대한 툴킷 앱을 작성 중인 경우 디스크의 경로에서 직접 가져오고 싶을 수 있습니다. 이 경우 다음과 같이 `dev` 유형의 설명자를 사용합니다. - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` 설명자에는 `app_store` 설명자와 다른 설정이 있습니다. 다른 설정을 가져올 수 있지만 디스크에 있는 앱 위치를 가리키는 `path` 설정으로 간단하게 설정할 수 있습니다. - -사용 가능한 모든 설명자 유형 및 해당 설정에 대한 자세한 내용은 [Toolkit Core API 문서의 설명자 섹션](https://developer.shotgridsoftware.com/tk-core/descriptor.html)을 참조하십시오. - -### 앱 블록 - -앱은 툴킷의 사용자 도구로, 각 앱은 서로 독립적으로 실행할 수 있습니다. 파이프라인 요구 사항에 맞게 사용할 앱을 선택할 수 있으며 엔진 블록 내의 `apps` 설정은 지정된 엔진에서 사용할 수 있는 앱을 정의하는 곳입니다. - -위 예제에서 `apps` 설정은 다음과 같습니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -단일 앱인 `tk-multi-workfiles2` 앱이 정의되어 있는 것을 확인할 수 있습니다. 현재는 하나의 설정(설명자)만 정의되어 있습니다. - -`project` 환경의 `tk-maya` 엔진에서 다른 앱을 사용할 수 있도록 하려면 여기에 추가합니다. 엔진에 패널 `tk-multi-shotgunpanel` 및 앱 정보 `tk-multi-about`을 추가해 보겠습니다. `project.yml` 예제 파일은 이제 다음과 같이 표시됩니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -이때 다음과 같은 몇 가지 중요 사항에 유의해야 합니다. - -* 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. -* 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. -* 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. - -마지막 두 가지 문제점을 해결하기 위해 툴킷 구성은 *includes*를 지원합니다. - -### Includes - -*includes*는 구성에서 한 파일의 섹션을 다른 파일에서 참조할 수 있게 해 줍니다. includes를 사용하면 한 곳에서 구성 설정을 설정한 후 여러 환경에서 사용할 수 있습니다. - -includes는 두 부분으로 구성됩니다. - -* `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. -* 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. - -위의 예제를 구체화하기 위해 모든 엔진에 대한 위치 설명자가 있는 단일 파일이 있다고 가정합니다. 이 파일을 `includes` 하위 폴더에 넣고 `engine_locations.yml`로 지정하겠습니다. - -`engine_locations.yml`의 내용은 다음과 같습니다. - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -이 파일은 모든 엔진 위치에 대한 단일 소스 역할을 하며 모든 환경 구성에서 참조할 수 있습니다. 이 포함 파일을 사용할 경우 예제는 이제 다음과 같이 표시됩니다. - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations include file](./images/env-config-ref/2.png) - -`tk-maya` 엔진에 대한 `location` 설정 값이 이제 포함된 YAML 파일의 키에 대한 참조임을 확인할 수 있습니다. - -{% include info title="참고" content="이 예제에서와 같이 `config/env/includes/engine_locations.yml` 파일에 모든 엔진 위치가 있는 기본 구성의 규칙을 따릅니다." %} - -앱 위치에 대한 두 번째 포함 파일을 추가할 수 있으며 사실 기본 구성은 이 작업을 수행합니다. 예제를 확장해 보겠습니다. - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -이제 포함된 `engine_locations.yml` 파일에서 `tk-maya` 엔진의 설명자를 가져오고 포함된 `app_locations.yml` 파일에서 `tk-maya` 엔진에 대해 정의된 각 앱의 설명자를 가져옵니다. - -{% 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`을 제외하고 앱에 대한 어떤 설정도 지정하지 않았습니다. 따라서 구성의 현재 상태에서 세 개의 앱은 모든 설정에 대해 기본값을 사용합니다. 그렇다면 어떤 구성 설정을 사용할 수 있는지 어떻게 알 수 있을까요? - -{% include info title="참고" content="툴킷 구성이 스파스일 필요는 없지만 기본 구성은 스파스 구성입니다." %} - -## 사용 가능한 구성 설정 확인 - -스파스 구성의 경우 단순히 구성 파일을 보는 것만으로는 앱에 대해 사용할 수 있는 구성 설정을 바로 확인할 수 없습니다. 사용 가능한 앱 구성 설정을 확인하려면 두 가지 방법이 있습니다. - -* **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://developer.shotgridsoftware.com/ko/9a736ee3)할 수 있습니다. [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/9a736ee3)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. -* **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `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))에서 찾을 수 있습니다. - -## 구성 설정 수정 - -기본값에서 구성을 수정하려면 파이프라인의 구성에서 적절한 환경의 적절한 블록에 추가하고 값을 설정하면 됩니다. - -예제로 돌아가 프로젝트 환경에서 Maya를 시작할 때 `tk-multi-workfiles2`가 자동으로 시작되도록 구성한다고 가정해 보겠습니다. [앱의 매니페스트](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)에서 응용프로그램 시작 시 Workfiles UI 시작 여부를 제어하는 `launch_at_startup` 설정이 있고 기본값은 `False`임을 확인할 수 있습니다. 따라서 `launch_at_startup` 옵션을 추가하고 해당 옵션을 `True`로 설정합니다. `project.yml` 파일은 이제 다음과 같이 표시됩니다. - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -`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://developer.shotgridsoftware.com/ko/82ff76f7) -* [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-flare_review.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-export-flare_review.png deleted file mode 100644 index d8789830f..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-flare_review.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-menu.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-export-menu.png deleted file mode 100644 index ca7d88866..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-render_range.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-export-render_range.png deleted file mode 100644 index 9c70b2958..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-render_range.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-shot_export.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-export-shot_export.png deleted file mode 100644 index 15451eb68..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-export-shot_export.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-menu.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-review-menu.png deleted file mode 100644 index b92701194..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-select.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-review-select.png deleted file mode 100644 index a1dbb0191..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-select.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-ui.png b/docs/ko/reference/pipeline-integrations/images/apps/flame-review-ui.png deleted file mode 100644 index f0193ed1a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/flame-review-ui.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate.png deleted file mode 100644 index ed1e483ab..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate_ex.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate_ex.png deleted file mode 100644 index 558874806..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-collate_ex.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-cut_type.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-cut_type.png deleted file mode 100644 index 8d3cb7b4f..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-cut_type.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_queue.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_queue.png deleted file mode 100644 index 9abbc3881..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_queue.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_window.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_window.png deleted file mode 100644 index 318a6cd59..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-export_window.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-finder.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-finder.png deleted file mode 100644 index bf11c85b1..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-finder.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png deleted file mode 100644 index e439c7a51..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png deleted file mode 100644 index 203f9b18a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-paths.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-paths.png deleted file mode 100644 index d61be78a9..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-paths.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-processor.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-processor.png deleted file mode 100644 index 38fc7d9db..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-processor.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png b/docs/ko/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png deleted file mode 100644 index e468bc217..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png deleted file mode 100644 index a85e4e017..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png deleted file mode 100644 index f5def6a5a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png deleted file mode 100644 index 37a09983c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png deleted file mode 100644 index 91d3ba01b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png deleted file mode 100644 index 05c6398e9..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png deleted file mode 100644 index 35632b864..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png b/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png deleted file mode 100644 index e814ec416..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about1.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about1.png deleted file mode 100644 index 1aa45ba11..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about2.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about2.png deleted file mode 100644 index ed35ef07d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about2.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about3.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about3.png deleted file mode 100644 index b1b2a6021..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-about3.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-menu.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-about-menu.png deleted file mode 100644 index a6d8e2678..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-about-menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png deleted file mode 100644 index 7bfa68315..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png deleted file mode 100644 index c6d9092d3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png deleted file mode 100644 index 372911c00..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png deleted file mode 100644 index a1dc359b8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png deleted file mode 100644 index 9d6a9ab4d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png deleted file mode 100644 index e5ff4c65b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png deleted file mode 100644 index 398c1be36..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png deleted file mode 100644 index aa85e3c28..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png deleted file mode 100644 index 0a3388fda..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png deleted file mode 100644 index 9cb68f6f8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png deleted file mode 100644 index b1158fac5..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png deleted file mode 100644 index 15d7915a1..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png deleted file mode 100644 index 3bc7fd92e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png deleted file mode 100644 index b26858fb7..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png deleted file mode 100644 index 0e4573387..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png deleted file mode 100644 index 4fc670c15..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png deleted file mode 100644 index 649fa8039..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png deleted file mode 100644 index 03b34104b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png deleted file mode 100644 index 04074cc3b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png deleted file mode 100644 index 60cdefd06..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png deleted file mode 100644 index 743dbd463..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png deleted file mode 100644 index 5b911971b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png deleted file mode 100644 index 72d6ef5c3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png deleted file mode 100644 index 472e1e67b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png deleted file mode 100644 index d1174da4e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png deleted file mode 100644 index 0055f737c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png deleted file mode 100644 index 67bae3004..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png deleted file mode 100644 index 91133b8b5..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png deleted file mode 100644 index c2fa2072f..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png deleted file mode 100644 index 31e338b80..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png b/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png deleted file mode 100644 index 8ce560526..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png deleted file mode 100644 index d7964d2e2..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png deleted file mode 100644 index 104c14d94..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png deleted file mode 100644 index d5ddde6a0..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png deleted file mode 100644 index 47e9dd91c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png deleted file mode 100644 index f26fb709d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png deleted file mode 100644 index 79539ae8c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png deleted file mode 100644 index 2d474c19a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png b/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png deleted file mode 100644 index f8e5f0429..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/sg_publisher_1.png b/docs/ko/reference/pipeline-integrations/images/apps/sg_publisher_1.png deleted file mode 100644 index 3b5afe00d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/sg_publisher_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png b/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png deleted file mode 100644 index 2b9b1526e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png b/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png deleted file mode 100644 index 82971ea15..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png b/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png deleted file mode 100644 index b80b0bf5c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png b/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png deleted file mode 100644 index 6a359b037..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/3dsmax_engine.png b/docs/ko/reference/pipeline-integrations/images/engines/3dsmax_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/3dsmax_engine.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png b/docs/ko/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/add_shelf.png b/docs/ko/reference/pipeline-integrations/images/engines/add_shelf.png deleted file mode 100644 index f759de6d6..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/add_shelf.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/aftereffects_extension.png b/docs/ko/reference/pipeline-integrations/images/engines/aftereffects_extension.png deleted file mode 100644 index e21656265..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/aftereffects_extension.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-01.png b/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-01.png deleted file mode 100644 index c89dd4e47..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-01.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-02.png b/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-02.png deleted file mode 100644 index 639e1e3eb..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/create-dcc-02.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_commands.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_commands.png deleted file mode 100644 index bb39a37b5..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_commands.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_components.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_components.png deleted file mode 100644 index dfeb1be1b..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_components.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_console.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_console.png deleted file mode 100644 index 98360b23c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_console.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_context_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_context_menu.png deleted file mode 100644 index 93d930544..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_context_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_header.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_header.png deleted file mode 100644 index 006838752..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_header.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_menu.png deleted file mode 100644 index 87cf0bd94..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/extension_shelf.png b/docs/ko/reference/pipeline-integrations/images/engines/extension_shelf.png deleted file mode 100644 index ebca64520..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/extension_shelf.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/flame_project.png b/docs/ko/reference/pipeline-integrations/images/engines/flame_project.png deleted file mode 100644 index b9ccfaf80..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/flame_project.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/houdini_engine.png b/docs/ko/reference/pipeline-integrations/images/engines/houdini_engine.png deleted file mode 100644 index 8d3e51b69..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/houdini_engine.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/houdini_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/houdini_menu.png deleted file mode 100644 index 178cfe9cd..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/houdini_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/houdini_shelf.png b/docs/ko/reference/pipeline-integrations/images/engines/houdini_shelf.png deleted file mode 100644 index 66fc34963..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/houdini_shelf.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/maya_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/maya_menu.png deleted file mode 100644 index d3bf18dc1..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/maya_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/mobu.png b/docs/ko/reference/pipeline-integrations/images/engines/mobu.png deleted file mode 100644 index bbdd364ab..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/mobu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-favourites.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-favourites.png deleted file mode 100644 index 2e0efcf68..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-favourites.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-gizmo.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-gizmo.png deleted file mode 100644 index 25dcda35e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-gizmo.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png deleted file mode 100644 index 3d5f16498..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png deleted file mode 100644 index aa7dea45c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png deleted file mode 100644 index 28b74d2fc..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-menu.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-menu.png deleted file mode 100644 index 2f157f594..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png deleted file mode 100644 index 595bac2b1..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/otls_path.png b/docs/ko/reference/pipeline-integrations/images/engines/otls_path.png deleted file mode 100644 index 3ab2fb93e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/otls_path.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png deleted file mode 100644 index bb39a37b5..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png deleted file mode 100644 index c2e684ccf..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png deleted file mode 100644 index 8f42cf302..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png deleted file mode 100644 index 601dd923a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png deleted file mode 100644 index 006838752..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png deleted file mode 100644 index ebca64520..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png deleted file mode 100644 index 8f152482e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png b/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png deleted file mode 100644 index 6c5826a46..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/processes.png b/docs/ko/reference/pipeline-integrations/images/engines/processes.png deleted file mode 100644 index eaa8c5fc6..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/processes.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png b/docs/ko/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png deleted file mode 100644 index c4cd16a61..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/sg_mobu_1.png b/docs/ko/reference/pipeline-integrations/images/engines/sg_mobu_1.png deleted file mode 100644 index 55ec54104..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/sg_mobu_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/sg_shell_1.png b/docs/ko/reference/pipeline-integrations/images/engines/sg_shell_1.png deleted file mode 100644 index 678e3b7c3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/sg_shell_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png b/docs/ko/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png deleted file mode 100644 index 168130bae..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/sg_softimage_1.png b/docs/ko/reference/pipeline-integrations/images/engines/sg_softimage_1.png deleted file mode 100644 index 3064fca61..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/sg_softimage_1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action1.png b/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action1.png deleted file mode 100644 index 67aa62c2c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action2.png b/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action2.png deleted file mode 100644 index a43f98ed5..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/shotgun-action2.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/engines/softimage_menu.png b/docs/ko/reference/pipeline-integrations/images/engines/softimage_menu.png deleted file mode 100644 index 9b16e56d1..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/engines/softimage_menu.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/env-config-ref/1.png b/docs/ko/reference/pipeline-integrations/images/env-config-ref/1.png deleted file mode 100644 index db34a51ac..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/env-config-ref/1.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/images/env-config-ref/2.png b/docs/ko/reference/pipeline-integrations/images/env-config-ref/2.png deleted file mode 100644 index 236ac183d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/images/env-config-ref/2.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apis.md b/docs/ko/reference/pipeline-integrations/toolkit-apis.md deleted file mode 100644 index 76ad99dcd..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apis.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: API -pagename: toolkit-apis -lang: ko ---- - -# 툴킷 API - -여기에서는 툴킷 플랫폼이 제공하는 API에 대한 참조 문서를 찾을 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps.md b/docs/ko/reference/pipeline-integrations/toolkit-apps.md deleted file mode 100644 index 67785fff8..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 앱 -pagename: toolkit-apps -lang: ko ---- - -# 툴킷 앱 - -여기에서는 툴킷 플랫폼에 사용할 수 있는 앱에 대한 참조 문서를 찾을 수 있습니다. 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 deleted file mode 100644 index 287b76356..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: default -title: Flame 내보내기 -pagename: tk-flame-export -lang: ko ---- - -# Flame 내보내기 - -{% include product %} Flame 내보내기 앱은 프로젝트를 시작하는 데 도움이 됩니다. - -Flame에서 초기 컨폼을 만든 경우 샷 내보내기를 사용하여 {% include product %}에서 컨텐츠를 신속하게 생성하고, 디스크에 플레이트를 렌더링하고, 리뷰할 컨텐츠를 전송할 수 있습니다. - -실행하면 내보내기 앱은 Flare 또는 Flame 배치 모드(batch mode)에서 발생하는 모든 렌더를 트래킹하므로 워크플로우의 일부로 리뷰할 컨텐츠를 쉽게 전송할 수 있습니다. - -## {% include product %}로 컨폼 푸시 - -Flame에서 시퀀스에 대한 컨폼 설정이 있고 타임라인의 모든 세그먼트에 **할당된 샷 이름**이 있는 경우 시퀀스를 선택하고 마우스 오른쪽 버튼으로 클릭하고 {% include product %} Shot Export 옵션을 선택합니다. - -![메뉴](../images/apps/flame-export-menu.png) - -그러면 게시에 대한 일부 초기 코멘트를 입력할 수 있는 {% include product %} UI가 나타납니다. 이러한 코멘트는 리뷰를 위해 전송되며 게시 및 기타 컨텐츠에 설명을 추가할 때도 사용됩니다. - -설명 외에도 내보낸 플레이트에 사용할 출력 데이터 형식도 선택할 수 있습니다. 이러한 사전 설정은 툴킷 앱 구성의 일부이며 스튜디오의 필요에 맞게 구성할 수 있습니다. - -![shot_export](../images/apps/flame-export-shot_export.png) - -Submit 버튼을 클릭하면 다음과 같이 여러 작업이 즉시 수행됩니다. - -- {% include product %}에 샷 및 태스크가 만들어집니다. 태스크 템플릿 설정을 통해 만들어지는 각각의 새 샷과 연결할 태스크 목록을 구성할 수 있어 일관된 구조를 쉽고 빠르게 만들 수 있습니다. 샷은 기본적으로 시퀀스에 따라 상위로 지정되지만 구성 가능하며 씬 또는 에피소드에 대한 작업을 수행하는 경우 이러한 설정을 대신 사용하여 내보내기를 다시 구성할 수 있습니다. - -- {% include product %}에 올바른 데이터가 포함되면 표준 폴더 생성 메커니즘을 사용하여 디스크에 폴더가 생성됩니다. 따라서 생성되는 모든 샷에 대해 일관된 일련의 폴더를 사용하여 프로젝트를 시작할 수 있습니다. - -위의 두 단계가 수행되고 나면 추가 단계를 진행하기 위한 기본 구조를 갖게 됩니다. 이러한 작업은 백그라운드에서 수행됩니다. - -- 구성에 정의된 사전 설정에 따라 각 샷에 대한 플레이트가 디스크에 내보내집니다. 파일 위치는 툴킷 템플릿 시스템을 사용하여 정의됩니다. 즉, 이러한 플레이트의 위치는 파이프라인의 다른 도구 다운스트림에 의해 잘 정의되고 파악됩니다. - -- 배치(Batch) 파일과 클립 xml 파일이 내보내집니다. Flame에서는 이러한 파일을 사용하여 나중에 Flame의 기본 컨폼으로 가져오는 새 버전을 빠르게 렌더링할 수 있는 반복 워크플로우를 지원합니다. - -- Quicktime이 생성되고 리뷰를 위해 {% include product %}에 업로드됩니다. - - -## Review로 배치(Batch) 렌더 보내기 - -샷에 대한 Flame 배치(Batch) 파일을 게시하면 해당 샷에서 직접 Flare를 시작하여 렌더 및 출력 설정이 미리 입력된 상태로 배치(Batch) 파일을 열 수 있습니다. 새 버전을 렌더링하려면 Render Range 버튼을 클릭하기만 하면 됩니다. - -![render_range](../images/apps/flame-export-render_range.png) - -이때 툴킷은 {% include product %} Review로 렌더를 보낼지 선택할 수 있는 대화상자를 표시합니다. - -![flaver_review](../images/apps/flame-export-flare_review.png) - -파일이 {% include product %}에 의해 게시되고 트래킹되며 선택적으로 리뷰를 위해 전송됩니다. - -## 자세한 정보 - -자세한 정보를 보고 이 워크플로우가 작동하는지 확인하려면 Flame 엔진 문서로 이동합니다. 여기에는 다양한 워크플로우의 작동 상태를 보여 주는 몇 가지 동영상 컨텐츠도 있습니다. - -LINKBOX_ENGINE:{% include product %}software/tk-flame: Flame 엔진 - -통합 또는 커스터마이즈에 관한 질문이 있으면 언제든지 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)를 방문해 주십시오. - -# 고급 항목 - -아래에 구성 및 커스터마이즈와 관련된 고급 상세 정보가 나와 있습니다. - -## 내보내기 사전 설정 사용 - -내보내기는 해당 구성의 *내보내기 사전 설정* 개요를 사용합니다. 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://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html을 참조하십시오. - -## ffmpeg 커스터마이즈 - -내보내기는 Quicktime을 생성할 때 Flame과 함께 배포되는 ffmpeg 버전을 사용합니다. 내보내기에서 설정 후크를 수정하여 기본 제공 버전 대신 사용할 ffmpeg 추가 버전을 지정할 수 있습니다. Flame과 함께 배포되는 ffmpeg의 버전은 ffmpeg 트랜스코딩 및 성능에 대한 향상된 최신 기능을 트래킹하므로 최신 버전을 사용하면 성능이 향상될 수 있습니다. - -h264 매개변수가 ffmpeg로 전달되는 방식이 기본적으로 사용되는 버전과 최신 버전 간에 변경되었습니다. 최신 ffmpeg로 전환하면 {% include product %} 측에서 최적의 업로드 및 성능을 제공하는 권장 트랜스코딩 지침을 정확히 구현할 수 있습니다. 이러한 지침은 다음을 참조하십시오. - -https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -고급 사용자인 경우 ffmpeg 버전만 변경하는 것이 좋습니다. 이 경우 다음 단계를 수행합니다. - -### 설정 후크 복사 - -수정할 필요가 있는 모든 설정은 Flame 내보내기 앱과 함께 제공되는 설정 후크에서 찾을 수 있습니다. 이 후크를 수정하려면 먼저 이 후크 파일을 앱 위치 내의 기본 위치에서 현재 구성으로 복사해야 합니다. 프로젝트 구성 내에서 후크 파일은 일반적으로 `install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py`와 비슷한 위치에 있습니다. 이 파일을 구성 내의 `hooks` 위치(예: `config/hooks`)에 복사합니다. 그냥 `settings.py`보다는 무슨 파일인지 명확하게 알 수 있도록 좀 더 긴 이름으로 바꾸는 것이 좋습니다. - -``` -install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py -> config/hooks/flame_export_settings.py -``` - -이제 Flame 환경 구성 파일을 편집합니다. 이 파일은 일반적으로 `config/env/includes/flame.yml`입니다. `tk-flame-export` 제목 아래, 후크에 대한 경로가 `settings_hook: '{self}/settings.py'`로 정의되어 있음을 알 수 있습니다. 이는 기본적으로 구성이 앱 위치(예: `{self}`) 내의 후크 파일을 검색한다는 것을 의미합니다. 대신 이 경로를 `settings_hook: '{config}/flame_export_settings.py'`로 변경하면 툴킷이 구성 내의 후크 파일을 찾게 됩니다. 요약하면 다음과 같습니다. - -``` -settings_hook: '{self}/settings.py' -> '{config}/flame_export_settings.py' -``` - -### 후크 수정 - -이제 `config/hooks/flame_export_settings.py` 후크를 수정할 준비가 되었습니다. 텍스트 편집기에서 후크를 엽니다. ffmpeg 및 ffmpeg 설정과 관련된 몇 가지 방식이 있습니다. 수정할 첫 번째 항목은 다음과 같습니다. - -``` -def get_external_ffmpeg_location(self): - """ - Control which version of ffmpeg you want to use when doing transcoding. - By default, this hook returns None, indicating that the app should use - the built-in version of ffmpeg that comes with Flame. - - If you want to use a different version of ffmpeg, simply return the path - to the ffmpeg binary here. - - :returns: path to ffmpeg as str, or None if the default should be used. - """ - return None -``` - -기본적으로 `None`을 반환하면 내보내기는 Flame의 기본 제공 ffmpeg를 사용합니다. ffmpeg에 대한 전체 경로를 반환하도록 이 값을 변경합니다. Backburner 클러스터를 실행하는 경우 ffmpeg는 클러스터 내 어떤 시스템에서든 호출될 수 있으므로 실행 파일이 모든 위치에 설치되어 있는지 확인해야 합니다. - -이제 ffmpeg 위치가 업데이트되면 ffmpeg에 전달된 매개변수를 조정해야 할 수 있습니다. 다음 두 가지 방식으로 변경해야 합니다. - -- `get_ffmpeg_quicktime_encode_parameters`는 {% include product %}에 업로드할 Quicktime을 생성할 때 사용되는 매개변수를 반환합니다. - -- `get_local_quicktime_ffmpeg_encode_parameters`는 Quicktime을 디스크에 작성할 때 사용되는 매개변수를 반환합니다. - -{% include product %} 업로드의 경우 시작점으로 기본 {% include product %} 인코딩 설정을 사용하는 것이 좋습니다. - -``` -def get_ffmpeg_quicktime_encode_parameters(self): - return "-vcodec libx264 -pix_fmt yuv420p -vf 'scale=trunc((a*oh)/2)*2:720' -g 30 -b:v 2000k -vprofile high -bf 0" -``` - -로컬 {% include product %} 트랜스코드의 경우 {% include product %} 트랜스코드 설정에서의 설정을 기반으로 하되 해상도 제약 조건을 제거하고 비트 전송률을 높이는 것이 좋습니다. - -``` -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 deleted file mode 100644 index 0b0d12da8..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Flame Review -pagename: tk-flame-review -lang: ko ---- - -# Flame Review - -{% include product %} Flame Review 앱을 사용하면 Flame에서 하나 이상의 시퀀스를 {% include product %} Review로 쉽게 푸시할 수 있습니다. - -리뷰할 하나 이상의 시퀀스를 선택하고 마우스 오른쪽 버튼으로 클릭하기만 하면 됩니다. - -![메뉴](../images/apps/flame-review-menu.png) - -{% include product %} Review 옵션을 선택합니다. - -![선택](../images/apps/flame-review-select.png) - -리뷰 노트를 추가할 수 있는 툴킷 UI가 나타납니다. - -![UI](../images/apps/flame-review-ui.png) - -OK를 클릭하면 백그라운드 작업이 생성되고 모든 작업이 씬 뒤에서 수행됩니다. -다음 단계가 수행됩니다. - -- 시퀀스가 Quicktime으로 디스크에 내보내집니다. 이 내보내기는 Flame Quicktime 내보내기로 처리되며 구성 후크를 통해 다양한 설정을 완벽하게 제어할 수 있습니다. - -- 시퀀스 완료 후 툴킷이 {% include product %}에 일치하는 시퀀스가 있는지 확인합니다. 없으면 시퀀스가 자동으로 생성됩니다. - -- 리뷰 버전이 생성되고 시퀀스와 연결됩니다. - -- 마지막으로 Quicktime이 리뷰 버전으로 업로드됩니다. - -프로세스는 오디오 트랙, 전환 등을 지원하며 "WYSIWYG"여야 합니다. 이제 {% include product %}에서 Client Review Site 및 {% include product %} iPhone 앱을 비롯한 여러 가지 방법으로 미디어를 리뷰할 수 있습니다. - -## 커스터마이즈 및 설정 - -Flame Review 앱은 여러 가지 방법으로 커스터마이즈할 수 있습니다. - -- Flame의 시퀀스를 나타내도록 {% include product %}에서 사용해야 하는 **엔티티 유형**을 제어할 수 있습니다. 예를 들어 에피소드 컨텐츠에서 작업하는 경우 시퀀스가 아닌 {% include product %}의 에피소드에 리뷰 버전을 링크하는 것이 더 효과적일 수 있습니다. - -- {% 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 deleted file mode 100644 index 70d054e3d..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: Hiero/Nuke Studio 내보내기 -pagename: tk-hiero-export -lang: ko ---- - -# Hiero/Nuke Studio 내보내기 - -### 소개 - -이 앱은 Hiero의 시퀀스에 대한 내보내기 대화상자에 {% include product %} 인식 기능을 추가합니다. - -#### 개요 동영상 및 데모 - -{% include product %} 툴킷 또는 Hiero 통합을 처음 사용하는 경우 {% include product %} 툴킷 Hiero 통합을 통해 파이프라인에서 수행할 수 있는 작업의 개요를 빠르게 진행하는 다음 동영상을 확인합니다. - -툴킷 및 Hiero에 이미 익숙하다면 언제든지 아래의 문서를 계속 진행합니다. - -
- -
- -### {% include product %} 샷 프로세서 - -이 앱 자체가 활성화되면 Hiero 내보내기 대화상자에 여러 변경 사항이 등록됩니다. - -![export_window](../images/apps/hiero-export_window.png) - -가장 먼저 주목해야 할 항목은 등록된 새 프로세서입니다. - -![프로세서](../images/apps/hiero-processor.png) - -이 프로세서를 클릭할 때 주의해야 할 새로운 사항이 있습니다. - -대화상자 상단에는 시퀀스를 내보낸 결과로 {% include product %}에서 샷이 생성/업데이트되는 방식을 제어할 수 있는 추가 UI가 있습니다. - -![shotgun_ui](../images/apps/hiero-shotgun_ui.png) - -### 태그 -드롭다운을 조정하여 다양한 Hiero 태그를 {% include product %} 샷 상태 및 샷 태스크 템플릿에 매핑할 수 있습니다. 따라서 Hiero의 태그 지정 워크플로우를 통해 {% include product %} 샷을 진행 중으로 설정하거나 그린 스크린, cg 추가 또는 구성에 맞는 샷의 태스크를 설정할 수 있습니다. 이 UI는 후크를 통해 입력되며 추가 기능을 구성하기 쉽습니다. - -### 결합 -또한 Hiero의 기본 제공 로직을 미러링하여 함께 트랙 항목을 결합할 수 있는 옵션이 있습니다. 샷을 구성하는 항목이 여러 개일 경우(서로 다른 트랙에서 겹치거나 여러 트랙에 동일한 샷 이름이 있는 경우) 이 옵션을 켜야 합니다. 그러면 {% include product %} 툴킷 샷 업데이트 프로그램이 일치하는 결합된 항목을 단일 샷으로 처리합니다. - -![결합](../images/apps/hiero-collate.png) - -예를 들어 샷 010과 020을 나타내는 두 개의 트랙 항목이 있다고 가정합니다. 010이 먼저 나오고 020은 다른 트랙의 010 끝에 겹칩니다. 010이 먼저 나오므로 Hiero이며 결합이 활성화된 상태에서 {% include product %}는 두 항목을 단일 샷 010으로 처리합니다. 즉, {% include product %}에 샷 010이 생성되거나 업데이트됨을 의미합니다. 컷 인은 트랙 항목 010의 시작 부분과 일치하고 컷 아웃은 트랙 항목 020의 끝 부분과 일치합니다. 각 항목에 대해 Screening Room에서 바로 사용할 수 있는 버전이 생성되지만 둘 다 샷 010에 링크됩니다. 각 항목에 대해 게시된 파일로 플레이트가 생성되지만 둘 다 샷 010에 링크됩니다. 2개의 읽기 노드를 포함하는 샷 010에 링크된 단일 Nuke 스크립트가 각 항목에 하나씩 게시됩니다. 이 상황에서는 샷 010에 결합되었기 때문에 {% include product %}에서 샷 020에 대한 생성이나 업데이트가 없습니다. - -![collate_ext](../images/apps/hiero-collate_ex.png) - -### 경로 -아래 {% 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` 파일에서 다음과 같이 키를 정의한다고 가정합니다. - -``` - resolution: - type: str - filter_by: alphanumeric -``` - -`project.yml` 설정에서 `tk-hiero-export`는 다음과 같이 정의합니다. - -``` - ... - ... - tk-hiero: - apps: - tk-hiero-export: - custom_template_fields: - - {description: Shot Resolution, keyword: resolution} - ... - ... -``` - -그런 후 다음과 같이 `resolve_custom_strings` 후크를 수정합니다. - -``` -# Copyright (c) 2014 {% include product %} Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the {% include product %} Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by {% include product %} Software Inc. - -from tank import Hook - - -class HieroResolveCustomStrings(Hook): - """Translates a keyword string into its resolved value for a given task.""" - - RESOLUTION_TOKEN_NAME = "{resolution}" - - - def execute(self, task, keyword, **kwargs): - """ - """ - - self.parent.log_debug("attempting to resolve custom keyword: %s" % keyword) - if keyword == self.RESOLUTION_TOKEN_NAME: - translated_value = self._clip_resolution_string(task) - else: - raise RuntimeError("No translation handler found for custom_template_field: %s" % keyword) - - self.parent.log_debug("Custom resolver: %s -> %s" % (keyword, translated_value)) - return translated_value - - - # 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() - 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'] - height = task_reformat_settings['height'] - - return "%sx%s" % (width, height) -``` - -이제 Hiero에서 `resolution` 토큰을 사용할 수 있을 뿐만 아니라 툴킷에서 정의한 모든 템플릿 경로에 대해 유효성을 검사하므로 다음과 같은 위치로 내보낼 수 있습니다. - -``` - 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 미디어로 업로드됩니다. - -##### {% include product %} Nuke 프로젝트 파일 -이 유형은 표준 Hiero Nuke 스크립트 내보내기의 하위 클래스로, {% include product %}에서 샷에 링크된 결과 Nuke 스크립트를 게시된 파일로 등록합니다. 이 설정을 통해 내보낼 때 파일에 포함할 툴킷 사용 쓰기 노드를 지정할 수 있습니다. - -![nuke_project_file_settings](../images/apps/hiero-nuke_project_file_settings.png) - -앱 설정 `plate_published_file_type` 및 `nuke_script_published_file_type`을 사용하여 게시된 파일이 등록되는 파일 유형을 제어할 수 있습니다. 또한 `nuke_script_toolkit_write_nodes`를 사용하여 내보내기 대화상자에서 사용 가능한 쓰기 노드 설정을 제어할 수 있습니다. - -### 내보내기 프로세스 - -내보내기가 실행되면 내보내기 대기열에 몇 가지 추가 태스크가 표시됩니다. - -![export_queue](../images/apps/hiero-export_queue.png) - -각 샷은 {% include product %}에 샷을 생성하고 스키마 구성에 지정된 전체 샷 구조를 생성하는 {% include product %}ShotUpdater 태스크를 실행합니다. - -![찾기](../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에서 추정됩니다. - -![cut_type](../images/apps/hiero-cut_type.png) - -해당 값은 **컷**의 **유형** 필드에 표시됩니다. - -결합 옵션 중 하나가 선택된 경우 컷 스키마가 지원되지 않으며 **컷** 및 **컷 항목** 항목 생성을 건너뜁니다. - -또한 컷 스키마는 리타임된 클립을 처리하지 않습니다. 리타임된 클립을 내보낼 때 디버그 경고가 기록됩니다. - -### 대체 샷 계층 -표준 시퀀스 > 샷 계층에서 작업하지 않지만 에피소드 및/또는 씬을 사용하는 스튜디오의 경우에는 `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 deleted file mode 100644 index b0e196682..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: ShotGrid에서 Hiero/Nuke Studio 열기 -pagename: tk-hiero-openinshotgun -lang: ko ---- - -# {% include product %}에서 Hiero/Nuke Studio 열기 - -이 앱은 Hiero 스프레드시트 및 타임라인에 상황에 맞는 메뉴를 추가합니다. 사용자는 이 메뉴를 사용하여 해당 항목의 샷이 있는 경우 {% include product %}에서 지정된 트랙 항목을 열 수 있습니다. - -![open_in_shotgun](../images/apps/hiero-open_in_shotgun.png) - -일반적으로 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} -``` - - - 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 deleted file mode 100644 index 918839224..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: Houdini Alembic Node -pagename: tk-houdini-alembicnode -lang: ko ---- - -# Houdini Alembic Node - -Houdini Alembic Node 앱은 alembic 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Alembic Output 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. - -## 일반적인 사용 - -{% include product %} Alembic 출력을 사용하려면 먼저 스크립트를 툴킷 작업 파일로 저장한 다음 Houdini의 TAB 메뉴를 통해 새 노드를 만듭니다. 이렇게 하면 일반적인 Alembic 출력 노드와 비슷한 노드가 생성됩니다. - -![Alembic 노드](../images/apps/houdini-alembicnode-create_node.png) - -노드는 여러 출력 프로파일로 구성될 수 있으며, 각 출력 프로파일은 alembic 캐시를 디스크에 기록해야 하는 위치에 대해 서로 다른 템플릿 경로를 사용합니다. - -![Alembic 노드](../images/apps/houdini-alembicnode-output_profile.png) - -직접 경로를 입력하는 대신 사용할 출력 프로파일을 지정하면 노드가 나머지 경로를 자동으로 계산합니다. UI에서 계산된 경로를 볼 수 있습니다. - -![Alembic 노드](../images/apps/houdini-alembicnode-computed_path.png) - -출력 alembic 파일의 버전이 지정되고 버전 번호의 경우 항상 Multi Publish를 사용하여 게시할 때 자동으로 증가되는 현재 Houdini 씬 파일 버전을 따릅니다. - -## 구성 - -툴킷 alembic 노드는 환경 구성에 대해 여러 출력 프로파일을 지정할 수 있는 기능을 제공합니다. 다음은 여러 프로파일을 사용하여 노드를 구성하는 예입니다. - -
-  tk-houdini:
-    apps:
-      tk-houdini-alembicnode:
-        location:
-          name: tk-houdini-alembicnode
-          type: app_store
-          version: v0.2.2
-        work_file_template: houdini_shot_work
-        default_node_name: tk_alembic_out
-        output_profiles:
-          - name: For Publishing
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_cache_template: houdini_shot_work_alembic_cache
-          - name: Local Testing
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_cache_template: houdini_shot_local_alembic_cache
-
- -출력 프로파일을 사용하여 `color` 필드를 통해 노드 모양을 변경하고 `settings` 필드에 해당 매개변수와 일치하는 키/값 쌍을 제공하여 기본 Alembic 노드에서 개별 매개변수를 조정할 수 있습니다. 마지막으로, `output_cache_template` 필드는 디스크에 기록된 alembic 캐시의 출력 경로를 구동합니다. 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 deleted file mode 100644 index 4bfd60a5f..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: Houdini Mantra Node -pagename: tk-houdini-mantranode -lang: ko ---- - -# Houdini Mantra Node - -Houdini Mantra Node 앱은 렌더 파일이 출력되는 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Mantra 출력 노드를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. - -## 일반적인 사용 - -{% include product %} Mantra 노드를 사용하려면 먼저 스크립트를 툴킷 작업 파일로 저장한 다음 Houdini의 TAB 메뉴를 통해 새 노드를 만듭니다. 이렇게 하면 일반적인 Mantra 출력 노드와 비슷한 노드가 만들어집니다. - -![Mantra 노드](../images/apps/houdini-mantranode-create_node.png) - -이 노드는 여러 출력 프로파일로 구성될 수 있으며, 각 출력 프로파일은 렌더 출력(이미지, ifd, dcm, aov 등)을 디스크에 기록해야 하는 위치에 대해 서로 다른 템플릿 경로 세트를 사용합니다. - -![Mantra 노드](../images/apps/houdini-mantranode-output_profile.png) - -직접 경로를 입력하는 대신 사용할 구성을 지정하면 노드가 나머지 경로를 자동으로 계산합니다. UI에서 계산된 경로를 볼 수 있습니다. - -![Mantra 노드](../images/apps/houdini-mantranode-computed_path.png) - -렌더링된 파일의 버전이 지정되고 버전 번호의 경우 항상 Multi Publish를 사용하여 게시할 때 자동으로 증가되는 현재 Houdini 씬 파일 버전을 따릅니다. - -## 구성 - -툴킷 mantra 노드는 환경 구성에 대해 여러 출력 프로파일을 지정할 수 있는 기능을 제공합니다. 다음은 여러 프로파일을 사용하여 노드를 구성하는 예입니다. - -
-  tk-houdini:
-    apps:
-      tk-houdini-mantranode:
-        location:
-          name: tk-houdini-mantranode
-          type: dev
-          version: v0.2.2
-        default_node_name: tk_mantra_out
-        work_file_template: houdini_shot_work
-        output_profiles:
-          - name: Primary Render
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_render_template: houdini_shot_render
-            output_ifd_template: houdini_shot_ifd
-            output_dcm_template: houdini_shot_dcm
-            output_extra_plane_template: houdini_shot_extra_plane
-          - name: Local Render
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_render_template: houdini_shot_local_render
-            output_ifd_template: houdini_shot_local_ifd
-            output_dcm_template: houdini_shot_local_dcm
-            output_extra_plane_template: houdini_shot_local_extra_plane
-
- -출력 프로파일을 사용하여 `color` 필드를 통해 노드 모양을 변경하고 `settings` 필드에 해당 매개변수와 일치하는 키/값 쌍을 제공하여 기본 Alembic 노드에서 개별 매개변수를 조정할 수 있습니다. 마지막으로, `output_*_template` 필드는 Mantra 렌더러에 의해 디스크에 기록된 파일의 출력 경로를 구동합니다. \ No newline at end of file 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 deleted file mode 100644 index 2b8abe6ac..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Mari Project Manager -pagename: tk-mari-projectmanager -lang: ko ---- - -# Mari Project Manager - -Mari Project Manager는 Mari에서 새 프로젝트를 생성하는 프로세스를 간소화하여 아티스트가 {% include product %} Loader를 사용하여 로드할 게시된 지오메트리를 신속하게 선택할 수 있게 해 줍니다. 이 앱으로 생성한 프로젝트는 {% include product %}를 인식하므로, 아티스트가 내보내기 옵션 및 파일 위치에 대해 염려할 필요 없이 파이프라인의 다른 부분에 텍스처를 게시할 수 있습니다. - 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 deleted file mode 100644 index 572fc1997..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: 정보 -pagename: tk-multi-about -lang: ko ---- - -# 정보 - -이 앱은 현재 작업 영역과 현재 환경에서 실행 중인 모든 앱을 그래픽으로 분할합니다. 상황에 맞는 메뉴에서 찾을 수 있습니다. - -![스크린샷](../images/apps/multi-about-menu.png) - -## 모든 앱 다시 로드 -전체 환경을 다시 로드하는 편리한 버튼이 있습니다. 이 버튼은 개발을 수행하고 일부 코드를 변경할 때 유용합니다. Maya나 Nuke를 다시 시작할 필요 없이 다시 로드 버튼만 누르면 됩니다. - - -다시 로드 기능 외에도 이 앱은 현재 작업 영역과 현재 로드된 모든 앱의 분할 정보를 표시합니다. - -다음과 같이 세 개의 별도 뷰가 있습니다. - -## 현재 작업 영역 - -![스크린샷](../images/apps/multi-about-about1.png) - -현재 샷 또는 에셋, 현재 태스크 등을 보여 줍니다. 목록의 항목 중 하나를 두 번 클릭하면 해당 항목에 대한 {% include product %} 상세 정보 페이지가 열립니다. - -## 실행 중인 앱 - -![스크린샷](../images/apps/multi-about-about2.png) - -현재 실행 중인 모든 앱에 대한 뷰로, 해당 버전 및 설명이 함께 표시됩니다. 앱을 두 번 클릭하면 해당 앱에 대한 문서 페이지가 열립니다. - - -## 현재 환경 - -![스크린샷](../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 deleted file mode 100644 index 2ae21a0fb..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: default -title: Breakdown -pagename: tk-multi-breakdown -lang: ko ---- - -# Breakdown - -Scene Breakdown 앱은 참조된 컨텐츠 목록을 표시하여 어떤 항목이 오래되었는지 알려 줍니다. {% include product %} 메뉴에서 액세스합니다. - -![분할 개요](../images/apps/multi-breakdown-breakdown.png) - -하나 이상의 항목을 선택하고 선택 항목 업데이트(Update Selected)를 누릅니다. 이렇게 하면 최신 버전의 컨텐츠를 사용하도록 항목이 전환됩니다. - -## 씬 스캔 - -Breakdown 앱이 참조용 씬을 스캔할 때 특수 스캔 후크를 호출합니다. 스캔 후크는 파일 해당 경로가 포함된 노드 목록을 반환합니다. 찾은 각각의 참조에 대해 파일 경로를 반환하고 탱크는 파일 경로를 보고 파일 경로를 게시로 인식하는지 먼저 확인한 후 게시로 인식할 경우 사용 가능한 최신 버전이 있는지 확인합니다. - -사용자가 오래된 버전에 대해 업데이트(Update) 버튼을 클릭하면 앱이 다른 후크를 호출하여 실제 업데이트 작업을 수행합니다. 즉, 이러한 후크를 커스터마이즈하면 새 커스텀 노드를 분할에 추가하는 것이 비교적 간단해집니다. - -## {% include product %} 데이터에 액세스 - -후크에서 업데이트 예정인 게시의 {% include product %} 데이터에 액세스해야 하는 경우 간단하게 처리됩니다. 다음과 같이 `find_publish` 단일 호출로 앱에서 전달되는 모든 항목의 메타데이터를 검색합니다. - -```python -class BreakdownHook(Hook): - - def update(self, items): - """ - Perform replacements given a number of scene items passed from the app. - - Once a selection has been performed in the main UI and the user clicks - the update button, this method is called. - - The items parameter is a list of dictionaries on the same form as was - generated by the scan_scene hook above. The path key now holds - the that each node should be updated *to* rather than the current path. - """ - - engine = self.parent.engine - - # resolve {% include product %} data for all paths passed via the items dictionary - sg_data = tank.util.find_publish(engine.sgtk, - [i["path"] for i in items], - fields=["id", "code", "version_number"]) - - for i in items: - node_name = i["node"] - node_type = i["type"] - new_path = i["path"] - # now that each item is processed, it is easy to access the - # {% include product %} data via a dictionary lookup: - sg_data = sg_data.get(i["path"]) - - # once we have all our desired info and metadata, we can go ahead - # and apply the update business logic. - # [-business logic here-] - -``` - -## API 액세스 - -해당 API를 사용하여 프로그래밍 방식으로 Breakdown 앱에 액세스할 수 있습니다. 다음 방식을 사용할 수 있습니다. - -### Breakdown UI 표시 - -``` -app_object.show_breakdown_dialog() -``` - -Breakdown UI를 표시하려면 `show_breakdown_dialog()` 방식을 실행합니다. 앱이 현재 실행 중인 환경의 `tk-multi-breakdown` 섹션에 포함되어 있을 경우 다음과 같이 수행할 수 있습니다. - -``` ->>> import sgtk ->>> e = sgtk.platform.current_engine() ->>> e.apps["tk-multi-breakdown"].show_breakdown_dialog() -``` - -### 씬 분석 실행 - -``` -items = app_object.analyze_scene() -``` - -`analyze_scene()` 방식을 실행하여 프로그래밍 방식으로 씬 분석 로직을 실행할 수 있습니다. 이 방식은 Breakdown UI가 씬 항목의 목록을 빌드할 때 사용하는 것과 정확히 동일한 로직을 실행합니다. - -방식은 분할 항목의 목록을 반환합니다. 각 항목은 항목을 설명하는 여러 개의 키가 있는 사전으로 표시됩니다. 툴킷 템플릿 파일의 템플릿에 해당하는 경로의 파일만 탐지됩니다. 파일이 게시로 {% include product %}에 있어야 할 필요는 없지만 만약 있다면 이 방식은 기본 {% include product %} 게시 메타데이터를 반환합니다. - -두 개의 키 `node_name` 및 `node_type`은 DCC 중심의 "주소"를 반환하거나 DCC 내의 경로를 식별할 수 있도록 하는 표현을 반환하는 데 사용됩니다. 예를 들어 Maya 및 Nuke에서는 노드 이름과 유형을 반환합니다. 이 로직은 후크에서 구현되며 DCC 간에 달라집니다. 이 방식은 {% include product %}에 연결을 시도하지만 호출 횟수가 일정하고 씬 복잡성과 무관합니다. - -다음은 반환 데이터의 사전에 대한 일반적인 예입니다. - -``` -{'fields': {'Sequence': 'aaa', - 'Shot': 'aaa_00010', - 'Step': 'Comp', - 'eye': '%V', - 'height': 1556, - 'name': 'test', - 'output': 'output', - '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, - 'name': 'test', - 'published_file_type': {'id': 3, - 'name': 'Rendered Image', - 'type': 'PublishedFileType'}, - 'task': {'id': 4714, 'name': 'Comp', 'type': 'Task'}, - 'type': 'PublishedFile', - 'project': {'id': 234, 'name': 'Climp', 'type': 'Project'}, - 'version_number': 1}, - } -``` - -**편리한 팁**: 위에서 볼 수 있듯이 각 항목은 `template` 객체와 `fields` 사전을 반환하여 경로를 나타냅니다. 항목의 실제 로우 경로를 보려면 간단히 `template_obj.apply_fields(fields_dict)`를 실행하면 됩니다. 이 방식에서 반환된 항목 사전 중 하나의 컨텍스트에서 코드는 다음과 같습니다. - -``` -breakdown_items = analyze_scene() -for item in breakdown_items: - path = item["template"].apply_fields(item["fields"]) -``` - - -### 항목의 가장 높은 버전 계산 - -``` -highest_version = app_object.compute_highest_version(template, fields) -``` - -항목의 가장 높은 버전을 찾으려면 `compute_highest_version(template, fields)` 방식을 사용합니다. 분석해야 할 경로를 나타내는 `template` 및 `fields` 매개변수는 `analyze_scene()` 방식의 출력에서 찾을 수 있습니다. Breakdown 앱에서는 버전 번호가 포함된 템플릿 키의 이름을 항상 `{version}`으로 지정해야 합니다. - -이렇게 하면 디스크에서 스캔을 수행하여 가장 높은 버전을 확인합니다. 방식은 디스크에서 발견된 가장 높은 버전 번호를 반환합니다. 자세한 정보는 아래의 사용 예를 참조하십시오. - - -### 씬 항목 업데이트 - -``` -app_object.update_item(node_type, node_name, template, fields) -``` - -항목을 업데이트하려면 `update_item(node_type, node_name, template, fields)` 방식을 사용하면 됩니다. `template` 및 `fields` 매개변수는 업데이트해야 할 경로를 나타냅니다. `node_name` 및 `node_type` 매개변수는 수정해야 할 씬의 노드를 식별하는 데 사용됩니다. 일반적으로 이러한 값은 `analyze_scene()` 방식의 출력에서 찾을 수 있습니다. - -이 방식은 Breakdown UI에서 업데이트를 실행하는 것과 비슷합니다. 실제 업데이트 호출은 DCC 특정 로직을 처리하는 후크에 디스패치됩니다. 자세한 정보는 아래의 사용 예를 참조하십시오. - - - - -### Breakdown API 예 - -다음은 씬 분할을 검색하여 최신 버전을 사용하지 않는 모든 항목을 업데이트하는 방법을 보여 주는 예입니다. - -``` -# find the breakdown app instance -import sgtk -engine = sgtk.platform.current_engine() -breakdown_app = engine.apps["tk-multi-breakdown"] - -# get list of breakdown items -items = breakdown_app.analyze_scene() - -# now loop over all items -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) - -``` diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md deleted file mode 100644 index eb034b565..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Demo -pagename: tk-multi-demo -lang: ko ---- - -# Demo - -Demo 앱은 {% include product %} 유틸리티 프레임워크, Qt Widgets 프레임워크, Toolkit Core 등 {% include product %}의 기본 개발자 플랫폼 구성 요소의 라이브 시연 모습을 제공합니다. - -![Demo 앱](../images/apps/multi-demo-demo_app.png) - -앱에 표시되는 각 데모에는 하나 이상의 기본 플랫폼 구성요소를 사용하는 방법을 보여 주는 실제 인터랙티브 UI가 포함됩니다. 또한 구동 중인 코드를 사용자의 앱에 쉽게 복사해 붙여넣을 수 있습니다. - -![데모 기본사항](../images/apps/multi-demo-help_demo.png) - -앱은 사용이 간단합니다. 왼쪽 목록에서 데모를 선택한 다음 오른쪽에서 구성요소와 상호 작용하면 됩니다. Qt Widgets 프레임워크에서 위젯 하나를 표시해 주는 정도로 간단한 데모도 있고, {% include product %} 플랫폼 구성요소들이 프로덕션 앱에서 사용할 수 있도록 함께 연결되는 방식을 예로 보여 주는 데모도 있습니다. - -![예시 데모](../images/apps/multi-demo-delegate_demo.png) - -![코드 탭](../images/apps/multi-demo-code_tab.png) - -새 구성요소가 플랫폼에 추가되고, 시간이 허락한다면 새 데모도 추가할 예정입니다. 보고 싶은 공통된 구성요소 사용 패턴이나 데모가 있다면 [티켓을 제출](https://knowledge.autodesk.com/ko/contact-support)하여 알려 주십시오. - -## 설치 - -Demo 앱을 설치하려면 다음 명령을 실행하십시오. - -``` -tank install_app project tk-shell tk-multi-demo -``` - -설치하고 나면 다음 명령을 실행하여 앱을 구동할 수 있습니다. - -`./tank demos` 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 deleted file mode 100644 index 263995b6e..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: 시작 앱 -pagename: tk-multi-launchapp -lang: ko ---- - -# 시작 앱 - -이 앱은 {% include product %}에서 지원되는 응용프로그램으로 쉽게 이동할 수 있는 단축키를 제공합니다. 구성 선택 사항에 따라 {% include product %}의 다양한 엔티티에 대해 호출되는 {% include product %} 액션 항목을 등록합니다. - -## 작동 방식 - -구성 옵션에 따라 엔티티를 마우스 오른쪽 버튼으로 클릭하거나 {% include product %} Actions 메뉴 또는 톱니바퀴 메뉴를 사용하면 메뉴 항목이 {% include product %}에 표시됩니다. - -예를 들어 이 스크린샷은 Maya, Nuke 및 Photoshop용 메뉴를 구현하기 위해 이 앱을 세 번 사용하는 구성 사이트에서 가져온 것입니다. - -![탱크 액션 메뉴](../images/apps/multi-launchapp-tank_actions_menu.png) - -현재 지원되는 응용프로그램 및 엔진은 다음과 같습니다. - -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame - -### 시작 시 명령행 인수 사용 - -많은 응용프로그램에는 응용프로그램의 다른 버전(예: Nuke와 NukeX)을 선택하거나 기타 다양한 사용 측면을 지정하기 위해 호출할 수 있는 명령행 옵션이 있습니다. 시작 관리자 앱에는 이 목적으로 구성할 수 있는 각 OS에 대한 'args' 설정이 있습니다. 예를 들어 여기에 '--nukex'를 넣으면 명령행 실행에 추가되어 일반 Nuke 대신 NukeX가 실행됩니다. - ----접기--- -NukeX 시작 예 - -```yaml -launch_nuke: - engine: tk-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' - menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' -``` ----접기--- - -### 시작 시 환경 변수 설정 및 동작 자동화 - -응용프로그램이 스튜디오 파이프라인에서 제대로 작동하기 위해서는 특정 환경 변수, 플러그인 경로 등을 설정해야 하는 경우가 있습니다. 시작 앱은 'before_app_launch' 후크를 통해 이 경우를 해결할 수 있습니다. 이 후크를 사용하면 응용프로그램을 시작할 때마다 실행할 코드 조각을 정의할 수 있습니다. 기본적으로 'before_app_launch' 후크는 아무런 동작도 수행하지 않는 단순한 통과 후크지만 이 문서의 지침에 따라 재지정될 수 있습니다. - -예를 들어 Zync 렌더를 사용하는 경우 Zync Maya 플러그인 디렉토리는 `$PYTHONPATH` 및 `$XBMLANGPATH`의 일부여야 합니다. 시작 앱이 이러한 환경 변수를 설정하게 하려면 `before_app_launch` 후크를 다음과 같이 몇 줄의 코드로 업데이트합니다. - ----접기--- -환경 변수 설정 예 - -```python -def execute(self, **kwargs): - """ - 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 - - # Append the desired path to the existing $PYTHONPATH to ensure - # everything upstream still works - os.environ["PYTHONPATH"] = os.environ["PYTHONPATH"] + os.pathsep + "~/Library/zync/zync-maya" - - # Set $XBMLANGPATH to the desired path, may need to append it as - # with $PYTHONPATH if already defined in your pipeline - os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" -``` ----접기--- - -'before_app_launch'를 사용하여 {% include product %} 업데이트를 비롯한 다른 동작을 자동화할 수도 있습니다. 예를 들어 다음과 같이 시작 앱이 실행될 때마다 태스크 상태를 업데이트하도록(이 경우 "진행 중"으로) 구성할 수 있습니다(태스크에서 시작하는 경우). - ----접기--- -태스크 상태 업데이트 자동화 예 - -```python -def execute(self, **kwargs): - """ - 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' - - if self.parent.context.task: - task_id = self.parent.context.task['id'] - data = { - 'sg_status_list':'ip' - } - self.parent.shotgun.update("Task", task_id, data) -``` ----접기--- - -상상할 수 있듯이 여기에는 많은 가능성이 있으며, 시작 앱은 파이프라인에 필요한 유연성을 제공하는 것을 목표로 합니다. - -### 아직 엔진이 없는 응용프로그램 시작 - -또한 시작 앱을 사용하여 아직 툴킷 엔진이 없는 응용프로그램을 시작할 수 있습니다. 이 경우 시작 중인 샷, 태스크 또는 에셋에 대한 폴더가 디스크에 만들어지고 응용프로그램이 시작되지만 응용프로그램 시작 후 코드가 실행되지 않으며 응용프로그램 내에 {% include product %} 메뉴가 나타나지 않습니다. 즉, 아직 툴킷에서 지원하지 않는 응용프로그램을 {% include product %} 내에서 시작할 수 있습니다. - -이렇게 하려면 시작할 응용프로그램에 대한 경로를 사용하여 앱을 구성하고 엔진 옵션은 빈 문자열로 남겨 둡니다. - -## 기술적 상세 정보 - -### 3DSMax - -이 앱은 3DSMax가 부트 프로세스의 일부로 실행될 3DSMax 명령행에 자동으로 MaxScript, `init_tank.ms`를 추가합니다. - -3DSMax 부팅 과정은 다음과 같습니다. - -1. 3DSMax 시작 시 `init_tank.ms`를 실행합니다. -1. `init_tank.ms`는 Python 인터프리터를 사용하고 `tank_startup.py`를 실행할 수 있도록 합니다. -1. {% include product %} 툴킷 컨텍스트 API를 사용하면 {% include product %}에서 전달된 엔티티 ID가 툴킷 컨텍스트로 변환됩니다. -1. `tank.system.start_engine()`을 통해 적절한 엔진을 시작하고 컨텍스트에 전달합니다. 엔진이 나머지 부분을 처리합니다. - -### Maya - -이 앱은 Maya가 부트 프로세스의 일부로 호출할 `userSetup.py` 자동 시작 스크립트를 Maya에 등록합니다. - -Maya 부팅 과정은 다음과 같습니다. - -1. Maya가 `userSetup.py` 시작 스크립트를 실행합니다. -1. {% include product %} 툴킷 컨텍스트 API를 사용하면 {% include product %}에서 전달된 엔티티 ID가 툴킷 컨텍스트로 변환됩니다. -1. `tank.system.start_engine()`을 통해 적절한 엔진을 시작하고 컨텍스트에 전달합니다. 엔진이 나머지 부분을 처리합니다. - -### MotionBuilder - -이 앱은 MotionBuilder가 부트 프로세스의 일부로 호출할 `init_tank.py` 자동 시작 스크립트를 MotionBuilder에 등록합니다. - -MotionBuilder 부팅 과정은 다음과 같습니다. - -1. MotionBuilder가 `init_tank.py` 시작 스크립트를 실행합니다. -1. {% include product %} 툴킷 컨텍스트 API를 사용하면 {% include product %}에서 전달된 엔티티 ID가 툴킷 컨텍스트로 변환됩니다. -1. `tank.system.start_engine()`을 통해 적절한 엔진을 시작하고 컨텍스트에 전달합니다. 엔진이 나머지 부분을 처리합니다. - -### Nuke - -이 앱은 Nuke가 부트 프로세스의 일부로 호출할 `menu.py` 자동 시작 스크립트를 Nuke에 등록합니다. - -Nuke 부팅 과정은 다음과 같습니다. - -1. Nuke가 `menu.py` 시작 스크립트를 실행합니다. -1. {% include product %} 툴킷 컨텍스트 API를 사용하면 {% include product %}에서 전달된 엔티티 ID가 툴킷 컨텍스트로 변환됩니다. -1. `tank.system.start_engine()`을 통해 적절한 엔진을 시작하고 컨텍스트에 전달합니다. 엔진이 나머지 부분을 처리합니다. - -### Photoshop - -이 앱은 Adobe 익스텐션 관리자를 사용하여 탱크 플러그인을 설치하거나 설치되었는지 확인합니다. - -Photoshop 부팅 과정은 다음과 같습니다. - -1. Photoshop이 탱크 플러그인을 실행합니다. -1. {% include product %} 툴킷 컨텍스트 API를 사용하면 {% include product %}에서 전달된 엔티티 ID가 툴킷 컨텍스트로 변환됩니다. -1. `tank.system.start_engine()`을 통해 적절한 엔진을 시작하고 컨텍스트에 전달합니다. 엔진이 나머지 부분을 처리합니다. - -#### 추가 구성 - -이 앱을 사용하여 Photoshop을 시작하려면 _추가_ 섹션에 4개의 구성 값을 제공해야 합니다. 다음은 조정해야 하는 시스템 및 설치 위치에 대한 구성 및 올바른 기본값입니다. - -```yaml -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" -``` 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 deleted file mode 100644 index 17472db7d..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: Loader -pagename: tk-multi-loader2 -lang: ko ---- - -# Loader - -이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 [{% include product %} 통합 사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/)를 참조하십시오. - -## 구성 - -Loader는 상세하게 구성할 수 있으며 여러 가지 방법으로 설정할 수 있습니다. 다음 두 가지 주요 구성 영역이 있습니다. - -- 왼쪽 트리 뷰에 표시할 탭과 컨텐츠를 설정하는 영역 -- 다른 게시에 표시할 액션을 제어하고 실제로 수행할 액션을 제어하는 영역 - -다음 섹션에서는 Loader를 구성할 수 있는 방법을 개괄적으로 설명합니다. -구성과 관련된 기술적 세부 사항은 이 문서에서 자세히 설명하는 별도 섹션을 참조하십시오. - -### 트리 뷰 - -트리 뷰는 상세하게 구성할 수 있으며 표준 {% include product %} 필터 구문을 사용하여 다양한 탭의 컨텐츠를 제어할 수 있습니다. 각 탭은 계층으로 그룹 지정된 단일 {% include product %} API 쿼리로 구성됩니다. 임의의 필터를 추가하여 표시할 항목을 제어할 수 있으며 특수 키워드 `{context.entity}`, `{context.project}`, `{context.project.id}`, `{context.step}`, `{context.task}` 및 `{context.user}`를 사용하여 현재 컨텍스트를 기반으로 쿼리의 범위를 지정할 수 있습니다. 이러한 각 키워드는 관련 컨텍스트 정보로 대체되거나 컨텍스트의 해당 부분이 입력되지 않은 경우 또는 id, type 및 name 키가 포함된 표준 {% include product %} 링크 사전인 경우에는 `None`으로 대체됩니다. - -기본적으로 Loader는 현재 프로젝트에 속한 에셋 및 샷을 표시합니다. 다시 구성하면 다른 프로젝트 또는 특정 에셋 라이브러리 프로젝트 등의 항목을 표시하는 등 쉽게 확장할 수 있습니다. 예를 들어 필터를 사용하여 특정 승인 상태의 항목만 표시하거나 상태별 또는 다른 {% include product %} 필드별로 그룹 항목을 표시할 수도 있습니다. 다음은 트리 뷰 탭을 설정할 수 있는 방법을 보여 주는 몇 가지 샘플 구성 설정입니다. - -```yaml -# An asset library tab which shows assets from a specific -# {% include product %} project -caption: Asset Library -entity_type: Asset -hierarchy: [sg_asset_type, code] -filters: -- [project, is, {type: Project, id: 123}] - -# Approved shots from the current project -caption: Shots -hierarchy: [project, sg_sequence, code] -entity_type: Shot -filters: -- [project, is, '{context.project}'] -- [sg_status_list, is, fin] - -# All assets for which the current user has tasks assigned -caption: Assets -entity_type: Task -hierarchy: [entity.Asset.sg_asset_type, entity, content] -filters: -- [entity, is_not, null] -- [entity, type_is, Asset] -- [task_assignees, is, '{context.user}'] -- [project, is, '{context.project}'] -``` - -### 게시 필터링 - -{% include product %}에서 게시 데이터를 로드할 때 Loader가 수행하는 게시 쿼리에 {% include product %} 필터를 적용할 수 있습니다. 이 필터는 `publish_filters` 매개변수를 통해 제어되며 승인되지 않은 게시 또는 연결된 리뷰 버전이 승인되지 않은 게시를 숨기는 작업 등에 사용할 수 있습니다. - -### 액션이 표시되지 않을 경우 - -Loader는 각 엔진별로 다양한 *액션*이 제공됩니다. 예를 들어 Nuke의 경우 "스크립트 가져오기"와 "읽기 노드 만들기"의 두 가지 액션이 있습니다. 액션은 후크에 정의됩니다. 즉, 원하는 경우 동작을 수정하거나 액션을 추가할 수 있습니다. 그런 다음 Loader의 구성에서 이러한 액션을 특정 *게시 유형*에 바인딩합니다. 액션을 게시 유형에 바인딩하는 것은 기본적으로 액션이 Loader 내부의 모든 해당 유형의 항목에 대한 액션 메뉴에 표시됨을 의미합니다. - -예를 들어 기본적으로 Nuke의 매핑은 다음과 같이 설정됩니다. - -``` -action_mappings: - Nuke Script: [script_import] - Rendered Image: [read_node] -``` - -액션 메뉴가 표시되지 않을 경우 사용 중인 게시 유형에 다른 이름을 선택했기 때문일 수 있습니다. 이 경우 구성으로 이동하고 해당 유형이 Loader 내부에 표시되도록 추가합니다. - -### 액션 관리 - -Loader가 지원하는 각 응용프로그램에는 해당 응용프로그램에 대해 지원되는 액션을 구현하는 액션 후크가 있습니다. 예를 들어 Maya를 사용하면 기본 후크는 각각 특정 Maya 명령을 수행하는 `reference`, `import` 및 `texture_node` 액션을 구현하여 현재 Maya 씬으로 컨텐츠를 가져옵니다. 모든 후크와 마찬가지로 재정의 및 변경이 완벽히 가능하고, 기본 제공 후크로부터 파생되는 후크를 생성하는 것 역시 가능하기 때문에 많은 코드를 복제할 필요 없이 기본 제공 후크에 다른 액션을 쉽게 추가할 수 있습니다. - -액션 후크에서 액션 목록을 정의한 후에는 이러한 액션을 게시 파일 유형에 바인딩할 수 있습니다. 예를 들어 이름이 "Maya Scene"인 파이프라인에 게시 파일 유형이 있는 경우 구성에서 이 유형을 후크에 정의된 `reference` 및 `import` 액션에 바인딩할 수 있습니다. 이를 통해 툴킷은 표시되는 각 Maya Scene 게시에 참조 및 가져오기 액션을 추가합니다. 이렇게 게시 유형을 실제 후크에서 분리하면 기본 구성과 함께 제공되는 설정이 아닌 다른 게시 유형 설정을 사용할 수 있도록 Loader를 쉽게 재구성할 수 있습니다. - -Loader는 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. Loader용으로 설치된 기본 구성 설정에서 다음과 같은 후크를 볼 수 있습니다. - -``` -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 키워드를 통해 툴킷은 앱 `hooks` 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 `{config}/loader/my_hook.py`로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 `hooks/loader/my_hook.py`라는 후크를 사용하게 됩니다. - -Loader가 사용하고 있는 또 다른 2세대 후크 기능은 더 이상 `execute()` 방식을 필요로 하지 않습니다. 대신, 후크는 일반 클래스와 더 비슷하며 함께 그룹으로 지정하는 데 유용한 방식 컬렉션을 포함할 수 있습니다. Loader의 경우 액션 후크는 다음 두 가지 방식을 구현해야 합니다. - -``` -def generate_actions(self, sg_publish_data, actions, ui_area) -def execute_multiple_actions(self, actions) -``` - -자세한 정보는 앱과 함께 제공되는 후크 파일을 참조하십시오. 후크는 또한 상속을 이용합니다. 즉, 후크의 모든 사항을 재지정할 필요는 없지만 다양한 방식으로 기본 후크를 좀 더 쉽게 확장하거나 확대하여 보다 쉽게 후크를 관리할 수 있습니다. - -`v1.12.0` 이전 버전에서는 응용프로그램이 `execute_action` 후크를 호출하여 액션을 실행했습니다. 최신 버전에서는 `execute_multiple_actions` 후크를 호출합니다. 기존 후크와의 호환성을 제공하기 위해 `execute_multiple_actions` 후크는 실제로 제공된 각각의 액션에 대해 `execute_action`을 호출합니다. 응용프로그램이 `v1.12.0` 이상으로 업그레이드 후 `execute_multiple_actions` 후크가 정의되지 않았다고 보고하는 경우 환경의 `actions_hook` 설정이 기본 제공 후크 `{self}/{engine_name}_actions.py`에서 올바르게 상속받는지 확인합니다. 기본 제공 후크에서 커스텀 후크를 파생하는 방법에 대한 자세한 정보는 [툴킷 참조 문서](http://developer.shotgridsoftware.com/tk-core/core.html#hook)를 참조하십시오. - -LINKBOX_DOC:5#The%20hook%20data%20type: 2세대 후크 형식에 대한 자세한 정보는 여기에서 확인하십시오. - -후크에서 상속을 사용하면 다음과 같은 기본 후크에 액션을 추가할 수 있습니다. - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -class MyActions(HookBaseClass): - - def generate_actions(self, sg_publish_data, actions, ui_area): - """ - Returns a list of action instances for a particular publish. - This method is called each time a user clicks a publish somewhere in the UI. - The data returned from this hook will be used to populate the actions menu for a publish. - - The mapping between Publish types and actions are kept in a different place - (in the configuration) so at the point when this hook is called, the loader app - has already established *which* actions are appropriate for this object. - - The hook should return at least one action for each item passed in via the - actions parameter. - - 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 publish, 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. - - If it will be shown in the details area, "details" is passed. - - If it will be shown in the history area, "history" is passed. - - Please note that it is perfectly possible to create more than one action "instance" for - an action! You can for example do scene introspection - if the action passed in - is "character_attachment" you may for example scan the scene, figure out all the nodes - where this object can be attached and return a list of action instances: - "attach to left hand", "attach to right hand" etc. In this case, when more than - one object is returned for an action, use the params key to pass additional - data into the run_action hook. - - :param sg_publish_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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_publish_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_publish_data): - """ - 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_publish_data: {% include product %} data dictionary with all the standard publish fields. - :returns: No return value expected. - """ - - # resolve local path to publish via central method - path = self.get_publish_path(sg_publish_data) - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_publish_data) -``` - -그런 다음 이 새 액션을 구성의 게시 유형 세트에 바인딩할 수 있습니다. - -```yaml -action_mappings: - Maya Scene: [import, reference, my_new_action] - Maya Rig: [reference, my_new_action] - Rendered Image: [texture_node] -``` - -위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다. - -## 참조 - -다음 방식은 앱 인스턴스에서 사용할 수 있습니다. - -### open_publish() -'파일 열기' 스타일 버전의 Loader를 제공하여 사용자가 게시를 선택할 수 있습니다. 그러면 선택한 게시가 반환됩니다. 이 모드에서 실행할 때 앱에 구성된 일반 액션은 허용되지 않습니다. - -app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) - -**매개변수 및 반환값** -* `str` **title** - 게시 열기 대화상자에 표시할 제목입니다. -* `str` **action** - '열기' 버튼에 사용할 액션 이름입니다. -* `list` **publish_types** - 사용 가능한 게시 목록을 필터링하는 데 사용할 게시 유형 목록입니다. 이 값이 비어 있거나 None인 경우 모든 게시가 표시됩니다. -* **반환값:** 사용자가 선택한 {% include product %} 엔티티 사전 목록을 반환합니다. - -**예시** - -```python ->>> engine = sgtk.platform.current_engine() ->>> loader_app = engine.apps.get["tk-multi-loader2"] ->>> selected = loader_app.open_publish("Select Geometry Cache", "Select", ["Alembic Cache"]) ->>> print selected -``` diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md deleted file mode 100644 index 0ad26514e..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Publish -pagename: tk-multi-publish2 -lang: ko ---- - -# Publish - -![Publisher](../images/apps/sg_publisher_1.png) - -## 개요 - -아티스트는 Publish 앱을 통해 아티스트 다운스트림에서 사용할 수 있도록 작업물을 게시할 수 있습니다. 아티스트의 컨텐츠 생성 소프트웨어 내에서 기존 게시 워크플로우를 지원하고 디스크상의 파일을 독립 실행형으로 게시할 수 있습니다. 컨텐츠 생성 소프트웨어에서 작업하거나 기본 {% include product %} 통합을 사용하여 작업할 때 이 앱은 아티스트가 게시할 수 있는 항목을 자동으로 검색해 표시해 줍니다. 보다 정교한 프로덕션이 필요한 경우 스튜디오는 커스텀 게시 플러그인을 작성하여 아티스트 워크플로우를 진행할 수 있습니다. - -## 설명서 - -Publisher에 대한 전체 설명서는 [여기](https://developer.shotgridsoftware.com/ko/d587be80/?title=Integrations+User+Guide#the-publisher)에서 찾아볼 수 있습니다! - 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 deleted file mode 100644 index 14174af77..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: default -title: Python 콘솔 -pagename: tk-multi-pythonconsole -lang: ko ---- - -# Python 콘솔 - -다음은 Python 인터프리터에 액세스할 수 있는 DCC에서 사용하는 Python 콘솔 패널로 해당 인터프리터와의 상호 작용은 제한되어 있거나 지원되지 않습니다. - -![{% include product %} Python 콘솔](../images/apps/multi-pythonconsole-python_console.png) - -## Panel - -![Maya에 고정된 콘솔](../images/apps/multi-pythonconsole-docked.png) - -콘솔을 설치하고 나면 DCC에 패널로 등록되고, {% include product %} 메뉴에서 사용할 수 있습니다. 포함된 툴킷 패널(Maya, Nuke, Houdini)을 지원하는 앱에서는 콘솔이 고정 패널에 표시됩니다. 이전 버전의 DCC 또는 패널을 지원하지 않는 DCC와 사용하는 경우 콘솔은 일반 툴킷 대화상자로 표시됩니다. - -## 탭 - -![탭](../images/apps/multi-pythonconsole-tabs.png) - -Python 콘솔은 각각 편집기 및 출력 창을 포함하고 있는 탭을 하나 이상 표시합니다. 오른쪽 아래에 있는 `+` 버튼을 클릭해서 새 탭을 생성할 수 있습니다. 탭 이름 옆에는 `x` 버튼이 있어 탭을 삭제할 수 있습니다. 탭 자체를 두 번 클릭하면 탭의 새 이름을 입력하라는 메시지가 표시됩니다. 탭은 드래그 앤 드롭으로 재정렬할 수 있습니다. 탭의 상태는 DCC를 닫을 때 저장되었다가 다음에 실행할 때 복원됩니다. - -### 편집기 - -![편집기](../images/apps/multi-pythonconsole-input.png) - -콘솔에는 Python 편집을 위한 입력 영역이 있습니다. 편집기에는 행 번호가 포함되며, 현재 커서가 가리키는 행이 강조 표시되고, 기본적인 구문 강조 표시도 지원됩니다. 콘솔은 DCC의 팔레트를 사용하여 통합된 모양과 느낌을 주려고 합니다. - -블록 들여쓰기 또는 내어쓰기가 지원됩니다. 하나 이상의 행을 선택하고 `tab` 키를 눌러 4칸 들여쓰기를 지정하거나 `shift + tab`을 눌러 4칸 내어쓰기를 지정합니다. 4칸 블록으로 들여쓰기를 유지하려고 시도하므로 가장 인접한 4칸 전체 블록으로 들여쓰거나 내어쓰게 됩니다. - -블록 주석 지정 및 주석 해제 기능도 지원됩니다. 하나 이상의 행을 선택하고 Mac에서는 `cmd + /`, Windows 및 Linux에서는 `ctrl + /`를 누릅니다. 선택한 행 중에 시작 부분에 `#`이 없는 행이 있는 경우 선택한 모든 행에 추가됩니다. 모든 행에 `#`이 있는 경우 제거됩니다. - -### 출력 - -![출력](../images/apps/multi-pythonconsole-output.png) - -출력 영역에는 실행한 Python의 결과가 표시됩니다. 소스 Python 명령 에코는 기본적으로 켜져 있고, 해당 출력은 `>>>` 접두사가 추가되어 구별됩니다. 각 실행에는 타임스탬프도 표시됩니다. 에코를 끌 수 있는 토글도 있습니다. 구문 및 런타임 오류는 디버깅을 위한 전체 스택 트래킹과 함께 빨간색으로 표시됩니다. - -## 버튼 - -![버튼](../images/apps/multi-pythonconsole-buttons.png) - -### 출력 - -* **지우기(Clear)** - 출력 브라우저의 컨텐츠를 지웁니다. -* **에코(Echo)** - 출력 브라우저에서 실행된 명령의 에코를 토글합니다. - -### 편집기 - -* **실행(Execute)** - 편집기의 컨텐츠를 실행합니다. -* **저장(Save)** - 편집기의 현재 컨텐츠를 파일에 저장합니다. -* **열기(Open)** - 파일을 편집기에서 엽니다. -* **지우기(Clear)** - 편집기의 컨텐츠를 지웁니다. -* **행(Lines)** - 현재 탭의 행 번호를 토글합니다. - -## 전역 - -![전역](../images/apps/multi-pythonconsoleglobals.png) - -일부 {% include product %}/툴킷 전역은 [셸용 {% include product %} 엔진](https://developer.shotgridsoftware.com/ko/2ad59ee8)에서 사용할 수 있는 항목과 유사하게 콘솔에 사전 정의되어 있습니다. - -* Tk API 핸들은 `tk` 변수를 통해 사용할 수 있습니다. -* {% include product %} API 핸들은 `shotgun` 변수를 통해 사용할 수 있습니다. -* 현재 컨텍스트는 `context` 변수에 저장됩니다. -* 셸 엔진은 `engine` 변수를 통해 액세스할 수 있습니다. - -## 외부 소스 - -앱에는 외부 위치에서 Python 소스를 로드하기 위해 구현할 수 있는 후크가 함께 제공됩니다. 이 후크는 `external_sources_hook`라고 부르며, 사용하려면 `get_external_source_actions`라는 방식을 구현해야 합니다. 이 방식은 트리거 시 콘솔에 (컨텐츠와 함께) 새 탭을 추가하는 `QActions` 목록을 반환해야 합니다. 사전 정의된 사용자 목록을 위해 github에서 gist를 로드하는 구현 예시가 제공됩니다. 후크에 의해 반환되는 액션은 **열기(Open)** 버튼을 오래 누르면 나타나는 팝업 메뉴에 표시됩니다. - -![외부 소스](../images/apps/multi-pythonconsole-external_sources.png) - -## 핫키 - -* 선택 항목 실행은 `Ctrl + Enter` -* 새 탭 생성은 `Ctrl + T` -* 탭 탐색은 `Ctrl + Shift + [` 또는 `Ctrl + Shift + ]` -* 입력/출력 글꼴 크기 조정은 `Ctrl + Wheel` - -**참고:** 일부 DCC에서는 핫키를 사용하지 못할 수도 있습니다. - -## 기타 참고 사항 - -* 일부 이전 버전의 DCC에서는 세션을 닫을 때 Python 콘솔을 연 채로 두면 충돌이 발생할 수도 있습니다. 이는 일부 이전 버전의 PySide에서 발생하는 버그일 수 있습니다. 최신 버전의 PySide와 번들로 제공되는 보다 최신 버전의 DCC에서는 종료 시 충돌이 나타나지 않습니다. 최신 DCC 릴리즈 버전에서 이 문제가 발생하면 자세히 조사할 수 있도록 [티켓을 제출](https://knowledge.autodesk.com/ko/contact-support)해 주십시오. \ No newline at end of file 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 deleted file mode 100644 index 028fee172..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: default -title: Review Submission -pagename: tk-multi-reviewsubmission -lang: ko ---- - -# Review Submission - -## 앱 사용 방법 - -### API로 사용 - -이 앱에는 Multi Publish 앱과 같은 다른 앱 내에서 호출되는 모드가 있습니다. - -이 모드는 이미지 시퀀스에서 Quicktime을 만들고 리뷰를 용이하게 하기 위해 {% include product %}에 버전으로 제출합니다. 생성된 Quicktime에는 슬레이트 및 번인이 있습니다. 글꼴, 로고 위치, 영상 압축 옵션 및 번인/슬레이트 정보 등은 현재 기본 후크에서 하드코딩되어 있으므로 후크 함수를 다시 구현하여 동작을 조정하는 것이 좋습니다. - -슬레이트 및 번인의 현재 기본 형식은 다음과 같습니다. - -![주 메뉴](../images/apps/multi-reviewsubmission-quicktime_slate.png) - -![주 메뉴](../images/apps/multi-reviewsubmission-quicktime_burnin.png) - -자체 앱 또는 후크에서 이 앱을 활용하고 싶다면 간단한 다음 방법을 참조하십시오. - -- 현재 엔진에서 `tk-multi-reviewsubmission` 앱을 가져옵니다. 이 작업은 `self.parent.engine.apps.get('tk-multi-reviewsubmission')` 호출을 사용하여 후크 내에서 수행할 수 있습니다. -- 앱을 사용할 수 있는 경우 `render_and_submit_version()` 방식을 호출합니다. - -후크 코드의 내용은 다음 예와 같습니다. - -```python -review_submission_app = self.parent.engine.apps.get("tk-multi-reviewsubmission") -if review_submission_app: - review_submission_app.render_and_submit_version( - template, - fields, - first_frame, - last_frame, - sg_publishes, - sg_task, - comment, - thumbnail_path, - progress_cb, - color_space - ) -``` - -`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에서 쓰기 노드의 색상 영역 노브에 있는 열거 값 중 하나입니다. - -### 메뉴 항목으로 사용 - -이 모드는 DCC 내부의 {% include product %} 메뉴에 메뉴 항목을 추가합니다.  - -이 모드는 현재 뷰포트의 빠른 스냅샷을 만들고 이를 버전 초안으로 {% include product %} Create에 보냅니다. 그런 다음 사용자는 주석, 텍스트 또는 비교 노트를 추가해 {% include product %} Create 내에서 리뷰 제출물을 확장할 수 있습니다. - -이 기능을 컨텍스트에 추가하려면 다음을 수행해야 합니다. -* `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' - location: - type: app_store - name: tk-multi-reviewsubmission - version: v1.0.1 -``` diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md deleted file mode 100644 index 6128dd676..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Screening Room -pagename: tk-multi-screeningroom -lang: ko ---- - -# Screening Room - -이 앱은 현재 Maya 세션을 Screening Room과 후크하는 작은 앱입니다. {% include product %} 메뉴에 **Screening Room으로 이동(Jump to Screening Room)**이라는 항목을 추가합니다. 이 버튼을 클릭하면 Screening Room이 시작되고 현재 {% include product %} 툴킷 컨텍스트(예: 샷, 에셋 또는 태스크)에서 이를 가리킵니다. 그러면 Screening Room을 사용하여 제출된 모든 컨텐츠를 검색할 수 있습니다. 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 deleted file mode 100644 index e4a43b853..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Set Frame Range -pagename: tk-multi-setframerange -lang: ko ---- - -# Set Frame Range - -이 앱은 현재 열려 있는 씬에서 프레임 범위를 관리하는 데 도움을 줍니다. **프레임 범위 동기화(Sync Frame Range with {% include product %})** 메뉴 옵션을 클릭하면 {% include product %} 메뉴에서 앱에 액세스할 수 있습니다. - -이 버튼을 클릭하면 {% include product %} 툴킷은 현재 작업 영역(일반적으로 샷)과 관련된 {% include product %} 엔티티를 보고 입력 및 출력 프레임 정보가 있는 입력 및 출력 필드를 찾습니다. 일반적으로 샷과 함께 사용되며 이 경우 앱은 {% include product %}의 기본 구성에 정의된 표준 샷 입력 및 출력 필드를 사용합니다. 그러나 다른 필드에서 프레임 범위를 가져오도록 앱을 구성할 수도 있습니다. - -![{% include product %}](../images/apps/multi-setframerange-shotgun.png) - -앱을 실행하면 현재 씬을 해당 입출력으로 업데이트하고 마지막으로 요약 메시지를 표시합니다. - -![Nuke](../images/apps/multi-setframerange-nuke.png) - -## 여러 {% include product %} 필드 동기화 옵션 - -{% include product %} 메뉴에서 `menu_name` 속성을 설정하여 이 앱의 인스턴스를 여러 개 정의할 수 있습니다. 이렇게 하면 서로 다른 {% include product %} 필드의 동기화를 위해 여러 가지 메뉴 액션을 정의할 수 있게 됩니다. - -이를 위해 각 인스턴스에 대해 다른 앱 인스턴스 이름, `menu_name` 및 입력/출력 프레임 필드를 설정하십시오. - -```yaml -tk-multi-setframerange_cuts: - menu_name: Sync frame range using cut fields - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - location: "@apps.tk-multi-setframerange.location" -tk-multi-setframerange_handles: - menu_name: Sync frame range using handle fields - sg_in_frame_field: sg_handle_in - sg_out_frame_field: sg_handle_out - location: "@apps.tk-multi-setframerange.location" -``` -그러면 각 항목이 {% include product %} 메뉴에 별도의 옵션으로 표시됩니다. - -![여러 인스턴스](../images/apps/multi-setframerange-multiple_instances.png) - -참고: 이는 앱 `v0.4.0` 버전의 새로운 기능입니다. - -## 작업 후크 - -현재 씬 프레임 범위를 가져오거나 프레임 범위를 설정하기 위한 소프트웨어별 로직은 프레임 작업 후크에서 처리됩니다. 새 엔진에 대한 지원을 추가하거나 해당 동작의 구현 방법을 변경하려는 경우 `hook_frame_operation` 앱 속성을 설정하고 고유의 가져오기(get) 및 설정(set) 로직을 구현하여 프레임 작업 후크를 인수할 수 있습니다. - -참고: 이는 앱 `v0.4.0` 버전의 새로운 기능입니다. \ No newline at end of file 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 deleted file mode 100644 index a963d25e5..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -layout: default -title: ShotGrid Panel -pagename: tk-multi-shotgunpanel -lang: ko ---- - -# {% include product %} 패널 - -이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 [{% include product %} 통합 사용자 안내서](https://developer.shotgridsoftware.com/ko/d587be80/#the-panel)를 참조하십시오. - -## {% include product %} Panel 구성 - -{% include product %} Panel에서 광범위하게 구성할 수 있는 두 가지 주요 영역은 UI의 텍스트 모양과 데이터와 연결할 액션입니다. 아래 섹션에서는 두 시스템의 구성을 제어하는 방법에 대해 간략히 설명합니다. - -### 표시 내용 구성 - -상세 정보 영역의 값과 목록은 둘 다 `{% include product %}_fields` 후크를 통해 구성할 수 있습니다. 이 후크를 분류하고 구현을 변경하여 원하는 정확한 값을 표시할 수 있습니다. - -![구성](../images/apps/multi-shotgunpanel-config.png) - -**템플릿 시스템** - -후크는 간단한 템플릿 언어를 지원하므로 유연성이 뛰어납니다. 또한 Qt에서 지원하는 HTML 하위 세트를 지원하므로 표시되는 값의 색상, 글꼴 크기, 두께 등을 제어할 수 있습니다. 템플릿 언어는 다음과 같은 방식으로 작동합니다. - -- {% include product %} 값은 `{brackets}`로 묶여 있습니다(예: `Description: {description}`). 이 템플릿이 렌더링되면 `{description}` 부분은 설명 필드 값으로 대체됩니다. - -- 값의 선택적 접두사 또는 접미사(값이 비어 있지 않은 경우에만 표시)를 원한다면 `{[Prefix]sg_field[suffix]}` 구문을 사용하면 됩니다. 템플릿 `{[Start: ]start_date} {[End: ]end_date}`는 두 값이 모두 입력될 경우 `Start: 12 July 2009 End: 14 July 2012`를 렌더링하지만 종료 날짜가 설정되지 않은 경우 `Start: 12 July 2009`를 렌더링합니다. - -- 일부 값이 설정되지 않은 경우에는 폴백을 정의할 수 있습니다. {% include product %} 버전의 경우 제작자가 아티스트 대신 버전을 제출하는 워크플로우를 지원하기 위해 `artist` 필드가 `created_by` 필드보다 우선권을 가집니다. 이 경우, 버전은 제작자에 의해 생성되지만 `artist` 필드는 아티스트로 설정됩니다. 그러나 항상 그렇지는 않습니다. 아티스트가 자신의 작업을 제출하는 파이프라인에 아티스트를 비워 두는 경우도 있습니다. 따라서 버전을 표시할 때에는 `artist` 필드를 먼저 확인하고, 이 필드가 설정되어 있지 않은 경우에는 `created_by` 필드로 폴백할 수 있도록 하는 것이 좋습니다. 이 작업은 `{field1|field2}` 구문을 사용하여 수행할 수 있습니다(예: `Created By: {artist|created_by}`). 이 구문을 선택적 필드(예: `{[Created By: ]artist|created_by}`)와 결합할 수도 있습니다. - - -이 후크에는 다음 방식이 포함됩니다. - -**목록에 표시되는 항목 제어** - -`get_list_item_definition()` 방식은 {% include product %} 엔티티 유형이 지정된 다양한 목록의 항목 모양을 제어하는 사전을 반환합니다. `top_left`, `top_right` 및 `body` 키가 포함된 사전을 반환합니다. 예를 들면 다음과 같습니다. - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**상단 상세 정보 영역 제어** - -`get_main_view_definition()` 방식은 {% include product %} 엔티티 유형에 따라 키 `title` 및 `body`를 사용하여 사전을 반환합니다. 이 값은 상세 정보 영역의 객체 모양을 제어합니다. 예를 들면 다음과 같습니다. - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**정보(Info) 탭에 표시되는 필드 제어** - -`get_all_fields()` 방식은 정보(Info) 탭에 렌더링될 때 해당하는 엔티티에 따라 표시할 필드의 목록을 반환합니다. - -### 액션 구성 - -액션은 {% include product %} 데이터에서 작동하는 작은 코드 조각입니다. 다음과 같은 예를 들 수 있습니다. - -- 지정된 {% include product %} 버전에 대해 RV를 시작하는 액션 -- 사용자가 지정된 태스크에 자신을 할당할 수 있는 액션 -- Maya에 {% include product %} 게시를 Maya 참조로 로드하는 액션 - -액션의 실제 페이로드는 *액션 후크* 에 정의됩니다. 액션 로직을 정의한 후에는 앱 구성에서 해당 액션을 {% include product %} 객체에 매핑할 수 있습니다. 이 액션 매핑은 다음 예와 같은 모습입니다. - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -위의 예에서는 `reference`, `import`, `texture_node`, `assign_task` 및 `play_in_rv` 액션을 사용합니다. 다음으로 다양한 {% include product %} 객체 및 조건에 액션을 매핑합니다. 예를 들어 모든 Maya 씬 게시 유형에 `import` 액션을 표시하려고 합니다. - -객체가 패널에 로드되면 위의 액션 구성을 확인하고 분석합니다. 현재 객체에 대한 적절한 액션 목록이 판별되고 `generate_actions()` 후크 방식이 실행됩니다. 이때 지정된 엔티티의 {% include product %} 데이터가 후크로 전달되므로 후크 코드가 이 특정 {% include product %} 객체에 대한 액션을 실행할 수 있는지 확인할 수 있습니다. 이렇게 하면 각 후크가 표시되기 전에 검사를 실행할 수 있습니다. 예를 들어 `play_in_rv` 후크는 로컬에서 사용할 수 있는 미디어가 있는 경우에만 관련될 수 있고 구성에서 설정된 액션 매핑은 지정된 {% include product %} 엔티티에 대해 활성화할 액션을 패널에 알려 주지만 `generate_actions()` 방식이 지정된 객체에 적합하지 않다고 판단할 수 있으므로 모두 표시되지 않을 수 있습니다. - -`generate_actions()` 방식에서 반환되는 액션은 액션 메뉴에 표시되고 사용자가 이를 클릭하면 `execute_action()` 후크 방식이 호출되어 액션을 실행합니다. - -패널이 지원하는 각 응용프로그램에 대해 적절한 액션을 구현하는 액션 후크가 있습니다. 예를 들어 Maya 등을 사용하면 기본 후크가 `reference`, `import` 및 `texture_node` 액션을 구현하고 각각 특정 Maya 명령을 수행하여 현재 Maya 씬으로 게시를 가져옵니다. 모든 후크와 마찬가지로 재정의 및 변경이 완벽히 가능하고, 기본 제공 후크로부터 파생되는 후크를 생성하는 것 역시 가능하기 때문에 많은 코드를 복제할 필요 없이 기본 제공 후크에 다른 액션을 쉽게 추가할 수 있습니다. - -패널은 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. 기본 구성 설정에서 다음과 같은 형식을 볼 수 있습니다. - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 키워드를 통해 툴킷은 앱의 `hooks` 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 `{config}/panel/maya_actions.py`로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 `hooks/panel/maya_actions.py`라는 후크를 사용하게 됩니다. - -자세한 정보는 앱과 함께 제공되는 후크 파일을 참조하십시오. 후크는 또한 상속을 이용합니다. 즉, 후크의 모든 사항을 재지정할 필요는 없지만 다양한 방식으로 기본 후크를 좀 더 쉽게 확장하거나 확대하여 보다 쉽게 후크를 관리할 수 있습니다. - -LINKBOX_DOC:5#The%20hook%20data%20type: 2세대 후크 형식에 대한 자세한 정보는 여기에서 확인하십시오. - -후크에서 상속을 사용하면 다음과 같은 기본 후크에 액션을 추가할 수 있습니다. - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption, group and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "group": "Pipeline Utils", - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) - - -``` - -그런 다음 이 새 액션을 구성의 게시 유형 세트에 바인딩할 수 있습니다. - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다. - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md b/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md deleted file mode 100644 index 517b8f594..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Snapshot -pagename: tk-multi-snapshot -lang: ko ---- - -# Snapshot - -{% include product %} Snapshot은 다른 사람과 공유하지 않고 작업의 버전을 만들고 증분을 관리할 수 있는 빠른 증분 백업입니다. 스냅샷을 만들고 설명과 썸네일을 추가하여 나중에 언제든지 다시 돌아가서 복원할 수 있도록 특정 시점 이미지를 생성합니다. 씬을 많이 변경할 때와 이전 버전의 씬을 확실히 백업해 두려는 경우 유용합니다. \ No newline at end of file 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 deleted file mode 100644 index 8b4311359..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Workfiles -pagename: tk-multi-workfiles2 -lang: ko ---- - -# Workfiles - -## 파일 열기 대화상자 - -### 작업 영역 탐색 - -![작업](../images/apps/multi-workfiles2-tasks.png) - -기본 대화상자는 두 부분으로 나뉩니다. 왼쪽에는 일련의 탭이 있습니다. 첫 번째 탭은 "내 태스크(My Tasks)"이며 현재 사용자에게 할당된 모든 태스크를 표시합니다. {% include product %} 웹 사이트의 "내 태스크(My Tasks)" 페이지를 연상케 합니다. - -또는 엔티티 탭을 사용하여 {% include product %} 엔티티를 탐색할 수도 있습니다. 기본적으로 작업 파일 응용프로그램은 해당 탭을 확인하여 샷 또는 에셋과 관련된 모든 태스크를 검색할 수 있습니다. - -탭 세트는 환경 파일의 `entities` 설정을 통해 완전히 구성할 수 있습니다. - -앱 설정에서 `show_file_open: true/false`를 설정하여 이 대화상자를 비활성화/활성화할 수 있습니다. - -### 파일 찾기 - -![파일 선택](../images/apps/multi-workfiles2-file_selection.png) - -오른쪽에는 왼쪽의 선택 항목과 관련된 작업 파일 및 게시가 표시됩니다. 작업 파일 및 게시는 "전체(All)", "작업(Working)" 및 "게시(Publishes)" 탭을 사용하여 함께 또는 각각 볼 수 있습니다. - -### 이전 버전에 액세스 - -![이전 버전](../images/apps/multi-workfiles2-previous_versions.png) - -이전 버전에 액세스하는 방법에는 두 가지가 있습니다. 먼저 브라우저 상단에 있는 "모든 버전(All versions)" 상자를 클릭하면 버전을 확장하여 브라우저에 개별적으로 모두 나열할 수 있습니다. 또 다른 옵션으로는, 파일을 마우스 오른쪽 버튼으로 클릭하여 마지막 10개 버전에 액세스할 수 있습니다. - -### 사용자 샌드박스 - -![샌드박스](../images/apps/multi-workfiles2-sandboxes.png) - -파이프라인 구성에서 사용자 샌드박스를 사용하는 경우 기본적으로 현재 사용자의 파일만 표시됩니다. 사용자가 다른 사용자 샌드박스의 파일을 보려면 맨 위에 있는 버튼을 사용하여 파일을 표시할 샌드박스를 선택할 수 있습니다. - -### 결과 좁히기 - -![검색](../images/apps/multi-workfiles2-search.png) - -텍스트를 입력하여 모든 뷰의 결과를 좁힐 수 있습니다. 검색은 항목의 이름과 일치합니다. - -## 파일 저장 대화상자 - -기본적으로 "파일 저장(File Save)" 대화상자를 통해 사용자는 현재 컨텍스트에 파일을 저장할 수 있습니다. 씬 이름, 버전 번호 및 선택적 파일 확장자(사용 가능한 경우)를 묻는 메시지가 표시되고 "저장(Save)" 버튼이 회색으로 표시됩니다. 응용프로그램이 씬 이름에 대한 사용 가능한 다음 버전 번호를 확인한 후에야 오른쪽 하단에 있는 저장(Save) 버튼이 활성화됩니다. - -앱 설정에서 `show_file_save: true/false`를 설정하여 이 대화상자를 비활성화/활성화할 수 있습니다. - -### 다른 컨텍스트에 저장 - -![확장 저장](../images/apps/multi-workfiles2-expanding_save.png) - -다른 컨텍스트에 파일을 저장하려면, 대화상자의 왼쪽 상단에 있는 확장 버튼을 클릭하면 "파일 저장(File Save)" 대화상자가 확장되고 저장할 다른 컨텍스트를 선택할 수 있습니다. - -### 파일 확장자 드롭다운 추가 - -![파일 저장 유형](../images/apps/multi-workfiles2-file_save_file_type.png) - -새로운 파일 저장 대화상자를 사용하여 저장할 파일의 확장자를 선택할 수 있습니다. 이를 활성화하려면 파이프라인 구성의 `templates.yml` 파일을 조정해야 합니다. 먼저 토큰이 `templates.yml` 내의 토큰 목록에 정의되어야 합니다. - -```yaml -maya_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`는 작업 파일 응용프로그램에 필요한 힌트입니다. 응용프로그램에 이 토큰은 확장자이며 드롭다운 위젯에 표시되어야 함을 알려 줍니다. - -그런 다음 이 토큰을 Maya 특정 템플릿에 추가할 수 있습니다. - -```yaml -maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' -``` - -## 컨텍스트 변경 대화상자 - -![컨텍스트 변경](../images/apps/multi-workfiles2-change_context.png) - -컨텍스트 변경 대화상자는 오른쪽에 파일 찾아보기 부분이 없다는 점을 제외하고 열기 대화상자와 비슷합니다. 태스크 또는 엔티티를 선택하고 컨텍스트 변경 버튼을 눌러 현재 엔진 컨텍스트를 변경할 수 있습니다. - -앱 설정에서 `show_change_context: true/false`를 설정하여 이 대화상자를 비활성화/활성화할 수 있습니다. - -## 단계 필터링 - -태스크를 검색할 때 `step`이 계층에 포함되어 있는 경우 파이프라인 단계 필터링을 사용하면 선택한 단계 목록에 링크된 태스크만 검색되므로 {% include product %}에서 검색되는 데이터의 양을 줄일 수 있습니다. - -탭에 표시되는 단계 목록은 `step_filter_on` 설정으로 제어됩니다. 설정하지 않을 경우 기존의 모든 파이프라인 단계가 표시됩니다. - -아래 예는 에셋 및 샷에 대한 태스크를 각각 표시하는 두 개의 탭을 정의합니다. - -```yaml - - 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: - - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] -``` - -![단계 필터](../images/apps/multi-workfiles2-step_filter.png) - -## 유예 쿼리 - -성능 향상을 위해 엔티티 트리를 빌드하는 과정을 두 단계의 쿼리로 나눌 수 있습니다. -- 첫 번째 쿼리는 {% include product %}에서 레코드를 검색하여 트리 상단을 채우는 데 사용됩니다. -- 두 번째 쿼리를 사용하여 사용자가 트리를 확장할 때 하위를 검색합니다. - -다음 설정을 사용하면 앱이 시작될 때 {% include product %}에서 에셋 및 샷이 검색됩니다. 특정 에셋 또는 샷에 링크된 태스크는 트리 뷰에서 이 에셋 또는 샷을 선택하거나 확장한 경우에만 검색됩니다. - -```yaml - entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] -``` - -![엔티티 트리 뷰](../images/apps/multi-workfiles2-entity_tree_view.png) 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 deleted file mode 100644 index e2c4181ce..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Nuke Quickreview -pagename: tk-nuke-quickreview -lang: ko ---- - -# Nuke Quickreview - -Quickreview 앱을 사용하면 {% include product %}에서 리뷰를 위해 Nuke 렌더를 간편하게 제출할 수 있습니다. 각 Quickreview를 제출할 때마다 {% include product %}에 **버전**이 생성되어 {% include product %} Node 메뉴에 있는 Nuke의 노드로 나타납니다. 새 노드를 만들고 Nuke 네트워크에 연결하여 두 번 클릭한 후 Upload 버튼을 클릭하면 됩니다. - -![Nuke 개요](../images/apps/nuke-quickreview-nuke_ui.png) - -{% include product %}에서 버전이 생성되는 방법을 제어할 수 있도록 다음 UI가 제공됩니다. - -![UI 제출](../images/apps/nuke-quickreview-submit.png) - -다음 항목을 제어할 수 있습니다. - -- 버전 이름은 현재 로드된 Nuke 스크립트를 기반으로 미리 입력되며 필요한 경우 조정할 수 있습니다. -- 버전과 관련된 엔티티 링크 및 태스크는 현재 컨텍스트를 기반으로 하며 조정할 수 있습니다. -- 제출할 프레임 범위를 조정할 수 있습니다. -- 생성된 버전을 재생 목록에 추가할 수 있습니다. 최근 재생 목록이 포함된 드롭다운이 표시됩니다. - -업로드(Upload) 버튼을 누르면 Nuke에 Quicktime이 생성된 다음 {% include product %}에 업로드됩니다. 업로드되고 나면 다음 화면이 표시되며 Nuke의 기본 제공 {% include product %} Panel 또는 웹 오버레이 플레이어에 버전을 표시할 수 있습니다. - -## 번인 및 슬레이트 - -기본적으로 앱은 슬레이트 및 번인 기능이 있는 Quicktime을 생성합니다. - -![슬레이트 예](../images/apps/nuke-quickreview-slate.png)![번인 예](../images/apps/nuke-quickreview-burnins.png) - -## 커스터마이즈 - -대부분의 리뷰 제출 특성은 후크를 사용하여 조정할 수 있습니다. 설명서는 [여기](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 deleted file mode 100644 index 06a3f3dfa..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ /dev/null @@ -1,603 +0,0 @@ ---- -layout: default -title: Nuke Write Node -pagename: tk-nuke-writenode -lang: ko ---- - -# Nuke Write Node - -Nuke Write Node 앱은 이미지를 렌더링할 위치를 쉽게 표준화할 수 있는 커스텀 {% include product %} Write node를 제공합니다. 각 환경에 맞게 구성할 수 있습니다. 경로 외에도 구성에 따라 사용할 렌더 형식이 결정됩니다. - -## 일반적인 사용 - -{% include product %} Write Node를 사용하려면 먼저 스크립트를 툴킷 작업 파일로 저장한 다음 Nuke 메뉴를 통해 새 노드를 만듭니다. 이렇게 하면 일반적인 쓰기 노드와 비슷한 노드가 생성됩니다. - -![Write Node](../images/apps/nuke-writenode-write_node_creation.png) - -직접 경로를 입력하는 대신 출력 이름을 지정하면 툴킷이 나머지 경로를 자동으로 계산합니다. UI에서 계산된 경로를 보고 *파일 시스템에 표시(Show in File System)* 버튼을 클릭하여 디스크의 위치를 열 수 있습니다. 렌더가 작성되는 위치는 툴킷 구성에 따라 다릅니다. - -렌더 버전이 지정되고 버전 번호의 경우 항상 Multi Publish를 사용하여 게시할 때 자동으로 증가되는 현재 Nuke 스크립트 버전을 따릅니다. - -## 렌더 경로 재설정 - -Write Node는 현재 경로를 캐시하므로 파일이 툴킷 작업 영역 외부에서 열리는 경우에도 유효합니다. 경우에 따라 경로가 동기화되지 않고 '잠김' 상태가 될 수 있습니다. 렌더 경로가 잠겨 있으면 이 Write Node로 만든 렌더를 게시할 수 없습니다. - -렌더 경로를 재설정하려면 Work-files 앱의 '씬 버전 올림(Version Up Scene)' 명령을 사용하여 씬의 버전을 증가시키거나 개별적으로 쓰기 노드를 선택하고 특성에서 **경로 재설정(Reset Path)**을 클릭합니다. - -![그래프 작성](../images/apps/nuke-writenode-write_node_reset_path.png) - -## 다른 Write Node 프로파일 추가 - -{% include product %} Write Node는 Nuke의 기본 제공 쓰기 노드를 래핑하므로 Nuke에서 지원하는 모든 형식을 앱에서 사용할 수 있으며 구성을 통해 노드를 더 추가할 수 있습니다. 가장 간단한 시작 방법은 원하는 매개변수로 간단한 Nuke Write node를 설정하는 것입니다. 예를 들어 LZW 압축을 사용하는 16비트 tif를 작성한다고 가정해 보겠습니다. 텍스트 편집기에서 Nuke 스크립트를 보면 쓰기 노드는 다음과 같습니다. - -``` -Write { - file /Users/ryanmayeda/Desktop/test.%04d.tif - file_type tiff - datatype "16 bit" - compression LZW - checkHashOnRead false - name Write1 - xpos -145 - ypos -61 -} -``` - -이 텍스트는 필요한 매개변수 이름과 값이 무엇인지 알려 줍니다. 이 경우에는 `datatype`과 `compression`입니다. 다음으로 환경 구성(예: `/path/to/pipeline/config/env/shot_step.yml`)으로 이동하여 `tk-nuke-writenode` 앱이 구성된 영역을 찾습니다. `settings`에서 다음 두 개의 매개변수를 사용하여 다른 Write Node를 추가합니다. - -```yaml -tk-nuke-writenode: - location: {name: tk-nuke-writenode, type: app_store, version: v0.1.6} - template_script_work: nuke_shot_work - ... - write_nodes: - - file_type: exr - ... - - file_type: dpx - ... - - file_type: tiff - name: Mono Tif - publish_template: nuke_shot_render_pub_mono_tif - render_template: nuke_shot_render_mono_tif - proxy_publish_template: null - proxy_render_template: null - settings: {datatype: 16 bit, compression: LZW} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [] -``` - -업데이트된 구성으로 인해 다음과 같이 Nuke에 추가 {% include product %} Write Node가 나타납니다. - -![새로 추가](../images/apps/nuke-writenode-write_node_add_new.png) - -__참고:__ 프로젝트 구성에서 찾을 수 있는 `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 품질 노브를 기즈모의 사용자 인터페이스로 승격합니다. 이렇게 하면 프로파일이 품질의 기본값을 설정할 수 있지만 사용자에게 직접 설정을 변경할 수 있는 슬라이더도 제공합니다. - -```yaml -tk-nuke-writenode: - write_nodes: - - file_type: jpeg - name: Compressed JPEG - publish_template: nuke_shot_render_pub_jpeg - 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"} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [_jpeg_quality] -``` - -### 쓰기 노브 승격 - -위의 프로파일 예에서 볼 수 있듯이 캡슐화된 쓰기 노드의 노브는 {% include product %} Write Node의 특성 패널에 표시되도록 승격될 수 있습니다. 승격된 쓰기 노브는 프로파일의 일부로 정의되며 노브 이름으로 식별됩니다. 여러 개의 노브를 승격할 수 있습니다. - -## 렌더 팜 통합 - -스튜디오에서는 [Deadline](https://deadline.thinkboxsoftware.com/)과 같이 작업 관리 도구를 실행하는 렌더 팜을 사용하는 것이 일반적이며, 렌더링할 때 일반적으로 Nuke를 직접 시작합니다. 이러한 도구는 {% include product %} 인식 방식(예: 데스크톱 또는 `tank` 명령을 통해)으로 Nuke를 시작하지 않기 때문에 {% include product %} Write node에는 실행에 필요한 정보가 없습니다. 이 제한을 해결하기 위한 몇 가지 옵션을 제공합니다. - -### {% include product %} Write node를 표준 Nuke Write node로 변환 - -간단한 솔루션은 렌더링할 스크립트를 보내기 전에 {% include product %} Write node를 일반 Nuke Write node로 변환하는 것입니다. 두 가지 옵션이 있습니다. 1. 변환 메뉴 옵션을 활성화하여 사용할 수 있습니다. 2. 앱에서 API 변환 방식을 사용할 수 있습니다. - -#### 변환 메뉴 옵션 활성화 - -환경 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) - -그러나 쓰기 노브를 승격하는 것으로 정의된 {% include product %} Write node 프로파일이 있는 경우에는 `show_convert_actions`가 `True`로 설정된 경우에도 이러한 메뉴 옵션이 숨겨집니다. 이는 현재 다시 변환 기능이 승격된 노브를 지원하지 않기 때문입니다. - -#### API를 사용하여 변환 - -`tk-nuke-writenode` 앱에서 `convert_to_write_nodes()` 방식을 사용하여 이 변환을 수행할 수 있습니다. - -스크립트의 모든 {% include product %} Write node를 일반 Nuke Write node로 변환하려면 Nuke 내부에서 다음 코드를 실행합니다. - -```python -import sgtk -eng = sgtk.platform.current_engine() -app = eng.apps["tk-nuke-writenode"] -if app: - app.convert_to_write_nodes() -``` - -이렇게 하면 씬에서 {% include product %} Write node가 제거되므로 렌더링할 스크립트의 복사본을 만들어 복사본에 대한 변환을 수행하고 복사본을 팜에 제출하는 것이 좋습니다. 씬에는 더 이상 툴킷 참조가 없으므로 렌더 팜에서 Nuke 스크립트가 열린 경우 툴킷이 필요하지 않습니다. - -**참고:** 해당 `convert_from_write_nodes()` 방식을 사용할 수 있지만 데이터 무결성을 보장하기 위해 파이프라인의 일부가 아닌 디버깅용으로만 사용하는 것이 좋습니다. - -### init.py를 사용하여 {% include product %} Pipeline Toolkit 엔진 부트스트랩(Bootstrap) - -Nuke는 플러그인 경로에 있는 `init.py` 스크립트를 실행합니다. 이 옵션은 `init.py`에 코드를 추가하는 것으로 구성되어 `tk-nuke` 엔진의 최소 부트스트랩(Bootstrap)을 수행하므로 {% include product %} Write node가 렌더 팜에서 예상대로 작동합니다. - -이 워크플로우에는 몇 가지 단계가 있습니다. 첫째, {% include product %} 인식 Nuke 세션에서 실행되는 "사전" 제출 스크립트는 팜 작업 환경을 설정하는 데 사용되는 데이터를 가져옵니다. 다음으로 렌더 팜에서 {% include product %} 세션을 인증하는 데 사용되는 추가 환경 변수는 렌더 팜 관리자가 설정합니다. 마지막으로, {% include product %} 부트스트랩(Bootstrap) 코드가 있는 `init.py`는 렌더 팜의 Nuke 세션이 탐지하고 실행하는 위치에 배치되어 세션 내에서 `tk-nuke` 엔진을 부트스트랩하고 {% include product %} Write node가 제대로 작동하도록 할 수 있습니다. - -#### 1. 사전 제출 스크립트 - -이 접근법은 아티스트가 Nuke의 {% include product %} 인식 세션에서 팜 작업을 제출한다고 가정합니다. 제출 시간에 다음 코드를 실행해야 합니다. 현재 Nuke 세션에서 툴킷 컨텍스트, 파이프라인 구성 URI, Toolkit Core API 위치 등과 같은 환경 정보를 가져와 렌더 작업에 전달될 사전에 입력되며 환경 변수를 설정하는 데 사용됩니다. - -```python -# Populating environment variables from running Nuke: -# http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.create_engine_launcher -current_engine = sgtk.platform.current_engine() -launcher = sgtk.platform.create_engine_launcher( - current_engine.sgtk, - current_engine.context, - current_engine.name -) - -# Get a dictionary with the following keys: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -environment = launcher.get_standard_plugin_environment() - -# Get the current pipeline config descriptor -environment["SHOTGUN_CONFIG_URI"] = os.path.join(current_engine.sgtk.configuration_descriptor.get_uri(),"config") - -# Get the current tk-core installation path -environment["SHOTGUN_SGTK_MODULE_PATH"] = sgtk.get_sgtk_module_path() -``` - -이 정보를 수집하면 렌더 제출 도구로 전달할 수 있습니다. 이 프로세스는 사용 중인 렌더 팜 관리 시스템에 따라 다릅니다. 렌더 제출 스크립트를 작성하는 방법에 대한 자세한 정보는 팜 관리 시스템 문서를 참조하십시오. - -#### 2. {% include product %} 인증 - -초기화하려면 부트스트랩(Bootstrap) API의 툴킷 관리자에게 스크립트 사용자가 필요합니다. 이 예에서는 사이트 이름, 스크립트 사용자 및 스크립트 키가 팜 컴퓨터에 환경 변수로 존재한다고 가정합니다. 일반적으로 렌더 팜 관리자가 관리합니다. 다음은 코드에서 예상하는 환경 변수 이름과 샘플 값입니다. - -``` -SHOTGUN_SITE = “https://mysitename.shotgunstudio.com” -SHOTGUN_FARM_SCRIPT_USER = “sg_api_user” -SHOTGUN_FARM_SCRIPT_KEY = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” -``` - -인증에 대한 자세한 정보는 [개발자 문서](http://developer.shotgridsoftware.com/tk-core/authentication.html)를 참조하십시오. - -**스크립트 사용자 보안에 대한 참고 사항:** 관리자(Admin) 레벨의 권한을 갖지 않도록 팜에서 사용하는 스크립트 사용자를 잠그는 것이 좋습니다. [API 사용자 권한에 대한 자세한 정보는 여기를 참조하십시오.](https://developer.shotgridsoftware.com/ko/bbae2ca7/) - -#### 3. init.py 스크립트 - -이 시점에서 툴킷 환경 데이터는 렌더 제출 도구에서 전달되고 인증 데이터는 렌더 팜 컴퓨터에서 환경 변수에 있습니다. 렌더 작업 내에서 툴킷을 부트스트랩(Bootstrapping)하는 마지막 단계는 Nuke의 플러그인 경로에 다음 예제 `init.py` 코드를 배치하여 Nuke가 시작될 때 이를 시작하도록 하는 것입니다. (자세한 정보는 [시작 스크립트에 대한 Foundry의 문서](https://support.foundry.com/hc/ko/articles/360003811839-Q100490)를 참조하십시오.) - -```python -# This script shows how a Toolkit as a plugin approach could be used to bootstrap -# Toolkit in Nuke on the render farm. -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#bootstrapping-toolkit - -import sys -import os - -# If your render nodes can access the same tk-core install location as -# artist workstations, retrieve its path from the environment and ensure -# it is in the PYTHONPATH -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 -# about it here: -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip - -import sgtk - -# Authenticate using a pre-defined script user. -sa = sgtk.authentication.ShotgunAuthenticator() - -# Here we retrieve credentials from environment variables, assuming a script user -# will be used when rendering. This should be typically be handled by your render -# farm administrators. -SG_SITE_URL = os.environ["SHOTGUN_SITE"] -SG_SCRIPT_USER = os.environ["SHOTGUN_FARM_SCRIPT_USER"] -SG_SCRIPT_KEY = os.environ["SHOTGUN_FARM_SCRIPT_KEY"] -user = sa.create_script_user( - api_script=SG_SCRIPT_USER, - api_key=SG_SCRIPT_KEY, - host=SG_SITE_URL -) - -# Start up a Toolkit Manager with our script user -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 -# Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override -# Pipeline Configuration defined in {% include product %}. -mgr.do_shotgun_config_lookup = False - -# Set a plugin id to indicate to the bootstrap that we are starting -# up a standard Nuke integration -mgr.plugin_id = "basic.nuke" - -# Retrieve the Toolkit context from environment variables: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -sg_entity = mgr.get_entity_from_environment() - -# Now start up the Nuke engine for a given {% include product %} Entity -nuke_engine = mgr.bootstrap_engine("tk-nuke", entity=sg_entity) -``` - -구성이 이 예제보다 복잡하거나 Nuke(`.nk`) 스크립트 대신 `-t` 플래그를 사용하여 명령행에 Python 스크립트를 전달하는 경우 이를 확장해야 할 수도 있습니다. - -#### Deadline 관련 단계 - -Deadline은 렌더링 시 Nuke 스크립트를 임시 위치에 복사할 수 있습니다. 이렇게 하면 파일이 더 이상 인식할 수 있는 디스크 위치에 있지 않으므로 툴킷에 문제가 발생합니다. 이 동작을 비활성화하고 원본 위치에서 스크립트를 로드하려면 다음을 수행합니다. - -1. Deadline에서 도구(Tools) > 플러그인 구성(Configure Plugin)으로 이동합니다(수퍼 유저 모드에서). -2. '경로 매핑 활성화(Enable Path Mapping)' 옵션을 비활성화합니다. - -## 기술적 상세 정보 - -다음은 앱에서 사용할 수 있는 API 방식입니다. - -### get_write_nodes() - -현재 씬의 모든 {% include product %} Write node 목록을 반환합니다. - -`list` app.get_write_nodes() - -**매개변수 및 반환값** - -* **반환값:** `list` - 씬에서 발견되는 툴킷 쓰기 노드 목록입니다. - -**예시** - -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() -``` - -### get_node_name() - -지정된 쓰기 노드의 이름을 반환합니다. - -`string` get_node_name(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 노드의 이름입니다. - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_name(nodes[0]) -``` - -### get_node_profile_name() - -지정된 쓰기 노드에서 사용하는 구성 프로파일의 이름을 가져옵니다. - -`string` get_node_profile_name(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 구성에 정의된 대로 이 쓰기 노드에 대한 프로파일 이름입니다. - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_profile_name(nodes[0]) -``` - -### get_node_render_path() - -지정된 쓰기 노드가 이미지를 렌더링할 경로를 가져옵니다. - -`string` get_node_render_path(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드의 렌더 경로입니다. - -**예시** -```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]) -``` - -### get_node_render_files() - -지정된 쓰기 노드에 대해 렌더링된 모든 이미지 파일 목록을 가져옵니다. - -`list` get_node_render_files(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:**`list` - 이 쓰기 노드에 의해 렌더링된 이미지 파일의 목록입니다. - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_render_files(nodes[0]) -``` - -### get_node_render_template() - -구성에 정의된 대로 지정된 쓰기 노드에 대해 렌더링된 이미지를 기록할 위치를 결정하는 템플릿을 가져옵니다. - -`template` get_node_render_template(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 렌더 템플릿입니다. - -**예시** -```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]) -``` - -### get_node_publish_template() - -구성에 정의된 대로 지정된 쓰기 노드에 대해 렌더링된 이미지를 게시할 위치를 결정하는 템플릿을 가져옵니다. - -`template` get_node_publish_template(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 게시 템플릿입니다. - -**예시** -```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]) -``` - -### get_node_proxy_render_path() - -지정된 쓰기 노드가 프록시 이미지를 렌더링할 경로를 가져옵니다. - -`string` get_node_proxy_render_path(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드의 프록시 렌더 경로입니다. - -**예시** -```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]) -``` - -### get_node_proxy_render_files() - -지정된 쓰기 노드에 대해 렌더링된 모든 프록시 이미지 파일 목록을 가져옵니다. - -`list` get_node_proxy_render_files(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `list` - 이 쓰기 노드에 의해 렌더링된 프록시 이미지 파일의 목록입니다. - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_files(nodes[0]) -``` - -### get_node_proxy_render_template() - -구성에 정의된 대로 지정된 쓰기 노드에 대해 렌더링된 프록시 이미지를 기록할 위치를 결정하는 템플릿을 가져옵니다. - -지정된 노드에 대해 프록시 렌더 템플릿이 구성되어 있지 않으면 대신 일반 렌더 템플릿이 반환됩니다. - -`template` get_node_proxy_render_template(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 렌더 템플릿입니다. - -**예시** -```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]) -``` - -### get_node_proxy_publish_template() - -구성에 정의된 대로 지정된 쓰기 노드에 대해 렌더링된 프록시 이미지를 게시할 위치를 결정하는 템플릿을 가져옵니다. - -지정된 노드에 대해 프록시 게시 템플릿이 구성되어 있지 않으면 대신 일반 게시 템플릿이 반환됩니다. - -`template` get_node_proxy_publish_template(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `template` - 이 노드를 사용하도록 구성된 프록시 게시 템플릿입니다. - -**예시** -```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]) -``` - -### get_node_published_file_type() - -구성에 정의된 대로 지정된 쓰기 노드에 의해 렌더링된 이미지에 대해 게시된 파일을 만들 때 사용할 게시된 파일 형식을 가져옵니다. - -`string` get_node_published_file_type(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 이 노드를 사용하도록 구성된 게시된 파일 형식입니다. - -**예시** -```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]) -``` - -### generate_node_thumbnail() - -지정된 쓰기 노드에 대한 썸네일을 생성합니다. 그러면 최대 크기 800x800px의 시퀀스 중간에서 임시 파일(.png)로 프레임이 렌더링됩니다. 이 파일이 더 이상 필요하지 않을 경우 호출자가 정리해야 합니다. - -`string` generate_node_thumbnail(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `string` - 디스크상의 렌더링된 썸네일 이미지에 대한 경로입니다. - -**예시** -```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]) -``` - -### reset_node_render_path() - -지정된 쓰기 노드의 렌더 경로를 현재 스크립트와 일치하도록 재설정합니다. - -`None` reset_node_render_path(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `None` - 값이 반환되지 않습니다. - -**예시** -```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]) -``` - -### is_node_render_path_locked() - -지정된 쓰기 노드의 렌더 경로가 잠겨 있는지 여부를 결정합니다. - -`bool` is_node_render_path_locked(`node` 노드) - -**매개변수 및 반환값** - -* `node` **노드** - 쿼리할 쓰기 노드입니다. -* **반환값:** `bool` - 렌더 경로가 잠겨 있으면 True이고, 그렇지 않으면 False입니다. - -**예시** -```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]) -``` - -### convert_to_write_nodes() - -현재 스크립트에 있는 모든 {% include product %} Write node를 일반 Nuke Write node로 변환합니다. 추가 툴킷 정보는 'tk_*'라는 사용자 노브에 저장됩니다. - -`None` convert_to_write_nodes() - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_to_write_nodes() -``` - -### convert_from_write_nodes() - -이전에 {% include product %} Write node에서 변환된 모든 일반 Nuke Write node를 다시 {% include product %} Write node로 변환합니다. - -`None` convert_from_write_nodes() - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_from_write_nodes() -``` - -### process_placeholder_nodes() - -모든 자리 표시자 노드를 전체 {% include product %} Write node로 변환합니다. 이 방식은 주로 Nuke에서 스크립트를 처음 열 때 Hiero 툴킷 스크립트 내보내기로 만든 자리 표시자 노드를 변환하는 데 사용됩니다. - -`None` process_placeholder_nodes() - -**예시** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.process_placeholder_nodes() -``` 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 deleted file mode 100644 index 7a8acd30d..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: ShotGrid Folders -pagename: tk-shotgun-folders -lang: ko ---- - -# ShotGrid Folders - -{% include product %} Toolkit에는 구성을 기반으로 표준화된 디렉토리 구조를 만드는 시스템이 내장되어 있습니다. 따라서 여러 샷에 대해 일관된 파일 시스템 레이아웃을 쉽고 빠르게 생성할 수 있습니다. - -이 앱은 {% 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 deleted file mode 100644 index 0aa4a9611..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid Launch Folder -pagename: tk-shotgun-launchfolder -lang: ko ---- - -# ShotGrid Launch Folder - -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 deleted file mode 100644 index 4fd7e68d3..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: ShotGrid Launch Publish -pagename: tk-shotgun-launchpublish -lang: ko ---- - -# ShotGrid Launch Publish - -이 앱은 {% include product %}의 게시된 파일 엔티티에 "연결된 응용프로그램에서 열기(Open in Associated Application)" 액션을 추가합니다. 이렇게 하면 이미 게시된 파일을 쉽게 열 수 있습니다. 해당 파일을 찾아 마우스 오른쪽 버튼으로 클릭한 다음 액션을 선택하면 됩니다. - -![작업 FS](../images/apps/shotgun-launchpublish-open_assoc.png) - -이 앱을 사용하면 여러 파일에 대해 다양한 앱 실행 시퀀스를 간편하게 구성할 수 있으며 이 모든 작업은 후크 내에서 수행됩니다. 또한 뷰어(예: RV)에 이미지 시퀀스를 디스패치합니다. 후크에서 인식되지 않는 파일은 OS 수준의 앱으로 디스패치됩니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations/toolkit-configuration.md b/docs/ko/reference/pipeline-integrations/toolkit-configuration.md deleted file mode 100644 index 387a4eb92..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-configuration.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 구성 -pagename: toolkit-configuration -lang: ko ---- - -# 툴킷 구성 - -여기에서는 툴킷 플랫폼 구성에 대한 참조 문서를 찾을 수 있습니다. 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 deleted file mode 100644 index 5476d8119..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -layout: default -title: 환경 구성 -pagename: toolkit-config-ref -lang: ko ---- - -# 환경 구성 참조 - -## 소개 - -툴킷 파이프라인의 핵심에는 환경 구성이 있습니다. 툴킷 파이프라인 구성 내에서 환경 구성 파일은 다양한 DCC 내에서 사용할 수 있는 툴킷 앱을 정의하고 각 설정을 커스터마이즈할 수 있는 곳입니다. 이 문서는 환경 구성 파일의 구조 및 기능을 전체적으로 소개하는 완전한 참조 자료입니다. 이 문서에서는 프로젝트 내에서 다양한 워크플로우를 구성할 수 있게 해 주는 툴킷 *환경*의 개념과 커스터마이즈할 수 있는 항목을 찾는 방법에 대해 설명합니다. - -{% include info title="참고" content="이 문서는 환경 구성 파일에 대한 참조 자료로 사용될 수 있으며 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](https://developer.shotgridsoftware.com/ko/37f575b8/)에서는 구성 설정 편집에 대한 단계별 예제를 확인할 수 있습니다." %} - - - -## 환경이란? - -{% include product %} 툴킷 플랫폼은 스튜디오 파이프라인을 구축하는 데 일반적으로 사용되는 컨텐츠 작성 소프트웨어를 위해 완전히 커스터마이즈 가능한 통합 세트를 제공합니다. 프로젝트 구성 내에서 통합이 있는 소프트웨어 패키지, 각각 사용 가능한 툴킷 앱, 각 앱에 대한 옵션을 지정하여 스튜디오의 요구 사항에 맞게 아티스트 워크플로우를 구축할 수 있습니다. - -하지만 대부분의 스튜디오 파이프라인에서는 아티스트 유형별로 다른 워크플로우를 사용하는 것이 일반적입니다. 간단한 예로, 에셋 작업 중인 아티스트의 경우 텍스처 페인팅 소프트웨어(예: Mari)를 사용하게 하고 샷 작업 중인 아티스트의 경우에는 컴포지팅 소프트웨어(예: Nuke)를 사용하게 할 수 있습니다. - -소프트웨어 패키지뿐 아니라 동일한 툴킷 앱에 대한 설정도 아티스트별로 다르게 지정할 수 있습니다. 예를 들어 샷 아티스트와 에셋 아티스트 둘 다 [Workfiles 앱](https://developer.shotgridsoftware.com/ko/9a736ee3/)을 사용할 수 있지만 샷 아티스트는 샷 엔티티, 에셋 아티스트는 에셋 엔티티와 관련된 파일로만 파일 네비게이션을 제한할 수 있습니다. - -프로젝트 내에서 이렇게 서로 다른 워크플로우를 지원하기 위해 툴킷은 환경에서 앱과 엔진 구성을 분리합니다. 각 환경에는 소프트웨어 패키지 셋트의 통합과 설정이 모두 공통적으로 포함되어 있습니다. - -위의 예에서 에셋 작업 중인 아티스트는 에셋 단계 환경에서 작업하고 샷 작업 중인 아티스트는 샷 단계 환경에서 작업합니다. 각 환경은 서로 독립적으로 구성되므로 한 프로젝트 내에서 각기 다른 워크플로우를 사용할 수 있습니다. - -## 툴킷의 기본 구성에 대한 참고 사항 - -툴킷은 환경을 구성하는 방식에 있어 매우 자유롭습니다. 이 문서에서는 사용 가능한 모든 옵션을 모두 소개하므로 파이프라인 요구 사항에 가장 적합한 선택을 하는 데 필요한 지식을 얻을 수 있습니다. - -또한 이 문서에서는 [기본 구성](https://github.com/shotgunsoftware/tk-config-default2)이라는 시작점으로 제공되는 파이프라인 구성의 선택 사항에 대해서도 설명합니다. 파이프라인을 커스터마이즈할 준비가 된 경우 첫 번째 단계는 [프로젝트에 대해 편집 가능한 파이프라인 구성을 생성하는 것](https://developer.shotgridsoftware.com/ko/37f575b8/)입니다. - -이러한 선택 사항은 일반적인 규칙일 뿐이고 툴킷 워크플로우에 하드코딩되지 않으므로, 기본 구성은 파이프라인을 커스터마이즈한 후 사용할 수 있는 기능을 학습하기 위한 예제로 참조하거나 고유의 구성을 설정하기 위한 모범 사례로 사용하는 것이 좋습니다. 또한 새로운 툴킷 사용자를 위한 시작점으로도 좋으며 몇 가지 규칙을 알아 두면 유용합니다. 이 문서에서는 툴킷 환경 구성의 일반적인 기능과 기본 구성에 특정한 선택 사항을 구분해 두었습니다. 기본 구성의 환경 구조에 대한 자세한 내용은 [읽어보기 파일](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)을 참조하십시오. - -## 파일 위치 - -파이프라인 구성에서 `config/` 디렉토리에는 커스터마이즈할 수 있는 모든 파일 및 폴더가 포함됩니다. `config/`에는 세 개의 하위 디렉토리(`cache`, `core` 및 `env`)가 있습니다. `env` 디렉토리에 환경 구성 파일이 있으므로 이 문서에서는 `config/env`의 파일을 참조합니다. - -![env 폴더 컨텐츠](../images/env-config-ref/1.png) - -기본 구성의 `config/env/`에는 다음 파일이 있습니다. - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -shot_step.yml -``` - -이러한 각 파일이 환경에 해당하며 별도 파일을 사용하면 각 환경을 별도로 구성할 수 있습니다. - -## 툴킷이 현재 환경을 결정하는 방식 - -툴킷은 [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`을 반환하는 경우 툴킷은 `config/env/shot_step.yml`을 사용하여 툴킷 환경을 구성합니다. - -## 커스텀 환경 - -위에 나열된 환경 구성 파일은 기본 구성에서 제공하는 파일입니다. 그러나 일부 스튜디오에서는 다른 환경 또는 추가 환경을 필요로 할 수 있습니다. 예를 들어 스튜디오에서 파이프라인 단계(`asset_step_rig`, `asset_step_model`, `shot_step_anim`, `shot_step_light` 등)마다 다른 구성 설정을 사용해야 할 수 있습니다. 다행히도 사용 가능한 환경을 완전히 커스터마이즈할 수 있습니다. - -이렇게 하려면 원하는 환경 구성 파일을 `config/env` 디렉토리에 추가해야 합니다. 그런 다음 `pick_environment` 코어 후크를 재지정하여 새 환경을 사용할 때 정의하는 로직에 추가합니다. - -## 기본 구조 - -툴킷의 구성 파일은 [YAML](https://yaml.org/)로 작성됩니다. 모든 번들(앱, 엔진 또는 프레임워크)의 일반적인 구성은 다음과 같은 구조로 되어 있습니다. - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -이 구조를 보여 주는 간단한 예제가 아래에 있습니다(단일 엔진이 있고 엔진 내에 단일 앱이 정의된 환경). 다음은 이 구성에서 `project.yml`의 내용이 될 수 있습니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### 엔진 블록 - -모든 환경 구성 파일은 `engines` 블록으로 시작합니다. 해당 환경에 대해 정의된 모든 엔진이 이 블록 내에 중첩됩니다. - -이 예에서는 하나의 엔진, `tk-maya`만 정의되어 있습니다. 여기에는 두 개의 설정(`apps` 및 `location`)이 나열되어 있습니다. - -`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 -``` - -이 예는 `app_store` 유형의 디스크립터로, 툴킷이 {% include product %} 앱 스토어에서 지정된 번들을 가져오도록 합니다. `app_store` 유형의 디스크립터에는 `name` 및 `version` 설정이 있습니다. - -한편, 커스텀 번들을 개발 중이고 스튜디오의 특정 워크플로우에 대한 툴킷 앱을 작성 중인 경우 디스크의 경로에서 직접 가져오고 싶을 수 있습니다. 이 경우 다음과 같이 `dev` 유형의 디스크립터를 사용합니다. - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` 디스크립터에는 `app_store` 디스크립터와 다른 설정이 있습니다. 다른 설정을 가져올 수 있지만 디스크에 있는 앱 위치를 가리키는 `path` 설정으로 간단하게 설정할 수 있습니다. - -사용 가능한 모든 디스크립터 유형 및 해당 설정에 대한 자세한 내용은 [Toolkit Core API 문서의 디스크립터 섹션](https://developer.shotgunsoftware.com/tk-core/descriptor.html)을 참조하십시오. - -### 앱 블록 - -앱은 툴킷의 사용자 도구로, 각 앱은 서로 독립적으로 실행할 수 있습니다. 파이프라인 요구 사항에 맞게 사용할 앱을 선택할 수 있으며 엔진 블록 내의 `apps` 설정은 지정된 엔진에서 사용할 수 있는 앱을 정의하는 곳입니다. - -위 예제에서 `apps` 설정은 다음과 같습니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -단일 앱인 `tk-multi-workfiles2` 앱이 정의되어 있는 것을 확인할 수 있습니다. 현재는 하나의 설정(디스크립터)만 정의되어 있습니다. - -`project` 환경의 `tk-maya` 엔진에서 다른 앱을 사용할 수 있도록 하려면 여기에 추가합니다. 엔진에 Panel, `tk-multi-shotgunpanel` 및 앱 정보 `tk-multi-about`을 추가해 보겠습니다. `project.yml` 예제 파일은 이제 다음과 같이 표시됩니다. - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -이때 다음과 같은 몇 가지 중요 사항에 유의해야 합니다. - -* 기본 구성에는 번들이 알파벳순으로 나열되며 이 예에서는 해당 규칙을 따릅니다. -* 파일이 길어지기 시작하고 있지만 아직 어떤 구성 설정도 추가하지 않은 상태입니다. -* 다른 엔진 및 다른 환경에서도 이와 동일한 앱을 사용할 수 있습니다. 예를 들어 다른 엔진(예: Houdini, Nuke 또는 Photoshop) 및 다른 환경(예: `asset_step` 또는 `shot_step`)에도 이 세 개의 앱(Panel 앱, About 앱, Workfiles 앱)이 모두 있을 수 있습니다. 구성에서 여러 곳에 공통 앱 설정을 정의하면 변경 시에도 여러 곳에서 수정해야 합니다. - -마지막 두 가지 문제점을 해결하기 위해 툴킷 구성은 *includes*를 지원합니다. - -### Includes - -*includes*는 구성에서 한 파일의 섹션을 다른 파일에서 참조할 수 있게 해 줍니다. includes를 사용하면 한 곳에서 구성 설정을 설정한 후 여러 환경에서 사용할 수 있습니다. - -includes는 두 부분으로 구성됩니다. - -* `includes` 목록: 키가 `includes`인 YAML 사전이며 값은 포함할 모든 파일의 목록입니다. -* 구성 설정 내의 참조: 앞에 `@` 기호가 붙고, 포함된 파일에서 참조할 섹션의 이름을 가리키도록 명명됩니다. - -위의 예제를 구체화하기 위해 모든 엔진에 대한 위치 디스크립터가 있는 단일 파일이 있다고 가정합니다. 이 파일을 `includes` 하위 폴더에 넣고 `engine_locations.yml`로 지정하겠습니다. - -`engine_locations.yml`의 내용은 다음과 같습니다. - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -이 파일은 모든 엔진 위치에 대한 단일 소스 역할을 하며 모든 환경 구성에서 참조할 수 있습니다. 이 포함 파일을 사용할 경우 예제는 이제 다음과 같이 표시됩니다. - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations 포함 파일](../images/env-config-ref/2.png) - -`tk-maya` 엔진에 대한 `location` 설정 값이 이제 포함된 YAML 파일의 키에 대한 참조임을 확인할 수 있습니다. - -{% include info title="참고" content="이 예제에서와 같이 `config/env/includes/engine_locations.yml` 파일에 모든 엔진 위치가 있는 기본 구성의 규칙을 따릅니다." %} - -앱 위치에 대한 두 번째 포함 파일을 추가할 수 있으며 사실 기본 구성은 이 작업을 수행합니다. 예제를 확장해 보겠습니다. - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -이제 포함된 `engine_locations.yml` 파일에서 `tk-maya` 엔진의 디스크립터를 가져오고 포함된 `app_locations.yml` 파일에서 `tk-maya` 엔진에 대해 정의된 각 앱의 디스크립터를 가져옵니다. - -{% 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)을 참조하십시오. 구성 설정 수정에 대한 자세한 내용은 [툴킷 기본 사항 안내서의 파이프라인 구성 편집](https://developer.shotgridsoftware.com/ko/37f575b8/)을 참조하십시오." %} - - -## 스파스 구성 - -모든 툴킷 번들에는 각 기본값이 포함된 일련의 구성 설정이 있습니다. 툴킷은 *스파스* 구성을 허용하므로 환경 구성 파일(및/또는 포함 파일)에 구성 설정이 명시적으로 지정되지 않은 경우에는 번들의 기본값이 사용됩니다. - -이 예에서는 `location`을 제외하고 앱에 대한 어떤 설정도 지정하지 않았습니다. 따라서 구성의 현재 상태에서 세 개의 앱은 모든 설정에 대해 기본값을 사용합니다. 그렇다면 어떤 구성 설정을 사용할 수 있는지 어떻게 알 수 있을까요? - -{% include info title="참고" content="툴킷 구성이 스파스일 필요는 없지만 기본 구성은 스파스 구성입니다." %} - -## 사용 가능한 구성 설정 확인 - -스파스 구성의 경우 단순히 구성 파일을 보는 것만으로는 앱에 대해 사용할 수 있는 구성 설정을 바로 확인할 수 없습니다. 사용 가능한 앱 구성 설정을 확인하려면 두 가지 방법이 있습니다. - -* **앱 설명서:** 각 앱에는 고유의 설명서 페이지가 있으며 이 각 페이지마다 "구성 옵션" 섹션이 있습니다. 이 섹션에는 각각의 설명 및 기본값을 포함하여 사용 가능한 모든 앱 구성 설정이 나와 있습니다. 예를 들어 [Workfiles 설명서 페이지를 참조](https://developer.shotgridsoftware.com/ko/9a736ee3/)할 수 있습니다. [앱 및 엔진 페이지](https://developer.shotgridsoftware.com/ko/162eaa4b/)에는 모든 앱 및 엔진에 대한 문서 페이지가 나열되어 있습니다. -* **매니페스트:** 모든 툴킷 번들에는 루트 디렉토리에 `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))에서 찾을 수 있습니다. - -## 구성 설정 수정 - -기본값에서 구성을 수정하려면 파이프라인의 구성에서 적절한 환경의 적절한 블록에 추가하고 값을 설정하면 됩니다. - -예제로 돌아가 프로젝트 환경에서 Maya를 시작할 때 `tk-multi-workfiles2`가 자동으로 시작되도록 구성한다고 가정해 보겠습니다. [앱의 매니페스트](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)에서 응용프로그램 시작 시 Workfiles UI 시작 여부를 제어하는 `launch_at_startup` 설정이 있고 기본값은 `False`임을 확인할 수 있습니다. 따라서 `launch_at_startup` 옵션을 추가하고 해당 옵션을 `True`로 설정합니다. `project.yml` 파일은 이제 다음과 같이 표시됩니다. - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -`tk-multi-workfiles2`에 대한 설정을 포함 파일에서 가져온 경우 해당 파일에서 설정을 변경해야 합니다. - - -## 추가 리소스 - -* [툴킷 기본 사항 안내서: 파이프라인 구성 편집](https://developer.shotgridsoftware.com/ko/37f575b8/) -* [툴킷 기본 사항 안내서: 앱 추가](https://developer.shotgridsoftware.com/ko/4d147fb2) -* [애니메이션 파이프라인 튜토리얼](https://developer.shotgridsoftware.com//ko/cb8926fc/) -* [디스크립터 참조 설명서](https://developer.shotgunsoftware.com/tk-core/descriptor.html#descriptors) -* [웨비나: 툴킷 관리](https://youtu.be/7qZfy7KXXX0) -* [파일 시스템 구성 참조](https://developer.shotgridsoftware.com/ko/82ff76f7/) -* [기본 구성 환경 구조 읽어보기](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines.md b/docs/ko/reference/pipeline-integrations/toolkit-engines.md deleted file mode 100644 index 032690551..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 엔진 -pagename: toolkit-engines -lang: ko ---- - -# 툴킷 엔진 - -여기에서는 툴킷 플랫폼에 사용할 수 있는 엔진에 대한 참조 문서를 찾을 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md deleted file mode 100644 index 40cb6987e..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: 3ds Max Plus -pagename: tk-3dsmax-plus -lang: ko ---- - -# 3dsMax Plus - -3ds Max Plus용 {% include product %} 엔진은 3ds Max 응용프로그램과 {% include product %} Pipeline Toolkit을 연결합니다. 이 엔진은 PySide 및 모든 다중 앱을 지원합니다. 즉, 3ds Max 내부에서 표준 앱(Maya, Nuke 등에서도 작동하는 동일한 앱)을 실행할 수 있습니다. 이 엔진은 3ds Max Plus Python API를 사용합니다. - - -![엔진](../images/engines/sg_3dsmax_plus_1.png) - -## 지원되는 응용프로그램 버전 - -이 항목은 테스트를 거쳐 2016-2020 응용프로그램 버전에서 작동하는 것으로 알려져 있습니다. 최신 릴리즈에서는 더 완벽하게 작동할 수 있지만 이러한 버전에서 아직 공식적으로 테스트되지는 않았습니다. - -## 문서화 - -이 엔진은 Max Plus의 Python 지원을 통해 {% include product %} Pipeline Toolkit(Sgtk)과 3D studio Max를 연결합니다. - -![엔진](../images/engines/3dsmaxplus_engine.png) - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-3dsmaxplus -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 update 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-3dsmaxplus에서 이 코드 리포지토리에 액세스할 수 있습니다. - -## 특별 요구 사항 - -이 기능을 이용하려면 {% include product %} Pipeline Toolkit Core API 버전 v0.19.18 이상이 필요합니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md deleted file mode 100644 index b054d9842..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: 3ds Max -pagename: tk-3dsmax -lang: ko ---- - -# 3dsMax - -3dsMax용 {% include product %} 엔진에는 3dsMax에 {% include product %} Toolkit(Sgtk) 앱을 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 간단하고 직접적인 이 플랫폼은 기본 메뉴에 {% include product %} 메뉴를 추가합니다. - -![엔진](../images/engines/3dsmax_engine.png) - -## 지원되는 응용프로그램 버전 - -이 항목은 테스트를 거쳐 2017+ 응용프로그램 버전에서 작동하는 것으로 알려져 있습니다. 최신 릴리즈에서는 더 완벽하게 작동할 수 있지만 이러한 버전에서 아직 공식적으로 테스트되지는 않았습니다. - -## 문서화 - -3dsMax용 {% include product %} 엔진에는 3dsMax에 {% include product %} Pipeline Toolkit(Sgtk) 앱을 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 간단하고 직접적인 이 플랫폼은 기본 메뉴에 {% include product %} 메뉴를 추가합니다. - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-3dsmax -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 update 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-3dsmax에서 이 코드 리포지토리에 액세스할 수 있습니다. - -## 특별 요구 사항 - -이 기능을 이용하려면 {% include product %} Pipeline Toolkit Core API 버전 v0.19.18 이상이 필요합니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md deleted file mode 100644 index 307d1c16b..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -layout: default -title: After Effects -pagename: tk-aftereffects -lang: ko ---- - -# After Effects - -After Effects용 {% include product %} 엔진은 After Effects 워크플로우에 {% include product %}를 통합하기 위한 플랫폼을 제공합니다. 이는 표준 {% include product %} Toolkit 엔진으로 구성되며 [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe)(CEP)를 사용합니다. - -일단 활성화되면 After Effects에서 **{% include product %} Adobe Panel**을 이용할 수 있게 됩니다. {% include product %} 컨텍스트에 대한 정보와 현재 해당 컨텍스트에 설치된 앱에 등록된 명령을 표시합니다. - -![엔진](../images/engines/aftereffects_extension.png) - -# 인터페이스 개요 - -{% include product %} 익스텐션 패널은 기본 After Effects 패널과 동일한 색상 팔레트 및 기본 레이아웃을 사용합니다. 익스텐션 패널은 다음 다섯 가지 구성요소로 이루어져 있습니다. - -![구성요소](../images/engines/extension_components.png) - -1. **컨텍스트 헤더** - 현재 컨텍스트에 대한 썸네일 및 필드입니다. -2. **즐겨찾기 쉘프** - 현재 컨텍스트에서 가장 많이 사용되는 앱을 표시하도록 디자인되었습니다. -3. **명령 목록** - 현재 컨텍스트에서 자주 사용되지 않는 모든 명령입니다. -4. **상황에 맞는 메뉴** - 추가 컨텍스트 관련 명령 및 디버깅 도구입니다. -5. **로깅 콘솔** - 디버깅용 로깅 출력을 표시하는 콘솔 오버레이입니다. - -# 설치 - -After Effects용 {% include product %} 엔진의 설치는 다른 {% include product %} 통합과 동일한 방식을 따릅니다. 엔진 및 앱 설치에 대한 자세한 정보는 [툴킷 관리](https://developer.shotgridsoftware.com/ko/425b1da4/) 문서를 참조하십시오. 또한 통합 구성 방법의 예로 [기본 툴킷 구성](https://github.com/shotgunsoftware/tk-config-default2)을 참조할 수 있습니다. - -# 익스텐션 활성화 - -익스텐션이 설치되면 After Effects의 익스텐션 메뉴를 통해 익스텐션을 실행해야 합니다. - -![메뉴](../images/engines/extension_menu.png) - -이 작업은 한 번만 수행하면 되고 {% include product %} 익스텐션 패널은 이후에는 시작할 때 활성화하지 않아도 After Effects 레이아웃에 표시됩니다. - -활성화하고 이후에 시작하면 {% include product %} 통합이 부트스트랩(Bootstrapping)되는 동안 익스텐션 패널에 로딩 화면이 표시됩니다. - -이 화면은 일반적으로 현재 컨텍스트가 결정되고 명령이 표시되기까지 몇 초 동안 표시됩니다. - -# 인터페이스 구성요소 - -다음 섹션에서는 {% include product %} After Effects 통합의 구성요소를 간략하게 설명합니다. - -## 컨텍스트 헤더 - -컨텍스트 헤더는 현재 {% include product %} 컨텍스트에 대한 정보를 표시할 수 있는 커스터마이즈 가능 영역입니다. - -![헤더](../images/engines/extension_header.png) - -컨텍스트는 현재 활성 문서에 의해 결정됩니다. 엔진에서 컨텍스트가 결정되면 헤더가 업데이트되어 컨텍스트의 썸네일 필드 상세 정보가 표시됩니다. 필드 정보는 후크로 제어됩니다. 필드 표시를 커스터마이즈하는 방법에 대한 자세한 정보는 아래의 **컨텍스트 필드 표시 후크** 섹션을 참조하십시오. - -또한 {% include product %} 열기가 사용된 경우에만 컨텍스트 전환이 인식된다는 것도 유의해야 합니다. - -## 즐겨찾기 쉘프 - -즐겨찾기 쉘프는 Maya 및 Houdini와 같은 다른 {% include product %} DCC 통합에서 사용할 수 있는 메뉴 즐겨찾기와 유사합니다. 이 인터페이스 섹션에서는 가장 일반적으로 사용되는 툴킷 앱을 컨텍스트 헤더 바로 아래에서 쉽게 사용할 수 있고 쉽게 찾습니다. - -![쉘프](../images/engines/extension_shelf.png) - -쉘프는 즐겨찾는 명령을 버튼으로 표시하며, 버튼 위에 마우스 커서를 놓으면 회색 음영에서 색상으로 전환되고 상단의 레이블에 이름이 표시됩니다. 버튼 위에 마우스 커서를 놓으면 버튼에 대한 툴팁이 표시됩니다. - -버튼 중 하나를 클릭하면 실행하도록 등록된 명령에 대한 콜백이 트리거됩니다. - -명령 즐겨찾기를 지정하는 방법에 대한 자세한 정보는 아래의 **쉘프 즐겨찾기** 섹션을 참조하십시오. - -## 명령 목록 - -명령 목록에는 현재 컨텍스트에 대해 등록된 다른 "일반" 명령이 표시됩니다. - -![명령](../images/engines/extension_commands.png) - -일반적으로 파이프라인 구성 내에 설치된 앱은 여기에 표시되는 하나 이상의 명령을 등록합니다. 명령이 즐겨찾기로 식별되지 않고 상황에 맞는 메뉴 명령으로도 식별되지 않는 경우 여기에 표시됩니다. - -명령 목록 버튼은 즐겨찾기 쉘프의 버튼과 비슷한 방식으로 동작합니다. 유일한 차이점은 아이콘의 오른쪽에 전체 이름이 있는 목록으로 표시된다는 점입니다. - -## 상황에 맞는 메뉴 - -상황에 맞는 메뉴 명령으로 등록된 모든 명령은 {% include product %} 익스텐션 패널의 상황에 맞는 메뉴에 표시됩니다. - -![상황에 맞는 메뉴](../images/engines/extension_context_menu.png) - -다른 명령 영역과 마찬가지로 이러한 명령은 컨텍스트와 함께 변경됩니다. **{% include product %}(으)로 이동(Jump to {% include product %})** 및 **파일 시스템으로 이동(Jump to Filesystem)**과 같은 명령은 항상 여기에서 사용할 수 있습니다. - -## 로깅 콘솔 - -로깅 콘솔에는 CEP Javascript 인터프리터 및 툴킷의 Python 프로세스의 모든 로깅 출력이 표시됩니다. - -![콘솔](../images/engines/extension_console.png) - -익스텐션에 문제가 있어 지원이 필요한 경우 로깅 콘솔 출력은 {% include product %} 지원 팀이 문제를 디버깅하는 데 매우 유용합니다. - -# 구성 및 기술 상세 정보 - -다음 섹션에서는 스튜디오 파이프라인의 특정 요구 사항으로 통합을 구성할 수 있는 통합의 보다 기술적인 측면에 대해 설명합니다. - -## PySide - -After Effects용 {% include product %} 엔진은 PySide를 사용합니다. [PySide 설치](http://pyside.readthedocs.io/en/latest/installing/index.html)에 대한 공식 지침을 참조하십시오. - -## CEP 익스텐션 - -익스텐션 자체는 엔진과 함께 번들로 제공되며 엔진은 After Effects를 처음 시작할 때 자동으로 설치를 처리합니다. 익스텐션은 아티스트의 로컬 컴퓨터에 OS별 CEP 익스텐션 표준 디렉토리에 설치됩니다. - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -After Effects를 시작할 때마다 엔진 부트스트랩(Bootstrap) 코드는 엔진과 함께 번들로 제공되는 익스텐션 버전을 컴퓨터에 설치된 버전과 비교하여 검사합니다. 즉, 엔진 업데이트 후 새 익스텐션 버전이 함께 제공된 경우 설치된 익스텐션이 번들로 제공되는 새 버전으로 자동 업데이트됩니다. - -## 즐겨찾기 구성 - -**즐겨찾기 쉘프**는 설치된 앱에 등록된 모든 명령을 표시하도록 구성할 수 있습니다. 이렇게 하려면 환경 설정의 `tk-aftereffects` 섹션에 `shelf_favorites` 구성을 추가하면 됩니다. 다음은 예입니다. - -```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` 키는 설치된 특정 앱을 식별하고 `name` 키는 해당 앱에서 등록된 명령의 표시 이름과 일치합니다. 위의 예에서 즐겨찾는 네 가지 명령, `tk-multi-workfiles2` 앱의 파일 열기 및 저장 대화상자와 표준 툴킷 게시 및 스냅샷 대화상자를 볼 수 있습니다. 이제 이 네 가지 명령이 즐겨찾기 쉘프에 표시됩니다. - -## 환경 변수 - -디버깅을 돕기 위해 엔진의 일부 기본값을 변경하는 일련의 환경 변수가 있습니다. - -- `SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - Python heartbeat 간격(초)입니다(기본값: 1초). -- `SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - 종료하기 전 heartbeat 오류 수입니다(기본값: 2). 기존 환경 변수 -- 또한 설정된 경우 `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE`도 적용됩니다. -- `SHOTGUN_ADOBE_NETWORK_DEBUG` - 출력 로깅 시 추가 네트워킹 디버그 메시지를 포함합니다. 기존 환경 변수 -- 또한 설정된 경우 `SGTK_PHOTOSHOP_NETWORK_DEBUG`도 적용됩니다. -- `SHOTGUN_ADOBE_PYTHON` - 엔진을 시작할 때 사용할 Python 실행 파일의 경로입니다. 설정되지 않은 경우 시스템 Python이 사용됩니다. Photoshop이 {% include product %} 데스크톱과 같은 Python 프로세스에서 또는 tk-shell 엔진을 통해 시작되면 해당 프로세스에서 사용되는 Python이 Photoshop 통합에서 사용됩니다. - -참고: Adobe 프레임워크에 추가 환경 변수가 존재합니다. 자세한 내용은 [개발자 설명서](https://developer.shotgunsoftware.com/tk-framework-adobe/)를 참조하십시오. - - -## 컨텍스트 필드 표시 후크 - -엔진에는 패널의 **컨텍스트 헤더** 섹션에 표시되는 필드를 제어하는 후크가 제공됩니다. 후크에서 표시되는 항목을 커스터마이즈하기 위해 재지정할 수 있는 두 가지 방식이 있습니다. - -첫 번째는 `get_entity_fields()` 방식입니다. 이 방식은 현재 {% include product %} 컨텍스트를 나타내는 엔티티 유형을 적용합니다. 예상되는 반환값은 표시를 위해 쿼리해야 하는 해당 엔티티의 필드 목록입니다. 엔진 자체는 비동기적으로 데이터 쿼리를 처리합니다. - -{% include product %}에서 데이터를 쿼리하면 후크의 두 번째 방식이 호출됩니다. 이 `get_context_html()` 방식은 `get_entity_fields()` 방식에서 지정된 쿼리된 필드로 채워진 컨텍스트 엔티티 사전을 수신합니다. 예상되는 반환값은 쿼리된 엔티티 필드를 표시하도록 형식이 지정된 HTML을 포함하는 문자열입니다. - -[기본 후크 구현](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/context_fields_display.py)은 이러한 방식에 필요한 사항에 대한 좋은 참조 자료입니다. - -엔진은 엔티티 썸네일을 사용할 수 있는 경우 항상 이를 표시합니다. - -## Footage 후크 가져오기 - -엔진은 특정 파일 유형의 가져오기 동작을 제어할 수 있는 후크와 함께 제공됩니다. psd 파일을 구성 대신 단일 레이어로 가져오려는 경우가 있을 수 있습니다. 이 경우 이 후크는 이 동작을 재정의하는 데 사용될 수 있습니다. - -[기본 후크 구현](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/import_footage.py) - -## After Effects API - -After Effects API에 대한 자세한 내용은 [개발자 설명서](https://developer.shotgunsoftware.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 deleted file mode 100644 index cfc690c3c..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Alias -pagename: tk-alias -lang: ko ---- - -# Alias - -Alias용 {% include product %} 엔진에는 {% include product %} 앱을 Alias에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 직접적으로 실행되는 경량의 플랫폼으로, Alias 메뉴에 {% include product %} 메뉴를 추가합니다. - -# 앱 개발자를 위한 정보 - -## PySide - -Alias용 {% include product %} 엔진은 {% include product %} 데스크톱과 함께 제공되는 PySide 설치를 사용하며 필요할 때마다 활성화됩니다. - -## Alias 프로젝트 관리 - -Alias용 {% include product %} 엔진이 시작되면 Alias 프로젝트가 이 엔진 설정에서 정의된 위치를 가리키도록 설정됩니다. 즉, 새 파일을 열면 프로젝트가 변경될 수도 있습니다. 파일을 기반으로 Alias 프로젝트가 설정되는 방법과 관련된 상세 정보는 템플릿 시스템을 사용하여 구성 파일에서 구성할 수 있습니다. - -*** - -# tk-alias 작업 - -이 {% include product %} 통합은 Alias 응용프로그램 제품군(Concept, Surface 및 AutoStudio)을 지원합니다. - -Alias가 열리면 {% include product %} 메뉴(Alias 엔진)가 메뉴 막대에 추가됩니다. - -![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunOtherApps.png) - - -### 파일 열기 및 저장 - -내 태스크(My Tasks) 및 에셋(Assets) 탭을 사용하여 할당된 모든 태스크를 보고 에셋을 찾을 수 있습니다.오른쪽에서 이 탭을 사용하여 왼쪽에 선택된 항목과 연관된 모든 파일, 작업 파일 또는 게시된 파일을 볼 수 있습니다. - -![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunFileOpen.png) - -![](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)를 참조하십시오. - -![](https://help.autodesk.com/cloudhelp/2020/ENU/Alias-Shotgun/images/ShotgunLoader.png) - -### Scene Breakdown - -기한이 만료된 씬의 항목과 함께 참조된 (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-create.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-create.md deleted file mode 100644 index cb7f02570..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-create.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Create -pagename: tk-create -lang: ko ---- - -# {% include product %} 작성 - -Desktop2 엔진은 [{% include product %} Create](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) 응용프로그램 내부에서 실행되는 엔진입니다. 브라우저 통합을 통해 {% include product %} 웹 응용프로그램에서뿐만 아니라 .{% include product %} Create에서도 DCC 시작을 처리합니다. - -tk-desktop2 엔진은 {% include product %} Create와 툴킷을 통합할 수 있도록 합니다. {% include product %} Create는 [DCC 시작](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Supervisor_Artist_sa_create_sa_create_artists_html#launching-your-creative-apps)을 비롯해 툴킷 사용자에게 익숙한 기능을 지원합니다. - -![](../images/engines/create-dcc-01.png) - -![](../images/engines/create-dcc-02.png) - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-desktop2 -Updating to the latest version -``` - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 `tank` 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-desktop2에서 이 코드 리포지토리에 액세스할 수 있습니다. - -## 특별 요구 사항 - -이 기능을 이용하려면 {% include product %} Pipeline Toolkit Core API 버전 v0.19.1 이상이 필요합니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md deleted file mode 100644 index 6632bc22d..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: 데스크톱 -pagename: tk-desktop -lang: ko ---- - -# 데스크톱 - -tk-desktop 엔진은 툴킷 앱을 쉽게 실행할 수 있게 해 주는 응용프로그램입니다. 툴킷을 시작하고 툴킷용 프로젝트를 설정하고 프로젝트의 파이프라인에 액세스하는 작업을 쉽게 수행할 수 있도록 하는 시스템 트레이 기반 창입니다. - -## 사이트 구성 및 프로젝트 구성 - -![프로세스](../images/engines/processes.png) - -데스크톱 응용프로그램을 시작하면 사이트 구성을 위한 tk-desktop 엔진이 시작됩니다. 이 구성은 대개 자동으로 관리되지만 해당 동작을 비활성화하고 해당 환경을 제어할 수 있습니다. - -툴킷의 기본 원칙 중 하나는 프로젝트가 서로 완전히 격리될 수 있다는 것입니다. 이는 일반적으로 한 프로젝트의 변경 사항이 다른 프로젝트(곧 전달 가능)에 악영향을 미치지 않도록 하기 위해 수행됩니다. 이 프로젝트 격리 기능을 제공하기 위해 데스크톱 엔진은 사용자가 특정 프로젝트에 대한 명령을 볼 때마다 해당 프로젝트의 초기화된 별도의 python 인터프리터에서 명령을 실행할 수 있도록 합니다. - -프로젝트를 클릭하면 백그라운드에서 python 인터프리터가 시작됩니다. 프로젝트가 이 python 인터프리터를 사용하도록 구성되어 있으면 시작 시 해당 프로젝트의 tk-desktop을 초기화합니다. 해당 엔진 인스턴스는 실행할 수 있는 GUI 명령에 다시 연결합니다. - -명령을 클릭하면 해당 백그라운드 python 프로세스가 명령을 실행합니다. 이렇게 하면 예를 들어 하나의 프로젝트에서 python 2.7을 테스트하는 동안 다른 프로젝트가 python 2.6을 실행할 수 있습니다. - -## 커스텀 패널 등록 - -[패널 기반 UI](http://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.Engine.show_panel)가 있는 툴킷 앱은 실행 시 데스크톱 내부의 탭에 자동으로 고정됩니다. - -{% include product %} Panel과 같은 패널 기반 앱이 있고 {% include product %} 데스크톱에 탭으로 표시하려면 시작 시 실행되도록 구성하면 됩니다. 데스크톱이 사이트 컨텍스트 모드(모든 프로젝트 표시)에서 시작되면 자동 시작으로 등록된 모든 항목이 시작됩니다. 이러한 항목 중 하나가 패널이면 패널이 고정됩니다. 항목은 구성에서 정의된 순서대로 처리되며 탭 순서도 지정됩니다. - -예를 들어 {% include product %} Panel을 {% include product %} 데스크톱의 탭으로 표시하려면 사이트 레벨 환경에 다음 구성을 추가합니다. - -```yaml -tk-desktop: - apps: - tk-multi-shotgunpanel: - actions_hook: ... - action_mappings: ... - location: ... - location: ... - run_at_startup: - - {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 deleted file mode 100644 index edc60e9dd..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Flame -pagename: tk-flame -lang: ko ---- - -# Flame - -## 설치 - -Flame용 {% include product %} 엔진은 Flame 2015 Extension 2에 추가된 새 통합 후크를 사용합니다. 엔진이 작동하려면 *반드시* 이 Flame 버전을 사용해야 합니다. Flame 2015 Extension 2에 대한 자세한 정보(얻는 방법 포함)는 [Flame 지원 팀](https://knowledge.autodesk.com/ko/support/flame-products/troubleshooting/caas/sfdcarticles/sfdcarticles/KOR/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 프로젝트의 명명 규칙 및 프로젝트의 다른 여러 설정을 관리하는 기능을 제공합니다. - -{% include product %}를 통해 Flame이 처음 시작되면 아티스트가 표준 Flame 프로젝트 생성 화면에서 일반적인 설정을 편집할 수 있는 Flame 프로젝트 생성 UI가 나타납니다. - -![프로젝트](../images/engines/flame_project.png) - -그러나 {% include product %} 통합을 통해 파이프라인 관련 값으로 설정에 미리 입력할 수 있으므로 아티스트는 고민할 필요 없이 신속하게 올바른 결과를 얻을 수 있습니다. 기본값은 `project_setup_hook`를 통해 커스터마이즈할 수 있으며 다음 옵션을 지원합니다. - -`use_project_settings_ui` `True`로 설정된 경우 프로젝트 생성 UI가 나타납니다. `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 스트림을 빌드합니다. 다음 매개변수를 *반드시* 제공해야 합니다. - -* 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 문서](https://www.autodesk.com/developer-network/platform-technologies/wiretap)를 참조하십시오. - -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 deleted file mode 100644 index 73b6fe6bc..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: default -title: Houdini -pagename: tk-houdini -lang: ko ---- - -# Houdini - -Houdini용 {% include product %} 엔진에는 {% include product %} 앱을 Houdini에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. - -![Houdini용 {% include product %} 엔진](../images/engines/houdini_engine.png) - - -# 앱 개발자를 위한 정보 - -## 지원되는 플랫폼 - -Houdini용 {% include product %} 엔진은 현재 Windows, Linux 및 OSX에서 지원됩니다. - -## PySide - -Houdini의 이전 버전(13 이하)은 PySide의 외부 빌드가 필요합니다. Windows에서는 Houdini가 실행되는 Python에서 작동하는 호환 가능한 PySide 빌드가 번들로 제공됩니다. Linux에서 Houdini는 PySide 또는 PyQt를 지원해야 하는 시스템 Python(http://www.sidefx.com/docs/houdini12.0/hom/)을 사용합니다. - -## 메뉴 로드 - -![{% include product %} 메뉴](../images/engines/houdini_menu.png) - -Houdini 15의 파생 효과로 동적 메뉴 시스템이 도입되어 이제 엔진은 컨텍스트 스위치에서 {% include product %} 메뉴를 다시 작성할 수 있습니다. - -Houdini 14 이하에서는 Houdini의 {% include product %} 메뉴가 Houdini가 시작되기 전에 생성되며 세션 전체에서 정적입니다. 이로 인해 메뉴에 등록된 툴킷 명령은 컨텍스트 변경 시 업데이트되지 않습니다. - -## {% include product %} 쉘프 - -![{% include product %} 쉘프](../images/engines/houdini_shelf.png) - -**v0.2.4** 릴리즈는 엔진에 동적 {% include product %} 쉘프를 도입했습니다. 쉘프에는 등록된 모든 앱 명령이 도구 버튼으로 표시됩니다. 버튼은 메뉴 명령과 거의 동일한 순서로 표시됩니다. - -`enable_sg_shelf` 설정을 사용하여 환경 내에서 쉘프를 켭니다. 동적 메뉴를 지원하지 않는 Houdini 버전(14 이하)을 사용하는 경우 쉘프 사용 시 {% include product %} 메뉴를 끌 수도 있습니다. 이 작업은 `enable_sg_menu` 설정을 `false`로 설정하여 수행할 수 있습니다. - -쉘프를 통해 컨텍스트 전환을 활성화하려면 엔진 구성에서 `tk-multi-workfiles` 앱의 `sg_entity_types` 설정에 엔티티 유형도 추가해야 합니다. - -{% include product %} 쉘프와 관련된 설정을 살펴보겠습니다. - -```yaml -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 - enable_sg_shelf: true - enable_sg_menu: false - # ... other engine settings -``` - -{% include product %} 쉘프를 활성화한 후에는 수동으로 houdini 내부의 쉘프 세트에 추가해야 합니다. - -![{% include product %} 쉘프 추가](../images/engines/add_shelf.png) - -쉘프 세트에 추가되면 {% include product %} 쉘프는 houdini 세션 간에 유지되며 {% include product %} 컨텍스트가 변경되면 동적으로 업데이트됩니다. - -## 패널 - -**v0.2.8**부터 엔진은 포함된 툴킷 패널에 대한 지원을 추가합니다. - -적절한 내장 패널을 지원하려면 현재 Houdini 버전 **15.0.272** 이상이 필요합니다. 등록된 패널은 지원되는 Houdini 버전의 창 메뉴에 창으로 표시됩니다. - -Houdini의 이전 버전은 등록된 패널을 대화상자로 표시합니다. SESI는 몇 가지 버그 수정을 Houdini 14의 최신 빌드로 백포팅할 수 있습니다. 그러면 해당 버전에도 내장 패널을 사용할 수 있습니다. - -## OTL을 사용하는 앱 - -Houdini용 {% include product %} 엔진을 사용하면 응용프로그램에서 제공하는 OTL을 쉽게 로드할 수 있습니다. OTL을 사용하는 앱을 작성하는 경우 **otls**라는 폴더에 OTL을 배치하기만 하면 엔진에서 자동으로 세션에 로드합니다. - -![Houdini OTL](../images/engines/otls_path.png) - -그런 다음 일반적인 Houdini 방법을 통해 노드에 쉽게 액세스할 수 있습니다. - -**경고:** OTL을 사용하는 것이 편리할 수 있지만 씬에 지속되는 노드를 만들려는 경우에는 일반적으로 적절한 솔루션이 아닙니다. 그 이유는 씬에 OTL을 추가하면 씬과 OTL 코드 간에 종속성이 발생하기 때문입니다. 씬을 로드할 때마다 {% include product %} 툴킷을 로드해야 할 뿐만 아니라 코드를 업데이트해도 씬에서 사용 중인 이전 OTL이 손상되지 않도록 신중하게 코드를 관리해야 합니다. - -## OSX에서 터미널을 통한 디버깅 시작 - -OS X에서 `tk-houdini` 엔진의 `debug_logging`을 켜면 모든 디버그 메시지를 터미널로 전송하지 않습니다. 이는 기본적으로 [`tk-multi-launchapp`](https://github.com/shotgunsoftware/tk-multi-launchapp) 앱에서 `open` 명령을 사용하여 실행 파일을 시작하기 때문입니다. 이는 터미널에서 새로운 하위 프로세스를 생성하지 않지만 OS X의 시작 서비스를 사용하여 다른 곳에서 새 프로세스를 만듭니다. 결과적으로 로그 문은 표시되지 않습니다. Houdini에서 사용자의 기본 데스크톱에 python 셸이 저장되어 있어도 시작 중에 디버깅 문을 표시하지 않는 것처럼 보입니다. 시작 후 내장 python 셸은 디버그 로깅 문을 표시하지만 시작 중에 사용 가능한 출력과 차이가 있습니다. 엔진 시작 중에 디버그 로깅 문에 액세스해야 하는 경우 두 가지를 변경할 수 있습니다. - -먼저 테스트 구성에서 `houdini_mac` 경로를 Houdini 앱 번들 내부의 실행 파일을 가리키도록 임시로 변경합니다. 예를 들면 다음과 같습니다. - -```yaml -#houdini_mac: /Applications/Houdini 15.0.272/Houdini Apprentice.app -houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/MacOS/happrentice -``` - -다음으로 테스트 구성의 `config/hooks` 디렉토리에서 `tk-multi-launchapp` 앱의 `app_launch` 후크 복사본을 만들어 `config/env/includes/app_launchers.yml` 파일에서 이를 지정할 수 있습니다. - -```yaml -launch_houdini: - defer_keyword: '' - engine: tk-houdini - extra: {} - 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' - menu_name: Launch Houdini - versions: [] - windows_args: '' - windows_path: '@houdini_windows' -``` - -그런 다음 실행 파일을 직접 시작하도록 시작 로직을 수정하기만 하면 됩니다. 예를 들어 디렉토리(응용프로그램 번들)에 대한 이전 동작을 유지하고 명령을 직접 실행할 수 있습니다. 다음은 예입니다. - -```python - elif system == "darwin": - # on the mac, the executable paths are normally pointing - # to the application bundle and not to the binary file - # embedded in the bundle, meaning that we should use the - # built-in mac open command to execute it - if os.path.isdir(app_path): - cmd = "open -n \"%s\"" % (app_path) - if app_args: - cmd += " --args \"%s\"" % app_args.replace("\"", "\\\"") - - # not a directory, execute directly - else: - cmd = "%s %s" % (app_path, app_args.replace("\"", "\\\"")) -``` - -다음에 터미널에서 `tank`를 통해 `launch_houdini`를 실행하면 모든 디버그 출력이 표시됩니다. 테스트가 끝나면 경로를 되돌리고 앱 시작 변경 사항을 취소해야 합니다. 디버깅이 완료되었습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-mari.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-mari.md deleted file mode 100644 index bbf3c4521..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-mari.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Mari -pagename: tk-mari -lang: ko ---- - -# Mari - -Mari용 {% include product %} 엔진에는 {% include product %} 툴킷 앱을 Mari에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 간단하고 직접적인 이 플랫폼은 기본 메뉴에 {% include product %} 메뉴를 추가합니다. - -## 지원되는 응용프로그램 버전 - -이 항목은 테스트를 거쳤으며 2.6 - 4.6 응용프로그램 버전에서 작동하는 것으로 알려져 있습니다. 최신 릴리즈에서는 더 완벽하게 작동할 수 있지만 이러한 버전에서 아직 공식적으로 테스트되지는 않았습니다. - -## 개요 동영상 - -[여기](https://youtu.be/xIP7ChBWzrY)에서 개요 동영상을 참조하십시오. - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-mari -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 `tank` 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 {% include product %}가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-mari에서 이 코드 리포지토리에 액세스할 수 있습니다. - - - - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-maya.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-maya.md deleted file mode 100644 index 2e7f5bba2..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-maya.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: Maya -pagename: tk-maya -lang: ko ---- - -# Maya - -Maya용 {% include product %} 엔진에는 {% include product %} 앱을 Maya에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 직접적으로 실행되는 경량의 플랫폼으로, Maya 메뉴 막대에 {% include product %} 메뉴를 추가합니다. - -![엔진](../images/engines/maya_menu.png) - -## Pyside - -Maya용 {% include product %} 엔진에는 PySide 설치가 포함되어 있으며 필요할 때마다 활성화됩니다. - -## Maya 프로젝트 관리 - -Maya용 {% include product %} 엔진이 시작되면 Maya 프로젝트가 이 엔진 설정에서 정의된 위치를 가리키도록 설정됩니다. 즉, 새 파일을 열면 프로젝트가 변경될 수도 있습니다. 파일을 기반으로 Maya 프로젝트가 설정되는 방법과 관련된 상세 정보는 템플릿 시스템을 사용하여 구성 파일에서 구성할 수 있습니다. - -## 지원되는 응용프로그램 버전 - -이 항목은 테스트를 거쳐 2014-2022 응용프로그램 버전에서 작동하는 것으로 알려져 있습니다. 최신 릴리즈에서는 더 완벽하게 작동할 수 있지만 이러한 버전에서 아직 공식적으로 테스트되지는 않았습니다. - -## 설치 및 업데이트 - -{% include product %} Pipeline Toolkit에 이 엔진 추가 -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-maya -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-maya에서 이 코드 리포지토리에 액세스할 수 있습니다. - - - - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md deleted file mode 100644 index 358209976..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Motion Builder -pagename: tk-motionbuilder -lang: ko ---- - -# Motion Builder - -![엔진](../images/engines/sg_mobu_1.png) - -Motion Builder용 {% include product %} 엔진에는 {% include product %} 툴킷 앱을 Motion Builder에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 간단하고 직접적인 이 플랫폼은 기본 메뉴에 {% include product %} 메뉴를 추가합니다. - -![엔진](../images/engines/mobu.png) - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-motionbuilder -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-motionbuilder에서 이 코드 리포지토리에 액세스할 수 있습니다. - - - diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md deleted file mode 100644 index f1e16ba08..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -layout: default -title: Nuke -pagename: tk-nuke -lang: ko ---- - -# Nuke - -Nuke용 {% include product %} 엔진에는 {% include product %} 앱을 Nuke, Nuke Studio 및 Hiero에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 간단하고 직접적인 이 플랫폼은 Nuke에 여러 새 항목을 추가합니다. - -Nuke에 다양한 항목이 표시되는 **{% include product %} 메뉴**를 생성합니다. - -![메뉴](../images/engines/nuke-menu.png) - -Nuke에 다양한 항목이 표시되는 **{% include product %} 노드 메뉴**를 만듭니다. - -![노드 메뉴](../images/engines/nuke-nodes_menu.png) - -{% include product %} 단축키를 파일 대화상자에 추가하여 다양한 파일 시스템 위치로 쉽게 이동할 수 있습니다. - -![즐겨찾기](../images/engines/nuke-favourites.png) - -`favourite_directories` 설정을 사용하여 현재 환경에 템플릿 경로를 기반으로 하는 고유의 단축키를 추가할 수 있습니다. 이 설정에는 목록의 각 항목이 새로운 즐겨찾기 디렉토리를 나타내는 사전 목록이 필요합니다. 다음은 사용할 형식의 예입니다(아이콘 값으로 ""를 입력하여 지정하지 않을 수도 있음). - -```yaml - favourite_directories: - - display_name: "Shot Publish Path" - template_directory: "shot_publish_area_nuke" - icon: "icons/custom_publish_icon.png" - - display_name: "Shot Work Path" - template_directory: "shot_work_area_nuke" - icon: "icons/custom_work_icon.png" -``` - -"{% include product %} 현재 프로젝트(Current Project)" 즐겨찾기가 정의된 각 루트에 자동으로 추가됩니다. `project_favourite_name` 설정을 사용하여 이름을 커스터마이즈하거나 값을 빈 문자열 `''`로 설정하여 이러한 즐겨찾기를 비활성화할 수 있습니다. - - - -*** - -_참고: 현재 CentOS 6.5에서 실행되는 Nuke 8.0의 버그로 인해 툴킷을 실행할 때 Nuke가 중단됩니다. CentOS의 다른 버전은 영향을 받지 않습니다. 당사는 이 문제를 인식하고 있습니다(버그 43766). 이 버전을 실행 중인 경우 Nuke의 향후 업데이트에서 이 문제가 해결될 때까지 조치를 취할 수 있도록 당사에 문의해 주십시오._ - - -## 앱 개발자를 위한 정보 - -### 컨텍스트 트래킹 - -Nuke용 {% include product %} 엔진은 파일 로드 시 컨텍스트를 자동으로 전환합니다. 파일이 로드될 때마다 엔진에서 파일을 확인하고 컨텍스트를 분석합니다. - -### 커스텀 기즈모를 사용하는 앱 - -Nuke용 {% include product %} 엔진을 사용하면 커스텀 기즈모를 쉽게 처리할 수 있습니다. 커스텀 기즈모를 사용하는 앱을 작성하는 경우 **gizmos**라는 폴더에 기즈모를 배치하기만 하면 엔진이 자동으로 해당 위치를 nuke 경로에 추가합니다. - -![기즈모](../images/engines/nuke-gizmo.png) - -그러면 노드 생성 기능을 통해 기즈모에 쉽게 액세스할 수 있습니다. - -* `nuke.createNode("WriteTank")` - -{% include info title="경고" content="기즈모를 사용하는 것이 편리할 수 있지만 씬에 지속되는 노드를 만들려는 경우에는 일반적으로 적절한 솔루션이 아닙니다. 씬에 기즈모를 추가하면 씬과 기즈모 코드 간에 종속성이 발생하기 때문입니다. 씬을 로드할 때마다 ShotGrid 툴킷을 로드해야 할 뿐만 아니라 코드를 업데이트해도 씬에서 사용 중인 이전 기즈모가 손상되지 않도록 신중하게 코드를 관리해야 합니다." %} - -### 노드 생성 앱 - -커스텀 nuke 노드를 만드는 앱은 신중하게 제작해야 합니다. 이러한 앱에는 씬과 기즈모 코드 간의 종속성이 필요하므로 기즈모를 사용하지 않는 것이 좋습니다. 대신, 커스텀 노드를 nuke 파일로 저장하여 씬으로 가져옵니다. - -```python - group_node_script = os.path.join(self.disk_location, "resources", "my_group_node.nk") - group_node = nuke.nodePaste(group_node_script) -``` - -앱 내에서 노드를 호출하는 모든 코드는 반환된 인스턴스를 사용할 수 있습니다. - -그룹 내에서 앱을 호출해야 하는 모든 코드는 코드가 이전 버전과 호환되도록 신중하게 작성해야 합니다. 다음과 같은 접근 방식을 권장합니다. - -앱을 시작할 때 nuke 네임스페이스의 일부로 앱 핸들을 등록합니다. - -```python - def init_app(self): - - nuke.tk_nuke_nameofmyapp = self -``` - -예를 들어 그룹 노드에 버튼이 있고 일부 {% include product %} 앱 코드를 호출하려는 경우 {% include product %} 툴킷을 찾을 수 없으면 정상적으로 종료합니다. 아래 코드는 앱이 만들 수 있는 그룹 노드에 속한 python 버튼 노브와 연결된 코드입니다. - -```python -# have to gracefully support the case when -# sgtk is not in the system at all! -import nuke -try: - app = nuke.tk_nuke_nameofmyapp - app.do_something_v1(nuke.thisNode()) -except: - nuke.warning("Could not do XYZ! Most likely Sgtk is not currently active.") -``` - -앱 동작을 변경하는 경우 앱 콜백의 버전 번호를 증가시켜 계속해서 관리하면 앱 코드가 새로운 동작과 이전 동작을 모두 지원할 수 있습니다. - -## Hiero 내에서 Nuke용 {% include product %} 엔진 사용 - -Nuke용 {% include product %} 엔진은 Hiero 내에서 실행되는 {% include product %} 인식 통합에도 사용됩니다. - -{% include product %} 앱 액션을 응용프로그램의 여러 위치, 기본 메뉴 막대의 특정 {% include product %} 메뉴 및 다른 Hiero 패널에서 마우스 오른쪽 버튼을 클릭하면 표시되는 다양한 상황별 메뉴에 배치할 수 있습니다. - -![메뉴](../images/engines/nuke-hiero-menus.png) - -### Hiero 메뉴 구성 방법 - -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...} -``` - -대부분의 엔진에는 기본 {% include product %} 메뉴에 배치되는 "단축키"를 지정할 수 있는 목록인 `menu_favourites` 옵션이 있습니다. 이 외에도 Hiero 전용 구성에는 세 개의 특수 섹션이 있습니다. - -- `timeline_context_menu`는 타임라인 편집기에서 클립을 마우스 오른쪽 버튼으로 클릭할 때 표시되는 메뉴를 나타냅니다. -- `spreadsheet_context_menu`는 스프레드시트 편집기에서 항목을 선택하여 마우스 오른쪽 버튼으로 클릭할 때 표시되는 메뉴를 나타냅니다. -- `bin_context_menu`는 모든 프로젝트와 미디어를 볼 수 있는 bin 편집기에서 항목을 선택하여 마우스 오른쪽 버튼으로 클릭할 때 표시되는 메뉴를 나타냅니다. - -이러한 메뉴에 항목을 추가하려면 구성에 정의된 `name` 필드가 앱 메뉴에 표시되는 항목과 일치해야 합니다. - -#### 현재 씬의 개념이 필요한 앱 - -일부 툴킷 앱에는 기본 씬이나 기본 프로젝트의 개념이 필요합니다. 예를 들어 스냅샷 앱은 현재 씬을 스냅샷으로 찍는 방법을 압니다. 그러나 Maya나 Nuke와는 달리 Hiero에는 현재 씬의 개념이 없습니다. 동시에 여러 프로젝트를 Hiero에서 열 수 있습니다. 따라서 앱(예: 스냅샷 앱)이 어떤 프로젝트를 클릭했는지 확인할 수 있도록 후크에 특수 로직을 추가해야 하는 경우가 종종 있습니다. 다음 문서 섹션에서 이 작동 방식을 보여 줍니다. - -### 앱 개발자를 위한 정보 - -Hiero에는 현재 프로젝트의 개념이 없으므로 앱이 Hiero 내부에서 클릭되는 내용을 쉽게 찾을 수 있도록 보다 강력한 도구를 추가했습니다. 이에 따라 Hiero용 {% include product %} 엔진에 두 가지 방식이 추가되었습니다. - - -#### get_menu_selection() - -가장 최근의 메뉴 클릭에서 선택된 Hiero 객체 목록을 반환합니다. -이 목록에는 다양한 유형의 항목이 포함될 수 있습니다. 어떤 방식으로 무엇이 반환되는지 정확하게 보기 위해 디버그 로깅을 켭니다. 그러면 진행 중인 작업의 상세 정보가 표시됩니다. - -다음은 반환되는 객체의 예입니다. - -- bin 뷰에서 프로젝트 선택: [hiero.core.Bin](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.Bin) -- bin 뷰에서 항목 선택: [hiero.core.BinItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.BinItem) -- 트랙 선택: [hiero.core.TrackItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.TrackItem) - -`list` engine_object.get_menu_selection() - -**매개변수 및 반환값** - -* **반환값:** Hiero 객체 목록 - -**예** - -가장 최근 클릭에서 선택된 객체를 가져와서 단일 객체가 선택되고 이 객체가 유효한 Hiero 프로젝트인지 확인합니다. 예를 들어 Hiero에서 프로젝트의 저장, 로드 또는 게시 작업을 트리거하려는 경우에 이 방식이 유용할 수 있습니다. - -```python -# get the menu selection from the engine -selection = engine_obj.get_menu_selection() - -if len(selection) != 1: - raise TankError("Please select a single Project!") - -if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - -project = selection[0].project() -if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") -``` - -#### HieroEngine.get_menu_category() - -마지막 메뉴 클릭이 발생한 UI 영역을 반환합니다. 이 명령은 거의 사용되지 않으며 호출된 메뉴에 따라 다르게 동작하려는 앱 명령이 있는 경우에 필요할 수 있습니다. - -`area_enum` engine_object.get_menu_category() - -**매개변수 및 반환값** - -다음 상수 중 하나를 반환합니다. - -- `HieroEngine.HIERO_BIN_AREA` -- `HieroEngine.HIERO_SPREADSHEET_AREA` -- `HieroEngine.HIERO_TIMELINE_AREA` -- 알 수 없는 경우 또는 정의되지 않은 경우 `None` - -#### Hiero 작동을 위한 후크 구성 방법 - -Hiero용으로 구성된 다중 앱은 일반적으로 어떤 프로젝트가 클릭되었는지 찾아야 합니다. 예를 들어 `tk-multi-workfiles` 앱은 프로젝트에 대해 "{% include product %} 다른 이름으로 저장(Save As)"을 수행해야 합니다. 따라서 Hiero의 bin 메뉴에 탱크 다른 이름으로 저장(Tank Save As) 명령을 추가하여 사용자가 bin 뷰에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 *다른 이름으로 저장(Save As)* 옵션을 선택합니다. - -![메뉴](../images/engines/nuke-hiero-bin_menu.png) - -엔진 구성은 다음과 같습니다. - -```yaml -bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} -``` - -이제 앱 자체에서 각 엔진은 저장 및 로드와 같은 씬 이벤트를 처리하는 후크를 구성해야 합니다. Maya나 Nuke와 같은 응용프로그램의 경우 이는 일반적으로 저장, 로드 등을 수행합니다. -그러나 Hiero의 경우 실제로 클릭된 프로젝트를 찾는 것으로 시작해야 합니다. 위의 예에서 후크 코드는 다음과 같습니다. - -```python -class SceneOperation(Hook): - """ - Hook called to perform an operation with the - current scene - """ - - def execute(self, operation, file_path, context, **kwargs): - """ - Main hook entry point - - :operation: String - Scene operation to perform - - :file_path: String - File path to use if the operation - requires it (e.g. open) - - :context: Context - The context the file operation is being - performed in. - - :returns: Depends on operation: - 'current_path' - Return the current scene - file path as a String - 'reset' - True if scene was reset to an empty - state, otherwise False - all others - None - """ - - if operation == "current_path": - # return the current script path - project = self._get_current_project() - curr_path = project.path().replace("/", os.path.sep) - return curr_path - - elif operation == "open": - # open the specified script - hiero.core.openProject(file_path.replace(os.path.sep, "/")) - - elif operation == "save": - # save the current script: - project = self._get_current_project() - project.save() - - elif operation == "save_as": - project = self._get_current_project() - project.saveAs(file_path.replace(os.path.sep, "/")) - - elif operation == "reset": - # do nothing and indicate scene was reset to empty - return True - - elif operation == "prepare_new": - # add a new project to hiero - hiero.core.newProject() - - - def _get_current_project(self): - """ - Returns the current project based on where in the UI the user clicked - """ - - # get the menu selection from the engine - selection = self.parent.engine.get_menu_selection() - - if len(selection) != 1: - raise TankError("Please select a single Project!") - - if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - - project = selection[0].project() - if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") - - return project -``` - -#### 디버그 로깅을 사용하여 메뉴 이벤트 보기 - -특정 선택 항목을 클릭했을 때 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 deleted file mode 100644 index b4048e294..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: Photoshop -pagename: tk-photoshopcc -lang: ko ---- - -# Photoshop - -Photoshop CC용 {% include product %} 엔진은 Photoshop CC 워크플로우에 {% include product %}를 통합하기 위한 플랫폼을 제공합니다. 이는 표준 {% include product %} Pipeline Toolkit 엔진으로 구성되며 [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe)(CEP)를 사용합니다. - -활성화되면 Photoshop CC에서 **{% include product %}** 패널을 사용할 수 있게 됩니다. {% include product %} 컨텍스트에 대한 정보와 현재 해당 컨텍스트에 설치된 앱에 등록된 명령을 표시합니다. - -![익스텐션](../images/engines/photoshopcc-photoshopcc_extension.png) - -## 인터페이스 개요 - -{% include product %} 익스텐션 패널은 기본 Photoshop CC 패널과 동일한 색상 팔레트 및 기본 레이아웃을 사용합니다. 익스텐션 패널은 다음 다섯 가지 구성요소로 이루어져 있습니다. - -![익스텐션 구성요소](../images/engines/photoshopcc-extension_components.png) - -1. **컨텍스트 헤더** - 현재 컨텍스트에 대한 썸네일 및 필드입니다. -2. **즐겨찾기 쉘프** - 현재 컨텍스트에서 가장 많이 사용되는 앱을 표시하도록 디자인되었습니다. -3. **명령 목록** - 현재 컨텍스트에서 자주 사용되지 않는 모든 명령입니다. -4. **상황에 맞는 메뉴** - 추가 컨텍스트 관련 명령 및 디버깅 도구입니다. -5. **로깅 콘솔** - 디버깅용 로깅 출력을 표시하는 콘솔 오버레이입니다. - -## 설치 - -Photoshop CC용 {% include product %} 엔진의 설치는 다른 {% include product %} 통합과 동일한 프로토콜을 수행합니다. 엔진 및 앱 설치에 대한 자세한 정보는 [툴킷 관리](https://developer.shotgridsoftware.com/ko/425b1da4/) 문서를 참조하십시오. 또한 통합 구성 방법의 예로 [기본 툴킷 구성](https://github.com/shotgunsoftware/tk-config-default2)을 참조할 수 있습니다. - -## 익스텐션 활성화 - -익스텐션이 설치되면 Photoshop CC의 익스텐션 메뉴를 통해 익스텐션을 실행해야 합니다. - -![익스텐션 메뉴](../images/engines/photoshopcc-extensions_menu.png) - -이 작업은 한 번만 수행하면 되고 {% include product %} 익스텐션 패널은 이후 시작 시 활성화할 필요 없이 Photoshop CC 레이아웃에 유지될 수 있습니다. - -활성화하고 이후에 시작하면 {% include product %} 통합이 부트스트랩(Bootstrapping)되는 동안 익스텐션 패널에 로딩 화면이 표시됩니다. - -이 화면은 일반적으로 현재 컨텍스트가 결정되고 명령이 표시되기까지 몇 초 동안 표시됩니다. - -## 인터페이스 구성요소 - -다음 섹션에서는 {% include product %} Photoshop CC 통합의 구성요소를 간략하게 설명합니다. - -### 컨텍스트 헤더 - -컨텍스트 헤더는 현재 {% include product %} 컨텍스트에 대한 정보를 표시할 수 있는 커스터마이즈 가능 영역입니다. - -![익스텐션 헤더](../images/engines/photoshopcc-extension_header.png) - -컨텍스트는 현재 활성 문서에 의해 결정됩니다. 엔진에서 컨텍스트가 결정되면 헤더가 업데이트되어 컨텍스트의 썸네일 필드 상세 정보가 표시됩니다. 필드 정보는 후크로 제어됩니다. 필드 표시를 커스터마이즈하는 방법에 대한 자세한 정보는 아래의 **컨텍스트 필드 표시 후크** 섹션을 참조하십시오. - -또한 Photoshop CC는 다중 문서 인터페이스이므로 활성 문서를 변경하면 컨텍스트가 업데이트되고 따라서 {% include product %} 익스텐션도 업데이트됩니다. 특히 여러 {% include product %} 컨텍스트에서 동시에 작업할 때 아티스트가 이 동작을 이해하는 것이 중요합니다. - -### 즐겨찾기 쉘프 - -즐겨찾기 쉘프는 Maya 및 Houdini와 같은 다른 {% include product %} DCC 통합에서 사용할 수 있는 메뉴 즐겨찾기와 유사합니다. 이 인터페이스 섹션에서는 가장 일반적으로 사용되는 툴킷 앱을 컨텍스트 헤더 바로 아래에서 쉽게 사용할 수 있고 쉽게 찾습니다. - -![익스텐션 쉘프](../images/engines/photoshopcc-extension_shelf.png) - -쉘프는 즐겨찾는 명령을 버튼으로 표시하며, 버튼 위에 마우스 커서를 놓으면 회색 음영에서 색상으로 전환되고 상단의 레이블에 이름이 표시됩니다. 버튼 위에 마우스 커서를 놓으면 버튼에 대한 툴팁이 표시됩니다. - -버튼 중 하나를 클릭하면 실행하도록 등록된 명령에 대한 콜백이 트리거됩니다. - -명령 즐겨찾기를 지정하는 방법에 대한 자세한 정보는 아래의 **쉘프 즐겨찾기** 섹션을 참조하십시오. - -### 명령 목록 - -명령 목록에는 현재 컨텍스트에 대해 등록된 다른 "일반" 명령이 표시됩니다. - -![익스텐션 명령](../images/engines/photoshopcc-extension_commands.png) - -일반적으로 파이프라인 구성 내에 설치된 앱은 여기에 표시되는 하나 이상의 명령을 등록합니다. 명령이 즐겨찾기로 식별되지 않고 상황에 맞는 메뉴 명령으로도 식별되지 않는 경우 여기에 표시됩니다. - -명령 목록 버튼은 즐겨찾기 쉘프의 버튼과 비슷한 방식으로 동작합니다. 유일한 차이점은 아이콘의 오른쪽에 전체 이름이 있는 목록으로 표시된다는 점입니다. - -### 상황에 맞는 메뉴 - -상황에 맞는 메뉴 명령으로 등록된 모든 명령은 {% include product %} 익스텐션 패널의 상황에 맞는 메뉴에 표시됩니다. - -![익스텐션 상황에 맞는 메뉴](../images/engines/photoshopcc-extension_context_menu.png) - -다른 명령 영역과 마찬가지로 이러한 명령은 컨텍스트와 함께 변경됩니다. **{% include product %}(으)로 이동(Jump to {% include product %})** 및 **파일 시스템으로 이동(Jump to Filesystem)**과 같은 명령은 항상 여기에서 사용할 수 있습니다. - -### 로깅 콘솔 - -로깅 콘솔에는 CEP Javascript 인터프리터 및 툴킷의 Python 프로세스의 모든 로깅 출력이 표시됩니다. - -![익스텐션](../images/engines/photoshopcc-extension_console.png) - -익스텐션에 문제가 있어 지원이 필요한 경우 로깅 콘솔 출력은 {% include product %} 지원 팀이 문제를 디버깅하는 데 매우 유용합니다. - -## 구성 및 기술 상세 정보 - -다음 섹션에서는 스튜디오 파이프라인의 특정 요구 사항으로 통합을 구성할 수 있는 통합의 보다 기술적인 측면에 대해 설명합니다. - -### PySide - -Photoshop CC용 {% include product %} 엔진은 PySide를 사용합니다. [Pyside 설치](http://pyside.readthedocs.io/en/latest/installing/index.html)에 대한 공식 지침을 참조하십시오. - -### CEP 익스텐션 - -익스텐션 자체는 엔진과 함께 번들로 제공되며 엔진은 Photoshop CC를 처음 시작할 때 자동으로 설치를 처리합니다. 익스텐션은 아티스트의 로컬 컴퓨터에 OS별 CEP 익스텐션 표준 디렉토리에 설치됩니다. - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -Photoshop CC를 시작할 때마다 엔진 부트스트랩(Bootstrapping) 코드는 엔진과 함께 번들로 제공되는 익스텐션 버전을 컴퓨터에 설치된 버전과 비교하여 검사합니다. 즉, 엔진 업데이트 후 새 익스텐션 버전이 함께 제공된 경우 설치된 익스텐션이 번들로 제공되는 새 버전으로 자동 업데이트됩니다. - -### 즐겨찾기 구성 - -**즐겨찾기 쉘프**는 설치된 앱에 등록된 모든 명령을 표시하도록 구성할 수 있습니다. 이렇게 하려면 환경 설정의 `tk-photoshopcc` 섹션에 `shelf_favorites` 구성을 추가하면 됩니다. 다음은 예입니다. - -```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` 키는 설치된 특정 앱을 식별하고 `name` 키는 해당 앱에서 등록된 명령의 표시 이름과 일치합니다. 위의 예에서 즐겨찾는 네 가지 명령, `tk-multi-workfiles2` 앱의 파일 열기 및 저장 대화상자와 표준 툴킷 게시 및 스냅샷 대화상자를 볼 수 있습니다. 이제 이 네 가지 명령이 즐겨찾기 쉘프에 표시됩니다. - -### 컨텍스트 필드 표시 후크 - -엔진에는 패널의 **컨텍스트 헤더** 섹션에 표시되는 필드를 제어하는 후크가 제공됩니다. 후크에서 표시되는 항목을 커스터마이즈하기 위해 재지정할 수 있는 두 가지 방식이 있습니다. - -첫 번째는 `get_entity_fields()` 방식입니다. 이 방식은 현재 {% include product %} 컨텍스트를 나타내는 엔티티 유형을 적용합니다. 예상되는 반환값은 표시를 위해 쿼리해야 하는 해당 엔티티의 필드 목록입니다. 엔진 자체는 비동기적으로 데이터 쿼리를 처리합니다. - -{% include product %}에서 데이터를 쿼리하면 후크의 두 번째 방식이 호출됩니다. 이 `get_context_html()` 방식은 `get_entity_fields()` 방식에서 지정된 쿼리된 필드로 채워진 컨텍스트 엔티티 사전을 수신합니다. 예상되는 반환값은 쿼리된 엔티티 필드를 표시하도록 형식이 지정된 HTML을 포함하는 문자열입니다. - -[기본 후크 구현](https://github.com/shotgunsoftware/tk-photoshopcc/blob/master/hooks/context_fields_display.py)은 이러한 방식에 필요한 사항에 대한 좋은 참조 자료입니다. - -엔진은 엔티티 썸네일을 사용할 수 있는 경우 항상 이를 표시합니다. - -### Photoshop API - -이 엔진은 Photoshop CC용 Javascript API를 Python에 노출합니다. 이 API에 대한 전체 문서는 [여기](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2015.pdf)에서 찾을 수 있습니다. - -Photoshop API 객체는 `engine.adobe`로 노출됩니다. 아래 예는 툴킷 앱과 후크 내에서 Photoshop DOM을 직접 조작하는 방법을 보여 줍니다. 표준 툴킷 앱에는 Photoshop 문서와 상호 작용하는 방법에 대한 작업 예가 포함되어 있습니다. - -#### 예 -파일 로드: - -```python -f = adobe.File('/Path/To/File.jpeg') -adobe.app.load(f) -``` - -눈금자 단위를 픽셀로 설정: - -```python -pixels = adobe.Units.PIXELS -adobe.app.preferences.rulerUnits = pixels -``` - -기본 옵션을 사용하여 현재 웹 문서 내보내기: - -```python -temp_thumb_file = adobe.File(out_path) -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() -adobe.app.activeDocument.exportDocument(temp_thumb_file, save_for_web, export_options) -``` - -각 레이어를 별도의 파일로 내보내기: - -```python -doc = adobe.app.activeDocument -layers = doc.artLayers -layers = [layers[i] for i in xrange(layers.length)] -original_visibility = [layer.visible for layer in layers] - -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() - -for layer in layers: - layer.visible = False - -for layer in layers: - layer.visible = True - out_file = adobe.File("c:/layer.%s.jpg" % str(layer.name)) - doc.exportDocument( - out_file, - save_for_web, - export_options, - ) - layer.visible = False - -for (i, layer) in enumerate(layers): - layer.visible = original_visibility[i] -``` - -### 환경 변수 - -디버깅을 돕기 위해 엔진의 일부 기본값을 변경하는 일련의 환경 변수가 있습니다. - -`SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - Python heartbeat 간격(초)입니다(기본값: 1초). 레거시 환경 변수 `SGTK_PHOTOSHOP_HEARTBEAT_INTERVAL` 역시 설정된 경우 적용됩니다. - -`SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - 종료하기 전 heartbeat 오류 수입니다(기본값: 2). 레거시 환경 변수 `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE` 역시 설정된 경우 적용됩니다. - -`SHOTGUN_ADOBE_NETWORK_DEBUG` - 출력 로깅 시 추가 네트워킹 디버그 메시지를 포함합니다. 레거시 환경 변수 `SGTK_PHOTOSHOP_NETWORK_DEBUG` 역시 설정된 경우 적용됩니다. - -`SHOTGUN_ADOBE_PYTHON` - 엔진을 시작할 때 사용할 Python 실행 파일의 경로입니다. 설정되지 않은 경우 시스템 Python이 사용됩니다. Photoshop이 {% include product %} 데스크톱과 같은 Python 프로세스에서 또는 tk-shell 엔진을 통해 시작되면 해당 프로세스에서 사용되는 Python이 Photoshop 통합에서 사용됩니다. - -참고: Adobe 프레임워크에 추가 환경 변수가 존재합니다. 자세한 내용은 [개발자 설명서](https://developer.shotgridsoftware.com/tk-framework-adobe/)를 참조하십시오. - -### 앱 개발자 노트 - -* 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-shell.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shell.md deleted file mode 100644 index b35e3ffbb..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shell.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: 쉘 -pagename: tk-shell -lang: ko ---- - -# 쉘 - -쉘용 {% include product %} 엔진은 명령행 상호 작용을 처리하며 Core API의 일부로 배포되는 `tank` 명령과 완전히 통합됩니다. 터미널에서 `tank` 명령을 실행하면 툴킷은 엔진을 시작하여 앱 실행을 처리합니다. - -tank 명령에 대한 자세한 내용은 [고급 툴킷 관리 설명서](https://developer.shotgridsoftware.com/ko/425b1da4/?title=Advanced+Toolkit+Administration#using-the-tank-command)를 참조하십시오. - -![엔진](../images/engines/sg_shell_1.png) - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - - -``` -> tank Project XYZ install_engine asset tk-shell -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 `tank` 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-shell에서 이 코드 리포지토리에 액세스할 수 있습니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md deleted file mode 100644 index 930cced2e..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: ShotGrid -pagename: tk-shotgun -lang: ko ---- - -# {% include product %} - -![엔진](../images/engines/sg_shotgrid_engine_1.png) - -{% include product %} 엔진은 {% include product %} 내에서 시작할 수 있는 앱을 관리합니다. 이러한 툴킷 앱을 *액션*으로 간주하는 경우가 있습니다. 일반적으로 이러한 앱은 {% include product %} 내부의 메뉴에 항목으로 표시됩니다. - -## {% include product %} Pipeline Toolkit 액션 사용 - -액션은 {% include product %} 홈페이지에 표시됩니다. - -![action1](../images/engines/shotgun-action1.png) - -객체 또는 선택 항목을 마우스 오른쪽 버튼으로 클릭하면 표시되는 표준 {% include product %} 상황에 맞는 메뉴에서도 찾을 수 있습니다. - -![action1](../images/engines/shotgun-action2.png) - -액션을 클릭하면 즉시 처리가 시작됩니다. 앱이 완료되면 일반적으로 일부 상태 정보가 포함된 메시지가 표시되고 정상적으로 작동하지 않을 경우 오류 메시지가 표시됩니다. - -## {% include product %}용 앱 개발 - -{% include product %} 내부에서 실행되는 앱을 개발하는 것은 쉽습니다. 일반적인 앱 개발 작업 방식을 잘 모르는 경우 플랫폼 문서로 이동하여 소개 자료를 확인하십시오. 이 섹션에서는 앱 개발 프로세스의 {% include product %} 측면에 대해 설명합니다. - -Core v0.13부터는 {% include product %} 엔진에서 모든 다중 앱을 사용할 수 있습니다. 기술적으로 {% include product %} 엔진과 다른 엔진 사이에는 차이가 거의 없습니다. 그러나 다음과 같이 약간의 미묘한 차이가 있습니다. - -* {% include product %} 엔진에서 QT 기반 앱을 실행하려면 PySide 또는 PyQt를 표준 Python 환경에 수동으로 설치해야 합니다. -* {% include product %} 엔진에서는 사용자가 속한 권한 그룹에 따라 사용자에게 액션을 표시할 수 있습니다. {% include product %} 액션(Action) 메뉴에 명령을 추가하고 관리자(Admin)만 볼 수 있게 하려는 경우에 유용합니다. - -관리자(Admin)에게만 표시되는 hello-world 스타일의 {% include product %} 앱은 다음과 같습니다. - -```python -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!") -``` - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-shotgun -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-shotgun에서 이 코드 리포지토리에 액세스할 수 있습니다. - -## 특별 요구 사항 - -이 기능을 이용하려면 {% include product %} Pipeline Toolkit Core API 버전 v0.19.5 이상이 필요합니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-softimage.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-softimage.md deleted file mode 100644 index bf9715f02..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-softimage.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Softimage -pagename: tk-softimage -lang: ko ---- - -# Softimage - -> **경고:** Softimage 엔진은 2021년 2월 13일부로 사용 기간이 종료되었습니다. [자세한 내용은 여기를 참조](https://community.shotgridsoftware.com/t/end-of-life-for-softimage-support-on-february-13th-2021/10694)하십시오. - -![](../images/engines/sg_softimage_1.png) - -Softimage용 {% include product %} 엔진은 {% include product %} Pipeline Toolkit 앱과 Softimage를 연결합니다. 여기에는 PySide/Qt 배포판이 포함되어 있어 엔진 내부에서 바로 실행되는 Python 및 PySide를 사용하여 앱을 작성할 수 있습니다. 이 문서에서는 고급 구성 설정에 대해 자세히 설명합니다. - -Softimage용 {% include product %} 엔진에는 {% include product %} 앱을 Softimage에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 이 엔진은 자동 파일 관리, 잘 정의된 작업 영역/게시 워크플로우, 스냅샷 등을 제공하는 일반적인 앱 제품군을 지원합니다. - -엔진이 로드되면 Softimage 기본 메뉴 모음에 {% include product %} 메뉴가 제공됩니다. - -![](../images/engines/softimage_menu.png) - -## 지원되는 응용프로그램 버전 - -이 항목은 테스트를 거쳐 2012, 2013 응용프로그램 버전에서 작동하는 것으로 알려져 있습니다. 최신 릴리즈에서는 더 완벽하게 작동할 수 있지만 이러한 버전에서 아직 공식적으로 테스트되지는 않았습니다. - -사용 가능한 툴킷 명령이 여기에 표시됩니다. - -Softimage용 {% include product %} 엔진은 베타 버전이며 몇 가지 알려진 문제가 있습니다. 아래에서 전체 목록을 확인하십시오. - -## 앱 개발자를 위한 정보 - -### 지원되는 플랫폼 - -Softimage용 {% include product %} 엔진은 현재 Windows에서는 Softimage 2012 및 2013을 지원하고 Linux에서는 2013을 지원합니다. - -Softimage 2014는 현재 Linux에서 지원되지 않으며 Windows에서 실행될 수는 있지만 일부 불안정한 문제가 있으므로 사용하지 않는 것이 좋습니다. - -### PySide - -#### Windows - -Windows에서 Softimage는 기본 제공 Python 배포판 또는 외부 배포판을 사용하도록 구성할 수 있습니다. 자세한 정보는 http://download.autodesk.com/global/docs/softimage2013/en_us/userguide/index.html?url=files/userprefs528.htm,topicNumber=d30e797817을 참조하십시오. - -이 엔진은 설치된 Python for Softimage 버전, 버전 2012(Python 2.6 x64), 2013(Python 2.6 x64), 2014(Python 2.7 x64)의 경우 PySide 및 Qt 버전과 함께 번들로 제공됩니다. 그러나 Python의 외부 배포판을 사용하는 경우 PySide와 Qt의 이진 호환 버전도 제공해야 합니다. - -Windows PySide 배포판에 대한 리소스는 http://www.lfd.uci.edu/~gohlke/pythonlibs/에서 찾을 수 있습니다. - -#### Linux - -Linux에서 Softimage는 기본 제공 Python 버전을 사용해야 합니다. Softimage 2013의 경우 사전 빌드된 PySide 및 Qt 배포판이 필요하며 [tk-framework-softimageqt](https://github.com/shotgunsoftware/tk-framework-softimageqt)에서 제공됩니다. 이 배포판은 Softimage 2013에서 사용하는 것과 동일한 버전인 Python 2.5.2용 GCC 4.1.2를 사용하여 빌드되었습니다. - -다양한 Linux 배포판으로 인해 모든 경우에 잘 작동한다는 보장이 없기 때문에 제대로 작동하도록 하려면 다시 빌드해야 할 수 있습니다. 버전 빌드 방법에 대한 자세한 정보는 프레임워크에 포함된 README에서 확인할 수 있습니다. 다음을 참조하십시오. - -https://github.com/shotgunsoftware/tk-framework-softimageqt/tree/master/resources/pyside121_py25_qt485_linux - -### 알려진 문제(Windows) - -#### Softimage 2014 불안정성 - -엔진이 Windows의 Softimage 2014에서 실행되기는 하지만 알려진 문제가 있으며 완전히 테스트되지 않았습니다. 게시 대화상자를 열면 Softimage가 중단됩니다. - -#### Softimage 2014의 SSL 버그 - -Softimage 2014와 함께 배포된 `_ssl.pyd` 파일에는 시작 시 속도 저하를 유발할 수 있는 알려진 버그가 포함되어 있습니다. 이 문제를 해결하려면 이 파일을 백업한 다음 Maya 2014에서 찾을 수 있는 `_ssl.pyd` 파일로 덮어쓰는 것이 좋습니다. 도움이 필요한 경우 언제든지 툴킷 지원 팀에 문의하십시오. - -#### 창 상위 지정 - -엔진의 `show_modal` 또는 `show_dialog` 방식을 사용하지 않고 상위가 없이 생성된 Qt 창은 기본 Softimage 응용프로그램의 상위로 제대로 지정되지 않습니다. - -### 알려진 문제(Linux) - -#### ssl 및 sqlite3 라이브러리 누락 - -Softimage는 매우 구체적인 PySide 버전(위에서 자세히 설명)을 요구하는 것 외에도 {% include product %} Python API 및 툴킷에 필요한 ssl 및 sqlite3 라이브러리가 누락되었습니다. - -이 라이브러리를 `tk-multi-launchapp` 앱의 일부로 포함하여 Softimage를 시작하기 전에 LD_LIBRARY_PATH & PYTHONPATH에도 추가합니다. 다시 말하지만 이러한 문제가 있는 경우 시스템 구성 빌드에 대한 자세한 지침은 앱에 포함된 README에서 확인할 수 있습니다. 다음을 참조하십시오. - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -#### libX11의 세그먼트화 오류 - -Linux의 Softimage에는 특정 Linux 배포판에서 속도 문제를 해결할 수 있는 해크 옵션이 포함되어 있습니다. 자세한 정보는 다음을 참조하십시오. - -http://xsisupport.com/2011/01/19/the-case-of-the-slow-2011-startup-on-fedora-14/ - -이에 따라 Softimage는 다음 위치에 있는 libX11 라이브러리의 다른 버전을 사용하게 됩니다. - -/usr/Softimage/Softimage_2013/Application/mainwin/mw/lib-amd64_linux_optimized/X11 - -이 해크를 사용할 경우 Qt가 libX11 라이브러리(호출 스택의 SIGSEGV)를 호출하는 동안 세그먼트화 오류가 발생하여 잦은 충돌이 발생할 수 있습니다. 왜냐하면 libX11 라이브러리의 해크 버전이 꽤 오래되었고 Qt가 빌드된 버전과 호환되지 않기 때문입니다. - -이 문제를 해결하려면 Softimage 해크 버전과 호환되는 libX11 버전에 대한 새 Qt 버전을 빌드해야 합니다. - -#### libssl의 세그먼트화 오류 - -GCC의 올바른 버전(4.1.2)을 사용하여 빌드하지 않은 최신 버전의 openssl을 사용하는 경우 {% include product %} API를 사용할 때 세그먼트화 오류(SIGSEGV)가 표시될 수 있습니다. - -이러한 오류는 Qt/PySide에만 국한되는 것이 아니라 두 번째로 흔한 문제이기 때문에 여기서 설명할 필요가 있습니다. - -다음을 참조하십시오. - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -Softimage 2013에 대한 openssl의 호환 버전을 빌드하는 방법에 대한 지침이 나와 있습니다. - -#### 창 상위 지정 - -현재 툴킷 창은 Linux의 기본 Softimage 응용프로그램 창에 상위로 지정되지 않습니다. 해결 방법으로 툴킷 창은 최상위 레벨로 만들어지지만 때때로 다른 창(특히 확인 대화상자)이 툴킷 창 뒤에 숨겨져 있음을 의미할 수 있습니다. - -Softimage가 멈춘 것 같으면 열려 있는 툴킷 창을 이동하여 뒤에 대화상자가 숨어 있는지 확인합니다. - -#### Softimage/툴킷이 창 이동 후 고정 - -모달리스 대화상자(예: {% include product %} File Manager)를 이동하면 Softimage와 대화상자의 컨텐츠가 모두 고정되거나 중단되는 것으로 나타납니다. 이는 Qt 메시지 대기열이 현재 구현되는 방식과 관련된 문제이지만 유감스럽게도 아직 대체 솔루션을 찾지 못했습니다. - -간단한 해결 방법으로, 이 문제가 발생할 때 기본 Softimage 뷰포트를 클릭하면 다시 제대로 작동하기 시작합니다. - -## 설치 및 업데이트 - -### {% include product %} Pipeline Toolkit에 이 엔진 추가 - -asset 환경의 XYZ 프로젝트에 이 엔진을 추가하려면 다음 명령을 실행합니다. - -``` -> tank Project XYZ install_engine asset tk-softimage -``` - -### 최신 버전으로 업데이트 - -프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 `update` 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다. - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -또는 스튜디오 `tank` 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다. - -``` -> tank Project XYZ updates -``` - -## 협업 및 개선 - -{% include product %} Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 사용자 요청을 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-softimage에서 이 코드 리포지토리에 액세스할 수 있습니다. - -## 특별 요구 사항 - -이 기능을 이용하려면 {% include product %} Pipeline Toolkit Core API 버전 v0.14.56 이상이 필요합니다. \ No newline at end of file diff --git a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md b/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md deleted file mode 100644 index 7ba402eb6..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: VRed -pagename: tk-vred -lang: ko ---- - -# VRed - -VRED용 {% include product %} 엔진에는 {% include product %} 앱을 VRED에 통합하기 위한 표준 플랫폼이 포함되어 있습니다. 직접적으로 실행되는 경량의 플랫폼으로, VRED 메뉴에 {% include product %} 메뉴를 추가합니다. - -## 앱 개발자를 위한 정보 - -### PySide - -VRED용 {% include product %} 엔진에는 PySide 설치가 포함되어 있으며 필요할 때마다 활성화됩니다. - -### VRED 프로젝트 관리 - -VRED용 {% include product %} 엔진이 시작되면 VRED 프로젝트가 이 엔진 설정에서 정의된 위치를 가리키도록 설정됩니다. 즉, 새 파일을 열면 프로젝트가 변경될 수도 있습니다. 파일을 기반으로 VRED 프로젝트가 설정되는 방법과 관련된 상세 정보는 템플릿 시스템을 사용하여 구성 파일에서 구성할 수 있습니다. - -## tk-vred 작업 - -이 {% include product %} 통합은 VRED 제품군(Pro 및 Design)을 지원합니다. - -VRED가 열리면 {% include product %} 메뉴(VRED 엔진)가 메뉴 막대에 추가됩니다. -![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunMenuVRED.png) - - -### 파일 열기 및 저장 - -내 태스크(My Tasks) 및 에셋(Assets) 탭을 사용하여 할당된 모든 태스크를 보고 에셋을 찾을 수 있습니다.오른쪽에서 이 탭을 사용하여 왼쪽에 선택된 항목과 연관된 모든 파일, 작업 파일 또는 게시된 파일을 볼 수 있습니다. -![](https://help.autodesk.com/cloudhelp/2020/ENU/VRED-Shotgun/images/ShotgunFileOpenVRED.png) - -![](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: 파일을 {% 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.md b/docs/ko/reference/pipeline-integrations/toolkit-frameworks.md deleted file mode 100644 index d973408d3..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 프레임워크 -pagename: toolkit-frameworks -lang: ko ---- - -# 툴킷 프레임워크 - -여기에서는 툴킷 플랫폼에 사용할 수 있는 프레임워크에 대한 참조 문서를 찾을 수 있습니다. diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg deleted file mode 100644 index acc6917fb..000000000 Binary files a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png deleted file mode 100644 index bb5714a0c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg deleted file mode 100644 index af7bd19ac..000000000 Binary files a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg b/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg deleted file mode 100644 index 50b7fcf2c..000000000 Binary files a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg and /dev/null differ 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 deleted file mode 100644 index 01490e3b1..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 관리자 UI -pagename: tk-framework-adminui -lang: ko ---- - -# 툴킷 관리자 UI 프레임워크 - -관리자 UI 프레임워크는 툴킷 관리 명령을 래핑하는 표준 사용자 인터페이스의 위치를 구현합니다. - -현재 유일한 인터페이스는 setup_project 명령에 대한 인터페이스입니다. - -## SetupProjectWizard API 참조 - -![](images/setup_project_wizard.png) - -이 API는 툴킷용 {% include product %} 인스턴스를 통해 프로젝트를 설정하는 단계를 보여 주는 QWizard 구현입니다. 이 마법사를 사용하려면 (표준 {% include product %} API 엔티티 사전으로) 설정할 프로젝트와 부모로 지정할 창을 전달하는 클래스 인스턴스를 생성하기만 하면 됩니다. - -```python -adminui = sgtk.platform.import_framework("tk-framework-adminui", "setup_project") -setup = adminui.SetupProjectWizard(project, parent) -dialog_result = setup.exec_() -``` - -이렇게 하면 마법사가 실행되고, 표준 QDialog Accepted 또는 Rejected 값이 반환됩니다. - -### SetupProjectWizard 생성자 - -SetupProjectWizard를 초기화합니다. 다음은 QtGui.QWizard의 하위 클래스입니다. - -```python -SetupProjectWizard() -``` 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 deleted file mode 100644 index 65e818445..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: default -title: Desktop Server Framework -pagename: tk-framework-desktopserver -lang: ko ---- - -# 툴킷 데스크톱 서버 프레임워크 - -desktopserver 프레임워크는 {% include product %}의 로컬 파일 링크 및 툴킷 통합 기능을 제공합니다. 이를 통해 데스크톱 액세스가 필요한 동작에 대한 {% include product %} 웹 사이트의 요청을 안전하게 수신하는 로컬 웹 소켓 서버를 사용할 수 있습니다. - -로컬 파일 링크의 경우, 이러한 요청을 통해 웹 인터페이스에서 로컬 파일 경로에 대한 {% include product %} 액세스를 허용하며 요청 시 {% include product %} 페이지에서 해당 파일을 직접 열 수 있습니다. -툴킷의 경우 {% include product %}를 통해 지정된 엔티티에 대해 등록된 파이프라인 액션을 확인하고 이를 실행할 수 있습니다. - -## 데스크톱 통합을 실행하는 방법 - -이러한 {% include product %} 기능이 작동하려면 일부 지원되는 데스크톱 통합이 실행 중이어야 합니다. -[이 페이지](https://developer.shotgridsoftware.com/c79f1656/)에서는 데스크톱과 {% include product %}를 통합하는 방법에 대한 다양한 옵션을 설명합니다. Websocket 서버 섹션에서는 이 프레임워크가 제공하는 기능에 대해 설명합니다. - -### {% include product %} 데스크톱 - -이 프레임워크는 {% include product %} 데스크톱과 함께 번들로 제공되며, [이 단계에 따라](https://developer.shotgridsoftware.com/ko/d587be80/#installation-of-desktop) 다운로드할 수 있습니다. {% include product %} 데스크톱을 실행하면 자동으로 Websocket 서버를 시작합니다. {% include product %} 데스크톱을 이미 실행 중인 경우 설정 프로세스가 완료된 것입니다. - -### 서버 구성 - -브라우저 통합 설정은 구성 파일에 저장할 수 있습니다. 이 구성 파일은 `SGTK_BROWSER_INTEGRATION_CONFIG_LOCATION` 환경 변수를 설정하여 지정할 수 있습니다. 로컬 서버를 구성할 수 있는 방법에 대한 자세한 내용은 [샘플 파일](https://github.com/shotgunsoftware/tk-framework-desktopserver/blob/master/app/config.ini.example)에서 확인할 수 있습니다. - -### 인증서 제거 - -생성한 인증서를 제거하려는 경우 `python certificates.py --remove` 명령을 실행할 수 있습니다. - -## 래퍼를 통해 시작 - -기본적으로 서버에서는 운영 체제 기본값을 사용하여 명령을 실행합니다(Linux에서는 "xdg-open"과 동등한 값, OS X에서는 "열기", Windows에서 "실행"). 파일 실행을 위해 자체 래퍼를 제공하려는 경우 커스텀 래퍼를 가리키도록 **SHOTGUN_PLUGIN_LAUNCHER** 환경 변수를 설정할 수 있습니다. 이를 설정하면 래퍼는 유일한 인자로서 경로를 통해 호출됩니다. - -## 인증서 - -서버를 처음 실행하면 보안 연결 설정에 필요한 인증서가 생성됩니다. 이러한 인증서는 컴퓨터에 로컬로 저장되며 공개적으로 공유되지 않습니다. -이를 이용하면 웹 소켓에 필요한 암호화된 연결이 가능하며 이는 로컬에 남아 있는 모든 트래픽(브라우저에서 서버로)에도 불구하고 필요합니다. {% include product %}의 웹 소켓 트래픽은 인터넷을 통해 제공되지 않습니다. - -인증서가 시스템에 등록된 경우 다음과 같이 대화상자가 표시됩니다. -"확인(OK)"을 클릭하여 등록을 계속 진행합니다. - -![](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
- -## 보안 설정 - 로컬 {% include product %} 설치 - -기본적으로 websocket 서버는 포트 9000에서 호스트되는 {% include product %} 사이트를 수신하도록 설정되어 있습니다. -로컬 {% include product %} 서버를 실행하는 경우 websocket 서버에서의 연결을 허용하도록 {% include product %} 서버에 대한 구성을 업데이트해야 합니다. - -{% include product %} 데스크톱을 실행할 때 {% include product %} 바이너리와 함께 존재하는 ```config.ini``` 파일을 설정해야 합니다. - -해당 파일에는 Websocket 서버의 기능을 제어하는 섹션이 있습니다. -일반적인 구성은 다음과 같습니다. - -```ini -[BrowserIntegration] -low_level_debug=0 -port=9000 -enabled=1 -whitelist=*.shotgunstudio.com -``` - -## 문제 해결 - -Linux에서 서버는 libffi에 대한 종속성을 도입합니다. 시작 시 데스크톱에서 충돌이 발생하고 로그에서 libffi를 찾을 수 없다는 메시지가 표시되는 경우 이 패키지를 설치해야 합니다. - -설치 중에 문제 또는 질문이 있는 경우 [지원 사이트](https://knowledge.autodesk.com/ko/contact-support)를 방문하십시오. 서버 실행에 문제가 있는 경우 **config.ini** 파일에서 **debug**를 **1**로 설정하고 데스크톱의 로그 파일을 포함시키십시오. - -로그 파일은 다음 위치에 있습니다. - -**OS X**: ~/Library/Logs/Shotgun/tk-desktop.log
**Windows**: ~\%APPDATA%\Shotgun\tk-desktop.log
**Linux**: ~/.shotgun/tk-desktop.log
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 deleted file mode 100644 index 07a07bdc3..000000000 --- a/docs/ko/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: 데스크톱 시작 -pagename: tk-framework-desktopstartup -lang: ko ---- - -# 툴킷 Desktop Startup Framework -Desktop Startup Framework는 {% include product %} 데스크톱의 시작 로직을 구현합니다. 주요 기능은 다음과 같습니다. - -1. 브라우저 통합 초기화 -2. 사용자 로그인 -3. 툴킷 다운로드 -4. 사이트 구성 설정 -5. 필요 시 자신과 사이트 구성 자동 업데이트 -6. `tk-desktop` 엔진 실행 - -> 내부 툴킷 프레임워크이므로 이 프레임워크가 구현하는 인터페이스는 변경될 수 있습니다. 이 프레임워크를 프로젝트에서는 사용하지 않는 것이 좋습니다. - -### 시작 로직 잠금 - -> 이 경우 {% include product %} 데스크톱 앱 버전 `1.3.4`가 필요합니다. 응용프로그램 버전이 확실하지 않으면 {% include product %} 데스크톱을 실행하십시오. 로그인하고 나면 오른쪽 아래의 사용자 아이콘을 클릭하고, `About...`을 클릭합니다. `App Version`이 `1.3.4` 이상이어야 합니다. - -기본적으로 {% include product %} 데스크톱은 `tk-framework-desktopstartup` 업데이트를 사용자 컴퓨터에 로컬로 다운로드하고, 응용프로그램 실행 시퀀스 중에 이를 사용합니다. 응용프로그램을 실행하면 툴킷이 프레임워크 업데이트를 자동으로 확인합니다. 또한 업데이트가 있으면 자동으로 다운로드하여 설치합니다. - -아니면, {% include product %} 데스크톱이 로컬 사본 대신 특정 프레임워크 사본을 사용하도록 구성해도 됩니다. 이렇게 하면 자동 업데이트가 비활성화되기 때문에 시작 로직 업데이트는 여러분이 직접 책임져야 합니다. - -#### GitHub에서 특정 릴리즈 다운로드 - -GitHub에서는 수동으로 업데이트를 다운로드해야 합니다. 번들은 [출시](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases) 페이지에서 쉽게 다운로드할 수 있고, 각각의 공식 출시에 대한 자세한 정보는 [여기](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)에서 참조할 수 있습니다. - -#### 특정 사본을 사용하도록 {% include product %} 데스크톱 구성 - -시작 로직을 잠그는 유일한 방법은 환경 변수를 사용하는 것입니다. `SGTK_DESKTOP_STARTUP_LOCATION`을 프레임워크 사본의 루트 폴더로 설정하면 {% include product %} 데스크톱으로 하여금 시작 시 이 코드 사본을 사용하도록 할 수 있습니다. 이 변수를 설정하면 {% include product %} 데스크톱을 실행할 수 있고, 그러면 이 특정한 시작 로직 사본을 사용하게 됩니다. - -> 현재는 기술적 한계로 인해 시작 로직을 잠글 때 `About...` 상자의 `Startup Version` 필드는 `Undefined` 상태로 유지된다는 점에 유의해 주십시오. - -#### 이전 동작으로 되돌리기 - -변경 사항을 되돌리려면 환경 변수 설정을 해제하고 {% include product %} 데스크톱을 실행하면 됩니다. diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png deleted file mode 100644 index ca498058a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png deleted file mode 100644 index d78fb5e54..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png deleted file mode 100644 index b5c7a4db3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png deleted file mode 100644 index 5605c4c75..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png deleted file mode 100644 index 8ed2e62e8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png deleted file mode 100644 index 448481c19..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png deleted file mode 100644 index c514cd27a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png deleted file mode 100644 index d1f9eae4d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png deleted file mode 100644 index ec59b64e3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png deleted file mode 100644 index 6efa8f329..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png deleted file mode 100644 index 98adfc8e2..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png deleted file mode 100644 index 9ced133cc..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png deleted file mode 100644 index e009e70b2..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png deleted file mode 100644 index 22561d707..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png deleted file mode 100644 index c915dacd2..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png deleted file mode 100644 index 808a278b8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png deleted file mode 100644 index 6b4bd9077..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg deleted file mode 100644 index 3f4dfe5e8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png deleted file mode 100644 index d98433bc8..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png deleted file mode 100644 index ba4368ded..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png deleted file mode 100644 index 29e0b4b39..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png deleted file mode 100644 index 65c808c1a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png deleted file mode 100644 index fefa57947..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png deleted file mode 100644 index 1b9e1e304..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png deleted file mode 100644 index f16284def..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png deleted file mode 100644 index 952f90a7d..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png deleted file mode 100644 index 2897a7fab..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png deleted file mode 100644 index 019c69795..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png deleted file mode 100644 index 559aeb6b0..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png deleted file mode 100644 index 3f5a7b8c3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png deleted file mode 100644 index 71ed80357..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png deleted file mode 100644 index 8251f4994..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png deleted file mode 100644 index ef29b8b4a..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png deleted file mode 100644 index 86a4947ee..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png deleted file mode 100644 index 3344c8f4e..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png deleted file mode 100644 index 05b48a660..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png deleted file mode 100644 index f064cac14..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png deleted file mode 100644 index c075f8ab3..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png deleted file mode 100644 index ef8fffd20..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png deleted file mode 100644 index c3f3b7548..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png deleted file mode 100644 index b7922c8ca..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png deleted file mode 100644 index 7c7fe2179..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png deleted file mode 100644 index dfd39450f..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png deleted file mode 100644 index 36b8ad674..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png b/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png deleted file mode 100644 index 86845bb84..000000000 Binary files a/docs/ko/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png and /dev/null differ diff --git a/docs/ko/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md b/docs/ko/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md deleted file mode 100644 index 4beb82a0a..000000000 --- a/docs/ko/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md +++ /dev/null @@ -1,509 +0,0 @@ ---- -layout: default -title: 통합 사용자 안내서 -pagename: integrations-user-guide -lang: ko ---- - - -# 통합 사용자 안내서 - -이 안내서의 내용: -- [소개](#Introduction) -- [데스크톱 시작하기](#getting-started-with-desktop) - - [데스크톱 설치](#installation-of-desktop) - - [자체 호스팅되거나 프록시 서버 뒤에 있는 경우 로그인](#logging-in-when-self-hosted-or-behind-a-proxy-server) - - [인증 및 브라우저 통합](#authentication-and-browser-integration) - - [시스템 트레이](#the-system-tray) - - [프로젝트 브라우저](#the-project-browser) - - [명령 실행기](#the-command-launcher) - - [콘솔](#the-console) -- [응용프로그램 실행](#launching-applications) -- [패널](#the-panel) - - [개요](#overview) - - [UI 상세 정보](#ui-details) - - [액티비티 스트림](#the-activity-stream) - - [노트 생성 및 노트에 회신](#creating-and-replying-to-notes) - - [노트, 버전, 게시 및 태스크](#notes-versions-publishes-and-tasks) - - [정보 탭](#the-info-tab) - - [검색](#searching) - - [액션](#actions) - - [현재 작업 영역 및 내 영역](#the-current-work-area-and-the-me-area) - - [현재 작업 영역](#current-work-area) -- [Publisher](#the-publisher) - - [개요](#overview-1) - - [인터페이스 구성요소 및 개념](#interface-components-and-concepts) - - [기본 워크플로우 ](#basic-workflow) - - [컨텐츠 생성 소프트웨어 내에서 게시](#publishing-within-content-creation-software) - - [항목 및 태스크 게시](#publish-items-and-tasks) - - [컨텍스트](#context) - - [유효성 검사](#validation) - - [다중 문서 워크플로우](#multi-document-workflows) - - [독립 실행형 게시](#stand-alone-publishing) - - [게시 유형](#publish-types) - - [독립 실행형](#standalone) - - [3ds Max](#3ds-max) - - [Houdini](#houdini) - - [Maya](#maya) - - [Nuke](#nuke) - - [Nuke Studio](#nuke-studio) - - [Photoshop CC](#photoshop-cc) -- [로더](#the-loader) - - [개요](#overview-2) - - [트리 뷰](#the-tree-view) - - [탐색](#navigation) - - [게시 살펴보기](#looking-at-publishes) - - [하나 이상의 게시를 씬으로 가져오기](#bringing-one-or-multiple-publishes-into-your-scene) - - [이전 게시를 사용하는 작업](#working-with-older-publishes) - - [연관 리뷰](#associated-review) -- [고급 기능](#advanced-functionality) -- [감사의 인사](#acknowledgments) - -## 소개 - -{% include product %} 통합은 {% include product %}를 컨텐츠 생성 도구로 이용할 수 있도록 해 줍니다. {% include product %} 통합을 이용하면 간편하게 소프트웨어를 실행하고, 패널을 사용하여 {% include product %}의 태스크 관련 노트 및 데이터를 트래킹하고, Publisher 및 Loader를 통해 파일을 트래킹하고 이를 씬으로 가져올 수 있습니다. 아티스트는 앱 내에서 바로 태스크에 관한 모든 {% include product %} 데이터와 프로젝트의 모든 태스크에 액세스할 수 있습니다. 또한 노트에 회신하고, 버전을 재생하고, 파일을 게시하고, 동료가 게시한 파일에서 이를 로드할 수 있습니다. - -최신 {% include product %} 통합 업데이트를 받으려면 [릴리즈 정보](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)를 구독하십시오. - -## 데스크톱 시작하기 - -**{% include product %} 데스크톱** 앱은 이 통합의 심장에 해당합니다. {% include product %} 경험을 로컬 컴퓨터로 확장시켜 주는 소프트웨어 응용프로그램이며, 컴퓨터에서 바로 쉽게 {% include product %} 데이터에 액세스하고, 응용프로그램을 실행하고, 파이프라인 통합 도구를 실행할 수 있도록 해 줍니다. - -**툴킷 클래식 또는 커스텀 설정 실행?** - -{% include product %} 통합은 자동으로 설치됩니다. **클래식** 툴킷 구성을 설치하려는 앞선 고객이거나 **데스크톱 설정 마법사**를 통해 설치하려는 **커스텀** 툴킷 설정이 있는 경우에는 [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)에서 그 방법을 알아보십시오. - -### 데스크톱 설치 - -앱 메뉴에서 {% include product %} 데스크톱을 다운로드할 수 있습니다. - -![shotgun-desktop-app-01.png](./images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png) - -메시지에 따라 진행하면서 Mac용, Windows용, Linux용 데스크톱 중에서 어느 것을 다운로드할지 선택합니다. - -![download-desktop-02.png](./images/sa-integrations-user-guide-download-desktop-02-v2.png) - -### 자체 호스팅되거나 프록시 서버 뒤에 있는 경우 로그인 - -*참고: 로그인에 관한 다음 내용은 자체 호스팅되거나 프록시 서버를 사용하는 경우에 필요합니다. 이는 기본 동작이 아닙니다.* - -자체 호스팅되거나 프록시 서버를 사용하는 경우 처음 데스크톱을 열면 인증서에 관해 묻는 메시지가 브라우저에 표시됩니다. 이는 {% include product %}를 데스크톱 앱과 연결하기 위한 것입니다. 인증서 설정에 문제가 있다면 [Firefox](https://developer.shotgunsoftware.com/ko/d4936105/)와 [Chrome 및 기타 브라우저](https://developer.shotgunsoftware.com/ko/95518180/)에 관한 문제 해결 설명서를 참조하십시오. - -![guide-desktop-cert-window-03.png](./images/sa-integrations-user-guide-desktop-cert-window-03.png) - -보안 인증서 목록은 한 번만 업데이트하면 됩니다. Mac과 Windows에서만 인증서에 관한 메시지가 표시되고, Linux에서는 표시되지 않습니다. - -설정을 마치면 {% include product %} 사이트에 로그인해야 합니다. - -프록시를 이용하는 경우 추가 구성도 필요합니다. 추가 구성 방법은 [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/#toolkit-configuration-file)를 참조하십시오. - -#### 인증 및 브라우저 통합 - -데스크톱은 {% include product %} 웹 응용프로그램이 컴퓨터와 상호 작용할 수 있도록 해 주는 서비스를 제공합니다. 이를 통해 [로컬 파일 링크](https://help.autodesk.com/view/SGSUB/KOR/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html) 및 소프트웨어 실행 같은 기능을 이용할 수 있습니다. 보안을 위해 브라우저에서와 같은 {% include product %} 사이트에서 동일한 사용자로 데스크톱에 로그인해야 합니다. 다른 사용자로 또는 다른 사이트에서 데스크톱에 로그인하면 계정을 전환하라는 메시지가 표시되고, 계정을 전환하면 데스크톱이 다시 시작되고 해당 자격 증명을 묻는 메시지가 표시됩니다. - -### 시스템 트레이 - -응용프로그램을 시작하면 시스템 트레이에 아이콘이 나타납니다. 응용프로그램 창을 열려면 아이콘을 클릭하십시오. 기본적으로 창은 시스템 트레이에 고정되기 때문에 사용하지 않으면 자동으로 숨겨집니다. - -사용자 메뉴에서 "메뉴에서 고정 해제(Undock from Menu)"를 선택하거나 헤더를 드래그해서 창의 고정을 해제할 수 있습니다. 고정 해제된 창은 일반 창과 비슷하게 보이고, 사용하지 않더라도 더 이상 숨겨지지 않습니다. - -창이 고정 해제되면 닫기 버튼을 클릭해 숨길 수 있습니다. 다시 나타나게 하려면 시스템 트레이 아이콘을 클릭하면 됩니다. - -### 프로젝트 브라우저 - -앱의 첫 번째 메인 뷰는 프로젝트 브라우저입니다. 여기에서 {% include product %} 인스턴스의 모든 프로젝트를 볼 수 있습니다. 가장 최근에 액세스한 프로젝트가 첫 번째로 나열됩니다. - -창 오른쪽 아래 근처에는 {% include product %} 계정의 썸네일이 있습니다. 이는 사용자 메뉴로, 여기에서 창을 고정 및 고정 해제하고, 창을 다른 창 위에 고정하고, 로깅 콘솔을 표시하는 등의 작업이 가능합니다. - -![user-menu-04.png](./images/sa-integrations-user-guide-user-menu-04.png) - -창 위쪽에 있는 돋보기 아이콘을 클릭하면 검색란이 나타납니다. 이 검색란에 검색어를 입력하면 프로젝트 목록이 필터링되면서 입력한 검색어가 포함된 프로젝트만 표시됩니다. - -![search-05.png](./images/sa-integrations-user-guide-search-05.png) - -프로젝트를 클릭하면 해당 프로젝트의 명령 실행기 뷰로 이동하여, 해당 프로젝트에 사용할 수 있는 도구를 실행할 수 있습니다. - -### 명령 실행기 - -프로젝트를 선택하면 해당 프로젝트의 명령 실행기로 이동합니다. 이 창에는 해당 프로젝트에 사용할 수 있는 모든 도구 및 응용프로그램이 격자 모양으로 배치된 버튼으로 표시됩니다. 응용프로그램을 실행하려면 버튼을 클릭하기만 하면 됩니다. 그러면 프로젝트 전용 환경에서 응용프로그램이 실행되고, {% include product %}에 통합이 설정되어 있는 경우에는 사용 가능한 모든 도구가 나와 있는 {% include product %} 메뉴가 표시됩니다. - -### 콘솔 - -이 콘솔은 사용자 메뉴에서 실행할 수 있습니다. 프로젝트 실행과 관련한 로그가 여기에 표시됩니다. 오류가 발생하는 경우 오류 상세 정보가 여기에 표시되어야 합니다. - -콘솔을 마우스 오른쪽 버튼으로 클릭하면 표준 편집 메뉴가 표시되어 콘솔에서 모든 텍스트를 선택하고, 선택 사항을 복사하거나 텍스트를 지울 수 있습니다. - -![console-06.png](./images/sa-integrations-user-guide-console-06.png) - -## 응용프로그램 실행 - -{% include product %} 데스크톱을 실행하고 프로젝트를 선택하면 데스크톱이 사용 중인 운영 체제에 대한 표준 응용프로그램 디렉토리를 스캔합니다. 그리고 [해당하는 통합이 설정되어 있는 응용프로그램](https://www.shotgridsoftware.com/integrations/)의 시작 관리자를 표시합니다. 같은 소프트웨어의 버전이 여러 개인 경우 시작 관리자는 사용 가능한 모든 버전이 포함된 드롭다운 목록을 보여 줍니다. 시작 관리자 아이콘 자체를 클릭하면 최신 버전이 실행됩니다. - -Maya 및 Nuke 같은 응용프로그램은 {% include product %} 데스크톱에서 직접 실행해도 되고, {% include product %}에서 바로 실행해도 됩니다. 어떻게 실행하든 응용프로그램 내에서 {% include product %} 통합을 사용할 수 있습니다. - -![launching-software-07.jpg](./images/sa-integrations-user-guide-launching-software-07.jpg) - -스튜디오에는 보통 기본 제공되는 것 외에 추가 구성이 필요하기 마련입니다. 스튜디오의 소프트웨어가 표준이 아닌 위치에 있거나 스튜디오가 기본적으로 지원되지 않는 내부 엔진을 사용 중인 경우가 있을 수 있습니다. 이 경우에도 {% include product %} 웹 앱 내에서 바로 구성하기는 쉽습니다. 자세한 내용은 [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오. - -원하는 앱이 보이지 않으면 [관리자(Admin)의 {% include product %} 데스크톱에서 소프트웨어 구성 섹션](https://developer.shotgridsoftware.com/ko/8085533c/)을 참조하십시오. - -## 패널 - -### 개요 - -데스크톱 또는 {% include product %}에서 응용프로그램을 실행하면 {% include product %} 패널이 나타납니다. {% include product %} 패널은 작고 가벼운 버전의 {% include product %}로서 Maya 및 Nuke 같은 아티스트 응용프로그램 내에서 바로 실행됩니다. 이 패널을 이용하면 작업 중인 응용프로그램에서 나오지 않고도 {% include product %} 정보에 빠르게 액세스할 수 있습니다. 또한 현재 태스크에 관한 정보에 쉽게 액세스하고, {% include product %}에서 액티비티 스트림, 노트, 태스크, 버전 및 Publisher에 즉시 액세스할 수 있습니다. 다른 팀원이 리뷰를 위해 전송한 버전을 재생해 보고, 노트에 회신하고, 새 태스크를 생성하고, {% include product %} 사이트를 검색할 수도 있습니다. - -### UI 상세 정보 - -{% include product %} 패널은 다양한 기본 UI 요소들로 이루어져 있습니다. 맨 위에는 탐색 및 검색을 위한 버튼으로 이루어진 _도구막대_ 가 있습니다. 도구막대 오른쪽 아래에는 현재 보고 있는 항목에 관한 정보가 나와 있는 _상세 정보 영역_ 이 있습니다. 이 상세 정보 영역은 구성이 가능하기 때문에 커스텀 필드를 표시하고 싶다거나 파이프라인에서 특히 중요한 데이터가 있는 경우 이곳에 표시되도록 쉽게 구성할 수 있습니다. 끝으로 많은 _컨텐츠 탭_ 이 있습니다. 이 탭에는 모두 {% include product %} 데이터가 표시되며, 이를 통해 {% include product %} 패널을 쉽게 탐색하면서 게시 등의 항목을 빠르게 찾고, 버전을 리뷰하거나, 현재 선택한 항목에 링크되어 있는 태스크에 누가 할당되어 있는지 확인할 수 있습니다. - -![overview-08.png](./images/sa-integrations-user-guide-overview-08.png) - -통합이 고정 기능을 지원하는 응용프로그램에서는 {% include product %} 패널이 UI 내에 깔끔하게 고정된 상태로 나타납니다. 그 외의 응용프로그램에서는 보통의 창으로 표시됩니다. - -![maya-09.png](./images/sa-integrations-user-guide-maya-09.png) - -아래는 {% include product %} 패널에서 사용할 수 있는 다양한 탭과 기능을 간략히 요약한 내용입니다. - -#### 액티비티 스트림 - -![activity-stream-010.png](./images/sa-integrations-user-guide-activity-stream-010.png) - -액티비티 스트림은 {% include product %}의 액티비티 스트림과 유사하게 작동합니다. 다음과 같이 현재 표시된 객체와 관련하여 일어나는 일들을 모두 보여 줍니다. - -* 노트를 작성하는 사용자 -* 리뷰를 위해 제출되는 버전 -* 파이프라인에 의해 생성되는 게시 - -액티비티 스트림에서 바로 새 노트를 추가하거나 기존 노트에 회신할 수 있습니다. 첨부 파일은 자동으로 표시되고, 이 파일을 클릭하면 큰 미리보기로 표시됩니다. - -이 파일을 업로드한 후 자리 표시자 아이콘을 볼 수 있습니다. 패널을 수동으로 새로 고치면 최종 썸네일을 표시하여 사용할 수 있습니다. - -![thumbnail-placeholder-11.png](./images/sa-integrations-user-guide-thumbnail-placeholder-11.png) - -#### 노트 생성 및 노트에 회신 - -![notes-12.png](./images/sa-integrations-user-guide-notes-12.png) - -{% include product %} 패널에서 노트를 생성하거나 노트에 회신하는 일은 간단합니다. 액티비티 스트림 또는 노트 상세 정보 페이지로 이동한 다음 _노트 생성(create note)_ 또는 _노트에 회신(reply to note)_ 을 클릭하면 됩니다. 그러면 노트 텍스트를 입력할 수 있는 대화상자가 나타납니다. 노트를 특정인에게 전송하고 싶다면 `@name` 표기법을 사용하면 됩니다. 그러면 그 사람이 노트의 받는 사람 필드에 자동으로 추가됩니다. - -#### 노트, 버전, 게시 및 태스크 - -![tasks-and-versions-13.png](./images/sa-integrations-user-guide-tasks-and-versions-13.png) - -노트(Notes), 버전(Versions), 게시(Publishes) 및 태스크(Tasks) 탭은 모두 같은 방식으로 작동하여, 현재 사용자가 보고 있는 항목과 연관된 데이터를 표시합니다. 원하는 항목을 두 번 클릭하면 해당 항목을 집중해서 보여 줍니다. _Publish_ 로 이동했다면 해당 게시에 대한 종속성을 볼 수 있는데, 이는 파이프라인이 종속성 정보를 트래킹하는 경우 유용한 기능으로 에셋이 상호 연결되어 있는 방식을 즉시 파악할 수 있도록 해 줍니다. - -#### 정보 탭 - -![info-14.png](./images/sa-integrations-user-guide-info-14.png) - -다른 탭에서 원하는 정보를 찾지 못한 경우 정보(Info) 탭으로 이동해 보십시오. 이 탭에는 해당 엔티티에 대한 대부분의 {% include product %} 필드가 나와 있으며, 파란색 하이퍼링크를 클릭하여 다른 {% include product %} 위치로 이동할 수도 있습니다. - -#### 검색 - -![search2-15.png](./images/sa-integrations-user-guide-search2-15.png) - -{% include product %}에서 다른 위치 또는 다른 객체로 빠르게 이동하고 싶다면 기본 제공되는 검색 기능을 이용하면 됩니다. 이는 {% include product %} 웹 응용프로그램의 전역 검색 기능과 유사합니다. 찾고 싶은 항목의 이름이나 설명을 입력하기 시작하여 세 자 이상 입력하면 결과가 표시됩니다. - -#### 액션 - -![actions-16.png](./images/sa-integrations-user-guide-actions-16.png) - -{% include product %} 패널을 통해 {% include product %} 데이터를 이용하여 씬에서 작업을 실행할 수도 있습니다. 로더와 마찬가지로 패널에도 메뉴에 의해 트리거되는 코드 조각을 브라우저의 항목에 쉽게 등록할 수 있도록 해 주는 액션 시스템이 있습니다. 상세 정보 영역과 목록에서 액션에 액세스할 수 있습니다. 상세 정보 영역의 액션 버튼에는 {% include product %}로 빠르게 이동하거나 현재 뷰를 새로 고침하는 등 몇 가지 편리한 기본 제공 기능도 포함되어 있습니다. - -#### 현재 작업 영역 및 내 영역 - -![work-home-17.png](./images/sa-integrations-user-guide-work-home-17.png) - -왼쪽 위에 있는 아이콘을 클릭하면 현재 작업 영역으로 이동합니다. 이 영역은 주로 현재 작업 중인 태스크이며, 여기에서 빠르게 노트에 액세스하고, 버전을 리뷰하고, 현재 작업 중인 항목과 관련한 기타 정보를 확인할 수 있습니다. 이곳은 {% include product %} 패널이 항상 처음으로 포커스를 두는 위치이기도 합니다. - -오른쪽 위에는 현재 사용자의 썸네일이 표시되는 버튼이 있습니다. 이 버튼을 클릭하면 현재 사용자와 관련된 정보를 보여 주는 페이지로 이동합니다. 여기에는 다음 정보가 포함됩니다. - -* 사용자가 제출한 모든 게시 및 버전 -* 사용자에게 할당된 태스크 -* 사용자가 참여하고 있거나 노트가 사용자와 연관되어 있는 모든 노트 대화(예: 사용자에게 할당된 태스크와 연관된 노트) - -#### 현재 작업 영역 - -태스크에 대한 작업을 시작할 때 패널을 사용하여 현재 작업 영역을 설정할 수 있습니다. 그러면 작업을 게시할 때 이 영역이 {% include product %}의 현재 태스크와 연결됩니다. - -## Publisher - -### 개요 - -아티스트는 Publish 앱을 통해 아티스트 다운스트림에서 사용할 수 있도록 작업물을 게시할 수 있습니다. 아티스트의 컨텐츠 생성 소프트웨어 내에서 기존 게시 워크플로우를 지원하고 디스크상의 파일을 독립 실행형으로 게시할 수 있습니다. 컨텐츠 생성 소프트웨어에서 작업하거나 기본 {% include product %} 통합을 사용하여 작업할 때 이 앱은 아티스트가 게시할 수 있는 항목을 자동으로 검색해 표시해 줍니다. 보다 정교한 프로덕션이 필요한 경우 스튜디오는 커스텀 게시 플러그인을 작성하여 아티스트 워크플로우를 진행할 수 있습니다. - -다음 섹션에서는 Publisher UI 및 기본 통합 워크플로우를 다룹니다. 스튜디오의 특정 요구 사항에 맞게 Publisher를 커스터마이즈하는 방법은 [Publisher Dev 안내서](http://developer.shotgridsoftware.com/tk-multi-publish2/)를 참조하십시오. - -### 인터페이스 구성요소 및 개념 - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -로컬 파일 시스템 어디에서든 파일을 드래그 앤 드롭합니다. 찾아보기(Browse) 버튼을 사용하여 파일 브라우저를 열고 게시할 파일을 하나 이상 선택합니다. - -![main-view-19.png](./images/sa-integrations-user-guide-main-view-19.png) - -왼쪽의 항목 트리가 게시되는 항목을 보여 줍니다. 최고 레벨 항목들에는 작업 파일 내에서 생성된 렌더나 캐시 등 관련된 하위 항목이 포함될 수 있습니다. 각 항목 아래에는 게시할 때 수행되는 액션을 나타내는 하나 이상의 게시 태스크가 있습니다. - -![items-tree-20.png](./images/sa-integrations-user-guide-items-tree-20.png) - -항목 자체는 게시된 파일이 연결되는 {% include product %} 컨텍스트를 나타내는 컨텍스트 헤더 아래에 그룹화됩니다. - -최고 레벨 항목이 둘 이상인 경우에는 게시하는 항목과 실행할 액션을 전체적으로 보여 주는 요약 항목이 존재합니다. - -![selection-detail-21.png](./images/sa-integrations-user-guide-selection-detail-21.png) - -항목을 선택하면 인터페이스 오른쪽에 항목의 상세 정보가 표시됩니다. 상세 정보에는 대상 컨텍스트뿐 아니라 게시의 썸네일과 설명도 포함됩니다. 해당 항목과 하위 항목에 대한 요약도 포함될 수 있습니다. - -![buttons-and-status-22.png](./images/sa-integrations-user-guide-buttons-and-status-22.png) - -인터페이스 아래쪽을 보면 왼쪽에 일련의 도구 버튼이 있습니다. 다음과 같은 버튼이 있습니다. - -* **찾아보기(Browse)**: 게시할 파일을 찾습니다 -* **새로 고침(Refresh)**: 게시 항목 목록을 새로 고칩니다 -* **삭제(Delete)**: 선택한 항목을 목록에서 제거합니다 -* **확장(Expand)**: 목록의 모든 항목을 확장합니다 -* **축소(Collapse)**: 목록의 모든 항목을 축소합니다 -* **설명서(Documentation)**: 워크플로우 설명서를 엽니다 - -가운데는 상태 레이블입니다. 이 레이블은 게시자가 유효성 확인을 수행하고 게시 태스크를 실행하면 업데이트됩니다. 클릭하면 진행 상세 정보가 오버레이로 표시됩니다. - -맨 오른쪽에는 **확인(Validate)** 및 **게시(Publish)** 버튼이 있습니다. 확인(Validate) 버튼을 클릭하면 모든 항목과 태스크에 대한 초기 유효성 확인을 실행하여 모두 게시 가능한 상태인지 확인합니다. 게시(Publish) 버튼을 클릭하면 목록에 있는 항목의 게시가 시작됩니다. - -![progress-details-23.png](./images/sa-integrations-user-guide-progress-details-23.png) - -진행 상세 정보 오버레이에는 목록 내 항목의 수집, 유효성 확인 및 게시 결과가 표시됩니다. - -클립보드에 복사(Copy to Clipboard) 버튼을 이용하면 게시 로그를 쉽게 공유할 수 있습니다. 유효성 확인 또는 게시 오류가 발생하면 로그 메시지에 액션 버튼이 포함될 수 있으며, 이 버튼을 클릭하면 추가 정보, 그리고 때로는 즉시 해결 방법까지 확인할 수 있습니다. - -### 기본 워크플로우 - -아티스트가 자신의 작업물을 다른 아티스트들도 사용할 수 있도록 만드는 것, 그것을 가능하게 해 주는 것이 Publish 앱의 목적입니다. {% include product %}에서 파일을 게시한다는 것은 곧 게시되는 파일에 관한 정보(경로, 버전 번호, 아티스트 정보, 관련 {% include product %} 컨텍스트 등)가 담긴 레코드를 {% include product %}에 생성하는 것을 의미합니다. 파일이 {% include product %}에서 트래킹되고 나면 다른 사용자들도 [Loader](#the-loader) 앱을 통해 이 파일을 사용할 수 있습니다. - -기본 {% include product %} 통합은 파이프라인에서 Publish 앱을 사용할 수 있는 두 가지 방법, 독립적으로 게시하는 방법과 컨텐츠 생성 소프트웨어 내에서 게시하는 방법을 제공합니다. 다음 섹션은 각 시나리오의 워크플로우를 설명한 것입니다. - -#### 컨텐츠 생성 소프트웨어 내에서 게시 - -기본 {% include product %} 통합은 3dsMax, Houdini, Maya, Nuke, Nuke Studio, Photoshop 같은 컨텐츠 생성 소프트웨어를 위한 게시 워크플로우를 지원합니다. 컨텐츠 생성 소프트웨어를 통해 실행되는 게시자는 자동으로 게시할 항목을 찾습니다. 게시할 수 있는 항목은 소프트웨어, 그리고 아티스트의 작업 파일 컨텐츠에 따라 조금씩 다르지만 게시에 대한 기본적인 컨셉은 동일합니다. 다음은 Nuke에서 게시하는 경우를 예로 든 것입니다. - -![publish-in-dcc-24.png](./images/sa-integrations-user-guide-publish-in-dcc-24.png) - -#### 항목 및 태스크 게시 - -왼쪽에 수집된 게시 항목들이 있습니다. 게시 항목은 세 가지로, 선택한 항목은 그 아래 하위 항목이 두 가지 있는 작업 파일 자체입니다. 또한, 이미지 파일 시퀀스와 Alembic 캐시도 있습니다. 이 항목들은 각각 **{% include product %}에 게시(Publish to Shotgun)** 게시 태스크가 첨부되어 있어, 이를 실행하면 개별 파일 또는 이미지 시퀀스를 트래킹할 수 있도록 {% include product %}에 게시 항목을 생성하는 작업이 진행됩니다. - -Nuke 스크립트를 나타내는 상위 항목에는 **파일 버전 지정 시작(Begin file versioning)** 플러그인이 부착되어 있습니다. 이 플러그인은 작업 파일의 경로에 버전 번호가 없는 경우 나타납니다. 이 체크박스를 선택하면 이 태스크를 통해 게시 전 파일 이름에 버전 번호가 삽입됩니다. 이 경우에는 파일 이름이 `bunny_010_0010.nk`에서 `bunny_010_0010.v001.nk`로 바뀝니다. 이렇게 하면 아티스트 작업 파일의 내역을 기록할 수 있습니다. 기본적으로 이 태스크는 선택되어 있지 않고, 반드시 실행할 필요도 없습니다. 이 태스크를 활성화한 상태로 항목을 게시하고 나면 다음에 해당 작업 파일을 게시할 때에는 파일 이름에 버전 번호가 이미 있기 때문에 이 태스크가 표시되지 않습니다. - -게시 태스크는 원하는 대로 켜거나 끌 수 있습니다. 항목의 체크박스는 하위 태스크의 선택 상태를 반영하고 제어합니다. 예를 들어, 항목을 선택 취소하면 그 태스크도 모두 선택 취소됩니다. 여러 태스크 중 하나를 선택 취소하면 항목이 반만 선택한 상태가 됩니다. 특정 유형의 태스크 모두(예: **{% include product %}에 게시(Publish to Shotgun)** 태스크 모두)의 선택 상태를 토글하려면 체크박스를 선택할 때 `Shift` 키를 누른 채로 선택하면 됩니다. - -게시 태스크를 선택하면 해당 태스크에 관한 정보가 표시됩니다. - -![items-and-tasks-25.png](./images/sa-integrations-user-guide-items-and-tasks-25.png) - -##### 컨텍스트 - -위의 Nuke 스크립트 항목의 경우, 게시된 항목이 {% include product %}에서 연결되는 컨텍스트의 이름을 볼 수 있습니다. 이 이름은 인터페이스 오른쪽의 태스크(Task) 및/또는 링크(Link) 필드를 변경하여 수정할 수 있습니다. 여러 항목을 게시하는 경우에는 서로 다른 컨텍스트에 표시될 수도 있습니다. 게시 항목 왼쪽에 가로줄이 세 개 있는 아이콘은 한 컨텍스트에서 다른 컨텍스트로 항목을 옮기기 위한 드래그 핸들입니다. - -태스크(Task) 항목 필드 옆에는 메뉴 드롭다운 버튼도 있습니다. 이 메뉴를 클릭하면 사용자와 관련이 있을 수 있는 여러 태스크 그룹이 나타날 수 있습니다. 여기에는 현재 사용자에게 할당된 태스크, 현재 컨텍스트에 관련된 태스크(같은 샷에 할당된 다른 태스크 등), 최근에 찾아본 태스크가 표시됩니다. - -![context-menu-26.png](./images/sa-integrations-user-guide-context-menu-26.png) - -태스크 또는 엔티티 링크를 검색하려면 필드 중 하나를 클릭하거나 검색 아이콘을 클릭하고 원하는 컨텍스트 이름을 입력하면 됩니다. 이 필드에 일치하는 태스크 또는 엔티티 링크가 표시되면 이를 클릭하거나 원하는 컨텍스트로 이동할 수 있습니다. - -![search-27.png](./images/sa-integrations-user-guide-context-search-27.png) - -![thumbnail-and-desc-28.png](./images/sa-integrations-user-guide-thumbnail-and-desc-28.png) - -각 게시 항목마다 카메라 아이콘을 클릭하면 화면 일부를 선택해 {% include product %}에서 해당 게시의 썸네일로 사용할 수 있습니다. 하위 항목이 있는 경우에는 기본적으로 상위 항목의 썸네일을 상속합니다. 하위 항목의 썸네일은 하위 항목을 선택하고 썸네일을 클릭해서 재정의할 수 있습니다. - -입력한 설명은 {% include product %}의 게시 데이터에 포함됩니다. 썸네일과 마찬가지로 설명도 상위 항목에게서 상속되지만 하위 항목의 상세 정보 항목에 새로운 설명을 입력해 재정의할 수 있습니다. - -##### 유효성 확인 - -항목을 게시할 준비가 되면 확인(Validate) 버튼을 클릭해 파일 및 게시 항목의 상태가 게시가 원하는 대로 완료될 수 있는 상태인지 확인할 수 있습니다. - -![validation-29.png](./images/sa-integrations-user-guide-validation-29.png) - -모든 항목이 이상 없는 것으로 확인되면 오른쪽에 초록색 체크 표시가 나타납니다. 확인을 통과하지 못한 항목에는 경고 아이콘이 나타납니다. - -![validation-warning-30.png](./images/sa-integrations-user-guide-validation-warning-30.png) - -이 상태는 Publisher 아래쪽에 있는 상태 레이블 영역에도 표시됩니다. - -![status-warning-31.png](./images/sa-integrations-user-guide-status-warning-31.png) - -항목의 아이콘 또는 상태 레이블을 클릭하면 진행 상황 상세 정보 오버레이가 열리고, 유효성 확인 문제가 강조 표시됩니다. - -![warning-details-32.png](./images/sa-integrations-user-guide-warning-details-32.png) - -위 예에서는 Nuke 스크립트가 저장되지 않았습니다. 간혹 문제 해결 방법을 빠르게 알려주거나 문제에 관한 자세한 정보를 제공하는 액션 버튼이 제공됩니다. 여기에서는 Nuke 저장 대화상자가 열리는 **다른 이름으로 저장...(Save As...)** 액션 버튼이 보입니다. - -유효성 확인 문제가 모두 해결되면 진행 상황 상세 정보 오버레이를 닫고 게시 항목 뷰로 돌아갈 수 있습니다. 유효성 확인은 게시 태스크 경고 또는 오류를 해결하는 동안 필요한 만큼 얼마든지 실행할 수 있습니다. - -**게시(Publish)** 버튼을 누르면 앱이 목록의 항목과 태스크를 살펴보면서 다시 하나씩 유효성 확인을 실행한 다음, 게시 로직을 실행하여 {% include product %}에 항목을 생성하고, 썸네일을 업로드하고, 작업 파일 버전을 수정하는 등의 작업을 처리합니다. 각 항목에 대한 게시를 요약하고 필요한 정리 작업을 수행하기 위한 최종 확인도 실행됩니다. - -![publish-complete-33.png](./images/sa-integrations-user-guide-publish-complete-33.png) - -전체 프로세스의 결과는 나중에 Publisher 아래쪽에 있는 상태 레이블을 클릭해 진행 상황 상세 정보 오버레이를 열어 검토할 수 있습니다. 게시하는 동안 진행 상황 상세 정보 뷰를 열어둔 채로 게시 결과를 살펴볼 수도 있습니다. 여기에서는 {% include product %}에 새로 생성된 게시 항목으로 빠르게 이동하기 위한 추가 액션 버튼도 볼 수 있습니다. - -##### 다중 문서 워크플로우 - -Photoshop 또는 Nuke Studio 같은 컨텐츠 생성 소프트웨어에서 이루어지는 다중 문서 워크플로우의 경우 게시 항목 목록에 최고 레벨 항목이 여러 개 표시됩니다. - -![multi-doc-34.png](./images/sa-integrations-user-guide-multi-doc-34.png) - -그 중에서 현재/활성 문서만 확장 및 선택된 상태로 표시됩니다. 게시할 모든 문서를 선택하려면 `Shift` 키를 누른 채로 선택 취소된 항목의 체크박스 하나를 클릭하십시오. 축소된 항목을 확장하려면 아래쪽 도구막대에 있는 확장 버튼을 사용합니다. - -최고 레벨 항목이 여러 개인 경우에는 목록 맨 위에 요약 항목도 포함됩니다. - -![summary-35.png](./images/sa-integrations-user-guide-summary-35.png) - -이 항목을 선택하면 게시를 위해 선택한 모든 항목의 전체 요약이 표시됩니다. 위에서는 서로 다른 네 가지 컨텍스트에서 총 여덟 개 태스크가 실행될 네 개 항목을 볼 수 있습니다. 원한다면 이 뷰에서 모든 항목의 컨텍스트와 설명을 재정의할 수 있습니다. - -위 이미지에서는 **리뷰용 업로드(Upload for review)** 태스크도 볼 수 있습니다. 이 태스크는 Photoshop 워크플로우로 한정되지 않습니다. 리뷰 가능한 미디어로 트랜스코딩하여 {% include product %}에 업로드할 수 있는 모든 파일 유형에 대해 가능한 태스크입니다. - -#### 독립 실행형 게시 - -Publish 앱을 꼭 컨텐츠 생성 소프트웨어 내에서 실행할 필요는 없습니다. - -![desktop-launch-36.png](./images/sa-integrations-user-guide-desktop-launch-36.png) - -여기에서는 Publisher를 {% include product %} 데스크톱에서 직접 실행할 수 있음을 알 수 있습니다. 독립 실행형 모드에서 앱을 실행하면 파일을 찾아보거나 드래그 앤 드롭할 수 있는 영역이 나타납니다. - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -찾아보기(Browse) 버튼을 클릭하면 게시할 파일을 선택할 수 있는 표준 파일 브라우저가 열립니다. - -브라우저에서 파일을 선택하거나 파일 시스템에서 드래그 앤 드롭하고 나면 앱이 해당 파일을 게시할 최고 레벨 항목으로 보여 줍니다. - -![collected-drop-38.png](./images/sa-integrations-user-guide-collected-drop-38.png) - -이전 예에서와 마찬가지로 각 항목의 컨텍스트를 선택하고, 설명을 설정하고, 게시 시 실행되어야 하는 태스크를 식별할 수 있습니다. - -#### 게시 유형 - -다음 섹션에서는 각각의 기본 {% include product %} 통합에 대해 자동으로 수집되는 게시 유형을 설명합니다. - -##### 독립 실행형 - -독립 실행형 워크플로우는 게시를 위한 파일을 자동으로 수집하지 않습니다. 대신 사용자가 인터페이스로 파일 경로를 드래그하거나 게시할 파일을 찾아야 합니다. 게시자는 **게시(Publish)** 버튼을 클릭하기 전까지는 사용자가 찾거나 드롭한 파일을 언제든 수용합니다. 기본 통합에서는 {% include product %} 게시 유형과 연결되는 것으로 알려진 파일 유형을 사용하는 모든 파일 확장자를 사용할 수 있습니다. 파일 확장자가 인식되지 않으면 파일의 MIME 유형이 사용됩니다. 인식된 이미지 및 동영상 MIME 유형은 게시 가능하며, 리뷰용 업로드에 부착된 태스크가 있습니다. - -기본 통합은 드롭된 폴더에 이미지 시퀀스가 포함되어 있다고 가정합니다. 폴더에서 발견되는 인식된 모든 이미지 시퀀스는 게시 항목으로 표시됩니다. 발견된 시퀀스가 없다면 게시를 위한 항목이 생성되지 않습니다. - -##### 3ds Max - -현재 Max 세션은 로더를 통해 다른 Max 세션으로 병합 또는 참조될 수 있는 **3dsmax 씬**의 게시 유형으로 게시를 위해 수집됩니다. - -현재 세션에 대한 프로젝트 폴더를 지정할 수 있다면 그 프로젝트의 **export** 폴더에 있는 모든 파일이 게시 항목으로 표시되고, 마찬가지로 프로젝트의 **preview** 폴더에 있는 모든 영상 파일도 게시할 수 있게 됩니다. - -##### Houdini - -현재 Houdini 세션은 로더를 통해 다른 Houdini 세션으로 병합될 수 있는 **Houdini 씬**의 게시 유형으로 게시를 위해 수집됩니다. - -다음 유형의 노드에서 디스크로 작성된 모든 파일 역시 게시 항목으로 자동 수집 및 표시됩니다. - -* **alembic** -* **comp** -* **ifd** -* **opengl** -* **wren** - -##### Maya - -현재 Maya 세션은 로더를 통해 다른 Maya 세션으로 가져오거나 참조될 수 있는 **Maya 씬**의 게시 유형으로 게시를 위해 수집됩니다. - -현재 세션에 대한 프로젝트 루트를 지정할 수 있다면 그 프로젝트의 **cache/Alembic** 폴더에 있는 모든 Alembic 파일이 게시 항목으로 표시되고, 마찬가지로 프로젝트의 **movies** 폴더에 있는 모든 영상 파일도 게시할 수 있게 됩니다. - -##### Nuke - -현재 Nuke 세션은 로더를 통해 다른 Nuke 세션으로 가져오거나 새 세션으로 열 수 있는 **Nuke 스크립트** 게시 유형으로 게시를 위해 수집됩니다. - -다음 유형의 노드에서 디스크로 작성된 모든 파일 역시 게시 항목으로 자동 수집 및 표시됩니다. - -* **Write** -* **WriteGeo** - -##### Nuke Studio - -열려 있는 Nuke Studio 프로젝트는 다른 Nuke Studio 세션에서 로더를 통해 새 프로젝트로 열 수 있는 **NukeStudio 프로젝트** 게시 유형으로 게시를 위해 수집됩니다. - -##### Photoshop CC - -열려 있는 Photoshop 문서는 다른 Photoshop 세션에서 로더를 통해 새 레이어로 로드하거나 새 문서로 열 수 있는 **Photoshop 이미지** 게시 유형으로 게시를 위해 수집됩니다. - -## 로더 - -{% include product %} Loader를 사용하면 {% include product %}에 게시한 파일을 신속하게 확인하고 탐색할 수 있습니다. 검색 가능한 트리 뷰 네비게이션 시스템 덕분에 원하는 태스크, 샷 또는 에셋을 빠르고 쉽게 찾을 수 있고, 찾고 나면 로더가 해당 항목의 모든 게시에 대한 개요를 기반으로 썸네일을 보여 줍니다. 그러면 구성 가능한 후크를 통해 쉽게 게시를 참조하거나 현재 씬으로 가져올 수 있습니다. - -게시는 {% include product %}의 레코드로, 각각 디스크의 파일 또는 파일의 시퀀스(예: 이미지 시퀀스)를 나타냅니다. 게시는 모든 응용프로그램을 통해 생성할 수 있지만 보통 게시자를 통해 생성합니다. - -게시를 생성하고 나면 파이프라인의 다른 사람이 로드할 수 있는데 바로 여기에서 로더가 등장합니다. Loader를 사용하면 파일 시스템 브라우저와 비슷한 방식으로 {% include product %} 내에 저장되어 있는 게시를 찾을 수 있습니다. - -### 개요 - -Loader 앱을 사용하면 {% include product %}에 게시된 파일을 빠르게 찾을 수 있습니다. 이 앱은 검색 가능한 트리 뷰 네비게이션 시스템을 갖추고 있어 태스크, 샷 또는 에셋의 썸네일을 쉽게 확인할 수 있습니다. - -![overview2-39.png](./images/sa-integrations-user-guide-overview2-39.png) - -### 트리 뷰 - -왼쪽의 트리 뷰를 사용하여 원하는 샷, 에셋 또는 태스크를 빠르게 찾을 수 있습니다. 찾고 있는 항목의 이름을 알고 있는 경우 검색란에 입력하면 검색어와 일치하는 항목만 트리에 표시됩니다. - -![search3-40.png](./images/sa-integrations-user-guide-search3-40.png) - -검색어를 입력하기 시작하면 더 이상 전체 트리를 보는 것이 아님을 나타내는 파란색 막대가 트리 주변에 나타나고, 검색어를 기반으로 트리에 해당 항목의 하위 세트만 표시됩니다. 검색을 시작하면 트리의 모든 노드가 자동으로 확장됩니다. 트리를 마우스 오른쪽 버튼으로 클릭하면 트리의 모든 노드를 간편하게 확장 또는 축소할 수 있는 옵션이 나타납니다. - -### 탐색 - -트리 뷰 맨 위에는 세 가지 탐색 버튼이 있습니다. - -![buttons-41.png](./images/sa-integrations-user-guide-buttons-41.png) - -홈 버튼을 클릭하면 로더가 현재 작업 영역을 나타내는 샷 또는 에셋으로 자동으로 이동합니다. 현재 진행 중인 작업과 관련된 무언가를 빠르게 로드하고 싶을 때 유용한 기능입니다. 이 화면은 시작 시 로더가 기본적으로 표시하는 위치이기도 합니다. 트리 뷰에서 다른 항목을 선택하면 점점 내역이 생성됩니다. 내역은 브라우저처럼 뒤로 및 앞으로 버튼을 사용하여 탐색할 수 있습니다. - -### 게시 살펴보기 - -트리에서 항목을 선택하면 UI 가운데의 게시 영역에 사용 가능한 게시가 표시됩니다. 이 뷰의 각 항목은 게시 스트림 내 최신 항목을 나타냅니다. 예를 들어, 텍스처 버전 15를 보게 된다면 이는 해당 항목의 버전 내역에 이전 버전이 14개 있다는 의미입니다. - -게시뿐 아니라 샷, 시퀀스, 에셋 또는 기타 {% include product %} 엔티티 유형을 나타내는 폴더 아이콘도 표시됩니다. 객체의 썸네일이 있는 경우 이 썸네일은 빠른 시각적 탐색을 위해 폴더 위에 겹쳐서 표시됩니다. 계층에서 폴더를 두 번 클릭하면 해당 폴더를 자세히 탐색합니다. - -![thumb-view-42.png](./images/sa-integrations-user-guide-thumb-view-42.png) - -뷰 모드는 두 가지입니다. 썸네일 모드는 시각적으로 찾아볼 때(예: 텍스처를 찾아볼 때) 아주 유용합니다. 목록을 빠르게 훑어보고, 줌 핸들을 사용해 빠르게 확대 및 축소할 수 있습니다. - -![list-view-43.png](./images/sa-integrations-user-guide-list-view-43.png) - -Nuke 스크립트나 Maya 파일처럼 텍스처보다 덜 시각적인 항목을 찾아보는 경우에는 썸네일 뷰 대신 목록 뷰를 사용하면 됩니다. 이 모드는 보다 많은 정보를 제공하고, 보다 콤팩트한 형태이기 때문에 많은 항목을 스크롤하면서 빠르게 살펴보기에 좋습니다. - -특정 유형의 항목만 보고 싶다면 왼쪽 아래에 있는 _필터 패널_ 을 사용해 게시를 빠르게 숨기거나 표시하면 됩니다. 목록의 각 유형 옆에는 요약 정보도 나와 있는데, 현재 선택한 트리 항목에 대해 각 유형별로 몇 개의 게시를 찾았는지 알려줍니다. - -### 하나 이상의 게시를 씬으로 가져오기 - -한 항목을 씬으로 가져오려는 경우 해당 항목을 두 번 클릭하면 로더가 게시를 위한 _기본 액션_ 을 실행합니다. 항목을 씬으로 추가(예: Maya에서 다른 Maya 파일을 참조하거나 씬으로 가져오려는 경우)하는 방법이 둘 이상일 수도 있는데, 이 경우에는 _액션(Actions)_ 드롭다운 메뉴를 클릭하거나 게시에서 아무 곳이나 마우스 오른쪽 버튼으로 클릭하면 사용 가능한 모든 옵션이 나타납니다. - -여러 항목을 씬으로 가져오려는 경우에는 여러 항목을 선택하고 선택 모음에서 아무 항목이나 마우스 오른쪽 버튼으로 클릭하면 _액션(Actions)_ 팝업 메뉴가 나타납니다. 선택 모음의 모든 항목에 적용할 수 있는 액션만 표시됩니다. - -![actions2-44.png](./images/sa-integrations-user-guide-actions2-44.png) - -게시 대신 샷 또는 에셋 폴더 객체를 선택하는 경우에는 해당 항목을 {% include product %} 또는 파일 시스템에 표시하기 위한 옵션이 표시됩니다. - -### 이전 게시를 사용하는 작업 - -오른쪽의 상세 정보 창을 열면 선택한 게시의 모든 버전 내역을 볼 수 있습니다. 여기에서 이전 버전을 로드할 수 있습니다. 이전 버전을 로드하려면 메인 뷰의 게시와 마찬가지로 버전 내역에서 해당 버전을 선택하고 액션 메뉴를 사용하여 로드하면 됩니다. - -### 연관 리뷰 - -게시에 연관 리뷰 버전이 있는 경우 상세 정보 창에 재생 버튼이 표시됩니다. 이 버튼을 클릭하면 웹 페이지에서 Screening Room을 실행되어 빠르게 노트를 확인하거나 버전에 노트를 추가할 수 있고, 연관 리뷰 Quicktime을 재생할 수도 있습니다. - -![screening-room-45.png](./images/sa-integrations-user-guide-screening-room-45.png) - -## 고급 기능 - -{% include product %}의 모든 통합은 툴킷이라는 파이프라인 생성을 위한 커스터마이즈 범위가 넓고 확장성이 뛰어난 플랫폼에서 생성됩니다. 이 기능에 액세스하고 구성하는 자세한 방법은 [관리자 안내서](https://developer.shotgridsoftware.com/ko/8085533c/)를 참조하십시오. - -## 감사의 인사 - -* PySide의 버그 픽스 버전은 {% include product %} 데스크톱을 통해 배포되며, [여기](http://www.autodesk.com/content/dam/autodesk/www/Company/files/PySide-1.2.2.sgtk.zip)에서 얻을 수 있습니다. -* Big Buck Bunny - footage 제공: (CC) Blender Foundation, www.blender.org - -이 특별 마크업(TANK_NO_HEADER)을 추가해 헤더가 없어도 된다고 문서 생성 시스템에 알리십시오 diff --git a/docs/ko/reference/python-api-intro.md b/docs/ko/reference/python-api-intro.md deleted file mode 100644 index 9e7662847..000000000 --- a/docs/ko/reference/python-api-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Python API -pagename: python-api-intro -lang: ko ---- - -# Python API - -여기에서는 Python API에 대한 참조 문서를 찾을 수 있습니다. \ No newline at end of file diff --git a/docs/ko/shotgun.md b/docs/ko/shotgun.md deleted file mode 100644 index ff696c32e..000000000 --- a/docs/ko/shotgun.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 개요 -pagename: shotgun-index -lang: ko ---- - -# {% include product %} 개발 - -프로덕션을 관리하려면 시시각각으로 변동되는 모든 요소를 동기화 상태로 유지하기 위해 많은 작업을 수행해야 합니다. - -{% include product %} REST API 또는 Python API를 이용해 데이터에 직접 연결하고 이벤트 트리거 프레임워크를 이용해 반복적인 작업을 자동화하고 액션 메뉴 항목을 이용해 {% include product %}의 웹 인터페이스에서 직접 앱을 실행하십시오. - -귀하 또는 귀하가 권한을 제공한 사용자가 사용하는 서비스에서 작동하거나 해당 서비스와 함께 작동하는 자체 서비스, 응용프로그램, 모듈 및 구성요소를 개발할 때 {% include product %} API를 사용할 수 있습니다. - -{% include warning title="인증 키" content="사용자가 로그온하지 않고 서비스 또는 해당 기능에 액세스할 수 있는 인증 키 또는 기타 수단을 포함하는 API 정보를 공개하지 마십시오. 또한 귀하가 권한을 제공한 사용자가 공개하는 것도 허용하지 마십시오. 또는 귀하가 직접 API를 사용하여 액세스하거나 사용자들이 로그온하지 않고 서비스 또는 해당 기능에 액세스할 수 있도록 허용하십시오." %} - - - diff --git a/docs/ko/test.md b/docs/ko/test.md new file mode 100644 index 000000000..7fc40852a --- /dev/null +++ b/docs/ko/test.md @@ -0,0 +1,12 @@ +--- +layout: default +title: Overview +pagename: test +lang: ko +--- + +# {% include product %} Development + +Test page ko test 123 + +![test](./images/color.png) diff --git a/docs/ko/toolkit.md b/docs/ko/toolkit.md deleted file mode 100644 index d7363b787..000000000 --- a/docs/ko/toolkit.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 파이프라인 통합 -pagename: toolkit-index -lang: ko ---- - -# 파이프라인 통합 - -{% include product %}에는 아티스트들이 일상적으로 사용하는 크리에이티브 도구에 {% include product %} 환경을 가져올 수 있는 통합이 포함됩니다. 기본 게시 파이프라인의 토대를 제공하는 아티스트 도구 내에서 기본적으로 제공되는 플러그인을 사용할 수 있습니다. - -이러한 통합은 스튜디오에 커스텀 워크플로우를 빌드할 수 있는 도구를 제공하는 구성, 툴킷 플랫폼, 일련의 API, UI를 기반으로 구축됩니다. diff --git a/docs/ko/trusted-solutions/cloud.md b/docs/ko/trusted-solutions/cloud.md deleted file mode 100644 index 7883947ce..000000000 --- a/docs/ko/trusted-solutions/cloud.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: ShotGrid in the Cloud -pagename: cloud-index -lang: en ---- - -# {% include product %} in the Cloud - -## What is {% include product %} in the Cloud? - -{% include product %} Cloud is our default offering, hosted on AWS and built on top of Autodesk's Cloud technology platform. {% include product %} Cloud is the latest generation of our hosted service and is completely cloud based. - -## Further Reading - -Administration documentation can be found [here](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_html). \ No newline at end of file diff --git a/docs/ko/trusted-solutions/tier1.md b/docs/ko/trusted-solutions/tier1.md deleted file mode 100644 index 794358a37..000000000 --- a/docs/ko/trusted-solutions/tier1.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Isolation Features -pagename: tier1-index -lang: en ---- - -# Isolation Feature Set - -![isolation-theme](./tier1/images/isolation_theme.jpg) - -The isolation feature set is an hybrid solution that satisfies strict security and legal requirements, while minimizing {% include product %} System Admin specific required knowledge and maintenance. These features enable creative studios to confidently meet their supplier’s and studio’s highly stringent security, privacy, and performance requirements—from the cloud. - -Continue to [About the isolation feature set](./tier1/getting_started/about.md) for more details. - -Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation features. - -## 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) - -### 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) - -### 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) - - -### 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) diff --git a/docs/ko/trusted-solutions/tier1/features/features.md b/docs/ko/trusted-solutions/tier1/features/features.md deleted file mode 100644 index e51276b67..000000000 --- a/docs/ko/trusted-solutions/tier1/features/features.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Features Description -pagename: tier1-features -lang: en ---- - -# Isolation Feature Set - -This section describes in detail each of the Isolation Features. - -features-description-overview - -To get the onboarding process started, go to [Onboarding Process](../getting_started/onboarding.md). - -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 diff --git a/docs/ko/trusted-solutions/tier1/features/media_isolation.md b/docs/ko/trusted-solutions/tier1/features/media_isolation.md deleted file mode 100644 index a50d57fdf..000000000 --- a/docs/ko/trusted-solutions/tier1/features/media_isolation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-features-media-isolation -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. - -This is rendered possible by leveraging [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). When setting up Media Isolation, an AWS Role allowing {% include product %} to access your media for the action listed above is created, and the {% include product %} service is allowed to assume that role. - -{% 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 diff --git a/docs/ko/trusted-solutions/tier1/features/media_replication.md b/docs/ko/trusted-solutions/tier1/features/media_replication.md deleted file mode 100644 index 28446b7ab..000000000 --- a/docs/ko/trusted-solutions/tier1/features/media_replication.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-features-media-replication -lang: en ---- - -# 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. - -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 - -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 is 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/ko/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md deleted file mode 100644 index 1b6d36037..000000000 --- a/docs/ko/trusted-solutions/tier1/features/media_traffic_isolation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-features-media-traffic-isolation -lang: en ---- - -# Media Traffic Isolation - -Communication between your client systems and S3 bucket targets a number of AWS network endpoints and data traverses the open Internet by default. Media Traffic Isolation allows you to limit the number of network endpoints used to transfer data to and from your S3 bucket and optionally restrict access to your AWS VPC or a defined set of public address scopes. - -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. - -## 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/ko/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md deleted file mode 100644 index e062739bc..000000000 --- a/docs/ko/trusted-solutions/tier1/features/web_traffic_isolation.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-features-web-traffic-isolation -lang: en ---- - -# Web Traffic Isolation - -Communication between your client systems and your {% include product %} site will traverse the open Internet by default. Web Traffic Isolation allows you to restrict access to your {% include product %} site from the public Internet entirely and ensure that all traffic transits directly between your AWS VPC and Autodesk's AWS VPC. - -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 deleted file mode 100644 index 78453dc54..000000000 --- a/docs/ko/trusted-solutions/tier1/getting_started/about.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default -title: About the Isolation Feature Set -pagename: tier1-getting_started-about -lang: en ---- - -# What is the Isolation Feature Set - -The isolation feature set combines our Cloud Hosted Platform with client-managed AWS resources to provide a solution that satisfies the most stringent security and privacy requirements. Clients retain control of their sensitive content without having to host {% include product %} on their infrastructure. - -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 - -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 - -## 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. - - -# Eligibility - -The Isolation feature set is available to clients with an active ShotGrid subscription. 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: - -**Compute Stack:** The part of the {% include product %} Service that handles client requests and serves data to the client. - -**Data Stack:** Metadata storage (databases). - -**Media Storage:** Where the client's attachments, media, and assets are stored. {% include product %} uses AWS S3 to store client content. - -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/ko/trusted-solutions/tier1/getting_started/getting_started.md b/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md deleted file mode 100644 index 05a455ec3..000000000 --- a/docs/ko/trusted-solutions/tier1/getting_started/getting_started.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Getting Started -pagename: tier1-getting_started -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. -**The Isolation feature set is available to clients with an active ShotGrid subscription. Before starting, please be sure to complete your subscription purchase.** - - -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 diff --git a/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md b/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md deleted file mode 100644 index b44d00ed3..000000000 --- a/docs/ko/trusted-solutions/tier1/getting_started/onboarding.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Onboarding Process -pagename: tier1-getting_started-onboarding -lang: en ---- - -# Onboarding Process - -Leveraging the isolation features requires adopters to become AWS users. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. - -Autodesk and Amazon will provide dedicated resources during the onboarding process to help you on this journey. - -To start the on-boarding process for any of the Isolation features, please open a [{% include product %} Support ticket](https://knowledge.autodesk.com/contact-support), before proceeding with [your setup](../setup/setup.md) - -## Onboarding Process Overview - -![onboarding-process](../images/tier1-onboarding-process.png) - -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 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. - -**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. - -## Onboarding Resources - -**{% include product %} Community:** The [{% include product %} Isolation Community](https://community.shotgridsoftware.com/c/trusted-solutions/isolation/34) forum can be used to ask questions that can be answered by either {% include product %} Experts or other isolation features users. This should be your first stop when asking general questions about isolation features, during setup and beyond. - -**Private Slack Channel:** During the onboarding, you will be given access to a dedicated Autodesk Slack Channel. Your {% include product %} and AWS Leaders will be available for quick feedback, answers, and ad-hoc meetings to help you progress as fast as possible with your {% include product %} Isolation setup. This channel will be available only for the onboarding period. - -**{% include product %} Support:** A [{% include product %} Support](https://knowledge.autodesk.com/contact-support) ticket will be used to track your onboarding at a higher level. Once your {% include product %} Isolation setup is complete, follow-up support tickets can be opened with the support team as needed. - -## Next Steps - -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file diff --git a/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md deleted file mode 100644 index e27deaa04..000000000 --- a/docs/ko/trusted-solutions/tier1/getting_started/responsibilities.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Client Responsibilities -pagename: tier1-getting_started-responsibilities -lang: en ---- - -# Client Responsibilities - -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. - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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/ko/trusted-solutions/tier1/images/features-description-overview.png b/docs/ko/trusted-solutions/tier1/images/features-description-overview.png deleted file mode 100644 index cdaf6f168..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/features-description-overview.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/isolation_theme.jpg b/docs/ko/trusted-solutions/tier1/images/isolation_theme.jpg deleted file mode 100644 index 720b002ac..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/isolation_theme.jpg and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-isolation-arch.png b/docs/ko/trusted-solutions/tier1/images/media-isolation-arch.png deleted file mode 100644 index 4a1b6f397..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-isolation-arch.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-isolation-overview.png b/docs/ko/trusted-solutions/tier1/images/media-isolation-overview.png deleted file mode 100644 index 525b0130f..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-isolation-overview.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-replication-arch.png b/docs/ko/trusted-solutions/tier1/images/media-replication-arch.png deleted file mode 100644 index 78b48462d..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-replication-arch.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-replication-overview.png b/docs/ko/trusted-solutions/tier1/images/media-replication-overview.png deleted file mode 100644 index 3bc685942..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-replication-overview.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-replication-preferences.png b/docs/ko/trusted-solutions/tier1/images/media-replication-preferences.png deleted file mode 100644 index 2dcf50da8..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-replication-preferences.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-arch.png b/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-arch.png deleted file mode 100644 index 116505c66..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-overview.png b/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-overview.png deleted file mode 100644 index 09e9144eb..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/media-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-about-arch.png b/docs/ko/trusted-solutions/tier1/images/tier1-about-arch.png deleted file mode 100644 index 4de0459f7..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-about-arch.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-about-transcoding.png b/docs/ko/trusted-solutions/tier1/images/tier1-about-transcoding.png deleted file mode 100644 index 60780e45a..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-about-transcoding.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_other.png b/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_other.png deleted file mode 100644 index 4c0793153..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_other.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png b/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png deleted file mode 100644 index 27f735970..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-arch-setup.png b/docs/ko/trusted-solutions/tier1/images/tier1-arch-setup.png deleted file mode 100644 index 727585e6d..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-arch-setup.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-1.png b/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-1.png deleted file mode 100644 index 19c31b631..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-1.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-2.png b/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-2.png deleted file mode 100644 index 7a650d5a4..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-2.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-3.png b/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-3.png deleted file mode 100644 index a2aa900f6..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create-3.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png b/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png deleted file mode 100644 index 206b55453..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-onboarding-process.png b/docs/ko/trusted-solutions/tier1/images/tier1-onboarding-process.png deleted file mode 100644 index 49fcf262a..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-onboarding-process.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-s3-replication.png b/docs/ko/trusted-solutions/tier1/images/tier1-s3-replication.png deleted file mode 100644 index 987b45c08..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-s3-replication.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/tier1-setup-process.png b/docs/ko/trusted-solutions/tier1/images/tier1-setup-process.png deleted file mode 100644 index acb989c7e..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/tier1-setup-process.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-arch.png b/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-arch.png deleted file mode 100644 index 738878820..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-overview.png b/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-overview.png deleted file mode 100644 index 66b11ed59..000000000 Binary files a/docs/ko/trusted-solutions/tier1/images/web-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/ko/trusted-solutions/tier1/knowledge/aws.md b/docs/ko/trusted-solutions/tier1/knowledge/aws.md deleted file mode 100644 index 4047e2782..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/aws.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: AWS Knowledge -pagename: tier1-knowledge-aws -lang: en ---- - -# AWS Knowledge - -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/) diff --git a/docs/ko/trusted-solutions/tier1/knowledge/connecting.md b/docs/ko/trusted-solutions/tier1/knowledge/connecting.md deleted file mode 100644 index aa9aad9dd..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/connecting.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Connecting Your Studio With Your AWS VPC -pagename: tier1-knowledge-connecting -lang: en ---- - -# Connecting Your Studio With Your AWS VPC - -You can connect your studio networks with AWS using one of many options, described in detail in this [Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) whitepaper. - -Some of the common options our clients have used include: - -## VPN Connection - -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.md b/docs/ko/trusted-solutions/tier1/knowledge/direct_connect.md deleted file mode 100644 index 14339c232..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/direct_connect.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Direct Connect -pagename: tier1-knowledge-direct_connect -lang: en ---- - -# Direct Connect - -[AWS Direct Connect](https://aws.amazon.com/directconnect/) is a service from AWS that allows you to establish a dedicated connection from your on-premise data center (or offices) to AWS. Direct Connect will allow you to create a dedicated link between your network and one of the AWS Direct Connect locations. - -Leveraging AWS Direct Connect ensure that you will benefit from the best experience possible when using the isolation feature set, optimizing reliability and performance for all your access points across the globe. diff --git a/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md b/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md deleted file mode 100644 index acf1ab748..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: default -title: ShotGrid AWS Direct Connect Onboarding -pagename: tier1-knowledge-direct_connect_onboarding -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. - -## Review of Shogun Configuration in AWS - -![high-level-architecture](../images/tier1-arch-s3_ue1.png) - -## Customer Types - -1. Customer already has AWS Direct Connect dedicated connection -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 -2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - - -## 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): - -- Do you already have equipment and presence in an AWS Direct Connect location? -- Do you know the process for requesting a cross-connect within the Direct Connect location facility? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console and select a Partner to assist (Option 1b): - -- Are you planning to use AWS Direct Connect to connect to other AWS resources outside of {% include product %}? -- Do you have the time and resources to complete the setup? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then you should work with an AWS Direct Connect Partner to request a hosted Direct Connect connection (Option 2): - -- 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.* - -## 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). -1. (Option 1b only) [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/) and share the LOA with them. -1. Once the dedicated connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). - -### 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 -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). - -## FAQ - -**How long should it take to set up AWS Direct Connect?** - -Short Answer - It depends. A lot of factors go into the time it takes to set up AWS Direct Connect. The timeline can vary from a few days to a few months. Some of the factors include current infrastructure, location of equipment, providers, partners, and more. If you are looking to expedite the process, consider using an AWS Direct Connect Partner who is geographically nearby. - -**Further questions about AWS Direct Connect?** - -[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). - -## AWS Documentation & Resources - -- [What is AWS Direct Connect?](https://www.youtube.com/watch?v=eNxPhHTN8gY&feature=youtu.be&t=716) -- [Direct Connect User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dc-ug.pdf) -- [re:Invent 2018 - 400 level Deep Dive on Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc) -- [AWS Direct Connect Locations](https://aws.amazon.com/directconnect/features/#AWS_Direct_Connect_Locations) -- [AWS Direct Connect Partners](https://aws.amazon.com/directconnect/partners/) diff --git a/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md b/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md deleted file mode 100644 index 12d99d191..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/endpoints.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: VPC Endpoints -pagename: tier1-knowledge-endpoints -lang: en ---- - -# VPC Endpoints - -Coming soon. \ No newline at end of file diff --git a/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md b/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md deleted file mode 100644 index 6eaae7b9d..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/knowledge.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Knowledge -pagename: tier1-knowledge -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 diff --git a/docs/ko/trusted-solutions/tier1/knowledge/private_link.md b/docs/ko/trusted-solutions/tier1/knowledge/private_link.md deleted file mode 100644 index daa50aa49..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/private_link.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Private Link -pagename: tier1-knowledge-private_link -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. - -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/ko/trusted-solutions/tier1/knowledge/s3.md b/docs/ko/trusted-solutions/tier1/knowledge/s3.md deleted file mode 100644 index 3caac5bbf..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/s3.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: S3 -pagename: tier1-knowledge-s3 -lang: en ---- - -# S3 - -[Amazon S3](https://aws.amazon.com/s3/) is an object storage service offered by AWS. It can be thought of as a highly durable storage space in the cloud. {% include product %} uses S3 to store uploaded media and files. - -In order to use {% include product %} isolation features, you will bring your own S3 bucket and configure {% include product %} to use it for storage. Please refer to our [S3 Bucket Setup article](../setup/s3_bucket.md) for details on how to do this. diff --git a/docs/ko/trusted-solutions/tier1/knowledge/vpc_iam_sec.md b/docs/ko/trusted-solutions/tier1/knowledge/vpc_iam_sec.md deleted file mode 100644 index effbe85bf..000000000 --- a/docs/ko/trusted-solutions/tier1/knowledge/vpc_iam_sec.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: VPC / IAM / Security Group -pagename: tier1-knowledge-vpc_iam_sec -lang: en ---- - -# VPC / IAM / Security Group - -[Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/) permits users to logically separate virtual networks that host their AWS resources and provides you complete control over access to your AWS network. - -Within a VPC, [security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) act as a basic firewall and control what inbound and outbound connections are permitted to each given resource. For example, a security group can allow inbound **HTTPS** traffic to a proxy server but block all other inbound traffic. - -With [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/), access to AWS resources and services can be controlled at a more fine-grained level. For example, IAM can be leveraged to control who or which resources can access S3 buckets used by {% include product %}. - -All three of the above features are used in the {% include product %} isolation features implementation to ensure that you securely connect your closed VPC to {% include product %} and allow access to the [media S3 buckets](../setup/s3_bucket.md). diff --git a/docs/ko/trusted-solutions/tier1/learn/learn.md b/docs/ko/trusted-solutions/tier1/learn/learn.md deleted file mode 100644 index fc1364ac6..000000000 --- a/docs/ko/trusted-solutions/tier1/learn/learn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Learn -pagename: tier1-learn -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 diff --git a/docs/ko/trusted-solutions/tier1/setup/media_segregation.md b/docs/ko/trusted-solutions/tier1/setup/media_segregation.md deleted file mode 100644 index ace2a3a7b..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/media_segregation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-setup-media_segregation -lang: en ---- - -# Media Traffic Isolation using AWS PrivateLink for Amazon S3 - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the {% include product %} Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used." %} - -Simply add an `com.amazonaws.us-west-2.s3` Interface VPC Endpoint to your existing VPC. Make sure the associated security group allow traffic from your site network. - -### Add the VPC to your S3 bucket policy - -In order for the S3 VPC endpoint to communicate with your S3 bucket your bucket policy must allow access from the S3 endpoint's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 VPC endpoint - -Use the endpoint URL to list objects in your bucket using AWS CLI. In the following example, replace the VPC endpoint ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` and bucket name `my-bucket` with appropriate information. - -``` - aws s3 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com ls s3://my-bucket/ -``` - -### Configure your test site to use your S3 VPC endpoint - -* Please contact {% include product %} support via the dedicated Slack channel and provide the following information: - * Your S3 bucket name - * Your S3 VPC endpoint DNS Name -* Autodesk will configure your test site to use your S3 VPC endpoint -* Confirm that you are still able to access existing media -* Attempt to upload new media - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/media_segregation_s3_proxy.md b/docs/ko/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md deleted file mode 100644 index 3de278e64..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation - S3 Proxy -pagename: tier1-setup-media_segregation_s3_proxy -lang: en ---- - -{% include info title="Deprecated" content="The preferred way is to use S3 Private Link instead of a S3 proxy, see [Media Traffic Isolation](./media_segregation.md)" %} - -# Media Traffic Isolation using an S3 proxy (DEPRECATED) - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the ShotGrid Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -{% include info title="Disclaimer" content="Before starting, decide whether your S3 proxy will be privately accessible within your VPC or publicly accessible via the Internet and choose the relevant templates in the following instructions." %} - -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): - [`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: - [`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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used when configuring [Media Isolation](./s3_bucket.md)." %} - -![Add endpoint](../images/tier1-endpoint-create-1.png) -![Add endpoint](../images/tier1-endpoint-create-2.png) -![Add endpoint](../images/tier1-endpoint-create-3.png) - -## Set up S3 proxy - -You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC endpoint. We provide both [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) and [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) S3 proxy CloudFormation templates as starting points for this purpose. These will create the necessary Elastic Container Service (ECS) cluster and other resources to run the S3 proxy on AWS Fargate behind an AWS Application Load Balancer (ALB). - -### 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: - ``` - 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 - docker push 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 - ``` - -### Create S3 proxy CloudFormation stack - -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): - [`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: - [`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 - -### 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 - 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 - 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 - -### Add S3 proxy VPC to S3 bucket policy - -In order for the S3 proxy to communicate with your S3 bucket your bucket policy must allow access from the S3 proxy's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 proxy - -Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio.com/ping` - -### 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 - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/migration.md b/docs/ko/trusted-solutions/tier1/setup/migration.md deleted file mode 100644 index fcada3bf8..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/migration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Migration -pagename: tier1-setup-migration -lang: en ---- - -# Migration - -Once everything is configured and properly tested with the migration test site, it's now time to migrate your production site to use the isolation features. - -## Test migration - -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. - -## 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. - diff --git a/docs/ko/trusted-solutions/tier1/setup/planning.md b/docs/ko/trusted-solutions/tier1/setup/planning.md deleted file mode 100644 index e365d92b6..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/planning.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Planning Your Setup -pagename: tier1-getting_started-planning -lang: en ---- - -# Planning Your Setup - -![Architecture](../images/tier1-arch-setup.png) - -## Pick your options - -Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication - -## AWS Account Creation - -Before going further, you will require an AWS Account. If you don't already have an AWS Account, [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). - -## Choose an AWS Region - -Choose an AWS Region for your AWS S3 bucket and VPC. Which region to use? You should chose the a region that is the closest possible to your studio. - -If your company is located in different locations, consider enabling the media replication feature to reduce latency and improve performance - -## Plan the VPC IP ranges - -Plan your AWS VPC and subnets IP ranges. - -### IP Range Example - -| 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 - -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 diff --git a/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md b/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md deleted file mode 100644 index 91339137f..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/s3_bucket.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-setup-s3_bucket -lang: en ---- - -# Media Isolation - -{% include info title="Disclaimer" content="The security of your S3 bucket is solely a client responsibility, and the integrity of your data will be at risk without it. We very strongly recommend [securing your S3 bucket properly](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - -## AWS Account Creation - -You can quickly [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). -You should also contact your AWS contacts to get help with your AWS account setup. - -## AWS CloudFormation template - -It's possible to start from the [Private S3 bucket AWS CloudFormation template](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml) and customize it for your needs for a faster deployment. - -{% 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 - -### CORS Configuration - -CORS policy on your S3 bucket will be minimally configured, allowing only the required origin (your site) and methods, amongst other things. - -### IAM Role - -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. - -## 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 - -{% include product %} will configure your test site to use your own S3 bucket. - -## Validation - -At this stage, you should be able to upload and download media. The {% include product %} Transcoding Service should also be able to read, transcode and write back the thumbnails, filmstrip and web friendly versions of your media back to your S3 Bucket. To validate this: - -1. Log in your Migration Test Site. -2. From the Navigation Bar, go the the Media app -3. Once in the Media App, drag and drop or upload an image or a video from your computer. If you didn't created a Project yet, you may have to create one first. -4. A version should appear, with a thumbnail, in the Media App. -5. Validate that you can playback the media by clicking the Play button. -6. To validate that the media has been stored in your S3 bucket, from the media viewer, click on the cog and then select or hover over ‘view source’. The HTTPS link should contain your bucket name. - -## Next Steps - -See [Media Traffic Isolation](./media_segregation.md) to activate the Media Traffic Isolation feature. - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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 deleted file mode 100644 index 20b465ada..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/s3_replication.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-setup-s3_replication -lang: en ---- - -# Media Replication - -## Description - -It's possible to add S3 replication between two S3 buckets in different regions and configure {% include product %} to leverage it for faster access to media. - -![S3 Replication Diagram](../images/tier1-s3-replication.png) - -## Features - - * 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 - -When S3 bucket replication is activated, users will be able download media files from the replica S3 bucket. - -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| - -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 - -# 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 - -## FAQ - -### Copy existing media - -S3 replication only applies to media uploaded after the feature has been enabled. Existing media in the primary bucket must be copied to the replica bucket manually. You can simply use `aws-cli` sync or use [Amazon S3 Batch Operations](https://aws.amazon.com/s3/features/batch-operations/) if you have a lot of media to achieve this. - -## Next Steps - -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 diff --git a/docs/ko/trusted-solutions/tier1/setup/setup.md b/docs/ko/trusted-solutions/tier1/setup/setup.md deleted file mode 100644 index 759f5637f..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/setup.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Setup -pagename: tier1-setup -lang: en ---- - -# {% include product %} Isolation Feature Set - Setup - -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. - -## 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) - -# Setup Overview - -![tier1-setup-process](../images/tier1-setup-process.png) - -## [Understand your responsibilities](../getting_started/responsibilities.md) - -Make sure that you understand the [client responsibilities and the implication](../getting_started/responsibilities.md) of activating any of the Isolation feature. - -## [Start the onboarding process](../getting_started/onboarding.md) - -Leveraging the isolation features requires adopters to become AWS users. The features activation also requires Autodesk Support intervention. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. [Kick-start the onboarding process](../getting_started/onboarding.md) before going further. - -## [Planning your Setup](./planning.md) - -Before you start working on your setup, [put a plan in place](./planning.md). Choose the features you need and get the required security/legal approval from your team to get started with the Isolation feature set. - -## [Migration Test Site](./shotgun_poc_site.md) - -To help you setting up the Isolation features without breaking your production environment and to helping smooting the migration to your isolated environment, {% include product %} propose to use a test site on which to test your setup before applying the result to production. - -## [Media Isolation](./s3_bucket.md) - -This feature allow you to use a S3 Bucket owned by your studio to store media. - -## [Media Traffic Isolation](./media_segregation.md) - -This feature allows for private routing of the media through the AWS Backbone and your studio network, isolating the media traffic from the public internet. - -## [Web Traffic Isolation](./traffic_segregation.md) - -This feature isolate the web traffic on AWS Backbone and your studio network, isolating the traffic from the public internet. - -## [Media Replication](./s3_replication.md) - -This feature allows the media to be replicated between AWS Regions, for faster access in your world wide studios. Media Isolation is required. - -## [Fine Tuning](./tuning.md) - -Once the isolation features you need are activated, make sure that you everything is properly configured for security and cost-efficiency by reviewing this fine tuning guide. - -## [Migration](./migration.md) - -Once everything is ready, it's now time to migrate your production site to use the isolation features. diff --git a/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md b/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md deleted file mode 100644 index 18a4cfd1d..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: Migration Test Site -pagename: tier1-setup-shotgun_poc_site -lang: en ---- - -# {% include product %} Migration Test Site - -Activating the isolation feature set is an intrusive procedure that can have an impact on the usability of your site. To prevent a production stopping event, we require clients to follow an approach where the configuration is first validated on a test site, before being applied to the production site. - -The {% include product %} team will create a temporary site to be used as a Proof of Concept for your {% include product %} Isolation deployment. Upon the successful completion of the setup process, your existing {% include product %} site can be migrated to your {% include product %} Isolation environment. - -If your Migration Test Site has not been created yet, please reach out to our Support team through your Zendesk ticket or your dedicated on-boarding Slack Channel. - -## Next Steps - -Once you have your test site, you can the implementation of the feature you need. - -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 diff --git a/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md deleted file mode 100644 index bdeb2f1bf..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/traffic_segregation.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-setup-traffic_segregation -lang: en ---- - -# Web Traffic Isolation - -The goal is to set up an AWS PrivateLink to privately access your {% include product %} site. - -## Set up PrivateLink to ShotGrid - - * 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. - -### Manual steps if needed - - * 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. - -![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`. - -## Validation - -Verify that your site private URL resolves to IPs in your AWS VPC block. - -``` -nslookup mystudio-staging.priv.shotgunstudio.com -``` - -Try to access your test site from inside your office ie https://mystudio-staging.priv.shotgunstudio.com - -## Next Steps - -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 diff --git a/docs/ko/trusted-solutions/tier1/setup/tuning.md b/docs/ko/trusted-solutions/tier1/setup/tuning.md deleted file mode 100644 index c06d6ef05..000000000 --- a/docs/ko/trusted-solutions/tier1/setup/tuning.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: default -title: Fine Tuning -pagename: tier1-setup-tuning -lang: en ---- - -# Fine Tuning - -## Cost Management Recommendations - -### S3 Infrequent Access - -We recommend enabling S3 Infrequent Access to easily reduce costs without impacting performance. For the {% include product %} Cloud hosted offering, we apply a policy for all objects older than one month. - -With Infrequent Access, objects are stored at a lower cost. However, if they are accessed, it will involve an additional cost. {% include product %} has observed that one month was the right policy to use globally, but you may want to adapt that policy to your studio workflows as needed. - -Read more about S3 Infrequent Access and other storage classes [here](https://aws.amazon.com/s3/storage-classes/). - -## S3 Bucket policy - -We recommend you restrict access to your S3 bucket to only your VPC and {% include product %} transcoding services IPs. There is an example policy, replace `your_vpc_id` and `your_s3_bucket` by your values. - -We strongly recommend you test media access and media transcoding in your migration test site right after applying the bucket policy changes to be sure your S3 bucket is still accessible from your VPC and from {% include product %} transcoders. - -``` -{ - "Version": "2012-10-17", - "Id": "Policy1415115909152", - "Statement": [ - { - "Sid": "AllowSSLRequestsOnly", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": [ - "arn:aws:s3:::your_s3_bucket", - "arn:aws:s3:::your_s3_bucket/*" - ], - "Condition": { - "Bool": { - "aws:SecureTransport": "false" - } - } - }, - { - "Sid": "Access-to-specific-VPC-only and Shotgun transcoder", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": "arn:aws:s3:::your_s3_bucket/*", - "Condition": { - "NotIpAddress": { - "aws:SourceIp": [ - "34.200.155.69/32", - "34.224.232.103/32", - "34.202.127.170/32" - ] - }, - "StringNotEquals": { - "aws:sourceVpc": [ - "vpc-2fd62a56", - "your_vpc_id" - ] - } - } - } - ] -} -``` - -## S3 endpoint policy - -We recommend setting a VPC endpoint policy on your S3 endpoint to allow access to your S3 bucket only. See [here](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) for an example. - -## 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. - -## Next Steps - -See [Migration](./migration.md) to migrate your production site to use the isolation features. - -Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/ko/videos/images/dev-day-playlist.png b/docs/ko/videos/images/dev-day-playlist.png deleted file mode 100644 index 269534352..000000000 Binary files a/docs/ko/videos/images/dev-day-playlist.png and /dev/null differ diff --git a/docs/ko/videos/images/toolkit-playlist.png b/docs/ko/videos/images/toolkit-playlist.png deleted file mode 100644 index f87247919..000000000 Binary files a/docs/ko/videos/images/toolkit-playlist.png and /dev/null differ diff --git a/docs/ko/videos/video-webinars.md b/docs/ko/videos/video-webinars.md deleted file mode 100644 index 60a798a38..000000000 --- a/docs/ko/videos/video-webinars.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: default -title: 툴킷 웨비나 -pagename: video-webinars -lang: ko ---- - -# {% include product %} 툴킷 웨비나 - -*업데이트 날짜: 2020/5/8* - -## {% include product %} 툴킷 웨비나 재생 목록 - -[![](images/toolkit-playlist.png)](https://www.youtube.com/watch?v=rgzHEwUhENI&list=PLEOzU2tEw33q65lv0_AKDT6tbpi6vgMDH) - -## {% include product %} 툴킷 웨비나 동영상 - - -1: {% include product %} 툴킷 웨비나: 기본 제공 통합*(60분)* - -새 시리즈 중 첫 번째 툴킷 웨비나에서는 Rob Blau와 Manne Öhrström이 기본 제공 통합에 관련된 질문에 답변합니다. - -[![](http://img.youtube.com/vi/rgzHEwUhENI/0.jpg)](http://www.youtube.com/watch?v=rgzHEwUhENI) - -2: {% include product %} 툴킷 웨비나: 새 기본 구성 상세 설명*(60분)* - -이 웨비나에서는 Josh Tomlinson과 Rob Blau가 툴킷 프로젝트의 새 기본 구성에 대한 변경 사항과 변경한 이유에 대해 설명합니다. - -[![](http://img.youtube.com/vi/eKHaC1dZCeE/0.jpg)](http://www.youtube.com/watch?v=eKHaC1dZCeE) - -3: {% include product %} 툴킷 웨비나: 게시 워크플로우 커스터마이즈 - 라이브 데모*(60분)* - -이 웨비나에서는 Josh Tomlinson이 Maya에서 커스텀 게시 워크플로우를 직접 만들어 볼 수 있도록 단계별 연습 과정을 안내합니다. 게시 앱을 구성하는 방법과 데이터 수집 및 게시를 위한 커스텀 후크를 작성하는 방법을 학습합니다. - -[![](http://img.youtube.com/vi/pH4mylrnktY/0.jpg)](http://www.youtube.com/watch?v=pH4mylrnktY) - -*보충 자료* - -[파이프라인 튜토리얼](https://developer.shotgridsoftware.com/ko/cb8926fc/) - -4: {% include product %} 툴킷 웨비나: 클라우드 구성 및 다중 위치 워크플로우*(60분)* - -이 웨비나에서는 Manne Ohrstrom이 아티스트가 여러 위치에 분산된 스튜디오의 워크플로우를 탐색합니다. - -[![](http://img.youtube.com/vi/NyIk07F2RoM/0.jpg)](http://www.youtube.com/watch?v=NyIk07F2RoM) - -*보충 자료* - -[툴킷 초기화 및 구성 관리에 대한 개발자 문서](https://developer.shotgridsoftware.com/tk-core/initializing.html) - -[동영상에서 Manne이 참조하는 디스크립터 유형 목록](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types) - -5: {% include product %} 에코시스템 웨비나: REST API*(60분)* - -이 웨비나에서는 Brandon Ashworth가 여러 가지 유용한 데모, 예제 및 방법을 소개하면서 REST API의 정의, 중요성 및 사용 방법을 설명합니다. - -[![](http://img.youtube.com/vi/3xPPj2pbHVQ/0.jpg)](http://www.youtube.com/watch?v=3xPPj2pbHVQ) - -*보충 자료* - -[REST API 참조 문서](https://developer.shotgridsoftware.com/rest-api/) - -6: {% include product %} 툴킷 웨비나: 새 게시자 API*(35분)* - -최신 통합 릴리즈에 포함된 향상된 게시 API를 사용하면 GUI 앱에서 게시 로직을 분리하고 고유의 도구 또는 렌더 팜에서 게시를 실행할 수 있습니다. 이 웨비나에서는 Jean-Francois Boismenu가 API를 사용하여 게시자 UI에서 렌더 팜 작업으로 게시 항목 트리를 전달하는 방법에 대해 설명합니다. - -[![](http://img.youtube.com/vi/ZxP3IXHt47U/0.jpg)](http://www.youtube.com/watch?v=ZxP3IXHt47U) - -*보충 자료* - -[Github 리포지토리(구성 포함)](https://github.com/shotgunsoftware/tk-config-publish_api_webinar) - -[사용자 요청(31:00에서 참조)](https://github.com/shotgunsoftware/tk-config-publish_api_webinar/pull/1) - -[API 설명서 게시](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -7: {% include product %} 툴킷 웨비나: After Effects 통합*(38분)* - -Adobe After Effects는 최신 {% include product %} 통합 기능입니다. 이 웨비나에서는 Rob Blau가 기능에 대한 라이브 데모를 사용하여 After Effects 통합에 대해 자세히 설명하고 Photoshop 통합에서 히빙 리프팅을 리팩터링하여 Adobe 통합에 재사용 가능한 프레임워크를 개발하는 방법에 대해 논의합니다. - -또한 Tannaz Sassooni가 새로운 개발자 설명서 사이트를 둘러보고 어떻게 하면 사용자가 {% include product %} 소프트웨어를 사용하여 보다 쉽게 통합할 수 있는지 설명합니다. - -[![](http://img.youtube.com/vi/g-062_VTbAI/0.jpg)](http://www.youtube.com/watch?v=g-062_VTbAI) - -*보충 자료* - -[After Effects 통합 설명서](https://developer.shotgridsoftware.com/ko/1eca509c/) - -[개발자 설명서 포털](https://developer.shotgridsoftware.com/ko/) - -## {% include product %} Developer Day 재생 목록 - - -[![](images/dev-day-playlist.png)](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d) - - -## {% include product %} Developer Day 동영상 - - -SIGGRAPH 2018 및 2019에서 {% include product %} 팀은 개발자들이 태스크 자동화, 커스텀 앱 작성 등에 사용할 수 있는 다양한 리소스를 익힐 수 있도록 교육 과정 시리즈 {% include product %} Developer Day를 발표했습니다. SIGGRAPH가 끝난 후에는 Developer Day의 컨텐츠를 소개하는 일련의 웨비나를 진행했습니다. 이 재생 목록에는 웨비나의 녹화본이 포함되어 있습니다. - -전체 슬라이드 데크, 코드 예제 및 이 컨텐츠와 관련된 기타 리소스는 [2019의 경우 여기](https://github.com/shotgunsoftware/sg-siggraph-2019), [2018의 경우 여기](https://github.com/shotgunsoftware/sg-devday-2018/)에서 참조할 수 있습니다. - -1: SIGGRAPH Developer Day 2019: {% include product %} 개발 소개*(83분)* - -이 웨비나에서는 Tannaz Sassooni와 Patrick Boucher가 {% include product %}의 자동화를 위한 진입점, {% include product %}의 Python 및 REST API, {% include product %}의 API로 스튜디오의 태스크 및 데이터 트래킹을 자동화하는 방법에 대한 논의 등 {% include product %} 개발과 관련된 내용을 소개합니다. - -[![](http://img.youtube.com/vi/i0aVJepZw8Y/0.jpg)](http://www.youtube.com/watch?v=i0aVJepZw8Y) - -[0:56](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=56s) 환영 인사 및 오리엔테이션 - -[3:00](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=180s) {% include product %} 개발 소개: 공통 파이프라인의 요구 사항을 소개하고, {% include product %} API 및 개발 프레임워크를 사용하여 이러한 요구 사항을 충족하는 방법을 간략하게 설명합니다. [Tannaz Sassooni] - -[25:59](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=1559s) {% include product %} API를 사용한 데이터 관리 소개: 액션 메뉴 항목을 생성하는 프레임워크 및 간단한 Python 및 REST 스크립팅을 사용하여 {% include product %} API에 대해 자세히 설명합니다. [Patrick Boucher] - -2: SIGGRAPH Developer Day 2019: 고급 {% include product %} 개발*(78분)* - -이 웨비나에서는 Brandon Ashworth와 Manne Öhrström이 {% include product %}의 데이터 변경에 반응하는 이벤트 데몬과 새로운 웹후크를 사용하는 {% include product %}에 대해 자세히 설명하고 {% include product %} 툴킷을 사용하여 간단한 파이프라인 도구를 작성하는 방법을 보여 줍니다. - -[![](http://img.youtube.com/vi/xUeY1pECHdI/0.jpg)](http://www.youtube.com/watch?v=xUeY1pECHdI) - -[0:39](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=39s) 환영 인사 및 오리엔테이션 - -[2:33](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=153s) {% include product %} 이벤트를 사용한 작업 [Brandon Ashworth] - -[41:25](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=2485s) 여러 아티스트 앱에서 실행되는 {% include product %} 도구 개발 [Manne Öhrström] - -3: SIGGRAPH Developer Day: 툴킷 관리*(1시간 15분)* - -이 웨비나에서는 Josh Tomlinson, Tannaz Sassooni와 Phil Scadding이 통합을 인계받고 커스텀 디렉토리 구조 및 후크를 생성하여 스튜디오에서 더 많은 데이터 흐름을 자동화하는 방법에 대해 설명합니다. - -[![](http://img.youtube.com/vi/7qZfy7KXXX0/0.jpg)](http://www.youtube.com/watch?v=7qZfy7KXXX0) - -[0:00](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=0s) 환영 인사 및 오리엔테이션 - -[1:04](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=64s) {% include product %} 툴킷 관리: {% include product %} 데스크톱 앱을 통해 일반 컨텐츠 생성 소프트웨어를 시작하는 방법을 배우고 아티스트가 작업 세션을 종료하지 않고도 기본 파이프라인 통합을 사용하여 {% include product %}소프트웨어와 상호 작용할 수 있는 방법을 알아봅니다. [Phil Scadding] - -[32:41](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=1961s) 툴킷 구성 소개: 툴킷 파이프라인 구성을 통한 탐색 및 이를 사용하여 파이프라인 워크플로우를 커스터마이즈하는 방법을 익힙니다. [Tannaz Sassooni] - -[56:20](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=3380s) 후크 관리: {% include product %} 툴킷의 광범위한 후크 집합을 사용하여 커스텀 로직을 구성에 추가하고 툴킷 파이프라인을 스튜디오의 요구 사항에 맞게 조정하는 방법을 배웁니다. [Josh Tomlinson] - -4: SIGGRAPH Developer Day: 고급 {% include product %} 개발*(1시간 15분)* - -Manne Ohrstrom, Jeff Beeland, Rob Blau가 소스 제어 및 클라우드 기반 파이프라인 배포에 대한 모범 사례를 시연하고 빠르게 UI를 디자인하고 데이터를 처리할 수 있는 툴킷 표준 프레임워크 사용 및 앱 구축 방법에 대해 자세히 설명합니다. - -[![](http://img.youtube.com/vi/bT2WlQaJVmY/0.jpg)](http://www.youtube.com/watch?v=bT2WlQaJVmY) - -[0:00](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=0s) 환영 인사 및 오리엔테이션 - -[2:31](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=151s) 툴킷 플랫폼: 개발 및 배포 패턴: 개발용 워크플로우, 버전 제어 모범 사례 및 파이프라인 구성을 {% include product %} 사이트에 업로드하여 원격 사용자에게 배포하는 것을 비롯해 툴킷 파이프라인 구성을 설정하고 배포하는 다양한 방법에 대해 배웁니다. [Manne Ohrstrom] - -[30:23](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=1823s) 툴킷 플랫폼: 자체 앱 작성: 간단한 툴킷 앱을 작성하고 제공된 API 및 프레임워크를 활용하여 강력한 UI를 빠르게 만드는 방법을 살펴봅니다. [Jeff Beeland] - -[1:02:22](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=3742s) Autodesk Forge 소개: Autodesk의 API 기반 클라우드 서비스 시리즈인 Forge를 소개하고 이를 사용하여 {% include product %} 환경을 확장하는 방법을 알아봅니다. [Rob Blau] - diff --git a/docs/zh_CN/action-menu-items/action-menu-items-create.md b/docs/zh_CN/action-menu-items/action-menu-items-create.md deleted file mode 100644 index 4edd7667a..000000000 --- a/docs/zh_CN/action-menu-items/action-menu-items-create.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: default -title: 自定义动作菜单项 -pagename: action-menu-items-create -lang: zh_CN ---- - -# 自定义动作菜单项 - -API 开发人员可以通过动作菜单项 (AMI) 按实体自定义上下文菜单项。例如,在“版本”(Versions)页面中,可以选择多个版本,单击鼠标右键,然后选择“Build a PDF Report”。 - -![报告](./images/dv-custom-amis-01-report-01.png) - -## 动作菜单项字段 - - - -## 动作菜单项类型 - -可以创建两种类型的菜单项: - -## HTTP URL 示例 - -例如,您可以创建名为“Build PDF Report”的自定义菜单项。这将允许用户转到任何“版本”(Versions)页面,选择一个或多个版本,单击鼠标右键,然后从 {% include product %} 菜单中选择“Build PDF Report”。执行此操作将启动(您必须创建的)脚本,以获取一个格式完善的报告并发送回其浏览器。工作方式如下: - -### 通过 UI 创建菜单项 - -![AMI 菜单](./images/dv-custom-amis-04-ami-menu-03.png) - - -在设置菜单中,选择“动作菜单项”(Action Menu Items)以打开 AMI 管理页面。 - -要创建新 AMI,请单击 ![添加 AMI](./images/dv-custom-amis-05-add-ami-04.png)。 - -填写“标题”(Title)和任何其他必填字段,然后单击“创建动作菜单项”(Create Action Menu Item)。 - -### 用户单击 AMI 会发生什么情况? - -{% include product %} 将在新窗口或模态对话框(如果选择了该选项)中分派 POST 请求,然后将相关数据从当前页面(作为 POST 请求的一部分)发送到接收 URL。下面是一个工作流示例。 - -* 用户导航到“版本”(Versions)页面 -* 用户选择一个或多个版本 -* 用户打开上下文菜单(右键单击或单击工具栏中的配置菜单) -* 用户单击“Build PDF Report” -* {% include product %} 在新窗口中将 POST 请求分派到 AMI 的 URL(如果 {% include product %} 服务器使用的是 HTTPS,URL 使用的是 HTTP,将会显示浏览器警告) -* 您的脚本(位于指定的 URL)处理 POST 数据,并生成一个 PDF 文档 -* 向用户发送回一个格式完善的 PDF 报告以进行查看或下载 - -## 自定义协议处理程序示例 - -更高级的自定义 AMI 执行涉及设置自定义协议处理程序(例如 {% include product %}://process_version)。这样,您可以通过本地计算机上的脚本将 {% include product %} 与应用程序(如 Maya、RV 或 Cinesync)桥接起来。如果您指定非 HTTP(S) 协议,则将通过 GET 而不是 POST 将数据发送到您的 URL。您可能希望使用此项来启动内部工具以分派不同的请求。 - -有关自定义协议的详细信息,请参见[使用自定义浏览器协议启动应用程序](https://developer.shotgridsoftware.com/zh_CN/67695b40/)。 - -> **注意:**我们还通过 [{% include product %} 集成](https://developer.shotgridsoftware.com/zh_CN/d587be80/)内置了与 Maya 和其他软件包的集成。 -### 轻量有效负载 - -使用自定义协议时,查询信息作为 GET 请求发送。某些操作系统和浏览器组合对允许的 GET 请求的大小限制有所不同。我们建议在自定义协议 AMI 上选中轻量有效负载复选框。在选中轻量有效负载复选框的情况下,您的脚本将收到一个事件日志条目 ID,它可以提取该 ID 以通过读取记录的 `meta` 字段的 `ami_payload` 键来从其获取完整的有效负载。 - -## 示例 - -下面是一些相关的示例脚本,可帮助您快速入门: - -* [处理 ActionMenuItem 调用](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) -* [版本包装程序](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_version_packager.html) - -## 有效负载内容 - -### 用户数据 - -* **user_id**:当前登录用户的用户 ID(例如 34) -* **user_login**:当前登录用户的登录名(例如 joe) - -### 实体数据 - -* **entity_type**:当前页面或视图的实体类型(例如版本) -* **selected_ids**:选定实体 ID 的逗号分隔列表(例如 931, 900) -* **ids**:当前页面查询所返回实体的所有 ID 的逗号分隔列表。这会返回所有 ID,包括那些由于分页而不可见的 ID(例如 931, 900, 904, 907)。如果在 AMI 上选中了“需要选择”(Selection required),此值将与 **selected_ids** 相同。 - -### 页面数据 - -* **title**:页面标题(例如“所有版本”(All Versions)) -* **page_id**:单击其中的动作菜单项的页面的 ID(例如 1353) -* **server_hostname**:在其中触发 AMI 的系统的主机名。如果您有多个调用相同 AMI 的服务器(例如开发服务器和生产服务器),可能很有用 -* **referrer_path**:在其中调用 AMI 的 URL 的规范路径 -* **session_uuid**:在其中调用此 AMI 的窗口的唯一标识符。此项可以与“轮询数据更新”(Poll for Data Updates)复选框以及 Python API 的 [`set_session_uuid`](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid) 方法一起使用,以将信息发送回在其中调用 AMI 的页面。**注意:**此功能的更新轮询成指数级衰减并最终停止,因此如果您的 AMI 在轮询停止前未更新,您可能无法在源页面中看到任何更新 -* **cols**:页面上所有可见列的系统字段名称的逗号分隔列表(例如 code, sg_status_list, description) -* **column_display_names**:页面上所有可见列的显示名称的逗号分隔列表(例如:版本(Version), 状态(Status), 说明(Description)) -* **view**:调用 AMI 时选择的视图。可以通过设计页面模式为任何给定页面创建多个视图 -* **sort_column**:作为排序依据的列的应用插件名称(例如 code)。如果有多个排序键,仅发送第一个,请参见 **sort_columns** -* **sort_direction**:(例如 asc 或 desc)如果有多个排序方向,仅发送第一个,请参见 **sort_directions** -* **sort_columns**:作为页面或视图排序依据的列的应用插件名称的逗号分隔列表(例如 code, created_at)。仅当有多个排序键时发送 -* **sort_directions**:作为页面或视图排序依据的列的应用插件名称的逗号分隔列表(例如 code, created_at)。仅当有多个排序键时发送 -* **grouping_column**:作为分组依据的列的应用插件名称(例如 code)。如果有多个分组列,仅发送第一个,请参见 **grouping_columns** -* **grouping_method**:分组依据的方法(例如,对实体字段按 `entitytype` 分组,对日期字段按 `month` 分组)。如果有多个分组方法,仅发送第一个,请参见 **grouping_columns** -* **grouping_direction**:分组方向(例如 asc 或 desc)如果有多个分组方向,仅发送第一个,请参见 **grouping_directions** -* **grouping_columns**:作为数据分组依据的列的应用插件名称的逗号分隔列表(例如 code, created_at)。仅当有多个分组列时发送 -* **grouping_methods**:分组方法的逗号分隔列表(例如 entity_type, month)。仅当有多个分组列时发送 -* **grouping_directions**:分组方向的逗号分隔列表(例如 asc, desc)。仅当有多个分组列时发送 - -### 项目数据(仅当当前页面上的所有实体共用同一项目时发送) - -* **project_name**:项目的名称(例如 Gunslinger) -* **project_id**:项目的 ID(例如 81) \ No newline at end of file diff --git a/docs/zh_CN/action-menu-items/action-menu-items-intro.md b/docs/zh_CN/action-menu-items/action-menu-items-intro.md deleted file mode 100644 index 257a8ebb7..000000000 --- a/docs/zh_CN/action-menu-items/action-menu-items-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 动作菜单项 -pagename: action-menu-items-intro -lang: zh_CN ---- - -# 动作菜单项 - -本节包含有关创建自定义动作菜单项 (AMI) 和使用自定义浏览器协议启动应用程序的信息。 \ No newline at end of file diff --git a/docs/zh_CN/action-menu-items/custom-browser-protocols.md b/docs/zh_CN/action-menu-items/custom-browser-protocols.md deleted file mode 100644 index 4c9a6e113..000000000 --- a/docs/zh_CN/action-menu-items/custom-browser-protocols.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -layout: default -title: 使用自定义浏览器协议启动应用程序 -pagename: custom-browser-protocols -lang: zh_CN ---- - -# 使用自定义浏览器协议启动应用程序 - -## 内容 - -- [注册协议](#registering-a-protocol) - - [在 Windows 上注册协议](#registering-a-protocol-on-windows) - - [在 OSX 上注册协议](#registering-a-protocol-on-osx) - - [在 Linux 上注册协议](#registering-a-protocol-on-linux) - -[动作菜单项]() (AMI) 非常实用的一个版本是将在本地计算机上运行应用程序或脚本的版本。要实现这一点,需要在浏览器与要运行的脚本或应用程序之间设置连接。此链接称为自定义浏览器协议。 - -您可能想要设置一种链接,当用户单击它时将启动 [foo] 应用程序。不是将“http”作为前缀,而是需要指定自定义协议,例如“foo”。理想情况下,链接类似如下: -``` -foo://some/info/here -``` - -操作系统必须知道如何处理协议。默认情况下,所有当前操作系统都知道“http”应由默认 Web 浏览器处理,“mailto”应由默认邮件客户端处理。有时,安装应用程序时,它们会向操作系统注册并告诉它针对特定协议启动应用程序。 - -例如,如果您安装 RV,则该应用程序向操作系统注册 `rvlink://`,并告知它 RV 将处理所有 `rvlink://` 协议请求以在 RV 中显示图像或镜头序列。因此,当用户单击以 `rvlink://` 开头的链接时(正如您可以在 {% include product %} 中执行的操作),操作系统将知道对该链接启动 RV,而该应用程序将解析链接并知道如何处理它。 - -有关 RV 如何充当 URL 和“rvlink”协议的协议处理程序的详细信息,请参见 [RV 用户手册](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_user_manual_rv_user_manual_chapter_c_html#c-2-installing-the-protocol-handler)。 - -# 注册协议 - -## 在 Windows 上注册协议 - -在 Windows 上,注册协议处理程序涉及修改 Windows 注册表。下面是您所需的注册表项的常规示例: - -``` -HKEY_CLASSES_ROOT -foo -(Default) = "URL:foo Protocol" -URL Protocol = "" -shell -open -command (Default) = "foo_path" "%1" -``` -目标 URL 如下所示: - -``` -foo://host/path... -``` - -> **注意:**有关详细信息,请参见 [http://msdn.microsoft.com/zh-cn/library/aa767914(VS.85).aspx](https://docs.microsoft.com/zh-cn/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914(v=vs.85)?redirectedfrom=MSDN)。 -> **Windows QT/QSetting 示例** - -如果您开发的应用程序是使用 QT(或 PyQT/PySide)框架编写的,可以利用 QSetting 对象来为您管理注册表项的创建。 - -自动让应用程序设置注册表项的代码如下所示: - -``` -// cmdLine points to the foo path. -//Add foo to the Os protocols and set foobar to handle the protocol -QSettings fooKey("HKEY_CLASSES_ROOT\\foo", QSettings::NativeFormat); -mxKey.setValue(".", "URL:foo Protocol"); -mxKey.setValue("URL Protocol", ""); -QSettings fooOpenKey("HKEY_CLASSES_ROOT\\foo\\shell\\open\\command", QSettings::NativeFormat); -mxOpenKey.setValue(".", cmdLine); -``` - -**通过 {% include product %} AMI 启动 Python 脚本的 Windows 示例** - -在本地运行的许多 AMI 可能选择通过 Python 解释器启动简单的 Python 脚本。这样,您可以使用 GUI(PyQT、PySide 或您选择的 GUI 框架)运行简单脚本甚至应用。让我们看一个实际示例来帮您入门。 - -**步骤 1:设置自定义“{% include product %}”协议** - -使用 Windows 注册表编辑器: - -``` -[HKEY_CLASSES_ROOT\{% include product %}] -@="URL:{% include product %} Protocol" -"URL Protocol"="" -[HKEY_CLASSES_ROOT\{% include product %}\shell] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open] -[HKEY_CLASSES_ROOT\{% include product %}\shell\open\command] -@="python""sgTriggerScript.py""%1" -``` - -此设置将注册 `{% include product %}://` 协议以启动 `python` 解释器,第一个参数为脚本 `sgTriggerScript.py`,第二个参数为 `%1`。 请务必了解,`%1` 将替换为在浏览器中单击的 URL 或调用的 AMI 的 URL。这将成为您的 Python 脚本的第一个参数。 - -> **注意:**您可能需要提供您的 Python 解释器和您的 Python 脚本的完整路径。请进行相应的调整。 - -**步骤 2:在您的 Python 脚本中解析传入 URL** - -在您的脚本中,您将获取提供的第一个参数 (URL),然后向下解析到其各个组成部分以了解调用 AMI 的上下文。我们在以下代码中提供了一些简单的基架,显示如何执行此操作。 - -**Python 脚本** - -``` -import sys -import urlparse -import pprint -def main(args): - # Make sure we have only one arg, the URL - if len(args) != 1: - return 1 - # Parse the URL: - protocol, fullPath = args[0].split(":", 1) - path, fullArgs = fullPath.split("?", 1) - action = path.strip("/") - args = fullArgs.split("&") - params = urlparse.parse_qs(fullArgs) - # This is where you can do something productive based on the params and the - # action value in the URL. For now we'll just print out the contents of the - # parsed URL. - fh = open('output.txt', 'w') - fh.write(pprint.pformat((action, params))) - fh.close() -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) -``` - -**步骤 3:使用您的自定义协议连接 {% include product %} 界面,并最终连接您的脚本** - -最后,在 {% include product %} 中创建其 URL 值为 `shotgrid://processVersion` 的 AMI。您可以将此 AMI 指定到您希望的任何实体类型,但此示例使用版本实体。 - -转到某个版本页面,右键单击一个版本并从菜单中选择您的 AMI。这应使您的浏览器打开 `shotgrid://` URL,此 URL 将通过注册的自定义协议重定向到您的脚本。 - -在您的脚本所在目录中的 `output.txt` 文件中,您现在应该会看到类似如下的内容: -``` -('processVersion', - {'cols': ['code', - 'image', - 'entity', - 'sg_status_list', - 'user', - 'description', - 'created_at'], - 'column_display_names': ['Version Name', - 'Thumbnail', - 'Link', - 'Status', - 'Artist', - 'Description', - 'Date Created'], - 'entity_type': ['Version'], - 'ids': ['6933,6934,6935'], - 'page_id': ['4606'], - 'project_id': ['86'], - 'project_name': ['Test'], - 'referrer_path': ['/detail/HumanUser/24'], - 'selected_ids': ['6934'], - 'server_hostname': ['patrick.shotgunstudio.com'], - 'session_uuid': ['9676a296-7e16-11e7-8758-0242ac110004'], - 'sort_column': ['created_at'], - 'sort_direction': ['asc'], - 'user_id': ['24'], - 'user_login': ['shotgun_admin'], - 'view': ['Default']}) -``` - -**可能的版本** - -通过变换您的 AMI 中 URL 的 `//` 部分后面的关键字,可以更改您的脚本中 `action` 变量的内容,同时保持相同的 `shotgrid://` 协议并且仅注册一个自定义协议。然后,根据 `action` 变量的内容和参数的内容,您的脚本可以获知预期行为应是什么。 - -通过使用此方法,您可以打开应用程序、通过 FTP 等服务上传内容、归档数据、发送电子邮件或生成 PDF 报告。 - -## 在 OSX 上注册协议 - -要在 OSX 上注册协议,需要创建配置为运行您的应用程序或脚本的 .app 包。 - -先在 AppleScript 脚本编辑器中编写以下脚本: - -``` -on open location this_URL - do shell script "sgTriggerScript.py '" & this_URL & "'" -end open location -``` - -> **提示:**为了确保从特定 Shell(如 tcsh)运行 Python,您可以更改 do shell script,如下所示: -> -> do shell script "tcsh -c \"sgTriggerScript.py '" & this_URL & "'\"" -In the Script Editor, save your short script as an “Application Bundle”. - -找到保存的应用程序包,并打开内容。然后打开 info.plist 文件,并将以下内容添加到 plist dict: -``` - CFBundleIdentifier - com.mycompany.AppleScript.Shotgun - CFBundleURLTypes - - - CFBundleURLName - Shotgun - CFBundleURLSchemes - - shotgun - - - -``` - -您可能需要更改以下三个字符串: -``` -com.mycompany.AppleScript.{% include product %} -{% include product %} -{% include product %} -``` - -第三个字符串是协议处理程序;因此 URL 为: - -``` -shotgrid://something -``` - - -最后,将您的 `.app` 包移到您的 Mac 上的 Applications 文件夹中。然后双击它,这将向操作系统注册您的协议。 - -数据流如下:在 {% include product %} 中单击 AMI 后,或单击以 `shotgrid://` 开头的 URL 后,`.app` 包将响应它,并将 URL 传递到您的 Python 脚本。此时,可以使用在 Windows 示例中所用的同一脚本,且所有相同的可能情况均适用。 - -## 在 Linux 上注册协议 - -使用以下代码: -``` -gconftool-2 -t string -s /desktop/gnome/url-handlers/foo/command 'foo "%s"' -gconftool-2 -s /desktop/gnome/url-handlers/foo/needs_terminal false -t bool -gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled true -t bool -``` -然后将您本地 GConf 文件中的设置用于以下文件中的全局默认设置: -``` -/etc/gconf/gconf.xml.defaults/%gconf-tree.xml -``` - -尽管仅在 GNOME 设置中进行更改,但对 KDE 也有效。Firefox 和 GNU IceCat 在遇到无法识别的前缀(例如 `foo://`)时会采用 gnome-open,无论运行的窗口管理器是什么。 因此,在这种情况下,其他浏览器(例如 KDE 中的 Konqueror)无法运行。 - -有关如何在 Ubuntu 中为动作菜单项设置协议处理程序的详细信息,请参见 [http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity](http://askubuntu.com/questions/527166/how-to-set-subl-protocol-handler-with-unity)。 \ No newline at end of file diff --git a/docs/zh_CN/action-menu-items/images/dv-asterisk.png b/docs/zh_CN/action-menu-items/images/dv-asterisk.png deleted file mode 100644 index c2fbed5a7..000000000 Binary files a/docs/zh_CN/action-menu-items/images/dv-asterisk.png and /dev/null differ diff --git a/docs/zh_CN/action-menu-items/images/dv-custom-amis-01-report-01.png b/docs/zh_CN/action-menu-items/images/dv-custom-amis-01-report-01.png deleted file mode 100644 index ce8d1afd6..000000000 Binary files a/docs/zh_CN/action-menu-items/images/dv-custom-amis-01-report-01.png and /dev/null differ diff --git a/docs/zh_CN/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png b/docs/zh_CN/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png deleted file mode 100644 index 010eda044..000000000 Binary files a/docs/zh_CN/action-menu-items/images/dv-custom-amis-04-ami-menu-03.png and /dev/null differ diff --git a/docs/zh_CN/action-menu-items/images/dv-custom-amis-05-add-ami-04.png b/docs/zh_CN/action-menu-items/images/dv-custom-amis-05-add-ami-04.png deleted file mode 100644 index 84dd36ce6..000000000 Binary files a/docs/zh_CN/action-menu-items/images/dv-custom-amis-05-add-ami-04.png and /dev/null differ diff --git a/docs/zh_CN/contribution.md b/docs/zh_CN/contribution.md deleted file mode 100644 index 6c692612b..000000000 --- a/docs/zh_CN/contribution.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: 贡献手册 -pagename: contribution-index -lang: zh_CN ---- - -# 贡献手册 - -为了尽量使我们的工作公开化,我们决定基于 [Creative Commons 许可](https://github.com/shotgunsoftware/developer-beta/blob/master/LICENSE.md)在一个公共库中构建开发人员文档。如果您有改进此文档的办法,欢迎您发出库的 Pull 请求并提供改进办法。要让我们接受 Pull 请求,您需跟我们签订下列贡献者协议之一: - -- [个人贡献协议](../all_langs/contribution/ind_contrib_agmt_for_shotgun_developer_documentation.pdf) -- [公司贡献协议](../all_langs/contribution/corp_contrib_agmt_for_shotgun_developer_documentation.pdf) - -提交上面一种协议后,您可以按照[自述文件](https://github.com/shotgunsoftware/developer-beta/#Making-a-change-to-the-documentation)中有关如何提交变更的说明进行操作。 diff --git a/docs/zh_CN/developer-overview.md b/docs/zh_CN/developer-overview.md deleted file mode 100644 index d138ba8d7..000000000 --- a/docs/zh_CN/developer-overview.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 开发人员概述 -pagename: developer-overview -lang: zh_CN ---- - -# 开发人员概述 - -### Python API - -{% include product %} 软件提供基于 Python 的 API,用于访问 {% include product %} 以及与其他工具相集成。API 遵循 CRUD 模式,允许在 {% include product %} 服务器上执行创建、读取、更新和删除动作。每个请求作用于单个实体类型,根据特定动作,可以定义过滤器、返回的列、排序信息以及一些其他选项。 - -* [代码库](https://github.com/shotgunsoftware/python-api) -* [文档](http://developer.shotgridsoftware.com/python-api/) -* [论坛](https://community.shotgridsoftware.com/c/pipeline/6) - -### 事件触发器框架 - -如果要访问 {% include product %} 事件流,首选方法是监视事件表、获取任何新事件并对其进行处理,然后重复上述动作。 - -需要执行许多工作才可顺利完成此流程,这些工作可能与需要应用的业务规则并无任何直接关系。 - -框架的作用是使业务逻辑实施者摆脱任何繁琐的监视任务。 - -该框架是一个守护进程,可在服务器上运行并监视 {% include product %} 事件流。找到事件时,守护进程会将事件分发给一系列注册的插件。每个插件可以根据情况处理事件。 - -* [代码库](https://github.com/shotgunsoftware/shotgunevents) -* [文档](https://github.com/shotgunsoftware/shotgunevents/wiki) - -### 动作菜单项框架 - -API 开发人员可以按实体自定义上下文菜单项。例如,在“版本”(Versions)页面中,可以选择多个版本,单击鼠标右键,然后...。生成 PDF 报告(例如)。我们将其称为动作菜单项 (AMI)。 - -* [文档]() -* [示例代码库](http://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html) diff --git a/docs/zh_CN/event-daemon/event-daemon-api.md b/docs/zh_CN/event-daemon/event-daemon-api.md deleted file mode 100644 index 282ac7c02..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-api.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: default -title: API -pagename: event-daemon-api -lang: zh_CN ---- - -# API - - -## registerCallbacks - -所有插件中的全局级别函数,用于告知框架有关插件中事件处理入口点的信息。 - -**registerCallbacks(reg)** - -* reg:您将与之进行交互,以告知框架要调用哪些函数的 [`Registrar`](#Registrar)。 - - - -## Registrar - -Registrar 是用于告知框架如何与插件交互的对象。它将传递到 [`registerCallbacks`](#registerCallbacks) 函数。 - -### 属性 - - -**logger** - -请参见 [`getLogger`](#getLogger)。 - -### 方法 - - -**getLogger** - -获取用于从插件中记录消息的 Python Logger 对象。 - - - -__setEmails(*emails)__ - -设置当此插件或其任何回调中发生错误时应接收错误和重要通知的电子邮件。 - -将电子邮件发送到配置文件中指定的默认地址(默认) - -```python -reg.setEmails(True) -``` - -禁用电子邮件(不建议执行此操作,因为您不会收到错误消息) - -```python -reg.setEmails(False) -``` - -向特定地址发送电子邮件,使用 - -```python -reg.setEmails('user1@domain.com') -``` - -或 - -```python -reg.setEmails('user1@domain.com', 'user2@domain.com') -``` - - -**registerCallback(sgScriptName, sgScriptKey, callback, matchEvents=None, args=None, stopOnError=True)** - -将回调注册到此插件的插件。 - -* `sgScriptName`:从 {% include product %} 脚本页面获取的脚本的名称。 -* `sgScriptKey`:从 {% include product %} 脚本页面获取的脚本的应用程序密钥。 -* `callback`:具有 `__call__` 方法的函数或对象。请参见 [`exampleCallback`](#exampleCallback)。 -* `matchEvents`:要传递到回调的事件的过滤器。 -* `args`:希望框架重新传递到回调的任何对象。 -* `stopOnError`:布尔值,此回调中出现异常会导致此插件中的所有回调停止处理事件。默认值为 `True`。 - -`sgScriptName` 用于标识 {% include product %} 的插件。任何名称都可以在任意数量的回调之间共享,也可以是单个回调的唯一名称。 - -`sgScriptKey` 用于标识 {% include product %} 的插件,且应该是指定 `sgScriptName` 的相应键。 - -当与过滤器匹配的事件需要处理时,将调用指定的回调对象。虽然任何可调用类都应该能够运行,但不建议使用此处的类。使用具有 `__call__` 方法的函数或实例更为合适。 - -`matchEvent` 参数是一个过滤器,用于指定将要注册的回调感兴趣的事件。如果未指定 `matchEvents` 或指定“无”,则所有事件都将传递到回调。否则,`matchEvents` 过滤器中的每个键都是一个事件类型,而每个值是可能的属性名称的列表。 - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], -} -``` - -可以有多个事件类型或属性名称 - -```python -matchEvents = { - 'Shotgun_Task_Change': ['sg_status_list'], - 'Shotgun_Version_Change': ['description', 'sg_status_list'] -} -``` - -可以对具有给定属性名称的任何事件类型进行过滤 - -```python -matchEvents = { - '*': ['sg_status_list'], -} -``` - -还可以针对给定事件类型的任何属性名称进行过滤 - -```python -matchEvents = { - 'Shotgun_Version_Change': ['*'] -} -``` - -尽管以下内容是有效的且功能相当于不指定任何内容,但它实际上毫无用处 - -```python -matchEvents = { - '*': ['*'] -} -``` - -与非特定于字段的事件类型(如“_New”或“_Retirement”)进行匹配时,不提供列表,而是将 `None` 作为值进行传递。 - -```python -matchEvents = { - 'Shotgun_Version_New': None -} -``` - -事件框架本身不会使用 `args` 参数,而只是将其重新传递到回调,不进行任何修改。 - -{% include info title="注意" content="使用 `args` 参数,您可以在 [`registerCallbacks`](#registerCallbacks) 函数中处理耗时的内容,并在处理事件时将其重新传递给您。" %} - -`args` 参数的另一个用途是在公用的可变参数(例如 `dict`)中传递给多个回调,使其共享数据。 - -`stopOnError` 参数会告知系统此回调中的异常是否会导致插件中所有回调的事件处理停止。默认情况下,此参数为 `True`,但可以切换为 `False`。如果存在任何错误但事件处理不停止,您仍会收到错误通知邮件。根据回调设置,您可以具有一些关键回调,对于这些回调,此参数为 `True`,对于其他回调则为 `False`。 - - -## 回调 - -[`Registrar.registerCallback`](#registerCallback) 注册的任何插件入口点通常为如下所示的全局级别函数: - - -**exampleCallback(sg, logger, event, 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 deleted file mode 100644 index bb5bd52f8..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-configuration.md +++ /dev/null @@ -1,398 +0,0 @@ ---- -layout: default -title: 配置 -pagename: event-daemon-configuration -lang: zh_CN ---- - -# 配置 - -以下手册将帮助您为您的工作室配置 {% include product %}Events。 - -{% include product %}Events 的大部分配置由 `shotgunEventDaemon.conf` 文件控制。在此文件中,您将发现多个可以根据自己的需求进行修改的设置。大多数设置都具有适用于大多数工作室的默认值,但是,有些设置必须进行配置(特别是 {% include product %} 服务器 URL、脚本名称和应用程序密钥,以便 {% include product %}EventDaemon 可以连接到 {% include product %} 服务器)。 - -{% include info title="注意" content="**对于 Windows:**Windows 用户需要将配置文件中的所有路径更改为等效的 Windows 路径。为了简化起见,我们建议将所有路径(包括日志记录)保留在一个位置。在提及 Windows 路径时,本文档往往是指 `C:\shotgun\shotgunEvents`。" %} - - -## 编辑 shotgunEventDaemon.conf - -安装 {% include product %}Events 后,下一步是在文本编辑器中打开 `shotgunEventDaemon.conf` 文件,然后修改设置以符合您工作室的需求。默认值适用于大多数工作室,但某些设置没有默认值,您需要提供值才能运行进程。 - -您*必须*提供的项包括: - -- {% include product %} 服务器 URL -- 用于连接到 {% include product %} 的脚本名称和应用程序密钥 -- 用于运行 {% include product %}EventDaemon 的插件的完整路径 - -(可选)您还可以指定 SMTP 服务器和特定于电子邮件的设置,以设置有关错误的电子邮件通知。这是可选的,但如果您选择进行此设置,则必须提供电子邮件部分中的所有配置值。 - -还有一个可选的计时日志部分,如果进程遇到性能问题,该日志有助于进行疑难解答。启用计时日志记录将使用计时信息填充自己单独的日志文件。 - - -### {% include product %} 设置 - -在 `[{% include product %}]` 部分下,将默认令牌替换为 `server`、`name` 和 `key` 的正确值。这些值应与您为连接到 {% include product %} 的标准 API 脚本提供的值相同。 - -示例 - -``` -server: https://awesome.shotgunstudio.com -name: {% include product %}EventDaemon -key: e37d855e4824216573472846e0cb3e49c7f6f7b1 -``` - - -### 插件设置 - -您需要告知 {% include product %}EventDaemon 在何处查找要运行的插件。在 `[plugins]` 部分下,将默认令牌替换为 `paths` 的正确值。 - -您可以指定多个位置(如果您有多个部门或库使用进程,这可能会很有用)。此处的值必须是指向可读取的现有目录的完整路径。 - -示例 - -``` -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 文件放置在其他目录中,建议您从当前目录创建它的符号链接。 - -{% include info title="注意" content="如果出于某种原因,上述内容对您不适用,配置文件的搜索路径将位于 `shotgunEventDaemon.py` 脚本底部的 `_getConfigPath()` 函数中" %} - -{% include info title="注意" content="**对于 Windows:**`/etc` 在 Windows 上不存在,因此配置文件应放在与 Python 文件相同的目录中。" %} - - -## 测试进程 - -进程可能很难测试,因为它们在后台运行。并非始终有明显的方法来查看它们正在执行的操作。幸运的是,对于我们而言,{% include product %}EventDaemon 有一个选项可以将其作为前台进程运行。现在我们已完成最低要求的设置,接下来我们来测试进程并查看具体情况。 - -{% include info title="注意" content="此处使用的默认值可能需要根访问权限(例如,写入到 /var/log 目录)。所提供的示例使用 `sudo` 来适应这一情况。" %} - -``` -$ sudo ./{% include product %}EventDaemon.py foreground -INFO:engine:Using {% include product %} version 3.0.8 -INFO:engine:Loading plugin at /usr/local/shotgun/{% include product %}Events/src/examplePlugins/logArgs.py -INFO:engine:Last event id (248429) from the {% include product %} database. -``` - -您应该会在启动脚本时看到上面的行(一些详细信息可能明显不同)。如果您收到任何错误,脚本将终止,因为我们选择在前台运行它,可以看到该情况发生。下面显示了遇到困难时的一些常见错误。 - -`logArgs.py` 插件仅提取 {% include product %} 中发生的事件并将其传递到日志记录程序。这并不是一件令人兴奋的事,但它是确保脚本正常运行且插件正常工作的简单方法。如果您所在的工作室很忙碌,您可能已经注意到消息流的快速流动。如果没有,请在 Web 浏览器中登录到 {% include product %} 服务器并更改某些值或创建内容。您应该看到已输出到终端窗口的日志语句,对应于您使用更改生成的事件类型。 - -{% include info title="注意" content="logArgs.py 文件中包含需要用适当值填充的变量。必须对“$DEMO_SCRIPT_NAMES$”和“$DEMO_API_KEY$”进行编辑,以包含在 shotgunEventDaemon.conf 文件中使用的相同值,以便日志记录能够正常运行。" %} - -如果没有任何内容记录到日志文件中,请在 {% include product %}EventDaemon.conf 中检查与日志相关的设置,确保将 ``logging`` 值设置为记录 INFO 级别的消息, - -``` -logging: 20 -``` - -logArgs 插件也配置为显示 INFO 级别的消息。在 registerCallbacks() 方法的末尾应该有如下一行 - -```python -reg.logger.setLevel(logging.INFO) -``` - -假设所有内容看起来都正常,要停止 {% include product %}EventDaemon 进程,只需在终端中键入 `-c`,您应该会看到脚本终止。 - - -## 运行进程 - -假设测试进展顺利,我们现在可以在后台按预期运行进程。 - -``` -$ sudo ./{% include product %}EventDaemon.py start -``` - -您应该看不到任何输出,并且控制应该已经在终端中返还给您。我们可以通过两种方式确保运行正常。第一种是检查正在运行的进程,并查看这是否是其中一个进程。 - -``` -$ ps -aux | grep shotgunEventDaemon -kp 4029 0.0 0.0 2435492 192 s001 R+ 9:37AM 0:00.00 grep shotgunEventDaemon -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 -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -``` - -返回到 Web 浏览器并对实体进行一些更改。然后返回到终端并查找输出。您应看到类似以下的内容 - -``` -2011-09-09 09:42:44,003 - engine - INFO - Using {% include product %} version 3.0.8 -2011-09-09 09:42:44,006 - engine - INFO - Loading plugin at /usr/local/shotgun/{% include product %}/src/plugins/logArgs.py -2011-09-09 09:42:44,199 - engine - DEBUG - Starting the event processing loop. -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 %} 进程的一项功能。日志每晚在午夜轮换,每个插件保留十个每日文件。 - - -## 常见错误 - -下面介绍可能遇到的一些常见错误以及如何解决这些错误。如果您真的很难找到,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -### 无效路径:$PLUGIN_PATHS$ - -您需要在 shotgunEventDaemon.conf 文件中指定插件的路径。 - -### 权限被拒绝:“/var/log/shotgunEventDaemon” - -进程无法打开日志文件进行写入。 - -您可能需要使用 `sudo` 运行进程,或者以对 shotgunEventDaemon.conf 中的 `logPath` 和 `logFile` 设置所指定的日志文件具有写入权限的用户身份运行进程。(默认位置为 `/var/log/shotgunEventDaemon`,通常由 root 用户所有。) - -### ImportError:没有名为 shotgun_api3 的模块 - -未安装此 {% include product %} API。确保它位于当前目录或 `PYTHONPATH` 中的目录中。 - -如果必须以 sudo 身份运行,并且您认为 `PYTHONPATH` 设置正确,请记住 sudo 会重置环境变量。您可以编辑 sudoers 文件以保留 `PYTHONPATH` 或运行 sudo -e(?) - - -## 配置文件设置列表 - - -### 进程设置 - -以下是常规进程操作设置。 - -**pidFile** - -pidFile 是进程在运行时存储其进程 ID 的位置。如果在进程运行时移除此文件,则它在下次完成事件处理循环之后将完全关闭。 - -该目录必须已存在且可写。您可以随意命名该文件,但强烈建议您使用默认名称,因为它与正在运行的进程匹配 - -``` -pidFile: /var/log/shotgunEventDaemon.pid -``` - -**eventIdFile** - -eventIdFile 指向进程将存储上次处理的 {% include product %} 事件 ID 的位置。这将允许进程在上次关闭时停止的位置继续,因此不会丢失任何事件。如果要忽略自上次进程关闭后的任何事件,请在启动进程之前移除此文件,进程将仅处理在启动后创建的新事件。 - -此文件将记录*每个*插件的最后一个事件 ID,并以 pickle 格式存储此信息。 - -``` -eventIdFile: /var/log/shotgunEventDaemon.id -``` - -**logMode** - -日志记录模式可以设置为以下两个值之一: - -- **0** = 所有日志消息位于主日志文件中 -- **1** = 插件 (engine) 一个主文件,每个插件一个文件 - -当使用值 **1** 时,插件本身生成的日志消息将记录到由 `logFile` 配置设置指定的主日志文件。任何由插件记录的消息都将放置在名为 `plugin.` 的文件中。 - -``` -logMode: 1 -``` - -**logPath** - -放置日志文件的路径(主插件和插件日志文件)。主日志文件的名称由下面的 ``logFile`` 设置控制。 - -``` -logPath: /var/log/shotgunEventDaemon -``` - -{% include info title="注意" content="shotgunEventDaemon 必须具有此目录的写入权限。在典型设置中,进程设置为在计算机启动时自动运行并在当时被授予根权限。" %} - -**logFile** - -主进程日志文件的名称。日志记录配置为最多存储 10 个日志文件,每晚在午夜进行轮换。 - -``` -logFile: shotgunEventDaemon -``` - -**日志记录** - -发送到日志文件的日志消息的阈值级别。此值是主分派插件的默认值,可以基于每个插件覆盖该值。此值将传递到 Python 日志记录模块。最常用的值为: -- **10:**调试 -- **20:**信息 -- **30:**警告 -- **40:**错误 -- **50:**关键 - -``` -logging: 20 -``` - -**timing_log** - -通过将此值设置为 `on` 启用计时日志记录将单独生成一个包含计时信息的日志文件,这应该有助于解决与进程相关的性能问题。 - -为每个回调调用提供的计时信息如下所示: - -- **event_id** 触发回调的事件的 ID -- **created_at** 在 {% include product %} 中创建事件时的时间戳(采用 ISO 格式) -- **callback** 调用的回调的名称(采用 `plugin.callback` 格式) -- **start** 回调处理开始时的时间戳(采用 ISO 格式) -- **end** 回调处理结束时的时间戳(采用 ISO 格式) -- **duration** 回调处理的持续时间(采用 `DD:HH:MM:SS.micro_second` 格式) -- **error** 回调是否失败。该值可以为 `False` 或 `True`。 -- **delay** 事件创建与回调开始处理之间的延迟的持续时间(采用 `DD:HH:MM:SS.micro_second` 格式)。 - -**conn_retry_sleep** - -如果连接到 {% include product %} 失败,则这是重新尝试连接之前等待的秒数。网络偶尔出现小问题、服务器重新启动、应用程序维护等情况下会用到此设置。 - -``` -conn_retry_sleep = 60 -``` - -**max_conn_retries** - -记录错误级别消息之前重试连接的次数(如果在下面配置了电子邮件通知,可能会发送电子邮件)。 - -``` -max_conn_retries = 5 -``` - -**fetch_interval** - -在处理完每批事件后请求新事件之前等待的秒数。通常不需要调整此设置。 - -``` -fetch_interval = 5 -``` - - -### {% include product %} 设置 - -以下是与 {% include product %} 实例相关的设置。 - -**server** - -要连接到的 {% include product %} 服务器的 URL。 - -``` -server: %(SG_ED_SITE_URL)s -``` - -{% include info title="注意" content="此处没有默认值。将 `SG_ED_SITE_URL` 环境变量设置为 ShotGrid 服务器的 URL(即 https://awesome.shotgunstudio.com)" %} - -**name** - -{% include product %}EventDaemon 应连接的 {% include product %} 脚本名称。 - -``` -name: %(SG_ED_SCRIPT_NAME)s -``` - -{% include info title="注意" content="此处没有默认值。将 `SG_ED_SCRIPT_NAME` 环境变量设置为 ShotGrid 服务器的脚本名称(即 `shotgunEventDaemon`)" %} - -**key** - -上面指定的脚本名称的 {% include product %} 应用程序密钥。 - -``` -key: %(SG_ED_API_KEY)s -``` - -{% include info title="注意" content="此处没有默认值。将 `SG_ED_API_KEY` 环境变量设置为上述脚本名称的应用程序密钥(即:`0123456789abcdef0123456789abcdef01234567`)" %} - -**use_session_uuid** - -从 {% include product %} 实例中的每个事件设置 session_uuid,以在插件生成的任何事件中传播。这样,{% include product %} UI 可以显示因插件而导致的更新。 - -``` -use_session_uuid: True -``` - -- 此功能需要 {% include product %} 服务器 v2.3+。 -- 此功能需要 {% include product %} API v3.0.5+。 - -{% include info title="注意" content="ShotGrid UI 将*仅*显示繁殖原始事件的浏览器会话的实时更新。其他打开相同页面的浏览器窗口不会看到实时更新。" %} - - -### 插件设置 - -**路径** - -以逗号分隔的完整路径列表,框架应在其中查找要加载的插件。请勿使用相对路径。 - -``` -paths: /usr/local/shotgun/plugins -``` - -{% include info title="注意" content="此处没有默认值。您必须将该值设置为插件文件的位置(即:`/usr/local/shotgun/shotgunEvents/plugins` 或 `C:\shotgun\shotgunEvents\plugins`(在 Windows 上))" %} - - -### 电子邮件设置 - -这些参数用于错误报告,因为我们发现您不会一直在跟踪日志,而是会有一个活动的通知系统。 - -如果下面提供了所有设置,则会通过电子邮件报告级别 40 (ERROR) 以上的任何错误。 - -必须提供所有这些值,才能发出电子邮件警告。 - -**server** - -应该用于 SMTP 连接的服务器。可以取消注释用户名和密码值,以便为 SMTP 连接提供凭据。如果服务器不使用身份认证,您应注释掉 `username` 和 `password` 的设置 - -``` -server: smtp.yourdomain.com -``` - -{% include info title="注意" content="此处没有默认值。必须使用您的 SMTP 服务器的地址替换 smtp.yourdomain.com 令牌(即 `smtp.mystudio.com`)." %} - -**username** - -如果 SMTP 服务器需要身份认证,请取消注释此行,并确保已使用连接到 SMTP 服务器所需的用户名配置 `SG_ED_EMAIL_USERNAME` 环境变量。 - -``` -username: %(SG_ED_EMAIL_USERNAME)s -``` - -**password** - -如果 SMTP 服务器需要身份认证,请取消注释此行,并确保已使用连接到 SMTP 服务器所需的密码配置 `SG_ED_EMAIL_PASSWORD` 环境变量。 - -``` -password: %(SG_ED_EMAIL_PASSWORD)s -``` - -**from** - -应在电子邮件中使用的发件人地址。 - -``` -from: support@yourdomain.com -``` - -{% include info title="注意" content="此处没有默认值。必须将 `support@yourdomain.com` 替换为有效值(即 `noreply@mystudio.com`)." %} - -**to** - -应将这些警告发送到的电子邮件地址的逗号分隔列表。 - -``` -to: you@yourdomain.com -``` - -{% include info title="注意" content="此处没有默认值。必须将 `you@yourdomain.com` 替换为有效值(即 `shotgun_admin@mystudio.com`)." %} - -**subject** - -电子邮件主题前缀,可供邮件客户端使用,以帮助排除 {% include product %} 事件框架发送的警告。 - -``` -subject: [SG] -``` diff --git a/docs/zh_CN/event-daemon/event-daemon-example-plugins.md b/docs/zh_CN/event-daemon/event-daemon-example-plugins.md deleted file mode 100644 index 2ded96bab..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-example-plugins.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: 示例插件 -pagename: event-daemon-example-plugins -lang: zh_CN ---- - -# 示例插件 - -源代码中有一个[示例插件的文件夹](https://github.com/shotgunsoftware/shotgunEvents/tree/master/src/examplePlugins)。 - -此页面包含几个简单的示例,可供任何人入门使用。您可以复制/粘贴此代码,它应该可以正常运行(注意:您需要将 `script_name` 和 `script_key` 值更新为特定于您的安装的内容) - -首先,这里有一个模板,所有 SG 事件代码都应基于此模板编写 -## 1. 代码模板 -### 复制/粘贴此代码以在新插件上使用 -```python -""" -Necessary Documentation of the code - -Author: You -Template Author: Andrew Britton -""" - -def registerCallbacks(reg): - # This takes the form of: - # matchEvents = {'Shotgun_Entity_EventType': ['list', 'of', 'field', 'names', 'you', 'need', 'sg_custom_field']} - # the 'id' is always returned, in addition to any fields specifically requested by your callback - matchEvents = { - 'Shotgun_Task_Change': ['content'] - } - - # script_name and script_key are defined by you whenever you create a SG script - # the entry_function_call refers to the function that performs the work of the event plugin - reg.registerCallback('script_name', 'script_key', entry_function_call, matchEvents, None) - - -# This gives you -# shotgun handle = sg -# a logger object... please use this instead of python print, especially if you respect your time and your fellow developers -# an event object... this is the metadata that describes what's happening with the particular event. -# some very good information comes from the event['meta'] object, below is the example event['meta'] data from the subject renamer plugin -# { -# "type": "attribute_change", -# "attribute_name": "subject", -# "entity_type": "Note", -# "entity_id": 2, -# "field_data_type": "text", -# "old_value": "My Note Subject", -# "new_value": "2017-05 May-09 - My Note Subject" -# } -def entry_function_call(sg, logger, event, args): - # Now do stuff - pass -``` -## 2. 注释主题重命名 -### 使用 `New` 实体事件 -这是一个很好的起点,因为它很简单,而且还能处理捕捉 `Shotgun_Entity_New` 事件的棘手方面... -```python -import time -from pprint import pprint - -def registerCallbacks(reg): - matchEvents = { - 'Shotgun_Note_New': ['*'], - } - - reg.registerCallback('script_name', 'script_key', Function_Name, matchEvents, None) - - -def Function_Name(sg, logger, event, args): - # 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") - asset_id = event['meta']['entity_id'] - asset_type = event['meta']['entity_type'] - - asset = sg.find_one(asset_type, [['id', 'is', asset_id]], ['subject']) - if asset['subject'] is None: - current_name = current_date + ' - ' + event['project']['name'] + ' - ' + event['user']['name'] - else: - current_name = current_date + ' - ' + asset['subject'] - - # Modify ALL notes except those in 'Software Development' - if event['project'] == None: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - return - - if event['project']['id'] != 116: - logger.info('Updated Note ID is #%d, and is being prepended with "%s"', asset_id, current_date) - logger.info(event) - sg.update(asset_type, asset_id, {'subject': current_name}) - - else: - 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 - -""" -Create a Note when a field is deleted - -Author: Andrew Britton -""" - -def registerCallbacks(reg): - """ - fn: registerCallbacks - @brief required function. It connects to the event daemon and calls the trashedFieldWarning Function. - It runs every time a field is deleted (retired) - - @param[in] reg variable that is required by shotgun event daemon plugins - @return none - """ - matchEvents = { - 'Shotgun_DisplayColumn_Retirement': ['*'] - } - - reg.registerCallback('script_name', 'script_key', - trashedFieldWarning, matchEvents, None) - - -def CreateNote(sg, logger, event): - constants = {'note header': ':: FIELD DELETION :: '} - def GetListOfPipelineUsers(): - pipeline_users = sg.find('Group', [['code', 'is', 'People_Who_Need_to_Know']], ['code', 'users', 'addressings_to', - 'sg_ticket_type', 'sg_priority']) - return pipeline_users[0]['users'] - - def CreateToolsNote(): - # Note to members of the pipeline group - # Body text = CreateNoteRequestText() - # Date Created = event['event']['created_at'] - # Created By = event['user']['id'] - # Project = Software Development['id'] - # Subject = ':: Field Delete Warning :: ' + event['entity']['name'] - note_data = { - 'project': {'type': 'Project', 'id': 'ID OF PROJECT WHERE YOU WANT THE NOTE REPORTED TO'}, - # ex: 'project': {'type': 'Project', 'id': 2}, - 'content': CreateNoteRequestText(), - 'created_at': event['created_at'], - 'created_by': event['user'], - 'addressings_to': GetListOfPipelineUsers(), - 'subject': constants['note header'] + event['meta']['display_name'] - } - - sg.create('Note', note_data) - - def CreateNoteRequestText(): - OUT = '' - - # Tool Name = event['entity']['name'] - # sg_assigned_to = members of the pipeline group - # Description = linked Ticket decription - # Project = decided in GUI - # sg_sg_request_ticket = event['entity']['id'] - # task_template = Software task template - # Software Projects = defined in GUI - - OUT = '::FIELD DELETION WARNING::\n' - OUT += ':: A Field was deleted ::\n' - OUT += ':: It was called %s ::\n'%event['meta']['display_name'] - - return OUT - - logger.info('::WARNING:: A FIELD has been deleted') - CreateToolsNote() - - -def trashedFieldWarning(sg, logger, event, args): - """ - fn: finalizeTasksFromShot - @brief Function to create and send a warning note, via SG, whenever a field is deleted - event['entity']['id'] yields the id of the current entity that was caught by the plugin as having been changed. - ie. this is the id of the field that was just deleted - - @param[in] sg defines the Shotgun handle to access the database - @param[in] logger sets logging messages to the shotgun event daemon - @param[in] event the collection of shots that have changed - @param[in] args useless variable for this particular function - @return none - """ - - if event['meta']['entity_type'] == 'DisplayColumn': - logger.info('This DisplayColumn was deleted %s', event['meta']['display_name']) - if event['event_type'] == 'Shotgun_DisplayColumn_Retirement': - logger.info('The incoming event call is for deleting a field from an entity. Field name: %s', event['meta']['display_name']) - - # logger.info(' TEST ') - # logger.info('Deleted Field ID is #%d, and is called: %s', event['entity']['id'], event['entity']['name']) - - 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 deleted file mode 100644 index ac03bd7be..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-installation.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default -title: 安装 -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 %} 服务器的网络访问权限 - - -## 安装 {% include product %} API - -假设您的计算机上已安装 Python,现在需要安装 {% include product %} Python API,以便 {% include product %} Event 进程可以使用它来连接您的 {% include product %} 服务器。您可以通过多种方式完成此操作: - -- 将它与 {% include product %} Event 进程置于同一目录中 -- 将它放在 [`PYTHONPATH` 环境变量](http://docs.python.org/tutorial/modules.html)指定的某个目录中。 - -要测试 {% include product %} API 是否正确安装,请观察终端窗口: - -``` -$ python -c "import shotgun_api3" -``` - -终端窗口不应输出任何内容。如果您看到类似于以下输出的内容,则请检查 `PYTHONPATH` 的设置是否正确无误,或 {% include product %} API 是否位于当前目录中。 - -``` -$ python -c "import shotgun_api3" -Traceback (most recent call last): -File "", line 1, in -ImportError: No module named shotgun_api3 -``` - - -## 安装 {% include product %}Events - -{% include product %}Events 的安装位置完全由您决定。同样,只要计算机上安装了 Python 和 {% include product %} API,并且计算机具有 {% include product %} 服务器的网络访问权限,就可以从任意位置运行。但是,如果安装位置能够为工作室提供方便,那自然是再好不过了,比如说 `/usr/local/shotgun/shotgunEvents` 就很方便。因此,下面我们就以此为例进行介绍。 - -请访问 GitHub 获取源和归档:[https://github.com/shotgunsoftware/shotgunEvents]() - -{% include info title="注意" content="**对于 Windows:**如果有 Windows 服务器,那么您可以使用 `C:\shotgun\shotgunEvents`,但是,在本文档中,我们使用的是 Linux 路径。" %} - - -### 克隆源 - -如果已在计算机上安装 `git`,那么抓取源时最简单方法就是克隆项目。这样,您还可以轻松获取所有已承诺的更新,以确保您随时获取错误修复和新功能。 - -``` -$ cd /usr/local/shotgun -$ git clone git://github.com/shotgunsoftware/shotgunEvents.git -``` - -{% include info title="警告" content="请务必确保先备份您的配置、插件和对 shotgunEvents 所做的任何修改,然后再通过 GitHub 引入更新,以免数据丢失。或者,您也可以自己 Fork 项目,以便保留自己的更改存储库。:)" %} - - -### 下载归档 - -如果您的计算机上没有 `git`,或者您只是想下载源的归档,则可以按照以下步骤进行操作。 - -- 转到 [https://github.com/shotgunsoftware/shotgunEvents/archives/master]() -- 下载所需格式的源 -- 将其保存到计算机 -- 将文件提取到 `/usr/local/shotgun` 目录 -- 将 `/usr/local/shotgun/shotgunsoftware-shotgunEvents-xxxxxxx` 目录重命名为 `/usr/local/shotgun/shotgunEvents` - -#### 将归档提取到 `/usr/local/shotgun`。 - -对于.tar.gz 归档: - -``` -$ tar -zxvf shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.tar.gz -C /usr/local/shotgun -``` - -对于.zip 归档: - -``` -$ unzip shotgunsoftware-shotgunEvents-v0.9-12-g1c0c3eb.zip -d /usr/local/shotgun -``` - -然后,您可以将 GitHub 指定的目录名称重命名为 `shotgunEvents`: - -``` -$ mv shotgunsoftware-shotgunEvents-1c0c3eb shotgunEvents -``` - -现在,您应该可以看到如下所示的内容: - -``` -$ ls -l /usr/local/shotgun/shotgunEvents -total 16 --rw-r--r-- 1 kp wheel 1127 Sep 1 17:46 LICENSE --rw-r--r-- 1 kp wheel 268 Sep 1 17:46 README.mkd -drwxr-xr-x 9 kp wheel 306 Sep 1 17:46 docs -drwxr-xr-x 6 kp wheel 204 Sep 1 17:46 src -``` - - -### 安装要求 - -在库的根目录下提供了一个 `requirements.txt` 文件。您应使用此文件来安装所需的软件包。 - -``` -$ pip install -r /path/to/requirements.txt -``` - - - -### Windows 特定注意事项 - -Windows 系统上需要具有以下其中一项: - -* 已安装 [PyWin32](http://sourceforge.net/projects/pywin32/) 的 Python -* [Active Python](http://www.activestate.com/activepython) - -Active Python 附带 PyWin32 模块,在集成 {% include product %} Event 进程和 Windows 服务架构时,需要用到此模块。 - -然后,您可以通过运行以下命令,以服务的形式来安装进程(假设 `C:\Python27_32\python.exe` 是 Python 可执行文件的路径,根据具体情况加以调整): - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py install -``` - -或通过以下方式予以移除: - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py remove -``` - -借助常规服务管理工具或以下命令行,即可启动和停止服务: - -``` -> C:\Python27_32\python.exe shotgunEventDaemon.py start -> C:\Python27_32\python.exe shotgunEventDaemon.py stop -``` - -大多数情况下,您都需要确保以系统管理用户的身份运行列出的每一个命令。为此,您可以右键单击 cmd 应用程序并选择“以管理员身份运行”。 - -{% include info title="注意" content="如果您已在 Windows 上的网络位置安装了该进程,或者已将该进程配置为从网络位置读取和写入日志及其他资源,则您必须编辑服务的属性,将运行服务的用户从本地计算机帐户更改为能够访问网络资源的域帐户。" %} diff --git a/docs/zh_CN/event-daemon/event-daemon-plugins.md b/docs/zh_CN/event-daemon/event-daemon-plugins.md deleted file mode 100644 index 21100c619..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-plugins.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: 插件 -pagename: event-daemon-plugins -lang: zh_CN ---- - -# 插件概述 - -插件文件是配置文件中指定的插件路径中的任何 *.py* 文件。 - -在您下载的代码中,`src/examplePlugins` 文件夹中提供了一些示例插件。其中通过简单的示例介绍了如何构建自己的插件来查找所生成的特定事件,并对这些事件执行操作,从而更改 {% include product %} 实例上的其他值。 - -您无需在每次更新插件后重新启动进程,因为进程将检测插件是否已更新并自动重新加载插件。 - -即使插件发生错误,也不会导致进程崩溃。系统会禁用发生错误的插件,直到其再次更新(可能已修复)时才会启用。其他所有插件将继续运行,并继续处理事件。进程将对故障插件成功处理的最后一个事件的 ID 加以跟踪。此插件更新(可能已修复)后,进程将重新加载此插件,并尝试从插件之前停止的位置处理事件。当一切恢复正常之后,进程会促使插件赶上当前事件处理进度,然后继续以正常方式处理所有插件的事件。 - -{% include product %} 事件处理插件有两个主要部分:回调注册函数和任意数量的回调。 - - -## registerCallbacks 函数 - -要想由框架加载插件,此插件至少应执行以下函数: - -```python -def registerCallbacks(reg): - pass -``` - -该函数的作用是,告诉事件处理系统需要调用哪些函数来处理事件。 - -此函数应使用一个参数,即 [`Registrar`](./event-daemon-api.md#Registrar) 对象。 - -[`Registrar`](./event-daemon-api.md#Registrar) 拥有一个非常重要的方法:[`Registrar.registerCallback`](./event-daemon-api.md#registercallback)。 - -对于每个需要处理 {% include product %} 事件的函数,应使用相应的参数调用 [`Registrar.registerCallback`](./event-daemon-api.md#registerCallback) 一次。 - -您可以根据需要注册任意数量的函数,而不需要将文件中的所有函数注册为事件处理回调。 - - -## 回调 - -通过系统注册的回调必须使用四个参数: - -- 一个 {% include product %} 连接实例,用于查询 {% include product %} 以获取更多信息。 -- 一个 Python Logger 对象,用于报告。错误和关键消息将通过电子邮件发送给任何已配置的用户。 -- 要处理的 {% include product %} 事件。 -- 在回调注册时传入的 `args` 值。(请参见 [`Registrar.registerCallback`](./event-daemon-api.md#wiki-registerCallback)) - -{% include info title="警告" content="您可以在插件中采取任何操作,但如果导致框架出现任何异常,系统将停用故障回调(及所有内含回调)所在的插件,直至磁盘上的文件发生变化(显示“已修复”)。" %} - - -## 日志记录 - -建议不要在事件插件中使用输出语句。而应使用 Python 标准库中的标准日志记录模块。系统会向您的众多函数提供一个日志记录程序对象 - -```python -def registerCallbacks(reg): - reg.setEmails('root@domain.com', 'tech@domain.com') # Optional - reg.logger.info('Info') - reg.logger.error('Error') # ERROR and above will be sent via email in default config -``` - -并且 - -```python -def exampleCallback(sg, logger, event, args): - logger.info('Info message') -``` - -如果事件框架作为进程运行,则其会记录到文件,否则,将记录到标准输出。 - - -## 构建强大的插件 - -该进程针对 {% include product %} 运行查询,但进程具有内置功能,可在 find() 命令无法生效时重试此命令,从而为进程本身赋予一定的稳定性。 - -[https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456](https://github.com/shotgunsoftware/shotgunEvents/blob/master/src/shotgunEventDaemon.py#L456) - -如果插件需要网络资源(即 {% include product %} 或其他资源),则需要自行提供重试机制/稳定性。如果通过 {% include product %} 进行访问,您可以关闭进程中的内容,并生成可向插件提供相应功能的辅助函数或类。 - -{% include product %} Python API 确实能够针对网络问题进行一定程度的重试,但是对于需要运行好几分钟的 {% include product %} 维护窗口,或者临时网络故障,该 API 可能就捉襟见肘了。 - -[https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554](https://github.com/shotgunsoftware/python-api/blob/master/shotgun_api3/shotgun.py#L1554) - -根据插件的用途,还可以注册该插件,以便在处理事件时遇到问题之际,保持平稳推进。了解 registerCallback 函数的 stopOnError 参数: - -[https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#wiki-registerCallback) - -{% include info title="注意" content="插件不会停止运行,但不会在出现故障时进行重试。"%} diff --git a/docs/zh_CN/event-daemon/event-daemon-technical-details.md b/docs/zh_CN/event-daemon/event-daemon-technical-details.md deleted file mode 100644 index e0cdf9402..000000000 --- a/docs/zh_CN/event-daemon/event-daemon-technical-details.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: default -title: 技术细节 -pagename: event-daemon-technical-details -lang: zh_CN ---- - -# 技术概述 - - -## 事件类型 - -您的触发器可以注册以接收通知的事件类型通常遵循以下形式:`Shotgun_[entity_type]_[New|Change|Retirement|Revival]`。下面是这种模式的一些示例: - - Shotgun_Note_New - Shotgun_Shot_New - Shotgun_Task_Change - Shotgun_CustomEntity06_Change - Shotgun_Playlist_Retirement - Shotgun_Playlist_Revival - -对于不涉及实体记录活动但关系到应用程序行为关键节点的事件,其模式可能与上述模式存在明显偏差。 - - CRS_PlaylistShare_Create - CRS_PlaylistShare_Revoke - SG_RV_Session_Validate_Success - Shotgun_Attachment_View - Shotgun_Big_Query - Shotgun_NotesApp_Summary_Email - Shotgun_User_FailedLogin - Shotgun_User_Login - Shotgun_User_Logout - Toolkit_App_Startup - Toolkit_Desktop_ProjectLaunch - Toolkit_Desktop_AppLaunch - Toolkit_Folders_Create - Toolkit_Folders_Delete - -此列表并不完整,但是是一个很好的起点。如果您想要了解有关 {% include product %} 站点上的活动和事件类型的详细信息,请参考事件日志条目页面。在此页面上,您可以像任何其他实体类型的任何其他网格页面一样进行过滤和搜索。 - -### 缩略图的事件日志条目 -每次为实体上传新缩略图时,系统都会使用 ``` `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", - "old_value": null, "new_value": 11656, - "is_transient": true -} -``` -2. 当缩略图可用时,将创建一个新的事件日志条目,此时 ```‘is_transient’``` 字段值设置为 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 -} -``` -3. 如果我们再次更新缩略图,即可得到这些新事件日志条目: -``` -{ "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 -} -{ "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. 请注意,当附件的缩略图为占位符缩略图时,```‘old_value’``` 字段将设置为空。 - - - -## 插件处理顺序 - -始终按相同的可预测顺序处理每个事件,如此一来,如果任何插件或回调存在相互依赖关系,即可放心地对其处理工作进行规划。 - -配置文件会指定一个 `paths` 配置,其中包含一个或多个插件位置。在列表中的位置越靠前,包含的插件就会越早被处理。 - -系统将按字母顺序升序处理插件路径中的每个插件。 - -{% include info title="注意" content="从内部来说,系统列出文件名列表并对其进行排序。" %} - -最后,将按注册顺序调用插件注册的每个回调。先注册,先运行。 - -我们建议将需要在一定程度上共享状态的功能保存在与一个或多个回调相同的插件中。 - - -## 共享状态 - -有许多选项可用于需要共享状态的多个回调。 - -- 全局变量。呃,请不要这样做。 -- 一个包含状态信息的已导入模块。这样也不行,但比完全是全局变量好一点。 -- 一个在调用 [`Registrar.registerCallback`](https://github.com/shotgunsoftware/shotgunEvents/wiki/API#registerCallbacks) 时传入 `args` 参数的可变要素。一个设计状态对象,或仅仅是一个 `dict`。首选。 -- 在对象实例上执行回调(如 `__call__`),并在回调对象初始化时提供一些共享状态对象。最强大但也最复杂的方法。与上述 args 参数方法相比,可能有些不必要。 - - - -## 事件积压 - -该框架旨在让每个插件对其感兴趣的每个事件进行一次处理,并且不会出现异常。为确保实现这一目标,框架会存储每个插件积压的未处理事件,并记住为每个插件提供的最后一个事件。下面简单介绍了可能出现积压的一些情况。 - -### 由于事件日志条目序列不连贯导致的积压 - -对于 {% include product %} 中发生的每个事件(字段更新、实体创建、实体停用等),其事件日志条目都具有唯一的 ID 编号。ID 编号序列有时并不是连贯的。导致这种不连贯的原因有很多,其中一个就是大型数据库事务尚未完成。 - -每次事件日志序列出现不连贯现象时,“空缺”的事件 ID 都会被纳入积压工作,以便日后处理。这样,事件进程便可在结束时处理来自长数据库事务的事件。 - -有时,事件日志序列中的“空缺”永远无法填补,例如当事务失败或还原页面设置更改时。在这种情况下,超过 5 分钟时限后,系统便不再等待相应事件日志条目 ID 编号,并将其从积压工作中移除。此时,系统将显示“积压事件 ID # 已超时”(Timeout elapsed on backlog event id #)消息。如果事件序列首次出现不连贯现象且系统已将其视为超时,此时将显示“事件 # 从未发生 - 忽略”(Event # never happened - ignoring)消息,并且此事件不会在第一时间纳入积压工作。 - -### 由于插件错误而导致的积压 - -在正常操作期间,框架会持续跟踪各个插件处理的最后一个事件。如果某个插件因任何原因发生故障,该插件将停止处理后续事件。修复插件后,例如修复某个错误后,该框架将从修复的插件所存储的最后一个事件之处开始处理事件。这样做是为了确保新修复的插件能够处理所有事件,包括那些在发生故障到修复错误期间发生的事件。如果故障是在很久以前发生的,这可能意味着需要回访大量事件,如此一来,已修复的插件可能需要一段时间来赶上其他正常运行的插件的进度。 - -在已修复的插件追赶进度时,其他插件会忽略相应事件,确保相同的插件不会对任何一个事件进行两次处理。此时,系统会显示“事件 X 过于久远。最后处理的事件是(Y)”(Event X is too old. Last event processed is (Y))消息。这是调试消息,可以放心地忽略。 - -目前没有正式的方法来跳过这一提示。该框架旨在确保每个插件仅对每个事件进行一次处理。但是,如果您了解 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 deleted file mode 100644 index 227cd0173..000000000 --- a/docs/zh_CN/event-daemon/event-daemon.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: default -title: 编写事件驱动的触发器 -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.shotgridsoftware.com) 的[开源计划](https://github.com/shotgunsoftware)。 - -该软件根据 MIT 许可提供;如需获取该许可,请访问 LICENSE 文件或[开源计划](http://www.opensource.org/licenses/mit-license.php)网站。 - -**目录:** - -- [概述](#overview) -- [框架的优点](#advantages-of-the-framework) -- [编写事件驱动的触发器](#writing-event-driven-triggers) - - [示例用例](#example-use-cases) - - [事件驱动的触发器的工作方式](#how-event-driven-triggers-work) - - [轮询事件日志与触发器](#polling-the-eventlog-versus-triggers) - - [事件类型](#event-types) - - [事务和可能丢失的事件](#transactions-and-potentially-missing-events) - -## 概述 - -如果要访问 {% include product %} 事件流,首选方法是监视事件表、获取任何新事件并对其进行处理,然后重复上述动作。 - -需要执行许多工作才可顺利完成此流程,这些工作可能与需要应用的业务规则并无任何直接关系。 - -框架的作用是使业务逻辑实施者摆脱任何繁琐的监视任务。 - -该框架是一个守护进程,可在服务器上运行并监视 {% include product %} 事件流。找到事件时,守护进程会将事件分发给一系列注册的插件。每个插件可以根据情况处理事件。 - -进程负责以下工作: - -- 从一个或多个指定路径注册插件。 -- 取消激活任何崩溃的插件。 -- 当磁盘上的插件出现变化时重新加载插件。 -- 监视 {% include product %} 事件流。 -- 记住最后一次处理的事件 ID 和所有积压工作。 -- 当进程启动后,从最后一次处理的事件 ID 开始作业。 -- 捕捉所有连接错误。 -- 根据需要将信息记录到标准输出、文件或电子邮件。 -- 创建与 {% include product %} 的连接,以供回调使用。 -- 将事件传递到已注册的回调。 - -插件负责以下工作: - -- 将任意数量的回调注册到框架。 -- 每当框架提供一个事件时,便处理该事件。 - - -## 框架的优点 - -- 为所有脚本使用一个监视机制,而不是为每个脚本使用一个。 -- 可最大限度地减轻网络和数据库负载(仅使用一个监视器向多个事件处理插件提供事件)。 - -# 编写事件驱动的触发器 - -**注意:**有关事件驱动的触发器的详细信息,请参见我们的文档,网址为 [https://github.com/shotgunsoftware/shotgunEvents](https://github.com/shotgunsoftware/shotgunEvents)。 - -{% include product %} 会为在 {% include product %} 中发生的每个动作创建一个[事件日志条目](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_event_logs_html)。您可以在您的 {% include product %} 站点中以及通过 {% include product %} API 查看这些事件。 - -除了在 {% include product %} 中查看事件的详细历史记录外,您还可以编写自己的事件侦听器脚本来轮询事件日志并对您关注的某些事件执行操作。您的脚本可以执行您的工作流中的其他内部脚本,也可以使用 {% include product %} API 并更新 {% include product %} 中的其他信息,或同时实现两者。 - -## 示例用例 - -下面是一些使用事件驱动的触发器的示例: - -* 每当镜头的“布局”(Layout)任务状态标记为“最终”(final)时,自动将“动画”(Animation)任务状态设置为“准备开始”(ready to start),以便动画设计师知道可以开始处理该镜头。 -* 每当在 {% include product %} 中创建了新镜头时,都会在文件系统上创建合适的镜头目录。 -* 当某个镜头进入“暂停”(on hold)状态时通知分配给该镜头的美工人员。 -* 最终确定了某个资产时将目录设为只读。 -* 在 {% include product %} 中将版本添加到审核时,将相关版本(或镜头)信息复制到样片系统。 -* 场景增加到 25 个镜头时,通过 Twitter 发布一个以与场景的“说明”(Description)字段中第三个词语相同的字母开头的随机引文。 - -## 事件驱动的触发器的工作方式 - -下面是 {% include product %} 生成的事件日志条目简单图表。您的脚本将使用 API 获取自上次查询以来发生的事件列表。然后,它将查看每个事件类型(例如 {% include product %}_Task_Change),看看其中是否有您关注的事件类型。 - -一旦找到关注的事件,它将更进一步检查事件的详细信息(例如,更改了哪些字段,值更改为什么等。此时,如果需要,您甚至可以使用 API 请求实体的详细信息)。 - -如果事件符合要求,脚本将对该事件执行操作,并执行用于确定是使用 {% include product %} API、您的工作流中的内容还是两者时需要执行的任何代码。没有其他事件要查看时,重复该过程,然后使用 API 获取自上次查询以来发生的事件列表。 - -![事件日志轮询](./images/dv-writing-event-triggers-event-log-polling-01.png) - -## 轮询事件日志与触发器 - -{% include product %} 提供持续的事件信息流,您可以侦听所有事件,并只对您关注的事件执行操作。相比于让 {% include product %} 自己控制触发器,这具有以下优势: - -* **灵活**:您的触发器脚本可以独立于 {% include product %} 运行。这样,您的脚本可以按照您所需的任何方式与 {% include product %} 和您的工作流交互。您可以根据需要定义规则和动作,不受任何约束。{% include product %} 不需要了解您的事件触发器的任何信息。它只需持续生成事件日志条目。您可以控制后面发生的情况的所有其他方面。 -* **远程**:您的脚本可以从能通过网络访问 {% include product %} 服务器的任何位置运行。您的脚本只需要 API 访问权限即可运行。 -* **多重性**:您可以同时运行多个脚本。 不同部门可能有不同的需求,因此侦听不同的事件。可以从同一脚本运行所有触发器,没有任何限制。您可能希望将触发器分解为单独的逻辑脚本。轮询查询占用资源非常少,对性能不会有任何显著影响。 -* **责任明确**:如果您的脚本对 {% include product %} 进行更改,它们也会创建自己的事件,从而允许您准确查看哪些脚本进行了更改。 - -## 事件类型 - -所有内部事件类型都采用 **`Shotgun_[entity_type]_[New|Change|Retirement]`** 格式。一些示例包括 `Shotgun_Shot_New` 和 `Shotgun_Asset_Change`。有关详细信息,请参见[事件类型文档](https://github.com/shotgunsoftware/shotgunEvents/wiki/Technical_Overview#event-types)。 - -## 事务和可能丢失的事件 - -{% include product %} 在事务中执行破坏性数据库查询,且仅当事务完成时向事件日志写入。因此,您在此处使用“最高 ID”方法时可能会丢失事件。但[我们 GitHub 站点上的事件触发器框架](https://github.com/shotgunsoftware/shotgunEvents)中有应该能处理这些情况的代码。 \ No newline at end of file diff --git a/docs/zh_CN/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png b/docs/zh_CN/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png deleted file mode 100644 index 7b87839b9..000000000 Binary files a/docs/zh_CN/event-daemon/images/dv-writing-event-triggers-event-log-polling-01.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/create_webhook_button.png b/docs/zh_CN/guides/images/webhooks/create_webhook_button.png deleted file mode 100644 index d758ce2d0..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/create_webhook_button.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/create_webhook_dialog.png b/docs/zh_CN/guides/images/webhooks/create_webhook_dialog.png deleted file mode 100644 index 6d4322391..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/create_webhook_dialog.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/delivery_details.png b/docs/zh_CN/guides/images/webhooks/delivery_details.png deleted file mode 100644 index 064bd3aa7..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/delivery_details.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/delivery_status.png b/docs/zh_CN/guides/images/webhooks/delivery_status.png deleted file mode 100644 index 29a42147b..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/delivery_status.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/webhook_selected_status.png b/docs/zh_CN/guides/images/webhooks/webhook_selected_status.png deleted file mode 100644 index d62df1adb..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/webhook_selected_status.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/webhook_status_active.png b/docs/zh_CN/guides/images/webhooks/webhook_status_active.png deleted file mode 100644 index 7115ba381..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/webhook_status_active.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/webhook_status_disabled.png b/docs/zh_CN/guides/images/webhooks/webhook_status_disabled.png deleted file mode 100644 index 6a3c9c8ed..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/webhook_status_disabled.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/webhook_status_failed.png b/docs/zh_CN/guides/images/webhooks/webhook_status_failed.png deleted file mode 100644 index d22ee39f9..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/webhook_status_failed.png and /dev/null differ diff --git a/docs/zh_CN/guides/images/webhooks/webhook_status_unstable.png b/docs/zh_CN/guides/images/webhooks/webhook_status_unstable.png deleted file mode 100644 index 4acb74217..000000000 Binary files a/docs/zh_CN/guides/images/webhooks/webhook_status_unstable.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations.md b/docs/zh_CN/guides/pipeline-integrations.md deleted file mode 100644 index eff7e12ac..000000000 --- a/docs/zh_CN/guides/pipeline-integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 工作流集成 -pagename: toolkit-pipeline-integrations -lang: zh_CN ---- - -# 工作流集成 - -{% include product %} 的工作流集成用于向艺术家提供 {% include product %} 数据。常用内容创建软件中的可自定义 UI 提供了一些即时可用的工具,艺术家可使用这些工具查看其任务信息,阅读和添加注释以及与团队成员共享文件。工作流集成基于 {% include product %} Toolkit 平台构建而成,开发人员可以使用 Toolkit API 扩展功能或创建自定义 Toolkit 应用。 - -本部分包含可帮助您在管理 {% include product %} 工作流时快速入门的学习材料。您可以找到有关如何配置工作流和管理制作文件系统的手册,有关如何构建基本 VFX 工作流的教程,以及有关如何编写自己的工作流工具的资源。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration.md b/docs/zh_CN/guides/pipeline-integrations/administration.md deleted file mode 100644 index 68d0f8d90..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 管理 -pagename: toolkit-administration -lang: zh_CN ---- - -# 管理 - -{% include product %} 的工作流集成提供了大量自定义选项。要启动并运行您的工作室所需的工作流,可能需要配置、运行命令行工具并确保 {% include product %} 工具可在您的工作室环境中运行。 - -本部分提供有关管理您工作室的 {% include product %} Toolkit 工作流的信息。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/advanced-toolkit-administration.md b/docs/zh_CN/guides/pipeline-integrations/administration/advanced-toolkit-administration.md deleted file mode 100644 index 44751d09c..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/advanced-toolkit-administration.md +++ /dev/null @@ -1,1526 +0,0 @@ ---- -layout: default -title: 高级 Toolkit 管理 -pagename: advanced-toolkit-administration -lang: zh_CN ---- - -# 高级 Toolkit 管理 - -本文介绍了如何管理和配置 Toolkit 以实现高级配置。 - -在本主题中,请执行以下操作: -- [简介](#introduction) -- [使用 tank 命令](#using-the-tank-command) - - [在调试模式下运行](#running-in-debug-mode) - - [通过 Tookit API 运行 tank 命令](#running-tank-commands-via-the-tookit-api) - - [实用的 tank 命令](#useful-tank-commands) - - [setup_project](#setup_project) - - [core](#core) - - [configurations](#configurations) - - [updates](#updates) - - [install_app、install_engine](#install_app-install_engine) - - [app_info](#app_info) - - [folders、preview_folders](#folders-preview_folders) - - [shell](#shell) - - [dump_config](#dump_config) - [高级 tank 命令](#advanced-tank-commands) -- [Toolkit Python API](#the-toolkit-python-api) -- [工作流配置和沙盒](#pipeline-configurations-and-sandboxes) - - [为沙盒运行 tank 命令](#running-the-tank-command-for-a-sandbox) - - [在沙盒中使用核心 API](#using-the-core-api-from-a-sandbox) - - [访问沙盒](#accessing-a-sandbox) - - [本地化工作流配置](#localizing-a-pipeline-configuration) - - [删除克隆配置](#deleting-a-cloned-configuration) -- [检查更新](#checking-for-updates) - - [创建临时沙盒](#creating-a-staging-sandbox) -- [配置应用的启动方式](#configuring-how-apps-are-launched) -- [在磁盘上创建文件夹](#creating-folders-on-disk) - - [文件系统位置](#filesystem-locations) - - [重命名 Toolkit 文件夹](#renaming-toolkit-folders) - - [延迟创建和用户沙盒](#deferred-creation-and-user-sandboxes) -- [配置模板](#configuring-templates) - - [模板文件中的 @include 语法](#include-syntax-in-the-template-file) - - [在模板文件中包含外部文件](#including-external-files-in-your-template-file) - - [文件夹创建和模板](#folder-creation-and-templates) -- [挂钩](#hooks) - - [应用级挂钩](#app-level-hooks) - - [核心级挂钩](#core-level-hooks) - - [工作室级挂钩](#studio-level-hooks) - - [项目名称挂钩](#project-name-hook) - - [连接挂钩](#connection-hook) -- [配置应用和插件](#configuring-apps-and-engines) - - [每个应用各有一个 location 设置](#each-app-has-a-location-setting) - - [包含文件](#including-files) - - [配置模板设置 - 文件路径](#configuring-template-settings---file-paths) - - [使用挂钩自定义应用的行为](#using-hooks-to-customize-app-behaviour) - - - - -# 介绍 - -欢迎您阅读《{% include product %} Toolkit 管理员手册》!本文档从管理的角度介绍如何使用 {% include product %} Pipeline Toolkit - 安装和更新应用、设置新项目以及管理工作室配置。Toolkit 仍然相对偏技术性,因此我们假设负责配置和管理的人员是系统管理员、工作流/工具开发者或技术主管。在开始了解细节之前,如果您还未阅读以下文档,我们建议您先阅读它!此文档讲解了一些基本概念,并简要介绍了配置管理和更新方面的知识: - -[{% include product %} Pipeline Toolkit 基本概念简介。](https://developer.shotgridsoftware.com/zh_CN/e95205a8/) - -如果您尚未设置 {% include product %} Toolkit,则可能需要阅读[集成用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/)。 - -# 使用 tank 命令 - -管理 {% include product %} Toolkit 以及常规使用 Toolkit 时,`tank` 命令是您的好帮手!使用 `tank` 命令,您可以快速轻松地从命令行同时运行管理命令和实际的应用。 - -默认情况下,您创建的每个新项目都有自己独立的核心 API 和自己的 `tank` 命令。只需导航到项目配置位置并执行 `tank` 命令,即可查看所有适用于该项目的命令: - -``` -cd /mnt/software/{% include product %}/big_buck_bunny -./tank -``` -tank 命令有很多不同的用法。基本的思路是首先告诉 tank 命令要在何处执行操作,然后再告诉它要执行什么操作。 如果不告诉 tank 命令要执行什么操作,它将显示一个包含所有可用命令的列表。 如果不告诉 tank 命令在何处执行操作,它会尝试使用您当前所在的目录。 您还可以使用 tank 命令列出 {% include product %} 中的内容。 - -有关如何使用 tank 命令的基本概述: - -```python -# Show all tank commands for an asset named 'piano' -> tank Asset piano - -# We can also list all assets containing the phrase 'pi' -> tank Asset pi - -# We can execute the built-in folder creation command for -# the piano -> tank Asset piano folders - -# If the application launcher app is installed, we can launch maya -# and set the work area to the piano -> tank Asset piano launch_maya - -# Alternatively, we can specify a path on disk instead of a {% include product %} entity -> tank /mnt/projects/hero/assets/piano launch_maya - -# Or we can change our work directory and run tank like this -> cd /mnt/projects/hero/assets/piano launch_maya -> tank launch_maya -``` -## 运行调试模式 - -有时,了解底层运行情况可能会给您带来帮助。您可以向 `tank` 命令传递一个 `--debug` 标志,它会启用详细输出和计时功能,这有时能让您更容易跟踪查找问题或了解出现异常情况的原因。 - -## 通过 Tookit API 运行 tank 命令 - -大多数 tank 命令也完全支持通过 API 运行。这让您可以轻松在更庞杂的脚本化工作流中执行与 Toolkit 相关的维护操作。有关如何进行此操作的详细信息,请参见[核心 API 参考](https://developer.shotgridsoftware.com/tk-core/) - -## 实用的 tank 命令 - -下面是您在管理 {% include product %} Toolkit 时可以使用的实用 tank 命令的简要列表。 - -### setup_project - -{% include product %} Desktop 中的设置项目向导的命令行版本。使用 {% include product %} Toolkit 设置新项目。当您在 {% include product %} 中有一个项目,并想扩展此项目以使用 Toolkit 时,可以由此命令开始。此命令将引导您完成整个过程,并提示您输入各种信息,比如要使用哪个配置以及要设置哪个项目。 - -**对同一个项目重新运行 setup_project** - -默认情况下,setup_project 只会列出尚未设置的项目。但是,有时(特别是测试时)我们常常需要对同一个项目重新运行 setup_project。我们可以通过传递 --force 标志做到这一点,该标志将列出所有项目,并通过备注标识出之前已设置的项目: - -```python -> tank setup_project --force - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -- Running setup_project... - -force mode: Projects already set up with Toolkit can be set up again. - -Welcome to SGTK Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - big_buck_bunny: '/mnt/software/sgtk/big_buck_bunny' - ghosts: '/mnt/software/sgtk/ghosts' - chasing_perfection: '/mnt/software/sgtk/chasing_perfection' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can just enter the -path to this config it will be used for the new project. - -[tk-config-default]: -Downloading Config tk-config-default v0.4.15 from the App Store... - -This is the 'Default Config' config. - -Below are all active projects, including ones that have been set up: --------------------------------------------------------------------- - -[ 4] Demo Project - Fubar is an epic story of an on-going political wa... - -[ 5] Big Buck Bunny -Note: This project has already been set up. - A killer bunny movie - -[ 6] The Ghosts of Pere Lachaise -Note: This project has already been set up. - De Films en Aiguille and ChezEddy present this year... - -[ 7] Chasing Perfection -Note: This project has already been set up. - You've seen the car commercials, the car races, and... - -[ 8] What Happened to My Headphones? - The Ryan Mayeda story - -Please type in the id of the project to connect to or ENTER to exit: -``` - -Toolkit 在项目设置过程中会提供项目名称建议。如果您对提供的名称满意,可以直接按 Enter 继续,否则也可以手动键入另外的名称。 - -如果您的工作室对于项目命名有特殊约定,也可以对设置项目过程中建议的默认值加以控制。这可以通过一个高级的工作室级挂钩实现 - 请阅读下文中有关工作室级挂钩的部分了解更多信息。 - -### core - -此命令检查核心 API 更新。此命令将连接应用商店,查看是否有更新版本的核心 API 可用。如果有,命令会询问您是否要更新。 - -此命令的输出示例: - -```python -> tank core - -Welcome to Sgtk! -Starting Sgtk for your current directory '/private/tmp' -- Running core... - -WARNING: You are potentially about to update the Core API for multiple -projects. - -Welcome to the Sgtk update checker! -This script will check if the Sgtk Core API -installed in /mnt/software/sgtk/studio -is up to date. - -You are currently running version v0.13.22 of the Sgtk Platform -No need to update the Sgtk Core API at this time! -``` - -### configurations - -此命令可概览项目的所有配置。当您想知道某个项目当前活动的明细时,此命令非常方便。 - -此命令的输出示例: - -```python -> tank Project Bunny configurations - -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Project Big Buck Bunny -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Big Buck Bunny. -- Running configurations... - -Fetching data from {% include product %}... - -====================================================================== -Available Configurations for Project 'Big Buck Bunny' -====================================================================== - -Configuration 'Primary' (Public) -------------------------------------------------------- - -This is the Project Master Configuration. It will be used whenever this -project is accessed from a studio level sgtk command or API constructor. - -Linux Location: /mnt/software/sgtk/big_buck_bunny -Winows Location: z:\mnt\software\sgtk\big_buck_bunny -Mac Location: /mnt/software/sgtk/big_buck_bunny - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank localize - -If you want to check for app or engine updates, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank updates - -If you want to change the location of this configuration, you can run: -> /mnt/software/sgtk/big_buck_bunny/tank move_configuration - -This is a public configuration. In {% include product %}, the actions defined in this -configuration will be on all users' menus. - -Configuration 'Dev Area' (Private) -------------------------------------------------------- - -Linux Location: /Users/manne/sgtk_dev -Winows Location: z:\Users\manne\sgtk_dev -Mac Location: /Users/manne/sgtk_dev - -This configuration is using a shared version of the Core API.If you want it to -run its own independent version of the Toolkit Core API, you can run: -> /Users/manne/sgtk_dev/tank localize - -If you want to check for app or engine updates, you can run: -> /Users/manne/sgtk_dev/tank updates - -If you want to change the location of this configuration, you can run: -> /Users/manne/sgtk_dev/tank move_configuration - -This is a private configuration. In {% include product %}, only Admin 3 will see the actions -defined in this config. If you want to add additional members to this -configuration, navigate to the SG Pipeline Configuration Page and add -them to the Users field. -``` - -### updates - -此命令将查看与项目关联的所有环境,检查是否有更新版本的应用或插件可用。此更新程序可能会对照本地 Git 库、GitHub 或 {% include product %} Toolkit 应用商店检查更新,具体取决于应用和插件的安装方式。如果检测到更新的版本,命令会询问您是否要更新设置。如果应用的新版本中引入了任何新的配置参数,会提示您输入参数的值。 - -一般语法: - -``` -> 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` - -### install_app、install_engine - -此命令在其中一个与项目关联的环境中安装新插件或应用。您可以使用此命令从 Toolkit 应用商店或 Git 安装应用或插件。 - -### app_info - -此命令可查看所有应用及其主要配置设置的明细。 - -### folders、preview_folders - -此命令在磁盘上为内容项创建文件夹。 - -此命令的输出示例 - -```python -Welcome to Sgtk! -Will search across all {% include product %} Projects. -- Found Asset Squirrel (Project 'Big Buck Bunny') -- Starting Sgtk v0.13.22 using configuration -/mnt/software/sgtk/big_buck_bunny. -- Setting the Context to Asset Squirrel. -- Running folders... - -Creating folders, stand by... - -The following items were processed: - - /mnt/projects/big_buck_bunny - - /mnt/projects/big_buck_bunny/reference - - /mnt/projects/big_buck_bunny/reference/artwork - - /mnt/projects/big_buck_bunny/reference/footage - - /mnt/projects/big_buck_bunny/sequences - - /mnt/projects/big_buck_bunny/assets - - /mnt/projects/big_buck_bunny/assets/Character - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/sgtk_overrides.yml - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Art/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Model/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Rig/work/photoshop/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/elements - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/jpg - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/publish/photoshop/psd - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/artwork - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/reference/footage - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/review - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/images - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/workspace.mel - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/maya/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/nuke/snapshots - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop - - /mnt/projects/big_buck_bunny/assets/Character/Squirrel/Surface/work/photoshop/snapshots - -In total, 93 folders were processed. -``` -### shell - -此命令在当前选择的上下文中启动一个互动式 Python Shell。针对预先初始化的 API、上下文和插件对象设置方便的引用。您可以使用 `./tank shell` 尝试 Toolkit 和 {% include product %} API 代码示例。tank 可执行文件位于您本地计算机的 **工作流配置根目录**,看起来如下所示: - -``` -> cd /my_tank_configs/project_foobar -``` - -此命令的输出示例: - -```python -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -You are running a tank command associated with {% include product %} Project 'Chasing the -Light'. Only items associated with this project will be considered. -- Found Shot moo87 (Project 'Chasing the Light') -- Starting the SG pipeline toolkit v0.15.14. -- Setting the Context to Shot moo87. -- Started Shell Engine version v0.3.3 -- Environment: /mnt/software/tank/chasing_the_light/config/env/shot.yml. -- Running shell... - -Welcome to SG Pipeline Toolkit Python! -2.7.1 (r271:86832, Jul 31 2011, 19:30:53) -[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] -Running on darwin - -- A tk API handle is available via the tk variable -- A Shotgun API handle is available via the Shotgun variable -- Your current context is stored in the context variable -- The shell engine can be accessed via the engine variable ->>> ->>> tk - ->>> ->>> context - ->>> ->>> Shotgun - ->>> ->>> engine - ->>> -``` - -在上面的示例中,`./tank` 为您启动一个 Python Shell,并设置一些您需要的变量。通过在上面的变量中提供以下句柄和上下文,这就省去了一些基础工作,例如设置身份认证和用户会话,以及启动与 {% include product %} 站点的连接: - -- `tk` 变量有一个句柄,可让您访问 [Toolkit API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#the-toolkit-core-api)。 -- `{% include product %}` 变量有一个指向 [{% include product %} API](https://developer.shotgridsoftware.com/python-api/) 的句柄,它已连接至您的站点,并准备好查询您的 [{% include product %} 站点]中的数据库和其他内容。 -- context 变量读取您当前的上下文(项目、镜头、资产、工作流工序、用户等)。[下面是一个活动上下文的示例](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=context#sgtk.Context)。这个示例中使用了一个上下文实例来收集一组描述当前上下文的主要字段。我们有时称上下文为当前工作区。通常,这将是用户当前正在处理的镜头或资产。在此示例中,可以看到项目为“Chasing the Light”,ID 为 1184,镜头为“moo87”。没有分配工作流工序或任务,但是用户为 Manne。在为 Toolkit API 编写脚本时,您可能需要知道这些信息,而这个方便的上下文变量可提供您所需要的一切: - -```python - -``` - -`engine` 变量指向当前运行的 [Shell 插件](https://developer.shotgridsoftware.com/zh_CN/2ad59ee8/) 实例。 - -### dump_config - -核心 `v0.18` 中提供此命令。 - -此命令将现有环境配置转存到 `STDOUT` 或另一个文件。它能够转存配置的完整表达法或稀疏表达法。完整表达法包括所有设置的默认值,稀疏表达法只包括与设置的默认值不同的值。默认情况下,该命令的输出包括每项设置的注释,这些注释指示清单文件可以在哪里找到默认值,如果默认值与配置中的值不同,还会指示默认值是什么。该命令不允许作为一项安全预防措施将环境配置转存到现有文件。 - -用法: - -``` -./tank dump_config env_name [--sparse | --full] [--no_debug-comments] [--file=/path/to/output/file.yml] -``` - -此命令的输出示例: - -```python -> ./tank dump_config shot_step --sparse --file=/tmp/shot_step.yml - -Welcome to SGTK! -For documentation, see https://support.shotgunsoftware.com -Starting toolkit for path '/Shotgun/configs/sparse34913' -- The path is not associated with any SG object. -- Falling back on default project settings. -- Running as user 'Toolkit' -- Using configuration 'Primary' and Core HEAD -- Setting the Context to sparse34913. -- Running command dump_config... - ----------------------------------------------------------------------- -Command: Dump config ----------------------------------------------------------------------- - -Dumping config... -``` - -运行上面的命令会将当前项目的 `shot_step` 环境文件的一个稀疏副本写入 `/tmp/shot_step.yml`。 - -要想不包括附加的调试注释,请使用 `--no_debug_comments` 标志。 - -### 高级 tank 命令 - -下面是您在管理 {% include product %} Toolkit 时可以使用的高级 tank 命令的简要列表。 - -- `tank share_core` - 新项目创建后,它们的状态常常是每个项目都自己保留一份核心 API 的独立副本。此命令让您可选取这类项目的核心,并将核心移出到磁盘上的一个单独位置。这样就可以创建一个共享核心,几个项目共享核心 API 的一个副本。 - -- `tank attach_to_core` - 新项目创建后,它们的状态常常是每个项目都自己保留一份核心 API 的独立副本。使用此命令,您可以将配置附加至现有的核心 API 安装,而不是让它保留属于自己的嵌入式版本的核心 API。 - -- `tank localize` - 此命令会将核心 API 下载到特定的工作流配置位置。当您想在 Toolkit 暂存区内测试新版本的核心 API 时,此命令非常有用。本文档的下文详细介绍此过程。 - -- `tank clear_cache` - 清除 Toolkit 的部分缓存。如果菜单项由于某种原因没有显示在 {% include product %} 中,此命令可能很有用。 - -- `tank validate` - 验证项目配置。 - -- `tank cache_apps` - 确保所有必需的应用、插件和框架版本在磁盘上存在。 - -- `tank switch_app` - 此命令对开发非常有用。它可在应用商店模式与本地或 Git 模式之间来回切换应用。 - -- `tank push_configuration` - 将当前工作流配置中包含的配置推送至另一个工作流配置。 - -# Toolkit Python API - -如果您使用 {% include product %} Desktop、`tank` 命令或 {% include product %} 启动应用程序,则 Toolkit 会自动添加到 `PYTHONPATH` 并进行初始化。有时,手动添加 Toolkit API 的源并运行它是很有用的。我们可以通过将 Toolkit 核心 API 添加到 pythonpath 并导入它来做到这一点。 - -在每个项目配置中,`project_config_root/install/core/python` 内都有一个 `python` 文件夹。只要将该位置添加到您的 Python 路径,便可导入 `sgtk` API: - -```python -import sgtk - -# create a Sgtk API object for a {% include product %} entity -tk = sgtk.sgtk_from_entity("Shot", 123) - -# Create a Sgtk API object based on a file system location -tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair") -``` - -# 工作流配置和沙盒 - -工作流配置具有与工作室安装相同的基本结构。最重要的是,它在 `install/core/python` 内同时包含一个 `tank` 命令和一个 Toolkit API。每个配置之所以具有相同的 API 和 tank 命令,是因为这样易于开发,并且便于在生产配置之外工作。 - -当您在 {% include product %} Toolkit 中设置一个新项目后,项目设置会为该项目创建一个***主工作流配置***。此配置始终称为“主”(Primary),代表项目的主配置。您可以看到该配置以项目的工作流配置实体形式显示在 {% include product %} 内。当您进行开发或更改配置时,通常不要在主配置中工作 - 如果不小心弄错了什么,所有参加项目的人都会受到影响。相反,您可以克隆 {% include product %} 内的配置。这样,不仅有属于自己的相同配置,而且可以在更改配置时不影响其他任何人。 - -## 为沙盒运行 tank 命令 - -如果您使用工作室级的 `tank` 命令运行应用,它将始终为项目使用主配置。因此,如果您只是键入 `tank Shot ABC123 launch_maya`,{% include product %} Toolkit 将查找镜头 ABC123 所属的项目,找到它的主工作流配置,并在启动 Maya 时使用这些配置设置。如果您想在开发沙盒中改用试验配置,则需要在开发沙盒内使用特定的 tank 命令启动 Maya:`~/sgtk_dev_sandbox/tank Shot ABC123 launch_maya`。这时 Toolkit 将使用开发沙盒中的配置,而不使用项目的主配置。 - -## 在沙盒中使用核心 API - -同样,如果您想从工作流配置内(而不是工作室安装位置)运行 Toolkit API,可以将开发沙盒添加到 `PYTHONPATH`,而不是工作室的 Python API。 - -## 访问沙盒 - -在 {% include product %} 内,事情要简单得多。项目的每个工作流配置各有一组可以查看该配置的用户。如果将字段留空,每个人都将能够查看配置。 - -![](images/advanced-toolkit-administration/sg_work_area.png) - -当您克隆一个配置时(在 {% include product %} 中的配置上单击鼠标右键即可进行克隆),将会自动与该配置关联,这实际上授予了您对配置的独占查看权。如果您是在 Maya 中开发新工具,想让一位美工人员测试这些工具,只需将该美工人员添加到您的工作流配置开发沙盒中,他们便可从您的沙盒中启动 Maya,然后将可以访问正在开发中的工具。 - -## 本地化工作流配置 - -默认情况下,工作流配置将从 {% include product %} Toolkit 的工作室安装中提取其代码。Toolkit 的工作室安装会包含 {% include product %} Toolkit 使用的所有应用和插件代码的缓存,以及 Toolkit 核心 API 安装。每个工作流配置将共享位于工作室位置的核心 API 和应用缓存。这种做法通常比较有用,因为您可以将核心 API 更新同时部署到所有项目。只要更新工作室位置,所有项目都会随之更新。 - -但是,有时我们需要能够隔离某个工作流配置,让它变得独立。例如,在下列情况有必要这样做: - -- 您有一个即将封装的项目,您想冻结更新并确保所有内容都不再变化。 -- 您有一个工作流配置,想在其中测试 Toolkit 核心 API 的某个新版本。 -- 您要打包一个最精简的 Toolkit 数据包,供在家工作时使用。 - -我们将这个使工作流配置完全独立于工作室位置的过程称为对配置进行***本地化***,根本上讲是将核心 API 复制到工作流配置中。您可以运行 `tank localize` 命令来执行此操作。 - -注意,一旦将某个配置本地化,就无法再运行工作室 tank 命令 - 一般来说,一旦项目本地化,您就需要使用它的本地 tank 命令和 Python API。 - -## 删除克隆配置 - -如果您不再需要克隆的配置或开发环境,只要删除记录,然后从磁盘上删除配置即可。 - -# 检查更新 - -检查应用或插件是否有更新非常简单!只要为项目运行 `tank updates` 命令即可。{% include product %} Toolkit 会检查是否有更新,并询问您是否要进行更新。如果有任何新参数没有默认值,更新脚本会提示您输入这些值。每个更新会显示一个指向发行说明页面的 URL 链接,如果您想查看更改内容的详细信息,可访问此链接。您可以随时退出该过程。 - -更新 Toolkit 核心 API 也同样简单。运行 `tank core` 命令即可! - -## 创建临时沙盒 - -尽管只对主配置运行 `tank updates` 命令通常是万无一失的,但有时最好还是先进行测试,然后再部署到生产环境。在这种情况下,您只需克隆主工作流配置,然后在其中运行更新命令。升级核心 API 时,请确保在运行 `core` 命令前,先对沙盒进行本地化(参见上文了解有关本地化的详细信息)。验证更新可以正常进行后,再对主配置运行更新。有关如何执行此操作的详细信息,请参见[管理您的配置](https://developer.shotgridsoftware.com/zh_CN/60762324/)。 - -# 配置应用的启动方式 - -在 Toolkit 配置中,常常需要在安装 Toolkit 之后立即进行的一项配置是应用启动配置。我们已尽量让这项任务变得灵活又可配置,因为我们知道工作室在这方面通常已经做了自定义,有了自己的工具。 - -当您从 {% include product %} 内或使用 tank 命令启动应用程序(例如 Maya 或 Nuke)时,将会调用一个应用来负责启动应用程序并初始化 Toolkit。此应用称为 `tk-multi-launchapp`。 - -当您使用其中一个 Toolkit 入门配置设置新项目时,它会显示如何更改启动器应用所用的应用程序路径。如果您有可以达到相同效果的替代系统,则无需使用此应用。启动器应用程序通常会执行以下操作步骤: - -1. 确定要使用的上下文。上下文表示当前的工作区。如果您在 {% include product %} 内的某个任务、资产或镜头上单击鼠标右键,将基于该对象创建上下文。如果您使用 tank 命令,上下文将是您在命令行中指定的内容,或者选取自您的当前目录。 - -2. 然后,根据应用配置中的设置启动应用程序。您可以对启动器应用进行几种配置 - 应用程序的路径、要传递的命令行参数、实际执行应用程序的代码和启动应用程序前需要设置的环境变量。 - -3. 设置 Pythonpath 以确保稍后可以初始化 Toolkit API。 - -4. 一旦应用程序启动,将导入并初始化 Toolkit API。 - -5. 最后,启动插件。 - -**示例:一个说明 {% include product %} Toolkit 如何启动的更具实操性的示例。** - -典型的 Toolkit 引导过程分为几个阶段: - -- 启动主宿主应用程序。这是任何具有 Python 解释器的应用程序。它最简单的形式只是一个在标准 Shell 中运行的 CPython 解释器。另外,也可以是 Maya 或 Nuke 或其他任何具有内嵌 Python 解释器的应用程序。 - -- Toolkit 核心 API 将添加到 `PYTHONPATH` 并导入:`import sgtk` - -- 接下来需要确定上下文。该上下文可以是磁盘上的路径,也可以是 {% include product %} 对象。我们可以使用工厂方法创建一个 Toolkit API 实例:`tk = sgtk.sgtk_from_path("/mnt/projects/hero/assets/chair01/lighting")`。或者,也可以使用 {% include product %} 实体:`tk = sgtk.sgtk_from_entity("Shot", 123)`。当使用实体时,上面的代码将连接到 {% include product %},解析该镜头的工作流配置,在磁盘上找到该工作流配置,加载 Sgtk 的基本设置(例如文件系统模板)。此时不会加载应用或插件。当需要查找路径时,它会使用文件系统来定位工作流配置。 - -- 接下来我们创建一个上下文对象来表示当前工作区。此操作也可通过实体或路径来完成:`ctx = tk.context_from_entity("Shot", 123)` 或 `ctx = tk.context_from_path("/mnt/projects/hero/assets/chair01/lighting")` - -- 最后,我们启动插件。假设我们在 Maya 内使用 Maya 的 Python 解释器运行这些命令,我们会这样做:`sgtk.platform.start_engine('tk-maya', tk, ctx)`。这将执行以下操作: - - - 为上下文运行选取环境挂钩。选取环境挂钩将返回要使用的环境。环境包含要加载的所有应用及其配置的列表。 - - - 确定环境文件后,将插件加载到内存中。这将动态地加载插件基础对象,并执行其 init 方法。插件加载后,所有应用以相同方式加载。通常,在这个过程中,插件将在应用程序中的某处注册一个“{% include product %}”菜单,每个应用将向插件注册一系列命令。这些命令稍后将成为执行命令的切入点:用户单击 {% include product %} 菜单上的某项,从而触发应用执行。 - -按照这样的思路,一个完整的示例将如下所示: - -```python -# starting up sgtk when your context is based on a path -import sgtk -path = "/mnt/projects/hero/assets/chair01/lighting" -# create a sgtk api handle -tk = sgtk.sgtk_from_path(path) -# create a context object -ctx = tk.context_from_path(path) -# start the tank engine -sgtk.platform.start_engine('tk-maya', tk, ctx) - -# starting up sgtk when your context is based on a {% include product %} object -import sgtk -entity_type = "Shot" -entity_id = 123 -# create a sgtk api handle -tk = sgtk.sgtk_from_entity(entity_type, entity_id) -# create a context object -ctx = tk.context_from_entity(entity_type, entity_id) -# start the sgtk engine -sgtk.platform.start_engine('tk-maya', tk, ctx) -``` - -# 在磁盘上创建文件夹 - -Toolkit 配置的一个关键部分是文件系统配置。{% include product %} Toolkit 可以帮助您以一致的方式在磁盘上创建文件夹,创建过程由 {% include product %} 驱动。下面是一个配置内的 core 文件夹的概览: - -![](images/advanced-toolkit-administration/file_system_config.png) - -设置一个文件夹配置相对简单。配置本质上是您创建的一个模板文件夹结构,其中有一些配置文件,指示文件夹应代表资产还是镜头。在配置文件系统结构时,您随时可以使用***文件夹预览***功能列出将要创建的文件夹。此命令在 {% include product %} 和 tank 命令中均可使用。 - -首先使用普通文件夹概括您的“脚手架”。如果您的“脚手架”中有一级动态文件夹(例如用来代表资产、镜头或工作流工序的文件夹),请先暂时忽略它们。待获得满意的结果后,再逐步为每个动态文件夹添加动态功能。这通过添加与文件夹同名的 yml 文件来实现。 - -在该 yml 文件内,使用特殊语法定义文件夹的创建方式。{% include product %} Toolkit 支持多种不同的动态行为,但常见的一种是代表 {% include product %} 实体的动态节点。在本例中,配置文件可以如下所示: - -```python -# the type of dynamic content -type: "Shotgun_entity" - -# the Shotgun field to use for the folder name -name: "{code}_{sg_prefix}" - -# the Shotgun entity type to connect to -entity_type: "Asset" - -# Shotgun filters to apply when getting the list of items -# this should be a list of dicts, each dict containing -# three fields: path, relation and values -# (this is std Shotgun API syntax) -# any values starting with $ are resolved into path objects -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -``` - -这将告诉 Toolkit,动态文件夹应创建使用资产实体上的两个 {% include product %} 字段命名的文件夹。使用标准 {% include product %} API 查询语法,我们还可基于父文件夹定义约束条件;只考虑当前项目和资产类型的资产。 - -有关支持哪些类型的节点的完整参考,请参见[参考文档](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)。 - -## 文件系统位置 - -通过 Toolkit 文件夹创建系统在磁盘上创建文件夹时,这些文件夹也会在 {% include product %} 中存储和跟踪。在 {% include product %} 中,文件夹以**文件系统位置**实体的形式表示,可以在管理员菜单中找到。通常,Toolkit 会在后台跟踪这些数据,用户什么都不用管。这些文件系统位置实体供 Toolkit 用来同步和跟踪磁盘上的文件夹,另外也可像初次运行文件夹创建系统创建文件夹结构那样,用于在磁盘上重新创建文件夹结构。文件系统位置实体数据进而主要用于尝试找出哪个 {% include product %} 实体与磁盘上的特定路径关联。 - -出于性能原因,Shotgun 管理的文件系统位置表的内容缓存在用户的本地计算机上。这样做是为了加快文件夹/实体查找速度。对于专家级用户,可通过修改 `cache_location` 核心挂钩来自定义此缓存的位置。每当磁盘上创建了文件夹和应用程序启动时,都会同步缓存的本地文件夹表示。 - -## 重命名 Toolkit 文件夹 - -当您执行 Toolkit 文件夹创建操作时,会在 {% include product %} 中的实体与磁盘上的文件夹之间建立联系。Toolkit 使用其文件夹数据结构配置在磁盘上生成一系列文件夹,而每个文件夹在 {% include product %} 中都注册为一个 `Filesystem Location` 实体。我们可以将这看成是 {% include product %} 数据(例如镜头和资产名称)和配置被“转化”成磁盘上和 {% include product %} 中的实际文件夹。 - -文件夹一经创建,您便无法再随意更改 {% include product %} 中实体的名称。如果您尝试重命名实体并启动 Toolkit,将显示错误消息。 - 这是为了避免无法再跟踪与特定实体关联的文件夹。 - -要重命名 Toolkit 文件夹,请执行以下操作: - -- 首先,在 {% include product %} 中重命名实体(资产或镜头)。 -- 通过运行 `tank unregister_folders` 命令,取消注册任何已注册的文件夹。这将移除 {% include product %} 中用来跟踪实体与磁盘位置之间关系的所有文件系统位置实体。请注意,此命令不会影响磁盘上的任何内容,只会影响 {% include product %} 中指向磁盘位置的 `Filesystem Location` 实体。例如,如果您想取消注册名为 Plant 的资产的文件夹,请执行 `tank Asset Plant unregister_folders` 命令。此命令会显示将要取消注册的文件夹的概要,并要求您确认操作。 -- 取消注册文件夹之后,您实际上相当于“重置”了资产。此时资产不再与任何文件夹关联,通过在 {% include product %} 中使用新名称运行文件夹创建过程,将会在磁盘上创建新文件夹。 -- 最后,将所有数据从先前的磁盘位置移至新位置。注意确保文件之间的任何链接也得到更新,指向新的位置。 - -## 延迟创建和用户沙盒 - -我们可以将 Toolkit 的文件夹创建过程设置为分两个阶段运行:一个阶段是每当有人运行文件夹创建命令时,另一个阶段是在应用程序临启动前。这是 Toolkit 应用程序启动器内置的一种行为(启动器只是调用标准 API 方法来执行文件夹创建操作)。延迟文件夹创建功能可以用来处理以下情况: - -- 当您的工作流有多个不同的内容创作应用程序,但您不想在实际需要前就为每个应用程序包含一套完整的支持文件夹时,可以设置文件夹创建过程,让每个内容创作应用在配置中建立属于自己的延迟子树。当制作人员或管理员为镜头创建文件夹时,创建操作将在开始为 Maya、Nuke、Mari 等创建工作区前停止。然后,当用户启动某个应用程序时,会在该应用程序开始运行前创建这些文件夹。 -- 当您想在文件系统中创建基于用户的沙盒时,需要等到工作开始前再创建它们。利用延迟文件夹创建功能,您可以添加一个特殊的用户节点来简化这一过程。在模板配置中,您将该用户节点称为 HumanUser,因为这是它在 {% include product %} API 中的表示方式。 - -有关延迟创建的详细信息,请参见[参考文档](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)。 - -# 配置模板 - -创建文件系统结构后,接下来要基于上面的文件夹结构配置一组文件系统位置。这些位置称为模板,它们是 {% include product %} Toolkit 不可或缺的一部分。模板文件包含三个部分:keys 部分定义每个字段的含义,paths 部分可定义模板路径,strings 部分可定义字符串表达式。 模板文件中可以使用两种语法,一种是简单语法,适用于只有一个存储根目录的配置;另一种是高级语法,适用于多存储配置。 - -**示例:单根目录模板格式** - -```yml -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: '@shot_root/work/maya' - - # define the location of a publish area - shot_publish_area_maya: '@shot_root/publish/maya' - - # The location of WIP files - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_shot_snapshot: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_shot_publish: '@shot_root/publish/maya/{name}.v{version}.ma' - - ########################################################################################## - # Asset pipeline / maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: '@asset_root/work/maya' - - # define the location of a publish area - asset_publish_area_maya: '@asset_root/publish/maya' - - # The location of WIP files - maya_asset_work: '@asset_root/work/maya/{name}.v{version}.ma' - - # The location of backups of WIP files - maya_asset_snapshot: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - - # The location of published maya files - maya_asset_publish: '@asset_root/publish/maya/{name}.v{version}.ma' - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. -strings: - - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -**示例:多根目录模板格式** - -```yml -# -# The keys section contains the definitions for all the different keys that are being -# used in the Toolkit. A key is a magic token that is replaced by a value at runtime, for example -# {Shot}. The section below tells the Toolkit which data types and formats to expect for each key. -# -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str - sg_asset_type: - type: str - Asset: - type: str - name: - type: str - filter_by: alphanumeric - iteration: - type: int - version: - type: int - format_spec: '03' - version_four: - type: int - format_spec: '04' - alias: version - timestamp: - type: str - width: - type: int - height: - type: int - channel: - type: str - filter_by: alphanumeric - SEQ: - type: sequence - format_spec: '04' - eye: - type: str - -# The paths section contains all the the key locations where files are to be stored -# by the Toolkit Apps. Each path is made up of several keys (like {version} or {shot}) and -# these are defined in the keys section above. -# Toolkit apps use these paths as part of their configuration to define where on disk -# different files should go. -paths: - - ########################################################################################## - # Shot pipeline / Maya - - shot_root: 'sequences/{Sequence}/{Shot}/{Step}' - - # define the location of a work area - shot_work_area_maya: - definition: '@shot_root/work/maya' - root_name: primary - - # define the location of a publish area - shot_publish_area_maya: - definition: '@shot_root/publish/maya' - root_name: primary - - # The location of WIP files - maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.ma' - root_name: primary - - # The location of backups of WIP files - maya_shot_snapshot: - definition: '@shot_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: primary - - # The location of published maya files - maya_shot_publish: - definition: '@shot_root/publish/maya/{name}.v{version}.ma' - root_name: primary - - ########################################################################################## - # Asset pipeline / Maya - - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - - # define the location of a work area - asset_work_area_maya: - definition: '@asset_root/work/maya' - root_name: secondary - - # define the location of a publish area - asset_publish_area_maya: - definition: '@asset_root/publish/maya' - root_name: secondary - - # The location of WIP files - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: secondary - - # The location of backups of WIP files - maya_asset_snapshot: - definition: '@asset_root/work/maya/snapshots/{name}.v{version}.{timestamp}.ma' - root_name: secondary - - # The location of published maya files - maya_asset_publish: - definition: '@asset_root/publish/maya/{name}.v{version}.ma' - root_name: secondary - -# The strings section is similar to the paths section - but rather than defining paths -# on disk, it contains a list of strings. Strings are typically used when you want to be -# able to configure the way data is written to {% include product %} - it may be the name field for a -# review version or the formatting of a publish. - -strings: - - # when a review version in {% include product %} is created inside of nuke, this is the - # name that is being given to it (the code field) - nuke_shot_version_name: '{Shot}_{name}_{channel}_v{version}.{iteration}' - nuke_asset_version_name: '{Asset}_{name}_{channel}_v{version}.{iteration}' -``` - -模板文件有多个配置选项,您可以[在此处](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)找到完整的参考。 - -## 模板文件中的 @include 语法 - -为了减少模板文件中的重复内容,您可以重复使用字段: - -```yml -paths: - asset_root: 'assets/{sg_asset_type}/{Asset}/{Step}' - maya_asset_work: '@asset_root/work/maya/@maya_asset_file' - -strings: - maya_asset_file: '{name}.v{version}.ma' -``` - -您还可以将模板拆分到多个文件,在文件中包含其他文件。有关完整详情,请参见[参考文档](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)。 - - -## 在模板文件中包含外部文件 - -在管理环境配置时,您可以将环境配置拆分成多个文件,然后将一些文件包含在另一些文件中。对于模板文件,您也可以采用这种方式。这种做法有时很有用,例如当您要设置一个全局配置供多个项目共享时。 - -您可以使用以下 include 语法之一,在 `templates.yml` 文件中包含其他文件: - -```yml -# single include using a path local to the location of the current file -include: './include_file.yml' -# multiple incudes, processed in order -includes: ['./include_file_1.yml', './include_file_2.yml'] -# you can also use absolute paths when including things: -include: -# files that are not recognized are skipped, so you can put paths for -# windows and linux next to each other for multi platform support: -includes: ['/foo/bar/hello.yml', 'z:\foo\bar\hello.yml'] -# you can use environment variables inside of full paths too -includes: ['$STUDIO_ROOT/foo/bar/hello.yml', '%STUDIO_ROOT%\foo\bar\hello.yml'] -``` - -包含的文件需要与主 templates.yml 文件结构相同,也就是说它需要包含 `paths`、`keys` 和 `strings` 部分。Toolkit 处理包含的文件时,会按照从上到下、深度优先的顺序以递归方式读取它们,分别向 `paths`、`keys` 和 `paths` 这三个“区块”添加数据。在这个过程中,如果某个值在某个区块中已存在,该值将被覆盖。处理完所有包含的文件后,将对整个配置进行验证。 - -下面是一个简短的示例。这是主 `templates.yml` 文件: - -```yml -include: ./global_defs.yml -keys: - name: - type: str - filter_by: alphanumeric - version: - type: int - format_spec: "03" -paths: - maya_shot_work: '@shot_root/work/maya/{name}.v{version}.ma' -``` -这是包含的文件 `global_defs.yml` 的内容: - -```yml -keys: - Sequence: - type: str - Shot: - type: str - Step: - type: str -paths: - shot_root: sequences/{Sequence}/{Shot}/{Step} -``` - -建议将 keys 和 paths 部分放在一起(但并不总是适合如此),以便每个文件都包含各自需要的所有内容。这样通常可以让维护工作更简单。 - -## 文件夹创建和模板 - -创建模板时,如果模板引用了文件夹创建系统创建的文件夹,您需要使用 {% include product %} API 风格的表示法指定字段!这个细节很容易被忽视。上面的示例很好地说明了这一点。在文件夹创建过程中,我们已设置了一个配置,先后按资产类型和资产名称对项进行分组。例如: - -``` -/mnt/projects/my_project/assets/character/Hero -``` - -然后,我们要在 Toolkit 中创建一个与此路径一致的模板。为了让 {% include product %} Toolkit 能够保持模板与路径和上下文一致,字段的命名方式需要与使用 {% include product %} API 时相同 - 资产类型一级的文件夹需要称为 `sg_asset_type`,因为这是此字段在 {% include product %} 中的字段名称,资产一级的文件夹需要称为 `Asset`(首字母 A 大写),因为使用 {% include product %} API 时,会这样称呼资产实体类型。 - -# 挂钩 - -挂钩是灵活的 Toolkit 配置片段。通常,在配置应用、插件或核心 API 时,您会指定一组参数来定义某些功能的行为。但是,这种做法有时不够强大,这种情况下就要用到挂钩。 挂钩是小段的 Python 代码,可用来自定义应用、插件或核心的某个方面。挂钩的设计已尽量做到轻量化和原子化。在 Toolkit 中,挂钩分为三个不同的级别。请阅读下面的小节了解有关每个级别的详细信息。 - -## 应用级挂钩 - -每个 Toolkit 应用(包括插件)都附带一组设置,其中一些可以是挂钩。每个应用都有一组默认挂钩,除非特别进行改写,否则将自动使用这些挂钩。挂钩通常用来进行一些特别针对应用程序的自定义。例如,对于一个向 Maya 加载图像的 Toolkit 应用来说,用户界面代码和所有交互逻辑都位于应用中,实际向 Maya 加载图像的小块业务逻辑则位于一个挂钩中。这让工作室可以自定义应用的行为;默认挂钩可在 Maya 中创建标准纹理节点,而想要使用不同节点类型的工作室则可改写该挂钩,轻松改变整个应用的行为,而且不必重新编写任何代码! - -自定义应用挂钩时,通常的做法是将默认挂钩从应用的 hooks 文件夹复制到您项目的 hooks 文件夹中。接下来,需要在环境文件内更新应用设置,让它读取您的新挂钩,而不是默认挂钩。您的自定义挂钩将自动继承应用随附的默认挂钩的设置,这样可轻松进行细微的参数更改和调整,同时仍保留默认挂钩中的大部分业务逻辑。有关挂钩继承性的详细信息,请参见[环境配置参考](https://developer.shotgridsoftware.com/zh_CN/6d10dedf/)。 - -## 核心级挂钩 - -使用核心挂钩可更改 Toolkit 中的系统级行为。核心级挂钩全部以项目为单位进行改写,因此每个项目需要单独设置改写 (如果您在设置新项目时总是重用相同的配置,这种方式通常比较直观)。 - -核心配置区包含一个特殊的 `hooks` 文件夹。您可以将某些核心挂钩的自定义执行放在这里。核心挂钩与应用级挂钩类似,通过它可从 Toolkit 提取代码片段并对其进行自定义。核心 API 允许您改写许多不同的核心行为,包括文件系统 I/O、文件夹创建和文件系统结构的验证。 - -![](images/advanced-toolkit-administration/hooks.png) - -默认情况下,Toolkit 将直接从 API 文件夹中选取需要的核心挂钩。如果您要自定义此行为,可将挂钩文件复制到您的配置中的 `config/core/hooks` 区域。然后修改代码。 - -有关可用核心挂钩的列表,请查看核心 API 内的 hooks 文件夹。每个挂钩都包含大量介绍其用途和修改方法的文档。 - -## 工作室级挂钩 - -除了上面的挂钩以外,还有几个非常特殊的挂钩,我们称之为“工作室级挂钩”。 这些挂钩是可影响所有内容的全局挂钩。这些挂钩控制 Toolkit 中不属于任何特定项目的方面。 - -## 项目名称挂钩 - -项目设置过程将提示您为项目输入一个“磁盘名称”,并会根据 {% include product %} 中的项目名称建议一个名称,但空格及其他与文件系统不兼容的字符会被替换为下划线。该磁盘名称将是存储项目数据和配置的文件夹的名称。 - -指定磁盘名称时,可以使用斜杠。这将生成一个项目根点,该根点在深度上横跨若干个文件夹。当工作室按领域(商业广告、视觉特效等)组织项目时,或者工作室项目量很大,导致在文件系统中使用单层结构难以概览全貌时,根点会很有帮助。请注意,您应该始终使用正斜杠(“/”)。在 Windows 上,Toolkit 会做出必要的调整。 - -配合使用上面介绍的多级文件夹,还可以自定义 Toolkit 在设置过程中建议的名称。此操作在一个特殊的工作室级挂钩中进行。如果您想自定义此行为,可在工作室 API 所在位置内的 `config/core` 文件夹中创建一个名为 `project_name.py` 的文件。此文件夹应该已包含 `install_location.yml`、`app_store.yml` 和 `shotgun.yml` 等文件。 - -`project_name.py` 挂钩文件可以如下所示: - -```python -from tank import Hook -import os - -class ProjectName(Hook): - - def execute(self, sg, project_id, **kwargs): - """ - Gets executed when the setup_project command needs a disk name preview. - """ - - # example: create a name based on both the sg_type field and the name field - - sg_data = sg.find_one("Project", [["id", "is", project_id]], ["name", "sg_type"]) - - # create a name, for example vfx/project_x or commercials/project_y - name = "%s/%s" % ( sg_data["sg_type"], sg_data["name"] ) - - # perform basic replacements - return name.replace("_", "/").replace(" ", "/") -``` - -## 连接挂钩 - -Toolkit 会存储连接设置,以便可以连接到其关联的 {% include product %} 实例。有时候,能够动态地控制这些连接设置可能会有所帮助。这种情况下,可在工作室 API 所在位置内的 `config/core` 文件夹中创建一个名为 `sg_connection.py` 的挂钩文件。此文件夹应该已包含 `install_location.yml`、`app_store.yml` 和 `shotgun.yml` 等文件。 - -从 `shotgun.yml` 和 `app_store.yml` 配置文件读入 {% include product %} 连接设置后,会调用此挂钩。使用此挂钩,可以轻松对连接设置进行程序化修改,例如根据某些外部环境变量设置代理服务器。 - -下面三个参数将传递给该挂钩: - -- `config_data` 是一个词典,其中包含已读入的 {% include product %} 配置文件中的设置。它通常包含 `host`、`api_script`、`api_key` 和 `http_proxy` 键。 - -- `user` 是与连接信息关联的用户档案。这是一项高级设置,几乎总是设置为 `defualt`。 - -- `cfg_path` 是从中加载 `config_data` 的配置文件的路径。 - -挂钩需要返回一个与 config_data 相同形式的词典。 - -如果您要自定义代理设置,请注意返回的代理字符串格式应该与 {% include product %} API 构造函数需要的格式相同,例如 123.123.123.123、123.123.123.123:8888 或 username:pass@123.123.123.123:8888。 - -下面这个示例执行可以作为您的设置基础: - -```python -from tank import Hook -import os - -class CustomShotunConnection(Hook): - """ - Allows for post processing of {% include product %} connection data prior to connection - """ - def execute(self, config_data, user, cfg_path, **kwargs): - - # explicitly set the proxy server setting - config_data["http_proxy"] = "123.123.123.123" - return config_data -``` - -# 配置应用和插件 - -现在,我们有了一个设置好的模板文件,其中定义了所有关键的磁盘位置。接下来,可以开始决定要在配置中包括哪些应用和插件。正如介绍性文档的其他部分所述,应用和插件的配置细分为若干个系列***环境***。本质上讲,环境是可供选择的配置 - 您很可能会需要提供不同的应用套件,并且这些应用需要针对不同工作(例如镜头工作和资产工作)进行不同配置,因此环境是一项非常实用的功能。对于更复杂的工作流,您可能需要按部门进一步细分它,让建模工作使用与装配工作不同的设置。这些全部通过环境来实现。 - -环境文件定义了一些可能用到的插件,并将根据您正在运行的应用程序,使用其中一个部分。例如,如果您运行的是 Maya,将指示 Toolkit 启动“tk-maya”插件。{% include product %} Toolkit 会首先确定要使用的环境(基于当前工作区),然后在这个环境中查找 `tk-maya` 插件。如果能找到该插件,Toolkit 将加载为此部分定义的所有应用。 - -每个应用都有一些可以配置的设置。当您安装或升级应用时,{% include product %} Toolkit 会要求您配置所有无默认值的设置。Toolkit 应用通常采取可重用设计,因此根据设置方式的不同,应用可以有很多不同的用法,并且可用在许多不同的工作流中。您甚至可以在同一环境中多次定义同一应用。例如,您可以在 Maya 菜单上显示两个发布器,一个用来发布装配,另一个用来发布模型。两者都使用同一发布应用,只是配置不同。 - -**示例:环境文件** - -```yml -include: ./includes/app_launchers.yml - -engines: - - # 3dsmax engine - tk-3dsmax: - debug_logging: false - location: {name: tk-3dsmax, type: app_store, version: v0.2.6} - - # all the registered apps for this engine - apps: - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-texture: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Texture... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Diffuse Texture, Specular Texture] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current 3ds Max scene - primary_display_name: 3ds Max Publish - primary_icon: icons/publish_3dsmax_main.png - primary_publish_template: max_shot_publish - primary_scene_item_type: work_file - primary_tank_type: 3dsmax Scene - secondary_outputs: [] - template_work: max_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: max_shot_snapshot - template_work: max_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: max_shot_publish - template_publish_area: shot_publish_area_max - template_work: max_shot_work - template_work_area: shot_work_area_max - - # the maya engine - tk-maya: - debug_logging: false - location: {name: tk-maya, type: app_store, version: v0.2.7} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - - # all the registered apps for this engine - apps: - - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.7} - - tk-multi-about: - location: {name: tk-multi-about, type: app_store, version: v0.1.8} - - tk-multi-loader-1: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Assets... - publish_filters: [] - sg_entity_types: - Asset: [] - single_select: true - tank_types: [Maya Model, Maya Rig] - - tk-multi-loader-2: - dependency_mode: false - hook_add_file_to_scene: default - location: {name: tk-multi-loader, type: app_store, version: v0.2.6} - menu_name: Load Shots... - publish_filters: [] - sg_entity_types: - Shot: [] - single_select: true - tank_types: [Maya Anim, Maya Lighting, Maya Scene] - - tk-multi-publish: - display_name: Publish - hook_copy_file: default - hook_post_publish: default - hook_primary_pre_publish: default - hook_primary_publish: default - hook_scan_scene: default - hook_secondary_pre_publish: default - hook_secondary_publish: default - hook_thumbnail: default - location: {name: tk-multi-publish, type: app_store, version: v0.2.5} - primary_description: Publish and version up the current Maya scene - primary_display_name: Maya Publish - primary_icon: icons/publish_maya_main.png - primary_publish_template: maya_shot_publish - primary_scene_item_type: work_file - primary_tank_type: Maya Scene - secondary_outputs: [] - template_work: maya_shot_work - - tk-multi-screeningroom: '@launch_screeningroom' - - tk-multi-setframerange: - location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - - tk-multi-snapshot: - hook_copy_file: default - hook_scene_operation: default - hook_thumbnail: default - location: {name: tk-multi-snapshot, type: app_store, version: v0.1.15} - template_snapshot: maya_shot_snapshot - template_work: maya_shot_work - - tk-multi-workfiles: - hook_copy_file: default - hook_scene_operation: default - location: {name: tk-multi-workfiles, type: app_store, version: v0.2.5} - sg_entity_types: [Shot, Asset] - template_publish: maya_shot_publish - template_publish_area: shot_publish_area_maya - template_work: maya_shot_work - template_work_area: shot_work_area_maya -``` - -## 每个应用各有一个 location 设置 - -环境文件中的每一项都有一个特殊的 `location` 令牌。此令牌定义 Toolkit 应从哪里提取应用代码,以及如何检查应用是否有新版本。例如,我们可以像下面这样定义 location 令牌: - -``` -location: {name: tk-multi-setframerange, type: app_store, version: v0.1.2} -``` - -type 指示此应用来自应用商店,正在使用某个特定版本。当您运行更新检查时,{% include product %} Toolkit 会连接到应用商店,检查是否有比 `v0.1.2` 更新的版本,如果有的话,将询问您是否要升级。Toolkit 支持几种不同的 location 类型,包括 Git 和 GitHub,因此您可以构建自己的应用,使用 Git 跟踪它们,并且当您在 Git 中创建了新标记时,更新程序会检测到它,并在升级检查中正确处理它。有关详细信息,请参见[参考文档](https://developer.shotgridsoftware.com/zh_CN/6d10dedf/)。 - -## 包含文件 - -您可以在环境文件中包含外部文件。这对于集中处理设置或管理改写来说,往往非常有用: - -- 您可以对配置进行组织,使得即使从多个环境启动 Maya,也能在一处管理应用程序(Maya、Nuke)的所有文件路径。 - -- 对于在许多环境中都采用相同设置的应用,可以在一处定义它们。 - -- 您可以维护一个“中央”工作流配置,让多个项目共享这个配置。每次更新它时,所有项目都将随之更新。如果今后项目需要特殊的行为,每个项目都可以改写或扩展包含的这个中央配置。 - -- 您可以包含来自您的上下文的文件,将它们作为改写项。也就是说,您可以逐个镜头或逐个资产地重新配置设置参数。如我们的默认配置中所示,您可以在其中逐个镜头或逐个资产地设置改写 Maya、Nuke 等应用程序的路径。 - -- 如果您在完整路径中使用环境变量,这些路径将会自动展开。请注意,在 Linux 上,它们的形式必须为 `$ENV_VAR` 而不是 `${ENV_VAR}`,因为这会对 include 解析器造成混淆。示例:includes: `['$STUDIO_ROOT/foo/bar/hello.yml'`, `'%STUDIO_ROOT%\foo\bar\hello.yml']`。 - -**示例:为应用启动进行的特定于镜头的改写** - -假设您的 Shell 插件具有以下环境文件: - -```yml -include: ./includes/app_launchers.yml - -engines: - tk-shell: - debug_logging: false - location: {name: tk-shell, type: app_store, version: v0.3.0} - - apps: - tk-multi-launch3dsmax: '@launch_3dsmax' - tk-multi-launchmaya: '@launch_maya' - tk-multi-launchmotionbuilder: '@launch_motionbuilder' - tk-multi-launchnuke: '@launch_nuke' - tk-multi-launchphotoshop: '@launch_photoshop' -``` - -其中每个应用都是参考,在 `app_launchers` 包含文件中进行定义。此文件包含每个应用的实际应用配置,内容如下所示: - -```yml -includes: - - # first include the configuration's global settings for application paths - - ./paths.yml - - # now include overrides - these will be loaded if they are found - - sequences/{Sequence}/{Shot}/sgtk_overrides.yml - - assets/{sg_asset_type}/{Asset}/sgtk_overrides.yml - -launch_3dsmax: - engine: tk-3dsmax - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '' - menu_name: Launch 3DSMax - windows_args: '' - windows_path: '@3dsmax_windows' - -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -上面的文件不包含 Maya、Nuke 等应用程序的任何实际路径。这些路径在单独的 `paths.yml` 文件中定义: - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\maya.exe' -maya_mac: /Applications/Autodesk/maya2012/Maya.app -maya_linux: maya - -# nuke -nuke_mac: /Applications/Nuke6.3v8/Nuke6.3v8.app -nuke_windows: 'C:\Program Files\Nuke6.3v8\Nuke6.3.exe' -nuke_linux: Nuke6.3 -``` - -注意 `app_launchers` 文件是如何先包含上面的文件,然后又包含了 `sequences/{Sequence}/{Shot}/sgtk_overrides.yml`。这是一个特定于上下文的文件路径,就像模板一样,因此它会尝试对照当前上下文解析该路径。如果解析成功,它会查找并载入该路径。这意味着您可以在镜头位置创建一个 `sgtk_overrides.yml`,然后只改写特定镜头的应用程序路径: - -```yml -# maya -maya_windows: 'C:\Program Files\Autodesk\Maya2012\bin\special_maya.exe' -``` - -这里我们使用的是 Windows 上的一个特别的 Maya 版本。其余的路径将是 `paths.yml` 文件中定义的原始路径。 - -有关 include 如何工作的更多详细信息,请参见[参考文档](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)。 - -## 配置模板设置 - 文件路径 - -很多应用都会用到的一个重要设置类型是 `template` 设置。需要指定文件系统位置的应用将会使用这些设置。应用的开发要具有通用性或灵活性,设计上要能够用于任何文件系统结构或命名约定。而模板就是让应用能够独立于底层文件系统的关键所在。有关这方面的详细信息,请参见[概念简介](https://developer.shotgridsoftware.com/zh_CN/e95205a8/)。 - -在配置应用和遇到模板设置时,您需要指定包含正确字段的模板。字段可分为必需和可选两种类型,必需字段是模板中必须包含的字段,可选字段则是模板中可以包含、但即使模板中未定义也不会影响应用正常运行的字段。 - -![](images/advanced-toolkit-administration/templates.png) - -应用运行时,会根据您在配置中指定的模板来创建路径。创建的这些路径将以当前上下文和应用逻辑提供的一组字段为依据。这意味着,如果您的模板中有任何字段既不属于上下文,也不属于应用的可选字段或必需字段,应用将不知道如何为该字段设置值,因此将无法正常工作。Toolkit 会通过在启动时验证配置来避免发生这种情况。 - -验证模板设置时,Toolkit 会首先检查上下文,将上下文给定的字段与模板中的字段进行比较。如果比较上下文后发现字段列表与应用的必需/可选参数定义不一致,将弹出验证错误。 - -**实际示例:快照应用** - -下面这个实际示例说明了此验证是如何进行的。我们来看一下 Toolkit 众多应用中的 **快照应用**: - -此应用使用许多模板设置。下面是应用的设置明细部分定义的一项设置: - -- **设置名称**:template_snapshot -- **类型**:template -- **必需模板键**:version -- **可选模板键**:name、timestamp、increment -- **说明**:引用一个模板,该模板将定义快照备份在磁盘上的存储位置。 - -除了运行时上下文提供的字段以外,此模板设置还需要一个包含 `version` 字段的模板。另外,它还可包含可选的 `name`、`timestamp` 或 `increment` 字段,但不能再包含其他任何字段。例如: - -假设您为一个镜头的某个任务启动 Maya。上下文随后会包含以下字段: - -- 当前项目已设置。 -- 当前实体(例如镜头)已设置。 -- 当前步骤已设置。 -- 当前任务已设置。 - -插件启动时,会验证配置。下面这些例子说明了为上面的 `template_snapshot` 字段使用不同设置将会怎样: - -- 模板 `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.ma` 将是快照应用的 `template_snapshot` 设置可以使用的有效模板: - - - `Sequence`、`Shot` 和 `Step` 由上下文填充。注意,因为上下文知道当前镜头是什么,所以它可以自动得知当前镜头序列是什么(因为这是文件系统中的一个父文件夹)。 - - 模板中有一个应用设置所需要的 `version` 字段。 - - 模板中有一个可选的 `name` 字段。 - - 除此以外没有其他字段。 - -- 模板 `assets/{Asset}/work/maya/{name}.v{version}.ma` 将是无效模板,因为(镜头)上下文不知道如何解析 `Asset` 字段。 - -- 模板 `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.ma` 将是无效模板,因为它缺少必需的 `version` 字段。 - -- 模板 `sequences/{Sequence}/{Shot}/{Step}/work/maya/{name}.v{version}.{extension}` 将是无效模板,因为字段 `extension` 是未知字段,应用不知道如何填充它。 - -## 使用挂钩自定义应用的行为 - -应用经常使用的另一个设置类型是 `hook` 设置类型。挂钩是一段代码,应用将在正常执行过程中执行它。使用挂钩可以对应用进行非常灵活的自定义,并且意味着可将应用的某些业务逻辑与实际的应用代码相分离。 - -例如,假设我们有一个明细应用,它需要扫描场景中的各种参考和文件输入。对于 Maya,我们可以提供一个默认行为来处理 Maya 提供的标准参考节点,但如果工作室使用的是自定义类型的参考节点,该怎么办?当然,工作室总是可以选择在 GitHub 中 Fork 这个应用,但是鉴于他们其实只是想将自定义的节点类型添加到用来在场景中扫描参考节点的代码中,这样做就显得有些小题大作。 - -其实,细分应用可以将场景扫描代码片段执行成一个挂钩。这样,该挂钩实际上就是一个设置,是应用配置的一部分。它将附带一个默认值,用来处理一般的 Maya 情况,因此这个挂钩是开箱即用的。但是,如果用户需要,也可以轻松配置 {% include product %} Toolkit 来完全更改此行为。 - -应用安装后,配置中的挂钩设置将全部显示为默认值 (default)。 这表示应用将使用应用随附的内置挂钩执行。我们以下面的启动器应用配置为例: - -```yml -launch_maya: - engine: tk-maya - extra: {} - hook_app_launch: default - hook_before_app_launch: default - linux_args: '' - linux_path: '@maya_linux' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} - mac_args: '' - mac_path: '@maya_mac' - menu_name: Launch Maya - windows_args: '' - windows_path: '@maya_windows' -``` - -可以看到,这里有两个挂钩,分别是 `hook_app_launch` 和 `hook_before_app_launch`,二者都使用默认的应用执行。这两个挂钩的作用是让工作室可以自定义启动过程、设置环境变量等。 - -![](images/advanced-toolkit-administration/app_hooks.png) - -要自定义这些挂钩,首先需要找到它们的原始执行。每个应用都有一个 hooks 文件夹,所有挂钩都注册在此文件夹中。接下来,选择想要自定义的挂钩,然后***将该挂钩复制到您的配置中的 hooks 文件夹***。进行必要的代码更改。 - -此时,环境配置的挂钩设置仍然是 `default`,只要是这样,配置就会选取应用随附的默认挂钩,而不是其他挂钩。要让配置选取您的新设置,请将 default 更改为配置 hooks 文件夹中 Python 挂钩文件的名称。 - -**示例:如何自定义挂钩** - -下面我们来简单介绍一下如何自定义应用启动器的 `hook_before_app_launch` 挂钩。 - -1. 复制默认的挂钩执行。参见上图可找到应用随附的默认挂钩的位置。将此文件复制到您的配置区的 hooks 文件夹中。例如,如果您的工作流配置位于 `/mnt/software/sgtk/big_buck_bunny`,将该文件复制到 `/mnt/software/sgtk/big_buck_bunny/config/hooks/before_app_launch.py`。 - -2. 对 Python 代码进行必要的更改。 - -3. 最后,更新环境配置以使用您的新代码: - -```yml -yaml launch_maya: engine: tk-maya extra: {} hook_app_launch: default hook_before_app_launch: before_app_launch # <-- uses custom hook! linux_args: '' linux_path: '@maya_linux' location: {name: tk-multi-launchapp, type: app_store, version: v0.2.4} mac_args: '' mac_path: '@maya_mac' menu_name: Launch Maya windows_args: '' windows_path: '@maya_windows' -``` - -下次运行启动器应用时,将执行您的代码,而不是默认的挂钩代码。 \ No newline at end of file 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 deleted file mode 100644 index 72adcd569..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/apps-and-engines-config-reference.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: default -title: 应用和插件配置参考 -pagename: toolkit-apps-and-engines-config-ref -lang: zh_CN ---- - -# 应用和插件配置参考 - -本文档概述了在 {% include product %} Pipeline Toolkit 中为应用、插件和框架创建配置时可以包含的所有不同选项。在进行应用的高级配置时这很有用,而且在进行开发并需要向您的应用配置清单添加参数时可以起到很重要的作用。 - -_本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 [{% include product %} 集成管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。_ - -# 简介 - -本文档包含 Sgtk 的配置和设置使用的各种文件格式的规范。请注意,这只是一份概括介绍各种可用选项和参数的参考文档。有关如何管理配置的最佳实践,请参见以下文档: - -[配置管理最佳实践](https://developer.shotgridsoftware.com/zh_CN/60762324/) - -# {% include product %} Pipeline Toolkit 环境 - -Toolkit 有三个主要组件: - -- _插件_ - 在宿主应用程序(如 Maya 或 Nuke)与 Sgtk 应用之间提供转换层或适配器。应用通常使用 Python 和 PySide,而插件负责以标准化方式呈现宿主应用程序,例如如果 Pyside 尚不存在的话,会在宿主应用程序之上添加 Pyside。 -- _应用_ - 提供一种业务逻辑,本质上是具有某种用途的工具。我们可以手动编写应用,让它们只在特定的宿主应用程序中工作,也可以将它们设计成可在多个宿主应用程序中运行。 -- _框架_ - 一个可供插件、应用或其他框架使用的库。利用框架,可以更轻松地管理多个应用之间共享的代码或行为。 - -_环境文件_ 包含一套插件、应用和框架的配置设置。这样一套内容称为一个环境。Sgtk 会为不同文件或不同人员启动不同的环境。例如,您可以为镜头制作和装配分别准备一个环境。每个环境各有一个 yaml 文件。 - -环境文件位于:`//software/shotgun//config/env` - -yaml 文件的基本格式如下: - -```yaml - engines: - 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 - framework settings -``` - -每个应用和插件可通过设置进行配置。这些设置与应用/插件在其 `info.yml` 清单文件中公开的设置列表相对应。从 Sgtk 核心 `v0.18.x` 开始,只有当设置与清单文件中指定的默认值不同时,才需要指定设置。除了清单文件以外,通常还可在 Toolkit 应用商店的应用/插件页面找到可配置的设置。 - -除了可以为每个项定义的各种设置外,每个应用、插件和框架还需要定义代码的所在位置。我们使用专门的 `location` 参数来定义代码位置。 - -## 代码位置 - -环境文件中定义的每个应用、插件或框架各有一个 `location` 参数,用来定义要运行哪个版本的应用以及从哪里下载它。大多数情况下,这是由 `tank updates` 和 `tank install` 命令自动处理的。但是,如果您是手动编辑配置,则可使用各种选项帮助您部署 Toolkit 和设置结构: - -Toolkit 目前支持使用以下位置 _描述符_ 来安装和管理应用: - -- **app_store** 描述符表示 Toolkit 应用商店中的内容 -- **{% include product %}** 描述符表示 {% include product %} 中存储的内容 -- **git** 描述符表示 Git 库中存储的标记 -- **git_branch** 描述符表示 Git 分支中的提交 -- **path** 描述符表示磁盘位置 -- **dev** 描述符表示开发者沙盒 -- **manual** 描述符用于自定义部署和推行 - -有关不同描述符用法的文档,请参见 [Toolkit 参考文档](http://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types)。 - -## 禁用应用和插件 - -有时,临时禁用应用或插件可能会对您有所帮助。建议的做法是,向用来指定应用或插件加载位置的位置词典中添加一个 `disabled: true` 参数。各种位置类型都支持此语法。该语法的格式如下所示: - -```yaml -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]} -``` - -_deny_platforms_ 参数的值可以是 `windows`、`linux` 和 `mac`。 - -## 设置和参数 - -每个应用、插件或框架都显式地定义了一些设置,您可以在配置文件中改写这些设置。这些设置分为字符串、整数、列表等强类型。有关详细信息,请参见 [Toolkit 参考文档](http://developer.shotgridsoftware.com/tk-core/platform.html#configuration-and-info-yml-manifest)。 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 deleted file mode 100644 index c42b40827..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/beyond-your-first-project.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -layout: default -title: 在您的第一个项目基础上更进一步 -pagename: beyond-your-first-project -lang: zh_CN ---- - - -# 在您的第一个项目基础上更进一步 - -在本文中,我们将介绍使用 {% include product %} Desktop 创建并开始正常运行第一个项目之后该做些什么。其中包含相关的常见问题和主题,并列出了很多有用的文档资源。 - - -# 欢迎使用 Toolkit - -欢迎您使用 Toolkit!如果您正在阅读本文,说明您或许已经成功使用 {% include product %} Desktop 安装了第一个 {% include product %} Pipeline Toolkit 项目。 - -![](images/Beyond-your-first-project/project_ready.png) - -在这个阶段,我们希望您已经可以正常工作,并且像上面的屏幕截图一样,有一个项目页面和一些应用程序启动器。可以尝试着打开 Maya、Nuke 或其他任何应用程序。您应该会看到一个 {% include product %} 菜单,其中包含更多用于管理文件和资产的功能。 - -那么,接下来该做些什么?Toolkit 在配置和工作方式上具有很大的灵活性。本文档将介绍一些我们建议您在使用 {% include product %} Desktop 创建并开始正常运行第一个项目之后执行的后续步骤。 - -# 基本配置 - -本节包含一系列参数调整和有用的配置内容。如果您刚刚设置好第一个 Toolkit 项目,很可能需要进行一些细微的调整才能让一切正常运行。本节将介绍这些不同的步骤。请注意,某些步骤需要编辑配置文件和执行一些“底层”操作。如果您对任何方面有任何疑问,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -## 设置应用程序路径 - -当您设置好第一个项目并单击启动按钮启动 Maya、MotionBuilder 或 Nuke 时,可能会看到类似如下的错误消息: - -![](images/Beyond-your-first-project/failed_to_launch.png) - -在 Toolkit 项目配置中,我们会存储您可以启动的各种可执行文件的路径。如果出现上面的错误消息,很可能意味着这些路径与您的工作室设置不一致。您可能还会发现启动了错误的应用程序版本;例如,我们的默认配置使用的可能是 Maya 2015 的路径,但您的工作室运行的是 Maya 2014。这种情况下,您还需要更改这些路径。 - -在我们的默认配置中,这些路径全部存储在一个名为 `paths.yml` 的文件中。 要更改某个路径,需要在磁盘上找到您的项目配置,然后导航进入 config 文件夹,直至找到 `paths.yml` 文件: - -![](images/Beyond-your-first-project/paths_config.png) - -打开此文件并对路径进行必要的更改。保存文件后,需要在 {% include product %} Desktop 内退出该项目,然后单击重新进入项目(但是不需要重新启动整个应用程序)。 - -**延伸阅读** - -有关应用程序的详细信息,请查看以下主题: - -- [Toolkit 应用程序启动器](https://developer.shotgridsoftware.com/zh_CN/1b9c259a/) -- [传递命令行参数](https://developer.shotgridsoftware.com/zh_CN/1b9c259a/) - - -## {% include product %} 集成 - -Toolkit 与 {% include product %} 集成,并通过向用户界面不同部分添加特殊的 Toolkit 动作菜单项来扩展传统界面: - -![](images/Beyond-your-first-project/shotgun_integration.png) - -这提供了一种方法来启动 Toolkit 应用程序或直接从 {% include product %} 处理数据的自定义工具。有关与 {% include product %} 站点集成的更多信息,请参见[“管理员手册”的“浏览器集成”部分](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。 - -## 向 {% include product %} 用户界面添加发布 - -安装 Toolkit 后,通常有必要对 {% include product %} 用户界面布局做一些细微的调整。在您发布文件时,{% include product %} Pipeline Toolkit 可创建 _发布实体_ ,以便向关键资产(例如镜头和资产)添加 _“发布”(Publishes)选项卡_。要执行此操作,请确保您以管理员用户身份登录。首先,导航到一个资产或镜头,然后进入 _设计模式_: - -![](images/Beyond-your-first-project/design_mode.png) - -现在单击其中一个选项卡上的小三角形菜单,然后选择 _“添加新选项卡”(Add New Tab)_ 动作。 这将打开一个对话框 UI。将选项卡命名为 _“发布”(Publishes)_,并确保它与已 _发布文件_ 实体关联: - -![](images/Beyond-your-first-project/create_tab.png) - -现在单击 _“保存”(Save)_ 保存更改。 这样就全部搞定了! - -注意:{% include product %} 会选择几个默认字段,供您在创建新选项卡时添加。您可能想要针对发布添加一些额外的字段。为此,可以单击新的“发布”(Publishes)选项卡下电子表格右上角的小加号按钮。我们建议您添加下列字段: - -- **说明(Description)** - 保存本发布中的变更说明 -- **创建者(Created By)** - 创建发布的用户 -- **创建日期(Date Created)** - 创建发布的日期 - -如果更改布局,之后请不要忘记保存页面! - -## 多个操作系统 - -在某些情况下,您可能会看到一条弹出消息,提示您**找不到 Python**,并带有一个指向文档本节的链接。 - -Toolkit 使用一种名为 [Python](https://www.python.org/) 的语言来执行其脚本和功能。{% include product %} Desktop 附带了一个完整的内置 Python 安装,因此您通常不需要考虑这一点。当您使用 {% include product %} Desktop 设置新的 Toolkit 项目时,项目默认会被设置为使用 {% include product %} Desktop 捆绑的 Python。但是,有时您可能需要明确指示 Toolkit 您想使用哪个 Python。例如,在下列情况下您需要这样做: - -- 使用的是早期版本的 {% include product %} Desktop,不能自动设置所有 Python 默认设置。 -- 您将 {% include product %} Desktop 安装在了磁盘上的非标准位置。 -- 您运行的是手动的或更复杂的 Toolkit 项目设置。 - -Python 的路径存储在配置文件中,您可以手动编辑这些文件: - -![](images/Beyond-your-first-project/interpreter.png) - -要找到正确的文件,首先导航到您的项目配置。在树视图中,查找以 `interpreter_` 开头的文件。 这些文件包含 Linux、Windows 和 Mac(“Darwin”)平台的 Python 解释器的路径。这些文件包含这三种操作系统各自的 Python 位置。您需要进入文件并手动添加要使用的任何操作系统的 Python 位置。 - -如果文件是空白的,表示您使用的是早期版本的 {% include product %} Desktop。如果是这样,只需尝试使用默认的 Python 路径更新这些空白文件即可。这些路径如下所示: - -- Macosx (Darwin): `/Applications/Shotgun.app/Contents/Frameworks/Python/bin/python` -- Windows: `C:\Program Files\Shotgun\Python\python.exe` -- Linux: `/opt/Shotgun/Python/bin/python` - -如果您已将 {% include product %} Desktop 安装在非标准位置,或者打算使用自定义的 Python 位置,请确保文件中的路径指向有效的 Python 安装。此安装需要为 v2.6 或更高版本(但不能是 Python 3!)。如果您想执行基于用户界面的应用程序和工具,请确保您指定的 Python 已安装了 PyQt 或 PySide,并且已链接至 QT v4.6 或更高版本。 - -另外还要注意,为了能在多个操作系统上运行 Toolkit,在运行项目设置向导时,您需要指定所有需要的平台的路径。如果您尚未执行此操作,并且想要将其他操作系统添加到存储路径或配置位置,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -# 后续步骤 - -至此,默认的 {% include product %} 设置应该可以正常用于一个 {% include product %} 项目(或测试项目)了。应用程序开始启动,{% include product %} 中开始显示上下文菜单动作和发布,您需要的所有操作系统平台一切运行正常。 - -下面这个小节主要介绍接下来要做些什么 -- 从默认配置开始,对它进行调整,使它更接近于您工作室工作流的其余环节。Toolkit 的灵活性和可配置程度很高,而且我们还有丰富的文档资源。但是在开始前,为了让您对实际操作一目了然,我们建议您花几分钟时间观看我们的各种介绍视频。这些视频演示了 {% include product %} Pipeline Toolkit 的实际运行,以及它在 Maya 和 Nuke 这类应用程序内部是如何工作的。视频还简要介绍了发布、版本控制、加载等基本概念。 - -## Toolkit 项目剖析 - -创建新的 Toolkit 项目时,您最终将得到几个关键位置。 - -![](images/Beyond-your-first-project/storage.png) - -- {% include product %} Desktop 及其配置已安装在您的本地计算机上(如果需要,可将应用程序和配置同时移至共享存储)。 -- 数据区域是 Toolkit 项目存储纹理、文件、渲染等内容的地方。这通常是一个共享存储,因为您需要与其他用户共享这些数据,但是此规则也有例外;用户工作区可存储在本地(仅限用户)存储中,集成(例如 Perforce 集成)则使用外部系统帮助分发内容。 -- Toolkit 配置是一个完全自包含的数据包,包括代码、应用、核心 API 等。这些数据通常存储在共享存储上,方便所有用户轻松访问配置。 - -您在磁盘上的项目配置包含几个不同的项。 - -![](images/Beyond-your-first-project/project_overview.png) - -在下面这些小节中,我们将带您了解项目配置文件夹的不同部分。 - -### 命令行访问 - -除了使用 {% include product %} Desktop,您还可以通过终端或 Shell 访问 Toolkit。您在磁盘上创建的每个项目都附带一个特殊的 `tank` 命令,它让您可基于命令行访问许多功能,包括发起 API 会话和启动应用程序。 - -如果您导航到自己的项目配置,可以在配置的根目录看到 `tank` 和 `tank.bat` 命令。 运行这些命令时,如果不带任何选项,将生成当前配置支持的所有命令的列表,包括以下实用命令: - -- `tank shell` - 启动一个提供 TK API 访问功能的交互式 Python Shell -- `tank core` - 检查此项目是否有任何可用的核心 API 更新 -- `tank updates` - 检查此配置中是否有任何应用或插件有任何更新可用 - -有关 `tank` 命令用途的更多详细信息,请参见以下深入的技术文档: - -[如何管理 Toolkit](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) - -### 主要配置文件 - -`config` 文件夹包含一些主要配置文件。 - -![](images/Beyond-your-first-project/config_overview.png) - -Toolkit 附带一个文件夹创建系统,它会尝试自动在磁盘上创建文件夹,确保当您启动应用程序时,所有必要的结构在磁盘上都存在,并且已事先准备就绪!这方面的配置可在上面所示的 `schema` 文件夹中找到。 - -另外要与此相提并论的是 Toolkit 的 _模板系统_ ,它让您可轻松定义各种可配置的文件、发布内容、工作文件、渲染等的路径。 模板存储在上面的 `templates.yml` 文件中。 - -结合运用项目配置的这两个部分,可以调整 Toolkit 使用的各种应用,让它们将数据写出到您的现有工作流可以识别的磁盘位置。 - -请参阅我们的高级文档了解这方面的更多信息: - -- [文件夹配置](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) -- [文件系统模板](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) - -Toolkit 配置本质上由一系列已配置的**应用和插件**组成。 此配置位于 `env` 文件夹中。 如果说上面讨论的文件系统配置文件定义了资源在磁盘上应该“位于 _何处_” ,那么环境配置及其应用和插件则定义了工作流应该执行“ _什么_ 操作”。 - - -### 核心 API 平台 - -每个项目配置都使用一系列应用和插件。这些应用和插件的配置存储在配置内的 `env` 文件夹中。 Toolkit 随后会自动下载和管理运行这些应用和插件所需的各种版本的代码。这些代码放在 `install` 文件夹内。 - -配置、应用和插件都在 Toolkit 核心平台之上运行。对于新项目,这些数据也存储在 `install` 文件夹内。 本质上讲,项目配置是完全自包含的 - 运行 Toolkit 必需的所有必要组件都位于一处。这也意味着每个项目都是独立的,更新一个项目不会打断另一个项目。 - -技术说明:使用共享的 Toolkit 核心(单击此处展开) - -### 延伸阅读 - -我们还有一份技术性更强的文档,从头到尾介绍了 {% include product %} Pipeline Toolkit 中的高级概念,并讲解了一些更宏观的东西。当您能够很好掌握 Toolkit 的常规用法后,我们建议您继续阅读此文档,更深入地了解可以怎样调整 Toolkit 来满足您工作室的特殊需求。 - -[{% include product %} Toolkit 高级概念简介](https://developer.shotgridsoftware.com/zh_CN/e95205a8/) - -## Toolkit 社区 - -Toolkit 有一个不可或缺的部分,那就是汇集了众多工作流工程师和技术主管的社区!我们的使命是打造一个充满活力、代码共享的社区。在这里,大家可以群策群力,共同帮助 Toolkit 不断发展成为一个强大并且灵活的工作流环境。 - -如果您有任何疑问,或者想阅读现有的帖子和话题,请访问我们的[社区](https://community.shotgridsoftware.com/c/pipeline/6)。 - 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 deleted file mode 100644 index fbe8ac2f2..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/community-shared-integrations.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -title: 社区共享集成 -pagename: community-shared-integrations -lang: zh_CN ---- - -# 社区共享集成 - -下面是 Toolkit 社区人员热心分享的项目。 它们不是由 {% include product %} 内部人员编写的,因此我们无法做出保证,但我们一定会回答我们可以回答的任何问题。如果您有要添加到列表的项目,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -### 引擎 - ----------- - -| 集成 | 插件 | 信息 | -|:-----------:|:------:| ----------- | -| 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/4.26/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/](https://docs.unrealengine.com/4.26/zh-CN/ProductionPipelines/UsingUnrealEnginewithAutodeskShotgun/)
项目参与者:[Epic Games](https://www.epicgames.com/store/zh-CN/)
项目维护者:
项目说明:{% 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.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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.shotgridsoftware.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 deleted file mode 100644 index 8fd396c78..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/config-staging-and-rollout.md +++ /dev/null @@ -1,498 +0,0 @@ ---- -layout: default -title: 配置临时沙盒和推行应用 -pagename: config-staging-and-rollout -lang: zh_CN ---- - -# 配置临时沙盒和推行应用 - -本文档介绍了有关如何安全地将更改应用于您的生产工作流的最佳实践。说明了如何创建临时沙盒(这是您的生产配置的副本)、更新此沙盒及进行测试,最后将更改推送至生产配置。 - -_请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有关默认设置,请参见 [{% include product %} 集成管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。_ - -# 简介 - -本文档概括介绍了如何管理您的 Toolkit 配置。Toolkit 包含几个实用程序和工具,让您可安全地管理配置,并在安全的沙盒环境中测试升级和更改,然后再将它们部署到整个生产环境。 - -在本文档中,我们将介绍如何: - -- 安全地升级 Toolkit 核心 API。 -- 升级应用和插件。 -- 使用各种方法管理多个项目的配置。 -- 使用 Toolkit 的 _“克隆”_ 和 _“推送”_ 功能,在不中断生产的情况下安全地测试升级和更改。 -- 使用 `git` 源代码管理系统和 Toolkit。 - -# 配置管理的基础知识 - -每个 Toolkit 项目都关联了一个或多个配置。配置包含项目所需的所有设置,包括文件系统位置(模板)、插件、应用等。在 Toolkit 中,每个项目都可以单独进行配置。也就是说,不同的项目可以和平共处:升级一个项目不会影响另一个项目。 - -如果您有大量项目要处理,这样可能会比较麻烦,因此我们提供了几种方法,让配置过程变得轻松、安全、简单。 - -在 {% include product %} 中,每个项目都有多个**工作流配置**。首次使用 Toolkit 设置项目时,会创建一个名为 `primary` 的工作流配置。 {% include product %} 中的工作流配置实体将指向一个磁盘位置,Toolkit 的配置将位于此处。 - -在项目期间,经常需要更改配置。您可能会调整配置,也可能需要添加另外的应用或插件。我们也会经常发布新的应用版本,并建议您尽可能使用最新版本。 - -尽管可以直接升级项目的 _主_ 配置,但这样做可能会有风险:因为参与项目的每个人都使用此配置,一旦出现问题,就会影响所有人。更好的做法是创建一个孤立的配置版本,让指定的一组人员可以访问它。在这个安全的环境中,无论进行升级、配置更改还是开发,都不会影响其余的生产环境。更改通过测试后,便可以安全放心地将它们推送到主配置。 - -我们将这个过程称为 _“克隆”_ ,它相当于为主配置创建一个只有您自己(以及您邀请的其他人)才能访问的个人副本。 在这个副本中,您可以安全地进行更改,直到满意为止,然后可以将这些更改推送回主配置。 - -## 克隆您的配置 - -设置好 Toolkit 并配置项目后,整个设置看起来将如下所示: - -![](images/config-staging-and-rollout/config_overview.png) - -设置中有一个工作室安装 (_studio_),其中容纳着所有项目的核心 API。 此 _studio_ 位置中还包含一个 `tank` 命令和一个 Toolkit Python API,您可以使用该 API 访问任何启用了 Toolkit 的 {% include product %} 项目。 - -除此以外,每个项目还有一个配置文件夹。此文件夹包含该项目的所有设置。此外,它还包含一个专门用来操作此配置的 `tank` 命令(和一个 Python API)。使用此 `tank` 命令或 API 代码时,只能操作此配置。 - -设置新项目后,会创建一个 _主_ 配置。 这是 Toolkit 默认将为项目使用的配置。除了主配置以外,您还可以为项目创建另外的配置。这些配置可以并存,并且当您想单独测试某些修改、升级某些应用或在不影响整个团队的情况下进行开发时,这些配置会很有用。除主配置以外的其他配置由一个称为 _“克隆”_ 的过程创建,这个过程会将配置复制到一个新位置。 - -克隆完配置后,您的设置看起来可能如下所示: - -![](images/config-staging-and-rollout/pc_overview.png) - -此时,除了工作室级的 `tank` 命令和项目主配置的 `tank` 命令以外,您还有了一个新的工作流配置,它也有自己的 `tank` 命令。 如果您运行此 `tank` 命令,将对临时沙盒中的配置进行独占操作。 因此,如果您想在 Maya 中测试某些新功能,只要导航到克隆的沙盒,运行 `./tank Shot xyz launch_maya`,Maya 中显示的 {% include product %} 菜单便会反映临时沙盒内的配置,而不是主配置。 - -注意,工作室级的 `tank` 命令始终使用主配置。因此,访问克隆配置的唯一方法是导航到克隆配置所在的位置,然后使用该文件夹中的 `tank` 命令。 在 {% include product %} 中,您可以向一个工作流配置项分配一组特定的用户,任何与某个配置关联的用户不仅能看到主配置中的菜单项,还能看到该配置的菜单项: - -![](images/config-staging-and-rollout/pc_shotgun.png) - -### 创建克隆配置 - -要创建可以安全测试升级的临时沙盒,请在 {% include product %} 中导航到您项目的工作流配置,然后在主配置上单击鼠标右键。此时将显示一个克隆配置的选项: - -![](images/config-staging-and-rollout/clone_menu.png) - -单击此选项后,将显示一个对话框,让您指定新配置在磁盘上的路径。如果您的设置运行多个操作系统,请确保输入所有相关平台的路径。 - -![](images/config-staging-and-rollout/clone_dialog.png) - -按“确定”(OK)后,Toolkit 将复制配置并设置克隆。它还会将您的 {% include product %} 用户与此配置关联,因此创建克隆后,您立刻就会在 {% include product %} 内看到新的菜单项。 - -### 将更改从临时沙盒推送到主配置 - -应用相关更新并运行了任何必要的测试之后,您可以执行 `tank push_configuration` 命令,将更改推送回生产配置。 此操作会将您在临时沙盒中所做的更改全部传输到主配置。 - -请注意,当您运行 `push_configuration` 命令时,当前配置将被移至一个备份位置。如果您意外地进行了推送或推送出现问题,只需将 backup 文件夹中的内容复制到 config 文件夹,即可轻松回退。 - -默认情况下,此命令会将一系列文件复制到目标工作流配置中的 `config` 文件夹。 如果您使用的是 Unix 系统,想进行更加原子式的更新,可以向 `push_configuration` 命令添加一个 `--symlink` 标志。 这会将目标工作流配置中的 `config` 文件夹变成一个符号链接,让升级变得更容易,并且不会出现当前运行的会话中配置不匹配的风险。 - -### 刷新旧的克隆配置 - -如果您有一个旧的开发沙盒或过时的临时沙盒设置,现在需要将它的内容与最新的生产配置同步,可以为主配置运行 `push_configuration` 命令来进行同步。 -```shell -tank push_configuration - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/tmp' -- Using configuration 'Primary' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command push_configuration... - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary') to another pipeline configuration in the project. - -Your existing configuration will be backed up. - -The following pipeline configurations are available to push to: - - [324] Staging Sandbox (/my/staging/sandbox) - -Please type in the id of the configuration to push to (ENTER to exit): 324 -Hold on, pushing config... -Checking if there are any apps that need downloading... -Push Complete! - -Your old configuration has been backed up into the following folder: -/my/staging/sandbox/config.bak.20140108_093218 -``` -请注意我们如何从项目主配置向临时沙盒推送内容。我们的做法是运行 _主_ 配置的 `tank` 命令。 如果您有多个沙盒设置,也可以在这些沙盒之间推送数据。 - -### 删除克隆配置 - -如果想删除克隆配置,只需在 {% include product %} 中删除条目,然后从磁盘上移除对应的文件夹即可。 - -## 获取最新的应用和插件 - -在临时沙盒内(或其他任何配置中),您可以运行 `tank updates` 命令来检查是否有任何可用的应用更新。 此命令提供基本的过滤器,如果您只想检查配置的某些区域,可以使用这些过滤器: - -```shell ----------------------------------------------------------------------- -Command: Updates ----------------------------------------------------------------------- - -This command will go through your current configuration and check if there are -any updates available. If there are updates, you will be asked if you want to -perform an upgrade. If settings has been added to the new version that you are -installing, you may be prompted to specified values for these. - -Running this command with no parameters will check all environments, engines -and app. This may take a long time. You can also run the updater on a subset -of your installed apps and engines. - -General syntax: -> 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 -``` -## 升级 Toolkit 核心 API - -本节介绍可以怎样使用克隆临时沙盒配置来安全地升级 Toolkit 核心 API。如果您还没有准备好临时沙盒,只要按照上节的说明操作即可! - -如果您的临时沙盒克隆自某个使用[共享工作室核心 API](https://developer.shotgridsoftware.com/zh_CN/b12f2510/#how-do-i-update-my-pipeline-configuration-to-use-an-existing-shared-core) 的工作流配置,您需要更新沙盒,以使用它自己独有的核心 API 代码。我们将这个过程称为对核心进行“本地化”,您可以导航到您的临时沙盒并运行 `tank localize` 来执行此操作。 此命令会将工作室安装中的核心 API 复制到您的沙盒,以便稍后可以运行和测试不同版本的核心 API。 - -_Toolkit 的默认行为是默认对核心进行本地化。如果您之前未显式创建过共享的工作室核心,可以有把握地认为您的核心已经本地化。_ -```shell -cd /my/staging/sandbox -./tank localize - -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current directory '/my/staging/sandbox' -- Using configuration 'Staging Sandbox' and Core v0.14.52 -- Setting the Context to Empty Context. -- Running command localize... - ----------------------------------------------------------------------- -Command: Localize ----------------------------------------------------------------------- - -This will copy the Core API in /mnt/software/shotgun/studio into the Pipeline -configuration /my/staging/sandbox. - -Do you want to proceed [yn]y - -Localizing Core: /mnt/software/shotgun/studio/install/core -> /my/staging/sandbox/install/core -Copying Core Configuration Files... -Localizing Apps: /mnt/software/shotgun/studio/install/apps -> /my/staging/sandbox/install/apps -Localizing Engines: /mnt/software/shotgun/studio/install/engines -> /my/staging/sandbox/install/engines -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), -no other configurations or projects will be affected. -``` -此时,我们已不再共享工作室位置的核心 API,而是运行我们自己的独立版本。接下来,我们可以继续再次使用本地 tank 命令执行标准的核心 API 升级: -```shell -cd /my/staging/sandbox -./tank core -``` -Toolkit 将检查是否有新版本可用,并让您下载并安装它。 - -更新核心 API 之后,请务必对安装进行测试。使用沙盒中的 `tank` 命令或使用 {% include product %} 中专门的菜单项启动一些应用。从头至尾对您的工作流进行基本调试,并执行您认为必要的测试。 - -最后,待测试结果满意后,便可继续更新核心 API 的工作室版本。请注意,在典型的 Toolkit 设置中,所有项目共享核心 API,因此从工作室位置的 `tank` 命令运行 `tank core` 命令,即可为所有项目更新核心 API。 - -# 管理项目生命周期 - -每个 Toolkit 项目都包含一个独立的配置,用来容纳该项目的所有设置。如果您管理着大量项目,意味着您需要管理大量配置。为此,Toolkit 包含多种不同的配置处理工具和方法,它们同时适用于单个项目和工作室的生命周期及配置发展。本节概括介绍其中一些最佳实践,并说明有关设置配置的实际步骤。 - -取决于工作室的需要,复杂程度可能会有所不同。Toolkit 提供三种不同的方法,下面我们将逐一详细介绍它们: - -- 最直接的方法是在设置新项目时复制之前项目的配置。这种方法非常适合项目量不大的小型工作室。 -- 如果您的项目处理量更大,并且会同时运行多个项目,我们推荐的更深一层集成是使用 `git` 版本控制系统。Toolkit 原生支持 Git。当您设置完毕并开始运行基于 Git 的工作流后,工作室只有一个配置,您可以跟踪一段时间内对该配置所做的所有更改。每个项目都可以根据需要导入配置更改。 -- 如果您运营的设施规模较大,或许可以考虑将一个配置直接连接到工作室中当前处于活动状态的所有项目。对这个配置进行的任何更改,都将立即应用于所有项目。 - -在下面的小节中,我们将详细介绍这几种不同的方法。 - -## 继承之前项目的配置 - -这是最简单的配置管理方法。首次使用 Toolkit 设置项目时,您会下载我们的默认配置。然后,根据自己的工作流设置、文件系统位置等建立第一个项目。项目开始运行后,您会运行诸如 `tank updates` 等命令,更新正在运行的应用版本。 - -等到建立第二个项目时,您不用再从默认配置重新开始,可以在项目设置阶段选取第一个项目的配置作为新项目的初始配置。也就是说,您对第一个项目所做的所有更改、调整和改进,也将为第二个项目所用。同样,第三个项目可以使用第二个项目的配置等。 - -![](images/config-staging-and-rollout/copy_config.png) - -这是让配置随时间逐步发展的一个非常简单的方法。所做的更改和改进将即时在项目之间传播。第一次运行 `setup_project` 命令时,只需在设置过程提示您选择要使用的配置时按 Enter 即可。这将下载并安装默认配置。 - -设置第二个项目时,您将看到之前项目的配置路径列表。选择其中一个路径,当设置过程提示输入配置时,输入此路径。这会将相应的配置复制到新项目: -``` -Welcome to the {% include product %} Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -- Running command setup_project... - ----------------------------------------------------------------------- -Command: Setup project ----------------------------------------------------------------------- - -Welcome to the {% include product %} Pipeline Toolkit Project Setup! - -Connecting to {% include product %}... -Connecting to the App Store... - ------------------------------------------------------------------- -Which configuration would you like to associate with this project? - -You can use the configuration from an existing project as a template for this -new project. All settings, apps and folder configuration settings will be -copied over to your new project. The following configurations were found: - - My very first project: '/mnt/software/shotgun/first_project/config' - -If you want to use any of the configs listed about for your new project, just -type in its path when prompted below. - -You can use the Default Configuration for your new project. The default -configuration is a good sample config, demonstrating a typical basic setup of -the {% include product %} Pipeline Toolkit using the latest apps and engines. This will be -used by default if you just hit enter below. - -If you have a configuration stored somewhere on disk, you can enter the path -to this config and it will be used for the new project. - -You can also enter an url pointing to a git repository. Toolkit will then -clone this repository and base the config on its content. - -[tk-config-default]: /mnt/software/shotgun/first_project/config -``` -## 在 Git 源代码管理系统中创建工作室配置 - -第一种方法有一定的局限性,其中一点是项目实际上不是彼此相连。假设您有 10 个项目,当发布了某个重大错误修复时,您需要更新所有项目,这时必须手动操作每个项目并运行 `tank updates` 命令。 - -解决此问题的一个办法是创建一个主配置,并将它存储在 Git 源代码管理系统中。每当您创建新项目时,只需在设置项目对话框中键入此 Git 库的路径,Toolkit 便会克隆相应内容。这样,所有项目便会连接至同一个工作室主配置。如果您对某个项目配置做了一些不错的更改,可以提交这些更改,并将它们推送至工作室主配置。其他项目随后便可轻松 Pull 这些更改。另外,您还会得到通过 Git 进行的所有更改的历史记录。 - - Git 是什么? - -![](images/config-staging-and-rollout/git_config.png) - -基本思路是建立一个用来容纳 Git 配置的 Git 库。每次运行 `tank setup_project` 时,您指定此库的 Git URL(例如 `username@someserver.com:/studio_config.git`),设置过程便会克隆该库,这样新项目就成为一个与主工作室库相连的库。它们相连后,您可以使用 Push 和 Pull 命令推送和调取更改,并可使用分支进行更精细的控制。 - -### 设置工作室配置库 - -在执行其他操作前,您需要先创建一个工作室配置库。本节介绍如何利用现有的 Toolkit 配置创建一个 Git 库。 - -首先,您需要转至您的 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 -``` - -这样,Git 将忽略这两个系统文件。我们可以继续在配置中添加其余文件,提交它们,然后将它们推送到工作室库。 - -```shell -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 库,并将无缝工作。 - -### 对项目进行更改 - -每次更改主配置后,您可以直接转到 `config` 文件夹,然后运行 `git diff`、`git commit` 和 `git push`。这会将您的更改推送到克隆您的项目配置所依据的工作室配置。 - -### 更新项目以获取最新版本 - -另外,如果您使用一些更改更新过您的工作室级配置,现在想将这些更改下载到项目中,只需转到 `config` 文件夹并运行 `git pull` 即可。 **重要提示**:请注意,完成此操作后务必运行 `tank cache_apps`,以确保系统中存在您更改的配置所需的所有应用版本! - -### Git 高级用法:分支 - -创建新项目时,Toolkit 的默认行为是完成一次简单的克隆操作。项目将使用 Git 的 `master` 分支。要进行更高级的设置,例如当您想将项目的某些配置更改保密、不想与其他项目共享这些更改时,可以在创建项目后建立一个 Git 分支。然后,将更改提交到此分支。您要推送到工作室配置的更改可以与项目的本地 master 分支合并,然后再进行推送。 - -### Git 高级用法:批量部署 - -Toolkit 通过工作流配置实体保留了 {% include product %} 站点所有不同配置的列表,因此我们可以迭代处理此列表,为每个列表项执行 `git pull` 命令,这实际上相当于对所有项目运行批量更新。此功能目前并未纳入到 Toolkit 中,但可以使用 Python 和 {% include product %} Python API 编写相应的脚本。 - -## 使用包含文件的全局配置 - -上面基于 Git 的方法处理的是通过 Git 相连的独立项目配置:更新不会自动体现在所有项目中,用户必须执行 Pull 和 Push 操作来提取和推送更新。 - -而对于完全集中式的配置,配置真正位于一处,一个更改会立即反映到一组项目。这种情况下,您需要使用 Toolkit 配置中的 `@include` 功能。 此功能让您可以创建引用,将每个项目配置指向一个存储实际配置的中央位置。 - -![](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' -maya_mac: '/Applications/Autodesk/maya2012/Maya.app' -maya_linux: 'maya' - -# a configured toolkit app -file_manager: - allow_task_creation: true - file_extensions: [] - hook_copy_file: default - hook_filter_publishes: default - hook_filter_work_files: default - hook_scene_operation: default - launch_at_startup: false - launch_change_work_area_at_startup: false - location: {name: tk-multi-workfiles, type: app_store, version: v0.4.8} - saveas_default_name: scene - saveas_prefer_version_up: false - sg_entity_type_filters: {} - sg_entity_types: [Shot, Asset] - task_extra_display_fields: [] - template_publish: null - template_publish_area: null - template_work: null - template_work_area: null -``` -如上所述,您可以在几个不同级别创建包含定义 - 在上面的例子中,我们有一个应用定义和三个字符串值。接下来,我们可以从一个环境文件引用这些对象: -``` -includes: ['/tmp/stuff.yml'] - -engines: - - tk-maya: - - # First all our app definitions - 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: - tk-multi-workfiles: '@file_manager' - - # alternatively, for simple values, we can use them as parameter values for apps: - tk-maya-launcher: - mac_path: '@maya_mac' - linux_path: '@maya_linux' - windows_path: '@maya_windows' - location: {name: tk-multi-launchapp, type: app_store, version: v0.2.19} - - # and after the apps section follows specific configuration options for the engine - location: {name: tk-maya, type: app_store, version: v0.4.1} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - template_project: null - use_sgtk_as_menu_name: false -``` -此外,您可以逐个读入几个包含文件。如果两个不同的文件中存在相同的包含定义,将优先使用最新读取的文件。我们可以扩展上面的示例环境: -``` -includes: - - # first include a global config file which contains all the studio level app definitions - - '/studio/configurations/studio_apps.yml' - - # now we can include an include containing overrides, for example based on project type. - # if the global config contains an entry named file_manager and the vfx_apps.yml contains - # the same, the vfx_apps definition will be used. - - '/studio/configurations/vfx_apps.yml' - -engines: - - 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 -``` -使用刚刚介绍的方法,可以得到一组工作室默认值,这些默认值可被项目类型默认值改写,而后者又可以被特定的项目设置改写。您既可以如上面示例中所示,在应用一级使用此功能,也可以如下节中所示,在插件一级使用此功能。 - -### 设置全局配置的最佳实践 - -设置全局配置的方法有多种。我们建议的最佳做法是按插件对配置进行细分。每个环境文件完全空白,并引用在单独的文件中定义的插件(和应用)。这样便于逐个插件地调整和重新配置设置。 - -每个包含文件均采用标准形式,以插件的名称命名。例如,如果您有一个 Maya 插件,包含文件将只包含该插件和它的应用。其顶层项直接命名为 `maya`: -```yaml -maya: - apps: - tk-maya-breakdown: - hook_multi_update: default - hook_scan_scene: default - location: {name: tk-maya-breakdown, type: app_store, version: v0.2.13} - tk-multi-loader2: - action_mappings: - Maya Scene: [reference, import] - Photoshop Image: [texture_node] - Rendered Image: [texture_node] - actions_hook: '{self}/tk-maya_actions.py' - entities: - - caption: Assets - entity_type: Asset - filters: - - [project, is, '{context.project}'] - hierarchy: [sg_asset_type, code] - filter_publishes_hook: '{self}/filter_publishes.py' - location: {name: tk-multi-loader2, type: app_store, version: v1.0.6} - menu_name: Load - publish_filters: [] - title_name: Loader - [... additional app entries here ...] - - debug_logging: true - location: {name: tk-maya, type: app_store, version: v0.3.10} - menu_favourites: - - {app_instance: tk-multi-workfiles, name: {% include product %} File Manager...} - - {app_instance: tk-multi-snapshot, name: Snapshot...} - - {app_instance: tk-multi-workfiles, name: {% include product %} Save As...} - - {app_instance: tk-multi-publish, name: Publish...} - template_project: shot_work_area_maya - use_sgtk_as_menu_name: false - -# each include file has a framworks section containing all the frameworks needed for -# all apps in the file -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' - -engines: - 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` 替换为一系列应用和插件定义。 - -### 管理全局配置 - -管理全局配置比管理普通配置更加复杂。因为您实际上已将多个项目合并为一个文件结构,无论是从任意项目运行 `tank updates` 命令还是选择更新某个应用版本,都将影响其他所有项目,因此操作时要谨慎行事。 - -另外要注意的是,标准的克隆工作流不能直接使用,因为您克隆的是项目配置,而它现在只含有一些包含文件。 - -出于安全测试和维护的考虑,我们建议将全局配置存储在源代码管理系统中(例如 `git`),然后在单独的测试区对专门的测试项目进行更新。 待通过质量控制检查后,再提交更改并将它们导入实际的全局配置中。 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 deleted file mode 100644 index bd4ac8624..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/file-system-config-reference.md +++ /dev/null @@ -1,1422 +0,0 @@ ---- -layout: default -title: 文件系统配置参考 -pagename: toolkit-fs-config-ref -lang: zh_CN ---- - -# 文件系统配置参考 - -在本主题中,请执行以下操作: -- [简介](#introduction) -- [第 1 部分 - 文件夹创建语法](#part-1---folder-creation-syntax) - - [查询文件夹](#query-folders) - - [多个文件夹](#multiple-folders) - - [随父文件夹一起创建的文件夹](#create-with-parent-folder) - - [可选字段](#optional-fields) - - [正则表达式代币匹配](#regular-expression-token-matching) - - [示例](#examples) - - [列表字段文件夹](#list-field-folders) - - [工作流工序文件夹](#pipeline-step-folder) - - [为不同工作流工序设置不同的文件系统布局](#different-file-system-layouts-for-different-pipeline-steps) - - [高级技巧 - 指定父文件夹](#advanced---specifying-a-parent) - - [任务文件夹](#task-folder) - - [高级技巧 - 指定父文件夹](#advanced---specify-a-parent) - - [工作空间和延迟文件夹创建](#workspaces-and-deferred-folder-creation) - - [当前用户文件夹](#current-user-folder) - - [静态文件夹](#static-folders) - - [符号链接](#symbolic-links) - - [忽略文件和文件夹](#ignoring-files-and-folders) - - [自定义 IO 和权限](#customizing-io-and-permissions) - - [传递给挂钩的数据](#data-passed-to-the-hook) - - [向挂钩传递您自己的文件夹创建指令](#passing-your-own-folder-creation-directives-to-the-hook) - - [向静态文件夹添加自定义配置](#adding-custom-configuration-to-static-folders) - - [文件夹创建方式的简单自定义](#simple-customization-of-how-folders-are-created) -- [第 2 部分 - 配置文件系统模板](#part-2---configuring-file-system-templates) - - [键部分](#the-keys-section) - - [示例 - 字母数字名称](#example---an-alphanumeric-name) - - [示例 - 版本号](#example---version-number) - - [示例 - 立体视点](#example---a-stereo-eye) - - [示例 - 图像序列](#example---image-sequences) - - [示例 - 两个字段通过别名同时命名为 version](#example---two-fields-both-named-version-via-an-alias) - - [示例 - 时间戳](#example---timestamp) - - [示例 - 映射](#example---mappings) - - [示例 - 具有两个有效值的字符串字段](#example---string-field-with-two-valid-values) - - [示例 - 禁止使用某个值](#example---disallowing-a-value) - - [示例 - 字符串子集](#example---subsets-of-strings) - - [路径部分](#the-paths-section) - - [字符串部分](#the-strings-section) - - [在模板中使用可选的键](#using-optional-keys-in-templates) -- [高级问题和疑难解答](#advanced-questions-and-troubleshooting) - - [如何向文件结构中添加新的实体类型?](#how-can-i-add-a-new-entity-type-to-my-file-structure) - - [“剧集 > 场 > 镜头”(Episode > Sequence > Shot)层次结构需要的字段](#fields-required-for-the-episode--sequence--shot-hierarchy) - - [剧集](#episode) - - [场](#sequence) - - [镜头](#shot) - - [剧集](#episodes) - - [Toolkit 模板定义](#toolkit-template-definitions) - - [如何在结构中设置分支?](#how-can-i-set-up-a-branch-in-my-structure) - - [如何使用自定义实体创建自定义工作流工序?](#how-can-i-create-a-custom-pipeline-step-using-a-custom-entity) - - -本文档全面地介绍了 {% include product %} Pipeline Toolkit 中以文件系统为中心的配置。概述了模板系统的工作方式和可用的选项。还列出了在文件夹创建配置中可以包含的所有不同参数。 -_请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 [{% include product %} 集成管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。_ - -# 简介 - -本文档介绍如何配置 Toolkit 配置中与您的文件系统相关的部分,包括相关的示例。Toolkit 需要处理大量文件和目录,您可以利用 Toolkit 的配置来表现路径的组合方式和它们代表的意义。我们通常会以两种截然不同且互不相关的方式访问文件系统: - -**创建文件夹:**在 {% include product %} 中创建对象后,我们需要先在磁盘上创建文件夹,然后才能开始工作。这个过程可以很简单,比如在磁盘上创建一个文件夹来代表镜头;也可以更复杂,比如设置一个特定于用户的工作沙盒,让每个处理镜头的用户在单独的磁盘区域工作。 - -- Toolkit 会在您启动应用程序(例如为镜头 BECH_0010 启动 Maya)时自动创建文件夹,并确保在启动 Maya 前文件夹已存在。如果文件夹不存在,则会即时创建这些文件夹。此外,也可以使用 API 方法、[Shell 中的 tank 命令](https://developer.shotgridsoftware.com/zh_CN/425b1da4/#useful-tank-commands)以及通过 [ShotGrid 中的“创建文件夹”(Create Folders)菜单](https://developer.shotgridsoftware.com/zh_CN/c3b662a6/)来创建文件夹。此文件夹创建过程由一组特殊的配置文件来驱动,以下文档的[第 1 部分](#part-1---folder-creation-syntax)中对此进行了概述。 - -**打开和保存工作:**在工作时,我们需要在磁盘的标准位置打开和保存文件。这些文件位置通常位于我们在开始工作前创建的文件夹结构之中。 - -- 文件夹结构建立后,我们可以使用该结构来确定关键的磁盘位置。这些位置被称为[模板](#part-2---configuring-file-system-templates)。例如,您可以定义一个 `maya_shot_publish` 模板来表示为镜头发布的 Maya 文件。[Toolkit 应用](https://developer.shotgridsoftware.com/zh_CN/f8596e35/)随后会使用此模板 - 发布应用可使用它控制应将文件写入何处,而 [Workfiles 应用](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/)可使用此模板了解从何处打开文件。在 Toolkit 的环境配置内,您可以控制每个应用使用哪些模板。因此,Toolkit 使用的所有关键文件位置都定义在一个模板文件中,并且易于查看。 - -# 第 1 部分 - 文件夹创建语法 - -文件夹配置将 {% include product %} 中的实体映射到磁盘上的位置。配置不是只使用一个配置文件,而是采取“迷你文件系统”的形式,每个个体都以这个系统为模板 - 我们将这称之为**数据结构配置**。当 Toolkit 执行文件夹创建操作时,文件夹和文件将从这个“迷你文件系统”复制到它们的目标位置。这样可以实现动态的行为。例如,一个文件夹可以表示 {% include product %} 中的一个镜头,而您可以控制该文件夹的命名。更具体地说,您可以使用几个 {% include product %} 字段来构成该文件夹的名称,然后在创建文件夹前执行字符转换。 - -![配置](./images/file-system-config-reference/core_config.png) - -上图显示了一个数据结构配置。当您执行 Toolkit 文件夹创建操作时,会在 {% include product %} 中的实体与磁盘上的文件夹之间建立联系。Toolkit 使用此文件夹数据结构配置在磁盘上生成一系列文件夹,每个文件夹在 {% include product %} 中注册为一个 [`Filesystem Location`](https://developer.shotgridsoftware.com/zh_CN/cbbf99a4/) 实体。我们可以将这看成是 {% include product %} 数据(例如镜头和资产名称)和配置被“转化”成磁盘上和 {% include product %} 中的实际文件夹。配置总是以一个名为“project”的文件夹开头。此文件夹始终表示 {% include product %} 中连接的项目,并将被替换为项目的 Toolkit 名称。这层下面是静态文件夹。例如,文件夹创建器将自动创建 **sequences** 文件夹。 - -进一步深入 sequences 文件夹,有一个 **sequence** 文件夹和一个 **sequence.yml** 文件。每当 Toolkit 检测到与文件夹同名的 YAML 文件时,便会读取该 YAML 文件的内容,并添加需要的动态行为。在本例中,**sequence.yml** 文件包含 project 文件夹下的结构,由三种内容组成: - -1. **普通文件夹和文件:**这些内容将直接被复制到目标位置。 -2. **含有 YAML 文件的文件夹**(文件与文件夹同名):这代表动态内容。例如,假设有一个 **shot** 文件夹和一个 **shot.yml**,当创建文件夹时,这个 **shot** 文件夹就是生成一系列文件夹所采用的模板 - 每个镜头一个文件夹。 -3. **名为 name.symlink.yml 的文件:**此文件将在处理文件夹时生成符号链接。[本文档稍后将对符号链接进行介绍](#symbolic-links)。 - -目前,以 YAML 文件形式表示的动态配置设置支持以下模式: - -- **[{% include product %} 查询文件夹:](#shotgun-query-folders)**基于 {% include product %} 数据库查询的动态文件夹名称。例如,此模式可用于为项目中的每个镜头创建一个文件夹。 - -- **[{% include product %} 列表字段文件夹:](#shotgun-list-field-folders)**基于 {% include product %} 列表字段的动态文件夹名称。例如,此模式可用于为 {% include product %} 的“资产”(Asset)实体上的 {% include product %} 列表字段“资产类型”(Asset Type)中的每个值创建一个文件夹。 - -- **[延迟文件夹:](#workspaces-and-deferred-folder-creation)**仅当通过 Toolkit API 的创建文件夹方法请求第二次文件夹创建操作时(通常是启动应用程序(如 Maya)时),才会执行此操作。 通常,Toolkit 的各种应用程序启动器会在启动应用程序前执行此方法。 - -- **[当前用户文件夹:](#current-user-folder)**一个特殊文件夹,表示当前用户。 - - -下面我们来更深入地了解这些模式。 - -## 查询文件夹 - -要创建一个与 {% include product %} 查询对应的动态文件夹,请在 YAML 文件中使用以下语法: - - - # 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 - - # 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" ] } ] - -- 将动态内容 **type** 字段的值设置为 **shotgun_entity**。 -- **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" ] }`)指代配置中的父文件夹 - [下面的示例](#examples)对此做出了更深入的解释。 - - -## 多个文件夹 - -在名称定义中包含斜杠是为了创建可一次性创建多个文件夹的表达式: - - - # 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 - - # 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" ] } ] - -创建适用于这种路径的文件系统模板(有关详细信息,请参见此文档的第 2 部分)时,最后一个文件夹将表示 {% include product %} 实体。例如,可以使用以下模板表示上面的示例 - - asset_step_folder: assets/{asset_type}/{Asset}/{Step} - -`{asset_type}` 和 `{Asset}` 都定义为字符串模板键,`{Asset}` 令牌将在确定给定路径的上下文时在上下文计算中使用。 - -## 随父文件夹一起创建的文件夹 - -在 {% include product %} 中,{% include product %} 的数据结构中存在嵌套。这种嵌套可以称为父子关系。例如,在文件系统中,sequence 通常是 shot 的父文件夹;同样,shot 通常是 sequence 的子文件夹。 - -![create_with_parent_folder](images/file-system-config-reference/create_with_parent_folder_02_DS.png) - -{% include info title="注意" content="这种文件系统嵌套关系独立于 [ShotGrid 层次结构](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html),两者之间并无关联。它们的配置是完全独立的。" %} - -shotgun_entity 类型的文件夹支持一个可选标志,该标志可控制文件夹创建过程在创建父文件夹后是否尝试向下递归到该文件夹中,如果是的话,还将创建子文件夹。标志作为一种设置,只能有某些固定值,在本例中为“true”或“false”。要添加此标志,请参考下面这个示例: - - - # recurse down from parent folder - create_with_parent: true - -如前所述,这个设置是可选的,默认值为 False。如果将它设置为 True,Toolkit 将为找到的所有子实体创建文件夹。继续来看我们的示例,如果您想每次创建镜头序列父文件夹时都创建镜头子文件夹,可将镜头文件夹的 `create_with_parent` 设置为 `true`。 - -{% include info title="注意" content="默认设置为 `false`,意味着为场创建文件夹时不会自动创建镜头文件夹。另外,要将此标志设置为 True,您需要添加此标志。shotgun_entity 文件夹中不提供指定 False 的标志,因为 False 本身是默认行为。" %} - -## 可选字段 - -通常,当您定义文件夹名称(例如 `{code}_{sg_extra_field}`)时,Toolkit 会要求所有字段在 {% include product %} 中都具有值。例如,如果 `sg_extra_field` 为空,将生成一条错误消息。 如果某个字段并不总是填充有值,可将它标记为可选字段。可选字段的意思是,Toolkit 会在该字段有值时包含它,在该字段为空时不包含它,而不会生成错误。 - -您可以使用方括号定义可选字段,比如:`{code}[_{sg_extra_field}]`。 这会生成以下文件夹名称: - -- 如果 `code` 为 BECH_0010,`sg_extra_field` 为 extra,文件夹名称将为 `BECH_0010_extra`。 - -![optional_fields_BECH_0010_extra](images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png) - -- 如果 `code` 为 BECH_0010,`sg_extra_field` 为空,文件夹名称将为 `BECH_0010`。 - -![optional_fields_BECH_0010](images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png) - -{% include info title="注意" content="可选字段只能用来定义您数据结构中文件夹名称的一部分。整个文件夹并不能完全可选。" %} - -## 正则表达式令牌匹配 - -Toolkit 支持使用正则表达式提取 {% include product %} 字段名称的部分内容。这样,可以创建简单的表达式,从而可使用 {% include product %} 中的值来驱动文件夹的创建。例如,如果 {% include product %} 中的所有资产都以三个字母为前缀,后跟一个下划线命名(例如 `AAT_Boulder7`),这样就可以拆分为两个文件系统文件夹级别(例如 `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 - - # 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" ] } ] - -该语法类似于模板系统中的 `subset` 令牌;只需在 {% include product %} 字段名称后面添加一个冒号,后跟一个正则表达式。正则表达式中定义的任何组(例如,`()` 括起来的部分)将用于提取值。 如果正则表达式中有多个组,它们将会连接在一起。例如,以下表达式将提取创建对象的用户的首字母: `{created_by.HumanUser.code:^([A-Z])[a-z]* ([A-Z])[a-z]*}` - -## 示例 - -下面一组示例说明了如何使用 filters 语法。 - -要**查找所有属于当前项目且正在进行的镜头**,可使用下面的语法。请注意,{% include product %} 镜头实体有一个称为“项目”(project)的链接字段,用于将镜头连接到项目。我们要确保只为与当前项目关联的镜头创建文件夹。由于配置文件系统中存在上层项目目录,我们可以通过 $ 语法引用它,Toolkit 会自动根据此 {% include product %} 实体链接引用来创建文件夹。请记住,$ 语法的有效值是任何包含对应 {% include product %} 实体的根文件夹(例如,对于项目来说是 `"$project"`,如果上层目录层次结构存在 sequence.yml,也可以是 `"$sequence"`)。 - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "status", "relation": "is", "values": [ "ip" ] } - -如果您的树结构上层有场文件夹,并想**为属于该场的所有镜头创建文件夹**,可以创建以下过滤器: - - entity_type: Shot - filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_sequence", "relation": "is", "values": [ "$sequence" ] } - -要**查找所有资产**,可使用以下语法: - - entity_type: Asset - filters: [ { "path": "project", "relation": "is", "values": [ "$project" ] } ] - -## 列表字段文件夹 - -例如,如果您想为 {% include product %} 中的每种资产类型创建一个文件夹,则 [{% include product %} 列表字段](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_field_types_html)文件夹会很有用。在 {% include product %} 中,资产类型属于列表字段。使用此文件夹配置类型,可以在文件系统中定义一个层来反映这些资产类型列表。 - -![list_field_folders](images/file-system-config-reference/list_field_folders_02_DS.png) - -{% include info title="注意" content="在磁盘上创建文件夹后,强烈建议不要更改关联数据的值(例如资产类型)。" %} - -如果需要一个动态文件夹来对应 {% include product %} 列表字段中的所有项,可在 YAML 文件中使用以下语法: - - - # 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 - - # by setting the create_with_parent parameter to true you ensure that list field - - # nodes are always created - create_with_parent: false - - - # the {% include product %} field to use for the folder name - field_name: "{sg_asset_type}_type" - -- 将动态内容 **type** 字段的值设置为 `shotgun_list_field`。 -- `entity_type` 字段应设置为想要从中提取数据的 {% include product %} 实体(例如“资产”(Asset)、“场”(Sequence)、“镜头”(Shot)等)。 -- `field_name` 字段应设置为从中提取数据的 {% include product %} 字段,并且必须是[列表类型字段](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_field_types_html)。如果想随动态内容一起添加静态文本,可以使用表达式。`field_name: "{sg_asset_type}_type"` 此示例表达式包含文本和一个模板键。 - -- 可选参数 `skip_unused` 可防止为未使用的列表类型字段值创建目录(如上面的[可选字段](#optional-fields)部分所述)。{% include info title="注意" content="将此设置为 True 可能会对文件夹创建性能产生负面影响。另外,剔除算法目前还很简陋,不支持关联实体应用了复杂过滤器的情况。" %} - -- 可选参数 `create_with_parent` 可强制创建 list_field 节点,即使当前没有正在处理的子实体级节点(请参见上面的[随父文件夹一起创建的文件夹](#create-with-parent-folder)部分)。 - - -## 工作流工序文件夹 - -工作流工序文件夹表示 {% include product %} 中的[工作流工序](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Producer_pr_scheduling_tasks_pr_tasks_pipeline_steps_html)。工作流工序也称为“工序”。 - -![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" - -您可以在此处使用名称表达式,就像[上面介绍的 {% include product %} 实体](#list-field-folders)一样。节点会查找其父节点、祖父节点等,直至找到 {% include product %} 实体文件夹配置。此实体文件夹将与工序关联,并且实体的类型将用来确定要创建哪些工序文件夹。 - -{% include info title="注意" content="如果您想使用工作流工序创建顶层文件夹,只需使用 ShotGrid 实体节点并将关联的类型设置为“工序”(Step)即可。" %} - -默认情况下,会尝试自动为特定实体的所有相关工序创建工序文件夹。例如,如果一个包含 5 个工序(布局、动画、特效、照明、合成)的镜头触发了文件夹创建操作,将自动为这 5 个工序(布局、动画、特效、照明、合成)创建工序文件夹。 - -但是,您可以使用以下语法关闭此功能: - - - # recurse down from parent folder - create_with_parent: false - -将此设置添加到配置,意味着创建镜头文件夹时不会创建任何工序文件夹。只有在任务中运行文件夹创建操作时,才会创建工序文件夹。如果您想配置用户沙盒和其他需要在工作开始前才创建的结构,可以使用此功能。 - -### 为不同工作流工序设置不同的文件系统布局 - -假设您想让照明和合成工序使用一个文件夹结构,其余工序则使用另一个文件夹结构。如果您想为不同的工作流工序使用不同的文件系统布局,可以向配置中添加 `filter` 子句来实现这一点。 使用此过滤器可限定特定工序的配置将会涵盖哪些工作流工序。在我们的示例中,您可以创建两个配置文件:`step_lightcomp.yml` 和 `step.yml`。 在第一个配置文件中,添加以下过滤器: - - filters: [ { "path": "short_name", "relation": "in", "values": [ "Light", "Comp" ] } ] - -上面的语法只有在创建 `Light` 或 `Comp` 类型的工序文件夹时才会使用。 在第二个配置文件中,为其他工序创建一条规则: - - filters: [ { "path": "short_name", "relation": "not_in", "values": [ "Light", "Comp" ] } ] - -现在,您可以在每个文件夹中单独定义子结构。 - -## 高级技巧 - 指定父文件夹 - -在创建文件夹的过程中,Toolkit 需要将工作流工序与实体(例如“镜头”(Shot)、“资产”(Asset)等)相关联。为实现这一目标,默认情况下,Toolkit 会查找文件夹树,并选取找到的第一个 {% include product %} 实体文件夹。例如,如果您的层次结构为 `Sequence > Shot > Step`,工序文件夹会自动与镜头关联,这通常正是您想要的。 - -但是,如果您的层次结构在主实体下还有实体,例如 `Sequence > Shot > Department > Step`,Toolkit 默认会将工序文件夹与部门一级关联,但这并不是您想要的。 在这种情况下,我们需要明确指示 Toolkit 要查找哪个位置。通过向工序配置中添加以下内容,可以实现这一点: - - associated_entity_type: Shot - -## 任务文件夹 - -任务文件夹表示 {% include product %} 中的[任务](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Producer_pr_scheduling_tasks_pr_my_tasks_html)。默认情况下,任务文件夹不会随其父文件夹一起创建。例如,如果某个关联了任务节点的镜头触发了文件夹创建操作,将不会自动创建任务文件夹。只有在为任务执行文件夹创建操作时(例如从 {% 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" - -但是,您可以使用以下语法开启创建功能,让任务文件夹随其父文件夹一起创建: - - - # recurse down from parent folder - create_with_parent: true - -与工序文件夹类似,您也可以选择性地提供 `filter` 参数,过滤出文件夹配置应操作哪些任务。 - -同样,您可以使用名称表达式,就像[上面介绍的 {% include product %} 实体](#list-field-folders)一样,其中,静态文本可以与动态内容一起使用,这样您就可以创建一个兼具动态和静态上下文的名称。 - -`name: "task_{content}"` - -节点会查找其父节点、祖父节点等,直至找到 {% include product %} 实体文件夹配置。此实体文件夹将与任务关联,并用来确定要创建哪些任务文件夹。 - -### 高级技巧 - 指定父文件夹 - -在创建文件夹的过程中,Toolkit 需要将任务与实体(例如“镜头”(Shot)、“资产”(Asset)等)相关联。为实现这一目标,默认情况下,Toolkit 会查找文件夹树,并选取找到的第一个 {% include product %} 实体文件夹。例如,如果您的层次结构为 `Sequence > Shot > Task`,任务文件夹会自动与镜头关联,这通常正是您想要的。 - -但是,如果您的层次结构在主实体(例如镜头)下还有实体,例如 `Sequence > Shot > Department > Task,`,Toolkit 默认会将任务文件夹与部门一级关联,但这并不是您想要的。 在这种情况下,我们需要明确指示 Toolkit 在何处查找,就像在[上一部分](#create-with-parent-folder)中使用工序所做的更新一样。通过向任务配置中添加以下内容,可以实现这一点: - -`associated_entity_type: Shot` - -## 工作空间和延迟文件夹创建 - -延迟文件夹创建是指,仅当 Toolkit API 的创建文件夹方法通过可选的 `engine` 参数请求第二次文件夹创建操作时,才执行创建操作。 通常,Toolkit 的各种应用程序启动器会在启动应用程序前执行此方法。大多数文件夹类型都支持延迟标志,其默认值为 `false`。 要将延迟文件夹创建功能设置为 `true`,可以添加此标志: - - - # 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 - -使用此标志可将文件夹创建过程一分为二:一次在第一个“全局”阶段进行,另一次在稍后的时间点进行。通常,第二次创建与插件的启动相关(但是因为默认值为 `false`,所以不会自动进行),并允许用户在插件启动前才创建文件夹。 这可以实现两种主要的工作流: - -1. **工作空间:**这是特定于应用程序的文件夹设置。文件夹可以等到应用程序启动前才创建。 -2. 这种工作流的一个常见例子是:某个工作流工序可能会根据镜头的需要和艺术家选择的工作方式,决定需要使用 Houdini、Maya 还是其他插件。艺术家可以一开始就为工作流工序创建 maya/、houdini/ 和其他目录,但如果负责给定镜头的艺术家只在 Maya 中工作,那么就没必要为 Houdini 和其他任何插件创建空文件夹。因此,如果您将文件夹创建任务延迟到各个插件启动时再进行,那么如果艺术家从不使用 Houdini,将不会为镜头创建 houdini/ 文件夹。 -3. **用户文件夹:**用户文件夹在应用程序启动前才创建。默认情况下,用户文件夹配置的结构(如上所述)将延迟创建。 -4. 发生这种情况时,您可以不基于 {% include product %} 中指定的用户来创建用户文件夹,而是在用户启动插件时才为当前用户创建文件夹。例如,当您开始处理镜头并启动 Maya 时,会为您创建一个用户名文件夹(基于您在 {% include product %} 中的用户名),让您与其他人的工作不会互相干扰。 - -_提示:如果您更喜欢应用程序(例如 Maya)启动时创建普通的静态文件夹,只需创建一个与文件夹同名的 YAML 配置文件,并添加以下内容即可:_ - - - # 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" - -## 当前用户文件夹 - -当前用户文件夹是一种特殊构造,通过它可为不同用户设置工作区。例如,我们经常会遇到一个部门的多位艺术家共同处理同一个镜头的情况。可以使用用户文件夹,这样艺术家可以将其工作文件存储在自己的目录中,并且能够在 [Workfiles 应用](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/)中准确过滤出属于自己的文件。这种情况下,配置文件需要包含以下选项: - - - # the type of dynamic content - type: "user_workspace" - - name: "login" - -- 将 **type** 字段的值设置为 `user_workspace`。 -- **name** 字段是应指定给用户文件夹的名称。此名称必须包含从 {% include product %} 人员({% include product %} 中的 `HumanUser`)那里提取的字段组合。 -- 您可以像上面的示例中那样,只使用一个字段(例如 `name: login`)。 -- 您可以在花括号中使用多个字段(例如 `name: "{firstname}_{lastname}"`)。 -- 如果想包含来自其他链接实体的字段,可使用标准 {% include product %} 语法(例如 `name: "{sg_group.Group.code}_{login}"`)。 - -默认情况下,当前用户文件夹是延迟文件夹,也就是说,只有在 Toolkit API 的创建文件夹方法中通过可选的 `engine` 参数请求第二次文件夹创建操作时,才会创建它。 - -## 静态文件夹 - -静态文件夹(和文件)是最简单的类型。您可以将它们放入配置结构,当执行文件夹创建过程时,会自动复制它们。 [这里有一些默认配置的静态文件夹示例](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”。然后,使用以下语法: - - - # the type of dynamic content - type: "static" - - - # pick one of the {% include product %} folders that are above this folder - - # in the folder hierarchy. In this case it is a parent folder - - # named step that we want to look at when deciding if this - - # static folder should be created or not. - constrain_by_entity: "$step" - - - # we can now define constraints for this step. Constraints are simple - - # {% include product %} queries, following the same syntax as the other {% include product %} filters - - # shown in previous sections. - # - - # In our example, if the parent step matches the constraints given - - # in the filter below, the static folder will be created. If not, - - # it (and its children) will be ignored by the folder creation process. - constraints: - - { "path": "short_name", "relation": "is", "values": [ "edit" ] } - -默认情况下,静态文件夹会自动随其父文件夹一起创建。但有些时候,我们并不希望如此。这种情况下,可以添加一个特殊标志,指示静态文件夹不要随其父文件夹一起创建。 - - - # do not recurse down automatically - create_with_parent: false - -## 符号链接 - -您可以在创建动态文件夹的过程中创建符号链接。如果要创建名为 `artwork` 的符号链接,请在数据结构配置中创建一个名为 `artwork.symlink.yml` 的文件。 此文件将被系统识别为符号链接请求,系统将不会复制它,而是会处理它。 - -`artwork.symlink.yml` 文件必须至少包含一个 `target` 键: - - - # 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 - - # so you can for example include permission hints or other stuff - - # that you may need for advanced customization - additional_param1: abc - additional_param2: def - -如果 target 参数包含 `$EntityType` 标记,如 `$Asset`、`$Shot` 或 `$Project`,系统将尝试以代表该实体(资产、镜头、项目等)的文件夹的名称来解析这些标记。 Toolkit 将在 Shotgun 管理的文件系统树中查找这些值,如果树的上层未定义这些值,将报告错误。 - -列表字段(如资产的资产类型)采用包含实体类型的某种语法进行表示,例如 `$Asset.sg_asset_type`。 例如: - - - # Example of a .symlink.yml file - - - # A target parameter is required. - target: "../renders/$Project/$Asset.sg_asset_type/$Asset" - -符号链接的创建操作(与所有输入/输出或 I/O 一样)在文件夹处理挂钩内进行。系统会向挂钩传递一个特殊的 `symlink` 动作,您将随这个请求一起获得符号链接的名称、完全解析的目标,以及定义文件内包含的所有 YAML 元数据。 对于上面的 `artwork` 示例,我们在镜头文件夹 (Shot) 下创建文件夹,如下所示: - - {'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'} - } - -## 忽略文件和文件夹 - -在创建文件夹的过程中,会将位于数据结构脚手架内的文件复制到目标区域。这个复制过程由一个核心挂钩来执行,因此,项目或工作室的权限处理可以自定义。 - -{% include info title="注意" content="有关这种处理的更多详细信息,请参见“简单自定义”下的[“自定义 I/O 和权限”部分](#simple-customization-of-how-folders-are-created)。我们使用一个 [process_folder_creation 核心挂钩](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) 来处理许多文件夹设置工作。您可以向此挂钩中添加 chmod 调用(并且/或者在执行 mkdir 时设置权限),通过这种方法为创建的文件夹设置权限。" %} - -在文件夹创建过程中,有时将某些文件和文件夹排除在复制内容之外可能会有所帮助。例如,如果您使用 Git 或 SVN 来存储文件夹创建配置,您会不想将 `.git` 和 `.svn` 文件夹复制到每个镜头文件夹或资产文件夹。 如果有些文件是您不想复制的,您可以在项目配置内的 `config/core/schema` 文件夹中放置一个名为 `ignore_files` 的文件。 这个文件应包含 glob 样式的模式,用以定义不复制的文件。每个模式应单独一行: - - - # 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 - -您也可以使用通配符。例如,如果需要排除所有带 TMP 扩展名的文件,只需向文件中添加一行 *.tmp 即可。 - - - # 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 - -## 自定义 IO 和权限 - -镜头文件夹和资产文件夹在创建时通常需要带有特殊的权限和参数。简单的时候,只需在创建文件夹过程中设置权限位即可;复杂的时候,则需要向专门的文件夹创建服务器发送远程请求,由服务器创建具有适当凭据、组和权限的文件夹。 - -另外,文件系统中不同层级的文件夹常常也需要不同的权限;工作区文件夹通常对所有人都是可写的,而镜头文件夹的权限则可能严格得多。 - -在 Toolkit 中,我们只通过一个挂钩,便可对文件夹的创建进行自定义。这个挂钩叫做 `process_folder_creation.py`,是一个核心挂钩。 在创建文件夹的 API 调用遍历文件夹配置并决定应创建哪些文件夹的过程中,它会建立一个可创建项的列表。这些列表项既可以是文件,也可以是文件夹。到了创建文件夹的最后一步,这个列表将被传递给负责实际文件夹处理的挂钩。您可以在此处查看默认的 [process_folder_creation 核心挂钩](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)。 - -### 传递给挂钩的数据 - -文件夹创建挂钩仅为每个文件夹创建请求执行一次。所有文件夹创建数据将放在列表中传递给挂钩,挂钩通常会轮询这个列表,并根据核心 API 传递的参数创建文件夹。 - -列表中的数据始终是深度优先的递归,从顶层文件夹和文件开始,然后遍历更深的层。下面这个示例显示了传递给挂钩的数据的形式: - - [ - - {'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', - 'filters': [{'path': 'project', - 'relation': 'is', - 'values': []}], - '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', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'}, - - {'action': 'copy', - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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', - 'relation': 'is', - 'values': []}], - 'name': 'code', - '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'} - }, - - ] - -这些数据是一个词典列表。每个词典有一个称为 `action` 的键。 这个键表示请求的 I/O 项的类型。如果您要执行文件夹创建挂钩,需要添加对以下不同动作的支持: - -- `entity_folder`:磁盘上与 {% include product %} 实体关联的文件夹。 -- `folder`:磁盘上的文件夹。 -- `copy`:需要从源位置复制到目标位置的文件。 -- `create_file`:需要在磁盘上创建的文件。 -- `symlink`:应创建的符号链接。 - -每个动作各有一套不同的词典键。例如,`entity_folder` 动作有一个 `entity key`,其中包含它所连接的实体的详细信息。 `create_file` 有一个 `source_path` 和一个 `target_path` 键,用来指示挂钩要复制哪个文件,以及要复制到何处。 - -所有的 `actions` 还有一个名为 `metadata` 的键。 此键表示数据结构设置中关联的配置文件的 YAML 配置数据。在上面的示例中,可以看到 {% include product %} 文件夹的 `metadata` 键怎样包含数据结构配置内设置的所有过滤器和命名信息。例如,下面是上面示例中镜头文件夹的元数据: - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -...它对应于 `shot.yml` 数据结构配置文件: - - - # Copyright (c) 2013 {% include product %} Software Inc. - # - - # CONFIDENTIAL AND PROPRIETARY - # - - # This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit - - # Source Code License included in this distribution package. See LICENSE. - - # By accessing, using, copying or modifying this work you indicate your - - # 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 - - # 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" ] } ] - -_请注意,动态令牌 `$sequence` 在运行时已被解析为实际对象。_ - -### 向挂钩传递您自己的文件夹创建指令 - -除了 Toolkit 要求的各种配置指令,您还可以在数据结构配置中定义自己的配置项。它们将通过上面介绍的 `metadata` 键传递给挂钩,并可以用来驱动文件夹创建过程。 - -例如,如果您的数据结构设置中有以下结构: - - - # 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" - -...通过文件夹创建挂钩传递的数据将为: - - {'action': 'entity_folder', - 'entity': {'id': 1184, 'name': 'moo87', 'type': 'Shot'}, - 'metadata': {'entity_type': 'Shot', - 'filters': [{'path': 'sg_sequence', - 'relation': 'is', - 'values': []}], - 'name': 'code', - 'type': 'shotgun_entity', - 'studio_permissions_level': 'admin'}, - 'path': '/mnt/projects/chasing_the_light/sequences/aa2/moo87'} - -这时,特殊参数 `studio_permissions_level` 将传递给挂钩,您可以使用它来控制文件权限。 您还可以使用这种方法传递任意复杂度的数据结构。此方法的一个典型用途是对权限进行非常精细的控制。 - -### 向静态文件夹添加自定义配置 - -通常,当您在文件夹数据结构配置内创建文件夹时,如果该文件夹没有对应的 YAML 文件,Toolkit 会认为它是静态文件夹,并直接创建它。 - -如果您想为静态文件夹关联自定义的配置元数据,需要创建一个 `static` 类型的 YAML 配置文件。 例如,假设您在项目根目录下有一个 `assets` 静态文件夹,现在想将各种资产合为成组,并添加自定义配置元数据。 要实现这一点,需要创建以下 `assets.yml` 文件: - - type: static - studio_permissions_level: "admin" - -传递给挂钩的配置数据随后将包含以下内容: - - {'action': 'folder', - 'metadata': {'studio_permissions_level': 'admin', 'type': 'static'}, - 'path': '/mnt/projects/chasing_the_light/assets'}, - - -同样,可以用这种方式将任意复杂度的数据从 YAML 配置文件传递给挂钩。 - -## 文件夹创建方式的简单自定义 - -下面是一个简单的文件夹创建挂钩: - - 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") - if not os.path.exists(path): - if not preview_mode: - # 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") - target_path = i.get("target_path") - if not os.path.exists(target_path): - if not preview_mode: - # do a standard file copy - shutil.copy(source_path, target_path) - # 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") - parent_folder = os.path.dirname(path) - content = i.get("content") - if not os.path.exists(parent_folder) and not preview_mode: - os.makedirs(parent_folder, 0777) - if not os.path.exists(path): - if not preview_mode: - # create the file - fp = open(path, "wb") - fp.write(content) - fp.close() - # 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 - -# 第 2 部分 - 配置文件系统模板 - -Toolkit 的模板文件是 Toolkit 配置的一个中枢。每个项目都会有一个这样的文件,它位于您的工作流配置的 **config/core** 文件夹内。 - -![配置](images/file-system-config-reference/templates_file.png) - -此文件包含 _模板_ 及其 _键_ 的定义。 - -**键**是我们定义的动态字段。它可以是名称、版本号、屏幕分辨率、镜头名称等。我们会为键配置类型,这样便可定义一个键应该是字符串还是整数。键还具有格式,这样便可定义一个字符串应仅包含字母数字字符,还是所有整数都填充八个零。 - -**模板**是一个动态路径。例如,`shots/{shot}/publish/{name}.{version}.ma` 就是一个模板。 这个模板可表示镜头的 Maya 发布内容 - 括号内的字段就是键。 - -模板文件分为三个部分:键、路径和字符串。 - -## 键部分 - -键定义了字段可以接受什么值。在模板配置文件中,键定义的格式为: - - key_name: - type: key_type - option: option_value - option: option_value - -键的类型可以是 `str`、`int` 或 `sequence`。 Str 键是值为字符串的键,int 键是值为整数的键,sequence 键是值为整数序列的键。 - -除了指定类型以外,您还可以指定其他选项。存在以下选项: - -- `default: default_value` - 在未提供值的情况下使用的值。 例如,当您使用 Toolkit API 尝试将一组字段值解析为一个路径时,可能会发生这种情况。 - -- `choices: [choice1, choice2, etc]` - 对此键的各个可能值的枚举。 - -- `exclusions: [bad1, bad2, etc]` - 对此键的各个禁止值的枚举。 如果键的类型为 sequence,使用此设置时,将无法让帧规格值无效。 - -- `length: 12` - 此键需要有具体长度。 - -- `alias: new_name` - 提供一个供使用此键而非 key_name 键的模板使用的名称。 例如,如果您有两种关于版本号的设想,一种是按照客户的希望填充四个零,另一种是根据内部处理方式填充三个零 - 在这种情况下,您其实想将两个键都命名为“version”,但实际上这是不可能的,因为键名称需要具有唯一性。这时,您可以创建一个别名。请参见下面的示例了解详细信息。 - -- `filter_by: alphanumeric` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母数字值(对于 Ascii 字符串来说通常为 a-z、A-Z 和 0-9,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 - -- `filter_by: alpha` - 仅适用于 string 类型的键。 如果指定了此选项,只有包含字母值(对于 Ascii 字符串来说通常为 a-z 和 A-Z,但如果输入数据为 Unicode,也可能包含其他字符)的字符串才会被视为有效值。 - -- `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)。 - -- `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)),会用到抽象字段。抽象字段需要具有默认值。 - -- `subset` 和 `subset_format` - 提取给定输入字符串的一部分并将它设为键值。这样,便可根据完整的用户名创建用户名首字母缩写键,或创建可容纳每个镜头名称前三个字母的键。 - - -有关模板键的技术细节,请参见 [API 参考](http://developer.shotgridsoftware.com/tk-core/core.html#template-system)。 - -### 示例 - 字母数字名称 - -一个默认为“comp”的字母数字名称: - - name: - type: str - default: "comp" - filter_by: alphanumeric - - nuke_shot_work: sequences/{Sequence}/{Shot}/{Step}/work/nuke/{name}.v{version}.nk - -### 示例 - 版本号 - -一个将会匹配 002、102、034、12341 这类数字的版本号 - - version: - type: int - format_spec: "03" - -一个将会匹配 002、102、034、12341,但同时也能匹配 0002、 2 和 0102 这类数字的版本号 - - version: - type: int - format_spec: "03" - strict_matching: false - -### 示例 - 立体视点 - -一个典型的立体视点设置。视点字段可以是 L 或 R,但是用在软件中时,通常被泛泛抽象地称为 %V。由于 %V 其实并不是指某个文件名,而是一系列文件,因此我们要设置 _abstract_ 标志。 抽象字段需要有默认值,这个默认值将在用户请求抽象表示时导入。 - - 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 - -### 示例 - 图像序列 - -图像序列从定义上讲是抽象的,因此除非另有指定,否则它们将有一个设为 %0Xd 的默认值。下面的序列规格将指明帧编号,如 0001、1234 和 12345。 - - SEQ: - type: sequence - format_spec: "04" - - nuke_shot_render_stereo: sequences/{Sequence}/{Shot}/{Step}/work/images/{Shot}_{name}_{channel}_{eye}_v{version}.{SEQ}.exr - -### 示例 - 两个字段通过别名同时命名为 version - -两个版本号定义可同时供需要“version”键的代码使用。当您有两个 Toolkit 应用都需要 _version_ 字段、但您希望这两个 version 字段采用不同格式时,这个技巧会很有帮助。 - - nuke_version: - type: int - format_spec: "03" - alias: version - maya_version: - type: int - format_spec: "04" - alias: version - - - # nuke versions are using numbers on the form 003, 004, 005 - - # the nuke publish app requires a field called {version} - - # however {nuke_version} is a valid replacement for {version} - - # 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 - -### 示例 - 时间戳 - -一个默认为当前当地时间、格式为 YYYY-MM-DD-HH-MM-SS 的时间戳。 - - now: - type: timestamp - format_spec: "%Y-%m-%d-%H-%M-%S" - default: now - -一个默认为当前 UTC 时间、格式为 YYYY.MM.DD 的时间戳。 - - year_month_day: - type: timestamp - format_spec: "%Y.%m.%d" - default: utc_now - -一个默认为 9:00:00、格式为 HH-MM-SS 的时间戳。 - - nine_am_time: - type: timestamp - format_spec: "%H-%M-%S" - default: "09-00-00" - -### 示例 - 映射 - -当您想在文件名中添加 {% include product %} 字段时,此技巧非常有用。假设我们想在一个文件名中包含用户名 - 我们要使用以下定义: - - current_user_name: - 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 - -Toolkit 应用在填充所有上下文字段时(通过 `context.as_template_fields()` 方法),会自动填充较高一级的 `Shot`、`Sequence` 和 `Step` 字段。 另外,它还会扫描所有定义了 `shotgun_entity_type` 的字段(比如我们上面的 `current_user_name` 字段)。 如果上下文中定义了 {% include product %} 实体,它将能够自动解析该值。当前用户始终记录在上下文中,并且在上面的示例中,我们还可以从“镜头”(Shot)、“镜头序列”(Sequence)和“工序”(Step)字段提取数据,因为它们被定义为较高一级路径的一部分,因此也属于上下文的一部分。但是,在上面的示例中,尝试在字段中引用资产实体将不起作用,因为 Toolkit 没办法知道要从 {% include product %} 中的哪个资产中提取数据。 - -### 示例 - 具有两个有效值的字符串字段 - -很多时候,工作室会有项目需要向外保存 ASCII 和二进制 Maya 文件。在这种情况下,一个具有两个有效值的字符串值将如下所示: - - maya_file_extension: - type: str - choices: ["ma", "mb"] - -{% include info title="注意" content="默认应用会根据 `templates.yml` 中的配置来确定使用 `.ma` 还是 `.mb`。因此,假如您想在某个项目中让 Workfiles 应用改为保存 `.mb` 而不是 `.ma`,可以更改以下三个模板(针对镜头):" %} - - 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' - -请查看下文中的[路径部分](#the-paths-section),了解更多详细信息。 - -### 示例 - 禁止使用某个值 - -一个不允许使用“assets”值的字符串字段。当您有一个包含项目所有镜头序列的文件夹,另外还有一个存储着所有资产的“assets”文件夹时,此技巧会比较有用: - - project - |--- sequence1 - |--- sequence2 - |--- sequence3 - \--- assets - -为了让 Toolkit 正确理解 assets 文件夹不是又一个序列,我们可以定义“assets”不是镜头序列模板的一个有效值。 - - sequence: - type: str - exclusions: ["assets"] - -利用上面的 exclusions 字段,可以定义两个都能够正确解析的模板: - - sequence_work_area: {sequence}/{shot}/work - asset_work_area: assets/{asset}/work - -### 示例 - 字符串子集 - -下面的示例扩展了前面的一个示例,说明了如何为文件名添加用户名首字母缩写前缀。 - - user_initials: - type: str - shotgun_entity_type: HumanUser - shotgun_field_name: login - 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 - -## 路径部分 - -路径部分指定工作的保存位置。所有路径都至少包含一个名称和一个定义,其中的定义是一组位于花括号中的键名称夹杂着代表路径的非键值。例如,镜头工作文件的定义可能会如下所示: - - shot_work: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - -其中 Sequence、Shot、Step 和 version 是同一模板文件中定义的键。 - -{% include info title="注意" content="如果一个 string 键的名称与一个关联了 ShotGrid 实体的动态数据结构文件夹的实体类型一致,将使用该文件夹名称来代替令牌。例如,假设您像上面的代码段那样正在使用一个“string”类型的 {Sequence} 模板键,同时您的数据结构中有一个名为“sequence”的动态文件夹,并且在对应的 `sequence.yml` 文件中,它被定义为 `shotgun_entity` 类型,并连接到 ShotGrid 中的“镜头序列”(Sequence)实体类型。这种情况下,Toolkit 会认为您的模板键对应于这个动态文件夹的实体类型(示例中二者均为“镜头序列”(Sequence))。因此,Toolkit 会提取生成的文件夹名称(即所涉及的具体场的名称),并使用它替换模板键。" %} - -如果需要定义任何可选属性,必须使用这种格式。目前,只有 `root_name` 这一个可选属性,在有多个根目录的项目中,可以用它来指定路径的项目根目录。 当您想添加新的存储根目录来存储某些项目文件时,会用到[多个根目录](https://developer.shotgridsoftware.com/zh_CN/9ea9dd4e/)。 - -`root_name: name_of_project_root` - -例如,格式可能会如下所示: - - shot_work: - definition: sequences/{Sequence}/{Shot}/{Step}/work/{Shot}.v{version}.ma - root_name: primary - -如果您想使用除主根目录以外的其他存储根目录,就需要使用上面的格式。在本示例中,使用这种简单的格式意味着所有条目都使用主根目录。 - -## 字符串部分 - -字符串与路径有相似之处,那就是它们也必须包含名称和定义,并且这些内容可以采取简单格式: - - string_name: string_definition - -字符串定义是由键名称和其他值构成的模板,这些名称和值一起解析成一个字符串,而不是一个文件系统路径。{% include product %} 中的发布所使用的名称就是一个例子: - - maya_publish_sg_name: "Maya publish, {name}, v{version}" - -其中 name 和 version 是同一文件中定义的键名称。 - -## 在模板中使用可选的键 - -出于一些原因,在模板中使用可选键有时会很有帮助。一个常见的例子是将 `{SEQ}` 设为渲染图像的可选键。 在本示例中,可以有一系列包含帧编号的 exr,比如 `/path/to/render/shot.101.exr`(以及 102、103 等),同时您也能够为 QuickTime 影片使用相同的模板,比如 `/path/to/render/shot.qt`。 另一个更常见的例子是渲染立体图像。如果您所在的工作室这样约定:`left eye: file.LFT.exr, right eye: file.RGT.exr, stereo image: file.exr?`,您可以将 `{eye}` 设为可选键。 - -我们可以使用方括号来定义可选部分: - - shot_work: sequences/{Shot}/work/{Shot}.[v{version}.]ma - -可选部分必须至少包含一个键。如果路径解析时没有某个可选部分所含键的值,路径将直接解析,就好像该部分在定义中不存在一样。我们可以将上面的示例看成是两个模板合成为一个定义: - - shot_work: sequences/{Shot}/work/{Shot}.v{version}.ma - shot_work: sequences/{Shot}/work/{Shot}.ma - -当您传入一个字段词典时,Toolkit 会根据值来选择正确版本的模板: - - >>> template = tk.templates["shot_work"] - >>> 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 - -# 高级问题和疑难解答 - -## 如何向文件结构中添加新的实体类型? - -我们假设您之前一直在 {% include product %} 站点上制作专题动画和短片,而现在您接到了剧集工作。下面我们就来一起了解如何向 Toolkit 加入片段工作流。首先,您需要按照[此处](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html)的说明,在 {% include product %} 中为您的剧集工作设置层次结构。 - -![episode_hierarchy](images/file-system-config-reference/episode_hierarchy.jpg) - -{% include info title="注意" content="请参见[上文中的“随父文件夹一起创建的文件夹”部分](#create-with-parent-folder),回顾 Toolkit 中的嵌套关系(这与 ShotGrid 中的项目层次结构完全无关)。" %} - -**其他参考:** - -- [“剧集”(Episode)实体如何工作?](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_episode_entity_html) -- [自定义实体层次结构](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_site_configuration_ar_customizing_hierarchy_html) - - -### “剧集 > 场 > 镜头”(Episode > Sequence > Shot)层次结构需要的字段 - -[您可以选择将任何自定义实体](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)用于 `Episode`(“站点偏好设置 > 实体”(Site Preferences > Entities)),也可以使用 {% include product %} 7.0.7.0 中提供的官方“剧集”(Episode)实体。如果您注册获取 7.0.7.0 之前(2017 版之前)的 {% include product %},则“电视节目”(TV Show)模板会将 `CustomEntity02` 用于剧集。如果您决定使用非 `CustomEntity02` 的其他实体或官方“剧集”(Episode)实体,没问题!{% include product %} 和 Toolkit 具有很高的灵活度。下面我们就来同时介绍这两种情况。 - -就本练习而言,我们将使用“剧集”(Episode)(`CustomEntity02`) 和官方“剧集”(Episode)实体为例,讲解如何在项目层次结构更新中整合剧集(可以任选其一)。首先,要正确设置项目的**剧集 > 场 > 镜头**层次结构,需要确保 {% include product %} 中存在以下字段: - -#### 剧集 - -a) **使用官方“剧集”(Episode)实体:**“剧集”(Episode)实体可以作为基于项目模板创建电视节目类项目时使用的实体。 - -![official_episode_entity](images/file-system-config-reference/official_episode_entity.png) - -**或者** - -b) **使用自定义实体:**`CustomEntity02` 可以作为基于项目模板创建电视节目类项目时使用的自定义实体。_如前所述,您可以再启用一个自定义实体,使用它来代替 `CustomEntity02` - 只要确保将所有的 `CustomEntity02` 都替换成您启用的具体实体即可。_ - -![episode_custom_entity](images/file-system-config-reference/episode_custom_entity.png) - -#### 镜头序列 - -需要一个称为“剧集”(Episode)的实体链接 (`sg_episode`),它将链接到“剧集”(Episode)实体。 - -**使用官方 `Episode` 实体** - - - -**使用 `CustomEntity02`** - - - -#### 镜头 - -一个称为“镜头序列”(Sequence)的实体字段 (`sg_sequence`),它将链接到“镜头序列”(Sequence)实体。{% include product %} 的“TV Show”项目模板中应该已存在这个字段。 - -**使用官方 `Episode` 实体** - - - -**使用 `CustomEntity02`** - - - -### Toolkit 架构定义 - -我们假设有一个如下所示的层次结构(`{}` 中的文件夹将根据它们在 {% include product %} 中的名称动态地进行命名): - - - {project_name} - - shots - episode.yml - - {episode_name} - sequence.yml - - {sequence_name} - shot.yml - - {shot_name} - ... - … - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### 剧集 - -在您的 `config/core/schema/project/shots` 文件夹中,创建一个名为 `episode` 的文件夹,并在同一目录创建一个对应的 `episode.yml` 文件,文件内容如下: - -**使用官方 `Episode` 实体** - - - # 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 - - # 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" ] } ] - -**使用 `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 - - # 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" ] } ] - -这将指示 Toolkit 为此项目中的每一剧集创建文件夹。 - -#### 镜头序列 - -在您的 `config/core/schema/project/shots/episode` 文件夹中,创建一个名为 `sequence` 的文件夹,并在同一目录创建一个对应的 `sequence.yml` 文件,文件内容如下: - - - # 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 - - # 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" ] } ]` - -这将指示 Toolkit 为链接到目录树中上层剧集的每个镜头序列创建文件夹。 - -#### 镜头 - -在您的 `config/core/schema/project/shots/episode/sequence` 文件夹中,创建一个名为 `shot` 的文件夹,并在同一目录创建一个对应的 `shot.yml` 文件,文件内容如下: - - - - # 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 - - # 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" ] } ]` - -这将指示 Toolkit 为链接到目录树中上层镜头序列的每个镜头创建文件夹。 - -完成此操作后,您的数据结构应该如下所示: - -![episode_schema](images/file-system-config-reference/episode_schema.png) - -#### Toolkit 模板定义 - -为了告诉 Toolkit 您要在数据结构中使用剧集,您需要在顶部的[键部分](#the-keys-section)中创建一个新键来定义它: - -**使用官方 `Episode` 实体** - - keys: - ... - Episode: - type: str - ... - -然后,在下面的模板路径部分,通过在正确位置插入 `{Episode}`,在目录结构中指定剧集,更新 `shot_root` 模板以及镜头层次结构中的其他任何模板路径,使它们与您的剧集层次结构一致: - - ... - paths: - shot_root: shots/{Episode}/{Sequence}/{Shot}/{Step} - … - -**使用 `CustomEntity02`** - - keys: - ... - CustomEntity02: - type: str - ... - -然后,在下面的模板路径部分,通过在正确位置插入 `{CustomEntity02}`,在目录结构中指定剧集,更新 `shot_root` 模板以及镜头层次结构中的其他任何模板路径,使它们与您的剧集层次结构一致: - - ... - paths: - shot_root: shots/{CustomEntity02}/{Sequence}/{Shot}/{Step} - … - -这就是构建基本的**剧集 > 镜头序列 > 镜头**工作流所需的全部! - -## 如何在结构中设置分支? - -这与[为不同工作流工序设置不同的文件系统布局](#different-file-system-layouts-for-different-pipeline-steps)有关,更具体地说,如果您要向结构中添加分支,就会遇到此问题。例如,您可以为“工作流工序 A”设置一个结构,为其他所有工作流工序设置另一个结构。 - -我们假设您要向工作流中添加另一种[资产类型](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_site_configuration_ar_customizing_fields_html),这种新的资产类型为“车辆”(Vehicle)。您需要更改 Vehicles 的文件结构,为不同的工作流工序设置不同的文件夹(例如“geoprep”和“lookdev”),而每个工作流工序文件夹内还有其他文件夹。在进行此项更新的同时,创建资产的方式目前应保持不变。下面我们来一起了解如何更新您的工作流以适应此项更新。 - -**第 1 步:修改数据结构** - -首先,修改您的数据结构,以反映您的文件夹结构加入新的资产类型后的样子。 - -- 先在数据结构中为这个新的资产类型创建一个新的分支:vehicle。 -- 在与 `asset/` 和 `asset.yml` 同一级目录中,添加一个 `asset_vehicle/` 文件夹和一个 `asset_vehicle.yml`。 -- 这些 YAML 文件中还有一项过滤器设置。修改 `asset.yml` 中的过滤器,让它应用于除车辆 _以外_ 的所有资产,然后修改 `asset_vehicle.yml`,使其 _仅_ 应用于车辆类型的资产。 [以下示例展示了这些过滤器的样子](#different-file-system-layouts-for-different-pipeline-steps)。 -- 现在,您已有了两个文件夹来表示 `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 何时使用这些新模板。为此,需要创建一个新的环境文件。 - -- 创建一个 `env/asset_step.yml` 文件的副本,并命名为 `env/asset_vehicle_step.yml`。 除了 `env/asset_vehicle_step.yml` 将使用新模板以外,这两个文件完全相同。 将所有 `maya_asset_work` 替换为 `maya_asset_work_vehicle`。 对已创建的所有其他车辆模板执行同样的操作。 -- 最后,您需要告诉 Toolkit 何时选用新环境。为此,需要修改 [pick_environment](https://github.com/shotgunsoftware/tk-config-default/blob/master/core/hooks/pick_environment.py) 核心挂钩,以便在上下文资产类型为 `vehicle` 时返回 `asset_vehicle` 或 `asset_vehicle_step`。这时,当您处理这种新类型(“车辆”(vehicle))的资产时,Toolkit 会知道使用它的环境配置,并因此将文件保存和发布到它备选的文件系统结构。 - -## 如何使用自定义实体创建自定义工作流工序? - -在 {% include product %} 7.0.6.0 中,引入了[通过“管理”(Admin)菜单管理工作流工序](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_site_configuration_ar_configure_pipeline_steps_html#managing-pipeline-steps)的功能。使用此功能,您可以轻松向工作流工序中添加自定义字段。**高级技巧:大多数情况下,与创建自定义实体来管理工作流工序相比,在工作流工序中使用自定义字段有助于工作流条理更加清楚。** - -但是,对于要求更高的情况,创建备选的工作流工序可能会有所帮助。例如,在工作流工序方面,您可能会希望能够灵活地为生产和工作流使用不同的命名约定和结构,以及灵活地独立为它们命名和设置结构。虽然 {% include product %} 的内置工作流工序通常用于调度目的,但您可能希望使用另一个[自定义实体](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)来构建文件系统结构,并在工作流中将各个任务分组在一起。通过创建从任务到自定义实体的自定义链接字段,可以实现这个目的。随后,系统可使用此链接字段,通过工序节点将任务合并成组。 - -在文件夹配置中,添加两个特殊选项,以指示系统使用您的自定义工序设置,而不是 {% include product %} 的内置工作流工序: - - entity_type: "CustomNonProjectEntity05" - task_link_field: "sg_task_type" \ No newline at end of file diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png deleted file mode 100644 index a677ba10d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/config_overview.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png deleted file mode 100644 index 267983de8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/create_tab.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png deleted file mode 100644 index 4042b39e4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/design_mode.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png deleted file mode 100644 index bd8f8498c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/failed_to_launch.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png deleted file mode 100644 index 3719f99ac..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/interpreter.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png deleted file mode 100644 index 1765ae50f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/paths_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png deleted file mode 100644 index 769260e4a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_overview.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png deleted file mode 100644 index a9371f5bb..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/project_ready.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png deleted file mode 100644 index 146d40a46..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/shotgun_integration.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png deleted file mode 100644 index 2b62f0f39..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Beyond-your-first-project/storage.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png deleted file mode 100644 index 15d8d285d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/action_menu.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png deleted file mode 100644 index 361af7a18..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/advanced_setup.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg deleted file mode 100644 index f5d021774..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/browser_integration.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png deleted file mode 100644 index e93f55868..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/folder_structure.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg deleted file mode 100644 index e614332a7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png deleted file mode 100644 index c5e6cbf7e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_single_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg deleted file mode 100644 index ab173f85b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/freeze_site.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png deleted file mode 100644 index 991e09535..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256-2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png deleted file mode 100644 index 6d9ec5853..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/icon_256.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png deleted file mode 100644 index e9a971435..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/install_desktop.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png deleted file mode 100644 index 2322e4068..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_group_software.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png deleted file mode 100644 index 5301f94dc..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_restrict_permissions.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png deleted file mode 100644 index de23107aa..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png deleted file mode 100644 index 81641a5ee..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/maya_software_restrictions.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png deleted file mode 100644 index 15b38fd0f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/no_actions.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png deleted file mode 100644 index 8228f9574..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/regenerate_certs.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png deleted file mode 100644 index 15b38fd0f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/retrieving_actions.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png deleted file mode 100644 index 30dcea707..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/tk-shotgun_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png deleted file mode 100644 index d8f018ce0..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_browse.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png deleted file mode 100644 index fc2381408..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png deleted file mode 100644 index 91f44c3a7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_config_default.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png deleted file mode 100644 index 9d64036ab..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_git.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png deleted file mode 100644 index 41d644263..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png deleted file mode 100644 index 7a78a97b6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_project_name.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png deleted file mode 100644 index ced4416b6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_select.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png deleted file mode 100644 index 1fb7f91bf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/Integration-admin-guide/wizard_storage.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png deleted file mode 100644 index 5c8b3ef37..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/app_hooks.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png deleted file mode 100644 index 4c66581ce..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/file_system_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png deleted file mode 100644 index 58c1da783..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/hooks.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png deleted file mode 100644 index 399dd3daa..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/sg_work_area.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png deleted file mode 100644 index 65fa4bacc..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/advanced-toolkit-administration/templates.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png deleted file mode 100644 index 6d93de390..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/1024px-Natron_icon.svg.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png deleted file mode 100644 index 91168abcf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/Janimation_128x128.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png deleted file mode 100644 index 6a0efb64a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/cpenv.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png deleted file mode 100644 index cbef9e60a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/dropper.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png deleted file mode 100644 index d638c5ddd..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/getsgdata.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png deleted file mode 100644 index 4755b7174..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/griffith_logo.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png deleted file mode 100644 index 44e138a03..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png deleted file mode 100644 index 0ab33d0c3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/icon_256_2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png deleted file mode 100644 index 0b935b1b1..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/image_alpha.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png deleted file mode 100644 index 2330991f2..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/krita.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png deleted file mode 100644 index 2f80c2fa6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/sb_logo.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png deleted file mode 100644 index 15b3430d6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/subtance_designer_transparent.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png deleted file mode 100644 index a4fd273c4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/community-shared-integrations/tk-blender.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png deleted file mode 100644 index b0ec0996f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_dialog.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png deleted file mode 100644 index 0bd12b673..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/clone_menu.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png deleted file mode 100644 index b1fbb8751..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/config_overview.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png deleted file mode 100644 index 4d06d424a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/copy_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png deleted file mode 100644 index 85336cfc3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/git_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png deleted file mode 100644 index 038fb5719..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/include_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png deleted file mode 100644 index b50eb8035..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/maya_include.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png deleted file mode 100644 index 09f9215b5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_overview.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png deleted file mode 100644 index 79e6c4e22..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/config-staging-and-rollout/pc_shotgun.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png deleted file mode 100644 index eb9a775f4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/core_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png deleted file mode 100644 index 393f75051..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/create_with_parent_folder_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png deleted file mode 100644 index ebf2e0bbe..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_custom_entity.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg deleted file mode 100644 index cc37f729f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_hierarchy.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png deleted file mode 100644 index 702118d8f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/episode_schema.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png deleted file mode 100644 index f94c1e385..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/list_field_folders_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png deleted file mode 100644 index 866e43dc8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/official_episode_entity.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png deleted file mode 100644 index d38f8678f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png deleted file mode 100644 index 4aebe397c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/optional_fields_BECH_0010_extra_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png deleted file mode 100644 index 653fd77ac..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/pipeline_step_folder_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png deleted file mode 100644 index 74e689ad6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/task_folder_02_DS.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png deleted file mode 100644 index 27cfbe3d2..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/file-system-config-reference/templates_file.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg deleted file mode 100644 index 62e6d75b5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg deleted file mode 100644 index c77961a3e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-all-projects.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png deleted file mode 100644 index ec59579ee..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze-single-project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg deleted file mode 100644 index 559262ff2..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_but_one_project.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg deleted file mode 100644 index 77e5c1c04..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_all_projects.jpg and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png deleted file mode 100644 index f1e50cf3e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/freeze_single_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png deleted file mode 100644 index c86fcbcfb..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/offline-and-disabled-auto-updates/shotgun-desktop-about.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png deleted file mode 100644 index 2548169a8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/app_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/context.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/context.png deleted file mode 100644 index 99413014e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/context.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png deleted file mode 100644 index 673030271..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/dependencies.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png deleted file mode 100644 index 028a77f19..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/environment.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png deleted file mode 100644 index 0b9696744..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/folder_creation.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/login.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/login.png deleted file mode 100644 index d113b92c3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/login.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png deleted file mode 100644 index 1bee9193a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/new_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png deleted file mode 100644 index a1ba5cc2d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/overview.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png b/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png deleted file mode 100644 index dcbbb4193..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/administration/images/toolkit-overview/templates.png and /dev/null differ 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 deleted file mode 100644 index b8fa1a226..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/integrations-admin-guide.md +++ /dev/null @@ -1,695 +0,0 @@ ---- -layout: default -title: ShotGrid 集成管理员手册 -pagename: integrations-admin-guide -lang: zh_CN ---- - -# {% include product %} 集成管理员手册 - -## 简介 - -本文档是面向 {% include product %} 集成管理员的手册。它适用于三个角色之一:用户、管理员和开发人员。我们的[用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/)面向将在其日常工作流中使用 {% include product %} 集成的最终用户(也就是艺术家),我们的[开发人员手册](https://developer.shotgridsoftware.com/zh_CN/93c6e555/)是面向编写 Python 代码以扩展功能的人员的技术文档。本文档介于这两者之间:面向在工作室实施 {% include product %} 集成、管理软件版本以及为发布的文件做出存储决策的人员。 - -## 标准工作流配置 - -任何 Toolkit 设置的核心都是工作流配置,即一组 YAML 文件,用于管理从安装的应用到软件版本的所有内容,在某些情况下,甚至包含用于设置您的生产目录结构和文件名的模板。标准工作流配置可以高度自定义,但我们提供两种基础配置。 - -### 基本配置 - -即时可用的集成设计为在不需要设置或修改任何配置文件的情况下运行。当您使用即时可用的集成时,没有要管理的内容,但 Toolkit 在后台使用隐式工作流配置,我们称此工作流配置为基本配置。基本配置使三个 Toolkit 应用(面板、发布器和加载器)可用于所有受支持的软件包,并根据您在 {% include product %} 中的软件实体来确定在 {% include product %} Desktop 中显示哪些软件包。基本配置不包含文件系统位置支持。当您在项目中使用即时可用的集成时,无论何时启动 Desktop,都会自动更新您的基本配置副本,因此,您始终拥有最新版本的集成。您可以[在此处订阅发行说明](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes),以及[在此处查看 GitHub 中的基本配置](https://github.com/shotgunsoftware/tk-config-basic/)。 - -### 默认配置 - -这是高级项目设置的默认基础配置。它包括[文件系统位置支持](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)以及一组更广泛的 Toolkit 应用和插件。 - -您可以[在此处查看 GitHub 中的默认配置](https://github.com/shotgunsoftware/tk-config-default2)。有关默认配置结构的详细说明,请参见工作流配置中的 `config/env/README.md` 文件,或[在此处查看 GitHub 中的默认配置结构](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)。 - -{% include info title="注意" content="想要查找旧配置结构?采用 v1.1 版本的集成后,我们重新组织了默认配置的结构,以帮助最大限度地提高效率和可读性,并使其更接近基本配置结构。您仍然可以对项目使用旧的默认配置。只需在 Desktop 设置项目向导中提示选择配置时选择“Legacy Default”。" %} - -## 发布器 - -发布器旨在简化即时可用的工作流和完整工作流配置之间的过渡。在即时可用的设置中,文件在原位发布,这就不必定义模板或文件系统数据结构。项目完成高级设置并具有完整工作流配置后,同一发布插件将识别向应用设置引入模板的情况,并开始将文件复制到其指定的发布位置,然后再进行发布。因此,工作室可以根据需要为具有完整配置的项目按每个环境或按每个 DCC 引入基于模板的设置。对于基于模板的工作流,默认配置是完整配置的,要了解如何为发布应用配置模板,它是一个很好的参考。有关详细信息,请参见 GitHub 中的默认配置中的 [tk-multi-publish2.yml 文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-multi-publish2.yml)。 - -有关编写适用于发布器的插件的详细信息,请参见[开发人员手册的“发布器”部分](https://developer.shotgridsoftware.com/zh_CN/93c6e555/#publisher)。 - -## 配置软件启动 - -可以使用 {% include product %} 轻松地自动检测系统上的宿主应用程序:只需启动 {% include product %} Desktop,选择一个项目,Desktop 将显示它在标准应用程序目录中找到的所有受支持软件包的启动程序。但我们还提供了强大的工具,用于对您工作室中的软件进行更细致的管理。您可以限制应用程序对特定项目、组甚至单个用户的可见性。您可以指定版本、在您的整个站点内取消激活某个给定软件包以及将软件包分组在一起。所有这些均通过 {% include product %} 中的软件实体进行管理。 - -当您创建新 {% include product %} 站点时,该站点将有一组默认的软件实体 - 每个受支持的宿主应用程序一个实体。您可以修改这些实体以及添加自己的实体,从而以您所需的方式管理 Desktop 中显示的软件。 - -要在 {% include product %} 中查看您的软件实体,请单击屏幕右上角的配置文件图标打开“管理”(Admin)菜单,然后选择 `Software`。 - -软件实体具有以下字段: - -- **软件名称(Software Name)**:软件在 Desktop 中的显示名称。 -- **缩略图(Thumbnail)**:上传用作 Desktop 图标的图像文件。 -- **状态(Status)**:控制软件是否可用。 -- **插件(Engine)**:内容创建工具的集成名称。 -- **产品(Products)**:对于包含不同版本(例如,Houdini 与 Houdini FX)的软件包,可以在此处指定以逗号分隔的列表。 仅在自动检测模式下有效,在手动模式下无效。 -- **版本(Versions)**:要显示的软件的特定版本。 可以在此处指定以逗号分隔的列表。仅在自动检测模式下有效,在手动模式下无效。 -- **组(Group)**:`Group` 字段值相同的实体将分组在 Desktop 中的单个图标和 {% include product %} 中的单个菜单下。例如,可以创建包含 Houdini 和 Nuke 的特效组。 -- **默认组(Group Default)**:如果某个组的一个成员选中了 `Group Default`,则单击该组的图标或菜单项将启动该软件。 -- **项目(Projects)**:将软件限制到特定项目的一种方式。 -- **用户限制(User Restrictions)**:将软件限制到特定用户或组的一种方式。 -- **Linux 路径(Linux Path)/Mac 路径(Mac Path)/Windows 路径(Windows Path)**:这些字段用于显式指定操作系统特定的软件路径。 -- **Linux 参数(Linux Args)/Mac 参数(Mac Args)/Windows 参数(Windows Args)**:启动软件时附加到命令的命令行参数。 - -我们可以通过演示一些使用这些字段的方法来详细了解它们如何协同工作。 - -### 示例:对同一应用程序的多个版本分组,自动检测 - -假设您的文件系统上有三个版本的 Maya:Maya 2016、Maya 2017 和 Maya 2018。您希望它们均可供您的艺术家使用,但想要将它们分组在 Desktop 中单个图标下。 - -如果这三个版本的 Maya 安装在您的文件系统上的标准位置,则会自动完成上述操作。当您在 Desktop 中选择一个项目时,它将扫描本地计算机上的标准应用程序目录并找到三个版本。由于您在 {% include product %} 中已有一个 Maya 软件实体,在没有指定特定版本或路径的情况下,它将在 Desktop 中显示其找到的所有版本。 - -![](images/Integration-admin-guide/maya_software.png) - -下面是需要注意的一些事项: - -- {% include product %} 自动检测您的软件时,单个软件实体会生成所有版本的菜单项。 -- 任何“路径”(Path)字段均未指定值。软件实体处于自动检测模式,因此假定应用位于标准位置。 - -这些均将显示在 Desktop 中,如此处所示:一个表示 Maya 的图标,包含一个下拉菜单,其中列出了所有可用版本。如果单击图标本身,将启动最新版本的 Maya。 - -### 示例:对同一应用程序的多个版本分组,手动模式 - -将 Maya 存储在您工作室中的非标准文件系统位置完全没有问题。您只需要创建自己的软件实体,并指定路径以让 {% include product %} 知道在何处找到您的软件。您的设置可能如下所示: - -![](images/Integration-admin-guide/maya_group_software.png) - -下面是一些注意事项: - -- 与在自动检测模式下不同,此处,每个版本的给定软件包对应一个软件实体。 -- 为了将它们分组在一起,请使用 `Group` 和 `Group Default` 字段。 `Group` 值相同的软件实体将被分组在 Desktop 中单个图标下的下拉菜单中,该图标使用 `Group` 值作为其名称。 -- 单击该图标本身时,将启动 `Group Default` 处于选中状态的组中的软件。 -- **在软件实体上为“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)或“Windows 路径”(Windows Path)中 _任何_ 一个指定值时,该实体将转为手动模式。** 与自动检测模式(路径字段为空时,软件 _会_ 显示在 Desktop 中)不同,在手动模式下,_仅_ 当为软件指定了路径且在指定路径中存在文件时,软件包才会在给定操作系统上显示。 -- 在此示例中,由于未指定 `Windows Path`,因此三个 Maya 版本均不会显示在 Windows 上的 Desktop 中。 - -### 示例:按用户或组限制 - -现在,使用上一个示例,假设我们尚未准备好使 Maya 2018 可供所有用户使用。但我们希望 TD、Dev 和 QA 工程师、Tessa Tester 能对其进行访问。我们可以使用 `User Restrictions` 字段实现这一点。 示例如下: - -![](images/Integration-admin-guide/maya_software_restrictions.png) - -我们基于上一个示例做了一些更改: - -- 组默认值现在是 Maya 2017。我们希望这是正式版本,因此在选中对应复选框的情况下,现在单击 Maya 对应的图标将转到此版本。 -- 我们在 `User Restrictions` 字段中添加了一些值:该字段可以接受用户和组,我们添加了“Dev”和“TD”组以及用户“Tessa Tester”。 现在,只有这些人员将会在 Desktop 中看到 Maya 2018。 - -### 示例:按项目限制软件版本 - -有时,您希望在您的工作室中对多个项目进行更复杂的版本管理。您可能有个项目面临交付困境,您希望使其不再使用新版本软件更新,而同时该项目的后续事情可能刚开始且能够使用更高版本。在这种情况下,您的软件实体可以设置为如下所示: - -![](images/Integration-admin-guide/maya_restrict_permissions.png) - -需要注意的一些重要事项: - -- 此处我们删除了 `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 中。 -- 请注意,一旦指定了某个软件实体的 `Projects` 值,该软件将仅显示在指定的项目中。 因此,如果您的工作室中除了 Chicken Planet 系列外还有其他项目,您需要为它们明确指定软件。 - -### 示例:添加自己的软件 - -出于以下一些原因,除了 {% include product %} Desktop 已在您的系统上自动检测到的软件外,您可能还会添加新的软件实体: - -- 您要通过 Desktop 使没有插件的应用程序可供您的用户使用。 -- 您有我们没有为其提供集成的内部软件或第三方软件,且您已为其编写自己的插件。 -- 您的软件不在标准位置,因此您要手动在 {% include product %} 中指定该软件的路径。(这是在上面的“对同一应用程序的多个版本分组,手动模式”示例中所述的情况。) - -在这些情况下,您可以添加自己的软件实体。将需要为 `Software Name` 字段设置值。 如果您的软件使用的是内部插件,请在 `Engine` 字段中指定插件名称。 某些工作室可能要在 Desktop 中添加没有 {% include product %} 集成的应用,以便为艺术家提供方便。您的艺术家可以直接从 Desktop 启动相应的应用。您甚至可以使用上述所有设置来管理版本和使用限制。在这种情况下,请将 `Engine` 字段保留为空,但需要至少为 `Mac Path`、`Linux Path` 和 `Windows Path` 之一指定值。 - -## 配置发布的文件路径解析 - -当您发布文件时,发布器在 {% include product %} 中创建一个 PublishedFile 实体,其中包括名为 `Path` 的[文件/链接(File/Link)](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_field_types_html)字段。随后,其他用户可能会尝试使用加载器将此文件加载到自己的工作会话中。加载器使用复杂的逻辑来解析多个操作系统中已发布的文件的有效本地路径。 - -加载器尝试将发布数据解析为路径的方式取决于发布是与本地文件链接关联还是与 `file://` URL 关联。 - -### 解析本地文件链接 - -如果您发布的路径与 {% include product %} 的“站点偏好设置”(Site Preferences)中定义的任何本地存储相匹配,则在发布时会自动生成本地文件链接。如果发布是本地文件链接,则将会使用其本地操作系统表达方式。请在[此处](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)了解有关本地文件链接的详细信息。 - -如果未针对您当前使用的操作系统定义本地存储的路径,您可以使用环境变量指定本地存储根。环境变量的名称应采用 `SHOTGUN_PATH__` 形式。 因此,如果您要为名为“Renders”的存储根定义 Mac 上的路径,可以创建 `SHOTGUN_PATH_MAC_RENDERS` 环境变量。 下面我们使用该示例进行更深入的讨论: - -- 假设您的 {% include product %} 站点有一个名为“Renders”的存储根,并指定了以下路径: -- Linux 路径: `/studio/renders/` -- Windows 路径: `S:\renders\` -- Mac 路径: `` - -- 您在使用 Mac。 - -- 您要使用路径 `/studio/renders/sq100/sh001/bg/bg.001.exr` 将发布加载到您的会话中。 - -加载器可以解析该路径并推断 `/studio/renders/` 是其存储根部分,但没有为 Mac 定义存储根。 因此,它将查找 `SHOTGUN_PATH_MAC_RENDERS` 环境变量,如果找到,则会将路径中的 `/studio/renders` 替换为其值。 - -**注意:**如果您定义了 `SHOTGUN_PATH_MAC_RENDERS` 环境变量,并且本地存储“Renders” *确实* 设置了 Mac 路径,则将使用本地存储值并将记录警告。 - -**注意:**如果无法针对当前操作系统解析存储,则发出 `PublishPathNotDefinedError`。 - -### 读取文件 URL - -加载器还支持对 `file://` URL 进行解析。 在发布时,如果您发布的路径与您站点的任何本地存储均不匹配,则该路径将另存为 `file://` URL。 与本地文件链接相反,这些路径不是以多操作系统表达方式存储,而只是针对其创建时所在的操作系统进行定义。 - -如果您尝试在创建 `file://` URL 时所在操作系统之外的其他操作系统上解析该 URL,加载器将尝试使用一系列方法将其解析为有效路径: - -- 首先,它将查找三个环境变量 `SHOTGUN_PATH_WINDOWS`、`SHOTGUN_PATH_MAC` 和 `SHOTGUN_PATH_LINUX`。 如果这些已定义,则将尝试按此方式转换路径。例如,如果要尝试在 Windows 中解析 `file:///prod/proj_x/assets/bush/file.txt`,您可以设置 `SHOTGUN_PATH_WINDOWS=P:\prod` 和 `SHOTGUN_PATH_LINUX=/prod` 以提示路径的解析方式。 -- 如果要使用多组环境变量以表示多个存储,可以使用后缀扩展以上变量名语法来实现: -- 如果您有一个用于渲染的存储,您可以执行一些操作,例如,定义 `SHOTGUN_PATH_LINUX_RENDERS`、`SHOTGUN_PATH_MAC_RENDERS` 和 `SHOTGUN_PATH_WINDOWS_RENDERS`,以便为引用渲染存储中数据的所有已发布 `file://` URL 提供转换机制。 -- 然后,如果您还有一个用于剪辑数据的存储,则可以定义 `SHOTGUN_PATH_LINUX_EDITORIAL`、`SHOTGUN_PATH_MAC_EDITORIAL` 和 `SHOTGUN_PATH_WINDOWS_EDITORIAL`,以便为剪辑存储根提供转换机制。 - -一旦标准化了这些环境变量,可以考虑将其转换为 {% include product %} 本地存储。一旦在 {% include product %} 的首选项中定义了它们,系统将会自动提取它们且不需要环境变量。 - -- 除了上述情况外,在 {% include product %} 的首选项中定义的所有本地存储均将以相同方式进行处理。 -- 如果定义了本地存储,但缺少操作系统,这可以通过环境变量提供。例如,如果 Linux 和 Windows 上定义了一个名为 `Renders` 的本地存储,则可以通过创建名为 `SHOTGUN_PATH_MAC_RENDERS` 的环境变量进行扩展以支持 Mac。 此项的常规语法为 `SHOTGUN_PATH__`。 -- 如果没有匹配的根,则将原样返回文件路径。 - -示例如下: - -假设您在 Linux 上发布了文件 `/projects/some/file.txt`,且生成了使用 URL `file:///projects/some/file.txt` 的 {% include product %} 发布。在您的工作室中,Linux 路径 `/projects` 相当于 Windows 上的 `Q:\projects`,因此您希望将完整路径转换为 `Q:\projects\some\file.txt`。 - -以下所有设置将对此进行处理: - -- 基于变量的常规替代: -- `SHOTGUN_PATH_LINUX=/projects` -- `SHOTGUN_PATH_WINDOWS=Q:\projects` -- `SHOTGUN_PATH_MAC=/projects` - -- 一个名为“Projects”的 {% include product %} 本地存储,进行以下设置: - -- Linux 路径: `/projects` -- Windows 路径: `Q:\projects` -- Mac 路径: `/projects` - -- 一个名为“Projects”的 {% include product %} 本地存储,使用一个环境变量予以增强: - -- Linux 路径: `/projects` -- Windows 路径: -- Mac 路径: `/projects` -- `SHOTGUN_PATH_WINDOWS_PROJECTS=Q:\projects` - -**注意:**如果在 {% include product %} 中定义了一个本地存储 `Renders`,且设置了 `Linux path`,另外还定义了 `SHOTGUN_PATH_LINUX_RENDERS` 环境变量,则将优先使用该存储,忽略该环境变量,并记录警告。一般而言,本地存储定义始终优先于环境变量。 - -### 高级配置 - -有关执行已发布的文件路径解析的基本方法的信息,请查看[开发人员参考文档](http://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.resolve_publish_path)。 - -如果您要使用“Advanced Project Setup”,可以通过自定义 `resolve_publish` 核心挂钩添加超出本地文件链接和 `file://` URL 的支持。 可以进行以下自定义: - -- 具有关联上传文件的发布可以通过核心挂钩自动下载到适当的缓存位置,且会返回路径。 -- 自定义 URL 方案(如 `perforce://`)可以解析为本地路径。 - -## 浏览器集成 - -{% include product %} Toolkit 的浏览器集成是指通过 {% include product %} Web 应用程序中的右键单击上下文菜单访问 Toolkit 应用和启动器。这些菜单(如上文所示)包含针对各种实体类型配置的动作。如果某个项目有多个工作流配置,则将按工作流配置组织动作。通过浏览器集成,您可以从浏览器中启动识别 {% include product %} 上下文的内容创建软件(如 Maya 或 Nuke)。 - -![](images/Integration-admin-guide/browser_integration.jpg) - -### 浏览器集成简单回顾 - -多年来,{% include product %} Toolkit 的浏览器集成采用了多种形式。随着技术的改进和安全要求的提高,执行浏览器集成的方法也发生了变化。 - -**Java 小程序(已弃用)** - -第一种执行方法是使用 Java 小程序,通过它从 {% include product %} Web 应用程序访问本地桌面。由于 Java 小程序被认为是可利用的安全风险,因此不能再使用它们,必须弃用。 - -**浏览器插件(已弃用)** - -替换已弃用的 Java 小程序的是浏览器插件,它利用 NPAPI 从 {% include product %} Web 应用程序访问本地桌面。由于 NPAPI 也被认为存在安全风险,主要的 Web 浏览器都已开始阻止其使用。因此必须弃用浏览器插件。 - -**通过 {% include product %} Desktop 的 websocket v1(旧式)** - -在 {% include product %} Desktop 应用中托管 websocket 服务器过去是且现在仍然是从 {% include product %} Web 应用程序与本地桌面通信时所采用的方法。此 websocket 服务器的 RPC API 的第一次执行利用了为之前的 Java 小程序和浏览器插件开发的相同底层技术。当服务器收到来自 {% include product %} 的请求时,使用关联项目的工作流配置中的 tank 命令来获取要显示在动作菜单中的命令列表。 - -**通过 {% include product %} Desktop 的 websocket v2** - -websocket 服务器的 RPC API 的第二次实施更改了用于获取、缓存和执行 Toolkit 动作的基本机制。此执行解决了与早期浏览器集成执行有关的许多性能问题,改进了动作菜单的外观组织,并添加了对[即时可用的 {% include product %} 集成](https://developer.shotgridsoftware.com/zh_CN/d587be80/#getting-started-with-desktop)的支持,这些集成无需显式配置 Toolkit 即可使用。这是浏览器集成的当前执行方式。 - -### 配置 - -要针对每个实体类型控制向用户显示的动作,可在您的项目工作流配置中修改 YAML 环境文件。首次尝试自定义时要了解和考虑一些事情。 - -**哪个插件配置?** - -在 {% include product %} Web 应用中管理 Toolkit 动作的 Toolkit 插件是 `tk-shotgun`,因此,此插件的配置控制动作菜单中的显示内容。 - -![](images/Integration-admin-guide/tk-shotgun_config.png) - -在上面的 [tk-config-basic](https://github.com/shotgunsoftware/tk-config-basic/) 示例中,配置了两个应用,它们会使很多插件命令转换为菜单动作。Toolkit 应用将注册要包含在动作菜单中的命令,包括本地系统上发现的每个软件包的启动器命令,这些命令对应于 {% include product %} 站点中的[软件实体](https://developer.shotgridsoftware.com/zh_CN/8085533c/#configuring-software-launches)列表。结果是此处所示菜单动作列表: - -![](images/Integration-admin-guide/action_menu.png) - -浏览器集成代码找到用户系统上安装的 Houdini、Maya、Nuke 和 Photoshop,从而产生用于启动其中每个集成的菜单动作。请注意,在给定的环境配置文件中,必须存在软件实体的插件,才会针对该环境的实体显示软件的 _启动器_。 因此,在此示例中,从中获取此代码片段的文件中必须存在 `tk-houdini`、`tk-maya`、`tk-nuke` 和 `tk-photoshopcc` 所有这些插件。 如果要从此实体的启动器列表中移除某项(例如 Maya),只需从环境配置文件中移除 `tk-maya` 插件块。 - -除了这些启动器外,发布应用的“发布...”(Publish…)命令也包含在菜单中。 - -**哪个 YML 文件?** - -您可以采用两种途径之一:利用主要环境配置 (`config/env/*.yml`)(由配置的 [pick_environment.py 核心挂钩](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/pick_environment.py)控制),或 [tk-config-default](https://github.com/shotgunsoftware/tk-config-default/) 使用的传统方法(使用 `config/env/shotgun_.yml` 文件)。 - -如果使用标准环境文件,则浏览器集成使用 `pick_environment` 核心挂钩来确定将哪个环境配置文件用于给定实体的动作菜单。 在最简单的情况下,环境对应于实体类型。例如,如果右键单击镜头,则显示的动作菜单将由 `config/env/shot.yml` 中的 `tk-shotgun` 块配置。 可以自定义 `pick_environment` 挂钩以使用更复杂的逻辑。 如果标准环境文件中没有配置 `tk-shotgun` 插件,则存在 `shotgun_.yml` 文件时发生回退。 这样,浏览器集成可以使用利用实体特定的环境文件的旧配置。 - -**_提示:使用 tk-config-default2 从浏览器启动器中移除软件_** - -更新用于从 {% include product %} 浏览器启动软件的配置会有所不同,具体取决于使用的是 tk-config-default 还是 tk-config-default2。 - -使用 tk-config-default2 时,更新应该应用于 config/env/includes/settings/[`tk-shotgun.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.1.10/env/includes/settings/tk-shotgun.yml),而使用 tk-config-default 时,更新应该应用于 config/env/`shotgun_task.yml`。 - -例如,通过浏览器从资产启动时,从选项列表中移除 Mari。 - -首先,导航至 [`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 -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmari: "@settings.tk-multi-launchapp.mari" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -要通过浏览器从资产的选项列表中移除 Mari,请移除 Mari 行 ([`tk-multi-launchmari: "@settings.tk-multi-launchapp.mari"`](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/includes/settings/tk-shotgun.yml#L29)): - -``` - -# asset -settings.tk-shotgun.asset: - apps: - tk-multi-launchapp: "@settings.tk-multi-launchapp" - tk-multi-launchmotionbuilder: "@settings.tk-multi-launchapp.motionbuilder" - tk-multi-publish2: "@settings.tk-multi-publish2.standalone" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-shotgun-folders: "@settings.tk-shotgun-folders" - tk-shotgun-launchfolder: "@settings.tk-shotgun-launchfolder" - location: "@engines.tk-shotgun.location" -``` - -然后,针对每个实体(例如镜头)按照相同的说明进行操作,从中移除在 {% include product %} 浏览器中启动特定软件的功能。请注意,保存文件后,您可能需要等待一分钟并对浏览器进行硬刷新才能使其生效。 - -### 缓存 - -浏览器集成具有强大的缓存机制,可以快速向用户显示菜单动作。由于引导 Toolkit 和获取插件命令列表的过程可能很耗时,因此这是很有必要的。 - -**缓存何时失效?** - -websocket 服务器的 RPC API 根据以下两项来确定缓存的数据是否仍有效:YAML 文件修改时间和站点的软件实体的内容。如果自写入缓存数据后对给定配置中的某个环境 YAML 文件进行了修改,则重新缓存必要的数据,并向 {% include product %} Web 应用程序返回最新数据。同样,如果自数据缓存后对 {% include product %} 中任何软件实体的任何字段进行了修改,则引导 Toolkit 并缓存新数据。 - -**缓存文件位于磁盘上的什么位置?** - -缓存文件位置取决于操作系统。 - -``` -OS X: ~/Library/Caches/Shotgun//site.basic.desktop/tk-desktop -Windows: %APPDATA%\Shotgun\\site.basic.desktop\tk-desktop -Linux: ~/.shotgun\\site.basic.desktop\tk-desktop -``` - -### 挂钩方法 - -`browser_integration.py` 挂钩包含在 `tk-framework-desktopserver` 中,后者提供以下挂钩方法: - -- `get_cache_key`:此方法确定给定配置 URI、项目实体和实体类型的缓存条目键。默认执行组合了配置 URI 和实体类型。 -- `get_site_state_data`:此方法可用于将来自 {% include product %} 的其他查询数据包含到用于测试缓存数据有效性的哈希中。默认情况下,使用站点中存在的所有软件实体的状态,但如果应在哈希中包含其他数据,可以在此挂钩方法中执行。 -- `process_commands`:此方法提供用于自定义或更改要返回到 {% include product %} Web 应用程序的命令的位置。向方法提供的数据结构是词典列表,每个词典代表一个菜单动作。可以根据需要更改、过滤掉数据或将数据添加到列表中,数据将立即反映在请求 Toolkit 动作的菜单中。 - -### 日志 - -浏览器集成的日志位于 Toolkit 的[标准日志位置](https://developer.shotgridsoftware.com/zh_CN/38c5c024/)。相关日志文件是 `tk-desktop.log` 和 `tk-shotgun.log`。 此外,如果使用的是 Google Chrome,有时部分相关日志输出会保存在该浏览器的开发人员控制台中。 - -### 疑难解答 - -从 Web 应用程序与本地桌面通信的复杂特性意味着中途可能会有故障点。下面介绍了几种此类情况以及在遇到这些情况时首先要采用的一些步骤建议。 - -动作菜单中显示**“打开或安装 {% include product %} Desktop...”(Open or install ShotGrid Desktop…)** - -![](images/Integration-admin-guide/install_desktop.png) - -这可能意味着以下三种情况之一: - -1. 本地计算机上当前未运行 {% include product %} 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/zh_CN/38c5c024/) 中,用于说明该错误,可以将其[发送到 {% include product %} 的支持团队](https://knowledge.autodesk.com/zh-hans/contact-support)。 - -**动作菜单中未显示任何动作** - -![](images/Integration-admin-guide/no_actions.png) - -如果此实体类型应该有动作,这表示出现配置问题。下面是一些可能的问题: - -1. 在正确的环境 YAML 文件中配置了 `tk-shotgun` 插件,但该配置中没有应用。 在此情况下,可能是有意设计此实体类型没有动作。 - -2. 在正确的环境 YML 文件中配置了 `tk-shotgun` 插件,且存在应用,但菜单中仍未显示动作。 这可能是由于应用无法初始化。在此情况下,可以在 [tk-shotgun.log 和 tk-desktop.log](https://developer.shotgridsoftware.com/zh_CN/38c5c024/) 中找到描述相关问题的信息。 - -3. 对应于此实体类型的环境不包含 `tk-shotgun` 的配置。 此处的最终结果与此列表中的第一种情况相同。在此情况下,您可以查看工作流配置的 `pick_environment` 挂钩来确定正在为此实体类型加载哪个环境,可以在那里验证 `tk-shotgun` 的配置。 - -4. 有一个缓存在磁盘上的空菜单动作列表。要强制重新生成缓存,可使用以下几种选项: - - - 在项目的配置中更新 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…)始终不替换为菜单动作** - -![](images/Integration-admin-guide/retrieving_actions.png) - -出现此情况有几种可能: - -1. websocket 服务器尚未完成动作缓存。如果这是对项目的配置进行重大更新后第一次检索动作,该过程可能需要一些时间才能完成。多等待一段时间,然后观察 `tk-desktop.log` 的内容看看是否仍在处理。 - -2. websocket 服务器无法响应且永远不会响应。这种情况应该很少出现,但如果在请求动作后很明显没有其他处理操作正在进行(如 `tk-desktop.log` 中所示),那应该就是出现了这种情况,此时请[联系 ShotGrid 支持](https://knowledge.autodesk.com/zh-hans/contact-support)并提供相关日志数据。 - -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` - -通过 `SGTK_PREFERENCES_LOCATION` 环境变量选项,您可以将您的配置文件存储在计算机或网络上的其他位置。 请注意,`toolkit.ini` 为当前标准文件名。 如果您使用的是 `config.ini`,请参见下面的 _“旧位置”_ 部分。 - -您可以参见[此处](https://raw.githubusercontent.com/shotgunsoftware/tk-framework-desktopstartup/master/config.ini.example)一个记录的配置文件示例。 - -请注意,此示例文件名为 `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` - - Linux: `~/shotgun/desktop/config/config.ini` - -**代理配置** - -如果您的工作室通过代理访问 Internet,您将需要告诉 Toolkit 在访问 Internet 时使用此代理。可以将您的代理指定为 `http_proxy` 设置的值来完成此操作: - -`http_proxy: ` - -**使用本地托管站点时运行 {% include product %} Desktop** - -如果您的 {% include product %} 站点 URL 不是以 `shotgunstudio.com` 或 `shotgrid.autodesk.com` 结尾,表示您正在运行本地 {% include product %} 站点。在这种情况下,可能是您的站点尚未完全准备好实施 {% include product %} 集成,{% include product %} 团队可能需要参与进来并进行一些小的调整,然后您才能继续!在这种情况下,[请提交工单](https://knowledge.autodesk.com/zh-hans/contact-support),我们将帮助您解决问题。 - -**使用本地托管站点时连接到应用商店** - -如果您要在使用本地 {% include product %} 站点时通过代理访问 Internet,您可能希望设置一个 HTTP 代理用于访问应用商店,但不用于访问本地 {% include product %} 网站。为此,只需将以下行添加到 `toolkit.ini`: - -`app_store_http_proxy: ` - -其中 `` 是一个遵循[开发人员文档](http://developer.shotgridsoftware.com/python-api/reference.html?highlight=reference%20methods#shotgun-methods) - -如果您需要按每个项目覆盖此设置,可以在项目工作流配置的 `config/core/shotgun.yml` 中完成此操作。 - -## 离线使用情况 - -在常规使用中,{% include product %} Desktop 会在启动时自动检查 Desktop 应用本身、tk-desktop 插件和基本配置是否有更新。但是,在某些情况下,您可能需要在离线时或在与 Internet 完全断开连接的计算机上运行集成。以下部分介绍了如何处理其中每种情况。 - -### {% include product %} 创建 - -本文档中所述的用于解决离线使用情况的方法也适用于 [{% include product %} Create](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) 提供的集成功能。当以与 {% include product %} Desktop 相同的方式使用 {% include product %} Create 时,用于定制 {% include product %} Toolkit 行为的各种环境变量(例如 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS`)适用。 - -### 离线使用集成 - -_情况:我要运行 {% include product %} 集成,但未连接到 Internet。我们有本地 {% include product %} 安装。_ - -**解决方案** - -- 如果您可以临时连接到 Internet,只需下载 {% include product %} Desktop。它预先打包了一组[集成](https://developer.shotgridsoftware.com/zh_CN/d587be80/#introduction),且预先捆绑了适用于所有受支持 DCC 的 {% include product %} 集成所需的各种应用和插件。启动后,它将自动尝试查找升级,但如果无法连接到 {% include product %} 应用商店,它将仅运行本地的最新版本。 - -**补充知识** - -- 某些 Toolkit 操作(例如注册发布)需要访问 {% include product %} 站点。因此,此解决方案仅适用于本地托管的站点。 -- 更新下载到本地计算机。 -- 如果您在连接和断开连接之间切换,Desktop 以及应用内集成(例如 Maya 和 Nuke 内部的集成)只要处于连接状态,就将在启动时下载升级。 - -### 通过手动下载管理更新 - -_情况:我们的美工人员工作站已断开 Internet 连接,因此无法在 Desktop 中使用自动更新。我们仍想获得更新,但必须通过单台联机计算机下载它们,然后手动将它们传输给艺术家或传输到一个集中位置。_ - -**解决方案** - -- 在连接到 Internet 的工作站上运行 {% include product %} Desktop。该工作站启动后,在 Desktop 启动时将自动下载最新升级。 -- 选项 1:共享 Desktop 包 -- 将[包缓存](https://developer.shotgridsoftware.com/zh_CN/7c9867c0/)复制到所有计算机都可以访问的共享位置。 -- 在离线计算机上设置 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 环境变量以指向此位置。 -- 在离线计算机上启动 Desktop 后,它们将选取缓存中可用的最新升级。 -- 选项 2:本地部署 -- 将更新的缓存分发到每台本地计算机上正确的缓存位置。 - -**补充知识** - -- 采用选项 1 时,将从 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 中定义的位置加载 Toolkit 代码。 如果此位置在共享存储上,请确保它的性能足够高,能够加载许多小文件。 -- 对于 Windows 设置,通常不会遇到这种情况。此时,我们改为建议采用选项 2。 - -## 锁定更新 - -虽然 Desktop 的自动更新可以确保您始终拥有最新版本,但有时您希望冻结某个项目甚至整个站点,从而将其锁定到特定版本并阻止任何更新。 - -### 针对单个项目冻结更新 - -_情况:我的项目将要打包,我希望将其冻结,以便不会自动下载 {% include product %} 集成更新。_ - -**解决方案** - -- 确定要将项目锁定到的版本。 [可以在此查找集成版本。](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes) -- 在 {% include product %} 中,为要锁定的项目创建工作流配置实体,并填充以下字段(在此示例中,我们将配置锁定为使用集成 v1.0.36): -- 配置名称(Config Name): `Primary` -- 项目(Project):要锁定的项目 -- 插件 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`。 -- 要进行测试,您可以创建此工作流配置实体的副本,并将您的用户名添加到 `User Restrictions` 字段中。 这将限制该实体,使其仅可供您使用,而不会影响其他用户。然后,您可以从此配置副本启动 Maya 或某些其他软件,并确认它运行的是预期的集成版本。 - -**已知问题** - -- Flame 集成的命名空间为 `basic.flame`,从表面上看应该包含在 `basic.*` 中。 但实际上 Flame 集成并不包含在基本配置中。因此,如果您在某个项目中使用 Flame,然后执行此覆盖,则 Flame 集成将停止工作。 -- 解决方案是专门为 Flame 创建另一个工作流配置覆盖: -- 配置名称(Config Name): `Primary` -- 项目(Project):要锁定的项目(如果要锁定所有项目,则为空) -- 插件 ID(Plugin ids): `basic.flame` -- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### 针对站点冻结更新 - -_情况:我不需要任何更新。我想要在我的工作室中完全控制所有项目中的下载内容和使用内容。_ - -**解决方案** - -- 按照上面示例中的步骤操作,但保留 `Project` 字段为空。 在 `Project` 字段中无覆盖的情况下,此工作流配置实体将应用于所有项目,包括“站点”项目,即,Desktop 在任何项目之外使用的站点配置。 - -![](images/Integration-admin-guide/freeze_site.jpg) - -**补充知识** - -- 这是想要“锁定站点配置”时使用的工作流。这将锁定所有内容,然后您可以通过 Desktop 菜单继续执行高级项目设置。 -- 如果将整个站点锁定为使用某个版本(例如 `v1.2.3`),您仍可将单个项目锁定为使用其他配置。 - -**已知问题** - -- Flame 会受此影响。有关解决方案,请参见上述情况的“已知问题”部分。 - -### 针对除一个项目以外的其他所有项目冻结更新 - -_情况:我想要锁定站点中除测试项目以外的其他所有项目,而在测试项目中仍允许自动更新。_ - -![](images/Integration-admin-guide/freeze_all_but_one_project.jpg) - -**解决方案** - -- 按上述部分中所述,针对站点冻结更新。 -- 使用以下字段值配置例外项目的工作流配置实体: -- 配置名称(Config Name): `Primary` -- 项目(Project): _不_ 希望锁定的项目 -- 插件 ID(Plugin ids): `basic.*` -- 描述符(Descriptor): `sgtk:descriptor:app_store?name=tk-config-basic` - -**补充知识** - -- 请注意,项目的“描述符”(Descriptor)字段中忽略了版本号。这将意味着项目追踪最新版本的基本配置。 - -### 安全升级锁定的站点 - -- 情况:我们已锁定到 v1.0.0,并希望升级到 v2.0.0,但我想在将新版本部署到工作室之前先对其进行测试。* - -**解决方案** - -- 通过右键单击并选择“复制选定项”(Duplicate Selected),在 {% include product %} 中复制工作流配置实体。 -- 将克隆的配置命名为“update test”,并在“用户限制”(User Restrictions)字段中指定您自己。 -- 现在,您将开始使用此工作流配置。 -- 将“描述符”(Descriptor)更改为指向要测试的版本。 -- 您可以根据需要在“用户限制”(User Restrictions)字段中添加用户以邀请他们参与测试。 -- 对测试满意后,只需将主工作流配置更新为使用该版本即可。 -- 用户重新启动 Desktop 或 DCC 后,此更新将生效。 - -## 接管工作流配置 - -在没有设置任何配置的情况下,您将获得一组即时可用的基本 {% include product %} 集成,本文档介绍了使用这些即时可用的集成可以完成的各种管理工作。此基本设置建立在 {% include product %} 的 Toolkit 平台上,支持更加丰富的自定义。在 Desktop 中,Toolkit 项目设置向导将引导您完成为项目创建一个完整的可自定义工作流配置的过程。 - -以下各部分通过示例和合理默认值建议详细介绍了向导的每个步骤,以防您不确定如何设置内容。 - -#### 从 Desktop 启动设置向导 - -![](images/Integration-admin-guide/advanced_setup.png) - -导航至某个项目后,Desktop 右下方的用户菜单中将会有一个“Advanced Project Setup...”菜单项。单击此菜单项可启动 Toolkit 设置向导。 - -#### 选择配置类型 - -![](images/Integration-admin-guide/wizard_select.png) - -开始配置新项目时,首先要确定 _使用哪个配置模板_。 配置模板基本上是完整的项目配置,包含运行项目所需的所有设置、文件系统模板、应用和逻辑。 - -- 如果这是您的第一个项目,请使用 {% include product %} 默认值以便快速入门。 -- 如果您已配置过项目且有以前项目的配置,则可以基于现有项目创建新项目来轻松重用这些配置。 -- 对于高级工作流,您可以使用外部配置或 Git 库中存储的配置。 - -#### 默认配置模板 - -![](images/Integration-admin-guide/wizard_config_default.png) - -如果您要从头开始,就从此处开始。默认配置中包含采用默认文件结构和文件命名约定设置的所有最新应用和插件。 - -安装了默认配置后,您可以手动调整配置文件,并对其进行自定义以满足工作流的特定需求。建立并运行了项目后,您可以基于此配置创建下一个项目。 - -##### 默认配置 - -这是默认的 Toolkit VFX 配置,通常是开始设置各项内容的重要开端。该配置包含 3ds Max、Flame、Houdini、Nuke、Mari、Maya、Motionbuilder 和 Photoshop 设置,以及磁盘上简单明了的文件夹设置。 - -该配置包含多个不同部分: - -- 文件系统设置 -- 一组用于标识磁盘上关键位置的模板 -- 一组预配置的插件和应用,它们一起链接在工作流中。 - -**文件系统概述** - -在 {% include product %} 中,标准配置处理资产和镜头。它按工作流工序划分各项内容。一个工作流工序类似于一个部门。每个工作流工序均包含用于各种受支持应用程序的工作和发布区域。镜头结构如下所示: - -![](images/Integration-admin-guide/folder_structure.png) - -**应用程序和工作流** - -该配置包含以下部分: - -- Maya、Mari、Nuke、3ds Max、Flame、Houdini、Photoshop 和 Motionbuilder 支持 -- {% include product %} 应用程序启动器 -- 发布、创建快照和版本控制 -- 一个 Nuke 自定义写入节点 -- {% include product %} 集成 -- 多个其他工具和实用程序 - -除了上述应用外,您可以在安装了配置后轻松地安装其他应用和插件。 - -#### 基于现有项目创建新项目 - -![](images/Integration-admin-guide/wizard_project_config.png) - -使用以前项目中的所有默认值和设置来创建并运行新项目,此方法既快捷又方便。Toolkit 仅将整个配置从旧设置复制到新项目中。这是用于改进配置的简单实用方法 - 每个新项目均基于某个旧项目。 - -有关如何改进和维护工作流配置的详细方法和文档,请参见此处: - -[管理项目配置](https://developer.shotgridsoftware.com/zh_CN/60762324/#inheriting-the-config-from-your-previous-project) - -#### 使用 Git 中的配置模板 - -![](images/Integration-admin-guide/wizard_git.png) - -如果您要使项目的配置与源控制保持连接,请使用此选项。指定指向远程 Git 库或 Github 库的 URL,设置流程将为您克隆它。请注意,这不仅仅是 Github,而是与任何 Git 库一起使用。请务必确保存储库的路径以 `.git` 结尾,Toolkit 将尝试将其作为 Git 设置进行处理。 由于您的项目配置是 Git 库,您可以提交您所做的任何更改并将其推送至您的主存储库,进而推送至其他项目。通过使用基于 Github 的配置,可以轻松地使多个 Toolkit 项目保持同步。可在此处了解详细信息: - -[管理项目配置](https://developer.shotgridsoftware.com/zh_CN/60762324/#a-studio-configuration-in-git-source-control) - -请注意,如果您运行的是 Windows,则需要将 Git 安装在您的计算机上,并可以通过 `PATH` 访问。 在 Linux 和 Mac OS X 上,通常默认安装 Git。 - -#### 浏览配置模板 - -![](images/Integration-admin-guide/wizard_browse.png) - -如果您的配置在磁盘上(以文件夹形式,或压缩为 zip 文件),请使用此选项。如果有人通过电子邮件向您发送了配置,或如果您在磁盘上保留了一个主配置,您基于它来建立所有项目,这会很有用。这通常是专家选项,我们建议使用另一个项目的配置或我们的应用商店默认配置中的一个。 - -#### 设置存储 - -每个 Toolkit 项目均会将其所有文件和数据写入到磁盘上的一个或多个共享存储位置。例如,某个配置可能需要一个存储用来存放纹理,一个用来存放渲染,以及一个用来存储场景文件。通常,在 {% include product %} 的“站点偏好设置”(Site Preferences)中的 _“文件管理”(File Management)_ 选项卡下控制这些存储。 - -Toolkit 设置向导将要求您将配置所需的每个存储根映射到 {% include product %} 中的一个本地存储。 - -![](images/Integration-admin-guide/wizard_storage.png) - -所需根在左侧列出并显示其说明(如配置的 `roots.yml` 文件中所定义)。 现有的 {% include product %} 本地存储列表在右侧列出。您必须为每个所需根选择一个存储,并输入当前操作系统的路径(如果 {% include product %} 中还不存在)。 - -您还可以添加其他操作系统的路径(如果未定义)。现有路径会被锁定,以确保您不会意外影响可能依赖相应存储路径的其他项目。向导中的映射页面将确保您已映射每个所需根,并且每个映射都有效。 - -您也可以在向导中选择存储选择列表末尾的 `+New` 项来创建新的本地存储。 系统将提示您提供本地存储名称和当前操作系统的路径。 - -设置项目时,Toolkit 将在每个存储位置中为每个新项目创建一个文件夹。例如,如果您的主存储位置为 `/mnt/projects`,则称为 _The Edwardian Cry_ 的项目最后将位于 `/mnt/projects/the_edwardian_cry` 中。 如果配置不仅仅使用主存储,则每个存储最后将有一个 `the_edwardian_cry` 文件夹。 - -主存储位置通常类似于 `/mnt/projects` 或 `\\studio\projects`,且通常是一个您已在存储项目数据的位置,位置按项目分组。 它几乎始终位于共享网络存储上。 - -#### 选择项目文件夹名称 - -![](images/Integration-admin-guide/wizard_project_name.png) - -现在要为项目选择磁盘名称。将在配置所需的所有不同存储中创建此文件夹。您可以在 UI 中查看快速预览 - 对于大多数配置,这将仅预览主存储,但如果使用多根配置,其他存储也会显示。Toolkit 将根据 {% include product %} 中的名称建议一个默认项目名称。可以随意调整它以创建适合您的设置的名称。 - -#### 选择配置位置 - -![](images/Integration-admin-guide/wizard_config.png) - -最后,请确定磁盘上存放配置文件的位置。Toolkit 将根据以前的项目建议一个位置,以使它们最终全部位于磁盘上的同一位置。 - -配置通常位于共享存储或磁盘上,以便工作室中需要该配置的所有用户均可以访问它。如果您计划在此项目中使用多个操作系统,请确保输入所有必要的路径。所有路径均应表示磁盘上的同一位置。通常,在 Mac OS X 和 Linux 上路径可以相同,但在 Windows 上不同。 - -如果这是您的第一个项目,您通常要确定磁盘上一个用于存储您的所有将来工作流配置的共享区域。这通常是存储整个工作室共享的软件或软件设置的位置。该位置可能类似于 `/mnt/software/shotgun`。 根据您的工作室网络和文件命名约定,该位置可能会有所不同。 - -在设置第一个配置时,请在配置中为您的工作室中使用的所有平台设置路径。从而,将来能够轻松创建可从所有计算机访问的环境。假设您的项目名称为 _Golden Circle_,您可以键入以下三个路径: -``` -linux: /mnt/software/shotgun/golden_circle -macosx: /servers/production/software/shotgun/golden_circle -windows: \\prod\software\shotgun\golden_circle -``` - -#### 有了配置后可以做什么? - -当您完成并运行第一个配置后,请导航到“后续步骤”文档,详细了解如何配置和调整 Toolkit,以更好地满足您的工作室需要: - -[在您的第一个项目基础上更进一步](https://developer.shotgridsoftware.com/zh_CN/c3b662a6/) - -## 高级功能 - -### 静默安装 - -如果在 Windows 网络中,可以使用参数“/S”强制 .exe {% include product %} Desktop 安装程序执行静默安装。然后,您可以将可执行文件的快捷方式的副本推送至启动文件夹。 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 deleted file mode 100644 index b5c996a25..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/offline-and-disabled-auto-updates.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: default -title: 脱机使用和禁用自动更新 -pagename: turn-off-auto-updates-and-offline -lang: zh_CN ---- - -# 离线使用和禁用自动更新 - -- [自动更新](#auto-updates) - - [哪些部分会自动更新?](#what-parts-auto-update) - - [哪些部分不会自动更新?](#what-doesnt-auto-update) -- [离线使用集成](#running-the-integrations-offline) - - [初始设置](#initial-setup) - - [管理更新](#managing-updates) -- [禁用自动更新](#turning-off-auto-updates) - - [在项目级别或站点级别禁用更新](#turning-off-updates-at-a-project-or-site-level) - - [针对除一个项目以外的其他所有项目禁用更新](#turning-off-updates-for-all-but-one-project) - - [升级](#upgrading) - -## 自动更新 -### 哪些部分会自动更新? - -默认情况下,{% include product %} Desktop 将自动检查更新,并在找到更新时将其安装到本地计算机。 - -它会检查两个组件的更新: - -- `tk-framework-desktopstartup` - 用于帮助启动 {% include product %} Desktop 的框架。 -- `tk-config-basic` - 默认站点配置。 - -该配置用作保存 {% include product %} Desktop 应使用的应用、插件、框架和核心版本的清单文件。 -更新该配置也可能会更新其中的任何组件。找到的任何更新都将下载并存储在用户的本地缓存中,而不是修改原始的 {% include product %} Desktop 安装文件。 - -{% include product %} Create 作为应用程序,具有与 {% include product %} Desktop 不同的独立更新机制,此处未涵盖此内容。 -但是 {% include product %} Create 中提供的集成功能以类似的方式工作,而且还会将 `tk-config-basic` 自动更新到同一用户缓存中。 - -### 哪些部分不会自动更新? - -- 如果您已接管站点配置,则系统不会检查是否有较新的 `tk-config-basic` 更新,相关详细信息[请见下文](#turning-off-updates-at-a-project-or-site-level)。 - -- 未使用默认站点配置的任何项目(即,对其运行了 Toolkit 高级设置向导的项目)的配置不会自动更新。 - -- 与 {% include product %} Desktop 捆绑在一起的资源(如 Python 和 QT)不会自动更新。 - 我们有时会在需要更新这些部分时发布新的 {% include product %} Desktop 安装程序。 - -## 离线使用集成 - -### 初始设置 - -如果您的工作室 Internet 访问受限或无法访问 Internet,则需要确保在本地缓存所需的所有部分。您仍需要一台可以连接到 Internet 的计算机,以便下载 {% include product %} Create 或 {% include product %} Desktop。 - -{% include product %} Desktop 预先打包了运行基本集成所需的所有依存项。 -虽然 {% include product %} Create 也捆绑了这些依存项,但您仍需按照[管理更新](#managing-updates)中提及的步骤进行操作。 - -启动任一项后,它将自动尝试查找更新,但如果无法连接到 {% include product %} 应用商店,它将仅运行本地的最新版本。 - -建议在安装 {% include product %} Desktop 后,按照下面的[管理更新](#managing-updates)步骤操作,因为与安装程序捆绑在一起的组件可能不是最新组件。 - -{% include info title="注意" content="根据您的网络设置情况,有时可能即使无法访问更新,也会一直尝试联机查找更新。 -在这种情况下,您可以将环境变量 `SHOTGUN_DISABLE_APPSTORE_ACCESS` 设置为 `\"1\"` 以阻止其尝试查找更新。" %} - -{% include info title="注意" content="您仍然需要能够连接到 ShotGrid 站点。 我们所说的离线是指无法连接到我们的应用商店来下载更新。" %} - -### 管理更新 - -要更新 `tk-framework-desktopstartup` 组件,您需要[下载最新版本](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases),并将环境变量 `SGTK_DESKTOP_STARTUP_LOCATION` 设置为指向其在磁盘上的位置(这仅适用于 {% include product %} Desktop)。 - -对于 `tk-config-basic` 组件,由于它的所有依存项,情况有点棘手。 - -1. 在连接到 Internet 的工作站上运行 {% include product %} Desktop 或 {% include product %} Create。 当它启动时,将会自动下载最新升级。(确保未在此计算机上设置 `SHOTGUN_DISABLE_APPSTORE_ACCESS`。) -2. 将缓存复制到所有计算机都可以访问的共享位置。 -3. 在离线计算机上设置 `SHOTGUN_BUNDLE_CACHE_FALLBACK_PATHS` 环境变量以指向此位置。 -4. 在离线计算机上启动 {% include product %} Desktop 或 {% include product %} Create 后,它们将选取缓存中可用的最新升级。 - -{% include info title="警告" content="根据您的网络设置情况,有时可能即使无法访问更新,也会一直尝试联机查找更新。 -在这种情况下,您可以将环境变量 `SHOTGUN_DISABLE_APPSTORE_ACCESS` 设置为 `\"1\"` 以阻止其尝试查找更新。" %} - -## 禁用自动更新 - -### 在项目级别或站点级别禁用更新 - -{% include info title="注意" content="如果可能,我们建议您继续允许自动更新,以免错过新功能和错误修复。" %} - -要对集成禁用自动更新,请按照以下步骤操作。 - -1. 确定要使用的版本。您可以在[此处](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)查找集成版本。 -2. 在 {% include product %} 中,在项目或全局页面上创建工作流配置实体,并填充以下字段(在此示例中,我们将配置锁定为使用集成 v1.0.36): - - 1. 名称(Name):`Primary` - 2. 项目(Project):如果希望对所有项目禁用更新,请保留为空;如果仅希望锁定单个项目,请选取特定项目。 - 3. 插件 ID(Plugin ids):`basic.*` - 4. 描述符(Descriptor):`sgtk:descriptor:app_store?name=tk-config-basic&version=v1.0.36` - - ![工作流配置实体(包含已禁用更新的项目的设置)。](images/offline-and-disabled-auto-updates/freeze-all-projects.jpg) -3. 启动 {% include product %} Desktop,如果将“项目”(Project)字段留空,则 {% include product %} Desktop 将切换为使用此版本(如果尚未使用此版本)。 - - ![{% include product %} Desktop 的“关于”(About)](images/offline-and-disabled-auto-updates/shotgun-desktop-about.png) - - 如果设置项目,则只有该项目会受到影响,您在 {% include product %} Desktop 的“关于”(About)窗口中看不到变化。 -4. [可选] 要锁定 `tk-framework-desktopstartup` 的版本,您需要[下载最新版本](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases),并将环境变量 `SGTK_DESKTOP_STARTUP_LOCATION` 设置为指向其在磁盘上的位置(这仅适用于 {% include product %} Desktop)。 - -大部分功能由配置控制(这可以按上述步骤锁定),但是,如“哪些部分会自动更新?”部分中所述,组件也会更新,并且与配置分开处理。这也仅适用于 {% include product %} Desktop。 - -#### 补充知识 - -- 您无需手动下载配置版本,{% include product %} Desktop 会在启动或您进入项目时予以处理。 -- `basic.*` 表示基本配置中的所有插件都将选取此覆盖。例如,如果您想要仅冻结 Nuke 和 Maya 集成,可以指定 `basic.maya` 和 `basic.nuke`。 -- 要进行测试,您可以创建此工作流配置实体的副本,并将您的用户名添加到 `User Restrictions` 字段中。这将限制该实体,使其仅可供您使用,而不会影响其他用户。然后,您可以从此配置副本启动 Maya 或某些其他软件,并确认它运行的是预期的集成版本。 -- 将“项目”(Project)字段留空就是我们所说的站点配置。{% include product %} Desktop 使用站点配置,因为它在项目外运行。 在 {% include product %} Desktop 中选择项目时,它也会加载项目配置。 - -- Flame 集成的命名空间为 `basic.flame`,从表面上看应该包含在 `basic.*` 中。 - 但实际上 Flame 集成并不包含在基本配置中。因此,如果您在某个项目中使用 Flame,然后执行此覆盖,则 Flame 集成将停止工作。 - 解决方案是专门为 Flame 创建另一个工作流配置覆盖: - - 配置名称(Config Name):`Primary` - - 项目(Project):要锁定的项目(如果要锁定所有项目,则为空) - - 插件 ID(Plugin ids):`basic.flame` - - 描述符(Descriptor):`sgtk:descriptor:app_store?name=tk-config-flameplugin` - -### 针对除一个项目以外的其他所有项目禁用更新 - -如果您已经对上述示例中提到的所有项目禁用了更新,但希望对特定项目启用更新 -您可以 - -1. 如上一部分中所述,对站点禁用更新。 -2. 使用以下字段值配置例外项目的工作流配置实体: - - 配置名称(Config Name):`Primary` - - 项目(Project):不希望锁定的项目 - - 插件 ID(Plugin ids):`basic.*` - - 描述符(Descriptor):`sgtk:descriptor:app_store?name=tk-config-basic` - ![两个工作流配置,一个对整个站点禁用更新,另一个对单个项目启用更新](images/offline-and-disabled-auto-updates/freeze-all-but-one-project.jpg) - 在“描述符”(Descriptor)字段中忽略版本号后,项目现在将跟踪基本配置的最新版本。 - -### 升级 - -在更新配置时,您可能希望先测试更新版本,然后再将其推给所有用户。 - -1. 通过右键单击并选择**“复制选定项”(Duplicate Selected)**,在 {% include product %} 中复制工作流配置实体。 -2. 将克隆的配置命名为“update test”,并在“用户限制”(User Restrictions)字段中指定您自己。 -3. 现在,您将开始使用此工作流配置。 -4. 将“描述符”(Descriptor)更改为指向要测试的版本。 -4. 您可以根据需要在 `User Restrictions` 字段中添加用户以邀请他们参与测试。 -5. 对测试满意后,只需将主工作流配置更新为使用该版本即可。 -6. 用户重新启动 {% include product %} Desktop 并在 {% include product %} 集成运行的情况下重新启动当前打开的任何软件后,将会立即获取更新。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/other-integrations.md b/docs/zh_CN/guides/pipeline-integrations/administration/other-integrations.md deleted file mode 100644 index a52e7f99e..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/other-integrations.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: 其他集成 -pagename: other-integrations -lang: zh_CN ---- - -# 其他集成 - -借助 {% include product %} 的 API,您可以集成许多第三方软件包。但是,{% include product %} 本身已经集成了一些软件包。 - -## cineSync - -cineSync 允许您在多个位置之间同时进行同步播放。{% include product %} 的集成允许您创建版本的播放列表,在 cineSync 中播放它,以及将您在会话期间所做的注释直接发送回 {% include product %}。 - -有关详细信息,请参见 [http://www.cinesync.com/manual/latest](http://www.cinesync.com/manual/latest/)。 - -## Deadline - -{% include product %}+Deadline 集成允许您自动将包含缩略图、指向帧的链接和其他元数据的渲染版本提交到 {% include product %}。 - -有关详细信息,请参见 [https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html](https://docs.thinkboxsoftware.com/products/deadline/5.2/User%20Manual/manual/shotgunevent.html)。 - -## Rush - -与 Deadline 集成很像,{% include product %}+Rush 集成允许您自动将包含缩略图、指向帧的链接和其他元数据的渲染版本提交到 {% include product %}。 - -有关详细信息,请参见 [http://seriss.com/rush-current/index.html](http://seriss.com/rush-current/index.html)。 - -## Subversion (SVN) - -{% include product %} 简单而灵活的集成(我们在内部使用),让我们可以跟踪修订并将其链接至 {% include product %} 中的工单和发布版本。我们还提供了指向 Trac 的链接以与外部 Web SVN 库查看器集成。 操作方法为:向 SVN 添加一个发布-提交挂钩,这是一个 {% include product %} API 脚本,用于从提交中获取某些环境变量,然后在 {% include product %} 中创建一个修订实体,并在其中填充各种字段。可以对其进行修改以满足您的工作室的需求,由于它仅使用 API,因此可以用于本地或托管安装。有关详细信息,请参见 [https://subversion.apache.org/docs](https://subversion.apache.org/docs/)。 diff --git a/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md b/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md deleted file mode 100644 index 0c6b17488..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/administration/toolkit-overview.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -layout: default -title: Toolkit 概述 -pagename: toolkit-overview -lang: zh_CN ---- - -# Toolkit 概述 - -![](https://sg-toolkit.s3.amazonaws.com/tank/docs/docs/10/no_version_0330_043251/icon_256.png) - -# 简要介绍 {% include product %} Pipeline Toolkit 中的各种概念。 - -在本文中,我们将详细介绍各种主要概念,其中包括:应用和插件的工作方式、Toolkit 如何启动和管理当前上下文(工作区)、如何在磁盘上创建文件夹等。我们建议参与配置或开发的所有人都从此处开始。 - -_请注意,本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 [{% include product %} 集成管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。_ - -# 简介 - -本文档将更深入地为您讲解一些主要功能。通过讲解、示例和简短的演示,我们将带您全面了解 Toolkit。如果您想熟悉 Toolkit,或者想了解 Toolkit 如何为您的工作室带来价值,从本文档开始是个不错的选择。读完本文档后,您将很好地掌握一些主要概念以及它们在实践中的应用。 - -![](images/toolkit-overview/overview.png) - -下面是 Toolkit (SGTK) 的简要说明: - -- Toolkit 是一个基于 {% include product %} 平台的 _工作流工具包_ ,通过它可以更轻松地为工作室编写和安装各种工具。 -- Toolkit 基于文件系统 - 它可以帮助您组织管理各种内容在磁盘上的存储,让磁盘内容井井有条。 -- Toolkit 是得力的助手 - 它并不会试图接管您工作流中的数据或对它们进行抽象,而是为艺术家提供强大的工具,帮助他们更轻松地查找信息和避免错误。 -- Toolkit 通过将所有发布存储在 {% include product %} 中来帮助您共享工作。Toolkit 使您可以在制作过程中轻松共享更新和正在进行的工作。 - -在接下来的部分中,我们将深入了解 Toolkit 以及它的工作方式。 - -# 项目和配置 - -在 Toolkit 中,一切都以项目为中心。项目通常从 {% include product %} 内开始生命周期,经过投标和前期制作阶段,然后,为内容创建阶段做好准备后,即可将 Toolkit 用于该项目。 - -![](images/toolkit-overview/new_project.png) - -在设置新项目时,您需要使用 _模板配置_。这是一个预定义配置,其中包含插件和应用、文件系统配置和其他设置。如果您是刚刚开始接触 Toolkit,可以先使用我们的示例配置,以此为出发点开始探索。如果您已在另一个项目中使用 Toolkit,建议以那个项目的配置为基础开始新项目。这样,您将逐步形成并发展出一个工作室配置,然后针对每个新项目优化该配置。当然,也可以单独维护一个工作室配置,将它用作所有新项目的模板。 - -每个配置都定义了一些 _“存储点”_。对于标准示例配置 `tk-config-default`,我们定义了一个称为 _“primary”_ 的存储点。 这意味着您的所有制作数据将位于一个文件系统项目根目录下。您也可以设置具有多个文件系统根目录的配置。我们将这类配置称为 _“多存储配置”_。例如,当您为渲染和剪辑等内容分别设置了单独的存储时,就需要使用多存储配置。每个存储点在 {% include product %} 中需要以 _本地文件存储_ 的形式存在 - 您可以在“站点偏好设置”(Site Preferences)中的 _“文件管理”(File Management)_ 选项卡下设置这些。 - -Toolkit 会将实际项目配置安装在您喜欢的任意位置。通常,这将转到磁盘上的 _软件安装_ 区域,而不是项目数据区域本身。 - -## 逐步发展您的工作室配置 - -设置新项目时,您可以使用现有项目作为基础。Toolkit 会将该项目的配置文件夹复制到您的新项目。这意味着,新项目将获得与它基于的项目完全相同的应用和插件版本、相同的设置和相同的自定义。如果您想逐步 _发展完善自己的工作流_ ,并利用现有制作中所做的改进和调整,此功能非常有用。 - -或者,如果您对某个项目的设置满意,也可以直接选择该项目的配置文件夹,将它另存到别处的某个集中位置。随后可以将此配置用作工作室模板,每次创建新项目时以此配置为基础。如果需要,您甚至可以使用诸如 Git 等修订控制系统控制此工作室模板配置的源代码,并能简单、透明地跟踪工作流配置模板如何随时间逐步完善。每当您想要更新模板时,只需复制一个项目的配置并提交更改即可。 - -有关配置管理的详细信息,请查看我们的详细文档: - -[管理您的项目配置。](https://developer.shotgridsoftware.com/zh_CN/60762324/) - -## 每个项目各有一个工作流配置 - -每当您为项目设置 Toolkit 时,都会创建一个工作流配置。此配置包含项目需要的所有设置和文件。配置有一个专用的 `tank` 命令,当您想直接处理该项目时,可以在 Shell 中运行此命令(另外还有一个适用于所有项目的全局 tank 命令)。在 {% include product %} 中,工作流配置已注册为一个特殊的工作流配置实体,以易于跟踪项目配置在磁盘上的位置。 - -除了设置项目时创建的主配置外,您还可以为项目创建另外的配置。当您想更改配置但又不想影响项目的所有用户时,这种做法通常很有用。要创建另外的配置,可以在 {% include product %} 中导航到一个工作流配置,单击鼠标右键并选择克隆该配置即可。这将会基于另一个工作流配置为项目创建一个新配置。使用这个新配置,您可以在不影响其他用户的情况下安全地测试新应用。 - -请注意,项目的主配置需要命名为 `Primary`。如果您重命名、修改或删除主配置,项目可能无法正常工作。存储在 {% include product %} 中的工作流配置不是手动操纵的,而是通过各种特定的 `tank` 管理命令来操纵。 - -示例: - -[如何克隆配置](https://developer.shotgridsoftware.com/zh_CN/60762324/#cloning-your-configuration) - -## 检查更新 - -与其他应用商店类似,Toolkit 应用商店会经常发布新版本的应用和插件。这些新版本可能包含重要的错误修复或有趣的新功能。升级应用和插件并不是强制性的要求。这个过程通常很快,升级脚本在进行任何更改前都会提示您。同样,如果您意外安装了不满意的版本,回退也很简单直接。 - -一个命令控制整个升级过程。只需运行位于项目配置文件夹中的 `tank` 命令,并添加 `updates` 参数: - -```shell -/software/shotgun/bug_buck_bunny/tank updates -``` - -运行此命令时,如果不添加任何参数,将检查所有环境、插件和应用。这可能需要花费很长时间,但您也可以对一部分已安装的应用和插件运行更新程序。 - -一般语法: - -```shell -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` - -除了检查应用商店,此脚本还会检查其他所有注册的位置。因此,它可能会查询您本地的 Git、GitHub 库、磁盘上的文件和应用商店,具体取决于各个应用的部署位置。 - -请注意,新版本的应用可能会引入应用配置方面的更改。例如,某项新功能可能会需要新的配置参数。这种情况下,`tank` 升级脚本会提示您键入这些参数的值。 - -## 检查核心 API 的更新 - -有时,我们会发布新版本的 Toolkit 核心 API。有一个单独的命令用来更新核心 API。在本例中,该命令为 `tank core`。 - -# 在磁盘上创建文件夹 - -为项目设置 Toolkit 后,可以使用它帮助您创建一致的文件夹结构。可以通过在磁盘上的工作流配置中创建文件系统模板,来配置此文件夹结构。在此文件夹结构中,某些路径是动态路径。例如,您可以用一个名为 `asset` 的文件夹来表示 {% include product %} 资产实体。这些动态文件夹可以与 {% include product %} 查询和许多其他对象相连。 - -![](images/toolkit-overview/folder_creation.png) - -Toolkit 提供多种不同类型的动态文件夹,用来应对不同的设置和情况。设置文件夹创建方式时,您可以使用标准 {% include product %} API 查询语法。您可以组织文件系统,将不同类型的资产归入文件系统上的不同文件夹。 - -有关如何操作的详细介绍,请参见管理员手册: - -[管理 {% include product %} Pipeline Toolkit](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) - -Toolkit 的文件夹创建操作分为两个过程 - 一个是直接过程,任何人在任何时间都可以运行;另一个是延迟过程,通常由艺术家在应用程序临启动前运行。延迟过程完全自动,并可用来设置应用程序特定的文件夹和用户沙盒。 - -# 当前上下文 - -创建文件系统结构后,Toolkit 会知道磁盘上的文件夹与派生该文件夹的 {% include product %} 对象之间的关系。这一点很重要,因为这样 Toolkit 才能很容易地在发布、加载或解析路径时将 {% include product %} 中的对象与磁盘上的文件夹或文件相关联。另外,它还与我们所说的 _“上下文”_ 或 _“当前工作区”_ 有关。上下文对象是 Toolkit 核心的一部分,可跟踪记录当前正在处理的内容。这是 Toolkit 解析文件系统路径时的一个中心机制。 - -![](images/toolkit-overview/context.png) - -我们可以从任务、资产或镜头等 {% include product %} 对象创建上下文,也可以从磁盘路径创建上下文。应用在运行时始终可以访问上下文,这让构造应用变得很容易,您不需要了解文件系统的命名约定,也不必知道应用是用在资产工作流中还是镜头工作流中。所有这些全部由 Toolkit 核心 API 和上下文处理。 - -# 文件系统模板 - -Toolkit 核心包含一个处理文件路径的系统。我们称之为 _“模板系统”_。由于 Toolkit 基于文件系统,因此每当应用需要在磁盘上读取或写入数据时,都需要解析文件路径。应用对文件系统结构不了解,这意味着它们不知道文件系统的组织结构。模板系统负责为它们处理这一切。 - -在模板系统的核心,有一个 _模板配置文件_。此文件包含项目的所有重要文件系统位置。_模板_ 与下面类似: - -```yaml -maya_shot_publish: 'shots/{Shot}/{Step}/pub/{name}.v{version}.ma' -``` - -模板本质上定义了一个包含一些动态字段的路径。每个字段都可以配置验证和键入内容,例如您可以定义上面模板中的 `{version}` 字段是一个填充三个零的整数(例如 `001`、`012`、`132`)。每当应用需要在磁盘上写入或读取数据时,都会向模板文件中添加一个描述该位置的模板。由于应用通常会构成一个工作流,因此一个应用(例如发布应用)的输出模板往往是另一个应用(例如加载应用)的输入模板。这就是所有文件系统位置都保留在一个文件内的原因。 - -模板 API 让您可以在一系列字段值和路径之间跳转: - -```python -# get a template object from the API ->>> template_obj = sgtk.templates["maya_shot_publish"] - - -# we can use the template object to turn a path into a set of fields... ->>> path = '/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' ->>> fields = template_obj.get_fields(path) - -{'Shot': '001_002', - 'Step': 'comp', - 'name': 'main_scene', - 'version': 3} - -# alternatively, we can take a fields dictionary and make a path ->>> template_obj.apply_fields(fields) -'/projects/bbb/shots/001_002/comp/pub/main_scene.v003.ma' -``` - -请注意,上述路径和模板具有两种不同类型的字段。`Shot` 和 `Step` 字段是高级字段,在 {% include product %} 中具有等效对象(镜头和工作流工序),而 `name` 和 `version` 字段则特定于此特定类型的模板。如果我们想描述一个资产(而非镜头)的发布路径,仍然会有 `name` 和 `version` 字段,因为这是所有发布都需要的,无论数据类型如何。但是,将不会有 `Shot` 和 `Step` 字段。相反,可能会有 `Asset` 和 `Step` 字段,其中的 asset 字段会与 {% include product %} 中的某个资产相关联。 - -在开发用于发布类操作的应用时,很显然我们不想使用单独的应用分别执行镜头发布和资产发布。我们更希望开发一个可以应对任何发布情景的发布应用,无论要发布的是场、镜头、资产还是其他任何内容。 - -![](images/toolkit-overview/templates.png) - -这时就需要用到 _Toolkit 上下文_。Toolkit 上下文让我们可以将模板字段分为两个不同的组;上下文字段(`Shot`、`Step`、`Asset` 等)是我们想确保在应用外部解析的字段 - 这样应用逻辑就不必包含专门用于处理镜头和资产这类概念的代码。应用只需填充与应用的特定 _业务逻辑_ 直接关联的字段。在我们的发布应用示例中,业务逻辑由 `name` 和 `version` 字段组成。因此,如上图所示,Toolkit 会将字段解析分为两个不同阶段:一些字段由上下文填充,另一些字段则由应用内部的业务逻辑填充。这样,应用的设计便可不局限于特定的文件系统布局。我们认为这是构建良好工作流工具的一个重要方面。 - -处理路径解析的应用代码通常如下所示: - -```python -# start with an empty fields dictionary -fields = {} - -# first let the context populate all its fields -fields.update( self.context.as_template_fields( publish_template_obj ) ) -# fields is now {'Shot': '001_002', 'Step': 'comp' } - -# now the app can add its business logic -fields["name"] = "main_scene" -fields["version"] = 234 - -# and finally the app can produce the path it needs in -# order to save out the file -path = publish_template_obj.apply_fields(fields) -``` -有关您可以如何配置和使用模板 API 的更多详细信息,请参见以下内容: - -[文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/) - -[核心 API 参考](https://developer.shotgridsoftware.com/tk-core/core.html#) - -# 选择要运行的插件和应用 - -Toolkit 核心的另一个重要作用是决定 _应向用户显示哪些应用_。如果您在处理角色装配工作并启动了 Maya,可能会需要一套与进行镜头照明工作时不同的应用。此外,应用的配置可能会因您需要的操作方式而异。因此,同一个审核应用,用于装配时可能会生成一个转台,而当动画设计师运行它时,则会使用镜头摄影机播放动画预览。 - -为了实现这种灵活性,Toolkit 项目配置包含一系列 _环境_。一个环境就是一个配置文件,用来定义一套应用和插件,以及它们的所有配置参数。 - -Toolkit 启动时,需要决定对 _哪个_ 环境进行初始化。这通过一段称为 _“挂钩”_ 的 Python 代码来实现,您可以在其中添加自己的业务逻辑。_上下文_ 对象将传递到这段代码中,这通常用于确定要使用哪个环境。 - -![](images/toolkit-overview/environment.png) - -这样,您便可以为工作流的不同环节配置一组单独的应用。此外,您还可以独立更新它们,甚至安排不同的主管分别管理它们。 - -## 默认配置中的环境 - -为了给您一个实际示例来说明环境的工作方式和结构,我们来看一下默认配置随附的环境: - -- `project.yml` - 当上下文仅包含项目时要运行的应用和插件。 -- `shot_and_asset.yml` - 当上下文包含镜头或资产时要运行的应用和插件。 -- `shot_step.yml` - 当上下文包含镜头和工作流工序时要运行的应用和插件。 -- `asset_step.yml` - 当上下文包含资产和工作流工序时要运行的应用和插件。 - -默认配置基于工作流工序来组织其文件系统。这意味着在某个镜头位置下,您可以看到针对建模和装配等的文件夹。实际上,您所执行的每个工作流工序都有一个对应的文件夹。每个文件夹在磁盘上都有自己的工作区和发布区。这意味着发布模板可能如下所示: - -```yaml -maya_shot_publish: 'sequences/{Sequence}/{Shot}/{Step}/pub/{name}.v{version}.ma' -``` - -为了使用此模板,上下文需要同时包含一个实体和一个工作流工序。对于父场 `ABC` 下的镜头 `1122` 和 `Modeling` 这个工作流工序,上面的模板将解析为 `sequences/ABC/1122/Modeling/...`。这意味着,一个包含镜头但不包含工作流工序的上下文并不足以填充上面的模板。您无法为仅镜头上下文启动 Maya,并使用上述模板。为使其正常运行,需要一个工序。 - -这样我们就得出了上面所示的环境细分。由于默认配置中定义的文件系统结构以工序为中心,因此所有主要应用都需要在一个定义了工序的上下文中运行。我们在默认配置中定义了两个这样的环境:`asset_step.yml` 文件和 `shot_step.yml` 文件。每个文件都包含针对多个 DCC(例如 Maya、Nuke、3ds Max、MotionBuilder、Photoshop 等)的插件。当您从 {% include product %} 内的任务启动 Maya 时,选取环境挂钩将选择 `shot_step` 环境,启动 Maya 并加载 Maya 应用配置。 - -有时候,直接从 {% include product %} 内的镜头对象启动 Maya 也是有用的。更重要的是,能在控制台中键入 `tank Shot 1122 launch_maya` 真的是一项非常实用的功能。这时就需要用到 `shot` 和 `asset` 环境。当您为 Maya 加载一个包含镜头或资产但不包含工作流工序的上下文时,它将会加载其中一个环境。由于文件系统结构都是按工作流工序组织的,因此如果我们的上下文中缺少该信息,实际上不能进行任何加载或发布。Maya 会使用一个空配置启动,其中仅包含 _Workfiles_ 应用。此应用用于选择要处理的任务。选取任务后,Toolkit 会为您切换上下文并重新启动插件,还会为 `shot_step` 环境加载全套应用。 - -同样,`project` 环境是一个适合所有情况的备选方案,它也只包含 _Workfiles_ 应用。这使您几乎可以从项目内的任何地方启动 Maya,它会对 Toolkit 进行最小程度的初始化,让您可以使用 _Workfiles_ 应用跳转到有效的工作区。 - -# 配置应用 - -每个应用都有一些需要指定的配置参数。当您安装或升级某个应用时,Toolkit 会确保您指定了所有必需的设置。 - -简单的设置值(如字符串或整数值)直接在环境配置中指定。各个模板是不同的,由于 Toolkit 要将所有模板保存在一处,因此环境文件只是指向模板文件中定义的模板。每个应用在其配置中使用的模板需要的字段各不相同。在前面的示例中,发布应用在磁盘上创建输出文件时,使用一个包含 `name` 和 `version` 字段的模板。因此,该应用的一项配置设置需要使用包含 `name` 和 `version` 字段的模板。 - -![](images/toolkit-overview/app_config.png) - -如果您配置应用时尝试使用的模板包含比 `name` 和 `version` 上下文字段更多的字段,应用将不知道如何填充这些额外的字段,也无法根据该模板生成路径。同样,如果您提供的模板缺少其中某个字段,会导致结果混淆。在我们的示例中,将不会为应用写出版本号。因此,Toolkit 会在启动时验证配置,确保您为所有模板提供了必要的字段。Toolkit 还支持几种使用默认值和可选字段的方式。 - -有关完整参考,请查看以下链接: - -[应用和插件配置参考](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/) - -[文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/) - -## 挂钩 - -除了使用模板的应用设置外,Toolkit 还支持称为 _挂钩_ 的概念。挂钩是小段的 Python 代码片段,让您可以在配置中自定义应用的各个部分。 - -下面我们来介绍它是如何工作的,以及为什么它非常有用。 - -应用之所以强大,是因为它们可以在多个插件和项目中重复使用。但是,应用往往需要一些特定于插件逻辑的小段代码。例如,如果我们要构建一个可同时在 Nuke 和 Maya 中运行的加载器应用,就需要有处理 _实际文件加载_ 操作的代码,而这些代码在 Nuke 和 Maya 中必然是不同的。不仅如此,我们还希望此应用最好能用于任何插件!不同工作室向场景中加载内容项的方式也有所不同,有些工作室可能需要支持自定义的 Maya 引用节点,有些则只要执行导入即可。 - -在 Toolkit 中,这种情况可以使用 _挂钩_ 来解决。挂钩是一段可自定义的代码。应用随附一个默认挂钩,其中包含一个基础执行,这意味着应用可以开箱即用。但是,如果您想自定义行为,可以将默认挂钩文件复制到您的配置中,Toolkit 会改为使用该代码。 - -[阅读《管理员手册》了解有关使用挂钩的详细信息。](https://developer.shotgridsoftware.com/zh_CN/425b1da4/#hooks) - -# 从 {% include product %} 和 Shell 运行 - -安装 Toolkit 之后,您可以从几个主要的入口点访问它: - -- {% include product %} 内的右键单击菜单上将显示 {% include product %} 动作 -- {% include product %} Desktop 应用中的项目将显示启动图标 -- 您可以在控制台中使用 `tank` 命令。 -- 在应用程序内和 Shell 中均可使用 Toolkit 的 Python API。 - -从 {% include product %} 内运行 Toolkit 是一种启动应用程序和执行任务的常见方式。{% include product %} 将使用 {% include product %} Desktop 与计算机本地安装的 Toolkit 进行通信,并使用本地 Python 执行 Toolkit 命令。这意味着您可以直接从 {% include product %} 内运行创建文件夹等本地操作。 - -您还可以从 Shell 访问 Toolkit。每个项目配置随附属于自己的 `tank` 命令。您只需导航到项目配置的根目录,在其中执行 `./tank` 命令即可。 - -最后,您可以直接将 Toolkit API 添加到 `PYTHONPATH` 环境变量,然后将其导入。使用 API 非常简单直接。如果您想在 Maya 内手动启动 Toolkit,或者想将它作为现有工作室启动系统的一部分,那么可以不使用 {% include product %} Desktop,只需执行几个简单的命令即可。 - -# 正在发布 - -当您想与其他人共享自己正在处理的文件时,可以发布这些文件。这意味着将在 {% include product %} 中创建一个 `PublishedFile` 实体,其他用户可以使用 Toolkit 的加载器应用导入该实体。 - -![](images/toolkit-overview/dependencies.png) - -这种做法对于数据管理(数据在磁盘上的存储位置、文件包含的内容等)到底意味着什么,交给处理实际工作的应用去考虑。Toolkit API 为开发人员提供了各种方法,让他们可以轻松在 {% include product %} 内创建发布,并将这些发布链接到正确的对象,以确保 {% include product %} 可以直接将通知推送给所有合适的人员。我们还提供一个默认的发布应用,它不仅功能灵活多样,而且可配置程度很高,但这并不是使用 Toolkit 执行版本控制的唯一途径。因为 Toolkit 可扩展,所以如果需要,您可以使用 Toolkit 打造自己的自定义版本控制和发布系统。 - -但是一开始,建议您使用我们的发布应用: - -[默认的 Multi Publish 应用。](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -# 构建可重用的应用 - -Toolkit 不止是一套应用和插件。它还是一个框架,您可以用它开发自己的工具和技术!我们已在 Toolkit 中包含了大量功能,将它打造成一个功能丰富的工作室开发平台。有了 Toolkit 作为基础,您可以专注于解决手中的问题,而不必花费精力自己构建基础平台。我们努力让开发人员可以在不意外打断艺术家工作流的前提下轻松构建、评估和发布软件。 - -- 插件将确保无论底层基础是什么,开发人员都可以使用 Python 和 Qt (PySide/PySide2) 编写应用。这意味着,有些插件非常简单,而有些插件较为复杂,具体取决于其提供的 API。因此,工作室有一种直观、一致的方式来开发工具。根据我们的经验,Python 和 Qt 是工作室常用的开发环境,许多技术总监都熟悉它们。 -- 插件层还有一个好处,那就是应用只需编写一次,便可在多种环境中部署。我们将开发的标准应用套件称为 _多应用_ ,意思是同一个应用适用于所有插件。当然,难免会有些特定的代码需要定制后才能用于每个 DCC 应用程序公开的特定 API,但是这些代码通常包含在一个或多个挂钩中,这让重用应用变得很简单。能够创建这种多应用的另一个好处是,在开发新插件的过程中,很容易就可以配置所有标准应用来支持新插件。 -- 通过工作流配置和克隆,我们可以轻松创建开发沙盒,让开发人员能够在制作环境中工作,同时又不会干扰日常的制作活动。工具做好部署准备后,轻松即可更新主项目配置,然后将工具部署给所有艺术家。 -- 应用在插件内运行,因此重新加载很容易。不必每次测试新的代码更改时都重新启动 Nuke 或 Maya,只需单击 Toolkit 中的重新加载按钮,即可加载最新代码。 - -有关应用开发方面的更详尽介绍,请参见以下文档: - -[Toolkit 应用开发简介。](https://developer.shotgridsoftware.com/zh_CN/2e5ed7bb/) - -[Toolkit API 参考](https://developer.shotgridsoftware.com/tk-core/) - -[应用和插件配置参考](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/) diff --git a/docs/zh_CN/guides/pipeline-integrations/development.md b/docs/zh_CN/guides/pipeline-integrations/development.md deleted file mode 100644 index 8fc77c525..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 开发 -pagename: toolkit-development -lang: zh_CN ---- - -# 开发 - -## 什么是 Toolkit? - -Toolkit 是用于支持我们的工作流集成的平台。例如,如果您在 Maya 中使用 {% include product %} 面板应用或从 {% include product %} Create 启动发布应用,您就是在使用基于 Toolkit 平台构建的工具。 - -## 如何使用 Toolkit 进行开发? - -使用 Toolkit 进行开发的方式有很多。 - -- 编写自定义代码(我们称之为挂钩)来扩展现有应用、插件或框架行为。 -- 编写自己的应用、插件或框架。 -- 或编写自己的独立脚本,在脚本中利用 API。 - -无论采用哪种方式,了解如何使用 Toolkit API 都非常重要。 - -{% include product %} 整体包含三个主要 API -- [{% 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) - -Toolkit API 是一种 Python API,它设计为与 {% include product %} Python API 或 REST API 一起使用,并不是用于替代它们。 -尽管 Toolkit API 确实有一些封装器方法,但通常情况下,只要您需要从 {% include product %} 站点访问数据,就要改用 {% include product %} Python 或 REST API。 - -Toolkit API 主要用于文件路径的集成和管理。一些 Toolkit 应用和框架还[有自己的 API](../../reference/pipeline-integrations.md)。 - -这些文章将指导您使用 Toolkit 进行开发。 \ No newline at end of file diff --git a/docs/zh_CN/guides/pipeline-integrations/development/images/dev-configuration.png b/docs/zh_CN/guides/pipeline-integrations/development/images/dev-configuration.png deleted file mode 100644 index 62864d7a8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/development/images/dev-configuration.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/development/images/develop.png b/docs/zh_CN/guides/pipeline-integrations/development/images/develop.png deleted file mode 100644 index a27dc9e52..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/development/images/develop.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/development/images/reload-restart.png b/docs/zh_CN/guides/pipeline-integrations/development/images/reload-restart.png deleted file mode 100644 index 8b3dbf12a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/development/images/reload-restart.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/development/images/starter-app.png b/docs/zh_CN/guides/pipeline-integrations/development/images/starter-app.png deleted file mode 100644 index b9293c8ae..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/development/images/starter-app.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png b/docs/zh_CN/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png deleted file mode 100644 index f8b353863..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/development/images/tk-multi-starterapp-directory.png and /dev/null differ 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 deleted file mode 100644 index 497947cdb..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-app.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -layout: default -title: 开发应用 -pagename: sgtk-developer-app -lang: zh_CN ---- - -# 开发自己的应用 - -## 简介 - -本手册概述了什么是 Toolkit 应用,说明了如何创建应用,并介绍了有关应用开发的一些基础知识。{% include product %} Pipeline Toolkit 不仅是 {% include product %} Software 维护的一套应用和插件,还是一个可用来轻松快速构建自定义工作流工具的开发平台! - -- [什么是 Toolkit 应用?](#what-is-a-toolkit-app) -- [创建自己的应用](#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) -4. [开发应用](#part-4-developing-the-app) - - [模板入门应用剖析](#anatomy-of-the-template-starter-app) - - [配置设置](#configuration-settings) - - [框架](#frameworks) - - [重新加载更改](#reloading-your-changes) -5. [测试](#part-5-testing) -6. [准备第一个版本发布](#part-6-preparing-your-first-release) - -附加信息: -- [修改现有应用](#modifying-an-existing-app) - - [贡献](#contributing) - -## 什么是 Toolkit 应用? - -Toolkit 应用可定义如下: - -- 通常由最终用户使用 {% include product %} 集成运行的工具。 -- 这些应用通常具有图形用户界面,用户可以使用该界面来指导应用的操作,但这不是必需的。应用也可以是向集成注册的命令,由用户从宿主软件中的 {% include product %} 菜单触发。 -- 它们可以包含 API/公共方法,其他流程或应用可以通过这些方法进行交互。 -- 它们可以支持多平台且与软件无关。 -- 可以将它们设置为根据[环境](https://developer.shotgridsoftware.com/zh_CN/487a9f2c/#what-is-an-environment)进行不同配置。 -- 它们可以支持上下文感知。例如,应用可以识别用户正在处理的任务,并执行相应的动作。 -- 只能从 Toolkit 插件运行它们。 - -Toolkit 应用由 Toolkit 插件初始化。[插件](https://developer.shotgridsoftware.com/tk-core/platform.html#engines)设计为在特定软件环境中运行,它们在其中提供用于运行 Toolkit 应用的界面。插件消除了需要从应用处理各种软件环境的复杂性。这意味着,应用只需专注于提供实现其用途的功能,无需考虑其他方面,例如,处理窗口父子关系、跟踪用户的上下文或提供用于启动本身的快捷方式。 - -## 创建自己的应用。 -{% include product %} 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) - -要使用它,您可以 Fork Git 库,然后将其克隆到磁盘上的本地开发区域;或者如果您不想在此阶段使用 Git 源代码管理工具,只需以 zip 文件形式从 GitHub 下载文件,并在本地解压缩(以后随时可以设置 Git 库)。无论哪种情况,目标都是获得入门应用代码的本地副本,以便可以开始进行更改。 - -## 第 3 部分:将应用添加到配置 -建议阅读“[添加应用](../getting-started/installing_app.md)”手册,此手册详细介绍了如何将应用添加到配置。 - -在将应用添加到配置时,需要考虑应用的使用位置,即,可能只在 Nuke 中、在多个不同的软件中或与 {% include product %} Desktop 分开单独使用。 - -此外,还需要考虑应用将依赖的上下文。 -例如,您的应用仅在您知道用户正在处理的任务时才能运行,还是只要知道项目就可以运行? -了解这一点将决定需要向哪些环境 YAML 和插件添加应用设置。 - -如果您现在不确定,建议先将其添加到项目环境中的 `tk-shell` 插件。 -这样,您就可以[从 IDE 运行它](./sgtk-developer-bootstrapping.md),或者通过命令行使用 tank 命令运行它(如果您有[集中式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations))。从而可以更快地进行开发。 - -首先,使用 [dev 描述符](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)设置应用位置。 - -```yaml -tk-multi-starterapp: - location: - type: dev - path: /path/to/source_code/tk-multi-starterapp -``` -此设置指示 Toolkit 直接从磁盘的给定位置加载应用代码,对于需要不停更改代码的开发工作来说,这种做法非常方便。 -以后,当您将应用添加到制作配置时,可能希望使用其他描述符。 - -现在,您已将应用添加到环境中;您应该能够继续操作并启动它。应用的启动方式取决于在其中定义它的插件和环境。 - -## 第 4 部分:开发应用 - -现在,您已准备好开始开发您的应用! - -### 模板入门应用剖析 - -[模板入门应用](https://github.com/shotgunsoftware/tk-multi-starterapp)包含以下基本结构: - -![](./images/tk-multi-starterapp-directory.png) - -- **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`。 -- **style.qss** - 您可以在此文件中定义 UI 的 QSS(Qt 样式表)。 - -{% 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 -``` -为此创建设置意味着您不必在应用代码中对模板名称进行硬编码,而是可以从 `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)。 - -### 框架 - -如果您知道将要使用框架,可以将其添加到清单文件中。 - -例如,如果您计划为应用使用 Qt 控件和 {% include product %} 实用程序框架,请将以下内容添加到 `info.yml` 中: - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x"} -``` - -#### 框架版本最低要求 -如果框架具有最低版本要求,可以在 `info.yml` 中使用 minimum_version 设置: - -```python -# the frameworks required to run this app -frameworks: - - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"} - - {"name": "tk-framework-qtwidgets", "version": "v1.x.x", "minimum_version": "v1.5.0"} -``` - -上面的代码将确保应用可以使用 `v1.5.0` 版本的 `tk-framework-qtwidgets`。 -如果这个版本不可用,应用将不会在启动时加载,并在控制台显示错误。 -当使用 `tank updates` 更新应用时,所有不符合最低版本要求的已配置框架都将随应用一起自动更新。 - -有关框架及其用途的详细信息,请参见以下链接: - -- [Qt 控件框架](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/) -- [{% include product %} 实用程序框架](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/) - -### 重新加载更改 - -如果您在 Maya 等软件中测试应用,那么只要您的配置中有一个或多个开发项,Toolkit 就会自动将**“Reload and Restart”**选项添加到 {% include product %} 菜单中。![{% include product %} 菜单中的“Reload and Restart”选项](./images/reload-restart.png) - -单击此选项将重新加载配置和代码,然后重新启动插件。这意味着您可以快速进行迭代:只需启动 Maya 一次,之后每次做出所需的代码或配置更改时,只需单击**“Reload and Restart”**按钮,即可调入这些更改。 - -{% include info title="注意" content="如果屏幕上有任何 UI 处于激活状态,这些 UI 不会自动更新,您必须进入菜单重新启动它们。"%} - -## 第 5 部分:测试 -当您想要测试代码时,可以轻松邀请其他用户访问您的开发沙盒,方法是将他们添加到 {% include product %} 中 `PipelineConfiguration` 实体的 `User Restrictions` 字段中。 - -添加用户后,他们随即就会在 {% include product %} Create 中自己的菜单和浏览器动作中看到新条目,以及一个用于在 {% include product %} Desktop 中选取配置的选项。 - -![{% include product %} Desktop 中的可选择开发配置](./images/dev-configuration.png) - -{% include info title="注意" content="确保他们也有权查看您的应用代码,否则应用将不会加载。" %} - -## 第 6 部分:准备第一个版本发布 - -在[第 3 部分](#part-3---adding-the-app-to-your-config)中,已使用 dev 描述符将配置设置为指向应用。对于发布的软件,您希望确保应用可供所有用户访问,并且对内容进行版本控制,以便安全、轻松地升级。 - -{% include product %} 提供的所有应用均使用 Toolkit 应用商店跟踪更新和版本发布,它们带有一个类似如下的 location 标记: - -```yaml -location: - name: tk-multi-setframerange - type: app_store - version: v0.1.7 -``` -通过该标记,Toolkit(例如 `tank updates` 命令)可以检查更新何时可用,并以一种非常安全的方式更新和维护配置。 -每当运行更新命令以及有新版本可用时,Toolkit 都会下载代码,将其放在磁盘上的一个本地“缓存”中,并确保用户可以访问它。 - -有几个不同的选项可用于为应用版本提供来源。 - -- [Git](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-tags-in-git) 和 [GitHub](https://developer.shotgridsoftware.com/tk-core/descriptor.html#tracking-against-releases-on-github) -- [{% include product %} 上传](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun) -- [本地路径](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk) - -在您的制作配置中,可以添加应用,并转为使用符合您的需求的描述符。 - -### 基于 Git 的描述符 - -我们建议开始使用源代码管理工具以确保跟踪更改,无论您是否要使用 Git 描述符都是如此。 - -Toolkit 支持即时使用 Git (http://git-scm.com/),在对配置运行 `tank updates` 时,它可以检查您的 Git 库中的最新版本,并更新配置,就像使用应用商店描述符一样。 - -此项的要求如下: - -- 您的 Git 库需要仅包含一个应用 -- 您的 Git 库的结构应该与[入门应用库](https://github.com/shotgunsoftware/tk-multi-starterapp)相同。 -- 创建标记时使用[语义版本控制](https://semver.org/lang/zh-CN/)。Toolkit 将使用这些版本号来尝试确定哪个版本是最新版本,版本号遵循 `vX.Y.Z` 约定形式。 - -当您在 Git 中创建好第一个标记后(例如 `v1.0.0`),就可以将配置设置为使用指向您的标记的 Git 描述符。然后,您就可以直接运行 `tank updates`,如果已创建新标记,程序将提示您是否要升级。 -此时,整个工作流便与官方应用商店的流程完全相同。 - -{% 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 才能向您的库认证身份并访问代码。" %} - -## 修改现有应用 -有时,我们并不会使用空白的入门模板从头创建应用,而是需要为现有应用(例如 {% include product %} Software 的某个标准应用)添加一项小功能。 - -处理修改版的应用时,您通常会想要比照源应用,确保定期下载更改和错误修复。 - -当您进行这类开发时,首先是提取父代码,然后应用自己的更改,再将此版本发布到您的工作流中。 -您发布的版本实际上由应用的基础版本和您应用的本地更改组成。 -我们建议您为现有版本号添加版本后缀。 -这种做法非常适合 Toolkit,并且看起来相对直观。 -下面的工作流说明了整个操作: - -- 您对父应用执行 Fork 操作,并创建自己的库。通过 Fork 操作,您获得所有 Git 标记。 - 假定最新的标记名为 `v0.2.12`,主分支基本上与此标记中的内容相同。 -- 您应用自己的更改,并提交至主分支。这时得到的是 `v0.2.12` 加上您的更改。 - 将此版本发布到生产环境时,您需要创建一个标记。将该标记命名为 `v0.2.12.1`,以表示您的代码基于 `v0.2.12`,并且是第一个版本发布。 -- 现在有人发现您的修改中有一个错误。您修复此错误、更新标记并发布 `v0.2.12.2`。 -- 父库中发布了多项重要的错误修复。 - 您将它们下载到您的库。由于父库中发布了若干个版本,最新标记现在为 `v0.2.15`。 - 将您的更改合并到主分支,并进行测试。这时得到的基本上是父应用 `v0.2.15` 与您的更改合并后的结果。更新标记为 `v0.2.15.1`。 - -上面概述的标记方案可保证 Toolkit 更新能够正确工作,并且便于您快速了解 Fork 中每个标记基于哪些代码。 - -### 贡献 -我们欢迎大家提出 Pull 请求!如果您觉得自己的更改对其他人有益,请随时以 Pull 请求的形式反馈给我们。 -我们随后可以将更改合并到应用的主版本中。 -或者,在我们的[路线图页面](https://www.shotgunsoftware.com/roadmap/)上添加有关新想法的建议。 - -如果您开发了完整的应用并愿意与社区共享,请在[论坛](https://community.shotgridsoftware.com/)上告诉大家! 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 deleted file mode 100644 index 63fd4dc95..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-bootstrapping.md +++ /dev/null @@ -1,373 +0,0 @@ ---- -layout: default -title: 引导和运行应用 -pagename: sgtk-developer-bootstrapping -lang: zh_CN ---- - -# 引导和运行应用 - -本手册将指导您完成 Toolkit 插件初始化过程,以便您可以运行自定义代码或启动应用,该过程也称为引导。 - -引导适用于 Toolkit 插件尚未启动而您需要使用 API 的情况。 -例如,您可能有一个处理脚本,它在渲染农场上运行,并且需要利用 Toolkit API 来处理路径和上下文。 -或者,您可能希望能够从您常用的 IDE 运行 Toolkit 应用。 - -{% 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 编程基础知识。 -- 采用高级配置的项目。如果您之前尚未设置配置,可以按照[“配置快速入门”](../getting-started/advanced_config.md)手册进行操作。 - -### 步骤 - -1. [导入 Toolkit API 以便进行引导](#part-1-importing-the-toolkit-api-for-bootstrapping) -2. [日志记录](#part-2-logging) -3. [身份认证](#part-3-authentication) -4. [引导插件](#part-4-bootstrapping-an-engine) -5. [启动应用](#part-5-launching-an-app) -6. [完整脚本](#part-6-the-complete-script) - -## 第 1 部分:导入 Toolkit API 以便进行引导 - -### 应从何处导入 sgtk? - -如果您已按照[“生成路径并发布”](sgtk-developer-generating-path-and-publish.md)手册进行操作,则您已完成导入 `sgtk` 的步骤。 -该手册指出您必须从要使用的项目配置导入 `sgtk` 软件包。 -对于引导,仍是这样,但是,导入哪个初始 `sgtk` 软件包无关紧要,因为任何 Toolkit API 都可以执行引导操作以采用不同的项目配置。 -引导过程会将当前导入的 sgtk 软件包换为新项目配置的 Toolkit API。 - -### 下载独立的 Toolkit 核心 API - -首先,您需要导入 `sgtk` API 软件包,该软件包位于 [`tk-core`](https://github.com/shotgunsoftware/tk-core/tree/v0.18.172/python) 中。 -您可以从现有项目导入一个软件包,但是,这可能不太容易找到。 -建议下载[最新核心 API](https://github.com/shotgunsoftware/tk-core/releases) 的独立副本,该副本将只用于引导。 -应将其存储在方便导入的位置。 -确保添加的路径指向 `tk-core` 文件夹内的 `python` 文件夹,因为这是 `sgtk` 软件包所在的位置。 - -### 代码 - -```python -# If your sgtk package is not located in a location where Python will automatically look -# then add the path to sys.path. -import sys -sys.path.insert(0, "/path/to/tk-core/python") - -import sgtk -``` - -## 第 2 部分:日志记录 - -如果您要通过 IDE 或 Shell 运行此脚本,则很可能希望能够输出日志记录。 -为此,您需要运行 [`LogManager().initialize_custom_handler()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.initialize_custom_handler)。 -您不需要为此目的提供自定义处理程序,因为如果不提供,将会设置基于流的标准日志记录处理程序。 - -(可选)您还可以设置 [`LogManager().global_debug = True`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.log.LogManager.global_debug) 以便获得更详细的输出。 -这意味着,现在将会输出我们或您自己的代码中的任何 `logger.debug()` 调用。 -日志记录可能会影响性能,因此只应在开发时启用调试日志记录,并尝试限制 `logger.info()` 方法调用的数量,以仅输出对在正常操作期间了解状况非常重要的内容。 - -```python -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True -``` - -## 第 3 部分:身份认证 - -在已启动 {% include product %} Toolkit 的环境之外运行使用 Toolkit API 的脚本时,始终需要进行身份认证。 - -因此,要执行引导,需要向 {% include product %} 站点认证 Toolkit API 的身份。 - -您可以使用用户凭据或脚本凭据进行身份认证。 - -- 如果目的是为面向用户的过程(如启动应用或运行需要用户输入的代码)引导,则用户身份认证是最佳方式(这是我们的所有集成的默认工作方式)。 -- 如果您要编写脚本来自动执行某项操作,并且没有用户要进行身份认证,则应使用脚本凭据。 - -身份认证通过 [`{% include product %}Authenticator`](https://developer.shotgridsoftware.com/tk-core/authentication.html?highlight=shotgunauthenticator#sgtk.authentication.ShotgunAuthenticator) 类进行处理。 -下面是用户和脚本身份认证示例。 - -### 用户身份认证 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Optionally you can clear any previously cached sessions. This will force you to enter credentials each time. -authenticator.clear_default_user() - -# The user will be prompted for their username, -# password, and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating an `Sgtk` instance. -sgtk.set_authenticated_user(user) -``` - -### 脚本身份认证 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -## 第 4 部分:引导插件 - -现在,您已为会话认证了 Toolkit API 的身份,可以开始引导过程了。 -您可以在我们的[参考文档](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)中找到大量有关引导 API 的信息。 - -高级别的引导过程基本上会执行以下步骤: - -1. 检索或找到 Toolkit 配置文件夹。 -2. 确保[缓存](../../../quick-answers/administering/where-is-my-cache.md#bundle-cache)中存在配置依存项(如应用和插件)。 - 如果它们不存在,并且它们使用基于远程服务的描述符(如 [`app_store`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#the-shotgun-app-store) 或 [`{% include product %}`](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-at-a-file-attachment-in-shotgun)),则该过程会将其下载到缓存。 -3. 将当前加载的 sgtk 核心换为适合配置的核心。 -4. 初始化插件、应用和框架。 - - -{% include info title="注意" content="通常情况下,引导应处理相应插件成功运行所需的所有事项。 -但是,在某些情况下,插件可能会有不属于引导过程的特定设置要求,必须单独处理。" %} - - -### 引导准备 -要进行引导,必须先创建 [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) 实例。 - -```python -mgr = sgtk.bootstrap.ToolkitManager() -``` - -为使 Toolkit 正常引导,至少需要知道实体、插件 ID 和插件。 -由于[参考文档](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)中介绍了所有可用参数和选项,因此本手册未做全面介绍。 - -#### 插件 ID - -在调用引导方法之前,可以通过向 `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` 环境启动。 -这取决于默认配置行为,[选择的环境](https://developer.shotgridsoftware.com/zh_CN/c73fcb84/#how-toolkit-determines-the-current-environment)通过核心挂钩 [`pick_environment.py`](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.11/core/hooks/pick_environment.py) 进行控制,因此可以更改为根据上下文或其他参数选取不同的环境。 - -您需要以 {% include product %} 实体词典的格式提供实体,必须至少包含类型和 ID: - -```python -task = {"type": "Task", "id": 17264} -engine = mgr.bootstrap_engine("tk-shell", entity=task) -``` - -如果引导到 `Project` 以外的实体类型,则可能需要确保[缓存路径](https://developer.shotgridsoftware.com/zh_CN/cbbf99a4/)同步,否则,在某些情况下(如引导过程尝试解析模板),可能无法加载环境。 -由于在引导之前没有 `Sgtk` 实例,因此您需要告知引导过程在创建 `Sgtk` 实例后、启动插件之前执行同步。 -这可以通过将 [`ToolkitManager.pre_engine_start_callback`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.pre_engine_start_callback) 属性设置为指向自定义方法来实现。 -然后可以在该方法中运行同步: - -```python -def pre_engine_start_callback(ctx): - ''' - Called before the engine is started. - - :param :class:"~sgtk.Context" ctx: Context into - which the engine will be launched. This can also be used - to access the Toolkit instance. - ''' - ctx.sgtk.synchronize_filesystem_structure() - -mgr.pre_engine_start_callback = pre_engine_start_callback -``` - - -#### 配置选择 - -您可以选择明确定义要引导的配置,也可以让引导逻辑[自动检测合适的配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#managing-distributed-configurations)。 -您甚至可以设置回退配置,以在未自动找到配置的情况下使用。 -在本手册中,我们假定您的项目已设置配置,并且将会自动找到它。 - -### 引导 - -设置了所有 [`ToolkitManager`](https://developer.shotgridsoftware.com/tk-core/initializing.html#toolkitmanager) 参数并调用 [`ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 方法后,将立即启动插件,并返回指向插件实例的指针。 - -下面是到目前为止的所有相关代码: - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal. -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing). -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) -``` - -## 第 5 部分:启动应用 - -现在,您已经有了插件实例,接下来就可以开始使用 Toolkit API。 - -在介绍如何启动应用之前,需要指出的是,您可以通过插件获取[当前上下文](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context)、[Sgtk 实例](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk)和 [{% include product %} API 实例](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.shotgun)。 - -```python -engine.context -engine.sgtk -engine.shotgun -``` -虽然本手册的最终目标是介绍如何启动应用,但您可以在此基础之上,利用上述属性并测试一些代码段,或者运行一些利用 Toolkit API 的自动操作。 - -### 启动应用 - -插件启动时,会初始化为环境定义的所有应用。 -这些应用进而向插件注册命令,而且插件通常会将这些命令作为动作显示在菜单中(如果在 Maya 等软件中运行)。 - -#### 查找命令 -要先查看已注册的命令,可以输出 [`Engine.commands`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.commands) 属性: - -```python -# use pprint to give us a nicely formatted output. -import pprint -pprint.pprint(engine.commands.keys()) - ->> ['houdini_fx_17.5.360', - 'nukestudio_11.2v5', - 'nukestudio_11.3v2', - 'after_effects_cc_2019', - 'maya_2019', - 'maya_2018', - 'Jump to Screening Room Web Player', - 'Publish...', -...] -``` - -从该列表可以查看已注册并且可以运行的命令。 - -#### 运行命令 - -命令运行方式因插件而异,因为当前没有标准化方法。 -对于 `tk-shell` 插件,您可以使用便捷方法:`Engine.execute_command()`。 -它需要命令字符串名称(已在前面列出),以及应用的命令预期要传递的参数列表。 - -```python -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...",[]) -``` - -如果不在 `tk-shell` 插件中运行,则可以回退以直接调用已注册的回调。 - -```python -# now find the command we specifically want to execute -app_command = engine.commands.get("Publish...") - -if app_command: - # now run the command, which in this case will launch the Publish app. - app_command["callback"]() -``` - -现在,应用应该已经启动,如果您运行 `tk-shell` 插件,输出应显示在终端/控制台中。 - -## 第 6 部分:完整脚本 - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Initialize the logger so we get output to our terminal -sgtk.LogManager().initialize_custom_handler() -# Set debugging to true so that we get more verbose output, (should only be used for testing) -sgtk.LogManager().global_debug = True - -# Authentication -################ - -# Instantiate the authenticator object. -authenticator = sgtk.authentication.ShotgunAuthenticator() - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Script Name", - api_key="4e48f....", - host="https://yoursite.shotgunstudio.com" -) - -# Tells Toolkit which user to use for connecting to ShotGrid. -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. -mgr = sgtk.bootstrap.ToolkitManager() -mgr.plugin_id = "basic.shell" - -project = {"type": "Project", "id": 176} - -engine = mgr.bootstrap_engine("tk-shell", entity=project) - -# Optionally print out the list of registered commands: -# use pprint to give us a nicely formatted output. -# import pprint -# pprint.pprint(engine.commands.keys()) - -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...",[]) -``` 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 deleted file mode 100644 index e42f55433..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-engine.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: default -title: 开发插件 -pagename: sgtk-developer-engine -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 窗口父子关系设置](#qt-window-parenting) -- [启动行为](#startup-behavior) -- [宿主软件期望具备的特性列表](#host-software-wish-list) - -## 什么是 Toolkit 插件? -开发插件时,您实际上是在宿主软件与插件中加载的各种 Toolkit 应用和框架之间搭建一个连接桥梁。 -通过插件,可以抽象出各个软件之间的不同,从而可以使用 Python 和 Qt 以很大程度上与软件无关的方式编写应用。 - -插件是一系列文件的集合,[结构上与应用相似](sgtk-developer-app.md#anatomy-of-the-template-starter-app)。它具有一个 `engine.py` 文件,而且该文件必须派生自核心 [`Engine` 基类](https://github.com/shotgunsoftware/tk-core/blob/master/python/tank/platform/engine.py)。 -不同的插件根据内部的复杂性,重新执行此基类的各个方面。 -插件通常处理或提供下列服务: - -- 菜单管理。插件启动时,待应用加载完毕后,插件需要创建其 {% include product %} 菜单,并将各种应用添加到此菜单中。 -- 日志记录方法通常会被改写,以便向软件的日志/控制台写入数据。 -- 用于显示 UI 对话框和窗口的方法。如果插件处理 Qt 的方式与默认基类行为不同,通常会改写这些方法,以确保无缝集成 Toolkit 应用启动的窗口和基本宿主软件窗口管理设置。 -- 提供一个 `commands` 词典,其中包含应用注册的所有命令对象。创建菜单项时通常会访问此词典。 -- 基类公开各种 init 和 destroy 方法,这些方法将在启动过程的不同时间点执行。用户可改写这些方法来控制启动和关闭的执行。 -- 启动时由 `tk-multi-launchapp` 调用的启动逻辑以及自动发现软件。 - -插件由 Toolkit 平台使用 [`sgtk.platform.start_engine()`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.start_engine) 或 [`sgtk.bootstrap.ToolkitManager.bootstrap_engine()`](https://developer.shotgridsoftware.com/tk-core/initializing.html#sgtk.bootstrap.ToolkitManager.bootstrap_engine) 方法启动。 -此命令会读取配置文件、启动插件并加载所有应用等。 -插件的目的在于,一旦启动,它将为各种应用提供一个统一的 Python/Qt 界面。由于所有插件执行的是同一个基类,因此应用可调用插件上的方法来执行各种操作,例如创建 UI。 -每个插件自己决定如何执行这些方法,以便它们能在宿主软件内部良好运行。 - -## 开始之前要了解的事项 - -我们为最常用的内容创建软件提供了[集成](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/)。 -此外,还有 [Toolkit 社区成员构建和共享的插件](https://developer.shotgridsoftware.com/zh_CN/58a557ee/)。但是,有时需要对还没有 Toolkit 插件的软件使用工作流集成。 - -如果您有时间和资源,我们鼓励您帮助 Toolkit 社区(以及您自己)编写您想要使用但目前缺少的插件! - -在着手编写代码前,[欢迎与我们交流和讨论!](https://knowledge.autodesk.com/zh-hans/contact-support)我们无法做出任何承诺,但我们很乐意与您讨论您的计划。 -我们或许还可以为您介绍其他对同样的插件感兴趣或进行过类似开发的用户。 -如果可以,请与要集成 Toolkit 的软件的技术联系人或开发人员建立沟通渠道。 -这将有助于您深入了解开发过程中存在的各种可能性和/或障碍。 -在建立联系并向他们说明您的基本构想后,您可以让我们也加入讨论,安排会议共同讨论插件的一些具体细节。 -此外,您还可以通过 [{% include product %} 社区论坛](https://community.shotgridsoftware.com/c/pipeline)直接加入 Toolkit 社区讨论。 - -我们期待看到新的集成,对于大家为 Toolkit 社区所做的慷慨贡献感激不尽! - -{% include info title="提示" content="[开发自己的应用](sgtk-developer-app.md)提供了应用开发分步指南,其中包含适用于插件开发的原则以及本手册中未介绍的原则。" %} - -## 插件集成方法 - -根据宿主应用程序功能的不同,插件开发的复杂程度也会各异。 -本部分概述了我们在插件开发过程中遇到的几种不同的复杂程度。 - - -### 宿主软件包含 Qt、PyQt/PySide 和 Python -这是 Toolkit 的最佳设置,在支持 Qt、Python 和 PySide 的宿主软件之上执行插件,操作起来非常简单。 -[Nuke 插件](https://github.com/shotgunsoftware/tk-nuke)或 [Maya 插件](https://github.com/shotgunsoftware/tk-maya)就是一个很好的例子。集成操作只是连接一些日志文件管理和编写代码设置 {% include product %} 菜单而已。 - - -### 宿主软件包含 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 中的主事件循环相连。 -宿主软件有时可能包含专门用于此用途的特殊方法。 -如果不包含,则必须做好安排,例如通过 on-idle 调用方法,让 Qt 事件循环定期运行。 - - -### 宿主软件不包含 Python,但您可以编写插件 -此类软件包括 [Photoshop](https://github.com/shotgunsoftware/tk-photoshopcc) 和 [After Effects](https://github.com/shotgunsoftware/tk-aftereffects)。 -程序没有 Python 脚本编写功能,但是可以创建 C++ 插件。 -在这种情况下,采取的策略通常是创建一个插件,该插件包含一个 IPC 层,并会在启动时以单独的进程启动 Qt 和 Python。 -等到辅助进程开始运行时,将使用 IPC 层来回发送命令。 -这类宿主软件往往意味着我们需要进行大量工作才能获得可以使用的插件解决方案。 - -{% 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)。 -支持的特性越多,插件的体验越好! - -- 内置 Python 解释器、Qt 和 PySide! -- 可在软件启动/初始化时运行代码。 -- 可在两种情况下访问和自动运行代码:一个是软件正常运行时,另一个是 UI 已完全初始化时。 -- 提供 API 命令来打包文件系统交互操作:“打开”(Open)、“保存”(Save)、“另存为”(Save As)、“添加参考”(Add Refernece)等。 -- 提供 API 命令来添加用户界面元素 - - - 向应用中添加自定义 QT 控件作为面板(最好是通过捆绑的 PySide) - - 添加自定义菜单/上下文菜单项 - - 在基于节点的软件包中添加自定义节点(通过简单的方法集成自定义 UI 进行交互) - - 提供自检功能发现选定的项/节点等对象 -- 灵活的事件系统 - - “有意义”的事件可以触发自定义代码 -- 支持异步运行用户界面 - - 例如,当某个自定义菜单项被触发时弹出一个不锁定界面的对话框 - - 为顶层窗口提供句柄,以便可以正确设置自定义 UI 窗口的父子关系 \ No newline at end of file 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 deleted file mode 100644 index c954c2f5e..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-framework.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: 开发框架 -pagename: sgtk-developer-framework -lang: zh_CN ---- - -# 开发自己的框架 - -## 简介 -本文档概述了与 Toolkit 框架开发相关的一些技术细节。 - -目录: -- [什么是 Toolkit 框架?](#what-is-a-toolkit-framework) -- [预制 {% include product %} 框架](#pre-made-shotgun-frameworks) -- [创建框架](#creating-a-framework) -- [通过挂钩使用框架](#using-frameworks-from-hooks) - -## 什么是 Toolkit 框架? - -Toolkit [框架](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#frameworks)与 Toolkit 应用非常相似。 -主要区别在于,框架不会自行运行。 -而是需要将框架导入应用或插件中。它使您可以独立保存可重用的逻辑,以便在多个插件和应用中使用。 -可重用的 UI 组件库就是一个框架示例,其中可能包含一个播放列表拾取器组件。然后,您可以将此框架导入应用中,并将播放列表拾取器组件插入到主应用 UI 中。 - -## 预制 {% include product %} 框架 - -{% include product %} 提供了一些预制的[框架](https://developer.shotgridsoftware.com/zh_CN/c6db88dd/),在创建自己的应用时,您会发现这些框架非常有用。 -[Qt 控件](https://developer.shotgridsoftware.com/tk-framework-qtwidgets/)和 [{% include product %} 实用程序](https://developer.shotgridsoftware.com/tk-framework-shotgunutils/)框架在应用开发中特别有用。 - -## 创建框架 - -当创建您自己的框架时,设置与编写应用几乎相同,您可以在[“开发自己的应用”](sgtk-developer-app.md)手册中了解有关编写应用的详细信息。 -框架在框架软件包根目录下有一个 `framework.py`(而非 `app.py` 文件),其中包含从 [`Framework`](https://developer.shotgridsoftware.com/tk-core/platform.html?highlight=hide_tk_title_bar#framework) 基类派生的类。 -此外,您的框架不会向插件注册命令。 - -您可以直接在框架实例本身中存储方法,或将模块存储在 `python/` 文件夹中。 -例如,[Shotgun 实用程序框架将它们存储在 Python 文件夹中](https://github.com/shotgunsoftware/tk-framework-shotgunutils/tree/v5.6.2/python)。 -要访问它们,需要导入框架,然后使用 [`import_module()` 方法](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Framework.import_module)访问子模块。 - -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 deleted file mode 100644 index 863055db9..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-generating-path-and-publish.md +++ /dev/null @@ -1,502 +0,0 @@ ---- -layout: default -title: 生成路径并发布 -pagename: sgtk-developer-generating-path-and-publish -lang: zh_CN ---- - -# 生成路径并发布 - -本手册介绍了 {% include product %} Toolkit Python API 快速入门相关信息,我们的工作流集成基于此 API 构建而成。 - -本手册旨在介绍如何使用此 API 的基本示例,最后,您将能够导入 Toolkit API 并生成和发布路径。 - -### 要求 - -- 了解 Python 编程基础知识。 -- 采用高级配置的项目。如果您之前尚未设置配置,可以按照[配置快速入门](https://developer.shotgridsoftware.com/zh_CN/5d83a936/)手册进行操作。 - -### 步骤 - -1. [导入 sgtk](#part-1-importing-sgtk) -2. [获取 Sgtk 实例](#part-2-getting-an-sgtk-instance) -3. [获取上下文](#part-3-getting-context) -4. [创建文件夹](#part-4-creating-folders) -5. [使用模板构建路径](#part-5-using-a-template-to-build-a-path) -6. [查找现有文件并获取最新版本号](#part-6-finding-existing-files-and-getting-the-latest-version-number) -7. [注册已发布的文件](#part-7-registering-a-published-file) -8. [全部整合到一个完整脚本中](#part-8-the-complete-script) - -## 第 1 部分:导入 sgtk - -Toolkit API 包含在名为 `sgtk` 的 Python 软件包中。 -每个 Toolkit 配置均有自己的 API 副本,[`tk-core`](https://developer.shotgridsoftware.com/tk-core/overview.html) 中对此 API 进行了介绍。 -要在项目配置中使用 API,必须从要使用的配置导入 `sgtk` 软件包,从其他配置导入此软件包会导致出现错误。 - -{% include info title="注意" content="有时,您可能会遇到 `tank` 软件包。这是旧名称,但内容相同。尽管这两个名称均适用,但 `sgtk` 是今后会采用的正确名称。" %} - -要导入 API,您需要确保 [`sys.path`](https://docs.python.org/3/library/sys.html#sys.path) 中存在指向[核心 python 文件夹](https://github.com/shotgunsoftware/tk-core/tree/v0.18.167/python)的路径。 -但是,对于此示例,我们建议您在 {% include product %} Desktop 的 Python 控制台中运行此代码。 -这意味着,正确的 `sgtk` 软件包路径已添加到 `sys.path` 中。 -同样,如果您在已在运行 {% include product %} 集成的软件中运行此代码,则无需添加路径。 - -在 {% include product %} 已启动的环境中运行代码时,只需编写以下内容即可导入 API: - -```python -import sgtk -``` -如果要在 {% include product %} 集成之外使用 API(例如,如果在您常用的 IDE 中对其进行测试),则需要先设置 API 的路径: - -```python -import sys -sys.path.append("/shotgun/configs/my_project_config/install/core/python") - -import sgtk -``` - -{% include info title="注意" content="如果您使用的是分布式配置,且要在 Toolkit 尚未引导的环境中导入 `sgtk`,则需要采取不同的方法。有关更多详细信息,请参见[引导手册](sgtk-developer-bootstrapping.md)。" %} - -## 第 2 部分:获取 Sgtk 实例 - -要开始使用 Toolkit API,您需要创建 [`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) 类的实例。 - -[`Sgtk`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk) 是 `sgtk` 软件包中的类,用作 API 的主接口。 -创建 `Sgtk` 实例后,您将能够执行获取上下文、创建文件夹或访问模板等操作。 - -如 API 文档所述,您不会直接创建 `Sgtk` 实例。下面提供了一些用于获取 `Sgtk` 实例的选项。 - -1. 如果在已在运行 {% include product %} 集成的环境中运行 Python 代码(例如,已从 {% include product %} 启动 Maya 情况下的 Maya Python 控制台),则可以从当前插件获取 `Sgtk` 实例。 - `Engine.sgtk` 属性保留插件的 `Sgtk` 实例。例如,在 Maya 中,可以运行以下命令: - - ```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 - ``` - - 您可以通过 [`Engine.sgtk`](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.sgtk) 属性访问 `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)以了解更多详细信息。* - -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` 的变量中。 -如果您使用的是 {% include product %} Python 控制台,则 `tk` 变量已预定义为全局变量。 - -现在,您拥有了一个 `Sgtk` 实例,可以开始使用 API。 -现在,发布脚本应如下所示: - -```python -import sgtk - -# 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 -``` - -## 第 3 部分:获取上下文 - -### 什么是上下文,我为什么需要它? - -Toolkit 中执行的大量操作均围绕上下文展开,也就是说,知道您正在处理什么并能够相应地采取行动。 -对于 Toolkit API,您将需要能够存储有关所处理实体的重要详细信息,并与应用或其他进程共享,以便它们能够以上下文感知的方式进行操作。 -例如,如果 Toolkit 知道您正在处理什么任务,它将可以自动将您发布的文件链接到 ShotGrid 中对应的任务。 - -[`Context` 类](https://developer.shotgridsoftware.com/tk-core/core.html#context)充当此信息的容器。 -您可以将 `Task`、`Step`、`entity`(如 `Shot` 或 `Asset`)、`Project` 和当前 `HumanUser` 等存储在此类的实例中。 - -您可以在给定会话中创建任意多个不同的上下文对象。但是,如果存在插件,则会有一个当前上下文的概念,插件会对其进行跟踪。 -这是用户当前所处的上下文,也是应用应该正在使用的上下文。 - -在后面的步骤中,您将使用上下文来帮助解析可用于保存或复制文件的路径。 - -### 获取上下文 - -要创建上下文,必须使用以下构造函数方法之一:`Sgtk.context_from_entity()`、`Sgtk.context_from_entity_dictionary()` 或 `Sgtk.context_from_path()`。 -通过在先前步骤中创建的 `Sgtk` 实例(存储在 `tk` 变量中)访问这些方法。 - -{% include info title="注意" content="要从路径中获取上下文,必须已创建文件夹,这将在本手册的下一步中加以介绍。" %} - -无需创建新的上下文,您可以[从插件获取当前上下文](https://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.context)([第 2 部分](#part-2-getting-an-sgtk-instance)中已收集),如下所示: - -```python -context = current_engine.context -``` -由于您将在后面的步骤中使用上下文来帮助解析镜头任务的文件路径,因此需要确定上下文中包含相关信息。 - -如果您的代码作为 Toolkit 应用的一部分运行,且您的应用已配置为仅在 shot_step 环境中运行,则可以放心地假定您可以获取适当的当前上下文。 -但是,为了避免本手册中存在不明确性,您将使用 `Sgtk.context_from_entity()` 从 `Task`(必须属于 `Shot`)明确创建上下文。 - -创建上下文时,您可以提供操作所需的最深级别。 -例如,您可以从任务创建上下文,Toolkit 会为您确定其余的上下文参数。 - -```python -context = tk.context_from_entity("Task", 13155) -``` - -如果输出上下文实例的表示,您将获取如下所示的内容: - -```python -print(repr(context)) - ->> - -``` - -尽管您仅提供了任务,但应已填写其他相关详细信息。 - -现在,发布脚本应如下所示: - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) -``` - -## 第 4 部分:创建文件夹 - -Toolkit 可以根据项目实体在磁盘上动态生成文件夹结构。 - -这可实现两个目的。 - -1. 在磁盘上创建组织有序的结构,您可以在其中放置文件。 -2. 使 Toolkit 能够以编程方式了解您的结构、从中派生上下文并知道在何处放置文件。 - -您需要确保磁盘上存在文件夹,以便在后面的步骤中解析路径。 -您将使用 [Sgtk.create_filesystem_structure()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Sgtk.create_filesystem_structure) 方法实现此操作: - -```python -tk.create_filesystem_structure("Task", context.task["id"]) -``` -您可以使用上下文对象获取任务 ID 以生成文件夹。 - -现在,代码应如下所示: - -```python -import sgtk - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) -``` - -现在,您已完成所有准备步骤,接下来,可以使用模板生成路径。 - -## 第 5 部分:使用模板构建路径 - -### 生成路径 - -无论何时,只要您想知道应在 Toolkit 的哪个位置放置或找到文件,就可以使用模板解析磁盘上的绝对路径。 - -[模板](https://developer.shotgridsoftware.com/tk-core/core.html#templates)本质上是标记化字符串,当您将上下文和其他数据应用于这些字符串时,可以解析为文件系统路径。 -它们可通过[项目的工作流配置](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/#part-2---configuring-file-system-templates)进行自定义,旨在提供标准化方法来确定文件应存储的位置。 - -首先,您需要为要生成的路径获取模板实例。 -利用您创建的 `Sgtk` 实例,可以通过 `Sgtk.templates` 属性访问所需的 `Template` 实例,此属性是一个词典,其中键是模板名称,值是 [`Template`](https://developer.shotgridsoftware.com/tk-core/core.html#template) 实例。 - -```python -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}' -``` - -模板由键组成,您需要将这些键解析为实际值。 -由于上下文包含大多数键的充足信息,因此可以先使用此信息提取值: - -```python -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),因此无需为此键提供值,但是如果需要默认值以外的值,也可以提供值。 - -这样,就只剩下 `name` 和 `version`。由于名称可以进行选择,因此您可以对默认值进行硬编码或使用户能够输入值(例如,通过弹出界面)。 -现在,您将对二者均进行硬编码,但在下一步中,我们将介绍如何查找下一个可用的版本号。 - -```python -fields["name"] = "myscene" -fields["version"] = 1 -``` - -现在,您拥有了所有字段,可以使用 [`Template.apply_fields()`](https://developer.shotgridsoftware.com/tk-core/core.html#sgtk.Template.apply_fields) 将模板解析为绝对路径: - -```python -publish_path = template.apply_fields(fields) - ->> /sg_toolkit/mysite.shotgunstudio.com/my_project/sequences/seq01_chase/shot01_running_away/comp/publish/maya/myscene.v001.ma -``` - -### 确保文件夹存在 - -尽管您之前运行了文件夹创建方法,但可能还是需要执行额外的步骤以确保所有文件夹都存在。 -例如,如果模板定义的文件夹在结构中不存在,则表明原始 `create_filesystem_structure()` 调用中未创建此文件夹,这时可能就需要执行上述额外的操作。 - -您可以使用多种便捷方法来执行此操作。 -如果您的代码在 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 在磁盘上创建空文件。 - - -### 将到目前为止的所有代码整合到一起 - -```python -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task. -tk.create_filesystem_structure("Task", context.task["id"]) - -# Get a template instance by providing a name of a valid template in your config's templates.yml. -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" -fields["version"] = 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders. -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Create an empty file on disk. (optional - should be replaced by actual file save or copy logic) -sgtk.util.filesystem.touch_file(publish_path) -``` - -下一步是动态确定下一个版本号,而非对其进行硬编码。 - -## 第 6 部分:查找现有文件并获取最新版本号 - -在这里,您可以使用两种方法。 - -1. 由于在此特定示例中,您要解析发布文件,因此可以使用 [{% include product %} API](https://developer.shotgridsoftware.com/python-api/) 在 `PublishedFile` 实体上查询下一个可用版本号。 -2. 您可以扫描磁盘上的文件并确定已存在的版本,然后提取下一个版本号。 - 如果您使用的文件未在 {% include product %} 中进行跟踪(如工作文件),这将非常有用。 - -尽管第一个选项可能更适合本手册中的示例,但这两种方法均有其各自的用途,因此我们都会进行介绍。 - -### 在 {% include product %} 中查询下一个版本号。 - -利用 {% include product %} API 和 [`summarize()` 方法](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.summarize),可以在 `PublishedFile` 实体(这些实体共享相同的名称和任务)中获取最高版本号,然后加 1。 - -```python -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 -``` - -### 在文件系统中搜索下一个版本号。 - -利用 Toolkit API,可以收集现有文件列表,从中提取模板字段值,然后找出下一个版本。 - -在下面的示例中,将从工作文件模板中收集最新版本。 -假定工作文件模板和发布文件模板具有相同的字段,则可以使用相同字段调用下面的方法两次以确定最高发布和工作文件版本,并决定使用这两者的组合。 - -```python -def get_next_version_number(tk, template_name, fields): - template = tk.templates[template_name] - - # Get a list of existing file paths on disk that match the template and provided fields - # Skip the version field as we want to find all versions, not a specific version. - skip_fields = ["version"] - file_paths = tk.paths_from_template( - template, - fields, - skip_fields, - skip_missing_optional_keys=True - ) - - versions = [] - for a_file in file_paths: - # 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. -fields["version"] = get_next_version_number(tk, "maya_shot_work", fields) -``` - -[`sgtk.paths_from_template()`](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=paths_from_template#sgtk.Sgtk.paths_from_template) 方法将收集磁盘上与所提供的模板和字段匹配的所有文件。 -此方法对于要为用户查找和显示文件列表的情况也非常有用。 - -您可以选择使用任一选项,但为了简单起见,本手册将使用选项 1 中的代码。 - -## 第 7 部分:注册已发布的文件 - -现在,您已拥有一个路径,可以进行发布。要执行此操作,可以使用实用程序方法 [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish)。 - -也可以使用 {% include product %} API 的 [`{% include product %}.create()`](https://developer.shotgridsoftware.com/python-api/reference.html#shotgun_api3.shotgun.Shotgun.create) 方法来创建 `PublishedFile` 实体,但我们强烈建议在此处使用 Toolkit API,因为它可确保提供并正确填写所有必填字段。 - -```python -# So as to match the Publish app's default behavior, we are adding the extension to the end of the publish name. -# This is optional, however. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -此时,还值得注意的是,我们的[发布应用](https://developer.shotgridsoftware.com/zh_CN/bc718491/)也附带了[其自己的 API](https://developer.shotgridsoftware.com/tk-multi-publish2/)。 -尽管这仍然在本质上使用了相同的 [`sgtk.util.register_publish()`](https://developer.shotgridsoftware.com/tk-core/utils.html?#sgtk.util.register_publish) 方法,但它基于发布过程构建而成,通过提供框架进行收集、验证和发布。 - -## 第 8 部分:完整脚本 - -```python -# Initialization -# ============== - -import sgtk -import os - -# Get the engine instance that is currently running. -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. -context = tk.context_from_entity("Task", 13155) - -# Create the required folders based upon the task -tk.create_filesystem_structure("Task", context.task["id"]) - -# Generating a Path -# ================= - -# Get a template instance by providing a name of a valid template in your config's templates.yml -template = tk.templates["maya_shot_publish"] - -# Use the context to resolve as many of the template fields as possible. -fields = context.as_template_fields(template) - -# Manually resolve the remaining fields that can't be figured out automatically from context. -fields["name"] = "myscene" - -# Get an authenticated Shotgun API instance from the engine -sg = current_engine.shotgun - -# Run a Shotgun API query to summarize the maximum version number on PublishedFiles that -# are linked to the task and match the provided name. -# Since PublishedFiles generated by the Publish app have the extension on the end of the name we need to add the -# extension in our filter. -r = sg.summarize(entity_type="PublishedFile", - filters = [["task", "is", {"type":"Task", "id": context.task["id"]}], - ["name","is", fields["name"] + ".ma"]], - summary_fields=[{"field":"version_number", "type":"maximum"}]) - -# Extract the version number and add 1 to it. -# In scenarios where there are no files already this summary will return 0. -# Apply the version number to the fields dictionary, that will be used to resolve the template into a path. -fields["version"] = r["summaries"]["version_number"] + 1 - -# Use the fields to resolve the template path into an absolute path. -publish_path = template.apply_fields(fields) - -# Make sure we create any missing folders -current_engine.ensure_folder_exists(os.path.dirname(publish_path)) - -# Creating a file -# =============== - -# This is the bit where you would add your own logic to copy or save a file using the path. -# In the absence of any file saving in the example, we'll use the following to create an empty file on disk. -sgtk.util.filesystem.touch_file(publish_path) - -# Publishing -# ========== - -# So as to match publishes created by the Publish app's, we are adding the extension to the end of the publish name. -publish_name = fields["name"] + ".ma" -version_number = fields["version"] - -# Now register the publish -sgtk.util.register_publish(tk, - context, - publish_path, - publish_name, - version_number, - published_file_type = "Maya Scene") -``` - -{% include info title="提示" content="此时,代码变得有点长,因此建议下一步将其整理一下,分解成多个方法。" %} - -### 总结 - -希望本手册能够使您对如何开始使用 Toolkit API 有一个基本的了解。 -当然,API 还有许多其他用途,因此我们建议通读 [tk-core API](https://developer.shotgridsoftware.com/tk-core/index.html) 以了解详细信息。 - -此外,我们的[论坛](https://community.shotgridsoftware.com/c/pipeline/6)是探讨 API 问题和获取答案的好地方,甚至可以通过此论坛向我们提供有关本手册的反馈。 \ No newline at end of file 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 deleted file mode 100644 index 0c0e5b541..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-developer-guide.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: default -title: 集成开发人员手册 -pagename: sgtk-developer-guide -lang: zh_CN ---- - -# 集成开发人员手册 - -## 面板 - -有关面板动作的示例,请参见 [https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-shotgunpanel/tree/master/hooks)。 - -### 配置显示的内容 - -详细信息区域和列表中的值都可以通过 `shotgun_fields` 挂钩进行配置。您可以为此挂钩创建子类,并更改执行,以便显示您需要的值。 - -**模板系统** - -此挂钩支持简单的模板语言,可提供出色的灵活性。它还支持 Qt 所支持的 HTML 子集,因此您可以控制显示的值的颜色、字体大小、粗细等。 - -模板语言用法如下: - -- {% include product %} 的值括在 `{brackets}` 中,例如 `Description: {description}`。此模板呈现时,`{description}` 部分将替换为 description 字段的值。 - -- 如果您想为值添加一个仅当值不为空时才显示的可选前缀或后缀,可使用 `{[Prefix]sg_field[suffix]}` 语法。对于模板 `{[Start: ]start_date} {[End: ]end_date}`,如果同时填充了两个值,将显示 `Start: 12 July 2009 End: 14 July 2012`,如果未设置结束日期,则显示 `Start: 12 July 2009`。 - -- 您可以定义回退机制,在某些值未设置的情况下进行回退。对于 {% include product %} 版本而言,`artist` 字段优先于 `created_by` 字段,这是为了支持由制片代表艺术家提交版本的工作流。在这种情况下,版本将由制作人员创建,但 `artist` 字段会设置为美工人员。不过,情况并非总是如此。有时,在由美工人员自己提交工作的工作流中,artist 字段会留空。因此,在显示版本时,能够首先检查 `artist` 字段是一项有用的功能,如果发现此字段未设置,则回退到 `created_by` 字段。我们使用 `{field1|field2}` 语法实现这个机制,例如:`Created By: {artist|created_by}`。您可以将此字段与可选字段结合使用,例如 `{[Created By: ]artist|created_by}`。 - -此挂钩包含以下方法: - -**控制列表中显示的列表项** - -`get_list_item_definition()` 方法接受 {% include product %} 实体类型,会返回一个词典,该词典控制各种列表中列表项的外观。它返回的词典具有 `top_left`、`top_right` 和 `body` 键,例如: - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**控制顶部详细信息区域** - -`get_main_view_definition()` 方法接受 {% include product %} 实体类型,会返回一个具有 `title` 和 `body` 键的词典。这些值控制详细信息区域中对象的外观,例如: - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**控制“信息”(Info)选项卡中显示的字段** - -`get_all_fields()` 方法返回给定实体在“信息”(Info)选项卡上呈现时要显示的字段列表。 - -### 配置动作 - -动作是对一段 {% include product %} 数据执行操作的代码片段。例如: - -- 一个为给定 {% include product %} 版本启动 RV 的动作 -- 一个让用户可指派自己执行给定任务的动作 -- 一个将 {% include product %} 发布加载到 Maya 中作为 Maya 参考的动作。 - -动作的实际负载在“动作挂钩”中定义。__ 定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -在上面的示例中,我们使用了 `reference`、`import`、`texture_node`、`assign_task` 和 `play_in_rv` 动作。然后,我们将这些动作映射到各种 {% include product %} 对象和条件。例如,我们让所有 Maya 场景类型的发布都显示 `import` 动作。 - -将对象加载到面板中时,会读入并分析上面的动作配置。接下来确定当前对象适合的动作列表,然后执行 `generate_actions()` 挂钩方法。给定实体的 {% include product %} 数据将在此时传递给挂钩,这样挂钩代码便可判断是否可以为这个特定的 {% include product %} 对象运行该动作。这种方法让每个挂钩可在显示前运行检查。例如,`play_in_rv` 挂钩可能只有在本地有可用媒体时才有意义 - 配置中设置的动作映射会告诉面板为给定 {% include product %} 实体启用哪些动作,但是这些动作可能不会全部显示,因为 `generate_actions()` 方法可能会判定某些动作不适合这个给定对象。 - -`generate_actions()` 方法返回的动作将显示在动作菜单上,当用户单击该菜单时,会调用 `execute_acton()` 挂钩方法运行动作。 - -对于面板支持的每个应用程序,都有一个动作挂钩来执行合适的动作。例如,在 Maya 这样的应用程序中,默认挂钩将执行 `reference`、`import` 和 `texture_node` 动作,每个动作执行特定的 Maya 命令,将发布导入当前的 Maya 场景中。 与所有挂钩一样,我们完全可以改写和更改这些设置,还可根据内置挂钩创建派生挂钩,这样不必复制大量代码就能轻松向内置挂钩中添加其他动作。 - -面板使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在默认配置设置中查看,语法类似如下: - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 关键字指示 Toolkit 在应用的 `hooks` 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 `{config}/panel/maya_actions.py`。这将指示 Toolkit 使用您的配置文件夹中称为 `hooks/panel/maya_actions.py` 的挂钩。 - -有关详细信息,请参见应用随附的挂钩文件。挂钩还会利用继承性,这意味着您不需要改写挂钩中的所有内容,而是可以更轻松地用各种方式对默认挂钩进行扩展或补充,使挂钩更易于管理。 - -[单击此处详细了解第二代挂钩格式。](https://developer.shotgridsoftware.com/zh_CN/6d10dedf/) - -通过在挂钩中运用继承性,您可以像下面这样向默认挂钩中添加附加动作: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) -``` - -然后,我们可以在配置中将这个新动作绑定到一组发布类型: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。 - -## 发布器 - -发布应用可以采用挂钩形式进行高度自定义,控制如何将内容项呈现给美工人员以供发布以及稍后如何处理这些内容项。 - -有关发布应用的完整开发人员文档,请参见 [Toolkit 开发人员站点](http://developer.shotgridsoftware.com/tk-multi-publish2)。 - -有关如何使用发布应用的详细信息,请参见[用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/#the-publisher)。 - -## 加载器 - -有关加载动作的示例,请参见 [https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks](https://github.com/shotgunsoftware/tk-multi-loader2/tree/master/hooks)。 - -## 高级功能 - -## 使用 {% include product %} Toolkit 可轻松开发工具 - -我们有没有提到您可以编写自己的应用?每个插件都基于 Python 和 PySide 公开了一个一致的接口,因此您可以编写一个适用于 Nuke、Photoshop 和 3dsmax 应用。有了核心 API 功能,开发资源可以专注于解决生产问题,而无需为工作室构建大型工作流堆栈。通过 Toolkit 可以在项目之间轻松地重用工具 - 如果文件命名约定或其他要求发生改变,只需重新配置应用即可。通过 Toolkit 的内置 Git 和 Github 支持可安全地推出工具,并在开发时快速地热加载代码。您只需在自己的 Dev Sandbox 中工作,并邀请 TD 和早期采用者测试您的代码,而不必将其展示给项目的每个参与者。 - -![](images/develop.png) \ No newline at end of file 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 deleted file mode 100644 index e487c66ed..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/development/sgtk-how-to-submit-fixes.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: 如何提交集成修复 -pagename: sgtk-how-to-submit-fixes -lang: zh_CN ---- - -# 如何提交集成修复 - -我们欢迎 Toolkit 社区的贡献!如果您有或许可行的方法修复发现的某个问题,或者执行了一项您认为我们应该包含的功能,欢迎您按照下面的指导原则,通过适当渠道反馈给我们。 - -## 联系我们 - -我们鼓励您联系我们,共同讨论您的开发构想或要修复的问题。我们也许能提供有用的信息为您指引正确的方向,或者帮助您避免很多不必要的工作。最重要的是,我们喜欢了解用户想要构建什么,他们如何使用 Toolkit,以及我们如何使它变得更出色。 - -## Fork 位于 GitHub 上的库 - -大多数 Toolkit 插件、应用和框架的代码都公开在 GitHub 上开发。您可以将要修改的库从 GitHub 上 Fork 到您的本地环境。 - -## 进行更改 - -在本地的一个分支上进行开发,然后在您自己的环境中测试,直到确信应用可以提交给我们。尽量与现有代码库的风格保持一致。保证您的更改专注于实现您的目的。例如,如果您是要修复 3 行代码中的某个错误,那么就不要试图修改整个文件中的空格问题。否则 Toolkit 小精灵会发飙的。 - -## 注释! - -务必添加详细的注释,说明您要做什么以及为什么这样做。请记住,可能会有其他像您一样的用户以后会 Fork 此库,他们需要了解您的代码的用意和原因。注释要清楚,但也不要过度注释。:) - -## 测试 - -请记住,其他用户会有各种各样的环境和变量,并且可能与您工作室的配置不尽相同。Toolkit 会尽可能减少这类问题给用户造成的影响,但是不同用户的环境总会有些差异。 -例如: - -- 您的代码是否能在 OS X、Windows 和 Linux 上同样正常运行? -- 代码是否能在某个软件的所有支持版本中正常运行? -- 无论用户从终端、SG Desktop、{% include product %} 还是自己的自定义应用中启动代码,代码是否都能一样运行? - -## 创建 Pull 请求 - -一切准备就绪后,您可以使用 Push 操作将更改上传回 GitHub,并创建 Pull 请求。您的 Pull 请求应详细全面,说明您的代码有何用意,以及为何需要这些更改。撰写这些内容时,请考虑到那些初涉这个领域、对这方面代码知之甚少的用户。大家会看到您的 Pull 请求,其他用户也会很高兴能够理解您条理清晰的说明! - -## 然后呢? - -我们会在有时间时审核您的 Pull 请求。我们很可能会给出意见和建议,并询问您一些有关代码或用例的问题。我们也可能会将请求退回,并请您进行更改。请不要因此生气!我们欢迎大家提出自己的方案,但是也深知问题怎样才能得到解决。我们每天都在与代码打交道,因此也知道并非每个人都能提交完美的代码。 - -审核完代码后,如果我们接受您的 Pull 请求,会安排对您的代码进行 QA,然后将它合并到我们的库,并安排在某个时间发布。具体的时间安排会受许多因素的影响。因此请耐心等待。 - -另外,我们还可能礼貌地拒绝您的 Pull 请求。同样,请不要生气。我们由衷感谢您做出的所有努力和贡献。有很多因素可能导致您的请求被拒。但是,如果您遵循上面的指导原则,一般不会出现这种情况。 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 deleted file mode 100644 index bdd661560..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/advanced_config.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: 配置设置 -pagename: toolkit-guides-advanced-config -lang: zh_CN ---- - -# 配置快速入门 - -完成本手册后,您将获得以下方面的基础知识:将项目信息添加到配置中、将该配置与您的项目关联起来、准备要自定义的工作流配置。 - -## 关于本手册 - -本手册介绍如何使用 {% include product %} Desktop 中的**高级项目设置向导**为数字内容制作工作流创建配置。您将很快熟悉配置工具,了解如何使用向导,并有机会了解更多信息。使用向导为项目创建工作流配置,并准备对其进行编辑和扩展,以便支持工作流中的每个工序。配置控制 UI 的各个方面、{% include product %} 应用以及支持制作工作流所需的各种工具。使用向导只是扩展配置的方法之一。除了为工作流中的每个工序添加特定设置外,它还将添加与软件应用程序的集成。在本手册中,我们将根据 Toolkit 默认配置来配置项目。 - -本手册假定用户: - -1. 从未使用过高级项目设置向导 -2. 对如何使用 {% include product %} 有基本的了解 -3. 是 {% include product %} Toolkit 新手 - -### 使用本文档 - -要使用本手册并为项目创建可自定义的配置,需要以下内容: - -1. 有效的 {% include product %} 站点。您可以[在此处注册 {% include product %}](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) 并获取 30 天试用版以开始探索。 -2. {% include product %} 桌面。 如果未安装 Desktop,则可以[单击此链接开始。](https://developer.shotgridsoftware.com/zh_CN/d587be80/#installation-of-desktop) -3. 可用于存储项目文件和工作流配置的文件系统的访问权限。在该 Shotgun 管理的文件系统上,创建一个名为 `Shotgun` 的文件夹,其中包含两个文件夹 `projects` 和 `configs`。 - -## 关于高级项目设置向导 - -{% include product %} Desktop 中的“高级项目设置向导”会根据默认配置生成工作流配置。默认配置可以为构建提供坚实基础,其中带有支持工作流的可自定义设置、应用和 UI 元素。它会创建一个配置,您可以对其进行编辑和扩展来满足项目的工作流需求。 - -默认配置包含: -* 基本文件系统数据结构和模板,用于确定文件在磁盘上的位置 -* 所有支持的[软件集成](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/),允许直接在用户的软件应用程序内与 {% include product %} 和工作流功能进行交互。 - -只要您敢于突破想象,勤于思考,充分运用自己的编程知识,或者善于借用 {% include product %} 社区集思广益,就会发现 Toolkit 自定义的无限可能。 - -### 创建配置 - -每个项目都需要一个配置。第一次通过 {% include product %} Desktop 访问项目时,将下载并配置基本配置。此基本配置会自动检测用户在其系统上安装的受支持的内容创建软件,并将配置与项目相关联。工作流配置中的设置监管受支持软件应用程序中的集成。[面板](https://developer.shotgridsoftware.com/zh_CN/c0b0ce05/)应用显示 {% include product %} 的项目信息,并使艺术家可以回复注释和查看版本,而无需退出其工作会话。[发布器](https://developer.shotgridsoftware.com/zh_CN/bc718491/)应用允许艺术家将其作品提供给团队中的其他人使用,通过[加载器](https://developer.shotgridsoftware.com/zh_CN/a4c0a4f1/)应用,艺术家可以加载其队友发布的文件。基本配置不包括文件系统管理设置,也不支持文件或者目录命名的模板开发。它也不会像配置默认配置那样,需要添加大量的应用工具。它是一个简单的配置,允许在不对配置文件进行任何手动编辑的情况下运行 Toolkit。向导将基本配置替换为默认配置。它提供了更多的应用和软件集成,以支持您开始工作。虽然也可以编辑基本配置,但只有在您拥有高级设置后,才能设置项目以进行自定义。 - - -### 基本配置和默认配置之间的差异 - -| 功能 | 基本配置 | 默认配置 | -| ------- | ------------------- | --------------------- | -| 下载 | 访问项目时自动下载 | 通过“高级设置”向导创建 | -| 可访问性 | 存储在系统位置 | 可手动编辑的文件 | -| 更新 | 自动更新 | 手动更新 | -| 文件系统支持 | 不支持文件系统数据结构 | 包含用于支持文件夹结构和文件命名标准的工具 | -| 软件集成 | 3ds Max、Houdini、Maya、Nuke、Photoshop、Flame | 基本 + Hiero、Motionbulder、Mari | -| Toolkit 应用 | {% include product %} 面板、发布器、加载器 | 基本 + 工作文件、快照、场景细分、Nuke 写入节点、Houdini Mantra 节点等 | - -在本手册中,您将使用 {% include product %} Desktop 中的向导,根据默认配置为项目生成工作流配置。生成此配置将使您能够进行支持专用制作工作流所需的自定义。 - -## 开始练习 - -### 准备使用默认配置 - -**步骤 1:**在 {% include product %} 中创建一个名为“the_other_side”的新项目。 - -![新建项目](./images/advanced_config/2_new_project.png) - -**步骤 2:**启动 {% include product %} Desktop 应用,并使用 {% include product %} 站点的用户名和密码登录。 - -![登录](./images/advanced_config/3_login.png) - -![加载项目](./images/advanced_config/4_load_project.png) - -**步骤 3:**选择项目缩略图,点击跳转到需要运行“高级项目设置向导”的项目页面。 - -{% include info title="提示" content="如果在 Desktop 打开时创建了新项目,则可能需要刷新**“项目”(Projects)**窗口才能看到新项目。在桌面右下角选择您的个人资料**头像**,然后选择“Refresh Projects”。" %} - -![刷新项目](./images/advanced_config/5_refresh_projects_list.png) - -### 访问默认配置 - -Desktop 在加载项目页面时,自动下载和配置基本配置,并自动检测和添加 Publish 应用,以及系统中已安装的受支持的软件包。基本配置完成后,Publish 应用和已安装软件会被自动添加到 {% include product %} Desktop 的**“应用”(Apps)**窗格中。 - -**步骤 4:**加载项目后,在屏幕右下角选择您的个人资料**头像**。在弹出菜单中,选择**“Advanced project setup...”**以启动向导。 - -![高级项目设置](./images/advanced_config/6_advanced_project_setup.png) - -此时将显示一个对话框,其中包含四个选项,“{% include product %} Default”处于选中状态。此时,除了默认选择的“Shotgun Default”,您还可以选择根据现有其他项目的配置、Git 库配置或从磁盘路径选择配置文件来配置该项目的工作流。 - -对于本练习,我们将选择**“{% include product %} Default”**。此选项将根据 {% include product %} 默认配置为您的项目创建工作流配置。 - -![选择配置](./images/advanced_config/7_select_config.png) - -**步骤 5:**选择**“继续”(Continue)**。 - -此时将显示一个对话框,其中包含两个选项,**“默认”(Default)**处于选中状态。此时,有一个用于选择旧版默认配置设置的选项。此配置设置来自旧版 {% include product %},适用于仍使用相应版本的工作室。我们将在本练习中使用“默认”(Default)。 - -![选择配置](./images/advanced_config/8_select_config.png) - -**步骤 6:**选择**“继续”(Continue)**。 - -### 定义项目文件的存储位置 - -此时将显示一个对话框,在 `Storage:` 一词旁边将显示一个下拉菜单 - -![定义存储](./images/advanced_config/9_define_storage1.png) - -**步骤 7:**标识此项目的项目数据的存储位置。从对话框顶部的下拉列表中选择**“+ 新建”(+ New)**,并在字段中键入 **projects**。 - -![定义存储](./images/advanced_config/10_define_storage2.png) - -{% include product %} Toolkit 支持三种操作系统:Linux、Mac 和 Windows。 - -**步骤 8:**选择用于存储项目数据的操作系统旁边的字段。选择文件夹图标,并导航到在本练习之前在 Shotgun 管理的文件系统上创建的项目文件夹。 - -![存储根文件夹](./images/advanced_config/11_storage_root_folder.png) - -此设置使 {% include product %} 只能访问您标识用于存储制作数据的文件夹。在准备本练习时,您在 {% include product %} 根目录中添加了一个 `projects/` 目录。`projects/` 目录是 Toolkit 用于存储任何本地项目相关信息的位置。 - -![定义存储](./images/advanced_config/12_define_Storage3.png) - -**步骤 9:**选择**“保存”(Save)**以将项目文件夹标识为项目数据的存储位置。 - -![定义存储](./images/advanced_config/13_define_storage4.png) - -操作系统路径会自动更新,以标识项目数据的存储路径。 - -**步骤 10:**选择**“继续”(Continue)**。 - -### 命名项目文件夹 - -将显示一个对话框,其中包含填充文本字段的项目名称。该名称是使用项目信息自动填充的,路径将自动更新。 - -![项目文件夹](./images/advanced_config/14_project_folder_name.png) - -Toolkit 既适用于分布式设置,又适用于集中式设置。在分布式设置中,工作流配置上传到 {% include product %} 并在本地为每个用户缓存;在集中式设置中,用户可以在磁盘上的共享位置访问单个配置。对于本练习,我们将使用集中式设置。您可以[在此处了解有关分布式设置的详细信息](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)。 - -最后一步生成创建特定于项目的配置所需的相应文件夹、文件和数据。 - -![集中式存储](./images/advanced_config/15_centralized_storage.png) - -**步骤 11:**在相应的操作系统下,选择**“浏览...”(Browse...)**并导航到您在准备本练习时创建的配置文件夹 `configs`,然后输入项目名称 **the_other_side**。这将创建存储项目配置的文件夹。选择**“Run Setup”**并等待设置完成。 - -![项目设置](./images/advanced_config/16_project_setup_config.png) - -**步骤 12:**选择**“完成”(Done)**以显示填充项目窗口的新图标。 - -![设置完成](./images/advanced_config/17_project_setup_complete.png) - -**提示:**将应用固定到菜单栏以便快速访问 {% include product %} Desktop:选择您的**头像**并选择**“Pin to Menu”**。 - -完成上述任务;项目设置已完成。现在,根据默认配置,在指定的位置为您的项目提供了 Toolkit 工作流配置,您可以开始进行自定义。 - -查看 `configs` 文件夹,您会发现几个文件夹和文件。可以看一看里面的内容。 - -![配置](./images/advanced_config/18_config.png) - -现在,真正有趣的事情开始了:了解通过配置可以执行的所有任务。下面是一些要探索的高级主题。 - -## 高级主题 - -{% include product %} Toolkit 提供了许多便利的方法来编辑、克隆或接管配置。扩展现有配置可以节省时间,并使您可以访问网络中其他人创建的所有炫酷素材。您可以利用内容丰富的 {% include product %} [社区](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=zh-CN#!forum/shotgun-dev),其中可能包含您需要的精确配置。{% include product %} 社区是一个共享社区,应该与人为善,心怀感恩,赞赏创建了配置并帮助您完成工作的用户。对了,别忘了提供反馈,这就是我们帮助其他 {% include product %} 用户并成为此社区一员的亮点! - -下面是一些与配置相关的操作。 - -### 使用命令行创建默认配置 - -在任何项目配置中,`tank` 命令允许您从终端运行管理命令。每个项目都有自己的专用 `tank` 命令。`tank setup_project` 命令的功能类似于“高级设置向导”:它根据现有项目的配置或默认配置在磁盘上为您的项目创建一个可编辑的配置。您可以在[此处](https://developer.shotgridsoftware.com/zh_CN/425b1da4/#setup_project)了解有关运行 `tank setup_project` 的详细信息,并在[此处](https://developer.shotgridsoftware.com/zh_CN/425b1da4/#using-the-tank-command)了解有关 `tank` 命令的详细信息。 - -### 编辑制作活动中的配置 - -有时,您想要修改当前处于制作活动中的配置,但是不想在艺术家使用该配置时编辑它。只需几个命令,{% include product %} 就能提供一种复制现有配置的方法,从而可以安全地测试您的修改,然后再将这些修改推送到制作活动中。此过程将制作配置替换为新配置,并自动备份旧配置。 - -您希望处理配置副本的原因是: - -1. 更新配置 -2. 在实施之前测试某些修改 -3. 升级或添加一些应用 -4. 进行开发并在测试后将其推出 - -要了解有关克隆配置的信息以及配置管理的其他基础知识,请参考[“配置临时沙盒和推行应用”文档](https://developer.shotgridsoftware.com/zh_CN/60762324/#cloning-your-configuration)。 - -### 工作流配置的在线分布 - -本手册将逐步创建一个**集中式配置**:位于共享网络位置的单个工作流配置副本,供所有用户访问。但是,如果您的员工分布在不同地点和网络,则共享工作流配置的单个副本可能不太可行。Toolkit 允许这种情况,方法是提供**分布式配置**选项,即工作流配置上传到 {% include product %},并且每次用户访问项目时,配置都会在本地下载并缓存。您可以在我们的[核心 API 开发人员文档](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations)中了解有关分布式配置的详细信息。 - -### 使用多个根文件夹 - -理想情况下,您的设施需要针对特定任务进行优化。您可以使用多个根文件夹来优化事务,例如在一台服务器上进行样片视频播放,在另一台服务器上进行交互式处理。Toolkit 允许您使用多个存储根,以便于实现上述工作流。了解如何[从单存储配置转换为多存储配置](../../../quick-answers/administering/convert-from-single-root-to-multi.md)。 - -现在,已经为您的项目进行了工作流配置,可以开始编辑它了!跳转到下一个手册[编辑工作流配置](editing_app_setting.md),以了解操作方法。 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 deleted file mode 100644 index 2806a9ed3..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/dynamic_filesystem_configuration.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: default -title: 文件系统配置 -pagename: toolkit-guides-filesystem-configuration -lang: zh_CN ---- - -# 动态文件系统配置 - -在本手册中,您将学习如何修改 Toolkit 工作流配置来自定义您的制作文件夹结构和文件命名。 - -## 关于本手册 - -管理工作流的难点之一是跟踪将要创建的众多文件。Toolkit 工作流可通过以下方法实现文件系统管理自动化:基于 {% include product %} 中的数据和配置的文件夹结构创建文件夹,然后将文件自动写入到正确的位置并使用标准化的命名,艺术家可以专注于内容创建。工作流配置带有一组默认文件夹和文件命名约定,但制作人员通常会对其进行自定义。本手册将提供进行这些自定义设置所需的知识。 - -在默认配置中,资产按照某种文件夹结构进行管理,如 `asset_type/asset/pipeline_step`。在本手册中,我们将使用名为“Set”的自定义实体,按使用每个资产的制作集进行进一步组织。我们将首先在 {% include product %} 中设置自定义实体,然后使用它来管理为任意指定集创建的资产,使文件夹结构类似于 `set/asset_type/asset/pipeline_step`。 - -我们可以举例演示按集组织资产背后的理念:假设您有一个项目,其中某些场景发生在车库中,其他场景发生在餐厅中。借助我们的设置,资产文件(如“wrench”、“oilcan”或“workbench”)在“garage”文件夹中组织,而“plate”、“winebottle”或“tablecloth”在“dining_room”文件夹中组织。在我们的示例中,我们将要确保鲜美多汁的“filet”资产已正确放置在餐厅。 - -在示例中,我们还将编辑项目的文件命名模板,以使资产的 Maya 工作文件在其名称中包含集。动态生成的文件名可区分餐厅的文件与其他集中使用的文件。 - -### 本手册分三个部分 - -* 在 {% include product %} 中创建一个名为“Set”的**自定义实体**,您将使用它来关联艺术家正在创建的餐厅元素。 -* 编辑文件夹**数据结构**,使 Toolkit 包含一个基于文件夹结构中的当前集来动态命名的文件夹。 -* 编辑用于命名资产工作文件的**模板**,使 Toolkit 在文件名中包含关联集的名称。 - -### 先决条件 - -要使用本手册,需要满足以下条件: - -1. 活动的 [{% include product %}](https://www.shotgridsoftware.com/signup/) 站点。您应该拥有至少已创建一个资产的项目。资产应具有模型任务。 -2. 对如何使用 {% include product %} 站点管理资产具有基本了解 -3. 在系统上安装了 [{% include product %} Desktop](https://developer.shotgridsoftware.com/zh_CN/d587be80/#installation-of-desktop)。 -4. 用于已标识项目的克隆工作流配置,或完成[配置快速入门](./advanced_config.md)手册,并克隆在该练习中创建的配置。 -5. 基本熟悉 YAML。 -6. 为存储工作流配置的 Shotgun 管理的文件系统设置适当的读取和写入权限。 -7. 已设置适当的读取和写入权限,以允许 Toolkit 读取和写入到制作文件系统。 -8. Maya 的有效固定期限的使用许可。获取 [Maya](https://www.autodesk.com.cn/products/maya/free-trial) 的 30 天试用版 - -本手册基于 `tk-config-default2` 工作流配置。如果您的配置文件已修改,则文件和文件夹的位置、YAML 设置的区块可能就与此处描述的不同。 - -### 关于文件数据结构和模板 - -Toolkit 工作流配置中的数据结构和模板使您能够充分利用您的 {% include product %} 数据来管理磁盘上的制作文件。默认配置中的数据结构包括**镜头**、**镜头序列**、**资产**、**资产类型**等实体。可以添加其他实体,例如**关卡**、**剧集**、**季**,在我们的示例中,添加的是**集**这样的自定义实体。 - -Toolkit 平台允许您使用**数据结构**来动态构建您的文件夹结构,数据结构是在构建实际制作文件系统时用作模板的制作文件夹结构的微型版本。数据结构是动态创建文件夹的明确指导,它使用 YAML 文件为动态创建的文件夹定义规则。默认配置包含预配置的数据结构,它支持资产和镜头工作流的文件夹创建。您将修改数据结构的一部分,它支持创建资产文件夹结构 `/assets///`,以增加对您正在创建的新 **Set** 实体的支持。 - -**模板**允许您使用数据结构中的 {% include product %} 数据和信息,在创建文件时对其进行动态命名和保存。默认配置提供一组入门模板,您可以对其进行编辑以符合您的工作流需求。 - -ShotGrid 集成的基本设置不包括文件系统管理。为了为您的项目配置文件系统管理,您的项目需要高级设置。第一个手册[配置快速入门](./advanced_config.md)介绍了高级设置流程。 - -## 开始练习 - -通过自定义数据结构和模板,您可以动态管理在创建餐厅集时生成的文件:地点设置、热气腾腾的菲力牛排、一瓶 1951 年的奔富葛兰许、千层焗薯茸、柠檬蒜芦笋等。餐厅集中使用的资产将与“餐厅”集实体相关联,使您能够更轻松地管理它们。集不是默认配置中的标准实体类型,因此您需要启用[自定义实体](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_enabling_custom_entities_html)并将其命名为 Set,然后再扩展数据结构和模板才能使用它。 - -### 启用自定义实体 - -**步骤 1:**在浏览器中打开 {% include product %} 站点。单击您的头像并转至“管理 > 站点偏好设置”(ADMIN > Site Preferences)。在出现的页面上,展开**“实体”(Entities)**部分。 - -![Python 应用](./images/dynamic_filesystem_configuration/1_site_preferences.png) - -显示的是 {% include product %} 中可用的实体类型列表。下图中列表的顶部是为当前 {% include product %} 站点配置的某些实体类型。这些实体类型下方是尚未配置或启用的几个**自定义实体**。 - -### 选择其中一个自定义实体类型,对其进行配置,然后将其启用。 - -![Python 应用](./images/dynamic_filesystem_configuration/2_custom_entity.png) - -**步骤 2:**选择箭头以打开显示为灰色的已禁用自定义实体上的设置。选择**“是,使用自定义实体…”(Yes, use Custom Entity…)**旁边的单选按钮,将**“显示名称”(Display name)**更改为 **Set**,然后滚动到窗口顶部并选择“保存更改”(Save Changes)。 - -![Python 应用](./images/dynamic_filesystem_configuration/4_enable_entity.png) - -这样做可以使此自定义实体在 {% include product %} 中处于活动状态,并将显示名称设置为 *Set*。实际上,您正在创建自定义实体的别名,因为实体的应用插件名称仍为 `CustomEntity01`。在此示例中,我们将使用 `CustomEntity01`;您可能会使用不同的自定义实体。 - -请记住您选择的自定义实体的系统名称。 - -### 添加数据字段以将资产与集关联 - -通过将数据字段添加到资产实体,我们可以将资产链接到新实体。艺术家为餐厅创建的资产将与**餐厅**集实体关联。 - -**步骤 3:**选择页面顶部的**“项目”(Projects)**下拉列表,打开将用于该练习的项目。 - -**步骤 4:**在项目菜单栏中选择**“资产”(Assets)**以转到“资产”(Assets)页面。在“资产”(Assets)菜单中,选择**“字段 > 管理资产字段…”(Fields > Manage Asset Fields…)** - -![Python 应用](./images/dynamic_filesystem_configuration/5_manage_asset_fields.png) - -此动作将显示资产字段管理器。 - -![Python 应用](./images/dynamic_filesystem_configuration/6_manage_asset_fields.png) - -选择**“+ 添加新的字段”(+ Add a new field)**。 - -为新字段选择参数。 - -在**“新建字段名称”(New Field Name)**中,键入“Set”。在**“常规”(GENERAL)**菜单的**“字段类型”(Field Type)**下,选择**“实体”(Entity)**,然后向下滚动以将**类型限制**为**“集”(Set)**。选择**“下一步”(Next)**。 - -![Python 应用](./images/dynamic_filesystem_configuration/7_field_parameters.png) - -在本手册中,将其应用到**“仅当前项目”(Only the current project)**并选择**“创建字段”(Create Field)**。 - -{% include product %} 将配置新字段。 - -![Python 应用](./images/dynamic_filesystem_configuration/8_only_current_project.png) - -已应用您的更改,您可以选择**“完成”(Done)**。 - -### 创建**餐厅**集实体 - -**步骤 5:**选择资产的新**“集”(Set)**字段并开始键入“Dining Room”。将显示一个对话框,指出**“未找到匹配项。创建‘Dining Room’”(No matches found. Create “Dining Room”)** - -![Python 应用](./images/dynamic_filesystem_configuration/11_create_set.png) - -选择**“创建‘Dining Room’”(Create “Dining Room”)**。 - -![Python 应用](./images/dynamic_filesystem_configuration/12_dining_room_set.png) - -选择**“创建集”(Create Set)**。 - -在资产的“集”(Set)字段中添加**“Dining Room”**将会创建与餐厅集实体的[关联](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_linking_custom_entities_html)。 - -![Python 应用](./images/dynamic_filesystem_configuration/13_dining_room_associated.png) - -**步骤 6:**将 **filet** 资产上的模型任务分配给您自己,以便您能够轻松找到它以进行测试。 - -### 设置数据结构 - -现在,您已启用“集”自定义实体,已创建一个名为“Dining Room”的集实体,并且已将“资产”实体链接到“Dining Room”集。您已获得 {% include product %} 站点中的所有要素,现在可以修改您的文件夹结构。艺术家开始处理某个任务时,Toolkit 会使用关联的 {% include product %} 数据来确定要在文件系统中创建的文件夹。将根据工作流配置的数据结构自动创建并命名新文件夹。 - -现在,您需要定义随着艺术家逐步完成制作工作流,您希望 Toolkit 动态生成的文件夹结构。可以通过编辑数据结构来完成此操作。 - -建议在*克隆的*配置中测试配置,以免影响活动的制作配置。克隆过程将创建配置的*副本*,您可以在将更改推送到活动配置之前安全地编辑该副本。您可以在[配置临时沙盒和推行应用](https://developer.shotgridsoftware.com/zh_CN/60762324/#cloning-your-configuration)文档中找到有关克隆配置的详细信息。 - -**步骤 7:**导航至您的工作流配置。向下导航到 schema 文件夹 `/config/core/schema`,然后打开 `project` 文件夹。 - -![Python 应用](./images/dynamic_filesystem_configuration/15_file_structure.png) - -当前数据结构,如下所示: - -`/assets///` - -支持动态创建此文件夹结构: - -`the_other_side/assets/prop/filet/model` - -而我们需要以下结构: - -`the_other_side/assets/Dining-Room/Prop/filet/model` - -要实现此目的,您需要设置如下所示的数据结构: - -`/assets////` - -“集”实体表示为 `CustomEntity01`。我们已在 {% include product %} 中为 CustomEntity01 指定*显示名称* Set,但在我们的配置中,我们将始终按其应用插件名称 `CustomEntity01` 对其进行引用。 - -### 数据结构如何使用 YAML 文件 - -数据结构中可能包含静态和动态文件夹。如果您的数据结构中有一个名为“assets”的静态文件夹,它将对应于制作文件系统中名为“assets”的单个文件夹。另一方面,您的数据结构中可能有一个名为“asset”的动态文件夹,这表示项目中每个资产均有一个文件夹。每个动态文件夹的旁边均具有一个对应的 YAML 文件,且其名称与文件夹相同(例如 `asset/` 和 `asset.yml`),用于定义如何根据数据结构文件夹生成制作文件夹的规则。 - -### 为“集”实体创建新的文件夹和 YAML 文件 - -数据结构的 `project` 文件夹中包含与 {% include product %} 跟踪的不同实体相关的文件夹。您正在添加新的资产实体 CustomEntity01,使 {% include product %} 能够跟踪集中的项。这些项是资产,因此您将编辑资产下的文件夹和 YAML 文件。 - -同样,我们的目标是从 `asset_type/asset/step` 文件夹结构转入 `set/asset_type/asset/step`。因此,我们要添加一个文件夹来表示数据结构中的集,还有一个对应的 YAML 文件。由于我们需要对自定义实体使用应用插件名称,因此我们将创建 `CustomEntity01/` 文件夹和 `CustomEntity01.yml`。 - -**步骤 8:**在数据结构的 `project/assets` 文件夹中添加 `CustomEntity01` 文件夹。 - -![Python 应用](./images/dynamic_filesystem_configuration/16_custom_entity_folder.png) - - -**步骤 9:**在 `CustomEntity01` 文件夹旁边创建一个名为 `CustomEntity01.yml` 的文件,该文件内容如下: - -```yaml -type: "shotgun_entity" - -name: "code" - -entity_type: "CustomEntity01" - -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } -``` - -YAML 文件将向 Toolkit 提供有关如何为 `CustomEntity01` 文件夹命名的说明。在这种情况下,我们将创建一个 `{% include product %}_entity` 类型的文件夹,这意味着它对应于 {% include product %} 查询。`entity_type` 字段告诉我们查询 {% include product %} 中的 `CustomEntity01` 实体,`name` 字段告诉我们查询实体上的哪个*字段* – 在本例中,我们将从 `CustomEntity01` 获取 `code` 字段。 - -`filters` 字段限制了应该创建此动态文件夹的情况。 - -**步骤 10:**将 `asset_type/` 和 `asset_type.yml` 移到 `CustomEntity01` 文件夹中 - -我们希望我们的文件夹结构类似于 `Dining-Room/Prop/filet`,因此 `asset_type` 文件夹在层次结构中应位于 `CustomEntity01` 文件夹*下方*。将 `asset_type/` 和 `asset_type.yml` 移到 `CustomEntity01` 文件夹中。 - -![Python 应用](./images/dynamic_filesystem_configuration/17_schema.png) - -### 编辑 asset.yml 文件 - -`filters` 字段限制了在指定时间为哪些实体创建了文件夹。在当前状态下,`asset.yml` 中的过滤器字段如下所示: - -```yaml -filters: - - { "path": "project", "relation": "is", "values": [ "$project" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } -``` - -当我们决定为资产创建文件夹时,我们需要确保我们位于正确的 project 文件夹和正确的 asset_type 文件夹中。现在,我们已经添加了一个集文件夹,我们还将添加第三个过滤器。如果没有它,我们最后将得到如下所示的文件夹,当然这可能不正确: - -``` -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": [ "$CustomEntity01" ] } -``` - - -## 测试文件夹创建 - -现在,您已成功修改了数据结构,使其按集自定义实体组织资产。现在,我们来对其进行测试。 - -将在 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` 终端命令也可以为任务创建文件夹。 - -我们将使用 `tank` 命令进行测试。 - -**步骤 12:**在 `filet` 资产上运行 `tank folders`。从终端运行以下命令: - -``` -> cd -> ./tank Asset Filet folders -``` - -输出摘要: - -``` ----------------------------------------------------------------------- -Command: Folders ----------------------------------------------------------------------- - -Creating folders, stand by... - -The following items were processed: - - /Users/michelle/Documents/Shotgun/projects/the_other_side -. . . - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/ - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model - - /Users/michelle/Documents/Shotgun/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/publish -. . . - -In total, 23 folders were processed. -``` - -最终的结构与预期相符,Toolkit 非常智能,它甚至在 Dining 与 Room 之间添加了一个短横线。 - -`/the_other_side/assets/Dining-Room/Prop/Filet/model` - - -![Python 应用](./images/dynamic_filesystem_configuration/folders_done.png) - -### 用于读取和写入文件的 Toolkit 模板 - -现在,我们已经设置了文件夹结构,下一步是编辑*模板*,以便在创建制作文件后对其进行恰当命名并放入正确的文件夹。 - -### Toolkit 应用如何使用模板 - -您首先创建了一种在 {% include product %} 中将资产与集关联的方法,即启用 CustomEntity01 来表示集,然后向资产实体添加一个链接字段,以表示资产与集之间的链接。在资产与集之间建立关系后,您可设置文件夹数据结构以使用此关联,将所有资产*文件夹*放置在关联集的文件夹中。现在,您将创建一种方法,以动态命名*文件*并允许 Toolkit 应用自动管理文件。 - -随着艺术家开始处理项目中的任务,将生成必要的文件夹结构。然后,当他们启动 Workfiles 应用的**“File Save”**动作时,文件将自动命名。使用通过 Toolkit 的 Workfiles 应用访问的模板对该文件命名。渲染应用(如 Nuke Write 节点和 Houdini Mantra 节点)使用模板来命名和保存渲染的文件,与已发布文件的 Publisher 应用一样。 - -使用 Workfiles 的**“File Open”**动作访问文件时,它将使用模板来查找要加载的相应文件。Publisher、Loader 和 Nuke Studio Export 应用也会使用模板来查找和管理文件。美工人员不必担心文件名或位置;Toolkit 完全根据模板和正在执行的任务对其进行管理。 - -模板通过配置文件 `//config/core/templates.yml` 进行管理。在前面的两个手册中,您管理和创建了工作环境特定的设置。数据结构和模板设置存储在 `config/core` 文件夹中,并非特定于环境。由于所有模板均存储在单个文件中,因此在不同环境配置文件的应用设置中,都将从该文件对其进行引用。例如,`template_work` 是 Workfiles 应用的设置,指定要将 `templates.yml` 中的哪个模板用于工作文件。根据配置 Workfiles 的环境和插件,您可能会使用此配置设置,指向 `templates.yml` 中的 `maya_shot_work` 模板或 `houdini_asset_work` 模板。 - -**步骤 13:**在工作流配置中打开 `config/core/templates.yml`。 - -此文件分为三个部分: - -* **Keys:**用于构建模板的一组令牌(如 `{version}`、`{Asset}` 等)。在实际使用模板时,它们将替换为实际值。每个键都有必需的名称和类型及其他可选参数。 -* **Paths:**使用键表示磁盘上的文件夹和文件路径的命名字符串。请注意,`paths` 部分中的模板已经过验证,必须实际存在于磁盘上。 -* **Strings:**与 paths 部分相似,但这些是任意文本的模板。paths 部分中的项已经过验证,必须与磁盘上的实际路径对应,而字符串可用于存储您希望在 Toolkit 工作流中引用的任何文本数据。 - -### 为集实体添加模板键 - -首先要做的就是使用实体的应用插件名称,为集实体定义一个新的键。 - -**步骤 14:**将以下行添加到 `templates.yml` 的 `keys` 部分,注意正确缩进: - -```yaml - CustomEntity01: - type: str -``` - -### 修改模板 - -由于模板定义了 Toolkit 读取和写入文件的位置,因此我们在此处定义的路径必须与数据结构中定义的文件夹结构保持一致,这一点至关重要。毕竟,制作文件应该进入我们正在创建的 Shotgun 管理的文件系统。因此,我们将要修改所有资产相关模板,以匹配我们在数据结构中定义的新文件夹结构。 - -然后,我们将修改 Maya 中资产步骤上工作文件的模板,使其在文件名中也包含集。在默认配置中,相关模板是 `maya_asset_work`,我们将从此处开始。 - -在 Maya 中对基于资产的 Workfiles 使用名为 `maya_asset_work` 的模板是默认配置的约定。要确认这是否是正确的模板,请检查 `asset_step` 环境的 `tk-maya` 插件中 `tk-multi-workfiles2` 的 `template_work` 设置值([此处为 Github 中](https://github.com/shotgunsoftware/tk-config-default2/blob/v1.2.4/env/includes/settings/tk-multi-workfiles2.yml#L217))。 - -**步骤 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` 开头。`@` 符号表示 `@asset_root` 的值在其他位置定义。 - -与在环境配置文件中不同,先导 `@` 符号在 `templates.yml` 中不表示*包含*。 - -由于每个集成、应用和环境可能使用不同设置,您可以想象路径的第一部分可能用于 `templates.yml` 内的多个不同位置。对配置进行设置,使其可以使用单个变量来存储常用根路径,然后在模板中引用该变量。当您可以引用公共根时,不必更改路径生成设置的每个实例。 - -默认配置有三个常用根变量:`@shot_root`、`@sequence_root` 和 `@asset_root`。我们将修改 `@asset_root`,这一单个更改将影响与资产相关的每个模板。 - -### 编辑模板使其匹配 Shotgun 管理的文件系统数据结构中的路径 - -**步骤 16:**在 `templates.yml` 的 `paths` 部分顶部搜索 `asset_root`。在默认配置中,它类似如下: - -`asset_root: assets/{sg_asset_type}/{Asset}/{Step}` - -将 `CustomEntity01` 添加到 `asset_root` 路径中以匹配数据结构修改: - -`asset_root: assets/{CustomEntity01}/{sg_asset_type}/{Asset}/{Step}` - -### 将集添加到文件名中 - -我们已更改文件的文件夹结构,以反映我们的数据结构更改,现在文件将读取和写入到合适的位置。现在,我们来修改 Maya 资产工作文件模板的文件*名*,使其也包括集。 - -再次查找 `maya_asset_work` 模板定义。在当前状态下,文件*名*为 - -`{name}.v{version}.{maya_extension}` - -`{name}` 模板键是表示 Workfiles 应用的“File Save”动作中的用户输入的特殊键。我们来修改模板,使其不包含任何用户输入,而是仅包含当前集和资产。 - -**步骤 17:**修改 `maya_asset_work` 模板定义,使其类似如下: - -```yaml - maya_asset_work: - definition: '@asset_root/work/maya/{CustomEntity01}_{Asset}.v{version}.{maya_extension}' -``` - -此动作允许您在文件名中使用 Dining-Room 实体的专有名称。结果将类似于 `Dining-Room_Filet.v1.mb`。 - -现在,您已经修改 `templates.yml` 以反映制作文件夹结构中的新集文件夹,并且在 Maya 中资产任务的工作文件中包含集名称。让我们来检验所做的更改。 - -### 测试 - -**步骤 18:**从 {% include product %} Desktop 启动 Maya。 - -![Python 应用](images/dynamic_filesystem_configuration/23_test_file_creation.png) - -在 Maya 中,转到**“{% include product %} > File Open”**,然后在出现的对话框中,选择您已在 {% include product %} 中为其指定集的资产的任务。 - -![Python 应用](images/dynamic_filesystem_configuration/24_test_new_file.png) - -选择**“+New File”** - -您可以创建简单的三维对象,也可以使用**“{% include product %} > File Save”**保存文件。 - -![Python 应用](images/dynamic_filesystem_configuration/file_save.png) - -成功! - -请注意,**“File Save”**对话框使用模板中的新设置显示**“Preview: Dining-Room_scene.v001.ma”**。 - -**“工作区”(Work Area)**显示 **.../{% include product %}/projects/the_other_side/assets/Dining-Room/Prop/Filet/model/work/maya** 作为 Workfiles 保存文件的位置的路径。 - -## 高级主题 - -### 扩展示例 - -在此示例中,我们修改了一个模板,但对于文件系统配置还有更多工作可以做。在真实的示例中,您可能会更改*所有*与资产相关的文件,使其采用相同的文件命名约定。您可以根据其他实体(季、剧集、关卡等)进行修改、创建用户文件夹、根据使用正则表达式操纵的 {% include product %} 数据对文件夹命名,等等。您可以在[文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)中了解有关所有 Toolkit 文件夹和数据结构选项的信息。 - -### 缓存路径 - -在创建文件夹时,将在磁盘上的文件夹与 {% include product %} 实体之间创建映射。这些映射将存储为 {% include product %} 中的 FilesystemLocation 实体,并缓存在用户计算机上的 SQLite 数据库中。要详细了解缓存路径的工作方式及其使用方式,请参见[此文档](../../../quick-answers/administering/what-is-path-cache.md)。 - - -### 其他资源 - -* [文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/) -* [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 deleted file mode 100644 index 1eeb1cd29..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/editing_app_setting.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -layout: default -title: 编辑配置 -pagename: toolkit-guides-editing-config -lang: zh_CN ---- - -# 编辑工作流配置 -完成本手册后,您将掌握以下基础知识: - -* 查找特定 Toolkit 应用的配置设置 -* 编辑设置 -* 探索配置设置可以扩展的其他功能。 - -## 关于本手册 - -本手册介绍如何编辑现有工作流配置中的设置,以满足项目工作流的需求。第一个手册**[配置快速入门](./advanced_config.md)**介绍了如何准备工作流配置以进行编辑。如果您不熟悉如何为项目创建可编辑的配置,请先完成**配置快速入门**,然后再继续。 - -通过扩展默认配置,{% include product %} Toolkit 允许自定义工作流中的任务。在一个或多个软件包内的 Toolkit 应用中启用或禁用按钮就是简单的自定义示例,它可以更改用户与 Toolkit 功能进行交互的方式。Toolkit 允许使用专用配置,通过创建自定义工作流、自动执行重复和单调的任务、修改挂钩甚至添加基于 Toolkit 平台的自定义工具,让您可以更智能和更快速地工作。遗憾的是,它只能通过 {% include product %} 软件集成进行访问,还不能用于像洗衣服这样的日常任务。 - -本手册中的练习将向您讲解如何查找哪些配置设置控制应用软件中 {% include product %} 应用的动作,设置所在的位置以及如何对其进行编辑。举个具体的例子,我们可以通过编辑“Workfiles”应用下的设置,禁止艺术家用 Maya 的**“+New Task”**按钮创建新任务。 - -## 使用本文档 - -要使用本手册并对工作流配置执行编辑,需要以下内容: - -1. 活动的 [{% include product %}](https://www.shotgridsoftware.com/signup/?utm_source=autodesk.com&utm_medium=referral&utm_campaign=creative-project-management) 站点。 -2. 包含至少一个资产的项目。您可以将资产添加到在第一个手册中创建的 the_other_side 项目。您可以在[配置快速入门](./advanced_config.md)手册中查看如何为项目创建资产。 -3. 用于已标识项目的工作流配置,或完成[配置快速入门](./advanced_config.md)手册,并使用在该练习中创建的配置。 -4. 为存储工作流配置的 Shotgun 管理的文件系统设置适当的读取和写入权限。 -5. 在系统上安装 {% include product %} Desktop。 -6. Maya 的有效固定期限的使用许可。在[此处](https://www.autodesk.com.cn/products/maya/free-trial)获取 Maya 的 30 天试用版 - -{% include info title="注意" content="本手册基于 `tk-config-default2` 工作流配置。如果您的配置文件已修改,则文件和文件夹的位置、YAML 设置的区块可能就与此处描述的不同。"%} - -## 关于工作文件应用 - -Workfiles 应用监管 {% include product %} 软件集成中的文件管理,并控制对浏览、打开和保存工作文件功能的访问。**“+New Task”**按钮是 Workfiles 应用的一个动作,允许用户添加任务,而无需转到 {% include product %} 执行此操作。配置分解为每个环境的文件。这样,您可以管理相对于工作流中不同阶段的功能,从而控制用户何时可以创建、命名和保存文件、执行任务或执行某些功能。这与工作文件应用中的所有功能相关,也适用于修改任何应用或插件的设置。有关更多详细信息,请参见本文档末尾的[高级主题](#advanced-topics)。 - -## 熟悉配置文件 - -使用 {% include product %} 中的“工作流配置列表”(Pipeline Configuration List)查找为您正在处理的项目存储工作流配置的位置。如果您知道其存储位置,可以跳到[步骤 5](#finding-the-pipeline-configuration)。 - -## 查找工作流配置 - -**步骤 1:**打开管理您将用于此练习的项目的 **{% include product %} 站点**。 - -**步骤 2:**通过从**“项目”(Projects)页面**中选择项目,从 **{% include product %} 站点**访问该项目。 - -![{% include product %} 项目](./images/editing_app_setting/1_shotgun_project.png) - -**步骤 3:**选择右上角的**头像**以显示**“管理”(ADMIN)**菜单,并向下滚动以选择**“默认布局 > 工作流配置 > 工作流配置列表”(Default Layouts > Pipeline Configuration > Pipeline Configuration List)**。 - -![工作流配置](./images/editing_app_setting/2_pipeline_configuration.png) - -**步骤 4:**显示**“工作流配置列表”(Pipeline Configuration List)**后,选择列标题最右侧的 **+** 号以添加另一列。在下拉列表中,为您的操作系统选择适当的路径。 - -![操作系统路径](./images/editing_app_setting/3_mac_path.png) - -路径将显示在新字段中。 - -![操作系统路径 2](./images/editing_app_setting/4_mac_path2.png) - -**步骤 5:**在终端或文件管理器中,浏览到存储项目工作流配置的文件夹,并打开该文件夹。 - -Toolkit 配置根文件夹中有三个子文件夹:**cache**、**config** 和 **install**。打开 **config** 文件夹,在其中您会发现几个子文件夹和一些文件。 - -![config 文件夹内容](./images/editing_app_setting/5_config_content.png) - -**env** 文件夹存储支持艺术家的工作环境的集成设置。环境文件允许工作流中的不同阶段具有自定义配置。默认配置带有一组预定义的环境文件,但如果工作流需要一组更精细的环境文件,则可以对这些环境文件进行修改。 - -**步骤 6:**打开 **env** 文件夹。 - -Toolkit 使用 YAML 文件来配置功能。之所以选择 YAML 作为配置的语言,是因为它允许 Toolkit 中的文件以易于读取和自定义的轻量级方式设置格式。您可以在[此处](https://yaml.org/) 了解有关 YAML 的更多信息。配置由嵌套的 YAML 文件组成,这些文件提供标识符插件、应用和框架。它是一个路线图,指导您对一组特定的代码包进行编辑,以便控制您需要自定义的动作。 - -## 编辑配置文件 - -{% include product %} Toolkit 允许对集成在各种软件包中的应用进行更改。工作文件应用的一个功能是**“+New Task”**按钮,该按钮允许用户在**“File Open”**对话框中添加新任务。默认情况下,在项目的每个阶段为每个用户启用此功能。但是工作室可能希望限制此功能,例如,如果他们拥有特定的命名约定,或者想要将任务创建限制到项目的生产管理团队。在这种情况下,他们会为艺术家在 Maya 中工作时使用的工作流中的所有点禁用**“+New Task”**按钮。 - -## 为 Maya 中的项目禁用“+New Task”按钮 - -**步骤 7:**打开 **{% include product %} Desktop**。 - -**步骤 8:**选择您要编辑其配置的项目。 - -![加载项目](./images/editing_app_setting/6_load_project.png) - -**步骤 9:**从 {% include product %} Desktop 启动 Maya。 - -![加载项目](./images/editing_app_setting/7_view_project.png) - -等待 **{% include product %}** 菜单完全加载。如果您的 Internet 连接速度较慢,可以利用运行配置的时间来享用表面带有适量棕红色泡沫的浓缩咖啡。 - -一旦完全加载 Maya 和 {% include product %},就会自动打开**“File Open”**对话框。当从 {% include product %} Desktop 启动 Maya 时,您将在**项目**环境中进入 Maya;Toolkit 工作流的配置将由 `config/env/project.yml` 文件驱动。默认配置中标识的环境包括 `project`、`sequence`、`shot`、`shot_step`、`asset`、`asset_step`。 - -**步骤 10:**在**“File Open”**对话框的左窗格中选择**“资产”(Assets)**选项卡。在搜索结果中显示的文件夹内选择任何资产。 - -![查看任务按钮](./images/editing_app_setting/8_21_view_task_button.png) - -此时将启用**“+New Task”**按钮。 - -## 查找控制“+New Task”按钮的设置 - -Toolkit 工作流配置用于自定义环境以满足您的工作流需求。工作流配置可以覆盖默认 {% include product %} 集成设置,根据需要或多或少会有所不同,以满足项目工作流的需求。这种结构允许采用轻量级配置,从而仅添加与 {% include product %} 核心代码中的默认值不同的设置。在本练习中,我们希望关闭工作文件应用的**“+New Task”**按钮,但在这样做之前,我们需要确定哪个配置设置控制它。 - -**步骤 11:**选择**“File Open”**窗口右上角**“Project (项目名称)”**旁边的 **>**。 - -此参考框显示有关控制**“File Open”**窗口功能的配置设置的详细信息。Toolkit 中的某些应用具有参考框,以显示该应用使用的设置以及默认设置。请注意,**“Location:”**标识符是 **tk-multi-workfiles2**。这是创建 Workfiles 应用的代码包的标识符。在搜索工作流配置时,此名称将标识应用的设置所在位置。有一个[“应用和插件”页面](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/),其中列出了 {% include product %} 集成中可用的工作流的所有配置设置、应用和插件。 - -![Current_work_area](./images/editing_app_setting/9_current_work_area.png) - -在**“Configuration”**标题下查看以查找此特定环境的设置。 - -![Configuration_ref](./images/editing_app_setting/10_configuration_ref.png) - -{% include info title="注意" content="在设置 **my_tasks_filters** 之后是设置 **launch_at_startup**。这一点很重要,因为它是项目环境中**“File Open”**设置的默认设置。这告诉您,当从 ShotGrid Desktop 启动 Maya 时,会自动打开**“File Open”**对话框。" %} - -向下滚动到 **Setting allow_task_creation**。此设置的默认值为 **True**,使用户能够在处于 Maya 项目环境中时创建新任务。 - -![打开文件选项](./images/editing_app_setting/11_open_file_options.png) - -当搜索设置时,要考虑以下几点: - -* 您正在运行的软件应用程序。 -* 您正在处理的文件以及使用的工作环境。可以在应用的参考框中找到这些信息。 -* 特定设置的名称。可以在应用的参考框或[“应用和插件”页面](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/)上找到这些信息。 -* 要扩展的 YAML 文件。YAML 文件中详细说明了标识符和路线图,以将您指引到设置所在的位置。 -* YAML 文件中要扩展的特定块。这在路线图中进行标识。 -* YAML 文件中使用的标识符和符号。 -* 最重要的是,当前项目的配置存储位置。 - -可以在工作流配置内的多个位置使用一个设置。决定在哪个位置使用该设置的因素是:您希望影响的软件集成,以及您希望在工作流中的哪个阶段影响更改。 - -## 查找设置 `allow_task_creation` 的值的位置 - -**步骤 12:**显示 Maya 主窗口。 - -**步骤 13:**在 Maya 窗口的右上角找到**“{% include product %}”**菜单项。 - -![Maya {% include product %}2](./images/editing_app_setting/12_Maya_Shotgun2.png) - -**提示:**如果此菜单不可见,则会显示 **>>** 以表明某些菜单项处于隐藏状态。选择 **>>** 以显示“{% include product %}”菜单,或者您可以加宽 Maya 窗口。 - -**步骤 14:**在菜单右上角选择**“{% include product %} > 项目 the_other_side > 工作区信息…”(ShotGrid > Project the_other_side > Work Area Info…)**。 - -![工作区信息](./images/editing_app_setting/13_work_area_info.png) - -**“Work Area Info”**对话框显示后台内容,以及有关当前工作区的详细信息。这包括您当前的工作环境,以及指向设置所在的环境配置文件的路径。 - -**步骤 15:**在**“Your Current Work Area”**对话框中,选择底部的**“环境”(Environment)**选项卡。 - -第一项标识正在使用的插件。插件推动了将 {% include product %} 工具集成在特定软件应用程序中的能力。它包含特定于每个软件集成的逻辑。窗口中显示的第二项显示当前项目环境所在的路径。 - -![工作区信息环境](./images/editing_app_setting/14_shotgun_work_area_info_Environment.png) - -最后两个文件夹是 `config/env/` 后跟 `project.yml`。`project.yml` 文件是路线图的开头,它将您指引到当前环境的设置所在的位置。 - -**步骤 16:**通过您喜欢的文本编辑器打开 `project.yml`。 - -```yaml -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 - -################################################################################ -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - tk-photoshopcc: "@settings.tk-photoshopcc.project" - tk-shell: "@settings.tk-shell.project" - tk-shotgun: "@settings.tk-shotgun.project" - -################################################################################ -# reference all of the common frameworks - -frameworks: "@frameworks" - -``` - - - -在 `project.yml` 中,description 下面有三个部分:`includes`、`engines` 和 `frameworks`。`includes` 部分是*引用*配置中其他 YAML 文件的文件指针的列表。默认配置的架构利用嵌套文件,并使用指针作为保持文件轻量级的另一种方法。在 **includes** 之后,您将逐个浏览文件,直到找到要查找的配置设置。这有点儿像俄罗斯套娃:您打开一个娃娃,里面嵌套着另一个娃娃,直到您找到合适的配置设置。 - -每个插件标识为 `tk-`。您知道您想要影响 Maya 中的设置,因此我们要查找的标识符是 `tk-maya`。 - -在 `project.yml` 文件的 `includes:` 部分下查看,并找到 `./includes/settings/tk-maya.yml` 这一行。这一行表示,控制 Maya 插件 `tk-maya` 的**设置**的配置嵌套在 **settings** 文件夹内的 **includes** 文件夹中。 - -在 `engines:` 部分中,找到 `tk-maya` 值。 - -`tk-maya: "@settings.tk-maya.project"` - -`@` 表明值源自一个包含文件。 - -`settings` 和 `project` 引用表明它是项目的设置。它们是默认配置中的命名约定,有助于为您提供指导。 - -这一整行告诉我们在包含文件中查找 `settings.tk-maya.project` 块,以找到 Maya 插件 `tk-maya` 的配置设置。 - -{% include product %} Toolkit 会在 YAML 文件中使用简单的术语,来指示设置的名称以及引导您找到它们的路径。通过在 Maya**“File Open”**参考框中查看,我们已经知道,控制**“+New Task”**按钮执行方式的代码包是由 `tk-multi-workfiles2` 标识的。在 YAML 文件中使用这些标识符引用 Toolkit 包。“tk-multi-workfiles2”是 Workfiles 应用代码包的标识符,**“+New Task”**按钮是 Workfiles 应用的一个功能。 - -在 tk-maya.yml 中查找 Workfiles 应用设置 - -**步骤 17:**在文件浏览器中,浏览到 **env/includes/settings** 文件夹并打开 `tk-maya.yml`。 - -![tk maya workfiles](./images/editing_app_setting/16_tk_maya_workfiles.png) - -**步骤 18:**在 `project.yml` 中的 include 之后,在 `tk-maya.yml` 文件中搜索 `settings.tk-maya.project`。您明确希望在特定项目的项目环境中禁用**“+New Task”**按钮。您处于该项目的配置中,并在项目环境中时获得了位置信息。 - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - 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...} - location: "@engines.tk-maya.location" -``` - - - -在 `settings.tk-maya.projects` 下,`tk-multi-workfiles2` 应用设置列为 - -`tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup"` - -`@` 符号告诉我们,`tk-multi-workfiles2` 的值来自一个包含文件。在 `includes` 部分 `tk-maya.yml` 的顶部,我们看到以下内容: - -```yaml -includes: -... -- ./tk-multi-workfiles2.yml -``` - -我们应该在 `tk-multi-workfiles2.yml` 文件(位于与当前文件 `config/env/includes/settings` 的同一目录下)中查找 `settings.tk-multi-workfiles2.launch_at_startup`。 - -**步骤 19:**打开 `tk-multi-workfiles2.yml` 文件并搜索 `settings.tk-multi-workfiles2.launch_at_startup`。 - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - launch_at_startup: true - entities: -``` - - - -Maya 参考框指示 `allow_task_creation` 设置的默认值为 `true`。最佳实践是,工作流配置中不反映默认设置。这允许使用**稀疏**格式,从而仅将与默认代码不同的设置添加到配置中。如果未明确提供设置,则访问该设置的任何调用都将收到默认值。当 Toolkit 读取配置并构建环境时,在该环境中运行的应用、插件和框架将使用该项目的工作流配置设置,并根据配置中的内容覆盖任何默认设置。 - -**步骤 20:**在 `tk-multi-workfiles2.yml` 中,在 `settings.tk-multi-workfiles2.launch_at_startup:` 下添加 `allow_task_creation` 并将值设置为 `false` - -```yaml -# launches at startup. -settings.tk-multi-workfiles2.launch_at_startup: - allow_task_creation: false - launch_at_startup: true - entities: -``` - - - -**注意:**Toolkit 默认配置设置按字母顺序排列,是查找特定设置的简单方法。如果保持这种约定,由于配置变得更重量级,因此让您的工作轻松很多。 - -**步骤 21:**保存文件。 - -## 重新加载配置 - -**步骤 22:**在 Maya 的**“File Open”**对话框中,打开参考框,然后选择**“Reload Engines and Apps”**。 - -![重新加载插件](./images/editing_app_setting/20_refresh_engines_apps.png) - -这将重新加载配置设置。 - -## 查看您所做的更改 - -**步骤 23:**导航到**“File Open”**对话框,然后选择资产。 - -![查看任务按钮](./images/editing_app_setting/8_21_view_task_button.png) - -请注意,**“+New Task”**按钮不可见。 - -您已修改 Workfiles 应用的配置设置,更改了项目环境中按钮的行为。由于您只在项目环境中修改了该设置,因此,如果您开始在其他环境中工作,则**“+New Task”**按钮的设置仍将处于活动状态。在实际制作示例中,我们可能会对*所有*环境进行在此处所做的更改。 - -## 更改环境 - -**步骤 24:**在资产搜索结果下,打开一个文件夹并选择要处理的资产。 - -![移动到资产环境](./images/editing_app_setting/22_moving_to_asset_environment.png) - -**步骤 25:**选择**“+New File”** - -通过选择**“+New File”**,您开始处理新资产,并在 Maya 中加载 `asset_step` 环境。当美工人员选择资产任务并创建新文件或打开现有文件时,将会自动加载 `asset_step` 环境,从而显示为工作流中的该阶段配置的工具和功能。 - -## 了解您的工作环境 - -**步骤 26:**在 Maya 菜单的右上角,选择**“{% include product %}”**。 - -![艺术资产环境](./images/editing_app_setting/23_Art_Asset.png) - -**“Art, Asset Text Overlay”**告知您正在处理资产以及您所在的环境。 - -**步骤 27:**选择**“Art, Asset Text Overlay > Work Area Info…”**以显示当前工作区中的参数。 - -**步骤 28:**选择底部的**“环境”(Environment)**选项卡。 - -![资产工序环境](./images/editing_app_setting/24_asset_step_env.png) - -每个环境都会显示确定设置在工作流配置中所在位置所需的信息。要禁止美工人员添加新任务,必须为美工人员的每个工作环境禁用**“+New Task”**按钮。对于每个环境,请使用上面概述的相同步骤来适当地编辑配置。 - -注意:每个环境都是独立的,一个项目具有专用的配置,加载项目时软件集成仅从工作流配置中读取其特定软件的设置。 - -您现在已经编辑了工作流配置,对应用的设置进行了更改。现在,真正有趣的事情开始了:学习使用 {% include product %} Toolkit 环境可以执行的所有任务。下面是一些要探索的高级主题。 - -## 高级主题 - -在本手册中,我们在单个插件 `tk-maya` 和单个环境 `project` 中对应用的配置设置进行了简单的更改。您了解到,Toolkit 按环境进行组织,每个环境对于每个软件执行都是唯一的,项目和任务专注于环境,允许您在工作流的已定义点为艺术家提供特定功能。您可以概括我们的简单更改,以便对 Toolkit 工作流配置进行丰富的自定义。 - -### 其他插件 - -Workfiles 应用的应用插件名称是 `tk-multi-workfiles2`,名称中的 `multi` 表明它是一个**多应用**。多应用与软件无关,即,无论您是在 Maya、Nuke、Houdini 还是其他任何受支持的应用中运行它们,它们的特性和功能都是相同的。如果要在所有软件包中禁用 Workfiles 中的任务创建,则应按照本手册中针对每个**插件**(`tk-nuke`、`tk-houdini` 等)的步骤进行操作。 - -### 其他环境 - -我们在项目环境中禁用了任务创建,但在实际的工作室环境中,您可能希望在艺术家的所有工作环境中禁用它。要执行此操作,您应该按照本手册中的步骤进行操作,但不是从 `project.yml` 开始,而是从 `asset_step.yml`、`shot_step.yml` 等开始。 - -### 创建自定义环境 - -默认配置附带了一组预定义的工作流工序:`project`、`sequence`、`shot`、`shot_step`、`asset` 和 `asset_step`。但是,工作室可能需要为工作流的每个阶段(即 `asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` 等)使用不同的配置设置。Toolkit 支持自定义环境。有关详细信息,请参见[“环境配置参考”的“自定义环境”部分](https://developer.shotgridsoftware.com/zh_CN/c73fcb84/#custom-environments)。 - -### 视频资源 - -* [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/images/advanced_config/10_define_storage2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png deleted file mode 100644 index 16ef3dcbd..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/10_define_storage2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png deleted file mode 100644 index 600e6c4fc..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/11_storage_root_folder.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png deleted file mode 100644 index 4a164c7b7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/12_define_Storage3.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png deleted file mode 100644 index 01f31b998..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/13_define_storage4.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png deleted file mode 100644 index 8c8a5da0f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/14_project_folder_name.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png deleted file mode 100644 index 960b1da6b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/15_centralized_storage.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png deleted file mode 100644 index 615afd5ee..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/16_project_setup_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png deleted file mode 100644 index 351ac9de6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/17_project_setup_complete.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png deleted file mode 100644 index 86171f31b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/18_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png deleted file mode 100644 index dda8b753b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/1_config_comparison.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png deleted file mode 100644 index 886d4ed38..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/2_new_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png deleted file mode 100644 index ae1d845d3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/3_login.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png deleted file mode 100644 index 7f8377111..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/4_load_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png deleted file mode 100644 index 24bc74242..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/5_refresh_projects_list.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png deleted file mode 100644 index 319c3d8ce..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/6_advanced_project_setup.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png deleted file mode 100644 index 177b8ab31..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/7_select_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png deleted file mode 100644 index 5d0d28295..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/8_select_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png deleted file mode 100644 index 958fe3fd0..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/advanced_config/9_define_storage1.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png deleted file mode 100644 index c7b463acf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/10_set_field.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png deleted file mode 100644 index 19e65b2ff..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/11_create_set.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png deleted file mode 100644 index 2303e8b9a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/12_dining_room_set.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png deleted file mode 100644 index 1ee4f3b73..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/13_dining_room_associated.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png deleted file mode 100644 index fe4e97f37..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/14_task_details.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png deleted file mode 100644 index 9ca0fe1ca..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/15_file_structure.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png deleted file mode 100644 index b613553e3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/16_custom_entity_folder.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png deleted file mode 100644 index 06c47e2f2..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/17_schema.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png deleted file mode 100644 index 16173a0cd..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/18_asset_info2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png deleted file mode 100644 index 5b1bd8d25..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/19_asset_info.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png deleted file mode 100644 index 4bb30ca95..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/1_site_preferences.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png deleted file mode 100644 index c7fac1911..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/20_asset_info.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png deleted file mode 100644 index dba682140..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/21_asset_info.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png deleted file mode 100644 index 53c803581..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/22_final_filesystem.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png deleted file mode 100644 index 50c60f42d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/23_test_file_creation.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png deleted file mode 100644 index 693258831..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/24_test_new_file.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png deleted file mode 100644 index 8567b84a6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/25_file_save.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png deleted file mode 100644 index 42cb8933c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/26_task_details.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png deleted file mode 100644 index 4e3989b67..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/27_file_save.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png deleted file mode 100644 index b883dfe9c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/2_custom_entity.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png deleted file mode 100644 index c8812d2c8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/3_custom_entity01.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png deleted file mode 100644 index 232c084a4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/4_enable_entity.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png deleted file mode 100644 index 5b70b4661..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/5_manage_asset_fields.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png deleted file mode 100644 index b8de6b997..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/6_manage_asset_fields.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png deleted file mode 100644 index e2b52ed80..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/7_field_parameters.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png deleted file mode 100644 index 2e5cd5065..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/8_only_current_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png deleted file mode 100644 index 9605e104a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/9_manage_asset_fields.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png deleted file mode 100644 index 33d191d29..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/file_save.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png deleted file mode 100644 index 6e6807098..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/dynamic_filesystem_configuration/folders_done.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png deleted file mode 100644 index ce2ec144b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/10_configuration_ref.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png deleted file mode 100644 index 24e78b3f5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/11_open_file_options.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png deleted file mode 100644 index 02054435f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/12_Maya_Shotgun2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png deleted file mode 100644 index 21aae45ed..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/13_work_area_info.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png deleted file mode 100644 index 399139879..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/14_shotgun_work_area_info_Environment.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png deleted file mode 100644 index 0b4983e6c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/15_project_yml_env.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png deleted file mode 100644 index e2f174b72..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/16_tk_maya_workfiles.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png deleted file mode 100644 index 83c687bbb..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/17_tk-maya_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png deleted file mode 100644 index a3a2103ff..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/18_workfiles2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png deleted file mode 100644 index 4fb1b81ba..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/19_edit_workfiles2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png deleted file mode 100644 index dbba6ca36..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/1_shotgun_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png deleted file mode 100644 index 90720adf4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/20_refresh_engines_apps.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png deleted file mode 100644 index 4b46b3b9e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/22_moving_to_asset_environment.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png deleted file mode 100644 index ce24fe454..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/23_Art_Asset.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png deleted file mode 100644 index a1d855ceb..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/24_asset_step_env.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png deleted file mode 100644 index 8e6a68ded..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/2_pipeline_configuration.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png deleted file mode 100644 index 11ce9c490..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/3_mac_path.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png deleted file mode 100644 index 3ac34dece..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/4_mac_path2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png deleted file mode 100644 index 6ad051dd7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/5_config_content.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png deleted file mode 100644 index be9d5d78b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/6_load_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png deleted file mode 100644 index bb3c90585..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/7_view_project.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png deleted file mode 100644 index 3041b4a7c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/8_21_view_task_button.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png deleted file mode 100644 index 5ac59e300..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/editing_app_setting/9_current_work_area.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_app_locations.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png deleted file mode 100644 index 7cb811420..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/10_clone_complete.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png deleted file mode 100644 index cfd2c37a4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_select_clone.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/11_tk-maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png deleted file mode 100644 index 08e368645..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_clone_app_locations.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/12_maya_cloned_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_app_in_maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png deleted file mode 100644 index 6bf123caf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/13_tk-maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png deleted file mode 100644 index 8477325a1..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_file_open.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png deleted file mode 100644 index cefdc1de9..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/14_maya_cloned_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png deleted file mode 100644 index ddc7cf4d0..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/15_project_ID.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png deleted file mode 100644 index 772ddc7c7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_id_column.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png deleted file mode 100644 index 95ec58268..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/16_project_ID.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png deleted file mode 100644 index ca2a9a1c8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_id_column.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png deleted file mode 100644 index 2e89edaaf..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/17_tank_push_command.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_change_config_maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png deleted file mode 100644 index daa0ba2e7..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/18_old_tank_push_command.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png deleted file mode 100644 index b550c7a4b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_app_in_maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png deleted file mode 100644 index 0375bff17..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/19_push_complete.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png deleted file mode 100644 index 840b4dcee..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/1_python_app.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png deleted file mode 100644 index 59344cb31..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_change_config_maya.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/20_desktop_python_console.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png deleted file mode 100644 index dcd35bd8d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/21_desktop_python_console.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png deleted file mode 100644 index 0df92a84a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/2_python_app_info.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png deleted file mode 100644 index f869b72e1..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/3_list_of_apps.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png deleted file mode 100644 index 72e66a27b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/4_REPLACE_pipeline_configuration_list.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png deleted file mode 100644 index 2e2fc1281..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/5_add_project_column.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png deleted file mode 100644 index e8da69d7d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_clone_configuration.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png deleted file mode 100644 index f360e1e8c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/6_path_to_config.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png deleted file mode 100644 index 8068358fa..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_name_clone.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png deleted file mode 100644 index 8bdd30415..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/7_path_to_config2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png deleted file mode 100644 index 7cb811420..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_complete.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png deleted file mode 100644 index e8da69d7d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/8_clone_configuration.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png b/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png deleted file mode 100644 index 8068358fa..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/getting-started/images/installing_app/9_name_clone.png and /dev/null differ 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 deleted file mode 100644 index 563ccfdfa..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/getting-started/installing_app.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -layout: default -title: 添加应用 -pagename: toolkit-guides-adding-app -lang: zh_CN ---- - -# 添加应用 - -通过完成本手册,您将很快熟悉 Toolkit 中的配置管理工具,并学会如何: - -* 安全地创建使用中的工作流配置的副本 -* 将应用添加到配置 -* 添加在特定环境中使用该应用所需的设置 -* 将更改同步回使用中的工作流配置 - -## 关于本手册 - -本手册将演示如何将 {% include product %} Toolkit 应用添加到现有的工作流配置。您将很快熟悉配置管理工具。 - -我们要添加的应用是 {% include product %} Python 控制台应用。Maya 具有其自己的 Python 控制台,但是 Toolkit 应用中有一些功能在 Maya 控制台中不存在。 - -本手册利用我们在[编辑工作流配置](./editing_app_setting.md)手册中创建的工作流配置。如果您尚未完成此手册,则可以使用现有的工作流配置,并在其中添加该应用。 - -## 使用本文档 - -要使用本手册并安装 Toolkit 应用,需要以下内容: - -1. 活动的 [{% include product %}](https://www.shotgridsoftware.com/signup/) 站点。 -2. 用于已标识项目的工作流配置,或完成[配置快速入门](./advanced_config.md)手册,并使用在该练习中创建的配置。 -3. 为存储工作流配置的 Shotgun 管理的文件系统设置适当的读取和写入权限。 -4. 在系统上安装 {% include product %} Desktop。 -5. Maya 的有效固定期限的使用许可。在[此处](https://www.autodesk.com.cn/products/maya/free-trial) 获取 Maya 的 30 天试用版。 - -{% include info title="注意" content="本手册基于 tk-config-default2 工作流配置。如果您的配置文件已修改,则文件和文件夹的位置、YAML 设置的区块可能就与此处描述的不同。"%} - -## 关于 {% include product %} Toolkit 应用 - -### Toolkit 应用工作方式 - -工作流配置中引用的应用可以来自不同的位置。默认配置中的标准应用来自 {% include product %} 应用商店。工作流配置中的文件指定 {% include product %} 集成如何访问应用,有点像询问 Toolkit,“您能在小黑本中查找 Python 控制台应用的地址吗?”工作流配置文件告知 Toolkit 在何处可以找到用于特定应用的代码包。 - -Toolkit 应用的“地址”列在默认配置的 `config/env/includes/app_locations.yml` 文件中,并指定如何查找代码。这些“地址”称为[描述符](https://developer.shotgridsoftware.com/tk-core/descriptor.html)。不仅需要告诉 {% include product %} 集成如何查找应用的代码包,还需要告诉它在哪些环境中使用该应用。 - -下面概念性概述了如何安装应用以及如何告知 {% include product %} 集成在何处使用它。 它概述了扩展配置的步骤,要求 Toolkit 查找描述符,并告知 {% include product %} 在何处使用该应用。 本手册详细介绍了这些步骤: - -1. 确定要添加的应用的描述符。 -2. 复制要将应用描述符添加到的活动工作流配置。 -3. 确定该应用的描述符在配置中是否存在,如果不存在,则添加它。 -4. 使用空格而不是制表符进行缩进,从而正确设置 YAML 文件的格式。 -5. 确定要在哪些环境中使用该应用。 -6. 在这些环境中,添加允许 {% include product %} 使用该应用的设置。 -7. 测试新配置。 -8. 使扩展配置生效。 - -### 查找 Python 控制台应用的位置描述符 - -**步骤 1:**打开[应用和插件页面](https://developer.shotgridsoftware.com/zh_CN/9e62da4a/),并在 Maya 下查找 {% include product %} Python 控制台的信息。选择标题。 - -![Python 应用](./images/installing_app/1_python_app.png) - -这将显示[应用的信息](https://developer.shotgridsoftware.com/zh_CN/770a748a/),其中包括小黑本所需的所有内容。 - -![Python 应用信息](./images/installing_app/2_python_app_info.png) - -**应用插件名称**是主标识符:`tk-multi-pythonconsole`。您还需要**最新版本**:v1.1.2。 - -### 确认在 Maya 的项目环境中没有 Python 控制台应用 - -**步骤 2:**启动 Maya 并选择 {% include product %} 菜单**“{% include product %} > 项目 the_other_side”(ShotGrid > Project the_other_side)**,您会看到可用于项目环境中该项目的应用列表。 - -![应用列表](./images/installing_app/3_list_of_apps.png) - -## 扩展配置 - -要编辑处于制作阶段的配置,您需要先创建一个副本,然后编辑该副本。这样,您不会影响实时配置,可以先创建一个安全空间进行测试,然后再使其生效。通过创建临时沙盒,您可以使用当前在制作中使用的工作流配置的副本。在沙盒中,您对配置副本进行更改,测试这些更改,然后再使其在制作中生效。 - -克隆工作流配置可自动执行以下过程:创建副本,构建可以在其中使用副本的沙盒,然后再将新配置推送到实时制作中。 - -## 克隆要将应用添加到的工作流配置 - -### 转到工作流配置列表。 - -**步骤 3:**打开 {% include product %},在右上角选择**“管理”(Admin)菜单(您的头像)>“默认布局 > 工作流配置 > 工作流配置列表”(Default Layouts > Pipeline Configuration > Pipeline Configuration List)**。 - -![工作流配置列表](./images/installing_app/4_REPLACE_pipeline_configuration_list.png) - -此动作将显示 {% include product %} 站点的所有工作流配置的详细列表。 - -**步骤 4:**显示“工作流配置列表”(Pipeline Configuration List)后,选择列标题最右侧的 **+** 号,然后添加**“项目”(Projects)**列。 - -![添加项目列](./images/installing_app/5_add_project_column.png) - -### 查看项目配置所在的位置 - -**步骤 5:**此外,针对您的操作系统添加适当的**路径**字段。 - -![配置的路径](./images/installing_app/6_path_to_config.png) - -这会显示配置文件的路径。 - -![配置的路径 2](./images/installing_app/7_path_to_config2.png) - -**步骤 6:**在**“主要”(Primary)**行项旁边的空白区域中**单击鼠标右键**,然后在上下文菜单中选择**“克隆此配置…”(Clone this Configuration…)**。 - -![克隆完成](./images/installing_app/8_clone_complete.png) - -**步骤 7:**在配置列表中命名配置,然后在目录中分别命名文件:“Primary Clone Config 2”和“the_other_side_clone2”。选择**“确定”(OK)**。 - -![命名克隆](./images/installing_app/9_name_clone.png) - -等待 {% include product %} 复制配置中的所有文件和文件夹,并为应用创建缓存。 现在就可以使用应用,让您可以一边喝着香浓咖啡,一边享用羊角面包。 - -![克隆完成](./images/installing_app/10_clone_complete.png) - -完成后,将使用有关克隆配置的信息更新配置列表,并且将在本地 config 文件夹中添加新配置。 - -{% include info title="注意" content="在**“用户限制”(User Restrictions)**下,添加了您的用户名。ShotGrid 自动将对新配置的访问权限限制为仅创建配置的人员。 您可以添加要编辑、测试并最终使用此配置的人员。另一方面,ShotGrid 可实现灵活性和可控性。 "%} - -## 将克隆的配置与项目相关联 - -**步骤 8:**打开 {% include product %} Desktop,并选择您为其创建克隆配置的项目。 选择右上角的**向下箭头**以显示与此项目关联的配置,然后选择刚创建的 **Primary Clone Config 2**。 - -![选择克隆](./images/installing_app/11_select_clone.png) - -{% include product %} Desktop 现在正在使用此项目的克隆配置。 - -## 编辑工作流配置 - -**步骤 9:**在文件系统中,在创建克隆配置时指定的路径中查找克隆配置。查看 `config/env/includes/app_locations.yml` 文件。 - -![克隆应用位置](./images/installing_app/12_clone_app_locations.png) - -`app_locations.yml` 文件是默认配置的小黑本,应用的描述符列在此文件中。此文件指向应用所在的位置,并允许您为该应用创建设置。 - -如果您要使用的应用未在小黑本中引用,则需要告知 Toolkit 在哪里找到它。 - -## 告知 Toolkit 在哪里找到应用 - -**步骤 10:**在此文件中搜索 `pythonconsole`。如果为项目使用了默认配置,您会发现此文件中列出了 Python 控制台应用的描述符。它应该与我们开始配置时查看的 Maya 应用[列表](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/)中的描述相匹配。检查以确保版本与我们在 Maya 应用列表中查看的内容相匹配。 - -```yaml -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 - -``` - -{% include info title="注意" content="如果您使用的是其他配置,则可能需要将描述符添加到文件中。" %} - -所有应用和插件都有描述符。您可以在[核心 API 文档的“描述符”部分](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types)中阅读有关描述符工作方式以及如何设置 `type:` 的内容。 - -## 告知 Toolkit 使用描述符 - -现在,我们需要告知 Toolkit 使用描述符来查找 Python 控制台应用,并在我们处于 Maya 的项目环境中时使用它。 - -**步骤 11:**打开克隆配置中的 `config/env/project.yml` 文件,并找到 `tk-maya` 插件的设置。 - -```yaml -# configuration for all engines to load in a project context - -engines: - tk-3dsmaxplus: "@settings.tk-3dsmaxplus.project" - tk-desktop: "@settings.tk-desktop.project" - tk-flame: "@settings.tk-flame.project" - tk-hiero: "@settings.tk-nuke.hiero.project" - tk-houdini: "@settings.tk-houdini.project" - tk-mari: "@settings.tk-mari.project" - tk-maya: "@settings.tk-maya.project" - tk-motionbuilder: "@settings.tk-motionbuilder.project" - tk-nuke: "@settings.tk-nuke.project" - tk-nukestudio: "@settings.tk-nuke.nukestudio.project" - 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` 标识环境。 - -### YAML 文件 - -{% include product %} Toolkit 工作流配置使用 [YAML](https://yaml.org/spec/1.2/spec.html) 文件中的简单术语来标识应用和插件的位置及其设置。 - -对于此特定块: - -* `settings` 是为默认配置选择的作为对 settings 文件夹的引用的字符串 -* `project` 是为默认配置选择的作为对项目环境的引用的字符串 -* `tk-maya` 是 Toolkit 的 Maya 插件的标识符 -* `@` 是 Toolkit 术语,用于表示设置值来自包含文件 - -YAML 文件是 {% include product %} 集成的窗口,可以更轻松地配置满足您的工作流需求的工作环境。 - -### 配置如何引用 Toolkit 包 - -{% include product %} 集成的代码被组织成应用、插件和框架的包。 在 Toolkit 的 YAML 文件中使用 `tk-maya`、`tk-multi-pythonconsole` 等标识符对这些包进行引用。每个包的相应 YAML 块都包含用于控制如何访问和使用所标识包的设置。 - -## 在何处放置 Python 控制台的设置 - -对于默认配置中的此特定块,“tk-maya.project”是项目环境中 Maya 插件的标识符。我们的目标是将 Python 控制台应用代码包添加到项目环境中的 Maya 插件。根据所使用的术语,可以肯定的是 `tk-maya.yml` 是项目环境设置所在的 YAML 文件的名称。在 `tk-maya.yml` 文件中查找 `apps` 的 `settings.tk-maya.project`。 - -**步骤 13:**要查找该文件,在 engines 上方的 includes 部分中查找 `tk-maya.yml`。 - -`./includes/settings/tk-maya.yml` - -**步骤 14:**在克隆配置中,在文本编辑器中打开 `config/env/includes/settings/tk-maya.yml`,并搜索 `settings.tk-maya.project`。 - -![tk-maya](./images/installing_app/13_tk-maya.png) - -**步骤 15:**在以下部分的下方添加位置描述符 - -```yaml -settings.tk-maya.project: - apps: -``` - -使用 `about` 应用 `tk-multi-about:`,作为如何添加位置描述符的指南,然后保存该文件。 - -{% include info title="注意" content="请确保使用空格而不是制表符正确设置 [YAML](https://www.tutorialspoint.com/yaml/yaml_indentation_and_separation.htm) 文件的格式。" %} - -```yaml -# project -settings.tk-maya.project: - apps: - tk-multi-about: - location: "@apps.tk-multi-about.location" - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" - tk-multi-screeningroom: "@settings.tk-multi-screeningroom.rv" - tk-multi-shotgunpanel: "@settings.tk-multi-shotgunpanel" - tk-multi-workfiles2: "@settings.tk-multi-workfiles2.launch_at_startup" -``` - -您会注意到,**审片室、{% include product %} 面板和 Workfiles 2** 应用的位置标识符列在不同的包含文件中,并且以不同于**关于**应用的方式进行访问。 为了保持整洁,这些应用被拆分到包含的 settings 文件夹,因为它们具有其他设置。 - -{% include info title="注意" content="Python 控制台应用已经存在于默认配置中,但是如果您添加的应用以前从未添加到配置中,或者您已更改应用的版本,并且使用的是[集中式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations),则需要额外执行一个步骤。打开终端,并浏览到存储克隆配置的位置。从克隆配置的根文件夹中,运行以下命令:
- -在 Linux 或 Mac 上: - - ./tank cache_apps - -在 Windows 上: - - tank.bat cache_apps - -这将扫描应用、插件和框架的配置并确保它们均已下载。" %} - -## 查看 Maya 中的更改 - -**步骤 16:**打开 {% include product %} Desktop,选择正在处理的项目,并确认您使用的是克隆配置。 - -在项目名称下,将出现一个蓝色条,其中包含您创建的克隆的名称。 - -{% include info title="注意" content="如果您使用的是主要配置,则不会出现蓝色条,并且配置名称将不可见。" %} - -![Maya 克隆配置](./images/installing_app/14_maya_cloned_config.png) - -**步骤 17:**从 Desktop 启动 Maya,然后选择菜单**“{% include product %} > 项目 > …”(ShotGrid > Project > …)** - -如果: - -* 您使用的是刚编辑的克隆配置 -* 克隆配置已正确扩展 -* 您保存了扩展文件 -* 您选择将项目与克隆配置相关联 -* 您从 {% include product %} Desktop 重新启动了 Maya - -Python 控制台应用将在 Maya 中可用。 - -![项目 ID](./images/installing_app/16_project_ID.png) - -## 将更改推送到制作中 - -在确认正确添加了 Python 控制台应用后,您就可以使更改生效了。 - -**步骤 18:**打开终端,并浏览到存储克隆配置的位置。从克隆配置的根文件夹中,运行以下命令: - -在 Linux 或 Mac 上: - -`./tank push_configuration` - -在 Windows 上: - -`tank.bat push_configuration` - -按照提示操作,并键入项目主要配置(您要将更改推送到的配置)的 ID。 - -``` - -$ ls -cache config install tank tank.bat -$ ./tank push_configuration - -Welcome to the Shotgun Pipeline Toolkit! -For documentation, see https://support.shotgunsoftware.com -Starting Toolkit for your current path -'/Users/michelle/Documents/Shotgun/configs/the_other_side_clone2' -- The path is not associated with any Shotgun object. -- Falling back on default project settings. -- Running as user 'Michelle' -- Using configuration 'Primary Clone Config 2' and Core v0.18.159 -- Setting the Context to Project the_other_side. -- Running command push_configuration... - - ----------------------------------------------------------------------- -Command: Push configuration ----------------------------------------------------------------------- - -This command will push the configuration in the current pipeline configuration -('Primary Clone Config 2') to another pipeline configuration in the project. -By default, the data will be copied to the target config folder. If pass a ---symlink parameter, it will create a symlink instead. - -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): - -``` - -将出现一个可以将克隆配置推送到的可用工作流配置的列表。输入您要为其更新配置的项目的主要工作流配置的 ID。 - -{% include info title="注意" content="您也可以在本手册的**“步骤 3”**中查看的 ShotGrid 中的“工作流配置”(Pipeline Configuration)页面上找到工作流配置的 ID。 要查找项目 ID,请转到“配置列表”(Configuration List),并添加“ID”列。" %} - -![ID 列](./images/installing_app/17_id_column.png) - -输入 ID 后,{% include product %} 将: - -* 备份主要配置 -* 复制克隆配置 -* 将复制的克隆配置与项目相关联,使克隆保持不变 -* 显示保存主要配置的位置 -* 检查是否有任何需要下载和缓存的应用 - -``` -Please type in the id of the configuration to push to (ENTER to exit): 1 -Hold on, pushing config… -Your old configuration has been backed up into the following folder: -/Users/michelle/Documents/Shotgun/configs/the_other_side/config.bak.20190118_111627 -Checking if there are any apps that need downloading… - -Push Complete! -``` - -## 查看在主要配置中所做的更改 - -**步骤 19:**在 {% include product %} Desktop 中,单击右上角的箭头,并在**“配置”(CONFIGURATION)**列表中选择**“主要”(Primary)**。 - -![更改配置 maya](./images/installing_app/18_change_config_maya.png) - -**步骤 20:**从 Desktop 启动 Maya,并查看菜单**“{% include product %} > 项目 > …”(ShotGrid > Project > …)**以查找“{% include product %} Python 控制台...”(ShotGrid Python Console...) - -![Maya 中的应用](./images/installing_app/19_app_in_maya.png) - -Python 控制台应用已添加到所选项目的项目环境中。我们在第二个手册[编辑配置](./editing_app_setting.md)中讨论过,每个环境都是独立的,每个项目都有专用配置,软件集成在加载项目时从工作流配置中收集设置。为使 Python 控制台在环境中可用,该环境需要使用一些指令以便在 `app_locations.yml` 文件中查找位置描述符。考虑到这一点,在工作流中您希望使用 Python 控制台应用的任何阶段,都需要“在此处使用 Python 控制台应用”设置。 - -## 高级主题 - -### {% include product %} 开发人员社区 - -Toolkit 的一个奇妙之处在于,任何人都可以创建 Toolkit 应用。应用可以保持专有,也可以在 [{% include product %} 社区](https://community.shotgridsoftware.com/c/pipeline/6)中分享,并添加到 {% include product %} 库。如果您已经在 {% include product %} 区页面上创建了真正想要共享的主要应用,请访问[支持站点](https://knowledge.autodesk.com/contact-support)以获取帮助。 - -在 **[{% include product %}-dev Google 组](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev)**中对标准 Toolkit 应用和由充满爱心的 {% include product %} 社区创建的应用进行了热烈的讨论。随着 {% include product %} 社区内容日益丰富,知识和工具库将不断壮大。 - -### 研究如何扩展配置 - -您可能已经注意到,当我们选择要用于项目的配置时,{% include product %} Desktop 下拉菜单中提供了 Python 控制台应用。 - -![Desktop Python 控制台](./images/installing_app/20_desktop_python_console.png) - -如果有一个环境正在使用您要添加到工作流配置的应用,则可以使用少量检测工作来查找将该应用添加到配置所需的信息。通过在使用该应用的环境中查看配置文件,您可以确定如何添加应用位置描述符和设置。 - -Desktop 应用会在项目环境中打开,因此在 `project.yml` 文件中查找 `tk-desktop`。 - -打开 `config/env/project.yml`。 - -在插件块中,`tk-desktop` 指向包含的内容: - -```yaml -includes: - - ./includes/settings/tk-desktop.yml - -engines: - tk-desktop: "@settings.tk-desktop.project" -``` - -在包含内容之后,打开 `config/env/includes/settings/tk-desktop.yml` 并查找 `settings.tk-desktop.project` 块。在该块中,您会看到以下内容:

- -```yaml -apps: - tk-multi-pythonconsole: - location: "@apps.tk-multi-pythonconsole.location" -``` - -在项目工序中,这些块将 Python 控制台应用添加到 Desktop 插件。 - -在此之后,进一步包含 `../includes/app_locations.yml`,并搜索 `apps.tk-multi-pythonconsole.location` 以查找以下内容:

- -```yaml -# pythonconsole -apps.tk-multi-pythonconsole.location: - type: app_store - name: tk-multi-pythonconsole - version: v1.1.2 -``` - -每个应用、插件和框架都有位置描述符,用于告知 Toolkit 在何处访问特定的包。许多应用描述符都位于 `app_locations.yml` 文件中,但可能无法在所需的位置引用它们,正如我们在 Python 控制台应用中看到的那样。所有标准应用和插件都列在[应用和插件页面](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/) 中。 - -您可以将任何应用添加到 ShotGrid 支持的任何适当的软件集成中,也可以将您自己的专有应用添加到 Toolkit 库中。所有受支持的软件应用程序也列在集成[应用和插件页面](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/)中。 - -如果找不到您要查找的确切应用,则可以创建一个。其他 ShotGrid 用户很有可能需要同样的功能,因此分享新应用是回馈 ShotGrid 社区的一种方式。 - -在[下一个手册](https://developer.shotgridsoftware.com/zh_CN/56b441c6/)中,您将了解如何自定义 production 文件夹结构,以呈现您的设施的构造方式。 diff --git a/docs/zh_CN/guides/pipeline-integrations/getting_started.md b/docs/zh_CN/guides/pipeline-integrations/getting_started.md deleted file mode 100644 index fd8472e32..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/getting_started.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 快速入门 -pagename: toolkit-getting-started -lang: zh_CN ---- - -# 快速入门 - -{% 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 deleted file mode 100644 index a399df609..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/workflows.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 工作流 -pagename: toolkit-workflows -lang: zh_CN ---- - -# 工作流 - -{% include product %} 工作流集成中的自定义项允许您使用工具来创建各种工作流:从动画长片到剧集工作流,从视觉特效到游戏。 - -本部分包含用于构建特定工作流的资源。 diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md b/docs/zh_CN/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md deleted file mode 100644 index 37df9a18a..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/workflows/episodic-nuke-tutorial.md +++ /dev/null @@ -1,422 +0,0 @@ ---- -layout: default -title: Nuke Studio 中的剧集工作流 -pagename: episodic-nuke-tutorial -lang: zh_CN ---- - -# Nuke Studio 中的剧集工作流 - - -## 简介和准备工作 - - -本文介绍如何在 Nuke Studio 或 Hiero 中通过我们的 `tk-hiero-export` 应用设置并运行您的剧集工作流。请注意,这并没有一个精准方法,根据您所需的工作流,方法会略有不同。对于本文示例,我们将做以下假设: - -* 您的目标是设置一个三层的层次结构:`Episode > Sequence > Shot` -* 您将先阅读并完成[文件系统配置手册](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)中的步骤。 -* 您将使用 `Episode` 实体类型(而不是 `CustomEntity02`,这两者的使用方式相同,只是名称不同。) -* `Sequence` 实体具有一个名为 `episode` 的实体字段。 -* 您将使用 Nuke Studio,但过程与 Hiero 相同。 -* 您将先在 Toolkit 项目中使用[默认配置](https://github.com/shotgunsoftware/tk-config-default2)。 - -在开始之前,您还要做出一个决定,即如何解析 `Episode`。现有的 {% include product %} Hiero/Nuke Studio 导出流程会根据 Nuke Studio 项目内容在 {% include product %} 站点上创建 `Sequence` 和 `Shot` 实体。因此,与在 Maya 中使用 Toolkit 时的情况(要求您已创建资产和任务)不同,在 Nuke Studio 中,不要求您已创建 `Episodes`、`Sequences` 或 `Shots`。虽然如此,您仍需决定如何在 Nuke Studio 中定义 `Episode`。下面是几种可能的方式: - -* 提前在 {% include product %} 中创建剧集,并配置 Nuke Studio Toolkit 集成以在剧集上下文中使用,以便在导出时您可以从当前场景上下文中获得 `Episode` 实体。 -* 假定尚未创建 `Episode` 实体,并要利用 Nuke Studio 的标记功能以剧集名称标记场,以及在导出时使用相应信息来解析 `Episode`。 - -可能有更适合您的工作流的其他方法,例如,从 Nuke Studio 场或镜头名称中提取剧集名称(例如,从名为 ep1_s01 的场中提取 ep1 部分)。或者,可以使用导出应用的 [hiero_customize_export_ui.py](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) 挂钩添加一个用于将导出与剧集相链接的 GUI。 - -对于此示例,我们采用第二种方式:场标记解决方案。 - -*请注意,此方式用于实施三层层次结构 (`Episode > Sequence > Shot`)。如果直接将 `Sequence` 实体类型替换为 `Episodes` 实体类型 (`Episode > Shot`),过程更简单。在本手册结束前,我们将简要介绍此情况,但仍有必要阅读其余部分以便深入了解相关信息。* - -## 数据结构和模板 - - -如前所述,此示例假定您已[更新您的数据结构和模板](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/#how-can-i-add-a-new-entity-type-to-my-file-structure)。请确保您还在 templates.yml 中更新了 `hiero_plate_path` 和 `hiero_render_path` 路径值,以在正确的位置包含剧集项。 - -## 挂钩和设置 - - -为了使 {% include product %} 导出流程正确处理 `Episode`,需要修改其中一些导出挂钩。本文假定您知道[挂钩](https://developer.shotgridsoftware.com/zh_CN/312b792f/#using-frameworks-from-hooks)是什么,并了解如何覆盖基本实施。 - -有两个导出挂钩可帮助您启用剧集。 - -* `hiero_get_shot.py` -* `hiero_resolve_custom_strings.py` - -注意:另外有一个名为 `hiero_translate_template.py` 的挂钩。此示例中不使用该挂钩,但如果您希望将场替换为剧集并维持一个两层的层次结构,则需要使用该挂钩。在本文结尾处,我们将稍微介绍此内容。 - -修改 `hiero_get_shot.py`,以便查找剧集,并在 {% include product %} 中为其创建一个实体,同时修改 `hiero_resolve_custom_strings.py`,以便 Nuke Studio 了解向路径中的 {Episode} 项提供何值。下面是更加详细的步骤: - -### 1. 添加剧集字段 - -现在,模板中有一个名为 `Episode` 的新项,您需要告诉 `tk-hiero-export` 应用如何解析此项。在 `/config/env/includes/settings/tk-hiero-export.yml` 文件中修改 `custom_template_fields`,使其如下所示: - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - ... -``` - -这将向 Hiero 导出器中添加一个名为 `{Episode}` 的有效导出令牌。 - -### 2. hiero_get_shot 挂钩 - -现在,需要使用 `hiero_get_shot.py` 挂钩告诉导出流程如何查找剧集名称并在 {% include product %} 中创建 `Episode`。 - -[默认的挂钩版本 (hiero_get_shot.py)](http://areadownloads.autodesk.com/wdm/shotgrid/tu-episodic-nuke.zip) 将从 {% include product %} 返回名称与 TrackItem 相同的 `Shot`。还必须将 `Shot` 链接到名称与 Nuke Studio 场项相同的 `Sequence`。如果 {% include product %} 中不存在 `Sequence` 或 `Shot`,该挂钩将创建它们。您将为该层次结构添加另一层,因此您需要告诉挂钩,如果 `Episode` 不存在,还要创建它。 - -由于 `Sequence` 已链接到 `Episode`,您应将其关联到查找 `Sequence` 的代码(`get_shot_parent()` 方法)。 - -在配置的 hooks 文件夹中创建 `hiero_get_shot.py` 文件,并将 `hook_get_shot: '{config}/hiero_get_shot.py'` 添加到 `tk-hiero-export.yml` 设置中,即如下所示: - -``` - settings.tk-hiero-export: - custom_template_fields: [{keyword: Episode, description: The episode name}] - hook_get_shot: '{config}/hiero_get_shot.py' -``` - -下面是 `hiero_get_shot.py` 挂钩的完整代码。将此代码添加到您创建的挂钩中: - -``` -from sgtk import Hook - -class HieroGetShot(Hook): - """ - Return a {% include product %} Shot dictionary for the given Hiero items - """ - - def execute(self, task, item, data, **kwargs): - """ - Takes a hiero.core.TrackItem as input and returns a data dictionary for - the shot to update the cut info for. - """ - - # get the parent entity for the Shot - parent = self.get_shot_parent(item.parentSequence(), data, item=item) - - # shot parent field - parent_field = "sg_sequence" - - # grab shot from {% include product %} - sg = self.parent.shotgun - filter = [ - ["project", "is", self.parent.context.project], - [parent_field, "is", parent], - ["code", "is", item.name()], - ] - - # default the return fields to None to use the python-api default - fields = kwargs.get("fields", None) - shots = sg.find("Shot", filter, fields=fields) - if len(shots) > 1: - # can not handle multiple shots with the same name - raise StandardError("Multiple shots named '%s' found", item.name()) - if len(shots) == 0: - # create shot in {{ akn_product_name_lower }} - shot_data = { - "code": item.name(), - parent_field: parent, - "project": self.parent.context.project, - } - shot = sg.create("Shot", shot_data, return_fields=fields) - self.parent.log_info("Created Shot in {% include product %} : %s" % shot_data) - else: - shot = shots[0] - - # update the thumbnail for the shot - upload_thumbnail = kwargs.get("upload_thumbnail", True) - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", - entity=shot, - source=item.source(), - item=item, - task=kwargs.get("task") - ) - - return shot - - def get_episode(self, data=None, hiero_sequence=None): - """ - Return the {{ akn_product_name_lower }} episode for the given Nuke Studio items. - We define this as any tag linked to the sequence that starts - with 'Ep'. - """ - - # If we had setup Nuke Studio to work in an episode context, then we could - # grab the episode directly from the current context. However in this example we are not doing this but here - # would be the code. - # return self.parent.context.entity - - # stick a lookup cache on the data object. - if "epi_cache" not in data: - data["epi_cache"] = {} - - # find episode name from the tags on the sequence - nuke_studio_episode = None - for t in hiero_sequence.tags(): - if t.name().startswith('Ep'): - nuke_studio_episode = t - break - if not nuke_studio_episode: - raise StandardError("No episode has been assigned to the sequence: %s" % hiero_sequence.name()) - - # For performance reasons, lets check if we've already added the episode to the cache and reuse it - # Its not a necessary step, but it speeds things up if we don't have to check {{ akn_product_name_lower }} for the episode again - # this session. - if nuke_studio_episode.guid() in data["epi_cache"]: - return data["epi_cache"][nuke_studio_episode.guid()] - - # episode not found in cache, grab it from {% include product %} - sg = self.parent.shotgun - filters = [ - ["project", "is", self.parent.context.project], - ["code", "is", nuke_studio_episode.name()], - ] - episodes = sg.find("Episode", filters, ["code"]) - if len(episodes) > 1: - # can not handle multiple episodes with the same name - raise StandardError("Multiple episodes named '%s' found" % nuke_studio_episode.name()) - - if len(episodes) == 0: - # no episode has previously been created with this name - # so we must create it in {{ akn_product_name_lower }} - epi_data = { - "code": nuke_studio_episode.name(), - "project": self.parent.context.project, - } - episode = sg.create("Episode", epi_data) - self.parent.log_info("Created Episode in {% include product %} : %s" % epi_data) - else: - # we found one episode matching this name in {{ akn_product_name_lower }}, so we will resuse it, instead of creating a new one - episode = episodes[0] - - # update the cache with the results - data["epi_cache"][nuke_studio_episode.guid()] = episode - - return episode - - def get_shot_parent(self, hiero_sequence, data, **kwargs): - """ - Given a Hiero sequence and data cache, return the corresponding entity - in {% include product %} to serve as the parent for contained Shots. - - :param hiero_sequence: A Hiero sequence object - :param data: A dictionary with cached parent data. - - .. note:: The data dict is typically the app's `preprocess_data` which maintains the cache across invocations of this hook.         - - """ - # stick a lookup cache on the data object. - if "parent_cache" not in data: - data["parent_cache"] = {} - - if hiero_sequence.guid() in data["parent_cache"]: - return data["parent_cache"][hiero_sequence.guid()] - - episode = self.get_episode(data, hiero_sequence) - - # parent not found in cache, grab it from {% include product %} - - sg = self.parent.shotgun filter = [ - ["project", "is", self.parent.context.project], - ["code", "is", hiero_sequence.name()], - ["episode", "is", episode], - ] - - # the entity type of the parent. - par_entity_type = "Sequence" - - parents = sg.find(par_entity_type, filter) - if len(parents) > 1: - # can not handle multiple parents with the same name - raise StandardError( - "Multiple %s entities named '%s' found" % (par_entity_type, hiero_sequence.name()) - ) - - if len(parents) == 0: - # create the parent in {{ akn_product_name_lower }} - par_data = { - "code": hiero_sequence.name(), - "project": self.parent.context.project, - "episode": episode, - } - - parent = sg.create(par_entity_type, par_data) - self.parent.log_info( - "Created %s in {% include product %} : %s" % (par_entity_type, par_data) - ) - else: - parent = parents[0] - - # update the thumbnail for the parent - upload_thumbnail = kwargs.get("upload_thumbnail", True) - - if upload_thumbnail: - self.parent.execute_hook( - "hook_upload_thumbnail", entity=parent, source=hiero_sequence, item=None - ) - - # cache the results - data["parent_cache"][hiero_sequence.guid()] = parent - return parent -``` - -#### 获取场 - -在上面的代码中,我们修改了 `get_shot_parent()` 方法。现在,在查找和创建 `Sequence` 时,它使用新 `get_episode()` 方法返回的 `Episode`。现在,在 {% include product %} 数据库中检查是否存在 `Sequence` 时,它会按 `episode %s" % (shot_code, keyword, result)) - return result - -``` - -请注意,如果您的数据结构剧集文件夹名称是基于 `code` 字段以外的内容生成的,您需要将该名称复制到此处。 - -更准确但更复杂的方法是在 templates.yml 中添加 `episode_root` 模板,然后从该模板获取字段。这意味着返回的文件夹名称始终匹配数据结构,即使在数据结构中更改了剧集文件夹名称也是如此。此方法如下所示: - -``` -ctx = tk.context_from_entity("Episode", episode_entity[id]) -my_template = tk.templates["episode_root"] -fields = my_template.get_fields(ctx.filesystem_locations[0]) -return fields["Episode"] - -``` - -## 总结 - - -现已完成设置!接下来就是测试所做更改是否可以正常使用。 - -在启动 Nuke Studio、创建项目并为其填充场和序列后,现在可以测试导出流程。首先,创建剧集标记。请注意,您之前将挂钩编码为在场上查找以 `Ep` 开头的标记,因此必须将标记命名为 `Ep…` - -![创建剧集标记](./images/tutorial/tu-episodic-nuke-mceclip0-01.png) - -现在向场添加标记。 - -![向场添加标记](./images/tutorial/tu-episodic-nuke-mceclip2-02.png) -![向场添加标记](./images/tutorial/tu-episodic-nuke-mceclip1-03.png) - -完成该操作后,从标记的场导出镜头。 - - -![导出镜头](./images/tutorial/tu-episodic-nuke-mceclip4-04.png) - -检查导出结构的层次结构是否匹配我们的数据结构的层次结构。如果不匹配,则可能需要[刷新结构](#tip-refresh). - -![导出结构层次结构](./images/tutorial/tu-episodic-nuke-mceclip3-05.png) - - -单击“导出”(Export)后,应该会在您的 {% include product %} 站点上创建剧集、场和镜头,以及在磁盘上创建文件夹结构。如果在此过程中遇到问题,请在 Nuke Studio 脚本编辑器或 [{% include product %} 日志 (tk-nukestudio.log)](https://developer.shotgunsoftware.com/zh_CN/38c5c024/) 中检查是否存在您可能遇到的任何错误。 - -上文就是本手册介绍的方法。当然,这只是用于处理剧集的多种方法之一,您可以自行找到最适合您的工作室的方法和结构。 - -## 用场交换剧集 - - -如上文简要介绍的那样,如果您希望直接将默认的场/镜头层次结构交换为剧集/镜头层次结构,可以将 Nuke Studio 场项用作剧集名称的来源。 - -1. 设置数据结构和模板以处理剧集/镜头结构。 - -2. 利用默认的 `hiero_get_shot.py` 挂钩,如上所示。但此时将 `parent_field` 变量值更改为 `sg_episode`(确保您的镜头实体上有剧集字段),将 `par_entity_type` 变量值更改为 `variable value to``Episode`。 - -3. 利用 `hiero_translate_template.py` 挂钩,并在挂钩文件中更改映射: - -``` - mapping = { - "{Episode}": "{sequence}", - "{Shot}": "{shot}", - "{name}": "{clip}", - "{version}": "{tk_version}", -} - -``` - - -将使用 Nuke Studio 场项的值解析剧集项。 - -> **提示:**如果您在进行这些更改之前打开了 Hiero/Nuke Studio 项目,或者您在测试的同时进行了更改,则可能需要重置导出路径。当您打开“导出”(Export)对话框时,Nuke Studio 会缓存导出树,因此,如果您希望重新加载对数据结构所做的更改,您需要按刷新按钮以重新构建导出树。 \ No newline at end of file diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_0.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_0.png deleted file mode 100644 index 7a0b8ddf6..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_0.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_1.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_1.png deleted file mode 100644 index be2ee9be9..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_1.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_10.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_10.png deleted file mode 100644 index e45a93959..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_10.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_11.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_11.png deleted file mode 100644 index a47585138..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_11.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_12.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_12.png deleted file mode 100644 index 2d2f6c10a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_12.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_13.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_13.png deleted file mode 100644 index a4a043ac5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_13.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_14.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_14.png deleted file mode 100644 index 9d27ac762..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_14.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_15.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_15.png deleted file mode 100644 index 146711898..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_15.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_16.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_16.png deleted file mode 100644 index 62e275474..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_16.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_17.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_17.png deleted file mode 100644 index 13a006da5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_17.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_18.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_18.png deleted file mode 100644 index edd99bb7b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_18.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_19.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_19.png deleted file mode 100644 index d47837196..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_19.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_2.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_2.png deleted file mode 100644 index a9e17afe1..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_2.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_20.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_20.png deleted file mode 100644 index 358e66c89..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_20.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_21.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_21.png deleted file mode 100644 index aa56cede3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_21.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_22.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_22.png deleted file mode 100644 index e732d12ec..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_22.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_23.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_23.png deleted file mode 100644 index 69490a50d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_23.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_24.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_24.png deleted file mode 100644 index 64770ffee..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_24.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_25.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_25.png deleted file mode 100644 index ac143b087..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_25.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_26.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_26.png deleted file mode 100644 index e3c1256b3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_26.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_27.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_27.png deleted file mode 100644 index 00ec6f285..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_27.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_28.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_28.png deleted file mode 100644 index c5fed87ad..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_28.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_29.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_29.png deleted file mode 100644 index 0277f9390..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_29.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_3.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_3.png deleted file mode 100644 index 4b57718a3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_3.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_30.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_30.png deleted file mode 100644 index 6f761b33e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_30.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_31.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_31.png deleted file mode 100644 index b0ab6ce42..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_31.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_32.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_32.png deleted file mode 100644 index 8f5b36689..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_32.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_33.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_33.png deleted file mode 100644 index 00e08b318..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_33.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_34.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_34.png deleted file mode 100644 index 3b4769358..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_34.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_35.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_35.png deleted file mode 100644 index 4aa7deaca..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_35.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_36.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_36.png deleted file mode 100644 index b5a3db245..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_36.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_37.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_37.png deleted file mode 100644 index ce4c05c7c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_37.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_4.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_4.png deleted file mode 100644 index dbdf36f37..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_4.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_40.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_40.png deleted file mode 100644 index 2aec808b4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_40.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif deleted file mode 100644 index b18aad6e4..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_41.gif and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_42.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_42.png deleted file mode 100644 index 2c4de454d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_42.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_43.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_43.png deleted file mode 100644 index 1c6d6ae95..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_43.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_44.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_44.png deleted file mode 100644 index 50da5f763..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_44.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_45.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_45.png deleted file mode 100644 index d66640fed..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_45.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_46.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_46.png deleted file mode 100644 index 2252d8f5b..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_46.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_47.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_47.png deleted file mode 100644 index 67a5e234e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_47.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_48.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_48.png deleted file mode 100644 index 5771b36c1..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_48.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif deleted file mode 100644 index 6b2746480..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_49.gif and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_5.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_5.png deleted file mode 100644 index a46252d77..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_5.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_50.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_50.png deleted file mode 100644 index 5b87ff9fc..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_50.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_51.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_51.png deleted file mode 100644 index 0ddd3ee28..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_51.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_52.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_52.png deleted file mode 100644 index 73a3cad2f..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_52.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_53.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_53.png deleted file mode 100644 index fb2f230a3..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_53.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54.png deleted file mode 100644 index 49301aa11..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif deleted file mode 100644 index 3decd4533..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_54_5.gif and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_55.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_55.png deleted file mode 100644 index ae77dbf3e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_55.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_56.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_56.png deleted file mode 100644 index b3f6bb6fd..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_56.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_57.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_57.png deleted file mode 100644 index 28438c50d..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_57.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_58.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_58.png deleted file mode 100644 index 270c1d6a9..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_58.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_59.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_59.png deleted file mode 100644 index b51b776e2..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_59.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_60.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_60.png deleted file mode 100644 index 8551a6119..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_60.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_61.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_61.png deleted file mode 100644 index 96d65b63e..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_61.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_62.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_62.png deleted file mode 100644 index 8c1097122..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_62.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_63.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_63.png deleted file mode 100644 index 569866d92..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_63.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_64.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_64.png deleted file mode 100644 index d5eb23a96..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/image_64.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png deleted file mode 100644 index 55cde0429..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip0-01.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png deleted file mode 100644 index 8fce5b3ea..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip1-03.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png deleted file mode 100644 index 7af0f7437..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip2-02.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png deleted file mode 100644 index 1857a1f4a..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip3-05.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png deleted file mode 100644 index ac26f2a54..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/tu-episodic-nuke-mceclip4-04.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png deleted file mode 100644 index 968a3a7f8..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_01.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png deleted file mode 100644 index 824ccc1f5..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_02.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png deleted file mode 100644 index d5b6fd796..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_03.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png deleted file mode 100644 index 6ac096997..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_04.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png deleted file mode 100644 index d0fc6debd..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_05.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png deleted file mode 100644 index afac41f35..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_06.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png b/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png deleted file mode 100644 index ceee9446c..000000000 Binary files a/docs/zh_CN/guides/pipeline-integrations/workflows/images/tutorial/wizard_07.png and /dev/null differ diff --git a/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md b/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md deleted file mode 100644 index 1dacc27b3..000000000 --- a/docs/zh_CN/guides/pipeline-integrations/workflows/pipeline-tutorial.md +++ /dev/null @@ -1,853 +0,0 @@ ---- -layout: default -title: 动画工作流教程 -pagename: toolkit-pipeline-tutorial -lang: zh_CN ---- - -# 动画工作流教程 - -本教程介绍如何为动画或视觉效果制作打造一个简化但却典型的工作流。按照本教程,您将打造一个全面的工作流,为资产的建模、视觉开发到融入制作场景提供所有必要环节。 - -此工作流中涵盖的大部分流程通过 {% include product %} 的内置集成便可实现。对于工作流中工作室更多时候会构建自定义解决方案的部分,本教程将指导您完成使用 Toolkit 平台自定义艺术家工作流的整个过程。 - -下面是您将在本教程中构建的工作流的简要视图: - -{% include figure src="./images/tutorial/image_0.png" caption="工作流概述" %} - -## 工作流概述 - -为了简单起见,这里使用的数字内容创作 (DCC) 软件将尽可能最少,并且仅限于 Maya 和 Nuke。还是为了简单,工作流各个工序之间传递的数据仅限 Maya ASCII 文件、Alembic 缓存和渲染的图像序列。 - -{% include info title="注意" content="本教程中概述的简单工作流尚未在实际制作活动中进行测试,因此应仅作为示例来讲解如何构建基于 ShotGrid 的工作流。" %} - -## 先决条件 - -* **参与 {% include product %} 项目** - 本教程假定您有使用 {% include product %} 跟踪和管理制作数据的经验。 - -* **了解 {% include product %} 集成** - {% include product %} 附带一些集成,这些集成提供了一些不需要任何手动配置的简单制作工作流。您应先了解这些工作流的功能和范围,然后再深入了解本教程中介绍的手动配置和自定义。有关 {% include product %} 集成的详细信息,请参见[此处](https://developer.shotgridsoftware.com/zh_CN/d587be80/)。 - -* **Maya 和 Nuke 体验** - 本教程旨在使用 Maya 和 Nuke 构建一个简单的工作流。您应该对这些软件包有基本的了解,以便自定义 {% include product %} 提供的集成。 - -* **Python 应用知识** - 本教程需要通过采用 Python 编写的“挂钩”修改 {% include product %} 集成的功能。 - -* **熟悉 YAML** - 您将构建的工作流的很多配置都是通过修改 YAML 文件来完成的。 - -## 其他资源 - -* [{% include product %} 支持站点](https://support.shotgunsoftware.com/hc/zh-cn) - -* [{% include product %} 集成](https://www.shotgridsoftware.com/integrations/) - - * [用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/) - - * [管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/) - - * [开发人员手册](https://developer.shotgridsoftware.com/zh_CN/93c6e555/) - -# 项目创建和设置 - -在本教程中,您需要在 {% include product %} 中创建一个新项目,并像准备开始制作那样配置该项目。这包括确保所有必要的 {% include product %} 实体都已就位并正确关联。在本教程中,资产、镜头序列、镜头和任务实体是必需的,默认情况下新项目中应提供这些实体。您将创建以下对象: - -* 两个**资产**: - - * **_茶壶_**角色 - - * **_桌子_**道具 - -* 一个**场** - -* 一个链接至您创建的**场**的**镜头** - -* 每个工作流工序一个**任务** - -下面是一些屏幕截图,显示了您在 {% include product %} 中配置的项目实体: - -{% include figure src="./images/tutorial/image_1.png" caption="茶壶和桌子资产" %} - -{% include figure src="./images/tutorial/image_2.png" caption="链接至场的镜头" %} - -{% include figure src="./images/tutorial/image_3.png" caption="任务" width="400px" %} - -## 软件启动器 - -接下来,您将需要确保 Maya 和 Nuke 可在 {% include product %} Desktop 中启动。在 Desktop 中,确保每个软件包都可以通过单击其图标启动。确保启动每个软件包的正确版本。 - -如果任一应用程序未显示在 Desktop 中或预期版本无法启动,则可能需要在 {% include product %} 中通过软件实体手动配置启动。 - -{% include figure src="./images/tutorial/image_4.png" caption="ShotGrid 中定义的默认软件实体" %} - -软件实体用于驱动在您的制作中使用哪些 DCC 软件包。默认情况下,集成将在标准安装位置搜索这些软件包并使其可通过 Desktop 启动。如果您安装了多个版本或将它们安装在非标准位置,您可能需要在 {% include product %} 中更新相应的软件实体条目以管理您的艺术家的启动体验。 - -有关软件实体以及如何正确配置该实体的完整详细信息,请参见[集成管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。在您的 DCC 按预期启动后,可以继续阅读下一节。 - -# 配置 - -配置定义项目的艺术家工作流。这包括指定哪些 {% include product %} 集成包含在艺术家要启动的 DCC 中,如何定义项目的文件夹结构,以及艺术家共享数据时创建的文件和文件夹的命名约定。 - -默认情况下,所有新项目均配置为使用基本 [{% include product %} 集成](https://developer.shotgridsoftware.com/zh_CN/d587be80/),这些集成提供了使用许多现成的软件包在艺术家之间共享文件的基本工作流。以下各节概述了如何接管项目的工作流配置以及如何为您的工作室对其进行自定义。 - -## 接管项目配置 - -可使用 {% include product %} Desktop (Desktop) 接管项目的配置。在 Desktop 中单击鼠标右键或单击右下方的用户图标以显示弹出菜单。选择**“Advanced project setup…”**选项,然后按照向导操作在本地安装项目配置。以下各图显示了所需的操作步骤。也可以按照《集成管理员手册》的[接管工作流配置](https://developer.shotgridsoftware.com/zh_CN/8085533c/#taking-over-a-pipeline-configuration)中所述的步骤操作。 - -{% include figure src="./images/tutorial/image_5.png" caption="在 Desktop 弹出菜单中选择**“Advanced project setup...”**" %} - -{% include figure src="./images/tutorial/wizard_01.png" caption="选择**“ShotGrid Default”**配置类型" %} - -{% include figure src="./images/tutorial/wizard_02.png" caption="选择**“默认”(Default)**配置" %} - -如果这是您第一次设置 {% include product %} 项目,系统还会提示您为项目数据定义一个存储位置。否则,可以选择现有存储位置。 - -{% include figure src="./images/tutorial/wizard_03.png" caption="创建新存储。" %} - -{% include figure src="./images/tutorial/wizard_04.png" caption="为新存储命名。 请记住,此存储属于站点范围,而非特定于项目。" %} - -{% include figure src="./images/tutorial/wizard_05.png" caption="设置在您要使用的操作系统上将可以访问此存储的路径。" %} - -您可以在**“站点偏好设置”(Site Preferences)**的**“文件管理”(File Management)**部分下查看和编辑 {% include product %} 站点的存储。可以在[此处](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)了解有关这些设置的详细信息。 - -现在,您已选择存储位置,需要在该位置为新项目选择目录名称。 - -{% include figure src="./images/tutorial/wizard_06.png" caption="输入项目文件所在文件夹的名称。" %} - -在本教程中,我们将使用集中式配置。**“Distributed Setup”**选项提供了一个具有一组不同优势的替代选项,这可能是没有快速共享存储的工作室的首选选项。您可以在 [Toolkit 管理](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2)演示文稿中详细了解不同配置设置的优缺点。 - -与站点范围的存储不同,配置特定于项目,因此您在此处选择的目录将直接用于存储您的配置。 - -{% include figure src="./images/tutorial/wizard_07.png" caption="记下为当前操作系统选择的配置路径。" %} - -您在上面的屏幕中选择的文件夹将作为配置的安装位置。在本教程中,您将了解并修改此文件夹中的配置的内容。 - -单击以上屏幕中的**“Run Setup”**后,Desktop 将开始下载并安装您的配置所需的所有组件。安装过程可能需要几分钟时间完成。完成后,您将具有整个项目配置的本地副本,在后面的操作步骤中您将对其进行修改。 - -您在学习 Desktop 安装教程期间指定的配置位置记录在 {% include product %} 中,位于项目的“工作流配置”(Pipeline Configurations)页面。 - -{% include figure src="./images/tutorial/image_10.png" caption="ShotGrid 中的工作流配置实体" %} - -熟悉此文件夹中的内容,以便为下一节做好准备。 - -## 配置组织 - -在开始构建简单的工作流之前,您需要了解工作流配置的组织方式和工作方式。下图高亮显示了配置的主要组件及其用途。有关配置及其管理的其他信息,请参见[管理 Toolkit](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) 一文。 - -{% include figure src="./images/tutorial/image_11.png" %} - -### 项目数据结构 - -您将在本教程中构建的简单工作流使用默认配置提供的项目数据结构。您可以浏览 **`config/core/schema`** 文件夹来了解 Toolkit 应用向磁盘写入文件时将创建的结构。有关配置项目目录结构的其他信息,请参见[文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)文档。 - -### 模板 - -本教程还使用默认工作流配置中定义的模板。您可以打开 **`config/core/templates.yml`** 文件来查看应用将输入和输出文件映射到磁盘上的路径时使用的模板。有关模板系统的详细信息,请参见[文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/)文档。 - -### 挂钩 - -本教程的很多内容将涉及到修改应用挂钩以便自定义美工人员工作流。在深入了解该自定义之前,您应该对挂钩的概念、工作方式和位置有基本的了解。阅读[管理](https://developer.shotgridsoftware.com/zh_CN/425b1da4/#hooks)文档的“挂钩”部分。 - -在学习本教程的过程中,您将需要“接管”其中一个 Toolkit 应用定义的挂钩。接管应用挂钩的过程非常简单。每次系统要求您执行此操作时,只需按照以下步骤操作即可: - -1. 在您的配置的安装文件夹中**找到包含您要改写的挂钩的应用**。查找该应用的 **`hooks`** 子目录,并找到要改写的挂钩文件。 - -2. **复制挂钩**(必要时重命名)到您的配置的顶层 **`hooks`** 目录。 - -{% include figure src="./images/tutorial/image_12.png" %} - -该文件位于您的配置的 **`hooks`** 文件夹后,您便可以进行更改和自定义代码。需要执行另一步操作,将对应的应用指向此新位置。在本教程的后面,您将了解如何执行此操作。 - -# 构建工作流 - -此时,您应该可以开始构建工作流。您在 {% include product %} 中设置了一个项目,可以通过 Desktop 启动 Maya 和 Nuke,并且已接管了项目配置的控制权。此外,您已对配置的结构有基本的了解,可以开始构建美工人员工作流。 - -以下各节将介绍该工作流的每个工序,重点介绍即时可用的功能,并指导您完成自定义 {% include product %} 集成的整个过程。完成相关各节的学习后,您将构建一个简单、完全可行的端到端制作工作流。您还将了解到艺术家在其制作活动中将执行的工序。 - -{% include info title="注意" content="本教程的所有代码和配置都可以在 [**`tk-config-default2`** 库](https://github.com/shotgunsoftware/tk-config-default2/tree/pipeline_tutorial/) 的 **`pipeline_tutorial`** 分支中找到。如果您需要有关文件所在位置、代码添加位置等的提示,可以随时使用此分支。" %} - -## 建模工作流 - -简单工作流的第一道工序是建模。在本节中,您将在您的项目中创建茶壶资产的第一个迭代。您要将其保存到磁盘上的项目文件夹结构中,然后将其发布。 - -首先,从 {% include product %} Desktop 启动 Maya。 - -Maya 加载完毕后,将会显示“File Open”对话框。在此对话框中,您可以浏览项目中的现有 Maya 文件。此外,您还可以创建 {% include product %} 集成将会识别的新文件。 - -选择“资产”(Assets)选项卡,然后向下查看茶壶的建模任务。由于此任务还没有美工人员工作文件,请单击**“+ New File”**按钮。 - -{% include figure src="./images/tutorial/image_13.png" %} - -单击此按钮将创建一个新的空 Maya 会话,并将您的当前工作上下文设置为茶壶资产的建模任务。 - -{%include info title="注意" content="在本教程中的任何时间,您都可以通过 Maya 或 Nuke 中的 ShotGrid 菜单启动 ShotGrid 面板。在此面板中,您可以查看您的项目数据,而无需离开 DCC。它将向您显示您的当前工作上下文以及该上下文中的任何最近活动。您还可以直接在该面板中为反馈添加注释。有关详细信息,请参见 [ShotGrid 面板文档](https://developer.shotgridsoftware.com/zh_CN/c0b0ce05/)。" %} - -接下来,创建一个茶壶模型,或[下载](https://raw.githubusercontent.com/shotgunsoftware/tk-config-default2/pipeline_tutorial/resources/teapot.obj) 并导入所提供的茶壶。 - -{% include figure src="./images/tutorial/image_14.png" %} - -当您对自己的茶壶模型满意后,请选择**“{% include product %} > File Save...”**菜单动作。此对话框将提示您使用给定名称、版本和类型保存该文件。 - -{% include figure src="./images/tutorial/image_15.png" %} - -请注意,此对话框并不要求您指定完整的保存路径。这是因为应用已配置为保存到 **`maya_asset_work`** 模板。默认情况下,此模板定义如下: - -**`@asset_root/work/maya/{name}.v{version}.{maya_extension}`** - -标记化字段 **`{name}`**、**`{version}`** 和 **`{maya_extension}`** 是填充完整路径时应用需要的所有项。模板的 **`@asset_root`** 部分定义为: - -**`assets/{sg_asset_type}/{Asset}/{Step}`** - -如果是在前面创建新文件时设置的当前工作上下文中,Toolkit 平台可以自动推断此处的标记化字段。 - -还请注意该对话框底部显示的文件名和路径预览。请注意,接管项目配置时定义的主存储和项目文件夹构成模板路径的根目录。 - -单击**“保存”(Save)**按钮保存该茶壶模型。 - -此时务必要注意的一点是,您刚刚完成的步骤与艺术家在整个工作流中打开和保存工作文件时执行的步骤相同。“File Open”和“File Save”对话框属于 Workfiles 应用。此“多”应用在 {% include product %} 集成支持的所有 DCC 中运行,并为所有艺术家提供一致的工作流。 - -下一步是对茶壶进行一些更改。确保壶盖几何体与模型的其余部分分离开,以便以后可以对其进行装配。 - -{% include figure src="./images/tutorial/image_16.png" %} - -当您对自己的作品满意后,再次运行**“{% include product %} > File Save…”**菜单动作。 此时,在对话框中版本号默认设置为 2。文件版本自动递增功能让艺术家可维护所完成工作的完整历史记录。单击“保存”(Save)按钮。 - -{% include figure src="./images/tutorial/image_17.png" %} - -将茶壶模型保存为版本 2 后,您就可以进行本教程中本节的最后一步。 - -现在,茶壶模型已准备就绪,您需要将其发布,以便可以对其进行贴图和装配。要进行发布,请单击**“{% include product %} > Publish…”**菜单动作。此时将显示发布应用对话框。 - -{% include figure src="./images/tutorial/image_18.png" %} - -该对话框以树的形式显示表示将发布的内容的各项。该树包含一些表示要发布的项的条目和一些表示将在发布操作过程中执行的动作的条目。 - -在该对话框左侧,您将看到表示当前 Maya 会话的项。在它下面,您将看到**“Publish to ShotGrid”**子动作。表示**“All Session Geometry”**的另一项显示为当前会话的子项。它也有**“Publish to ShotGrid”**子动作。 - -{% include info title="注意" content="如果**“All Session Geometry”**项没有显示,请确保在 Maya 中已启用 Alembic 导出插件。" %} - -可单击树左侧的项了解发布应用。您将注意到,在选择要对其执行操作的项后,您可以输入要发布的内容的说明。您还可以单击右侧的摄影机图标拍摄屏幕截图以与该项关联。 - -当您准备好时,单击右下角的**“Publish”**按钮发布当前工作文件和茶壶几何体。完成后,您可以浏览到 {% include product %} 中的茶壶资产以验证发布是否已成功完成。 - -{% include figure src="./images/tutorial/image_19.png" %} - -在上图中,您可以看到包含茶壶模型的已发布 Alembic 文件。您还应看到 Maya 会话文件的发布。这些发布对应于发布应用的树视图中的项。 - -与使用“File Save”对话框时创建的工作文件一样,这两个发布的输出路径也是由模板驱动。它们类似如下(稍后将介绍在哪里为应用配置这些模板): - -**Maya 会话发布:** - -**`@asset_root/publish/maya/{name}.v{version}.{maya_extension}`** - -默认情况下,此模板与工作文件模板非常相似,唯一的区别是 **`publish`** 文件夹。 - -**资产发布:** - -**`@asset_root/publish/caches/{name}.v{version}.abc`** - -此模板与 Maya 会话发布模板相似,但文件写入 **`caches`** 文件夹中。 - -与“File Save”对话框不同,发布时,您不需要提供名称、版本和文件扩展名值。这是因为,默认情况下,发布器会从工作文件路径提取这些值。在后台,它通过工作模板提取这些值,然后将其应用到发布模板。这是关于 Toolkit 平台以及如何使用模板将一个工作流工序的输出连接到另一个工作流工序的输入的重要概念。在后续各节中将深入介绍此内容。 - -浏览到磁盘上的文件,确保已在正确位置创建它们。 - -恭喜您!您已成功创建茶壶的第一个发布迭代。看看您是否可以使用所学内容从桌子道具的建模任务发布桌子模型。结果应与下图类似: - -{% include figure src="./images/tutorial/image_20.png" %} - -接下来,将介绍贴图工作流。 - -## 贴图工作流 - -在本节中,您将基于您在建模一节中所学内容进一步学习。您将了解如何使用加载器应用加载在上一节中创建的茶壶模型。还将了解如何自定义发布应用来为茶壶发布着色器。 - -首先,从 Desktop 启动 Maya。如果在完成上一节后 Maya 仍保持打开状态,则不需要重新启动。打开 Maya 后,使用**“{% include product %} > File Open...”**菜单项打开 Workfiles 应用。与建模一节中一样,使用“资产”(Assets)选项卡向下查看茶壶资产的任务。此时,选择贴图任务,然后单击**“+ New File”**。 - -{% include figure src="./images/tutorial/image_21.png" width="450px" %} - -您现在已进入茶壶的贴图任务。验证您是否在正确的制作环境中的简单方法是检查 {% include product %} 菜单中的第一个条目。 - -{% include figure src="./images/tutorial/image_22.png" %} - -接下来,您需要将茶壶模型加载到新的贴图工作文件中。要执行此操作,请通过 Maya 中的**“{% include product %} > Load...”**菜单项启动加载器应用。 - -{% include figure src="./images/tutorial/image_23.png" %} - -加载器应用的布局类似于 Workfiles 应用,但现在您是浏览已发布的文件以进行加载,而不是浏览工作文件以进行打开。 - -在“资产”(Assets)选项卡中,浏览到茶壶角色以显示您在上一节中创建的茶壶发布。您应该会看到 Maya 场景和 Alembic 缓存发布。选择 Alembic 缓存发布以在对话框右侧显示其详细信息。接下来,单击 Alembic 缓存发布的“动作”(Actions)菜单中的**“Create Reference”**项。默认情况下,加载器将保持打开状态以允许执行其他动作,但您可以将其关闭以继续其他操作。您应该会在 Maya 中看到创建了一个引用,它指向来自建模任务的茶壶发布。 - -{% include figure src="./images/tutorial/image_24.png" %} - -接下来,向茶壶添加一个简单的程序着色器。 - -{% include figure src="./images/tutorial/image_25.png" %} - -构建工作流时,着色器的管理可能会是一项耗时并且复杂的任务。通常在很大程度上依赖于每个工作室的具体情况。正因如此,随附的 Maya 集成未提供即时处理着色器或纹理管理的功能。 - -可使用**“{% include product %} > File Save...”**菜单动作保存当前会话,然后再继续。 - -### 自定义着色器发布 - -就此简单工作流而言,您将对发布器应用进行自定义,在贴图工序将 Maya 着色器网络导出为其他发布项。在本教程的后面,您将设计一个快速但不完善的解决方案,让着色器在被下游引用时可重新连接至 Alembic 几何体缓存。 - - -{% include info title="注意" content="您要添加的自定义非常简单并且脆弱。更保险的解决方案可能需要将已贴图角色的其他表现形式以及使用外部图像作为纹理贴图所带来的资产管理任务考虑在内。此示例只是构建实际解决方案的基础。" %} - -{% include info title="注意" content="您可以在[此处](https://developer.shotgridsoftware.com/tk-multi-publish2/)查看有关如何写入发布器插件的完整详细信息。" %} - -#### 改写 Maya 收集器 - -首先,您需要修改发布应用的收集逻辑。发布器配置了一个收集器挂钩,它定义用于“收集”要在应用中发布和显示的项的逻辑。您可以在项目配置的此文件中找到已配置应用的设置: - -**`env/includes/settings/tk-multi-publish2.yml`** - -此文件定义发布应用将在所有美工人员环境中的使用方式。打开文件并搜索 **Maya** 部分,尤其是 **asset step** 的配置。该部分如下图所示: - -{% include figure src="./images/tutorial/image_26.png" %} - -收集器设置定义发布器的收集逻辑所在的挂钩。默认情况下,该值为: - -**`collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py"`** - -此定义包含两个文件。如果挂钩设置中列出多个文件,则表示存在继承性。第一个文件包含 **`{self}`** 令牌,其求值结果为已安装发布应用的 hooks 文件夹。第二个文件包含 **`{engine}`** 令牌,其求值结果为当前插件(在本示例中为已安装的 Maya 插件)的 hooks 文件夹。简而言之,此值表示 Maya 特定的收集器继承发布应用的收集器。这是发布器配置的常见模式,因为应用的收集器挂钩具有无论运行的是什么 DCC 都很有用的逻辑。DCC 特定的逻辑继承自该基本逻辑,并对其扩展以收集特定于当前会话的项。 - -{% include info title="注意" content="我们只更改资产工序环境的收集器设置,因此,在其他上下文(如镜头工序)中工作的艺术家不会看到我们所做的修改。他们将继续使用随附的默认 Maya 收集器。" %} - -在**“配置”**一节中,您了解了如何接管挂钩。自定义过程从接管您的配置中 Maya 插件的收集器挂钩开始。 - -{% include figure src="./images/tutorial/image_27.png" %} - -上图显示了如何执行此操作。首先,在您的项目配置的 **hooks** 文件夹中创建一个文件夹结构。这将为收集器插件提供一些命名空间,因为以后您可能会为其他 DCC 改写同一挂钩。接下来,将安装文件夹中 Maya 插件的收集器挂钩复制到新挂钩文件夹结构中。现在您的配置中应该有 Maya 收集器的副本,路径如下: - -**`config/hooks/tk-multi-publish2/maya/collector.py`** - -接下来,更新 publish2 设置文件以指向新挂钩位置。您的收集器设置现在应具有以下值: - -**`collector: "{self}/collector.py:{config}/tk-multi-publish2/maya/collector.py"`** - -注意 **`{config}`** 令牌。该路径现在将解析为您的项目配置中的 hooks 文件夹。您的收集器新副本将继承自应用本身定义的收集器。 - -{% include info title="注意" content="如果此时发布,发布逻辑将完全相同,因为只是简单地复制并从一个新位置引用了收集器。" %} - -现在,您需要在首选 IDE 或文本编辑器中打开您的收集器副本,然后找到 **`process_current_session`** 方法。此方法负责收集当前 DCC 会话中的所有发布项。由于您将收集一个新发布类型,因此请转到此方法的底部并添加以下行: - -**`self._collect_meshes(item)`** - -这是您将添加用于收集当前会话中发现的任何网格的新方法。此方法将创建着色器发布插件(您将在后面创建)可以对其进行操作的网格项。要传入的项是将作为网格项的父项的会话项。 - -{% include info title="注意" content="这是一种修改现有发布插件的非常有针对性的方法。要深入了解发布器的结构及其所有移动部分,请参见[开发人员文档](http://developer.shotgridsoftware.com/tk-multi-publish2/)。" %} - -现在,将下面的新方法定义添加到文件底部: - -```python - def _collect_meshes(self, parent_item): - """ - Collect mesh definitions and create publish items for them. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "mesh.png" - ) - - # iterate over all top-level transforms and create mesh items - # for any mesh. - for object in cmds.ls(assemblies=True): - - if not cmds.ls(object, dag=True, type="mesh"): - # ignore non-meshes - continue - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.mesh) that will be - # used by an associated shader publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name (the group name). In the future, other publish - # plugins might attach to these mesh items to publish other things - mesh_item = parent_item.create_item( - "maya.session.mesh", - "Mesh", - object - ) - - # set the icon for the item - mesh_item.set_icon_from_path(icon_path) - - # finally, add information to the mesh item that can be used - # by the publish plugin to identify and export it properly - mesh_item.properties["object"] = object -``` - -该代码已添加注释,您可由此了解执行的操作。要点是您现在已添加逻辑来收集当前会话中任何顶级网格的网格项。但是,如果此时执行发布器,项树中将不会有任何网格项。这是因为没有定义对其进行操作的发布插件。接下来,您将编写一个新着色器发布插件,该插件将附加到这些网格项并处理其发布以供下游使用。 - -{% include info title="注意" content="您可能在上面的代码中看到为网格项设置图标的调用。为此,您需要在指定路径向您的配置中添加一个图标:" %} - -**`config/hooks/tk-multi-publish2/icons/mesh.png`** - -#### 创建着色器发布插件 - -下一步是将新收集的网格项连接到发布插件,该插件可以将网格的着色器导出到磁盘并发布它们。您将需要创建一个新发布插件来执行此操作。[单击此链接获取此挂钩的源代码](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_shader_network.py),并将其保存在 **`hooks/tk-multi-publish2/maya`** 文件夹中,然后将其命名为 **`publish_shader_network.py`**。 - -{% include info title="注意" content="如果您不熟悉 Toolkit 平台和发布代码,那么该插件中有大量代码需要了解。现在不必担心。在学习本教程以及接触发布器的功能过程中,您将有时间来查看并了解具体内容。现在,只需创建文件并知道其用途是将着色器网络写入磁盘。" %} - -要想发布着色器,还有最后一步,即添加新着色器发布插件定义的模板和配置。您可以在 **`settings`** 属性中看到该插件定义的设置: - -```python - @property - def settings(self): - "”” … "”” - - # inherit the settings from the base publish plugin - plugin_settings = super(MayaShaderPublishPlugin, self).settings or {} - - # settings specific to this class - shader_publish_settings = { - "Publish Template": { - "type": "template", - "default": None, - "description": "Template path for published shader networks. " - "Should correspond to a template defined in " - "templates.yml.", - } - } - - # update the base settings - plugin_settings.update(shader_publish_settings) - - return plugin_settings -``` - - -此方法定义插件的配置界面。为了告诉插件将着色器网络写入磁盘的什么位置,需要使用**“Publish Template”**设置。将新发布插件添加到发布器配置并包含模板设置。这是之前在接管收集器时修改的同一配置块。它在此文件中定义: - -**`env/includes/settings/tk-multi-publish2.yml`** - -您的配置现在应与下图类似: - -{% include figure src="./images/tutorial/image_28.png" %} - -最后,需要在您的配置中定义新的 **`maya_shader_network_publish`** 模板。编辑此文件来添加此项: - -**`config/core/templates.yml`** - -找到定义与资产相关的 Maya 模板的部分,并添加新模板定义。您的定义将与下图类似: - -{% include figure src="./images/tutorial/image_29.png" %} - -全部操作完毕。您已改写发布应用的收集器挂钩来查找要为其发布着色器的网格。您已执行一个新发布插件以附加到收集的着色器项,并且已定义和配置一个用于指示将着色器网络写入磁盘什么位置的新发布模板。 - -{% include info title="注意" content="如果在对配置进行自定义时关闭了 Maya,请不要担心。只需重新启动 Maya,并使用“File Open”对话框打开您的贴图工作文件。您可以跳过下面的重新加载步骤。" %} - -##### 重新加载 {% include product %} 集成 - -为了试验您的自定义项,您需要在 Maya 会话中重新加载集成。为此,请单击**“{% include product %} > [任务名称] > Work Area Info…”**菜单动作。 - -{% include figure src="./images/tutorial/image_30.png" %} - -这将启动工作区信息应用,该应用提供有关当前上下文的信息。它还有一个方便的按钮,用于在您更改配置时重新加载集成。单击此按钮可重新加载应用和插件,然后关闭该对话框。 - -{% include figure src="./images/tutorial/image_31.png" %} - -### 发布着色器网络 - -现在可以查看更改项目配置的效果。从 {% include product %} 菜单启动发布应用。 您应该会看到收集的茶壶网格项以及附加的**“Publish Shaders”**插件: - -{% include figure src="./images/tutorial/image_32.png" %} - -输入作品说明,并截取已贴图茶壶的缩略图以与已发布的文件关联。最后,单击“Publish”将茶壶着色器导出到磁盘并在 {% include product %} 中将文件注册为发布。 完成后,请注意,会话发布插件已自动将您的工作文件保存为下一个可用版本。这是 {% include product %} 集成支持的所有 DCC 中的默认行为。 - - -现在,您可以浏览到 {% include product %} 中的茶壶资产以验证是否一切都符合预期。 - -{% include figure src="./images/tutorial/image_33.png" %} - -恭喜您!您已成功自定义您的工作流,并为茶壶发布了着色器。看看您是否可以使用所学内容从桌子道具的贴图任务发布着色器。结果应与下图类似: - -{% include figure src="./images/tutorial/image_34.png" %} - -接下来,将介绍装配工作流。 - -## 装配工作流 - -此时,您应该可以非常轻松地使用 {% include product %} 提供的 Workfiles 和“发布”应用打开(或创建)、保存和发布工作文件。 此外,您还曾使用加载器应用加载来自上游的发布。使用所学内容完成以下任务: - -* 从 {% include product %} Desktop 启动 Maya - -* 在茶壶资产的装配工序中创建一个新工作文件 - -* 加载(引用)来自建模工序的茶壶 Alembic 缓存发布 - -* 对茶壶的壶盖进行装配以打开与合上(力求简单) - -* 保存和发布茶壶装配 - -在 {% include product %} 中最后的结果应与下图类似: - -{% include figure src="./images/tutorial/image_35.png" %} - -接下来,让我们看看艺术家如何在其工作流中处理上游更改。打开建模工作文件并对茶壶模型进行一些更改。然后发布更新的作品。结果应与下图类似: - -{% include figure src="./images/tutorial/image_36.png" %} - -在茶壶的装配工序中重新打开工作文件(通过**“{% include product %} > File Open...”**)。现在,启动**“{% include product %} > Scene Breakdown...”**菜单动作。这将启动细分应用,该应用将显示您在工作文件中引用的所有上游发布。在本示例中,只有上游茶壶模型。您应当看到与下图类似的效果: - -{% include figure src="./images/tutorial/image_37.png" width="400px" %} - -对于每次引用,应用将向您显示两个指示符之一:绿色对勾表明引用的发布是最新版本,红色“x”表明有更新的发布可用。在此例中,我们可以看到有更新的发布可用。 - -现在,选择引用的茶壶 Alembic 缓存项(或单击底部的**“Select All Red”**按钮),然后单击**“Update Selected”**。 - -应用会将 Maya 引用更新到茶壶 Alembic 缓存的最新迭代。现在,应该会在文件中看到您的新模型。 - -{% include figure src="./images/tutorial/image_40.png" width="400px" %} - -对装配设置进行所需的任何调整以适合新模型,然后发布更改。 - -在以下各节中,您将在镜头上下文中工作。接下来,将介绍镜头布局。 - -## 布局工作流 - -在本节中,您将开始在为您的项目创建的镜头上下文中工作。您将加载在前面各节中创建的资产并安排镜头。然后,将重新自定义发布器,这次是为了发布镜头摄影机。 - -首先,使用在前面各节中所学内容完成以下任务: - -* 从 {% include product %} Desktop 启动 Maya - -* 在镜头的布局工序中创建一个新工作文件(提示:使用加载器中的“镜头”(Shots)选项卡) - -* 加载(引用)来自茶壶的装配工序的茶壶发布 - -* 加载(引用)来自桌子的建模工序的桌子发布 - -现在,设计一个简单的场景,将茶壶放在桌子上。向场景中添加一个称为 **camMain** 的摄影机,然后对一些帧添加动画效果以创建镜头的摄影机移动。 - -{% include figure src="./images/tutorial/image_41.gif" %} - -当您对自己的镜头布局满意后,通过**“{% include product %} > File Save...”**菜单动作保存文件。如果此时继续操作并发布,您只会看到整个 Maya 会话是一个要发布的可用项。 - -我们要添加一项简单自定义,这也是可为工作流带来很大灵活性的自定义,那就是将独立摄影机发布为可轻松导入其他软件包的文件格式的功能。通过此功能,您可以生成一次摄影机(通常在布局中),然后让所有其他工作流工序(如动画、照明和合成)直接使用它。 - -### 收集摄影机 - -与着色器发布一样,第一步是自定义收集器挂钩。您已接管 Maya 的收集器挂钩,并为资产工序对其进行了配置。现在,您需要为镜头工作流工序更新配置。要执行此操作,请修改发布器的配置文件,然后编辑 Maya 镜头工序收集器设置。 - -{% include figure src="./images/tutorial/image_42.png" %} - -现在,在镜头上下文中执行任务时,您的自定义收集器逻辑将运行。下一步是添加自定义摄影机收集逻辑。 - -打开自定义收集器挂钩,并在 **`process_current_session`** 方法底部添加以下方法调用,之前在贴图一节中已在此方法中添加了用于收集网格的调用: - -**`self._collect_cameras(item)`** - -接下来,将该方法本身添加到文件底部: - -```python - def _collect_cameras(self, parent_item): - """ - Creates items for each camera in the session. - - :param parent_item: The maya session parent item - """ - - # build a path for the icon to use for each item. the disk - # location refers to the path of this hook file. this means that - # the icon should live one level above the hook in an "icons" - # folder. - icon_path = os.path.join( - self.disk_location, - os.pardir, - "icons", - "camera.png" - ) - - # iterate over each camera and create an item for it - for camera_shape in cmds.ls(cameras=True): - - # try to determine the camera display name - try: - camera_name = cmds.listRelatives(camera_shape, parent=True)[0] - except Exception: - # could not determine the name, just use the shape - camera_name = camera_shape - - # create a new item parented to the supplied session item. We - # define an item type (maya.session.camera) that will be - # used by an associated camera publish plugin as it searches for - # items to act upon. We also give the item a display type and - # display name. In the future, other publish plugins might attach to - # these camera items to perform other actions - cam_item = parent_item.create_item( - "maya.session.camera", - "Camera", - camera_name - ) - - # set the icon for the item - cam_item.set_icon_from_path(icon_path) - - # store the camera name so that any attached plugin knows which - # camera this item represents! - cam_item.properties["camera_name"] = camera_name - cam_item.properties["camera_shape"] = camera_shape -``` - -同样,该代码已添加注释,您可由此了解执行的操作。您已添加用于收集当前会话中所有摄影机的摄影机项的逻辑。与以前一样,如果此时执行发布器,项树中将不会有任何摄影机项。这是因为没有定义对其进行操作的发布插件。接下来,您将编写一个摄影机发布插件,该插件将附加到这些项并处理其发布以供下游使用。 - -{% include info title="注意" content="您可能在上面的代码中看到为摄影机项设置图标的调用。为此,您需要在指定路径向您的配置中添加一个图标:" %} - -**`config/hooks/tk-multi-publish2/icons/camera.png`** - -### 自定义摄影机发布插件 - -下一步是将新收集的摄影机项连接到发布插件,该插件可以将摄影机的着色器导出到磁盘并发布它们。您将需要创建一个新发布插件来执行此操作。[单击此链接获取此挂钩的源代码](https://github.com/shotgunsoftware/tk-config-default2/blob/pipeline_tutorial/hooks/tk-multi-publish2/maya/publish_camera.py),并将其保存在 **`hooks/tk-multi-publish2/maya`** 文件夹中,然后将其命名为 **`publish_camera.py`**。 - -### 摄影机发布配置 - -最后,您需要为镜头工序更新发布应用的配置。编辑设置文件以添加您的新插件。 - -**`env/includes/settings/tk-multi-publish2.yml`** - -您的配置现在应与下图类似: - -{% include figure src="./images/tutorial/image_43.png" %} - -您将注意到两个设置按新插件的 **`settings`** 方法定义添加到文件中。与着色器插件一样,有一个**“Publish Template”**设置,用于定义摄影机文件的写入位置。摄影机设置是摄影机字符串列表,用于驱动插件应对其进行操作的摄影机。我们要求应用某种摄影机命名约定,对于不符合该约定的摄影机,此设置将防止向用户呈现发布项。在上图中,将仅呈现 **`camMain`** 摄影机以供发布。执行您添加的插件时,还可以处理通配符模式,例如 **`cam*`**。 - -测试更改之前的最后一步是添加新摄影机发布模板的定义。编辑 **`config/core/templates.yml`** 文件,并向 Maya 镜头模板部分添加模板定义: - -{% include figure src="./images/tutorial/image_44.png" %} - -此时,您应该可以使用新插件发布摄影机。使用**工作区信息**应用重新加载集成,然后启动发布器。 - -{% include figure src="./images/tutorial/image_45.png" %} - -如图中所示,收集了新摄影机项并附加了发布插件。继续操作并单击**“Publish”**将摄影机写入磁盘,然后向 ShotGrid 注册该摄影机。 - -{% include info title="注意" content="与 Alembic 导出类似,摄影机发布插件需要加载 FBX 导出插件。如果您没有看到摄影机发布插件项,请确保 FBX 插件已加载,然后重新启动发布器。" %} - -在 {% include product %} 中您应当看到与下图类似的效果: - -{% include figure src="./images/tutorial/image_46.png" %} - -就这么简单!接下来,将介绍动画。 - -## 动画工作流 - -到目前为止,您只自定义了发布应用以便将自定义文件类型/内容写入磁盘以及与其他工作流工序共享这些文件类型/内容。在本节中,您将自定义加载器应用的配置来完成往返操作,以便能够导入/引用自定义发布。 - -使用在前面各节中所学内容完成以下任务。 - -* 从 {% include product %} Desktop 启动 Maya - -* 在镜头的动画工序中创建一个新工作文件 - -* 加载(引用)来自镜头的布局工序的 Maya 会话发布 - -{% include info title="注意" content="您将注意到摄影机已包含在布局会话发布文件中。在强大的工作流中,摄影机可能会明确隐藏或从会话发布中排除,以便单独的摄影机发布文件可以作为一个真实的摄影机定义。继续操作,删除或隐藏通过引用包含进来的摄影机。" %} - -### 自定义摄影机加载器动作 - -为了自定义加载器应用以导入/引用摄影机发布,您将需要编辑应用的设置文件。这是您配置中的文件的路径: - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -找到为 Maya 配置应用的部分,然后将此行添加到 **`action_mappings`** 设置中的动作列表: - -**`FBX Camera: [reference, import]`** - -在自定义摄影机发布插件中,Maya 中的 **`FBXExport`** MEL 命令用于将摄影机写入磁盘,用于向 {% include product %} 注册文件的发布类型是 **`FBX Camera`**。您添加到设置的行告诉加载器,对于类型为 **`FBX Camera`** 的任何发布,显示 **`reference`** 和 **`import`** 动作。这些动作在加载器应用的 [tk-maya-actions.py](https://github.com/shotgunsoftware/tk-multi-loader2/blob/master/hooks/tk-maya_actions.py) 挂钩中定义。以某种方式执行这些动作以处理 Maya 可以引用或导入的任何类型的文件。自定义插件生成的 **`.fbx`** 文件属于该类别,因此,为了能够加载已发布的摄影机,这是唯一要做的更改。 - -现在应用设置应如下所示: - -{% include figure src="./images/tutorial/image_47.png" width="400px" %} - -现在,通过**工作区信息**应用重新加载集成以获取新设置,然后浏览到布局工序发布的摄影机。 - -{% include figure src="./images/tutorial/image_48.png" %} - -按新发布类型过滤,然后创建对摄影机的引用。关闭加载器,您应该能够使用新引用的摄影机播放在上一节中创建的摄影机运动。 - -接下来,为茶壶模型添加动画效果以执行某些操作(力求简单)。 - -{% include figure src="./images/tutorial/image_49.gif" %} - -当您对自己的动画满意后,保存并发布您的工作文件,就像在前面各节中执行的操作一样。 - -接下来,将介绍照明。 - -## 照明工作流 - -在本节中,您将汇聚在前面各节中发布的内容并渲染您的镜头。要执行此操作,您将自定义加载器应用以加载在茶壶资产的贴图工序中发布的着色器。 - -首先,使用在前面各节中所学内容完成以下任务。 - -* 从 {% include product %} Desktop 启动 Maya - -* 在镜头的照明工序中创建一个新工作文件 - -* 加载(引用)来自镜头的动画工序的 Maya 会话发布 - -* 加载(引用)来自镜头的布局工序的摄影机发布 - -### 自定义着色器加载器动作 - -为了加载在贴图工序中发布的着色器,您将需要接管上一节中提到的 **`tk-maya-actions.py`** 挂钩。将该挂钩从安装位置复制到您的配置中。 - -{% include figure src="./images/tutorial/image_50.png" %} - -该挂钩负责生成可对给定发布执行的动作列表。加载器应用为随附的集成支持的每个 DCC 定义此挂钩的不同版本。 - -在“贴图工作流”一节中发布的着色器是 Maya 文件,因此,与导出的摄影机一样,无需更改现有的逻辑,加载器就可以引用它们。唯一要做的更改是向动作挂钩添加一个新逻辑,以在着色器被引用到文件中之后将它们连接至适当的网格。 - -在动作挂钩结尾处添加以下方法(在类外部)。 - -```python - def _hookup_shaders(reference_node): - """ - Reconnects published shaders to the corresponding mesh. - :return: - """ - - # find all shader hookup script nodes and extract the mesh object info - hookup_prefix = "SHADER_HOOKUP_" - shader_hookups = {} - for node in cmds.ls(type="script"): - node_parts = node.split(":") - node_base = node_parts[-1] - node_namespace = ":".join(node_parts[:-1]) - if not node_base.startswith(hookup_prefix): - continue - obj_pattern = node_base.replace(hookup_prefix, "") + "\d*" - obj_pattern = "^" + obj_pattern + "$" - shader = cmds.scriptNode(node, query=True, beforeScript=True) - shader_hookups[obj_pattern] = node_namespace + ":" + shader - - # if the object name matches an object in the file, connect the shaders - for node in (cmds.ls(references=True, transforms=True) or []): - for (obj_pattern, shader) in shader_hookups.iteritems(): - # get rid of namespacing - node_base = node.split(":")[-1] - if re.match(obj_pattern, node_base, re.IGNORECASE): - # assign the shader to the object - cmds.select(node, replace=True) - cmds.hyperShade(assign=shader) -``` - - -现在,在 **`_create_reference`** 方法结尾处添加以下两行,用于调用着色器挂接逻辑: - -```python - reference_node = cmds.referenceQuery(path, referenceNode=True) - _hookup_shaders(reference_node) -``` - - -每当创建新引用时都会运行该代码,因此,如果文件中已存在着色器,则它应在引用新几何体时指定着色器。同样,如果几何体已存在,则它应在引用着色器时指定几何体。 - -{% include info title="注意" content="此挂接逻辑非常暴力,无法正确处理命名空间以及在执行制作就绪的工作流时应考虑的与 Maya 相关的其他细微之处。" %} - -最后,通过编辑此文件使镜头的加载器设置指向新挂钩: - -**`config/env/includes/settings/tk-multi-loader2.yml`** - -同时,还将 Maya 着色器网络发布类型与引用动作相关联。现在加载器设置应如下所示: - -{% include figure src="./images/tutorial/image_51.png" %} - -现在,通过**工作区信息**应用重新加载集成以获取新设置,然后浏览到贴图工序发布的着色器。 - -创建对茶壶着色器网络发布的引用。 - -{% include figure src="./images/tutorial/image_52.png" %} - -现在,加载桌子着色器网络。如果在 Maya 中启用了“硬件纹理”(Hardware Texturing),着色器应已自动连接到来自动画工序的网格引用。 - -{% include figure src="./images/tutorial/image_53.png" %} - -现在,向场景中添加一些灯光(力求简单)。 - -{% include figure src="./images/tutorial/image_54.png" %} - -### 发布 Maya 渲染 - -将镜头渲染到磁盘。 - -{% include figure src="./images/tutorial/image_54_5.gif" %} - -{% include info title="注意" content="如您所见,茶壶和桌子资产的贴图存在问题。对于本教程而言,假定这些是有意做出的艺术效果。如果您想要解决这些问题,可以始终加载这些资产的贴图工作文件,调整着色器并重新发布它们。如果这么做,请记得更新照明工作文件中的引用并重新渲染。如果您执行这些步骤,可能会发现,在重新加载引用后,细分应用并不重新连接更新的着色器。根据您修改加载器以挂接着色器引用的经验,您应该能够更新细分应用的场景操作挂钩来添加所需的逻辑。提示:请参见[此文件](https://github.com/shotgunsoftware/tk-multi-breakdown/blob/master/hooks/tk-maya_scene_operations.py#L69) 中的 update 方法。" %} - -随附的 {% include product %} 集成通过查看文件中定义的渲染层来收集图像序列。完成渲染后,启动发布器。您将看到渲染的序列显示为树中的一项。 - -{% include figure src="./images/tutorial/image_55.png" %} - -继续操作并发布会话和渲染的图像文件序列。在 {% include product %} 中您应当看到与下图类似的效果: - -{% include figure src="./images/tutorial/image_56.png" %} - -接下来,将介绍合成! - -## 合成工作流 - -在本教程的最后一节中,将向您介绍 Nuke 提供的一些默认集成。除了在前面各节中提到的应用之外,您还将了解 ShotGrid 可识别的写入节点和一个用于将渲染快速发送给其他人以供审核的应用。 - -首先,执行以下步骤来准备工作文件。 - -* 从 {% include product %} Desktop 启动 Nuke - -* 与在 Maya 中一样,使用“{% include product %} > File Open…”菜单动作在镜头的合成工序中创建一个新工作文件。 - - -通过加载器应用加载在上一节中渲染并发布的图像序列。 - -{% include figure src="./images/tutorial/image_57.png" %} - -为 **`Image`** 和 **`Rendered Image`** 发布类型(类型取决于文件扩展名)定义的动作是**“Create Read Node”**。单击此动作可在 Nuke 会话中创建一个新的 **`Read`** 节点。 - -请确保您的 Nuke 项目设置输出格式与渲染的图像匹配。创建一个恒定颜色以用作背景,并将其与读取节点合并。附加查看器以查看合成。 - -{% include figure src="./images/tutorial/image_58.png" %} - -当您对自己的合成满意后,使用**“{% include product %} > File Save…”**菜单动作保存工作文件。 - -然后,单击 Nuke 的左侧菜单中的 {% include product %} 标识。在该菜单中单击一个 ShotGrid 可识别的写入节点: - -{% include figure src="./images/tutorial/image_59.png" width="400px" %} - -{% include product %} 写入节点应用在内置 Nuke 写入节点之上提供了一层,它会基于当前 {% include product %} 上下文自动得出输出路径。 - -{% include figure src="./images/tutorial/image_60.png" %} - -将图像帧渲染到磁盘。您现在可以发布 Nuke 会话以将工作文件与渲染的图像关联。默认情况下,发布器将收集渲染的帧并附加一个插件以向 {% include product %} 注册帧。另一个插件将通过一个在后台运行的名为审核提交的集成上传帧以供审核。此应用使用 Nuke 生成将上传并提交供审核的 QuickTime 影片。 - -{% include figure src="./images/tutorial/image_61.png" %} - -另一个有用的集成是快速审核应用。这是一个输出节点,该节点将快速生成 QuickTime 影片并将其上传到 {% include product %} 以供审核。该应用位于左侧菜单中 {% include product %} 写入节点旁边。 - -{% include figure src="./images/tutorial/image_62.png" width="400px" %} - -创建一个快速审核节点,然后单击“上传”(Upload)按钮以将输入渲染到磁盘、生成 QuickTime 影片,并将结果上传到 {% include product %} 以供审核。提交帧时,有一些标准选项可供选择。 - -{% include figure src="./images/tutorial/image_63.png" %} - -在 {% include product %} 中检查“媒体”(Media)选项卡以查看两个上传的 QuickTime 影片。 - -{% include figure src="./images/tutorial/image_64.png" %} - -有关在 {% include product %} 中审核媒体的详细信息,请参见[官方文档](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_review_approval_html)。 - -# 总结 - -祝贺您,您已完成本教程!我们希望本教程能为您使用 {% include product %} 集成打造自己的自定义工作流奠定良好的基础。 学完本教程,您应该能够了解如何根据自己工作室的特定需求扩展默认的集成。 - -在 [shotgun-dev Google 组](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups&hl=zh_CN#!forum/shotgun-dev)中提出问题,了解其他工作室如何使用 Toolkit。请订阅以查看最新的帖子! - -如果您认为默认的集成未涵盖某些功能或工作流,可以随时编写自己的应用。[这里是一份详实的文档](https://developer.shotgridsoftware.com/zh_CN/2e5ed7bb/),可帮助您开始编写您的第一个应用。 - -与以往一样,如果您对本教程、{% include product %} 或 Toolkit 平台有其他疑问,请[访问社区](https://community.shotgridsoftware.com/c/pipeline/6)。 diff --git a/docs/zh_CN/guides/review.md b/docs/zh_CN/guides/review.md deleted file mode 100644 index 0100600d1..000000000 --- a/docs/zh_CN/guides/review.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: 审核 -pagename: review -lang: zh_CN ---- - -# 审核 - -了解如何充分利用 RV,这是一套屡获殊荣的数字审核工具,使您能够通过协作工具和诸多深度集成播放、比较和转换数字媒体。 - -深入研究 RV 参考手册,以全面了解节点图表、自定义着色器、事件处理和网络连接。 - -查看 RV-SDI 手册,了解我们如何将 NVIDIA SDI 视频设备作为演示模式设备进行实施。 - -借助与 Maya、Nuke 甚至 {% include product %} 本身的集成软件包,实现无缝工作流。 diff --git a/docs/zh_CN/guides/review/integrations.md b/docs/zh_CN/guides/review/integrations.md deleted file mode 100644 index 3460ed424..000000000 --- a/docs/zh_CN/guides/review/integrations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 集成 -pagename: rv-integrations -lang: zh_CN ---- - -# RV 集成 - -除了 {% include product %} 集成、RV 审片室和 {% include product %} 审看等不同的 {% include product %} 集成外,RV 还提供适用于 Nuke 和 Maya 的集成工具,但功能集有所不同。 - -下面的前两个文档描述了 Nuke 和 Maya 集成的安装和工作流,后两个文档描述了不同的 {% include product %} 集成,从而帮助您决定要使用哪种集成。 diff --git a/docs/zh_CN/guides/review/rv-developer-overview.md b/docs/zh_CN/guides/review/rv-developer-overview.md deleted file mode 100644 index 6d29a3afa..000000000 --- a/docs/zh_CN/guides/review/rv-developer-overview.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: RV 开发人员概述 -pagename: rv-developer-overview -lang: zh_CN ---- - -# RV 开发人员概述 - -RV 核心参考 ------------------ - -### 用户手册 - -本用户手册概括介绍了 RV 和 RVIO 入门知识以及完整命令行和 GUI 用法。此外,您还将找到安装注意事项和提示以更大限度地提高性能,并找到有关 LUT、RV 像素工作流、立体三维、使用软件包扩展 RV、RV 网络连接和 RVLS 媒体列表实用程序的详尽信息。 - -* [RV 用户手册](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_user_manual_html) -* [问题和疑难解答论坛](https://community.shotgridsoftware.com/c/rv/14) - -### 技术参考手册 - -本参考手册是了解如何自定义 RV 的入门手册。它概述了 RV 软件包系统和 Mu 脚本功能。如果您要更改热键、添加菜单、自定义颜色管理、创建新控件或将 RV 与您的工作流相集成,可通过本参考手册入门。 - -* [技术参考手册](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_reference_manual_html) -* [扩展 RV 论坛](https://community.shotgridsoftware.com/c/rv/14) - -### RV-SDI 手册 - -本手册介绍了 Tweak 如何将 NVIDIA SDI 视频设备作为演示模式设备进行实施。有关演示模式及其与 RV 的常规关联方式的详细信息,请参见 RV 用户手册。要使用 RV-SDI,则必须运行“RV”(或“rv.exe”)可执行文件,并具有“rvsdi”许可。 - -* [RV-SDI 手册](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_rv_sdi_manual_html) - - - -RV 集成 --------------- - -### RV/Nuke 集成 - -RV 现在附带 Nuke 集成工具。本文档介绍了适用于单个或系统范围设置的安装,并介绍了 RV/Nuke 的工作流、工具、概念和用法。 - -* [RV-Nuke 集成文档](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_knowledge_base_rv_nuke_integration_html) - -### RV/Maya 集成 - -RV 现在附带 Maya 集成。本文档介绍了如何安装 RV/Maya 软件包,并介绍了 RV/Maya 工作流、如何比较和组织播放预览,以及如何在编辑、A/B 比较和布局中呈现。 - -* [RV-Maya 集成文档](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_maya_integration_html) diff --git a/docs/zh_CN/guides/webhooks.md b/docs/zh_CN/guides/webhooks.md deleted file mode 100644 index 7c447e1ff..000000000 --- a/docs/zh_CN/guides/webhooks.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -layout: default -title: Webhook -pagename: shotgun-webhooks -lang: zh_CN ---- - -# Webhook - -{% include info title="Beta" content="Webhook 当前为 Beta 版。加入 [Webhook 社区论坛](https://community.shotgridsoftware.com/c/webhooks),了解更多信息并参与其中。" %} - -Webhook 允许向您控制的服务通知 {% include product %} 中发生的事件。当您创建 Webhook 时,需指定感兴趣的事件类型,并告诉 {% include product %} 在该事件触发后要将数据发送至哪个 URL。{% include product %} 中发生相关事件后,会将描述事件的数据的有效负载发送到 Webhook 的 URL。这样就可以构建与 {% include product %} 的紧密集成并使工作流的某些部分实现自动化。 - -## 有哪些示例说明 Webhook 的用法? - -我们提供了很多 Webhook 用例。本文档中概述了一些我们认为非常吸引人的用例,但其用途并不仅限于这些示例。 - -### 创建实体后在磁盘上创建目录结构 - -我们看到重复出现多次的一个工作流就是,在 {% include product %} 中创建新实体后需要在磁盘上创建目录结构。为何不提前准备,确保在 {% include product %} 中创建新镜头后即可自动供艺术家使用? - -### 状态管理自动化 - -当动画团队完成工作后,为何不提前准备,更改同一镜头中下游任务的状态,以指示可以开始执行更多工作?这样,您就可以自动通知不同领域的指定艺术家一切都已准备就绪! - -另一个说明如何自动进行状态管理的示例是,在创建新的 `Note` 后触发 `Task` 实体状态更改。这是一种很好的方法,可以告知艺术家和制作团队,主管在审核会话后已请求更改或修复当前作品。 - -## 何时应使用 Webhook,而不是 {% include product %} 事件进程? - -Webhook 和 [{% include product %} 事件进程](https://github.com/shotgunsoftware/shotgunEvents/wiki)提供类似的功能,但存在一些关键区别。事件进程要求您运行、监视和维护自己的服务。您的所有代码都必须使用 Python 编写,并且允许您启动自己的 {% include product %} 连接。相反,Webhook 会应答连接,并且可以使用任何编程语言编写。它们可以在无服务器环境中托管,例如 [AWS Lambda](https://aws.amazon.com/cn/lambda),也可以触发任何在线提供的自动化平台,例如 [Zapier](https://zapier.com) 和 [IFTTT](https://ifttt.com)。如果您的用例用到 Webhook,这应该是首选解决方案。 - -## 创建 Webhook - -要开始创建 Webhook,请转到 Webhook 页面,然后导航至 Webhook 列表上方的按钮。对 Webhook 的访问通过“高级 > 显示 Webhook”(Advanced > Show Webhooks)权限进行控制。对于默认管理员和经理角色会启用此权限。 - -![“创建 Webhook”(Create Webhook)按钮](./images/webhooks/create_webhook_button.png) - -接下来是填写创建新 Webhook 所需的信息。 - -![“创建 Webhook”(Create Webhook)对话框](./images/webhooks/create_webhook_dialog.png) - -### 秘密令牌 - -为 Webhook 指定秘密令牌是可选的。如果提供,任何发送至 Webhook URL 的请求都会使用该令牌进行签名。令牌值作为名为 `X-SG-SIGNATURE` 的标题随请求一起发送。使用 HMAC 与 SHA1 计算签名,并且签名的消息是请求的 JSON 主体。 - -#### 标题格式 - -`=` - -#### 为何使用秘密令牌? - -尽管不是严格要求,但提供秘密令牌可以对发送到 Webhook URL 的有效负载进行签名。这允许使用者服务验证数据是否来自预期的源,并且有效负载在传输过程中没有发生任何改变。 - -#### 签名验证 - -下面使用 Python 举例说明如何验证有效负载的签名。 - -``` ->>> import hmac ->>> import hashlib ->>> body | `' ->>> token | `mytoken' ->>> 'sha1=' + hmac.new(token, body, hashlib.sha1).hexdigest() == 'sha1=32824e0ea4b3f1ae37ba8d67ec40042f3ff02f6c' -True -``` - -### 验证 SSL 证书 - -验证 SSL 证书是一项可选功能,该功能可帮助确保到 Webhook 的使用者 URL 的任何连接的安全性。如果启用,则向 Webhook 的 URL 交付内容时,{% include product %} 将使用 OpenSSL 的证书验证例程来验证证书。 - -## Webhook 状态 - -一个 Webhook 可以有以下几种不同的状态,以指示其运行状况和继续接收交付内容的能力。 - -![“创建 Webhook”(Create Webhook)对话框](./images/webhooks/webhook_selected_status.png) - -| 状态(Status) | 示例 | 说明 | -|--------|:-------:|:-----------:| -| 活动 | ![活动](./images/webhooks/webhook_status_active.png) | Webhook 运行稳定。在过去 24 小时内,向此 Webhook 的使用者 URL 进行的交付都已到达其目的地。 | -| 不稳定 | ![不稳定](./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 处于禁用状态,并且在重新启用之前,不会再尝试进行任何交付。 | - -## 交付 - -在 Webhook 列表中选择一个 Webhook 将显示七天以来向该 Webhook 发起的所有交付。 - -{% include info title="注意" content="超过七天的交付日志将被移除且无法恢复。" %} - -### 交付状态 - -交付状态指示是否已成功交付到 Webhook 的 URL。 - -![交付状态](./images/webhooks/delivery_status.png) - -### 交付详细信息 - -交付可展开以显示有关发送到此 Webhook URL 的请求以及对此请求的响应的详细信息。 - -![交付详细信息](./images/webhooks/delivery_details.png) - -#### 请求有效负载 - -发送到 Webhook URL 的有效负载包含描述在 {% include product %} 中发生的事件及其触发者的信息。它以 JSON 格式提供。 - -{% include warning title="有效负载大小" content="交付的有效负载最大为 1 MB。ShotGrid 中触发的任何导致有效负载超过 1 MB 的事件都将移除其 `new_value` 和 `old_value` 键,并添加一个 `warning` 键,其中包含消息,说明发生了什么、为什么以及如何从 ShotGrid 检索完整事件日志条目。" %} - -##### 有效负载示例 - -```json -{ - "data": { - "id": "95.0", - "meta": { - "type": "attribute_change", - "entity_id": 758, - "new_value": "This is the newest description ever!!", - "old_value": "This is the old description!", - "entity_type": "Asset", - "attribute_name": "description", - "field_data_type": "text" - }, - "user": { - "id": 113, - "type": "HumanUser" - }, - "entity": { - "id": 758, - "type": "Asset" - }, - "project": { - "id": 65, - "type": "Project" - }, - "operation": "update", - "created_at": "2019-07-12 21:14:36.598835", - "event_type": "Shotgun_Asset_Change", - "session_uuid": "07473c00-a4ea-11e9-b3b8-0242ac110006", - "attribute_name": "description", - "event_log_entry_id": 248249 - } -} -``` - -##### 会话 UUID - -事件有效负载的一部分是在 {% include product %} 中触发事件的 `session_uuid`。此值可以提供给 [{% include product %} 的 Python API](https://developer.shotgridsoftware.com/python-api/reference.html?highlight=session_uuid#shotgun_api3.shotgun.Shotgun.set_session_uuid),这将导致具有该 session_uuid 的任何已打开浏览器会话为 API 生成的事件显示更新。 - -### 响应交付 - -Webhook 使用者服务必须响应交付,这样系统才会将其视为已成功交付。 - -{% include warning title="响应超时" content="必须在交付到 Webhook URL 后六秒内收到响应,否则连接将关闭。未能及时响应将导致交付失败。" %} - -系统会记录每个交付的处理时间,您可以在“响应详细信息”(Response details)选项卡中查看该时间。 - -#### 限制 - -您的使用者响应交付的时间将影响您站点的 Webhook 吞吐量。 -每个站点允许的响应时间为 1 分钟。因此,如果某个站点的所有已配置使用者端点都需要整整 6 秒时间来响应,则该站点的 Webhook 交付限制为每分钟 10 个。 - -如果需要较高的整体吞吐量,则应根据以下模型设计使用者端点: -1. 接收请求 -2. 生成另一个进程/线程以按所需方式对其进行处理 -3. 立即回答确认 200 - -#### 状态代码 - -| 状态(Status) | 代码 | 说明 | -|--------|:----:|:-----------:| -| 成功 | < 400 | 交付已接收并成功处理。 | -| 错误 | >= 400 | 交付已接收,但未成功处理。 | -| 重定向 | 3xx | 交付已接收,但应重定向到其他 URL。 | - -### 确认 - -可以更新交付,使其包含确认。进行交付后,标题将作为请求的一部分提供。标题中包含交付记录的 ID(存储在 `x-sg-delivery-id` 键中)。此 ID 可以用于更新交付记录,以使用 [{% include product %} REST API](https://developer.shotgridsoftware.com/rest-api) 包含确认。 - -{% include warning title="确认大小" content="确认的最大允许大小为 4 KB。" %} - -#### 标题示例 - -```json -{ - "accept": "application/json", - "content-type": "application/json; charset=utf-8", - "x-sg-webhook-id": "30f279a0-42a6-4cf2-bb5e-6fc550d187c8", - "x-sg-delivery-id": "dea7a71d-4896-482f-b238-b61820df8b65", - "x-sg-event-batch-id": "1", - "x-sg-event-batch-size": "4", - "x-sg-webhook-site-url": "http://yoursite.shotgunstudio.com/", - "x-sg-event-batch-index": "3" -} -``` - -#### 确认有什么用途? - -确认允许在带外详细报告对 Webhook URL 已成功接收的交付的处理是成功还是失败。这会将从 {% include product %} 接收交付的状态与此次交付的关联事件处理成功还是失败分开。通过这种方式,成功交付的事件可以包含其他信息以用于调试。一个很好的示例是在创建 `Asset` 实体时触发的 Webhook。如果该 Webhook 的职责是为每个新 `Asset` 在磁盘上创建目录结构,则 Webhook URL 可以成功接收交付,但由于磁盘或网络故障无法创建关联的目录。然后它可以使用详细的错误消息更新交付记录,说明未创建目录结构及其原因。 - -## 测试 Webhook - -您可以使用任何在线免费提供的 Webhook URL 生成器进行测试。这些服务专门用于测试 Webhook 和其他类型的 HTTP 请求。这是快速了解 Webhook 的好方法,无需在自己的网络上设置任何基础设施。 - -### 使用 webhook.site - -我们建议使用 [webhook.site](https://webhook.site)。它提供了可复制并粘贴到 Webhook 的唯一 URL,并且向您实时显示向该地址执行的交付。可以自定义页面,以便对具有特定状态代码和正文的交付做出响应,这意味着您可以测试交付是成功还是失败。 - -webhook.site 服务存在严格的速率限制。这意味着,最后很容易出现某些交付被拒绝,从而导致 Webhook 不稳定或失败的情况。在测试时,建议您使用已知且可控制的项目环境,而不是生产环境中的实时数据。 - -{% include warning title="生产数据" content="建议不要将生产事件数据发送到可公开获得的第三方 Web 服务!我们建议在使用 webhook.site 测试 Webhook 时仅使用测试数据。" %} diff --git a/docs/zh_CN/guides/webhooks/batch-deliveries.md b/docs/zh_CN/guides/webhooks/batch-deliveries.md deleted file mode 100644 index 8f8a66e51..000000000 --- a/docs/zh_CN/guides/webhooks/batch-deliveries.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: Webhook 批量交付 -pagename: webhooks-batch-deliveries -lang: zh_CN ---- - -# 批量交付 - -## 启用批量交付 - -您可以选择将您的 Webhook 配置为使用有效负载批处理格式发出请求,方法是选中“以批处理格式交付”(Deliver in Batched Format)选项。 -如果启用此选项,则在发出每个请求时,它将 50 个待处理的事件打包到负载当中一同分发。 - -这有助于管理对因在很短时间内生成许多 SG 事件而突然出现的大量交付进行的处理。在典型的系统操作下,当订阅的事件生成频率超过 2 秒一次时,将出现每个有效负载包含多个交付的情况。 - -![已启用批量交付](./images/batch_delivery_enabled.png) - -## 响应交付 - -如果启用批量交付,建议将您的接收服务设计为保证响应的速度远快于每个事件 1 秒。否则,在一批包含事件较多时,超时和 Webhook 失败的风险将会增大。 - -{% include info title="注意" content="对于需要大约 1 秒来响应单个事件的接收服务,响应时间是主要性能因素,而不是交付开销。批处理不会有任何显著优势。" %} - -#### 非批量交付 Webhook -* 允许的超时上限为每个交付 6 秒。即 Webhook 端点必须在 6 秒内响应每个请求。 - -#### 批量交付 Webhook -* 允许的超时上限为每批 6 秒或一批中每个事件 1 秒(以最大值为准)。 -* 仍存在以下限制:所有 Webhook 中每个 ShotGrid 站点 Webhook 端点响应时间为 1 分钟。 - -## Webhook 交付格式比较 - -#### 非批量交付 Webhook 消息正文(始终为 1 个事件): - -```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" - }, - "created_at":"2021-02-22 17:40:23.202136", - "attribute_name":"code", - "session_uuid":null, - }, - "timestamp":"2021-02-22T17:40:27Z" -} -``` - -#### 批量交付 Webhook 消息正文(可能包含 1 到 50 个事件) - -启用了批处理时,将始终显示 `deliveries` 键,即使批中只有 1 个事件也是如此。其值是单个事件交付数据数组,此处为每个交付提供的信息与非批处理模式相同。 - -```json -{ - "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" - }, - "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*" - }, - "created_at":"2021-02-22 18:04:39.212032", - "attribute_name":"description", - "session_uuid":null, - }, - ] - } -} -``` diff --git a/docs/zh_CN/guides/webhooks/images/batch_delivery_enabled.png b/docs/zh_CN/guides/webhooks/images/batch_delivery_enabled.png deleted file mode 100644 index 08520c549..000000000 Binary files a/docs/zh_CN/guides/webhooks/images/batch_delivery_enabled.png and /dev/null differ diff --git a/docs/zh_CN/images/color.png b/docs/zh_CN/images/color.png new file mode 100644 index 000000000..3eaa1503a Binary files /dev/null and b/docs/zh_CN/images/color.png differ diff --git a/docs/zh_CN/images/landing_page/book.png b/docs/zh_CN/images/landing_page/book.png deleted file mode 100644 index 5db0b1698..000000000 Binary files a/docs/zh_CN/images/landing_page/book.png and /dev/null differ diff --git a/docs/zh_CN/images/landing_page/play.png b/docs/zh_CN/images/landing_page/play.png deleted file mode 100644 index 7a6d24aa4..000000000 Binary files a/docs/zh_CN/images/landing_page/play.png and /dev/null differ diff --git a/docs/zh_CN/images/landing_page/rv.png b/docs/zh_CN/images/landing_page/rv.png deleted file mode 100644 index 692e12166..000000000 Binary files a/docs/zh_CN/images/landing_page/rv.png and /dev/null differ diff --git a/docs/zh_CN/images/landing_page/sg.png b/docs/zh_CN/images/landing_page/sg.png deleted file mode 100644 index 177fb8be6..000000000 Binary files a/docs/zh_CN/images/landing_page/sg.png and /dev/null differ diff --git a/docs/zh_CN/images/landing_page/sg_large_logo.png b/docs/zh_CN/images/landing_page/sg_large_logo.png deleted file mode 100644 index 46ffa54aa..000000000 Binary files a/docs/zh_CN/images/landing_page/sg_large_logo.png and /dev/null differ diff --git a/docs/zh_CN/images/landing_page/tk.png b/docs/zh_CN/images/landing_page/tk.png deleted file mode 100644 index cce9235c2..000000000 Binary files a/docs/zh_CN/images/landing_page/tk.png and /dev/null differ diff --git a/docs/zh_CN/index.md b/docs/zh_CN/index.md deleted file mode 100644 index 0f7e37601..000000000 --- a/docs/zh_CN/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: landing_page -title: 概述 -pagename: index -lang: zh_CN ---- - diff --git a/docs/zh_CN/quick-answers/administering.md b/docs/zh_CN/quick-answers/administering.md deleted file mode 100644 index dad9909ee..000000000 --- a/docs/zh_CN/quick-answers/administering.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 管理 -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) -- [如何禁用 {% include product %} Desktop 的浏览器集成?](./administering/disable-browser-integration.md) - -#### 管理您的配置: - -- [如何将我的配置修改为使用多个存储根目录?](./administering/convert-from-single-root-to-multi.md) -- [如何将我的工作流配置移动到新位置?](./administering/move-configuration-location.md) -- [如何将我的项目目录移动到新的本地存储根目录?](./administering/move-project-directories.md) -- [如何更新我的工作流配置核心位置?](./administering/update-configuration-core-locations.md) -- [如何在项目之间共享资产?](./administering/share-assets-between-projects.md) -- [如何卸载应用或插件?](./administering/uninstalling-an-app-or-engine.md) - -#### 基于缓存的问题: - -- [什么是缓存路径? 什么是文件系统位置?](./administering/what-is-path-cache.md) -- [我的缓存位于何处?](./administering/where-is-my-cache.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 deleted file mode 100644 index 42768994f..000000000 --- a/docs/zh_CN/quick-answers/administering/convert-from-single-root-to-multi.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: default -title: 如何将我的配置修改为使用多个存储根目录? -pagename: convert-from-single-root-to-multi -lang: zh_CN ---- - -# 如何将我的配置修改为使用多个存储根目录? - -我们提供的默认配置设置为使用单个本地存储根目录(即,所有项目文件都存储在单个根目录点下,如 `/sgtk/projects`)。您可能需要添加新的存储根来存储您的部分项目文件。例如,磁盘空间不足或者某些媒体需要位于更快的存储上时,经常会出现这种情况。 -假设您想要添加另一个名为“secondary”的根。以下是您需要执行的步骤: - -## 在 {% include product %} 中添加本地存储 - -- 在 {% include product %} 中,导航到**“管理 > 站点偏好设置”(Admin > Site Preferences)**页面 -- 打开**“文件管理”(File Management)**部分 -- 单击**“[+] 添加本地文件存储”([+] Add Local File Storage)** -- 填写名称(“secondary”)以及存储根在所有相关平台上的路径。*如果您使用的不是特定平台,只需将其留空。* -- 单击页面顶部或底部的**“保存页面”(Save Page)**按钮 - -![{% include product %} 文件管理首选项](images/shotgun-pref-file-management.png) - -## 将新存储根添加到工作流配置中 - -Toolkit 在 `config/core/roots.yml` 文件中缓存工作流配置中使用的本地存储相关信息。编辑此文件以添加刚刚在 {% include product %} 中创建的新 **secondary** 存储根: - - primary: { - 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, - windows_path: 'z:\sgtk\secondaries' - } - -{% include info title="注意" content="自 `tk-core v0.18.141` 起,roots.yml 中定义的根名称不需要与 SG 中定义的本地存储名称一致。您可以通过在 `roots.yml` 定义中添加 `shotgun_storage_id: ` 键/值对来明确定义连接。示例: - - secondary: { - linux_path: /mnt/hgfs/sgtk/secondaries, - mac_path: /sgtk/secondaries, - windows_path: 'z:\sgtk\secondaries' - shotgun_storage_id: 123 - } - -当前,存储 ID 仅可通过 API 调用查询。" %} - -## 修改数据结构以使用新的本地存储根 - -您已定义新存储根并且 Toolkit 基本上了解了该存储根,现在,您需要决定如何在您的目录结构中使用该存储根。本例中,假设您希望将所有资产工作转到 secondary 存储中,而所有镜头工作转到 primary 存储中。您可能会在 `config/core/schema` 中将您的数据结构设置为如下所示: - -![多存储数据结构布局](images/schema-multi-root.png) - -**config/core/schema/project.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "primary" - -**config/core/schema/secondary.yml** - - # the type of dynamic content - type: "project" - - # name of project root as defined in roots.yml - root_name: "secondary" - -您还需要修改其过滤器中引用根的任何 YAML 文件。 -例如,如果您的 secondary 文件夹下某处存在 asset.yml,则需要更新过滤器,以使其根据 secondary 文件夹值过滤项目。 - - filters: - - { "path": "project", "relation": "is", "values": [ "$secondary" ] } - - { "path": "sg_asset_type", "relation": "is", "values": [ "$asset_type"] } - -## 更新模板路径以指定要使用的存储根 - -最后,您将更新1在 `config/core/templates.yml` 文件中定义的路径以指定要使用的存储根,同时根据需要更新任意路径。请记住,您的模板路径与数据结构形影不离,它们需要匹配。如果定义的模板路径与数据结构中定义的路径未正确匹配,将会出现错误。 - -例如,由于我们希望所有资产工作保存在 secondary 存储上,因此为了更新 maya_asset_work 模板路径,我们需要将其修改为如下所示: - - maya_asset_work: - definition: '@asset_root/work/maya/{name}.v{version}.ma' - root_name: 'secondary' - -您应该对 `config/core/templates.yml` 文件中的每个模板路径采用与此相同的模式。为每个路径指定正确的 `root_name`(**primary** 或 **secondary**)。 - -{% include info title="注意" content="不需要为使用默认存储根的模板指定 `root_name`。可通过在 `roots.yml` 文件中指定 `default: true` 来指示默认根。如果 `roots.yml` 中未明确定义默认根,名为 **primary** 的根将被视为默认根。" %} - -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 deleted file mode 100644 index 062f3f5cd..000000000 --- a/docs/zh_CN/quick-answers/administering/create-shotgun-desktop-shortcut.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: 如何在 Linux 上为 ShotGrid Desktop 设置桌面/启动程序图标? -pagename: create-shotgun-desktop-shortcut -lang: zh_CN ---- - -# 如何在 Linux 上为 {% include product %} Desktop 设置桌面/启动程序图标? - -当前 {% 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 版本而异,但通常情况下,您可以在桌面上单击鼠标右键,并在其中寻找合适的菜单选项,从而创建桌面启动程序。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/administering/disable-browser-integration.md b/docs/zh_CN/quick-answers/administering/disable-browser-integration.md deleted file mode 100644 index 4343f0b78..000000000 --- a/docs/zh_CN/quick-answers/administering/disable-browser-integration.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: 如何禁用 ShotGrid Desktop 的浏览器集成? -pagename: disable-browser-integration -lang: zh_CN ---- - -# 如何禁用 {% include product %} Desktop 的浏览器集成? - -要禁用浏览器集成,请执行以下两个简单的步骤。 - -1. 在如下位置创建或打开文本文件: - - Windows:%APPDATA%\{% include product %}\preferences\toolkit.ini - Macosx:~/Library/Preferences/{% include product %}/toolkit.ini - Linux:~/.{% include product %}/preferences/toolkit.ini -2. 添加以下部分: - - [BrowserIntegration] - enabled=0 - -有关如何配置浏览器集成的完整说明,请参见我们的[管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。 - -**替代方法** - -如果您已接管 Toolkit 工作流配置,替代方法是[从环境中删除 `tk-{% include product %}` 插件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/project.yml#L48),使其无法加载任何动作。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/administering/images/Thumbs.db b/docs/zh_CN/quick-answers/administering/images/Thumbs.db deleted file mode 100644 index b15d392bf..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/Thumbs.db and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/clear-project-tank-name.png b/docs/zh_CN/quick-answers/administering/images/clear-project-tank-name.png deleted file mode 100644 index 9db334ea2..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/clear-project-tank-name.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/new-pipeline-configuration-locations.png b/docs/zh_CN/quick-answers/administering/images/new-pipeline-configuration-locations.png deleted file mode 100644 index 88765b5a3..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/new-pipeline-configuration-locations.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/pipeline-configuration-entity-page.png b/docs/zh_CN/quick-answers/administering/images/pipeline-configuration-entity-page.png deleted file mode 100644 index 405f17cd0..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/pipeline-configuration-entity-page.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/schema-multi-root.png b/docs/zh_CN/quick-answers/administering/images/schema-multi-root.png deleted file mode 100644 index e0ff5e768..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/schema-multi-root.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/shotgun-pref-file-management.png b/docs/zh_CN/quick-answers/administering/images/shotgun-pref-file-management.png deleted file mode 100644 index 29d2cf225..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/shotgun-pref-file-management.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/shotgun-storage-roots.png b/docs/zh_CN/quick-answers/administering/images/shotgun-storage-roots.png deleted file mode 100644 index eadca1440..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/shotgun-storage-roots.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/images/shotgun_storage_roots.png b/docs/zh_CN/quick-answers/administering/images/shotgun_storage_roots.png deleted file mode 100644 index eadca1440..000000000 Binary files a/docs/zh_CN/quick-answers/administering/images/shotgun_storage_roots.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/administering/install-desktop-silent.md b/docs/zh_CN/quick-answers/administering/install-desktop-silent.md deleted file mode 100644 index eb786977f..000000000 --- a/docs/zh_CN/quick-answers/administering/install-desktop-silent.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: 如何在 Windows 上静默安装 ShotGrid Desktop? -pagename: install-desktop-silent -lang: zh_CN ---- - -# 如何在 Windows 上静默安装 {% include product %} Desktop? - -要以静默方式运行 {% include product %} Desktop 安装程序,只需按以下方法启动 {% include product %} Desktop 安装程序: - -`ShotgunInstaller_Current.exe /S` - -如果还要指定安装文件夹,请用 `/D` 参数启动安装程序: - -`ShotgunInstaller_Current.exe /S /D=X:\path\to\install\folder.` - -{% include info title="注意" content="`/D` 参数必须是最后一个参数,路径中不应使用 `\"`,即使其中有空格也是如此。" %} \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/administering/move-configuration-location.md b/docs/zh_CN/quick-answers/administering/move-configuration-location.md deleted file mode 100644 index 3931828b1..000000000 --- a/docs/zh_CN/quick-answers/administering/move-configuration-location.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -layout: default -title: 如何将我的工作流配置移动到新位置? -pagename: move-configuration-location -lang: zh_CN ---- - -# 如何将我的工作流配置移动到新位置? - -{% 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 %},并更新配置文件以指向新位置。 - -以下情况下此命令也非常有用:您仅移动单个操作系统的位置,或者以前未使用某个操作系统,但现在想添加该操作系统。Toolkit 将检测需要移动或添加的内容以及不需要移动或添加的内容,同时还会向您显示即将执行的操作,以便您在继续操作之前进行确认。 - -- [使用 tank move_configuration 命令](#using-the-tank-move_configuration-command) -- [手动移动工作流配置](#manually-moving-your-pipeline-configuration) - -{% include warning title="注意" content="如果移动具有本地化核心的配置,且拥有使用此工作流配置中嵌入的 Toolkit 核心的其他项目(即,其他配置将此用作共享核心),则您必须手动更新这些项目中的配置文件,使其指向此工作流配置的新位置。这些文件位于以下位置: - -- `/path/to/pipeline_configuration/install/core/core_Darwin.cfg` -- `/path/to/pipeline_configuration/install/core/core_Linux.cfg` -- `/path/to/pipeline_configuration/install/core/core_Windows.cfg`" %} - -## 使用 tank move_configuration 命令: - - $ cd /sgtk/software/shotgun/scarlet - $ ./tank move_configuration - - Welcome to the {% include product %} Pipeline Toolkit! - For documentation, see https://toolkit.shotgunsoftware.com - Starting Toolkit for your current path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - Syntax: move_configuration linux_path windows_path mac_path - - This will move the location of the given pipeline configuration. - You can also use this command to add a new platform to the pipeline - configuration. - - Current Paths - -------------------------------------------------------------- - - Current Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - - You typically need to quote your paths, like this: - - > tank move_configuration "/linux_root/my_config" "p:\configs\my_config" - "/mac_root/my_config" - - If you want to leave a platform blank, just just empty quotes. For example, if - you want a configuration which only works on windows, do like this: - - > tank move_configuration "" "p:\configs\my_config" "" - - -### 示例: - - $ 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! - For documentation, see https://toolkit.shotgunsoftware.com - Starting toolkit for path '/sgtk/software/shotgun/scarlet' - - The path is not associated with any {% include product %} object. - - Falling back on default project settings. - - Using configuration 'Primary' and Core v0.15.22 - - Setting the Context to Scarlet. - - Running command move_configuration... - - - ---------------------------------------------------------------------- - Command: Move configuration - ---------------------------------------------------------------------- - - - Current Paths - -------------------------------------------------------------- - Current Linux Path: '/sgtk/software/shotgun/scarlet' - Current Windows Path: 'z:\sgtk\software\shotgun\scarlet' - Current Mac Path: '/sgtk/software/shotgun/scarlet' - - New Paths - -------------------------------------------------------------- - New Linux Path: '/mnt/hgfs/sgtk/software/shotgun/scarlet_new' - New Windows Path: 'z:\sgtk\software\shotgun\scarlet_new' - New Mac Path: '/sgtk/software/shotgun/scarlet_new' - - - The configuration will be moved to reflect the specified path changes. - - Note for advanced users: If your configuration is localized and you have other - projects which are linked to the core API embedded in this configuration, - these links must be manually updated after the move operation. - - Are you sure you want to move your configuration? [Yes/No] yes - Copying '/sgtk/software/shotgun/scarlet' -> '/sgtk/software/shotgun/scarlet_new' - Copying /sgtk/software/shotgun/scarlet/cache... - Copying /sgtk/software/shotgun/scarlet/config... - Copying /sgtk/software/shotgun/scarlet/config/core... - Copying /sgtk/software/shotgun/scarlet/config/core/hooks... - Copying /sgtk/software/shotgun/scarlet/config/core/schema... - Copying /sgtk/software/shotgun/scarlet/config/env... - Copying /sgtk/software/shotgun/scarlet/config/env/includes... - Copying /sgtk/software/shotgun/scarlet/config/hooks... - Copying /sgtk/software/shotgun/scarlet/config/icons... - Copying /sgtk/software/shotgun/scarlet/install... - Copying /sgtk/software/shotgun/scarlet/install/apps... - Copying /sgtk/software/shotgun/scarlet/install/apps/app_store... - Copying /sgtk/software/shotgun/scarlet/install/core... - Copying /sgtk/software/shotgun/scarlet/install/core/python... - Copying /sgtk/software/shotgun/scarlet/install/core.backup... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143244... - Copying /sgtk/software/shotgun/scarlet/install/core.backup/20150518_143940... - Copying /sgtk/software/shotgun/scarlet/install/engines... - Copying /sgtk/software/shotgun/scarlet/install/engines/app_store... - Copying /sgtk/software/shotgun/scarlet/install/frameworks... - Copying /sgtk/software/shotgun/scarlet/install/frameworks/app_store... - Updating cached locations in /sgtk/software/shotgun/scarlet_new/config/core/install_location.yml... - Updating {% include product %} Configuration Record... - Deleting original configuration files... - - All done! Your configuration has been successfully moved. - - -## 手动移动工作流配置 - -{% include warning title="重要信息" content="如果尚未移动工作流配置,我们强烈建议使用上述[内置的 tank 命令](#using-the-tank-move_configuration-command)来自动执行此操作。" %} - -如果您已经开始手动移动数据,但遇到了困难,请按照以下说明,了解您需要更改的内容,以确保 Toolkit 此时继续在新位置使用您的工作流配置。 - -1. 将您的工作流配置文件移动到新位置 - - $ mv /sgtk/software/shotgun/scarlet /mnt/newserver/sgtk/software/shotgun/scarlet_new - -2. 编辑 `install_location.yml`,以帮助 Toolkit 找到工作流配置所在的位置: - - $ 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 - - # configuration defined for this project. - Windows: 'Y:\sgtk\software\shotgun\scarlet_new' - Darwin: '/mnt/newserver/sgtk/software/shotgun/scarlet_new' - Linux: '' - - # End of file. - -3. 在 {% include product %} 中找到与此项目对应的 PipelineConfiguration 实体,并修改“Linux 路径”(Linux Path)、“Mac 路径”(Mac Path)和“Windows 路径”(Windows Path)字段值,以匹配您在上面所做的更改。 - -![ShotGrid 中的工作流配置位置。](images/new-pipeline-configuration-locations.png) - -现在,您的工作流配置应该会在新位置按预期工作。 - -{% include info title="注意" content="如果使用的是 SG Desktop,您将需要导航退出您的项目,然后再次单击项目图标,以便从新位置重新加载工作流配置。" %} \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/administering/move-project-directories.md b/docs/zh_CN/quick-answers/administering/move-project-directories.md deleted file mode 100644 index aac6f51c3..000000000 --- a/docs/zh_CN/quick-answers/administering/move-project-directories.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: 如何将我的项目目录移动到新的本地存储根目录? -pagename: move-project-directories -lang: zh_CN ---- - -# 如何将我的项目目录移动到新的本地存储根目录? - -{% include warning title="注意" content="在项目进行中移动项目可能带来很多影响,甚至会超出 ShotGrid Toolkit。 切勿草率。" %} - -有时,需要将项目文件(场景文件、渲染等)移动到新的根存储位置(例如,从 `/mnt/smalldrive` 移动到 `/mnt/bigdrive/foo`)。无论您使用的单存储配置还是多存储配置,都可以执行此操作。例如,假设要移动名为**“asset_storage”**的存储: - -- 将项目文件从旧位置复制(或移动)到新位置。 -- 在 {% include product %} 中,导航到**“管理 > 站点偏好设置”(Admin > Site Preferences)**页面并打开**“文件管理”(File Management)**部分。 - - ![站点偏好设置中的 {% include product %} 存储根部分。](./images/shotgun-storage-roots.png) -- 将含有每个平台路径的“primary”本地文件存储更新为项目文件的新存储。如果您使用的不是特定平台,请将其留空。 -- 单击页面顶部或底部的**“保存更改”(Save Changes)**按钮。 -- 更新项目配置中的 `config/core/roots.yml` 文件以匹配刚刚在 {% include product %} 中保存的新路径值。 - -Toolkit 将发布路径保存为存储根的相对路径。因此,使用旧存储根时,路径展开为如下所示: - - [asset_storage]/assets/Character/betty => /mnt/smalldrive/assets/Character/betty - -使用新存储根定义时,该路径将展开为如下所示: - - [asset-storage]/assets/Character/betty => /mnt/bigdrive/foo/assets/Character/betty - -我们不需要担心在 {% include product %} 或 Toolkit 中更新任何其他发布信息! - -{% include warning title="警告" content="上述步骤假设您正在重新指定现有存储根的路径。相反,如果您放弃现有存储根或创建一个新的存储根,则您将需要重新注册您的所有文件夹并重新发布 `PublishedFiles` 实体。" %} - -## 参考 - -如果您的任何场景文件中含有指向旧路径的参考,您将需要自行更新这些参考,或者创建符号链接,以确保系统对其进行正确解析。 - -## 版本(Versions) - -如果 {% include product %} 中的版本实体在受此更改影响的“影片路径”(Path to Movie)或“帧路径”(Path to Frames)字段中存储信息,也需要对这些字段进行更新以指向新位置,因为这些字段是包含媒体绝对路径的字符串字段。 \ No newline at end of file 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 deleted file mode 100644 index 33da4b8a9..000000000 --- a/docs/zh_CN/quick-answers/administering/resetup-project-with-sg-desktop.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: 如何使用 ShotGrid Desktop 来重新设置 Toolkit 项目? -pagename: resetup-project-with-sg-desktop -lang: zh_CN ---- - -# 如何使用 {% include product %} Desktop 来重新设置 Toolkit 项目? - -如果您已为某个项目设置 Toolkit 配置并且需要重新开始,{% include product %} Desktop 中的“高级设置向导”将不允许您重新设置项目,除非已删除以前设置的配置。 - -以下介绍了如何手动删除这些设置: - -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. 现在,可以再次运行项目设置过程。 - -**替代方法** - -如果您习惯使用命令行通过 `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 deleted file mode 100644 index 995809ecf..000000000 --- a/docs/zh_CN/quick-answers/administering/sg-desktop-run-on-ubuntu.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid Desktop 能否在 Ubuntu 等 Debian 系统上运行? -pagename: sg-desktop-run-on-ubuntu -lang: zh_CN ---- - -# {% include product %} Desktop 能否在 Ubuntu 等 Debian 系统上运行? - -目前,{% include product %} Desktop 不支持基于 Debian 的发行版。 -过去,我们有一些客户曾试图让 {% include product %} Desktop 在此类系统上正常运行,使用 cpio 从 RPM 提取 {% include product %} Desktop,然后尝试满足库依存关系,但这样导致了较差的结果。有关参考,[请在我们的 dev 组中查看此主题](https://groups.google.com/a/shotgunsoftware.com/d/msg/shotgun-dev/nNBg4CKNBLc/naiGlJowBAAJ)。 - -请注意,我们未提供显式的库依存关系列表,因为 Python 本身位于很多系统级库之上。 - -目前我们还没有正式的 Debian 支持计划。Ubuntu 构建存在问题,但在更改时需要进行 QA 并支持额外的操作系统,这并不是一件简单的事情。 - -如果要手动运行并激活 Toolkit 而不使用 {% include product %} Desktop([如此处文档所述](https://developer.shotgridsoftware.com/zh_CN/3830df9d#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 deleted file mode 100644 index e785606ef..000000000 --- a/docs/zh_CN/quick-answers/administering/share-assets-between-projects.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 如何在项目之间共享资产? -pagename: share-assets-between-projects -lang: zh_CN ---- - -# 如何在项目之间共享资产? - -很常见的做法是将某项目用作资产库,其中包含可在其他项目中加载到镜头中的资产。 - -要实现此目的,您可以将一个列出此资产库项目中资产的选项卡添加到[加载器应用](https://developer.shotgridsoftware.com/zh_CN/a4c0a4f1/)。要执行此操作,您必须在加载器设置中针对插件和您的工作环境对此进行定义。您可能需要在多个位置对其进行更新。 - -例如,要将该选项卡添加到[镜头工序环境中的 Maya 插件](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-loader2.yml#L122),您需要添加以下代码段: - -```yaml -caption: Asset Library -hierarchy: [project, sg_asset_type, code] -entity_type: Asset -filters: -- [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 deleted file mode 100644 index 4f02f41d8..000000000 --- a/docs/zh_CN/quick-answers/administering/uninstalling-an-app-or-engine.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: 如何卸载应用或插件? -pagename: uninstalling-an-app-or-engine -lang: zh_CN ---- - -# 如何卸载应用或插件? - -您可以通过编辑配置的环境 YAML 文件来删除应用或插件,使其不再存在。环境文件允许您将应用配置为仅适用于特定上下文或插件,而不是完全删除它们。有关编辑环境文件的更多常规信息,请查看[此手册](../../guides/pipeline-integrations/getting-started/editing_app_setting.md)。 - -## 示例 - -以下示例展示了如何从默认配置完全删除发布应用。在环境设置内应用添加到插件,因此我们必须从添加发布应用的所有插件中将其删除。 - -### 从插件中删除应用 - -每个插件的 [`.../env/includes/settings`](https://github.com/shotgunsoftware/tk-config-default2/tree/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings) 内都有自己的 YAML 文件;由于所有插件中都包含发布应用,因此您需要修改每个插件 YAML 文件。以 Maya 插件为例,您将打开 [tk-maya.yml](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml) 并删除对发布应用的所有引用。 - -首先,包含部分中具有对它的引用:
-[`.../env/includes/settings/tk-maya.yml L18`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-maya.yml#L18) - -在资产工序上下文中,Maya 插件中也包含应用:
-[`.../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) - -然后对所有其他插件环境 yml 文件重复这些步骤,例如 `tk-nuke`、`tk-3dsmaxplus`、`tk-desktop` 等。 - -{% include info title="重要信息" content="现在,您已做好充分准备,只要您需要,就可禁止应用显示在用户的集成中。但是,如果您要从配置中完全删除对应用的引用以使其保持干净,则需要完成其余步骤。" %} - -### 删除应用设置 - -所有插件 YAML 文件都包括[ `tk-multi-publish2.yml`](https://github.com/shotgunsoftware/tk-config-default2/blob/e09236bf4b91a6dd79ca5b3ef1258d0eb0afd871/env/includes/settings/tk-multi-publish2.yml) 设置文件。现在您已在插件 YAML 文件中删除对它的引用,您可以完全删除此文件。 - -{% include warning title="重要信息" content="如果您删除了 `tk-multi-publish2.yml` 但仍有插件文件指向它,则可能会收到错误,如下所示: - - 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!" %} - -### 删除应用位置 - -在默认配置下,所有应用都将位置描述符存储在 [.../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 deleted file mode 100644 index 56b92c3a1..000000000 --- a/docs/zh_CN/quick-answers/administering/update-configuration-core-locations.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: default -title: 如何更新我的工作流配置核心位置? -pagename: update-configuration-core-locations -lang: zh_CN ---- - -# 如何更新我的工作流配置核心位置? - -## 如何更新我的工作流配置以使用本地核心? - -如果您的工作流配置已设置为使用共享 Toolkit 核心,那么您实际上可以撤消该过程,或者“取消共享”核心,并使用 tank localize 命令在工作流配置内安装 Toolkit 核心 API 的副本。我们将其称为“本地化”核心。  - -1. 打开终端并导航到要安装 Toolkit 核心的工作流配置。 - - $ cd /sgtk/software/shotgun/scarlet - -2. 运行以下 tank 命令: - - $ ./tank localize - - ... - ... - - ---------------------------------------------------------------------- - 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 将确认所有内容,然后再继续。工作流配置当前指向的 Toolkit 核心的副本将在本地复制到您的工作流配置中。 - -3. Toolkit 现在会将工作流配置使用的所有应用、插件和框架本地复制到 `install` 文件夹中。然后,它将复制 Toolkit 核心并更新工作流配置中的配置文件,以使用新安装的本地 Toolkit 核心。 - - - Copying 59 apps, engines and frameworks... - 1/59: Copying tk-multi-workfiles v0.6.15... - 2/59: Copying tk-maya v0.4.7... - 3/59: Copying tk-nuke-breakdown v0.3.0... - 4/59: Copying tk-framework-widget v0.2.2... - 5/59: Copying tk-shell v0.4.1... - 6/59: Copying tk-multi-launchapp Undefined... - 7/59: Copying tk-motionbuilder v0.3.0... - 8/59: Copying tk-hiero-openinshotgun v0.1.0... - 9/59: Copying tk-multi-workfiles2 v0.7.9... - ... - ... - 59/59: Copying tk-framework-qtwidgets v2.0.1... - Localizing Core: /sgtk/software/shotgun/studio/install/core -> - /sgtk/software/shotgun/scarlet/install/core - Copying Core Configuration Files... - 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), no - other configurations or projects will be affected. - -{% include info title="注意" content="您的输出将根据所安装的应用、插件和框架版本而有所不同。" %} - -## 如何更新我的工作流配置以使用现有共享核心? -如果您有现有的共享 Toolkit 核心,则可以使用 tank 命令来更新任何现有的“本地化”工作流配置,以使用该共享核心。 - -1. 打开终端并导航到要更新的工作流配置。 - - $ cd /sgtk/software/shotgun/scarlet - -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: - - - 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. - - Do you want to proceed [yn] - - Toolkit 将确认所有内容,然后再继续。由于此共享核心已针对多个平台设置,它将显示每个平台的位置。 - - *如果您需要为新平台添加该位置,请更新共享核心配置中的 config/core/install_location.yml 文件并添加必要的路径。* - -3. 现在,Toolkit 会在工作流配置中备份本地核心 API,移除本地化核心,并添加必要的配置以将工作流配置指向共享核心。 - - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - - 如果您稍后决定要在工作流配置中本地化 Toolkit 核心(即,从共享核心分离工作流配置并使用本地安装的版本),则可以使用 `tank localize` 命令执行此操作。 - -{% include info title="注意" content="共享工作室核心的版本必须与当前工作流配置的核心相同或更高。" %} - -## 如何在项目之间共享 Toolkit 核心? - -目前,使用 SG Desktop 设置项目时,Toolkit 核心 API 会进行“本地化”,这意味着它会安装在工作流配置内部。也就是说,每个工作流配置会完全独立地安装 Toolkit。您可能更希望在项目之间共享 Toolkit 核心 API 版本,这样可以最大程度减少维护量,并可确保所有项目均使用相同的核心代码。我们有时称之为 “**共享工作室核心**”。 - -以下介绍了如何创建可在不同项目工作流配置之间共享的新 Toolkit 核心 API 配置。 - -1. 打开终端并导航到包含要共享的 Toolkit 核心版本的现有工作流配置。该过程完成后,此工作流配置将不再进行本地化,而是使用新创建的共享核心。 - - $ cd /sgtk/software/shotgun/pied_piper - -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 继续之前要进行的更改的摘要。 - - ---------------------------------------------------------------------- - Command: Share core - ---------------------------------------------------------------------- - 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 - locations: - - Linux: '/mnt/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. - Do you want to proceed [yn] - -4. Toolkit 将核心安装复制到新共享位置,并将更新现有工作流配置以指向新共享核心。 - - Setting up base structure... - Copying configuration files... - Copying core installation... - Backing up local core install... - Removing core system files from configuration... - Creating core proxy... - The Core API was successfully processed. - -现在,您可以从其他工作流配置中使用此新共享核心。要更新工作流配置以使用现有共享核心(如刚创建的共享核心),您可以使用 `tank attach_to_core` 命令。 \ No newline at end of file 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 deleted file mode 100644 index 6e80737b0..000000000 --- a/docs/zh_CN/quick-answers/administering/what-is-path-cache.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: 什么是缓存路径?什么是文件系统位置? -pagename: what-is-path-cache -lang: zh_CN ---- - -# 什么是缓存路径?什么是文件系统位置? - -缓存路径由 Toolkit 用来跟踪磁盘上的文件夹与 {% include product %} 中的实体之间的关联。 -主缓存以 `FilesystemLocation` 实体类型形式存储在 {% include product %} 中。之后,每个用户都有自己的缓存路径版本,该版本[存储在磁盘本地的 Toolkit 缓存目录中](./where-is-my-cache.md),它将随着应用程序的启动或文件夹的创建而在后台进行同步。 - -通常情况下,我们建议不要手动修改缓存路径。我们的内部流程不仅使本地缓存与 {% include product %} 中的 FilesystemLocation 实体同步,而且还创建事件日志条目,从而使所有用户的计算机都能与 {% include product %} 保持同步。 - -有几个 tank 命令可用于修改缓存路径: - -- `tank unregister_folders`   移除缓存路径关联。 -- `tank synchronize_folders` 强制使本地缓存路径与 {% include product %} 同步。 - -通常情况下,您不需要运行这些命令,但在某些情况下,它们可能会很有用。 -例如,在项目中重命名或重新创建实体之前,应该运行 `unregister_folders`。 \ No newline at end of file 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 deleted file mode 100644 index 1439641c6..000000000 --- a/docs/zh_CN/quick-answers/administering/where-is-my-cache.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: default -title: 我的缓存位于何处? -pagename: where-is-my-cache -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)对其进行配置。 - -默认缓存根位置为: - -**Mac OS X** - -`~/Library/Caches/Shotgun` - -**Windows** - -`%APPDATA%\Shotgun` - -**Linux** - -`~/.shotgun` - -## 缓存路径 - -缓存路径位于: - -`/pc/path_cache.db` - -## 缓存 - -**分布式配置** - -缓存是在 {% include product %} 站点的所有项目中使用的所有应用程序、插件和框架的缓存集合。分布式配置的缓存存储在以下位置: - -Mac: -`~/Library/Caches/Shotgun/bundle_cache` - -Windows:`%APPDATA%\Shotgun\bundle_cache` - -Linux: -`~/.shotgun/bundle_cache` - -{% include info title="注意" content="您可以使用 `SHOTGUN_BUNDLE_CACHE_PATH` 环境变量覆盖这些位置,因此,特定实施可能会有所不同。" %} - -**集中式配置** - -集中式配置的缓存位于集中式配置内。 - -`...{project configuration}/install/` - -如果您的配置使用共享核心,那么它将位于共享核心的安装文件夹内。 - -## 缩略图 - -Toolkit 应用(如[加载器](https://developer.shotgridsoftware.com/zh_CN/a4c0a4f1))使用的缩略图存储在本地 Toolkit 缓存中。它们根据需要按项目、工作流配置和应用进行存储。缓存根目录下的结构如下所示: - -`/pc//thumbs/` diff --git a/docs/zh_CN/quick-answers/developing.md b/docs/zh_CN/quick-answers/developing.md deleted file mode 100644 index fdf82c92f..000000000 --- a/docs/zh_CN/quick-answers/developing.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 开发 -pagename: quick-answers-developing -lang: zh_CN ---- - -开发 -=== - -一组与使用 Toolkit 进行开发有关的快速解答。 - -- [如何在启动软件之前设置环境变量?](./developing/setting-software-environment-variables.md) -- [如何在自定义脚本中处理身份认证和登录凭据?](./developing/sgtk-script-authentication.md) -- [as_template_fields() 缺少我的上下文中的现有值](./developing/as-template-fields-missing-values.md) -- [如何在 Maya 中添加用于启动 Toolki 应用的工具架按钮?](./developing/maya-shelf-app-launcher.md) -- [如何使用 shotgunEvent 进程加载不同的 Toolkit 核心模块?](./developing/toolkit-core-event-daemon.md) -- [如何使用 API 以编程方式更新我的 Toolkit 配置?](./developing/update-config-with-api.md) -- [如何通过 API 创建发布?](./developing/create-publishes-via-api.md) diff --git a/docs/zh_CN/quick-answers/developing/as-template-fields-missing-values.md b/docs/zh_CN/quick-answers/developing/as-template-fields-missing-values.md deleted file mode 100644 index e4278a688..000000000 --- a/docs/zh_CN/quick-answers/developing/as-template-fields-missing-values.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -title: as_template_fields() 缺少我的上下文中的现有值 -pagename: as-template-fields-missing-values -lang: zh_CN ---- - -# as_template_fields() 缺少我的上下文中的现有值 - -[as_template_fields()](https://developer.shotgridsoftware.com/tk-core/core.html?#sgtk.Context.as_template_fields) 方法使用缓存路径,因此,如果尚未创建与模板中的键相对应的文件夹,系统将不会返回字段。发生这种情况的原因有很多: - -- 模板定义和数据结构需要同步。如果您已经在工作流配置中修改了此模板定义或数据结构,但未同时修改二者,预期字段将不会返回。 -- 还没有为此特定上下文创建文件夹。如果尚未创建这些文件夹,则缓存路径中将不存在匹配的记录,预期字段将不会返回。 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 deleted file mode 100644 index bd45a2110..000000000 --- a/docs/zh_CN/quick-answers/developing/create-publishes-via-api.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: default -title: 如何通过 API 创建发布? -pagename: create-publishes-via-api -lang: zh_CN ---- - -# 如何通过 API 创建发布? - -我们的 sgtk API 提供了一种在 ShotGrid 中注册 `PublishedFiles` 实体的[便捷方法](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)。 - -此外,我们还提供 Publish 应用(附带[自己的 API](https://developer.shotgridsoftware.com/tk-multi-publish2/))。 -发布 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()`](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish) 的 API 实用程序方法。 - -基本上来说,此方法会在 {% include product %} 中创建一个新的 PublishedFile 实体,并尝试使用 Toolkit 概念简化操作过程。您的代码应该与下面类似: - -```python -# Get access to the Toolkit API -import sgtk - -# this is the file we want to publish. -file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk" - -# alternatively, for file sequences, we can just use -# a standard sequence token -# file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/renders/v034/foreground.%04d.exr" - -# The name for the publish should be the filename -# without any version number or extension -name = "foreground" - -# 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. -tk = sgtk.sgtk_from_path(file_to_publish) - -# use the file to extract the context. The context denotes the current work area in Toolkit -# and will control which entity and task the publish will be linked up to. 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 context. -ctx = tk.context_from_path(file_to_publish) - -# alternatively, if the file you are trying to publish is not in a location that is -# recognized by toolkit, you could create a context directly from a ShotGrid entity instead: -ctx = tk.context_from_entity("Shot", 123) -ctx = tk.context_from_entity("Task", 123) - -# Finally, run the publish command. -# 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, - published_file_type="Nuke Script", - version_number=34 -) -``` - -除了如上所示的基本选项外,还有几个其他选项可以填充。 -有关参数的完整列表及其功能,请参见[核心 API 文档](https://developer.shotgridsoftware.com/tk-core/utils.html#sgtk.util.register_publish)。 - -{% include info title="提示" content="如果您的代码从 Toolkit 应用内运行,您可以通过 `self.sgtk` 获取 sgtk 实例,通过 `self.context` 获取上下文。 -如果它不在应用中,但将在存在 Toolkit 集成的软件内运行,您可以使用以下代码访问当前上下文和 sgtk 实例: - -```python -import sgtk -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/images/sign_in_window.png b/docs/zh_CN/quick-answers/developing/images/sign_in_window.png deleted file mode 100644 index b01bc705a..000000000 Binary files a/docs/zh_CN/quick-answers/developing/images/sign_in_window.png and /dev/null differ 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 deleted file mode 100644 index ef813f1ec..000000000 --- a/docs/zh_CN/quick-answers/developing/maya-shelf-app-launcher.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: 如何在 Maya 中添加用于启动 Toolki 应用的工具架按钮? -pagename: maya-shelf-app-launcher -lang: zh_CN ---- - -# 如何在 Maya 中添加用于启动 Toolki 应用的工具架按钮? - -在 Maya 中添加一个用于启动 Maya 的 Toolkit 应用的工具架按钮是一项非常简单的操作。以下示例显示了如何添加自定义工具架按钮,以便打开[加载器应用](https://developer.shotgridsoftware.com/zh_CN/a4c0a4f1/)。 - -{% include info title="注意" content="假设 Toolkit 当前在 Maya 会话中处于启用状态。此示例代码不会引导 Toolkit。" %} - -在 Maya 中打开脚本编辑器并粘贴以下 Python 代码:  - -```python -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: - 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!") - - # 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) - - # now we have the command we need to call the registered callback - command['callback']() - -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) -``` - -选择此代码并将其拖动到自定义工具架。请参见 [Maya 文档以了解有关如何使用自定义工具架按钮的详细信息](https://knowledge.autodesk.com/zh-hans/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/CHS/Maya/files/GUID-C693E884-F81A-4858-B5D6-3856EB8F394E-htm.html)。 - -您应该可以使用此代码示例启动在 Maya 中启用的任何 Toolkit 应用,方法是修改顶部的 `tk_app` 和 `call_func` 变量。 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 deleted file mode 100644 index cb841c64b..000000000 --- a/docs/zh_CN/quick-answers/developing/setting-software-environment-variables.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: 如何在启动软件之前设置环境变量? -pagename: setting-software-environment-variables -lang: zh_CN ---- - -# 如何在启动软件之前设置环境变量? - -{% include product %} Toolkit 允许您在启动过程中使用挂钩来配置环境并运行自定义代码。 - -通过 {% include product %} Desktop 或浏览器集成启动软件(如 Nuke 或 Maya)时,将运行 `tk-multi-launchapp`。 -此应用负责启动软件并确保 {% include product %} 集成按预期启动。在此过程中将通过挂钩公开两个点以允许运行自定义代码。 - -## before_app_launch.py - -软件启动前将调用 [`before_app_launch.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) 挂钩。这提供了一个绝佳机会来设置任何自定义环境变量以传递给启动的软件。 - -示例: - -```python -import os -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="警告" content="请注意,不要完全重新定义 ShotGrid 设置的环境变量。 -例如,如果需要将路径添加到 `NUKE_PATH`(对于 Nuke)或 `PYTHONPATH`(对于 Maya)中,请确保将您的路径附加到现有值,而不是将其替换。您可以使用便捷方法实现此目的: - -```python -tank.util.append_path_to_env_var(\"NUKE_PATH\", \"/my/custom/path\") -``` -" %} - -## 自定义封装器 - -某些工作室具有自定义封装器,支持设置环境变量和启动软件。如果您更愿意使用像这样的自定义代码设置环境,可以将 `Software` 实体的[路径字段](https://developer.shotgridsoftware.com/zh_CN/8085533c/#example-add-your-own-software)指向可执行封装器,此时将改为由 `tk-multi-launchapp` 运行。 - -{% include warning title="警告" content="请谨慎使用此方法以保留 ShotGrid 设置的环境变量,否则集成将无法启动。" %} \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md b/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md deleted file mode 100644 index 1b55372bc..000000000 --- a/docs/zh_CN/quick-answers/developing/sgtk-script-authentication.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: default -title: 如何在自定义脚本中处理身份认证和登录凭据? -pagename: sgtk-script-authentication -lang: zh_CN ---- - -# 如何在自定义脚本中处理身份认证和登录凭据? - -## 错误消息 -如果出现类似以下来自脚本的错误,则意味着脚本无权与 {% include product %} 站点进行通信。 - -```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 -# Import the Toolkit API so we can access Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either programmatically or, in this -# case, interactively. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Optionally clear the current user if you've already logged in before. -authenticator.clear_default_user() - -# Get an authenticated user. In this scenario, since we've passed in the -# CoreDefaultsManager, the code will first look to see if there is a script_user inside -# shotgun.yml. If there isn't, the user will be prompted for their username, -# password and optional 2-factor authentication code. If a QApplication is -# available, a UI will pop-up. If not, the credentials will be prompted -# on the command line. The user object returned encapsulates the login -# information. -user = authenticator.get_user() - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. Note that this should -# always take place before creating a Sgtk instance. -sgtk.set_authenticated_user(user) - -# -# Add your app code here... -# -# When you are done, you could optionally clear the current user. Doing so -# however, means that the next time the script is run, the user will be prompted -# for their credentials again. You should probably avoid doing this in -# order to provide a user experience that is as frictionless as possible. -authenticator.clear_default_user() -``` - -如果 `QApplication` 可用,您将看到类似如下的内容: - -![](./images/sign_in_window.png) - -{% include info title="注意" content="如果导入的 Toolkit API(`sgtk` 软件包)未与配置关联,例如您已下载用于引导到其他配置的 Toolkit API,则不应尝试创建 `CoreDefaultsManager`。应改为创建 `ShotgunAuthenticator()` 实例,而不传递默认管理器。 -```python -authenticator = ShotgunAuthenticator() -``` -" %} - -## 非面向用户的脚本 -如果脚本不面向用户,比如在渲染农场或事件处理程序中,您可以在创建 Sgtk/Tank 实例前,在脚本开头添加以下内容: - -```python -# Import Toolkit so we can access to Toolkit specific features. -import sgtk - -# Import the ShotgunAuthenticator from the tank_vendor.shotgun_authentication -# module. This class allows you to authenticate either interactively or, in this -# case, programmatically. -from tank_vendor.shotgun_authentication import ShotgunAuthenticator - -# Instantiate the CoreDefaultsManager. This allows the ShotgunAuthenticator to -# retrieve the site, proxy and optional script_user credentials from shotgun.yml -cdm = sgtk.util.CoreDefaultsManager() - -# Instantiate the authenticator object, passing in the defaults manager. -authenticator = ShotgunAuthenticator(cdm) - -# Create a user programmatically using the script's key. -user = authenticator.create_script_user( - api_script="Toolkit", - api_key="4e48f...." -) - -# print "User is '%s'" % user - -# Tells Toolkit which user to use for connecting to ShotGrid. -sgtk.set_authenticated_user(user) -``` - -{% include info title="注意" content="如[面向用户的脚本](#user-facing-scripts)部分末尾所述,如果您导入的 `sgtk` 软件包是独立的/不是来自于配置,则不应创建默认管理器。此外,还应为 `create_script_user()` 方法提供 `host` kwarg: - -```python -user = authenticator.create_script_user( - host=\"https://yoursite.shotgunstudio.com\", - api_script=\"Toolkit\", - 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 deleted file mode 100644 index 3d2a73101..000000000 --- a/docs/zh_CN/quick-answers/developing/toolkit-core-event-daemon.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: default -title: 如何使用 ShotGrid 事件进程加载不同的 Toolkit 核心模块? -pagename: toolkit-core-event-daemon -lang: zh_CN ---- - -# 如何使用 shotgunEvent 进程加载不同的 Toolkit 核心模块? - -**非常感谢 [Benoit Leveau @ Milk VFX](https://github.com/benoit-leveau) 分享此信息。** - -## 问题 - -Toolkit 的 sgtk API 以项目为中心。换句话说,您必须专门从要使用它的项目导入此 API。这意味着,如果您在单个 Python 会话中对多个项目使用 sgtk API 操作,您将会遇到问题,因为 Python 仅允许具有相同名称的模块导入一次。 - -如果您使用的是 [{% include product %} 事件进程](https://github.com/shotgunsoftware/shotgunEvents),您可能需要在特定事件对应的插件内部执行 Toolkit 操作。这并非易事,因为 Python 仅导入一次模块。因此,如果您在第一次运行该插件时导入了用于项目 A 的 Toolkit 核心 API,则在此进程的使用周期内将始终导入该版本。这意味着,如果分派给该插件的下一个事件用于项目 B,则当您尝试使用来自项目 A 的核心 API 实例化用于项目 B 的新 Toolkit 对象时,可能会发生错误。 - -**使用集中式配置时的问题示例:** - -- 事件 123 用于项目 A。 -- 项目 A 的核心 API 位于 `/mnt/toolkit/projectA/install/core/python`。 -- 在 `sys.path` 前面加上此目录。 -- `import sgtk` 从该位置导入。 -- 使用此核心 API 实例化一个 Toolkit 实例并执行一些操作。 -- 将核心 API 目录从 `sys.path` 中去掉。 -- 事件 234 用于项目 B。 -- 项目 B 的核心 API 位于 `/mnt/toolkit/projectB/install/core/python`。 -- 在 `sys.path` 前面加上此目录。 -- `import sgtk` 不会执行任何操作,因为 Python 发现它已经导入了 sgtk。 -- 使用此核心 API 实例化一个 Toolkit 实例并执行一些操作。 -- 这将导致错误,因为 Toolkit 核心用于项目 (A),而不是您尝试执行操作的项目 (B)。 - -## 解决方案 - -下面的示例说明了在可能已经导入不同版本模块的情况下,如何在脚本或插件中导入正确版本的 sgtk 核心。原始导入将会卸载并从 Python 内存中移除,这样,便可成功导入并使用新的模块实例。 - -```python -""" -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. -""" - -import os -import sys - - -def import_sgtk(project): - """ - Import and return the sgtk module related to a Project. - This will check where the Core API is located on disk (in case it's localized or shared). - It shouldn't be used to get several instances of the sgtk module at different places. - This should be seen as a kind of 'reload(sgtk)' command. - - :param project: (str) project name on disk for to import the Toolkit Core API for. - """ - # 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) - del mod - - # check which location to use to import the core - python_subfolder = os.path.join("install", "core", "python") - is_core_localized = os.path.exists(os.path.join(shotgun_base, project, "install", "core", "_core_upgrader.py")) - if is_core_localized: - # the core API is located inside the configuration - core_python_path = os.path.join(shotgun_base, project, python_subfolder) - else: - # the core API can still be localized through the share_core/attach_to_core commands - # so look in the core_Linux.cfg file which will give us the proper location (modify this - # to match your primary platform) - core_cfg = os.path.join(shotgun_base, project, "install", "core", "core_Linux.cfg") - if os.path.exists(core_cfg): - core_python_path = os.path.join(open(core_cfg).read(), python_subfolder) - else: - # use the studio default one - # this assumes you have a shared studio core installed. - # See https://developer.shotgridsoftware.com/b12f2510/#how-do-i-share-the-toolkit-core-between-projects - core_python_path = os.path.join(shotgun_base, "studio", python_subfolder) - - # 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 - - # Remove the TANK_CURRENT_PC env variable so that it can be populated by the new import - if "TANK_CURRENT_PC" in os.environ: - del os.environ["TANK_CURRENT_PC"] - - # now import the sgtk module, it should be found at the 'core_python_path' location above - import sgtk - return sgtk -``` - -## 分布式配置 - -上述示例假设您使用的是[集中式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#centralized-configurations),但是,如果您使用的是[分布式配置](https://developer.shotgridsoftware.com/tk-core/initializing.html#distributed-configurations),情况可能略有不同。要为分布式配置导入 sgtk API,您需要使用[引导 API](https://developer.shotgridsoftware.com/tk-core/initializing.html#bootstrap-api)。使用引导 API 时,您通常应首先导入不以项目为中心的 sgtk API,然后使用此 sgtk API 为指定项目引导插件。引导过程将换出 sgtk 模块,以便在引导过程结束后具有插件对象。如果在引导后导入 sgtk,它将导入适合您的项目的相关 sgtk 模块。在上面的示例中,需要为多个项目加载 sgtk,因此需要针对多个项目进行引导。有一个小问题是您一次只能运行一个插件,因此您在加载其他插件之前必须将其破坏。 - -{% include warning title="警告" content="引导配置可能会很慢,因为此过程需要确保在本地缓存配置并且将下载所有依存关系。在事件进程插件中引导可能会严重影响性能。一种可能的方法是,针对每次项目引导添加单独 Python 实例,以便从插件进行通信和发送命令。这将避免在每次需要项目时必须重新引导它。" %} - - -下面提供一个示例: - -```python -# insert the path to the non project centric sgtk API -sys.path.insert(0,"/path/to/non/project/centric/sgtk") -import sgtk - -sa = sgtk.authentication.ShotgunAuthenticator() -# Use the authenticator to create a user object. -user = sa.create_script_user(api_script="SCRIPTNAME", - api_key="SCRIPTKEY", - host="https://SITENAME.shotgunstudio.com") - -sgtk.set_authenticated_user(user) - -mgr = sgtk.bootstrap.ToolkitManager(sg_user=user) -mgr.plugin_id = "basic." - -engine = mgr.bootstrap_engine("tk-shell", entity={"type": "Project", "id": 176}) -# import sgtk again for the newly bootstrapped project, (we don't need to handle setting sys paths) -import sgtk -# perform any required operations on Project 176 ... - -# Destroy the engine to allow us to bootstrap into another project/engine. -engine.destroy() - -# now repeat the process for the next project, although we don't need to do the initial non-project centric sgtk import this time. -# We can reuse the already import sgtk API to bootstrap the next -... -``` - -{% include info title="注意" content="也可以引导集中式配置,因此如果您使用混合配置,也可以使用相同的方法。" %} \ No newline at end of file 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 deleted file mode 100644 index f5fc9395b..000000000 --- a/docs/zh_CN/quick-answers/developing/update-config-with-api.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: 如何使用 API 以编程方式更新我的 Toolkit 配置? -pagename: update-config-with-api -lang: zh_CN ---- - -# 如何使用 API 以编程方式更新我的 Toolkit 配置? - -## 更新应用、插件和框架 -如果您想要以编程方式将所有插件、应用和框架更新到最新版本,可以使用以下代码执行此操作: - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("updates") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="注意" content="这会将此工作流配置中的所有插件、应用和框架更新为最新版本,而无需执行任何进一步交互或确认操作。在继续之前,请确保了解这一点。" %} - -## 更新核心 - -如果要通过脚本更新项目的核心版本以便采用非交互方式运行该版本,可以使用以下代码执行此操作: - -```python -import sys -sys.path.append("/install/core/python") -import sgtk - -# substitute your Project id here or alternatively use sgtk_from_path() -tk = sgtk.sgtk_from_entity('Project', 161) -c=tk.get_command("core") - -# setup authentication -if hasattr(sgtk, "set_authenticated_user"): - from tank_vendor.shotgun_authentication import ShotgunAuthenticator - user = ShotgunAuthenticator(sgtk.util.CoreDefaultsManager()).get_default_user() - sgtk.set_authenticated_user(user) - -# finally, execute the command -c.execute({}) -``` - -{% include warning title="注意" content="这会将 Toolkit 核心更新为最新版本,而无需执行任何进一步交互或确认操作。如果您正在从共享核心运行,此操作将更新共享此核心版本的所有项目使用的核心版本!在继续之前,请确保了解这一点。" %} - -请参见: - -- [自定义脚本中的身份认证和登录凭据](https://developer.shotgridsoftware.com/zh_CN/724152ce/) diff --git a/docs/zh_CN/quick-answers/images/search_community.gif b/docs/zh_CN/quick-answers/images/search_community.gif deleted file mode 100644 index 4a6b86a1d..000000000 Binary files a/docs/zh_CN/quick-answers/images/search_community.gif and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting.md b/docs/zh_CN/quick-answers/troubleshooting.md deleted file mode 100644 index aeb7b3d43..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: 故障排除指南 -pagename: quick-answers-troubleshooting -lang: zh_CN ---- - -故障排除指南 -=== - -一组旨在解决问题的快速解答。 - -#### 常规疑难解答帮助 - -- [性能疑难解答](./troubleshooting/performance-troubleshooting.md) -- [如何启用调试日志记录?](./troubleshooting/turn-debug-logging-on.md) -- [远程调试](https://community.shotgridsoftware.com/t/remote-debugging/3869) -- [我的日志文件位于何处?](./troubleshooting/where-are-my-log-files.md) -- [Toolkit 日志工作方式以及如何知道要查看哪一个日志?](https://community.shotgridsoftware.com/t/how-do-the-toolkit-logs-work-and-how-do-i-know-which-one-to-look-at/6721) -- [我的配置位于何处?](https://community.shotgridsoftware.com/t/ive-asked-a-client-for-their-config-but-they-dont-know-where-it-is/6729) -- [如何调试 Toolkit 应用在菜单、{% include product %} Desktop 或 AMI 中不加载、不显示、缺失的问题](https://community.shotgridsoftware.com/t/how-to-debug-toolkit-apps-not-loading-showing-up-missing-in-the-menus-shotgun-desktop-or-the-amis/6739) -- [为什么我的上下文缺少任务/工序,但它是文件名的一部分?](./troubleshooting/context-missing-task-step.md) -- [为什么以及如何取消注册文件夹?](https://community.shotgridsoftware.com/t/toolkit-episode-sequence-shot-task/4604) -- [我能否删除站点上的文件系统位置而不是取消注册文件夹?](https://community.shotgridsoftware.com/t/unregistering-folders-in-tank-vs-moving-file-system-locations-to-trash/536) -- [使用分布式配置时如何取消注册文件夹?](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config) - -#### 错误消息指导 -- [`ASCII` 编解码器无法解码位置 10 中的字节 0x97: 序号不在范围内](./troubleshooting/ascii-error-message.md) -- [配置未指向磁盘上的有效包!](./troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md) -- [找不到程序“MTsetToggleMenuItem”](./troubleshooting/mtsettogglemenuitem-error-message.md) -- [无法解析路径的行 ID!](./troubleshooting/row-id-error-message.md) -- [data_handler_cache 错误消息: 错误 sgtk.env.project.tk-nuke.tk-multi-workfiles2 无法创建“文件打开”(File Open)对话框!](./troubleshooting/data-handler-cache-error-message.md) -- [数据库并发问题: 路径 `` 已与 {% include product %} 实体 `` 相关联](./troubleshooting/path-associated-error-message.md) -- [错误: 应用商店不包含名为 my-app 的项](./troubleshooting/myapp-appstore-error-message.md) -- [[错误] 尝试在未完成加密握手的情况下进行通信。](./troubleshooting/encryption-handshake-error-message.md) -- [错误“选择的 LUT 无效: Gamma2.2”](./troubleshooting/invalid-lut-error-message.md) -- [[错误] [代理] 调用 __commands::unreal_engine 时出错](./troubleshooting/unreal-proxy-error-message.md) -- [[错误 publish_creation] ](./troubleshooting/publish-certificate-fail-error-message.md) -- [错误: {% include product %} tk-maya: Toolkit 产生异常](./troubleshooting/tk-maya-exception-error-message.md) -- [错误 18:13:28.365:Hiero(34236): 错误!任务类型](./troubleshooting/hiero-task-type-error-message.md) -- [异常: 审核提交失败。无法渲染和提交与审核关联的场。](./troubleshooting/review-submission-error-message.md) -- [由于 Windows 路径太长(> 256 个字符)而导致的错误](./troubleshooting/paths-long-error-message.md) -- [无法更改工作区 - 执行 MEL 脚本期间出错](./troubleshooting/error-during-execution-mel-script.md) -- [无法创建文件夹: 文件夹创建中止](./troubleshooting/folder-creation-aborded.md) -- [帧服务器遇到错误。](./troubleshooting/frame-server-error.md) -- [ModuleNotFoundError](./troubleshooting/modulenotfounderror-error.md) -- [在 Maya 中,当我输出 context.task 时,它为空白“无”(None)](./troubleshooting/maya-context-task-empty-none-error.md) -- [解决与 Python API 相关的 SSL: CERTIFICATE_VERIFY_FAILED 问题](./troubleshooting/fix-ssl-certificate-verify-failed.md) -- [在本地 {% include product %} 站点上使用 {% include product %} Desktop 时显示 CERTIFICATE_VERIFY_FAILED](./troubleshooting/certificate-fail-local-error-message.md) -- [SSLError: [Errno 8] _ssl.c:504: 违反协议时发生 EOF](./troubleshooting/eof-occurred-violation-protocol-tls.md) -- [[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败: 无法获取本地颁发机构证书](./troubleshooting/unable-to-get-local-issuer-certificate-error.md) -- [TankInitError: 您正从位于以下位置的工作流配置加载 Toolkit 平台](./troubleshooting/tankinit-error-pipeline-config-location.md) -- [TankError: 无法解析上下文的模板数据](./troubleshooting/tankerror-cannot-resolve-template-data-error.md) -- [TankError: 尝试从模板解析路径](./troubleshooting/tankerror-tried-to-resolve-a-path.md) -- [Tk-desktop 控制台以静默方式忽略错误](./troubleshooting/tk-desktop-console-silently-ignoring-errors.md) -- [SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败(_ssl.c:727)](./troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md) -- [TankError: 无法在磁盘上创建文件夹。报告错误: 严重!无法使用文件夹数据更新 {% include product %}。](./troubleshooting/could-not-update-with-folder-data.md) -- [[警告] 存储根主存储无法映射到 SG 本地存储](./troubleshooting/storage-root-primary-error-message.md) - - -#### 软件集成 -- [在项目之间共享/更新工作流配置的建议方式?](https://community.shotgridsoftware.com/t/recommended-way-to-share-update-pipeline-configurations-between-projects/5609) -- [如何为在家办公的用户分发工作流配置](https://community.shotgridsoftware.com/t/distributing-your-pipeline-configuration-to-users-working-from-home/7910) -- [对于某些用户,如何将集中式配置转变为分布式配置?](https://community.shotgridsoftware.com/t/turning-a-centralized-config-into-a-distributed-config-for-some-users/7744) -- [如何在 Windows 上编译 Qt UI 和资源文件](https://community.shotgridsoftware.com/t/how-to-compile-qt-ui-and-resource-files-on-windows/7099) -- [如何在 {% include product %} UI 中添加 Toolkit 上下文菜单项?](https://community.shotgridsoftware.com/t/toolkit-context-menu-items/8426) -- [为什么我的 Houdini {% include product %} 集成没有启动?](./troubleshooting/houdini-integrations-not-starting.md) -- [我已从 Shotgun Desktop 启动 Nuke/Maya 等,{% include product %} Desktop 启动 Nuke/Maya 等,但 {% include product %} 菜单中缺少相关条目](./troubleshooting/menu-entries-missing-in-launched-dcc.md) -- [当我设置 NUKE_PATH 环境变量时为什么 Nuke 集成无法启动?](./troubleshooting/nuke-path-environment-variable.md) -- [安装两种扩展时的 Photoshop 集成疑难解答](./troubleshooting/two-photoshop-shotgun-extensions.md) -- [使用 {% include product %} Toolkit 时,为什么启动时 3ds Max 发生崩溃?](./troubleshooting/3dsmax-crashes-on-startup.md) -- [如何设置默认软件版本?](https://community.shotgridsoftware.com/t/setting-a-default-software-version/1116) -- [为什么加载器应用不显示我的 Alembic 发布?](https://community.shotgridsoftware.com/t/why-is-the-loader-app-not-showing-my-alembic-publishes/906) -- [当 Toolkit 引导时,使用什么顺序来确定正确的 PipelineConfiguration 实体?](https://community.shotgridsoftware.com/t/when-toolkit-bootstraps-what-order-is-used-to-determine-the-correct-pipelineconfiguration-entity/7400) -- [为什么在 Photoshop 中显示两个不同的 SG 面板?](https://community.shotgridsoftware.com/t/why-do-i-get-two-different-sg-panels-in-photoshop/6976) -- [Photoshop 集成面板无法加载!“出现了一些问题”](https://community.shotgridsoftware.com/t/photoshop-integration-panel-is-stuck-loading-some-thing-went-wrong/6977) -- [Desktop 缺少软件实体,如何修复此问题?](https://community.shotgridsoftware.com/t/shotgun-deskop-missing-software-entities-help/858) -- [Tank.template_from_path() 无法返回多个模板?](https://community.shotgridsoftware.com/t/tank-template-from-path-cant-return-multiple-templates/614) -- [如何以程序方式使用艺术家的工作文件填充一系列镜头(整个场)?](https://community.shotgridsoftware.com/t/create-first-maya-workfile/3029) -- [当用户启动 tk-maya 时,我如何控制 userSetup.py?](https://community.shotgridsoftware.com/t/maya-usersetup-py/3993) -- [用于开发配置的 Tank 命令?](https://community.shotgridsoftware.com/t/tank-command-for-dev-config/3373) -- [我想仅在艺术家打开现有发布时(而不是在他们打开现有工作文件时)才执行操作。如何使用挂钩执行此操作?](https://community.shotgridsoftware.com/t/open-from-publish-in-tk-multi-workfiles2-scene-operation-hooks/352) -- [如何在文件夹创建期间将实体名称中的空格转换为下划线而不是连字符?](https://community.shotgridsoftware.com/t/how-do-i-convert-white-spaces-in-entity-names-to-underscores-and-not-hyphens-during-folder-creation/48) - -#### 浏览器集成 -- [我无法通过 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) - -#### 找不到答案? -如需进一步排查问题,您可以[搜索我们的社区](https://community.shotgridsoftware.com)寻找答案! - -![社区](images/search_community.gif) diff --git a/docs/zh_CN/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md b/docs/zh_CN/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md deleted file mode 100644 index 72816c88d..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/3dsmax-crashes-on-startup.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: default -title: 使用 ShotGrid Toolkit 时,为什么启动时 3ds Max 发生崩溃? -pagename: 3dsmax-crashes-on-startup -lang: zh_CN ---- - -# 使用 {% include product %} Toolkit 时,为什么启动时 3ds Max 发生崩溃? - -从 {% include product %} Desktop 或 {% include product %} 网站启动 3ds Max 时,3ds Max 可能会冻结,同时出现一个冻结的白色对话框或者显示以下消息: - - Microsoft Visual C++ Runtime Library (Not Responding) Runtime Error! Program: C:\Program Files\Autodesk\3ds Max 2016\3dsmax.exe R6034 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 版本发生冲突。 - -## 解决方案 - -首先,转到工作流配置的 `config/hooks` 文件夹并创建文件 `before_app_launch.py`。在该文件中,粘贴以下内容: - -```python - -""" -Before App Launch Hook -This hook is executed prior to application launch and is useful if you need -to set environment variables or run scripts as part of the app initialization. -""" -import os -import tank - -class BeforeAppLaunch(tank.get_hook_baseclass()): - """ - Hook to set up the system prior to app launch. - """ - def execute(self, **kwargs): - """ - The execute functon of the hook will be called to start the required application - """ - env_path = os.environ["PATH"] - paths = env_path.split(os.path.pathsep) - # Remove folders which have msvcr90.dll from the PATH - paths = [path for path in paths if "msvcr90.dll" not in map( - str.lower, os.listdir(path)) - ] - env_path = os.path.pathsep.join(paths) - os.environ["PATH"] = env_path -``` - -现在,保存该文件。 - -然后,打开工作流配置中的 `config/env/includes/app_launchers.yml` 并查找 `launch_3dsmax` 条目。您应该将 `hook_before_app_launch: default` 替换为 `hook_before_app_launch: '{config}/before_app_launch.py'`。 - -您现在应该能够正常从 {% include product %} 和 {% include product %} Desktop 启动 3ds Max。如果您仍有任何问题,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/ascii-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/ascii-error-message.md deleted file mode 100644 index 0f77a007b..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/ascii-error-message.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: ascii 编解码器无法解码位置 10 中的字节 0x97 -pagename: ascii-error-message -lang: zh_CN ---- - -# ASCII 编解码器无法解码位置 10 中的字节 0x97: 序号不在范围内 - -## 相关的错误消息: - -克隆配置时 -- TankError: 无法创建文件系统结构: `ascii`!编解码器无法解码位置 10 中的字节 0x97: 序号不在范围(128)内 - -使用另一个项目设置项目配置时 -- “ascii 编解码器无法解码位置 10 中的字节 0x97: 序号不在范围(128)内” - -## 如何修复: - -通常,当“config”文件夹中出现 Unicode/特殊字符时,我们会看到这一错误。我们建议您查看一下是否可以找到特殊字符。 - -## 导致此错误的原因示例: - -在这种情况下,错误源于 Windows 在文件名末尾添加后缀 `–`。在移除所有这些文件后,它开始起作用。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/ascii-problem/7688)。 - 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 deleted file mode 100644 index 0345c0320..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/browser-integration-fails-linux.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: default -title: 无法在 Linux 上启动 ShotGrid Desktop/浏览器集成 -pagename: browser-integration-fails-linux -lang: zh_CN ---- - -# 无法在 Linux 上启动 {% include product %} Desktop/浏览器集成 - -首次在 Linux 上运行 {% include product %} Desktop 时,可能会出现以下错误消息之一。如果出现这些消息,请按照具体错误下方的步骤进行操作,以确定能否解决问题。 -如果您仍然遇到困难,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -## 目录 -- [OPENSSL_1.0.1_EC 或 HTTPSConnection 相关问题](#openssl_101_ec-or-httpsconnection-related-issues) -- [libffi.so.5 相关问题](#libffiso5-related-issues) -- [与证书验证失败相关的问题](#certificate-validation-failed-related-issues) -- [不兼容的 Qt 版本](#incompatible-qt-versions) - -## OPENSSL_1.0.1_EC 或 HTTPSConnection 相关问题 - -**错误** - -``` -importing '/opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so': - /opt/Shotgun/Resources/Python/tk-framework-desktopstartup/python/server/resources/python/dist/linux/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so: symbol ECDSA_OpenSSL, version OPENSSL_1.0.1_EC not defined in file libcrypto.so.10 with link time reference -AttributeError: 'module' object has no attribute 'HTTPSConnection' -``` - -**解决方案** - -您需要安装 OpenSSL。为此,请以管理员身份运行以下命令: - -``` -$ yum install openssl -``` - -## libffi.so.5 相关问题 - -**错误** - -``` -Browser Integration failed to start. It will not be available if you continue. -libffi.so.5: cannot open shared object file: No such file or directory -``` - -**解决方案** - -您需要安装 libffi。为此,请以管理员身份运行以下命令: - -``` -yum install libffi -``` - -如果您已经安装 libffi 但仍无法运行,请尝试创建以下符号链接,然后重新启动 {% include product %} Desktop: - -``` -sudo ln -s /usr/lib64/libffi.so.6.0.1 /usr/lib64/libffi.so.5 -``` - -部分用户报告通过上述操作解决了问题。但其他用户仍存在问题。最新版本的 {% include product %} Desktop 添加了与 WebSocket 服务器之间的一些其他依存关系,这是我们目前正在研究的方面。 - -## 与证书验证失败相关的问题 - -**可能的错误** - -``` -Browser Integration failed to start. It will not be available if you continue. -Error: There was a problem validating if the certificate was installed. -certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database. -``` - -**解决方案** - -如果您的计算机上已经安装 Google Chrome,请启动它,然后重新启动 {% include product %} Desktop。如果仍有此问题,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -如果没有安装 Chrome,请打开终端并运行以下命令: - -``` -ls -al $HOME/.pki/nssdb -``` - -如果搜索到此文件夹,请联系支持部门并将以下日志文件的内容附加到您的工单: - -``` -~/.shotgun/logs/tk-desktop.log -``` - -否则,请输入以下内容: - -``` -$ mkdir --parents ~/.pki/nssdb -$ certutil -N -d "sql:$HOME/.pki/nssdb" -``` - -不要输入任何密码。 - -{% include product %} Desktop 现在应该能够正常启动。 - -## 不兼容的 Qt 版本 - -**可能的错误** - -Cannot mix incompatible Qt library (version `0x40805`) with this library (version `0x40807`) - -**解决方案** - -出现此问题的常见原因是发生了替代,它最终会加载不兼容的 Qt 库。 -您可以尝试使用以下命令修改您的环境,以避免发生这种情况: - -``` -unset QT_PLUGIN_PATH -``` 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 deleted file mode 100644 index 5dc6674ae..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-chrome.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: default -title: 我无法通过 Chrome 使用本地文件链接和启动 Toolkit 应用程序 -pagename: cant-use-file-linking-toolkit-app-chrome -lang: zh_CN ---- - -# 我无法通过 Chrome 使用本地文件链接和启动 Toolkit 应用程序 - -## 概述 - -在 {% include product %} 中,动作菜单有时不显示可用 Toolkit 应用程序的列表,或者在使用本地文件链接时有时会出错,即使 {% include product %} Desktop 正在运行中。这是 Chrome 中的 {% include product %} Desktop 浏览器集成的疑难解答手册,希望对您有所帮助。我们为 [Firefox](./cant-use-file-linking-toolkit-app-firefox.md) 提供单独手册。 - -- [诊断问题](#diagnosing-the-issue) -- [如何快速修复证书问题](#how-to-quickly-fix-certificate-issues) -- [修复所有平台上的 ERR_CERT_COMMON_NAME_INVALID 或 ERR_SSL_SERVER_CERT_BAD_FORMAT](#fixing-neterr_cert_common_name_invalid-and-err_ssl_server_cert_bad_format-on-all-platforms) -- [修复 Windows 上的 ERR_CERT_AUTHORITY_INVALID](#fixing-neterr_cert_authority_invalid-on-windows) - -## 诊断问题 - -### {% include product %} Desktop 是否正在运行? - -是的,我们知道。您可能已经检查过了,但我们必须要问一下。:) - -### {% include product %} Desktop 启动后,您是否重新启动了 Chrome? - -如果在允许 {% include product %} Desktop 注册证书之前便已启动 Chrome(这种情况仅在首次启动 {% include product %} Desktop 时发生,之后将不再出现此问题),Chrome 将会使用过期的证书副本并拒绝连接到 {% include product %} Desktop。关闭所有选项卡不一定会关闭 Chrome,因此建议您在地址栏中键入 [chrome://restart](chrome://restart/) 并按 Enter 键。这将确保所有 Chrome 相关进程都会终止,之后 Chrome 便会重新启动。 - -### 您是否正在使用防火墙软件? - -确保没有防火墙软件阻止与 localhost 的连接或端口 9000 上的连接。 - -### Chrome 是否拒绝证书? - -您可以浏览到 https://localhost:9000 来确认 Chrome 是否接受证书,这是 {% include product %} 网站为了执行本地文件链接和启动 Toolkit 应用程序而尝试访问的网址。您通常会看到以下消息: - -![Autobahn Python 消息](images/autobahn-python.png) - -另一方面,如果您看到下列消息之一,则表示证书注册过程有问题:  - -![您的连接不是私人消息](images/your-connection-is-not-private-chrome.png) - -![无法提供安全连接消息](images/cant-provide-sceure-connection-chrome.png) - -## 如何快速修复证书问题 - -规避这些问题的最简单方法就是单击**“高级”(ADVANCED)**和**“Proceed to localhost (unsafe)”**。 这样,Chrome 便会知道您还是接受了证书,并允许 {% include product %} 网站与 {% include product %} Desktop 通信。 - -{% include info title="注意" content="这只会启用网络浏览器和 ShotGrid Desktop 之间的连接。信任设置可让这两个应用程序之间的通信流动,**并不代表信任 Internet 上的任何其他服务器**。遗憾的是,需要在出现问题的每台计算机上重复此过程。如果此方法无法解决问题,或者您认为部署到所有用户过于复杂,建议您采取以下步骤。" %} - -{% include info title="注意" content="此修复步骤不适用于 **ERR_SSL_SERVER_CERT_BAD_FORMAT** 错误,而且您将需要重新生成证书,如下所述。" %} - -## 修复所有平台上的 NET::ERR_CERT_COMMON_NAME_INVALID 和 ERR_SSL_SERVER_CERT_BAD_FORMAT - -Chrome 会定期升级其自签名证书的安全性,这些更新有时会破坏我们的浏览器集成。 遗憾的是,这些类型的问题只能通过重新生成证书的 certificate_path 来修复。 - -要重新生成证书,可在 {% include product %} Desktop 用户菜单的**“高级”(Advanced)**部分下选取**“Regenerate Certificates”**选项。(如果您未看到此选项,请确保更新 `tk-desktop` 插件,以解除对此选项的锁定。) - -确认您要重新生成证书后,将会弹出一系列对话框,就像您首次生成证书一样。在 Windows 和 macOS 上,系统将提示您更新 Windows 证书存储或 macOS 密钥链两次:一次用来删除旧证书,一次用来注册新证书。在 Linux 上,注册以静默方式完成。 完成后,重新启动 {% include product %} Desktop。 - -{% include product %} Desktop 完成启动并处于运行状态后,建议您在地址栏中键入 [chrome://restart](chrome://restart/) 来重新启动 Chrome,确保已完全关闭 Chrome 并清空其证书缓存。 - -如果您的计算机未连接到 Internet,无法下载更新,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -## 修复 Windows 上的 NET::ERR_CERT_AUTHORITY_INVALID - -在某些情况下,Windows 将报告证书已成功导入,但不会将其用于需要它的应用程序。访问 Windows 上的证书对话框可以验证此情况。要访问该对话框,请点击 Windows 键并键入**“Internet 选项”**。在**“Internet 属性”**对话框上,切换到**“内容”**选项卡,然后单击**“证书”**按钮。最后,单击**“受信任的根证书颁发机构”**并查找 **localhost**。 - -![在 Windows 上搜索 Internet 选项](images/windows-search-internet-options.png) - -![Internet 属性的“内容”选项卡](images/windows-internet-properties.png) - -![Windows 证书](images/windows-certificates.png) - -如果没有此条目,则表明您的 Windows 域或本地计算机可能存在组策略问题。如果存在此条目,建议您联系我们的[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support)。 - -此时,建议您与管理贵组织 Windows 计算机的人员沟通,并向其询问是否有可能已设置为指示 Windows 不信任自签名证书的组策略。 - -## 调查组策略问题 - -如果您的计算机在域中,管理员可以尝试[此 StackExchange 帖子](https://superuser.com/questions/145394/windows-7-will-not-install-a-root-certificate/642812#642812)中详述的步骤。 - -如果您的计算机不在域中,可能是计算机仍被管理员锁定。执行以下步骤时需要 Windows 管理员帐户。 - -点击 Windows 键,键入 **MMC**,然后按 Enter 键。此时将启动 **Microsoft 管理控制台**。在应用程序中,单击**“文件”**菜单并选择**“添加/删除管理单元”**。此时将显示**“添加或删除管理单元”**对话框。在左侧,搜索**“组策略对象编辑器”**,然后单击**“添加 >”**。将出现一个新对话框,可单击**“完成”**将其关闭。最后,单击**“添加或删除管理单元”**对话框上的**“确定”**。 - -![Microsoft 管理控制台中的添加/删除管理单元](images/microsoft-management-console.png) - -最后,在主对话框的左侧,导航到**“本地计算机策略/计算机配置/Windows 设置/安全设置/公钥策略”**。选定后,双击中央窗格中的**“证书路径验证设置”**。 - -![证书路径验证设置](images/certificate-path-valiation-settings.png) - -在下一个对话框中,确保**“定义这些策略设置”**处于未选中状态。如果选中,请确保**“允许使用用户受信任根证书颁发机构(CA)验证证书(推荐)”**处于选中状态。完成之后,单击**“确定”**,系统会保存这些设置。 - -此时,需要关闭所有 Chrome 窗口并重新启动 Chrome。建议像前面的操作那样,使用 [chrome://restart](chrome://restart) 执行此操作。必须执行此操作,所做更改才能生效。如果您浏览到证书列表,此时应显示 **localhost** 证书。 - -如果在上述更改之后使用浏览器集成时仍遇到问题,或者设置在一开始就是正确的,请联系我们的[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support)。 - -## 其他操作系统的疑难解答 - -如果您在其他操作系统上有关于 {% include product %} Desktop 集成的问题,请联系我们的[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support),以便我们可以为您提供帮助并更新此文章。 \ No newline at end of file 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 deleted file mode 100644 index fc5b25584..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/cant-use-file-linking-toolkit-app-firefox.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: default -title: 我无法通过 Firefox 使用本地文件链接和启动 Toolkit 应用程序 -pagename: cant-use-file-linking-toolkit-app-firefox -lang: zh_CN ---- - -# 我无法通过 Firefox 使用本地文件链接和启动 Toolkit 应用程序 - -## 概述 - -在 {% include product %} 中,动作菜单有时不显示可用 Toolkit 应用程序的列表,或者在使用本地文件链接时有时会出错,即使 {% include product %} Desktop 正在运行中。这是 Firefox 中的 {% include product %} Desktop 浏览器集成的疑难解答手册,希望对您有所帮助。我们为 [Chrome](./cant-use-file-linking-toolkit-app-chrome.md) 提供单独手册。 - -## 诊断问题 - -### {% include product %} Desktop 是否正在运行? - -是的,我们知道。您可能已经检查过了,但我们必须要问一下。:) - -### 您是否正在使用防火墙软件? - -确保没有防火墙软件阻止与 **localhost** 的连接或端口 **9000** 上的连接。 - -### Firefox 是否拒绝证书? - -您可以浏览到 https://localhost:9000 来确认 Firefox 是否接受证书,这是 {% include product %} 网站为了执行本地文件链接和启动 Toolkit 应用程序而尝试访问的网址。您通常会看到以下消息: - -![Autobahn Python 消息](images/autobahn-python.png) - -另一方面,如果您看到下面两条消息之一,则表示证书注册过程有问题: - -![连接不安全消息](images/connection-is-not-secure.png) - -![安全连接失败消息](images/connection-failed.png) - -## 如何修复“您的连接不安全”问题 - -您需要向 Firefox 浏览器添加一个例外,使证书获得接受。如果您刚刚访问了 **https://localhost:9000**,添加例外的最简单方法就是单击**高级**,然后单击**添加例外**按钮。将显示对话框。 - -![向 Firefox 添加例外](images/add-exception-firefox.png) - -**单击**获取证书**,然后选择**确定安全例外。您可以忽略证书不受信任的消息。这很正常,因为证书是由 {% include product %} Desktop 生成的,而不是由证书颁发机构生成。 - -您现在应该可以从您的 {% include product %} 站点访问本地文件链接和启动 Toolkit 应用程序了。如果在添加例外后仍遇到问题,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 - -## 如何修复“安全连接失败”问题 - -您需要单击**“打开菜单”**按钮并选取**“首选项”**。然后选取左侧的**“高级”**,并依次单击**“证书”**和**“查看证书”**。 - -![Firefox 高级设置](images/firefox-advanced-settings.png) - -![Firefox 查看证书](images/firefox-view-certificates.png) - -在**“服务器”**部分中,单击任意项并开始键入 `localhost`,或者只是滚动,直到找到名为 **localhost:9000** 的条目。将其删除。然后,转到**“证书机构”**选项卡并再次键入 `localhost`。您还可以再次滚动,直到到达其下有 **localhost** 条目的 **Autodesk** 部分。可以删除 **localhost** 条目。完成后,单击**确定**,然后重新启动 Firefox。Firefox 重新启动后,请浏览至 **https://localhost:9000**。您现在应该看到以下消息: - -![连接不安全消息](images/connection-is-not-secure.png) - -此时,需要按照上面所述的步骤添加一个例外。 - -如果您所看到的屏幕不是这样,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)以获取帮助。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/certificate-fail-local-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/certificate-fail-local-error-message.md deleted file mode 100644 index 3aebdca7b..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/certificate-fail-local-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: 在本地 {% include product %} 站点上使用 {% include product %} Desktop 时显示 CERTIFICATE_VERIFY_FAILED -pagename: certificate-fail-local-error-message -lang: zh_CN ---- - -# 在本地 {% include product %} 站点上使用 {% include product %} Desktop 时显示 CERTIFICATE_VERIFY_FAILED - -## 用例: - -使用 {% include product %} 的本地安装时,在以下两种情况中可能会出现此错误: - -- 登录 {% include product %} Desktop 时 -- 从 Toolkit 应用商店下载媒体时 - -## 如何修复: - -要解决此问题,您需要向 {% include product %} API 提供一个文件,其中包含所有有效 CA 的列表,包括您自己的 CA。我们通常建议用户从 Python 的 `certifi` 软件包下载[此文件](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem)的最新副本作为起点,然后在文件末尾添加自己的 CA。然后,将该文件保存到所有用户都可以访问的位置。最后,在每台计算机上,将 `SHOTGUN_API_CACERTS` 环境变量设置为该文件的完整路径,例如 `/path/to/my/ca/file.pem`。 - -这样做应该可以解决您在本地站点上遇到的任何 `CERTIFICATE_VERIFY_FAILED` 错误。请注意,如果您能够连接到 {% include product %} 站点,但仍无法从 Toolkit 应用商店下载更新,则可能是因为您的 `.pem` 文件中缺少 Amazon CA。如果您从一个空文件开始,而且仅添加了您的自定义 CA,而不是从我们上面链接到的文件开始,通常会发生这种情况。 - -请注意,这些信息*仅*适用于本地安装。如果您有一个托管站点并遇到此错误,对于 Windows,请查看[此论坛帖子](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860)。对于其他操作系统,请查看[此文档](https://developer.shotgridsoftware.com/zh_CN/c593f0aa/)。 - -## 导致此错误的原因示例: - -之所以出现此问题,通常是因为您已将本地站点配置为使用 HTTPS,但您尚未配置 Toolkit,因此识别的是您用于签署本地站点证书的证书颁发机构(此后称为 CA)。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/getting-certificate-verify-failed-when-using-shotgun-desktop-on-a-local-shotgun-site/10466)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md b/docs/zh_CN/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md deleted file mode 100644 index e4eb1fa18..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/configurations-does-not-point-to-valid-bundle-on-disk.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: 配置未指向磁盘上的有效包! -pagename: configurations-does-not-point-to-valid-bundle-on-disk -lang: zh_CN ---- - -# 配置未指向磁盘上的有效包! - -## 用例 - -首次安装 {% include product %} Desktop 时,打开项目后,文件路径后可能会出现此错误。 - -## 如何修复 - -在 Windows 上,项目的工作流配置实体指向配置的 `...\{% include product %}\Configurations` 路径。这可能不是正确的路径,因此,第一步是确保路径存在或对其进行更正。 - -还有一种可能,您可以尝试从您无权访问该路径位置的集中式安装进行访问。在这种情况下,切换到分布式安装将会有所帮助。 - - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file 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 deleted file mode 100644 index ad22003db..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/context-missing-task-step.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: 为什么我的上下文缺少任务/工序,但它是文件名的一部分? -pagename: context-missing-task-step -lang: zh_CN ---- - -# 为什么我的上下文缺少任务/工序,但它是文件名的一部分? - -通过 Toolkit 创建文件夹时,它会根据实体[注册路径](../administering/what-is-path-cache.md),以便执行查找。这意味着如果指定了路径,就可以确定正确的上下文。Toolkit 将仅为从数据结构生成的文件夹创建注册表,因此不考虑仅在 `templates.yml` 文件中定义的文件名或文件夹等因素。如果您的数据结构中没有 `Task` 文件夹,则可能会遇到 Toolkit 需要了解文件的任务,但无法仅从路径中读取任务的情况。 - -**示例** - -以下面的默认数据结构为例,在文件夹创建过程中将注册 `Asset` 和 `Step` 文件夹: - -![默认资产数据结构](./images/asset-schema.png) - -如果使用模板生成如下所示的文件路径: - - assets/{sg_asset_type}/{Asset}/{Step}/work/maya/{task_name}_{name}.v{version}.{maya_extension}` - -然后尝试从生成的路径确定上下文,这仅可以构建 `Asset` 和 `Step`,而**不是** `Task`,不论文件路径中的任务名称是什么。 - -**解决方案** - -对于大多数工作流,数据结构中可以具有 `Step` 文件夹,也可以没有 `Task` 文件夹。通常,您会通过选择要处理的任务,然后选择文件,以使用 Workfiles 应用打开场景文件。然后使用您在 UI 中选择的任务来驱动上下文,而不是尝试从打开的文件的路径确定上下文。 - -但是,在某些情况下,能够从路径获得上下文这一点可能很重要,例如: - -- 使用我们的自动上下文切换功能;该功能允许 Toolkit 检测您何时在软件的本地打开对话框中打开文件(而不是通过 Workfiles 应用)并相应地切换当前上下文。 -- 在需要为给定文件确定上下文的独立过程中使用 API。 - -针对这些情况的解决方案是将 `Task` 文件夹引入到您的数据结构中,或者不使用自动上下文切换,对于 API 脚本,请确保您的过程已具有所需的上下文信息,而无需执行此查找操作。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/could-not-update-with-folder-data.md b/docs/zh_CN/quick-answers/troubleshooting/could-not-update-with-folder-data.md deleted file mode 100644 index 48623529d..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/could-not-update-with-folder-data.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: 严重!无法使用文件夹数据更新 ShotGrid。 -pagename: could-not-update-with-folder-data -lang: zh_CN ---- - -# TankError: 无法在磁盘上创建文件夹。报告错误: 严重!无法使用文件夹数据更新 {% include product %}。 - -## 用例 - -我们正在使用集中式配置,并为现有项目添加 Linux 支持,但文件系统配置存在问题。 - -我们已经 - -- 将相应的根添加到 roots.yml -- 在工作流配置、install_location.yml 等中添加了 Linux 路径 -- 为软件实体添加了 Linux 路径 - -现在,{% include product %} Desktop 会成功启动,但尝试启动程序时,会出现: - -``` -TankError: Could not create folders on disk. Error reported: Critical! Could not update Shotgun with folder data. Please contact support. Error details: API batch() request with index 0 failed. All requests rolled back. -API create() CRUD ERROR #6: Create failed for [Attachment]: Path /mnt/cache/btltest3 doesn't match any defined Local Storage. -``` - -同样,当尝试运行 tank 文件夹和其他命令时,也会出现相同的错误。 - -我相信我们已经在所有必要的位置添加了 Linux 路径。这是同步数据库的问题吗? - -`tank synchronize_folders` 会输出消息和其他内容。 - -- 路径未与任何 {% include product %} 对象相关联。 - -## 如何修复 - -在“站点偏好设置 > 文件管理”(Site Preferences > File Management)下,将 Linux 路径添加到 {% include product %} 中的本地存储。 - - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/first-time-setting-up-shotgun-and-i-have-this-error/9384) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/data-handler-cache-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/data-handler-cache-error-message.md deleted file mode 100644 index ea0b7d287..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/data-handler-cache-error-message.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: sgtk.env.project.tk-nuke.tk-multi-workfiles2 无法创建“文件打开”(File Open)对话框! -pagename: data-handler-cache-error-message -lang: zh_CN ---- - -# data_handler_cache 错误消息: 错误 sgtk.env.project.tk-nuke.tk-multi-workfiles2 无法创建“文件打开”(File Open)对话框! - -## 用例: - -它发生在启动 Nuke 等应用时,`tk-multi-workfiles2`“文件打开”(File Open)对话框失败,在堆栈跟踪的末尾出现错误,指出 `data_handler_cache` 的 `get_children` 方法无法迭代,因为在应该传递词典时向它传递了字符串值。 - -完整的堆栈如下所示: - -``` -2020-12-07 09:42:03,571 [7192 ERROR sgtk.env.project.tk-nuke.tk-multi-workfiles2] Failed to create File Open dialog! -Traceback (most recent call last): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\work_files.py", line 115, in _show_file_dlg - self._dialog_launcher(dlg_name, app, form) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1822, in show_dialog - dialog, widget = self._create_dialog_with_widget(title, bundle, widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1684, in _create_dialog_with_widget - widget = self._create_widget(widget_class, *args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\platform\engine.py", line 1658, in _create_widget - widget = derived_widget_class(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_open_form.py", line 46, in __init__ - FileFormBase.__init__(self, parent) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 64, in __init__ - self._my_tasks_model = self._build_my_tasks_model() - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\file_form_base.py", line 134, in _build_my_tasks_model - bg_task_manager=self._bg_task_manager) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\my_tasks\my_tasks_model.py", line 57, in __init__ - bg_task_manager=bg_task_manager - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-multi-workfiles2\v0.11.8\python\tk_multi_workfiles\entity_models\extended_model.py", line 74, in __init__ - **kwargs - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_entity_model.py", line 70, in __init__ - self._load_data(entity_type, filters, hierarchy, fields) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\shotgun_model.py", line 367, in _load_data - self._create_item - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\core\python\tank\log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler.py", line 266, in generate_child_nodes - for data_item in self._cache.get_children(unique_id): - File "X:\sgtk_studio\_projects\Endlings2\shotgun_configuration\install\app_store\tk-framework-shotgunutils\v5.5.0\python\shotgun_model\data_handler_cache.py", line 129, in get_children - for item in cache_node[self.CACHE_CHILDREN].itervalues(): -AttributeError: 'str' object has no attribute 'itervalues' -``` - -## 导致错误的原因是什么? - -缓存中出现问题,您应该能够通过移除缓存来修复它(请参见下一部分)。 - -## 如何修复 - -[请按照以下说明](https://developer.shotgridsoftware.com/zh_CN/7c9867c0/)了解在何处查找缓存并将其移除。您可以擦除所有内容,但是当下次重新启动 Desktop 时,会在下载所有内容时导致延迟。建议您擦除以位于缓存根目录文件夹内的 {% include product %} 站点命名的文件夹,该文件夹仍需要进行一些重建,但不会太多。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/data-handler-cache-error/10955)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/encryption-handshake-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/encryption-handshake-error-message.md deleted file mode 100644 index 8bf745b03..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/encryption-handshake-error-message.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: 尝试在未完成加密握手的情况下进行通信 -pagename: encryption-handshake-error-message -lang: zh_CN ---- - -# `[ERROR]` 尝试在未完成加密握手的情况下进行通信 - -## 用例: - -无法启动和运行 {% include product %} Desktop 的浏览器集成。 - -启动 Shotgun Desktop 会指示 Web 服务器正在运行: - -``` -[ INFO] WebSocketServerFactory (TLS) starting on 9000 -[ INFO] Starting factory -``` - -...后跟大量没有显示任何错误的调试记录。 - -登录 {% include product %} 站点时,会出现: - -``` -[ INFO] Connection accepted. -``` - -在项目上单击鼠标右键会指示 {% include product %} 正在检索动作,并提供以下日志输出: - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -在 {% include product %} 中打开项目会生成以下日志输出: - -``` -[ INFO] Connection accepted. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ ERROR] Attempted to communicate without completing encryption handshake. -[ WARNING] dropping connection to peer tcp4:127.0.0.1:52451 with abort=True: WebSocket closing handshake timeout (peer did not finish the opening handshake in time) -[ INFO] Connection closed. -[ DEBUG] Reason received for connection loss: [Failure instance: Traceback (failure with no frames): : Connection to the other side was lost in a non-clean fashion: Connection lost. -``` - -## 如何修复: - -将 `shotgunlocalhost.com` 添加到代理绕过列表。 - -## 导致此错误的原因示例: - -代理配置。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/shotgun-desktop-browser-integration/3574)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md b/docs/zh_CN/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md deleted file mode 100644 index fa49d3eda..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/eof-occurred-violation-protocol-tls.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: default -title: 违反协议时发生 EOF -pagename: eof-occurred-violation-protocol-tls -lang: zh_CN ---- - -# SSLError: [Errno 8] _ssl.c:504: 违反协议时发生 EOF - -## 用例 - -从 Desktop 打开 Nuke 10.5 时,会出现以下 SSL 错误: - -``` -[13:57.14] ERROR: Shotgun Error: [ERROR tk-nuke] App /media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2 failed to initialize. It will not be loaded. -Traceback (most recent call last): -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/engine.py”, line 2792, in __load_apps -app.init_app() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/app.py”, line 26, in init_app -self._tk_multi_workfiles = self.import_module(“tk_multi_workfiles”) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/platform/bundle.py”, line 462, in import_module -self.__module_uid, None, python_folder, ("", “”, imp.PKG_DIRECTORY) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/init.py”, line 11, in -from . import tk_multi_workfiles -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/init.py”, line 14, in -from .file_open_form import FileOpenForm -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/file_open_form.py”, line 19, in -from .actions.file_action_factory import FileActionFactory -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/file_action_factory.py”, line 19, in -from .interactive_open_action import InteractiveOpenAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/interactive_open_action.py”, line 17, in -from .open_file_action import OpenFileAction -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/actions/open_file_action.py”, line 22, in -from …work_area import WorkArea -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/work_area.py”, line 19, in -from .user_cache import g_user_cache -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 203, in -g_user_cache = UserCache() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/app_store/tk-multi-workfiles2/v0.12.2/python/tk_multi_workfiles/user_cache.py”, line 32, in init -self._current_user = sgtk.util.get_current_user(self._app.sgtk) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/util/login.py”, line 125, in get_current_user -“HumanUser”, filters=[[“login”, “is”, current_login]], fields=fields -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 882, in find_one -additional_filter_presets=additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1003, in find -additional_filter_presets) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 1072, in _construct_read_parameters -params[“paging”] = {“entities_per_page”: self.config.records_per_page, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 471, in records_per_page -self._records_per_page = self._sg.server_info.get(“api_max_entities_per_page”) or 500 -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 763, in server_info -return self.server_caps.server_info -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 778, in server_caps -self._server_caps = ServerCapabilities(self.config.server, self.info()) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 833, in info -return self._call_rpc(“info”, None, include_auth_params=False) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank/authentication/shotgun_wrapper.py”, line 63, in _call_rpc -return super(ShotgunWrapper, self)._call_rpc(*args, **kwargs) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3302, in _call_rpc -encoded_payload, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3442, in _make_call -return self._http_request(verb, path, body, req_headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/shotgun.py”, line 3496, in _http_request -resp, content = conn.request(url, method=verb, body=body, headers=headers) -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 2192, in request -cachekey, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1845, in _request -conn, request_uri, method, body, headers -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1750, in _conn_request -conn.connect() -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 1399, in connect -self.key_password, -File “/media/vfxbox/SHOTGUN/configsDeluxe/animationcopy/install/core/python/tank_vendor/shotgun_api3/lib/httplib2/python2/init.py”, line 109, in _ssl_wrap_socket -ssl_version=ssl_version, -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 381, in wrap_socket -ciphers=ciphers) -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 143, in init -self.do_handshake() -File “/usr/local/Nuke10.5v7/lib/python2.7/ssl.py”, line 305, in do_handshake -self._sslobj.do_handshake() -SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol -``` - -Nuke 版本 11 或 12 不会发生这种情况。 - -## 如何修复 - -您之所以看到此问题,是因为 Nuke 10.x 与 TLS 1.2 不兼容。该软件需要与 TLS 兼容。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/sslerror-in-nuke-10-5/9299) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/error-during-execution-mel-script.md b/docs/zh_CN/quick-answers/troubleshooting/error-during-execution-mel-script.md deleted file mode 100644 index 5a6ce1eeb..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/error-during-execution-mel-script.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -title: 无法更改工作区 - 执行 MEL 脚本期间出错 -pagename: error-during-execution-mel-script -lang: zh_CN ---- - -# 无法更改工作区 - 执行 MEL 脚本期间出错 - -## 用例 - -当为无权访问网络的自由职业者创建新的特殊工作流配置时,我们创建了新的根名称并将其指向另一个路径。制作工作流配置将根路径指向我们的文件服务器。 - -但是,在 Maya 上使用 `tk-multi-workfiles` 创建新文件时,出现以下错误: - -``` -Failed to change work area - Error during execution of MEL script: file: C:/Program files/Autodesk/Maya2019/scripts/others/setProject.mel line 332: New project location C:\VetorZero\work\Shotgun-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya is not a valid directory, project not created. -Calling Procedure: setProject, in file “C:\Program Files\Shotgun\c” set project(“C:\Vetorzero\work\SHOTGUN-workflow_completo\sequences\Seq_001\SH_010\ANIM\maya”) -``` - -它创建了文件夹,但没有创建文件夹“maya”。 - -## 如何修复 - -检查以确保文件夹“maya”没有被错误地删除。如果存在此情况,则会出现此错误。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/new-file-maya-action-error/8225) \ No newline at end of file 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 deleted file mode 100644 index ddbfb91ba..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/fix-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: "解决与 Python API 相关的 SSL: CERTIFICATE_VERIFY_FAILED 问题" -pagename: fix-ssl-certificate-verify-failed -lang: zh_CN ---- - -# 解决与 Python API 相关的 SSL: CERTIFICATE_VERIFY_FAILED 问题 - -Python API 依赖与 API 捆绑在一起且位于计算机上的一组证书才能连接到 {% include product %} 使用的各种 Web 服务。遗憾的是,证书颁发机构可能会颁发新证书,而这些证书可能未与 Python API 或操作系统捆绑在一起。 - -虽然我们的 Python API 附带了截至 2019 年 2 月 21 日的最新证书副本,有一个错误导致 API 无法使用这些证书以向 Amazon S3 执行上传操作,即使您使用的是最新版本的 API 也是如此。有关背景信息,请参见[此 AWS 博客文章](https://aws.amazon.com/cn/blogs/security/how-to-prepare-for-aws-move-to-its-own-certificate-authority/)。要临时解决这种状况,可以尝试以下解决方案。 - -{% include info title="注意" content="这些是临时解决方法,我们正在研究长期解决方案。" %} - -## 首选解决方案 - -将所需的 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。 - -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。 - -## 替代解决方案 - -### 如果仅使用 Python API - -1. 升级到 Python API **v3.0.39** - -2. a. 将 `SHOTGUN_API_CACERTS` 设置为 `/path/to/shotgun_api3/lib/httplib2/cacerts.txt` - - 或 - - b. 在实例化 `Shotgun` 对象时更新脚本并设置 `ca_certs=/path/to/shotgun_api3/lib/httplib2/cacerts.txt`。 - -### 如果使用 Toolkit - -1. 通过 `tank core` 命令或通过更新工作流配置的 `core/core_api.yml` 文件升级到最新版本的 Toolkit API,具体取决于您部署 Toolkit 的方式。 - -2. 从 [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem) 下载最新的证书列表。 - -3. 将 `SHOTGUN_API_CACERTS` 设置为该文件的保存位置。与 Python API 类似,Toolkit 不允许您在创建连接时指定 `ca_certs` 参数。 - -### 如果无法更新 Python API 或 Toolkit - -1. 从 [https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem](https://github.com/certifi/python-certifi/blob/master/certifi/cacert.pem) 下载最新的证书列表。 - -2. 将 `SSL_CERT_FILE` 环境变量设置为该文件的保存位置。 diff --git a/docs/zh_CN/quick-answers/troubleshooting/folder-creation-aborded.md b/docs/zh_CN/quick-answers/troubleshooting/folder-creation-aborded.md deleted file mode 100644 index 156983970..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/folder-creation-aborded.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 文件夹创建中止 -pagename: folder-creation-aborded -lang: zh_CN ---- - -# 无法创建文件夹: 文件夹创建中止 - -## 用例 - -目前,我们在 Web 界面上创建新项目,然后使用 {% include product %} Desktop 将 Toolkit 配置为集中式设置。但是,当尝试编辑资产名称时,它不再起作用(艺术家无法在 Maya 等 CCD 中打开文件进行编辑),并返回错误“无法创建文件夹”。{% include product %} 要求重新运行 tank 命令以取消注册资产并重新注册它以进行修复,但我们不知道在何处运行这些命令。 - -## 如何修复 - -在项目上运行高级设置向导后,会有意移除用于运行该向导的选项。但是,如果需要,可以[重新设置项目](https://developer.shotgunsoftware.com/zh_CN/fb5544b1/)。 - -您需要运行错误消息中提及的 tank 命令: - -``` -tank.bat Asset ch03_rockat_drummer unregister_folders -``` - -`tank.bat` 位于您设置的配置的根目录中,如果您不确定它在何处,[此主题](https://community.shotgridsoftware.com/t/how-do-i-find-my-pipeline-configuration/191)应该可以帮助您找到它。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/error-in-toolkit-after-renaming-asset/4108) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/frame-server-error.md b/docs/zh_CN/quick-answers/troubleshooting/frame-server-error.md deleted file mode 100644 index a2a0d62f9..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/frame-server-error.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -title: 帧服务器遇到错误 -pagename: frame-server-error -lang: zh_CN ---- - -# 帧服务器遇到错误 - -## 用例 - -从 SG Desktop 启动 Nuke 时,显示错误消息“帧服务器遇到错误。”,您可以继续工作。 - -完整错误: - -``` -The Frame Server has encountered an error. - -Nuke 12.1v5, 64 bit, built Sep 30 2020. -Copyright (c) 2020 The Foundry Visionmongers Ltd. All Rights Reserved. -Loading - init.py -Traceback (most recent call last): -File “/Applications/Nuke12.1v5/Nuke12.1v5.app/Contents/Resources/pythonextensions/site-packages/foundry/frameserver/nuke/workerapplication.py”, line 18, in -from util import(asUtf8, asUnicode) -ImportError: cannot import name asUtf8 -cannot import name asUtf8 -``` - -## 如何修复 - -当配置上仍存在开发路径时,可能会发生此错误。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/the-frame-server-has-encountered-an-error/11192) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/hiero-task-type-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/hiero-task-type-error-message.md deleted file mode 100644 index a847d3bca..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/hiero-task-type-error-message.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: 错误 18:13:28.365:Hiero(34236) 错误!任务类型 -pagename: hiero-task-type-error-message -lang: zh_CN ---- - -# 错误 18:13:28.365:Hiero(34236): 错误! 任务类型 - -## 用例: -更新到 `config_default2` 后,nuke_studio 不会初始化。在 Nuke 12.0 Studio 中,脚本编辑器未出现错误,但在 Nuke 11.1v3 中出现错误: - -``` -ERROR 18:13:28.365:Hiero(34236): Error! Task type tk_hiero_export.sg_shot_processor.ShotgunShotProcessor Not recognised -``` - -回滚后不会失败,但仍不会初始化 tk-nuke 插件,并且 {% include product %} 无法加载任何内容... - -[社区帖子](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)包含完整日志,以提供更多详细信息。 - -## 导致错误的原因是什么? -它不是将其视为 NukeStudio 启动,而是可能将其视为标准 Nuke 启动。 - -定义的 Nuke Studio 软件实体具有路径,并将参数设置为 `-studio`。参数必须是 `--studio`。 - -## 如何修复 -软件实体上的参数需要设置为 `-studio`。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/cant-get-shotgun-toolkit-to-work-with-nuke-studio-config-default2/4586)。 - 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 deleted file mode 100644 index 44bd43ece..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/houdini-integrations-not-starting.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 为什么我的 Houdini ShotGrid 集成没有启动? -pagename: houdini-integrations-not-starting -lang: zh_CN ---- - -# 为什么我的 Houdini {% include product %} 集成没有启动? - - -本文介绍了 {% include product %} 集成在 Houdini 中无法启动的常见原因。 在这种情况下,Houdini 从 {% include product %} Desktop、{% include product %} 网站或 tank 令启动且无错误。但是,Houdini 启动后,{% include product %} 菜单或工具架将不会出现。 - -通常导致这种情况的原因是,`HOUDINI_PATH` 环境变量已被覆盖,而 {% include product %} 依赖于该变量来传递启动脚本路径。 - -Houdini 从 {% include product %} 启动时,启动应用逻辑会将 {% include product %} 引导脚本路径添加到 `HOUDINI_PATH` 环境变量。但是,如果 Houdini 具有 -[houdini.env 文件](http://www.sidefx.com/docs/houdini/basics/config_env.html#setting-environment-variables),可能会出现此问题。此文件允许用户设置加载 Houdini 时将显示的环境变量,但是此文件中定义的任何值都将覆盖当前会话中已存在的环境变量。 - -解决此问题的方法是确保在 `HOUDINI_PATH` 环境变量的新定义中包含先前存在的该变量。 - -例如,如果 `houdini.env` 文件中已存在如下内容: - - HOUDINI_PATH = /example/of/an/existing/path;& - -您应将 `$HOUDINI_PATH;` 添加到文件中所定义路径的末尾,并加以保存: - - HOUDINI_PATH = /example/of/an/existing/path;$HOUDINI_PATH;& - -这允许 {% include product %} 将值设置为在 Houdini 启动时继续存在。 - -{% include warning title="注意" content="在 Windows 上我们已经看到是 `$HOUDINI_PATH` 导致问题。有时会尝试引导 Shotgun 集成多次,导致生成如下所示的错误: - - Toolkit bootstrap is missing a required variable : TANK_CONTEXT - -如果出现这种情况,您应尝试改为使用 `%HOUDINI_PATH%`。" %} - -如果这样做无法解决问题,请联系我们的[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support),他们将帮助您诊断问题。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/Thumbs.db b/docs/zh_CN/quick-answers/troubleshooting/images/Thumbs.db deleted file mode 100644 index 23078dcee..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/Thumbs.db and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/add-exception-firefox.png b/docs/zh_CN/quick-answers/troubleshooting/images/add-exception-firefox.png deleted file mode 100644 index a3daaa340..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/add-exception-firefox.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/asset-schema.png b/docs/zh_CN/quick-answers/troubleshooting/images/asset-schema.png deleted file mode 100644 index c4ce80527..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/asset-schema.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/autobahn-python.png b/docs/zh_CN/quick-answers/troubleshooting/images/autobahn-python.png deleted file mode 100644 index a3b57f906..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/autobahn-python.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png b/docs/zh_CN/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png deleted file mode 100644 index 4c4dbc267..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/cant-provide-sceure-connection-chrome.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png b/docs/zh_CN/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png deleted file mode 100644 index 2f47781c8..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/certificate-path-valiation-settings.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/connection-failed.png b/docs/zh_CN/quick-answers/troubleshooting/images/connection-failed.png deleted file mode 100644 index 13d4efc28..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/connection-failed.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/connection-is-not-secure.png b/docs/zh_CN/quick-answers/troubleshooting/images/connection-is-not-secure.png deleted file mode 100644 index 0f602d44f..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/connection-is-not-secure.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png b/docs/zh_CN/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png deleted file mode 100644 index a26130a2b..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/desktop-enable-debug-logging.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/firefox-advanced-settings.png b/docs/zh_CN/quick-answers/troubleshooting/images/firefox-advanced-settings.png deleted file mode 100644 index 03bf51578..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/firefox-advanced-settings.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/firefox-view-certificates.png b/docs/zh_CN/quick-answers/troubleshooting/images/firefox-view-certificates.png deleted file mode 100644 index 41fd04fc1..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/firefox-view-certificates.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/microsoft-management-console.png b/docs/zh_CN/quick-answers/troubleshooting/images/microsoft-management-console.png deleted file mode 100644 index f4205642a..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/microsoft-management-console.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/photoshop-extension-panel.png b/docs/zh_CN/quick-answers/troubleshooting/images/photoshop-extension-panel.png deleted file mode 100644 index f6c214304..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/photoshop-extension-panel.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg b/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg deleted file mode 100644 index 8e2bc3f25..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-01.jpeg and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg b/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg deleted file mode 100644 index 4de3c3636..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-02.jpeg and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg b/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg deleted file mode 100644 index 2b5fe9a7b..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-03.jpeg and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg b/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg deleted file mode 100644 index ece427bb1..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/review-submission-error-message-04.jpeg and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png b/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png deleted file mode 100644 index faaa09de8..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-desktop-console-photoshop-extension.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png b/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-asset-step-actions.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png b/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun-menu-project-actions.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png b/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png deleted file mode 100644 index eed761acd..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_asset_step_actions.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png b/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png deleted file mode 100644 index 650aab8c9..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/shotgun_menu_project_actions.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png b/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png deleted file mode 100644 index fd64f6842..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_admin_mode.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_powershell.png b/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_powershell.png deleted file mode 100644 index 0b6de6447..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/troubleshoot_powershell.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/windows-certificates.png b/docs/zh_CN/quick-answers/troubleshooting/images/windows-certificates.png deleted file mode 100644 index e334a1a36..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/windows-certificates.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/windows-internet-properties.png b/docs/zh_CN/quick-answers/troubleshooting/images/windows-internet-properties.png deleted file mode 100644 index 78608abf1..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/windows-internet-properties.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/windows-search-internet-options.png b/docs/zh_CN/quick-answers/troubleshooting/images/windows-search-internet-options.png deleted file mode 100644 index 7e86f132c..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/windows-search-internet-options.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/windows-setting-environment-variable.png b/docs/zh_CN/quick-answers/troubleshooting/images/windows-setting-environment-variable.png deleted file mode 100644 index 5e6e143d5..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/windows-setting-environment-variable.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png b/docs/zh_CN/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png deleted file mode 100644 index d255e1200..000000000 Binary files a/docs/zh_CN/quick-answers/troubleshooting/images/your-connection-is-not-private-chrome.png and /dev/null differ diff --git a/docs/zh_CN/quick-answers/troubleshooting/invalid-lut-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/invalid-lut-error-message.md deleted file mode 100644 index 2816c9120..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/invalid-lut-error-message.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: 选择的 LUT 无效 -pagename: invalid-lut-error-message -lang: zh_CN ---- - -# 错误“选择的 LUT 无效: Gamma2.2” - -## 用例: -在 ACES 颜色管理项目中工作时,如果使用默认的 Toolkit 发布,发布将失败并显示错误 `Invalid LUT selected : Gamma2.2`。 - -## 导致错误的原因是什么? -有一个应用创建 QuickTime,这是 Nuke Toolkit 发布的一部分,名为 `tk-multi-reviewsubmission`,默认情况下,它将创建一个 QT,该 QT 可与 Nuke 标准颜色模型配合使用。 - -## 如何修复 -由于您使用的是 ACES(我假设使用 ICIO 模型),我们只需通过接管该应用并将其添加到 `codec_settings.py` 挂钩中来更改 `tk-multi-reviewsubmission` 应用中的颜色空间设置。 - -编解码器因首选项而异,但在此示例中,我们使用 `Output - sRGB Codec`:因此,在 `codec_settings.py` 挂钩中,将 `settings["colorspace"] = "Output - sRGB"` 设置添加到适合您的设置的位置。(我刚刚在所有位置添加了它) - -```python - settings = {} - if sys.platform in ["darwin", "win32"]: - settings["file_type"] = "mov" - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 changed the codec knob name to meta_codec and added an encoder knob - # (which defaults to the new mov64 encoder/decoder). - settings["meta_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - settings["codec"] = "jpeg" - settings["colorspace"] = "Output - sRGB" - - elif sys.platform == "linux2": - if nuke.NUKE_VERSION_MAJOR >= 9: - # Nuke 9.0v1 removed ffmpeg and replaced it with the mov64 writer - # http://help.thefoundry.co.uk/nuke/9.0/#appendices/appendixc/supported_file_formats.html - settings["file_type"] = "mov64" - settings["mov64_codec"] = "jpeg" - settings["mov64_quality_max"] = "3" - settings["colorspace"] = "Output - sRGB" - else: - # the 'codec' knob name was changed to 'format' in Nuke 7.0 - settings["file_type"] = "ffmpeg" - settings["format"] = "MOV format (mov)" - settings["colorspace"] = "Output - sRGB" - - return settings -``` - -现在,如果您已经全部设置好,那么在 Nuke 中发布时,QT 将在 ACES 兼容的颜色空间中生成! - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/what-to-do-when-publish-from-aces-nuke-script-fails-with-error-invalid-lut-selected-gamma2-2/197)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/maya-context-task-empty-none-error.md b/docs/zh_CN/quick-answers/troubleshooting/maya-context-task-empty-none-error.md deleted file mode 100644 index f76af1419..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/maya-context-task-empty-none-error.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: 在 Maya 中,当我输出 context.task 时,它为空白“无”(None) -pagename: maya-context-task-empty-none-error -lang: zh_CN ---- - -# 在 Maya 中,当我输出 context.task 时,它为空白“无”(None) - -## 用例 - -在 Maya 中,在输出 `context.task` 后,它是 `empty “None”`,但尝试其他步骤/任务中的其他布局文件时,会显示 `context.task` 详细信息。在导航浏览 `Open > Layout > new file` 时,也可以输出 `context.task` 详细信息,但通过“文件保存”(File Save)保存文件时,`context.task` 为“无”(None)。 - -## 如何修复 - -尝试[取消注册文件夹](https://community.shotgridsoftware.com/t/how-can-i-unregister-folders-when-using-a-distributed-config/189),以获取其中一个不起作用的镜头,然后再次运行文件夹创建。 - - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/context-task-none/3705) \ No newline at end of file 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 deleted file mode 100644 index dedc15c0f..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/menu-entries-missing-in-launched-dcc.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: 我已从 ShotGrid Desktop 启动 Nuke/Maya 等,但 ShotGrid 菜单中缺少相关条目 -pagename: menu-entries-missing-in-launched-dcc -lang: zh_CN ---- - -# 我已从 {% include product %} Desktop 启动 Nuke/Maya 等,但 {% include product %} 菜单中缺少相关条目 - -在 {% include product %} 菜单中显示的动作需根据上下文进行配置。这意味着根据您所处的上下文,可用动作列表可能会有所不同。您之后看到的应用可能与您现在看到的应用不同,因为您处于错误的上下文。 - -## 示例 - -从 [{% include product %} Desktop](https://developer.shotgridsoftware.com/zh_CN/d587be80/#getting-started-with-desktop) 启动应用程序时,默认进入项目环境中。此环境由工作流配置中位于 `config/env/project.yml` 下的配置文件进行管理。由于用户的大多数工作可能不在此环境中进行,其中并未配置许多应用供您使用。 - -**默认 Maya 项目动作:** - -![{% include product %} 菜单项目动作](images/shotgun-menu-project-actions.png) - -您可以使用 [{% include product %} Workfiles 应用](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/)选择要处理的资产、镜头或任务。这将加载相应的新环境,这样,更多的应用便会启用 {% include product %} 菜单中的菜单项。 - -**默认 Maya 资产任务动作:** - -![{% 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 diff --git a/docs/zh_CN/quick-answers/troubleshooting/modulenotfounderror-error.md b/docs/zh_CN/quick-answers/troubleshooting/modulenotfounderror-error.md deleted file mode 100644 index 5f71ac6f6..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/modulenotfounderror-error.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: ModuleNotFoundError -pagename: modulenotfounderror-error -lang: zh_CN ---- - -# ModuleNotFoundError - -## 用例 - -使用分布式配置时,如果在插件外部引导 `tk-shell` 以访问 `tk.templates` 命令,则会出现此错误。按照[此文档](https://developer.shotgridsoftware.com/zh_CN/3d8cc69a/#part-2-logging)(第 4 部分)进行操作并从安装文件夹导入 sgtk v0.19.18 时,出现以下错误: - -``` -Traceback (most recent call last): - File ".../_wip/sgtk_bootstrap.py", line 9, in - import sgtk - File "L:/_tech/sgtk_sandbox/install/core/python\sgtk\__init__.py", line 16, in - import tank - File "L:/_tech/sgtk_sandbox/install/core/python\tank\__init__.py", line 58, in - from . import authentication - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\__init__.py", line 33, in - from .shotgun_authenticator import ShotgunAuthenticator - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\shotgun_authenticator.py", line 13, in - from .sso_saml2 import ( - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\__init__.py", line 15, in - from .core.errors import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\__init__.py", line 15, in - from .sso_saml2_core import ( # noqa - File "L:/_tech/sgtk_sandbox/install/core/python\tank\authentication\sso_saml2\core\sso_saml2_core.py", line 19, in - from Cookie import SimpleCookie -ModuleNotFoundError: No module named 'Cookie' -``` - -## 如何修复 - -此问题可能是由于使用 Python 3 所致。Python 2.7 确实有 Cookie 模块,但 3.x 没有。因此,可以使用 Python 2.7 解决此问题。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/bootstrap-sgtk-modulenotfounderror/11708) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md deleted file mode 100644 index af57f4d0e..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/mtsettogglemenuitem-error-message.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: 找不到程序“MTsetToggleMenuItem” -pagename: mtsettogglemenuitem-error-message -lang: zh_CN ---- - -# 找不到程序“MTsetToggleMenuItem” - -## 相关的错误消息: - -Maya 在加载完整窗口之前、显示常见启动屏幕之后崩溃: -- 找不到程序“MTsetToggleMenuItem” - -## 如何修复: - -启动 Maya 之前,在 before_app_launch 挂钩中,可能有某些内容被意外从路径中移除,从而导致 Maya 启动时出错。在这种情况下,将 Python 安装添加到 `PTHONPATH` 会阻止 Maya 2019 查找插件路径。 - -## 导致此错误的原因示例: -用户遇到了多个问题,因为此挂钩确保 `C:\Python27` 已设置为 `PYTHONPATH`,并且他们实际上已使用此 `PYTHONPATH` 安装工作站。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/tk-maya-cannot-find-procedure-mtsettogglemenuitem/4629)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/myapp-appstore-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/myapp-appstore-error-message.md deleted file mode 100644 index 2e2ba07d4..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/myapp-appstore-error-message.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: 应用商店不包含名为 my-app 的项 -pagename: myapp-appstore-error-message -lang: zh_CN ---- - -# 错误: 应用商店不包含名为 my-app 的项 - -## 如何修复: - -这与自定义应用上的位置描述符有关 - [查看此文档](https://developer.shotgridsoftware.com/zh_CN/2e5ed7bb/#part-6-preparing-your-first-release)。 - -对于位置,请使用路径描述符设置 my-app - [请在此处了解详细信息](https://developer.shotgridsoftware.com/tk-core/descriptor.html#pointing-to-a-path-on-disk)。 - -## 导致此错误的原因示例: - -tk-multi-snapshot 未显示在 Maya 中,尝试使用 tank 验证时,如果尝试验证自定义应用,则会显示此错误,指出它不在应用商店中。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/tank-validate-errors-on-custom-apps/10674)。 - 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 deleted file mode 100644 index a8fa6a213..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/nuke-path-environment-variable.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: default -title: 当我设置 NUKE_PATH 环境变量时为什么 Nuke 集成无法启动? -pagename: nuke-path-environment-variable -lang: zh_CN ---- - -# 当我设置 NUKE_PATH 环境变量时为什么 Nuke 集成无法启动? - -启动 NUKE 时,我们的集成会设置 `NUKE_PATH` 环境变量,以便引导脚本在 NUKE 启动过程中运行。[`tk-multi-launchapp`](https://developer.shotgridsoftware.com/zh_CN/1b9c259a/#set-environment-variables-and-automate-behavior-at-launch) 在执行 [`before_launch_app.py`](https://github.com/shotgunsoftware/tk-multi-launchapp/blob/6a884aa144851148e8369e9f35a2471087f98d16/hooks/before_app_launch.py) 挂钩之前专门定义了 `NUKE_PATH`。 - -如果在启动过程中使用 `os.environ['NUKE_PATH'] = "/my/custom/path"` 等设置此环境变量,{% include product %} 集成将无法启动,因为您已从环境变量删除我们的启动脚本路径。 - -请在 `tank.util` 中使用此功能,以便将路径附加到 `NUKE_PATH` 环境变量,同时保留 Toolkit 引导的路径: - -```python -tank.util.append_path_to_env_var("NUKE_PATH", "/my/custom/path") -``` - -此外,也可以使用 `prepend_path_to_env_var()` 附加路径。 \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/path-associated-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/path-associated-error-message.md deleted file mode 100644 index 5916aae5a..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/path-associated-error-message.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: 路径“”已与 {% include product %} 实体“”关联 -pagename: path-associated-error-message -lang: zh_CN ---- - -# 数据库并发问题:路径 `` 已与 {% include product %} 实体 `` 关联 - -## 相关的错误消息: - -- 数据库并发问题: 路径 `` 已与 {% include product %} 实体 `` 关联。 -- 无法解析路径的行 ID! - -## 示例: - -当 Toolkit 用户尝试创建文件夹时,会发生此错误。以下是完整错误: - -``` -ERROR: Database concurrency problems: The path -'Z:\projects\SpaceRocks\shots\ABC_0059' is already associated with -Shotgun entity {'type': 'Shot', 'id': 1809, 'name': 'ABC_0059'}. Please re-run -folder creation to try again. -``` -## 导致错误的原因是什么? - -当您尝试为已具有 FilesystemLocation 实体的文件夹创建 FilesystemLocation 实体时,会发生这种情况。 - -## 如何修复 - -清除错误的 FilesystemLocation 实体。如果可以缩小到一组错误的 FilesystemLocation 实体,只需移除这些实体即可。但是,在许多情况下,项目的所有路径都会受到影响,因此它们都需要处理。 - -- 如何清除 FilesystemLocation 实体:理想情况下,您可以运行 `tank unregister_folders`。要清除所有这些,请运行 tank `unregister_folders --all`。(对于 `tank unregister_folders` 的所有选项,只需运行它而不使用任何参数,它将输出用法说明。) -- 但是,由于数据库已处于不稳定状态,因此这可能不起作用,或者可能仅部分起作用。运行该命令后,返回到 {% include product %} 中的 FilesystemLocations,确认您预期删除的内容已消失。如果没有,请选择坏实体,然后手动将其移动到垃圾桶。 - -此时,{% include product %} 中的 FilesystemLocations 是干净的,但艺术家的本地缓存可能不反映您所做的更改。最后一步是实际同步每个用户计算机上的本地缓存。为此,应运行 tank `synchronize_folders --full`。 - -执行所有这些步骤后,缓存路径应处于良好状态,并且不再显示错误。 - -## 相关链接 - -- [下面是相关代码](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [什么是缓存路径?什么是文件系统位置?](https://developer.shotgridsoftware.com/zh_CN/cbbf99a4/) - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/paths-long-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/paths-long-error-message.md deleted file mode 100644 index 468e7ffd9..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/paths-long-error-message.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: default -title: 由于 Windows 路径太长而导致的错误 -pagename: paths-long-error-message -lang: zh_CN ---- - -# 由于 Windows 路径太长(> 256 个字符)而导致的错误 - -## 确凿的事实 - -Windows 对路径名的默认限制非常低,即 255/260 个字符。[有关此限制的 Microsoft 信息位于此处](https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation),您可以在[此处查看更多技术信息](https://docs.microsoft.com/zh-cn/windows/win32/fileio/maximum-file-path-limitation)。 - -## 错误 - -该错误会以各种方式表现出来,但通常在 SG Desktop 首次加载配置时发生,会在将项目下载到缓存时遇到此错误。尽管 Windows 10 的最新版本似乎对该错误有所改善,但该错误可能有些隐秘。下面是您可能会看到的一些示例: - -``` -[ WARNING] Attempt 1: Attachment download of id 3265791 from https://xxxxx.shotgunstudio.com failed: [Error 206] The filename or extension is too long: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\0933a8b9a91440a2baf3dd7df44b40ce\\bundle_cache\\git\\tk-framework-imageutils.git\\v0.0.2\\python\\vendors\\osx\\lib\\python2.7\\site-packages\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname' -[ WARNING] File 'c:\users\xxxxx\appdata\local\temp\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\ab35bd0eb2b14c3b9458c67bceeed935_tank.zip' -``` - -``` -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\123456789012a34b567c890d1e23456: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=uploaded_config&id=38&version=123456 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -``` - -``` -WARNING sgtk.core.util.shotgun.download Attempt 4: Attachment download of id 1182 from https://xxxxx.shotgunstudio.com failed: [Errno 2] No such file or directory: 'C:\\Users\\xxxxx\\AppData\\Roaming\\Shotgun\\bundle_cache\\tmp\\dd2cc0804122403a87ac71efccd383ea\\bundle_cache\\app_store\\tk-framework-desktopserver\\v1.3.1\\resources\\python\\build\\pip\\_vendor\\requests\\packages\\urllib3\\packages\\ssl_match_hostname\\_implementation.py' -WARNING sgtk.core.util.filesystem File 'c:\users\xxxxx\appdata\local\temp\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' could not be deleted, skipping: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\xxxxx\\appdata\\local\\temp\\08f94bfe9b6d43e7a7beba30c192a43c_tank.zip' -ERROR sgtk.core.descriptor.io_descriptor.downloadable] Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Attempting to remove it. -ERROR sgtk.core.bootstrap.cached_configuration Failed to install configuration sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182. Error: Failed to download into path C:\Users\xxxxx\AppData\Roaming\Shotgun\bundle_cache\tmp\dd2cc0804122403a87ac71efccd383ea: Failed to download sgtk:descriptor:shotgun?entity_type=PipelineConfiguration&field=sg_uploaded_config&id=1&version=1182 from https://xxxxx.shotgunstudio.com. Error: Failed to download from 'https://xxxxx.shotgunstudio.com' after 5 retries. See error log for details.. Cannot continue. -``` - -## 为什么会发生这种情况 - -在 Windows 上,{% include product %} Desktop 将数据存储在 `%APPDATA%` 文件夹(通常为 `C:\Users\jane\AppData\Roaming\Shotgun`)。当使用标准 default2 Toolkit 配置时,只要您的用户名不是超长,就应该没问题。但是,如果要创建自己的应用、插件或框架,则可能会有更大的风险遇到这种情况,尤其是当您将依存项与代码捆绑在一起(像我们一样),并且您的包中有很深的目录树时。 - -## 解决该问题 - -解决该问题的方法通常是,将 `$SHOTGUN_HOME` 环境变量设置为非常短的值,如 `C:\SG`。这会告知 SG Desktop 将其数据存储在 `C:\SG` 而不是 `C:\Users\jane\AppData\Roaming\Shotgun` 中,这样可以节省一些字符,通常足以使您保持在限制之内。您可以[在此处阅读有关环境变量的信息](http://developer.shotgunsoftware.com/tk-core/initializing.html?#environment-variables)。 - -### 未来的可能性? - -在 Windows 10 的最新版本中,还有另一种方法*可以*缓解此问题,即[如此处所述](https://docs.microsoft.com/zh-cn/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later)更新注册表,但我认为还需要 SG Desktop 更新其清单文件,以表明它要利用 `longPathAware` 设置。我是 Mac 用户,因此我不确定我说的是否有用。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/errors-due-to-windows-paths-too-long-256-characters/10101)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md b/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md deleted file mode 100644 index dcf4b1803..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/performance-troubleshooting.md +++ /dev/null @@ -1,226 +0,0 @@ ---- -layout: default -title: 性能疑难解答 -pagename: performance-troubleshooting -lang: zh_CN ---- - -# 性能疑难解答 - -您可能会遇到 Toolkit 使用速度变慢的情况。遇到这种情况的原因有很多,从客户端基础设施问题(例如服务器速度或 Internet 连接),到基于配置的问题(Toolkit 或 {% include product %} 没有以高性能的方式配置),再到可用于进一步优化的代码领域。 - -以下是所要检查事项的快速列表,下面我们将详细介绍这些内容: - -- 确保您的应用、插件、框架、核心和 {% include product %} Desktop 都是[最新的](#keeping-up-to-date)。 -- 确保在常规使用期间没有启用[调试日志记录](./turn-debug-logging-on.md)。 -- 仅[创建所需的文件夹](#folder-creation-is-slow)并限制文件夹,以便仅在确实需要这些文件夹时才创建它们。在数据结构中添加太多文件夹会降低速度。 -- 将用户缓存存储在服务器上可能会很慢。通过将 [`{% include product %}_HOME` 环境变量](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables)设置为指向本地驱动器上的位置,来重定向用户的 {% include product %} 缓存。 -- [配置 Workfiles 和加载器应用](#file-open-file-save-or-the-loader-app-is-slow)以过滤出艺术家不需要的内容。考虑按状态进行过滤,这有助于保持实体列表简短且与美工人员的当前任务相关。 -- 检查您是否有任何自定义挂钩,并且它们不会增加额外开销。 - -下面列出了一些良好做法和常见的性能下降场景。这不是一个详尽的列表,当我们看到新的模式时,可以尝试将它添加到列表中。如果本手册不能帮助您找到您所面临问题的根源,请随时提交[支持工单](https://knowledge.autodesk.com/zh-hans/contact-support),我们的团队将很乐意进一步帮助您。 - -目录: -- [常规良好做法](#general-good-practice) - - [缓存位置](#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) -- [“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) - -## 常规良好做法 - -### 缓存位置 - -{% include product %} Toolkit [将数据缓存到用户的主目录](../administering/where-is-my-cache.md)。此缓存可以包括许多不同的 SQLite 数据库以及缓存的应用和配置。通常,用户的主目录存储在计算机的本地硬盘驱动器上,但是工作室将它们重定向到网络存储是相当常见的。这样做会影响性能,尤其是 SQLite 数据库,这些数据库用于浏览器集成和文件夹创建/查找等。 - -如果您的用户目录存储在服务器位置,我们建议使用 [`{% include product %}_HOME` 环境变量](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables)重新指定 {% include product %} Toolkit 缓存的路径。`{% include product %}_HOME` 环境变量用于设置 Toolkit 缓存各种数据的位置,例如缓存、缩略图、用于快速查找数据和其他内容的 SQLite 数据库。 - -### 调试 - -您可以在 {% include product %} Toolkit 中启用调试日志记录,以便能够从各个进程获取更详细的输出。这在尝试诊断问题时非常有用,但是,调试设置不是设计为在日常使用期间启用的。日志记录输出的增加可能会对性能产生显著影响。 - -当遇到性能问题时,尤其是局限于特定计算机或用户的问题时,请先确认未启用[调试日志记录](./turn-debug-logging-on.md)。 - -### 保持更新 - -如果您遇到性能问题,请检查您的核心、应用、插件和框架是否最新,因为较新版本中可能已经进行了修复或优化。 - -### 集中式配置与分布式配置 - -可以采用两种不同的方法设置高级 Toolkit 配置:[集中式和分布式](https://developer.shotgridsoftware.com/tk-core/initializing.html#the-toolkit-startup)。主要区别是,集中式配置通常位于工作室的网络存储中,所有用户都可以访问这些配置,分布式配置通常存储在相关服务中,并按用户在本地缓存。 - -虽然这两种方法之间的差异超出了性能范围,但它们都会在性能方面带来一些优点和缺点。下表仅从性能角度展示了利弊。 - -| | 优点 | 缺点 | -|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **集中式配置** | - 一旦初始设置过程完成,它所需的一切内容均已下载,可供所有用户使用。 | - 集中式配置通常保存在网络存储中,因此在正常的 Toolkit 使用期间性能可能会降低。 | -| | - 未来的更新只需要在集中位置下载一次。 | - Toolkit 配置包含许多小文件,处理大量小文件的元数据操作对服务器而言可能要慢得多,也更难。此外,通过使用 Toolkit 或通过常规使用服务器进行大量读取操作可能会因为无法快速读取配置而影响 Toolkit 的性能。 | -| **分布式配置** | - 缓存的应用、插件、框架和核心采用一种可以与其他本地缓存的配置共享的方式存储。这意味着,如果不同的项目共享相同的依赖项,则这些项目的后续加载可能会更快地缓存。 | - 分布式配置需要按用户在本地缓存。通常,这包括下载配置和所有必需的应用、插件、框架和核心。 | -| | - 它们存储在用户本地硬盘驱动器上的缓存中,因此通常比服务器速度更快。这意味着,在初始缓存后,性能应该优于集中式配置。 | - 这一过程会在后台无缝进行,但是仍然需要下载这些文件的初始成本。 | -| | | - 每次更新配置以指向依赖项的新版本时,都需要缓存配置和新的依赖项。 | - -总之,如果您的存储速度较慢,但是 Internet 连接良好,那么分布式配置可能是最佳的解决方案,但是如果您的服务器存储性能很好,而 Internet 连接很差,那么集中式配置可能更合适。 - -{% include info title="注意" content="如果您对分布式配置感兴趣,但担心按计算机下载依赖项,则可以仅集中缓存,以便在所有用户之间共享。" %} - -当使用分布式配置时,用户只需在缓存中找不到相关内容时才下载它,一旦某个用户已下载它,其他用户也能够利用它。为此,您可以在每台计算机上设置 [`{% include product %}_BUNDLE_CACHE_PATH` 环境变量](https://developer.shotgridsoftware.com/tk-core/initializing.html#environment-variables)以指向共享位置。 - -## 启动软件时速度很慢 - -您可能会注意到,当启动诸如 Maya、Nuke、Houdini 或其他软件时,启动时间比不带 {% include product %} 时要长。这是正常的,它们可能比不带 {% include product %} 时稍长片刻,但有时这些时间可能会增加到难以接受的水平(通常取决于我们期望它们在一分钟内启动的软件)。这可能是诊断起来比较棘手的的领域之一,因为启动软件涉及许多过程。 - -### 诊断 - -首先要做的是弄清楚这是在什么条件下发生的。 - -1. **不带 {% include product %} 时启动速度慢吗?** - 这似乎是显而易见的,但应注意检查是否仅在带有 {% include product %} 的情况下启动软件时才发生该问题。 -2. **不管您使用哪种方法启动,速度都很慢吗?也就是说,如果您从 SG Desktop 启动或使用浏览器集成从 SG 站点启动,情况是否大致相同?** - 如果是从 {% include product %} 站点而不是从 SG Desktop 启动很慢,那么这可能是浏览器集成的问题,或者它可能意味着在磁盘上创建文件夹的问题。如果是从项目以外的上下文启动,那么很可能是在磁盘上创建了更多文件夹,所以这可能解释了所花的时间。同样值得注意的是,每次启动软件时,我们都会检查所需的文件夹是否存在。 -3. **是否在所有项目中都发生?** - 如果不是,那么它很可能特定于配置的设置方式。 -4. **是否发生在一天中的特定时刻?** - 如果是,那么这可能表明对基础设施的需求较高,例如在一天的某些时间服务器使用率较高。 -5. **是否针对使用的所有计算机/操作系统发生此情况?** - 如果特定计算机速度很慢,则可能是 Toolkit 以外的某些内容导致了问题。那么,首先想到是清除该计算机上的 Toolkit 缓存。不同的操作系统随附不同版本的软件和 Python 软件包,有时可能在特定的内部版本中出现性能问题。具体来说,我们已经看到在 Windows 上使用 Samba (SMB) 共享的性能问题。目前还没有解决此问题的方法,但是如果您正在使用它,那么最好能够意识到这一点。如果您认为该问题仅限于特定的操作系统、Python 软件包或软件版本,请联系我们的[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support),以便他们可以进一步调查。 -6. **是否针对所有用户都发生这种情况?** - 与上文类似,如果是同一台计算机上的其他用户,这个问题可能会消失。在这种情况下,首先清除用户的本地 {% include product %} 缓存。此外,请确保没有为正常的生产用途启用调试日志记录,因为这将影响性能。 -7. **启动速度慢局限于特定的应用/软件,还是所有应用/软件的启动速度都异常缓慢?** - 如果特定软件启动缓慢,这可能意味着存在配置问题。可能有必要检查一下,是否有任何自定义挂钩设置为在启动之前或之后运行,这可能会影响性能。启动时使用的常见挂钩是 [`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) 和核心挂钩 [`engine_init.py`](https://github.com/shotgunsoftware/tk-core/blob/master/hooks/engine_init.py)。有时也会出现以下情况:发布了更新版本的软件,而我们的集成启动速度突然慢很多。在这种情况下,您应该联系[支持团队](https://knowledge.autodesk.com/zh-hans/contact-support)以确认他们是否了解这一点,以及是否有任何已知的修复。请提供您使用的软件版本号(如果适用,包括修补程序/Service Pack),以及您正在运行的 TK 插件和核心的版本。 - -### 问题是在启动前还是启动后发生? - -如果上述内容没有帮助您缩小问题的范围,那么下一步就是确定在启动过程中什么地方出现了问题。当通过 Toolkit 启动软件时,通常可以将其归结为两步过程。 - -第一步执行一些初始操作,例如收集启动软件所需的信息,从上下文中自动创建文件夹,然后实际启动软件。一旦软件启动,该过程的第二步就会启动 Toolkit 集成。 - -通常,不需要查看日志,就可以看到性能问题是在该过程的第一步还是第二步: - -- 观察软件启动屏幕的启动是否需要很长时间。如果确实如此,则问题可能就在第一步。 -- 看到开始时软件相对较快地启动,但随后变得很慢(在完成初始化并出现 {% include product %} 菜单后)。如果是这样,则问题属于第二步。 - -了解这一点将在接下来的查看日志中对您有所帮助。 - -### 检查日志 - -现在,您应该知道问题是在启动过程的第一步还是第二步;这将帮助您锁定要查看的日志。日志按插件进行分解,因此,如果问题出现在启动前阶段,那么您需要查看 `tk-desktop.log` 或 `tk-{% include product %}.log`,具体取决于您是从 SG Desktop 还是 SG 站点启动。 - -接下来应该做的是启用调试日志记录。{% include info title="注意" content="如果它已经启用,如[上文所述](#debugging),这可能会导致运行缓慢,所以您还应该在没有启用它的情况下进行测试" %} -启用调试日志记录后,应清除现有日志,然后重现启动过程。然后,您可以使用日志中的时间戳来查看时间跳转出现在何处。 - -例如,以下是在文件夹创建期间发生 5 秒时间跳转的几行代码: - - 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://knowledge.autodesk.com/zh-hans/contact-support)来帮助您完成这一点。 - -### 软件启动速度慢的常见原因 - -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Internet 速度慢** | 在需要与 {% include product %} 站点连接和通信的 Toolkit 使用的几乎每个方面都会受到 Internet 速度慢的影响。在这种情况下,除了启动软件外,通常还会在其他情况下看到速度问题。但是,如果连接不稳定而不是很慢,那么在启动过程中更有可能遇到性能问题(因为在整个过程中要进行相当多的 {% include product %} 通信)。 | -| **服务器访问速度慢** | 这肯定会影响启动时间。如果使用的是[集中式配置](#centralized-configs-vs-distributed-configs)(即,您的配置存储在中央服务器上),则在读取配置文件时可能会有大量的 I/O。最重要的是,如果启动软件,则会触发在启动软件的上下文中创建文件夹。这意味着,它将检查是否创建了文件夹,如果没有,则创建文件夹。 | -| **文件夹创建** | 如上所述,文件夹创建可能是导致速度下降的常见原因。[有关详细信息,请参见下面的文件夹创建性能疑难解答。](#folder-creation-is-slow) | - -## “File Open”、“File Save”或加载器应用很慢? - -首先要做的是将问题范围缩小到相关应用速度慢的某些方面。 - -- **启动应用或浏览选项卡是否很慢?** - - 有可能是该应用当前配置为显示太多信息。可以将“我的任务”(My Tasks)选项卡和其他选项卡配置为从列表中过滤出不需要的实体。例如,您可以过滤出处于特定状态的任务,例如“暂停”(On Hold) (`hld`) 或“最终”(Final) (`fin`)。这不仅提供了性能优势,而且还让美工人员仅看到对他们来说重要的信息。可以过滤[加载器应用](https://developer.shotgridsoftware.com/zh_CN/a4c0a4f1/)和 Workfiles 应用,但是过滤时 Workfiles 目前没有特定的文档部分,不过过滤器可以作为[层次结构设置](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/#step-filtering)的一部分应用。 - - “File Open”应用的层次结构也可以配置为延迟加载[子项直到它被展开](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/#deferred-queries)。现在这是默认的配置设置,但是,如果您有较旧的配置,则可能希望过渡到使用该设置。 - - 确认未启用调试日志记录。这可能会导致大量额外的 I/O,因此会降低速度;这些应用确实包含大量的调试输出。 -- **打开、保存或创建新文件时是否很慢?** - - 检查您是否已接管场景操作或动作挂钩,并确定这些功能是否有任何可能会降低速度的自定义行为。 - - 当创建或保存文件时,Workfiles 将确保在上下文中创建所有必需的文件夹。文件夹创建可能是出现性能[问题](#folder-creation-is-slow)的常见原因。 - -## 文件夹创建速度很慢 - -文件夹创建包含许多部分,这可能会导致出现问题时进程变慢。 - -文件夹创建将: -- 同步本地缓存路径。 -- 读取配置的数据结构。 -- 生成一个路径列表,这些路径应该在特定的上下文中创建。 -- 根据本地存储的路径注册表检查路径。 -- 如果尚未注册,请尝试在 SG 站点和本地注册新路径。 -- 检查以确定文件夹是否实际存在于磁盘上,无论它们是否已注册,如果不存在,则创建文件夹。 - -简而言之,文件夹创建可能会占用可能磁盘上的大量 I/O,还需要写入本地数据库并与 SG 站点通信。 - -### 解决 I/O 使用问题 - -在处理许多小型读写操作时,您的存储可能很慢或效率很低,因此任何可用于改进基础设施的操作都将有助于加快文件夹创建操作的速度。但是,可以在 Toolkit 配置端执行一些操作,以尝试尽可能地减少负担。 - -首先要做的是将创建的文件夹限制为对该上下文以及您要在其中工作的环境非常重要的文件夹。例如,如果您正在处理 Maya 中镜头的某个任务,那么理想情况下,您只希望针对特定镜头和软件检查并创建文件夹。 - -基本上,创建允许您保存和发布工作的最低必需文件夹。 - -#### 随父文件夹一起创建 - -有一个 [`create_with_parent` 设置](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/#create-with-parent-folder),可应用于数据结构文件夹。 -将其设置为 True 会导致子文件夹随父文件夹一起创建。您应注意避免这种情况,因为将其设置为 True 会导致检查并创建大量的文件夹。 - -**示例** - -如果您有一个镜头序列/镜头文件夹层次结构,并将您的镜头文件夹设置为随其父镜头序列一起创建,那么每当创建镜头序列文件夹时,它将检查所有关联的镜头并为其创建文件夹。 - -虽然在某些情况下这可能很方便,但它会导致检查更多的文件夹,并可能同时创建更多的文件夹。在这种情况下,如果您要针对镜头的某个任务在 Workfiles 中创建新文件,则会触发创建镜头的父镜头序列文件夹,进而会创建所有子镜头文件夹,而不仅仅是您正在处理的镜头。 - -{% include info title="注意" content="工序数据结构文件夹的设置默认为 True。" %} - -#### 延迟创建 - -[`defer_creation` 设置](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/#workspaces-and-deferred-folder-creation)允许您将文件夹的创建限制为仅在特定插件运行时进行,从而进一步细化何时应创建文件夹。您甚至可以使用自定义名称,然后使用 [sgtk API](https://developer.shotgridsoftware.com/tk-core/core.html?highlight=create_#sgtk.Sgtk.create_filesystem_structure) 触发它们的创建。 - -**示例** - -您可能有一组只能在发布阶段创建的文件夹。在这种情况下,您可以将 custom 设置为 maya_publish 的延迟关键字,然后通过 API 创建使用该关键字作为插件名称的文件夹。数据结构中的文件夹可能如下所示: - - # the type of dynamic content - type: "static" - # defer creation and only create this folder when Photoshop starts - defer_creation: "publish" - -然后您将使用如下所示的脚本创建文件夹: - -```python -sgtk.create_filesystem_structure(entity["type"], entity["id"], engine="publish") -``` - -**扩展示例** - -考虑进一步延迟文件夹,如果在项目的根目录下有许多非动态文件夹,通常只需要创建一次。例如,默认配置的数据结构根目录下的[“editorial”和“reference”](https://github.com/shotgunsoftware/tk-config-default2/tree/master/core/schema/project)文件夹可能只需要在项目开始时创建一次,但默认情况下,每次创建文件夹时都将检查它们是否存在。 - -为了限制这一点,可以为它们创建 [yml 文件](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/#static-folders),您可以在其中设置一个延迟关键字,这样只有在特定插件中运行文件夹创建或传递该关键字时才会创建它们。您可以将延迟关键字设置为 `tk-shell`,然后通过 tank 命令(如 `tank folders`)运行文件夹创建。 - -这意味着,只有在通过 tank 命令运行文件夹创建时才会创建这些文件夹,这是 Toolkit 管理员在第一次设置项目时可以执行的操作。或者,您可以编写一个小型脚本,使用 custom 关键字运行文件夹创建,类似于上面的示例。 - -### 注册文件夹 - -在文件夹创建过程中,将[注册](../administering/what-is-path-cache.md)文件夹,以便将来可以使用这些路径来查找上下文。[如前所述](#folder-creation-is-slow),此过程的一部分需要与 {% include product %} 站点进行通信,该站点是存储注册表的中央位置。但是,这些注册表也在本地缓存,以便通过工具更快地进行查找。 - -#### SQLite 数据库 - -本地[缓存路径](../administering/what-is-path-cache.md)使用 SQLite 数据库来存储数据。如果数据库存储在网络存储上,那么可能会严重影响数据库的读取和写入性能。 - -#### 初始同步 - -在某些情况下,需要从头开始为一个已经注册了许多文件夹的项目生成本地缓存(例如,当新用户加入已在进行中的项目时)。这个过程可能会明显延长,但令人高兴的是,对于该项目,这种情况应该仅发生一次。 - -后续同步将仅提取本地缓存和站点注册之间的差异。如果用户不经常处理项目,并且在会话之间创建了许多文件夹,那么当所有内容都缓存时,他们可能会明显等待很长时间。 - -我们在这里看到人们采用的一种方法是,将本地缓存的一个合理最新版本传输到用户的计算机。 - -{% include info title="注意" content="只有在项目中创建了大量文件夹的情况下,才需要使用此方法。" %} - -此更新过程可以通过使用核心挂钩 cache_location.py 自动实现。该挂钩可用于设置缓存的位置,而不是更改位置,您可以使用该挂钩将 path_cache.db 文件的一个版本从中央位置复制到用户的默认位置,从而避免执行代价高昂的完全同步。 - -然后,可以通过从某人的缓存手动复制,或者使用脚本定期传输它,来定期更新集中存储的缓存路径。 - -{% include warning title="警告" content="cache_location.py 挂钩可用于设置缓存的位置,但是应该避免针对所有用户将此挂钩设置为指向单一位置,因为当一个或多个进程尝试同时编辑数据库时,这可能会导致数据库锁定。" %} \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/publish-certificate-fail-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/publish-certificate-fail-error-message.md deleted file mode 100644 index b9a023dfc..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/publish-certificate-fail-error-message.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: urlopen 错误 SSL CERTIFICATE_VERIFY_FAILED 证书验证失败(_ssl.c:726) -pagename: publish-certificate-fail-error-message -lang: zh_CN ---- - -# `[ERROR publish_creation] ` - -## 用例 - -在 Houdini 17.5 中开发数字资产工具时,我使用构建工具包应用执行一个挂钩,尝试注册已发布的文件。 - -该脚本将执行代码: - - args = { - "tk": self.parent.tank, - "context": self.parent.engine.context, - "path": esto['operator'], - "name": os.path.basename(esto['operator']), - "version_number": 6, - "published_file_type": "Library item", - } - print 'sgtk: ', sgtk.__file__ - sg_publish = sgtk.util.register_publish(**args) - -已发布的文件已在 {% include product %} 中正确注册,但显示以下错误: - -``` ---------------------------------------------------------------------------- -[ERROR publish_creation] -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 308, in register_publish - tk.shotgun.upload_thumbnail(published_file_entity_type, entity.get("id"), no_thumb) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2173, in upload_thumbnail - field_name="thumb_image", **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2263, in upload - tag_list, is_thumbnail) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 2383, in _upload_to_sg - result = self._send_form(url, params) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3806, in _send_form - resp = opener.open(url, params) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 429, in open - response = self._open(req, data) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 447, in _open - '_open', req) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 407, in _call_chain - result = func(*args) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1241, in https_open - context=self._context) - File "/opt/hfs17.5.173/python/lib/python2.7/urllib2.py", line 1198, in do_open - raise URLError(err) -URLError: -Traceback (most recent call last): - File "/home/cvizcarra/ollinDev/PIGS_kDev/config/hooks/publish_digital_asset.py", line 66, in register_publishedfile - description='Alembic nodes.') - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/log.py", line 503, in wrapper - response = func(*args, **kwargs) - File "/home/cvizcarra/ollinDev/PIGS_kDev/install/core/python/tank/util/shotgun/publish_creation.py", line 323, in register_publish - entity=entity -ShotgunPublishError: Unable to complete publishing because of the following error: , although PublishedFile PIGS_libary_tool_hda_asasas_v017.hda (id: 114715 -) was created. ---------------------------------------------------------------------------- -``` - -## 导致错误的原因是什么? - -缺少 `cacert.pem` 和指向该位置的所需环境变量 `SHOTGUN_API_CACERTS`。 - -## 如何修复 - -添加 `cacert.pem` 和指向该位置的环境变量 `SHOTGUN_API_CACERTS`。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/ssl-certificate-error-on-sgtk-util-regiter-publish/3291)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/review-submission-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/review-submission-error-message.md deleted file mode 100644 index 763d2582f..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/review-submission-error-message.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: default -title: 异常 审核提交失败。无法渲染和提交与审核关联的场。 -pagename: review-submission-error-message -lang: zh_CN ---- - -# 异常: 审核提交失败。无法渲染和提交与审核关联的场。 - -## 用例: - -Nuke 中的“Submit for publish”从未起作用。 - -**问题 1:** -向上导航继承流的最佳方式是什么?我一直导航到“HookBaseClass”,然后有点迷路了。 - -我目前的问题是,想让“Submit for review”在 Nuke 中正常运行。 - -在 Nuke 的 SG 发布 GUI 中遇到以下错误: - - - Traceback (most recent call last): - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 282, in _handle_plugin_error - - yield - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-publish2\v2.4.1\python\tk_multi_publish2\api\plugins\publish_plugin_instance.py", line 198, in run_publish - - self._hook_instance.publish(settings, item) - - File "C:\Users\STEVE\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-nuke\v0.12.5\hooks\tk-multi-publish2\basic\submit_for_review.py", line 272, in publish - - raise Exception("Review submission failed. Could not render and " - - Exception: Review submission failed. Could not render and submit the review associated sequence. - -还会出现以下异常: - -`'sg_publish_data' was not found in the item's properties. Review Submission for 'path/to/sequences/AB/AB_001/comp/work/images/AB_001_comp_v002_output/AB_001_comp_v002_output.%04d.jpg' failed. This property must be set by a publish plugin that has run before this one.` - - -因此,它在“publish_plugin_instance.py”中查找以下内容: - - - _handle_plugin_error - yield - - run_publish - self._hook_instance.publish(settings, item) - -我可以在本地 Appdata 文件夹中找到这些内容,但在主安装中没有,因此我假设我需要在“submit_for_review.py”中查找以弄清楚此问题。 - -查看此文件,我可以看到,它使用了来自继承链“HookBaseClass”更高层的项的设置和信息。 - -因此,在“submit_for_review.py”中查找“sg_publish_data”的设置位置,我看到第 225 行:`sg_publish_data = item.properties.get("sg_publish_data")` - -**问题 2** -在上游哪里设置“item.properties”?我怀疑在 nuke collector.py 中,但“sg_publish_data”不在那里,而且也是“HookBaseClass”的子项 - -## 如何修复 - -### 简短的回答: - -假设您没有添加自定义代码或对配置进行太多修改,只需确保已选中要提交以供审核的项的 `Publish to {% include product %}` - -![publish_checkbox](images/review-submission-error-message-01.jpeg) - -### 详实的回答: - -首先,[这是发布器 API 的文档](https://developer.shotgunsoftware.com/tk-multi-publish2/)。在此将介绍解决此问题所涉及的大多数概念。下面是您的具体问题的细分。希望这样做也能帮助您调试未来的问题。 - -在上面的屏幕截图中,在 `ShorgunWrite1` 项下,您会看到两个 `plugins`。它们对应于配置中定义的插件。 - -![配置](images/review-submission-error-message-02.jpeg) - -这些插件按顺序运行,并作用于内存中的同一项。要找到问题的根源,您需要查看这两个插件的代码。通过查看 `hook` 设置,可以找出这些插件所在的位置。 - -对于第一个插件,由于我们查看的是 `tk-multi-publish2` 的设置,`{self}` 是指 `tk-multi-publish2`。因此 -``` -{self}/publish_file.py -``` -可以在 tk-multi-publish2 应用文件夹下找到: - -![publish_file_hook](images/review-submission-error-message-03.jpeg) - -应用在文件系统中的位置取决于 `app_locations.yml` 的配置方式,但如果您未在其中更改任何内容,则可以在缓存文件夹中找到该应用。[下面介绍了如何查找缓存位置](https://developer.shotgunsoftware.com/zh_CN/7c9867c0/)(如果需要)。 - -对于第二个插件,挂钩路径为 -``` -{engine}/tk-multi-publish2/basic/submit_for_review.py -``` -当在 Nuke 中时,我们要运行 `tk-nuke` 插件,因此要查找此发布挂钩,我们需要在 `tk-nuke` 下查找,它也应该位于您的缓存中。 - -![nuke_config](images/review-submission-error-message-04.jpeg) - -现在,您知道在何处查找代码,您可以看到[第一个插件设置了预期存在于第二个插件中的值](https://github.com/shotgunsoftware/tk-multi-publish2/blob/a83e35dbf1a85eac7c3abd7e7f5509a42a8b8cf1/hooks/publish_file.py#L425)。 - -组合这两个插件的思路是,您要提交一些已经发布(并且不会更改)的内容以供审核。因此,工作流是先发布源文件,然后从源文件创建 SG 版本以供审核。版本也链接到发布。第一个插件执行文件发布并将信息存储在项中,以供第二个发布使用。 - -您提到了继承性,因此我也想澄清一下。我认为您在文档中遇到的是由配置驱动的挂钩继承性,而不是像您所认为的那样由 Python 继承性驱动的。 - -在 Python 文件中,您会看到所有挂钩都继承自 `HookBaseClass`。但是,配置中的挂钩机制允许您实际将这些基础挂钩视为混合,并将它们组合在一起,以在重用代码时获得所需的所有功能。您可以在 `tk-multi-publish2` 配置中看到此示例: - -``` -settings.tk-multi-publish2.nuke.shot_step: - collector: "{self}/collector.py:{engine}/tk-multi-publish2/basic/collector.py" -``` - -此处定义的收集器在任何 Python 文件中都不存在。它实际上是 `tk-multi-publish2` 的 `collector.py` 和 `tk-nuke` 的 `collector.py` 的组合。 - -如果快速修复对您而言不够,并且您需要修改这些挂钩,请查看[自定义发布工作流视频](https://developer.shotgridsoftware.com/zh_CN/869a6fab/#shotgrid-toolkit-webinar-videos)。这是一个良好的开端。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/nuke-submit-for-review-py/10026)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/row-id-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/row-id-error-message.md deleted file mode 100644 index 5dc6903e9..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/row-id-error-message.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: 无法解析路径的行 ID! -pagename: row-id-error-message -lang: zh_CN ---- - -# 无法解析路径的行 ID! - -## 相关的错误消息: - -- 无法解析路径的行 ID! -- 数据库并发问题: 路径 `` 已与 {% include product %} 实体 `` 关联。 - -## 示例: - -当 Toolkit 用户创建文件夹时收到错误“无法解析路径的行 ID!”。 - -奇怪的是,这会创建 FileSystemLocation 实体,但有时会导致重复项,这可能会导致一系列问题。 - -完整的错误如下所示: - -``` -Creating folders, stand by... - -ERROR: Could not resolve row id for path! Please contact support! trying to -resolve path '\\server\nas_production\CLICK\00_CG\scenes\Animation\01\001'. -Source data set: [{'path_cache_row_id': 8711, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001', -'metadata': {'type': '{% include product %}_entity', 'name': 'sg_scenenum', 'filters': -[{'path': 'sg_sequence', 'values': ['$sequence'], 'relation': 'is'}], -'entity_type': 'Shot'}, 'primary': True, 'entity': {'type': 'Shot', 'id': -1571, 'name': '001_01_001'}}, {'path_cache_row_id': 8712, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Fx', -'metadata': {'type': '{% include product %}_step', 'name': 'short_name'}, 'primary': True, -'entity': {'type': 'Step', 'id': 6, 'name': 'FX'}}, {'path_cache_row_id': -8713, 'path': -'\\\\server\\NAS_Production\\CLICK\\00_CG\\scenes\\Animation\\01\\001\\Comp', -``` -_注意:它的运行时间可能比这长得多。_ - -## 导致错误的原因是什么? - -此错误指出,工作流配置中的 {% include product %}(“站点偏好设置 -> 文件管理”(Site Preferences -> File Management))和 c`onfig/core/roots.yml` 中指定的存储根之间不匹配。 - -这通常是由于运行 Windows 的工作室中的大小写不匹配而导致的。它们的路径不区分大小写,但我们的配置区分大小写。像 `E:\Projects` 与 `E:\projects` 这样简单的差异都可能会导致此错误。 - -## 在后台发生了什么? - -代码在 {% include product %} 中为刚创建的路径创建了 FilesystemLocation 实体,使用 {% include product %} 的存储根来确定路径的根。然后,它在本地缓存中创建相同的条目,并且必须确定将其放置在数据库中的哪个位置。对于本地缓存,它使用 `roots.yml` 确定路径的根,并且由于大小写不匹配,它生成的路径与刚在 {% include product %} 中输入的路径不匹配。此时,它将引发错误。 - -这尤其糟糕,因为错误不清晰:创建了文件夹,创建了 FilesystemLocation 条目,它们没有在本地缓存路径中同步,由于存储根不匹配,它们也无法同步。 - -## 如何修复 - -首先,确保“站点偏好设置”(Site Preferences)中的存储根路径与 `config/core/roots.yml` 中的路径相匹配。要修复不匹配问题,就应该在后续的文件夹创建调用中消除错误。 - -然后,清除错误的 FilesystemLocation 实体。如果可以缩小到一组错误的 FilesystemLocation 实体,只需移除这些实体即可。但是,在许多情况下,项目的所有路径都会受到影响,因此它们都需要处理。 - -- 如何清除 FilesystemLocation 实体:理想情况下,您可以运行 `tank unregister_folders`。要清除所有这些,请运行 tank `unregister_folders --all`。(对于 `tank unregister_folders` 的所有选项,只需运行它而不使用任何参数,它将输出用法说明。) -- 但是,由于数据库已处于不稳定状态,因此这可能不起作用,或者可能仅部分起作用。运行该命令后,返回到 {% include product %} 中的 FilesystemLocations,确认您预期删除的内容已消失。如果没有,请选择坏实体,然后手动将其移动到垃圾桶。 - -此时,{% include product %} 中的 FilesystemLocations 是干净的,但艺术家的本地缓存可能不反映您所做的更改。最后一步是实际同步每个用户计算机上的本地缓存。为此,应运行 tank `synchronize_folders --full`。 - -执行所有这些步骤后,缓存路径应处于良好状态,并且不再显示错误。 - -## 相关链接 - -- [下面是相关代码](https://github.com/shotgunsoftware/tk-core/blob/01bb9547cec19cc2a959858b09a8b349a388b56f/python/tank/path_cache.py#L491-L498) -- [什么是缓存路径?什么是文件系统位置?](https://developer.shotgridsoftware.com/zh_CN/cbbf99a4/) - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/how-to-troubleshoot-folder-creation-errors/3578)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md b/docs/zh_CN/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md deleted file mode 100644 index a441be100..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/sslhandshakeerror-ssl-certificate-verify-failed.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: SSLHandshakeError CERTIFICATE_VERIFY_FAILED 证书验证失败 -pagename: sslhandshakeerror-ssl-certificate-verify-failed -lang: zh_CN ---- - -# SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 - -## 用例 - -在使用防火墙进行本地数据包检测的本地网络上,您可能会收到以下错误消息: - -``` -SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -``` - -这是因为这些防火墙通常配置有网络管理员自行创建且 Python 无权访问的自签名证书。遗憾的是,与其他应用程序不同,Python 并不总是在操作系统的密钥链中查找证书,因此您必须自己提供。 - -## 如何修复 - -您需要设置 `SHOTGUN_API_CACERTS` 环境变量以指向磁盘上的文件,该文件包含 Python API 和 Shotgun Desktop 可以信任的证书颁发机构的完整列表。 - -您可以从 Github 上最新的 `certifi` 软件包副本下载此类[副本](https://raw.githubusercontent.com/certifi/python-certifi/master/certifi/cacert.pem)。完成此操作后,需要在该文件的底部添加公司防火墙的公共密钥并保存。 - -完成后,只需将 `SHOTGUN_API_CACERTS` 环境变量设置为路径位置,例如 `/opt/certs/cacert.pem`,然后启动 Shotgun Desktop。 - - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/using-shotgun-desktop-behind-an-firewall-with-ssl-introspection/11434) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/storage-root-primary-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/storage-root-primary-error-message.md deleted file mode 100644 index 648a8d404..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/storage-root-primary-error-message.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: 警告 存储根主存储无法映射到 SG 本地存储 -pagename: review-error-message-root -lang: zh_CN ---- - -# 警告: 存储根主存储无法映射到 SG 本地存储 - -## 用例 - -尝试使用“驱动器文件”流设置项目并将 Google Drive 用作主存储时,项目向导在访问存储配置时在控制台中发出警告: - -`[WARNING] Storage root primary could not be mapped to a SG local storage` - -按**“继续”**不起作用。 - -## 如何修复 - -如果存储名称中存在拼写错误,则可能会导致此问题。确保它与 Google Drive 的名称完全匹配。 - -此外,使用 Google Drive 时,请确保将其设置为始终将文件保留在本地,以避免出现重复的项目。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/11185) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md b/docs/zh_CN/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md deleted file mode 100644 index f92987873..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/tankerror-cannot-resolve-template-data-error.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 无法解析上下文的模板数据 -pagename: tankerror-cannot-resolve-template-data-error -lang: zh_CN ---- - -# TankError: 无法解析上下文的模板数据 - -## 用例 - -对新项目执行高级项目设置,并使用 {% include product %} Desktop 中的单机版发布器应用为我创建的新资产任务发布某些图像时,在选择上下文以验证发布后,出现以下错误: - - -``` -creation for %s and try again!" % (self, self.shotgun_url)) -TankError: Cannot resolve template data for context ‘concept, Asset door-01’ - this context does not have any associated folders created on disk yet and therefore no template data can be extracted. Please run the folder creation for and try again! -``` - -在终端中运行 `tank.bat Asset door-01 folders` 可解决此问题。但是,以前的任何项目中都从未出现过这种情况。 - -## 如何修复 - -这可能是因为这是第一次尝试在不先通过 DCC 的情况下为新实体/任务执行单机发布。 - -之前可能没有发生这种情况的原因是,您在使用单机版发布器之前已在软件中开始处理资产,因此文件夹已创建/同步。启动软件(通过 Toolkit)将为启动的上下文创建文件夹,打开的应用将为启动新文件的上下文创建文件夹。因此,通常不需要专门创建文件夹。 - -通常的做法是,工作室一般会在镜头/资产添加到 {% include product %} 中后手动创建文件夹。 - -另请记住,这受“文件夹数据结构”的影响,如果它与模板不完全匹配,则可能会导致奇怪的问题。 - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/tank-folder-creation/8674/5) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md b/docs/zh_CN/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md deleted file mode 100644 index b3454590e..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/tankerror-tried-to-resolve-a-path.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: TankError 尝试从模板解析路径 -pagename: tank-error-tried-to-resolve-a-path -lang: zh_CN ---- - -# TankError: 尝试从模板解析路径 - -## 用例 1 - -当为 SGTK 设置新配置时,尝试通过“文件打开”(File Open)对话框(在 tk-multi-workfiles2 中)创建新文件时,会出现以下错误: - -``` -TankError: Tried to resolve a path from the template > -# ('animal', 'dog') -# ('age', '3') -# ('args', ('needs a bath',)) -``` - -如果您在 Maya 中,则会执行如下操作: - -```python -import sgtk - -# get the engine we are currently running in. -engine = sgtk.platform.current_engine() -# Run the app. -engine.commands['print_animal']['callback']("unicorn",4,"it's soooo fluffy!!!!") - ->> -# ('animal', 'unicorn') -# ('age', 4) -# ('args', ("it's soooo fluffy!!!!",)) -``` - -## 错误消息 - -如果您尝试从 Maya 中的菜单启动应用,则会收到如下错误: - -``` -// Error: Shotgun tk-maya: An exception was raised from Toolkit -Traceback (most recent call last): - File "/Users/philips1/Library/Caches/Shotgun/bundle_cache/app_store/tk-maya/v0.10.1/python/tk_maya/menu_generation.py", line 234, in _execute_within_exception_trap - self.callback() - File "/Users/philips1/Library/Caches/Shotgun/mysite/p89c1.basic.maya/cfg/install/core/python/tank/platform/engine.py", line 1082, in callback_wrapper - return callback(*args, **kwargs) -TypeError: run_method() takes at least 3 arguments (1 given) // -``` - -这是因为应用设置为需要参数,而菜单按钮不知道提供它们。 - -## 如何修复 - -建议编写应用的 `run_method`,以使用如下关键字参数: - -```python - def run_method(self, animal=None, age=None, *args): - print ("",animal) - print ("age",age) - print ("args", args) -``` -然后,您可以处理未提供参数时发生的情况,并实现回退行为。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/custom-app-args/8893)。 - 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 deleted file mode 100644 index b2014c1e3..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/turn-debug-logging-on.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: default -title: 如何启用调试日志记录? -pagename: turn-debug-logging-on -lang: zh_CN ---- - -# 如何启用调试日志记录? - -有时,您想要查看比 Toolkit 工具默认输出更多的日志记录数据。您可以启用**调试日志记录**以获取更详细的日志输出,且有多种方法可以执行此操作。 - -{% include info title="注意" content="不确定在何处查找日志文件?请参见[我的日志文件位于何处?](./where-are-my-log-files.md)文档。" %} - -## 通过 {% include product %} Desktop 启用调试 - -启用调试最简单的方法是,通过 {% include product %} Desktop 应用进行启用。登录 {% include product %} Desktop 后便可进行相关设置:单击应用右下方的个人资料图片,然后选择**“高级 -> 切换调试日志记录”(Advanced -> Toggle Debug Logging)**。此设置在会话之间持久有效,因此请在完成后将其禁用。 - -![在 SG Desktop 中切换调试日志记录](images/desktop-enable-debug-logging.png) - -此外还应注意,启用此项后,从 {% include product %} Desktop 启动的应用,甚至整个浏览器集成中的 Toolkit 命令,也将继承此调试状态。 - -## 设置环境变量 - -### 永久启用调试日志记录 - -`TK_DEBUG=1`首先,您需要设置新的环境变量: - -{% include info title="注意" content="我们建议您与工作室的技术专家讨论如何设置环境变量,因为具体说明特定于平台。但是,以下示例介绍了在 Windows 7 计算机上设置环境变量。" %} - -#### Windows 7 使用示例 - -- 您可以永久启用调试日志记录,方法是导航到 **Windows 图标 >“控制面板 > 系统 > 高级系统设置 > 环境变量… > 新建…”** - -![设置 Windows 环境变量](images/windows-setting-environment-variable.png) - - -- **变量名称**:`TK_DEBUG` -- **变量值**:`1` -- 选择“确定”。 - -现在,环境变量已设置正确并且已启用调试日志记录。 - -{% include info title="注意" content="务必重新启动 Desktop 以使日志记录生效。" %} - -如果要禁用调试日志记录,您可以: - -a. 将 `TK_DEBUG` 环境变量值设置为 0。 - -b. 删除 `TK_DEBUG` 环境变量。 - -### 检查是否已设置此环境变量 - -要查看是否已设置此环境变量,请打开终端并执行以下命令:`set` - -然后,搜索 `TK_DEBUG=1`。 - -这可确保启动 Desktop 后系统将启用调试日志记录。 - -### 临时启用调试日志记录 - -如果您希望临时使用一会儿调试日志记录,可以打开终端并使用以下命令来设置调试日志记录:`set TK_DEBUG=1` - -然后,通过您的终端启动 Desktop。 - -{% include info title="注意" content="关闭 ShotGrid Desktop 和终端后,调试日志记录将不再启用。" %} - - - -## 高级配置调试日志记录选项 - -如果您使用高级设置,还有其他几个选项可供您使用。仅当您能够控制 Toolkit 配置时,此功能才可用。 - -每个插件在环境文件中都有一项 `debug_logging` 设置。启用此项时,会将其他调试级日志消息发送至软件中的默认输出(例如,Nuke 或 Maya 中的脚本编辑器)。 在插件中运行的所有应用都会发出这些调试级消息,因此,为插件启用此设置实际上也是为所有应用启用它。 - -这不会将任何日志消息输出到文件。为了可以将日志消息输出到文件,我们正在致力于开发一个更标准的日志记录框架。例外情况是 [{% include product %} Desktop](https://developer.shotgridsoftware.com/zh_CN/d587be80/#getting-started-with-desktop) 和 [Photoshop 插件](https://developer.shotgridsoftware.com/zh_CN/8d461cbe/),它们会将输出同时记录到 GUI 控制台和文件。 - -### 为软件中的插件启用调试日志记录 - -例如,要在镜头工序环境下为 Nuke 插件启用调试输出,请在您的环境文件中找到 Nuke 插件 (`tk-nuke`) 部分并将此设置更新为 `debug_logging: true`。 - -编辑 `config/env/shot_step.yml`。 - -```yaml -engines: - ... - ... - tk-nuke: - apps: - ... - ... - compatibility_dialog_min_version: 9 - debug_logging: true - favourite_directories: [] - location: {name: tk-nuke, type: app_store, version: v0.2.23} - ... - ... -``` - -保存文件并在镜头工序环境下重新启动 Nuke。现在,您可以在脚本编辑器窗口中看到调试输出。 - -{% include info title="注意" content="如果通过 ShotGrid Desktop 复选框、环境变量或插件配置设置中的任意一个启用调试日志记录,则将输出调试日志记录。此外,这三项中的每一项均独立于其他项进行修改:复选框值是持久有效的应用设置,完全独立于插件设置或环境变量。这意味着,尽管 Desktop 复选框可能处于取消选中状态,但调试日志记录可能仍会通过其他方法之一进行启用。" %} - -### 为 tank 命令启用调试日志记录 - -如果您正在运行 tank 命令并且希望在终端中看到调试输出,请将 `--debug` 选项与您正在运行的命令结合使用,这将为该命令启用调试日志记录。 - - ./tank --debug core - DEBUG [10:11:38 617.835998535]: - DEBUG [10:11:38 618.768930435]: Running with debug output enabled. - DEBUG [10:11:38 618.921995163]: - DEBUG [10:11:38 619.092941284]: Core API resides inside a (localized) pipeline - configuration. - DEBUG [10:11:38 619.235992432]: Full command line passed: - ['/sgtk/software/shotgun/scarlet/install/core/scripts/tank_cmd.py', - '/sgtk/software/shotgun/scarlet', '--debug', 'core'] - DEBUG [10:11:38 619.364023209]: - DEBUG [10:11:38 619.463920593]: - DEBUG [10:11:38 619.575977325]: Code install root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.678020477]: Pipeline Config Root: - /sgtk/software/shotgun/scarlet - DEBUG [10:11:38 619.756937027]: - DEBUG [10:11:38 619.826078415]: - DEBUG [10:11:38 619.905948639]: - DEBUG [10:11:38 619.978904724]: Context items: - ['/sgtk/software/shotgun/scarlet'] - DEBUG [10:11:38 620.06688118]: Command: core - DEBUG [10:11:38 620.129108429]: Command Arguments: [] - DEBUG [10:11:38 620.193004608]: Sgtk Pipeline Config Location: - /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' - - The path is not associated with any Shotgun object. - - Falling back on default project settings. - DEBUG [10:11:39 125.463962555]: Sgtk API and Context resolve complete. - DEBUG [10:11:39 126.449108124]: Sgtk API: Sgtk Core v0.15.18, config - /sgtk/software/shotgun/scarlet - DEBUG [10:11:39 126.588106155]: Context: scarlet - - Using configuration 'Primary' and Core v0.15.18 - - Setting the Context to scarlet. - 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/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md b/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md deleted file mode 100644 index 5f6f1e418..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/two-photoshop-shotgun-extensions.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: 安装两种扩展时的 Photoshop 集成疑难解答 -pagename: two-photoshop-shotgun-extensions -lang: zh_CN ---- - -# 安装两种扩展时的 Photoshop 集成疑难解答 - -## 问题是什么? - -在发布的 After Effects 集成中,包含一个与 {% include product %} 集成的所有 Adobe 应用都可使用的通用插件。作为此更改的一部分,我们需要重命名扩展,以便可以保留与较早的 Photoshop 集成的向后兼容性,并使工作室能够顺利过渡到更新。 - -不幸的是,这也意味着升级的同时可能安装两种 {% include product %} 扩展: - -![Photoshop 菜单中显示的多个 {% include product %} 扩展](./images/photoshop-extension-panel.png) - -**{% include product %} Adobe Panel** 为新扩展,应该在使用 `v1.7.0` 或更新版本的 Photoshop 集成时使用。 - -## 如何解决? - -要删除旧扩展,可将其从您的主目录中的 Adobe 安装位置移除。启动 Photoshop 后,此扩展对应的文件夹可在调试输出中看到,位于 - -- OSX:`~/Library/Application Support/Adobe/CEP/extensions/com.sg.basic.ps` -- Windows:`%AppData%\Adobe\CEP\extensions\com.sg.basic.ps` - -![Photoshop 菜单中显示的多个 {% include product %} 扩展](./images/shotgun-desktop-console-photoshop-extension.png) - -如果退出 Photoshop 并移除该目录,则重新启动时应只有一个扩展。 - -{% include info title="注意" content="如果在多个环境或多个配置中具有 Photoshop 集成,并且新旧插件混合存在,则用户启动包含旧集成的 Photoshop 时,将返回旧插件。建议全面更新 Photoshop,以便只需执行一次清理。" %} \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md b/docs/zh_CN/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md deleted file mode 100644 index 4fe439245..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/unable-to-get-local-issuer-certificate-error.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: 无法获取本地颁发机构证书 -pagename: unable-to-get-local-issuer-certificate-error -lang: zh_CN ---- - -# [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败: 无法获取本地颁发机构证书 - -## 用例 - -在 Windows 上,用户在使用 Python API 从 Amazon 上传和下载媒体时遇到问题。Python API 引发以下错误消息,说明了此问题: - -``` -shotgun_api3.shotgun.ShotgunFileDownloadError: Failed to open https://xxx.shotgunstudio.com/file_serve/attachment/xyz - -``` -Amazon 在其后端更新了一些证书。浏览需要新证书的网页时,Windows 通常会刷新其证书存储。在未看到常规浏览活动的计算机上运行的独立 Python 脚本将不检索证书更新,这可能导致该计算机缺少相当多的证书更新。 - -## 如何修复 - -如果您对有问题的计算机具有 GUI 访问权限,只需播放当前存储在 S3 上的任何媒体,即可更新证书存储。此播放解决方案仅适用于 Chrome、Internet Explorer、Edge 或其他基于 Chromium 的浏览器。此播放解决方案在 Firefox 或 Safari 上不起作用,因为这些浏览器不使用 Windows 标准 API 进行证书验证。 - -对于此解决方案不起作用的用户,或者如果您有大量要更新的计算机(如 Deadline 渲染农场),我们还提供了一个脚本,该脚本会将缺失的证书添加到您的计算机中。[下面是我们共享的脚本的链接](https://developer.shotgunsoftware.com/zh_CN/c593f0aa/)。 - -对于 Windows 10 上的 PowerShell 或 Windows 7 上的 PowerShell 3 用户,您可以在计算机上以管理员身份运行以下脚本以获取新证书。 - -![Powershell](images/troubleshoot_powershell.png) - -``` -$cert_url = "https://www.amazontrust.com/repository/AmazonRootCA1.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 -``` - -如果该命令起作用,您应该会看到以下内容: - -``` - PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root - -Thumbprint Subject ----------- ------- -8DA7F965EC5EFC37910F1C6E59FDC1CC6A6EDE16 CN=Amazon Root CA 1, O=Amazon, C=US -``` - -这将使证书可用于运行该证书的计算机上的所有用户帐户。如果您没有管理员访问权限,可以使用以下命令更改最后一行: - -``` -Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\CurrentUser\Root -``` - -将仅为当前用户添加证书。 - -如果您是像我一样的老派人士,仍然痴迷于使用 `cmd.exe`,也可以使用 `certutil`。首先,您需要从 `https://www.amazontrust.com/repository/AmazonRootCA1.cer` 下载证书,并将其保存到计算机上的某个位置。 - -然后,在管理模式下启动命令提示符: - -![管理模式](images/troubleshoot_admin_mode.png) - -并执行以下行: - -``` -certutil -addstore root -``` - -这将使证书适用于所有用户帐户。如果您没有管理员访问权限,可以添加 `-user` 以像这样仅为当前用户安装证书 - -``` -certutil -user -addstore root -``` - -## 相关链接 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/certificate-verify-failed-error-on-windows/8860) \ No newline at end of file diff --git a/docs/zh_CN/quick-answers/troubleshooting/unreal-proxy-error-message.md b/docs/zh_CN/quick-answers/troubleshooting/unreal-proxy-error-message.md deleted file mode 100644 index abf6e732c..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/unreal-proxy-error-message.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: 调用 __commands::unreal_engine 时出错 -pagename: unreal-proxy-error-message -lang: zh_CN ---- - -# `[ERROR] [PROXY]` 调用 __commands::unreal_engine 时出错] - -## 用例: - -现在,设置 {% include product %} 桌面应用并能够使 UE4 在 {% include product %} 应用中显示后,当我尝试启动 Unreal 时,收到以下消息: - -``` -2020-06-06 03:22:24,246 [ ERROR] [PROXY] Error calling __commands::unreal_engine_4.24.3((), {}): -Traceback (most recent call last): -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-desktop\v2.4.12\python\tk_desktop\desktop_engine_project_implementation.py”, line 164, in _trigger_callback -callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\babilgames\p91c38.basic.desktop\cfg\install\core\python\tank\platform\engine.py”, line 1084, in callback_wrapper -return callback(*args, **kwargs) -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 125, in launch_version -*args, **kwargs -File “C:\Users\USER0\AppData\Roaming\Shotgun\bundle_cache\app_store\tk-multi-launchapp\v0.10.2\python\tk_multi_launchapp\base_launcher.py”, line 343, in _launch_callback -“Could not create folders on disk. Error reported: %s” % err -TankError: Could not create folders on disk. Error reported: Could not resolve row id for path! Please contact support! trying to resolve path ‘D:\UEProjects\SON\D:\UEProjects\SON’. Source data set: [{‘path_cache_row_id’: 2, ‘path’: ‘D:\UEProjects\SON’, ‘metadata’: {‘root_name’: ‘primary’, ‘type’: ‘project’}, ‘primary’: True, ‘entity’: {‘type’: ‘Project’, ‘id’: 91, ‘name’: ‘SON’}}] - -``` - -## 导致错误的原因是什么? - -磁盘上 UE4 项目的路径 `D:\UEProjects\PROJECT_NAME\` 不正确。 - -## 如何修复 - -为 {% include product %} 的设置创建新文件夹可解决该问题。 - -[在社区中查看完整主题](https://community.shotgridsoftware.com/t/error-launching-ue4-from-shotgun/8938)。 - diff --git a/docs/zh_CN/quick-answers/troubleshooting/where-are-my-log-files.md b/docs/zh_CN/quick-answers/troubleshooting/where-are-my-log-files.md deleted file mode 100644 index aaff32e49..000000000 --- a/docs/zh_CN/quick-answers/troubleshooting/where-are-my-log-files.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: 我的日志文件位于何处? -pagename: where-are-my-log-files -lang: zh_CN ---- - -# 我的日志文件位于何处? - -默认情况下,{% include product %} Desktop 和 ShotGrid 集成将其日志文件存储在以下目录中: - -**Mac** - -`~/Library/Logs/Shotgun/` - -**Windows** - -`%APPDATA%\Shotgun\logs\` - -**Linux** - -`~/.shotgun/logs/` - -日志文件名采用 `tk-.log` 格式。示例包括 `tk-desktop.log` 或 `tk-maya.log`。 - -如果您已将 [`{% include product %}_HOME` 环境变量](http://developer.shotgridsoftware.com/tk-core/utils.html#localfilestoragemanager)设置为覆盖用户的缓存位置,那么日志文件将位于:`$SHOTGUN_HOME/logs`。 - -{% include info title="注意" content="您还可以从 ShotGrid Desktop 访问此目录。选择一个项目,单击项目名称右侧的向下箭头按钮,然后选择**Open Log Folder**。"%} diff --git a/docs/zh_CN/quick-answers/workflow.md b/docs/zh_CN/quick-answers/workflow.md deleted file mode 100644 index 6dc9ae6b2..000000000 --- a/docs/zh_CN/quick-answers/workflow.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: 工作流 -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 deleted file mode 100644 index aeb976dae..000000000 --- a/docs/zh_CN/quick-answers/workflow/version-publishedfile-difference.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: 版本与已发布的文件之间有何差异? -pagename: version-publishedfile-difference -lang: zh_CN ---- - -# 版本与已发布的文件之间有何差异? - -**“发布”** 表示可在应用程序内部使用的磁盘上的文件(或图像序列)或数据。它可以是 exr 序列、abc、Maya 文件等。发布由 ShotGrid 中的 `PublishedFile` 实体表示。 - -**“版本”**(ShotGrid 中的 `Version` 实体)是发布的直观表示,用于审核和记录。`Version` 实体有一个名为“已发布的文件”(Published Files)的字段,您可在此字段中填充任意数量的发布记录以将其连接在一起。这是您可以跟踪哪个审核 `Version` 与一组发布相关联的方法。我们建议您在发布时填充此关系。版本由 ShotGrid 中的 `Version` 实体表示。 - -最终想法是:在发布时,您可以生成一组文件 - 有时是不同的文件格式但包含相同的内容(Maya 文件、obj、alembic 等)- 这些文件以不同方式表示相同的内容。之后,它们与单一审核 `Version` 关联起来,以便预览发布数据并进行记录。 - -当发布的数据是图像序列时,这种想法就有点多余了。实际上,图像序列既是您想要审核的内容,又是要沿管道发送的内容。在这种情况下,您可能需要“双管齐下”,同时创建发布和 `Version`。这样,您可以加载表示 `Version` 的已发布数据(例如,通过加载器应用)。 - diff --git a/docs/zh_CN/reference/api/images/dv-api-permissions-ApiPermGroup-02.png b/docs/zh_CN/reference/api/images/dv-api-permissions-ApiPermGroup-02.png deleted file mode 100644 index c23f3b37d..000000000 Binary files a/docs/zh_CN/reference/api/images/dv-api-permissions-ApiPermGroup-02.png and /dev/null differ diff --git a/docs/zh_CN/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png b/docs/zh_CN/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png deleted file mode 100644 index 6166caf3d..000000000 Binary files a/docs/zh_CN/reference/api/images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png and /dev/null differ diff --git a/docs/zh_CN/reference/api/images/dv-developers-api-01-scripts-01.png b/docs/zh_CN/reference/api/images/dv-developers-api-01-scripts-01.png deleted file mode 100644 index 5c31e1bae..000000000 Binary files a/docs/zh_CN/reference/api/images/dv-developers-api-01-scripts-01.png and /dev/null differ diff --git a/docs/zh_CN/reference/api/images/dv-manage-scripts-application-key-02.png b/docs/zh_CN/reference/api/images/dv-manage-scripts-application-key-02.png deleted file mode 100644 index 66f4f139c..000000000 Binary files a/docs/zh_CN/reference/api/images/dv-manage-scripts-application-key-02.png and /dev/null differ diff --git a/docs/zh_CN/reference/api/images/dv-manage-scripts-script-01.png b/docs/zh_CN/reference/api/images/dv-manage-scripts-script-01.png deleted file mode 100644 index 5eebccda6..000000000 Binary files a/docs/zh_CN/reference/api/images/dv-manage-scripts-script-01.png and /dev/null differ diff --git a/docs/zh_CN/reference/api/python-api-best-practices.md b/docs/zh_CN/reference/api/python-api-best-practices.md deleted file mode 100644 index e8028042d..000000000 --- a/docs/zh_CN/reference/api/python-api-best-practices.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: default -title: Python API 最佳实践 -pagename: python-api-best-practices -lang: zh_CN ---- - -# Python API 最佳实践 - - -下面是使用 {% include product %} Python API 时的最佳实践列表。 - -## 性能 - -1. 不要请求您的脚本不需要的任何字段。包括不需要的附加字段可能会增加不必要的请求开销。 -2. 过滤器应尽可能具体。尽可能在 API 查询中过滤,而不要在获得结果后进行解析,这样比较好。 -3. 精确匹配过滤器的表现将优于部分匹配过滤器。例如,使用“是”(is)的效果将优于使用“包含”(contains)。 - -## 控制和调试 - -1. 对脚本使用单独的密钥,以便每个工具都具有唯一密钥。这对于调试非常有用。 -2. 确保每个脚本都具有一个所有者或维护人员,且“脚本”(Scripts)页面(位于“管理”(Admin)菜单下)中的信息是最新的。 -3. 考虑[为 API 用户创建只读权限组](https://developer.shotgridsoftware.com/zh_CN/bbae2ca7/)。许多脚本仅需要读取访问权限,这可以防止意外更改。 -4. 跟踪正在使用哪些密钥,以便删除旧脚本。为了简化该操作,一些工作室在 API 封装器中为审核信息编写脚本。 -5. 检查实体名称和字段。{% include product %} 的每个字段都有两个名称:UI 中使用的显示名称(并不一定唯一)和 API 使用的内部字段名称。显示名称可以随时更改,因此无法通过显示名称可靠地预测字段名称。可以转到“管理”(Admin)菜单中的字段选项来查看字段名称,也可以使用 `schema_read(), schema_field_read(), schema_entity_read() methods`,如 [http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema](http://developer.shotgridsoftware.com/python-api/reference.html?%20read#working-with-the-shotgun-schema) 中所述。 - -## 概念设计 - -1. 尤其是对于大型工作室而言,考虑使用 API 隔离层(封装器)。它可以使工具与 {% include product %} API 中的更改隔离开来。这也意味着您可以控制 API 访问、管理调试、跟踪审核等,而无需修改 API 自身。 -2. 使用最新版本的 API。它将包含错误修复和性能改进。 -3. 注意脚本的起始运行环境。在渲染农场中运行的脚本(在此,对相同信息,每分钟向 {% include product %} 调用该脚本 1000 次)可能会影响站点性能。在这种情况下,请考虑实施只读缓存层以减少不必要的重复调用。 -4. 可以关闭脚本的事件生成功能。对于运行频率非常高且稍后无需跟踪其事件的脚本而言,这一操作非常有用。对于运行频率极高的脚本而言,强烈建议执行这一操作,否则事件日志将变得非常大。 \ No newline at end of file diff --git a/docs/zh_CN/reference/api/python-api-create-manage.md b/docs/zh_CN/reference/api/python-api-create-manage.md deleted file mode 100644 index 9be181fa5..000000000 --- a/docs/zh_CN/reference/api/python-api-create-manage.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: 创建和管理 API 脚本 -pagename: python-api-create-manage -lang: zh_CN ---- - -# 创建和管理 API 脚本 - - -按照以下步骤创建新脚本: - -1. 转到“管理”(Admin)菜单并选择“脚本”(Scripts)。 - ![脚本](./images/dv-manage-scripts-script-01.png) -2. 使用“+ 脚本”(+ Script)按钮创建新脚本。 -3. 从应用程序密钥中获取值。您需要此值来启动与 {% include product %} 的连接。 - ![应用程序密钥](./images/dv-manage-scripts-application-key-02.png) - - > **注意:**API 密钥作为密码处理,并且一经创建,即无法通过 {% include product %} Web 应用或 API 再次查看。确保先复制密钥,然后再继续。 - -4. 现在,可以使用脚本密钥来连接到 {% include product %}。请参见[我们的 API 文档中的“{% include product %} 方法”](http://developer.shotgridsoftware.com/python-api/reference.html#shotgun-methods),详细了解如何使用脚本连接到 {% include product %}。 - -> **提示:**如果出于某些原因需要重置脚本的应用程序密钥,将需要创建新的 {% include product %} 脚本实体来执行此操作。首先将现有脚本重命名为“[My Script]—OLD”这样的名称,然后将其删除。创建新脚本。之所以需要重命名旧脚本,是因为 {% include product %} 要求每个脚本具有唯一名称。 - -## 何时设置新脚本 - -可以记录脚本操作。对各个脚本密钥的使用越细化,就越容易跟踪哪个脚本正在进行调试更改。使用单独的脚本也有助于跟踪哪些脚本将受到对 {% include product %} 站点所做更改的影响以及跟踪谁来维护脚本。 \ No newline at end of file diff --git a/docs/zh_CN/reference/api/python-api-overview.md b/docs/zh_CN/reference/api/python-api-overview.md deleted file mode 100644 index 242ac6e36..000000000 --- a/docs/zh_CN/reference/api/python-api-overview.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: default -title: API 概述 -pagename: python-api-overview -lang: zh_CN ---- - -# API 概述 - -**注意:**有关 {% include product %} API 的详细信息,请参见我们的 [API 文档](http://developer.shotgridsoftware.com/python-api/)。 - -借助 {% include product %} Python 应用程序编程接口 (API),用户可以轻松地将其工具与 {% include product %} 集成。通过它您可以创建自动化流程,集成众多第三方软件包,并与工作室内的现有工具进行通信。由于各个工作室的需求迥异,因此 {% include product %} API 提供了强大的基础功能,并将大部分业务逻辑都留给您自己来处理。 - -API 使用 [Python](https://www.python.org/)(传媒和娱乐行业广泛使用的常见编程语言)构建而成。在您的 {% include product %} 站点中可以免费使用 [{% include product %}Python API](https://github.com/shotgunsoftware/python-api)。 - -API 遵循 CRUD 模式,允许您的脚本对单个实体类型运行创建、读取、更新和删除操作。许多操作中都能够定义过滤器、要返回的列,以及对结果进行排序。 - -为了通过 API 与 {% include product %} 服务器通信,您的脚本可以通过提供用户的凭据或利用脚本密钥向服务器进行身份认证。您可以从“脚本”(Scripts)页面(在“管理”(Admin)菜单中列出)生成新脚本密钥: - -![脚本](./images/dv-developers-api-01-scripts-01.png) - -**提示:**单独注册脚本并让每个脚本具有各自的 API 密钥。这将有助于在[事件日志](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_event_logs_html)中更准确地监视每个脚本和它们执行的动作。 - -## 常用的第一个项目 - -您可以在此处下载 API:[https://github.com/shotgunsoftware/python-api](https://github.com/shotgunsoftware/python-api)。 一些常用的第一个项目包括: - -1. [创建版本并将其链接到镜头](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_create_version_link_shot.html)。允许您自动提交新的渲染以供审核。 -2. [上传缩略图](http://developer.shotgridsoftware.com/python-api/cookbook/examples/basic_upload_thumbnail_version.html)。无需手动添加,站点上的所有内容便可拥有最新的缩略图。 -3. [将 {% include product %} 与您的代码库(如 SVN)集成](http://developer.shotgridsoftware.com/python-api/cookbook/examples/svn_integration.html)。利用 {% include product %} 对任何软件开发进行项目管理。 - -## 使用 API 无法完成的操作 - -* 访问或更改权限规则(出于安全原因) -* 读取或更改页面设置 -* 访问各个页面或控件的过滤器或查询设置 -* 与 UI 交互 -* 添加、编辑或删除条件格式规则 -* 创建或编辑查询字段 - -## 动作菜单项 (AMI) - -如果编写要从 {% include product %} 界面中轻松启动的脚本,可以通过 [AMI](https://developer.shotgridsoftware.com/zh_CN/67695b40/) 来完成。这些是可自定义的选项,右键单击一行数据时,这些选项显示在上下文菜单中。单击后,它们将向 Web 服务器或自定义浏览器协议处理程序发送上下文数据转存,然后您可以在其中运行自定义业务逻辑。 - -可以为不同实体设置不同的 AMI,并按项目或权限组限制对它们的访问。 - -## 事件触发器进程 - -在 {% include product %} 中执行的每个操作(通过用户或 API 脚本)均会生成一个事件。[事件进程](https://github.com/shotgunsoftware/shotgunEvents)可以监视事件流,然后基于定义的条件执行特定的 API 脚本。一些示例包括: - -* 基于上游任务状态自动更改下游任务状态。 -* 数值变化时重新计算相关剪辑镜头时长字段。 -* 在镜头设置为特定状态时执行文件打包和传输操作。 - -## 其他信息 - -有关 {% include product %} API 的详细信息,请参见以下文章: - -* [通过 GitHub 下载 {% include product %} API](https://github.com/shotgunsoftware/python-api/) -* [{% include product %} API 文档](http://developer.shotgridsoftware.com/python-api/) -* [{% include product %} 开发人员列表(公共)](https://groups.google.com/a/shotgunsoftware.com/forum/?fromgroups#!forum/shotgun-dev) -* [{% include product %} 事件进程示例代码](https://github.com/shotgunsoftware/shotgunEvents) -* [编写事件驱动的触发器](https://developer.shotgridsoftware.com/zh_CN/0d8a11d9/) -* [{% include product %} 数据结构](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_get_started_ar_shotgun_schema_html) -* [API 最佳实践](https://developer.shotgridsoftware.com/zh_CN/09b77cf4/) - -## 贡献和协作 - -您是否使用 {% include product %} 制造了令人为之惊叹的工具并希望与其他用户共享?太棒了!我们有一个充满活力、生机勃勃、喜欢彼此共享和协作的[开发人员社区](https://community.shotgridsoftware.com/)。参与社区活动: - -* 加入 [{% include product %} 社区](https://community.shotgridsoftware.com/)。 -* 将代码发布到 [GitHub](https://github.com/) 上(确保代码不特定于工作流,记录详尽,并且具有 .txt 或 .mdk 格式的自述文件)。 -* 向开发人员列表发布链接和说明。开发人员社区和 {% include product %} 开发人员将对其进行检查、提供反馈并予以表扬。 - -客户制作的工具和实现的集成总能为我们制造惊喜,并为我们提供了源源不断的创意灵感。快来展示您的实力吧! \ No newline at end of file diff --git a/docs/zh_CN/reference/api/python-api-permissions.md b/docs/zh_CN/reference/api/python-api-permissions.md deleted file mode 100644 index 66b59d416..000000000 --- a/docs/zh_CN/reference/api/python-api-permissions.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: API 用户权限组 -pagename: python-api-permissions -lang: zh_CN ---- - -# API 用户权限组 - - -可以为 API 用户创建单独的权限组,以便脚本和密钥可以具有不同的权限级别,就像“人员”(People)一样。 - -## 访问 API 用户页面 - -转到“管理”(Admin)菜单并选择“权限 - 脚本”(Permissions - Scripts)。 - -![](./images/dv-api-permissions-Screen-Shot-2020-07-27-at-3-47-55-PM-01.png) - -有关用法,请参见[](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_site_configuration_ar_permissions_html)。 - -## 如何使用 API 用户权限组 - -在初始“API Admin”之外创建 API 权限组之后,可以将这些权限组用于 API 脚本。 - -1. 从“管理”(Admin)菜单中选择“脚本”(Scripts)。 -2. 显示“权限组”(Permission Group)列并选择适当的权限组。 - ![API 权限组](./images/dv-api-permissions-ApiPermGroup-02.png) - -## 示例 - -为什么要使用它呢?有许多可能的用法,下面这几种用法只是抛砖引玉: - -**示例 1:**您希望将 API 密钥提供给工作室中某个不应具有完整管理员权限的人。 - -**示例 2:**您希望将只读 API 密钥提供给合作伙伴工作室,以执行从您的 {{ akn_product_name }} 数据库到对方 {{ akn_product_name }} 数据库的单向同步,并仅显示一个有限的实体集。 - -**示例 3:**您想要限制每个项目的 API 脚本。 - -1. 通过“管理员”(Admin)菜单导航至您的**“权限 - 脚本”(Permissions - Scripts)**页面,并创建一个新角色。 确保“仅查看分配的项目”(See Assigned Projects Only)高级权限处于启用状态。您还可以根据需要调整其他任何权限(例如,如果您希望他们对特定实体/字段仅具有读取权限)。 -2. 通过“管理员”(Admin)菜单导航至**“脚本”(Scripts)**页面。显示“项目”(Projects)字段。在这里,您可以在“项目”(Projects)中输入脚本的限制范围。 -3. 通过“权限组”(Permission Group)字段,确保将此脚本权限指定给在步骤 1 中创建的新角色。 \ No newline at end of file diff --git a/docs/zh_CN/reference/pipeline-integrations.md b/docs/zh_CN/reference/pipeline-integrations.md deleted file mode 100644 index 6fcd7973a..000000000 --- a/docs/zh_CN/reference/pipeline-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 工作流集成组件 -pagename: pipeline-integrations-reference -lang: zh_CN ---- - -# 工作流集成组件 - -在这里,您可以找到有关 Toolkit 平台组件的参考文档。 diff --git a/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md b/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md deleted file mode 100644 index 193da21b7..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/env-config-ref.md +++ /dev/null @@ -1,349 +0,0 @@ ---- -layout: default -title: 环境配置参考 -pagename: env-config-ref -lang: zh_CN ---- - -# 环境配置参考 - -## 简介 - -Toolkit 工作流的核心是环境配置。在 Toolkit 工作流配置中,环境配置文件用于定义在不同的 DCC 中哪些 Toolkit 应用可用,以及为每个应用自定义相应设置。本文档提供了有关环境配置文件的结构和功能的完整参考,并涵盖了用于在一个项目中配置不同工作流的 Toolkit 环境**概念、配置结构、文件引用以及可用自定义项确定方式。 - -{% include info title="注意" content="本文档提供了有关环境配置文件的参考,而[有关“编辑工作流配置”的 Toolkit 基础知识手册](./learning-resources/guides/editing_app_setting.md)提供了有关编辑配置设置的分步示例。" %} - -## 什么是环境? - -{% include product %} Toolkit 平台为常用内容创建软件提供了一组完全可自定义的集成,您可以通过其构建工作室工作流。在项目的配置中,您可以指定哪些软件包具有集成,在每个软件包中哪些特定 Toolkit 应用可用,以及针对每个应用所做的选择 - 构建符合工作室需求的美工人员工作流。 - -但在工作室工作流中,通常情况下,不同类型的美工人员一般会采用不同的工作流。举一个简单的示例,对于处理资产的美工人员,您可能希望提供纹理绘制软件(如 Mari),而对于处理镜头的美工人员,您可能希望提供合成软件(如 Nuke)。 - -除了软件包之外,对于不同的美工人员,同一 Toolkit 应用也可能需要使用不同的设置。例如,镜头美工人员和资产美工人员都可能使用 [Workfiles 应用](https://developer.shotgridsoftware.com/zh_CN/9a736ee3),但您可能希望对文件导航进行限制:对于前者,只能导航到与镜头实体关联的文件;对于后者,只能导航到与资产实体关联的文件。 - -为了在一个项目中支持不同的工作流,Toolkit 跨环境分隔其应用和插件配置。一个环境中包含一组软件包的集成及其设置,所有这些都共用一个特定上下文。 - -在上述示例中,处理资产的美工人员将在资产工序环境中工作,而处理镜头的美工人员将在镜头工序环境中工作。每个环境的配置操作都独立于任何其他环境,从而可以在一个项目中支持不同的工作流。 - -## Toolkit 的默认配置注意事项 - -使用 Toolkit 时,您可以相当自由地构建环境配置。本文档提供了您可用的所有选项的参考,以便您掌握必要的知识来选择更适合特定工作流需求的选项。 - -本文档也穿插提供了一些我们在作为起点提供的工作流配置(称为[默认配置](https://github.com/shotgunsoftware/tk-config-default2))中所做的特定选择。如果您已准备好自定义工作流,第一步是[为您的项目创建一个可编辑的工作流配置](./learning-resources/guides/editing_app_setting.md)。 - -虽然这些选择只是惯例,并没有硬编码到 Toolkit 工作流中,但将默认配置作为示例进行参考很有用,可以了解在自定义工作流时可用的功能,并了解在构建自己的配置时可以应用的最佳实践。此外,由于这是面向 Toolkit 新用户的建议起点,因此有助于了解其中一些惯例。本文档中自始至终区分介绍 Toolkit 环境配置的常规功能和默认配置中的特定选择。有关默认配置的环境结构的特定详细信息,请参见[其自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)。 - -## 文件位置 - -在工作流配置中,`config/` 目录包含要自定义的所有文件和文件夹。在 `config/` 中,包含三个子目录:`cache`、`core` 和 `env`。`env` 目录包含环境配置文件,因此本文档将涉及 `config/env` 中的文件。 - -![env 文件夹内容](./images/env-config-ref/1.png) - -在默认配置中,`config/env/` 中包含以下文件: - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -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 环境。 - -## 自定义环境 - -上面列出的环境配置文件是默认配置附带的文件。但是,一些工作室可能需要使用其他环境或额外的环境。例如,工作室可能需要为工作流的每个阶段(`asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` 等)使用不同的配置设置。幸运的是,您可以完全自定义可用环境。 - -为此,请将所需的环境配置文件添加到 `config/env` 目录中。然后,覆盖 `pick_environment` 核心挂钩,将定义何时使用新环境的逻辑添加到其中。 - -## 基本结构 - -Toolkit 的配置文件采用 [YAML](https://yaml.org/) 编写。任何包(应用、插件或框架)的常规配置结构如下: - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -为了说明此结构,此处提供一个非常简单的示例:在一个环境中有一个插件,此插件中定义一个应用。在此配置中 `project.yml` 的内容可能如下所示: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### 插件块 - -每个环境配置文件都以 `engines` 块开头。其中嵌套了为相应环境定义的所有插件。 - -在我们的示例中,只定义了一个插件:`tk-maya`。它有两个列出的设置:`apps` 和 `location`。 - -`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 -``` - -这是类型为 `app_store` 的描 符,此描述符告知 Toolkit 从 {% include product %} App Store 获取给定包。类型为 `app_store` 的描述符具有设置 `name` 和 `version`。 - -相反,如果您正在开发自定义包 - 即您正在为工作室中的一个特定工作流编写一个 Toolkit 应用,您可能希望直接从磁盘上的路径获取它。在此示例中,将使用类型为 `dev` 的描述符,它可能如下所示: - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` 描述符的设置与 `app_store` 描述符的设置不同。虽然它可以采用其他设置,但可以直接为其设置指向应用所在磁盘位置的 `path` 设置。 - -有关所有可用描述符类型及其设置的详细信息,请参见 [Toolkit 核心 API 文档的“描述符”部分](https://developer.shotgridsoftware.com/tk-core/descriptor.html)。 - -### 应用块 - -应用是 Toolkit 的用户工具,每个应用都可以独立于任何其他应用运行。您可以根据工作流需求选择要使用的应用,而插件块内的 `apps` 设置用于定义在给定插件中哪些应用可用。 - -下面是上述示例中的 `apps` 设置: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -您可以看到我们定义了一个应用:`tk-multi-workfiles2` 应用。当前它只定义了一个设置:其描述符。 - -如果您要在 `project` 环境的 `tk-maya` 插件中提供其他应用,可以在此处添加它们。现在将 Panel `tk-multi-shotgunpanel` 和 About 应用 `tk-multi-about` 添加到插件中。示例 `project.yml` 文件现在如下所示: - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -现在要注意几个重要事项: - -* 默认配置按字母顺序列出包,此示例遵循此惯例。 -* 文件会开始变长,即使尚未添加任何配置设置也是如此。 -* 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 - -为了解决最后两个问题,Toolkit 支持 includes**。 - -### includes - -通过 *includes*,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 - -includes 包括两个部分: - -* `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 -* 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 - -为了充实上述示例,可以使用一个文件存放所有插件的位置描述符。我们将该文件放在 `includes` 子文件夹中,并将其命名为 `engine_locations.yml`。 - -`engine_locations.yml` 的内容如下所示: - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -此文件可以用作所有插件位置的单个源,而且所有环境配置都可以引用它。使用此包含文件后,我们的示例现在如下所示: - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations include file](./images/env-config-ref/2.png) - -在此处可以看到,`tk-maya` 插件的 `location` 设置的值现在是对包含的 YAML 文件中的一个键的引用。 - -{% include info title="注意" content="将所有插件位置放在 `config/env/includes/engine_locations.yml` 文件中(如在此示例中所做)时遵循默认配置的惯例。" %} - -可以添加另一个包含文件用于存放应用位置,实际上,默认配置就是这么做的。我们来扩展一下示例: - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -现在,我们从包含的 `engine_locations.yml` 文件中获取 `tk-maya` 插件的描述符,从包含的 `app_locations.yml` 文件获取为 `tk-maya` 插件定义的每个应用的描述符。 - -{% 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 允许使用稀疏**配置:如果未在环境配置文件(和/或其包含的文件)中明确指定配置设置,则将使用包中的默认值。 - -在我们的示例中,除了 `location` 外,我们没有为应用指定任何设置。因此,在配置的当前状态中,三个应用的所有设置都将使用默认值。那么,我们如何知道哪些配置设置可用? - -{% include info title="注意" content="虽然不要求 Toolkit 配置是稀疏配置,但默认配置是稀疏配置。" %} - -## 确定可用配置设置 - -使用稀疏配置时,难以直接通过查看配置文件确定哪些配置设置可用于应用。要确定应用有哪些配置设置可用,可以采用两种方式: - -* **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://developer.shotgridsoftware.com/zh_CN/9a736ee3)。[应用和插件页面](https://developer.shotgridsoftware.com/zh_CN/9a736ee3)列出了所有应用和插件的文档页面。 -* **清单文件:**每个 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))。 - -## 修改配置设置 - -要修改某个配置的默认值,只需在工作流配置中的适当环境中将其添加到相应块中,并设置其值。 - -回到我们的示例,假设我们要配置 `tk-multi-workfiles2`,以便在项目环境中启动 Maya 时它会自动启动。我们可以[在应用的清单文件中](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)看到有一个 `launch_at_startup` 设置(用于控制是否在应用程序启动时启动 Workfiles UI),其默认值为 `False`。因此,我们只需添加 `launch_at_startup` 选项,并将其设置为 `True`。`project.yml` 文件现在如下所示: - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -请注意,如果 `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://developer.shotgridsoftware.com/zh_CN/82ff76f7) -* [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-flare_review.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-flare_review.png deleted file mode 100644 index d8789830f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-flare_review.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-menu.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-menu.png deleted file mode 100644 index ca7d88866..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-render_range.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-render_range.png deleted file mode 100644 index 9c70b2958..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-render_range.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-shot_export.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-shot_export.png deleted file mode 100644 index 15451eb68..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-export-shot_export.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-menu.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-menu.png deleted file mode 100644 index b92701194..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-select.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-select.png deleted file mode 100644 index a1dbb0191..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-select.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-ui.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-ui.png deleted file mode 100644 index f0193ed1a..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/flame-review-ui.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate.png deleted file mode 100644 index ed1e483ab..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate_ex.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate_ex.png deleted file mode 100644 index 7c3e171e2..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-collate_ex.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-cut_type.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-cut_type.png deleted file mode 100644 index 8d3cb7b4f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-cut_type.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_queue.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_queue.png deleted file mode 100644 index 9abbc3881..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_queue.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_window.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_window.png deleted file mode 100644 index 318a6cd59..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-export_window.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-finder.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-finder.png deleted file mode 100644 index bf11c85b1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-finder.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png deleted file mode 100644 index e439c7a51..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-nuke_project_file_settings.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png deleted file mode 100644 index 203f9b18a..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-open_in_shotgun.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-paths.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-paths.png deleted file mode 100644 index d61be78a9..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-paths.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-processor.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-processor.png deleted file mode 100644 index 01a798abc..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-processor.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png deleted file mode 100644 index e468bc217..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/hiero-shotgun_ui.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png deleted file mode 100644 index a85e4e017..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-computed_path.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png deleted file mode 100644 index f5def6a5a..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-create_node.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png deleted file mode 100644 index 37a09983c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-output_profile.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png deleted file mode 100644 index 91d3ba01b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-alembicnode-screenshot_a.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png deleted file mode 100644 index 05c6398e9..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-computed_path.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png deleted file mode 100644 index 35632b864..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-create_node.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png deleted file mode 100644 index e814ec416..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/houdini-mantranode-output_profile.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about1.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about1.png deleted file mode 100644 index 1aa45ba11..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about2.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about2.png deleted file mode 100644 index ed35ef07d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about2.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about3.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about3.png deleted file mode 100644 index b1b2a6021..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-about3.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-menu.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-menu.png deleted file mode 100644 index a6d8e2678..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-about-menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png deleted file mode 100644 index ffc491ed3..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-breakdown-breakdown.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png deleted file mode 100644 index c6d9092d3..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-code_tab.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png deleted file mode 100644 index 372911c00..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-delegate_demo.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png deleted file mode 100644 index a1dc359b8..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-demo_app.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png deleted file mode 100644 index fa5d05177..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-demo-help_demo.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png deleted file mode 100644 index db4d04fbe..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-launchapp-tank_actions_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png deleted file mode 100644 index cd682675d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-buttons.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png deleted file mode 100644 index aa85e3c28..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-console_flame.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png deleted file mode 100644 index 0a3388fda..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-docked.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png deleted file mode 100644 index 9cb68f6f8..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-external_sources.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png deleted file mode 100644 index b1158fac5..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-input.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png deleted file mode 100644 index 15d7915a1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-output.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png deleted file mode 100644 index 3bc7fd92e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-python_console.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png deleted file mode 100644 index b26858fb7..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsole-tabs.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png deleted file mode 100644 index 0e4573387..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-pythonconsoleglobals.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png deleted file mode 100644 index 4fc670c15..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_burnin.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png deleted file mode 100644 index 4fc8a41ea..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-reviewsubmission-quicktime_slate.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png deleted file mode 100644 index 03b34104b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-multiple_instances.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png deleted file mode 100644 index 04074cc3b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-nuke.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png deleted file mode 100644 index 9693968c6..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-setframerange-shotgun.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png deleted file mode 100644 index 1cf482c5d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-shotgunpanel-config.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png deleted file mode 100644 index 5b911971b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-change_context.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png deleted file mode 100644 index cea55460e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-entity_tree_view.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png deleted file mode 100644 index 472e1e67b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-expanding_save.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png deleted file mode 100644 index d1174da4e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_save_file_type.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png deleted file mode 100644 index 0055f737c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-file_selection.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png deleted file mode 100644 index 67bae3004..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-previous_versions.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png deleted file mode 100644 index 91133b8b5..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-sandboxes.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png deleted file mode 100644 index c2fa2072f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-search.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png deleted file mode 100644 index 7bde45265..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-step_filter.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png deleted file mode 100644 index 8ce560526..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/multi-workfiles2-tasks.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png deleted file mode 100644 index ff9552ff0..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-burnins.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png deleted file mode 100644 index 104c14d94..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-nuke_ui.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png deleted file mode 100644 index b840f55cf..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-slate.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png deleted file mode 100644 index 47e9dd91c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-quickreview-submit.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png deleted file mode 100644 index 95dc53f7f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_add_new.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png deleted file mode 100644 index 79539ae8c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_convert_menu_options.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png deleted file mode 100644 index 79bb9a96c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_creation.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png deleted file mode 100644 index c9c8a1fa8..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/nuke-writenode-write_node_reset_path.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/sg_publisher_1.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/sg_publisher_1.png deleted file mode 100644 index 3b5afe00d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/sg_publisher_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png deleted file mode 100644 index 1418fa416..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png deleted file mode 100644 index f54d410df..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-folders-create_folders_2.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png deleted file mode 100644 index b80b0bf5c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchfoldershow_in_fs.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png b/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png deleted file mode 100644 index 00b1f1670..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/apps/shotgun-launchpublish-open_assoc.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmax_engine.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmax_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmax_engine.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png deleted file mode 100644 index 1b730154b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/3dsmaxplus_engine.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/add_shelf.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/add_shelf.png deleted file mode 100644 index f759de6d6..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/add_shelf.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/aftereffects_extension.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/aftereffects_extension.png deleted file mode 100644 index e21656265..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/aftereffects_extension.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-01.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-01.png deleted file mode 100644 index 4b12922ea..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-01.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-02.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-02.png deleted file mode 100644 index d84695b37..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/create-dcc-02.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_commands.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_commands.png deleted file mode 100644 index 6355a8a4c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_commands.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_components.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_components.png deleted file mode 100644 index 1d485c668..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_components.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_console.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_console.png deleted file mode 100644 index 8d79bb59c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_console.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_context_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_context_menu.png deleted file mode 100644 index 105740c1d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_context_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_header.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_header.png deleted file mode 100644 index 678175ec4..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_header.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_menu.png deleted file mode 100644 index cf2d113f0..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_shelf.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_shelf.png deleted file mode 100644 index 9a5dbe5ae..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/extension_shelf.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/flame_project.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/flame_project.png deleted file mode 100644 index b9ccfaf80..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/flame_project.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_engine.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_engine.png deleted file mode 100644 index 8d3e51b69..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_engine.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_menu.png deleted file mode 100644 index 178cfe9cd..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_shelf.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_shelf.png deleted file mode 100644 index 66fc34963..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/houdini_shelf.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/maya_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/maya_menu.png deleted file mode 100644 index d3bf18dc1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/maya_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/mobu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/mobu.png deleted file mode 100644 index bbdd364ab..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/mobu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-favourites.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-favourites.png deleted file mode 100644 index 2e0efcf68..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-favourites.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-gizmo.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-gizmo.png deleted file mode 100644 index 25dcda35e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-gizmo.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png deleted file mode 100644 index 3d5f16498..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-bin_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png deleted file mode 100644 index aa7dea45c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-engine_debug.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png deleted file mode 100644 index 28b74d2fc..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-hiero-menus.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-menu.png deleted file mode 100644 index 2f157f594..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png deleted file mode 100644 index 595bac2b1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/nuke-nodes_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/otls_path.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/otls_path.png deleted file mode 100644 index 3ab2fb93e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/otls_path.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png deleted file mode 100644 index 6355a8a4c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_commands.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png deleted file mode 100644 index 29f5887c0..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_components.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png deleted file mode 100644 index 3c7b3fea4..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_console.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png deleted file mode 100644 index e4e7b63c7..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_context_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png deleted file mode 100644 index 678175ec4..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_header.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png deleted file mode 100644 index 9a5dbe5ae..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extension_shelf.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png deleted file mode 100644 index f56175043..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-extensions_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png deleted file mode 100644 index 6c5826a46..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/photoshopcc-photoshopcc_extension.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/processes.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/processes.png deleted file mode 100644 index eb1debd20..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/processes.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png deleted file mode 100644 index c4cd16a61..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_3dsmax_plus_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_mobu_1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_mobu_1.png deleted file mode 100644 index 55ec54104..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_mobu_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shell_1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shell_1.png deleted file mode 100644 index 678e3b7c3..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shell_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png deleted file mode 100644 index 48f627ecd..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_shotgrid_engine_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_softimage_1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_softimage_1.png deleted file mode 100644 index 3064fca61..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/sg_softimage_1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action1.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action1.png deleted file mode 100644 index 944b38326..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action2.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action2.png deleted file mode 100644 index ded65c452..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/shotgun-action2.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/engines/softimage_menu.png b/docs/zh_CN/reference/pipeline-integrations/images/engines/softimage_menu.png deleted file mode 100644 index 9b16e56d1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/engines/softimage_menu.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/1.png b/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/1.png deleted file mode 100644 index fc9a497b6..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/1.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/2.png b/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/2.png deleted file mode 100644 index 236ac183d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/images/env-config-ref/2.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apis.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apis.md deleted file mode 100644 index c0e21a0bb..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apis.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: API -pagename: toolkit-apis -lang: zh_CN ---- - -# Toolkit API - -在此处,您可以找到适用于 Toolkit 平台提供的 API 的参考文档。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps.md deleted file mode 100644 index 5ac3055fd..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 应用 -pagename: toolkit-apps -lang: zh_CN ---- - -# Toolkit 应用 - -在此处,您可以找到适用于 Toolkit 平台的应用的参考文档。 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 deleted file mode 100644 index 303a88b57..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-export.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: default -title: Flame 导出 -pagename: tk-flame-export -lang: zh_CN ---- - -# Flame 导出 - -{% include product %} Flame 导出应用可帮助您快速开始项目! - -在 Flame 中创建初始套底后,镜头导出器可帮助您在 {% include product %} 中快速生成内容,将图版渲染到磁盘,并发送内容以供审看。 - -当流程开始正常运转后,导出器应用还会跟踪 Flare 或 Flame 批处理模式下发生的所有渲染,让您在工作流中轻松将内容送去审看。 - -## 向 {% include product %} 发布套底 - -当您在 Flame 中为一个场设置了套底,并为时间线中的所有分段**分配了镜头名称**后,选择该场,单击鼠标右键并选择“{% include product %} 镜头导出”(Flame Shot Export)选项。 - -![菜单](../images/apps/flame-export-menu.png) - -此时将显示一个 {% include product %} 用户界面,您可以在其中为发布输入一些初始注释。这些注释将被送去审核。另外,在向发布和其他内容添加说明信息时,也会使用这些注释。 - -除了说明信息外,您还可以选择要为导出的图版使用哪种输出数据格式。这些预设是 Toolkit 应用配置的一部分,您可以配置它们来满足自己工作室的需要。 - -![shot_export](../images/apps/flame-export-shot_export.png) - -单击“提交”(Submit)按钮后,将立即执行以下操作: - -- 将在 {% include product %} 中创建镜头和任务。通过任务模板设置,可配置要与创建的每个新镜头关联的任务列表,以便快速轻松地创建一致的结构。默认情况下,镜头将以镜头序列为父项,但是您也可以对此进行配置,并且如果您处理的是场景或集结构,可以重新配置导出器支持这些设置。 - -- 当 {% include product %} 包含正确的数据后,将使用标准文件夹创建机制在磁盘上创建文件夹。这将确保项目可以快速启动,创建的所有镜头都有一套统一的文件夹结构。 - -执行上面两个步骤后,您便有了进行后续操作的基本结构。后台将执行以下操作: - -- 根据配置中定义的预设,在磁盘上导出每个镜头的图版。文件位置使用 Toolkit 模板系统进行定义,这意味着这些图版的位置定义清楚,工作流中的其他下游工具可以识别它们。 - -- 将导出批处理文件和视频片段 XML 文件。Flame 将使用这些内容启用一个迭代工作流,您可以在其中快速渲染新的版本,然后将它们导入 Flame 中的主套底。 - -- 生成 QuickTime 影片并上传至 {% include product %} 进行审看。 - - -## 发送批处理渲染进行审看 - -为镜头发布了 Flame 批处理文件后,您可以直接从该镜头启动 Flare,打开预填充了渲染和输出设置的批处理文件。要渲染出新的版本,只需单击“Render Range”按钮即可。 - -![render_range](../images/apps/flame-export-render_range.png) - -Toolkit 会在此时显示一个对话框,让您选择是否将渲染发送至 {% include product %} 进行审看。 - -![flaver_review](../images/apps/flame-export-flare_review.png) - -{% include product %} 将发布并跟踪文件,并且也可选择将文件送去审看。 - -## 想了解更多信息? - -如果您想了解更多信息以及此工作流的实际操作,请参见 Flame 插件文档。另外,我们还在文档中提供了一些演示各种工作流实际操作的视频内容。 - -LINKBOX_ENGINE:{% include product %}software/tk-flame:Flame 插件 - -与以往一样,如果您对集成或自定义有任何疑问,请随时访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)。 - -# 高级主题 - -下面提供了更多与配置和自定义相关的高级详细信息。 - -## 使用导出预设 - -导出器在其配置中使用了*“导出预设”*的概念。当您在 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://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -## 自定义 ffmpeg - -导出器在生成 QuickTime 影片时,使用 Flame 随附的 ffmpeg 版本。您可以通过修改导出器中的设置挂钩,指定使用某个外部 ffmpeg 版本来代替内置版本。随 Flame 一起分发的 ffmpeg 版本将跟踪 ffmpeg 转码和性能方面的最新进展,因此使用最新版本有时会带来性能提升。 - -请注意,与默认使用的版本相比,最新版本中向 ffmpeg 传递 h264 参数的方式有所变化。通过切换到最新版本的 ffmpeg,可以丝毫不差地实施建议的转码指导原则,在 {% include product %} 端实现最优的上传和性能。您可以在以下位置找到这些指导原则: - -https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_review_approval_sa_transcoding_html - -仅当您是高级用户时,我们才建议更改 ffmpeg 版本。在这种情况下,请按以下步骤操作: - -### 复制设置挂钩 - -您可以在 Flame 导出应用随附的设置挂钩中找到需要修改的所有设置。要修改此挂钩,首先需要将此挂钩文件从应用内的默认位置复制到您的配置中。在您的项目配置中,该挂钩文件通常位于类似如下位置:`install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py`。将此文件复制到配置内的 `hooks` 位置,例如 `config/hooks`。建议将它重命名为比 `settings.py` 更详细的名称,以便对文件的性质一目了然: - -``` -install/apps/app_store/tk-flame-export/va.b.c/hooks/settings.py -> config/hooks/flame_export_settings.py -``` - -接下来,编辑 Flame 环境配置文件。此文件通常为 `config/env/includes/flame.yml`。在 `tk-flame-export` 标题下,您会发现挂钩路径定义为 `settings_hook: '{self}/settings.py'`。这实际意味着,配置将在应用所在位置(例如 `{self}`)内查找挂钩文件。将此设置更改为 `settings_hook: '{config}/flame_export_settings.py'` 将指示 Toolkit 改为在配置内查找挂钩文件。总结如下: - -``` -settings_hook: '{self}/settings.py' -> '{config}/flame_export_settings.py' -``` - -### 修改挂钩 - -现在,我们已准备好开始修改 `config/hooks/flame_export_settings.py` 挂钩!在文本编辑器中打开它。您会发现几个与 ffmpeg 和 ffmpeg 设置相关的方法。首先要修改的是以下内容: - -``` -def get_external_ffmpeg_location(self): - """ - Control which version of ffmpeg you want to use when doing transcoding. - By default, this hook returns None, indicating that the app should use - the built-in version of ffmpeg that comes with Flame. - - If you want to use a different version of ffmpeg, simply return the path - to the ffmpeg binary here. - - :returns: path to ffmpeg as str, or None if the default should be used. - """ - return None -``` - -默认情况下,导出器返回 `None`,将使用 Flame 的内置 ffmpeg。更改此设置,使其返回您的 ffmpeg 的完整路径。记住,如果您运行的是 Backburner 集群,可能会从集群内的任何计算机调用 ffmpeg,因此请确保所有位置都安装了可执行文件。 - -更新 ffmpeg 位置后,您很可能需要或者想要调整传递给 ffmpeg 的参数。这需要使用两个不同的方法进行更改: - -- `get_ffmpeg_quicktime_encode_parameters` 将返回生成上传至 {% include product %} 的 QuickTime 影片时使用的参数。 - -- `get_local_quicktime_ffmpeg_encode_parameters` 将返回向磁盘写入 QuickTime 影片时使用的参数。 - -对于 {% include product %} 上传,建议开始时使用默认的 {% include product %} 编码设置: - -``` -def get_ffmpeg_quicktime_encode_parameters(self): - return "-vcodec libx264 -pix_fmt yuv420p -vf 'scale=trunc((a*oh)/2)*2:720' -g 30 -b:v 2000k -vprofile high -bf 0" -``` - -对于本地 {% include product %} 转码,建议以 {% include product %} 转码设置为基础设定您的设置,但是要删除分辨率约束并增大码率: - -``` -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 deleted file mode 100644 index 63eaa966c..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-flame-review.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Flame 审看 -pagename: tk-flame-review -lang: zh_CN ---- - -# Flame 审看 - -{% include product %} Flame 审看应用让您可轻松将一个或多个场从 Flame 推送到 {% include product %} 审看功能。 - -只需在要审核的一个或一组镜头序列上单击鼠标右键: - -![菜单](../images/apps/flame-review-menu.png) - -选择“{% include product %} 审看”(ShotGrid Review)选项: - -![选择](../images/apps/flame-review-select.png) - -此时将显示一个 Toolkit 用户界面,您可以在其中添加审核注释: - -![UI](../images/apps/flame-review-ui.png) - -单击“确定”(OK)后,将生成一个后台作业,所有处理都在后台进行。 -将要执行的步骤包括: - -- 将镜头序列作为 QuickTime 影片导出到磁盘。此导出按 Flame QuickTime 影片导出处理,您可以通过配置挂钩完全控制各种设置。 - -- 场处理完毕后,Toolkit 会检查 {% include product %} 中是否有匹配的场。如果没有,将自动创建一个镜头序列。 - -- 生成一个审核版本,并将它与镜头序列关联。 - -- 最后,将 QuickTime 影片上传至该审核版本。 - -此过程支持音频轨道、转场等,并且采用“所见即所得”的方式。在 {% include product %} 中,您可以用多种方式审看媒体,包括使用客户审核和 {% include product %} iPhone 应用。 - -## 自定义和设置 - -Flame 审核应用可进行以下几种不同的自定义: - -- 您可以控制在 {% include product %} 中使用哪种**实体类型**来表示 Flame 中的场。例如,如果您处理的是剧集内容,更合理的做法是将审看版本链接到 {% include product %} 中的剧集,而不是场。 - -- 您可以自定义应用应该自动将哪些任务添加到 {% 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 deleted file mode 100644 index 0ab3a345a..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-export.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: default -title: Hiero/Nuke Studio 导出 -pagename: tk-hiero-export -lang: zh_CN ---- - -# Hiero/Nuke Studio 导出 - -### 简介 - -此应用为 Hiero 的场导出对话框添加 {% include product %} 感知功能。 - -#### 概述视频和演示 - -如果您是刚刚接触 {% include product %} Toolkit 或 Hiero 集成,请观看下面的视频,快速了解一下 {% include product %} Toolkit Hiero 集成在您的工作流中能做些什么。 - -如果您已熟悉 Toolkit 和 Hiero,可以继续阅读下面的文档。 - -
- -
- -### {% include product %} 镜头处理器 - -此应用在激活时会为 Hiero 导出对话框注册一系列更改: - -![export_window](../images/apps/hiero-export_window.png) - -首先是注册的新处理器: - -![处理器](../images/apps/hiero-processor.png) - -当您单击此处理器时,有一些新的变化值得注意。 - -在对话框顶部,有一个额外的用户界面,它可以帮助您控制导出场时如何在 {% include product %} 中创建/更新镜头: - -![shotgun_ui](../images/apps/hiero-shotgun_ui.png) - -### 标记(Tags) -通过调整下拉列表,您可以将各种 Hiero 标记映射到 {% include product %} 镜头状态和镜头任务模板。这样,通过 Hiero 的标记工作流,您可以将某个 {% include product %} 镜头设置为正在进行中,或者为镜头设置绿屏、CG 额外奖励或任何对您的配置有意义的任务。此用户界面通过一个挂钩填充,并且很容易配置额外奖励功能。 - -### 整理 -应用还提供选项,控制如何对照 Hiero 的内置逻辑将轨道项整理在一起。 如果您的一个镜头由多个项构成(无论是重叠、在不同轨道上还是在多个轨道上具有相同的镜头名称),应开启这些选项。这样,{% include product %} Toolkit 镜头更新程序会将匹配的整理项视为一个镜头。 - -![整理](../images/apps/hiero-collate.png) - -例如,假设我们有两个轨道项,分别代表镜头 010 和 020。010 在前,020 在不同的轨道上与 010 的结尾重叠。由于 010 在前,它是主镜头并启用了整理功能,{% include product %} 会将这两个项视为一个镜头 (010)。这意味着,应用将在 {% include product %} 中创建或更新镜头 010。剪辑镜头入点将匹配轨道项 010 的开头,剪辑镜头出点将匹配轨道项 020 的结尾。应用将为每个轨道项创建一个可供审片室审看的版本,但这两个版本都将链接至镜头 010。应用还将以发布文件的形式为每个轨道项创建一个图版,但二者都将链接至镜头 010。此外,应用将发布一个 Nuke 脚本,该脚本链接至镜头 010,包含 2 个读取节点,每个项各一个节点。请注意,在这种情况下,不会在 {% include product %} 中创建或更新镜头 020,因为它已整理到镜头 010 中。 - -![collate_ext](../images/apps/hiero-collate_ex.png) - -### 路径 -在 {% 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` 文件中,假设您使用以下内容定义一个键: - -``` - resolution: - type: str - filter_by: alphanumeric -``` - -在 `tk-hiero-export` 的 `project.yml` 设置中,有以下设置: - -``` - ... - ... - tk-hiero: - apps: - tk-hiero-export: - custom_template_fields: - - {description: Shot Resolution, keyword: resolution} - ... - ... -``` - -然后,您按如下所示修改 `resolve_custom_strings` 挂钩: - -``` -# Copyright (c) 2014 {% include product %} Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the {% include product %} Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the {% include product %} Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by {% include product %} Software Inc. - -from tank import Hook - - -class HieroResolveCustomStrings(Hook): - """Translates a keyword string into its resolved value for a given task.""" - - RESOLUTION_TOKEN_NAME = "{resolution}" - - - def execute(self, task, keyword, **kwargs): - """ - """ - - self.parent.log_debug("attempting to resolve custom keyword: %s" % keyword) - if keyword == self.RESOLUTION_TOKEN_NAME: - translated_value = self._clip_resolution_string(task) - else: - raise RuntimeError("No translation handler found for custom_template_field: %s" % keyword) - - self.parent.log_debug("Custom resolver: %s -> %s" % (keyword, translated_value)) - return translated_value - - - # 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() - 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'] - height = task_reformat_settings['height'] - - return "%sx%s" % (width, height) -``` - -现在,您不仅可以在 Hiero 中使用 `resolution` 令牌,而且它还会对照您在 Toolkit 中定义的任何模板路径进行验证,这样便可导出到一个类似如下的位置: - -``` - 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) - -`plate_published_file_type` 和 `nuke_script_published_file_type` 这两项应用设置让您可控制发布文件注册的文件类型。此外,`nuke_script_toolkit_write_nodes` 让您可控制应在导出对话框中提供哪些写入节点设置。 - -### 导出过程 - -运行导出时,导出队列中会出现一些额外的任务: - -![export_queue](../images/apps/hiero-export_queue.png) - -每个镜头会运行一个 {% include product %}ShotUpdater 任务,该任务负责在 {% include product %} 中创建镜头,并创建数据结构配置中指定的完整镜头结构。 - -![查找器](../images/apps/hiero-finder.png) - -### {% include product %} 中的场和镜头更新 -应用将使用 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_type](../images/apps/hiero-cut_type.png) - -此处的值将显示在**“剪辑镜头”(Cut)**实体的**“类型”(Type)**字段中。 - -需要注意的是,选择了任意整理选项后,将不支持剪辑镜头数据结构,并会跳过**“剪辑镜头”(Cut)**和**“剪辑镜头项”(CutItem)**项的创建。 - -此外,剪辑镜头数据结构并不处理重定时的视频片段。导出重定时的视频片段时,会记录一条调试警告消息。 - -### 交替镜头层次结构 -对于不采用标准“镜头序列 > 镜头”层次结构、可能会使用“集”和/或“场景”的工作室,有一个 `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 deleted file mode 100644 index 4e3475495..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-hiero-openinshotgun.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: 在 ShotGrid 中打开 Hiero/Nuke Studio -pagename: tk-hiero-openinshotgun -lang: zh_CN ---- - -# 在 {% include product %} 中打开 Hiero/Nuke Studio - -此应用向 Hiero 电子表格和时间线添加一个上下文菜单,让您可在 {% include product %} 中打开有对应镜头的给定轨道项。 - -![open_in_shotgun](../images/apps/hiero-open_in_shotgun.png) - -通常,在配置此应用时,要通过向 {% 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} -``` - - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md deleted file mode 100644 index 3e9c1119b..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-alembicnode.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: Houdini Alembic 节点 -pagename: tk-houdini-alembicnode -lang: zh_CN ---- - -# Houdini Alembic 节点 - -Houdini Alembic 节点应用提供一个自定义的 {% include product %} Alembic 输出节点,通过它可轻松设置标准化的 Alembic 文件输出位置。您可以为每个环境配置它。 - -## 一般用法 - -要使用 {% include product %} Alembic 输出,请先将您的脚本另存为 Toolkit 工作文件,然后通过 Houdini 中的 TAB 菜单创建一个新节点。这将创建一个与普通 Alembic 输出节点类似的节点: - -![Alembic 节点](../images/apps/houdini-alembicnode-create_node.png) - -此节点可配置多个输出配置文件,每个配置文件使用一个不同的模板路径指定 Alembic 缓存在磁盘上的写入位置。 - -![Alembic 节点](../images/apps/houdini-alembicnode-output_profile.png) - -您不用手动输入路径,只需指定要使用哪个输出配置文件,节点便会自动计算路径的其余部分。您可以在用户界面中查看计算出的路径。 - -![Alembic 节点](../images/apps/houdini-alembicnode-computed_path.png) - -输出的 Alembic 文件分为不同版本,版本号始终遵循当前的 Houdini 场景文件版本,当您使用多发布进行发布时,版本会自动递增。 - -## 配置 - -Toolkit 的 Alembic 节点提供为一个环境配置指定多个输出配置文件的功能。下面是一个为节点配置多个配置文件的示例: - -
-  tk-houdini:
-    apps:
-      tk-houdini-alembicnode:
-        location:
-          name: tk-houdini-alembicnode
-          type: app_store
-          version: v0.2.2
-        work_file_template: houdini_shot_work
-        default_node_name: tk_alembic_out
-        output_profiles:
-          - name: For Publishing
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_cache_template: houdini_shot_work_alembic_cache
-          - name: Local Testing
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_cache_template: houdini_shot_local_alembic_cache
-
- -您可以使用输出配置文件通过 `color` 字段改变节点的外观,并可通过提供与 `settings` 字段中的参数匹配的键/值对,调整底层 Alembic 节点上的单个参数。最后,`output_cache_template` 字段驱动写入磁盘的 Alembic 缓存的输出路径。 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 deleted file mode 100644 index 0018cf6f0..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-houdini-mantranode.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: default -title: Houdini Mantra 节点 -pagename: tk-houdini-mantranode -lang: zh_CN ---- - -# Houdini Mantra 节点 - -Houdini Mantra 节点应用提供一个自定义的 {% include product %} Mantra 输出节点,通过它可轻松设置标准化的渲染文件输出位置。您可以为每个环境配置它。 - -## 一般用法 - -要使用 {% include product %} Mantra 节点,请先将您的脚本另存为 Toolkit 工作文件,然后通过 Houdini 中的 TAB 菜单创建一个新节点。这将创建一个与普通 Mantra 输出节点类似的节点: - -![Mantra 节点](../images/apps/houdini-mantranode-create_node.png) - -此节点可配置多个输出配置文件,每个配置文件使用一组不同的模板路径指定渲染输出(图像、ifd、dcm、aov 等)在磁盘上的写入位置。 - -![Mantra 节点](../images/apps/houdini-mantranode-output_profile.png) - -您不用手动输入路径,只需指定要使用哪个配置,节点便会自动计算路径的其余部分。您可以在用户界面中查看计算出的路径。 - -![Mantra 节点](../images/apps/houdini-mantranode-computed_path.png) - -渲染的文件分为不同版本,版本号始终遵循当前的 Houdini 场景文件版本,当您使用多发布进行发布时,版本会自动递增。 - -## 配置 - -Toolkit 的 Mantra 节点提供为一个环境配置指定多个输出配置文件的功能。下面是一个为节点配置多个配置文件的示例: - -
-  tk-houdini:
-    apps:
-      tk-houdini-mantranode:
-        location:
-          name: tk-houdini-mantranode
-          type: dev
-          version: v0.2.2
-        default_node_name: tk_mantra_out
-        work_file_template: houdini_shot_work
-        output_profiles:
-          - name: Primary Render
-            settings: {}
-            color: [1.0, 0.5, 0.0]
-            output_render_template: houdini_shot_render
-            output_ifd_template: houdini_shot_ifd
-            output_dcm_template: houdini_shot_dcm
-            output_extra_plane_template: houdini_shot_extra_plane
-          - name: Local Render
-            settings: {}
-            color: [0.0, 0.5, 1.0]
-            output_render_template: houdini_shot_local_render
-            output_ifd_template: houdini_shot_local_ifd
-            output_dcm_template: houdini_shot_local_dcm
-            output_extra_plane_template: houdini_shot_local_extra_plane
-
- -您可以使用输出配置文件通过 `color` 字段改变节点的外观,并可通过提供与 `settings` 字段中的参数匹配的键/值对,调整底层 Alembic 节点上的单个参数。最后,`output_*_template` 字段控制 Mantra 渲染器写入磁盘的文件的输出路径。 \ No newline at end of file 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 deleted file mode 100644 index c88b329c8..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-mari-projectmanager.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Mari 项目管理器 -pagename: tk-mari-projectmanager -lang: zh_CN ---- - -# Mari 项目管理器 - -Mari 项目管理器简化了在 Mari 中创建新项目的过程,从而允许艺术家快速选择已发布的几何体以使用 {% include product %} 加载器进行加载。使用此应用创建的项目可感知 {% include product %},让艺术家不必操心导出选项和文件位置,轻松就能将纹理发布至工作流的其他环节。 - 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 deleted file mode 100644 index 96c026a4c..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-about.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: 关于 -pagename: tk-multi-about -lang: zh_CN ---- - -# 关于 - -此应用以图形方式显示当前工作区和当前环境中运行的所有应用的细分。您可以在上下文菜单中找到它: - -![屏幕截图](../images/apps/multi-about-menu.png) - -## 重新加载所有应用 -此应用提供一个方便的按钮,用来重新加载整个环境。当您在开发过程中想要试一下所做的某些代码更改时,此按钮可以派上用场。您不需要重新启动 Maya 或 Nuke,只要点击重新加载按钮即可! - - -除了重新加载功能,此应用还显示当前工作区及当前加载的所有应用的细分。 - -共有三个单独的视图: - -## 当前工作区 - -![屏幕截图](../images/apps/multi-about-about1.png) - -此视图显示当前的镜头或资产,以及当前的任务等。如果双击列表中的任意项,系统将打开该项的 {% include product %} 详细信息页面。 - -## 正在运行的应用 - -![屏幕截图](../images/apps/multi-about-about2.png) - -此视图显示当前正在运行的所有应用,以及它们的版本和说明。双击一个应用将启动该应用的文档页。 - - -## 当前环境 - -![屏幕截图](../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 deleted file mode 100644 index ea2740a4a..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-breakdown.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -layout: default -title: 细分 -pagename: tk-multi-breakdown -lang: zh_CN ---- - -# 细分 - -场景细分应用会显示引用内容的列表,并告诉您哪些内容项已过期。您可以从 {% include product %} 菜单访问它。 - -![细分概述](../images/apps/multi-breakdown-breakdown.png) - -您可以选择一项或多项内容,然后单击更新选定项。这会使这些项使用最新版本的内容。 - -## 扫描场景 - -细分应用在扫描场景中的引用时,会调用一个特殊的扫描挂钩。此扫描挂钩将返回一个含有文件对应路径的节点列表。对于找到的每个引用,挂钩会返回文件路径,然后 tank 会查看该文件路径,并首先检查是否可将它识别为发布,如果可以识别为发布,则检查是否有更新的版本可用。 - -如果用户单击过期版本显示的更新按钮,应用将调用另一个挂钩来执行实际的更新工作。这意味着,通过自定义这些挂钩,可以相对简单地向细分中添加新的自定义节点。 - -## 访问 {% include product %} 数据 - -如果您需要在挂钩中访问要进行更新的发布的 {% include product %} 数据,操作起来很简单直接;只需调用 `find_publish` 即可从应用检索所有传入项的元数据,如下所示: - -```python -class BreakdownHook(Hook): - - def update(self, items): - """ - Perform replacements given a number of scene items passed from the app. - - Once a selection has been performed in the main UI and the user clicks - the update button, this method is called. - - The items parameter is a list of dictionaries on the same form as was - generated by the scan_scene hook above. The path key now holds - the that each node should be updated *to* rather than the current path. - """ - - engine = self.parent.engine - - # resolve {% include product %} data for all paths passed via the items dictionary - sg_data = tank.util.find_publish(engine.sgtk, - [i["path"] for i in items], - fields=["id", "code", "version_number"]) - - for i in items: - node_name = i["node"] - node_type = i["type"] - new_path = i["path"] - # now that each item is processed, it is easy to access the - # {% include product %} data via a dictionary lookup: - sg_data = sg_data.get(i["path"]) - - # once we have all our desired info and metadata, we can go ahead - # and apply the update business logic. - # [-business logic here-] - -``` - -## API 访问 - -您可以使用 API 以编程方式访问细分应用。目前有以下方法: - -### 显示细分用户界面 - -``` -app_object.show_breakdown_dialog() -``` - -如果您想显示细分用户界面,请执行 `show_breakdown_dialog()` 方法。假设应用位于当前运行的环境的 `tk-multi-breakdown` 部分,我们可以像下面这样操作: - -``` ->>> import sgtk ->>> e = sgtk.platform.current_engine() ->>> e.apps["tk-multi-breakdown"].show_breakdown_dialog() -``` - -### 运行场景分析 - -``` -items = app_object.analyze_scene() -``` - -您可以通过执行 `analyze_scene()` 方法,以编程方式运行场景分析逻辑。这将执行与构建场景内容项列表时细分用户界面所用完全相同的逻辑。 - -该方法将返回一个细分内容项列表。每个内容项由一个词典表示,词典包含若干个键来描述该内容项。方法只会检测到路径与 Toolkit 模板文件中的模板相对应的文件。文件不需要在 {% include product %} 中以发布的形式存在,但是如果如此,此方法将返回它们的基本 {% include product %} 发布元数据。 - -`node_name` 和 `node_type` 这两个键用于返回一个以 DCC 为中心的“地址”或表示方式,以便可以在 DCC 内识别路径。例如在 Maya 和 Nuke 中,此方法将返回节点名称和类型。此方法的逻辑在挂钩中执行,并且因 DCC 的不同而异。此方法会尝试连接 {% include product %},但是进行的调用次数是固定的,不受场景复杂性的影响。 - -下面的示例显示了返回的数据中的一个典型词典: - -``` -{'fields': {'Sequence': 'aaa', - 'Shot': 'aaa_00010', - 'Step': 'Comp', - 'eye': '%V', - 'height': 1556, - 'name': 'test', - 'output': 'output', - '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, - 'name': 'test', - 'published_file_type': {'id': 3, - 'name': 'Rendered Image', - 'type': 'PublishedFileType'}, - 'task': {'id': 4714, 'name': 'Comp', 'type': 'Task'}, - 'type': 'PublishedFile', - 'project': {'id': 234, 'name': 'Climp', 'type': 'Project'}, - 'version_number': 1}, - } -``` - -**实用提示!**:如上面所见,每个内容项会返回一个 `template` 对象和一个 `fields` 词典来表示路径。如果您想查看内容项的实际原始路径,只需运行 `template_obj.apply_fields(fields_dict)` 即可。在此方法返回的其中一个内容项词典的上下文中,代码将为 - -``` -breakdown_items = analyze_scene() -for item in breakdown_items: - path = item["template"].apply_fields(item["fields"]) -``` - - -### 计算内容项的最高版本 - -``` -highest_version = app_object.compute_highest_version(template, fields) -``` - -要知道内容项的最高版本,请使用 `compute_highest_version(template, fields)` 方法。`template` 和 `fields` 参数表示要分析的路径,该路径通常抓取自 `analyze_scene()` 方法的输出。使用细分应用时,包含版本号的模板键必须始终命名为 `{version}`。 - -这将执行磁盘扫描,以确定最高版本。此方法会返回在磁盘上找到的最高版本号。请参见下面的用法示例了解更多详细信息。 - - -### 更新场景的内容项 - -``` -app_object.update_item(node_type, node_name, template, fields) -``` - -要更新内容项,您可以使用 `update_item(node_type, node_name, template, fields)` 方法。`template` 和 `fields` 参数表示应更新至的路径。`node_name` 和 `node_type` 参数用于确定场景中的哪个节点需要修改。通常,这些值抓取自 `analyze_scene()` 方法的输出。 - -这样做类似于在细分用户界面中运行更新。实际的更新调用将分派给处理 DCC 特定逻辑的挂钩。请参见下面的用法示例了解更多详细信息。 - - - - -### 细分 API 示例 - -下面是一个示例,说明了如何检索场景细分并更新所有未使用最新版本的内容项。 - -``` -# find the breakdown app instance -import sgtk -engine = sgtk.platform.current_engine() -breakdown_app = engine.apps["tk-multi-breakdown"] - -# get list of breakdown items -items = breakdown_app.analyze_scene() - -# now loop over all items -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) - -``` diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md deleted file mode 100644 index 02b4b47de..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-demo.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: 演示 -pagename: tk-multi-demo -lang: zh_CN ---- - -# 演示 - -本演示应用提供 {% include product %} 原生开发平台组件的直观演示,包括 {% include product %} 实用程序框架、Qt 控件框架和 Toolkit 核心。 - -![演示应用](../images/apps/multi-demo-demo_app.png) - -本应用中展示的每项演示均包含一个可用的交互式用户界面,用以说明如何使用该原生平台的一个或多个组件。此外,运行的代码随时可复制并粘贴到您自己的应用中。 - -![演示基础知识](../images/apps/multi-demo-help_demo.png) - -此应用使用起来非常简单。只需从左侧的列表中选择一项演示,然后在右侧与组件进行交互即可。有些演示很简单,只是显示 Qt 控件框架中的一个控件;有些演示则提供示例,说明通常如何在生产应用中组合使用 {% include product %} 平台的各种组件。 - -![示例演示](../images/apps/multi-demo-delegate_demo.png) - -![“代码”选项卡](../images/apps/multi-demo-code_tab.png) - -随着新的组件加入平台,在时间允许的情况下,我们会相应添加新的演示。如果您知道某种常见的组件使用方式,或者希望看到某项演示,请通过[提交工单](https://knowledge.autodesk.com/zh-hans/contact-support)告知我们。 - -## 安装 - -要安装此演示应用,请运行以下命令: - -``` -tank install_app project tk-shell tk-multi-demo -``` - -安装后,可运行以下命令启动应用: - -`./tank demos` 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 deleted file mode 100644 index d38c2cec3..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-launchapp.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: 启动器应用 -pagename: tk-multi-launchapp -lang: zh_CN ---- - -# 启动器应用 - -此应用提供了一个快捷方式,让您可轻松从 {% include product %} 跳转至任何支持的应用程序。它会根据您的配置选择为 {% include product %} 中的各种实体创建 {% include product %} 动作项。 - -## 工作方式 - -当您在实体上单击鼠标右键或使用 {% include product %} 动作菜单或配置菜单时,{% include product %} 会根据您的配置选项显示菜单项。 - -例如,下面这张屏幕截图来自一个站点,该站点的配置使用此应用三次,分别实现 Maya、Nuke 和 Photoshop 的菜单。 - -![Tank 动作菜单](../images/apps/multi-launchapp-tank_actions_menu.png) - -目前支持的应用程序和插件包括: - -* 3DSMax -* Hiero -* Maya -* MotionBuilder -* Nuke -* Photoshop -* Mari -* Houdini -* Softimage -* Flame - -### 启动时使用命令行参数 - -许多应用程序具有可调用的命令行选项,用于选择不同的应用程序版本(例如 Nuke 与 NukeX)或指定其他各种用法。 启动器应用针对每个操作系统有一个可进行这种配置的“args”设置。 例如,如果您在此设置中加入“--nukex”,启动器会将它添加到命令行启动,并运行 NukeX 而不是常规的 Nuke: - ----FOLD--- -启动 NukeX 示例 - -```yaml -launch_nuke: - engine: tk-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' - menu_name: Launch Nuke - windows_args: '--nukex' - windows_path: '@nuke_windows' -``` ----FOLD--- - -### 设置环境变量并自动化启动时的行为 - -应用程序常常需要设置某些环境变量、插件路径等,以便能在工作室的工作流中正常工作。启动器应用可通过“before_app_launch”这个挂钩帮助解决此问题。使用此挂钩,您可以定义一段代码,让它在应用程序每次启动时运行。默认情况下,“before_app_launch”这个挂钩只是一个简单的通道,不执行任何操作,但我们可以按照此文档中的说明改写它。 - -例如,如果您使用 Zync Render,需要同时在 `$PYTHONPATH` 和 `$XBMLANGPATH` 中都包含 Zync Maya 插件目录。要让启动器应用设置这些环境变量,请按如下所示为 `before_app_launch` 挂钩更新几行代码: - ----FOLD--- -设置环境变量示例 - -```python -def execute(self, **kwargs): - """ - 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 - - # Append the desired path to the existing $PYTHONPATH to ensure - # everything upstream still works - os.environ["PYTHONPATH"] = os.environ["PYTHONPATH"] + os.pathsep + "~/Library/zync/zync-maya" - - # Set $XBMLANGPATH to the desired path, may need to append it as - # with $PYTHONPATH if already defined in your pipeline - os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya" -``` ----FOLD--- - -您还可以使用“before_app_launch”自动化其他行为,包括 {% include product %} 更新。例如,您可以按如下所示,配置启动器应用在每次启动时(当然前提是从任务进行启动)更新任务状态(在本例中更新为“正在进行”): - ----FOLD--- -自动化任务状态更新示例 - -```python -def execute(self, **kwargs): - """ - 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' - - if self.parent.context.task: - task_id = self.parent.context.task['id'] - data = { - 'sg_status_list':'ip' - } - self.parent.shotgun.update("Task", task_id, data) -``` ----FOLD--- - -您可以想象到,这其中有许多可能性,而启动器应用的目的在于提供工作流所需的灵活性。 - -### 启动尚无插件的应用程序 - -您还可以使用启动器应用启动尚无 Toolkit 插件的应用程序。在这种情况下,会在磁盘上为执行启动的镜头、任务或资产创建文件夹,然后启动应用程序。但是,应用程序启动后不会运行代码,应用程序内也不会出现 {% include product %} 菜单。这意味着,您可以从 {% include product %} 内启动 Toolkit 尚不支持的应用程序。 - -为此,需要为应用配置要启动的应用程序的路径,但保留插件选项为空字符串。 - -## 技术细节 - -### 3DSMax - -此应用会自动向 3DSMax 命令行添加一个名为 `init_tank.ms` 的 MaxScript,3DSMax 会在引导过程中运行它。 - -3DSMax 引导时,会发生以下情况: - -1. 3DSMax 将在启动时运行 `init_tank.ms` -1. `init_tank.ms` 确保有可用的 Python 解释器并运行 `tank_startup.py` -1. 使用 {% include product %} Toolkit 上下文 API,从 {% include product %} 传递的实体 ID 将被转换为 Toolkit 上下文。 -1. 启动适当的插件(通过 `tank.system.start_engine()`)并传入该上下文。插件将处理剩下的事情。 - -### Maya - -此应用会向 Maya 注册一个 `userSetup.py` 自动启动脚本,Maya 会在引导过程中调用它。 - -Maya 引导时,会发生以下情况: - -1. Maya 开始执行 `userSetup.py` 启动脚本 -1. 使用 {% include product %} Toolkit 上下文 API,从 {% include product %} 传递的实体 ID 将被转换为 Toolkit 上下文。 -1. 启动适当的插件(通过 `tank.system.start_engine()`)并传入该上下文。插件将处理剩下的事情。 - -### MotionBuilder - -此应用会向 MotionBuilder 注册一个 `init_tank.py` 自动启动脚本,MotionBuilder 会在引导过程中调用它。 - -MotionBuilder 引导时,会发生以下情况: - -1. MotionBuilder 开始执行 `init_tank.py` 启动脚本 -1. 使用 {% include product %} Toolkit 上下文 API,从 {% include product %} 传递的实体 ID 将被转换为 Toolkit 上下文。 -1. 启动适当的插件(通过 `tank.system.start_engine()`)并传入该上下文。插件将处理剩下的事情。 - -### Nuke - -此应用会向 Nuke 注册一个 `menu.py` 自动启动脚本,Nuke 会在引导过程中调用它。 - -Nuke 引导时,会发生以下情况: - -1. Nuke 开始执行 `menu.py` 启动脚本 -1. 使用 {% include product %} Toolkit 上下文 API,从 {% include product %} 传递的实体 ID 将被转换为 Toolkit 上下文。 -1. 启动适当的插件(通过 `tank.system.start_engine()`)并传入该上下文。插件将处理剩下的事情。 - -### Photoshop - -此应用会使用 Adobe Extension Manager 安装或确保已安装 Tank 插件。 - -Photoshop 引导时,会发生以下情况: - -1. Photoshop 将开始执行 Tank 插件 -1. 使用 {% include product %} Toolkit 上下文 API,从 {% include product %} 传递的实体 ID 将被转换为 Toolkit 上下文。 -1. 启动适当的插件(通过 `tank.system.start_engine()`)并传入该上下文。插件将处理剩下的事情。 - -#### 额外配置 - -如果您想使用此应用启动 Photoshop,需要在 _“extra”_ 部分提供四个配置值。下面是需要根据您的系统和安装位置做出调整的配置和合理的默认值: - -```yaml -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" -``` 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 deleted file mode 100644 index 2577794cc..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-loader2.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: 加载器 -pagename: tk-multi-loader2 -lang: zh_CN ---- - -# 加载器 - -本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 [{% include product %} 集成用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/)。 - -## 配置 - -加载器具有高度的可配置性,您可以通过多种不同的方式对其进行设置。加载器有两个主要的配置区域: - -- 设置左侧树视图中显示哪些选项卡和内容。 -- 控制针对不同的发布显示哪些动作,以及这些动作实际执行什么操作。 - -下面各部分将简要介绍如何配置加载器。 -有关配置方面的技术细节,请参见文档后面的单独章节。 - -### 树视图 - -树视图具有高度的可配置性,您可以使用标准 {% include product %} 过滤语法控制各个选项卡的内容。每个选项卡包含一个 {% include product %} API 查询,通过分组构成一个层次结构。您可以添加任意过滤器来控制要显示哪些项,并可使用特殊关键字 `{context.entity}`、`{context.project}`、`{context.project.id}`、`{context.step}`、`{context.task}` 和 `{context.user}` 基于当前上下文确定查询范围。每个关键字将被替换为相关的上下文信息,可以是 `None`(当上下文的对应部分未填充数据时)或包含键 ID、类型和名称的标准 {% include product %} 链接词典。 - -默认情况下,加载器将显示属于当前项目的资产和镜头。通过重新配置,可以轻松对此进行扩展,例如显示来自其他项目(或特定资产库项目)的内容项。您还可以使用过滤器仅显示具有某个审批状态的内容项,或者按状态或其他 {% include product %} 字段对内容项进行分组。下面是一些配置设置示例,说明了树视图选项卡的设置方式: - -```yaml -# An asset library tab which shows assets from a specific -# {% include product %} project -caption: Asset Library -entity_type: Asset -hierarchy: [sg_asset_type, code] -filters: -- [project, is, {type: Project, id: 123}] - -# Approved shots from the current project -caption: Shots -hierarchy: [project, sg_sequence, code] -entity_type: Shot -filters: -- [project, is, '{context.project}'] -- [sg_status_list, is, fin] - -# All assets for which the current user has tasks assigned -caption: Assets -entity_type: Task -hierarchy: [entity.Asset.sg_asset_type, entity, content] -filters: -- [entity, is_not, null] -- [entity, type_is, Asset] -- [task_assignees, is, '{context.user}'] -- [project, is, '{context.project}'] -``` - -### 过滤发布 - -我们可以对加载器从 {% include product %} 加载发布数据时所执行的发布查询应用 {% include product %} 过滤器。此功能由 `publish_filters` 参数控制,可用于隐藏尚未获得批准的发布或其关联的审看版本尚未得到批准的发布。 - -### 求助,不显示任何动作! - -加载器针对每个插件随附了一些不同的 *动作* 。例如,对于 Nuke,有两个动作:“导入脚本”和“创建读取节点”。动作在挂钩中定义,这意味着您可以修改它们的行为,或根据需要添加附加动作。然后,在加载器的配置中,可以将这些动作绑定至某些 *“发布类型”* 。将一个动作绑定至一个发布类型,也就意味着该动作将显示在加载器内该类型的所有项的动作菜单上。 - -例如,默认情况下,Nuke 的映射关系设置如下: - -``` -action_mappings: - Nuke Script: [script_import] - Rendered Image: [read_node] -``` - -如果您发现不显示任何动作菜单,可能是因为您为当前使用的发布类型选择了不同的名称。如果是这样,请进入配置并添加这些类型,以便在加载器内显示它们。 - -### 管理动作 - -加载器支持的每个应用程序都有一个对应的动作挂钩,用于执行该应用程序支持的动作。例如,在 Maya 这样的应用程序中,默认挂钩将执行 `reference`、`import` 和 `texture_node` 动作,每个动作执行特定的 Maya 命令,将内容导入当前的 Maya 场景中。与所有挂钩一样,我们完全可以改写和更改这些设置,还可根据内置挂钩创建派生挂钩,这样不必复制大量代码就能轻松向内置挂钩中添加其他动作。 - -在动作挂钩中定义了动作列表后,您便可以将这些动作绑定至发布文件类型。例如,如果您的工作流中有一个名为“Maya 场景”(Maya Scene)的发布文件类型,可以在配置中将此类型绑定至挂钩中定义的 `reference` 和 `import` 动作。这样,Toolkit 会向显示的每个 Maya 场景发布中添加一个引用动作和一个导入动作。像这样将发布类型与实际挂钩分离开来,将更易于重新配置加载器,使其适用于默认配置随附的类型以外的发布类型设置。 - -加载器使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在加载器安装的默认配置设置中查看此语法,类似下面所示: - -``` -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 关键字指示 Toolkit 在应用的 `hooks` 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 `{config}/loader/my_hook.py`。这将指示 Toolkit 使用您的配置文件夹中称为 `hooks/loader/my_hook.py` 的挂钩。 - -加载器使用的第二代挂钩的另一个功能是,挂钩不再需要具有 `execute()` 方法。相反,挂钩更像一个普通类,并可包含一套适合组合在一起的方法。在使用加载器时,您的动作挂钩需要执行以下两个方法: - -``` -def generate_actions(self, sg_publish_data, actions, ui_area) -def execute_multiple_actions(self, actions) -``` - -有关详细信息,请参见应用随附的挂钩文件。挂钩还会利用继承性,这意味着您不需要改写挂钩中的所有内容,而是可以更轻松地用各种方式对默认挂钩进行扩展或补充,使挂钩更易于管理。 - -请注意,在 `v1.12.0` 之前的版本中,应用程序会调用 `execute_action` 挂钩来执行动作。而较新的版本会调用 `execute_multiple_actions` 挂钩。为了向后兼容现有挂钩,`execute_multiple_actions` 挂钩实际为提供的每个动作调用 `execute_action`。如果应用程序在升级到 `v1.12.0` 或更高版本后提示未定义 `execute_multiple_actions` 挂钩,请确保环境中的 `actions_hook` 设置正确地从内置挂钩 `{self}/{engine_name}_actions.py` 继承设置。要了解有关如何从内置挂钩派生自定义挂钩的详细信息,请参见 [Toolkit 参考文档](http://developer.shotgridsoftware.com/tk-core/core.html#hook)。 - -LINKBOX_DOC:5#The%20hook%20data%20type:单击此处详细了解第二代挂钩格式。 - -通过在挂钩中运用继承性,您可以像下面这样向默认挂钩中添加附加动作: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -class MyActions(HookBaseClass): - - def generate_actions(self, sg_publish_data, actions, ui_area): - """ - Returns a list of action instances for a particular publish. - This method is called each time a user clicks a publish somewhere in the UI. - The data returned from this hook will be used to populate the actions menu for a publish. - - The mapping between Publish types and actions are kept in a different place - (in the configuration) so at the point when this hook is called, the loader app - has already established *which* actions are appropriate for this object. - - The hook should return at least one action for each item passed in via the - actions parameter. - - 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 publish, 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. - - If it will be shown in the details area, "details" is passed. - - If it will be shown in the history area, "history" is passed. - - Please note that it is perfectly possible to create more than one action "instance" for - an action! You can for example do scene introspection - if the action passed in - is "character_attachment" you may for example scan the scene, figure out all the nodes - where this object can be attached and return a list of action instances: - "attach to left hand", "attach to right hand" etc. In this case, when more than - one object is returned for an action, use the params key to pass additional - data into the run_action hook. - - :param sg_publish_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). - :returns List of dictionaries, each with keys name, params, caption and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_publish_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_publish_data): - """ - 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_publish_data: {% include product %} data dictionary with all the standard publish fields. - :returns: No return value expected. - """ - - # resolve local path to publish via central method - path = self.get_publish_path(sg_publish_data) - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_publish_data) -``` - -然后,我们可以在配置中将这个新动作绑定到一组发布类型: - -```yaml -action_mappings: - Maya Scene: [import, reference, my_new_action] - Maya Rig: [reference, my_new_action] - Rendered Image: [texture_node] -``` - -按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。 - -## 参考 - -在应用实例上可以使用以下方法。 - -### open_publish() -显示“打开文件”风格的加载器版本,让用户可以选择发布。 然后将返回选定的发布。 在此模式下运行时,不允许使用为应用配置的普通动作。 - -app.open_publish( `str` **title**, `str` **action**, `list` **publish_types** ) - -**参数和返回值** -* `str` **title** - 打开发布对话框中显示的标题。 -* `str` **action** - 用于“打开”(Open)按钮的动作名称。 -* `list` **publish_types** - 一个发布类型列表,用于过滤可用的发布列表。 如果此值为空/None,将显示所有发布。 -* **返回值:**用户选择的 {% include product %} 实体词典的列表。 - -**示例** - -```python ->>> engine = sgtk.platform.current_engine() ->>> loader_app = engine.apps.get["tk-multi-loader2"] ->>> selected = loader_app.open_publish("Select Geometry Cache", "Select", ["Alembic Cache"]) ->>> print selected -``` diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md deleted file mode 100644 index 7bfdb29d7..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-publish2.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 发布 -pagename: tk-multi-publish2 -lang: zh_CN ---- - -# 发布 - -![发布器](../images/apps/sg_publisher_1.png) - -## 概述 - -通过发布应用,美工人员可以发布他们的作品,以便其可供下游的美工人员使用。它支持在艺术家的内容创建软件中以传统方式发布工作流,以及在磁盘上单独发布任何文件。在内容创建软件中操作并使用基本 {% include product %} 集成时,该应用将自动发现并显示项目以供艺术家发布。对于较复杂的生产需求,工作室可以编写自定义发布插件来推动美工人员工作流。 - -## 文档 - -发布器的完整文档位于[此处](https://developer.shotgridsoftware.com/zh_CN/d587be80/?title=Integrations+User+Guide#the-publisher)! - 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 deleted file mode 100644 index 4f6ff9b75..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-pythonconsole.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: default -title: Python 控制台 -pagename: tk-multi-pythonconsole -lang: zh_CN ---- - -# Python 控制台 - -这是一个用在 DCC 中的 Python 控制台面板,它为不支持与 Python 解释器交互或者支持非常有限的 DCC 提供访问 Python 解释器的途径。 - -![{% include product %} Python 控制台](../images/apps/multi-pythonconsole-python_console.png) - -## 面板 - -![控制台停靠在 Maya 中](../images/apps/multi-pythonconsole-docked.png) - -安装后,该控制台将在 DCC 中注册为面板,并显示在 {% include product %} 菜单中。在支持嵌入式 Toolkit 面板的应用(Maya、Nuke 和 Houdini)中,该控制台将显示在一个停靠的面板中。 当使用这些 DCC 的早期版本时,或在不支持面板的 DCC 中,该控制台只显示为一个常规的 Toolkit 对话框。 - -## 选项卡 - -![选项卡](../images/apps/multi-pythonconsole-tabs.png) - -Python 控制台会显示一个或多个选项卡,每个选项卡包含一个编辑器和一个输出窗口。单击右下角的 `+` 按钮可创建新选项卡。选项卡名称旁边有一个 `x` 按钮,单击此按钮可删除选项卡。双击选项卡本身将提示您为选项卡输入新名称。通过拖放,可重新排列选项卡。关闭 DCC 时,会保存这些选项卡的状态;下次启动 DCC 时,将恢复这些选项卡的状态。 - -### 编辑器 - -![编辑器](../images/apps/multi-pythonconsole-input.png) - -控制台有一个输入区域用来编辑 Python。该编辑器包含行号,会高亮显示光标当前所在行,并支持一些基本语法高亮显示。控制台会尝试使用 DCC 的配色,让编辑器有协调统一的观感。 - -支持缩进和取消缩进代码块。选择一行或多行并按 `tab` 以缩进四个空格,或按 `shift + tab` 取消缩进四个空格。它尝试将四个空格作为一个缩进量,因此将缩进/取消缩进距整个代码块最近的四个空格。 - -此外,还支持备注和取消备注代码块。选择一行或多行并按 `cmd + /`(对于 Mac)或按 `ctrl + /`(对于 Windows 和 Linux)。如果任何选定行在开头处都没有 `#`,则会向所有选定行添加一个。如果所有行都具有 `#`,则会将其移除。 - -### 输出 - -![输出](../images/apps/multi-pythonconsole-output.png) - -输出区域显示 Python 语句的执行结果。源 Python 命令回显功能默认已开启,并在输出中通过前缀 `>>>` 加以区分。每次执行还带有一个时间戳标记。界面上提供了一个开关用来关闭回显功能。语法和运行时错误以红色显示,并提供完整的堆栈跟踪,以方便调试。 - -## 按钮 - -![按钮](../images/apps/multi-pythonconsole-buttons.png) - -### 输出 - -* **清除** - 清除输出浏览器的内容。 -* **回显** - 在输出浏览器中开启/关闭回显执行命令的功能。 - -### 编辑器 - -* **执行** - 执行编辑器的内容 -* **保存** - 将编辑器的当前内容保存到文件。 -* **打开** - 在编辑器中打开文件。 -* **清除** - 清除编辑器的内容。 -* **行号** - 显示/隐藏当前选项卡的行号 - -## 全局参数 - -![全局参数](../images/apps/multi-pythonconsoleglobals.png) - -控制台中预先定义了一些 {% include product %}/Toolkit 全局参数,这与 [{% include product %} Shell 插件](https://developer.shotgridsoftware.com/zh_CN/2ad59ee8)中提供的参数类似。 - -* Tk API 句柄通过 `tk` 变量提供 -* {% include product %} API 句柄通过 `shotgun` 变量提供 -* 当前上下文存储在 `context` 变量中 -* Shell 插件可通过 `engine` 变量访问 - -## 外部源 - -应用随附一个挂钩,我们可以执行它来从外部位置加载 Python 源。这个挂钩称为 `external_sources_hook`,它需要执行一个称为 `get_external_source_actions` 的方法。这个方法应返回一个 `QActions` 列表,当被触发时,会向控制台添加新的选项卡(包含内容)。 应用随附了一个示例执行,该执行从 GitHub 为一系列预定义用户加载 Gist。挂钩返回的动作将显示在按住**“打开”(Open)**按钮时所显示的弹出菜单中。 - -![外部源](../images/apps/multi-pythonconsole-external_sources.png) - -## 热键 - -* 使用 `Ctrl + Enter` 执行选定项 -* 使用 `Ctrl + T` 创建新选项卡 -* 使用 `Ctrl + Shift + [` 或 `Ctrl + Shift + ]` 在选项卡之间导航 -* 使用 `Ctrl + Wheel` 调整输入/输出的字体大小 - -**注意:**这些热键并非适用于所有 DCC。 - -## 其他说明 - -* 在某些早期版本的 DCC 中,Python 控制台如果在关闭会话时处于打开状态,可能会导致崩溃。我们认为这可能是某些早期版本的 PySide 的一个错误。较新版本的 DCC 捆绑了更新版本的 PySide,退出时不会发生崩溃。如果您在使用最新 DCC 版本时遇到此问题,请[提交工单](https://knowledge.autodesk.com/zh-hans/contact-support),以便我们可以进一步调查。 \ No newline at end of file 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 deleted file mode 100644 index dca43b5fd..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-reviewsubmission.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: default -title: 审核提交 -pagename: tk-multi-reviewsubmission -lang: zh_CN ---- - -# 审核提交 - -## 如何使用此应用? - -### 作为 API - -此应用提供了一种模式以从多发布应用等其他应用内进行调用。 - -此模式基于图像序列创建 QuickTime 影片文件,然后将它们以版本形式提交至 {% include product %},以方便审核。生成的 QuickTime 影片文件将具有场记板信息和场景信息覆层。字体、徽标位置、影片压缩选项和场景信息覆层/场记板信息目前在默认挂钩中采取硬编码方式编写,因此建议您重新执行挂钩函数以调整行为。 - -下面是场记板信息和场景信息覆层当前的默认格式: - -![主菜单](../images/apps/multi-reviewsubmission-quicktime_slate.png) - -![主菜单](../images/apps/multi-reviewsubmission-quicktime_burnin.png) - -如果您想在自己的应用或挂钩中使用此应用,下面快速介绍了一种简单的方法。 - -- 从当前插件中获取 `tk-multi-reviewsubmission` 应用。我们可以在一个挂钩内通过调用 `self.parent.engine.apps.get('tk-multi-reviewsubmission')` 来做到这一点。 -- 如果应用可用,调用 `render_and_submit_version()` 方法。 - -下面的示例显示了此应用在您的挂钩代码中的样子: - -```python -review_submission_app = self.parent.engine.apps.get("tk-multi-reviewsubmission") -if review_submission_app: - review_submission_app.render_and_submit_version( - template, - fields, - first_frame, - last_frame, - sg_publishes, - sg_task, - comment, - thumbnail_path, - progress_cb, - color_space - ) -``` - -您需要传递给 `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 中,这是写入节点的颜色空间按钮的其中一个枚举值。 - -### 作为菜单项 - -此模式向 DCC 内的 {% include product %} 菜单添加菜单项。 - -此模式创建当前视口的快照,并将其作为版本草稿发送到 {% include product %} Create。然后,用户可以通过添加标注、文字或比较注释,在 {% include product %} Create 内扩展审核提交。 - -要将此功能添加到上下文,您需要: -* 设置 `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' - location: - type: app_store - name: tk-multi-reviewsubmission - version: v1.0.1 -``` diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md deleted file mode 100644 index 0423dea48..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-screeningroom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 审片室 -pagename: tk-multi-screeningroom -lang: zh_CN ---- - -# 审片室 - -这是一个将您当前的 Maya 会话与审片室建立连接的小应用。它会向 {% include product %} 菜单添加一个名为**“Jump to Screening Room”**的菜单项。单击此按钮将启动审片室,并将它指向当前的 {% include product %} Toolkit 上下文 - 例如镜头、资产或任务。然后,您可以使用审片室浏览所有提交的内容。 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 deleted file mode 100644 index da93712df..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-setframerange.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: 设置帧范围 -pagename: tk-multi-setframerange -lang: zh_CN ---- - -# 设置帧范围 - -此应用可帮助您管理当前打开的场景中的帧范围。您可以从 {% include product %} 菜单中单击**“与 {% include product %} 同步帧范围”(Sync Frame Range with ShotGrid)**菜单选项访问它。 - -当您单击它时,{% include product %} Toolkit 会检查与当前工作区关联的 {% include product %} 实体(通常是镜头),并查找包含镜头入点帧和镜头出点帧信息的镜头入点和镜头出点字段。这些信息通常与镜头结合使用,在这种情况下,应用会使用 {% include product %} 默认配置中定义的标准镜头入点和镜头出点字段。但是,我们完全可以配置应用,让它从其他字段提取帧范围。 - -![{% include product %}](../images/apps/multi-setframerange-shotgun.png) - -当您运行此应用时,它会使用这些入点和出点信息更新当前场景,最后显示一条摘要消息: - -![Nuke](../images/apps/multi-setframerange-nuke.png) - -## 多个 {% include product %} 字段同步选项 - -您可以通过设置 `menu_name` 属性在 {% include product %} 菜单中定义此应用的多个实例。这样,您可以定义多个菜单动作,以便同步不同的 {% include product %} 字段。 - -要执行此操作,请为每个实例设置不同的应用实例名称 `menu_name` 以及输入帧和输出帧字段: - -```yaml -tk-multi-setframerange_cuts: - menu_name: Sync frame range using cut fields - sg_in_frame_field: sg_cut_in - sg_out_frame_field: sg_cut_out - location: "@apps.tk-multi-setframerange.location" -tk-multi-setframerange_handles: - menu_name: Sync frame range using handle fields - sg_in_frame_field: sg_handle_in - sg_out_frame_field: sg_handle_out - location: "@apps.tk-multi-setframerange.location" -``` -这些内容应该在 {% include product %} 菜单中显示为单独的选项: - -![多个实例](../images/apps/multi-setframerange-multiple_instances.png) - -注意:这是 `v0.4.0` 版应用的新功能。 - -## 操作挂钩 - -在帧操作挂钩中处理用于获取当前场景帧范围或设置帧范围的软件特定逻辑。如果想要添加对新插件的支持或更改行为的实现方式,可以通过设置 `hook_frame_operation` 应用属性并实施自己的获取和设置逻辑来接管帧操作挂钩。 - -注意:这是 `v0.4.0` 版应用的新功能。 \ No newline at end of file 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 deleted file mode 100644 index 8953228e4..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-shotgunpanel.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -layout: default -title: ShotGrid 面板 -pagename: tk-multi-shotgunpanel -lang: zh_CN ---- - -# {% include product %} 面板 - -本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 [{% include product %} 集成用户手册](https://developer.shotgridsoftware.com/zh_CN/d587be80/#the-panel)。 - -## 配置 {% include product %} 面板 - -{% include product %} 面板中有两个主要区域可进行大量配置:一个是用户界面文字的外观,另一个是要与数据关联的动作。以下部分概述如何控制这两个系统的配置。 - -### 配置显示的内容 - -详细信息区域和列表中的值都可以通过 `{% include product %}_fields` 挂钩进行配置。您可以为此挂钩创建子类,并更改执行,以便显示您需要的值: - -![配置](../images/apps/multi-shotgunpanel-config.png) - -**模板系统** - -此挂钩支持简单的模板语言,可提供出色的灵活性。它还支持 Qt 所支持的 HTML 子集,因此您可以控制显示的值的颜色、字体大小、粗细等。模板语言用法如下: - -- {% include product %} 的值括在 `{brackets}` 中,例如 `Description: {description}`。此模板呈现时,`{description}` 部分将替换为 description 字段的值。 - -- 如果您想为值添加一个仅当值不为空时才显示的可选前缀或后缀,可使用 `{[Prefix]sg_field[suffix]}` 语法。对于模板 `{[Start: ]start_date} {[End: ]end_date}`,如果同时填充了两个值,将显示 `Start: 12 July 2009 End: 14 July 2012`,如果未设置结束日期,则显示 `Start: 12 July 2009`。 - -- 您可以定义回退机制,在某些值未设置的情况下进行回退。对于 {% include product %} 版本而言,`artist` 字段优先于 `created_by` 字段,这是为了支持由制片代表艺术家提交版本的工作流。在这种情况下,版本将由制作人员创建,但 `artist` 字段会设置为美工人员。不过,情况并非总是如此。有时,在由美工人员自己提交工作的工作流中,artist 字段会留空。因此,在显示版本时,能够首先检查 `artist` 字段是一项有用的功能,如果发现此字段未设置,则回退到 `created_by` 字段。我们使用 `{field1|field2}` 语法实现这个机制,例如:`Created By: {artist|created_by}`。您可以将此语法与可选字段结合使用,例如 `{[Created By: ]artist|created_by}`。 - - -此挂钩包含以下方法: - -**控制列表中显示的列表项** - -`get_list_item_definition()` 方法接受 {% include product %} 实体类型,会返回一个词典,该词典控制各种列表中列表项的外观。它返回的词典具有 `top_left`、`top_right` 和 `body` 键,例如: - -```python -{ - "top_left": "{code}", - "top_right": "{updated_at}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**控制顶部详细信息区域** - -`get_main_view_definition()` 方法接受 {% include product %} 实体类型,会返回一个具有 `title` 和 `body` 键的词典。这些值控制详细信息区域中对象的外观,例如: - -```python -{ - "title": "{type} {code}", - "body": "By: {created_by}
Description: {description}" -} -``` - -**控制“信息”(Info)选项卡中显示的字段** - -`get_all_fields()` 方法返回给定实体在“信息”(Info)选项卡上呈现时要显示的字段列表。 - -### 配置动作 - -动作是对一段 {% include product %} 数据执行操作的代码片段。例如: - -- 一个为给定 {% include product %} 版本启动 RV 的动作 -- 一个让用户可指派自己执行给定任务的动作 -- 一个将 {% include product %} 发布加载到 Maya 中作为 Maya 参考的动作。 - -动作的实际负载在“动作挂钩”中定义。**定义动作逻辑后,您可以在应用配置中将该动作映射到 {% include product %} 对象。这些动作的映射关系可能类似如下: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import] - filters: {published_file_type: Maya Scene} - - actions: [texture_node] - filters: {published_file_type: Rendered Image} - Task: - - actions: [assign_task] - filters: {} - Version: - - actions: [play_in_rv] - filters: {} -``` - -在上面的示例中,我们使用了 `reference`、`import`、`texture_node`、`assign_task` 和 `play_in_rv` 动作。然后,我们将这些动作映射到各种 {% include product %} 对象和条件。例如,我们让所有 Maya 场景类型的发布都显示 `import` 动作。 - -将对象加载到面板中时,会读入并分析上面的动作配置。接下来确定当前对象适合的动作列表,然后执行 `generate_actions()` 挂钩方法。给定实体的 {% include product %} 数据将在此时传递给挂钩,这样挂钩代码便可判断是否可以为这个特定的 {% include product %} 对象运行该动作。这种方法让每个挂钩可在显示前运行检查。例如,`play_in_rv` 挂钩可能只有在本地有可用媒体时才有意义 - 配置中设置的动作映射会告诉面板为给定 {% include product %} 实体启用哪些动作,但是这些动作可能不会全部显示,因为 `generate_actions()` 方法可能会判定某些动作不适合这个给定对象。 - -`generate_actions()` 方法返回的动作将显示在动作菜单上,当用户单击该菜单时,会调用 `execute_action()` 挂钩方法运行动作。 - -对于面板支持的每个应用程序,都有一个动作挂钩来执行合适的动作。例如,在 Maya 这样的应用程序中,默认挂钩将执行 `reference`、`import` 和 `texture_node` 动作,每个动作执行特定的 Maya 命令,将发布导入当前的 Maya 场景中。与所有挂钩一样,我们完全可以改写和更改这些设置,还可根据内置挂钩创建派生挂钩,这样不必复制大量代码就能轻松向内置挂钩中添加其他动作。 - -面板使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在默认配置设置中查看,语法类似如下: - -```yaml -actions_hook: '{self}/tk-maya_actions.py' -``` - -`{self}` 关键字指示 Toolkit 在应用的 `hooks` 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 `{config}/panel/maya_actions.py`。这将指示 Toolkit 使用您的配置文件夹中称为 `hooks/panel/maya_actions.py` 的挂钩。 - -有关详细信息,请参见应用随附的挂钩文件。挂钩还会利用继承性,这意味着您不需要改写挂钩中的所有内容,而是可以更轻松地用各种方式对默认挂钩进行扩展或补充,使挂钩更易于管理。 - -LINKBOX_DOC:5#The%20hook%20data%20type:单击此处详细了解第二代挂钩格式。 - -通过在挂钩中运用继承性,您可以像下面这样向默认挂钩中添加附加动作: - -```python -import sgtk -import os - -# toolkit will automatically resolve the base class for you -# this means that you will derive from the default hook that comes with the app -HookBaseClass = sgtk.get_hook_baseclass() - -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 - 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 - (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. - - 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). - :returns List of dictionaries, each with keys name, params, caption, group and description - """ - - # get the actions from the base class first - action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area) - - if "my_new_action" in actions: - action_instances.append( {"name": "my_new_action", - "params": None, - "group": "Pipeline Utils", - "caption": "My New Action", - "description": "My New Action."} ) - - return action_instances - - - def execute_action(self, name, params, sg_data): - """ - 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. - :returns: No return value expected. - """ - - if name == "my_new_action": - # do some stuff here! - - else: - # call base class implementation - super(MyActions, self).execute_action(name, params, sg_data) - - -``` - -然后,我们可以在配置中将这个新动作绑定到一组发布类型: - -```yaml -action_mappings: - PublishedFile: - - actions: [reference, import, my_new_action] - filters: {published_file_type: Maya Scene} - Version: - - actions: [play_in_rv] - filters: {} -``` - -按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。 - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md deleted file mode 100644 index 6d22c15ba..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-snapshot.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 快照 -pagename: tk-multi-snapshot -lang: zh_CN ---- - -# 快照 - -{% include product %} 快照是快速增量备份,让您可以对您工作中的增加部分进行版本控制和管理,而不会与其他人共享。可创建快照、添加说明和缩略图,并创建一个时间点,您可以在以后随时回到该时间点并进行恢复。如果您要进行重大更改并要确保具有先前版本的场景的备份,这很有用。 \ No newline at end of file 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 deleted file mode 100644 index eb959c78b..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-multi-workfiles2.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Workfiles -pagename: tk-multi-workfiles2 -lang: zh_CN ---- - -# Workfiles - -## “File Open”对话框 - -### 在工作区中导航 - -![任务](../images/apps/multi-workfiles2-tasks.png) - -主对话框分为两个部分。左侧是一系列选项卡。第一个选项卡名为“我的任务”(My Tasks),显示分配给当前用户的所有任务。这个选项卡非常像 {% include product %} 网站上的“我的任务”(My Tasks)页面。 - -另外,用户也可以使用实体选项卡浏览 {% include product %} 实体。默认情况下,工作文件应用程序让用户可通过查看相应的选项卡,浏览与镜头或资产关联的任何任务。 - -整套选项卡全部可通过环境文件中的 `entities` 设置进行配置。 - -您可以通过在应用设置中设置 `show_file_open: true/false` 来禁用/启用此对话框。 - -### 查找文件 - -![文件选择](../images/apps/multi-workfiles2-file_selection.png) - -在右侧,您将看到与左侧选择的内容关联的工作文件和发布。使用“所有”(All)、“工作”(Working)和“发布”(Publishes)选项卡,可以一起或单独查看工作文件和发布。 - -### 访问先前版本 - -![先前版本](../images/apps/multi-workfiles2-previous_versions.png) - -有两种方式可以访问先前版本。首先,用户可单击浏览器顶部的“所有版本”(All Versions)方框,这将展开版本并在浏览器中单独列出所有版本。另一个方法是在文件上单击鼠标右键,这样可以访问前 10 个版本。 - -### 用户沙盒 - -![沙盒](../images/apps/multi-workfiles2-sandboxes.png) - -如果您的工作流配置使用了用户沙盒,默认情况下将只会看到当前用户的文件。如果用户想查看其他用户沙盒中的文件,可以使用顶部的按钮选取要显示哪个沙盒中的文件。 - -### 缩小结果 - -![搜索](../images/apps/multi-workfiles2-search.png) - -您可以通过键入文字来缩小任何视图中的结果。搜索将匹配任意项的名称。 - -## “File Save”对话框 - -默认情况下,“File Save”对话框让用户可在当前上下文中保存文件。应用程序将提示用户输入场景名称、版本号以及可选的文件扩展名(如果有的话),此时“保存”(Save)按钮将灰显。仅当应用程序确认了场景名称的下一个可用版本号时,右下角的“保存”(Save)按钮才会启用。 - -您可以通过在应用设置中设置 `show_file_save: true/false` 来禁用/启用此对话框。 - -### 在不同的上下文中保存文件 - -![展开保存](../images/apps/multi-workfiles2-expanding_save.png) - -要在不同的上下文中保存文件,用户可单击对话框左上角的展开按钮,这将展开“File Save”对话框,让用户选择另一个要保存文件的上下文。 - -### 添加文件扩展名下拉列表 - -![文件保存类型](../images/apps/multi-workfiles2-file_save_file_type.png) - -使用新的“File Save”对话框,可以选取保存文件的扩展名。要启用此功能,您需要调整工作流配置的 `templates.yml` 文件。首先,需要在 `templates.yml` 内的令牌列表中定义一个令牌。 - -```yaml -maya_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` 是工作文件应用程序需要的提示。它将告诉应用程序此令牌是一个扩展名,应显示在下拉列表控件中。 - -然后,可以将此令牌添加到任何 Maya 特定的模板中。 - -```yaml -maya_shot_work: - definition: '@shot_root/work/maya/{name}.v{version}.{maya_extension}' - root_name: 'primary' -``` - -## “Change Context”对话框 - -![更改上下文](../images/apps/multi-workfiles2-change_context.png) - -“Change Context”对话框与打开的对话框类似,只是它没有用于在右侧浏览文件的功能。您可以选择任务或实体,然后通过按“Change Context”按钮更改当前插件上下文。 - -您可以通过在应用设置中设置 `show_change_context: true/false` 来禁用/启用此对话框。 - -## 工序过滤 - -检索任务时,如果 `step` 包含在层次结构中,则可以通过工作流工序过滤减少从 {% include product %} 检索的数据量:将仅检索链接到选定工序列表的任务。 - -选项卡中显示的工序列表由 `step_filter_on` 设置来控制。如果未设置此项,则将显示现有的所有工作流工序。 - -以下示例定义两个选项卡,分别显示资产的任务和镜头的任务: - -```yaml - - 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: - - [entity, type_is, Shot] - hierarchy: [entity.Shot.sg_sequence, entity, step, content] -``` - -![工序过滤器](../images/apps/multi-workfiles2-step_filter.png) - -## 延迟查询 - -为了获得更好的性能,构建实体树可以分为两个工序查询: -- 第一个查询用于从 {% include product %} 检索记录并填充树的顶部。 -- 第二个查询用于在用户展开树时检索子项。 - -在使用以下设置的情况下,将在启动应用时从 {% include product %} 检索资产和镜头。然后,在树视图中选择或展开特定资产或镜头时,将仅检索链接到此资产或镜头的任务。 - -```yaml - entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] -``` - -![实体树视图](../images/apps/multi-workfiles2-entity_tree_view.png) 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 deleted file mode 100644 index d4e0f0cc4..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-quickreview.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: default -title: Nuke Quickreview -pagename: tk-nuke-quickreview -lang: zh_CN ---- - -# Nuke Quickreview - -使用 Quickreview 应用可以轻松地提交 Nuke 渲染以在 {% include product %} 中进行审核。每次通过 Quickreview 提交时都会在 {% include product %} 中创建一个**版本**。它显示为 Nuke 中的一个节点,位于 {% include product %} 节点菜单中。只需创建一个新节点,将其附加到您的 Nuke 网络,双击该节点,然后单击“上传”(Upload)按钮。 - -![Nuke 概述](../images/apps/nuke-quickreview-nuke_ui.png) - -您将看到以下 UI,通过它可以控制如何在 {% include product %} 中创建您的版本: - -![提交 UI](../images/apps/nuke-quickreview-submit.png) - -可以控制以下项: - -- 版本名称是基于当前加载的 Nuke 脚本预先填充的,可以根据需要进行调整。 -- 与版本关联的实体链接和任务是基于当前上下文的,可以进行调整。 -- 要提交的帧范围可以进行调整。 -- 创建的版本可以添加到播放列表中。将会显示一个包含最近播放列表的下拉列表。 - -按“上传”(Upload)按钮后,将在 Nuke 中生成 QuickTime 影片,然后上传到 {% include product %}。上传后,将显示以下屏幕,您可以选择在 Nuke 中的内置 {% include product %} 面板中或在 Web 悬浮播放器中显示版本。 - -## 场景信息覆层和场记板信息 - -默认情况下,应用将生成一个包含场记板信息和场景信息覆层的 QuickTime 影片: - -![场记板示例](../images/apps/nuke-quickreview-slate.png) -![场景信息覆层示例](../images/apps/nuke-quickreview-burnins.png) - -## 自定义 - -审核提交的大多数方面都可以使用挂钩进行调整。可以在[此处](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 deleted file mode 100644 index fc554d3a4..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-nuke-writenode.md +++ /dev/null @@ -1,604 +0,0 @@ ---- -layout: default -title: Nuke 写入节点 -pagename: tk-nuke-writenode -lang: zh_CN ---- - -# Nuke 写入节点 - -Nuke 写入节点应用提供一个自定义的 {% include product %} 写入节点,让您可轻松设置标准化的图像渲染位置。您可以为每个环境配置它。 除了路径以外,配置还将决定要使用的渲染格式。 - -## 一般用法 - -要使用 {% include product %} 写入节点,可先将脚本另存为 Toolkit 工作文件,然后通过 Nuke 菜单创建一个新节点。此操作将创建一个与普通写入节点类似的节点: - -![写入节点](../images/apps/nuke-writenode-write_node_creation.png) - -您不用输入路径,只需指定输出名称,Toolkit 便会自动计算路径的其余部分。您可以在用户界面中查看计算得到的路径,并可单击“Show in File System”**按钮打开磁盘上的位置。渲染内容的写入位置取决于 Toolkit 的配置。 - -渲染内容将实施版本控制,版本号始终遵循当前的 Nuke 脚本版本,会在您使用多发布进行发布时自动递增。 - -## 重置渲染路径 - -写入节点会缓存当前路径,以便文件在 Toolkit 工作区外部打开时,路径仍然有效。 有时,这意味着路径可能会变得不同步和被“锁定”。 如果渲染路径被锁定,将无法发布使用此写入节点创建的渲染内容。 - -要重置渲染路径,请使用工作文件应用的“升级场景版本”命令升级场景的版本,或单独选择写入节点,然后在属性中单击**“Reset Path”**: - -![写入图表](../images/apps/nuke-writenode-write_node_reset_path.png) - -## 添加另一个写入节点配置文件 - -{% include product %} 写入节点封装了 Nuke 内置的写入节点,因此 Nuke 支持的任何格式均可用于此应用,并且通过配置可另外再添加节点。最简单的入门方法是使用您需要的参数设置一个简单的 Nuke 写入节点。 -例如,我们假设您使用 LZW 压缩来保存 16 位 TIFF 文件。如果您在文本编辑器中查看自己的 Nuke 脚本,会发现写入节点将如下所示: - -``` -Write { - file /Users/ryanmayeda/Desktop/test.%04d.tif - file_type tiff - datatype "16 bit" - compression LZW - checkHashOnRead false - name Write1 - xpos -145 - ypos -61 -} -``` - -上面的文本显示了您需要的参数名称和值各是什么。在本例中为 `datatype` 和 `compression`。接下来,转到环境配置(例如:`/path/to/pipeline/config/env/shot_step.yml`)并找到配置 `tk-nuke-writenode` 应用的部分。 在 `settings` 部分使用这两个参数添加另一个写入节点: - -```yaml -tk-nuke-writenode: - location: {name: tk-nuke-writenode, type: app_store, version: v0.1.6} - template_script_work: nuke_shot_work - ... - write_nodes: - - file_type: exr - ... - - file_type: dpx - ... - - file_type: tiff - name: Mono Tif - publish_template: nuke_shot_render_pub_mono_tif - render_template: nuke_shot_render_mono_tif - proxy_publish_template: null - proxy_render_template: null - settings: {datatype: 16 bit, compression: LZW} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [] -``` - -更新后的配置将在 Nuke 显示这个另外添加的 {% include product %} 写入节点: - -![添加新节点](../images/apps/nuke-writenode-write_node_add_new.png) - -__注意:__ 请务必将任何新模板(例如 nuke_shot_render_mono_tif)添加到 `templates.yml` 文件中,该文件可在项目配置中找到 (`/config/core/templates.yml`)。 - -下面是另一个示例,显示了如何添加一个以 0.5 的压缩率和 4:2:2 的子采样率输出 JPEG 的 {% include product %} 写入节点。此配置文件还使用了“promote_write_knobs”选项将 JPEG 质量旋钮提升到小控件的用户界面。这样,配置文件便可以设置图片质量的默认值,同时还能为用户提供滑块控件以自己更改该设置: - -```yaml -tk-nuke-writenode: - write_nodes: - - file_type: jpeg - name: Compressed JPEG - publish_template: nuke_shot_render_pub_jpeg - 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"} - tank_type: Rendered Image - tile_color: [] - promote_write_knobs: [_jpeg_quality] -``` - -### 提升写入旋钮 - -如上面的配置文件示例中所示,封装的写入节点中的旋钮可以通过提升,显示在 {% include product %} 写入节点的属性面板中。提升的写入旋钮在配置文件中定义,并以旋钮名称进行标识。有多个旋钮可以提升。 - -## 渲染农场集成 - -工作室使用运行作业管理工具(如 [Deadline](https://deadline.thinkboxsoftware.com/),这些工具通常会在渲染时直接启动 Nuke)的渲染农场,这种情况很常见。由于这些工具不是以 {% include product %} 可识别的方式(例如,通过 Desktop 或 `tank` 命令)启动 Nuke,因此,{% include product %} 写入节点没有运行所需的信息。我们提供了几种方式来消除此限制。 - -### 将 {% include product %} 写入节点转换为标准 Nuke 写入节点 - -一个简单的解决方案是先将 {% include product %} 写入节点转换为常规 Nuke 写入节点,然后再发送要渲染的脚本。有两个选项:1. 您可以启用并使用转换菜单选项;2. 您还可使用应用中的 API 转换方法。 - -#### 启用转换菜单选项 - -有一个名为 `show_convert_actions` 的配置选项,可以将其添加到应用设置的环境 yml 文件中。当您添加设置 `show_convert_actions: True` 时,*“将 SG 写入节点转转为写入节点...”(Convert SG Write Nodes to Write Nodes...)* 和 *“将写入节点转换回 SG 格式...”(Convert Write Nodes back to SG format...)* 菜单选项将可用。 - -![写入节点转换菜单选项](../images/apps/nuke-writenode-write_node_convert_menu_options.png) - -但是,如果定义了任何提升写入旋钮的 {% include product %} 写入节点配置文件,则这些菜单选项将隐藏,即使 `show_convert_actions` 设置为 `True`。这是因为,目前转换回功能不支持提升的旋钮。 - -#### 使用 API 进行转换 - -在 `tk-nuke-writenode` 应用上可使用 `convert_to_write_nodes()` 方法执行此转换。 - -要将某个脚本中的所有 {% include product %} 写入节点都转换为常规 Nuke 写入节点,请在 Nuke 中运行以下代码: - -```python -import sgtk -eng = sgtk.platform.current_engine() -app = eng.apps["tk-nuke-writenode"] -if app: - app.convert_to_write_nodes() -``` - -这将从场景中移除 {% include product %} 写入节点,因此,我们建议的工作流是,为要渲染的脚本创建一个副本,对该副本执行转换,然后将副本提交到农场。场景中不再有任何 Toolkit 引用,因此在渲染农场上打开 Nuke 脚本时不需要 Toolkit。 - -**注意:**提供了对应的 `convert_from_write_nodes()` 方法,但为了确保数据完整性,建议仅将其用于调试,不应在您的工作流中使用。 - -### 使用 init.py 引导 {% include product %} Pipeline Toolkit 插件 - -Nuke 将运行在其插件路径中找到的任何 `init.py` 脚本。此方式是向 `init.py` 添加代码(从而执行 `tk-nuke` 插件的精简引导),以便 {% include product %} 写入节点能够在渲染农场中按预期运行。 - -此工作流有几个步骤:首先,“实施前”提交脚本(在 {% include product %} 可识别的 Nuke 会话中运行)获取将用于为农场作业设置环境的数据。然后,由渲染农场管理员设置用于在渲染农场中对 {% include product %} 会话进行身份认证的其他环境变量。最后,将包含 {% include product %} 引导代码的 `init.py` 放置在渲染农场中的 Nuke 会话将检测并运行它的位置,从而在会话中引导 `tk-nuke` 插件,以及允许 {% include product %} 写入节点正常运行。 - -#### 1. 实施前提交脚本 - -此方法假定艺术家在 {% include product %} 可识别的 Nuke 会话中提交农场作业。在提交时,应运行以下代码。此代码将从当前 Nuke 会话中提取环境信息(如 Toolkit 上下文、工作流配置 URI、Toolkit 核心 API 位置等)来填充一个词典,该词典将传递给渲染作业以用来设置环境变量。 - -```python -# Populating environment variables from running Nuke: -# http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.create_engine_launcher -current_engine = sgtk.platform.current_engine() -launcher = sgtk.platform.create_engine_launcher( - current_engine.sgtk, - current_engine.context, - current_engine.name -) - -# Get a dictionary with the following keys: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -environment = launcher.get_standard_plugin_environment() - -# Get the current pipeline config descriptor -environment["SHOTGUN_CONFIG_URI"] = os.path.join(current_engine.sgtk.configuration_descriptor.get_uri(),"config") - -# Get the current tk-core installation path -environment["SHOTGUN_SGTK_MODULE_PATH"] = sgtk.get_sgtk_module_path() -``` - -收集了此信息后,可以将其传递给渲染提交工具。根据所用的渲染农场管理系统,此过程会有所不同。有关如何编写渲染提交脚本的详细信息,请参见您的农场管理系统文档。 - -#### 2. {% include product %} 身份认证 - -引导 API 的 ToolkitManager 需要脚本用户才能初始化。在我们的示例中,我们假定您的站点名称、脚本用户和脚本密钥以环境变量的形式存在于农场计算机上。通常,这是由渲染农场管理员管理的。下面是我们的代码需要的环境变量名称以及示例值: - -``` -SHOTGUN_SITE = “https://mysitename.shotgunstudio.com” -SHOTGUN_FARM_SCRIPT_USER = “sg_api_user” -SHOTGUN_FARM_SCRIPT_KEY = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” -``` - -有关身份认证的详细信息,请参见[开发人员文档](http://developer.shotgridsoftware.com/tk-core/authentication.html)。 - -**有关保护脚本用户安全的注意事项:**建议锁定您在农场中使用的脚本用户,以使其没有管理员级别的权限。[您可在此处详细了解 API 用户权限。](https://developer.shotgridsoftware.com/zh_CN/bbae2ca7/) - -#### 3. init.py 脚本 - -目前,Toolkit 环境数据是从渲染提交工具传递过来的,身份认证数据在渲染农场计算机上的环境变量中。在渲染作业中引导 Toolkit 的最后一部分是将以下示例 `init.py` 代码放置在 Nuke 的插件路径中,以便 Nuke 在启动时启动它。(有关更多详细信息,请参见 [Foundry 提供的有关启动脚本的文档](https://support.foundry.com/hc/zh-cn/articles/360003811839-Q100490)。) - -```python -# This script shows how a Toolkit as a plugin approach could be used to bootstrap -# Toolkit in Nuke on the render farm. -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#bootstrapping-toolkit - -import sys -import os - -# If your render nodes can access the same tk-core install location as -# artist workstations, retrieve its path from the environment and ensure -# it is in the PYTHONPATH -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 -# about it here: -# http://developer.shotgridsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip - -import sgtk - -# Authenticate using a pre-defined script user. -sa = sgtk.authentication.ShotgunAuthenticator() - -# Here we retrieve credentials from environment variables, assuming a script user -# will be used when rendering. This should be typically be handled by your render -# farm administrators. -SG_SITE_URL = os.environ["SHOTGUN_SITE"] -SG_SCRIPT_USER = os.environ["SHOTGUN_FARM_SCRIPT_USER"] -SG_SCRIPT_KEY = os.environ["SHOTGUN_FARM_SCRIPT_KEY"] -user = sa.create_script_user( - api_script=SG_SCRIPT_USER, - api_key=SG_SCRIPT_KEY, - host=SG_SITE_URL -) - -# Start up a Toolkit Manager with our script user -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 -# Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override -# Pipeline Configuration defined in {% include product %}. -mgr.do_shotgun_config_lookup = False - -# Set a plugin id to indicate to the bootstrap that we are starting -# up a standard Nuke integration -mgr.plugin_id = "basic.nuke" - -# Retrieve the Toolkit context from environment variables: -# SHOTGUN_SITE: The {% include product %} site url -# SHOTGUN_ENTITY_TYPE: The {% include product %} Entity type, e.g. Shot -# SHOTGUN_ENTITY_ID: The {% include product %} Entity id, e.g. 1234 -sg_entity = mgr.get_entity_from_environment() - -# Now start up the Nuke engine for a given {% include product %} Entity -nuke_engine = mgr.bootstrap_engine("tk-nuke", entity=sg_entity) -``` - -如果您的配置比此示例复杂,或要使用 `-t` 标志而不是使用 Nuke (`.nk`) 脚本将 Python 脚本传递到命令行,则您可能需要扩展此脚本。 - -#### Deadline 特定的步骤 - -Deadline 可能会在渲染时将 Nuke 脚本复制到一个临时位置。这会导致 Toolkit 出现问题,因为这种情况下文件已不在 Toolkit 识别的磁盘位置。要禁用此行为并从原始位置加载脚本,请执行以下操作: - -1. 在 Deadline 中,导航到“Tools > Configure Plugin”(在超级用户模式下) -2. 禁用“Enable Path Mapping”选项 - -## 技术细节 - -应用提供以下 API 方法: - -### get_write_nodes() - -返回当前场景中所有 {% include product %} 写入节点的列表。 - -`list` app.get_write_nodes() - -**参数和返回值** - -* **返回值:**`list` - 在场景中找到的 Toolkit 写入节点的列表。 - -**示例** - -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() -``` - -### get_node_name() - -返回指定的写入节点的名称。 - -`string` get_node_name(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 节点名称。 - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_name(nodes[0]) -``` - -### get_node_profile_name() - -获取指定的写入节点使用的配置文件的名称。 - -`string` get_node_profile_name(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 配置为此写入节点定义的配置文件名称。 - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_profile_name(nodes[0]) -``` - -### get_node_render_path() - -获取指定的写入节点渲染图像的路径。 - -`string` get_node_render_path(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点的渲染路径。 - -**示例** -```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]) -``` - -### get_node_render_files() - -获取指定的写入节点已渲染的所有图像文件的列表。 - -`list` get_node_render_files(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`list` - 此写入节点渲染的图像文件的列表。 - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_render_files(nodes[0]) -``` - -### get_node_render_template() - -获取配置中定义的一个模板,该模板决定指定的写入节点将渲染图像写入哪个位置。 - -`template` get_node_render_template(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的渲染模板。 - -**示例** -```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]) -``` - -### get_node_publish_template() - -获取配置中定义的一个模板,该模板决定指定的写入节点将渲染图像发布至哪个位置。 - -`template` get_node_publish_template(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的发布模板。 - -**示例** -```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]) -``` - -### get_node_proxy_render_path() - -获取指定的写入节点渲染代理图像的路径。 - -`string` get_node_proxy_render_path(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点的代理渲染路径。 - -**示例** -```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]) -``` - -### get_node_proxy_render_files() - -获取指定的写入节点已渲染的所有代理图像文件的列表。 - -`list` get_node_proxy_render_files(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`list` - 此写入节点渲染的代理图像文件的列表。 - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> nodes = app.get_write_nodes() ->>> app.get_node_proxy_render_files(nodes[0]) -``` - -### get_node_proxy_render_template() - -获取配置中定义的一个模板,该模板决定指定的写入节点将代理渲染图像写入哪个位置。 - -如果指定的节点未配置代理渲染模板,将返回常规渲染模板。 - -`template` get_node_proxy_render_template(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的代理渲染模板。 - -**示例** -```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]) -``` - -### get_node_proxy_publish_template() - -获取配置中定义的一个模板,该模板决定指定的写入节点将代理渲染图像发布到哪个位置。 - -如果指定的节点未配置代理发布模板,将返回常规发布模板。 - -`template` get_node_proxy_publish_template(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`template` - 此节点配置使用的代理发布模板。 - -**示例** -```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]) -``` - -### get_node_published_file_type() - -获取配置中定义的一个发布文件类型,为指定的写入节点渲染的图像创建发布文件时,将使用此类型。 - -`string` get_node_published_file_type(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 此节点配置使用的发布文件类型。 - -**示例** -```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]) -``` - -### generate_node_thumbnail() - -为指定的写入节点生成缩略图。 此方法会将镜头序列中间的一帧渲染到一个临时文件 (.png),最大尺寸为 800x800 像素。 当不再需要此文件时,调用程序负责清理此文件。 - -`string` generate_node_thumbnail(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`string` - 渲染的缩略图图像在磁盘上的路径。 - -**示例** -```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]) -``` - -### reset_node_render_path() - -将指定的写入节点的渲染路径重置为与当前脚本一致。 - -`None` reset_node_render_path(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`None` - 不返回任何值。 - -**示例** -```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]) -``` - -### is_node_render_path_locked() - -判断指定的写入节点的渲染路径是否已锁定。 - -`bool` is_node_render_path_locked(`node` 节点) - -**参数和返回值** - -* `node` **node** - 要查询的写入节点。 -* **返回值:**`bool` - 渲染路径锁定时返回 True,否则返回 False。 - -**示例** -```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]) -``` - -### convert_to_write_nodes() - -将在当前脚本中找到的所有 {% include product %} 写入节点转换为常规 Nuke 写入节点。其他 Toolkit 信息将存储在名为“tk_*”的用户旋钮上。 - -`None` convert_to_write_nodes() - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_to_write_nodes() -``` - -### convert_from_write_nodes() - -将之前从 {% include product %} 写入节点转换而来的所有常规 Nuke 写入节点转换回 {% include product %} 写入节点。 - -`None` convert_from_write_nodes() - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.convert_from_write_nodes() -``` - -### process_placeholder_nodes() - -将任何占位符节点转换为完整的 {% include product %} 写入节点。这主要用于在 Nuke 中首次打开脚本时转换由 Hiero Toolkit 脚本导出器创建的占位符节点。 - -`None` process_placeholder_nodes() - -**示例** -```python ->>> import sgtk ->>> eng = sgtk.platform.current_engine() ->>> app = eng.apps["tk-nuke-writenode"] ->>> app.process_placeholder_nodes() -``` 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 deleted file mode 100644 index 3aa634ba9..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-folders.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: ShotGrid 文件夹 -pagename: tk-shotgun-folders -lang: zh_CN ---- - -# ShotGrid 文件夹 - -{% include product %} Toolkit 有一个内置系统,负责基于配置创建标准目录结构。利用这个系统,我们很容易就能快速为多个镜头创建一致的文件系统布局。 - -此应用将 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 deleted file mode 100644 index ec093b378..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchfolder.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: ShotGrid 启动文件夹 -pagename: tk-shotgun-launchfolder -lang: zh_CN ---- - -# ShotGrid 启动文件夹 - -启动文件夹应用是一个 {% 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 deleted file mode 100644 index d2843911d..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-apps/tk-shotgun-launchpublish.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: ShotGrid 启动发布 -pagename: tk-shotgun-launchpublish -lang: zh_CN ---- - -# ShotGrid 启动发布 - -此应用向 {% include product %} 中的“已发布的文件”(Published File)实体添加一个“在关联应用程序中打开”(Open in Associated Application)动作。这让您可以轻松打开已发布的文件:只需导航到该文件,在文件上单击鼠标右键,然后选择动作即可。 - -![工作 FS](../images/apps/shotgun-launchpublish-open_assoc.png) - -此应用让您可轻松为不同文件配置不同的应用启动顺序 -- 所有这些都在一个挂钩内完成。它还会将图像序列发送至查看器(如 RV)。挂钩无法识别的文件将发送至操作系统级别的应用。 \ No newline at end of file diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration.md deleted file mode 100644 index 820a3ddce..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 配置 -pagename: toolkit-configuration -lang: zh_CN ---- - -# Toolkit 配置 - -在此处,您可以找到有关配置 Toolkit 平台的参考文档 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 deleted file mode 100644 index 8162e0e04..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-configuration/toolkit-config-ref.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -layout: default -title: 环境配置 -pagename: toolkit-config-ref -lang: zh_CN ---- - -# 环境配置参考 - -## 简介 - -Toolkit 工作流的核心是环境配置。在 Toolkit 工作流配置中,环境配置文件用于定义在不同的 DCC 中哪些 Toolkit 应用可用,以及为每个应用自定义相应设置。本文档提供了有关环境配置文件的结构和功能的完整参考,并涵盖了用于在一个项目中配置不同工作流的 Toolkit *环境*概念、配置结构、文件引用以及可用自定义项确定方式。 - -{% include info title="注意" content="本文档提供了有关环境配置文件的参考,而[有关“编辑工作流配置”的 Toolkit 基础知识手册](https://developer.shotgridsoftware.com/zh_CN/37f575b8/)提供了有关编辑配置设置的分步示例。" %} - - - -## 什么是环境? - -{% include product %} Toolkit 平台为常用内容创建软件提供了一组完全可自定义的集成,您可以通过其构建工作室工作流。在项目的配置中,您可以指定哪些软件包具有集成,在每个软件包中哪些特定 Toolkit 应用可用,以及针对每个应用所做的选择 - 构建符合工作室需求的美工人员工作流。 - -但在工作室工作流中,通常情况下,不同类型的美工人员一般会采用不同的工作流。举一个简单的示例,对于处理资产的美工人员,您可能希望提供纹理绘制软件(如 Mari),而对于处理镜头的美工人员,您可能希望提供合成软件(如 Nuke)。 - -除了软件包之外,对于不同的美工人员,同一 Toolkit 应用也可能需要使用不同的设置。例如,镜头艺术家和资产艺术家都可能使用 [Workfiles 应用](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/),但您可能希望对文件导航进行限制:对于前者,只能导航到与镜头实体关联的文件;对于后者,只能导航到与资产实体关联的文件。 - -为了在一个项目中支持不同的工作流,Toolkit 跨环境分隔其应用和插件配置。一个环境中包含一组软件包的集成及其设置,所有这些都共用一个特定上下文。 - -在上述示例中,处理资产的美工人员将在资产工序环境中工作,而处理镜头的美工人员将在镜头工序环境中工作。每个环境的配置操作都独立于任何其他环境,从而可以在一个项目中支持不同的工作流。 - -## Toolkit 的默认配置注意事项 - -使用 Toolkit 时,您可以相当自由地构建环境配置。本文档提供了您可用的所有选项的参考,以便您掌握必要的知识来选择更适合特定工作流需求的选项。 - -本文档也穿插提供了一些我们在作为起点提供的工作流配置(称为[默认配置](https://github.com/shotgunsoftware/tk-config-default2))中所做的特定选择。如果您已准备好自定义工作流,第一步是[为您的项目创建一个可编辑的工作流配置](https://developer.shotgridsoftware.com/zh_CN/37f575b8/)。 - -虽然这些选择只是惯例,并没有硬编码到 Toolkit 工作流中,但将默认配置作为示例进行参考很有用,可以了解在自定义工作流时可用的功能,并了解在构建自己的配置时可以应用的最佳实践。此外,由于这是面向 Toolkit 新用户的建议起点,因此有助于了解其中一些惯例。本文档中自始至终区分介绍 Toolkit 环境配置的常规功能和默认配置中的特定选择。有关默认配置的环境结构的特定详细信息,请参见[其自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md)。 - -## 文件位置 - -在工作流配置中,`config/` 目录包含要自定义的所有文件和文件夹。在 `config/` 中,包含三个子目录:`cache`、`core` 和 `env`。`env` 目录包含环境配置文件,因此本文档将涉及 `config/env` 中的文件。 - -![env 文件夹内容](../images/env-config-ref/1.png) - -在默认配置中,`config/env/` 中包含以下文件: - -``` -asset.yml -asset_step.yml -project.yml -sequence.yml -shot.yml -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 环境。 - -## 自定义环境 - -上面列出的环境配置文件是默认配置附带的文件。但是,一些工作室可能需要使用其他环境或额外的环境。例如,工作室可能需要为工作流的每个阶段(`asset_step_rig`、`asset_step_model`、`shot_step_anim`、`shot_step_light` 等)使用不同的配置设置。幸运的是,您可以完全自定义可用环境。 - -为此,请将所需的环境配置文件添加到 `config/env` 目录中。然后,覆盖 `pick_environment` 核心挂钩,将定义何时使用新环境的逻辑添加到其中。 - -## 基本结构 - -Toolkit 的配置文件采用 [YAML](https://yaml.org/) 编写。任何包(应用、插件或框架)的常规配置结构如下: - -```yaml -bundle_name: - setting1: value - setting2: value - complex_setting: - sub_setting1: value - Sub_setting2: value - location: - type: descriptor_type - descriptor_setting1: value - descriptor_setting2: value -``` - -为了说明此结构,此处提供一个非常简单的示例:在一个环境中有一个插件,此插件中定义一个应用。在此配置中 `project.yml` 的内容可能如下所示: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -### 插件块 - -每个环境配置文件都以 `engines` 块开头。其中嵌套了为相应环境定义的所有插件。 - -在我们的示例中,只定义了一个插件:`tk-maya`。它有两个列出的设置:`apps` 和 `location`。 - -`location` 是每个包都需要的特殊设置。`apps` 设置是为插件定义的所有应用列表,每个应用都有自己的设置。在此示例中,只为插件定义了一个应用:`tk-multi-workfiles2`。 - - -### 位置描述符 - -每个 Toolkit 包都有一个 `location` 设置,我们将其称为包的*描述符*。描述符告知 Toolkit 在何处查找给定包,以及根据其类型,是直接访问它还是在本地缓存它。Toolkit 包可以来自多个位置,例如,{% include product %} 应用商店、git 库、磁盘上的路径或上传到 {% include product %} 站点的 zip 文件。其中每个位置都有一个对应的描述符类型,相应类型具有特定设置。下面是上述示例中 `tk-maya` 插件的描述符: - -```yaml - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -这是类型为 `app_store` 的描述符,此描述符告知 Toolkit 从 {% include product %} 应用商店获取给定包。类型为 `app_store` 的描述符具有设置 `name` 和 `version`。 - -相反,如果您正在开发自定义包 - 即您正在为工作室中的一个特定工作流编写一个 Toolkit 应用,您可能希望直接从磁盘上的路径获取它。在此示例中,将使用类型为 `dev` 的描述符,它可能如下所示: - -```yaml - location: - type: dev - path: /path/to/app -``` - -`dev` 描述符的设置与 `app_store` 描述符的设置不同。虽然它可以采用其他设置,但可以直接为其设置指向应用所在磁盘位置的 `path` 设置。 - -有关所有可用描述符类型及其设置的详细信息,请参见 [Toolkit 核心 API 文档的“描述符”部分](https://developer.shotgridsoftware.com/tk-core/descriptor.html)。 - -### 应用块 - -应用是 Toolkit 的用户工具,每个应用都可以独立于任何其他应用运行。您可以根据工作流需求选择要使用的应用,而插件块内的 `apps` 设置用于定义在给定插件中哪些应用可用。 - -下面是上述示例中的 `apps` 设置: - -```yaml -engines: - tk-maya: - apps: - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - -您可以看到我们定义了一个应用:`tk-multi-workfiles2` 应用。当前它只定义了一个设置:其描述符。 - -如果您要在 `project` 环境的 `tk-maya` 插件中提供其他应用,可以在此处添加它们。现在将 Panel `tk-multi-shotgunpanel` 和 About 应用 `tk-multi-about` 添加到插件中。示例 `project.yml` 文件现在如下所示: - -```yaml -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: - type: app_store - name: tk-maya - version: v0.9.4 -``` - -现在要注意几个重要事项: - -* 默认配置按字母顺序列出包,此示例遵循此惯例。 -* 文件会开始变长,即使尚未添加任何配置设置也是如此。 -* 您可以设想将在其他插件和其他环境中使用这些应用。例如,您可能将在不同的插件(如 Houdini、Nuke 或 Photoshop)和不同的环境(如 `asset_step` 或 `shot_step`)中使用所有这三个应用(Panel、About 应用以及 Workfiles 应用)。在配置中的多个位置定义常用应用设置,这意味着进行更改时,必须在多个位置进行修改。 - -为了解决最后两个问题,Toolkit 支持 *includes*。 - -### includes - -通过 *includes*,可以在配置中的一个文件中引用其他文件的一部分。通过使用 includes,可以在一个位置设置一个配置设置,但在多个环境中使用它。 - -includes 包括两个部分: - -* `includes` 列表:YAML 词典,其键为 `includes`,其值为我们要从其包含的所有文件列表。 -* 配置设置中的引用,带有 `@` 符号前缀,并命名为指向要从包含的文件引用的部分的名称。 - -为了充实上述示例,可以使用一个文件存放所有插件的位置描述符。我们将该文件放在 `includes` 子文件夹中,并将其命名为 `engine_locations.yml`。 - -`engine_locations.yml` 的内容如下所示: - -`config/env/includes/engine_locations.yml`: - -```yaml -engines.tk-maya.location: - type: app_store - name: tk-maya - version: v0.9.4 - -engines.tk-nuke.location: - type: app_store - name: tk-nuke - version: v0.11.5 - -... -``` - -此文件可以用作所有插件位置的单个源,而且所有环境配置都可以引用它。使用此包含文件后,我们的示例现在如下所示: - -`config/env/project.yml`: - -```yaml -includes: -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: - type: app_store - name: tk-multi-about - version: v0.2.8 - tk-multi-shotgunpanel: - location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - tk-multi-workfiles2: - location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 - location: @engines.tk-maya.location -``` - -![engine_locations 包含文件](../images/env-config-ref/2.png) - -在此处可以看到,`tk-maya` 插件的 `location` 设置的值现在是对包含的 YAML 文件中的一个键的引用。 - -{% include info title="注意" content="将所有插件位置放在 `config/env/includes/engine_locations.yml` 文件中(如在此示例中所做)时遵循默认配置的惯例。" %} - -可以添加另一个包含文件用于存放应用位置,实际上,默认配置就是这么做的。我们来扩展一下示例: - -`config/env/includes/app_locations.yml:` - -```yaml -apps.tk-multi-about.location: - type: app_store - name: tk-multi-about - version: v0.2.8 - -apps.tk-multi-shotgunpanel.location: - type: app_store - name: tk-multi-shotgunpanel - version: v1.6.3 - -apps.tk-multi-workfiles2.location: - type: app_store - name: tk-multi-workfiles2 - version: v0.11.8 -``` - - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -现在,我们从包含的 `engine_locations.yml` 文件中获取 `tk-maya` 插件的描述符,从包含的 `app_locations.yml` 文件获取为 `tk-maya` 插件定义的每个应用的描述符。 - -{% 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 基础知识手册](https://developer.shotgridsoftware.com/zh_CN/37f575b8/)。" %} - - -## 简约配置 - -每个 Toolkit 包都有一组可用的配置设置,每个设置都有默认值。Toolkit 允许使用*简约*配置:如果未在环境配置文件(和/或其包含的文件)中明确指定配置设置,则将使用包中的默认值。 - -在我们的示例中,除了 `location` 外,我们没有为应用指定任何设置。因此,在配置的当前状态中,三个应用的所有设置都将使用默认值。那么,我们如何知道哪些配置设置可用? - -{% include info title="注意" content="虽然不要求 Toolkit 配置是简约配置,但默认配置是简约配置。" %} - -## 确定可用配置设置 - -使用简约配置时,难以直接通过查看配置文件确定哪些配置设置可用于应用。要确定应用有哪些配置设置可用,可以采用两种方式: - -* **应用文档:**每个应用都有其自己的文档页面,每个页面都有“配置选项”部分。此部分列出相应应用的所有可用配置设置,每个设置都有说明和默认值。例如,您可以[查看 Workfiles 文档页面](https://developer.shotgridsoftware.com/zh_CN/9a736ee3/)。[应用和插件页面](https://developer.shotgridsoftware.com/zh_CN/162eaa4b/)列出了所有应用和插件的文档页面。 -* **清单文件:**每个 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))。 - -## 修改配置设置 - -要修改某个配置的默认值,只需在工作流配置中的适当环境中将其添加到相应块中,并设置其值。 - -回到我们的示例,假设我们要配置 `tk-multi-workfiles2`,以便在项目环境中启动 Maya 时它会自动启动。我们可以[在应用的清单文件中](https://github.com/shotgunsoftware/tk-multi-workfiles2/blob/v0.11.10/info.yml#L19-L25)看到有一个 `launch_at_startup` 设置(用于控制是否在应用程序启动时启动 Workfiles UI),其默认值为 `False`。因此,我们只需添加 `launch_at_startup` 选项,并将其设置为 `True`。`project.yml` 文件现在如下所示: - -`config/env/project.yml`: - -```yaml -includes: -- includes/app_locations.yml -- includes/engine_locations.yml - -engines: - tk-maya: - apps: - tk-multi-about: - location: @apps.tk-multi-about.location - tk-multi-shotgunpanel: - location: @apps.tk-multi-about.shotgunpanel.location - tk-multi-workfiles2: - launch_at_startup: True - location: @apps.tk-multi-workfiles2.location - location: @engines.tk-maya.location -``` - -请注意,如果 `tk-multi-workfiles2` 的设置来自一个包含的文件,我们将在该文件中进行此更改。 - - -## 其他资源 - -* [Toolkit 基础知识手册:编辑工作流配置](https://developer.shotgridsoftware.com/zh_CN/37f575b8/) -* [Toolkit 基础知识手册:添加应用](https://developer.shotgridsoftware.com/zh_CN/4d147fb2) -* [动画工作流教程](https://developer.shotgridsoftware.com/zh_CN/cb8926fc/) -* [描述符参考文档](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptors) -* [网络讲座:Toolkit 管理](https://youtu.be/7qZfy7KXXX0) -* [文件系统配置参考](https://developer.shotgridsoftware.com/zh_CN/82ff76f7/) -* [默认配置环境结构自述文件](https://github.com/shotgunsoftware/tk-config-default2/blob/master/env/README.md) diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines.md deleted file mode 100644 index 6537b024f..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 引擎 -pagename: toolkit-engines -lang: zh_CN ---- - -# Toolkit 插件 - -在此处,您可以找到适用于 Toolkit 平台的插件的参考文档。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md deleted file mode 100644 index 1c9988460..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax-plus.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: 3ds Max Plus -pagename: tk-3dsmax-plus -lang: zh_CN ---- - -# 3dsMax Plus - -{% include product %} 3ds Max Plus 插件在 3ds Max 应用程序与 {% include product %} Pipeline Toolkit 之间提供桥接。该插件支持 PySide 和所有多应用,这意味着您可以在 3ds Max 中运行我们的标准应用 - 也可以在 Maya 和 Nuke 等中运行的相同应用。该插件使用 3ds Max Plus Python API。 - - -![插件](../images/engines/sg_3dsmax_plus_1.png) - -## 支持的应用程序版本 - -此插件已经过测试,已知可支持以下应用程序版本:2016 - 2020。 请注意,此插件也许(甚至非常有可能)支持更新的发行版本,但是尚未正式在这些版本中进行测试。 - -## 文档 - -此插件借助 Max Plus 的 Python 支持将 {% include product %} Pipeline Toolkit (Sgtk) 与 3D studio Max 连接在一起。 - -![插件](../images/engines/3dsmaxplus_engine.png) - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-3dsmaxplus -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 update 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-3dsmaxplus)。 - -## 特殊要求 - -需要安装 {% include product %} Pipeline Toolkit 核心 API 版本 v0.19.18 或更高版本才能使用此功能。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md deleted file mode 100644 index 337201820..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-3dsmax.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: 3ds Max -pagename: tk-3dsmax -lang: zh_CN ---- - -# 3ds Max - -{% include product %} 3ds Max 插件包含一个用于在 3ds Max 中集成 {% include product %} Toolkit (Sgtk) 应用的标准平台。它采用轻量型设计,操作简单直观,并会向主菜单中添加一个 {% include product %} 菜单。 - -![插件](../images/engines/3dsmax_engine.png) - -## 支持的应用程序版本 - -此插件已经过测试,已知可支持以下应用程序版本:2017+。 请注意,此插件也许(甚至非常有可能)支持更新的发行版本,但是尚未正式在这些版本中进行测试。 - -## 文档 - -{% include product %} 3dsMax 插件包含一个用于在 3dsMax 中集成 {% include product %} Pipeline Toolkit (Sgtk) 应用的标准平台。它采用轻量型设计,操作简单直观,并会向主菜单中添加一个 {% include product %} 菜单。 - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-3dsmax -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 update 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-3dsmax)。 - -## 特殊要求 - -需要安装 {% include product %} Pipeline Toolkit 核心 API 版本 v0.19.18 或更高版本才能使用此功能。 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 deleted file mode 100644 index 0de6ef1c6..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-aftereffects.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -layout: default -title: After Effects -pagename: tk-aftereffects -lang: zh_CN ---- - -# After Effects - -{% include product %} After Effects 插件提供一个用于在 After Effects 工作流中集成 {% include product %} 的平台。它包含一个标准 {% include product %} Toolkit 插件并依赖于 [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP)。 - -启用后,**{% include product %} Adobe Panel** 面板在 After Effects 中变为可用。此面板显示有关当前 {% include product %} 上下文以及该上下文中安装的应用注册的各种命令的信息。 - -![插件](../images/engines/aftereffects_extension.png) - -# 界面概述 - -{% include product %} 扩展面板采用与原生 After Effects 面板相同的配色和基本布局。面板有五个部分组成: - -![组件](../images/engines/extension_components.png) - -1. **上下文标题** - 当前上下文的缩略图和字段。 -2. **收藏工具架** - 用于显示当前上下文中最常用的应用。 -3. **命令列表** - 当前上下文的所有未收藏命令。 -4. **上下文菜单** - 其他与上下文相关的命令和调试工具。 -5. **日志记录控制台** - 一个控制台叠加层,显示调试的日志记录输出。 - -# 安装 - -{% include product %} After Effects 插件在安装方面遵循与其他 {% include product %} 集成相同的协议。有关安装插件和应用的信息,请参见[管理 Toolkit](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) 文章。此外,您还可以参考[默认 Toolkit 配置](https://github.com/shotgunsoftware/tk-config-default2),以它为例了解如何配置集成。 - -# 启用扩展 - -安装此扩展后,需要通过 After Effects 中的扩展菜单启动它。 - -![菜单](../images/engines/extension_menu.png) - -此操作只需要执行一次,之后 {% include product %} 扩展面板便可一直留在 After Effects 布局中,后续启动时不必再启用。 - -启用后,在以后启动时,扩展面板将在引导 {% include product %} 集成期间显示一个正在加载屏幕。 - -此屏幕通常会持续显示几秒钟,待当前上下文确定后再显示命令。 - -# 界面组成部分 - -以下部分概述了 {% include product %} After Effects 集成的组成部分。 - -## 上下文标题 - -上下文标题是一个可自定义的区域,可显示有关当前 {% include product %} 上下文的信息。 - -![标题](../images/engines/extension_header.png) - -上下文由当前激活的文档决定。插件确定上下文后,标题会更新并显示上下文的缩略图字段详情。这些字段信息由一个挂钩来控制。有关如何对字段的显示进行自定义的信息,请参见下面的**上下文字段显示挂钩** 部分。 - -另外还需要注意的是,仅当使用 {% include product %} open 时才能识别上下文切换。 - -## 收藏工具架 - -收藏工具架与 Maya 和 Houdini 等其他 {% include product %} DCC 集成中提供的菜单收藏夹类似。在界面的这个部分,用户随手即可访问最常用的 Toolkit 应用,并可按照上下文标题轻松找到应用。 - -![工具架](../images/engines/extension_shelf.png) - -此工具架以按钮的形式显示收藏的命令,将鼠标移至这些按钮时,按钮从灰色变为彩色,同时顶部的标签中显示它们的名称。将鼠标悬停在按钮上方时,将显示它们的工具提示。 - -单击其中一个按钮,将触发回调,执行注册的命令。 - -有关如何指定命令收藏夹的详细信息,请参见下面的**工具架收藏夹**部分。 - -## 命令列表 - -命令列表显示当前上下文注册的其他“常规”命令。 - -![命令](../images/engines/extension_commands.png) - -通常,工作流配置内安装的应用会注册一个或多个命令,这些命令将显示在这里。如果命令未标识为收藏项,也未被指定为上下文菜单命令,它们将显示在此处。 - -命令列表中按钮的行为与收藏工具架中按钮的行为类似。唯一真正的区别在于它们以列表的形式显示,并且其图标右侧带有完整名称。 - -## 上下文菜单 - -所有注册为上下文菜单命令的命令将显示在 {% include product %} 扩展面板的上下文菜单中。 - -![上下文菜单](../images/engines/extension_context_menu.png) - -与其他命令区域一样,这些命令会随上下文一起变化。诸如 **Jump to {% include product %}** 和 **Jump to Filesystem** 这样的命令将始终位于此处。 - -## 日志记录控制台 - -日志记录控制台同时显示来自 CEP Javascript 解释器和 Toolkit Python 进程的所有日志记录输出。 - -![控制台](../images/engines/extension_console.png) - -当扩展遇到任何需要技术支持的问题时,日志记录控制台的输出就变得极为有用,这些信息可帮助 {% include product %} 技术支持团队调试问题。 - -# 配置和技术细节 - -以下部分对集成中技术性更强的一些方面进行了概述,以帮助您根据自己工作室工作流的具体需求来配置集成。 - -## PySide - -{% include product %} After Effects 插件依赖于 PySide。请参见有关[安装 PySide](http://pyside.readthedocs.io/en/latest/installing/index.html) 的官方说明。 - -## CEP 扩展 - -扩展本身与插件捆绑在一起,插件会在首次启动 After Effects 时自动安装扩展。扩展安装在美工人员的本地计算机上,位于操作系统特定的标准 CEP 扩展目录中: - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -每次启动 After Effects 时,插件引导代码会对照计算机上安装的扩展版本,检查随插件捆绑的扩展版本。这意味着,当插件更新后,假设它随附了一个新的扩展版本,已安装的扩展会自动更新为新捆绑的版本。 - -## 配置收藏夹 - -我们可以配置**收藏工具架**,让它显示已安装应用的任何注册命令。要执行此操作,只需向环境配置的 `tk-aftereffects` 部分添加 `shelf_favorites` 设置即可。示例如下: - -```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` 键标识了一个特定的已安装应用,`name` 键则与该应用注册的命令的显示名称一致。在上面的示例中,您可以看到四个收藏的命令:`tk-multi-workfiles2` 应用的“File Open”和“File Save”对话框,以及 Toolkit 的“发布”(Publish)和“Snapshot”标准对话框。这四个命令现在将显示在收藏工具架中。 - -## 环境变量 - -为了辅助调试,有一组环境变量可用来更改插件的某些默认值: - -- `SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - Python 的心跳检测间隔(以秒为单位,默认为 1 秒)。 -- `SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - 退出前允许出现的心跳检测错误的数量(默认值为 2)。旧环境变量 -- 如果设置,也会考虑 `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE`。 -- `SHOTGUN_ADOBE_NETWORK_DEBUG` - 在输出日志记录时包含附加的网络连接调试消息。旧环境变量 -- 如果设置,也会考虑 `SGTK_PHOTOSHOP_NETWORK_DEBUG`。 -- `SHOTGUN_ADOBE_PYTHON` - 启动插件时使用的 Python 可执行文件的路径。如果不设置,将使用系统的 Python。如果 Photoshop 是从某个 Python 进程启动(如 {% include product %} Desktop 或通过 tk-shell 插件),则 Photoshop 集成将使用该进程使用的 Python。 - -注意:其他环境变量存在于 Adobe 框架中。有关详细信息,请参见[开发人员文档](https://developer.shotgridsoftware.com/tk-framework-adobe/)。 - - -## 上下文字段显示挂钩 - -插件随附了一个挂钩,用来控制面板的**上下文标题**部分显示的字段。我们可以改写挂钩中的两个方法来自定义显示的内容。 - -第一个方法是 `get_entity_fields()` 方法。此方法接受一个表示当前 {% include product %} 上下文的实体类型。返回的值应该是要为该实体查询并显示的各个字段的列表。插件自己负责异步查询数据。 - -从 {% include product %} 查询到数据后,会调用挂钩中的第二个方法。此方法是 `get_context_html()` 方法,它接受上下文实体词典,其中填充有 `get_entity_fields()` 方法指定的查询字段。返回的值应该是一个字符串,该字符串包含带格式的 HTML,用以显示查询到的实体字段。 - -[默认的挂钩执行](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/context_fields_display.py)对于了解这些方法都需要什么来说是一个很好的参考。 - -要注意的是,插件始终会显示实体的缩略图(如果有的话)。 - -## 导入连续镜头挂钩 - -插件提供了一个挂钩,用于控制特定文件类型的导入行为。用户可能想将 psd 文件导入为单个层,而不是合成。在这种情况下,该挂钩可以用来覆盖此行为。 - -[默认的挂钩执行](https://github.com/shotgunsoftware/tk-aftereffects/blob/master/hooks/import_footage.py) - -## 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 deleted file mode 100644 index 46a731784..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-alias.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Alias -pagename: tk-alias -lang: zh_CN ---- - -# Alias - -{% include product %} Alias 插件包含一个用于在 Alias 中集成 {% include product %} 应用的标准平台。它采用轻量型设计,操作简单直观,并会向 Alias 菜单中添加一个 {% include product %} 菜单。 - -# 应用开发人员须知 - -## PySide - -{% include product %} Alias 插件使用随 {% include product %} Desktop 发行的 PySide 版本,并在必要时将其激活。 - -## Alias 项目管理 - -{% include product %} Alias 插件在每次启动时,都会将 Alias 项目设置为指向此插件的设置中定义的位置。这意味着,当您打开新文件时,项目也可能会发生变化。设置Shotgun Alias 项目的详细信息,可以使用模板系统,在配置文件中配置。 - -*** - -# 使用 tk-alias - -此 {% include product %} 集成支持 Alias 应用程序系列(Concept、Surface 和 AutoStudio)。 - -当 Alias 打开时,{% include product %} 菜单(Alias 插件)会添加到菜单栏中。 - -![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunOtherApps.png) - - -### 文件打开和保存 - -使用“我的任务”(My Tasks)和“零部件”(Assets)选项卡可以查看您的所有已分配任务,并浏览零部件。在右侧,使用这些选项卡可以查看所有文件、与左侧选定内容关联的工作文件或已发布文件。 - -![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunFileOpen.png) - -![](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) - -![](https://help.autodesk.com/cloudhelp/2020/CHS/Alias-Shotgun/images/ShotgunLoader.png) - -### 场景细分 - -打开“细分”(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-create.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-create.md deleted file mode 100644 index 329f072c2..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-create.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Create -pagename: tk-create -lang: zh_CN ---- - -# {% include product %} 创建 - -Desktop2 插件是在 [{% include product %} Create](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_create_sa_intro_create_html) 应用程序内部运行的插件。它用于从 {% include product %} Create 启动 DCC,以及通过浏览器集成从 {% include product %} Web 应用程序启动 DCC。 - -tk-desktop2 插件支持 Toolkit 与 {% include product %} Create 的集成。{% include product %} Create 支持 Toolkit 用户熟悉的功能,包括 [DCC 启动](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Supervisor_Artist_sa_create_sa_create_artists_html#launching-your-creative-apps)。 - -![](../images/engines/create-dcc-01.png) - -![](../images/engines/create-dcc-02.png) - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-desktop2 -Updating to the latest version -``` - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 `tank` 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-desktop2)。 - -## 特殊要求 - -需要安装 {% include product %} Pipeline Toolkit 核心 API 版本 v0.19.1 或更高版本才能使用此功能。 \ No newline at end of file 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 deleted file mode 100644 index 444a3050a..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-desktop.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Desktop -pagename: tk-desktop -lang: zh_CN ---- - -# Desktop - -tk-desktop 插件是一个让您易于运行 Toolkit 应用的应用程序。它是一个基于系统托盘的窗口,通过它可轻松上手使用 Toolkit,为 Toolkit 设置项目,以及访问项目的工作流。 - -## 站点配置和项目配置 - -![进程](../images/engines/processes.png) - -当您启动 Desktop 应用程序时,它会为站点配置启动 tk-desktop 插件。 此配置的管理通常是自动的,但是我们也可以禁用自动管理,自己控制环境中的一切。 - -Toolkit 的一个基本原则是,各个项目可以完全彼此隔离。 通常,这是为了确保一个项目的更改不会对另一个项目造成不利影响(临近交付时可能出现这种情况)。为了提供这种项目隔离机制,Desktop 插件确保无论您何时使用某个特定项目的命令,都将在专为这个项目初始化的单独 Python 解释器中运行它们。 - -当您单击一个项目时,后台会启动一个 Python 解释器。此 Python 解释器是为该项目配置的解释器,启动时将为该项目初始化 tk-desktop。 插件的这个实例会与图形用户界面通信,指示可以启动什么命令。 - -当您单击一个命令时,后台运行的 Python 进程会负责启动该命令。 这样,您便可以(例如)在一个项目上运行 Python 2.6,在另一个项目上测试 Python 2.7。 - -## 注册自定义面板 - -具有[基于面板的 UI](http://developer.shotgridsoftware.com/tk-core/platform.html#sgtk.platform.Engine.show_panel) 的 Toolkit 应用执行时将自动停靠在 Desktop 内的选项卡中。 - -如果您有基于面板的应用(如 {% include product %} 面板)并希望它在 {% include product %} Desktop 中显示为选项卡,只需将其配置为在启动时运行。Desktop 在其站点上下文模式下启动时(此时它显示所有项目),它将启动注册为自动启动的所有项。如果其中任何项是面板,则这些项将会停靠。这些项按其在配置中定义的顺序进行处理,该顺序即表示选项卡顺序。 - -例如,如果您希望 {% include product %} 面板在 {% include product %} Desktop 中显示为选项卡,则为您的站点级环境添加以下配置: - -```yaml -tk-desktop: - apps: - tk-multi-shotgunpanel: - actions_hook: ... - action_mappings: ... - location: ... - location: ... - run_at_startup: - - {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 deleted file mode 100644 index 1cb6b7208..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-flame.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: default -title: Flame -pagename: tk-flame -lang: zh_CN ---- - -# Flame - -## 安装 - -{% 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 配置(在默认配置部分)即可。 - -## Flame 项目设置 - -{% include product %} Flame 插件还能帮您将 {% include product %} 项目与 Flame 项目关联起来,需要时还可创建 Flame 项目。这是集成的关键所在,因为这可以确保 Flame 的数据与 {% include product %} 中的正确数据相关联。作为一项附加特性,插件还提供管理 Flame 项目命名约定以及项目其他各种设置的功能。 - -首次通过 {% include product %} 启动 Flame 时,会显示一个创建 Flame 项目的用户界面,让艺术家可在标准 Flame 项目创建屏幕中编辑常用设置: - -![项目](../images/engines/flame_project.png) - -但是,利用 {% include product %} 集成,我们可以为这些设置预先填充适合工作流的值,帮助艺术家不假思索地快速获取需要的内容。默认值可通过 `project_setup_hook` 进行自定义,此设置支持以下选项: - -`use_project_settings_ui` 如果设置为 `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 流。 *必须*提供以下参数: - -* 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 文档](https://www.autodesk.com/developer-network/platform-technologies/wiretap)! - -要查看 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 deleted file mode 100644 index 8ace71419..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-houdini.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: default -title: Houdini -pagename: tk-houdini -lang: zh_CN ---- - -# Houdini - -{% include product %} Houdini 插件包含一个用于在 Houdini 中集成 {% include product %} 应用的标准平台。 - -![{% include product %} Houdini 插件](../images/engines/houdini_engine.png) - - -# 应用开发人员须知 - -## 支持的平台 - -{% include product %} Houdini 插件目前支持在 Windows、Linux 和 OS X 平台运行 - -## PySide - -对于先前的 Houdini 版本(13 及更早),需要安装 PySide 的外部版本。在 Windows 上,我们已经捆绑了一个兼容的 PySide 版本,该版本可支持 Houdini 运行的 Python。在 Linux 上,Houdini 使用系统 Python(依据 http://www.sidefx.com/docs/houdini12.0/hom/),需要有 PySide 或 PyQt 支持。 - -## 菜单加载 - -![{% include product %} 菜单](../images/engines/houdini_menu.png) - -自 Houdini 15 起,Side Effects 引入了一个动态菜单系统,因此插件现在支持在上下文切换时重建 {% include product %} 菜单。 - -在 Houdini 14 及更早的版本中,{% include product %} 菜单在 Houdini 启动前生成,并且在整个会话期间是静态的。因此,菜单中注册的 Toolkit 命令不会随上下文变化而更新。 - -## {% include product %} 工具架 - -![{% include product %} 工具架](../images/engines/houdini_shelf.png) - -发布版本 **v0.2.4** 为插件引入了一个动态的 {% include product %} 工具架。此工具架将所有注册的应用命令显示为工具按钮。按钮将按照与菜单命令大致相同的顺序显示。 - -使用 `enable_sg_shelf` 设置可在环境内开启此工具架。如果使用不支持动态菜单的 Houdini 版本(14 或更早的版本),使用工具架时可能还要关闭 {% include product %} 菜单。通过将 `enable_sg_menu` 设置设定为 `false`,可以做到这一点。 - -要启用通过工具架切换上下文的功能,您还需要在插件配置中向 `tk-multi-workfiles` 应用的 `sg_entity_types` 设置添加实体类型。 - -{% include product %} 工具架的相关设置看起来如下所示: - -```yaml -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 - enable_sg_shelf: true - enable_sg_menu: false - # ... other engine settings -``` - -启用 {% include product %} 工具架后,您需要手动将它添加到 Houdini 内部的一个工具架集。 - -![添加 {% include product %} 工具架](../images/engines/add_shelf.png) - -{% include product %} 工具架添加到工具架集后,在两次 Houdini 会话之间将留在该工具架集中,并会随 {% include product %} 上下文的变化动态更新。 - -## 面板 - -自 **v0.2.8** 起,插件增加了对嵌入式 Toolkit 面板的支持。 - -面板支持目前需要使用 Houdini 版本 **15.0.272** 或更新版本,以便面板正确嵌入。在支持的 Houdini 版本中,注册的面板将以窗格形式显示在窗格菜单中。 - -在先前的 Houdini 版本中,注册面板将显示为对话框。SESI 可能会将某些问题修复向后移植到 Houdini 14 的较新内部版本中。当出现这种情况时,我们会使嵌入式面板也支持这些版本。 - -## 具有 OTL 的应用 - -{% include product %} Houdini 插件让您可轻松加载应用程序随附的 OTL。如果您编写的应用使用 OTL,只需将这些 OTL 放入名为 **otls** 的文件夹,插件便会自动将它们加载到会话中: - -![Houdini OTL](../images/engines/otls_path.png) - -然后,您可以通过常用的 Houdini 方法轻松访问您的节点。 - -**警告!!**请注意,虽然 OTL 用起来可能很方便,但如果您想在场景中创建持久性节点,OTL 通常不是正确的做法。这是因为一旦将 OTL 放入场景,就在该场景与 OTL 代码之间建立了依赖关系。这样,不仅需要在每次加载场景时都加载 {% include product %} Toolkit,还需要小心管理代码,确保代码的任何更新都不会影响场景中使用的旧 OTL。 - -## 在 OS X 上通过终端进行启动调试 - -在 OS X 上为 `tk-houdini` 插件开启 `debug_logging` 功能,并不会将所有调试消息都发送至终端。这是因为 [`tk-multi-launchapp`](https://github.com/shotgunsoftware/tk-multi-launchapp) 应用默认使用 `open` 命令启动可执行文件。这样并不会从终端生成一个新的子进程,而是使用 OS X 的启动服务在别处创建一个新进程。因此,不会显示日志语句。即使在用户默认桌面的 Houdini 中保存一个 Python Shell,似乎也不会在启动时显示调试语句。启动后,嵌入式 Python Shell 会显示调试日志记录语句,但是启动期间的可用输出存在差异。如果您需要在插件启动期间访问调试日志记录语句,可以进行两处更改。 - -首先,更改测试配置中的 `houdini_mac` 路径(临时),将其指向 Houdini 应用包内的可执行文件。例如: - -```yaml -#houdini_mac: /Applications/Houdini 15.0.272/Houdini Apprentice.app -houdini_mac: /Applications/Houdini\ 15.0.272/Houdini\ Apprentice.app/Contents/MacOS/happrentice -``` - -接下来,可以在测试配置的 `config/hooks` 目录中为 `tk-multi-launchapp` 应用的 `app_launch` 挂钩创建一份副本,并在 `config/env/includes/app_launchers.yml` 文件中指向该副本: - -```yaml -launch_houdini: - defer_keyword: '' - engine: tk-houdini - extra: {} - 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' - menu_name: Launch Houdini - versions: [] - windows_args: '' - windows_path: '@houdini_windows' -``` - -然后,只需修改启动逻辑,直接启动可执行文件即可。例如,您可以针对目录(应用程序包)保留旧的行为,在其他情况下直接执行命令。示例如下: - -```python - elif system == "darwin": - # on the mac, the executable paths are normally pointing - # to the application bundle and not to the binary file - # embedded in the bundle, meaning that we should use the - # built-in mac open command to execute it - if os.path.isdir(app_path): - cmd = "open -n \"%s\"" % (app_path) - if app_args: - cmd += " --args \"%s\"" % app_args.replace("\"", "\\\"") - - # not a directory, execute directly - else: - cmd = "%s %s" % (app_path, app_args.replace("\"", "\\\"")) -``` - -下次在终端中通过 `tank` 运行 `launch_houdini` 时,应该可以得到所有调试输出信息。完成测试后,别忘了还原路径并撤消所做的应用启动更改。祝您调试顺利! diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-mari.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-mari.md deleted file mode 100644 index 1cdd5d823..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-mari.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Mari -pagename: tk-mari -lang: zh_CN ---- - -# Mari - -{% include product %} Mari 插件包含一个用于在 Mari 中集成 {% include product %} Toolkit 应用的标准平台。它采用轻量型设计,操作简单直观,并会向主菜单中添加一个 {% include product %} 菜单。 - -## 支持的应用程序版本 - -此插件已经过测试,已知可支持以下应用程序版本:2.6 - 4.6。请注意,它完全可能(甚至很可能)与较新版本配合使用,但尚未对这些版本进行正式测试。 - -## 概述视频 - -请参见[此处](https://youtu.be/xIP7ChBWzrY)的概述视频。 - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-mari -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 `tank` 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和 {% include product %} 的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-mari)。 - - - - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-maya.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-maya.md deleted file mode 100644 index 406be357e..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-maya.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -title: Maya -pagename: tk-maya -lang: zh_CN ---- - -# Maya - -{% include product %} Maya 插件包含一个用于在 Maya 中集成 {% include product %} 应用的标准平台。它采用轻量型设计,操作简单直观,并会向 Maya 菜单栏中添加一个 {% include product %} 菜单。 - -![插件](../images/engines/maya_menu.png) - -## PySide - -{% include product %} Maya 插件包含一个 PySide 安装,必要时会激活此安装。 - -## Maya 项目管理 - -{% include product %} Maya 插件在每次启动时,都会将 Maya 项目设置为指向此插件的设置中定义的位置。这意味着,当您打开新文件时,项目也可能会发生变化。我们可以使用模板系统,在配置文件中配置有关基于文件设置 Maya 项目的详细信息。 - -## 支持的应用程序版本 - -此插件已经过测试,已知可支持以下应用程序版本:2014 - 2022。 请注意,此插件也许(甚至非常有可能)支持更新的发行版本,但是尚未正式在这些版本中进行测试。 - -## 安装和更新 - -将此插件添加到 {% include product %} Pipeline Toolkit -如果要将此插件添加到 Project XYZ 和名为 asset 的环境,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-maya -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-maya)。 - - - - - diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md deleted file mode 100644 index 553eadc3a..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-motionbuilder.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: default -title: Motion Builder -pagename: tk-motionbuilder -lang: zh_CN ---- - -# Motion Builder - -![插件](../images/engines/sg_mobu_1.png) - -{% include product %} Motion Builder 插件包含一个用于在 Motion Builder 中集成 {% include product %} Toolkit 应用的标准平台。它采用轻量型设计,操作简单直观,并会向主菜单中添加一个 {% include product %} 菜单。 - -![插件](../images/engines/mobu.png) - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-motionbuilder -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以访问此代码库 (https://github.com/shotgunsoftware/tk-motionbuilder)。 - - - 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 deleted file mode 100644 index 0e2a72134..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-nuke.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -layout: default -title: Nuke -pagename: tk-nuke -lang: zh_CN ---- - -# Nuke - -{% include product %} Nuke 插件包含一个用于在 Nuke、Nuke Studio 和 Hiero 中集成 {% include product %} 应用的标准平台。它采用轻量型设计,操作简单直观,并会向 Nuke 中添加一系列新功能。 - -它会在 Nuke 中创建一个 **{% include product %} 菜单**,上面显示各种菜单项: - -![菜单](../images/engines/nuke-menu.png) - -它会在 Nuke 中创建一个 **{% include product %} 节点菜单**,上面显示各种菜单项: - -![节点菜单](../images/engines/nuke-nodes_menu.png) - -它会向文件对话框中添加 {% include product %} 快捷方式,以便可轻松跳转至文件系统的不同位置: - -![收藏夹](../images/engines/nuke-favourites.png) - -您可以使用 `favourite_directories` 设置,基于当前环境中的模板路径添加自己的快捷方式。该设置应为词典列表,每个列表项表示一个新的收藏夹目录。下面是一个可使用的格式示例:(也可以不指定图标,方法是提供 "" 值。) - -```yaml - favourite_directories: - - display_name: "Shot Publish Path" - template_directory: "shot_publish_area_nuke" - icon: "icons/custom_publish_icon.png" - - display_name: "Shot Work Path" - template_directory: "shot_work_area_nuke" - icon: "icons/custom_work_icon.png" -``` - -对于定义的每个根目录,会自动添加一个“{% include product %} Current Project”收藏夹。您可以使用 `project_favourite_name` 设置来自定义名称,也可以将此值设置为空字符串 `''`,禁用这些收藏夹。 - - - -*** - -_注意:目前,Nuke 8.0 在 CentOS 6.5 这个特定版本上运行时存在一个错误,会导致 Nuke 在运行 Toolkit 时发生崩溃。其他版本的 CentOS 不受影响。The Foundry 已知晓此问题(错误号 43766)。如果您遇到此问题,请联系我们,我们可以尝试帮助您以变通方法暂时绕过此问题,直到 Nuke 在以后的更新中修复它。_ - - -## 应用开发人员须知 - -### 上下文跟踪 - -{% include product %} Nuke 插件会在加载文件时自动切换上下文。文件加载后,插件会查看该文件,并尝试从中解析上下文。 - -### 具有自定义小控件的应用 - -{% include product %} Nuke 插件让您可轻松处理自定义小控件 (Gizmo)。如果您编写的应用使用自定义小控件,只需将这些小控件放入名为 **gizmos** 的文件夹,插件便会自动将该位置添加到 nuke 路径: - -![小控件](../images/engines/nuke-gizmo.png) - -然后,您可以通过“创建节点”功能轻松访问小控件: - -* `nuke.createNode("WriteTank")` - -{% include info title="警告" content="请注意,虽然小控件用起来可能很方便,但如果您想在场景中创建持久性节点,小控件通常不是正确的做法。这是因为一旦将小控件放入场景,就在该场景与小控件代码之间建立了依赖关系。这样,不仅需要在每次加载场景时都加载 ShotGrid Toolkit,还需要小心管理代码,确保代码的任何更新都不会影响场景中使用的旧的小控件。" %} - -### 创建节点的应用 - -对于会创建自定义 Nuke 节点的应用,需要小心对待。我们建议不要使用小控件,因为它们需要在场景与小控件代码之间建立依赖关系。可以将自定义节点另存为 Nuke 文件,然后将它们导入场景: - -```python - group_node_script = os.path.join(self.disk_location, "resources", "my_group_node.nk") - group_node = nuke.nodePaste(group_node_script) -``` - -任何从应用内调用节点的代码均可直接使用返回的实例。 - -任何需要从组内部调用应用的代码,在调用时要特别小心,以确保代码的向后兼容性。我们建议您遵循以下做法: - -应用启动时,将应用句柄注册为 Nuke 命名空间的一部分: - -```python - def init_app(self): - - nuke.tk_nuke_nameofmyapp = self -``` - -如果您在组节点上有一个按钮,并且想调用某段 {% include product %} 应用代码,当找不到 {% include product %} Toolkit 时,请尝试以正常方式提示失败。下面的代码与一个 Python 按钮关联,该按钮属于应用可以创建的组节点: - -```python -# have to gracefully support the case when -# sgtk is not in the system at all! -import nuke -try: - app = nuke.tk_nuke_nameofmyapp - app.do_something_v1(nuke.thisNode()) -except: - nuke.warning("Could not do XYZ! Most likely Sgtk is not currently active.") -``` - -如果您更改了应用的行为,只需在应用回调时保持版本号递增,这样您的应用代码就能同时支持新旧两种行为。 - -## 在 Hiero 内使用 {% include product %} Nuke 插件 - -{% include product %} Nuke 插件还用于构建在 Hiero 内运行的可感知 {% include product %} 的集成。 - -通过它,您可以在应用程序中的一些位置放置 {% include product %} 应用动作,比如在主菜单栏上的特定 {% include product %} 菜单中和不同 Hiero 面板中的各种右键单击上下文菜单中。 - -![菜单](../images/engines/nuke-hiero-menus.png) - -### 如何配置 Hiero 菜单 - -由于 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...} -``` - -大多数插件都有一个 `menu_favourites` 选项,这是一个列表,您可以在这里指定要放在 {% include product %} 主菜单上的“快捷方式”。除此以外,特定于 Hiero 的配置还有三个特殊部分: - -- `timeline_context_menu` 表示在时间线编辑器中的视频片段上单击鼠标右键时弹出的菜单。 -- `spreadsheet_context_menu` 表示在电子表格编辑器中的选定项上单击鼠标右键时弹出的菜单。 -- `bin_context_menu` 表示在 bin 编辑器中的选定项上单击鼠标右键时弹出的菜单,您可以在该菜单上看到所有不同的项目和媒体。 - -要向这些菜单中添加菜单项,只需确保配置中定义的 `name` 字段与应用在自己菜单中显示的内容一致即可。 - -#### 需要用到当前场景概念的应用 - -某些 Toolkit 应用需要用到默认场景或默认项目的概念。例如,快照应用知道如何为当前场景拍摄快照。但是,与 Maya 或 Nuke 不同,Hiero 没有当前场景的概念。在 Hiero 中,可以同时打开多个项目。因此,您常常需要在挂钩中添加特殊的逻辑,帮助应用(比如快照应用)识别用户正在单击哪个项目。在本文档接下来的部分,我们将对此加以说明。 - -### 应用开发人员须知 - -因为 Hiero 没有当前项目的概念,我们加入了更强大的工具,让应用很容易就能识别用户在 Hiero 内单击了什么对象。{% include product %} Hiero 插件为此加入了两个方法: - - -#### get_menu_selection() - -返回最近一次单击菜单操作选中的 Hiero 对象的列表。 -此列表可能包含各种类型的内容项。要了解哪种方法到底返回了什么内容,可开启调试日志记录功能 - 此功能会将具体的过程打印出来。 - -下面是返回的各种对象的示例: - -- 在 bin 视图中选择一个项目:[hiero.core.Bin](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.Bin) -- 在 bin 视图中选择一个内容项:[hiero.core.BinItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.BinItem) -- 选择轨道:[hiero.core.TrackItem](https://learn.foundry.com/hiero/developers/2.0/hieropythondevguide/api/api_core.html#hiero.core.TrackItem) - -`list` engine_object.get_menu_selection() - -**参数和返回值** - -* **返回值:**Hiero 对象列表 - -**示例** - -获取最近一次单击操作选中的对象,确保选中的只有一个对象,并且此对象是有效的 Hiero 项目。 例如,当您想在 Hiero 中触发某个项目的保存、加载或发布操作时,此设置非常有用。 - -```python -# get the menu selection from the engine -selection = engine_obj.get_menu_selection() - -if len(selection) != 1: - raise TankError("Please select a single Project!") - -if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - -project = selection[0].project() -if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") -``` - -#### HieroEngine.get_menu_category() - -返回上次发生单击菜单操作的用户界面区域。此命令不太可能会用到 - 当您希望应用命令根据调用它时所在的菜单做出不同行为时,可能需要使用此命令。 - -`area_enum` engine_object.get_menu_category() - -**参数和返回值** - -返回以下常量之一: - -- `HieroEngine.HIERO_BIN_AREA` -- `HieroEngine.HIERO_SPREADSHEET_AREA` -- `HieroEngine.HIERO_TIMELINE_AREA` -- `None`(表示未知或未定义) - -#### 如何配置挂钩以支持 Hiero - -为 Hiero 配置的多用应用通常需要判断用户单击的是哪个项目。例如,`tk-multi-workfiles` 应用需要对项目执行“{% include product %} 另存为”操作。因此,我们向 Hiero 中的 bin 菜单添加了 Tank Save As 命令,这样用户便可在 bin 视图中的项目上单击鼠标右键并选择“另存为”(Save As)**选项。 - -![菜单](../images/engines/nuke-hiero-bin_menu.png) - -插件配置将如下所示: - -```yaml -bin_context_menu: -- {app_instance: tk-multi-workfiles, keep_in_menu: false, name: "{% include product %} Save As...", requires_selection: true} -``` - -现在,在应用本身中,每个插件需要配置一个挂钩,用来处理诸如保存和加载这样的场景事件。 对于 Maya 或 Nuke 这样的应用程序,通常只要进行保存、加载等操作即可。 -但是对于 Hiero,则需要首先判断用户实际单击的是哪个项目。上面示例中的挂钩代码将如下所示: - -```python -class SceneOperation(Hook): - """ - Hook called to perform an operation with the - current scene - """ - - def execute(self, operation, file_path, context, **kwargs): - """ - Main hook entry point - - :operation: String - Scene operation to perform - - :file_path: String - File path to use if the operation - requires it (e.g. open) - - :context: Context - The context the file operation is being - performed in. - - :returns: Depends on operation: - 'current_path' - Return the current scene - file path as a String - 'reset' - True if scene was reset to an empty - state, otherwise False - all others - None - """ - - if operation == "current_path": - # return the current script path - project = self._get_current_project() - curr_path = project.path().replace("/", os.path.sep) - return curr_path - - elif operation == "open": - # open the specified script - hiero.core.openProject(file_path.replace(os.path.sep, "/")) - - elif operation == "save": - # save the current script: - project = self._get_current_project() - project.save() - - elif operation == "save_as": - project = self._get_current_project() - project.saveAs(file_path.replace(os.path.sep, "/")) - - elif operation == "reset": - # do nothing and indicate scene was reset to empty - return True - - elif operation == "prepare_new": - # add a new project to hiero - hiero.core.newProject() - - - def _get_current_project(self): - """ - Returns the current project based on where in the UI the user clicked - """ - - # get the menu selection from the engine - selection = self.parent.engine.get_menu_selection() - - if len(selection) != 1: - raise TankError("Please select a single Project!") - - if not isinstance(selection[0] , hiero.core.Bin): - raise TankError("Please select a Hiero Project!") - - project = selection[0].project() - if project is None: - # apparently bins can be without projects (child bins I think) - raise TankError("Please select a Hiero Project!") - - return project -``` - -#### 使用调试日志记录功能查看菜单事件 - -如果您想知道单击某个选择项时 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 deleted file mode 100644 index 0a2b24932..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-photoshopcc.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: Photoshop -pagename: tk-photoshopcc -lang: zh_CN ---- - -# Photoshop - -{% include product %} Photoshop CC 插件提供一个用于在 Photoshop CC 工作流中集成 {% include product %} 的标准平台。它包含一个标准 {% include product %} Pipeline Toolkit 插件并依赖于 [tk-framework-adobe](https://github.com/shotgunsoftware/tk-framework-adobe) (CEP)。 - -启用后,Photoshop CC 中将出现一个 **{% include product %}** 面板。此面板显示有关当前 {% include product %} 上下文以及该上下文中安装的应用注册的各种命令的信息。 - -![扩展](../images/engines/photoshopcc-photoshopcc_extension.png) - -## 界面概述 - -{% include product %} 扩展面板采用与原生 Photoshop CC 面板相同的配色和基本布局。面板有五个部分组成: - -![扩展组件](../images/engines/photoshopcc-extension_components.png) - -1. **上下文标题** - 当前上下文的缩略图和字段。 -2. **收藏工具架** - 用于显示当前上下文中最常用的应用。 -3. **命令列表** - 当前上下文的所有未收藏命令。 -4. **上下文菜单** - 其他与上下文相关的命令和调试工具。 -5. **日志记录控制台** - 一个控制台叠加层,显示调试的日志记录输出。 - -## 安装 - -{% include product %} Photoshop CC 插件在安装方面遵循与其他 {% include product %} 集成相同的协议。有关安装插件和应用的信息,请参见[管理 Toolkit](https://developer.shotgridsoftware.com/zh_CN/425b1da4/) 文章。此外,您还可以参考[默认 Toolkit 配置](https://github.com/shotgunsoftware/tk-config-default2),以它为例了解如何配置集成。 - -## 启用扩展 - -安装此扩展后,需要通过 Photoshop CC 中的扩展菜单启动它。 - -![扩展菜单](../images/engines/photoshopcc-extensions_menu.png) - -此操作只需要做一次,之后 {% include product %} 扩展面板便可一直留在 Photoshop CC 布局中,后续启动时不必再启用。 - -启用后,在以后启动时,扩展面板将在引导 {% include product %} 集成期间显示一个正在加载屏幕。 - -此屏幕通常会持续显示几秒钟,待当前上下文确定后再显示命令。 - -## 界面组成部分 - -以下部分概述了 {% include product %} Photoshop CC 集成的组成部分。 - -### 上下文标题 - -上下文标题是一个可自定义的区域,可显示有关当前 {% include product %} 上下文的信息。 - -![扩展标题](../images/engines/photoshopcc-extension_header.png) - -上下文由当前激活的文档决定。插件确定上下文后,标题会更新并显示上下文的缩略图字段详情。这些字段信息由一个挂钩来控制。有关如何对字段的显示进行自定义的信息,请参见下面的**上下文字段显示挂钩** 部分。 - -另外还要注意的是,由于 Photoshop CC 是一个多文档界面,上下文(因此也包括 {% include product %} 扩展)会随着您切换激活文档而更新。艺术家要理解这种行为,特别是当同时在多个 {% include product %} 上下文中工作时,明白这一点非常重要。 - -### 收藏工具架 - -收藏工具架与 Maya 和 Houdini 等其他 {% include product %} DCC 集成中提供的菜单收藏夹类似。在界面的这个部分,用户随手即可访问最常用的 Toolkit 应用,并可按照上下文标题轻松找到应用。 - -![扩展工具架](../images/engines/photoshopcc-extension_shelf.png) - -此工具架以按钮的形式显示收藏的命令,将鼠标移至这些按钮时,按钮从灰色变为彩色,同时顶部的标签中显示它们的名称。将鼠标悬停在按钮上方时,将显示它们的工具提示。 - -单击其中一个按钮,将触发回调,执行注册的命令。 - -有关如何指定命令收藏夹的详细信息,请参见下面的**工具架收藏夹**部分。 - -### 命令列表 - -命令列表显示当前上下文注册的其他“常规”命令。 - -![扩展命令](../images/engines/photoshopcc-extension_commands.png) - -通常,工作流配置内安装的应用会注册一个或多个命令,这些命令将显示在这里。如果命令未标识为收藏项,也未被指定为上下文菜单命令,它们将显示在此处。 - -命令列表中按钮的行为与收藏工具架中按钮的行为类似。唯一真正的区别在于它们以列表的形式显示,并且其图标右侧带有完整名称。 - -### 上下文菜单 - -所有注册为上下文菜单命令的命令将显示在 {% include product %} 扩展面板的上下文菜单中。 - -![扩展上下文菜单](../images/engines/photoshopcc-extension_context_menu.png) - -与其他命令区域一样,这些命令会随上下文一起变化。诸如 **Jump to {% include product %}** 和 **Jump to Filesystem** 这样的命令将始终位于此处。 - -### 日志记录控制台 - -日志记录控制台同时显示来自 CEP Javascript 解释器和 Toolkit Python 进程的所有日志记录输出。 - -![扩展](../images/engines/photoshopcc-extension_console.png) - -当扩展遇到任何需要技术支持的问题时,日志记录控制台的输出就变得极为有用,这些信息可帮助 {% include product %} 技术支持团队调试问题。 - -## 配置和技术细节 - -以下部分对集成中技术性更强的一些方面进行了概述,以帮助您根据自己工作室工作流的具体需求来配置集成。 - -### PySide - -{% include product %} Photoshop CC 插件依赖于 PySide。请参见有关[安装 Pyside](http://pyside.readthedocs.io/en/latest/installing/index.html) 的官方说明。 - -### CEP 扩展 - -扩展本身与插件捆绑在一起,插件会在首次启动 Photoshop CC 时自动安装扩展。扩展安装在美工人员的本地计算机上,位于操作系统特定的标准 CEP 扩展目录中: - -```shell -# Windows -> C:\Users\[user name]\AppData\Roaming\Adobe\CEP\extensions\ - -# OS X -> ~/Library/Application Support/Adobe/CEP/extensions/ -``` - -每次启动 Photoshop CC 时,插件引导代码会对照计算机上安装的扩展版本,检查随插件捆绑的扩展版本。这意味着,当插件更新后,假设它随附了一个新的扩展版本,已安装的扩展会自动更新为新捆绑的版本。 - -### 配置收藏夹 - -我们可以配置**收藏工具架**,让它显示已安装应用的任何注册命令。要执行此操作,只需向环境配置的 `tk-photoshopcc` 部分添加 `shelf_favorites` 设置即可。示例如下: - -```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` 键标识了一个特定的已安装应用,`name` 键则与该应用注册的命令的显示名称一致。在上面的示例中,您可以看到四个收藏的命令:`tk-multi-workfiles2` 应用的“File Open”和“File Save”对话框,以及 Toolkit 的“发布”(Publish)和“Snapshot”标准对话框。这四个命令现在将显示在收藏工具架中。 - -### 上下文字段显示挂钩 - -插件随附了一个挂钩,用来控制面板的**上下文标题**部分显示的字段。我们可以改写挂钩中的两个方法来自定义显示的内容。 - -第一个方法是 `get_entity_fields()` 方法。此方法接受一个表示当前 {% include product %} 上下文的实体类型。返回的值应该是要为该实体查询并显示的各个字段的列表。插件自己负责异步查询数据。 - -从 {% include product %} 查询到数据后,会调用挂钩中的第二个方法。此方法是 `get_context_html()` 方法,它接受上下文实体词典,其中填充有 `get_entity_fields()` 方法指定的查询字段。返回的值应该是一个字符串,该字符串包含带格式的 HTML,用以显示查询到的实体字段。 - -[默认的挂钩执行](https://github.com/shotgunsoftware/tk-photoshopcc/blob/master/hooks/context_fields_display.py)对于了解这些方法都需要什么来说是一个很好的参考。 - -要注意的是,插件始终会显示实体的缩略图(如果有的话)。 - -### Photoshop API - -插件向 Python 公开了适用于 Photoshop CC 的 Javascript API。单击[此处](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2015.pdf)可查看此 API 的完整文档。 - -Photoshop API 对象被公开为 `engine.adobe`。下面的示例说明怎样才能从 Toolkit 应用和挂钩内直接操纵 Photoshop DOM。标准 Toolkit 应用还包含有关如何与 Photoshop 文档进行交互的可行示例。 - -#### 示例 -加载文件: - -```python -f = adobe.File('/Path/To/File.jpeg') -adobe.app.load(f) -``` - -将标尺单位设置为像素 (PIXELS): - -```python -pixels = adobe.Units.PIXELS -adobe.app.preferences.rulerUnits = pixels -``` - -使用默认选项将当前文档导出为 Web 格式: - -```python -temp_thumb_file = adobe.File(out_path) -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() -adobe.app.activeDocument.exportDocument(temp_thumb_file, save_for_web, export_options) -``` - -将每个层导出为单独的文件: - -```python -doc = adobe.app.activeDocument -layers = doc.artLayers -layers = [layers[i] for i in xrange(layers.length)] -original_visibility = [layer.visible for layer in layers] - -save_for_web = adobe.ExportType.SAVEFORWEB -export_options = adobe.ExportOptionsSaveForWeb() - -for layer in layers: - layer.visible = False - -for layer in layers: - layer.visible = True - out_file = adobe.File("c:/layer.%s.jpg" % str(layer.name)) - doc.exportDocument( - out_file, - save_for_web, - export_options, - ) - layer.visible = False - -for (i, layer) in enumerate(layers): - layer.visible = original_visibility[i] -``` - -### 环境变量 - -为了辅助调试,有一组环境变量可用来更改插件的某些默认值: - -`SHOTGUN_ADOBE_HEARTBEAT_INTERVAL` - Python 的心跳检测间隔(以秒为单位,默认为 1 秒)。如果设置了旧的环境变量 `SGTK_PHOTOSHOP_HEARTBEAT_INTERVAL`,此变量也有效。 - -`SHOTGUN_ADOBE_HEARTBEAT_TOLERANCE` - 退出前允许出现的心跳检测错误的数量(默认值为 2)。如果设置了旧的环境变量 `SGTK_PHOTOSHOP_HEARTBEAT_TOLERANCE`,此变量也有效。 - -`SHOTGUN_ADOBE_NETWORK_DEBUG` - 在输出日志记录时包含附加的网络连接调试消息。如果设置了旧的环境变量 `SGTK_PHOTOSHOP_NETWORK_DEBUG`,此变量也有效。 - -`SHOTGUN_ADOBE_PYTHON` - 启动插件时使用的 Python 可执行文件的路径。如果不设置,将使用系统的 Python。如果 Photoshop 是从某个 Python 进程启动(如 {% include product %} Desktop 或通过 tk-shell 插件),则 Photoshop 集成将使用该进程使用的 Python。 - -注意:其他环境变量存在于 Adobe 框架中。有关详细信息,请参见[开发人员文档](https://developer.shotgridsoftware.com/tk-framework-adobe/)。 - -### 应用开发人员须知 - -* 因为 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-shell.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shell.md deleted file mode 100644 index 31e587543..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shell.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: 壳 -pagename: tk-shell -lang: zh_CN ---- - -# 壳 - -{% include product %} Shell 插件可处理命令行的交互,并与随核心 API 一起分发的 `tank` 命令紧密集成。当您在终端中执行 `tank` 命令时,Toolkit 会启动该插件来负责应用的执行。 - -有关 tank 命令的详细信息,请参见[高级 Toolkit 管理文档](https://developer.shotgridsoftware.com/zh_CN/425b1da4/?title=Advanced+Toolkit+Administration#using-the-tank-command)。 - -![插件](../images/engines/sg_shell_1.png) - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - - -``` -> tank Project XYZ install_engine asset tk-shell -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 `tank` 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以通过 https://github.com/shotgunsoftware/tk-shell 访问此代码库。 \ No newline at end of file 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 deleted file mode 100644 index 261d35bdb..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-shotgun.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -title: ShotGrid -pagename: tk-shotgun -lang: zh_CN ---- - -# {% include product %} - -![插件](../images/engines/sg_shotgrid_engine_1.png) - -{% include product %} 插件用来管理可以从 {% include product %} 内启动的应用。有时,我们称这些 Toolkit 应用为“动作”**。它们通常以菜单项的形式显示在 {% include product %} 内的菜单上。 - -## 使用 {% include product %} Pipeline Toolkit 动作 - -{% include product %} 主页上列出了这些动作: - -![动作 1](../images/engines/shotgun-action1.png) - -另外,您也可以在标准 {% include product %} 上下文菜单上找到这些动作,在对象或选择内容上单击鼠标右键即可显示上下文菜单: - -![动作 2](../images/engines/shotgun-action2.png) - -单击某个动作,将立即开始处理操作。应用完成处理后,通常会显示一条包含状态信息的消息,如果动作未正常运行,则会显示错误消息。 - -## 为 {% include product %} 开发应用 - -开发在 {% include product %} 内运行的应用非常简单!如果您不熟悉应用开发的一般流程,请访问平台文档库阅读相关的介绍资料。在这部分,我们将只介绍应用开发流程中特定于 {% include product %} 的方面! - -自 Core v0.13 起,所有多用应用都可以与 {% include product %} 插件一起使用。从技术上讲,{% include product %} 插件与其他插件没有太大区别,但还是有些细微差异: - -* 如果想在 {% include product %} 插件中执行基于 QT 的应用,需要在标准 Python 环境中手动安装 PySide 或 PyQt。 -* 在 {% include product %} 插件中,可根据用户所属的权限组向用户显示动作。例如,如果想向 {% include product %} 动作菜单添加某个命令,并且只希望管理员才能看到该命令,就可以使用此功能。 - -一个样式简单、仅对管理员可见的 {% include product %} 应用如下所示: - -```python -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!") -``` - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-shotgun -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以通过 https://github.com/shotgunsoftware/tk-shotgun 访问此代码库。 - -## 特殊要求 - -需要安装 {% include product %} Pipeline Toolkit 核心 API 版本 v0.19.5 或更高版本才能使用此功能。 \ No newline at end of file diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-softimage.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-softimage.md deleted file mode 100644 index 993be2dcb..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-softimage.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: default -title: Softimage -pagename: tk-softimage -lang: zh_CN ---- - -# Softimage - -> **警告:**自 2021 年 2 月 13 日起,Softimage 插件已停止使用。[请在此处了解详细信息](https://community.shotgridsoftware.com/t/end-of-life-for-softimage-support-on-february-13th-2021/10694)。 - -![](../images/engines/sg_softimage_1.png) - -{% include product %} Softimage 插件在 {% include product %} Pipeline Toolkit 应用与 Softimage 之间架起了一座桥梁。它包含 PySide/Qt 分发,因此,可以使用 Python 和 PySide 编写在插件内部运行的应用。本文档讨论的是较高级的配置设置。 - -{% include product %} Softimage 插件包含一个用于在 Softimage 中集成 {% include product %} 应用的标准平台。插件支持常见的应用套件,提供自动文件管理功能、定义明确的工作区/发布工作流、快照功能等。 - -加载插件后,Softimage 主菜单栏中将出现一个 {% include product %} 菜单: - -![](../images/engines/softimage_menu.png) - -## 支持的应用程序版本 - -此插件已经过测试,已知可支持以下应用程序版本:2012、2013。 请注意,此插件也许(甚至非常有可能)支持更新的发行版本,但是尚未正式在这些版本中进行测试。 - -可用的 Toolkit 命令将显示在这里。 - -请注意,{% include product %} Softimage 插件目前还是 Beta 版,存在一些已知问题 - 请参见下文的完整列表。 - -## 应用开发人员须知 - -### 支持的平台 - -{% include product %} Softimage 插件目前在 Windows 上支持 Softimage 2012 和 2013,在 Linux 上支持 Softimage 2013。 - -Softimage 2014 目前在 Linux 上不受支持,并且虽然它可以在 Windows 上运行,但是仍存在一些不稳定问题,因此绝对不建议使用! - -### PySide - -#### Windows - -在 Windows 上,可以配置 Softimage 使用内置 Python 分发版或外置分发版 - 请参见 http://download.autodesk.com/global/docs/softimage2013/en_us/userguide/index.html?url=files/userprefs528.htm,topicNumber=d30e797817 进一步了解详细信息。 - -插件捆绑了多个 PySide & Qt 版本,以适应 Softimage Python 的版本:Softimage 2012 (Python 2.6 x64)、Softimage 2013 (Python 2.6 x64) 和 Softimage 2014 (Python 2.7 x64)。但是,如果您使用外部 Python 分发版,还要务必提供 PySide 和 Qt 的二进制兼容版本。 - -这里提供一个获取 Windows PySide 分发版的优秀资源:http://www.lfd.uci.edu/~gohlke/pythonlibs/ - -#### Linux - -在 Linux 上,Softimage 必须使用内置的 Python 版本。对于 Softimage 2013,需要预置的 PySide 和 Qt 分发版,并由 [tk-framework-softimageqt](https://github.com/shotgunsoftware/tk-framework-softimageqt) 提供。此分发版使用 GCC 4.1.2 构建,适用于 Python 2.5.2,Softimage 2013 使用的也是这个版本。 - -因为 Linux 有众多不同的分发版,所以无法保证这个版本适用于所有人。如果有必要,可自行重建这些版本,以保证正常使用。有关如何构建版本的完整详情,可以下面框架随附的 README 中找到: - -https://github.com/shotgunsoftware/tk-framework-softimageqt/tree/master/resources/pyside121_py25_qt485_linux - -### 已知问题 (Windows) - -#### Softimage 2014 不稳定 - -尽管插件在 Windows 上可以在 Softimage 2014 中运行,但是有些已知问题尚未经过完全测试。打开“发布”(Publish)对话框会导致 Softimage 崩溃! - -#### Softimage 2014 中存在 SSL 错误 - -随 Softimage 2014 分发的 `_ssl.pyd` 文件包含一个已知错误,可能导致启动速度变慢。我们建议您备份此文件,然后使用 Maya 2014 中的 `_ssl.pyd` 文件覆盖此文件,以解决这些问题。如果您需要更多这方面的帮助或建议,请随时联系 Toolkit 支持团队。 - -#### 窗口父子关系 - -创建 Qt 窗口时如果不创建父窗口,并且不使用插件的 `show_modal` 或 `show_dialog` 方法的话,这些 Qt 窗口将无法正确与 Softimage 主应用程序建立父子关系。 - -### 已知问题 (Linux) - -#### 缺少 ssl 和 sqlite3 库 - -除了需要特别具体的 PySide 版本以外(详情见上文),Softimage 还缺少 {% include product %} Python API 和 Toolkit 需要的 ssl 和 sqlite3 库。 - -我们已在 `tk-multi-launchapp` 应用中包含了这些库,该应用还会在启动 Softimage 前将它们添加到 LD_LIBRARY_PATH 和 PYTHONPATH。同样,如果您遇到这方面的问题,可以在下面应用随附的 README 中找到如何为您的系统构建这些库的详细说明: - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -#### libX11 中存在分段错误。 - -Linux 上的 Softimage 包含一个可选补丁,用来解决某些 Linux 分发版的速度问题。具体详情如下: - -http://xsisupport.com/2011/01/19/the-case-of-the-slow-2011-startup-on-fedora-14/ - -此补丁指示 Softimage 使用位于以下位置的另一版本的 libX11 库: - -/usr/Softimage/Softimage_2013/Application/mainwin/mw/lib-amd64_linux_optimized/X11 - -如果您使用此补丁,在 Qt 调用 libX11 库时可能会遇到分段错误(调用堆栈中出现 SIGSEGV),导致频繁崩溃。这是因为此补丁的 libX11 库版本非常旧,与构建 Qt 所用的版本不兼容。 - -要解决此问题,需要使用与 Softimage 补丁版本兼容的 libX11 版本构建一个新的 Qt 版本... - -#### libssl 中存在分段错误 - -如果您使用的是最新版本的 openssl,而该版本不是使用正确的 GCC 版本 (4.1.2) 构建,当使用 {% include product %} API 时,您可能会遇到分段错误 (SIGSEGV)。 - -这不是 Qt/PySide 特有的问题,但这里值得一提,因为它是第二大最常见的问题! - -请参见: - -https://github.com/shotgunsoftware/tk-multi-launchapp/blob/master/app_specific/softimage/linux/lib/README - -了解有关如何为 Softimage 2013 构建兼容 openssl 版本的说明。 - -#### 窗口父子关系 - -目前,在 Linux 上,Toolkit 窗口与 Softimage 主应用程序窗口不存在父子关系。作为一种变通的解决方法,它们创建后会被置于最顶层,但这种做法有时意味着会遮挡其他窗口(特别是确认对话框)。 - -如果 Softimage 看起来失去响应,请试着移动任何打开的 Toolkit 窗口,看看后面是否藏着某个对话框! - -#### Softimage/Toolkit 移动窗口后发生冻结现象 - -您会发现,当移动某个无模式对话框(例如 {% include product %} 文件管理器)时,Softimage 和该对话框的内容都会冻结/挂起。这个问题与 Qt 消息队列当前的执行方式有关,但遗憾的是,我们暂时还未找到替代的解决方案! - -目前简单的变通方法是,当出现这种情况时,只要在 Softimage 主视口中单击鼠标,就会发现一切重新恢复正常。 - -## 安装和更新 - -### 将此插件添加到 {% include product %} Pipeline Toolkit - -如果您想将此插件添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令: - -``` -> tank Project XYZ install_engine asset tk-softimage -``` - -### 更新至最新版本 - -如果您已在某个项目中安装了此应用,要获取最新版本,可运行 `update` 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它: - -``` -> cd /my_tank_configs/project_xyz -> ./tank updates -``` - -或者,也可以运行您的工作室的 `tank` 命令并指定项目名称,指示该命令要对哪个项目运行更新检查: - -``` -> tank Project XYZ updates -``` - -## 协作和代码演进 - -如果您可以获取 {% include product %} Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以通过 https://github.com/shotgunsoftware/tk-softimage 访问此代码库。 - -## 特殊要求 - -需要安装 {% include product %} Pipeline Toolkit 核心 API 版本 v0.14.56 或更高版本才能使用此功能。 \ No newline at end of file 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 deleted file mode 100644 index b1998c4ab..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-engines/tk-vred.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: VRed -pagename: tk-vred -lang: zh_CN ---- - -# VRED - -{% include product %} VRED 插件包含一个用于在 VRED 中集成 {% include product %} 应用的标准平台。它采用轻量型设计,操作简单直观,并会向 VRED 菜单中添加一个 {% include product %} 菜单。 - -## 应用开发人员须知 - -### PySide - -{% include product %} VRED 插件包含 PySide 发行版本,并在必要时将其激活。 - -### VRED 项目管理 - -{% include product %} VRED 插件在每次启动时,都会将 VRED 项目设置为指向此插件的设置定义的位置。这意味着,当您打开新文件时,项目也可能会发生变化。可以使用模板系统,在配置文件中配置有关如何基于文件设置 VRED 项目的详细信息。 - -## 使用 tk-vred - -此 {% include product %} 集成支持 VRED 产品系列(Pro 和 Design)。 - -当 VRED 打开时,{% include product %} 菜单(VRED 插件)会添加到菜单栏中。 -![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunMenuVRED.png) - - -### 文件打开和保存 - -使用“我的任务”(My Tasks)和“零部件”(Assets)选项卡可以查看您的所有已分配任务,并浏览零部件。在右侧,使用这些选项卡可以查看所有文件、与左侧选定内容关联的工作文件或已发布文件。 -![](https://help.autodesk.com/cloudhelp/2020/CHS/VRED-Shotgun/images/ShotgunFileOpenVRED.png) - -![](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.md b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks.md deleted file mode 100644 index 50980a1a8..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: 框架 -pagename: toolkit-frameworks -lang: zh_CN ---- - -# Toolkit 框架 - -在此处,您可以找到适用于 Toolkit 平台的框架的参考文档。 diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg deleted file mode 100644 index acc6917fb..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/osx_warning_1.jpg and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png deleted file mode 100644 index bb5714a0c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/setup_project_wizard.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg deleted file mode 100644 index af7bd19ac..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_1.jpg and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg b/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg deleted file mode 100644 index 50b7fcf2c..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/images/windows_warning_2.jpg and /dev/null differ 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 deleted file mode 100644 index a8fc6f9fe..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-adminui.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: 管理员 UI -pagename: tk-framework-adminui -lang: zh_CN ---- - -# Toolkit 管理用户界面框架 - -管理用户界面框架实现了一个环境来容纳打包 Toolkit 管理命令的标准用户界面。 - -目前只有一个针对 setup_project 命令的界面。 - -## SetupProjectWizard API 参考 - -![](images/setup_project_wizard.png) - -这是一个 QWizard 执行,它将引导用户在 Toolkit 的 {% include product %} 实例中按步骤设置项目。要使用此向导程序,只需创建一个类实例,传入要设置的项目(采用标准 {% include product %} API 实体词典形式)和要设置父子关系的窗口。 - -```python -adminui = sgtk.platform.import_framework("tk-framework-adminui", "setup_project") -setup = adminui.SetupProjectWizard(project, parent) -dialog_result = setup.exec_() -``` - -此操作将运行向导程序,并返回一个标准的 QDialog 接受 (Accepted) 或拒绝 (Rejected) 值。 - -### SetupProjectWizard 构造函数 - -初始化 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 deleted file mode 100644 index e4aa6cb8e..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopserver.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: default -title: 桌面服务器框架 -pagename: tk-framework-desktopserver -lang: zh_CN ---- - -# Toolkit 桌面服务器框架 - -桌面服务器框架提供相关功能来支持 {% include product %} 本地文件链接和 Toolkit 集成功能。它提供一个本地 Websocket 服务器,该服务器会以安全的方式侦听 {% include product %} 网站发出的需要访问桌面的动作请求。 - -对于本地文件链接,这些请求让 {% include product %} 能够从 Web 界面访问本地文件路径,并且在收到请求时,能够直接从 {% include product %} 页面打开这些文件。 -对于 Toolkit,它们让 {% include product %} 能够判断给定的实体注册了哪些工作流动作,并执行这些动作。 - -## 如何让桌面集成正常运行 - -要让这些 {% include product %} 功能正常工作,某些支持的桌面集成必须运行。 -[此页面](https://developer.shotgridsoftware.com/zh_CN/c79f1656/)介绍了 {% include product %} 如何与您的桌面进行集成的各种选项。“Websocket 服务器”部分介绍了此框架提供的功能。 - -### {% include product %} Desktop - -此框架与 {% include product %} Desktop 捆绑在一起,可以[执行以下步骤](https://developer.shotgridsoftware.com/zh_CN/d587be80/#installation-of-desktop)进行下载。{% include product %} Desktop 运行时,会自动启动 Websocket 服务器。如果 {% include product %} Desktop 已运行,您的设置过程即告完成。 - -### 配置服务器 - -您可以将浏览器集成设置存储在配置文件中。可以通过设置环境变量 `SGTK_BROWSER_INTEGRATION_CONFIG_LOCATION` 指定此配置文件。有关如何配置本地服务器的更多详细信息,可参考我们的[示例文件](https://github.com/shotgunsoftware/tk-framework-desktopserver/blob/master/app/config.ini.example)。 - -### 删除证书 - -如果您想删除之前创建的证书,可以运行 `python certificates.py --remove` 命令。 - -## 通过封装器启动 - -默认情况下,服务器使用操作系统的默认方式来启动命令(相当于 Linux 上的“xdg-open”、OS X 上的“打开”和 Windows 上的“运行”)。 如果您想使用自己的封装器来启动文件,可以设置 **SHOTGUN_PLUGIN_LAUNCHER** 环境变量,使它指向你的自定义封装器。 如果设置了该环境变量,系统将会调用封装器,同时路径是它唯一的参数。 - -## 证书 - -当您第一次运行服务器时,它会生成建立安全连接所需的证书。 这些证书存储在您计算机的本地,绝不会对外公开。 -使用证书,可以建立 Websocket 所需的加密连接,而且即使所有通信都在本地(从您的浏览器到服务器),加密连接也是必要的;{% include product %} 的 Websocket 通信永远不会面向 Internet 公开。 - -证书向系统注册时,您会看到如下所示的对话框。 -单击“确定”(OK)继续注册。 - -![](images/osx_warning_1.jpg) -![](images/windows_warning_1.jpg) -![](images/windows_warning_2.jpg) - - -使用 {% include product %} Desktop 时,生成的证书存储在以下位置: - -**OS X**:~/Library/Caches/Shotgun/desktop/config/certificates
-**Windows**:%AppData%\Shotgun\desktop\config\certificates
-**Linux**:~/.shotgun/desktop/config/certificates
- -## 安全设置 - 本地 {% include product %} 安装 - -默认情况下,Websocket 服务器设置为在端口 9000 上侦听托管的 {% include product %} 站点。 -如果您运行的是本地 {% include product %} 服务器,需要更新 {% include product %} 服务器的配置,以便可以从您的 Websocket 服务器进行连接。 - -运行 {% include product %} Desktop 时,您需要设置一个 ```config.ini``` 文件,该文件与 {% include product %} 二进制文件位于同一个位置。 - -此文件内有一个部分用来控制 Websocket 服务器的功能。 -典型的配置如下所示: - -```ini -[BrowserIntegration] -low_level_debug=0 -port=9000 -enabled=1 -whitelist=*.shotgunstudio.com -``` - -## 疑难解答 - -在 Linux 平台上,该服务器增加了对 libffi 的依赖。 如果 Desktop 在启动时崩溃,并且日志中包含未找到 libffi 的消息,您需要安装此软件包。 - -如果您在设置期间遇到任何问题,请访问我们的[支持站点](https://knowledge.autodesk.com/zh-hans/contact-support)。如果运行服务器时遇到问题,请在 **config.ini** 文件中将 **debug** 设置为 **1**,并包含 Desktop 的日志文件。 - -日志文件可在以下位置找到: - -**OS X**:~/Library/Logs/Shotgun/tk-desktop.log
-**Windows**:~\%APPDATA%\Shotgun\tk-desktop.log
-**Linux**:~/.shotgun/tk-desktop.log
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 deleted file mode 100644 index 121f8e48c..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/toolkit-frameworks/tk-framework-desktopstartup.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: 桌面启动 -pagename: tk-framework-desktopstartup -lang: zh_CN ---- - -# Toolkit 桌面启动框架 -桌面启动框架用于执行 {% include product %} Desktop 的启动逻辑。它的主要功能包括: - -1. 初始化浏览器集成 -2. 完成用户登录 -3. 下载 Toolkit -4. 配置站点配置 -5. 自动更新自身并在必要时更新站点配置 -6. 启动 `tk-desktop` 插件。 - -> 这是一个内部 Toolkit 框架,因此它实现的界面随时可能发生变化。建议您不要在自己的项目中使用此框架。 - -### 锁定启动逻辑 - -> 请注意,此操作需要使用版本为 `1.3.4` 的 {% include product %} Desktop 应用。如果您不确定自己的应用程序版本,请启动 {% include product %} Desktop。登录后,单击右下角的用户图标,然后单击 `About...`。`App Version` 应该为 `1.3.4` 或更高版本。 - -默认情况下,{% include product %} Desktop 会将 `tk-framework-desktopstartup` 更新下载到用户计算机本地,并在应用程序启动过程中使用它。当您启动应用程序时,Toolkit 会自动检查是否有此框架的更新。如果有更新,它还会自动下载并安装更新。 - -另外,您还可以将 {% include product %} Desktop 配置为使用框架的特定副本,而不使用本地副本。这样做将禁用自动更新功能,您需要自己更新启动逻辑。 - -#### 从 GitHub 下载特定的发布版本 - -有时,您需要手动从 GitHub 下载更新。您可以很容易地从[版本(Releases)](https://github.com/shotgunsoftware/tk-framework-desktopstartup/releases)页面下载软件包,并可在[此处](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)找到有关每个官方发布版本的详细信息。 - -#### 配置 {% include product %} Desktop 使用特定副本 - -要锁定启动逻辑,唯一的方法是使用环境变量。将 `SGTK_DESKTOP_STARTUP_LOCATION` 设置为框架某个副本的根文件夹,即表示您指示 {% include product %} Desktop 在启动时使用这份代码副本。变量设置完毕后,您可以启动 {% include product %} Desktop,它将使用这份特定的启动逻辑副本。 - -> 请注意,撰写本文时,由于技术限制,`About...` 框中的 `Startup Version` 字段在锁定启动逻辑时将为 `Undefined`。 - -#### 还原至旧的行为 - -要还原您的更改,只需取消设置环境变量,然后启动 {% include product %} Desktop 即可。 diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png deleted file mode 100644 index c8fa4e915..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions-16.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png deleted file mode 100644 index 87825c964..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-actions2-44.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png deleted file mode 100644 index d49b56fcf..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-activity-stream-010.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png deleted file mode 100644 index 3433714b7..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-41.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png deleted file mode 100644 index ae1395f2b..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-buttons-and-status-22.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png deleted file mode 100644 index e1c063a41..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-collected-drop-38.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png deleted file mode 100644 index 9ea456007..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-console-06.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png deleted file mode 100644 index 248e73b3f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-menu-26.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png deleted file mode 100644 index db8edc8f5..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-context-search-27.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png deleted file mode 100644 index 6efa8f329..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-cert-window-03.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png deleted file mode 100644 index 0bb555564..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-desktop-launch-36.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png deleted file mode 100644 index d3b99e9d4..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02-v2.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png deleted file mode 100644 index 99f59caba..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-download-desktop-02.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png deleted file mode 100644 index d444c3b1e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-drag-drop-18.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png deleted file mode 100644 index 062555290..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-info-14.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png deleted file mode 100644 index 395af9741..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-and-tasks-25.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png deleted file mode 100644 index efd6093d8..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-items-tree-20.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg deleted file mode 100644 index ad23c84ac..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-launching-software-07.jpg and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png deleted file mode 100644 index 232f528b1..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-list-view-43.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png deleted file mode 100644 index da2737741..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-main-view-19.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png deleted file mode 100644 index a4267e6ef..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-maya-09.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png deleted file mode 100644 index 2e8db67be..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-multi-doc-34.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png deleted file mode 100644 index 5207f3166..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-notes-12.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png deleted file mode 100644 index 02c1d5828..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview-08.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png deleted file mode 100644 index 7670b179f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-overview2-39.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png deleted file mode 100644 index 05d4e44e0..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-progress-details-23.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png deleted file mode 100644 index aef184be6..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-complete-33.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png deleted file mode 100644 index 20dc6401f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-publish-in-dcc-24.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png deleted file mode 100644 index a947298fd..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-screening-room-45.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png deleted file mode 100644 index 60bbfe6ce..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search-05.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png deleted file mode 100644 index c4f28cfaa..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search2-15.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png deleted file mode 100644 index 0af994f1d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-search3-40.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png deleted file mode 100644 index 3df1d2a3d..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-selection-detail-21.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png deleted file mode 100644 index 22b490e96..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-shotgun-desktop-app-01.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png deleted file mode 100644 index 0aeff08c7..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-status-warning-31.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png deleted file mode 100644 index b089b068e..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-summary-35.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png deleted file mode 100644 index 02949bbbd..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-tasks-and-versions-13.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png deleted file mode 100644 index 327da64d2..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumb-view-42.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png deleted file mode 100644 index 9e95cacd5..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-and-desc-28.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png deleted file mode 100644 index c3f3b7548..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-thumbnail-placeholder-11.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png deleted file mode 100644 index 3d650f03f..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-user-menu-04.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png deleted file mode 100644 index 2826c4960..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-29.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png deleted file mode 100644 index acaceead9..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-validation-warning-30.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png deleted file mode 100644 index 4eaf0cc93..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-warning-details-32.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png b/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png deleted file mode 100644 index 2e67af4ac..000000000 Binary files a/docs/zh_CN/reference/pipeline-integrations/user-guide/images/sa-integrations-user-guide-work-home-17.png and /dev/null differ diff --git a/docs/zh_CN/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md b/docs/zh_CN/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md deleted file mode 100644 index 214165168..000000000 --- a/docs/zh_CN/reference/pipeline-integrations/user-guide/sa-integrations-user-guide.md +++ /dev/null @@ -1,510 +0,0 @@ ---- -layout: default -title: 集成用户手册 -pagename: integrations-user-guide -lang: zh_CN ---- - - -# 集成用户手册 - -在本手册中: -- [简介](#introduction) -- [Desktop 快速入门](#getting-started-with-desktop) - - [Desktop 安装](#installation-of-desktop) - - [自主托管时登录或在代理服务器后台登录](#logging-in-when-self-hosted-or-behind-a-proxy-server) - - [身份认证和浏览器集成](#authentication-and-browser-integration) - - [系统托盘](#the-system-tray) - - [项目浏览器](#the-project-browser) - - [命令启动器](#the-command-launcher) - - [控制台](#the-console) -- [启动应用程序](#launching-applications) -- [面板](#the-panel) - - [概述](#overview) - - [UI 详细信息](#ui-details) - - [活动流](#the-activity-stream) - - [创建和回复注释](#creating-and-replying-to-notes) - - [注释、版本、发布和任务](#notes-versions-publishes-and-tasks) - - [“信息”(Info)选项卡](#the-info-tab) - - [搜索](#searching) - - [动作](#actions) - - [当前工作区和主页区域](#the-current-work-area-and-the-me-area) - - [当前工作区](#current-work-area) -- [发布器](#the-publisher) - - [概述](#overview-1) - - [界面组件和概念](#interface-components-and-concepts) - - [基本工作流](#basic-workflow) - - [在内容创建软件中发布](#publishing-within-content-creation-software) - - [发布项目和任务](#publish-items-and-tasks) - - [上下文](#context) - - [验证](#validation) - - [多文档工作流](#multi-document-workflows) - - [单机发布](#stand-alone-publishing) - - [发布类型](#publish-types) - - [单机](#standalone) - - [3ds Max](#3ds-max) - - [Houdini](#houdini) - - [Maya](#maya) - - [Nuke](#nuke) - - [Nuke Studio](#nuke-studio) - - [Photoshop CC](#photoshop-cc) -- [加载器](#the-loader) - - [概述](#overview-2) - - [树视图](#the-tree-view) - - [导航](#navigation) - - [查看发布](#looking-at-publishes) - - [将一个或多个发布添加到场景中](#bringing-one-or-multiple-publishes-into-your-scene) - - [使用早期发布](#working-with-older-publishes) - - [相关审核](#associated-review) -- [高级功能](#advanced-functionality) -- [致谢](#acknowledgments) - -## 简介 - -{% include product %} 集成可将 {% include product %} 引入到您的内容创建工具中。使用 {% include product %} 集成时,您将能够轻松启动软件,使用面板来跟踪 {% include product %} 中与您的任务相关的注释和数据,并使用发布器和加载器来跟踪文件并将其带入到场景中。艺术家将有权从应用内直接访问与其任务相关的所有 {% include product %} 数据,以及其项目上的所有任务。他们可以回复注释、播放版本、发布文件,以及加载同事发布的文件。 - -要获得 {% include product %} 集成的最新更新,请订阅[发行说明](https://community.shotgridsoftware.com/tags/c/pipeline/6/release-notes)。 - -## Desktop 快速入门 - -**{% include product %} Desktop** 应用是集成的核心。该软件应用程序将 {% include product %} 体验延伸到本地计算机,让您可以轻松访问 {% include product %} 数据、启动应用程序,并直接从您的计算机上运行工作流集成工具。 - -**运行 Toolkit 经典还是自定义安装?** - -{% include product %} - 集成可自动安装。 如果您是希望安装**经典** Toolkit 配置的高级客户,或者您拥有**自定义** Toolkit 安装程序并希望通过 **Desktop 安装向导**进行安装,请参见[管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)以了解如何执行相关操作。 - -### Desktop 安装 - -您可以在“应用”(Apps)菜单中下载 {% include product %} Desktop。 - -![shotgun-desktop-app-01.png](./images/sa-integrations-user-guide-shotgun-desktop-app-01-v2.png) - -按照提示进行操作,然后选择下载适用于 Mac、Windows 还是 Linux 的 Desktop。 - -![download-desktop-02.png](./images/sa-integrations-user-guide-download-desktop-02-v2.png) - -### 自主托管时登录或在代理服务器后台登录 - -*注意:如果您是自主托管的或使用代理服务器,则需要使用以下有关登录的内容。这不是默认行为。* - -如果您是自主托管的或使用代理服务器,则首次打开 Desktop 时,浏览器将提示您提供证书。这样做的目的是连接 {% include product %} 与 Desktop 应用。如果您无法正确设置证书,请查看我们针对 [Firefox](https://developer.shotgunsoftware.com/zh_CN/d4936105/) 与 [Chrome 和其他浏览器](https://developer.shotgunsoftware.com/zh_CN/95518180/)提供的疑难解答文档。 - -![guide-desktop-cert-window-03.png](./images/sa-integrations-user-guide-desktop-cert-window-03.png) - -您只需更新一次安全证书列表。请注意,只有 Mac 和 Windows 显示证书提示,Linux 不显示。 - -设置完毕以后,您需要登录到您的 {% include product %} 站点。 - -如果使用代理,则需要进行一些额外的配置。有关如何执行该操作的说明,请参见[管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/#toolkit-configuration-file)。 - -#### 身份认证和浏览器集成 - -Desktop 提供的服务支持 {% include product %} Web 应用程序与您的计算机交互。这样可启用[本地文件链接](https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_Administrator_ar_data_management_ar_linking_local_files_html)和软件启动等功能。出于安全原因,您必须以浏览器中同一 {% include product %} 站点上的同一用户身份登录 Desktop。如果您使用其他用户登录或登录到其他站点,Desktop 将提示您切换帐户。如果切换,它将重新启动并提示您输入相应的凭据。 - -### 系统托盘 - -应用程序启动时,将在系统托盘中显示为一个图标。要显示窗口,请单击该图标。默认情况下,窗口将固定到系统托盘中,这意味着当窗口失去焦点时将自动隐藏。 - -您可以从用户菜单中选择“Undock from Menu”或通过拖动其标题来取消固定窗口。窗口取消固定后,它看起来像一个常规窗口,当失去焦点时将不再隐藏。 - -当窗口取消停靠时,可以通过单击关闭按钮将其隐藏。要再次显示,请单击系统托盘图标。 - -### 项目浏览器 - -应用的第一个主视图是项目浏览器。在此,您将看到 {% include product %} 实例中的所有项目。最近访问的项目将首先列出。 - -在窗口右下角附近,您将看到 {% include product %} 帐户的缩略图。这是用户菜单,从中可以执行许多操作,如停靠和取消停靠窗口、使其始终位于其他窗口之上、显示记录控制台。 - -![user-menu-04.png](./images/sa-integrations-user-guide-user-menu-04.png) - -在窗口的顶部,可以单击放大镜图标以显示搜索框。在此框中键入内容,会将所示项目列表筛选至仅显示那些包含您键入的字母的项目。 - -![search-05.png](./images/sa-integrations-user-guide-search-05.png) - -单击一个项目会转到该项目的命令启动器视图,从中可以启动可供该项目使用的工具。 - -### 命令启动器 - -选择某个项目之后会转到该项目的命令启动器。此窗口会将可供该项目使用的所有工具和应用程序显示为按钮网格。只需单击按钮,即可启动对应的应用程序。应用程序将在项目特定环境中运行,如果 {% include product %} 有相应集成,您将看到列出所有可用工具的 {% include product %} 菜单。 - -### 控制台 - -您可以通过用户菜单启动控制台。自启动项目以来的所有记录将在此处显示。如果您遇到错误,错误的详细信息也应在此处显示。 - -如果右键单击控制台,将显示标准编辑菜单,您可以在控制台中选择所有文本、复制选择或清除文本。 - -![console-06.png](./images/sa-integrations-user-guide-console-06.png) - -## 启动应用程序 - -启动 {% include product %} Desktop 并选择一个项目后,该程序将扫描您的操作系统的标准应用程序目录。Desktop 将显示[我们拥有其相应集成的任何应用程序](https://www.shotgridsoftware.com/integrations/)的启动器。如果您有同一软件的多个版本,启动器将给出一个包含所有可用版本的下拉列表。单击启动器图标将启动最新版本。 - -您可以在 {% include product %} Desktop 中直接启动 Maya 和 Nuke 等应用程序,也可以通过 {% include product %} 直接启动它们。无论是哪种方式,都可从应用程序内访问 {% include product %} 集成。 - -![launching-software-07.jpg](./images/sa-integrations-user-guide-launching-software-07.jpg) - -除了现有配置,工作室通常还需要其他配置。工作室可能具有位于非标准文件系统位置的软件或本地不支持的软件的内部插件。在 {% include product %} Web 应用中可以轻松配置这些情况。有关详细信息,请参见[管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。 - -如果您没有看到所需应用,请查看[管理员手册中有关在 {% include product %} Desktop 中配置软件的章节](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。 - -## 面板 - -### 概述 - -从 Desktop 或 {% include product %} 启动应用程序后,将显示 {% include product %} 面板。{% include product %} 面板是小型轻量版 {% include product %},可直接在艺术家的应用程序(如 Maya 和 Nuke)中运行。通过该面板可以快速访问 {% include product %} 信息,而无需离开您正在使用的应用程序。您可以轻松访问当前任务相关信息,还可以通过 {% include product %} 即时访问活动流、注释、任务、版本和发布。您可以播放发送给团队其他成员审核的版本,回复注释,创建新任务,以及搜索 {% include product %} 站点。 - -### UI 详细信息 - -{% include product %} 面板包含几个主 UI 元素。在顶部可以看到一个 _工具栏_,其中包含用于导航和搜索的按钮。工具栏正下方是 _详细信息区域_ ,列出您当前正在查看的项目的相关信息。此详细信息区域可供配置,因此,如果您要显示自定义字段或对您的工作流特别重要的数据,只需简单操作就可以在此处显示这些信息。最后,您会发现一些 _内容选项卡_ 。这些选项卡均显示 {% include product %} 数据列表,通过它们可以在 {% include product %} 面板内轻松导航,快速浏览发布等内容,检查版本,或查看何人分配到链接至当前焦点的任务。 - -![overview-08.png](./images/sa-integrations-user-guide-overview-08.png) - -如果应用程序中的集成支持停靠,则 {% include product %} 面板将无缝地停靠在 UI 中。在其他应用程序中,面板将显示为常规窗口。 - -![maya-09.png](./images/sa-integrations-user-guide-maya-09.png) - -下面简要概述了 {% include product %} 面板中可供使用的不同选项卡和功能。 - -#### 活动流 - -![activity-stream-010.png](./images/sa-integrations-user-guide-activity-stream-010.png) - -活动流的工作方式与 {% include product %} 中的活动流一样 - 显示您所查看的对象中以及围绕这些对象进行的所有操作: - -* 创建注释的用户 -* 提交以供审核的版本 -* 工作流创建的发布。 - -您可以直接通过活动流添加新注释,还可以回复现有注释。附件会自动显示,单击附件将显示较大的预览。 - -请注意,上传文件后,您可能会看到一个占位符图标。在最终缩略图可用后,手动刷新面板可显示出来。 - -![thumbnail-placeholder-11.png](./images/sa-integrations-user-guide-thumbnail-placeholder-11.png) - -#### 创建和回复注释 - -![notes-12.png](./images/sa-integrations-user-guide-notes-12.png) - -借助 {% include product %} 面板可轻松创建或回复注释。只需导航至活动流或注释详细信息页面,然后单击 _“创建注释”(create note)_ 或 _“回复注释"(reply to note)_ 。此时将显示一个对话框,您可以在其中键入注释文本。如果您希望将注释发送给特定人员,可以使用 `@name` 表示法 - 这会自动将此人添加到注释的“收件人”(TO)字段。 - -#### 注释、版本、发布和任务 - -![tasks-and-versions-13.png](./images/sa-integrations-user-guide-tasks-and-versions-13.png) - -“注释”(Notes)、“版本”(Versions)、“发布”(Publishes)和“任务”(Tasks)选项卡的工作方式均相同 - 显示与您正在查看的当前项目有关联的数据。您可以双击某个项目以聚焦该项目。一旦导航至某个 _发布_ ,即可查看该发布的依存关系。如果您的工作流要跟踪从属关系信息,则该功能非常有用,此外,您还可以即时了解资产的互连方式。 - -#### “信息”(Info)选项卡 - -![info-14.png](./images/sa-integrations-user-guide-info-14.png) - -如果在其他选项卡上找不到要查找的内容,请尝试导航到“信息”(Info)选项卡。此选项卡包含适用于您聚焦的实体的大多数 {% include product %} 字段,您可以单击蓝色超链接以导航到其他 {% include product %} 位置。 - -#### 搜索 - -![search2-15.png](./images/sa-integrations-user-guide-search2-15.png) - -如果要快速导航到 {% include product %} 中的其他位置或对象,可以使用内置的搜索功能。这类似于 {% include product %} Web 应用程序中的全局搜索功能。只需键入您要查找的内容的名称或说明。键入三个或更多字符后,将看到结果显示。 - -#### 动作 - -![actions-16.png](./images/sa-integrations-user-guide-actions-16.png) - -借助 {% include product %} 面板,您还可以使用 {% include product %} 数据在场景中运行操作。与加载器类似,面板的动作系统能够轻松注册代码段并通过浏览器某一项上的菜单触发该代码段。您可以从详细信息区域和列表处访问各动作。详细信息区域中的动作按钮也包含一些方便的内置功能,可快速跳转到 {% include product %} 和刷新当前视图。 - -#### 当前工作区和主页区域 - -![work-home-17.png](./images/sa-integrations-user-guide-work-home-17.png) - -左上角的图标可导航到您的当前工作区。该工作区通常显示您当前正在处理的任务,通过它您可以快速访问注释,审核版本,并查看与当前处理的工作相关的其他信息。这也是 {% include product %} 面板启动时聚焦的位置。 - -在右上角,您将看到一个显示当前用户缩略图的按钮。此按钮将转到一个页面,其中显示当前用户的相关信息。这包括 - -* 您已提交的所有发布和版本 -* 分配给您的任务 -* 您参与的或其中的注释与您相关(例如,与分配给您的任务相关的注释)的所有注释对话。 - -#### 当前工作区 - -当您开始处理任务时,您可以使用面板来设置当前工作区。然后,当您发布您的作品时,它将与您在 {% include product %} 中的当前任务相关联。 - -## 发布器 - -### 概述 - -通过发布应用,美工人员可以发布他们的作品,以便其可供下游的美工人员使用。它支持在艺术家的内容创建软件中以传统方式发布工作流,以及在磁盘上单独发布任何文件。在内容创建软件中操作并使用基本 {% include product %} 集成时,该应用将自动发现并显示项目以供艺术家发布。对于较复杂的生产需求,工作室可以编写自定义发布插件来推动美工人员工作流。 - -以下各部分介绍了发布器 UI 和基本集成工作流。有关根据工作室特定需求自定义发布器的信息,请参见[发布器开发手册](http://developer.shotgridsoftware.com/tk-multi-publish2/)。 - -### 界面组件和概念 - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -可从本地文件系统上的任意位置拖放文件。使用浏览按钮可打开文件浏览器,选择一个或多个要发布的文件。 - -![main-view-19.png](./images/sa-integrations-user-guide-main-view-19.png) - -左侧的项目树状图显示了将发布的文件。顶层项目可以包含相关的子项目,例如从工作文件中生成的渲染或缓存。每个项目下有一个或多个发布任务,这是发布时要执行的动作。 - -![items-tree-20.png](./images/sa-integrations-user-guide-items-tree-20.png) - -项目本身都分组到上下文标题下,表明发布文件将要关联的 {% include product %} 上下文。 - -如果有多个顶层项目,则将显示摘要项目,概述将发布的项目和将执行的动作。 - -![selection-detail-21.png](./images/sa-integrations-user-guide-selection-detail-21.png) - -选择一个项目后,界面的右侧将显示该项目的详细信息。这包括目标上下文以及发布的缩略图和说明。还包括该项目和所有子项目的摘要。 - -![buttons-and-status-22.png](./images/sa-integrations-user-guide-buttons-and-status-22.png) - -界面底部的左侧有一系列工具按钮。这些按钮包括: - -* **浏览(Browse)**:浏览要发布的文件 -* **刷新(Refresh)**:刷新发布项目列表 -* **删除(Delete)**:从列表中删除所选项目 -* **展开(Expand)**:展开列表中的所有项目 -* **收拢(Collapse)**:收拢列表中的所有项目 -* **文档(Documentation)**:打开工作流文档 - -中间是状态标签。在发布器进行验证并执行发布任务时,状态标签将更新。单击后,您会看到“Progress Details”叠加。 - -最右侧是**“验证”(Validate)**和**“发布”(Publish)**按钮。“验证”(Validate)按钮将对所有项目和任务执行初始验证过程,以确保其处于可发布状态。“发布”(Publish)按钮将发布列表中的项目。 - -![progress-details-23.png](./images/sa-integrations-user-guide-progress-details-23.png) - -“Progress Details”叠加将显示列表中项目的集合、验证和发布的输出。 - -使用“Copy to Clipboard”按钮,用户可以轻松共享发布日志。出现验证或发布错误时,该日志消息可能包括一个动作按钮,引导用户获取其他信息,在某些情况下甚至可以进行即时修复。 - -### 基本工作流 - -发布应用的目的是,让美工人员将自己的作品提供给其他美工人员使用。在 {% include product %} 中,发布文件意味着在 {% include product %} 中创建包含待发布文件相关信息(包括路径、版本号、艺术家信息、{% include product %} 相关上下文等)的记录。在 {% include product %} 中跟踪文件后,其他用户可以通过[加载器](#the-loader)应用来使用它。 - -基本 {% include product %} 集成提供了两种方式在工作流中使用发布应用:单机发布和在内容创建软件中发布。以下各部分概括介绍了这两种不同情况下的工作流。 - -#### 在内容创建软件中发布 - -基本 {% include product %} 集成包括对 3dsMax、Houdini、Maya、Nuke、Nuke Studio 和 Photoshop 等内容创建软件的发布工作流支持。当发布器与内容创建软件一同启动时,发布器将自动尝试查找要发布的项目。尽管根据不同的软件和美工人员工作文件内容,显示的待发布项目将稍有不同,但均适用相同的基本发布概念。此处是一个在 Nuke 中进行发布的示例: - -![publish-in-dcc-24.png](./images/sa-integrations-user-guide-publish-in-dcc-24.png) - -#### 发布项目和任务 - -在此,您可以在左侧看到已收集的发布项目。有三个发布项目:选定的项目是工作文件本身,其下方则是两个子项目。此外,还有一个图像文件序列和一个 Alembic 缓存。这些项目都附有一个**“Publish to {% include product %}”**任务,执行该任务时,将在 {% include product %} 中创建发布条目以跟踪各个文件或图像序列。 - -显示 Nuke 脚本的父项目都附有一个 **Begin file versioning** 插件。工作文件的路径中没有版本号时,将显示此插件。如果选中此任务,将在文件名中插入版本号,然后再进行发布。在本例中,文件将从 `bunny_010_0010.nk` 重命名为 `bunny_010_0010.v001.nk`。这促使人们保留美工人员工作文件的历史记录。此任务并非默认选中,并且也不一定要运行。如果项目已发布且任务处于启用状态,则下次发布工作文件时,由于文件名中包含版本号,任务将不显示。 - -可以根据需要启用或禁用发布任务。项目上的复选框反映和控制其子任务的选中状态。例如,取消选中一个项目将取消选中其所有任务。取消选中多个任务中的一个会使项目处于半选中状态。要切换特定类型的所有任务(例如所有**“Publish to {% include product %}”**任务)的选中状态,只需在选中复选框时按住 `Shift` 键。 - -选择发布任务将显示任务内容相关信息。 - -![items-and-tasks-25.png](./images/sa-integrations-user-guide-items-and-tasks-25.png) - -##### 上下文 - -在 Nuke 脚本项目之上,可以看到已发布项目将在 {% include product %} 中关联的上下文的名称。可通过更改界面右侧的“任务”(Task)和/或“链接”(Link)字段来修改这一名称。如果有多个项目要发布,这些项目可能会出现在不同的上下文中。发布项目左侧标有三条水平线的图标是拖动控制柄,可将项目从一个上下文移至另一个。 - -“任务”(Task)输入字段旁还有一个菜单下拉按钮。该菜单显示您可能感兴趣的多组任务。它将显示分配给当前用户的所有任务、当前上下文相关任务(例如分配给相同镜头的其他任务)和最近浏览的所有任务。 - -![context-menu-26.png](./images/sa-integrations-user-guide-context-menu-26.png) - -要搜索任务或实体链接,只需单击其中一个字段或单击搜索图标并开始键入您感兴趣的上下文名称。字段将显示匹配的任务或实体链接,然后您可以单击或导航到所需的上下文。 - -![search-27.png](./images/sa-integrations-user-guide-context-search-27.png) - -![thumbnail-and-desc-28.png](./images/sa-integrations-user-guide-thumbnail-and-desc-28.png) - -对于每个发布项目,均可通过单击摄影机图标,选择屏幕的一部分作为 {% include product %} 中的发布的缩略图。对于有子项目的情况,子项目默认从父项目继承该缩略图。您可以通过选择子项目并单击其缩略图来覆盖子项目的缩略图。 - -输入的说明将包含在 {% include product %} 中的发布数据内。与缩略图一样,说明继承自父项目,但可以通过在子项目的详细信息中输入新说明来覆盖。 - -##### 验证 - -准备好发布项目之后,可以单击“验证”(Validate)按钮,确保文件和发布项目的状态允许发布按预期完成。 - -![validation-29.png](./images/sa-integrations-user-guide-validation-29.png) - -如果所有项目验证正确,则可在右侧看到绿色复选标记。对于任何未验证的项目,则将显示一个警告图标。 - -![validation-warning-30.png](./images/sa-integrations-user-guide-validation-warning-30.png) - -状态也会显示在发布器底部的状态标签区域。 - -![status-warning-31.png](./images/sa-integrations-user-guide-status-warning-31.png) - -单击项目中的图标或状态标签,将打开“Progress Details”叠加并高亮显示验证问题。 - -![warning-details-32.png](./images/sa-integrations-user-guide-warning-details-32.png) - -在上面的示例中,Nuke 脚本尚未保存。在某些情况下,将提供动作按钮以快速指导您修复问题或获取更多有关问题的信息。在这里,您可以看到**“另存为...”(Save As…)**动作按钮,该按钮将打开 Nuke 保存对话框。 - -一旦验证问题得到更正,即可关闭“Progress Details”叠加以返回到发布项目视图。在解决发布任务警告或错误的同时,可根据需要多次运行验证。 - -在按下**“发布”(Publish)**按钮后,应用将遍历列表中的项目和任务,对每个项目和任务运行另一个验证过程,然后执行发布逻辑以在 {% include product %} 中创建条目、上传缩略图、切换工作文件版本等。还将执行最后一个过程以总结每个项目的发布并执行任何必要的清理工作。 - -![publish-complete-33.png](./images/sa-integrations-user-guide-publish-complete-33.png) - -通过单击发布器底部的状态标签以显示“Progress Details”叠加,可以查看整个流程的结果。也可以在发布时保持“Progress Details”视图,以查看发布后的输出。您可以看到此处显示的其他动作按钮,以快速跳转到 {% include product %} 中新创建的发布条目。 - -##### 多文档工作流 - -对于内容创建软件(如 Photoshop 或 Nuke Studio)中的多文档工作流,发布项目列表中将显示多个顶层项目。 - -![multi-doc-34.png](./images/sa-integrations-user-guide-multi-doc-34.png) - -只有当前/激活状态的文档将得以展开和选中。要选中待发布的所有文档,只需按住 `Shift` 并单击其中一个未选中项目的复选框。要展开已收拢项目,请使用底部工具栏中的展开按钮。 - -如果有多个顶层项目,列表顶部也会包含“摘要”(Summary)项目。 - -![summary-35.png](./images/sa-integrations-user-guide-summary-35.png) - -选择此项将显示所有选定项目(供发布)的完整摘要。在上图中总共可以看到四个项目、八个任务,这八个任务要在四个不同的上下文中执行。您可以在该视图中覆盖所有项目的上下文和说明(如果需要)。 - -在上图中还可以看到**“Upload for review”**任务。此任务不限于 Photoshop 工作流。它可用于任何可以进行转码并作为可审核媒体上传到 {% include product %} 的文件类型。 - -#### 单机发布 - -发布应用不需要在内容创建软件中运行。 - -![desktop-launch-36.png](./images/sa-integrations-user-guide-desktop-launch-36.png) - -在这里,可以看到发布器可直接从 {% include product %} Desktop 启动。在单机模式下启动时,将出现一个区域,用于浏览或拖放文件。 - -![drag-drop-18.png](./images/sa-integrations-user-guide-drag-drop-18.png) - -单击浏览按钮将打开标准文件浏览器,从中可以选择要发布的文件。 - -从浏览器中选择文件或从文件系统上的某个位置拖放文件后,应用会将其作为顶层项目显示以供发布。 - -![collected-drop-38.png](./images/sa-integrations-user-guide-collected-drop-38.png) - -与上述示例一样,您可以选择每个项目的上下文,设置说明,并确定发布时应执行哪些任务。 - -#### 发布类型 - -以下各部分介绍了每个基本 {% include product %} 集成的自动收集的发布类型。 - -##### 单机 - -单机工作流不自动收集文件进行发布。用户必须将文件路径拖动到界面中或浏览到文件才能进行发布。在单击**“发布”(Publish)**按钮之前,发布器将接受在任何点浏览或拖放的文件。基本集成将接受任何使用已知文件类型的文件扩展名,以关联到 {% include product %} 发布类型。如果文件扩展名未经识别,将使用文件的 MIME 类型。已识别的图像和视频 MIME 类型可供发布,并附有一个待上传审核的任务。 - -基本集成假定拖放的文件夹包含图像序列。文件夹中任何已识别的图像序列将显示为待发布项目。如果没有找到序列,将不创建用于发布的项目。 - -##### 3ds Max - -将收集当前 Max 会话以供发布,其发布类型为 **3dsmax 场景**,该类型可以通过加载器合并或参照到其他 Max 会话中。 - -如果可以确定用于当前会话的项目文件夹,则位于该项目 **export** 文件夹中的所有文件将显示为可发布。同样,位于该项目 **preview** 文件夹中的所有影片文件也将显示为可发布。 - -##### Houdini - -将收集当前 Houdini 会话以供发布,其发布类型为 **Houdini Scene**,该类型可以通过加载器合并到其他 Houdini 会话中。 - -另外,还将自动收集从以下类型节点写入磁盘的任何文件并显示为发布项目: - -* **alembic** -* **comp** -* **ifd** -* **opengl** -* **wren** - -##### Maya - -将收集当前 Maya 会话以供发布,其发布类型为 **Maya 场景**,该类型可以通过加载器导入或参照到其他 Maya 会话中。 - -如果可以确定用于当前会话的项目根,则位于该项目 **cache/Alembic** 文件夹中的所有 Alembic 文件将显示为可发布。同样,位于该项目 **movies** 文件夹中的所有影片文件也将显示为可发布。 - -##### Nuke - -将收集当前 Nuke 会话以供发布,其发布类型为 **Nuke 脚本**,该类型可以通过加载器导入到其他 Nuke 会话中或作为新会话打开。 - -另外,还将自动收集从以下类型节点写入磁盘的任何文件并显示为发布项目: - -* **Write** -* **WriteGeo** - -##### Nuke Studio - -将收集打开的 Nuke Studio 项目以供发布,其发布类型为 **NukeStudio 项目**,该类型可以通过加载器在其他 Nuke Studio 会话中作为新项目打开。 - -##### Photoshop CC - -将收集打开的 Photoshop 文档以供发布,其发布类型为 **Photoshop 图像**,该类型可以通过加载器在其他 Photoshop 会话中作为新图层加载或作为新文档打开。 - -## 加载器 - -使用 {% include product %} 加载器可以快速简要了解和浏览已发布到 {% include product %} 的文件。通过一个可搜索的树视图导航系统可以轻松快速地到达您要查找的任务、镜头或资产,之后,加载器显示相应项目的所有发布的缩略图式概况。通过可配置的挂钩,您便可以轻松地在您的当前场景中引用或导入发布。 - -发布是 {% include product %} 中的记录,每个发布都代表磁盘上的一个文件或一个文件序列(例如图像序列)。发布可以由任何应用程序创建,但通常是通过发布器来创建。 - -发布创建以后,工作流中的其他人便可加载它们。此时就需要使用加载器。通过加载器,您可以浏览存储在 {% include product %} 中的发布,其方式类似于文件系统浏览器。 - -### 概述 - -通过加载器应用,可以快速浏览已发布到 {% include product %} 的文件。该应用具有可搜索的树视图导航系统,可以轻松查看任务、镜头或资产的缩略图。 - -![overview2-39.png](./images/sa-integrations-user-guide-overview2-39.png) - -### 树视图 - -使用左侧的树视图可以快速找到您要查找的镜头、资产或任务。如果您知道要查找的项目名称,可以在搜索区域中键入该名称,此时,只有匹配搜索短语的项目才会显示在树中。 - -![search3-40.png](./images/sa-integrations-user-guide-search3-40.png) - -一旦您开始键入,树周围将显示一个蓝色条,表示您查看的不再是完整的树,而是树中基于搜索短语的项目子集。在您开始搜索之时,树中的所有节点将自动展开。为了方便起见,如果右键单击树,您将看到用于展开或收拢树中所有节点的选项。 - -### 导航 - -在树视图顶部,您将看到三个导航按钮。 - -![buttons-41.png](./images/sa-integrations-user-guide-buttons-41.png) - -如果单击主页按钮,加载器将自动导航到表示您当前工作区的镜头或资产。如果要快速加载与您当前正在进行的工作相关的内容,该功能将非常有用。启动时,这也是加载器默认显示的位置。当您选择树视图中的不同项目时,将逐渐积累历史记录。与浏览器一样,可以使用后退和前进按钮来导航历史记录。 - -### 查看发布 - -一旦您选择树中的一个项目,可供使用的发布将显示在 UI 中间的发布区域。该视图中的每个项目都是发布流中的最新项目,因此,如果您查看版本 15 的纹理,这意味着该项目的版本历史记录中有 14 个先前版本。 - -除了发布之外,您还将看到代表镜头、场、资产或其他 {% include product %} 实体类型的文件夹图标。如果有对象的缩略图,您会看到它叠加在文件夹的顶部,旨在使导航快速直观。双击文件夹将向下导航到位于层次结构中的该文件夹。 - -![thumb-view-42.png](./images/sa-integrations-user-guide-thumb-view-42.png) - -有两种查看模式。如果您直观地浏览(例如查找纹理),缩略图模式非常有用。您可以快速查看列表,然后使用缩放控制柄快速放大和缩小。 - -![list-view-43.png](./images/sa-integrations-user-guide-list-view-43.png) - -如果您浏览的内容不像纹理那么直观,例如 Nuke 脚本或 Maya 文件,您可以使用列表视图而非缩略图视图。此模式提供了更多信息,也更紧凑,允许您快速滚动浏览大量项目。 - -如果您仅希望查看特定类型的项目,可以使用左下方的 _过滤器面板_ 来快速显示或隐藏发布。您还将在列表中的每个类型旁边看到一个摘要,表明为当前选择的树项目找到的每一类型发布数量。 - -### 将一个或多个发布添加到场景中 - -如果要将项目添加到场景中,只需双击该项目,之后加载器将执行发布的 _默认动作_ 。可以采用多种方法将项目添加到场景中(例如,在 Maya 中,您可能希望将其他 Maya 文件参照或导入到场景中)。在这种情况下,单击 _“动作”(Actions)_ 下拉菜单或右键单击发布的任意位置即可查看所有可用选项。 - -如果要将多个项目添加到场景中,请选择多个元素,然后右键单击已选内容中的任意一项以显示 _“动作”(Actions)_ 弹出菜单。请注意,仅显示可应用于已选内容中每一项的动作。 - -![actions2-44.png](./images/sa-integrations-user-guide-actions2-44.png) - -如果您选择镜头或资产文件夹对象而不是发布,将显示用于在 {% include product %} 中或在文件系统中显示该项目的选项。 - -### 使用早期发布 - -如果您打开右侧详细信息窗格,将看到您选择的发布的所有版本历史记录。这样,您可以加载先前版本的发布。如果希望执行此操作,只需在版本历史记录中选择相应版本并使用动作菜单将其载入,就像在主视图中加载发布一样。 - -### 相关审核 - -如果发布具有关联的审核版本,您将在详细信息窗格中看到一个播放按钮。单击该按钮将在网页中打开审片室,您可以快速查看版本或向版本添加注释,以及使用 QuickTime 播放关联的审核版本。 - -![screening-room-45.png](./images/sa-integrations-user-guide-screening-room-45.png) - -## 高级功能 - -所有 {% include product %} 集成都是基于可高度自定义和扩展的工作流构建平台(名为 Toolkit)而建。有关如何访问和配置该功能的详细信息,请参见我们的[管理员手册](https://developer.shotgridsoftware.com/zh_CN/8085533c/)。 - -## 致谢 - -* PySide 的错误修复版本随 {% include product %} Desktop 一起分发,可在[此处](http://www.autodesk.com/content/dam/autodesk/www/Company/files/PySide-1.2.2.sgtk.zip)下载。 -* 动画电影“Big Buck Bunny”(大雄兔)由 (CC) Blender Foundation (www.blender.org) 提供 - -通过添加 TANK_NO_HEADER 这个特殊标记,指示文档生成系统不需要生成标题。 diff --git a/docs/zh_CN/reference/python-api-intro.md b/docs/zh_CN/reference/python-api-intro.md deleted file mode 100644 index e7a0ee9ff..000000000 --- a/docs/zh_CN/reference/python-api-intro.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Python API -pagename: python-api-intro -lang: zh_CN ---- - -# Python API - -在这里,您可以找到 Python API 的参考文档。 \ No newline at end of file diff --git a/docs/zh_CN/shotgun.md b/docs/zh_CN/shotgun.md deleted file mode 100644 index 003d9fb48..000000000 --- a/docs/zh_CN/shotgun.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: 概述 -pagename: shotgun-index -lang: zh_CN ---- - -# {% include product %} 开发 - -管理制作时需要执行大量工作以使所有运作部分保持同步。 - -使用我们的 {% include product %} REST API 或 Python API 直接关联您的数据,使用事件触发器框架自动执行重复性任务,并使用动作菜单项直接从 {% include product %} 的 Web 界面启动应用。 - -建议您使用 {% include product %} API 开发自己的服务、应用程序、模块和组件,以便在本服务上运行或与本服务一起运行,供您自己和授权用户使用。 - -{% include warning title="身份验证密钥" content="我们要求您切勿披露(并且不允许您的授权用户披露)包含身份认证密钥的 API 信息,或者其他可能允许用户在没有登录的情况下访问本服务或其功能的方法,或者您自己使用 API 在没有登录的情况下访问或允许用户访问本服务或其功能的方法。" %} - - - diff --git a/docs/zh_CN/test.md b/docs/zh_CN/test.md new file mode 100644 index 000000000..5a7a972d9 --- /dev/null +++ b/docs/zh_CN/test.md @@ -0,0 +1,12 @@ +--- +layout: default +title: Overview +pagename: test +lang: zh_CN +--- + +# {% include product %} Development + +Test page zhcn test 123 + +![test](./images/color.png) diff --git a/docs/zh_CN/toolkit.md b/docs/zh_CN/toolkit.md deleted file mode 100644 index 3e08a939e..000000000 --- a/docs/zh_CN/toolkit.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: 工作流集成 -pagename: toolkit-index -lang: zh_CN ---- - -# 工作流集成 - -{% include product %} 包含各种集成,可将 {% include product %} 体验融入艺术家每天使用的创意工具中。开箱即用,您可以获取艺术家工具中的插件,从而为您的基本发布工作流奠定基础。 - -这些集成基于 Toolkit 平台、一系列 API、UI 和配置构建而成,可为工作室提供各种工具以构建自定义工作流。 diff --git a/docs/zh_CN/trusted-solutions/cloud.md b/docs/zh_CN/trusted-solutions/cloud.md deleted file mode 100644 index 7883947ce..000000000 --- a/docs/zh_CN/trusted-solutions/cloud.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: ShotGrid in the Cloud -pagename: cloud-index -lang: en ---- - -# {% include product %} in the Cloud - -## What is {% include product %} in the Cloud? - -{% include product %} Cloud is our default offering, hosted on AWS and built on top of Autodesk's Cloud technology platform. {% include product %} Cloud is the latest generation of our hosted service and is completely cloud based. - -## Further Reading - -Administration documentation can be found [here](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_get_started_html). \ No newline at end of file diff --git a/docs/zh_CN/trusted-solutions/tier1.md b/docs/zh_CN/trusted-solutions/tier1.md deleted file mode 100644 index 794358a37..000000000 --- a/docs/zh_CN/trusted-solutions/tier1.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: default -title: Isolation Features -pagename: tier1-index -lang: en ---- - -# Isolation Feature Set - -![isolation-theme](./tier1/images/isolation_theme.jpg) - -The isolation feature set is an hybrid solution that satisfies strict security and legal requirements, while minimizing {% include product %} System Admin specific required knowledge and maintenance. These features enable creative studios to confidently meet their supplier’s and studio’s highly stringent security, privacy, and performance requirements—from the cloud. - -Continue to [About the isolation feature set](./tier1/getting_started/about.md) for more details. - -Go to [Setup](./tier1/setup/setup.md) if you are ready to activate the Isolation features. - -## 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) - -### 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) - -### 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) - - -### 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) diff --git a/docs/zh_CN/trusted-solutions/tier1/features/features.md b/docs/zh_CN/trusted-solutions/tier1/features/features.md deleted file mode 100644 index e51276b67..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/features/features.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Features Description -pagename: tier1-features -lang: en ---- - -# Isolation Feature Set - -This section describes in detail each of the Isolation Features. - -features-description-overview - -To get the onboarding process started, go to [Onboarding Process](../getting_started/onboarding.md). - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md deleted file mode 100644 index a50d57fdf..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_isolation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-features-media-isolation -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. - -This is rendered possible by leveraging [AWS AssumeRole keyless Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). When setting up Media Isolation, an AWS Role allowing {% include product %} to access your media for the action listed above is created, and the {% include product %} service is allowed to assume that role. - -{% 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 diff --git a/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md b/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md deleted file mode 100644 index 28446b7ab..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_replication.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-features-media-replication -lang: en ---- - -# 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. - -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 - -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 is 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/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md deleted file mode 100644 index 1b6d36037..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/features/media_traffic_isolation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-features-media-traffic-isolation -lang: en ---- - -# Media Traffic Isolation - -Communication between your client systems and S3 bucket targets a number of AWS network endpoints and data traverses the open Internet by default. Media Traffic Isolation allows you to limit the number of network endpoints used to transfer data to and from your S3 bucket and optionally restrict access to your AWS VPC or a defined set of public address scopes. - -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. - -## 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/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md b/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md deleted file mode 100644 index e062739bc..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/features/web_traffic_isolation.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-features-web-traffic-isolation -lang: en ---- - -# Web Traffic Isolation - -Communication between your client systems and your {% include product %} site will traverse the open Internet by default. Web Traffic Isolation allows you to restrict access to your {% include product %} site from the public Internet entirely and ensure that all traffic transits directly between your AWS VPC and Autodesk's AWS VPC. - -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 deleted file mode 100644 index 78453dc54..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/about.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: default -title: About the Isolation Feature Set -pagename: tier1-getting_started-about -lang: en ---- - -# What is the Isolation Feature Set - -The isolation feature set combines our Cloud Hosted Platform with client-managed AWS resources to provide a solution that satisfies the most stringent security and privacy requirements. Clients retain control of their sensitive content without having to host {% include product %} on their infrastructure. - -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 - -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 - -## 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. - - -# Eligibility - -The Isolation feature set is available to clients with an active ShotGrid subscription. 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: - -**Compute Stack:** The part of the {% include product %} Service that handles client requests and serves data to the client. - -**Data Stack:** Metadata storage (databases). - -**Media Storage:** Where the client's attachments, media, and assets are stored. {% include product %} uses AWS S3 to store client content. - -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/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md deleted file mode 100644 index 05a455ec3..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/getting_started.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: Getting Started -pagename: tier1-getting_started -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. -**The Isolation feature set is available to clients with an active ShotGrid subscription. Before starting, please be sure to complete your subscription purchase.** - - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md deleted file mode 100644 index b44d00ed3..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/onboarding.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Onboarding Process -pagename: tier1-getting_started-onboarding -lang: en ---- - -# Onboarding Process - -Leveraging the isolation features requires adopters to become AWS users. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. - -Autodesk and Amazon will provide dedicated resources during the onboarding process to help you on this journey. - -To start the on-boarding process for any of the Isolation features, please open a [{% include product %} Support ticket](https://knowledge.autodesk.com/contact-support), before proceeding with [your setup](../setup/setup.md) - -## Onboarding Process Overview - -![onboarding-process](../images/tier1-onboarding-process.png) - -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 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. - -**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. - -## Onboarding Resources - -**{% include product %} Community:** The [{% include product %} Isolation Community](https://community.shotgridsoftware.com/c/trusted-solutions/isolation/34) forum can be used to ask questions that can be answered by either {% include product %} Experts or other isolation features users. This should be your first stop when asking general questions about isolation features, during setup and beyond. - -**Private Slack Channel:** During the onboarding, you will be given access to a dedicated Autodesk Slack Channel. Your {% include product %} and AWS Leaders will be available for quick feedback, answers, and ad-hoc meetings to help you progress as fast as possible with your {% include product %} Isolation setup. This channel will be available only for the onboarding period. - -**{% include product %} Support:** A [{% include product %} Support](https://knowledge.autodesk.com/contact-support) ticket will be used to track your onboarding at a higher level. Once your {% include product %} Isolation setup is complete, follow-up support tickets can be opened with the support team as needed. - -## Next Steps - -Once the onboarding process is started, you can start thinking about [your setup](../setup/setup.md) \ No newline at end of file diff --git a/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md b/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md deleted file mode 100644 index e27deaa04..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/getting_started/responsibilities.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Client Responsibilities -pagename: tier1-getting_started-responsibilities -lang: en ---- - -# Client Responsibilities - -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. - -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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html) 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/zh_CN/trusted-solutions/tier1/images/features-description-overview.png b/docs/zh_CN/trusted-solutions/tier1/images/features-description-overview.png deleted file mode 100644 index cdaf6f168..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/features-description-overview.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/isolation_theme.jpg b/docs/zh_CN/trusted-solutions/tier1/images/isolation_theme.jpg deleted file mode 100644 index 720b002ac..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/isolation_theme.jpg and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-arch.png b/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-arch.png deleted file mode 100644 index 4a1b6f397..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-arch.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-overview.png b/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-overview.png deleted file mode 100644 index 525b0130f..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-isolation-overview.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-arch.png b/docs/zh_CN/trusted-solutions/tier1/images/media-replication-arch.png deleted file mode 100644 index 78b48462d..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-arch.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-overview.png b/docs/zh_CN/trusted-solutions/tier1/images/media-replication-overview.png deleted file mode 100644 index 3bc685942..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-overview.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-preferences.png b/docs/zh_CN/trusted-solutions/tier1/images/media-replication-preferences.png deleted file mode 100644 index 2dcf50da8..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-replication-preferences.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-arch.png b/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-arch.png deleted file mode 100644 index 116505c66..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-overview.png b/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-overview.png deleted file mode 100644 index 09e9144eb..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/media-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-arch.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-arch.png deleted file mode 100644 index 4de0459f7..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-arch.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-transcoding.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-transcoding.png deleted file mode 100644 index 60780e45a..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-about-transcoding.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_other.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_other.png deleted file mode 100644 index 4c0793153..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_other.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png deleted file mode 100644 index 27f735970..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-s3_ue1.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-setup.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-setup.png deleted file mode 100644 index 727585e6d..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-arch-setup.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-1.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-1.png deleted file mode 100644 index 19c31b631..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-1.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-2.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-2.png deleted file mode 100644 index 7a650d5a4..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-2.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-3.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-3.png deleted file mode 100644 index a2aa900f6..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create-3.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png deleted file mode 100644 index 206b55453..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-endpoint-create_privatelink.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-onboarding-process.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-onboarding-process.png deleted file mode 100644 index 49fcf262a..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-onboarding-process.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-s3-replication.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-s3-replication.png deleted file mode 100644 index 987b45c08..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-s3-replication.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/tier1-setup-process.png b/docs/zh_CN/trusted-solutions/tier1/images/tier1-setup-process.png deleted file mode 100644 index acb989c7e..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/tier1-setup-process.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-arch.png b/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-arch.png deleted file mode 100644 index 738878820..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-arch.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-overview.png b/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-overview.png deleted file mode 100644 index 66b11ed59..000000000 Binary files a/docs/zh_CN/trusted-solutions/tier1/images/web-traffic-isolation-overview.png and /dev/null differ diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md deleted file mode 100644 index 4047e2782..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/aws.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default -title: AWS Knowledge -pagename: tier1-knowledge-aws -lang: en ---- - -# AWS Knowledge - -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/) diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md deleted file mode 100644 index aa9aad9dd..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/connecting.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Connecting Your Studio With Your AWS VPC -pagename: tier1-knowledge-connecting -lang: en ---- - -# Connecting Your Studio With Your AWS VPC - -You can connect your studio networks with AWS using one of many options, described in detail in this [Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) whitepaper. - -Some of the common options our clients have used include: - -## VPN Connection - -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.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect.md deleted file mode 100644 index 14339c232..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Direct Connect -pagename: tier1-knowledge-direct_connect -lang: en ---- - -# Direct Connect - -[AWS Direct Connect](https://aws.amazon.com/directconnect/) is a service from AWS that allows you to establish a dedicated connection from your on-premise data center (or offices) to AWS. Direct Connect will allow you to create a dedicated link between your network and one of the AWS Direct Connect locations. - -Leveraging AWS Direct Connect ensure that you will benefit from the best experience possible when using the isolation feature set, optimizing reliability and performance for all your access points across the globe. 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 deleted file mode 100644 index acf1ab748..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/direct_connect_onboarding.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: default -title: ShotGrid AWS Direct Connect Onboarding -pagename: tier1-knowledge-direct_connect_onboarding -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. - -## Review of Shogun Configuration in AWS - -![high-level-architecture](../images/tier1-arch-s3_ue1.png) - -## Customer Types - -1. Customer already has AWS Direct Connect dedicated connection -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 -2. Request a hosted Direct Connect connection through AWS Direct Connect Partner - - -## 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): - -- Do you already have equipment and presence in an AWS Direct Connect location? -- Do you know the process for requesting a cross-connect within the Direct Connect location facility? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then request a dedicated Direct Connect connection through the AWS Console and select a Partner to assist (Option 1b): - -- Are you planning to use AWS Direct Connect to connect to other AWS resources outside of {% include product %}? -- Do you have the time and resources to complete the setup? -- Are you looking for any one of the following - 1Gbps, 10Gbps port, or a dedicated connection? - -If you answer “yes” to the following, then you should work with an AWS Direct Connect Partner to request a hosted Direct Connect connection (Option 2): - -- 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.* - -## 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). -1. (Option 1b only) [Reach out to an AWS Partner](https://aws.amazon.com/directconnect/partners/) and share the LOA with them. -1. Once the dedicated connection is provisioned into your account, set up logical connectivity (Virtual Interfaces). - -### 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 -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). - -## FAQ - -**How long should it take to set up AWS Direct Connect?** - -Short Answer - It depends. A lot of factors go into the time it takes to set up AWS Direct Connect. The timeline can vary from a few days to a few months. Some of the factors include current infrastructure, location of equipment, providers, partners, and more. If you are looking to expedite the process, consider using an AWS Direct Connect Partner who is geographically nearby. - -**Further questions about AWS Direct Connect?** - -[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). - -## AWS Documentation & Resources - -- [What is AWS Direct Connect?](https://www.youtube.com/watch?v=eNxPhHTN8gY&feature=youtu.be&t=716) -- [Direct Connect User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dc-ug.pdf) -- [re:Invent 2018 - 400 level Deep Dive on Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc) -- [AWS Direct Connect Locations](https://aws.amazon.com/directconnect/features/#AWS_Direct_Connect_Locations) -- [AWS Direct Connect Partners](https://aws.amazon.com/directconnect/partners/) diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md deleted file mode 100644 index 12d99d191..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/endpoints.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: VPC Endpoints -pagename: tier1-knowledge-endpoints -lang: en ---- - -# VPC Endpoints - -Coming soon. \ No newline at end of file diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md deleted file mode 100644 index 6eaae7b9d..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/knowledge.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Knowledge -pagename: tier1-knowledge -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md deleted file mode 100644 index daa50aa49..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/private_link.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: Private Link -pagename: tier1-knowledge-private_link -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. - -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/zh_CN/trusted-solutions/tier1/knowledge/s3.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/s3.md deleted file mode 100644 index 3caac5bbf..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/s3.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: default -title: S3 -pagename: tier1-knowledge-s3 -lang: en ---- - -# S3 - -[Amazon S3](https://aws.amazon.com/s3/) is an object storage service offered by AWS. It can be thought of as a highly durable storage space in the cloud. {% include product %} uses S3 to store uploaded media and files. - -In order to use {% include product %} isolation features, you will bring your own S3 bucket and configure {% include product %} to use it for storage. Please refer to our [S3 Bucket Setup article](../setup/s3_bucket.md) for details on how to do this. diff --git a/docs/zh_CN/trusted-solutions/tier1/knowledge/vpc_iam_sec.md b/docs/zh_CN/trusted-solutions/tier1/knowledge/vpc_iam_sec.md deleted file mode 100644 index effbe85bf..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/knowledge/vpc_iam_sec.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -title: VPC / IAM / Security Group -pagename: tier1-knowledge-vpc_iam_sec -lang: en ---- - -# VPC / IAM / Security Group - -[Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/) permits users to logically separate virtual networks that host their AWS resources and provides you complete control over access to your AWS network. - -Within a VPC, [security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) act as a basic firewall and control what inbound and outbound connections are permitted to each given resource. For example, a security group can allow inbound **HTTPS** traffic to a proxy server but block all other inbound traffic. - -With [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/), access to AWS resources and services can be controlled at a more fine-grained level. For example, IAM can be leveraged to control who or which resources can access S3 buckets used by {% include product %}. - -All three of the above features are used in the {% include product %} isolation features implementation to ensure that you securely connect your closed VPC to {% include product %} and allow access to the [media S3 buckets](../setup/s3_bucket.md). diff --git a/docs/zh_CN/trusted-solutions/tier1/learn/learn.md b/docs/zh_CN/trusted-solutions/tier1/learn/learn.md deleted file mode 100644 index fc1364ac6..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/learn/learn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Learn -pagename: tier1-learn -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md b/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md deleted file mode 100644 index ace2a3a7b..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation -pagename: tier1-setup-media_segregation -lang: en ---- - -# Media Traffic Isolation using AWS PrivateLink for Amazon S3 - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the {% include product %} Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used." %} - -Simply add an `com.amazonaws.us-west-2.s3` Interface VPC Endpoint to your existing VPC. Make sure the associated security group allow traffic from your site network. - -### Add the VPC to your S3 bucket policy - -In order for the S3 VPC endpoint to communicate with your S3 bucket your bucket policy must allow access from the S3 endpoint's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 VPC endpoint - -Use the endpoint URL to list objects in your bucket using AWS CLI. In the following example, replace the VPC endpoint ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` and bucket name `my-bucket` with appropriate information. - -``` - aws s3 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com ls s3://my-bucket/ -``` - -### Configure your test site to use your S3 VPC endpoint - -* Please contact {% include product %} support via the dedicated Slack channel and provide the following information: - * Your S3 bucket name - * Your S3 VPC endpoint DNS Name -* Autodesk will configure your test site to use your S3 VPC endpoint -* Confirm that you are still able to access existing media -* Attempt to upload new media - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/media_segregation_s3_proxy.md b/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md deleted file mode 100644 index 3de278e64..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/media_segregation_s3_proxy.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: default -title: Media Traffic Isolation - S3 Proxy -pagename: tier1-setup-media_segregation_s3_proxy -lang: en ---- - -{% include info title="Deprecated" content="The preferred way is to use S3 Private Link instead of a S3 proxy, see [Media Traffic Isolation](./media_segregation.md)" %} - -# Media Traffic Isolation using an S3 proxy (DEPRECATED) - -{% include info title="Disclaimer" content="This documentation is provided solely as an example. It explains how to set up your ShotGrid Isolation environment so that it can be connected to ShotGrid cloud infrastructure. Please adapt it to your studio security requirements as needed. As ShotGrid has no visibility on your AWS Account, ensuring that this account is secure is a client responsibility." %} - -The media traffic isolation feature allows your users to access media in your AWS S3 bucket privately (not transiting over the public Internet). Please note that if you have a multi-region setup and that leverages the ShotGrid Transcoding service there may still be instances where media transits across the public Internet. Reach out to our support team for more details. - -Media Isolation activation is a pre-requisite to enable this feature. If you haven't done so already, see [Media Isolation](./s3_bucket.md). - -## Set up a VPC in your S3 bucket AWS region - -{% include info title="Disclaimer" content="Before starting, decide whether your S3 proxy will be privately accessible within your VPC or publicly accessible via the Internet and choose the relevant templates in the following instructions." %} - -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): - [`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: - [`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 - -## 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/) - -{% 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." %} - -## Add an S3 endpoint to your VPC - -{% include info title="Note" content="This step should only be performed if the CloudFormation template was *not* used when configuring [Media Isolation](./s3_bucket.md)." %} - -![Add endpoint](../images/tier1-endpoint-create-1.png) -![Add endpoint](../images/tier1-endpoint-create-2.png) -![Add endpoint](../images/tier1-endpoint-create-3.png) - -## Set up S3 proxy - -You will need to deploy an S3 proxy in your VPC to forward traffic to the S3 VPC endpoint. We provide both [private](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy.yml) and [public](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-s3-proxy-public.yml) S3 proxy CloudFormation templates as starting points for this purpose. These will create the necessary Elastic Container Service (ECS) cluster and other resources to run the S3 proxy on AWS Fargate behind an AWS Application Load Balancer (ALB). - -### 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: - ``` - 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 - docker push 627791357434.dkr.ecr.us-west-2.amazonaws.com/s3-proxy:1.0.6 - ``` - -### Create S3 proxy CloudFormation stack - -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): - [`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: - [`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 - -### 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 - 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 - 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 - -### Add S3 proxy VPC to S3 bucket policy - -In order for the S3 proxy to communicate with your S3 bucket your bucket policy must allow access from the S3 proxy's VPC. You can find instructions on how to configure the policy in the [Fine Tuning](./tuning.md#s3-bucket-policy) step. - -## Validation - -### Test the S3 proxy - -Try to access your S3 proxy using the ping route. Eg. `https://s3-proxy.mystudio.com/ping` - -### 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 - -## Next Steps - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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/migration.md b/docs/zh_CN/trusted-solutions/tier1/setup/migration.md deleted file mode 100644 index fcada3bf8..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/migration.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -title: Migration -pagename: tier1-setup-migration -lang: en ---- - -# Migration - -Once everything is configured and properly tested with the migration test site, it's now time to migrate your production site to use the isolation features. - -## Test migration - -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. - -## 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. - diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/planning.md b/docs/zh_CN/trusted-solutions/tier1/setup/planning.md deleted file mode 100644 index e365d92b6..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/planning.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default -title: Planning Your Setup -pagename: tier1-getting_started-planning -lang: en ---- - -# Planning Your Setup - -![Architecture](../images/tier1-arch-setup.png) - -## Pick your options - -Pick which features you want to activate - * Media Isolation - * Media Traffic Isolation - * Web Traffic Isolation - * Media Replication - -## AWS Account Creation - -Before going further, you will require an AWS Account. If you don't already have an AWS Account, [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). - -## Choose an AWS Region - -Choose an AWS Region for your AWS S3 bucket and VPC. Which region to use? You should chose the a region that is the closest possible to your studio. - -If your company is located in different locations, consider enabling the media replication feature to reduce latency and improve performance - -## Plan the VPC IP ranges - -Plan your AWS VPC and subnets IP ranges. - -### IP Range Example - -| 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 - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md b/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md deleted file mode 100644 index 91339137f..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/s3_bucket.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: default -title: Media Isolation -pagename: tier1-setup-s3_bucket -lang: en ---- - -# Media Isolation - -{% include info title="Disclaimer" content="The security of your S3 bucket is solely a client responsibility, and the integrity of your data will be at risk without it. We very strongly recommend [securing your S3 bucket properly](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)." %} - -## AWS Account Creation - -You can quickly [create your AWS Account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/). -You should also contact your AWS contacts to get help with your AWS account setup. - -## AWS CloudFormation template - -It's possible to start from the [Private S3 bucket AWS CloudFormation template](https://sg-shotgunsoftware.s3-us-west-2.amazonaws.com/tier1/cloudformation_templates/sg-private-s3-bucket.yml) and customize it for your needs for a faster deployment. - -{% 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 - -### CORS Configuration - -CORS policy on your S3 bucket will be minimally configured, allowing only the required origin (your site) and methods, amongst other things. - -### IAM Role - -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. - -## 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 - -{% include product %} will configure your test site to use your own S3 bucket. - -## Validation - -At this stage, you should be able to upload and download media. The {% include product %} Transcoding Service should also be able to read, transcode and write back the thumbnails, filmstrip and web friendly versions of your media back to your S3 Bucket. To validate this: - -1. Log in your Migration Test Site. -2. From the Navigation Bar, go the the Media app -3. Once in the Media App, drag and drop or upload an image or a video from your computer. If you didn't created a Project yet, you may have to create one first. -4. A version should appear, with a thumbnail, in the Media App. -5. Validate that you can playback the media by clicking the Play button. -6. To validate that the media has been stored in your S3 bucket, from the media viewer, click on the cog and then select or hover over ‘view source’. The HTTPS link should contain your bucket name. - -## Next Steps - -See [Media Traffic Isolation](./media_segregation.md) to activate the Media Traffic Isolation feature. - -See [Web Traffic Isolation](./traffic_segregation.md) to activate the Web Traffic Isolation feature. - -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 deleted file mode 100644 index 20b465ada..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/s3_replication.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Media Replication -pagename: tier1-setup-s3_replication -lang: en ---- - -# Media Replication - -## Description - -It's possible to add S3 replication between two S3 buckets in different regions and configure {% include product %} to leverage it for faster access to media. - -![S3 Replication Diagram](../images/tier1-s3-replication.png) - -## Features - - * 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 - -When S3 bucket replication is activated, users will be able download media files from the replica S3 bucket. - -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| - -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 - -# 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 - -## FAQ - -### Copy existing media - -S3 replication only applies to media uploaded after the feature has been enabled. Existing media in the primary bucket must be copied to the replica bucket manually. You can simply use `aws-cli` sync or use [Amazon S3 Batch Operations](https://aws.amazon.com/s3/features/batch-operations/) if you have a lot of media to achieve this. - -## Next Steps - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/setup.md b/docs/zh_CN/trusted-solutions/tier1/setup/setup.md deleted file mode 100644 index 759f5637f..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/setup.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: default -title: Setup -pagename: tier1-setup -lang: en ---- - -# {% include product %} Isolation Feature Set - Setup - -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. - -## 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) - -# Setup Overview - -![tier1-setup-process](../images/tier1-setup-process.png) - -## [Understand your responsibilities](../getting_started/responsibilities.md) - -Make sure that you understand the [client responsibilities and the implication](../getting_started/responsibilities.md) of activating any of the Isolation feature. - -## [Start the onboarding process](../getting_started/onboarding.md) - -Leveraging the isolation features requires adopters to become AWS users. The features activation also requires Autodesk Support intervention. In order to ensure that this joint venture between Autodesk, AWS, and our clients is as streamlined as possible, we decided to work closely with AWS to define a cooperative onboarding process that would meet client expectations for a premium offering. [Kick-start the onboarding process](../getting_started/onboarding.md) before going further. - -## [Planning your Setup](./planning.md) - -Before you start working on your setup, [put a plan in place](./planning.md). Choose the features you need and get the required security/legal approval from your team to get started with the Isolation feature set. - -## [Migration Test Site](./shotgun_poc_site.md) - -To help you setting up the Isolation features without breaking your production environment and to helping smooting the migration to your isolated environment, {% include product %} propose to use a test site on which to test your setup before applying the result to production. - -## [Media Isolation](./s3_bucket.md) - -This feature allow you to use a S3 Bucket owned by your studio to store media. - -## [Media Traffic Isolation](./media_segregation.md) - -This feature allows for private routing of the media through the AWS Backbone and your studio network, isolating the media traffic from the public internet. - -## [Web Traffic Isolation](./traffic_segregation.md) - -This feature isolate the web traffic on AWS Backbone and your studio network, isolating the traffic from the public internet. - -## [Media Replication](./s3_replication.md) - -This feature allows the media to be replicated between AWS Regions, for faster access in your world wide studios. Media Isolation is required. - -## [Fine Tuning](./tuning.md) - -Once the isolation features you need are activated, make sure that you everything is properly configured for security and cost-efficiency by reviewing this fine tuning guide. - -## [Migration](./migration.md) - -Once everything is ready, it's now time to migrate your production site to use the isolation features. 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 deleted file mode 100644 index 18a4cfd1d..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/shotgun_poc_site.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default -title: Migration Test Site -pagename: tier1-setup-shotgun_poc_site -lang: en ---- - -# {% include product %} Migration Test Site - -Activating the isolation feature set is an intrusive procedure that can have an impact on the usability of your site. To prevent a production stopping event, we require clients to follow an approach where the configuration is first validated on a test site, before being applied to the production site. - -The {% include product %} team will create a temporary site to be used as a Proof of Concept for your {% include product %} Isolation deployment. Upon the successful completion of the setup process, your existing {% include product %} site can be migrated to your {% include product %} Isolation environment. - -If your Migration Test Site has not been created yet, please reach out to our Support team through your Zendesk ticket or your dedicated on-boarding Slack Channel. - -## Next Steps - -Once you have your test site, you can the implementation of the feature you need. - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md b/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md deleted file mode 100644 index bdeb2f1bf..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/traffic_segregation.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: default -title: Web Traffic Isolation -pagename: tier1-setup-traffic_segregation -lang: en ---- - -# Web Traffic Isolation - -The goal is to set up an AWS PrivateLink to privately access your {% include product %} site. - -## Set up PrivateLink to ShotGrid - - * 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. - -### Manual steps if needed - - * 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. - -![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`. - -## Validation - -Verify that your site private URL resolves to IPs in your AWS VPC block. - -``` -nslookup mystudio-staging.priv.shotgunstudio.com -``` - -Try to access your test site from inside your office ie https://mystudio-staging.priv.shotgunstudio.com - -## Next Steps - -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 diff --git a/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md b/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md deleted file mode 100644 index c06d6ef05..000000000 --- a/docs/zh_CN/trusted-solutions/tier1/setup/tuning.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: default -title: Fine Tuning -pagename: tier1-setup-tuning -lang: en ---- - -# Fine Tuning - -## Cost Management Recommendations - -### S3 Infrequent Access - -We recommend enabling S3 Infrequent Access to easily reduce costs without impacting performance. For the {% include product %} Cloud hosted offering, we apply a policy for all objects older than one month. - -With Infrequent Access, objects are stored at a lower cost. However, if they are accessed, it will involve an additional cost. {% include product %} has observed that one month was the right policy to use globally, but you may want to adapt that policy to your studio workflows as needed. - -Read more about S3 Infrequent Access and other storage classes [here](https://aws.amazon.com/s3/storage-classes/). - -## S3 Bucket policy - -We recommend you restrict access to your S3 bucket to only your VPC and {% include product %} transcoding services IPs. There is an example policy, replace `your_vpc_id` and `your_s3_bucket` by your values. - -We strongly recommend you test media access and media transcoding in your migration test site right after applying the bucket policy changes to be sure your S3 bucket is still accessible from your VPC and from {% include product %} transcoders. - -``` -{ - "Version": "2012-10-17", - "Id": "Policy1415115909152", - "Statement": [ - { - "Sid": "AllowSSLRequestsOnly", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": [ - "arn:aws:s3:::your_s3_bucket", - "arn:aws:s3:::your_s3_bucket/*" - ], - "Condition": { - "Bool": { - "aws:SecureTransport": "false" - } - } - }, - { - "Sid": "Access-to-specific-VPC-only and Shotgun transcoder", - "Effect": "Deny", - "Principal": "*", - "Action": "s3:*", - "Resource": "arn:aws:s3:::your_s3_bucket/*", - "Condition": { - "NotIpAddress": { - "aws:SourceIp": [ - "34.200.155.69/32", - "34.224.232.103/32", - "34.202.127.170/32" - ] - }, - "StringNotEquals": { - "aws:sourceVpc": [ - "vpc-2fd62a56", - "your_vpc_id" - ] - } - } - } - ] -} -``` - -## S3 endpoint policy - -We recommend setting a VPC endpoint policy on your S3 endpoint to allow access to your S3 bucket only. See [here](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) for an example. - -## 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. - -## Next Steps - -See [Migration](./migration.md) to migrate your production site to use the isolation features. - -Go to [Setup](./setup.md) for an overview of the possible next steps. diff --git a/docs/zh_CN/videos/images/dev-day-playlist.png b/docs/zh_CN/videos/images/dev-day-playlist.png deleted file mode 100644 index 269534352..000000000 Binary files a/docs/zh_CN/videos/images/dev-day-playlist.png and /dev/null differ diff --git a/docs/zh_CN/videos/images/toolkit-playlist.png b/docs/zh_CN/videos/images/toolkit-playlist.png deleted file mode 100644 index f87247919..000000000 Binary files a/docs/zh_CN/videos/images/toolkit-playlist.png and /dev/null differ diff --git a/docs/zh_CN/videos/video-webinars.md b/docs/zh_CN/videos/video-webinars.md deleted file mode 100644 index 8beb5bbd7..000000000 --- a/docs/zh_CN/videos/video-webinars.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: default -title: Toolkit 网络讲座 -pagename: video-webinars -lang: zh_CN ---- - -# {% include product %} Toolkit 网络讲座 - -*更新日期:2020/5/8* - -## {% include product %} Toolkit 网络讲座播放列表 - -[![](images/toolkit-playlist.png)](https://www.youtube.com/watch?v=rgzHEwUhENI&list=PLEOzU2tEw33q65lv0_AKDT6tbpi6vgMDH) - -## {% include product %} Toolkit 网络讲座视频 - - -1:{% include product %} Toolkit 网络讲座:即时可用的集成*(60 分钟)* - -在新的 Toolkit 网络讲座系列的第一个讲座中,Rob Blau 和 Manne Öhrström 将为您解答有关即时可用的集成的问题。 - -[![](http://img.youtube.com/vi/rgzHEwUhENI/0.jpg)](http://www.youtube.com/watch?v=rgzHEwUhENI) - -2:{% include product %} Toolkit 网络讲座:揭秘新的默认配置*(60 分钟)* - -在此网络讲座中,Josh Tomlinson 和 Rob Blau 将为您介绍 Toolkit 项目的新默认配置中发生了哪些变化(以及变化原因)。 - -[![](http://img.youtube.com/vi/eKHaC1dZCeE/0.jpg)](http://www.youtube.com/watch?v=eKHaC1dZCeE) - -3:{% include product %} Toolkit 网络讲座:自定义发布工作流 - 现场演示*(60 分钟)* - -在此网络讲座中,Josh Tomlinson 分步演练了在 Maya 中创建自定义发布工作流的过程。了解发布应用的构造、发布应用的配置方式以及如何编写用于收集和发布数据的自定义挂钩。 - -[![](http://img.youtube.com/vi/pH4mylrnktY/0.jpg)](http://www.youtube.com/watch?v=pH4mylrnktY) - -*补充材料* - -[工作流教程](https://developer.shotgridsoftware.com/zh_CN/cb8926fc/) - -4:{% include product %} Toolkit 网络讲座:远程服务配置和多位置工作流*(60 分钟)* - -在此网络讲座中,Manne Ohrstrom 探讨了所属艺术家位于多个位置的工作室的工作流。 - -[![](http://img.youtube.com/vi/NyIk07F2RoM/0.jpg)](http://www.youtube.com/watch?v=NyIk07F2RoM) - -*补充材料* - -[有关 Toolkit 初始化和配置管理的开发人员文档](https://developer.shotgridsoftware.com/tk-core/initializing.html) - -[Manne 在视频中提及的描述符类型的列表](https://developer.shotgridsoftware.com/tk-core/descriptor.html#descriptor-types) - -5:{% include product %} 生态系统网络讲座:REST API*(60 分钟)* - -在此网络讲座中,Brandon Ashworth 将为我们演练一些有用的演示、示例和模板,以展示 REST API 是什么、它重要的原因以及它的使用方式。 - -[![](http://img.youtube.com/vi/3xPPj2pbHVQ/0.jpg)](http://www.youtube.com/watch?v=3xPPj2pbHVQ) - -*补充材料* - -[REST API 参考文档](https://developer.shotgridsoftware.com/rest-api/) - -6:{% include product %} Toolkit 网络讲座:新的 Publisher API*(35 分钟)* - -最新的集成发布包括经过改进的 Publish API,此 API 允许您将发布逻辑与 GUI 应用分离,并通过您自己的工具、甚至在渲染农场上运行发布。在此网络讲座中,Jean-Francois Boismenu 将演示如何使用此 API 将发布项目树从 Publisher UI 传递到渲染农场作业。 - -[![](http://img.youtube.com/vi/ZxP3IXHt47U/0.jpg)](http://www.youtube.com/watch?v=ZxP3IXHt47U) - -*补充材料* - -[包含配置的 Github 库](https://github.com/shotgunsoftware/tk-config-publish_api_webinar) - -[31:00 - Pull 请求](https://github.com/shotgunsoftware/tk-config-publish_api_webinar/pull/1) - -[Publish API 文档](https://developer.shotgridsoftware.com/tk-multi-publish2/) - -7:{% include product %} Toolkit 网络讲座:After Effects 集成*(38 分钟)* - -Adobe After Effects 是我们最新的 {% include product %} 集成。在此网络讲座中,Rob Blau 将深入剖析 After Effects 集成并现场演示相关功能,而后讨论我们如何通过 Photoshop 集成推动为任何 Adobe 集成开发可重复使用的框架。 - -此外,Tannaz Sassooni 为我们导览了新的开发人员文档站点,并展示我们如何让用户更轻松地了解与 {% include product %} 的集成方式。 - -[![](http://img.youtube.com/vi/g-062_VTbAI/0.jpg)](http://www.youtube.com/watch?v=g-062_VTbAI) - -*补充材料* - -[After Effects 集成文档](https://developer.shotgridsoftware.com/zh_CN/1eca509c/) - -[开发人员文档门户](https://developer.shotgridsoftware.com/zh_CN/) - -## {% include product %} 开发人员日播放列表 - - -[![](images/dev-day-playlist.png)](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d) - - -## {% include product %} 开发人员日视频 - - -在 SIGGRAPH 2018 和 2019 上,{% include product %} 团队展示了 {% include product %} 开发人员日:这是一系列课程,旨在使开发人员熟悉可用于实现任务自动化、编写自定义应用等的各种资源。在 SIGGRAPH 之后,我们举办了一系列以开发人员日的内容为专题的网络讲座。此播放列表包含这些网络讲座的录像。 - -完整幻灯片、代码示例以及与此内容相关的其他资源位于[此处 (2019)](https://github.com/shotgunsoftware/sg-siggraph-2019) 和[此处 (2018)](https://github.com/shotgunsoftware/sg-devday-2018/)。 - -1:2019 SIGGRAPH 开发人员日:{% include product %} 开发简介*(83 分钟)* - -在此网络讲座中,Tannaz Sassooni 和 Patrick Boucher 对 {% include product %} 开发进行了介绍,其中讨论了 {% include product %} 的自动化入口点、{% include product %} 的 Python 和 REST API,以及 {% include product %} 的 API 如何自动化工作室的任务和数据跟踪。 - -[![](http://img.youtube.com/vi/i0aVJepZw8Y/0.jpg)](http://www.youtube.com/watch?v=i0aVJepZw8Y) - -[0:56](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=56s) 欢迎和情况介绍 - -[3:00](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=180s) {% include product %} 开发简介:有关常见工作流需求以及如何使用 {% include product %} API 和开发框架解决这些需求的高级概述。[Tannaz Sassooni] - -[25:59](https://www.youtube.com/watch?v=i0aVJepZw8Y&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=1&t=1559s) 介绍使用 {% include product %} API 管理数据的过程:深入剖析使用简单 Python 和 REST 脚本的 {% include product %} API,以及用于创建动作菜单项的框架。[Patrick Boucher] - -2:2019 SIGGRAPH 开发人员日:高级 {% include product %} 开发*(78 分钟)* - -在此网络讲座中,Brandon Ashworth 和 Manne Öhrström 深入剖析 {% include product %} 如何使用事件进程和新 Webhook 响应 {% include product %} 中的数据变更,并介绍如何使用 {% include product %} Toolkit 编写简单的工作流工具。 - -[![](http://img.youtube.com/vi/xUeY1pECHdI/0.jpg)](http://www.youtube.com/watch?v=xUeY1pECHdI) - -[0:39](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=39s) 欢迎和情况介绍 - -[2:33](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=153s) 处理 {% include product %} 事件 [Brandon Ashworth] - -[41:25](https://www.youtube.com/watch?v=xUeY1pECHdI&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=2485s) 开发在多个艺术家应用中运行的 {% include product %} 工具 [Manne Öhrström] - -3:SIGGRAPH 开发人员日:Toolkit 管理*(1 小时 15 分钟)* - -在此网络讲座中,Josh Tomlinson、Tannaz Sassooni 和 Phil Scadding 演示了如何掌管集成并创建自定义目录结构和挂钩以在工作室中实现更多数据流的自动化。 - -[![](http://img.youtube.com/vi/7qZfy7KXXX0/0.jpg)](http://www.youtube.com/watch?v=7qZfy7KXXX0) - -[0:00](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=0s) 欢迎和情况介绍 - -[1:04](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=64s) {% include product %} Toolkit 管理:了解如何通过我们的 {% include product %} Desktop 应用启动常用内容创建软件,并弄清艺术家如何在不离开其工作会话的情况下使用我们的默认工作流集成与 {% include product %} 交互。[Phil Scadding] - -[32:41](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=1961s) Toolkit 配置简介:掌握 Toolkit 工作流配置导航过程,了解如何使用它自定义您的工作流。[Tannaz Sassooni] - -[56:20](https://www.youtube.com/watch?v=7qZfy7KXXX0&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=2&t=3380s) 管理挂钩:学习使用 {% include product %} Toolkit 的大量挂钩将自定义逻辑添加到配置并根据工作室的需求定制 Toolkit 工作流。[Josh Tomlinson] - -4:SIGGRAPH 开发人员日:高级 {% include product %} 开发*(1 小时 15 分钟)* - -Manne Ohrstrom、Jeff Beeland 和 Rob Blau 演示了源控制和基于远程服务的工作流部署的最佳实践,并深入剖析了应用构建以及使用 Toolkit 的标准框架快速设计 UI 和处理数据的过程。 - -[![](http://img.youtube.com/vi/bT2WlQaJVmY/0.jpg)](http://www.youtube.com/watch?v=bT2WlQaJVmY) - -[0:00](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=0s) 欢迎和情况介绍 - -[2:31](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=151s) Toolkit 平台:开发和部署模式:了解设置和部署 Toolkit 工作流配置的各种方式,包括开发工作流、版本控制最佳实践以及将工作流配置分发给远程用户(通过将工作流配置上传到 {% include product %} 站点)。[Manne Ohrstrom] - -[30:23](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=1823s) Toolkit 平台:编写您自己的应用:演练编写简单的 Toolkit 应用、利用提供的 API 和框架快速创建功能强大的 UI 的过程。[Jeff Beeland] - -[1:02:22](https://www.youtube.com/watch?v=bT2WlQaJVmY&list=PLEOzU2tEw33r4yfX7_WD7anyKrsDpQY2d&index=3&t=3742s) Autodesk Forge 简介:了解 Forge(由 API 驱动的 Autodesk 远程服务系列)以及如何利用它们延伸 {% include product %} 体验。[Rob Blau] - diff --git a/tk-doc-generator b/tk-doc-generator index 02724154b..380296171 160000 --- a/tk-doc-generator +++ b/tk-doc-generator @@ -1 +1 @@ -Subproject commit 02724154b64685113a03cdb35cc5644a5d228736 +Subproject commit 380296171fe10da49864eb95331a4f91ff6d791d