Archive for October, 2007

Back from Abroad

Bwain| No Comments »

After a brief hiatus with my wedding and honeymoon, I’m finally back into developing. Right now, I’m working through some workflow issues in using spa to colorcorrect the honeymoon pics. Unfortunately, I’ve already posted some of them, so I’ve got to download them again, cc, and re-upload.I’m finding some interesting workflow issues. I thought the best thing to do was to keyframe all the cc settings, but now I’m using the ’switch’ node to use different node streams to do the processing. We’ll see.

Have some file save/load issues reguarding switch nodes. Switch nodes aren’t defined until they have an input. So the inputs have to be connected before the outputs. To generalize, the wiring of the nodes should take place in depth first order. I’ll be doing this, then continuing with the color correction process.

I have to implement breadth and depth first algorithms for ordering the nodes. Typical algorithms are incomplete in this context since we can have multiple root nodes. I also have to find a way to mark/unmark existing nodes in the search. Its looking like I’ll be implementing the depth first search, assigning a depth, then using that to create a breadth first ordering.

The algorithms are exactly what I needed to do a proper wire ordering. It also correctly handles the hacks I put in to deal with the switch node ordering. The only thing left is the logic for handling the ’select’ and ’spares’ so that it works with doing cut/paste operations.

Expressions for Image Info

Bwain| No Comments »

I’ve also found something missing in the expression language that would help automating the resizing of images much easier. I need an expression that returns the image size, given a path to an image node. The result of this could be used in a resize operation. The only existing expressions that had any kind of object specific addressing so far are the ‘ch()’, ‘prm()’, and ’shin()’ expressions, and they’re all based around the ‘FunctObj’ class. An expression like this is the first time I’ll be extending these types of expressions.

It turns out that I put in hooks to allow for custom symbol tables that dispatch object specific expressions already. ParamList::aboutToSetExpr() and ParamList::aboutToSetExprDone() are already called for pushing and popping custom symbol tables for this very reason.

It turns out that I need to perform some kind of dependency layer for the nodes, similar to what spa::FunctDep does for expressions in FunctObj. We will probably have to trigger updates using the Node::setDirtyBit() method.

So I’ll have to have some bi-directional link that links two no::Nodes, which is owned by the expression Funct node. Each node has access to links that point up and downstream.

Bug

The imgNode() and imgAr() commands only work when being called from a subclass of imgNode. They need to be able to be called from anywhere. Kinda like being able to call a point() function in an object context in Houdini. Need to reconfigure how the object tables are activated.

Workflow issues

Bwain| No Comments »

So to allow for multiple color correction settings to affect individual pictures, I end up using arrays of ‘Switch’ statements to select different nodes. Animating the nodes was too much of a pain. Animating (many) switch nodes is somewhat better.

But it isn’t enough. I’m still in the middle of going through MANY online pics and it isn’t enough. Using Photoshop or Aperture would be more appropriate.

What could happen is to have an option to sample down all or some parameters in a node. They could be initialized to the node defaults. Then the values would be a straight array lookup, like a cheap version of channels. We would need the following:

  • A way to automatically record and restore defaults.
  • A popup menu for the NodeGUI context:
    • Set defaults
    • Set to last frame
    • Set to two frame
    • Copy current values
    • Paste current values
  • More menu options for the parameter context:
    • Sample down current parameter. Use from-to frame. Overwrite if necessary.
    • Remove samples
  • Expression for reading samples. smp(F) or smp().

We would need a way to specify to the GUI that the smp() function is editable, like the ch() function. Currently, I check for the existance of a channel to determine if it is editable, but we may have to generalize for other types of editable expressions.

This would reduce my color correcting nodes to a handful, greatly speed up workflow.


Creating this feature took a lot less time than I expected. Got back into Gui coding, also cleaned up some of the menu choices. I’ve got the interactive functionality working, now I just have to able to load/save the samples as scene data.Got that working as well!! I’ll color correct *one* more album, then I’ll return to the shading language.Got it all working, and the improvement to workflow is way better than expected. Able to copy/paste node values, revert to defaults, create and restore presets. At the moment, presets aren’t saved with the scenefile, but I think it would be pretty easy to do.



Copyright © 2010 Luna-Canis | Created by miloIIIIVII
Top | Sidebar | Sitemap | Disclaimer | Network