Welcome to WSL!

New to the forum? Please read this and this.

Renderer3D Software Renderer Imageplanes Jitter

Moderator: Chad

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Renderer3D Software Renderer Imageplanes Jitter

#1

Post by UserNoah »

Fusion version:

9 - 17

OS and version:

Windows 10 20H2


Description of the bug:
Imageplane3Ds and Shape3Ds will jitter on certain parts when final rendering. This is not visible in interactive sessions. This definitely happens on Shape3D Planes but I'm pretty sure I've seen this happen on Spheres as well. OpenGL Renderer does not suffer the same issue.
Video of the issue:



Severity (Trivial, Minor, Major, Critical)

Major as OpenGL Render mode does not support all blending modes and is very slow with usable AA.

Steps to reproduce:
Create an Imageplane3D, attach any Image (for example a Fast Noise) and create any kind of camera movement. Render this to disk using the Software renderer on the Renderer3D.


Please, if possible, provide a Fusion setup to help demonstrate the behaviour, either as an attachment or between [code] tags:
  1. {
  2.     Tools = ordered() {
  3.         Camera3D1_1 = Camera3D {
  4.             NameSet = true,
  5.             CustomData = {
  6.                 Settings = {
  7.                     [1] = {
  8.                         Tools = ordered() {
  9.                             Camera3D1 = Camera3D {
  10.                                 Inputs = {
  11.                                     ApertureW = Input { Value = 0.831496062992126 },
  12.                                     AoV = Input { Value = 19.2642683071402 },
  13.                                     ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
  14.                                     ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  15.                                     ApertureH = Input { Value = 0.467716535433071 },
  16.                                     FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
  17.                                     ["MtlStdInputs.MaterialID"] = Input { Value = 1 }
  18.                                 },
  19.                                 Name = "Camera3D1",
  20.                                 CtrlWZoom = false,
  21.                                 NameSet = true,
  22.                                 ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
  23.                                 CustomData = {
  24.                                 }
  25.                             }
  26.                         }
  27.                     },
  28.                     [6] = {
  29.                         Tools = ordered() {
  30.                             Camera3D1 = Camera3D {
  31.                                 Inputs = {
  32.                                     FLength = Input { Value = 49.0568334445481 },
  33.                                     ["Transform3DOp.Translate.Z"] = Input { Expression = "self.ImageInput.Metadata.Translate.Z" },
  34.                                     ImagePlaneEnabled = Input { Value = 0 },
  35.                                     AoV = Input {
  36.                                         Value = 19.2642683071402,
  37.                                         Expression = "self.ImageInput.Metadata.RSCameraFOV or self.ImageInput.Metadata['rs/camera/fov']"
  38.                                     },
  39.                                     AovType = Input { Value = 1 },
  40.                                     ["Transform3DOp.Rotate.Y"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Y" },
  41.                                     ApertureH = Input { Value = 0.9 },
  42.                                     FilmGate = Input { Value = FuID { "HD" } },
  43.                                     ["Transform3DOp.Rotate.X"] = Input { Expression = "self.ImageInput.Metadata.Rotate.X" },
  44.                                     ["Transform3DOp.Translate.X"] = Input { Expression = "self.ImageInput.Metadata.Translate.X" },
  45.                                     PlaneOfFocus = Input { Expression = "self.ImageInput.Metadata.RSCameraDOFFocusDistance or self.ImageInput.Metadata['rs/camera/DOFFocusDistance']" },
  46.                                     FilmBack = Input { Value = 1 },
  47.                                     ["Transform3DOp.Rotate.RotOrder"] = Input { Value = FuID { "ZXY" } },
  48.                                     ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
  49.                                     ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
  50.                                     ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  51.                                     ["Transform3DOp.Translate.Y"] = Input { Expression = "self.ImageInput.Metadata.Translate.Y" },
  52.                                     ApertureW = Input { Value = 1.6 },
  53.                                     ["Transform3DOp.Rotate.Z"] = Input { Expression = "self.ImageInput.Metadata.Rotate.Z" }
  54.                                 },
  55.                                 CtrlWZoom = false,
  56.                                 NameSet = true,
  57.                                 ViewInfo = OperatorInfo { Pos = { 387, 145 } },
  58.                                 CustomData = {
  59.                                 }
  60.                             }
  61.                         }
  62.                     }
  63.                 }
  64.             },
  65.             Inputs = {
  66.                 ["Transform3DOp.Translate.X"] = Input {
  67.                     SourceOp = "Camera3D1_1XOffset",
  68.                     Source = "Value",
  69.                 },
  70.                 ["Transform3DOp.Translate.Y"] = Input {
  71.                     SourceOp = "Camera3D1_1YOffset",
  72.                     Source = "Value",
  73.                 },
  74.                 ["Transform3DOp.Translate.Z"] = Input {
  75.                     SourceOp = "Camera3D1_1ZOffset",
  76.                     Source = "Value",
  77.                 },
  78.                 AoV = Input { Value = 19.2642683071402, },
  79.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
  80.                 FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
  81.                 ApertureW = Input { Value = 0.831496062992126, },
  82.                 ApertureH = Input { Value = 0.467716535433071, },
  83.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
  84.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
  85.             },
  86.             ViewInfo = OperatorInfo { Pos = { 55, 115.5 } },
  87.         },
  88.         Camera3D1_1XOffset = BezierSpline {
  89.             SplineColor = { Red = 250, Green = 132, Blue = 49 },
  90.             KeyFrames = {
  91.                 [12] = { 1.88108083393201, RH = { 33.6666666666667, 1.88108083393201 }, Flags = { Linear = true } },
  92.                 [77] = { 1.88108083393201, LH = { 55.3333333333333, 1.88108083393201 }, RH = { 94.9981997013092, 1.88108083393201 }, Flags = { Linear = true } },
  93.                 [131] = { 1.80688762664795, LH = { 113.001800298691, 1.80688762664795 }, RH = { 145.332860385707, 1.80688762664795 } },
  94.                 [174] = { 1.7851537, LH = { 159.665529868507, 1.78920175900442 }, RH = { 192.331499695778, 1.779976878553 } },
  95.                 [229] = { 1.6992467, LH = { 210.668511203016, 1.73416689107685 }, RH = { 244.328985905773, 1.67004606481034 } },
  96.                 [275] = { 1.5697456, LH = { 259.665651419209, 1.60784048854117 }, RH = { 305.991861817169, 1.49275298988761 } },
  97.                 [368] = { 1.27647972106934, LH = { 337.032947877611, 1.44592480888718 }, RH = { 462.460059076637, 0.759614130786285 } },
  98.                 [650] = { -1.13660015055779, LH = { 556.397316305887, -0.111331461624919 }, RH = { 946.362541912717, -4.38278095226033 } },
  99.                 [1535] = { -9.17599964141846, LH = { 1239.37109504045, -9.17599964141846 } }
  100.             }
  101.         },
  102.         Camera3D1_1YOffset = BezierSpline {
  103.             SplineColor = { Red = 252, Green = 206, Blue = 47 },
  104.             KeyFrames = {
  105.                 [2] = { -0.6872796, RH = { 9.66666666666667, -0.874494066666667 } },
  106.                 [25] = { -1.248923, LH = { 17.3341001272202, -1.2523685587344 }, RH = { 60.3333333333333, -1.23304188006592 } },
  107.                 [131] = { -1.20127964019775, LH = { 95.6666666666667, -1.21716076013183 }, RH = { 145.333202577615, -1.20127964019775 }, Flags = { Linear = true } },
  108.                 [174] = { -0.821575825913118, LH = { 159.668100811847, -0.87336018789663 }, RH = { 238.659847542384, -0.587945313517294 } },
  109.                 [368] = { -0.529496192932129, LH = { 303.378444487422, -0.630226780462706 }, RH = { 461.993154421282, -0.38298306630878 } },
  110.                 [650] = { -0.298601799856561, LH = { 555.995129556888, -0.321652859820553 }, RH = { 765.676463704975, -0.270236619534342 } },
  111.                 [997] = { 0.273, LH = { 881.336245498043, 0.273170295954699 } }
  112.             }
  113.         },
  114.         Camera3D1_1ZOffset = BezierSpline {
  115.             SplineColor = { Red = 254, Green = 56, Blue = 46 },
  116.             KeyFrames = {
  117.                 [2] = { 6.14, RH = { 9.66666666666666, 6.14 } },
  118.                 [25] = { 2.15770556672118, LH = { 12.7865137087651, 2.4205186473696 }, RH = { 47.2, 1.68 } },
  119.                 [77] = { 1.99596725137634, LH = { 59.668741400694, 1.87460020706496 }, RH = { 94.9981992615613, 2.12200473646645 } },
  120.                 [131] = { 2.90000057220459, LH = { 113.001800298691, 2.90000057220459 }, RH = { 145.337322690496, 2.90000057220459 } },
  121.                 [174] = { 4.19635328090227, LH = { 159.668100712023, 3.92142461757212 }, RH = { 238.652118375825, 5.43657414272753 } },
  122.                 [368] = { 6.3040714263916, LH = { 303.144115398834, 5.92720650715813 }, RH = { 580.75410156339, 7.5403433467655 } },
  123.                 [998] = { 6.3040714263916, LH = { 788.000020350705, 6.3040714263916 } }
  124.             }
  125.         },
  126.         FastNoise6 = FastNoise {
  127.             Inputs = {
  128.                 GlobalIn = Input { Value = 1, },
  129.                 Width = Input { Value = 1920, },
  130.                 Height = Input { Value = 1080, },
  131.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  132.                 Detail = Input { Value = 8.25, },
  133.                 Contrast = Input { Value = 2.678, },
  134.                 XScale = Input { Value = 20, },
  135.             },
  136.             ViewInfo = OperatorInfo { Pos = { 660, -49.5 } },
  137.         },
  138.         PipeRouter1 = PipeRouter {
  139.             Inputs = {
  140.                 Input = Input {
  141.                     SourceOp = "FastNoise6",
  142.                     Source = "Output",
  143.                 },
  144.             },
  145.             ViewInfo = PipeRouterInfo { Pos = { 654.756, 143.292 } },
  146.         },
  147.         Merge3D21 = Merge3D {
  148.             Inputs = {
  149.                 SceneInput1 = Input {
  150.                     SourceOp = "Camera3D1_1",
  151.                     Source = "Output",
  152.                 },
  153.                 SceneInput3 = Input {
  154.                     SourceOp = "Shape3D5",
  155.                     Source = "Output",
  156.                 },
  157.             },
  158.             ViewInfo = OperatorInfo { Pos = { 880, 115.5 } },
  159.         },
  160.         ImagePlane3D3 = ImagePlane3D {
  161.             Inputs = {
  162.                 ["Transform3DOp.Translate.X"] = Input { Value = 0.218, },
  163.                 ["Transform3DOp.Translate.Y"] = Input { Value = -0.21, },
  164.                 ["Transform3DOp.Scale.X"] = Input { Value = 5, },
  165.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 19, },
  166.                 MaterialInput = Input {
  167.                     SourceOp = "PipeRouter1",
  168.                     Source = "Output",
  169.                 },
  170.                 ["MtlStdInputs.MaterialID"] = Input { Value = 30, },
  171.             },
  172.             ViewInfo = OperatorInfo { Pos = { 654.756, 247.5 } },
  173.         },
  174.         Shape3D5 = Shape3D {
  175.             Inputs = {
  176.                 ["Transform3DOp.Translate.X"] = Input { Value = 0.218, },
  177.                 ["Transform3DOp.Translate.Y"] = Input { Value = -0.21, },
  178.                 MaterialInput = Input {
  179.                     SourceOp = "PipeRouter1",
  180.                     Source = "Output",
  181.                 },
  182.                 ["MtlStdInputs.MaterialID"] = Input { Value = 31, },
  183.                 ["SurfacePlaneInputs.SizeLock"] = Input { Value = 0, },
  184.                 ["SurfacePlaneInputs.Width"] = Input { Value = 5, },
  185.                 ["SurfacePlaneInputs.Height"] = Input { Value = 2.8, },
  186.                 ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 1, },
  187.                 ["SurfacePlaneInputs.SubdivisionHeight"] = Input { Value = 1, },
  188.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 20, }
  189.             },
  190.             ViewInfo = OperatorInfo { Pos = { 880, 247.5 } },
  191.         },
  192.         Renderer3D3_3 = Renderer3D {
  193.             CustomData = {
  194.                 ToolVersion = 2,
  195.             },
  196.             Inputs = {
  197.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
  198.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
  199.                 ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
  200.                 ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
  201.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
  202.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
  203.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
  204.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
  205.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
  206.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
  207.                 GlobalIn = Input { Value = 1, },
  208.                 Width = Input { Value = 3840, },
  209.                 Height = Input { Value = 2160, },
  210.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  211.                 SceneInput = Input {
  212.                     SourceOp = "Merge3D21",
  213.                     Source = "Output",
  214.                 },
  215.             },
  216.             ViewInfo = OperatorInfo { Pos = { 1100, 115.5 } },
  217.         },
  218.         Saver1 = Saver {
  219.             CtrlWZoom = false,
  220.             Inputs = {
  221.                 ProcessWhenBlendIs00 = Input { Value = 0, },
  222.                 Clip = Input {
  223.                     Value = Clip {
  224.                         Filename = "comp:\\SoftwareRendererBug\\Bugreport.jpg",
  225.                         FormatID = "JpegFormat",
  226.                         Length = 0,
  227.                         Saving = true,
  228.                         TrimIn = 0,
  229.                         ExtendFirst = 0,
  230.                         ExtendLast = 0,
  231.                         Loop = 1,
  232.                         AspectMode = 0,
  233.                         Depth = 0,
  234.                         GlobalStart = -2000000000,
  235.                         GlobalEnd = 0
  236.                     },
  237.                 },
  238.                 OutputFormat = Input { Value = FuID { "JpegFormat" }, },
  239.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  240.                 Input = Input {
  241.                     SourceOp = "Renderer3D3_3",
  242.                     Source = "Output",
  243.                 },
  244.                 ["JpegFormat.Quality"] = Input { Value = 97, },
  245.             },
  246.             ViewInfo = OperatorInfo { Pos = { 1210, 115.5 } },
  247.         }
  248.     }
  249. }

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Re: Renderer3D Software Renderer Imageplanes Jitter

#2

Post by UserNoah »

This has been replicated by the support and passed on to the devs.

User avatar
JPDoc
Fusionista
Posts: 287
Joined: Tue Sep 02, 2014 8:26 am
Answers: 1
Been thanked: 1 time

Re: Renderer3D Software Renderer Imageplanes Jitter

#3

Post by JPDoc »

Can I get some clarification on this? Are you saying that this jitter has only started with the upgrade to Windows 10 20H2 and now happens in fu9-17? Or has it been there previously and no one noticed (seems unlikely)?

My concern is that if it's a win10 20H2 thing and the developers fix it for fu17 it will still be there in fu9, which as far as I know is still used by the majority of professional VFX users due to the serious UI issues with fu17. Which could force us all to use fu17 at least if using the software renderer. This could be a serious problem for me.

Thanks in advance.

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Re: Renderer3D Software Renderer Imageplanes Jitter

#4

Post by UserNoah »

I was only able to pinpoint this issue on a recent project which required a lot of closeup imageplanes, but I'm pretty sure that this is the same issue that I had a year ago when I was using Fusion 16 at a company. I created a sphere in Fusion to act as a star backdrop in a space sequence and sometimes had this weird jittering that I couldn't fix with a clear solution. Back then I thought it might be an issue because the sphere was very huge as it had to encompass planets kilometers away. Apparently at some point I switched to OpenGL Renderer without realizing that this was the fix. Back then I believe my computer there was running a Windows 10 version from March 2019 or so. So I don't believe this is a new issue from Windows. If I find the time I might test this on my old mac to see if it's there, too.

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Re: Renderer3D Software Renderer Imageplanes Jitter

#5

Post by UserNoah »

Just tested this on a Mac and it's the same. So it's not a Windows-specific issue but most likely a Fusion bug.
Just to make sure I tested this again in F9 and the bug was present. Definitely unlikely that nobody had reported that before, but who knows. Maybe it was reported but they didn't fix it since 9. I simply report every bug I see, which means that I'm literally writing weekly bug reports, most of these bugs are also in Fusion 9.

User avatar
ShadowMaker SdR
Fusionator
Posts: 1091
Joined: Sun Sep 21, 2014 6:17 am
Answers: 10
Been thanked: 23 times

Re: Renderer3D Software Renderer Imageplanes Jitter

#6

Post by ShadowMaker SdR »

One of the things that can cause render issues from time to time is the subdivison level (or lack thereof) of image planes/geometry in Fusion.
What level of subdivison are your planes set to?

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Re: Renderer3D Software Renderer Imageplanes Jitter

#7

Post by UserNoah »

They are at the default 10. This is something that I've noticed too and also written into the bug report to the support. It's less visible when increasing the subdivision level. But for it to completely disappear you would need an insane level of subdivisions which increases rendertimes and RAM usage. On a flat plane, a single quad should be enough to display a texture properly. The way it does in OpenGL/interactive Software Renderer.

User avatar
UserNoah
Fusioneer
Posts: 194
Joined: Mon Mar 09, 2020 11:43 am
Been thanked: 6 times
Contact:

Re: Renderer3D Software Renderer Imageplanes Jitter

#8

Post by UserNoah »

Just tested this in 17.1 after Chad mentioned the changes to the 3D system.
The bug is still present, but now it's even visible in an interactive session, so no more surprises when rendering, you'll see what you get.

User avatar
MorphoV
Posts: 3
Joined: Sat Jun 15, 2019 2:47 am

Re: Renderer3D Software Renderer Imageplanes Jitter

#9

Post by MorphoV »

The bug is still here with 17.2.1 :-(
Thank you guys for the subdivision workaround.