-
Notifications
You must be signed in to change notification settings - Fork 297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Schema support for color transformations #170
Comments
Aren't all effect information housed in meta data in the effect schema at the moment? |
Correct, @jminor is proposing we promote the CDL one into its own effect class as a way to feel out how that process would work for effects. |
Yes, and further, we want to separate the parameters to each Effect from the generic metadata, so it is clear which properties OTIO understands (the parameters) versus the metadata which is just carried around blindly. |
Hi! Thanks! PS: I could jump on this myself : ) |
Hi @vvzen, I don't think anyone has worked on this yet. The only recent related work was #621 which aligned the metadata CDL between some adapters. |
Have you moved completely to C++ for Just to start a little bit of discussion around this addition, I was imagining something like this (in Python): class CDL(opentimelineio.schema.effect.Effect):
effect_name = 'ColorTransformation'
name = 'CDL'
# The metadata could be further customised by each studio adopting OTIO.
# It could keep track of the version,
# source client/vendor that provided it,
# in which date was received and other studio specific variables
metadata = {}
def __init__(self):
self._slope = None
self._offset = None
self._power = None
self._saturation = None
@property
def slope(self):
#TODO
pass
@property
def offset(self):
#TODO
pass
@property
def power(self):
#TODO
pass
@property
def saturation(self):
#TODO
pass
@property
def checksum():
# A checksum of all the values
# Could be very useful when checking new versions,
# finding mismatches, checking on how many shots the same cdl is used, etc..
pass
@slope.setter
def slope(self, value):
#TODO
pass
@offset.setter
def offset(self, value):
#TODO
pass
@power.setter
def power(self, value):
#TODO
pass
@saturation.setter
def saturation(self, value):
#TODO
pass Thanks! Valerio |
Thanks @vvzen for keeping this discussion going. We've been implementing new schema in C++ but the ideas and approach are most important to work out. A lot of times I'll build experiments in python and then port to C++ when I feel like things are more locked down. Feel free to use whatever language you're most comfortable with and if C++ isn't in your comfort zone we can collaborate on porting the code once we have consensus on approach. On to your proposal, I think it's looking pretty good! For the I got together with our color scientist @mrd489 and looked at how we model CDL data in some of our systems. It's pretty close to what you're showing, in json terms we like to do something like:
The main point is to make the modeling as explicit as possible (avoid the position-based encoding of red, green, and blue). One other discussion we has was around what precision we should be targeting for the float/double values. We weren't sure what precision is considered noticeable for these values. @mrd489 referenced ST 2065 and noted matrix transforms with 10-digits precision. It may be worth consulting with OCIO people on this as well. Overall, I like your first stab at this a lot, just those few extra thoughts for discussion. |
The only color transformation support currently modeled in OTIO right now is CDL info. This is stored in a metadata dictionary.
Color transformations should be modeled as
otio.schema.Effect
.This might include:
The text was updated successfully, but these errors were encountered: