Giter Club home page Giter Club logo

Comments (7)

hulud75 avatar hulud75 commented on June 14, 2024

Hi Aghiles,

Good questions, you could have multiple Id slices in a deep file and let the plug-in choose the one to use. Or, you can store multiple informations in each Id meta data, like ID1="/path/to/shape;material;instance_id".

At last Siggraph Matte/ID BOF, I have present a study that demonstrates that using a single ID channel with multivariate metadata should be smaller on most projects.

Plus, it is trivial for the Nuke plug-in to reconstruct the image using multivariate pattern like "/foret/*;leave" to select all the objects in the "/forest" group with the "leave" shader.

Best,

Cyril

from openexrid.

hulud75 avatar hulud75 commented on June 14, 2024

To get multiple id per file, we will have to modify the plug-ins to let the user chooses the Id channel to use.

from openexrid.

aghiles avatar aghiles commented on June 14, 2024

Hello There,

In most usages, grouping using different IDs is much more important than having names. For example:
1- One ID layer that has materials ID
2- One ID layer that has objects ID
3- One ID layer that has Instance IDs
4- One ID layer that has namespace IDs ..

The artist doesn't really care what object is which, she/he switches between the different groupings, selects regions and apply modifications/corrections to the particular region. I feel you guys are very close to a solution that is as sound mathematically as OpenEXR/ID and as flexible and useful as CryptoMatte.

Design suggestion:

  • One meta data per file listing the name of uint32 (say, "exrid_aovs") deep slice that the plug-in should consider as IDs. In reality, any uint32 deep-slice can be considered as an ID.
  • You can maintain backward compatibility easily by checking for the additional "Id" pass. Listing the "Id" pass in the the "exrid_aovs" meta-data

You don't have to implement this, but having the specs allowing it will lead to implementation. (We would be ready to implement it on the export side)

Note that I have no experience with file sizes so I can't comment on that. I am just trying to understand why is there a limitation that is really a detriment to the otherwise nice idea.

from openexrid.

aghiles avatar aghiles commented on June 14, 2024

Hello Cyril,

Or, you can store multiple informations in each Id meta data, like ID1="/path/to/shape;material;instance_id".

I am not sure how I can encode two different things at the moment using OpenEXR/Id : how can I have an ID that groups per-material and another one that groups per-object. I am certainly missing something.

--
Aghiles

from openexrid.

hulud75 avatar hulud75 commented on June 14, 2024

Each id comes with its metadata, a string in our design. The reconstruction of the image doesn't use the id, but regexps matching the strings.

Let's say the metadata have the following format : "path;material"
If we have 2 taxi cars with wheels and body

id1 = "/taxi1/wheels;plastic"
id2 = "/taxi1/body;carpaint"
id3 = "/taxi2/wheels;plastic"
id4 = "/taxi2/body;carpaint"

Then using regexps you can reconstruct all kind of images:
"/taxi." : all the taxis
"/taxi1;.
" : the first taxi
".*;carpaint" : all the carpaint shaders

It's up to you to put whatever you want in the metadata, path, shader, namespace, instance id..

from openexrid.

aghiles avatar aghiles commented on June 14, 2024

OK. All clear now ! It's heavily regex based which I didn't catch immediately. We will start playing with the plug-in.

from openexrid.

hulud75 avatar hulud75 commented on June 14, 2024

You have to know it has been decided at Siggraph 2017 that the metadata description should be normalized in the OpenEXR library. It will be done with a proper C++ API and The Foundry is supposed to work on the plug-ins. We'll move to the standard when it is ready, in the meantime we continue to support this format.

from openexrid.

Related Issues (10)

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.