Skip to content

Instantly share code, notes, and snippets.

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

Fonctionnement

Une expression est évaluée comme s'il y avait un = au début

result = expression

les conditions :

result = iif(condition, expression1, expression2)

ne fonctionne pas de cette maniere :

result = if condition then expression1 else expression2 end

Car avec la fonction iif () (ou toute autre fonction), chaque argument est évalué et les résultats obtenus sont passés à la fonction. Dans la fonction iif (), il ne voit pas les expressions originales. Il ne voit que la valeur que chacun a produite. Puis iif () retourne celui qui convient en fonction de la valeur qui lui a été donnée pour l'expression de condition déjà évaluée.

Une méthode courante dans Lua :

(condition) and (expression1) or (expression2)

Il a l'avantage que si condition est fausse, expression1 n'est pasvévalué. Mais expression2 sera toujours évaluée.

Il est également possible de préfixer une expression avec un : pour empêcher la loopback, alors vous pouvez faire plein d'instructions de script (plutôt qu'une simple expression):

:if  == 2 then return 3; else return 4; end
x = <condition> and (print(“first”) or true) or (print(“second”) or true)

Examples

connection avec le node "Text" - afficher le time range

Text("Frame: " .. time .. " of " .. ((comp.RenderEnd-comp.RenderStart)) )

Resultat :

Frame : 0 of 1000

afficher un pourcentage de la timeline

Text("Progress: " .. math.ceil(((time)/comp.RenderEnd)*100) .. "%")

Resultat :

Progress: 100%

afficher les metadata de la source

Text(self:GetSourceTool("MetadataSource").Output.Metadata.Filename)
Text(self:GetSourceTool("MetadataSource").Name)

afficher les metadata (avec tag specific)

Text("[Camera] " .. self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Make ..  " " .. self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Model .. "\n" ..
"[ISO] " .. self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Exif.PhotographicSensitivity .. "\n" ..
"[Focal Length] " .. self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Exif.FocalLength .. " mm\n" ..
"[Shutter Speed] 1/" .. 1/self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Exif.ExposureTime .. " th of a second\n" ..
"[F-Stop] " .. self:GetSourceTool("MetadataSource").Output.Metadata.Camera.Exif.FNumber .. "\n" )

recupérer le width & height de la source

self:GetSourceTool("MetadataSource").Output.OriginalWidth
self:GetSourceTool("MetadataSource").Output.OriginalHeight

lire un fichier texte à travers le node Text+ (sous-titre)

Text(assert(io.open(comp:MapPath("comp:/body.txt"), "r")):read("*all"))

Plus d'information

Quelques exemples

Description plus détailée

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