Jump to: Board index » General » Fusion

Setting Camera3d center point upon that of another object?

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

cyberfyber

  • Posts: 39
  • Joined: Wed Mar 03, 2021 4:56 am
  • Real Name: Luis Diaz

Setting Camera3d center point upon that of another object?

PostFri Apr 16, 2021 5:28 pm

Hi,

I'm trying to have a 3d camera revolve around another 3d object.

How/what might be the process?

I understand I can simply set the pivot point (from a Transform3d node) to the subject object.

But isn't there a way to lock the camera onto something as its center?

I see the "use target" showing up in the Tools Manual but still not clear how to make use of it OR, for that matter, the 'pick' tool there. Dragging it onto the rendering appears to try and select colors.

Thanks for any direction.
DR 18 Studio
Win 11 / Ryzen 5 5950x / B550 Tomahawk / 128 GB Ram / 2 x m.2 nvme drives / 1 x HDD / 1 x SSD / EVGA 850w / RTX 3070TI
Offline
User avatar

Bryan Ray

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

Re: Setting Camera3d center point upon that of another objec

PostFri Apr 16, 2021 6:03 pm

If you turn on the WorldCoord buffer in the Renderer3D, then the Translation Pick button will pick from that channel instead of the color channels, so you can get a position directly from the rendered image, which is kind of cool. The Rotation pick button will get Normals if you have those turned on.

Use Target, when turned on, will point the camera in the direction of the target position. Usually, the simplest way to use it is to use expressions to link the Target position to the 3D translations of whatever you want it to stay aimed at. Unfortunately, Fusion doesn't have any way of understanding parenting, so if your object's actual location is indirect, you may need to get clever to find a way of getting that derived information.

One thing to take note if is that the rotations are added to the camera after the Use Target evaluation. So zero out all of the camera rotations first to establish your base, then adjust them from there if necessary.

Generally, though, the simplest way to get a revolving camera is to make sure your point of rotation is at world [0,0,0]—Translate the entire scene if you have to—then use a Transform3D to rotate the camera. It will revolve around that center location.

Just for fun, I did a bit of a ridiculous experiment involving world coordinates, tracking a CG object, and a Probe modifier:

Code: Select all
{
   Tools = ordered() {
      Merge3D2 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "RenderCam",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 3300, -214.5 } },
      },
      RenderCam = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1_8 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1_8",
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { -2750, -1897.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1_8 = Camera3D {
                        Inputs = {
                           FLength = Input { Value = 49.0568334445481 },
                           ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
                           ImagePlaneEnabled = Input { Value = 0 },
                           AoV = Input {
                              Value = 19.2642683071402,
                              Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
                           },
                           AovType = Input { Value = 1 },
                           ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
                           ApertureH = Input { Value = 0.9 },
                           FilmGate = Input { Value = FuID { "HD" } },
                           ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
                           ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
                           PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
                           FilmBack = Input { Value = 1 },
                           ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { 550, -676.5 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 14.0184229301414, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 3.35183785596733, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 19.2947038745652, },
            ["Transform3DOp.UseTarget"] = Input { Value = 1, },
            ["Transform3DOp.Target.X"] = Input {
               SourceOp = "Probe1",
               Source = "Red",
            },
            ["Transform3DOp.Target.Y"] = Input {
               SourceOp = "Probe1",
               Source = "Green",
            },
            ["Transform3DOp.Target.Z"] = Input {
               SourceOp = "Probe1",
               Source = "Blue",
            },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 3300, -280.5 } },
      },
      Probe1 = Probe {
         CtrlWZoom = false,
         Inputs = {
            ImageToProbe = Input {
               SourceOp = "CopyAux1",
               Source = "Output",
            },
            Position = Input {
               SourceOp = "Tracker1_1",
               Source = "Position2",
            },
         },
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Perturb1",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Perturb2",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Perturb3",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 0.26, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 2915, -247.5 } },
      },
      Perturb1 = PerturbNumber {
         CtrlWZoom = false,
         Inputs = {
            RandomSeed = Input { Value = 29793, },
         },
      },
      Perturb2 = PerturbNumber {
         CtrlWZoom = false,
         Inputs = {
            RandomSeed = Input { Value = 17438, },
         },
      },
      Perturb3 = PerturbNumber {
         CtrlWZoom = false,
         Inputs = {
            RandomSeed = Input { Value = 26328, },
         },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "CoordinateScan",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 3025, -214.5 } },
      },
      CoordinateScan = Camera3D {
         NameSet = true,
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     Camera3D1_8 = Camera3D {
                        Inputs = {
                           ApertureW = Input { Value = 0.831496062992126 },
                           AoV = Input { Value = 19.2642683071402 },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
                           ApertureH = Input { Value = 0.467716535433071 },
                           FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 }
                        },
                        Name = "Camera3D1_8",
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { -2750, -1897.5 } },
                        CustomData = {
                        }
                     }
                  }
               },
               [6] = {
                  Tools = ordered() {
                     Camera3D1_8 = Camera3D {
                        Inputs = {
                           FLength = Input { Value = 49.0568334445481 },
                           ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
                           ImagePlaneEnabled = Input { Value = 0 },
                           AoV = Input {
                              Value = 19.2642683071402,
                              Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
                           },
                           AovType = Input { Value = 1 },
                           ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
                           ApertureH = Input { Value = 0.9 },
                           FilmGate = Input { Value = FuID { "HD" } },
                           ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
                           ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
                           PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
                           FilmBack = Input { Value = 1 },
                           ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
                           ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" },
                           ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
                           ApertureW = Input { Value = 1.6 },
                           ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
                           ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
                           ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
                        },
                        CtrlWZoom = false,
                        ViewInfo = OperatorInfo { Pos = { 550, -676.5 } },
                        CustomData = {
                        }
                     }
                  }
               }
            }
         },
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input { Value = 28.65, },
            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 = 1, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 2915, -214.5 } },
      },
      CopyAux1 = Dimension.CopyAux {
         Inputs = {
            Channel = Input { Value = FuID { "WorldPos" }, },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 3245, -181.5 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalIn = Input { Value = 1001, },
            GlobalOut = Input { Value = 1071, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            CameraSelector = Input { Value = FuID { "CoordinateScan" }, },
            ["RendererSoftware.Channels.Nest"] = Input { Value = 1, },
            ["RendererSoftware.Channels.WorldCoord"] = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 3135, -181.5 } },
      },
      Tracker1_1 = Tracker {
         Trackers = {
            {
               PatternTime = 1037,
               PatternX = 0.492576664173523,
               PatternY = 0.479787234042553
            }
         },
         CtrlWZoom = false,
         Inputs = {
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
            MatchMoveSettings = Input { Value = 1, },
            Name2 = Input { Value = "Tracker 2", },
            PatternCenter2 = Input { Value = { 0.468414880319356, 0.497770451635146 }, },
            PatternWidth2 = Input { Value = 0.0532161555721765, },
            PatternHeight2 = Input { Value = 0.0936170212765957, },
            SearchWidth2 = Input { Value = 0.232498130142109, },
            SearchHeight2 = Input { Value = 0.353191489361702, },
            TrackedCenter2 = Input {
               SourceOp = "Tracker1_1Tracker2XYPath",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 3245, -148.5 } },
         UserControls = ordered() {
            UpdateReferenceFrame = {
               INP_Integer = false,
               LINKID_DataType = "Number",
               BTNCS_Execute = "RunScript([[S:\\net_exe\\BlackMagic\\fusion9\\scripts\\Tool\\updateTrackerReferenceFrame.lua]])",
               ICS_ControlPage = "Operation",
               INPID_InputControl = "ButtonControl",
               LINKS_Name = "Update Reference Frame"
            }
         }
      },
      Tracker1_1Tracker2XYPath = XYPath {
         ShowKeyPoints = false,
         DrawMode = "ModifyOnly",
         NameSet = true,
         Inputs = {
            X = Input {
               SourceOp = "XYPath1X",
               Source = "Value",
            },
            Y = Input {
               SourceOp = "XYPath1Y",
               Source = "Value",
            },
         },
      },
      XYPath1X = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [1001] = { 0.468414880319356, RH = { 1001.33, 0.468378625436544 }, Flags = { Linear = true } },
            [1002] = { 0.468305017038106, LH = { 1001.67, 0.468341271920919 }, RH = { 1002.33, 0.468300317331075 }, Flags = { Linear = true } },
            [1003] = { 0.468290775501648, LH = { 1002.67, 0.468295475208679 }, RH = { 1003.33, 0.468311588489929 }, Flags = { Linear = true } },
            [1004] = { 0.468353845163106, LH = { 1003.67, 0.468333032174825 }, RH = { 1004.33, 0.468407556100606 }, Flags = { Linear = true } },
            [1005] = { 0.468516605579773, LH = { 1004.67, 0.468462894642273 }, RH = { 1005.33, 0.468570316517273 }, Flags = { Linear = true } },
            [1006] = { 0.468679365996439, LH = { 1005.67, 0.468625655058939 }, RH = { 1006.33, 0.468788130644877 }, Flags = { Linear = true } },
            [1007] = { 0.469008955840189, LH = { 1006.67, 0.468900191191752 }, RH = { 1007.33, 0.469098921660502 }, Flags = { Linear = true } },
            [1008] = { 0.469281579538106, LH = { 1007.67, 0.469191613717794 }, RH = { 1008.33, 0.469442712350606 }, Flags = { Linear = true } },
            [1009] = { 0.469769860788106, LH = { 1008.67, 0.469608727975606 }, RH = { 1009.33, 0.469894738717794 }, Flags = { Linear = true } },
            [1010] = { 0.470148278756856, LH = { 1009.67, 0.470023400827169 }, RH = { 1010.33, 0.470357080026387 }, Flags = { Linear = true } },
            [1011] = { 0.470781009876648, LH = { 1010.67, 0.470572208607117 }, RH = { 1011.33, 0.470936100208679 }, Flags = { Linear = true } },
            [1012] = { 0.471250980579773, LH = { 1011.67, 0.471095890247742 }, RH = { 1012.33, 0.471505436146179 }, Flags = { Linear = true } },
            [1013] = { 0.472022058053731, LH = { 1012.67, 0.471767602487325 }, RH = { 1013.33, 0.472300683542012 }, Flags = { Linear = true } },
            [1014] = { 0.472866377715189, LH = { 1013.67, 0.472587752226908 }, RH = { 1014.33, 0.473063094023783 }, Flags = { Linear = true } },
            [1015] = { 0.473462487741231, LH = { 1014.67, 0.473265771432637 }, RH = { 1015.33, 0.473776696725606 }, Flags = { Linear = true } },
            [1016] = { 0.474414636178731, LH = { 1015.67, 0.474100427194356 }, RH = { 1016.33, 0.474632836862325 }, Flags = { Linear = true } },
            [1017] = { 0.475075850371439, LH = { 1016.67, 0.474857649687846 }, RH = { 1017.33, 0.475417586211283 }, Flags = { Linear = true } },
            [1018] = { 0.476111413522481, LH = { 1017.67, 0.475769677682637 }, RH = { 1018.33, 0.476345727487325 }, Flags = { Linear = true } },
            [1019] = { 0.476821455840189, LH = { 1018.67, 0.476587141875346 }, RH = { 1019.33, 0.477184004668314 }, Flags = { Linear = true } },
            [1020] = { 0.477920088652689, LH = { 1019.67, 0.477557539824565 }, RH = { 1020.33, 0.478292708281596 }, Flags = { Linear = true } },
            [1021] = { 0.479049239043314, LH = { 1020.67, 0.478676619414408 }, RH = { 1021.33, 0.479296980742533 }, Flags = { Linear = true } },
            [1022] = { 0.479799971465189, LH = { 1021.67, 0.479552229765971 }, RH = { 1022.33, 0.480180647734721 }, Flags = { Linear = true } },
            [1023] = { 0.480953535918314, LH = { 1022.67, 0.480572859648783 }, RH = { 1023.33, 0.481205977324564 }, Flags = { Linear = true } },
            [1024] = { 0.481718509876648, LH = { 1023.67, 0.481466068470398 }, RH = { 1024.33, 0.482095157825867 }, Flags = { Linear = true } },
            [1025] = { 0.482859867298523, LH = { 1024.67, 0.482483219349304 }, RH = { 1025.33, 0.483110294544617 }, Flags = { Linear = true } },
            [1026] = { 0.483618737741231, LH = { 1025.67, 0.483368310495137 }, RH = { 1026.33, 0.483989343209981 }, Flags = { Linear = true } },
            [1027] = { 0.484741784616231, LH = { 1026.67, 0.484371179147481 }, RH = { 1027.33, 0.4849841552217 }, Flags = { Linear = true } },
            [1028] = { 0.485476240996439, LH = { 1027.67, 0.485233870390971 }, RH = { 1028.33, 0.485832075957377 }, Flags = { Linear = true } },
            [1029] = { 0.486554528756856, LH = { 1028.67, 0.486198693795919 }, RH = { 1029.33, 0.486897607370137 }, Flags = { Linear = true } },
            [1030] = { 0.487594160918314, LH = { 1029.67, 0.487251082305033 }, RH = { 1030.33, 0.487817732695658 }, Flags = { Linear = true } },
            [1031] = { 0.488271651152689, LH = { 1030.67, 0.488048079375346 }, RH = { 1031.33, 0.488591231230814 }, Flags = { Linear = true } },
            [1032] = { 0.489240075631856, LH = { 1031.67, 0.488920495553731 }, RH = { 1032.33, 0.4894421630342 }, Flags = { Linear = true } },
            [1033] = { 0.489852461699564, LH = { 1032.67, 0.489650374297221 }, RH = { 1033.33, 0.490143843535502 }, Flags = { Linear = true } },
            [1034] = { 0.490735436959981, LH = { 1033.67, 0.490444055124044 }, RH = { 1034.33, 0.490920068307637 }, Flags = { Linear = true } },
            [1035] = { 0.491294925892273, LH = { 1034.67, 0.491110294544617 }, RH = { 1035.33, 0.491555423939148 }, Flags = { Linear = true } },
            [1036] = { 0.492084313913106, LH = { 1035.67, 0.491823815866231 }, RH = { 1036.33, 0.492246789499044 }, Flags = { Linear = true } },
            [1037] = { 0.492576664173523, LH = { 1036.67, 0.492414188587585 }, Flags = { Linear = true } }
         }
      },
      XYPath1Y = BezierSpline {
         SplineColor = { Red = 0, Green = 255, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [1001] = { 0.497770451635146, RH = { 1001.33, 0.49676665389209 }, Flags = { Linear = true } },
            [1002] = { 0.494728640292553, LH = { 1001.67, 0.495732438035609 }, RH = { 1002.33, 0.493735584736998 }, Flags = { Linear = true } },
            [1003] = { 0.491719381033294, LH = { 1002.67, 0.49271243658885 }, RH = { 1003.33, 0.490739454818016 }, Flags = { Linear = true } },
            [1004] = { 0.488749907653664, LH = { 1003.67, 0.489729833868942 }, RH = { 1004.33, 0.487602880743942 }, Flags = { Linear = true } },
            [1005] = { 0.485274068533294, LH = { 1004.67, 0.486421095443016 }, RH = { 1005.33, 0.484340691797183 }, Flags = { Linear = true } },
            [1006] = { 0.482445654181442, LH = { 1005.67, 0.483379030917553 }, RH = { 1006.33, 0.481543310431442 }, Flags = { Linear = true } },
            [1007] = { 0.479711279181442, LH = { 1006.67, 0.480613622931442 }, RH = { 1007.33, 0.478834000535609 }, Flags = { Linear = true } },
            [1008] = { 0.477052859042553, LH = { 1007.67, 0.477930137688387 }, RH = { 1008.33, 0.47621854914672 }, Flags = { Linear = true } },
            [1009] = { 0.474524647236998, LH = { 1008.67, 0.475358957132831 }, RH = { 1009.33, 0.473723757480053 }, Flags = { Linear = true } },
            [1010] = { 0.47209770857959, LH = { 1009.67, 0.472898598336535 }, RH = { 1010.33, 0.471342174725424 }, Flags = { Linear = true } },
            [1011] = { 0.469808212051813, LH = { 1010.67, 0.470563745905979 }, RH = { 1011.33, 0.469092066218479 }, Flags = { Linear = true } },
            [1012] = { 0.467638073162924, LH = { 1011.67, 0.468354218996257 }, RH = { 1012.33, 0.466844344864313 }, Flags = { Linear = true } },
            [1013] = { 0.465232835894405, LH = { 1012.67, 0.466026564193016 }, RH = { 1013.33, 0.464627692665239 }, Flags = { Linear = true } },
            [1014] = { 0.463399068533294, LH = { 1013.67, 0.464004211762461 }, RH = { 1014.33, 0.462844055512461 }, Flags = { Linear = true } },
            [1015] = { 0.461717210894405, LH = { 1014.67, 0.462272223915238 }, RH = { 1015.33, 0.461215908811072 }, Flags = { Linear = true } },
            [1016] = { 0.460198113672183, LH = { 1015.67, 0.460699415755516 }, RH = { 1016.33, 0.459752909679127 }, Flags = { Linear = true } },
            [1017] = { 0.458849010662924, LH = { 1016.67, 0.459294214655979 }, RH = { 1017.33, 0.458464679065701 }, Flags = { Linear = true } },
            [1018] = { 0.45768436945922, LH = { 1017.67, 0.458068701056442 }, RH = { 1018.33, 0.457357329528664 }, Flags = { Linear = true } },
            [1019] = { 0.456693339366627, LH = { 1018.67, 0.457020379297183 }, RH = { 1019.33, 0.456434333290238 }, Flags = { Linear = true } },
            [1020] = { 0.455908472468479, LH = { 1019.67, 0.456167478544868 }, RH = { 1020.33, 0.455679305801813 }, Flags = { Linear = true } },
            [1021] = { 0.455214028024035, LH = { 1020.67, 0.455443194690701 }, RH = { 1021.33, 0.455110186878201 }, Flags = { Linear = true } },
            [1022] = { 0.454899357885146, LH = { 1021.67, 0.455003199030979 }, RH = { 1022.33, 0.454863550593479 }, Flags = { Linear = true } },
            [1023] = { 0.454790850940701, LH = { 1022.67, 0.454826658232368 }, RH = { 1023.33, 0.454833819690701 }, Flags = { Linear = true } },
            [1024] = { 0.454921059274035, LH = { 1023.67, 0.454878090524035 }, RH = { 1024.33, 0.455042804065701 }, Flags = { Linear = true } },
            [1025] = { 0.455289982885146, LH = { 1024.67, 0.455168238093479 }, RH = { 1025.33, 0.455495278024035 }, Flags = { Linear = true } },
            [1026] = { 0.455912089366627, LH = { 1025.67, 0.455706794227738 }, RH = { 1026.33, 0.456198547699961 }, Flags = { Linear = true } },
            [1027] = { 0.456780144922183, LH = { 1026.67, 0.45649368658885 }, RH = { 1027.33, 0.45714896002635 }, Flags = { Linear = true } },
            [1028] = { 0.457897766449961, LH = { 1027.67, 0.457528951345794 }, RH = { 1028.33, 0.458353712630516 }, Flags = { Linear = true } },
            [1029] = { 0.459279421542553, LH = { 1028.67, 0.458823475361998 }, RH = { 1029.33, 0.459939469285609 }, Flags = { Linear = true } },
            [1030] = { 0.461279566218479, LH = { 1029.67, 0.460619518475424 }, RH = { 1030.33, 0.461920516739313 }, Flags = { Linear = true } },
            [1031] = { 0.463221840524035, LH = { 1030.67, 0.462580890003201 }, RH = { 1031.33, 0.463942760662924 }, Flags = { Linear = true } },
            [1032] = { 0.465406447005516, LH = { 1031.67, 0.464685526866627 }, RH = { 1032.33, 0.466209723915238 }, Flags = { Linear = true } },
            [1033] = { 0.46784061945922, LH = { 1032.67, 0.467037342549498 }, RH = { 1033.33, 0.468717898105053 }, Flags = { Linear = true } },
            [1034] = { 0.470499039598109, LH = { 1033.67, 0.469621760952276 }, RH = { 1034.33, 0.47145390070922 }, Flags = { Linear = true } },
            [1035] = { 0.473392558116627, LH = { 1034.67, 0.472437697005516 }, RH = { 1035.33, 0.474414259505516 }, Flags = { Linear = true } },
            [1036] = { 0.476488622931442, LH = { 1035.67, 0.475466921542553 }, RH = { 1036.33, 0.477577164598109 }, Flags = { Linear = true } },
            [1037] = { 0.479787234042553, LH = { 1036.67, 0.478698692375887 }, Flags = { Linear = true } }
         }
      }
   }
}


Fusion may or may not crash—there's a potential feedback loop. Oh, and the keyframes begin at frame 1001, so adjust your global range if you want to see my own tracking. Or you can just retrack it yourself from whatever your default global in is.

The CoordinateScan camera is used to watch the sphere, then world coordinates are created from that camera in the Renderer3D. I copy those coordinates to RGB so the Probe modifier can sample them, track the sphere, and connect the Center of the Probe to the Offset Position of the tracker.

There's a bit of a bug in Probe. When you first create one, the channel it samples is clamped. So you usually have to connect a second control to it, then remove the first one and Connect To again to get access to its full range. In this case, you'll find the RenderCam's Target Position controls connected to the Probe.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

cyberfyber

  • Posts: 39
  • Joined: Wed Mar 03, 2021 4:56 am
  • Real Name: Luis Diaz

Re: Setting Camera3d center point upon that of another objec

PostSat Apr 17, 2021 8:07 pm

Bryan Ray wrote: -----------------


Thank you Bryan for being so helpful.

Admittedly, half of this is Japanese to me. Mind you, I'm using the free version and am still a noob in numerous respects. But learning quickly. :-)

Went about and found some pointers at a youtube vid or two. Will investigate those further.

Also, I didn't find "WorldCoord buffer". However, I did come across 'World Position' under Output Channels.

Insane how in-depth this all gets. Looking up 'World Position' in the tools manual leads me to other supposed fun tools like 'Z to world' and other items. Got lots of learning to do. :D
DR 18 Studio
Win 11 / Ryzen 5 5950x / B550 Tomahawk / 128 GB Ram / 2 x m.2 nvme drives / 1 x HDD / 1 x SSD / EVGA 850w / RTX 3070TI
Offline

Sander de Regt

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

Re: Setting Camera3d center point upon that of another objec

PostSat Apr 17, 2021 9:13 pm

Bryan's breadth of knowledge can be a bit overwhelming. If you're starting out, I'd focus on this first

Generally, though, the simplest way to get a revolving camera is to make sure your point of rotation is at world [0,0,0]—Translate the entire scene if you have to—then use a Transform3D to rotate the camera. It will revolve around that center location.


It's by far the easiest to set up.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

cyberfyber

  • Posts: 39
  • Joined: Wed Mar 03, 2021 4:56 am
  • Real Name: Luis Diaz

Re: Setting Camera3d center point upon that of another objec

PostSat Apr 17, 2021 11:03 pm

Sander de Regt wrote:Bryan's breadth of knowledge can be a bit overwhelming. If you're starting out, I'd focus on this first

Generally, though, the simplest way to get a revolving camera is to make sure your point of rotation is at world [0,0,0]—Translate the entire scene if you have to—then use a Transform3D to rotate the camera. It will revolve around that center location.


It's by far the easiest to set up.


Yeah, not sure, but I think that might be what I'm doing at the moment. Visually centering the 3d Camera's Z Pivot Point upon the object then following through on the revolving by changing the Y Rotation.

Kinda lost my train of thought and forgot why I needed the Transform 3d in there. LOL.

Will likely redo the whole thing as I've done often so's to get it into my head. :-)

Thanks! 'and happy to have crossed Bryan's path.
DR 18 Studio
Win 11 / Ryzen 5 5950x / B550 Tomahawk / 128 GB Ram / 2 x m.2 nvme drives / 1 x HDD / 1 x SSD / EVGA 850w / RTX 3070TI
Offline

Sander de Regt

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

Re: Setting Camera3d center point upon that of another objec

PostSun Apr 18, 2021 8:20 am

Your approach works fine if you have a single rotation you need to make, but because you're changing/using the pivot point of the camera, you paint yourself in a corner if you'd want to animate the rotation of the camera itself in addition to the revolution around the object.

What I mean is: imagine your camera rotating around the earth. You're looking down towards Earth, pivot point is at Earth's center. Rotate the camera and yes, your camera will revolve around the earth, but...

What if there was a spacecraft taking of from earth, coming towards your camera and moving past it?
If you want to follow that spacecraft with your camera by panning, you're out of luck. Because the pivot is at the center of earth the rotation of the camera will be HUGE and there's no easy way to achieve what you're looking for. By using the Transform3D you can seperate the rotation of the camera (like you would have on a tripod head, panning, tilting etc) with the revolution around the object (like you would achieve in real life with tracks or a dolly or a crane). By doing it straight in the camera node, you are limiting yourself. This might not be a problem for your current use case, but it is something worth paying attention to.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

cyberfyber

  • Posts: 39
  • Joined: Wed Mar 03, 2021 4:56 am
  • Real Name: Luis Diaz

Re: Setting Camera3d center point upon that of another objec

PostSun Apr 18, 2021 2:33 pm

Sander de Regt wrote:Your approach works fine if you have a single rotation you need to make, but because you're changing/using the pivot point of the camera, you paint yourself in a corner if you'd want to animate the rotation of the camera itself in addition to the revolution around the object.



Aaaah, yes. I'd have gotten to that point soon enough. That is, wanting to circumnavigate the object in the way you've described.
Thanks for that! :D

Taking a stab at this project a little everyday whilst drilling into my mind all the other things I'm trying to learn about DR.
DR 18 Studio
Win 11 / Ryzen 5 5950x / B550 Tomahawk / 128 GB Ram / 2 x m.2 nvme drives / 1 x HDD / 1 x SSD / EVGA 850w / RTX 3070TI

Return to Fusion

Who is online

Users browsing this forum: No registered users and 24 guests