Jump to: Board index » General » Fusion

Establishing colorspace workflow

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

Lauren Thomas

  • Posts: 39
  • Joined: Sun Aug 06, 2017 3:04 pm
  • Location: Toronto

Establishing colorspace workflow

PostTue Aug 08, 2017 5:18 pm

Hi there!

Hope everyone is having a great day.

This has been causing me some confusion. I am loading 16 and 32 bit EXRs. EXRs are linear by default so when viewing them on an sRGB monitor, they appear darker. In order to get them to display properly, I through them through a Gamut node. Though, I've read around the forums a bit and it seems that this should go before my loader. When i want to perform some color correction, I am technically now working in sRGB but should CC be done in linear? What part of this reasoning is flawed? I am quite new to all of this. What would be the correct set up for what I am trying to do? I've watched/read a number of things on this topic and understand the two color spaces, but it seems counter intuitive to how it is applied in Fusion.

ELI5 talk is welcome and/or pointing me in the right direction.

Thanks!
Offline

Theodor Groeneboom

  • Posts: 327
  • Joined: Fri Jun 26, 2015 12:51 pm

Re: Establishing colorspace workflow

PostTue Aug 08, 2017 5:23 pm

-
Last edited by Theodor Groeneboom on Fri Jan 26, 2018 8:36 pm, edited 1 time in total.
Offline

Lauren Thomas

  • Posts: 39
  • Joined: Sun Aug 06, 2017 3:04 pm
  • Location: Toronto

Re: Establishing colorspace workflow

PostTue Aug 08, 2017 5:42 pm

Hi!

Thanks for the speedy reply, friend! I am definitely rendering in linear. I made sure of that. I set the viewer's display LUT to Gamma view LUT, went into the options and set that to sRGB. That gets things looking correctly. There was no OCIO Display LUT option, and subsequently, I could not find the rec709 setting either. I am assuming I am not doing that part correctly?

With the viewer LUT changed, I removed my gamut nodes and tried a test render. A test go without rebaking gamut is much darker than the display LUT, and then putting a gamut node before my saver might be right, I obviously would have to redo all of my color correction. Either way, I am no longer sure of what I'm looking at. haha.

Pardon the 5 year old questions but I have to go full dumb-dumb on this in order to be able to understand. lol.
- Lauren Thomas
Offline

Theodor Groeneboom

  • Posts: 327
  • Joined: Fri Jun 26, 2015 12:51 pm

Re: Establishing colorspace workflow

PostTue Aug 08, 2017 6:44 pm

-
Last edited by Theodor Groeneboom on Fri Jan 26, 2018 8:34 pm, edited 1 time in total.
Offline

Lauren Thomas

  • Posts: 39
  • Joined: Sun Aug 06, 2017 3:04 pm
  • Location: Toronto

Re: Establishing colorspace workflow

PostTue Aug 08, 2017 7:07 pm

Hi again,

Thanks for the followup and the link. It's becoming a bit clearer. I'm not working with any type of footage at all, just doing some post corrections to render passes from a 3D app. I'm just a humble 3D modeler who misses her polygons. haha.
- Lauren Thomas
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Establishing colorspace workflow

PostTue Aug 08, 2017 8:27 pm

Here's a quick setup for post corrections from linear passes from your 3D app. Matching the display LUT with the Gamut color space will keep them in sync.

Code: Select all
{
   Tools = ordered() {
      Saver1 = Saver {
         CtrlWZoom = false,
         Inputs = {
            ProcessWhenBlendIs00 = Input { Value = 0, },
            Clip = Input {
               Value = Clip {
                  Length = 0,
                  Saving = true,
                  TrimIn = 0,
                  ExtendFirst = 0,
                  ExtendLast = 0,
                  Loop = 1,
                  AspectMode = 0,
                  Depth = 0,
                  GlobalStart = -2000000000,
                  GlobalEnd = 0,
               },
            },
            OutputFormat = Input { Value = FuID { "TargaFormat", }, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            Input = Input {
               SourceOp = "Gamut1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 2535.36, 110.895, }, },
      },
      Gamut1 = GamutConvert {
         Inputs = {
            OutputSpace = Input { Value = FuID { "Rec709", }, },
            Input = Input {
               SourceOp = "HueCurves2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 2321.48, 101.545, }, },
      },
      Note1_1 = Note {
         Inputs = {
            Comments = Input { Value = "The Gamut converts the linear image to Rec. 709 so the viewer would not have the LUT enabled when viewing tools after this. ", },
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 2251.35, -98.316, },
            Flags = {
               Expanded = true,
            },
            Size = { 196, 179.3, },
         },
      },
      HueCurves2 = HueCurves {
         Inputs = {
            Hue = Input {
               SourceOp = "HueCurves2Hue",
               Source = "Value",
            },
            Sat = Input {
               SourceOp = "HueCurves2Sat",
               Source = "Value",
            },
            Lum = Input {
               SourceOp = "HueCurves2Lum",
               Source = "Value",
            },
            Red = Input {
               SourceOp = "HueCurves2Red",
               Source = "Value",
            },
            Green = Input {
               SourceOp = "HueCurves2Green",
               Source = "Value",
            },
            Blue = Input {
               SourceOp = "HueCurves2Blue",
               Source = "Value",
            },
            RedSuppress = Input {
               SourceOp = "HueCurves2RedSuppress",
               Source = "Value",
            },
            GreenSuppress = Input {
               SourceOp = "HueCurves2GreenSuppress",
               Source = "Value",
            },
            BlueSuppress = Input {
               SourceOp = "HueCurves2BlueSuppress",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "ColorCorrector3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1863.59, 100.376, }, },
         Tools = {
            HueCurves2Hue = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 204, Green = 0, Blue = 204, },
               NameSet = true,
            },
            HueCurves2Sat = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 204, Green = 204, Blue = 0, },
               NameSet = true,
            },
            HueCurves2Lum = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 204, Green = 204, Blue = 204, },
               NameSet = true,
            },
            HueCurves2Red = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 204, Green = 42, Blue = 42, },
               NameSet = true,
            },
            HueCurves2Green = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 0, Green = 204, Blue = 0, },
               NameSet = true,
            },
            HueCurves2Blue = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 54, Green = 54, Blue = 204, },
               NameSet = true,
            },
            HueCurves2RedSuppress = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 204, Green = 102, Blue = 102, },
               NameSet = true,
            },
            HueCurves2GreenSuppress = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 102, Green = 204, Blue = 102, },
               NameSet = true,
            },
            HueCurves2BlueSuppress = LUTBezier {
               SmoothEndsTransition = true,
               KeyColorSplines = {
                  [0] = {
                     [0] = { 1, RH = { 0.333, 1, }, },
                     [1] = { 1, LH = { 0.667, 1, }, RH = { 1.333, 1, }, },
                     [2] = { 1, LH = { 1.667, 1, }, RH = { 2.333, 1, }, },
                     [3] = { 1, LH = { 2.667, 1, }, RH = { 3.333, 1, }, },
                     [4] = { 1, LH = { 3.667, 1, }, RH = { 4.333, 1, }, },
                     [5] = { 1, LH = { 4.667, 1, }, RH = { 5.333, 1, }, },
                     [6] = { 1, LH = { 5.667, 1, }, },
                  },
               },
               SplineColor = { Red = 134, Green = 134, Blue = 204, },
               NameSet = true,
            },
         },
      },
      Note1 = Note {
         Inputs = {
            Comments = Input { Value = "View these nodes with the LUT enabled in the viewer.  In this example I'm rendering to Rec.709.  So the viewer LUT would be set to Rec.709.  ", },
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1718.39, -101.822, },
            Flags = {
               Expanded = true,
            },
            Size = { 196, 179.3, },
         },
      },
      ColorCorrector3 = ColorCorrector {
         Inputs = {
            ColorRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1, },
                           { 0.4, 0.2, },
                           { 0.6, 0, },
                           { 1, 0, },
                        },
                     },
                     {
                        Points = {
                           { 0, 0, },
                           { 0.4, 0, },
                           { 0.6, 0.2, },
                           { 1, 1, },
                        },
                     },
                  },
               },
            },
            HistogramIgnoreTransparent = Input { Value = 1, },
            Input = Input {
               SourceOp = "LinearEXR",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1753.59, 100.376, }, },
      },
      LinearEXR = Loader {
         Clips = {
         },
         NameSet = true,
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1643.59, 100.376, }, },
      },
   },
}
Offline

Lauren Thomas

  • Posts: 39
  • Joined: Sun Aug 06, 2017 3:04 pm
  • Location: Toronto

Re: Establishing colorspace workflow

PostWed Aug 09, 2017 8:09 pm

Thanks Ryan! This is great.
- Lauren Thomas
Offline
User avatar

KonradWelz

  • Posts: 56
  • Joined: Sun Feb 23, 2014 4:26 pm
  • Location: Bracknell, UK

Re: Establishing colorspace workflow

PostWed Aug 09, 2017 8:24 pm

For a great overview and explanation of working in Linear Space I can really recommend these two articles:

http://www.comp-fu.com/2012/02/linear-g ... in-fusion/
and
http://www.comp-fu.com/2012/03/linear-g ... on-part-2/
They include excellent LUTs to properly view Linear footage.
Offline

Lauren Thomas

  • Posts: 39
  • Joined: Sun Aug 06, 2017 3:04 pm
  • Location: Toronto

Re: Establishing colorspace workflow

PostWed Aug 09, 2017 8:26 pm

KonradWelz wrote:For a great overview and explanation of working in Linear Space I can really recommend these two articles:

http://www.comp-fu.com/2012/02/linear-g ... in-fusion/
and
http://www.comp-fu.com/2012/03/linear-g ... on-part-2/
They include excellent LUTs to properly view Linear footage.


Thanks KonradWelz! Someone linked the articles above and I read them yesterday. Your reposting only serves to reinforce how good this information is, so thank you! Last time I didn't bookmark them but this time I did. :)
- Lauren Thomas
Offline
User avatar

Olivier MATHIEU

  • Posts: 865
  • Joined: Thu Aug 04, 2016 1:55 pm
  • Location: Paris/Grenoble, FRANCE

Re: Establishing colorspace workflow

PostSat Mar 17, 2018 10:00 pm

Hello everyone
I'm Resolve User
My Knowledge of colorspace is that it's made of Gamut and a Gamma
Color management is to specify the clips sources colorspace, working colorspace, display colorspace, monitoring colorspace and the rendering colorspace. They can all different from each other.... and still accurate without clipping.
About Fusion, I understand that the working Gamma is linear, but what is the working Gamut ?
Any info about ACES and Fusion ?
Thanks
Resolve Studio 18.6.x & Fusion Studio 18.6.x | MacOS 13.6.x | GUI : 3840 x 2160 | Ntw : 10Gb/s
MacbookPro M2 Max
Offline
User avatar

Florian Hirschmann

  • Posts: 12
  • Joined: Fri Jun 14, 2013 9:04 pm

Re: Establishing colorspace workflow

PostMon Mar 19, 2018 8:51 pm

The Working Gamma is linear but unfortunatley the Color Correction Node works best with material close to Gamma 2.2. With linear Gamma it‘s hard to adjust midtones and highligths unless you convert from linear to Gamma 2.2 before the Color Corrector und to 0.4545454 afterwards.

The working space’s gamut depends an how you import and/or export your files. It can be ACES, Rec709, etc. For working with ACES I prefer to use OCIO inside of Fusion. Works as it should.
Offline
User avatar

michael vorberg

  • Posts: 943
  • Joined: Wed Nov 12, 2014 8:47 pm
  • Location: stuttgart, germany

Re: Establishing colorspace workflow

PostTue Mar 20, 2018 6:15 am

In the color correct you can adjust the ranges of shadows, midtones, highlights to fit better into a linear workflow. The default setting is not very good for that
Offline
User avatar

Bryan Ray

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

Re: Establishing colorspace workflow

PostTue Mar 20, 2018 5:39 pm

Even when you do that, though, it's still terribly difficult to isolate useful ranges while in linear. The Ranges control really needs to be redesigned for current practice. We have a set of macros that do certain tasks in other gamma spaces—sharpening in log, CC and glows in sRGB. I think there are a couple of others.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com

Return to Fusion

Who is online

Users browsing this forum: No registered users and 40 guests