Mar 172015
 
Good news! I tried breaking a shader and it worked. I should stick to tutorials for the time being.
But yes. I tried out Houdini’s shading this week. I like it. It’s pretty. But it’s also really dang complicated! Which, of course, makes it insanely powerful and infinitely customizable. But also very very easy to break for little me.
First of all – Houdini’s IPR rendering is fast. And I can drag and drop materials onto objects straight in the render view instead of going back and forth between multiple windows! Mind blown, just a little. Shaders are constructed out of nodes (of course) inside VOP networks. On the surface – simple. Looks similar to the Hypershade. There’s your diffuse, there are the U and V coordinates, there’s SSS, all in the Surface Model node. Unlike the Hypershade, you have access to everything, every parameter, even the hidden ones. You can organize them as you see fit and save shaders as modular and modifiable digital assets.
So, naturally, with all this freedom and control, the first thing I did was break a shader and crash the program.
There are three main shader options in Houdini:
1) Mantra Surface Shader – big “uber shader”, very customizable, can and should be used without altering the VOP network. Similar to the MIA Material – just go in and change slider values. The nodes on the top level of the Mantra Surface Shader VOP are digital assets, so there are even deeper levels. Here is just its topmost level:
shading_tut_01
2) Surface Model – a “bare bones” shader, as Side Effects describes it. Fast, a good start for building your own shaders. Specular, diffuse, and other basics are already there (those promoted parameters in the Surface Model node), but any complexity needs to be wired in. Similar to a Blinn, I think!
shading_tut_02
3) Material Shader Builder – where everything has to be connected from scratch. This one starts out as a flat, constant color, like Maya’s Surface Shader – no surface model node inside its default VOP. Got to do everything yourself, kiddo.
shading_tut_03
Houdini also has some handy presets all ready for playing around with – glass, chrome, wood, stone. Stone! That’s relevant to what I’m doing. Let’s look at the VOP network, because I can, and see how it’s made:
shading_tut_04
From what I understand, this shader has several layers of color and noise. Take some turbulent noise, with “splatter” (more noise) on top, multiplied with two color nodes, add spec, add emission, add opacity, add displacement, put all of that into the Surface Model node. Most of the available parameters are promoted so the artist can tweak them. One of the noise parameters is responsible for dirt; the two color nodes are stone color and pepper (detail) color, there are tabs for reflections, emission, opacity:
shading_tut_05
If I wanted to add more layers to the shader – say, marble-like veins, or a different mineral deposit inside the rock – I could probably wire in more noise, turbulence, splatter nodes (different types of noise nodes) and intermix them with the existing ones.

Thankfully, hovering over just about anything in the VOP network tells you what it is, what it takes as an input, or what it produces for an output.

 

So a question that has been bugging me is: just how many different kinds of noise does Houdini have, and what are they all best used for?

Here’s an example of 3D noise being used for color, texture, and displacement:

shading_tut_07
I kept thinking, “Autodesk has a wonderful documentation – a command reference. Houdini has… lots of nodes.” But eventually I found this: Houdini Nodes Quick Reference – an 87-page manual on nodes! The best part is that it’s not searchable at all. (Sarcasm.) But I am actually thankful that I found it, and should make some light bedtime reading out of it.
But I digress. Noise! There are many noise nodes accessible just from inside a VOP network. I hope that over time I’ll know which one to use for which purpose. Some noise is only 2D, some can be 2D or 3D, some has more customization abilities, some – less.
noises
Voronoi and cell seem to be very similar, but cell noise has borders. Worley noise (not pictured) seemed to be just like voronoi. Unified noise, also not pictured, seems to be a combination of flow, periodic, worley, and several others. Like Pyro noise, it has lots of parameters and customization options. Turbulent, bump, and anti-alias are all very similar looking, but some (bump) are just 2D and others (AA) are 3D. High-low noise has the most distinct look to it, of just scattered specs.
Hopefully in time I’ll know what each does best.
Mar 102015
 

Yesterday and today, the temperature in Rochester is in the high 30s (almost 40!), and we all went nuts and brought out the shorts and dresses. It’s the little things in life.

Meanwhile, I began working on my project’s composition:

landscape_process01

And I don’t like it!!

Let me clarify: I love the process and enjoy it immensely. I like trying to figure things out, try this node, that node, this technique I remember, etc. No – so far I don’t like the result. But I’ll keep working on that.

Big thing I realized: the nature of my process makes achieving my goal a bit tricky.

For each layer, I start with a 2D map – be that a topo map, a noise map, or anything else. Then, by assigning height attributes to the maps, I create the 3D landscape. THEN I see the resulting composition – not when I’m creating the 2D map. And when I see the result, it is not exactly what I want. So in this scenario, I must go back and forth to try to get the values to do what I want them to do.

Not the most efficient process.

I could sculpt on top, and I WILL sculpt on top, later, for details – but the goal here is to stay as procedural as I can. So I will be looking for more ways to create my landscape.

Later! For now, I’d like to catch up to speed with the rest of what Houdini has to offer: shading, particles, and lighting.

 

But in the meantime, let me explain what I did for the landscape so far.

For the mountains way in the background, I used the noise generation technique with some sculpting on top. For now, kept it low res. The forms are organic enough, and have the right amount of detail for the distance. All I do is tweak some settings and see if I like the result.

landscape_process02

For middle ground mountains, the focus mountains, I used a height map. I want as much control as I can get for them, so a height map works well. This is a good base for a detail sculpt on top later. However, I’m not quite happy with the composition of these two mountains quite yet, so I’ll fix that before I sculpt.

landscape_process03

landscape_process04

That node tree is fun.

For the foreground land, I also used a height map, but a much simpler one. Just as a base. I then converted the foreground to a volume for adding details on top later: arches, towers, cliffs, rocks. And, of course, sculpting on top.

landscape_process05

landscape_process06

And this is me cheating the 3D space:

landscape_process07

All this dense geometry – and no lag. Absolutely no lag. I am really enjoying being able to tumble around in 3D space without any lag or fear of crashing.

Mar 032015
 

Time to explore more cool things! Time to make more 3D out of 2D. In this post I’ll explain more terrain-building methods: generation of terrain from a 2D noise pattern and the use of volumes to create interesting formations in the landscape.

This software is both magical and simple. Magical in the way it processes data so quickly and effortlessly, magical in the design of its interface, and magical in the limitless possibilities the node-based system allows.

On the other hand, however, it’s simple. It makes sense. If I want a circle extruded along a curve, I will connect those nodes (‘circle’, ‘curve’, ‘merge’) in the proper order and manipulate their attributes to get the result I want – something that, in Maya, can be done with a lot less clicks simply by choosing “extrude.” In that sense, Maya is way more magical than Houdini: its processes are hidden from sight, and it would take some digging to unearth and see exactly how something was done. Houdini has it all right there: this is what you did, this is the result.

And nothing is “out of the box.” Not even the math. Not even the simplest noise!

Which brings me to the meat of this post. (The protein of this post?) The last method of 2D-to-3D landscape generation offered by the Go Procedural tutorial is the noise-based terrain. The method goes like this:

  1. Create a 2D noise pattern in the compositor
  2. Use edge detection to add small details to the pattern to the Nth degree
  3. Composite the pattern with custom shapes and other details
  4. Convert to 3D by projecting onto a mesh

In this example, I used a VOP COP, which is a fancy way of saying “compositing operator in VEX language.” VOPs create VEX code through the user’s manual wiring of nodes together. They’re the “underbelly” of a node that artists generally don’t see. Inside the VOPCOP generator, you can wire together a pretty complex math scenario that would make you some neat and complicated.. noise, for example. Or some other pattern. Or a shader. Many things.

And that pattern inside the VOPCOP generator can be infinitely unique and complex! Just add more math.

With my example, the x and y positions of a grid are wired into the position values of a Voronoi noise generator. Anti-aliasing is multiplied with the noise, a clamp is tacked on. Several multipliers allow the user to increase values, amplify attributes, and adjust the global scale of the noise. In Houdini, parameters are “promoted” to be visible to the artist on top, not inside the generator, so that the artist can control things like frequency, amplitude, roughness, scale, etc.

noise1a

After creating the basic noise, an “edge detect” node, composited on top and blended with the original noise, adds little details.

noise1b

The final composite has adjusted levels and a blurred mask on its transparency.

noise1

The geometry (grid) gets an “attribute from map” node, which takes the 2D composite and applies the chosen image parameter (in this case, luminance) to an attribute of the mesh. Another VOP, an attribute VOP, lets you go inside the mapper and wire the luminance of the black-and-white noise image to the Y-position of the points of the grid. A promoted multiplier value allows changing the elevation scale later.

noise2

noise4

noise5

The output? A detailed and easily editable polygonal mesh that can be exported as is, sculpted on, or converted to volumes for further work! Work like arches and caves, which is what I did next.

* Quick caveat: I’m figuring this out as I go. My explanations of Houdini inner workings might not be the most accurate. I still get confused between CHOPs and SOPs and DOPs. *

For arches and caves, a grid would no longer do. Instead, we use VDBs. And to my chagrin, VDB is “just a name,” according to the OpenVDB website. (They offer several very meaningful interpretations, such as “Voxel Data Base”, “Volumetric Data Blocks”, and “Volumetric Dynamic B+tree”.) What all this means: volumes in the form of voxels. A VDB node fills the space taken up by objects with voxels. In Houdini, because VDB support is added in addition to all the original stuff, VDBs require their own processes. For instance, instead of a regular “merge” node, a “VDB combine” node would be used for a Boolean-type operation between volumes.

So! We have a grid, we convert it to a volume. We make an arch from a simple torus with a mountain SOP on it (similar to Maya’s deformers), convert that to a volume, and combine the two with a “union” operation. Booleans, except smarter, because the voxels filling up the volume get recalculated once two or more objects are combined. Therefore, instead of an ugly “Boolean-type” result like this:

vdb1

We get something more organic and sensible, like this:

vdb2

For a cave, similar stuff. Circle extruded along a curve, a deformer node to make it look nice, and then a “difference” operation on the VDB combine.

vdb3

Here’s what it looks like at the end:

vdb4

What about a more detailed cave, though? What if the camera had to fly inside?

Well, friends, here’s just that.

1. Intersecting NURBS curves create the basic shape of the cave passageways.

2. Through some Houdini “magic,” or rather non-magic, a lofting/extruding operation on a circle gives the curves cave proportions.

cave1

3. Conversion of the NURBS surface to polygons.

4. Distortion of the surface with a mountain SOP to give an organic feel.

cave2

Next, more vocabulary lessons. Caves have different kinds of speleothems inside, or cave formations, made from mineral deposits. Stalagmites are the formations rising from the floor, and stalactites are the icicle-shaped pointy teeth from the ceilings. Here they are:

5. Selecting just the points of the cave whose normals are facing directly down and scattering some cone objects copied onto those points.

cave3

6. Doing the same thing for up-facing normal, and varying the cone dimensions with coded expressions.

cave4

7. After a VDB conversion and combining, here’s the result from inside the cave.

cave5

And, because this example just asks for a fly-through, here’s a fly-through!

Of course, this is nowhere near final, and needs a lot of cleanup – like clamping away those pieces of speleothems that seems to be “floating” in the air. However, for a simple concept, I think this is a pretty cool result.

But Kat, this is all great, but where’s YOUR project? How is that doing?

Well, I am sculpting the background and midground mountains this week, and will populate the scene with rocks and make the foreground land next week! And in the meantime, watch more tutorials on modeling and start some on shading. It’ll happen.

Feb 242015
 

Let’s talk about fun things.

Houdini is clearly capable of some powerful and pretty stuff when it comes to terrain. I found several examples of that. This looks a lot like what I have in mind for my mountains:

(Source here)

This is more of a closeup, with plenty of detail and nice randomization happening:

Houdini procedural terrain and more from Andreu Lucio on Vimeo.

And here’s a test showing a big chunk of land created, similar to the size of what I’m hoping to make:

 

I conclude that it’s all doable.

When I looked into methods of building terrain in Houdini, I found several different approaches, ranging in technical level and amount of proceduralism. Go Procedural, Side Effects’ own Vimeo page of demos and tutorials, gives a very thorough outline of how to go about it:

terrain_workflow

According to this workflow, straight from he software specials, terrain building can be broken down into several simple steps:

  1. Generate procedural base terrain
  2. Customize it with masses, details, and set dressing
  3. Convert the entire scene to polygons for rendering.

The first two steps, in turn, can be done in a variety of ways. Generating the base terrain can start straight from 3D, in the cases of:

  • Sculpting the geometry
  • Creating custom masses (for separate rocks)

Or you can start off with 2D data and convert it to 3D mesh, such as with:

  • 2D topographical curves (height map)
  • 2D DEM maps
  • 2D fractals and other patterns

I tried sculpting first. Sculpting is fun, always. And in Houdini, sculpting is easy. Reminded me of Mudbox. Nondestructive, easily modified on any level, just add a new subdivision node and a new sculpt node on top and keep going.

sculpt1b

Houdini also did a good job of reducing the mesh while maintaining detail.

sculpt2

But this can barely count as “procedural.” However, sculpting on top of a preexisting base mesh would be a good way to add custom detail with precision and a lot of control. Note to self.

Next I tried the height map method, which also turned out to be very customizable. Sure, you can go find a real height map online and use that, but you can also draw you own:

topocurves1b

I like this idea, because this way I can create my landscape exactly how I want it. Control over everything. The only drawback – it would be fairly time consuming. After converting the 2D curves into a 3D mesh with some attribute coding, this is what I ended up with:

topocurves2

It doesn’t look very detailed because I didn’t have a lot of curves to start with. Still, I liked the results. With some tweaking, extra details, and sculpting on top, this method would work for my project.

topocurves3

topocurves4

One more thing the tutorial I used talked about: the topology curves method separates the input data from the geometry generators. Generators – groups of nodes doing one function in a scene – can become digital assets. Houdini makes good use of “digital assets,” and makes it easy to save them, export them, customize them, and reuse them. Much like your own presets. Digital assets increase productivity through such reuse. Modularity!

The next approach I tried used DEM maps – digital elevation models. They are similar to height maps, but instead of curves, there are gradients. And gradients can be powerful when they drive the right things. Using Houdini’s compositor, which behaves very similar to Nuke, I took a DEM image I found online and made its luminosity drive the height of a grid:

demmap1b

The results of this are most realistic, but least customizable.

demmap3b

Also, better watch the pure white and pure black areas – those will need some exposure adjustments on the 2D composite, or 3D detailing on top.

demmapdetails1

However, there is a way to change this to a degree. The 2D map can be turned into a composite image with other details on top. For example, this screenshot shows two areas of elevation that were added with curves and assigned heights, and integrated into the rest of the terrain:

demmapdetails2b

In addition to all the terrain building, I tried some procedural set dressing, and learned a new word. “Scree” is a mass of small loose stones that cover the slope of a mountain. And I’ve generated some scree on my landscape.

demmapdetails3b

These points are being driven by a snippet of code that determines the slope of the geometry and places points within a certain range. In other words, the points are being generated where the landmass is the flattest. They are then randomized (scattered) a bit, and assigned a piece of geometry – in this case, just a box.

demmapdetails4b

If the red boxes were rocks, and then if a different slope range controlled bigger (or smaller) rocks, and another slope range controlled more rocks – I’d have a nice, natural-looking rocky landscape. Also, this method would work great for trees, when I need to place them just on the flat areas of a landmass.

 

In conclusion of this part of terrain building, I have a pretty good idea of how I’ll model my mountains later this week. I’ll use a combination of all three methods – a DEM map with some adjustments for the background mountains, a unique height map for the foreground mountains, and sculpting on top for close up details and camera details. Plus, rocks and trees.

 

To be continued with more terrain-building methods, soon…

Feb 152015
 

Having given it a bit more thought and time, here’s what I actually plan to accomplish this semester.

My design challenge is to create a procedurally modeled and shaded landscape with several different effect simulations. It will be a mountain scene: terrain, snow, rocks, and evergreen trees. There will be a bonfire with smoke rising into the sky, and snow – all of this affected by gusts of wind.

To break that down, there will be elements of:

Procedural modeling: terrain, rocks;

Procedural set dressing: trees, rocks;

Shading: snow, ground; and

Effects: fire, smoke, wind, snow.

All of this will be done in Houdini, which I will learn in the process. In other words, by the end of the semester I would like to be proficient in Houdini modeling, shading, and several different types of effects – in the form of a presentable (hopefully) project. We’ll see how far I can get! Here are some composition ideas I’m playing around with:

mountains_concept1

mountains_concept2

The fire in the second concept piece will definitely make its way into the final project. Ideally I would have multiple shots, but I’ll focus on just making one good 10-30 second shot.

Right now we are beginning week 4 out of 15 in our spring semester, and here is my plan of attack for the next three-something months:

Week 4: tutorials (modeling, particle effects), testing

Week 5: modeling the terrain (background), tutorials on shading

Week 6: modeling the terrain (background and foreground), tutorials on lighting

Week 7: modeling and set dressing the rocks and trees

Week 8: modeling and set dressing some more, tutorials on effects

Week 9: shading (terrain)

Week 10: shading (snow)

Week 11: lighting, effects (fire, smoke)

Week 12: effects (fire, smoke, snow, wind) <- in that order of priorities

Week 13: finish effects, render, composit

Week 14: render, composit

Week 15: (buffer week) render, composit

So uh… I start tomorrow.

Feb 102015
 

I am in the last semester of my undergraduate program. There’s much to be done. There’s the thesis film, there are classes, jobs, freelance projects, and there is more learning and discovering.

And while I still have access to free software on the lab computers, I might as well…

So I’m in this 3D Digital Design class, called Advanced Studio, taught by Shaun Foster. It’s all about research and discussions on technology and design, workflows, and tools. At the core of the class is a semester-long independent study project of our own choosing. Great, I can sit in my comfort zone all I want! But no, not really. Ever since my summer internship at Pixar, I’ve been craving to get to know Houdini better.

Great. So, Houdini is a powerful tool for any kind of effect or simulation, and that’s what it’s mostly used for. However, it has strong procedural capabilities for many stages of the 3D pipeline.

I watched a fellow intern and friend, James Bartolozzi, do amazing things with Houdini during our time at Pixar. He used it for far more than just particles and effects – he used a simulation to drive the motion of a school of fish, and made it interact with interfering objects (sharks). He built this impressive and visually stunning quartz cave environment, using just Houdini for everything but rendering:

After our summer internship, James went on to intern at Side Effects, coincidentally. No surprise that they took him in to make more wonderful things with their software. During his time there, he created this piece, the Hive, entirely in Houdini:

All of this showed me that here, in front of me, is a tool with many possibilities and untapped potential. And I’d like to explore it.

This semester, I’m making it my goal to learn Houdini, and use it to create a scene with a procedural environment and effects.

It won’t be the lofty goal that I wanted to do initially – not the monstrous integration of Houdini, ZBrush, Katana, and Nuke with a renderer that I’ve never used before. That would have been nice, of course. However, there is no way it would be possible for me to complete such a task in a semester when I have so many other things at hand. Therefore, I’ve scaled it down to just Houdini (and perhaps some Nuke for post if I have time), and exploring proceduralism and effect simulation within the software.

I’ve looked into some other 3D programs that could potentially tackle such tasks. For a while, I was set on Vue. Vue looked like my dream come true: making gorgeous painting-worthy sprawling landscapes in 3D. I’ve read reviews, interviews, and random views on Vue (see what I did there?), and it seemed as though most people who’ve used it praise it. It is used in the industry a lot, judging by the number of studios and films implementing it. However, there are some downsides to Vue, and ultimately, personal reasons why I chose not to go with it.

Vue is a tool to make matte paintings in 3D. It is used a lot in conjunction with Photoshop, Nuke, and sometimes Maya. Most of the people saying wonderful things about it are concept artists or matte painters. From this, I deduce that it is more an artistic tool than technical, and that’s why I chose not to use it. As a TD, I find it more worth my time to learn something technical that goes against the grain of my thinking and pushes me further. I can make pretty pictures on my own time. For this opportunity to learn and expand my skill set (and branch out into realms beyond traditional modeling and set dressing), I would rather choose something to challenge me.

Besides, it looked like most terrain-building tools came with lots of presents and required little technical prowess, and frankly, often appeared cheap in the quality of their renders.

So I’ll be using Houdini.

As for what exactly I’ll be doing: mountains. Here are some inspiration images that I’ll be going off of:

mtns_1

mtns_6

mtns_8

Mount Rainier National Park

I can’t promise that I’ll make something as magnificent as Mount Rainier, but I’ll give it my best shot.

Coming up next: concept art for the project and first Houdini tutorials to figure out what’s going on.

Apr 202014
 

The following images are brought to you from this semester’s various Lighting & Rendering class assignments. As I really wasn’t able to update my page with actual projects, here’s a whole bunch of screenshots of what I’ve been working on from February till now.

Render layers exercise, mimicking an art movement (fauvism):

Satanina_Project2_Fixes

Same scene, caustics exercise:

stuff1

Maya Software render:

stuff2

Interior scene, render passes and GI:

stuff3

stuff4

This is my favorite class of the semester, and definitely a very dense class in terms of new information and skills. I get to do the things I like best: concept art, modeling, texturing, and lighting.

Although, I must say, GI and Final Gathering and caustics can be evil. One time, I checked the “emit photons” box on an environment image map in my scene, and Maya promptly and saucily told me to save the scene and quit the program. Just like this:

“Error: fatal. The system may have become unstable. Please save the scene and exit Maya.”

At least it gave me a chance.

Apr 072014
 

Straight from Wikipedia: one of the nicknames for a helicopter in the English language is “whirlybird.”

I made a whirlybird! Specifically, a Sikorsky Blackhawk, for my friend Mark Logan. His film ARC will premiere at Rochester Institute of Technology, during spring screenings, in May. Check out the film’s Facebook page!

The task was to create a 10-second shot of a realistic helicopter moving into the frame and hovering in mid-air. Mark approached me at the beginning of last fall, asking if I would be up for the job. At that time, after a summer of working at RIT Production Services, I was very comfortable with Blender’s Cycles rendering system, and made the decision to tackle this project in Blender. I also still prefer Blender’s tools for hard-surface modeling over Maya’s (I love Maya for just about anything else, except caustics).

So many months later, here it is, from modeling to compositing, created in Blender and AfterEffects.

helicopter_progress04

helicopter_progress05

helicopter_progress06

Mark’s film is intense. Check it out. I can’t wait to see it finished. And I really hope that my part in it works with the rest.

Mar 292014
 

Last winter, I was hired by RIT Production Services. One of the luckiest things to happen to me in college. I am so very fortunate to be getting a production studio experience while taking classes.

At Production Services, I do a variety of tasks, ranging from concept art and design to 3D animation to visual effects. Every once in a while, have to track a camera. But for the most part, it’s a lot of fun! I work directly with the graphics manager and my student coworkers – graphic designers, motion graphics artists, video editors, and visual effects specialists. I also interact with the directors and sometimes contribute to meetings.

For 3D graphics, we primarily use Blender and AfterEffects. We just got Cinema 4D, and for my most current project I am learning the ropes of that!

Disclaimers: None of this material belongs to me. I do not own SportsZone, SZ Live HD, or any other name mentioned in the reel. I merely do the graphics. Not everything in the reel was done by me. For a breakdown with roles and contributors, go to the YouTube page of the reel. The music is “Wolf Like Me” by TV on the Radio. I do not own that either, using for non-commercial purposes only.

In other news, I finally caught up with culture and watched Frozen last night. Oh, man… So pretty. Such acting. So much work. Such hope for getting hired in the future.