Lighting: Introduction

Pick 3 frames from one of your favorite films and try to identify the lighting techniques we learned.

《The Prestige》  Low-Key lighting. Hard light. A strong contrast. Robert is greeting the audience, the light in front of him is in sharp contrast with the darkness behind him.

《The Dark Knight》   Color Contrast, Hard light. Blue sky and yellow fire, Batman’s body shape is outlined by the light, and his lowness is clearly expressed.

《Memento》 Color, Three-Point Lighting. The audience’s attention would be focused on the character’s expression by lighting. At the same time, as the film progresses, the audience will gradually realize the difference between the timeline expressed in black and white and color.

Houdini:Week 02

The Houdini class this week has a lot of content, mainly introducing the usage of some nodes and the basic production of simulation. I will organize it into two parts.

Part 1:Node

Blast:Blast is designed to remove geometry that you select interactively in the viewport, as opposed to Delete node which is a more procedural tool.

Mountain: This operator uses normal attributes on the input geometry. If a normal has 0 lengths, this operator will not displace the point along that normal. This node can make the plane produce the effect of undulating mountains.

Attribwrangle: This is a very powerful, low-level node that lets experts who are familiar with VEX tweak attributes using code.

To use this node, you need to have a certain understanding of the VEX programming language. The convenience is that this node provides some simple effect codes.

AttribVOP: Double-click this node to build a VOP network inside. This node modifies geometry attributes. Compared with Attribwrange node, it is easier to learn, it uses a VOP network.

The P attribute can be understood as the coordinate value of each point, and the change in the shape of the model has been obtained by adding some noise values. The Bind node represents the binding of the input geometry to the vex function. For example, if you bind force you can pick up the attribute called force from your input geometry.

Part2:Simulation

After I finish the simulation, I think the whole process can be divided into three parts.

The first is selection. We have to select the part where we want particles to appear. This part can use the Delete node to select the part we want by controlling the normal range.

Of course, we can also perform other operations before this, such as scatter node, used to generate random points on the surface of the model, which can control the number of selected points. You can also increase the PointVelocity attribute.

After this is done, you can create a null node for output data, and the appearance of this node is also easy to find.

The second part of the simulation is mainly focused on a node called Popnet, which belongs to the DOP Network node. The DOP Network Object contains a DOP simulation. Simulations can consist of any number of simulation objects (which do not correspond to Objects that appear in /obj). These simulation objects are built and controlled by the DOP nodes contained in this node.

The pop source refers to the point we just selected, and the popsolver is the solver, which is used to calculate the motion effect of the final generated particles. Before them, we can add many different force to change the motion of particles. And Popobject converts a regular particle system into a dynamic object capable of interacting correctly with other objects in the DOP environment.

The calculated result can be cached by the filecache node for easy viewing.

But it hasn’t been completed yet, and nothing can be seen in rendering. Therefore, the third step is to add particles.

Here you need to use the Copytopoint node, it can copy geometry in the first input onto the points of the second input. Before that, we can also add size and color changes to the particles. Here we use the attribVOP node mentioned earlier.

Fit Range Node can take the value in the source range and shifts it to the corresponding value in the destination range. This operator takes the value in the source range (srcmin, srcmax) and shifts it to the corresponding value in the destination range (destmin, destmax). Values outside the input range will be clamped to the input range.

Here, age as the value, and life is the source value, which allows the properties of the particles to change with the change of age without exceeding their own life. Then by adjusting the destination min&max, the particle size can be changed. The same is true for changing the color. You only need to add another ramp node to make the particles have the effect of changing the color over time.

Houdini: week 01

I have learned Houdini 16.5 before, but I don’t know enough. I haven’t been able to understand Houdini’s production ideas thoroughly. At the time, I just thought it was a very powerful software, and I still didn’t understand the inner logic. Now I have the opportunity to learn again. I hope to learn Houdini thoroughly through this course.

I will record the process of learning Houdini here and try to be as clear as possible so that I can review it later.

Houdini’s software ideas are very procedural, which not only provides clear production ideas but also increases the difficulty of learning. I have studied programming for a while, and the process of learning Houdini is very similar. If you want to learn code, you must first learn its basic language, and the vocabulary of the language is a very important part.

In Houdini, there are a few main vocabularies to understand first: (Thanks Tina for sorting out, much better than what I wrote)

SOPs = Surface OPerators or geometry nodes that are inside an object folder. These are used to construct and modify geometry. Any kind of geometry from polygons to volumes.

DOPs = Dynamic OPerators or simulation/solver nodes that are used to construct simulations. Simulations read in geometry from SOPs and pass this data into the DOP solvers.

ROPs = Render OPerators in side ROP Output directories which are used to create render output dependency graphs for automating output of any type of data and for triggering external processes like rendering. Commonly used to generate sequences of geometry, simulation data and trigger Render tasks that generate sequences of images to disk.

VOPs = Vector OPerators inside VOP network nodes are used for everything from building shaders to modifying geometry, volumes, pixels, and more.

VEX = Vector Expression Language. The code language used to write shaders. VOPs are wrappers around VEX code snippets.

And there are also some operations on nodes:

bypass,which can be used to turn off or turn on node effects
display/render
template/selectable template, which can display the wireframe of the model for reference, etc.
information
lock

There are other contents, I plan to learn the relevant and then record, the main content that I have come into contact with is these.

This week’s task is to build a wood cabin in Houdini. The operation of modeling is basically the same as other 3D software, such as boolean, extrude and reverse.

However, the Houdini node-style method allows each step to be clearly saved, and when there is a problem, you can check the problem step by step.

In this part, I am most concerned about the Delete node. It is a bit similar to the extract face function in Maya, but it is more programmatic. It can filter out what we need or don’t need through the normal value. But this is a more commonly used function.

This is the basic structure of the wood cabin:

We can build a model of the wooden board to replace this frame. Here I need to use the copy node, which can quickly copy the model and arrange it in a certain rule.

Here I also used the Polybevel node, which can increase the corner details of the model to make the model less sharp. I learned how to use this node by looking at Houdini’s official documentation. This required selecting the edge we wish to modify.

After the whole process of making a woodcabin, the biggest touch to me is the way of thinking in Houdini. When I want to make another wooden wall, I will not directly copy an already-made wooden wall like in Maya, but recreate a transform node. The model is still the same, but with different positions and sizes. Although the result looks the same as copying, this way of thinking is very helpful to me, clear and logical.

This is the wood cabin I finally made: