Giter Club home page Giter Club logo

openexrid's Introduction

Synopsis

We present a new storage scheme for computer graphic images based on OpenEXR 2.

Using such EXR/Id files, the compositing artist can isolate an object selection (by picking them or using a regular expression to match their names) and color correct them with no edge artefact, which was not possible to achieve without rendering the object selection on its own layer.

The technique is demonstrated in an open source software suite, including a library to read and write the EXR/Id files, Nuke deep plug-ins and an OpenFX plug-in which generate the images in any compositing software.

Motivation

During animation and VFX productions, the compositing department needs the rendering team to render some id masks images or to separate the rendering in layers to perform compositing operations on parts of the images. The needed mask or layer may change from a shot to another one. A lot of images may be sometimes requiered. Sometime masks are missing, the shot goes back to the rendering departement.

We think having a file format able to isolate any object may smooth this workflow.

Installation

Download the latest binary plug-ins from the Release section

If you use one of the supported Nuke versions, simply extract that version's "DeepOpenEXRId.dll" or "DeepOpenEXRId.so" and the "menu.py" files to your [home_dir]/.nuke folder.

If you use another software, or an unsupported version of Nuke, you can use the OpenFx plugin. Extract the "openexrid.ofx.bundle" folder to a directory of your choice and add an "OFX_PLUGIN_PATH" environment variable pointing to that directory.

Video tutorials

Open in Youtube

Open in Youtube

Architecture

The dynamic image is a standard Deep OpenEXR image containing the coverage information of every object in every pixel.

The renderer writes such openexrid image during the rendering.

The Nuke plug-ins can isolate any object from the deep image flow.

The OpenFX plug-in isolates any object in your prefered compositing tool from an openexrid image.

Compilation

See the BUILDING file

Tests

Compile and run the /test application.

Data


poilus_S155P130.exr
An OpenEXRId frame of the Poilus movie. Thanks to Guillaume AUBERVAL, Léa DOZOUL, Simon GOMEZ, Timothé HEK, Hugo LAGRANGE, Antoine LAROYE and David LASHCARI.


sample_motionblur_transparency.exr
This test file contains motion blur and transparency. This file is in the repository/data folder.

Contributors

Mercenaries Engineering, the guys behind Guerilla Render.

Thanks for feedback, ideas and help

Chase Basich
Alexis Casas
Rachid Chick
Stefan Habel
Philippe Leprince
Philippe Llerena

openexrid's People

Contributors

benmercenaries avatar hulud75 avatar pierre-mercs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openexrid's Issues

Fusion support

The openfx plug-in is not running on fusion.

Error: fr.mercenariesengineering.openexrid returned kOfxStatFailed for OfxImageEffectActionRender
OpenEXRId1 failed at time 0

DeepOpenExrId: "False color" option should create RGBA channels

Hello!

I realize enabling "false color" doesn't work if there is no RGB channel in source.

Here is a simple graph:

image

My deepread doesn’t have any RGB channel.

If I use it directly, like DeepOpenEXRId2 and set false color ON, and put my viewer on it, nothing appear, it’s black.

My only solution is to "force" a RGB channel to exists in the Deep graph merging two deep inputs (DeepOpenEXRId1).

If I enable false color on DeepOpenEXRId1, I have proper color.

I suspect the problem appear here:

https://github.com/MercenariesEngineering/openexrid/blob/master/nuke/DeepOpenEXRId.cpp#L320

The else statement is not reached if no RGB channel exists.

I suggest to add something like:

Channel redChannel = DD::Image::getChannel ("rgba.red");
Channel greenChannel = DD::Image::getChannel ("rgba.green");
Channel blueChannel = DD::Image::getChannel ("rgba.blue");

On top of doDeepEngine(), then, after needed += Mask_Alpha;, add:

if (_colors)
{
    needed += redChannel;
    needed += greenChannel;
    needed += blueChannel;
}

It should do the job but more test is obviously needed, maybe creating channel is done another way. The idea is simply to ensure RBGA is available when "false color" is enabled.

Thanks in advance, keep the good job!

Missing OpenEXR CMake module

CMake build fails with missing package FindOpenEXR.cmake:

CMake Error at openexrid/CMakeLists.txt:1 (FIND_PACKAGE):
  By not providing "FindOpenEXR.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenEXR", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenEXR" with any
  of the following names:

    OpenEXRConfig.cmake
    openexr-config.cmake

  Add the installation prefix of "OpenEXR" to CMAKE_PREFIX_PATH or set
  "OpenEXR_DIR" to a directory containing one of the above files.  If
  "OpenEXR" provides a separate development package or SDK, be sure it has
  been installed.

I've the feeling that either OpenEXRConfig.cmake or openexr-config.cmake is installed locally on Mercenaries workstations, but not released in openexrid. What OpenEXRConfig.cmake are you using ? Is that the one from USD ?

Why only one ID ?

Hello There,

This is Aghiles, from the 3Delight team. Questions:

  1. Why do we just have one ID per EXR file ? It is interesting to have different IDs (materials, namespaces, etc ...) in one file (Like in CrytoMatte). Maybe I missing somethings ?
  2. Why not consider any uint32 slice as an ID deep space ? Or jut list the deep slices in metadata. This will fix problem 1 above.

Let me know.

--
Aghiles

[OFX] opening deepID crashed Natron

hi,
We are using natron to check the exr output from our renderFarm.
In the last tests were we using the v1.0-beta.19 and had display problems, but now on v1.0-beta.25 Natron won't read anymore exrID.

Why a separate file format?

(Sorry for filing an issue just to ask a question, but GitHub doesn't give anything else. It allows commenting on code, but it doesn't have any way to comment on a project...)

Being able to do per-object color correction like this is definitely a useful goal, but can't you do this with standard deep EXR files and an ID channel (and optionally some attributes to assign names to IDs)? If I render that out of Arnold in Maya 2017, I can apply color adjustments to single objects by selecting samples with that ID. File sizes aren't affected too badly, just a moderate increase due to the extra channel and having more samples where more than one object ID affects a pixel.

Add a versioning

Add a version file, a version tag in the open-fx plugin, a change log.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.