Jump to: Board index » General » Fusion

How can I create a varying letters in size effect in davicni

Learn about 3D compositing, animation, broadcast design and VFX workflows.
  • Author
  • Message
Offline

huzama

  • Posts: 1
  • Joined: Mon Feb 12, 2024 10:59 am
  • Real Name: Huzama Khalid

How can I create a varying letters in size effect in davicni

PostMon Feb 12, 2024 11:05 am

I want to create an effect like this in DaVinci
Where the size of the characters slowly falls off
Can Someone help me on how I can create this


Thank you so much in advance
Attachments
spiral text.png
spiral text.png (410.81 KiB) Viewed 300 times
Offline

birdseye

  • Posts: 336
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: How can I create a varying letters in size effect in dav

PostMon Feb 12, 2024 3:15 pm

I don't know about Resolve but in Fusion you should be able to achieve that with a simple expression in the text size control based on, subtracting the frame number (time) multiplied by a suitable constant, from your initial text size. It would also need to be synced to the write on. If I was more familiar with the text node I would post a example but I don't want to give you a bum steer. in a manner of speaking. :D
Offline

Okke Verbart

  • Posts: 289
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: How can I create a varying letters in size effect in dav

PostMon Feb 12, 2024 7:15 pm

OK....so, this may not be the most elegant, nor efficient approach....but.... you could do something like this with a particle system ("no snickering at the back!")

I quickly put something together (just copy and paste it into fusion). In this comp, the effect (at least part of it) is done 1 letter at the time (hence slow, not efficient etc). The advantage is that you can place every particle (letter) exactly where you want it to be (combo of sine, cosine and then an offset in the z-position to give you the spiral).

For performance purposes I gave the particles only a life of 1 frame (reduces calculation) and then used a trails node at the end to "capture" all letters. So, this only works well if you play it from start till the end; you can't play it from somewhere in the middle. If you play with the parameters of the pCustom, make sure to restart the trails node.

Hopefully someone will come up with a (much!) better approach, but if not, maybe something like this can be of use to you.

Code: Select all
{
   Tools = ordered() {
      Text1 = TextPlus {
         Inputs = {
            Width = Input { Value = 25, },
            Height = Input { Value = 25, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            LayoutRotation = Input { Value = 1, },
            TransformRotation = Input { Value = 1, },
            Red1 = Input { Value = 0, },
            Green1 = Input { Value = 0, },
            Blue1 = Input { Value = 0, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Expression = "string.sub(Source_Text.Value,time,time)", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input { Value = 1.5, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            Source_Text = Input { Value = "Lorem ipsum dolor sit amet. Est internos earum aut laborum voluptatibus ab nulla consequatur ad quod odio aut facere mollitia. Eos natus omnis eos atque sequi vel error voluptates aut doloremque harum ut enim dignissimos ut reiciendis temporibus. Ut quasi reiciendis est ipsum officiis non voluptatibus Quis qui ducimus placeat aut libero perferendis. Non sapiente illo in alias laudantium et voluptatibus fugiat est quas omnis ex magnam galisum.\nUt possimus minus vel provident doloribus et autem blanditiis est sunt officia qui explicabo voluptas et fugit blanditiis est eveniet voluptates. Sed fugiat quod vel eligendi obcaecati vel omnis quibusdam et consequatur neque ut dolor nesciunt quo officia culpa. Aut error dolores et officiis reprehenderit qui nihil similique ab molestias cupiditate cum commodi galisum.\nSed odit animi sed nisi sapiente et nulla aperiam ut consectetur omnis. 33 unde recusandae est aspernatur consequatur qui cupiditate voluptatem. Et repudiandae illum aut dolor dolore est vero error. Qui ullam dolorum sed corporis asperiores sit pariatur numquam sit perferendis debitis ut veniam deserunt. Lorem ipsum dolor sit amet. Est internos earum aut laborum voluptatibus ab nulla consequatur ad quod odio aut facere mollitia. Eos natus omnis eos atque sequi vel error voluptates aut doloremque harum ut enim dignissimos ut reiciendis temporibus. Ut quasi reiciendis est ipsum officiis non voluptatibus Quis qui ducimus placeat aut libero perferendis. Non sapiente illo in alias laudantium et voluptatibus fugiat est quas omnis ex magnam galisum.\nUt possimus minus vel provident doloribus et autem blanditiis est sunt officia qui explicabo voluptas et fugit blanditiis est eveniet voluptates. Sed fugiat quod vel eligendi obcaecati vel omnis quibusdam et consequatur neque ut dolor nesciunt quo officia culpa. Aut error dolores et officiis reprehenderit qui nihil similique ab molestias cupiditate cum commodi galisum.\nSed odit animi sed nisi sapiente et nulla aperiam ut consectetur omnis. 33 unde recusandae est aspernatur consequatur qui cupiditate voluptatem. Et repudiandae illum aut dolor dolore est vero error. Qui ullam dolorum sed corporis asperiores sit pariatur numquam sit perferendis debitis ut veniam deserunt.", },
         },
         ViewInfo = OperatorInfo { Pos = { 268, 49.1818 } },
         UserControls = ordered() {
            Source_Text = {
               TEC_ReadOnly = false,
               LINKID_DataType = "Text",
               ICS_ControlPage = "Text",
               TEC_Wrap = false,
               INPID_InputControl = "TextEditControl",
               LINKS_Name = "Source_Text",
            }
         }
      },
      pEmitter1 = pEmitter {
         ID = 15,
         Inputs = {
            Number = Input { Value = 1, },
            Lifespan = Input { Value = 1, },
            RotationControls = Input { Value = 1, },
            AlwaysFaceCamera = Input { Value = 0, },
            Style = Input { Value = FuID { "ParticleStyleBitmap" }, },
            ["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
            ["ParticleStyleBitmap.DropToolsHere"] = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeOverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BlurOverLife2D",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 266, 137.061 } },
      },
      pEmitter1SizeOverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         CtrlWZoom = false,
      },
      pEmitter1BlurOverLife2D = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.666666666666667, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         CtrlWZoom = false,
      },
      pCustom1 = pCustom {
         ID = 18,
         Inputs = {
            NumberIn1 = Input { Value = 2, },
            PositionXExpression = Input { Value = "sin(id*n1)", },
            PositionYExpression = Input { Value = "cos(id*n1)", },
            PositionZExpression = Input { Value = "-id/120", },
            RotationZExpression = Input { Value = "-(id%180)*2", },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
            EndAge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 456, 137.061 } },
      },
      pRender1 = pRender {
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            Width = Input { Value = 2560, },
            Height = Input { Value = 1440, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            OutputMode = Input { Disabled = true, },
            ["MaterialID.MaterialID"] = Input { Value = 1, },
            ["ObjectID.ObjectID"] = Input { Value = 1, },
            Input = Input {
               SourceOp = "pCustom1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 624, 136.455 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 748.667, 137.061 } },
      },
      Renderer3D1 = Renderer3D {
         CtrlWZoom = false,
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.Rate"] = Input { Value = 3, },
            ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
            ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.Rate"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            Width = Input { Value = 1500, },
            Height = Input { Value = 1500, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 860, 135.242 } },
      },
      Trails1 = Trails {
         Inputs = {
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 968.667, 135.242 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input { Value = 5, },
            AoV = Input { Value = 19.2642683071402, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ApertureW = Input { Value = 0.831496062992126, },
            ApertureH = Input { Value = 0.467716535433071, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
         },
         ViewInfo = OperatorInfo { Pos = { 741.333, 245.545 } },
      },
      Background1 = Background {
         Inputs = {
            Width = Input { Value = 1500, },
            Height = Input { Value = 1500, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 1, },
            TopLeftBlue = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 1092, 176.455 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Trails1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1092.67, 135.242 } },
      }
   },
   ActiveTool = "Renderer3D1"
}
www.ablackbirdcalledsue.com
Offline

Sander de Regt

  • Posts: 3447
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: How can I create a varying letters in size effect in dav

PostMon Feb 12, 2024 8:36 pm

I wasn't snickering, but if I turned reading your replies into a drinking game where 'particle systems' was the word to watch, I'd be drunk a lot.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Okke Verbart

  • Posts: 289
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: How can I create a varying letters in size effect in dav

PostMon Feb 12, 2024 8:40 pm

Sander de Regt wrote:I wasn't snickering, but if I turned reading your replies into a drinking game where 'particle systems' was the word to watch, I'd be drunk a lot.


lol! Yes, and throw pCustom into the mix, and you'll be legless!
www.ablackbirdcalledsue.com

Return to Fusion

Who is online

Users browsing this forum: Steve Roberts and 7 guests