Re: [Openexr-user] Per-pixel Object Identifiers?
Florian Kainz <[email protected]> Thu, 14 Apr 2011 18:18:54 -0700
| Newsgroups | gmane.comp.video.openexr.devel,gmane.comp.video.openexr.user |
|---|---|
| Message-ID | <[email protected]> |
Storing plain integer IDs without any auxiliary data is already possible; no additional work is required for that. What I am proposing would be a way to associate those integer IDs with additional information; I don't think it would interfere with storing IDs that aren't mapped to lists of strings. The two types of data would simply be stored in separate channels. Florian Scott Squires wrote: > I'm thinking of cases where the numeric values are processed and manipulated where necessary. > This makes it useful for other things than user ID of 3D objects such as segments or or other aux data. > > Scott > > > > On Apr 14, 2011, at 5:04 PM, Florian Kainz wrote: > >> Hi Scott, >> >> Our use case for the object IDs would be kind of like this: "the skin on that >> CG creature doesn't move right. What is the creature's name, and which version >> was used when this picture was rendered?" >> >> Storing object IDs directly in the pixels, without a lookup, seems to imply >> that your production process identifies assets using 32-bit integers instead >> of names. 10-digit numbers aren't very user-friendly. Do artists really >> refer to "asset number 3780456321" instead of "Davy Jones, version 3.4?" >> >> Florian >> >> >> Scott Squires wrote: >>> Yes, this would be useful. >>> I'm assuming it might also be useful to have a simple version of this where a ObjectID is simply saved as a UINT for each pixel without being >>> forced to go through the lookup/remap process. >>> That's doable now but if you're standardizing on ObjectID formats for EXR it would it should probably be covered as well. >>> Scott >>> On Apr 14, 2011, at 3:13 PM, Florian Kainz wrote: >>>> Hi, >>>> >>>> At ILM we want to implement a workflow where a computer graphics artist >>>> can bring up an OpenEXR image of, say, a scene from Rango on his or her >>>> screen, point to a pixel, and be find out that the object seen at that >>>> pixel is called "Beans/dress/button3." >>>> >>>> This will require storing per-pixel object identifiers in an OpenEXR file. >>>> In order to avoid re-inventing the wheel, I would like to find out if any >>>> OpenEXR user have done something like this already. If you have done it, >>>> would you be willing to share how you did it? >>>> >>>> Also, is there any interest in per-pixel object identifiers outside ILM? >>>> >>>> Florian >>>> >>>> >>>> Unless somebody has a better idea, we'll probably do something like this: >>>> >>>> Add a channel called objectID, of type UINT, to the image. >>>> If the image has multiple views, then add an objectID channel >>>> to every view. >>>> >>>> Add an attribute called objectID to the header. The type of the >>>> attribute is a map from unsigned integers to lists of strings. >>>> If the image has multiple views, then add multiple attributes >>>> with names of the form <view name>.objectID. >>>> >>>> For each unsigned integer value that occurs in one or more pixels >>>> in the objectID channel, a corresponding map entry in the objectID >>>> attribute contains a list of all objects that are visible in those >>>> pixels. More than one object may be visible in a given pixel because >>>> of transparency, motion blur, reflections, or anti-aliasing. >>>> >>>> To find out which object or objects cover a given pixel, application >>>> software first looks up the value stored in the objectID channel for >>>> that pixel, then it looks up the corresponding list of object names >>>> in the objectID attribute. >>>> >>>> In images with lots of transparency or motion blur any given object >>>> name may occur multiple times in the map from unsigned integers to >>>> string lists. In order to save disk space the objectID attribute >>>> could be compressed by using a two-stage lookup, where the attribute >>>> contains two maps, one from pixel values lists of integer object >>>> identifiers, and one from object identifiers to object names. >>>> >>>> With 32-bit UINT pixel values this scheme could run out of object >>>> identifiers for images with more than four Gigapixels, but in VFX >>>> production images that large are rare. >>>> >>>> _______________________________________________ >>>> Openexr-user mailing list >>>> [email protected] >>>> http://lists.nongnu.org/mailman/listinfo/openexr-user > >