ftrack connect nuke studio¶
About¶
Connect NUKE STUDIO with ftrack. Easily set up your ftrack project directly from NUKE STUDIO, pick your workflow schema and tag shots with appropriate tasks. Publish plates, with proxy and web playable components.
Installing¶
Using ftrack Connect¶
The primary way of installing and launching the Nuke studio integration is through the ftrack Connect package. Go to ftrack Connect package and download it for your platform.
See also
Once ftrack Connect package is installed please follow this article to launch Nuke studio with the ftrack integration.
Building from source¶
You can also build manually from the source for more control. First obtain a copy of the source by either downloading the zipball or cloning the public repository:
git clone git@bitbucket.org:ftrack/ftrack-connect-nuke-studio.git
Then you can build and install the package into your current Python site-packages folder:
python setup.py build_plugin
Once build you can install the result plugin in the ftrack-connect-plugin folder directory.
Building documentation from source¶
To build the documentation from source:
python setup.py build_sphinx
Then view in your browser:
file:///path/to/ftrack-connect-nuke-studio/build/doc/html/index.html
Running tests against the source¶
With a copy of the source it is also possible to run the unit tests:
python setup.py test
Dependencies¶
Python >= 2.6, < 3
ftrack connect >= 0.1.2, < 2
Nuke Studio >= 2 < 3
Additional For building¶
Sphinx >= 1.2.2, < 2
sphinx_rtd_theme >= 0.1.6, < 1
Developing¶
Discover how to develop and extend the default ftrack integration with Nuke studio.
Adding custom templates¶
It is possible to customise the templates available when exporting. This is done by modifying the default hook that loads the templates.
The file to modify is called context_template_hook.py and is located in different locations depending on how you are running the Nuke Studio plugin.
If you are using a built ftrack connect package application, the file can be found in the following locations:
Platform |
Path |
---|---|
Mac OS X |
/Applications/ftrack-connect.app/Contents/MacOS/resource/ftrack_connect_nuke_studio/application_hook |
Windows |
C:/Program Files/ftrack-connect package/resource/ftrack_connect_nuke_studio/application_hook |
CentOS |
<Installation directory>/ftrack-connect-package/resource/ftrack_connect_nuke_studio/application_hook |
If running from source the hooks can be found in resource/application_hook/ in the plugin project folder.
Once you’ve found the file, open it in your favorite text editor. The file should look something like this:
# :coding: utf-8
# :copyright: Copyright (c) 2015 ftrack
import logging
import ftrack_api
class ContextTemplates(object):
'''Return context templates for Nuke Studio.'''
def __init__(self, session, *args, **kwargs):
'''Initialise context templates hook.'''
self.logger = logging.getLogger(
__name__ + '.' + self.__class__.__name__
)
self.session = session
super(ContextTemplates, self).__init__(*args, **kwargs)
def launch(self, event):
'''Return context templates.'''
# Define tag regular expressions.
return [{
'name': 'Classic, sequence and shot',
'description': (
'Match SQ or SH and any subsequent numbers. '
'Example: SQ001_SH010 will be matched as Sequence with name '
'001 and a shot named 010.'
),
'expression': '{_:SQ|sq}{Sequence:\d+}{_:.+(SH|sh)}{Shot:\d+}'
}, {
'name': 'Classic, shot only',
'description': (
'Match SH and any subsequent digits. '
'Example: vfx_SH001 will match 001.'
),
'expression': '{_:SH|sh}{Shot:\d+}'
}, {
'name': 'Full name, shot only',
'description': (
'Match entire clip name. '
'Example: vfx_SH001 will match vfx_SH001.'
),
'expression': '{Shot:.+}'
}]
def register(self):
'''Register hook.'''
self.session.event_hub.subscribe(
'topic=ftrack.connect.nuke-studio.get-context-templates',
self.launch
)
def register(session, **kw):
'''Register plugin. Called when used as an plugin.'''
# Validate that session is an instance of ftrack_api.Session. If not,
# assume that register is being called from an old or incompatible API and
# return without doing anything.
if not isinstance(session, ftrack_api.session.Session):
return
plugin = ContextTemplates(
session
)
plugin.register()
The part you need to focus on is the one returning the actual templates:
return [{
'name': 'Classic, sequence and shot',
'description': (
'Match SQ or SH and any subsequent numbers. '
'Example: SQ001_SH010 will be matched as Sequence with name '
'001 and a shot named 010.'
),
'expression': 'SQ{Sequence:\d+}{_:.+}H{Shot:\d+}'
}, {
'name': 'Classic, shot only',
'description': (
'Match SH and any subsequent digits. '
'Example: vfx_SH001 will match 001.'
),
'expression': 'SH{Shot:\d+}'
}, {
'name': 'Full name, shot only',
'description': (
'Match entire clip name. '
'Example: vfx_SH001 will match vfx_SH001.'
),
'expression': '{Shot:.+}'
}, ...]
Each item in the list represents a template and you can either modify one of the existing templates or add a new one.
A template has the structure:
dict(
name='Name of template',
description='Description of template',
expression='The expression used to match the clip name'
)
The name and description are regular strings and will be displayed in the interface and can contain HTML if desired. The expression use a flavor of regular expressions to define the object types to match.
The expression needs to contain a named group matching the name of the object type. Named groups are defined within curly brackets {ObjectTypeName:Expression} starting with the name followed by the expression.
If you for example want to create a template which matches episodes and shots it could look something like this:
dict(
name='Episode and shot',
description='Match `EP` or `SH` and any subsequent numbers',
expression='EP{Episode:\d+}_SH{Shot:\d+}'
)
This template will match clips named EP001_SH001, EP001_SH002 and so on.
To exclude things in the name you need to use our custom exclude group with name _.
As you can see in the Classic, sequence and shot expression it use this group in the middle, {_:.+}. This enables the name to have any characters in between the SQ and SH. The _ group can be used several times in the same expression.
source¶
ftrack_connect_nuke_studio package¶
Subpackages¶
ftrack_connect_nuke_studio.actions package¶
ftrack_connect_nuke_studio.overrides package¶
ftrack_connect_nuke_studio.processors package¶
Submodules¶
ftrack_connect_nuke_studio.base module¶
ftrack_connect_nuke_studio.exception module¶
ftrack_connect_nuke_studio.plugin module¶
ftrack_connect_nuke_studio.template module¶
ftrack_connect_nuke_studio.usage module¶
Module contents¶
Glossary¶
- ftrack server¶
The ftrack instance you are currently connected to. It can either be hosted by ftrack or locally hosted by the client. For an ftrack hosted instance the URL is typically something like https://my-company-name.ftrackapp.com.
- Context template¶
Context templates are used to define the hierarchy in ftrack when exporting.
Release and migration notes¶
Find out information about what has changed between versions and any important migration notes to be aware of when switching to a new version.
Release Notes¶
Upcoming¶
6 October 2022- changed
SetupRemove pyside2 installation’s dependency.
- changed
TaskPluginCopy Exporter does not force 4 digit limits in sequence file names.
2.5.0¶
6 September 2021- change
DiscoveryUpdate hook for application launcher.
- change
DiscoveryLimit discovery to Nuke 13.+.
- change
SetupLimit to python 3+ version.
- change
ApiUpdate to python3 and pyside2.
Warning
From this version the support for ftrack-connect 1.X is dropped, and only ftrack-conenct 2.0 will be supported up to the integration EOL.
2.4.1¶
15 September 2020- add
UiStartup error related to location setup are now visually reported.
- fix
ActionDiscovery does break on non context entities.
2.4.0¶
17 June 2020- fixed
Track buildRebuild track from exported episodes does not work.
- change
ExporterEnsure shot export path is consistent with the location structure generated.
- new
ExporterAdd ‘Ftrack Copy Exporter’ for publish file or sequence to ftrack without transcoding.
- fixed
Template parserTokens are not always parsed correctly.
- change
ExporterEnsure shot output path normalized when replacing shot name.
- change
VersionReplace fixed version with automatic versioning from git repository.
- fix
ExporterReviewable export audio breaks on earlier Nuke Studio versions (version < 12.1).
- fix
ExporterReviewable Task break when including audio.
2.3.0¶
23 April 2020- fix
InternalCustom start frame are not consistently output in frame sequence.
- change
InternalLock OTIO dependency version to last python only.
- fix
InternalSequences rendered with Nuke Studio cannot be imported in nuke.
- fix
InternalImageSequences are rendered as FileComponent.
- fix
InternalThumbnail generation breaks when exporting just nuke scripts.
2.2.5¶
12 March 2020- fix
InternalThumbnail generation breaks when setting custom start frame.
2.2.4¶
21 January 2020- changed
SetupPip compatibility for version 19.3.0 or higher
- Add
InternalMark ftrack.perforce-location as non compatible.
- fixed
InternalReplace pyqt with qt.py
2.2.3¶
21 October 2019- fixed
InternalImprove render task deduplication logic.
- fixed
InternalIntegration fails to start on nuke >= 12.
- fixed
Internal
Thumbnail frame is now generated from the mid frame of the exported clip.
2.2.2¶
10 July 2019- changed
Internal
Replace QtExt module with QtPy.
2.2.1¶
22 May 2019- fixed
Tasks are marked as duplicated if the same clip name is present on multiple tracks.
- fixed
Tasks generate empty unwanted components.
- changed
Replace simple EDL export with OpenTimelineIO edl export.
- new
Thumbnails are published also to parent entity.
2.2.0¶
8 March 2019- new
Extend context template to support episodes.
- changed
Application requires a project to start and project selection from export is now disabled.
2.1.3¶
21 February 2019- fixed
Edl Exporter generates empty components.
- new
Logging
Better error handling to log.
2.1.2¶
17 January 2019- fixed
Due to application api changes, the plugin does not work in Nuke Studio/Hiero versions >= 11.3v1.
2.1.1¶
11 January 2019- fixed
Presets are not properly restored between sessions.
- fixed
Components are not collected under one single asset.
2.1.0¶
17 December 2018- new
Support tokens resolution in component names.
- new
Support multi track export.
- fixed
Hiero under windows does not load templates.
2.0.1¶
12 November 2018- fixed
Error when trying to validate duplicated components.
2.0.0¶
8 October 2018- new
Complete re write of the integration as standalone plugin.
See also
1.1.2¶
27 April 2017- fixed
Crew
Nuke Studio 11.1 crashes with ftrack integration.
1.1.1¶
14 December 2017- new
LoggingImproved feedback gathering.
1.1.0¶
12 September 2017- fixed
Nuke StudioNuke 11 not supported.
1.0.0¶
7 July 2017- fixed
macOSOccasional errors when running processors.
- fixed
Export projectShow an error dialog if the img asset type does not exist in the server.
- new
APIRemove dependencies on the ftrack legacy API where possible
- new
StructureTemplateAdd new event to allow modification of the template output structure.
See also
0.2.7¶
11 January 2017- fixed
Custom attributesCannot set custom attributes when used in combination with new api and ftrack server version.
0.2.6¶
1 December 2016- changed
APISwitched to require ftrack-python-api > 1.0.0.
0.2.5¶
3 August 2016- fixed
ProcessorProcessors fail in NukeStudio 10.0v3 and later for single-file track items.
0.2.4¶
7 June 2016- fixed
UiSchema selection is not in sync with the selected exiting project.
0.2.3¶
2 May 2016- fixed
CompatibilityPlugin doesn’t work with Nuke Studio 10.0v1 beta.
0.2.2¶
4 April 2016- fixed
ProcessorHandles are not treated correctly when publishing through processors.
0.2.1¶
14 March 2016- changed
DevelopmentProcessorTrack item is passed as application_object when discovering processors.
- fixed
Create projectFix issue where a project cannot be created or updated from the Create dialog.
- fixed
Meta data on project is overwritten when an existing project is updated.
0.2.0¶
10 November 2015- new
Context tagContext templateIntroduced Context templates to simplify configuration of project structure on export.
See also
Updated export project tutorial
Note
A ftrack server version of 3.3.4 or higher is required.
0.1.4¶
16 October 2015- changed
Default tag expressions now check for either the previous syntax or as-is naming to support a wider variety of use cases out of the box.
Note
As part of this change the regular expressions must now define a “value” named group in order to work.
See also
developing/customising_tag_expressions
- changed
Improved error messages shown when tag expression does not match.
0.1.3¶
1 October 2015- changed
Propagate thumbnails to tasks on export by default.
See also
Thumbnail processor
- changed
Publish and Proxy processors disabled as default.
- changed
Store reference to outermost ftrack entity in hierarchy when exporting track items.
- fixed
Info panel not updating if track item has effect track.
0.1.2¶
22 September 2015- fixed
Processors not working correct on Windows.
- fixed
Incomplete version number displayed for Nuke Studio application when discovered.
- fixed
Changes to context tags hook not being respected.
- changed
Read default export values for fps and resolution from the project settings.
0.1.1¶
10 September 2015- fixed
Dropping several tags of same type causes export to fail.
- fixed
Segmentation fault when closing down Nuke Studio with plugin loaded.
- changed
Updated default export values for fps, resolution and handles.
- fixed
ProcessorsWeb playable componentIn and out points not calculated correctly when when offset is used on source clip.
0.1.0¶
8 September 2015- new
Initial release of ftrack connect Nuke studio plugin.
Migration notes¶
Moving from 1.X to 2.X¶
This new release is a complete rewrite of the plugin, and introduces different workflow and breaking changes. Is therefore suggested, as minimum, to cleanup the project from any custom ftrack tag, and remove any previously saved task and processor presets users might have been saving. Is prefereable though to create a new project from scratch so no old settings and hidden tags are retained.
Custom Processors¶
With this new integration we have been moving away from separated processors and task logic and we now rely on the natural Nuke Studio / Hiero ones. If you had any custom processor written for the previous version, it is suggested to see at first if the customisation of the settings of the new default ftrack tasks and processors is enough.
Moving to the new API¶
The Connect nuke studio integration has changed to use the ftrack-python-api instead of the legacy api. Since custom locations are not compatible between the different APIs all users running from source with custom locations for the legacy api must either:
Use the Location compatibility layer by putting it’s resource folder on the FTRACK_EVENT_PLUGIN_PATH.
Or, re-write the location using the ftrack-python-api.
for more information about the migration process please look at the main ftrack-connect `Documentation <http://ftrack-connect.rtd.ftrack.com/en/latest/release/migration.html>