Cycles is overwhelming. How do I learn?

I have been trying to use Cycles for a few months now and it is quite difficult to grasp. I know how to create basic materials and how to change shaders around. I understand moving nodes around and connecting them and everything like that. What I am having trouble with is the WHY of connecting everything. I have watched probably hundreds of tutorials at this point and have seen some extremely complicated shaders. Andrew Price from Blender Guru comes to mind immediately. He is extremely knowledgeable and knows exactly what to do to make a scene look exactly how he wants it. My question is how did he learn this stuff? Why do you know to connect a math node here or to use a color ramp node there? How do you know to use “Multiply” instead of “Add” or any of the other options on the math node.

Based on my experience, I could probably quite easily find out how to make a specific material based on a tutorial or soemthing in a book (I have also tried two books on Cycles). I am able to get the results the book wants me to get, and they look really nice. I want to know who came up with this stuff? Am I missing something? I want to be able to pull up the node editor and make the material I want exactly how I want without having to watch a 20 minute long tutorial or read 20 pages out of a book. I come from a programming background. The books for programming will typically explain the WHY very well. This WHY factor is very important in how I learn things.

I know through memory and repetition I could memorize all of this stuff, but I would rather know how to come up with it myself so I can do new and exciting things with Cycles. Please tell me what the best way to learn this stuff is. How did you learn how to do this?

I suggest you to keep in mind a few things:

  • a bit of knowledge of light interaction is good for shaders
  • Knowing how to program can help you to develop new textures or effects
  • Reading the Cycles manual will help you a lot
  • And a good base of trignometry and vector math may be usefull for some specifics results

Practice practice practice. Look at things around and recreate their material on a sphere or Suzanne head.

Also keep in mind cycles is among the simplest and most straightforward renderers out there in terms of usability. It’s definitely a good place to start.

I found this article provides some of the Why of Cycles: http://www.chocofur.com/6-shadersamptextures.html

The Why of Cycles is unfortunately spread across many information sources. I too am learning in bits and pieces as learning “Cycles” means learning: 1) Light/Shader/Material theory, 2) Render settings and optimization, 3) Node building/editing, 4) ETC… I’ve yet to find a comprehensive resource which explains the theory first in a satisfactory way.

Cycles is easy to use but a little hard to master, especially once you get out of simple diffuse or glossy material types. Best option is to take a shader like Andrew Price uses and figure out, one at a time, what each node is doing. Mess with the sliders and see the effects in the live preview. This has worked really well for me, at least for some shaders. Anything involving vectors, tangents, normal transforms or dot products are still confusing to me since I still can’t find a good explanation of what some of them are or how they work. I get it on a theoretical level, but I don’t know how to transform that into practice.

In Cycles there are (basically) two types of values that are transfered from node to node: Float values and Color/Vectors values. The difference is simple: a Float is a single value (just like 0.234 or -2.5), and the color/vector is an array of three floats (colors are supposed to be clamped between 0 an 1 in each array element, but sometimes this is can be abused). Vectors and colors can be decomposed, if you need just a particular element, or to perform some calculation between the elements that cycles doesn’t have by default.

As for all the vector information available in Cycles, well… some knowledge of computer graphics may be needed.
But is important to know how cycles uses the nodes. Whenever a point is about to be shaded, Cycles will setup some variables that anyone can access through the shader. This point, is normally a point on the surface of the object hitted by a ray that can come from anywhere (can be from the camera, or from anywhere in your scene). Variables like for example the coordinates of that point in relation to the world origin, or the object origin, or the correspondent location in the UV space are available. Also, the Normal will return the direction where that point is facing to, the TrueNormal will return the direction of the face without any smoothing, Incoming will return the direction where the ray is coming from, Ray Length will be the length of that ray. Reflection will give you the direction of the reflected ray by the normal vector, Tangent will return the X direction of the UVmap(if you have one) and is perpendicular to the normal…
These vectors are normally in world space. But it’s possible to transform them into other coordinate space.
With this information it’s possible to know almost anything you need to shade that point.

Dot and Cross products do exactly what they are supposed to do; Just plug two vectors in and the result will come out on the other side. The cross product will return a new vector and a lenght of that vector, while the dot will only return the dot product which is always a single float. Adding and subtracting vectors returns a new vector, and the normalize function will normalize the vector connected to the top socket. (here’s a more illustrative page)

Of course, all these functions alone don’t do any miracles, and a good understanding of the math involved is necessary to use the functions correctly. Try to take a look to shaders/textures code or read some texts about programming graphics, to see how people normally use all the vector math.

Some other information from the Cycles engine is also available to the shader, like which type of ray is being calculated, the bounce step, if the point is hitted from the backface, etc.