Visual Effects Society (VES) Jobs Fair
Ari was encouraging us to participate in a Houdini logo challenge which would happen tomorrow (Saturday) at Visual Effects Society (VES) jobs fair where Autodesk, Adobe together with Side Effects will be there to showcase their reels and demonstrate their softwares! At the same time, a bunch of visual effects house will be there seeking for potential employees.
For those who aren't familiar with VES, there is a ceremony called VES Awards which honors people from the visual effects industry with great achievements. It's simply equivalent to the Oscars, but only got visual effects!

For more info, look here http://www.visualeffectssociety.com/
Houdini Flying Logo Challenge
Thought of doing a side-project while i was in Singapore and thought this would be an excellent opportunity. Plus Ari said the winners would get a free Houdini Apprentice HD license which was pretty tempting. It would be also refreshing to work something unrelated to our main industrial attachment project for a day.
My head mysteriously brought me to the "Point SOP" technique documented on Daniel's blog (student previously attached to SESI) which Rap spoke about. Where points scattered on a teapot could transform into a torus, scanned Daniel's blog and found the page. Attempted to recreate that network but missed the mark slightly.
Look at Day 30 to see Daniel's render,
http://soomld.wordpress.com/page/4/
Ziggy was super nice, he sat down and patiently explained what I got wrong and what each expressions were doing. I'm going to share them right now so get ready!
01 - Create a teapot (It's off the shelve tools called Platonic Object if you're new)

02 - Create a torus too, translated the teapot along x-axis (you can use z-axis too) so we have space for the particles to work between the 2 objects.

03 - Append "Scatter SOP" for both the teapot and torus, use less number of points when you are building the network to avoid lag... my settings are set for final render.
Note: The following instructions are going to get very long-winded but they are also the most crucial part for understanding why and how this works, so don't skip anything.

04 - Append a "Point SOP", Add Colors, delete the channels by RMB on "Color" parameter & "Delete Channels", type in the following expression $F/100+rand($PT)-1
This expression makes the teapot turn from black to red color, play your animation.
$F is the current frame number you are on, say you're on frame 50 so $F/100 gives you a value of 0.5
rand($PT) give you a random value between 0 to 1, $PT stands for the point's number, go to Windows menu, Hscript Textport, type the following "exhelp rand" and an explanation will be given, you can do the same if you encounter any unfamiliar functions.
$F/100+rand($PT) gives you values from 0 to 1, but we want everything to start from negative value so the teapot will transform from pure black and have no red values at all, we are currently working with an expression inside of the red channel.
so we need to subtract all these values by 1 to force them to negative, hence $F/100+rand($PT)-1
Result when you hit play

05 - Append a new "Point SOP" under the 2 "Scatter SOP" we created earlier, feed teapot's "Scatter SOP" into 1st input and torus' into 2nd input of the "Point SOP".
This step will animate the points forming the teapot shape to travel over and form the torus shape.
Delete Channels on the "Position" Parameter, type in the following expression
fit01($CR,$TX, $TX2) in X channel,
fit01($CR,$TY, $TY2) in Y channel &
fit01($CR,$TZ, $TZ2) in Z channel
fit01() will fit a values between 0 to 1, what we want is for the teapot points to start animating towards the torus when their red channel is greater than 0 and reach their destination torus when the red channel reaches a value of 1.
$CR is the red color variable aka Cd[0] (look at Details View), we are using this value to translate the points.
$TX is the translate X of our 1st input, teapot.
$TX2 is the translate X of our 2nd input, torus.
We want to translate all the points in XYZ so same applies to translate Y and Z so we have similar expressions in the other 2 channels too. Now you should have points transforming from a teapot to a torus!
Result when you hit play

A test before moving further,
tiny donuts forming big donuts.
From here onwards, it's mostly my own creativity (completely different from Daniel's) with Ziggy pointing me towards the light along the way.
First was deciding what logo to use, had 3 in mind - Apple, Green Lantern (I see it everywhere in LA) and Google Chrome. Ended up with Green Lantern as it had the simplest vector shape plus it's my classmate's personal favourite!


06 - Made my logo back in Houdini, you can choose other designs though.

07 - I wanted the tiny logos to rotate as they travel to their destination points.
Ziggy came by, gave it a thought and came up with the idea of driving their rotation animation based on on $CR value, when $CR = 0, logos will stop rotating.
The Details View shows our $CR aka Cd[0] value is a mess, all kinds of numbers which will not help. We will remap them on the next step.

08 - Create new "Point SOP", Add Color, type clamp($CR, 0, 1) in red channel.
As you can see, Cd[0] value are being clamped to 0 at first frame and will only go up to maximum of 1 at last frame. clamp() only allows the attribute to go between 0 and 1.
See next 3 screenshots to understand better.



09 - Now we have $CR increase from 0 to 1, but we need them to go from 1 to 0 in order to drive the logos' rotation and have them stop at the their goal.
So we have 1-$CR expression to force $CR back to 1 at start frame and decrease to 0.

10 - In the image below we have both Ziggy's approach and mine - both uses stamp() function.
Mine could make random rotation to the logos but i am unable to stop them from rotating upon reaching their destination nor am i able to make them orient the desired direction when they stop.
Create "Copy SOP", Stamp Tab, tick "Stamp Inputs" checkbox, type a Variable - in my case it's named "myrot", type in $CR*360*2.5 in Value.
$CR which is now equals to 1.
$CR*360 which will be equals to 360 rotation.
*2.5 simply means I want them to rotate 2.5 cycles which is 900 degrees.
All these may sound quite intimidating at first. No worries, I am no fan of math too - it took me a while to get the hang of it even though it basic add/subtract/multiply/divide!
With that in mind, we can use the stamp() function in rotate XYZ in the next step.

11 - Append a "Transform SOP" at the bottom of your logo network,
type in the following:
stamp("../copy1", "myrot", 0)*0.025 in X,
stamp("../copy1", "myrot", 0)*0.025 in Y and
stamp("../copy1", "myrot", 0) in Z
*0.025 because i wanted to minimize the rotation on XY.

Now we have a bunch of tiny logos flying to form the big one,
Point and Copy SOP are the two key nodes behind everything.
Houdini Documentations didn't lie about them being one of the most powerful nodes around!

We see all the logo rotating and stopping as they play to their goals
12 - I was trapped at this stage for a good 30 minutes trying to get the motion blur to render out! was adding normals using "Point SOP" to get motion blur as i recalled Eric saying they can inherit velocity from normals. Lucky for you guys, you wont have to wait 30 minutes, haha.
The thing i overlooked was i wasn't using a POP_network so there's no way points could inherit velocity hence my motion blur wasn't rendering!
Instead, on the same "Point SOP" i added velocity but using $CR (0 to 1) in vel XYZ so motion blur on logo will gradually die off as they traveled further away from my render camera, probably not the most accurate solution but it works.

13 - I want to add my own material, but Cd attribute already exist, using "Attribute SOP" we delete the Cd attribute, This was covered during Eric's attribute & variable class.

14 - There we go, I subsequently replaced Clay with Mantra Surface Material after Charles' Material lesson. He taught us how to create a tinted glass material.

15 - Animated the render camera, added 3 point-lighting, enabled motion blur and Mantra ROP settings etc. Sorry, won't be explaining these.

Test render with alternate 10 frames before final render.
Final render
Thanks to Ziggy, Eric & Charles!
Might improve it further when get back to Singapore, out.
end.
No comments:
Post a Comment