Thursday, May 22, 2008

Shake SDK DVD review

I watched just the first volume (and a bit of others). I thought I would not write a review until I watch all the DVDs but I'll write it now while my memory is still fresh.

First of all, it was quite interesting. I compared it with Maya API and there are lots of similarities (I heard those who made Maya made Shake), when I was watching lazy evaluation I felt as if I was watching Maya DVD. Though there are lots of differences of course, the biggest difference of which will probably be, data transmission with a connection is bidirectional. When there is a connection between node A to B, and the direction is A -> B, in Maya data goes always from A to B. In Shake, it can be A to B, or B to A, or both. It's necessary to save calculation time but it also makes making a node more complicated.

The concept of Shake script is also interesting. I don't write the detail because the advantage is quite obvious. It must have been a difficult (but fun) work to represent a node tree in the form of c language. I just wonder if it was real c language (gcc or such), then I could link it to other c(c++) programs directly. I told the idea to a guy in apple. He understood me but pointed out it would make the script too difficult. There is another small thing, though it's a c like language, it's not a c language, I would have been happier if the extension was not .h I think I'll be confused when I'm making plug-ins if some file is a c header or a script.

Node having only one output comes from tree representation in a script but I like the restriction. If there can be multiple output, the tree will be too difficult to handle by the user. That's Maya's way and I understand the strength of it but Maya DG is too difficult to analyze. Shake node network (and Houdini's) are more fun to play with. Bidirectional connection is a nice idea! I believed in a visual language what you see must be what it behaves but I will have to change my mind.

Ah and an image. I think if it had an ability to have blind data, like Houdini.

By the way there was one thing that took me very long time to understand.

nuiToolBoxItem(”@DisplayName1”, OneInputPlugin(0));

It really confused me. why do I need to create a node and pass the result image as a second parameter? I thought every possibilities such as instantiating a node by cloning, until I got the simple fact that in shake script you don't have to include a string constant with "".

No comments: