Aperçu
Les Fuses sont des fichiers .fuse(en Lua) qui définissent un node Fusion : inputs, outputs, paramètres, et la logique de traitement par pixel. Une fois installés, ils apparaissent dans l'Effects Library comme n'importe quel autre node, sans distinction visuelle.
Avantages vs Macros : Fuses peuvent implémenter des algorithmes custom impossibles avec les nodes existants. Avantages vs développement plugin C++ : Lua est interprété, pas besoin de compilation, modifiable à la volée.
Fuse vs Macro vs Custom Tool
- Custom Tool
- Formule par-pixel directement dans Fusion. Limité aux opérations maths natives. Pas réutilisable proprement.
- Macro
- Encapsulation de plusieurs nodes natifs en un seul. Pas de logique custom, juste regroupement. Réutilisable.
- Fuse (Lua)
- Code Lua arbitraire avec accès au framework Fusion. Algorithmes custom sophistiqués, intégrations externes, optimisations.
- Fuse OpenCL / CUDA
- Fuse Lua + kernel GPU. Performance similaire aux nodes natifs Fusion. Pour traitements lourds par-pixel.
Règle de progression : commencer par Custom Tool → si réutilisation, passer à Macro → si logique complexe, créer un Fuse → si performance critique, Fuse GPU.
Structure d'un Fuse
-- MyCustomFuse.fuse (exemple minimaliste)
FuRegisterClass("MyCustomFuse", CT_Tool, {
REGS_Name = "My Custom Fuse",
REGS_Category = "Fuses",
REGS_OpDescription = "Custom effect node",
REGS_OpIconString = "MCF",
})
function Create()
-- Définir inputs / outputs / paramètres
InImage = self:AddInput("Image", "Image", { LINKID_DataType = "Image" })
OutImage = self:AddOutput("Output", "Output", { LINKID_DataType = "Image" })
InStrength = self:AddInput("Strength", "Strength", {
LINKID_DataType = "Number",
INPID_InputControl = "SliderControl",
INP_MinScale = 0,
INP_MaxScale = 10,
INP_Default = 1,
})
end
function Process(req)
-- Logique de traitement par pixel
local img = InImage:GetValue(req)
local out = Image({ IMG_Like = img })
local strength = InStrength:GetValue(req).Value
-- Modifier les pixels...
OutImage:Set(req, out)
endStructure de base : FuRegisterClass pour métadonnées, Create() pour inputs / outputs, Process() pour le traitement par frame.
Installation
- Manuel
- Copier le fichier
.fusedans le dossier Fuses de Fusion :~/.fusion/Fuses/(Linux/ Mac) ou%APPDATA%/Blackmagic Design/Fusion/Fuses/(Windows). - Via Reactor
- Reactor est le package manager Fuse officieux. Installation en un clic depuis une UI, gestion des updates, centaines de Fuses disponibles.
- Refresh
- Après installation, redémarrer Fusion (ou Resolve) pour qu'il charge les nouveaux Fuses.
Écosystème
- Reactor
- Package manager officieux. Centaines de Fuses gratuits packagés. Hub central de la communauté.
- WSL (We Suck Less)
- Forum communautaire historique. Discussions techniques, partage de Fuses, support entre artistes.
- GitHub repositories
- Beaucoup de Fuses sur GitHub (Krokodove, KartaVR, etc.). Cloner pour avoir le code + Fuse.
- Documentation officielle
- Manuel Fusion documente l'API Lua. Référence pour développer ses propres Fuses.
Cas d'usage
- Effets custom non couverts par les nodes natifs - filtres avancés, algorithmes spécifiques, intégrations data externes.
- Optimisation performance via GPU - Fuse OpenCL / CUDA pour traitements lourds parallélisables.
- Intégration de bibliothèques externes - accès à OpenCV, NumPy (via Lua), modèles AI inférence locale.
- Standardisation pipeline équipe - Fuse partagé garantit même comportement sur toutes les workstations.
- Look development custom - créer un look signature unique réutilisable en 1 clic via Fuse personnalisé.
- Ports de plugins Nuke / AfterEffects- certains Fuses portent des effets populaires d'autres softs (avec adaptation).
Astuces
- Commencer par Reactor - installer Reactor avant tout, donne accès immédiat à des centaines de Fuses sans coder.
- Lire des Fuses existants- les Fuses étant en clair (Lua), on peut les ouvrir et apprendre par l'exemple.
- Performance Lua limitée - pour traitements vraiment lourds, utiliser kernel OpenCL / CUDA. Lua pur est trop lent par-pixel.
- Tester sur une copie de comp - Fuse mal codé peut crasher Fusion. Toujours travailler sur une copie de comp, jamais le fichier original.
- Versioning et partage - stocker ses Fuses sur Git pour versioning et partage équipe.
- Compatibilité versions Fusion - les Fuses peuvent casser entre versions Fusion. Tester après upgrade.
- Documentation interne - commenter ses Fuses pour les autres (ou soi-même dans 6 mois).
- Pour des productions studios, considérer aussi des plugins natifs C++ (plus performants mais plus complexes à maintenir).
