All Posts in Workflow

April 10, 2014 - No Comments!

Houdini 101

Houdini_01

Over the past year I've been learning Softimage, and although not an expert, I'm managing to use it in production for scene assembly, lighting, and rending tasks. I've also got to grips with Vray for Soft, and I've jumped in with Arnold with mixed results!
But thanks to Autodesk, Softimage's future is written in stone, and although it wont be dead dead until a few years from now, I thought I should branch out into Houdini.

Now being a generalist I'm not entirely sure how Houdini will sit with me, as it seems mainly used for FX work, but several studios seem to use it for more than just that, Realize, and Axis are two examples.

Ok, so I'm going to make some notes and observations along the way. I've been using 3dsMax for over 10 years, Softimage for a year, and Maya on and off for years too. So how does Houdini compare.

User interface - Actually I'm pretty impressed. It looks scary at first but it's more similar to Soft and Max than I first thought. One thing I've been struggling with is clutter. Granted you can turn off tabs etc, but it's not compact, and on my little 13' laptop, things are getting crowded fast. I recommend a large screen, or better, dual monitor setup for this beast.

Modelling - For modelling I keep coming back to 3dsMax, the graphite tools are second to none. But having said that Houdini isn't terrible, but I wouldn't want to try and model characters, or very complex stuff. Every time you move, bevel etc it creates a node. Great if you want to edit something, but if your doing a car, poly by poly, the node tree would wrap around the equator several times. But, the fact that you can jump down the tree to any point, sort of similar to 3dsMax, but with this you can edit any edit you have made, in a non destructive way. Helpful in some cases.

Oh, and here's my biggest gripe so far....no select edge ring! You really can't model fast without this simple thing. They've managed to put in 'select edge loop' but no ring?!

Anyway, it's only my first day, so it's early days.

October 27, 2013 - No Comments!

ICE – Look At Constraint

XSI_ICE_TW_LookAtConstraint_01

I've been looking into Matrix rotations recently. Here's the result, a more robust Look At Constraint. It has orientation axis, and you can flip the axis once activated to find your correct orientation. Due to the implementation of the kinetic stack, ICE does have some troubles with this sort of operation, so it might be flaky on the odd occasion.

If you mute the controller, it will keep the current built up rotation, activate again, and it will add the new rotations on top. Technically it still works, but on closer inspection you might find the constrained objects have really high rotational values. You can mute, then reset the rotations back to zero.

The controls are pretty self explanatory, add to your helper static ICE tree, pick the up axis. The manual rotation will enable you to custom orientate the controller, it will keep this offset on top of the constraint.

XSI_ICE_TW_LookAtConstraint_02

Download:

TW_LookAtContraint

 

October 27, 2013 - No Comments!

ICE – Array Compounds

Here are a few Array compounds you might find useful.

In the course of creating my Book Shelf tool, I've been forced into a huge amount of array processing. Apparently doing all your maths on arrays, before setting/creating points, is much much faster than other methods. It also proves more complicated, having to get arrays and pull data from specific Index locations, and set data back again in a non point context. But the speed of computations really does make up for it.

Build an array from array
XSI_ICE_TW_BuildArrayfromArray_01
This compound transfers a smaller array of values into a larger array, then shuffles that array. Simple but useful for populating arrays with for example 5 different widths of books etc.

XSI_ICE_TW_BuildArrayfromArray_02

Downloads:

TW_BuildArrayfromArray1.1

Build array of random numbers

XSI_ICE_TW_BuildArrayofRandomNumbers_01
A simple compound that creates an array of random numbers. Or randomises the current array plugged in, for this, plug the array into the mean value too.

XSI_ICE_TW_BuildArrayofRandomNumbers_02

Downloads:

TW_BuildArrayofRandomNumbers1.1

Build array of single values by percentage
XSI_ICE_TW_BuildArraybyPercentage_01
Builds a simple array that adds a value into an array based on a percentage. There are options for shuffling the array, randomising,  and also setting the remainder value.
XSI_ICE_TW_BuildArraybyPercentage_02

Downloads:

TW_BuildArrayofValuesbyPercentage1.1

Shuffle array
XSI_ICE_TW_ShuffleArray_01
Takes an existing array and shuffles the values around inside that array. This means, no new values are created, just jumbled up index positions.
XSI_ICE_TW_ShuffleArray_02

Downloads:

TW_ShuffleArray1.1

Shuffle Index array
XSI_ICE_TW_ShuffleIndexArray_01
Shuffles the index array, so you can than apply this random variation to other arrays.
XSI_ICE_TW_ShuffleIndexArray_02

Downloads:

TW_ShuffleIndexArray1.1

Slide Array
XSI_ICE_TW_SlideArray_01
Slides array forwards and backwards, useful for comparing values in two arrays.
XSI_ICE_TW_SlideArray_02

Downloads:

TW_SlideArray1.1

Move array up or down
XSI_ICE_TW_ArrayMove_01
A pair of compounds used to move an array up by one, or down by one. So you can do maths between them. Similar to the above but adds zero in the new created array space.
XSI_ICE_TW_ArrayMove_02

Downloads:

TW_ArrayMoveDown1.1
TW_ArrayMoveUp1.1

Downloads:

Download all in a ZIP file

TW_ArrayCompounds

May 9, 2013 - No Comments!

Spaghetti junction

XSI_ICE_Tidy_01
Here's something useful I've learnt from my short time fumbling around ICE. Keeping thing organised is key.
As your compound grows so does the complexity, and if you're building it with lots of user inputs in mind then you can get some pretty messy node spaghetti.
Just like writing scripts, defining globals at the start is common practise, so do this with your compound. At the top level store all your UI inputs as custom channels.
You can then call these custom channels back with a get data node where ever you need them. Rather than trailing inputs right across the compound and into nested elements, it helps visual clarity, bug hunting, and speeds up duplicating nodes etc.
Here are a few examples of before and after clean up.
Before:
XSI_ICE_Tidy_Before_01
After:
XSI_ICE_Tidy_After_01

Before:
XSI_ICE_Tidy_Before_02
After:
XSI_ICE_Tidy_After_02

Happy re-organising, even though it's a pain, it's well worth it! Oh and remember to execute your global values first, to make sure they propagate though the ICE tree correctly.