Je vais essayer de synthétiser ici tous les éléments techniques au sujet de Fusion & Resolve. Car malgré tout, seul l'API de Resolve est plutôt récente et tiens dans un fichier .txt :)
Pour Fusion, le core API n'a pas beaucoup évolué et la plupart des snippets code que vous trouverez dans ce chapitre : Fusion studio - snippets n'ont pas changé et mon dernier update date de 2016...
Dans ce dossier vous pouvez récupérer des infos compartimentées par librairies (scripting, fuses, plugin...)
Win : C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer
Darwin : /Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer
Linux : /opt/resolve/Developer
Python Script Snippets for Fusion TDs - Steakunderwater
Resolve Fusion - Scripting in Lua and Python.pdf - Andrew Hazelden
Reactor - Gestionnaire de paquets,
Afin d'explorer l'API non documentée... je vous recommande d'installer ces Trois packages : "Resolve essential", "Fusion Class Browser" et "UI Manager Lua & Python Examples"
Resolve Studio/Fusion Studio permet d'exécuter des scripts utilisant Python 2.7 & 3.6-3.10+, ainsi que des scripts Lua.
A défaut de Lua, python n'est pas installé. Il faut passer par une installation officiel et non par des package manager (conda, Homebrew, ect..) car elle ne sera pas détectée automatiquement par Resolve et vous causera des maux de tête ;)
Attention tout de même pour l'utilisation de python sous macOS. Il faut passer par un Launch Agent afin de pouvoir bénéficier d'environnement custom et/ou utiliser resolve en mode terminal.
Si vous rencontrez des problèmes d'import :
ModuleNotFoundError: No module named "DaVinciResolveScript"
Sachez que le module DaVinciResolveScript
importe fusionscript
via imp donc vous pouvez tout aussi bien by-pass et importer directement fusionscript
Nativement les scripts sont écrit en Lua mais vous pouvez aussi utiliser Python. Cela permet d'automatiser des taches, modifier les paramètres de votre comp, ou une partie de votre flux de production dans Fusion. Vous pouvez les ranger dans les dossiers correspondant sous :
Win : %PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Fusion\Scripts
Darwin : /Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts
Linux : /opt/resolve/Fusion/Scripts ou /home/resolve/Fusion/Scripts/
Il est également possible de configurer un chemin relatif appelé "PathMap". Cela vous permet d'avoir un repertoire personnalisé pour stocker des scripts, des macros et d'autres ressources. Ce système est modifiable dans le menu "Fusion Settings > Fusion > Path Map..".
Une macro est essentiellement une collection de nodes standards de fusion qui sont exportés à partir d'un composite et transformés en un seul objet avec l'extension de fichier .setting qui peut être facilement réutilisé dans l'avenir.
L'éditeur Macro vous permet de choisir quels éléments (GUI) des nodes standard afficher, mais aussi définir la valeur par défaut min/max pour chaque contrôle.
L'éditeur Macro vous permet également de choisir les in/out que vous souhaitez exposer à l'utilisateur final. Vous pouvez avoir plusieurs entrées et sorties dans une macro.
Pour les utilisateurs de nuke, c'est équivalent à un gizmo.
Un Fuse permet d'effectuer des opérations graphiques accélérées par le matériel basées sur le DCTL (DaVinci Color Transform Language) à l'intérieur d'un nœud scripté en Lua qui fonctionne de manière transparente et multiplateforme sur les GPU Metal, OpenCL et CUDA
Il prend également en charge le code LuaJIT à utiliser pour effectuer des opérations telles que le rendu de formes vectorielles, le traitement des métadonnées d'image, l'ajout d'un support d'importation/exportation d'images personnalisées ou l'application d'effets.
Pour les utilisateurs de nuke, c'est équivalent au blinkscript .
Créé par la communauté We Suck Less Fusion, Reactor est un gestionnaire de paquets libre et gratuit pour Fusion (Free), Fusion Studio et Resolve. Reactor rationalise l'installation, la distribution et la gestion de contenu tiers pour Fusion grâce à l'utilisation de paquets "Atom" qui sont synchronisés avec un dépôt Git en ligne. https://www.steakunderwater.com/wesuckless/viewtopic.php?f=32&t=1814
Resolve Studio/Fusion Studio propose également un SDK qui est une API C++. Ce kit de développement permet la création d'effets 2D, de contenus basés sur l'espace de travail 3D, de moteurs de rendu de plugins basés sur les nœuds Renderer3D, l'ajout de nouveaux formats de fichiers de nœuds Loader/Saver...
Les fichiers C++ du FusionSDK sont mis à la disposition des développeurs sur demande et sans frais, mais nécessitent la signature d'un accord de non-divulgation (NDA) avec le programme BMD Developer. Je vous suggère de contacter l'équipe de support de BMD à ce sujet.