Jump to: Board index » General » Fusion

Network-Node like design

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

jonaswoehl

  • Posts: 2
  • Joined: Fri Feb 14, 2020 9:57 am
  • Real Name: Jonas Woehl

Network-Node like design

PostFri Feb 14, 2020 10:53 am

Dear forum,

I'm quite new to fusion and currently working on a project where I need to 3d animate a network like scene.
The aim is to have two network-node like objects which are connected by a straight line. If the objects move away from each other the line should adapt its orientation and length so the nodes are always connected (example image attached).
I could do this with three Shape3D-nodes but then i would need to keyframe every single frame. I feel like there is an easier way to do this.

Has anyone already did something similar to this and can help me out with an approach?

Thank you in advance and all the best,
Jonas
Attachments
0.jpeg
Example of network structure
0.jpeg (89.14 KiB) Viewed 90 times
Offline
User avatar

Bryan Ray

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

Re: Network-Node like design

PostFri Feb 14, 2020 6:05 pm

The Connect3D node in the Krokodove plug-in suite does that. The caveat is that Krokodove, being a plug-in, is only available for Fusion or Resolve Studio. Furthermore, I don't think it's been compiled for Mac or Linux in Fusion 16, but it works on all three platforms in Fusion Studio 9.
Bryan Ray
http://www.bryanray.name
http://www.musevfx.com
Offline
User avatar

Bryan Ray

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

Re: Network-Node like design

PostFri Feb 14, 2020 6:07 pm

Or if your scene is relatively simple, you could use Ribbon3D, which has a 3d widget at each end. Link the Start and End to the nodes you want to connect, and you're there.
Bryan Ray
http://www.bryanray.name
http://www.musevfx.com
Offline

jonaswoehl

  • Posts: 2
  • Joined: Fri Feb 14, 2020 9:57 am
  • Real Name: Jonas Woehl

Re: Network-Node like design

PostSat Feb 15, 2020 9:40 am

Hello Bryan,

thank you! Ribbon3D brought me a huge step closer to achieving my goal. I still have a little problem with creating a continuous straight line though.
My approach is currently the following:

Code: Select all
{
   Tools = ordered() {
      Merge3D1 = Merge3D {
         Inputs = {
            ["Transform3DOp.Translate.Z"] = Input { Value = 0.380303664565014, },
            SceneInput1 = Input {
               SourceOp = "Replicate3D1",
               Source = "Data3D",
            },
            SceneInput2 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput4 = Input {
               SourceOp = "Shape3D1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 411.333, 126.03 } },
      },
      Camera3D1 = Camera3D {
         CtrlWZoom = false,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.444587428466011, },
            ["Transform3DOp.Translate.Y"] = Input { Value = -0.107684318316392, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 2.15870276599301, },
            AoV = Input { Value = 38.3112248908793, },
            FLength = Input { Value = 17.1, },
            ["Stereo.Mode"] = Input { Value = FuID { "Mono" }, },
            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 = { 386, 164.606 } },
      },
      MediaOut1 = MediaOut {
         Inputs = {
            Index = Input { Value = "0", },
            Input = Input {
               SourceOp = "Renderer3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 696, 122.561 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = { ToolVersion = 2, },
         Inputs = {
            GlobalOut = Input { Value = 119, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["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 = { 542, 126.03 } },
         SubInputsData = {
            RendererOpenGL = {
               Version = 1
            }
         }
      },
      Replicate3D1 = Replicate3D {
         Inputs = {
            Alignment = Input { Value = 2, },
            Destination = Input {
               SourceOp = "Ribbon3D1",
               Source = "Output",
            },
            Input1 = Input {
               SourceOp = "Shape3D2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 428, 60.0303 } },
      },
      Shape3D2 = Shape3D {
         Inputs = {
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 9, },
            ["SurfaceCubeInputs.Width"] = Input { Value = 0.01, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 0.01, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 8, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 4, },
            ["SurfacePlaneInputs.SizeLock"] = Input { Value = 0, },
            ["SurfacePlaneInputs.Width"] = Input { Value = 0.01, },
            ["SurfacePlaneInputs.Height"] = Input { Value = 0.01, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 7, }
         },
         ViewInfo = OperatorInfo { Pos = { 628.667, 36.0606 } },
      },
      Shape3D1_1 = Shape3D {
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["SurfaceConeInputs.ObjectID.ObjectID"] = Input { Value = 5, },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Publish5",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Publish6",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 0.05, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 6, }
         },
         ViewInfo = OperatorInfo { Pos = { 182.667, 98.2727 } },
      },
      Publish4 = PublishNumber {
         Inputs = {
            Value = Input { Value = 0.977161055196377, },
         },
      },
      Publish5 = PublishNumber {
      },
      Publish6 = PublishNumber {
         CtrlWZoom = false,
      },
      Shape3D1 = Shape3D {
         Inputs = {
            ["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["SurfaceConeInputs.ObjectID.ObjectID"] = Input { Value = 5, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["Transform3DOp.Translate.X"] = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Y"] = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.Radius"] = Input { Value = 0.05, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 6, }
         },
         ViewInfo = OperatorInfo { Pos = { 173.333, 47.9697 } },
      },
      Publish1 = PublishNumber {
         Inputs = {
            Value = Input { Value = 0.0401614795828892, },
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = -0.370402623352106, },
         },
      },
      Publish3 = PublishNumber {
         Inputs = {
            Value = Input { Value = 0.557195470917882, },
         },
      },
      Ribbon3D1 = Ribbon3D {
         Inputs = {
            NumberOfLines = Input { Value = 1, },
            SubdivisionLevel = Input { Value = 35, },
            ["Start.Nest"] = Input { Value = 1, },
            ["Start.X"] = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            ["Start.Y"] = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            ["Start.Z"] = Input {
               SourceOp = "Publish3",
               Source = "Value",
            },
            ["End.Nest"] = Input { Value = 1, },
            ["End.X"] = Input {
               SourceOp = "Publish4",
               Source = "Value",
            },
            ["End.Y"] = Input {
               SourceOp = "Publish5",
               Source = "Value",
            },
            ["End.Z"] = Input {
               SourceOp = "Publish6",
               Source = "Value",
            },
            ["ObjectID.ObjectID"] = Input { Value = 3, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 429.333, -15.3939 } },
      }
   }
}


My problem is here that to make the line continuous I can either

- increase the subdivisions slider on the Ribbon3D-node (which is not too nice since the gaps between the lines can become visible when the two objects move more away from each other)
- or increase the width of the plane shape in the Replicate3D-node input (which is also not good since it then exceeds the outlines of the two shapes to connect

Do you know a less dirty solution I have not found yet?

Thank you in advance and best regards,
Jonas

Return to Fusion

Who is online

Users browsing this forum: No registered users and 7 guests