Skip to content

Instantly share code, notes, and snippets.

@jeremybep
Last active March 9, 2023 20:42
Show Gist options
  • Save jeremybep/d5695f2ac1bc3850792d60c739dd1d73 to your computer and use it in GitHub Desktop.
Save jeremybep/d5695f2ac1bc3850792d60c739dd1d73 to your computer and use it in GitHub Desktop.
Fusion studio - Scripting Options

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...

Documentation

Ressources local

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

Ressource web

Fusion 8 scripting Guide.pdf

VFXPEDIA - Eyeon software

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"

Developpement

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

Scripts :

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..".

Macros :

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.

Fuses :

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 .

Fusion_Fuse_SDK.pdf

Reactor :

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

SDK :

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.

support

https://www.steakunderwater.com/wesuckless/donate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment