Pages

Thursday, July 12, 2012

Jellyfish model/asset

I have no idea where to begin, I've fixed so many issues these few days that I've lost count.

Let's start from the "head" of the jellyfish. To create the head, I used a curve and revolved it, using polyextrudes to add detail. I initially duplicated and scaled up the curve, joining it to the previous one before revolving, however the surfaces started to interpenetrate when I applied a noise function. This is why I'm a big fan of the procedural way :D

Jellyfish node graph

A VOP with anti-aliased noise and an animated offset was then applied to give the illusion that the head  was getting buffeted by moving fluids from the side. Before this, an additional step is required for the noise to have a greater effect on the base of the head. This is because the top seems to be slightly more solid than the sides, hence would be less billowy. To achieve this effect, I first sorted the points in the y-axis, then normalised the point number in the VOP SOP and multiplying it with the noise. Sorting is required as the revolve and subdivide node order the points in an unfavourable way.

VOP network for the noise

In order to create the wave on the jellyfish's head when it swims, I tried 3 different approaches. The first one was a normal transform after the curve with the pivot at the highest point and a sine expression in the rotate channel. It had the motion, but not the subtle wave. On top of that, the entire head was opening and closing like a claw. That was not what I needed. What I needed was for the top of head to remain pretty much stationary with increasing movement down the head. To get this effect, I used a soft transform and played around with the soft radius. This was closer to the effect I wanted, however not the ideal. On top of the expanding and contracting, I needed to have a sine-like wave going down the head (refer to my references).

Normal transform with sine expression on the rotate

Soft transform with sine expression on the rotate

VOP SOP with rotate and sine functions

By using a VOP SOP, I could apply a sine wave to my curve, hence creating the propulsion effect.
However, this created another problem where the centre point of the head moves back and forth due to the sine wave. I solved this by duplicating the network and running only point 0 through that network, later subtracting the result from the result of the original network, effectively translating every point the distance of the first point from (0, y, 0). Confused? Never mind, just take a look at my node graph below.

My VOP SOP


Rotation of all points about the first point in VOPs, and dampening the rotation with the normalised point number

Above with sine function


Above with post-transform and dampening

I later realised that after multiplying the normalised point number to the displaced points, the first point would stay in place. However, keeping the post-transform in the network gave me some extra waviness. I'll have to do some tests to see if it's worth the extra nodes.

By now, you might be wondering how I rotated the entire curve about a point in VOPs. I believe that VOPs rotates each point around the origin. To rotate about a point, I deleted all the other points before importing the pivot point into VOPs as a reference input. A pre-transform was then done, subtracting the pivot point's vector from the current point's vector, essentially making the pivot the origin. A rotate VOP was then used, with a preset axis.

Creating the tentacles
To create the tentacles, a simple line is used, stamping the randomised copy number from the copy node downstream into the distance parameter, hence creating variance in the length. It then passes into a VOP SOP that does 2 things: First the AA noise with an animated offset messes up the point positions to create a waviness in the tentacle as it was moving through a fluid. There is also dampening applied here. Next, it goes through a ramp parameter that gives the point an attribute "scale". This is understood by the copy sop and scales geometry accordingly. The geometry is then skinned and capped.
Node Graph for the noise

Next, the tentacles are copied onto the head. To do this and have the tentacles stayed attached to the head while it deforms, groups generated by the polyextrude is used to isolate a certain band of  primitives from the head geometry. A foreach is then used to add a point at the center of each primitive and deleting the primitive.  The points are scaled in and moved up a little, and the VOP SOP adding the noise to the head is duplicated here, with it's channels referenced, so the tentacles will more or less stick to the head's deformations.


 Spinach and Feta Crepe @ Crepe Cafe

Buffalo Chicken Sandwich @ Domino's! Cheesy goodness!

No comments:

Post a Comment