Jump to: Board index » General » Fusion

Tracking a panorama

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

GrahamMYC

  • Posts: 5
  • Joined: Thu Dec 05, 2019 5:20 pm
  • Real Name: Graham Rabbitts

Tracking a panorama

PostThu Dec 05, 2019 5:27 pm

I have a project where I want to add names of places to a large(ish) map while I pan across the map. The names will eventually disappear off the edge as I pan across, and will not reappear.
Clearly I can track a map feature near the place.
Is there a 'best practice' procedure for doing this in Fusion?
Offline
User avatar

Yuri V. Nemets

  • Posts: 122
  • Joined: Mon Dec 08, 2014 10:41 am
  • Location: Ukraine, Kyiv

Re: Tracking a panorama

PostFri Dec 06, 2019 4:49 pm

Do it in 3D space (big image on an ImagePlane, and few 3Dtext layers) and panning camera.

Code: Select all
{
   Tools = ordered() {
      Text3D1_1_1 = Text3D {
         CtrlWZoom = false,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.167022480114074, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.0931848999709993, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.0634852927291943, },
            Green1 = Input { Value = 0, },
            Blue1 = Input { Value = 0, },
            StyledText = Input { Value = "Text Again", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input { Value = 0.04, },
            VerticalTopCenterBottom = Input { Value = 1, },
            VerticalJustification = Input { Value = 3, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1_1_1ExtrusionProfile",
               Source = "Value",
            },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
      },
      Text3D1_1_1ExtrusionProfile = 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 },
         NameSet = true,
      },
      Text3D1_1 = Text3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.144679846526252, },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.378195669636839, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.0634852927291943, },
            Green1 = Input { Value = 0, },
            Blue1 = Input { Value = 0, },
            StyledText = Input { Value = "Another text", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input { Value = 0.04, },
            VerticalTopCenterBottom = Input { Value = 1, },
            VerticalJustification = Input { Value = 3, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1_1ExtrusionProfile",
               Source = "Value",
            },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 214.5 } },
      },
      Text3D1_1ExtrusionProfile = 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 },
         NameSet = true,
      },
      Text3D1 = Text3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = -0.266994988377281, },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.394827954927898, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.0634852927291943, },
            Green1 = Input { Value = 0, },
            Blue1 = Input { Value = 0, },
            StyledText = Input { Value = "Some words", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input { Value = 0.04, },
            VerticalTopCenterBottom = Input { Value = 1, },
            VerticalJustification = Input { Value = 3, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ExtrusionProfile = Input {
               SourceOp = "Text3D1ExtrusionProfile",
               Source = "Value",
            },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 181.5 } },
      },
      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,
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalOut = Input { Value = 100, },
            Width = Input { Value = 2048, },
            Height = Input { Value = 1152, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            RendererType = Input { Value = FuID { "RendererOpenGL" }, },
            ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
            ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
            ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 115.5 } },
         SubInputsData = {
            RendererOpenGL = {
               Version = 1
            }
         }
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "ImagePlane3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Text3D1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "Text3D1_1",
               Source = "Output",
            },
            SceneInput5 = Input {
               SourceOp = "Text3D1_1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 115.5 } },
      },
      ImagePlane3D1 = ImagePlane3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            MaterialInput = Input {
               SourceOp = "FastNoise1",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 115.5 } },
      },
      FastNoise1 = FastNoise {
         Inputs = {
            GlobalOut = Input { Value = 100, },
            Width = Input { Value = 8000, },
            Height = Input { Value = 8000, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Detail = Input { Value = 1.1, },
            Contrast = Input { Value = 2.97, },
            XScale = Input { Value = 20, },
            Discontinuous = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 115.5 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Camera3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Camera3D1YOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Camera3D1ZOffset",
               Source = "Value",
            },
            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 = { 440, 49.5 } },
      },
      Camera3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 59, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { -0.279926090517678, RH = { 8.33333333333333, -0.139896653595993 }, Flags = { Linear = true } },
            [25] = { 0.140162220247376, LH = { 16.6666666666667, 0.000132783325691166 }, RH = { 30, 0.140162220247376 }, Flags = { Linear = true } },
            [40] = { 0.140162220247376, LH = { 35, 0.140162220247376 }, RH = { 43, 0.140162220247376 }, Flags = { Linear = true } },
            [49] = { 0.140162220247376, LH = { 46, 0.140162220247376 }, RH = { 52.6666666666667, 0.00699235927121133 }, Flags = { Linear = true } },
            [60] = { -0.259347362681117, LH = { 56.3333333333333, -0.126177501704953 }, RH = { 63.3333333333333, -0.259347362681117 }, Flags = { Linear = true } },
            [70] = { -0.259347362681117, LH = { 66.6666666666667, -0.259347362681117 }, Flags = { Linear = true } }
         }
      },
      Camera3D1YOffset = BezierSpline {
         SplineColor = { Red = 252, Green = 131, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [0] = { -0.370793207930105, RH = { 8.33333333333333, -0.370793207930105 }, Flags = { Linear = true } },
            [25] = { -0.370793207930105, LH = { 16.6666666666667, -0.370793207930105 }, RH = { 27.6666666666667, -0.370793207930105 }, Flags = { Linear = true } },
            [33] = { -0.370793207930105, LH = { 30.3333333333333, -0.370793207930105 }, RH = { 35.3333333333333, -0.211266721877227 }, Flags = { Linear = true } },
            [40] = { 0.107786250228529, LH = { 37.6666666666667, -0.0517402358243487 }, RH = { 43, 0.107786250228529 }, Flags = { Linear = true } },
            [49] = { 0.107786250228529, LH = { 46, 0.107786250228529 }, RH = { 56, 0.107786250228529 }, Flags = { Linear = true } },
            [70] = { 0.107786250228529, LH = { 63, 0.107786250228529 }, RH = { 75.6666666666667, 0.190084272048649 }, Flags = { Linear = true } },
            [87] = { 0.354680315688888, LH = { 81.3333333333333, 0.272382293868768 }, Flags = { Linear = true } }
         }
      },
      Camera3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.725821352810863, RH = { 13.3333333333333, 0.725821352810863 }, Flags = { Linear = true } },
            [40] = { 0.725821352810863, LH = { 26.6666666666667, 0.725821352810863 }, RH = { 43, 0.725821352810863 }, Flags = { Linear = true } },
            [49] = { 0.725821352810863, LH = { 46, 0.725821352810863 }, RH = { 56, 0.725821352810863 }, Flags = { Linear = true } },
            [70] = { 0.725821352810863, LH = { 63, 0.725821352810863 }, Flags = { Linear = true } }
         }
      }
   }
}
Offline

Nathan Shirley

  • Posts: 103
  • Joined: Fri Jan 12, 2018 6:43 am

Re: Tracking a panorama

PostTue Dec 10, 2019 5:26 am

I never would have guessed you have to do this in 3D, thanks! This has been driving me crazy trying to figure out why my image was getting cropped before. Now if Resolve just removed that 16k limit on image resolution... no images larger than 15,360 by 8,640 display in Resolve. So if your map is larger than that you're in for a serious work-around.

For anyone still not clear on how to set this up in Fusion:

Add a "Fusion Composition" to your timeline in "Edit"
With the playhead on that clip, open Fusion.
Import your image into Fusion, it will be generated in a "MediaIn" node.
You'll need to add and connect the following notes between "MediaIn" and "MediaOut" (left to right):
"ImagePlane3D"
"Renderer3D"
"Transform"

Once all 5 nodes are connected, you should be able to use the "Transform" node to zoom/pan. I tried to do this in "ImagePlane3D" directly, without the Transform node, but it seems to limit how far you can zoom in... before the image just disappears.
Offline

Sander de Regt

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

Re: Tracking a panorama

PostTue Dec 10, 2019 9:19 am

If you say 'pan across the map' do you mean you actully film a map with a camera that you need to track or do you have a large scan that you move around in Fusion.

If it's the former you need to actually track the plate, if it's the latter you can 'prebuild' the map with all the names on top of it and then move that intermediate result around in Fusion.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

GrahamMYC

  • Posts: 5
  • Joined: Thu Dec 05, 2019 5:20 pm
  • Real Name: Graham Rabbitts

Re: Tracking a panorama

PostSat Dec 21, 2019 3:30 pm

In the end I opted for pre labelling the large map - 3D is a bit beyond me at present. In attempting to add and locate names as text nodes in fusion I quickly came up against the resource limit on my PC ( a fairly high end Dell laptop).

But many thanks for giving me the advice.

Return to Fusion

Who is online

Users browsing this forum: No registered users and 47 guests