Friday, 29 July 2011

Day 47 -- 29/7/2011 Friday

Knowing what to do after Steven's reviewing session yesterday, I started to test out different ways of grouping the points of an object. Using a sort node, the order of points can be change. Telling it to point sort by Y and should get a horizontal grouping. I also tried using bounding volume to group points, being procedural in a way, tried different ways of doing like merging bounding objects, working in different branches, various ways but could not work. I was stuck at it for quite awhile. Steven then sent me an example to see and understand how it works.





Using horizontal grouping, the result was kind of nicer and its getting to the concept of mine. Its more like stacking up rather than my previous test, looks like a reverse motion of peeling a banana. Heres a test;




Okay, next, I went to work on camera angles. Based on my production schedule, I had to finalize the camera angle and the flow of the shots by early next week. Doing shot 1 was abit tough as I had to rethink of a better angle, having being viewed by Aliza, seems like she had some comments. That took me quite awhile.
Next was shot 2 and 3, although I copied the camera sop from the previs, thought that will make my life simpler but the whole thing was messed up. Got to re-do and tried getting the same result but took quite long. The keyframes was frustrating, keeping getting weird and stupid results. Almost at the end, I kind of thought of a new idea that may be the key to my answer. It can link all the shots together and might just work right. Here's the 3 shot I had done for today;



Thursday, 28 July 2011

Day 46 -- 28/7/2011 Thursday

Okay, the day starts with Jeff Wagner discussion session on volumetric. He talk about different level of quality which a user can adjust for better, faster computation.

Geometry Sop: Rendering tab: Shading tab: Volume filter width; higher the number, blur-er the volume.
Geometry Sop: Rendering tab: Shading tab: Shading quality.
Mantra Sop: Sampling tab: volume step size.

Also, when doing fluid/pyro fx, in the lowrespyro sop, adding a volume resample under visualization and using different filter can increase the resolution. Jeff also showed how to increase the resolution of smoke using multiple layers of smoke blurred outline, sounds complicated but its quite easy to understand actually. The session ended at about 12+pm.

I carried on with my work. I kind of finalized the shader and the overall feel. Maybe some minor tweaking here and there and should be almost complete.



I also played with the different ways of forming the statue.

Wednesday, 27 July 2011

Day 45 -- 27/7/2011 Wednesday

I did the production schedule as requested by Steven. Wanting us to think and plan what we have to do to get our project done. We left 4 weeks to finish up our projects, which theoretically speaking, very little time left. Here is my production schedule.

This week:

>Finalize/Standardize Toon shader on cube.
>Understanding the file Steven send me and come out with own direction/concept.
>At least finished up the base camera movement and flow of cube movement and video.
>Flip-book for fast test and checks.


2nd week:

>Test out the cube's movement with the entire scene.
>Finalize the entire flow of video.
>Flip-book for fast test and checks.
>At least render out 2-3 shots.


3rd week:

>Render remaining shots.
>Check for improvements/add-on.
>Final Tweak.
>Re-render the necessary shots.


4th week:

Composition.
Post-composition tweaks.


Hope everything can fall in place and run smoothly....


Okay, back to the file Steven sent me. I did a test if drawing curve differently will affect the attractor simulations, and yes, it does affect. In top view, drawing north-wards differs from drawing south-wards.

Next was to understand some of the expression. I kind of understand what each part of the expression does but when put together, I don't really understand.


This was the expression;
(npoints(opinputpath(".",0)) / ch("../ctrl/slice")) * (opdigits(".") - 1) + if(opdigits(".") == 1, 0, 1)

>npoints = number of points
>opinputpath(".",0) = take the first input , 1 = second input and so forth.
>ch("../ctrl/slice") = user's null control panel
>opdigits(".") = take the existing number of the name of the node.


With Ziggy's help, I understand the entire expression. Showed us how to use the echo function in Hscript Textport. He also showed us the some basic stuff about Linux, e.g command key, alias and stuff like that. In production, Linux will be commonly/widely used.

I also found out some thing. the number of points in a pre-facet object and a post-facet object increases. To solve that problem, a fuse node is needed. Promoting vertex normal helps to ensure normals are computed properly and polygon are fuse together for shading purposes.

I tested the "sweeping box" of attractor and the different pattern of attractor. Horizontal gives different results from vertical, the size of the box. The attractor, was a line with force. Tested the variations of the line to see different results.

Tuesday, 26 July 2011

Day 44 -- 26/7/2011 Tuesday

Mr Michael sent me his test image of the toon shader. He was quite satisfied with the result. I went on to test the shader further. So far, I have not tested it on a cube and cube are my main objects in this project. Some how the toon shader works better on any objects except cube. I played with the divisions, the S & T frequency of the shader, the width of the lines, all, kind of lose out to using a sphere. Next I try to use facet to cusp the cube but the shader becomes totally flat, not as nice as it use to.



Next, I remove that and used a polybevel node to do not get a total squarish cube. However, it affects the entire cube's division and I got to play with the divisions and the S & T frequency of the shader, got to juggle between those 2 parameter.


I had uneven division lines as seen in the above result. I consulted Steven regarding this matter.


Also, Steven did a simple setup of the reverse motion, instead of things forming into the main object, do the reverse way of main object disperse into smaller things then play back the motion for another way of doing things. Sounds confusing and messed up.


A teapot in a isooffset with SDF volume selected.
Use the group of SDF volume teapot's as a bounding object to group points in a bounding box division points.
Delete away unwanted points.


Use group geometry to group points for later on, using expressions.


Monday, 25 July 2011

Day 43 -- 25/7/2011 Monday

I wanted to add reflection properties into the shader. I had advice from Steven and an intern that adding reflection will help to build a contrast and don't make the cube look flat. I carried on with the building of the shader. It took me a good 3 hours to finally fix the problem and a few ways to add the reflection. Below, I will be explaining what I did from the beginning.

First Try:
I went to add a reflective node and multiply it with the rest. This was the result.


After seeing that the black stuff at the top was a similar problem I had during the initial stage of building the shader, I apply the max node, a node which takes the higher value and use that value, also acts like constant. It's kind of remove the black stuff, but it still feels weird.




Second Try:
I seek help from JB since he had experience in shading work. He copied the "reflective-properties" nodes from mantraSurface and paste it to my shader's network. From there he tweak the necessary parameter. It took us somewhere about 40 minutes to troubleshoot. It got the reflective properties and had a blurred reflection but the rendering time was thrice as long as the first try.




Third Try:
I went back to the first try and noticed that "what if I put here instead" and hey, It works. The result was not bad, fast and clear. Instead of putting the reflection end result straight to multiply, why don't I put it in the add node. BAM!!! Nice, the result was clear and good.




Forth Try:
I after analyzing both ways of doing, I asked Charles, for opinion and was there any other ways to do it. He said that the third try was more efficient and fast and the result was quite good. I asked what if I want the blur reflection, he tried the raytrace node but was very slow and suspected that the rays entered around the corner. He also tried just a single surface model node with only reflection properties on. It was much faster and got the result I wanted.



I learned quite a lot from building this shader. I can switched between cleared reflection or blurred reflection.

Thursday, 21 July 2011

Day 39 -- 21/7/2011 Thursday

I went to continue working on the toon shader. I managed to decipher the cross-hatch shader with the help of Charles, an intern, shader guy. The only part which I dont understand was the normalise -> dot product -> absolute. Charles explained to me that these nodes creates a similar effect as a Fresnel look.

See Fresnel Effect: http://www.3drender.com/glossary/fresneleffect.htm

In this case, it acted like a rim light. Some shading-like toon effect, enhances the toon shader. Before I asked Charles for some help of understanding, I did a test myself. With partial understanding and followed node by node used in the network, this was the result. It was slightly better than the first time where I totally had no clue on what I'm doing and just blindly followed. Here was the result.



When I showed Charles the test file, he pointed out the T & S frequency was high and lowered down. Also the lighting model was set to Oren-Nayar, instead of constant. I believed that constant made the entire thing in white or flat colors for stuff to be projected on.

Here is the network in parts then the whole network together:

The first part was to clamp the color values to a new range and fit it to the diffuse color of the lighting model. Normalize the normals of it.





It is based on the luminance that the object gets from the lights in the scene. After the Lighting VOP, a Luminance VOP was used to get monochrome values, which range from 0 to 1.



A wireframe node was added with UV coordinates to map the lines properly. A control parameter to control the wire width and another parameter to control the wire color. However I need to add a complement to flip the operation because later on there will be another complement node to reverse the entire operation right after the wireframe node.



 Said earlier on, a complement node to reverse the whole operation.




This was the part I don't understand. With Charles' help, these nodes creates a similar effect as a Fresnel look. You can see the contrast/gradient effect falloff-kind of shade.



 The entire network with the final result.

Wednesday, 20 July 2011

Day 38 -- 20/7/2011 Wednesday

I had decided to stick to the original idea, no more tidal wave came crushing onto Liberty Island. But most importantly, I didnt waste any time because I learn a new way of directing the cubes. Steven was glad too, about this. I also asked him about the reverse motion he mention when I showed him the "4 torus into statue" test. He said this "Instead of moving cubes to form the statue, I could move cubes from the statue to the start locations. Think of it as tearing down the statue. After the simulation are done, I can played back in reverse.

Meanwhile, there was a discussion session with Jeff Wagner. This time it was on pyro simulation. He mention about some visualization in pyro-solver. Also, he demonstrate some cooling field, a field which will subdue the fire, making the fire to do not exist in that area. So when people asked Jeff about how to make fire revolve around the character, this was the method.

After about an hour, the session finished. I went to continue what Steven had asked me to do. I reversed the motion and did a comparison with the normal and revered. For me, I couldn't rally see the difference, so I gotta let Steven see the result.


Next, I went to do some test camera angles and how can I incorporate the new way of directing the cubes. I went to play with an intern's file which he did a sculpted velocity fluid. I kind of stucked at some point like there was this vopsop which randomized the tangent, but when I tweak it and did some test renders, it did not show changes. However, since I had experience with fluid, I know how to solve it.  Another part was, when I did a test render on the simulation, the rendering time was way long and produces weird results. I then noticed there was a basic liquid shader on it, took quite some time to notice it though. I am trying to mimic the reference.

Tuesday, 19 July 2011

Day 37 -- 19/7/2011 Tuesday

I start doing the usual stuff like checking email and forums for replies. With the help from Ari, I am understanding  the python script behind the noiseroll expression.





Then, JB came out to give me a suggestion. As my scene had something to do with Liberty Island and the surrounding ocean. The idea was a tidal wave of cubes came crushing onto the island thus forming the statue. I spend the whole day pitching the idea to Steven and also come out with the camera angle I had in mind. Also I tried out the sculpted particle fluid method to direct the wave of cubes.





Monday, 18 July 2011

Day 36 -- 18/7/2011 Monday

I checked out my render I left over the weekend. It was a variation of small cubes coming together to form the statue of Liberty.




I was finding different ways of forming the statue. I also received a message by a guy who he did a mel script which does this: rotating a cube on its edge. In other words, some sort of rolling and bouncing movement.

I went back to my scene to get suggestion from an intern on how to light my scene, a toon environment. But before that, I noticed one side of the wall did not have the outline render. I tried many method to fix but to no avail. Until one of the intern tried to fix it. The problem was the normals, facing the wrong direction. A reverse node did the trick. I did a test render with the outline.




After solving that, I ask a intern who was into lighting, for advice on how should I light my toon environment. He picked up that the key to toon/comic-style render, the shader would need a flat shading/color and harsh shadow when in dark. A key light and a fill light with almost the same value. I will also consider adding a little reflection properties to the cubes to have a little pattern and not too flat. Also, the last shot will be cubes mimicking the movement of the ocean, so the reflection properties can play a part here.

Next, I went to decipher the expression used in the wave generator. The expression was a custom expression:  noiseroll(x,z,xscale,zscale,wavefrequency,noisefrequency,noiseamplitude,noisevelocity,now), basically it needs at least 9 input. The effect had layers of noiseroll expression which made up the wave-like movement.  

noiseroll(x,z,xscale,zscale,wavefrequency,noisefrequency,noiseamplitude,noisevelocity,now)
xscale > move in the x-axis of grid
zscale > move in the z-axis of grid
wavefrequency > the whole grid get affected by the frequency
noisefrequency > each points get affected by the frequency
noisevelocity > how fast it go
now > move up and down





Lastly, I tried out the comic-sketch shader with the help of understanding from JB. So far this was the result.


Sunday, 17 July 2011

Day 35 -- 17/7/2011 Sunday

Today was a series of unfortunate event, however, I was not really involve in it.

First of all, I was surfing the usual websites and I saw that the FIFA women's world cup final match between Japan and USA was ongoing. I quickly turned on the television. Personally, I prefer Japan, like everything about it. All this was enough for me to root for them but I supported USA instead. I kind of like how the powerhouse played. For two times USA went in front but somehow Japan manage to fight back, guess this was the saying of "spirit of a samurai". They played through extra time and into penalty kick. Japan won in the end. It had this bitter-sweet feeling because I like Japan but I wanted USA to win. So this was considered a unfortunate event.

Secondly, Jia Bao and I wanted to go to a comics store at Washington Boulevard. We scouted the route with Google map. I rode a bicycle and Jia Bao skate on his skateboard. When we go down a declined slope, JB's skateboard went out of control and flew down to the Abyss. His skateboard went missing, couldn't find it and suspected that someone had taken it. That's another unfortunate event.

Next, we went there by bus. When we reached there, the shop just closed, for the day. We still went on in to see if they are still available. Luckily, the shop keeper allowed us to do a few purchase. So this was considered a unfortunate event in a way. We also dropped by a cupcake shop, just two shops away, recommended by Steven and his wife. Bought quite a handful of them and went home.

As for dinner, all of us had Gilbert's Mexican Food. A nice food place recommended by the landlord.

Saturday, 16 July 2011

Day 34 -- 16/7/2011 Saturday

Bryan and Lu Sheng wanted to teach me how to ride a bicycle. Didnt know how till today. They were by my side, guiding me and giving advice. But the moment I climb on the bicycle, started peddling, BAM!!! the next minute, I was cycling like a pro. With a new skill, I can go anywhere with ease, don't need to take a bus, walk a lengthy distance and stuff like that. We then spend our day cycling around the neighborhood, cycle to 3rd street and to Marukai to run some errand.

Cycling here and there for practically the whole day. Was awesome.

Wednesday, 13 July 2011

Day 31 -- 13/7/2011 Wednesday

Refining my shot and played with different files. Basically, I am trying to go all-pronged for all aspects.

Stayed back for Side Effects Training at 6:30. Helped out a bit with the preparation. Ziggy will be teaching some Rigid Body Dynamic (RBD) explanation. The first demonstration was about a ball hit through a wall with voronoi fracture. Only until this lesson, I realized that scatter points are only on the surface of an objects and to scatter points within an object, a isooffset node with a fog volume option can allow points to be scatter within. Also, Ziggy mention that there are a couple of node that will be frequently used in dops.

RBD keyframe active: Turn simulation on at a certain frame; expression e.g $F>=20

RBD autofreeze: activate the autofreeze of pieces when reached a certain threshold

Group Dynamic object (shelf tool): shift + click the multiple objects.

The next demonstration will be modifying a piece of data using a modify data node like taking the position/angular velocity of the object and tell it to do this at this point of time. The example was a car driving on a straight line and at a point the modify data node will activate the instruction set by it, thus making the car flip over at that point.

Third demonstration was simulating a dynamic simulation on a low-res model and then use a fetch node to extract the information from the low-res sim and then parent the fetch node to a higher-res model, making it following the same simulation.

And lastly, the last demonstration was adding velocity to voronoi pieces. Making them go in a directed way.

Monday, 11 July 2011

Day 29 -- 11/7/2011 Monday

I start the day off by checking my email for Steven's reply and Odforce to see if anyone had reply to my questions. I also went to ask how to achieve a effect which I will be applying. The effect was from transformer 1, where the allsparks cube had this "wire-frame glow" then slowly transforming into a small cube. The only way I can thing off is to use a box with points, copied box on each points and scale them slightly, allowing light inside to sip through the gaps.


While waiting for Steven's reply, I played with some of the toon shader. It looks interesting but I had another look of shader I wanted to achieve. I find the other shader better and more sketchy-feel. Below is a shader I am playing with from a hip file from Odforce.


Looking by the reference I am following, there is some kind of bevel-ish look to them so I played with polyBevel. I had this setup where I played with polyExtrude, polyBevel and facet. However, there is some gap on some part of the wall. I posted this on forum hope-ing for some reply.





After receiving email from Steven about my scene, I am ready to dive into action. I set up the background first. Playing with the height, width in comparison to the size of the each cube and the floor, etc.
Here are some test render:

Friday, 8 July 2011

Day 26 -- 8/7/2011 Friday

Knowing what to do after yesterday's session with Steven, I kind of get a clearer image and how to spear-head from this direction. I showed Steven the various methods of doing the background, he was satisfied and I did a blocking-out of the first shot.

I need to plan out every little detail carefully before I start production. For the first shot, I ask myself quite a number of questions. Really wanted to solve/settle every single doubt before I go for the final render. 

Some thoughts:

How should the environment be?
>should it be compact?
>should it be in a room?

What color should the environment be?
What type/scheme I wanted?

For the floor, what color/design should it be?
>don't want to distract the audience
>white floor will be good
>could have lines to guide the audience's eyes to the object?



Should the main cube drop first? then the rest or vice versa? Should I render depth of field in Houdini itself or in post? Many factor could affect my progress of going forward. Today I spend the whole day doing what Steven suggested. Encounter some weird dynamics cache so got to re-do the scene, experienced it a couple of time. Took quite long to get how the camera move, getting the timing rite and played with the graph editor for the linear and bezier curve movement, seeing which was nicer.


I did quite a lot of research. As I wanted some kind of mysterious feel/look to my overall scene, I checked out some color scheme for suitable usage. Found out that Purple and Black gives the most mysterious feel. I found this picture which could well incoperate with a toon shader. 



From some reference, the reference shows an object dropped and when the object hits the ground, there will be some camera shake. Thinking if I should that and not too many things going on to distract the audience. I had this idea which I find not bad. The camera fly in towards a top view of a giant cube with smaller cubes made up the giant cube, moves away allowing the camera to go through that into the interior of the giant cube and from there, the first shot continues. It's easy to get carried away with cool ideas and forget what is realistic and I had to make sure that I don't bite off more than I could chew.

Thursday, 7 July 2011

Day 25 -- 7/7/2011 Thursday

I tried out a hip file provided by a guy. He did a toon shader previously and I find that the shader was what I want. Through his blog, it was where I found out he did the toon shader and where I get the hip file, a VEX shader tutorial-kind of hip file.