Simplify workflow proposal
I think the flow of selectively copying history or even using iops I added that don't interpolate makes the workflow tedious and error prone regardless of skill level. That step should be removed entirely to simplify the flow.
Here's the steps I propose:
- Edit keyframes as-is. Allowing any module to be used. The flow for editing the first keyframe and then copying the results to the other keyframes. Afterwards adjusting white balance, exposure, filmic or other supported modules to maintain consistent appearance among them.
Secondly, I think the first and last frame should be marked explicitly. Maybe just StartKeyframe and EndKeyframe. More on the reason why in a moment.
- With the keyframes edited/tagged and the start/end tagged. This makes it easier to run by just specifying the necessary modules
dtlapse -m temperature, exposure, filmicrgbin the directory where xmp files reside.
Filter everything before/after the start/end frames. This would make it easier to run on Windows boxes (which I'm not, but I'm sure someone will ask). Python has plenty of capabilities to walk file systems. Plus, it's more self-contained without introducing a shell (bash, zsh, etc.).
Using -m or --modules, which can be comma or space delimited whichever is easiest in Python, to specify multiple modules. The way the program is currently structured now it would be fairly easy to push this into a map. It could be stored like the following: actions['operation']['picture_new_cparams']. Then iterating through the map updating the xmp files or plotting using the operation name in the title.
Final change. If my understanding is correct the xmp file is updated by appending history unless there are unsupported modules in which it's cleared and then appended (that's the behavior I saw). My suggestion is for every specified module, it's cparams is replaced with the interpolated value while all other modules are copied using the first frame. To put another way use the first keyframe as the base history replacing specified module's with interpolated values. If there are multiples of the same module the first in the list is updated/replaced. Python's XML lib should make this easy to query using a XPath, which can easily update the node's attribute according to the documentation. This final change simplifies the flow and makes all of the frames consistent for modules that won't be interpolated without selective history copies or specifying those modules that don't change from frame to frame. It seems more robust allowing for complicated edits.
I'm happy to help out with these changes as I think they'd make things a lot easier for people to get started with dtlaspe. I don't know Python well as I mostly work in Scala/Java, but improving my Python skills sounds fun.
Thoughts? Let me know if you have questions or something did not make sense.