Text+ and Text 3D questions

Get answers to your questions about color grading, editing and finishing with DaVinci Resolve.
  • Author
  • Message
Offline

Videoneth

  • Posts: 1618
  • Joined: Fri Nov 13, 2020 11:03 pm
  • Warnings: 1
  • Real Name: Maxwell Allington

Text+ and Text 3D questions

PostTue Sep 07, 2021 4:27 pm

I'm curious, how people are working with 3D text when Resolve/Fusion puts random space between letters

The letter spacing with some fonts is horrible :/ - Is it a problem for the font itself?

With Text+, the "character level styling" can help to change the position of each letter, but with Text3D, adding this modifier does nothing. The Inspector is empty when I select the 3D letters

Is it possible to adjust each letter (without having a 3dText for each one and placing them manually?)

EDIT :
By removing the character styling of a Text+ (after having modified the spacing for example), the change stays, until you write something else in the text box.
Attachments
empty.jpg
empty.jpg (13.98 KiB) Viewed 1314 times
font.jpg
font.jpg (50.33 KiB) Viewed 1314 times
Windows 10
18.6.6
nVidia 3090 - 537.42
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: [BUG?] Text+ and Text 3D questions

PostTue Sep 07, 2021 4:46 pm

Yeah kerning has effectively never been fully supported on Text3D. Specifically, kerning does work, just there's no UI for it on Text3D.

So firstly: you don't need Character Level Styling. Kerning information is available and changeable on both Text+ and Text3D.
Image

You can do manual kerning on a Text+ as follows:
  1. Bring the Text+ into a viewer
  2. Make sure the Allow Manual Kerning button is selected in the top left of the viewer
    Image
  3. Select a character by dragging around it to highlight it in green:
    Image
  4. Use arrow keys to move it left or right. Shift+left/right moves it 10 steps; Control/Cmd+left/right moves 0.1 steps (probably what you want for kerning)
But this doesn't work for a Text3D because there's no manual kerning support in the 3D viewer!

There's a workaround, with two variant methods.

Text3D Kerning workaround method 1:
  1. Add a Text+ and set the text and font you want.
  2. Add a Text3D with the same text and same font.
  3. Do the manual kerning in the Text+.
  4. In the Text+, expand Advanced Controls, and set a keyframe on Manual Font Kerning.
  5. In the Text3D, expand Advanced Controls, right-click on Manual Font Kerning -> Connect To -> Text1 -> Manual Font Kerning
The kerning should now be the same on both. It may look slightly different in the Text3D, possibly because the default sizes are different, so you might need to tweak it further in the Text+. Keep that Text+ around as the "kerning holder" for the Text3D, but it doesn't need to be connected to anything.

Text3D Kerning workaround method 2:
  1. Follow steps 1 - 3 as per method 1.
  2. Select the Text+ node and copy it.
  3. In the Text3D node, expand Advanced Controls, right-click on Manual Font Kerning and Paste Settings.
The second method will achieve the same result, but without the permanent link. This has the advantage that you can now delete the surrogate Text+, but the disadvantage that if you need to tweak the kerning you'd need to re-copy and re-Paste Settings.
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor
Offline

Videoneth

  • Posts: 1618
  • Joined: Fri Nov 13, 2020 11:03 pm
  • Warnings: 1
  • Real Name: Maxwell Allington

Re: [BUG?] Text+ and Text 3D questions

PostTue Sep 07, 2021 5:04 pm

TheBloke wrote:Yeah kerning has effectively never been fully supported on Text3D. Specifically, kerning does work, just there's no UI for it on Text3D.

So firstly: you don't need Character Level Styling. Kerning information is available and changeable on both Text+ and Text3D.
Image

You can do manual kerning on a Text+ as follows:
  1. Bring the Text+ into a viewer
  2. Make sure the Allow Manual Kerning button is selected in the top left of the viewer
    Image
  3. Select a character by dragging around it to highlight it in green:
    Image
  4. Use arrow keys to move it left or right. Shift+left/right moves it 10 steps; Control/Cmd+left/right moves 0.1 steps (probably what you want for kerning)
But this doesn't work for a Text3D because there's no manual kerning support in the 3D viewer!

There's a workaround, with two variant methods.

Text3D Kerning workaround method 1:
  1. Add a Text+ and set the text and font you want.
  2. Add a Text3D with the same text and same font.
  3. Do the manual kerning in the Text+.
  4. In the Text+, expand Advanced Controls, and set a keyframe on Manual Font Kerning.
  5. In the Text3D, expand Advanced Controls, right-click on Manual Font Kerning -> Connect To -> Text1 -> Manual Font Kerning
The kerning should now be the same on both. It may look slightly different in the Text3D, possibly because the default sizes are different, so you might need to tweak it further in the Text+. Keep that Text+ around as the "kerning holder" for the Text3D, but it doesn't need to be connected to anything.

Text3D Kerning workaround method 2:
  1. Follow steps 1 - 3 as per method 1.
  2. Select the Text+ node and copy it.
  3. In the Text3D node, expand Advanced Controls, right-click on Manual Font Kerning and Paste Settings.
The second method will achieve the same result, but without the permanent link. This has the advantage that you can now delete the surrogate Text+, but the disadvantage that if you need to tweak the kerning you'd need to re-copy and re-Paste Settings.

You keep saving my ass with these tips!!!!!!! lol
I can't thank you enough. Look at my screenshot :D - At least it worked! It's just more difficult now to select the characters ahah.

God I wish it wasn't that broken.

I never used the "connect to" this way. I only used it to connect position to a tracker.

I used your second method! Excellent. I was just ready to make something not in 3D, so thank you, again.
Attachments
lol.jpg
lol.jpg (207.37 KiB) Viewed 1053 times
Windows 10
18.6.6
nVidia 3090 - 537.42
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: Text+ and Text 3D questions

PostTue Sep 07, 2021 5:20 pm

Couple more tips:

- It seems if you match the Size of the Text+ to the Text3D, the kerning adjustments should match 1:1. The big difference in kerning we're seeing is because Text+ defaults to 0.08 versus 1.0 for Text3D.

- There's a little dot at the bottom of each Text+ character in the viewer, which can be grabbed to make it easier to move them about.
Image

Below is a prepared node pair to make life easier. This is a Text+ and Text3D, where:
- Styled Text, Size, Font, Font Style and Manual Font Kerning are all Published on the Text+
- On the Text3D, those properties are all Connect To linked to the equivalents on the Text+

Publish -> Connect To is a bi-directional arrangement. You can change the value on either node, and the other always matches.

Therefore you can set up the Text3D however you like with regards to sizing and font, and the Text+ will change to match. Then adjust kerning on the Text+ and the Text3D to get the kerning to the Text3D.

You could save this as a .setting to make it easy to add to future comps.
Code: Select all
{
   Tools = ordered() {
      Text3D1 = Text3D {
         NameSet = true,
         Inputs = {
            StyledText = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Font = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            Style = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            Size = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            VerticalTopCenterBottom = Input { Value = 1, },
            VerticalJustification = Input { Value = 3, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1ExtrusionProfile",
               Source = "Value",
            },
            AdvancedFontControls = Input { Value = 1, },
            ManualFontKerningPlacement = Input {
               SourceOp = "Text1ManualFontKerning",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1606, 294.909 } },
      },
      Publish1 = PublishText {
         Inputs = {
            Value = Input { Value = "Example text", },
         },
      },
      Publish3 = PublishText {
         Inputs = {
            Value = Input { Value = "Open Sans", },
         },
      },
      Publish4 = PublishText {
         Inputs = {
            Value = Input { Value = "Bold", },
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = 1, },
         },
      },
      Text3D1ExtrusionProfile = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.0196116135138184, 0.098058067569092 }, Flags = { Linear = true } },
               [0.2] = { 1, LH = { 0.180388386486182, 0.901941932430908 }, RH = { 0.3, 1 }, Flags = { Linear = true } },
               [0.8] = { 1, LH = { 0.7, 1 }, RH = { 0.819611613513818, 0.901941932430908 }, Flags = { Linear = true } },
               [1] = { 0, LH = { 0.980388386486182, 0.098058067569092 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         NameSet = true,
      },
      Text1ManualFontKerning = BezierSpline {
         SplineColor = { Red = 147, Green = 244, Blue = 67 },
         NameSet = true,
         KeyFrames = {
            [294] = { 0, Flags = { Linear = true, LockedY = true }, Value = StyledText {
                  Array = {
                  },
                  Value = ""
               } }
         }
      },
      Text1 = TextPlus {
         CtrlWZoom = false,
         Inputs = {
            GlobalOut = Input { Value = 1500, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            StyledText = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Font = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            Style = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            Size = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            AdvancedFontControls = Input { Value = 1, },
            ManualFontKerningPlacement = Input {
               SourceOp = "Text1ManualFontKerning",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1606, 261.303 } },
      }
   }
}
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor
Offline

Videoneth

  • Posts: 1618
  • Joined: Fri Nov 13, 2020 11:03 pm
  • Warnings: 1
  • Real Name: Maxwell Allington

Re: Text+ and Text 3D questions

PostTue Sep 07, 2021 6:36 pm

Thanks for these tips.
I'll definitively use the code you shared, it's gonna be easier to reuse for sure.

With all these these tests, I found a new "BUG" (I can't win with Resolve :lol:)

The disk where my Cache is was full (I have a small 250 Gb I often have to purge manually). Resolve was still caching my fusion comps (the blue line), but I had constantly the "Media Offline". Deleting the cache corrected the problem, but still, Resolve should notify the user when the disk is full.

Anyway, all the tips you gave us are great. You saved me from frustration.

I wish there was a wiki for all these "workarounds" and tips.
Windows 10
18.6.6
nVidia 3090 - 537.42
Offline

Simon Stansfield

  • Posts: 15
  • Joined: Mon Nov 09, 2020 9:46 pm
  • Real Name: Simon Stansfield

Re: Text+ and Text 3D questions

PostWed Nov 24, 2021 6:34 pm

Man! I use copy/paste settings to transfer Character lLevel Styling to Text3D. Now it just crashes Resolve! Thankfully, The Blokes suggestion of "Publish"/"Conect to..." works for this too. Just a way slower way to achieve it. Hope it gets fixed soon. Unless anyone knows how to apply CLS direct to a Text3D :evil:
macOS Ventura 13.4.1
6 core Intel i5
16gb Ram
Radeon Pro 560X 4Gb
Resolve and Fusion Studio 18.5 Build 41
Offline

Videoneth

  • Posts: 1618
  • Joined: Fri Nov 13, 2020 11:03 pm
  • Warnings: 1
  • Real Name: Maxwell Allington

Re: Text+ and Text 3D questions

PostSat Nov 27, 2021 9:09 am

Simon Stansfield wrote:Man! I use copy/paste settings to transfer Character lLevel Styling to Text3D. Now it just crashes Resolve! Thankfully, The Blokes suggestion of "Publish"/"Conect to..." works for this too. Just a way slower way to achieve it. Hope it gets fixed soon. Unless anyone knows how to apply CLS direct to a Text3D :evil:

If it crashes, you should make a new post with the bug so they can see.
And yeah, The Bloke is a boss for everything Fusion
Windows 10
18.6.6
nVidia 3090 - 537.42
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: Text+ and Text 3D questions

PostSat Nov 27, 2021 9:30 am

Below is a variant of my earlier Text+ & Text3D macro, which has CLS.

Changes:
- Removed Publish from Text+ StyledText, and Connect To on Text3D StyledText
- Added CLS modifier on Text+ StyledText
- On Text3D, Connect To StyledText to CLS, so that both Text+ and Text3D's StyledText are connected to the same modifier.

This works OK, although there's a bit of a weird UI effect - as you adjust parameters in the Modifiers -> CLS, the controls can only be changed in small increments. Like you try to drag a slider, and it only moves a little bit - like the slider drag got cancelled after the first adjustment. So it's easier to type in numbers if you can.

Here's the code, with some already applied adjustments to text colour, font, font style, and tracking.
Image

Code: Select all
{
   Tools = ordered() {
      Text3D1 = Text3D {
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            StyledText = Input {
               SourceOp = "CharacterLevelStyling1",
               Source = "StyledText",
            },
            Font = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            Style = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            Size = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            VerticalTopCenterBottom = Input { Value = 1, },
            VerticalJustification = Input { Value = 3, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1ExtrusionProfile",
               Source = "Value",
            },
            AdvancedFontControls = Input { Value = 1, },
            ManualFontPlacement = Input {
               SourceOp = "Text3D1ManualPositioning",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 976, 169.182 } },
      },
      CharacterLevelStyling1 = StyledTextCLS {
         CtrlWZoom = false,
         Inputs = {
            Text = Input { Value = "Example text", },
            CharacterLevelStyling = Input {
               Value = StyledText {
                  Array = {
                     { 102, 1, 7, Value = 0.5 },
                     { 102, 9, 11, Value = 0.5 },
                     { 102, 8, 8, Value = 1 },
                     { 2404, 0, 0, Value = 1 },
                     { 2403, 0, 0, Value = 1 },
                     { 2402, 0, 0, Value = 1 },
                     { 2401, 0, 0, Value = 0.5 },
                     { 2402, 1, 1 },
                     { 2403, 2, 2 },
                     { 100, 8, 11, String = "Arial" },
                     { 109, 8, 11, String = "Bold" },
                     { 1300, 8, 11, Value = 1.197 }
                  }
               },
            },
         },
      },
      Publish3 = PublishText {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = "Open Sans", },
         },
      },
      Publish4 = PublishText {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = "Bold", },
         },
      },
      Publish2 = PublishNumber {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = 1, },
         },
      },
      Text3D1ExtrusionProfile = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.0666666666666667, 0.333333333333333 }, Flags = { Linear = true } },
               [0.2] = { 1, LH = { 0.133333333333333, 0.666666666666667 }, RH = { 0.4, 1 }, Flags = { Linear = true } },
               [0.8] = { 1, LH = { 0.6, 1 }, RH = { 0.866666666666667, 0.666666666666667 }, Flags = { Linear = true } },
               [1] = { 0, LH = { 0.933333333333333, 0.333333333333333 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 192, Green = 128, Blue = 64 },
         CtrlWZoom = false,
         NameSet = true,
      },
      Text3D1ManualPositioning = BezierSpline {
         SplineColor = { Red = 147, Green = 244, Blue = 67 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [294] = { 0, Flags = { Linear = true, LockedY = true }, Value = StyledText {
               } }
         }
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 100, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            StyledText = Input {
               SourceOp = "CharacterLevelStyling1",
               Source = "StyledText",
            },
            Font = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            Style = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            Size = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            AdvancedFontControls = Input { Value = 1, },
            ManualFontPlacement = Input {
               SourceOp = "Text3D1ManualPositioning",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 975.333, 134.97 } },
      }
   }
}
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: Text+ and Text 3D questions

PostSat Nov 27, 2021 9:30 am

Maxwellx wrote:I wish there was a wiki for all these "workarounds" and tips.
Eyeon, the original creators and developers of Fusion, had VFXPedia, an online Wiki for tips, tricks, example code, and lots of other things. BMD shut it down some time after they bought Fusion.

SecondMan of the We Suck Less forum rescued it out of the internet archive, so it is accessible again here. But I don't think it gets updated any more, so it's now just a read-only archive of the info that was in there at the time BMD killed it. Still contains useful general info though, on subjects like expressions, making Fuses and scripts, and other subjects.
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor

Return to DaVinci Resolve

Who is online

Users browsing this forum: Bing [Bot], Dermot Shane, Google [Bot] and 109 guests