Review: Support python with --exec-prefix and registering Nuke viewer processes


"dbr/Ben" <dbr....@...>
 

I've made a few minor changes, partly to familiarise myself with the
code, partly to say thanks for open-sourcing this extremely useful
project!


First change - there was a hardcoded Nuke path, which meant you
couldn't do "cmake -D Nuke_INSTALL_PATH=/blah". Not sure if there's a
reason this this was hardcoded, but it's a (trivially) nicer than
using the env-variable:

https://github.com/dbr/OpenColorIO/commit/321625205caa1ad9a8735571f617a226493c6b44


Second a slightly less trivial - to support Python installations that
use --exec-prefix to put arch-specific stuff in a separate directory -
before it would fail to compile, complaining "pyconfig.h was not
found" (I guess it's pretty uncommon to use --exec-prefix, as even
PyQT had/has this issue..)

Tested on CentOS, with the exec-prefix'd Python, and OS X 10.6 with
the default system Python, both worked work fine.

https://github.com/dbr/OpenColorIO/commit/131efac091419aaa9d7729ba7f330c241d75917f


Final two commits are to the init.py and menu.py - automagical loading/
menu'ing of the OCIO nodes, and a first attempt at registering
OCIODisplay nodes as Nuke viewer processes.

It adds one process for every display and every transform (e.g "Film1D
(sRGB)", "Log (sRGB)", "Film1D (P3)", "Log (P3)") - seemed like the
most Nuke'ish solution given the limitations of the viewer
customisation.

On that subject, I wonder if it's possible to somehow tie the viewer's
exposure/gamma controls to the OCIODIsplay node.. I suspect not
currently.

https://github.com/dbr/OpenColorIO/commit/0cdf665eba7bd9dbeadcb94d9d446a4424a81303
https://github.com/dbr/OpenColorIO/commit/8151eca9edf3acf027e2a60ea3857f2240af6461


As I said, nothing too exciting.. I'm hoping to integrate OCIO into
the pipeline at work soon, so will almost certainly have more patches/
questions/feature-requests soon!

Oh, I've not signed a CLA yet - these changes seemed trivial enough
for it not to be necessary, but I will do so soon. Let me know if this
is a problem

Anyway, thanks again to everyone involved in this project!
- Ben Dickson


Jeremy Selan <jeremy...@...>
 

Thanks for the commits!

Look great at first glance. (I'll run it all this afternoon to make
sure it works multi-platform, etc). I like all the nuke cleanup, very
sensible.

My one concern is I'm not convinced the pre-filled display nodes at
startup are appropriate in menu.py. Your new code is an excellent
example to point folks in the right direction, but it may a bit too
overbearing to actually create instances for the user at startup.
Would you expect the average facility to use the code, as written? Or,
is this just an example which you would expect people to customize?
Perhaps this function should be in a different file, which the user is
encouraged to customize as needed?

You can link into the viewer's gain/gamma (just make an expression to
Viewer1.gain, Viewer1.gamma), but there's no way to prevent nuke from
applying the cc math when the sliders are moved. In the short term
maybe the foundry could expose monitor options to disable the
gain/gamma math? (In the long terms, there's potential to have nuke
directly ship with builtin OCIO color management)

-- Jeremy

On Tue, Jan 11, 2011 at 4:28 AM, dbr/Ben <dbr....@gmail.com> wrote:
I've made a few minor changes, partly to familiarise myself with the
code, partly to say thanks for open-sourcing this extremely useful
project!


First change - there was a hardcoded Nuke path, which meant you
couldn't do "cmake -D Nuke_INSTALL_PATH=/blah". Not sure if there's a
reason this this was hardcoded, but it's a (trivially) nicer than
using the env-variable:

https://github.com/dbr/OpenColorIO/commit/321625205caa1ad9a8735571f617a226493c6b44


Second a slightly less trivial - to support Python installations that
use --exec-prefix to put arch-specific stuff in a separate directory -
before it would fail to compile, complaining "pyconfig.h was not
found" (I guess it's pretty uncommon to use --exec-prefix, as even
PyQT had/has this issue..)

Tested on CentOS, with the exec-prefix'd Python, and OS X 10.6 with
the default system Python, both worked work fine.

https://github.com/dbr/OpenColorIO/commit/131efac091419aaa9d7729ba7f330c241d75917f


Final two commits are to the init.py and menu.py - automagical loading/
menu'ing of the OCIO nodes, and a first attempt at registering
OCIODisplay nodes as Nuke viewer processes.

It adds one process for every display and every transform (e.g "Film1D
(sRGB)", "Log (sRGB)", "Film1D (P3)", "Log (P3)") - seemed like the
most Nuke'ish solution given the limitations of the viewer
customisation.

On that subject, I wonder if it's possible to somehow tie the viewer's
exposure/gamma controls to the OCIODIsplay node.. I suspect not
currently.

https://github.com/dbr/OpenColorIO/commit/0cdf665eba7bd9dbeadcb94d9d446a4424a81303
https://github.com/dbr/OpenColorIO/commit/8151eca9edf3acf027e2a60ea3857f2240af6461


As I said, nothing too exciting.. I'm hoping to integrate OCIO into
the pipeline at work soon, so will almost certainly have more patches/
questions/feature-requests soon!

Oh, I've not signed a CLA yet - these changes seemed trivial enough
for it not to be necessary, but I will do so soon. Let me know if this
is a problem

Anyway, thanks again to everyone involved in this project!
- Ben Dickson


Malcolm Humphreys <malcolmh...@...>
 

It all looks great other than the ocio_viewer as I would need to disable this for our install.

I think the nuke nodes should only be registered as part of the ocio project initialisation.

Viewer gizmo's are normally a per company/project configuration, maybe it would be better to include this as a separate example gizmo for people to copy in to their setup.

.malcolm

On 12/01/2011, at 6:07 AM, Jeremy Selan wrote:

Thanks for the commits!

Look great at first glance. (I'll run it all this afternoon to make
sure it works multi-platform, etc). I like all the nuke cleanup, very
sensible.

My one concern is I'm not convinced the pre-filled display nodes at
startup are appropriate in menu.py. Your new code is an excellent
example to point folks in the right direction, but it may a bit too
overbearing to actually create instances for the user at startup.
Would you expect the average facility to use the code, as written? Or,
is this just an example which you would expect people to customize?
Perhaps this function should be in a different file, which the user is
encouraged to customize as needed?

You can link into the viewer's gain/gamma (just make an expression to
Viewer1.gain, Viewer1.gamma), but there's no way to prevent nuke from
applying the cc math when the sliders are moved. In the short term
maybe the foundry could expose monitor options to disable the
gain/gamma math? (In the long terms, there's potential to have nuke
directly ship with builtin OCIO color management)

-- Jeremy


On Tue, Jan 11, 2011 at 4:28 AM, dbr/Ben <dbr....@gmail.com> wrote:
I've made a few minor changes, partly to familiarise myself with the
code, partly to say thanks for open-sourcing this extremely useful
project!


First change - there was a hardcoded Nuke path, which meant you
couldn't do "cmake -D Nuke_INSTALL_PATH=/blah". Not sure if there's a
reason this this was hardcoded, but it's a (trivially) nicer than
using the env-variable:

https://github.com/dbr/OpenColorIO/commit/321625205caa1ad9a8735571f617a226493c6b44


Second a slightly less trivial - to support Python installations that
use --exec-prefix to put arch-specific stuff in a separate directory -
before it would fail to compile, complaining "pyconfig.h was not
found" (I guess it's pretty uncommon to use --exec-prefix, as even
PyQT had/has this issue..)

Tested on CentOS, with the exec-prefix'd Python, and OS X 10.6 with
the default system Python, both worked work fine.

https://github.com/dbr/OpenColorIO/commit/131efac091419aaa9d7729ba7f330c241d75917f


Final two commits are to the init.py and menu.py - automagical loading/
menu'ing of the OCIO nodes, and a first attempt at registering
OCIODisplay nodes as Nuke viewer processes.

It adds one process for every display and every transform (e.g "Film1D
(sRGB)", "Log (sRGB)", "Film1D (P3)", "Log (P3)") - seemed like the
most Nuke'ish solution given the limitations of the viewer
customisation.

On that subject, I wonder if it's possible to somehow tie the viewer's
exposure/gamma controls to the OCIODIsplay node.. I suspect not
currently.

https://github.com/dbr/OpenColorIO/commit/0cdf665eba7bd9dbeadcb94d9d446a4424a81303
https://github.com/dbr/OpenColorIO/commit/8151eca9edf3acf027e2a60ea3857f2240af6461


As I said, nothing too exciting.. I'm hoping to integrate OCIO into
the pipeline at work soon, so will almost certainly have more patches/
questions/feature-requests soon!

Oh, I've not signed a CLA yet - these changes seemed trivial enough
for it not to be necessary, but I will do so soon. Let me know if this
is a problem

Anyway, thanks again to everyone involved in this project!
- Ben Dickson


Jeremy Selan <jeremy...@...>
 

Done.

I've checked this into master, with a few changes:
* Nuke_INSTALL_PATH is now NUKE_INSTALL_PATH (all caps)

I know the old value predates this checkin, but now that it's
publicized I figure we should make it all caps to match all the other
CMake configuration options.

* OCIO python module is now put in the global namespace, so it's
available to other scripts (and the script panel).

* The ocio viewer mojo is not executed by default in menu.py. Users
are free to call ocio_populate_menu() though at any time to run the
code though.

-- Jeremy

On Tue, Jan 11, 2011 at 1:21 PM, Malcolm Humphreys
<malcolmh...@mac.com> wrote:
It all looks great other than the ocio_viewer as I would need to disable this for our install.

I think the nuke nodes should only be registered as part of the ocio project initialisation.

Viewer gizmo's are normally a per company/project configuration, maybe it would be better to include this as a separate example gizmo for people to copy in to their setup.

.malcolm

On 12/01/2011, at 6:07 AM, Jeremy Selan wrote:

Thanks for the commits!

Look great at first glance.  (I'll run it all this afternoon to make
sure it works multi-platform, etc).  I like all the nuke cleanup, very
sensible.

My one concern is I'm not convinced the pre-filled display nodes at
startup are appropriate in menu.py.  Your new code is an excellent
example to point folks in the right direction, but it may a bit too
overbearing to actually create instances for the user at startup.
Would you expect the average facility to use the code, as written? Or,
is this just an example which you would expect people to customize?
Perhaps this function should be in a different file, which the user is
encouraged to customize as needed?

You can link into the viewer's gain/gamma (just make an expression to
Viewer1.gain, Viewer1.gamma), but there's no way to prevent nuke from
applying the cc math when the sliders are moved.    In the short term
maybe the foundry could expose monitor options to disable the
gain/gamma math?  (In the long terms, there's potential to have nuke
directly ship with builtin OCIO color management)

-- Jeremy


On Tue, Jan 11, 2011 at 4:28 AM, dbr/Ben <dbr....@gmail.com> wrote:
I've made a few minor changes, partly to familiarise myself with the
code, partly to say thanks for open-sourcing this extremely useful
project!


First change - there was a hardcoded Nuke path, which meant you
couldn't do "cmake -D Nuke_INSTALL_PATH=/blah". Not sure if there's a
reason this this was hardcoded, but it's a (trivially) nicer than
using the env-variable:

https://github.com/dbr/OpenColorIO/commit/321625205caa1ad9a8735571f617a226493c6b44


Second a slightly less trivial - to support Python installations that
use --exec-prefix to put arch-specific stuff in a separate directory -
before it would fail to compile, complaining "pyconfig.h was not
found" (I guess it's pretty uncommon to use --exec-prefix, as even
PyQT had/has this issue..)

Tested on CentOS, with the exec-prefix'd Python, and OS X 10.6 with
the default system Python, both worked work fine.

https://github.com/dbr/OpenColorIO/commit/131efac091419aaa9d7729ba7f330c241d75917f


Final two commits are to the init.py and menu.py - automagical loading/
menu'ing of the OCIO nodes, and a first attempt at registering
OCIODisplay nodes as Nuke viewer processes.

It adds one process for every display and every transform (e.g "Film1D
(sRGB)", "Log (sRGB)", "Film1D (P3)", "Log (P3)") - seemed like the
most Nuke'ish solution given the limitations of the viewer
customisation.

On that subject, I wonder if it's possible to somehow tie the viewer's
exposure/gamma controls to the OCIODIsplay node.. I suspect not
currently.

https://github.com/dbr/OpenColorIO/commit/0cdf665eba7bd9dbeadcb94d9d446a4424a81303
https://github.com/dbr/OpenColorIO/commit/8151eca9edf3acf027e2a60ea3857f2240af6461


As I said, nothing too exciting.. I'm hoping to integrate OCIO into
the pipeline at work soon, so will almost certainly have more patches/
questions/feature-requests soon!

Oh, I've not signed a CLA yet - these changes seemed trivial enough
for it not to be necessary, but I will do so soon. Let me know if this
is a problem

Anyway, thanks again to everyone involved in this project!
- Ben Dickson


"dbr/Ben" <b...@...>
 

Good point about the viewers. Thinking about it now, I wouldn't use the viewer-proc registration from the OCIO installation, as it'd be untweakable.. So, perhaps this would be more appropriate as part of the documentation, rather than something installed by default?

I've made some changes to the Sphinx docs which, among other things, mention the ocio_populate_viewer - shall write a separate "Review:" mail about this to keep things tidy.

Thanks for all the feedback!
- Ben

On 12/01/2011, at 10:58 AM, Jeremy Selan wrote:

Done.

I've checked this into master, with a few changes:
* Nuke_INSTALL_PATH is now NUKE_INSTALL_PATH (all caps)

I know the old value predates this checkin, but now that it's
publicized I figure we should make it all caps to match all the other
CMake configuration options.

* OCIO python module is now put in the global namespace, so it's
available to other scripts (and the script panel).

* The ocio viewer mojo is not executed by default in menu.py. Users
are free to call ocio_populate_menu() though at any time to run the
code though.

-- Jeremy

On Tue, Jan 11, 2011 at 1:21 PM, Malcolm Humphreys
<malcolmh...@mac.com> wrote:
It all looks great other than the ocio_viewer as I would need to disable this for our install.

I think the nuke nodes should only be registered as part of the ocio project initialisation.

Viewer gizmo's are normally a per company/project configuration, maybe it would be better to include this as a separate example gizmo for people to copy in to their setup.

.malcolm

On 12/01/2011, at 6:07 AM, Jeremy Selan wrote:

Thanks for the commits!

Look great at first glance. (I'll run it all this afternoon to make
sure it works multi-platform, etc). I like all the nuke cleanup, very
sensible.

My one concern is I'm not convinced the pre-filled display nodes at
startup are appropriate in menu.py. Your new code is an excellent
example to point folks in the right direction, but it may a bit too
overbearing to actually create instances for the user at startup.
Would you expect the average facility to use the code, as written? Or,
is this just an example which you would expect people to customize?
Perhaps this function should be in a different file, which the user is
encouraged to customize as needed?

You can link into the viewer's gain/gamma (just make an expression to
Viewer1.gain, Viewer1.gamma), but there's no way to prevent nuke from
applying the cc math when the sliders are moved. In the short term
maybe the foundry could expose monitor options to disable the
gain/gamma math? (In the long terms, there's potential to have nuke
directly ship with builtin OCIO color management)

-- Jeremy


On Tue, Jan 11, 2011 at 4:28 AM, dbr/Ben <dbr....@gmail.com> wrote:
I've made a few minor changes, partly to familiarise myself with the
code, partly to say thanks for open-sourcing this extremely useful
project!


First change - there was a hardcoded Nuke path, which meant you
couldn't do "cmake -D Nuke_INSTALL_PATH=/blah". Not sure if there's a
reason this this was hardcoded, but it's a (trivially) nicer than
using the env-variable:

https://github.com/dbr/OpenColorIO/commit/321625205caa1ad9a8735571f617a226493c6b44


Second a slightly less trivial - to support Python installations that
use --exec-prefix to put arch-specific stuff in a separate directory -
before it would fail to compile, complaining "pyconfig.h was not
found" (I guess it's pretty uncommon to use --exec-prefix, as even
PyQT had/has this issue..)

Tested on CentOS, with the exec-prefix'd Python, and OS X 10.6 with
the default system Python, both worked work fine.

https://github.com/dbr/OpenColorIO/commit/131efac091419aaa9d7729ba7f330c241d75917f


Final two commits are to the init.py and menu.py - automagical loading/
menu'ing of the OCIO nodes, and a first attempt at registering
OCIODisplay nodes as Nuke viewer processes.

It adds one process for every display and every transform (e.g "Film1D
(sRGB)", "Log (sRGB)", "Film1D (P3)", "Log (P3)") - seemed like the
most Nuke'ish solution given the limitations of the viewer
customisation.

On that subject, I wonder if it's possible to somehow tie the viewer's
exposure/gamma controls to the OCIODIsplay node.. I suspect not
currently.

https://github.com/dbr/OpenColorIO/commit/0cdf665eba7bd9dbeadcb94d9d446a4424a81303
https://github.com/dbr/OpenColorIO/commit/8151eca9edf3acf027e2a60ea3857f2240af6461


As I said, nothing too exciting.. I'm hoping to integrate OCIO into
the pipeline at work soon, so will almost certainly have more patches/
questions/feature-requests soon!

Oh, I've not signed a CLA yet - these changes seemed trivial enough
for it not to be necessary, but I will do so soon. Let me know if this
is a problem

Anyway, thanks again to everyone involved in this project!
- Ben Dickson