Faire un générique – Resolve 21

3–5 minutes
780 mots

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 cela

Regardons les 2 problèmes à résoudre :

Texte mise en forme

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

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

Exemple d’une mauvaise vitesse de générique

C’est le plus gros soucis qui vient du rendu des lettres:

  1. qui ont une taille impaire : 17px, 25px, 33px
  2. une vitesse (lignes par image) avec des décimale

Exemple :
un texte de 17px avec une vitesse de 3,5 lignes/image

  1. a bien une hauteur de 17px à l’image N
  2. aura une hauteur de 18px à l’image N+1
  3. aura une hauteur de 17px à l’image N+2
  4. aura une hauteur de 18px à l’image N+3
  5. 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

Dans un composition Fusion, Mergez le générique sur un background transparent.

  • Le node Background assure la bonne Résolution
  • Le merge va faire défiler le générique

On va coller cette expression dans le centre du merge :

Point(0.5,((time-comp.GlobalStart)*math.ceil((Merge1.Background.OriginalHeight+Merge1.Foreground.OriginalHeight)/(comp.GlobalEnd-comp.GlobalStart+1)) - Merge1.Foreground.OriginalHeight/2) / Merge1.Background.OriginalHeight)

elle 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

Amélioration

J’ai ajouté un autre merge qui indique la vitesse. A désactiver quand c’est ajusté.

La structure nodale

Copier le code ci dessous et coller dans le node graph

{
	Tools = ordered() {
		Merge1 = Merge {
			NameSet = true,
			Inputs = {
				Background = Input {
					SourceOp = "Transparent",
					Source = "Output",
				},
				Center = Input {
					Value = { 0.5, 1.86527777777778 },
					Expression = "Point(0.5,((time-comp.GlobalStart)*math.ceil((Merge1.Background.OriginalHeight+Merge1.Foreground.OriginalHeight)/(comp.GlobalEnd-comp.GlobalStart+1)) - Merge1.Foreground.OriginalHeight/2) / Merge1.Background.OriginalHeight)",
				},
				PerformDepthMerge = Input { Value = 0, },
				ForegroundZOffset = Input { Value = 9, }
			},
			ViewInfo = OperatorInfo { Pos = { 858.276, 216.318 } },
		},
		Transparent = Background {
			NameSet = true,
			CurrentSettings = 5,
			CustomData = { Settings = { [1] = { Tools = ordered() { ["Arrièreplan1"] = Background { Inputs = { ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } }, GlobalOut = Input { Value = 124 }, Height = Input { Value = 1080 }, UseFrameFormatSettings = Input { Value = 1 }, Width = Input { Value = 1920 } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, 82.5 } }, CustomData = {
								} } } }, [2] = { Tools = ordered() { ["Arrièreplan1"] = Background { Inputs = { GlobalOut = Input { Value = 124 }, ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } }, TopLeftRed = Input { Value = 1 }, TopLeftBlue = Input { Value = 1 }, Height = Input { Value = 1080 }, TopLeftGreen = Input { Value = 1 }, UseFrameFormatSettings = Input { Value = 1 }, Width = Input { Value = 1920 } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, 82.5 } }, CustomData = {
								} } } }, [3] = { Tools = ordered() { ["Arrièreplan1"] = Background { Inputs = { ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } }, TopLeftRed = Input { Value = 1 }, GlobalOut = Input { Value = 124 }, Height = Input { Value = 1080 }, UseFrameFormatSettings = Input { Value = 1 }, Width = Input { Value = 1920 } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, 82.5 } }, CustomData = {
								} } } }, [4] = { Tools = ordered() { ["Arrièreplan1"] = Background { Inputs = { ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } }, GlobalOut = Input { Value = 124 }, Height = Input { Value = 1080 }, TopLeftGreen = Input { Value = 1 }, UseFrameFormatSettings = Input { Value = 1 }, Width = Input { Value = 1920 } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, 82.5 } }, CustomData = {
								} } } }, [6] = { Tools = ordered() { ["Arrièreplan1"] = Background { Inputs = { ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } }, TopLeftAlpha = Input { Value = 0 }, GlobalOut = Input { Value = 124 }, Height = Input { Value = 1080 }, UseFrameFormatSettings = Input { Value = 1 }, Width = Input { Value = 1920 } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, 82.5 } }, CustomData = {
								} } } } }, },
			Inputs = {
				GlobalOut = Input { Value = 1275, },
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				UseFrameFormatSettings = Input { Value = 1, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftAlpha = Input { Value = 0, }
			},
			ViewInfo = OperatorInfo { Pos = { 733.578, 216.318 } },
		},
		Merge2 = Merge {
			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 = "Merge1",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Vitesse",
					Source = "Output",
				},
				PerformDepthMerge = Input { Value = 0, }
			},
			ViewInfo = OperatorInfo { Pos = { 982.438, 216.318 } },
		},
		Vitesse = TextPlus {
			NameSet = true,
			Inputs = {
				GlobalOut = Input { Value = 1275, },
				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(ceil((Merge1.Background.OriginalHeight+Merge1.Foreground.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 = { 982.438, 137.753 } },
		}
	}
}

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.