Fusion Transform 2D/3D

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

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Fusion Transform 2D/3D

PostMon May 14, 2018 10:22 pm

Version: Davinci Resolve V15.0.0B.037
OS: Win10 Home (1803)

Following some tutorials (Fusion tutorials) I've been able to do some fun things with 2D paths.
But, after 10ish hours I can't for the life of me find any way to do this:
Image

on the left, a 2d object following a curve and its rotation/heading. (I got this easily).
on the right, a 3d curve+cube. But there is no "connect to -> path heading" for Transform3D. there is a "Modify with -> path heading" but I can't figure out the right way to connect to it.

So, How can I have a 3D object follow a 3D curve/path/transform and automatically rotate with it?

My nodes:
Code: Select all
{
   Tools = ordered() {
      Rectangle1 = RectangleMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.19047619047619, },
            Height = Input { Value = 0.150793650793651, },
            Angle = Input {
               SourceOp = "Path1",
               Source = "Heading",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         CtrlWZoom = false,
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.605654761904762, Y = 0.0158730158730159, RX = 0.548282705229272, RY = -0.576325250712477 },
                     { LockY = true, X = 0.0580357142857143, Y = 0.0132275132275133, LX = -0.14831339012207, LY = -0.0360777739181698, RX = 0.352245742109357, RY = 0.0917680744595778 },
                     { LockY = true, X = 0.526785714285714, Y = -0.428571428571429, LX = -0.214468631121785, LY = 0.0570363763471618 }
                  }
               },
            },
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8.66579985618591, 0 }, Flags = { LockedY = true } },
            [26] = { 0.522, LH = { 17.3333333333333, 0.522 }, RH = { 28.3333333333333, 0.522 } },
            [33] = { 0.550255342723338, LH = { 30.6666666666667, 0.550255342723338 }, RH = { 34, 0.550255342723338 }, Flags = { LockedY = true } },
            [36] = { 0.602, LH = { 34.879241472986, 0.582176178655133 }, RH = { 44.65, 0.755 } },
            [46] = { 0.977999999999999, LH = { 42.6509489295175, 0.955481113562847 }, RH = { 52.0944220533245, 1.01897865193173 } },
            [61] = { 1, LH = { 57.2481390427702, 0.969429281089239 }, Flags = { LockedY = true } }
         }
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.677, },
            TopLeftGreen = Input { Value = 0.389952, },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 55, 49.5 } },
      },
      Shape3D1 = Shape3D {
         CtrlWZoom = false,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceIcoInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
            ["Transform3DOp.ScaleLock"] = Input { Value = 0, },
            ["Transform3DOp.Scale.Z"] = Input { Value = 2.56, },
            ["Transform3DOp.Target.X"] = Input {
               SourceOp = "Shape3D1XTargetPosition",
               Source = "Value",
            },
            ["Transform3DOp.Target.Z"] = Input {
               SourceOp = "Shape3D1ZTargetPosition",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            MaterialInput = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.Width"] = Input { Value = 1.89, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, }
         },
         ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
      },
      Shape3D1XTargetPosition = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 4.45660969484583 }
         }
      },
      Shape3D1ZTargetPosition = BezierSpline {
         SplineColor = { Red = 254, Green = 56, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -10.0044542343344 }
         }
      },
      Background1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.677, },
            TopLeftBlue = Input { Value = 0.400784, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
      },
      Transform3D1 = Transform3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Transform3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Transform3D1ZOffset",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.X"] = Input {
               SourceOp = "Transform3D1XRotation",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.Z"] = Input {
               SourceOp = "Transform3D1ZRotation",
               Source = "Value",
            },
            ["Transform3DOp.PivotNest"] = Input { Value = 1, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 82.5 } },
      },
      Transform3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.673863467147791, RH = { 5, 0.673863467147791 } },
            [15] = { -4.71266018488545, LH = { 10.0005000829697, -4.85292326421746 }, RH = { 21.3326998949051, -4.53499361773157 } },
            [34] = { 1.62774781086851, LH = { 27.6673001050949, 1.64258907650563 }, RH = { 37.6662999391556, 1.61915549918387 } },
            [45] = { -4.78296794879379, LH = { 41.3333333333333, -4.78296794879379 } }
         }
      },
      Transform3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -12.3863280000872, RH = { 5, -12.3863280000872 } },
            [15] = { -5.92587489914208, LH = { 10.0005000829697, -7.77825501712506 }, RH = { 21.2402846446866, -3.6137678087917 } },
            [34] = { 0.21111675571383, LH = { 27.9731593012009, -2.61097162618701 }, RH = { 37.6662999391556, 1.92787400548094 } },
            [45] = { 8.12172577394287, LH = { 41.3337000608444, 6.42072712320362 }, RH = { 49.7057137763257, 10.3049658026184 } },
            [60] = { 12.2739500353627, LH = { 55, 12.2739500353627 } }
         }
      },
      Transform3D1XRotation = BezierSpline {
         SplineColor = { Red = 255, Green = 128, Blue = 128 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 }, Flags = { Linear = true } }
         }
      },
      Transform3D1ZRotation = BezierSpline {
         SplineColor = { Red = 128, Green = 128, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 }, Flags = { Linear = true } }
         }
      },
      DirectionalLight1 = LightDirectional {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 2.87468346915684, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 4.36091754179702, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -35.7642137589864, },
            Red = Input { Value = 0.819, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, -16.5 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Transform3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "DirectionalLight1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
      },
      MediaOut1 = MediaOut {
         ViewInfo = OperatorInfo { Pos = { 770, 82.5 } },
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 49.5 } },
      },
      MediaIn1 = MediaIn {
         CustomData = { MediaProps = {
               MEDIA_HEIGHT = 1080,
               MEDIA_MARK_IN = 0,
               MEDIA_MARK_OUT = 119,
               MEDIA_NAME = "Compound Clip 1",
               MEDIA_NUM_FRAMES = 120,
               MEDIA_PAR = 1,
               MEDIA_SRC_FRAME_RATE = 24,
               MEDIA_START_FRAME = 0,
               MEDIA_WIDTH = 1920
            } },
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Layer = Input { Value = "0", },
         },
         ViewInfo = OperatorInfo { Pos = { -110, -49.5 } },
      },
      path2d = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 110, -16.5 },
            Size = { 233.333, 101.091 }
         },
      },
      curve3D = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 387.667, -49.5 },
            Size = { 250.666, 181.091 }
         },
      }
   },
   ActiveTool = "path2d"
}


Thanks
Offline
User avatar

Sergey Mirontsev

  • Posts: 256
  • Joined: Sun Mar 12, 2017 9:18 am
  • Location: Moscow, Russia

Re: Fusion Transform 2D/3D

PostTue May 15, 2018 5:06 am

tidbit wrote:Version: Davinci Resolve V15.0.0B.037

But there is no "connect to -> path heading" for Transform3D


It's here. You need reset Rotation animation before.
Attachments
Screen Shot 2018-05-15 at 08.01.51.png
Screen Shot 2018-05-15 at 08.01.51.png (105.54 KiB) Viewed 6922 times
Blackmagic Design Certified Master Trainer

Blackmagic Pocket Cinema Camera (Samyang 12mm Cine, 35mm Cine)
DaVinci Resolve Studio 17.4.4.0007
Speed Editor 1.4.1
Windows 10 Pro 21H1, i7-7700, 32Gb RAM, SSD, GeForce GTX 1080 Ti 11Gb (471.68 Studio)
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostTue May 15, 2018 4:13 pm

that path1 is the 2D path (I should have changed its name).
2 different path shapes to make it more clear:
Image
edit: just to make it clear, the above image is if I set both 2d and 3d to Path1's heading (2d path). I don't want that.
I want the 2d object to follow the 2d transform path (which I got, super easy).
and the 3d object to follow the transform3d path & rotation. but there is no "follow heading" for 3d paths? so then how can it be done?

nodes with new name:
Code: Select all
{
   Tools = ordered() {
      BG3D = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.677, },
            TopLeftBlue = Input { Value = 0.400784, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
      },
      Transform2D1 = Transform {
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            Center = Input {
               SourceOp = "path2dModifier",
               Source = "Position",
            },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 49.5 } },
      },
      path2dModifier = PolyPath {
         DrawMode = "InsertAndModify",
         NameSet = true,
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.605654761904762, Y = 0.0158730158730159, RX = 0.548282705229272, RY = -0.576325250712477 },
                     { LockY = true, X = 0.0580357142857143, Y = 0.0132275132275133, LX = -0.14831339012207, LY = -0.0360777739181698, RX = 0.352245742109357, RY = 0.0917680744595778 },
                     { LockY = true, X = 0.526785714285714, Y = -0.428571428571429, LX = -0.214468631121785, LY = 0.0570363763471618 }
                  }
               },
            },
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8.66579985618591, 0 }, Flags = { LockedY = true } },
            [26] = { 0.522, LH = { 17.3333333333333, 0.522 }, RH = { 28.3333333333333, 0.522 } },
            [33] = { 0.550255342723338, LH = { 30.6666666666667, 0.550255342723338 }, RH = { 34, 0.550255342723338 }, Flags = { LockedY = true } },
            [36] = { 0.602, LH = { 34.879241472986, 0.582176178655133 }, RH = { 44.65, 0.755 } },
            [46] = { 0.977999999999999, LH = { 42.6509489295175, 0.955481113562847 }, RH = { 52.0944220533245, 1.01897865193173 } },
            [61] = { 1, LH = { 57.2481390427702, 0.969429281089239 }, Flags = { LockedY = true } }
         }
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Transform3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "DirectionalLight1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceIcoInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
            ["Transform3DOp.ScaleLock"] = Input { Value = 0, },
            ["Transform3DOp.Scale.Z"] = Input { Value = 2.56, },
            ["Transform3DOp.Target.X"] = Input {
               SourceOp = "Shape3D1XTargetPosition",
               Source = "Value",
            },
            ["Transform3DOp.Target.Z"] = Input {
               SourceOp = "Shape3D1ZTargetPosition",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            MaterialInput = Input {
               SourceOp = "BG3D",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.Width"] = Input { Value = 1.89, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, }
         },
         ViewInfo = OperatorInfo { Pos = { 330.667, 82.5 } },
      },
      Shape3D1XTargetPosition = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 4.45660969484583 }
         }
      },
      Shape3D1ZTargetPosition = BezierSpline {
         SplineColor = { Red = 254, Green = 56, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -10.0044542343344 }
         }
      },
      Transform3D1 = Transform3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Transform3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Transform3D1ZOffset",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.X"] = Input {
               SourceOp = "Transform3D1XRotation",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.Z"] = Input {
               SourceOp = "Transform3D1ZRotation",
               Source = "Value",
            },
            ["Transform3DOp.PivotNest"] = Input { Value = 1, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440.667, 82.5 } },
      },
      Transform3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.673863467147791, RH = { 5, 0.673863467147791 } },
            [15] = { 2.46961927322174, LH = { 12.3130814122981, 2.3942366387023 }, RH = { 21.0446376200404, 2.63920413172828 } },
            [34] = { -3.44546057756226, LH = { 27.7308667463425, -3.43076828620532 }, RH = { 36.9842698393958, -3.45245448887248 } },
            [45] = { -4.78296794879379, LH = { 41.3333333333333, -4.78296794879379 } }
         }
      },
      Transform3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -12.3863280000872, RH = { 5, -12.3863280000872 } },
            [15] = { -5.92587489914208, LH = { 10.0005000829697, -7.77825501712506 }, RH = { 21.2402846446866, -3.6137678087917 } },
            [34] = { 0.21111675571383, LH = { 27.9731593012009, -2.61097162618701 }, RH = { 37.6662999391556, 1.92787400548094 } },
            [45] = { 8.12172577394287, LH = { 41.3337000608444, 6.42072712320362 }, RH = { 49.7057137763257, 10.3049658026184 } },
            [60] = { 12.2739500353627, LH = { 55, 12.2739500353627 } }
         }
      },
      Transform3D1XRotation = BezierSpline {
         SplineColor = { Red = 255, Green = 128, Blue = 128 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 }, Flags = { Linear = true } }
         }
      },
      Transform3D1ZRotation = BezierSpline {
         SplineColor = { Red = 128, Green = 128, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 }, Flags = { Linear = true } }
         }
      },
      Rectangle1 = RectangleMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.19047619047619, },
            Height = Input { Value = 0.150793650793651, },
            Angle = Input {
               SourceOp = "path2dModifier",
               Source = "Heading",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.677, },
            TopLeftGreen = Input { Value = 0.389952, },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 55, 49.5 } },
      },
      DirectionalLight1 = LightDirectional {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 2.87468346915684, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 4.36091754179702, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -35.7642137589864, },
            Red = Input { Value = 0.819, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, -16.5 } },
      },
      MediaOut1 = MediaOut {
         ViewInfo = OperatorInfo { Pos = { 770, 82.5 } },
      },
      MediaIn1 = MediaIn {
         CustomData = { MediaProps = {
               MEDIA_HEIGHT = 1080,
               MEDIA_MARK_IN = 0,
               MEDIA_MARK_OUT = 119,
               MEDIA_NAME = "Compound Clip 1",
               MEDIA_NUM_FRAMES = 120,
               MEDIA_PAR = 1,
               MEDIA_SRC_FRAME_RATE = 24,
               MEDIA_START_FRAME = 0,
               MEDIA_WIDTH = 1920
            } },
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Layer = Input { Value = "0", },
         },
         ViewInfo = OperatorInfo { Pos = { -110, -49.5 } },
      },
      curve3D = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 387.667, -49.5 },
            Size = { 250.666, 181.091 }
         },
      },
      path2d = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 110, -16.5 },
            Size = { 233.333, 101.091 }
         },
      }
   }
}
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostWed May 16, 2018 4:46 pm

doing some digging around, found something interesting:
(numbers will be based off this image)
Image

2D:
- if I select 1 and add "connect to -> pathName -> heading" to the "rotation", it creates a modifier, as expected.
- if I then select 2, it has the same modifier, possibly because 1 and 2 are connected?

3D
- if I select 3 and add a "Modify with" to its Y Rotation, a modifier is created.
--- If I use "Connect to", no modifier is created for 3 or 4.
- If I select 4, there is no shared "modifier" tab even if I use "Modify with", like there is for 1/2.
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostThu May 17, 2018 8:29 pm

I had the idea of linking the paths "use target" x/y/z to the cubes x/y/z and hope it would match the paths angle (even though they are directly overlapped). Nope, didn't work. MAYBE if I add a very small time offset? but then the very last frame would probably be be weird since the x/y/z are all the same.

Any help would be appreciated. Or maybe its just not possible for the current beta?
Offline

Sander de Regt

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

Re: Fusion Transform 2D/3D

PostThu May 17, 2018 9:08 pm

You're definitely on the right track. I did this years ago. Animate your cube and then right-click and 'modify with offset' the x/y/z tracks of the target. Go into the modifiers and right-click-->connect to--> the X/Y/Z values. Play with the time off-set and you're good to go. And yes, the very last frame will be weird, so animate it a little more than you need to.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostThu May 17, 2018 9:37 pm

can you apply it to my above nodes or give a little more information please?

(on the Transform3D object)
if I use either of these "offset" options, there's no x/y/z options (only x/y)
Image

and then would I link it to the transform x/y/z?
Image

full screenshot:
Image
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostThu May 24, 2018 4:38 pm

Anybody? I'd like to get this working. also asked on reddit: https://www.reddit.com/r/blackmagicdesi ... _path_and/
Offline
User avatar

Bryan Ray

  • Posts: 2618
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Fusion Transform 2D/3D

PostFri May 25, 2018 4:29 am

Sander de Regt wrote: Animate your cube and then right-click and 'modify with offset' the x/y/z tracks of the target.


Is that perhaps a Krokodove modifier? I don't see it in my install.

You can get this done with an expression (screenshot from Fu8 because Resolve takes too long to start up):

Untitled.png
Untitled.png (92.25 KiB) Viewed 6757 times


The expressions on the LookAt Target Position, in case they're difficult to see in the ss:
self:GetValue("Transform3DOp.Translate.X", time-1)

That fetches the Translate.X value from the previous frame. So there will be a snap to 0 on frame 0. You can fix that by selecting the keyframes in the Spline View, right-click, and choose Gradient Extrapolation—Fusion will extrapolate the curves, so long as they're not flat at the ends.

edit: Note that this will bias the angle a little bit, either leading or trailing the actual motion. If it's important to keep the angle centered, you'll need to average the values from time+1 and time-1:
(self:GetValue("Transform3DOp.Translate.X", time+1) + self:GetValue("Transform3DOp.Translate.X", time-1)) / 2

Hmmm... Or you could use +/- 0.5. That should give you an even more accurate derivative at the frame in question.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

tidbit

  • Posts: 9
  • Joined: Mon May 14, 2018 1:23 am
  • Real Name: Joe Fles

Re: Fusion Transform 2D/3D

PostSat May 26, 2018 4:22 pm

Thank you very much, Bryan! That works great.

Simple node setup for 2D and 3D:
Code: Select all
{
   Tools = ordered() {
      Rectangle1 = RectangleMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.19047619047619, },
            Height = Input { Value = 0.150793650793651, },
            Angle = Input {
               SourceOp = "path2dModifier",
               Source = "Heading",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
      },
      path2dModifier = PolyPath {
         DrawMode = "InsertAndModify",
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            Displacement = Input {
               SourceOp = "path2dModifierDisplacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.605654761904762, Y = 0.0158730158730159, RX = 0.548282705229272, RY = -0.576325250712477 },
                     { LockY = true, X = 0.0580357142857143, Y = 0.0132275132275133, LX = -0.14831339012207, LY = -0.0360777739181698, RX = 0.352245742109357, RY = 0.0917680744595778 },
                     { LockY = true, X = 0.526785714285714, Y = -0.428571428571429, LX = -0.214468631121785, LY = 0.0570363763471618 }
                  }
               },
            },
         },
      },
      path2dModifierDisplacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8.66579985618591, 0 }, Flags = { LockedY = true } },
            [26] = { 0.522, LH = { 17.3333333333333, 0.522 }, RH = { 28.3333333333333, 0.522 } },
            [33] = { 0.550255342723338, LH = { 30.6666666666667, 0.550255342723338 }, RH = { 34, 0.550255342723338 }, Flags = { LockedY = true } },
            [36] = { 0.602, LH = { 34.879241472986, 0.582176178655133 }, RH = { 44.65, 0.755 } },
            [46] = { 0.977999999999999, LH = { 42.6509489295175, 0.955481113562847 }, RH = { 52.0944220533245, 1.01897865193173 } },
            [61] = { 1, LH = { 57.2481390427702, 0.969429281089239 }, Flags = { LockedY = true } }
         }
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.677, },
            TopLeftGreen = Input { Value = 0.389952, },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 55, 49.5 } },
      },
      Transform2D1 = Transform {
         NameSet = true,
         Inputs = {
            Center = Input {
               SourceOp = "path2dModifier",
               Source = "Position",
            },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 49.5 } },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, },
            ["SurfaceIcoInputs.ObjectID.ObjectID"] = Input { Value = 3, },
            ["Transform3DOp.PivotNest"] = Input { Value = 1, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
            ["Transform3DOp.ScaleLock"] = Input { Value = 0, },
            ["Transform3DOp.Scale.Z"] = Input { Value = 2.56, },
            ["Transform3DOp.Target.X"] = Input {
               SourceOp = "Shape3D1XTargetPosition",
               Source = "Value",
            },
            ["Transform3DOp.Target.Z"] = Input {
               SourceOp = "Shape3D1ZTargetPosition",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
            MaterialInput = Input {
               SourceOp = "BG3D",
               Source = "Output",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.Width"] = Input { Value = 1.89, },
            ["SurfaceCubeInputs.SubdivisionWidth"] = Input { Value = 3, },
            ["SurfaceCubeInputs.Controls.Normals.Show"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, }
         },
         ViewInfo = OperatorInfo { Pos = { 330.667, 82.5 } },
      },
      Shape3D1XTargetPosition = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 4.45660969484583 }
         }
      },
      Shape3D1ZTargetPosition = BezierSpline {
         SplineColor = { Red = 254, Green = 56, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -10.0044542343344 }
         }
      },
      BG3D = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.677, },
            TopLeftBlue = Input { Value = 0.400784, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
      },
      path2d = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 110, -16.5 },
            Size = { 233.333, 101.091 }
         },
      },
      Transform3D1 = Transform3D {
         CtrlWZoom = false,
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Transform3D1XOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Transform3D1YOffset",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Transform3D1ZOffset",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.X"] = Input {
               SourceOp = "Transform3D1XRotation",
               Source = "Value",
            },
            ["Transform3DOp.Rotate.Z"] = Input {
               SourceOp = "Transform3D1ZRotation",
               Source = "Value",
            },
            ["Transform3DOp.PivotNest"] = Input { Value = 1, },
            ["Transform3DOp.ScaleNest"] = Input { Value = 0, },
            ["Transform3DOp.UseTarget"] = Input { Value = 1, },
            ["Transform3DOp.Target.X"] = Input {
               Value = 2.31466540368773,
               Expression = "self:GetValue(\"Transform3DOp.Translate.X\", time-1)",
            },
            ["Transform3DOp.Target.Y"] = Input { Expression = "self:GetValue(\"Transform3DOp.Translate.Y\", time-1)", },
            ["Transform3DOp.Target.Z"] = Input {
               Value = -9.00030698188571,
               Expression = "self:GetValue(\"Transform3DOp.Translate.Z\", time-1)",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440.667, 82.5 } },
         UserControls = ordered() { NewControl = { ICS_ControlPage = "3D", LINKID_DataType = "Point", LINKS_Name = "New Control" } }
      },
      Transform3D1XOffset = BezierSpline {
         SplineColor = { Red = 250, Green = 132, Blue = 49 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0.673863467147791, RH = { 5, 0.673863467147791 } },
            [15] = { 2.46961927322174, LH = { 10.0915823099095, 3.59241362234576 }, RH = { 21.3326998069467, 1.02102218819914 } },
            [34] = { -7.10359360364859, LH = { 27.6614146766707, -7.08873854496773 }, RH = { 36.9997862136938, -7.1106238790115 } },
            [45] = { -4.78296794879379, LH = { 41.3333333333333, -4.78296794879379 } }
         }
      },
      Transform3D1YOffset = BezierSpline {
         SplineColor = { Red = 252, Green = 206, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [2] = { 0, RH = { 6.33333333333333, 0 }, Flags = { Linear = true } },
            [15] = { 0, LH = { 10.6666666666667, 0 }, RH = { 21.3326998949051, 0 }, Flags = { Linear = true } },
            [34] = { 1.8321383868105, LH = { 27.7269841038093, 0.771357994310348 }, RH = { 34.6665999889374, 1.94486186935978 } },
            [36] = { 3.55114487371705, LH = { 35.3334000110626, 3.6621724581152 }, RH = { 38.9996999502182, 3.05152074392539 } },
            [45] = { 0, LH = { 42, 0 } }
         }
      },
      Transform3D1ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 207, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { -12.3863280000872, RH = { 5, -12.3863280000872 } },
            [15] = { -5.92587489914208, LH = { 10.0005000829697, -7.77825501712506 }, RH = { 21.053500433983, -3.68297380219154 } },
            [34] = { -1.50749594346134, LH = { 28.1948906160902, -4.22575789308606 }, RH = { 34.6665999889374, -1.19535826168551 } },
            [36] = { 1.14582502439155, LH = { 35.3334000110626, 0.413481865044109 }, RH = { 38.5547291149506, 3.95251332677547 } },
            [45] = { 8.12172577394287, LH = { 41.972288431998, 6.71700347149392 }, RH = { 49.7057137763257, 10.3049658026184 } },
            [60] = { 12.2739500353627, LH = { 55, 12.2739500353627 } }
         }
      },
      Transform3D1XRotation = BezierSpline {
         SplineColor = { Red = 255, Green = 128, Blue = 128 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 } }
         }
      },
      Transform3D1ZRotation = BezierSpline {
         SplineColor = { Red = 128, Green = 128, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0 }, Flags = { Linear = true } },
            [24] = { 0, LH = { 16, 0 } }
         }
      },
      DirectionalLight1 = LightDirectional {
         Inputs = {
            ["Transform3DOp.Translate.Y"] = Input { Value = 2.87468346915684, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 4.36091754179702, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -35.7642137589864, },
            Red = Input { Value = 0.819, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, -16.5 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Transform3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "DirectionalLight1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
      },
      curve3D = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 383.667, -49.5 },
            Size = { 242.666, 181.091 }
         },
      }
   }
}

Return to DaVinci Resolve

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot], panos_mts, ravirai and 219 guests