Jump to content

Is messy duck taped spaghetti scenes the norm in the VFX industry?


magneto

Recommended Posts

Hi,

 

I assume it's worse for other 3d software like Maya, but for Houdini is this normal?

 

I have seen some work scenes that are a combination of extremely complicated, fragile, hard coded, super slow, techniques that are not even practical (using Copy SOP stamping as ForEach looping in H14, not old, setting 3d noise result into P, instead of adding onto P, etc and a lot more), and pretty much unlocking and editing almost every standard OP in the network only for the scene where you won't know what's changed, added, deleted and have to read all of those to understand the setup.

 

Houdini is really powerful but seems like most people in production just brute force everything in the end.

 

Are there people at VFX studios that actually develop SESI-like large scale tools that can be used in any way to accomplish a task rather than make an entirely different hard coded setup for each effect?

 

I have also heard that this is good for job security though so I don't think it will change.

 

Is there a way to combat this?

Link to comment
Share on other sites

To architect something takes quite a bit of skill, time, and training too.  VFX schedules in general is the antithesis of allowing for this. I don't buy the job security argument as it means that people are then capable of producing clean networks, which in most cases probably isn't true.

 

It's also in programming; that most codebases are spaghetti code, and code upkeep is the main cost of developing.

Link to comment
Share on other sites

haha :D this is the question I am asking myself quite often. I am too a person who tend to make organised networks that are easy to read and easy to make changes to. I find myself building the same proven patterns regularry in most of my scenes. In the long run it is very beneficial, especially with more complex work. Most people are building anything from reasonable messy to crazy scenes though. Clean work is not very common (regardless of the software package). I think that large part of the problem is what Marty says. External pressure and limited resources usually forces you to work fast rather than clean. If you don't have a strategy already developed on how to keep the work organised it will turn into a mess at some point. Of course, very experinced artists with a strong workflows may be difficult to find/afford. Those that are far from us in terms of expertise may be creating scenes that feel either too sloppy or too technical :) Then some people simply tend to be messy bcs that is how they work - no matter how good they are in what they're doing.  Collaboration of many people doesn't help either. When you have a shot that has been handed over to somebody else several times, for whatever reason, you can't really expect to get a clean scene.    

 

One solution is to have a very robust pipeline that will allow artists to do things only in a certain way. That makes the craziest setups go away but the drawback is that you have to invest a lot to build that and then you loose flexibility. Simple tasks will take longer time and making any changes in how things work in the pileline becomes much more difficult.   

 

So that is my personal theory on duck taped spaghetti scenes  :)

Link to comment
Share on other sites

Its the same in programming.

If you don't have guidelines how to name and store things it will work for this task maybe, but in the long run you are not able to reuse your work in an easy way.

That implies, in a bigger team you need somehow one person that whack your head if you're sloppy.

 

Edit:

 

marty wrote:

It's also in programming; that most codebases are spaghetti code, and code upkeep is the main cost of developing.

 

Whoops, already said...

 

So far my experiments and slightly diving into Houdini lets me think that this way of doing things has much more in comming with programming than I thought. Maybe pair fx'ing or agile fx'ing could lead to lesser costs - depends on the work needs to be done. If it's a one shot why not take the hammer and nail it fast down?

Edited by gekkonier
Link to comment
Share on other sites

I'm a very tidy person in Houdini, the way I see it, if other people are using my stuff I don't want my name to be muck, also I don't want to use a holy mess of crap myself. So I work through development in stages, getting the basic down, going back and tidying up, refining, tidy up, then usually start subnetting things with promoted parameters that make sense etc...

 

Other's are not quite as tidy though, but still produce amazing final results, which is all studios care about, not how tidy their scene is (unless it's also heavy and unweildly, then deadlines start to become tight).

Link to comment
Share on other sites

It can be greatly "organized" just by naming nodes and put a bunch of them in subnetworks.

Even though assets are unlocked the dirty way due to lack of time, even if there is an everything-but-procedural solution used because it was quicker and good enough: please do name stuff.

 

Takes no time to do but save hours of head banging against wall/desk/co worker every time you have to open someone else hip file or an old project from months ago.

 

Same principle for everything:

Name your layers in Photoshop, put them into directory properly named.

Label your backdrops in Nuke, put some informative dots (with labels too) where key things happen

In any 3D package, name your groups, name your layers, prefix object names with something relevant even though the rest is "_box325563".

Keep in mind that everything is probably listed somewhere and can be sorted alphabetically, nice naming convention results in nice listings.

Name your renders. "test.$F4.exr" is not a name.

Name your variables with something meaningful in any kind of code. "foo" is not meaningful enough.

 

 

Name the heck out of everything that can hold a name. When you have kids, you name them, you don't go to the registration office and fill "name5467416541" on the form.

VFX industry mimics life ? let's mimic it to the end :)

 

(And if you have an arty side, put some colours too)

Link to comment
Share on other sites

lol guilty.

But end of the day I'm paid to illustrate stuff, not dick-around with naming & shit.

I think the safest thing to do is never let artists handle each others hipfiles... its no different to Maya users an their mel-scripts; no matter how well written it is, other artists will be horrified and start-over.

Link to comment
Share on other sites

I do almost the same as ChristanW.
After something is complete spend time cleaning and renaming it, at the same time you can try to optimize it.
I believe good programmers also do this.

Also give specific colours to important nodes so you can see what they should do from a distance.
and another trick I use to clean up the connection lines is to use Null nodes to control the flow of them. Then by giving all these control nodes the same colour i always know their only purpose is to tidy up the lines and i don't have to look at them.

 

Link to comment
Share on other sites

Some people are creating a mess, some are perfectionists. Nothing can be changed here. There is also a dark side of cleaning things up. Naming conventions, pony-colored nodes, subnet-nesting, Java-wiring, renaming of self-descripting nodes. We can go too far with it. Opening of the old scenes with this cleaning efforts applied helps to stop wasting time on reducing readability.

Link to comment
Share on other sites

I do almost the same as ChristanW.

After something is complete spend time cleaning and renaming it, at the same time you can try to optimize it.

I believe good programmers also do this.

Also give specific colours to important nodes so you can see what they should do from a distance.

and another trick I use to clean up the connection lines is to use Null nodes to control the flow of them. Then by giving all these control nodes the same colour i always know their only purpose is to tidy up the lines and i don't have to look at them.

 

 

Yeah I do the same, I have elbow nodes that are dark grey (with a dark grey ui theme) to spread out, re-use bits of the script etc. This is in keeping with how you can do it in Nuke, which is about the only thing I like about it.

 

If I'm passing stuff off then yeah, timeshifts are black, attributes being created or yellow, groups brown, sims blue, animation/chops green, ins/outs purple and anything they really need to change is red. I'll only have a scene to this kinda anality 20% of the time, most of the time it's just a bit here a bit there, but still keeping a clean scene. And naming is key, no "vopsop12_new_old_new" I'll curse you!

Link to comment
Share on other sites

This would all fall under something known as Technical Debt. If you are reading this thread then you'll probably like the podcast:

 

Episode 224: Sven Johann and Eberhard Wolff on Technical Debt

http://www.se-radio.net/2015/04/episode-224-sven-johann-and-eberhard-wolff-on-technical-debt/

 

 

 

Technical Debt is widely regarded as a bad thing; that should be avoided or should be paid back as soon as possible.

 

What is Technical Debt

Developers have the choice to implement new features in two different ways: one is to do it quickly and messily, which will make future changes very hard. The other is a clean and smart solution, which takes longer to implement, but makes changes easier in the future 

 

http://www.infoq.com/articles/managing-technical-debt

Link to comment
Share on other sites

So in the end it seems like studios don't care even if your network is the biggest mess this world has ever seen with mind boggling complexity, even if you hand create/edit/delete things as long as you make great looking things, right?

 

Whereas if you make something so simple and so elegant that it's a masterpiece in design but just looks ok, or average, they won't be impressed by the cleverness of your setup.

Link to comment
Share on other sites

The end product you are making isn't machinary, objects or anything in the real world, but, a wall of pixels. Make the pixels look entertaining and you're in show business. 

Link to comment
Share on other sites

It really depends on the size of the project and how many people are supposed to work with your tools.

Personally I try as much to create at least somewhat clean stuff, so I am able to change stuff later easily.

For me, there is more to it than how fast I can build it, stability is probably more important,

and cleaner stuff also leads to faster stuff usually which is also important for me.

Link to comment
Share on other sites

For me it usually depends on time, if I have a vision how to do something and if I have to hand it over to someone else. Regardless I tend to start out pretty organized, but as the deadline comes closer it usually gets messier and messier. 

Link to comment
Share on other sites

Guest mantragora

Now, there are steps you can take to minimize spaghetti mess. I got one for making HDA's. There are ton of things I'm repeating when I make one, no matter what context. And I like to take those repeating tasks out of my view.

 

You may have some section that you often create in HDA. So automate their creation.

Maybe there are scripts that you use for those sections too, then write them in a way that they can be used over and over again by just loading them.

Even such simple thing like restricting node naming with Event Files helps to keep everything consistent. I for example don't allow more than one GUIDE_OUT node name in current network I'm viewing.

Or OutputSOP can't have name like OUT_ or _OUT. It needs to be named OUT or some_unique_name_OUT.

You can go further, for every new node created force OnCreated.py event file to name it as new_name_required. Once you have 20 nodes, each named new_name_required one after another, you will very fast learn to name your nodes after you created them. Every time.

 

Then the only thing that's left is Main() problem. And my approach is really very similar to what I do when I write C++ code.

 

It will not solve all the problems, but for sure it will eliminate many bad practices on which you would close your eye if you didn't have those restrictions in place.

Edited by fântastîque Mântragorîè
Link to comment
Share on other sites

I asked myself the same question when starting at my current studio a few weeks ago. I couldn't believe how inefficient and unoptimized scenes were, but honestly no one on the fx team seemed to care much. As someone mentioned earlier, push pixels, make it look good. That's all they seem to really care about and in the end, that's all that really matters. But these same people that can't put a scene together properly and brute force results are the ones training less knowledgeable co-workers in the ways of houdini  :blink: At that moment, I just put my headphones on and browse the forums here  :lol:

Link to comment
Share on other sites

The end product you are making isn't machinary, objects or anything in the real world, but, a wall of pixels. Make the pixels look entertaining and you're in show business. 

 

no kidding. Making my students truly understand this takes around two years...

 

...I mean, REALLY understand it  :)

Edited by Netvudu
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...