Une fois de plus on va exploiter une nouveauté de Resolve 21 pour simplifier ce processus. Il n’en reste pas moins complexe car il utilise une expression incluse dans un node de Fusion.
Regardons les problèmes à résoudre :
Mise en forme du texte
Afin de maitriser la mise en forme et de ne pas refaire la mise en forme du texte 2 fois, on n’utilisera pas les nodes de textes de Fusion/Resolve :
- Avoir une Mise en forme hétérogène n’est pas simple
- Une gouttière n’est pas simple
Application de mise en forme
Comme la nuit des temps on utilise un logiciel plus souple et simple à utiliser dans un grand document avec l’intégralité du générique déplié/déroulé. Jusqu’à présent Photoshop a été utilisé.
Le soucis est le poids de fichier. <c’est là que Affinty entre en jeu :

Affinity a tous les outils de mise ne forme et garde le texte sous forme Vectorielle: c’est très propre et ca ne pèse rien!


Comme les fichiers .af d’Affinity sont reconnus dans resolve 21 …. utilisons-les!
Effet de pompage
C’est le plus gros soucis qui vient du rendu des lettres:
- qui ont une taille impaire : 17px, 25px, 33px
- une vitesse (lignes par image) avec des décimale
Exemple :
un texte de 17px avec une vitesse de 3,5 lignes/image
- a bien une hauteur de 17px à l’image N
- aura une hauteur de 18px à l’image N+1
- aura une hauteur de 17px à l’image N+2
- aura une hauteur de 18px à l’image N+3
- aura une hauteur de 17px à l’image N+4
La solution est donc d’avoir une vitesse de défilement qui soit un multiple entier d’une ligne par image (en pratique : 1 à 6 lignes/image).
Ce la implique que vous ne pouvez pas avoir n’importe quelle durée pour votre générique.
Mise en œuvre


la Macro permet de :
- commencer et finir hors champ
- d’avoir une vitesse qui soit nombre entier de ligne/image …. en fonction de la durée de la composition
Utilisation et Réglages
Dans la page EDIT, ajuster la durée, la vitesse est indiquée en bas à gauche


Dans Fusion

- masquer la vitesse (Ne pas oublier!!)
- Changer la résolution (Si vous utilisez un OutputBlanking)
Macro

Copier le code ci dessous et coller dans le node graph
{
Tools = ordered() {
generiK = GroupOperator {
CtrlWZoom = false,
CustomData = { SxSFilename = "/Users/olivier/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Macros/generiK.setting", Path = { Map = { ["Setting:"] = "Macros:/" } }, },
Inputs = ordered() {
MainInput1 = InstanceInput {
SourceOp = "SetDomain",
Source = "Input",
},
Merge_BlendClone = InstanceInput {
SourceOp = "Merge",
Source = "BlendClone",
Page = "Controls",
Default = 1,
},
Separator1 = Input {
Type = "Separator",
Page = "Controls",
},
Vitesse_UseFrameFormatSettings = InstanceInput {
SourceOp = "Vitesse",
Source = "UseFrameFormatSettings",
Default = 1,
},
Vitesse_Width = InstanceInput {
SourceOp = "Vitesse",
Source = "Width",
Default = 2048,
},
Vitesse_Height = InstanceInput {
SourceOp = "Vitesse",
Source = "Height",
Default = 858,
}
},
Outputs = {
MainOutput1 = InstanceOutput {
SourceOp = "Merge",
Source = "Output",
}
},
ViewInfo = GroupInfo {
Pos = { 295.45, 258.49 },
Flags = {
AllowPan = false,
ConnectedSnap = true,
AutoSnap = true,
RemoveRouters = true
},
Size = { 368.014, 104.235, 131.256, 24.2424 },
Direction = "Horizontal",
PipeStyle = "Direct",
Scale = 1,
Offset = { 0, 0 }
},
Tools = ordered() {
Crop = Crop {
CtrlWShown = false,
NameSet = true,
Inputs = {
XOffset = Input {
Value = -253,
Expression = "(Crop.Input.OriginalWidth - Crop.XSize) / 2",
},
YOffset = Input {
Value = 8060,
Expression = "Crop.Input.OriginalHeight - ((time - comp.GlobalStart) * math.ceil((Crop.YSize + Crop.Input.OriginalHeight) / (comp.GlobalEnd - comp.GlobalStart + 1)))",
},
XSize = Input {
Value = 1920,
Expression = "Vitesse.Width",
},
YSize = Input {
Value = 1080,
Expression = "Vitesse.Height",
},
Input = Input {
SourceOp = "SetDomain",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { -67.1418, 46.6932 } },
},
Vitesse = TextPlus {
CtrlWShown = false,
NameSet = true,
Inputs = {
GlobalOut = Input { Value = 1302, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
UseFrameFormatSettings = Input { Value = 1, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Wrap = Input { Value = 1, },
Center = Input { Value = { 0, 0 }, },
LayoutRotation = Input { Value = 1, },
TransformRotation = Input { Value = 1, },
Softness1 = Input { Value = 1, },
StyledText = Input { Expression = "Text(math.ceil((Crop.YSize + Crop.Input.OriginalHeight) / (comp.GlobalEnd - comp.GlobalStart + 1)) .. \" lignes/image\")", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.0669, },
VerticalTopCenterBottom = Input { Value = 1.8, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalLeftCenterRight = Input { Value = -1, },
HorizontalJustificationNew = Input { Value = 3, }
},
ViewInfo = OperatorInfo { Pos = { 152.95, 8.82198 } },
Version = 1
},
Merge = Merge {
CtrlWShown = false,
NameSet = true,
CustomData = { Settings = { [2] = { Tools = ordered() { Merge1 = Merge { Inputs = { PerformDepthMerge = Input { Value = 0 }, Operator = Input { Value = FuID { "Mask" } } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 330, 148.5 } }, CustomData = {
} } } }, [3] = { Tools = ordered() { Merge1 = Merge { Inputs = { PerformDepthMerge = Input { Value = 0 }, Operator = Input { Value = FuID { "Stencil" } } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 330, 148.5 } }, CustomData = {
} } } }, [4] = { Tools = ordered() { Merge1_1 = Merge { Inputs = { PerformDepthMerge = Input { Value = 0 }, Operator = Input { Value = FuID { "Under" } } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 550, 16.5 } }, CustomData = {
} } } } }, },
Inputs = {
Background = Input {
SourceOp = "DirectionalBlur",
Source = "Output",
},
Foreground = Input {
SourceOp = "Vitesse",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, }
},
ViewInfo = OperatorInfo { Pos = { 167.632, 46.6932 } },
UserControls = ordered() { BlendClone = { INP_MaxAllowed = 1000000, INP_Integer = false, INPID_InputControl = "CheckboxControl", INP_MaxScale = 1, INP_Default = 1, INP_MinScale = 0, INP_MinAllowed = -1000000, LINKID_DataType = "Number", ICS_ControlPage = "Controls", CBC_TriState = false, INP_SplineType = "Default", LINKS_Name = "Vitesse" } }
},
SetDomain = SetDomain {
NameSet = true,
Inputs = {
Mode = Input { Value = FuID { "Set" }, }
},
ViewInfo = OperatorInfo { Pos = { -67.1418, 13.1635 } },
},
DirectionalBlur = DirectionalBlur {
NameSet = true,
Inputs = {
Length = Input {
Value = 0.00208333333333333,
Expression = "math.ceil((Crop.YSize + Crop.Input.OriginalHeight) / (comp.GlobalEnd - comp.GlobalStart + 1)) / 2 / Crop.XSize",
},
Angle = Input { Value = 90, },
ClippingMode = Input { Value = FuID { "Domain" }, },
Input = Input {
SourceOp = "Crop",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 60.3726, 46.6932 } },
}
},
}
},
ActiveTool = "generiK"
}

Laisser un commentaire