Blender is a beast. It is one of the most impressive feats of FOSS ever created.

Contents

Resources

Instruction

The only problematic thing about Blender is that, like many of the best tools for professionals, it is horrendously difficult to learn. Fortunately there are some good resources to help.

Models

Why start modeling from scratch when you can use someone else’s model that they want you to use? I don’t yet know which of these sources suck and which ones are good, but I’m listing them here for completeness. I got the following list from here.

Textures

3-D Modeling

X is red, Y is green. Right hand coordinates, Z is up and blue.

Window Layout

To split windows into subwindows, drag the upper right corner down (horizontal split) or left (vertical split). To combine windows, make sure they are the same format (e.g. one big pane doesn’t go right into 2 horizontally split panes) and drag the upper right corner up or to the right.

A huge tip for people with multiple monitors is that you can detach windows by doing the same drag of the upper right corner, just hold down Shift first. Which way you drag doesn’t matter—the window is just cloned with it’s own window manager decoration.

Mouse Buttons

  • MMB - (Middle Mouse Button) rotate (orbit) view

  • [C]-MMB - scale view (zoom/move view camera closer)

  • [S]-MMB - pan view (translate), reposition view in display or, as I like to think of it, "shift" the view

  • [S][C]-MMB - Pan dolly a kind of zoom along your view

  • RMB - selects objects (object mode) or vertices, edges, faces in corresponding edit mode

  • LMB - Position 3-d cursor

  • [S][A]- RMB - Loop select, select all lines and vertices of a loop connecting selection point.

Keyboard Shortcuts

There are 1000s. Here are some that seem useful that I don’t want to forget.

  • [Space] - Brings up the "search for it" menu. Just type the thing yo want and that option is found often with its proper key binding shown.

  • [Tab] - Toggle Edit Mode and Object Mode

  • [C]-[Tab] - Toggle vertex, edge, or face mode, i.e. [C]-[Tab]→e for edge mode, [C]-[Tab]→f for face mode, and [C]-[Tab]→v for vertex mode.

  • [S]-[Space] - Toggle exclusive expansion of current view.

  • [HOME] - Zoom extents.

  • n - hide/show main "3D View" "Properties Shelf" including modeling properties like "Transform", "View", "3D Cursor", "Item", "Display", "Shading", "Motion Tracking", "Background Images", "Transformation Orientations"

  • [C]-n - Reload Start-Up File (object mode) OR make normals consistent (edit mode)

  • t - hide/show main "3D View" tool shelf "Transform", "Edit", "History"

  • a - toggle select all and select nothing

  • [S]-A - Add menu (in Object mode)

  • x - delete menu, usually x then enter deletes selected vertices

  • z - toggle viewport shading between "wireframe" and "solid"; there is a pull-up menu on the "3D View" toolbar with more options like "bounding box", "rendered", "material", and "texture"

  • [C]-z - Undo; also found in the "Object" or "Mesh" pull-up menu in the 3D View toolbar

  • [S][C]-z - Redo (in theory)

  • [C]-i - Invert selection

  • b - Box border select

  • e - extrude selected items

  • [S]-D - Duplicate object

  • [A]-D - Linked duplication object - geometry is only stored once. Like a symlink.

  • [S]-R - Repeat last operation (duplicate for example)

  • [C]-b - draw a box which, when switched to "render" mode will render just a subsection

  • [C]-LMB - In edit mode, extrudes a new vertex to the position of the mouse target. Can be used like repeatedly extruding but without the dragging.

  • [C]-MMB - Amazingly, this can scale menus. For example to make them more readable or make more of it fit.

  • [A]-C - Convert. This converts some fancy object like a metaball or a path or text to a mesh. Or covert the other way from mesh to curve.

  • w - Specials menu. Things like subdivide.

  • [C]-v - Menu for operations relating to vertices.

  • [C]-e - Menu for operations relating to edges.

  • [C]-f - Menu for operations relating to faces.

  • k - knife operation.

  • j - join (connect) points in edit mode. Makes two faces from points on one face. Similar to the knife effect. Note that f does a similar thing but it leaves a rogue edge lying on the face.

  • [C]-r - Create a loop cut.

  • [C]-b - Bevel operator (i.e. chamfer). Mouse wheel adds radius segments (i.e. fillet).

Edit Mode Keys

  • [C]-[Space] - Turns off the manipulator widget, the thing that has the 3 axes that you can pull.

  • l - select all vertices, edges, and faces that are "linked" to the geometry the mouse pointer is hovering over. Note that you can selectively choose from a face if the face mesh select mode is on. Or edges the same way.

  • p - Separate geometry from the same mesh into multiple objects. The "loose parts" option makes each air gapped structure its own object.

Object Mode Keys

  • L - Make local menu.

  • [F6] - Edit object properties. Useful for changing the number of segments of round objects when you don’t have a mouse wheel.

Here is a necessarily bewildering key map reference from blender.org.

Note that if something like [A]-LMB tries to move the entire application window because that is how the Window manager is set up, it’s worth the effort to change that over to the Not-Exactly-Super key. For me on Mate, I go to System → Preferences → Look and Feel → Windows → Behaviour → Movement Key. Fixing that helps a lot with Blender.

Views

  • / - Toggle global/local view

  • [Home] - View all

  • [S]-F - Fly mode to AWSD controls (also E&Q for up/down, escape to exit)

  • . - View selected (Maybe only numpad)

  • 5 - Toggle Orthographic/Perspective

  • 1 - Front

  • [C]-1 - Back

  • 3 - Right

  • [C]-3 - Left

  • 7 - Top

  • [C]-7 - Bottom

  • 0 - Camera

  • [A]-h - Show hidden

  • H - Hide selected (also note [C]-LMB on the eye in the Outliner hierarchy)

  • [S]-H - Hide unselected

  • [A]-M - Merge - Makes two vertices the same. Or at least in the same place.

Note that the number keys are 10 number pad number keys; if the number keys want to change layers you may need to set "Emulate Numpad" in File → User Preferences → Input tab.

Clipping Seems Stuck

Sometimes you’re looking at a model and it disappears and it becomes very difficult to find. This can happen when the clipping planes are set such that the whole model is cut out. To fix this, bring up the tool menu with "n" and then look for the "View" section and adjust the "Clip" values. Setting "Start" to 0 is a good way to try to get things back to visible.

Scaling/Panning Seems Stuck

Sometimes it seems like you can’t zoom or pan the view. The trick here is to get the 3d-Editor window and go to ViewView Selected. This has a shortcut of . on the numberpad (if you have one). That’s super frustrating so this tip can be very important.

Another solution that may be easier is to be in object mode (perhaps by pressing tab) and then press the "Home" key. This resets the view stuff. It would be nice to figure out what’s really going on there but persistent confusion may exist.

Background Images For Reference

A very common workflow technique is to freehand sculpt 3d assets on top of (or in front of, etc) a 2d reference image. These images don’t hang around for final rendering and are not part of the model per se. They are just available as helper guides to put things in roughly the right place so they look good with respect to reference material.

Make sure the "Properties Shelf" is on with "n". Look for "Background Images" down near the bottom — you might have to scroll. Click "Add Image". Select your image from the file system. The rest is pretty self-explanatory once you find it. If nothing shows up, you may not be aligned to the correct view. Pressing 7 will show a reference image set to display on "top" views.

If that still doesn’t work, you are probably in "Perspective" mode even though you pressed 7 and it sure doesn’t look like it. Double check that it does not say "Top Persp" in the top left corner of the modeling window — it should say "Top Ortho". To toggle, make sure the mouse is hovering over the modeling window and press 5.

Remember that the control settings can be specific to a window. For example, you may have a top down view that is blocked by your model. You set the top down view property to "front" and nothing happens. But if you set that property in the side view, it will be thinking that’s what you want only in that window if you change to top view. To have the window showing your top view take those properties, you have to go there and press "n" to open the properties and set it there.

Origin And 3D-Cursor

I find the distinction here can be tricky to get used to.

The origin is the tri-colored unit vectors with a white circle around it. The 3d-Cursor is a red/white circle crosshairs. Position the 3D-Cursor by LMB; note that it should stick to the things (e.g. faces) sensibly. Note that this is less obvious in wireframe mode. When in "Object Mode" in the tool shelf, there can sometimes be an "Edit" submenu; in that can be found a "Set Origin" pull down. This includes "Geometry to Origin" and "Origin to Geometry". Also "Origin to 3D Cursor" and "Origin to Center of Mass".

  • [S][C][A]-c - Bring up menu for origin management

  • . - Move origin to 3D-Cursor

  • [S]-C - center view on something pleasant and move the 3-d cursor to origin

  • [S]-S - Open snap menu, handy for putting the 3d cursor to selected or grid, etc. One of the best techniques for positioning the cursor is to use [S]-S and then "Cursor To Selected" which will put it perfectly in the middle of the face.

3d Cursor

When you click with the most natural LMB click the 3d cursor is placed. Clearly it is thought to be important. What the hell is it good for?

  • It is where new objects will show up.

  • The "origin" can be moved to it.

  • It can be where things rotate if you set — pivot point (button right of display mode button) → 3d Cursor

  • Optionally where the view rotates — "n" menu → "View" Section → "Lock To Cursor" checked — This is worth doing!

    C.scene.cursor_location             # Query
    C.scene.cursor_location= (0,0,1)    # Set
    C.scene.cursor_location.x += .1     # Increment X in a controlled way

To see where this comes in handy, see measuring distances.

Measuring Distances

Note
Previewing the Beta for 2.8, I see that it has a prominent feature to measure stuff! Yay! How this got overlooked until now is a complete mystery.

What if you simply want to know the distance between two points in your model? Not so easy at all with Blender! (Well, at least according to this very bad answer to the question. My technique is as follows.

  • Select the object of the first point.

  • Tab to be in edit mode.

  • "a" until selection is clear.

  • Make sure vertex mode is on.

  • Select the first point.

  • [S]-s to do a "Cursor to Selected".

  • In a Python console type this: p1= C.scene.cursor_location.copy()

  • Select the second point in a similar way.

  • [S]-s to do a "Cursor to Selected" again.

  • In a Python console type this: p2= C.scene.cursor_location.copy()

  • Then: print(p2-p1)

Also in Edit mode, under "Mesh Display" there is checkbox for showing edge "Length" info. But that has its limitations too if the points are on different objects. Note that this can show comically incorrect values! The problem is (may be) that an object was scaled in object mode and the transformation was not "applied". Try [C]-a to apply transforms. I was able to go to object mode, select all with a, and then [C]-a and then apply rotation and scale. Details about this problem.

Volume Measurements

Sometimes you want to design something complicated and know how much concrete or 3d printing pixie dust the thing will require. Blender has an extension called Mesh:3D Printing Toolbox which can do this. Just go to user preferences, "Add-ons" and check it. Then you’ll get a tab for that. You can then click volume or area for a selected thing and go to the bottom of that panel to see the results.

Layers

Those little 2x5 grids in the menu bars are layer slots. To change the layer of an object, select it and press "m". This brings up a layer grid to select where you want it. To view multiple layers you can click on the boxes in the grid using shift for multiple layers.

Objects

Objects can be dragged around and placed in different hierarchical arrangements in the "Outliner". I’ve had this sometimes get stuck and it’s pretty strange, but reloading can cure it.

Having a good object hierarchy can make operations easier since it allows finer control of hiding or excluding from rendering.

To create a different object that is not part of an existing mesh, use [S]-d for "duplicate" and then hit the "p" key which will bring up the "separate" menu allowing the "Selected" object (or "All Loose Parts") to be made into their own objects.

The complimentary operation is to join objects. For example, if you input some reference lines on a boat hull and each is its own object, you can’t put faces on them. You must join them to the same object first. In object mode, select both of the objects and pres [C]-j and they will be part of the same mesh.

Simple Things Not So Simple

With Blender it is strangely easier to model a cow than a simple Euclidean line. Seriously, just getting a simple line is strangely challenging. I’m not the only one who ran into this (here and here).

As far as I can tell, you must create a complicated entity (like a plane) and remove vertices until it is as simple as you like. There may be a better way to get started, but I don’t know it.

Use [A]-m to merge vertices to a single point!

Once you have chopped something down to a line (or even a single vertex), you can extend that line to new segments by Ctrl-LMB; this will extend your line sequence to where the live pointer is (not the origin thing).

Another similar way is to select the point to "extend" and press e (for "extend") and then you can drag out a new line segment. This is less precise in some ways because it is not right under the mouse position. However, this technique can be very helpful to press e and then something like x then + then 3 which extends the line sequence to the positive X by 3 units. Not putting the sign can result in absolute coordinates. Press Enter when you’re done.

Tubes, Pipes, Complex 3d Shapes

A very common task I have when modelling is something like a racing bicycle’s handlebars or a curved railing or equipment rack, etc. Any kind of free-form piping or tubing. Of course there is a way to do this in Blender and luckily it’s not too horrifically difficult.

This video explains the technique. Here’s another video that may be even easier. They are similar in concept. Basically, you need to create two objects.

  • A "Path" under Add → Curve → Path which will guide the pipe’s trajectory.

  • A "Nurbs Circle" under Add → Curve → Nurbs Circle. This will be the pipe’s profile. Note that this is not a regular mesh circle!

Select the pipe path’s properties in the "Data" section of the properties menu (between the Materials and Modifiers). Go down to "Bevel Object" and choose your profile Nurbs Circle.

From there simply select the path and go to edit mode and manipulate the path’s spline.

To finish up, you can select the pipe and press [C]-c and choose mesh from curve. Now you can delete the circle.

Mapping Complex 2d Shapes

The most common problem I have to solve with Blender is not sculpting a cube into a bunny but rather taking something engineered product from the real world and modeling it. Real world things usually aren’t so organically 3d and there are aspects of them that the designer simplified. For example, let’s say I’m trying to model an intersection for a vehicle simulation, I can pretty much assume that the designer of the road first thought about it in two dimensions before moving onto worry about camber and slopes. My workflow is very similar.

I often take a reference photo as described and what I want to do is just trace some geometry around important features to get started. But Blender, as far as I can tell, is terrible at this simple task. Well, it certainly does not emphasize it as important workflow, but, like all things in Blender, it is possible.

In object mode (tab to toggle) use the menu Add → Mesh → Plane and put a plane near where the geometry in question starts on the photo. Then "gZ" to move (in XY only) the plane square so that one of the points is where one of your model’s points should be. Go to edit mode (tab) and get rid of half the plane with "ab" (select all, bounding box) and grab two of the most incorrect points with a box. Then "x" to delete the vertices. Oh, another way is to have them all selected and do [A]-m and "Merge at Center" which will leave you with a single point at the center ready for action.

Now you have a line with one of the points correctly placed. Still in edit mode, select the incorrect point and "gZ" it to a correct location. With it still selected, do "eZ" to extend that point into a new line/point and put that on the next feature point of your model. Continue repeating this extending until you have the whole thing outlined.

Note that it’s just weird lines unless you can close them back up. For the final point that should be back where you started, you can put the point anywhere near. Then use "ab" and select both the beginning and ending point and do "[A]-m" to merge them. You may need to reset their location but that should be it.

Now with all the points of this object selected you can "ez" to extend in the Z axis and give that some thickness. You can use "f" to but a top and bottom on it. Now you have a complex shape that you can sculpt.

Insert A Vertex

My main modeling strategy is to make long chains of line segments that fit the geometry in all views and then later join and face them. This means that I often am making long line extensions that turn out to need another vertex when the curve from another axis is taken into account. How can a vertex be added between two existing ones? In edit mode I select the two bounding vertices and press [C]-r and then enter. The enter is important or it won’t take.

Knife Tool Cut

  • [Space] - finishes knife tool operation

  • S - suppress the auto snapping.

  • [C] - snap to midpoints

Modifiers

When I first was learning Blender I couldn’t quite understand exactly what the "modifiers" were doing or when or to what. For example, some modeling software keeps lists of boolean constructions instead of actual geometry. The resultant geometry is just calculated on the fly when needed. So are Blender modifiers like this? Not exactly.

Modifiers are a way to truly modify some mesh geometry. The confusion arises because they can be set up and sometimes previewed before the target geometry is actually modified. They can be stacked so that two modifiers are set to modify some geometry and if you like how it’s going, hit apply and they actual modification will be done. Generally you’ll want to start at the top modifier and keep hitting "Apply" as the rest bubble up to the top to do multiple modifiers.

Modifiers show up under the object in the hierarchy while they’re being adjusted. They disappear when you "Apply" them.

There are a ton of these modifiers — so many that it’s hard to keep track of them. A very good resource is the Modifier Encyclopedia which contains descriptions and examples.

Mesh Cache

Modify Category
  • Mesh Cache - Reuse rigged characters for crowds and exporting.

  • UV Project - Adjust a texture by orienting an empty object.

  • UV Warp - Like UV Project but can be animated for scrolling and other effects.

  • Vertex Weight Edit - Animate changes to vertex weighting.

  • Vertex Weight Mix - Vertex weighting from variable sources.

  • Vertex Weight Proximity - Changes weighting based on distance. E.g. something melting near a heat source.

Generate Category
  • Array

  • Bevel

  • Boolean

  • Build

  • Decimate

  • Edge Split - Useful for smoothing except where you want sharp edges. Puts a sharp edge on angles sharper than a certain threshold or thus marked by the sharp attribute (which seems to be a thing). Also handy for normal fixing when exporting to Unity. Details.

  • Mask - a way to turn off certain vertex groups. Also for hiding meshes not related to the bone you’re currently rigging. Details.

  • Mirror

  • Multiresolution - for L.o.D. model sets

  • Remesh - Turns meshes into quads.

  • Screw

  • Skin

  • Solidify

  • Subdivision Surface

  • Triangulate

  • Wireframe

Deform Category
  • Armature

  • Cast - morphing animations

  • Curve

  • Displace - deforms based on a texture map. Interesting for topo maps.

  • Hook - pull other objects' vertices when interacting in animations.

  • Laplacian Smooth - denoise rough textures but keeps the overall shape.

  • Laplacian Deform - keep relationships intact while deforming the model. Similar to using bones, but more rubbery.

  • Lattice - Deform mesh to conform to a cage.

  • Mesh Deform - Deform a mesh using another mesh as a control.

  • Shrinkwrap - Conform a spline to a mesh; good for a road on terrain.

  • Simpe Deform - Twist, bend, stretch, taper in ways that can be animated.

  • Smooth - Smoother than Laplacian Smooth but letting the geometry get lower fidelity.

  • Warp - Animate part of a mesh deforming to a different location.

  • Wave - Things like a flag blowing. Looks like simple trig function.

Simulate Category
  • Cloth - Complex cloth physics.

  • Collision - Objects falling and behaving correctly.

  • Dynamic Paint - Objects leaving trails behind as they do physics (as in Collision).

  • Explode - Like build but with animations to make the parts fly away.

  • Fluid Simulation - Useful for the quantities of liquid involved in a glass spilling.

  • Ocean - A bonkers accurate simulation of open water waves, with wind and chop, etc.

  • Particle Instance - Change mesh of particles.

  • Particle System - Grass, hair, all kinds of fancy stuff.

  • Smoke - puffs of smoke.

  • Soft Body - like a body with no bones. Or a water balloon.

Array

Repeats a line of objects. If you want a higher dimensional array, stack multiple modifiers. It doesn’t seem to have an option for making a linked duplicate which is too bad.

You can use an empty (which is an object type) object and use that in the "Object Offset" field to control the offset, rotation, and scale of each object with respect to the previous. This sets you up to have interesting tentacle-like constructions (e.g. scaled and rotated).

Unfortunately just doing a simple polar array (e.g. bolt circle) seems quite tricky. The second half of this video does cover this, but it isn’t super obvious or easy to use (something involving adding an empty to the center of your polar array and disable relative offset and enable object offset, oh and make sure your geometry center is in the polar center). If you fuss with it enough, it can theoretically be used for spiral staircases and helices like DNA, etc. It might be best to just add a circle and change the number of vertices and then place things to them using the 3d cursor. Not fun or easy, but at least no heroic mental gymnastics.

Interestingly the array modifier can also be used to get the effect of tube bending (bicycle handlebars, corkscrews, etc.). This is not exactly easy, but if you set up a hollow profile of your tube and the array it with a relative offset, you can then add another modifier, a curve modifier which can constrain the path of the arrayed objects. You can add a bezier curve to guide the path and then link that as the object of the curve modifier. The same video has a very quick demonstration of this towards the end.

Bevel

This basically can break sharp edges with what machinists call chamfers (1 intermediate surface per edge) or fillets (rounded edges, in Blender that means as many subdivisions as you’d like to allocate). There are other tools that can do this but they suffer from the extremely annoying problem of requiring a scroll wheel. If you do not have one that is convenient this modifier can be a big help. If you only want a subset of your object’s geometry affected by the bevel operations, just define a vertex group (Edit Mode → Mesh → Vertices → Vertex Groups → Assign To New Group). After that the vertex group will probably be gone so you might want to Remove From All in the same menu.

There is a non-modifier operation that does bevels tool. The important key binding is [C]-b but only if you have a scroll wheel. This tip discusses and shows both methods.

Boolean Composition

A very powerful way to construct complex but realistic geometric shapes is to compose them as a series of additions and subtractions of simpler shapes.

The operation I find most useful is subtraction. Imagine an apple as shape A and a bite out of the apple as shape B. The Apple logo could be described as A minus B. To achieve this…

  1. Select the A shape.

  2. Go to the modifiers wrench in the properties bar.

  3. Choose "Add Modifier→Boolean"

  4. Change "Operation" to "Difference".

  5. To the right of the Operation click the "Object" button.

  6. Select the B object from the list.

  7. View the previewed change with wire frame mode.

  8. Commit to the change with "Apply".

  9. B may disappear and A will be suitably modified. Or B will still hang around and you have to manually erase it leaving the subtracted A.

The other modes work similarly.

Build

This allows animating the appearance (or disappearance) of all of the faces in an object. Give it a starting frame and an ending frame and the objects will start at nothing and by the end frame create the whole object. You can use "Randomize" to have it fade in or disintegrate like it’s being teleported. If you want it to have a definite order search (Space) for the "Sort Mesh Elements" menu and choose the order you want the faces. "View Axis" builds farthest away from you first and fills in towards you so you don’t obscure the building. This might be good for an effect like leaving interesting tracks behind a vehicle.

Decimate

Only works in object mode. Ratio of 1 leaves 100% while 0 removes them all. Of course nothing happens with this modifier visually and you have to apply it to see any evidence at all that it worked. The nice bonus of this modifier for people like me who think computer graphics should be based on triangles is that the new mesh will try to be triangles. Yay!

Mirror

Unfortunately there are only 873 ways to mirror objects in Blender — all of them are pretty baroque.

The most basic non-modifier way is to just basically do a single axis scale of -1. If a mirrored copy is needed, duplicate the object first. The real trick is to mirror about some specific point. It can be done but like all point specifying in Blender, it can be way harder than it should be.

Here’s the process for modelling a single symmetrical thing. This is different than two distinct symmetrical bookend type objects.

  1. Model one half of your boat, car, person, etc. Let’s say the starboard side only for this example. Just leave the port side completely empty. Plan all your modeling to leave port blank.

  2. Round up all the center points (bow, keel line, etc) and make sure they are the same. Ideally if the boat is pointing toward positive X and centered on the origin then make sure that all the center points have a Y of 0.

  3. You must establish the pivot point. This will be the orange dot for the object.

    • [Tab] for edit mode.

    • Select a vertex on the centerline.

    • [Tab] for object mode.

    • [C]-[S]-[A]-c

    • Origin to geometry (if it balks check mode!)

    • Select the object to mirror.

    • [S]-d to duplicate it (or not to just invert some geoemtry).

    • "s" for scale.

    • "x", "y", or "z" for the axis to scale.

    • "-1" to invert the values.

    • Select the other one and [C]-j to join them if desired.

    • Fix normals. Try [C]-n or [C]-[S]-n maybe.

Note that the Mirror modifier is a way to generate mirrored geometry. This instantiates when the modifier is "applied" leaving you with new geometry on the object which can then be independently changed. It is reasonable to model a symmetrical thing with this unapplied modifier dangling the whole time. There is, however, a technique I like better using linked copies. I think the overhead is similar.

To make a proper and efficient symmetrical thing, say the hull of a boat, a decent technique is to create a linked duplicate (with [A]-d). This has all the placement and scale properties of an independent object, but its mesh data comes from the original from which it was cloned. Therefore you can make a linked duplicate and then scale that around an axis by -1x as long your geometry origin is on your mirror plane. This way you can continue to just work on one half (port) while the other (starboard) half takes care of itself.

Just don’t forget to make your pivot point the 3d cursor! See 18:37 here to see what I mean. (It defaults to the geometry Median Point.)

Screw

What the calculus books call "solid of revolution". This can do helices too (a little easier than the array modifier). This one seems reasonably straightforward, but if not, here’s a decent demo.

Skin

This is a very neat modifier that can take some reasonably simple wire frame thing and puff it out into a full mesh. If you just apply this to a poly-line of edges you’ll get a square tunnel following them. (By the way, [A]-c will help you convert a Bezier path to some geometry.) Mostly this seems good for getting some rough stick figures and then getting some rough "clay" on them for further sculpting. Note that you can have it leave behind the stick figure’s sticks as proper Blender armatures.

Triangulate

In computer science there are only triangles but Blender is strangely shy about letting that be known. If you like triangles you can divide meshes into triangles with the triangulate modifier. This modifier works well and has several fancy fine controls. Remember when dealing with modifiers, you may need to apply this in object mode, but the results won’t be interesting until you’re in edit mode.

Another way to do this without modifiers is Mesh → Faces → Triangluate Faces or [C]-T. Here’s a Python command line for the same thing.

bpy.ops.mesh.quads_convert_to_tris(quad_method='BEAUTY', ngon_method='BEAUTY')

Another way which is wasteful but aesthetically balanced is to "poke". This puts a vertex in the center of a polygon and triangulates radially from it. This is also in Mesh -> Faces -> Poke Faces or [A]-P.

Solidify

This takes a two dimensional zero volume shell and gives it some thickness. It creates an inside and an outside. The exception is if you solidify a 1d thing with no area (a circle or line). Then you’ll get a thicker circle or line. The "Fill Rim" option makes sure the inside is completely enclosed; without it, you’ll get two disconnected shells, an inside one and the original outside mesh.

Wireframe

This takes a mesh, actually, probably only faces, and replaces the edges (and face) with a thin but solid shape. This makes the edges into more substantial geometry. You can also leave the faces by leaving "Replace Original" unchecked. I feel like you can’t do much with this to have custom wire profiles, but if you just want a simple lattice made from mesh quads or triangles, this can quickly make some striking geometry. Good, for example, for making an ornate lattice partition or lampshade. This could have very cool shadow effects.

Lamps

  • Point - Omnidirectional point (e.g. normal light bulb)

  • Spot - Directional point (e.g. theatrical spotlight)

  • Area - Light producing area (e.g. window, TV)

  • Hemi - Soft distant light (e.g. cloudy sky)

  • Sun - distant directional light (e.g. sunlight)

Diffuse is when light scatters as on a rough surface. Specular is where the angle of incidence is equal to the angle of reflection.

Rendering

Exporting To Unity

  • File → Export → FBX → Write a FBX file

  • Forward = -Z Forward

  • Up = Y Up

  • Check "Apply Transform"

  • Click and highlight only the "Mesh" option under "Apply Transform"

Partially

Use [C]-b to select a box to render. This puts the powerful and resource hungry rendering engine to work only in this region of interest.

To clear this rendering ROI box [C]-[A]-b. This is important if the ROI box was done in the camera because that is how the final animation will be done.

In the Sampling section of the Render properties, the Samples box contains two fields, "Render:" and "Preview:". The Preview one is for what is rendered in the preview box set with [C]-b. This can be very helpful to determine the level necessary for a more complete render.

Camera Positioning

If you really have your act together, you can be very explicit of course, but I often need to move around looking at the scene as the camera will see it. To do this easily, use 0 to get to the camera view. Then go to View → Navigation → Walk Navigation. Now you can use WASD to pan around (also E for up and Q for down) and the mouse to aim the camera. Once you think it’s a decent shot, press F12 to render it.

Camera View Properties

Although it is a somewhat exotic application, one thing Blender can do really well is show you roughly what some real cameras would have in frame by matching those cameras in the model and rendering. The render is exactly the same (or trying to be) as what a real digital camera of the same resolution is seeing. The trick then is how to match your Blender virtual cameras to the exact specifications of your real ones. This Q&A addresses the issue. The basic strategy is to go to the (SLR-looking camera) Render icon and go to Dimensions and set the pixels there. That sets the aspect ratio. Then go to the (Movie camera) Data icon and look for "Field of View". This field of view angle seems to apply to the axis with the largest number of pixels and the other axis is scaled appropriately. This means a 1000x2000 render with a 90 degree FoV will have that 90 degrees in the vertical orientation.

Performance

Also note that you can change the level of detail of the rendering to speed up test renders. To find this go to the "Properties" bar; choose the "Render" button which looks like a camera; look for the "Sampling" section which is between "Freestyle" and "Geometry"; in this section look for the "Samples:" fields; specifically look for the "Render:" field. A value of perhaps 1024 is pretty decent and takes a while and a value of 32 or 64 can make things go quickly for previews. I don’t know exactly why sometimes this Sampling section is absent but this seems to be the important thing to adjust for grainy quality problems.

If you have access to a fancy GPU, rendering might be faster. But it might not. This is not a slam dunk in the Blender world like in other applications. If using a GPU consider adjusting the values in "Render→Performance→Tiles→Center→(X,Y)" to something larger than the normal "16" that seems pretty decent for CPU rendering. Note that if you do have a fancy GPU that is competitive or superior, you can run two instances of Blender, one rendering with the CPU and another with the GPU. I can’t easily think of a better way to punish a computer’s entire capability!

Single Image

Sometimes you don’t need a video and you just want a still render of your scene. Go to the UV/Image Editor window type at the bottom of the rendered image. Got to Image and then Save As Image. Also F3 works.

To Images

It often makes a lot of sense not to render to a full video file. If you have hundreds of frames and Blender crashes at frame 300, if you’re rendering directly to a video file, you’ll need to solve the problem and start from the beginning. Rendering to images, therefore, usually makes a lot more sense. This also allows you to distribute the load of rendering between many different computers.

The important trick is how to assemble the still frames into the final video file that you want. You can use another tool like this.

avconv -i %04d.png -r 24  -qscale:v 2 xedlamp.mp4

This will take everything named something like 0003.png and create the video file. Also explore ffmpeg if that’s currently in vogue on your system (see my video notes for annoying details).

Here’s another trick to get an animated gif.

convert -delay .033 -loop 0 lamp*.png xedlamp.gif

Or here are some fancy ImageMagick options.

convert -quality 5 -dither none -matte -depth 8 -deconstruct \
-layers optimizePlus -colors 32 -geometry 400x -delay 2 -loop 0 \
frame*.png a.gif

Note especially -delay 2 which seems to be the minimum value. Anything less will make, strangely, add much more delay ref. Also note that if there are errors, the optimizer might need more room. See this.

You can also use the Blender video editor and "Add" "Image", select all the images and eventually export it when you’re happy. See video editing below.

Remotely

One obvious example for normal people is letting AWS do the heavy lifting for you. This way you can optimize the type of engine you use (GPU or CPU) for your project and get all of that heat out of your house. Step one is to set everything up exactly like it needs to be in your Blender project. Make sure that if you were using a GUI session you could just open the project and hit [F12] (Render Image) and everything would work perfectly. If that’s the case, log into your remote Linux system. Make sure Blender is installed. Thankfully that’s easy.

sudo apt-get install blender

Rsync your project to the remote system. Run the render with something like this.

blender -b chessScene.blend -o //chessScene -F PNG -f 1

This will produce a file chessScene0001.png with no GUI fuss.

To do a complete animation use -a for the whole thing or pick specific frames with -f 1..20 or something like that.

blender -b lamp.blend -o //lampoutput -F PNG -a

Of course one problem with this strategy is that you can send up some geometry that is pretty lean and render it into lavish high frame rate bit maps; this can blow up the size considerably. So just think about that with respect to any transfer/storage fees that might exist. If you just happen to have access to an awesome private GPU machine, go for it!

Open Shading Language

OSL is used by the Cycles render engine. Examples of it can be found in /usr/share/blender/scripts/templates_osl.

Rigging

I’m mostly interested in simple machine simulations. This should be easier than rigging a human ninja, but strangely it is not. Here’s a resource for "Animating Industrial Robots With Blender". WIP…

Here’s a good video showing the normal rigging of a normal biped figure.

Animation

Timeline

  • [A]-a - Play animation or if in progress, stop animation.

  • [A]-[S]-A - Play animation in reverse.

Keyframe

  • i - insert keyframes. This is important to get the yellow line key frames to show up. Use i again for the next place. Also to interpolate values of a miscellaneous blender variable, you can hover over any slider bar and press i. Note that when editing the objects' position, this is not automatically updated on the keyframe and will revert (unless auto record is on); just make sure to press i after every pose edit.

  • [A]-i - Delete keyframe. Put current timeline frame on the desired keyframe and put the cursor over the main 3d window.

When the value fields in the properties menu show up yellow that means they are showing the value of a selected keyframe. When they show up green, that is one of the frames which is being interpolated. (So it seems to me.)

The red record button on the tool bar is to do automatic keyframes. With this engaged, LocRotScale changes are automatically assigned to the current time location as a keyframe.

Dopesheet

To move all of the animations such that the effect is inserting more frames in the animation, you can go to the dopesheet and press a to select everything. Then press "g20" to move everything 20 frames forward.

Python

The documentation is mysterious and this seems an arcane topic, but this link to official documentation is extremely helpful.

A good test tuple is bpy.app.version

After looking at the quickstart guide you can start to appreciate the Python attributes and operators shown in UI hover tool tips.

Fix Autocomplete Key Binding

First off the default keybinding for autocomplete in the console simply won’t do (it’s [C]-Space). Go to "File→ User Preferences→ Input→ Console→ Console Autocomplete" and fix it to Tab.

Coordinates

From the Python console this will dump vector (object) coordinates for selected vertices.

[i.co for i in bpy.context.active_object.data.vertices if i.select]

Use i.index to get the vertex number instead of the coordinates.

Main Python Object Layout

bpy.data - Project’s complete data. bpy.context - Current view’s data. bpy.ops - Tools usually for bpy.context. bpy.types - bpy.utils -

from_pydata()

The from_pydata() function is a way to take Python data and make Blender data. Unfortunately, the documentation is perhaps hard to find and probably non-existent. However this is helpful. And this. And this.

Basically you need something like this.

import bpy
verts = [(1.0, -1.0, -1.0), (1.0, 1.0, 1.0),
        (-1.0, 1.0, -1.0), (-1.0, -1.0, 1.0)]
faces = [(0, 1, 2), (0, 2, 3), (0, 1, 3), (1, 2, 3)]
mesh_data= bpy.data.meshes.new("tet_mesh_data")
mesh_data.from_pydata(verts, [], faces)
mesh_data.update() # (calc_edges=True) not needed here
tet_object= bpy.data.objects.new("Tet_Object", mesh_data)
scene= bpy.context.scene
scene.objects.link(tet_object)
tet_object.select= True

In the from_pydata() function call, you need a list of vertices which are 3 member sets of floats. The second field is edges and the third is faces — you can only have one of the two. Leave the one you don’t use an empty list. The edge or face list is a list of sets connecting vertex indices. So an edge connecting the first vertex to the second would be [(0,1)]. There can also be quad faces with 4 values per set.

mesh_data.from_pydata(VERTS,EDGES,FACES)

Useful Functions

  • bpy.ops.mesh.primitive_plane_add()

  • bpy.ops.mesh.primitive_grid_add()

  • bpy.ops.mesh.primitive_cube_add()

  • bpy.ops.mesh.primitive_circle_add()

  • bpy.ops.mesh.primitive_cone_add()

  • bpy.ops.mesh.primitive_torus_add()

  • bpy.ops.mesh.primitive_ico_sphere_add()

  • bpy.ops.mesh.primitive_uv_sphere_add()

  • bpy.ops.mesh.duplicate()

  • bpy.ops.mesh.duplicate_move()

  • bpy.ops.mesh.delete(type=T) - VERT, EDGE, FACE, & more

  • bpy.ops.mesh.merge() - Not just for redundancy; makes square triangle.

  • bpy.ops.mesh.quads_convert_to_tris() - A tri isn’t subdivided, however.

  • bpy.ops.mesh.tris_convert_to_quads()

  • bpy.ops.mesh.edge_face_add()

  • bpy.ops.mesh.select_all() - In edit mode only and only the objects selectable.

  • bpy.ops.mesh.spin() - Surface of revolution.

  • bpy.ops.mesh.subdivide(number_cuts=N) - Edit mode. In a grid.

  • bpy.ops.mesh.unsubdivide() - Edit mode. In a grid.

  • bpy.ops.mesh.wireframe() - Interesting pseudo wireframes where edges turn into thin 4-sided sticks (as in chemistry).

  • bpy.ops.object.join()

  • bpy.ops.object.delete()

  • bpy.context.copy()

Video Editing

Although Blender is primarily a rendering tool, since the purpose of its rendering was envisioned to be for high quality 3d animations, it also is good at editing those animations. I have tried other video editors and found them to be very unstable with more than a few megabytes of material. Blender, on the other hand, has never failed me no matter what absurd thing I tried. The only limitation with Blender is understanding the millions of tools, options and settings. When a tool has so much functionality, it becomes difficult to simply read the manual which could take years and still hide the part you need among the stuff you’ll never care about.

Key Bindings

  • Hovering in the timeline area (not the sequencer), "s" and "e" will set the start and end frame to whatever the current position is.

  • "Home" in the preview window will make the image fit as well as it can.

Sequencer

  • Middle mouse button - Pan Sequencer area.

  • [C]-middle mouse button - Rescale Sequencer area.

  • Right mouse button - selects strips. Not left!

  • [S]-right mouse button - selects (or deselects) multiple strips.

  • Using the right mouse button to select a strip and then holding it down and moving a bit puts you in a move mode. You can let go of the right button and position your strips. When in the correct place, the left button with exit the move mode and leave the strips in the new place. Note that you can drop strips so that they overlap a bit and their box will turn red. When you place them, they will get auto positioned so that they are perfectly end to start.

  • Hovering over the Sequencer, "page up" will position at the end of the next clip. And "page down" will position the current frame at the beginning of the last clip.

  • "b" - in the sequencer start a selection "box" that can select multiple strips. Left clicks select the box.

Preparing New Blender For Video Editing

On Debian sudo apt-get install blender is all there is to obtaining a working Blender. The first time you run it, there are probably some things you will want to adjust.

  • Click on the main graphics window somewhere to make the initial splash dialog go away. Now you’re looking at the "default layout".

  • Click the "layout drop down" button. Its tool tip is "Choose Screen layout" and it’s just to the right of the "Help" section of the main ("Info" - change with most top left icon) pull down menus. Choose "Video Editing".

  • This brings up the default Video Editing layout which contains these sections.

    • Video Preview Window - where the videos are shown.

    • Curve Graph Editor is to the left of the video preview window. Used to control complicated things like the speed of transitions, etc.

    • Video Sequencer - under the previous two areas is where video scheduling happens in a Gantt chart style.

    • Timeline - Useful for key framing.

  • The menus can be a little weird in Blender. For example, in the Graph Editor, the menu that controls it is below the graph display. Click the button to the left of "View" whose icon is a blue and white plot next to up and down arrows.

  • This brings up the major components menu. Change the Graph Editor into a Properties window by selecting "Properties".

  • In the Properties window, look for the "Dimensions" section and if it is open it should have a "Render Presets" menu. Use that to choose what kind of video you’d like to have. I chose "HDTV720p" for unimportant YouTube work, but "HDTV1080p" might also be good. Note that just below this menu, you should now see the resolution X and Y values that correspond to the preset you just chose.

  • Normal YouTube frame rate is 30fps. To the right of the X and Y dimensions is "Start Frame" and "End Frame". If you start at frame #1 and have 60 seconds of video at 30fps, what frame will you stop at? It’s the product of the two, 1800. If you know this ahead of time, adjust it now. If not, keep this in mind when it’s time to render.

  • Below the Start and End frame settings is the "Frame Rate" menu. You can change this to 30 or something else. One of the presets is "custom" so it doesn’t have to be a "preset" at all. Note that it is extremely wise to set this to be the same as your source video material.

  • Scroll down the Properties Window to the "Output" section. The default output directory is /tmp which is fine for many purposes, but if you’d like your Blender related files stored in a more sensible place, change this.

  • A bit below the output section is a menu where you can choose the output format. The default is set to "PNG" still images which is interesting to remember, but almost certainly not what you normally will want. Mikey suggests "Xvid". Unfortunately Xvid caused a lot of problems with seg fault crashing on rendering. Another possibly good choice would be "H.264" or whatever you think you’ll need. If a video you produce doesn’t work on the target you envision, return here to try different possibilities.

  • Next to the output type are two buttons "BW" and "RGB" which are both unselected. Unless you’re making an artsy black and white video, activate "RGB".

  • Go down to the "Encoding" area and open it if necessary. Go to "Presets" and choose "Xvid" here too (or whatever you’re using). This will then show up in the "Format:" pull menu nearby as selected.

  • Leave bit rate set to "6000".

  • Find the "Audio Codec" section. The default seems to be either "None" or "MP2". Mikey suggests "MP3" for videos with audio. Of course set "None" for silent videos. If you use MP3, change the bit rate to "192".

  • Back up at the top of the properties section, find the "Render" area and its "Display:" preset menu. Choose "Keep UI". Helps CPU usage during rendering. Just renders to a file.

  • Below the timeline area, look for the "Playback" control. That brings up a checkbox menu. Check the following.

    • Audio Scrubbing -

    • AV-sync - Make sure A and V are not misaligned.

    • Frame Dropping - drops frames to ensure smooth editor playback.

  • Go to "Info" section’s "File" menu and choose "User Preferences". Then select the "System" tab on the far right. Scroll down and look in the middle for "Memory Cache Limit". For 16GB systems a decent value is "10240" (add a zero to the default). Click "Save User Settings".

After you make all these initial changes, it is wise to not repeat the process every time you use Blender. Go to the main "Info" section’s "File" menu and choose, "Save Startup File". After doing that, you’ll be loading up Blender with your presets ready to go.

Importing Videos

  • Imports are placed at current (green line in sequencer). So get that in the right place.

  • Use "Add" menu below sequencer. Select "Movie". Choose from the file browser.

  • Two strips from the file show up, an audio and a video.

    • Green - Audio

    • Blue - Video

Import Still Images As Video Sequence

This succinct video perfectly describes the process.

Import a series of images to include as a video.

  • Open a panel with "Video Editing" to get a video timeline.

  • Use "Add" bottom menu item and select "Image".

  • Hitting "a" selects all images. Select what is needed.

  • Press the button to right of path, "Add Image Strip".

Adjust frame rate.

  • Open a panel with "Properties".

  • Changing the "Frame Rate" setting there just changes playback speed.

  • To change the timing of this strip only select it.

  • Hit [S]-a to "add" something to this.

  • Select "Effect Strip".

  • Sub-select "Speed Control".

  • Look at the speed control effect strip’s properties on the right.

  • Check the box for "Stretch to input strip length.

  • To double the speed, you can change the "Multiply Speed" to 2.

Cutting

Often you just want to do a simple thing like cut off a bunch of stuff at the beginning and end that you don’t care about. The basic process is as follows.

  • Load the movie.

  • Right click to select the one you want.

  • Left click to position the current frame where you want the cut.

  • Shift-K to make a "hard" cut. This makes two concatenated clips.

  • Right click to select the end (if trying to cut off the end) or leave beginning clip selected.

  • Press DEL key and then confirm by left clicking the "Erase clip" message.

Adding An Image Or Static Overlay

Reasons for doing this might include the following.

  • Putting annotations on a video like YouTube used to allow.

  • Blocking out a certain part of the video.

  • Watermarking or branding of some kind.

The way to do this is to create an image separately.

  • Use the dimensions shown in the render presets to make an image the perfect size for overlaying. Note that you don’t have to go that big.

  • Use Gimp. Make sure the background is transparent where you want the video to show through.

  • Save the image and return to Blender.

  • Go to "Add" item on the sequencer menu.

  • Add an "image" select your file.

  • Position it and open it up a bit by dragging with the right button.

  • I found it easiest to match my entire scene by choosing the video I wanted it on, noting the frame start and length, then choosing the image and manually entering those so they match.

  • Go to the image properties menu on the right and change the "Blend" method to "Over Drop". This makes transparent parts show the video.

  • You can also adjust the offset (which is why you can get away with smaller images than the entire scene).

Split Screen

Similar to overlays, this technique can help present multiple simultaneous video streams. The perfect case example is trying to visualize a side by side comparison of two graphics cards. Assume that I take a video with card A called A.mp4 and a video with card B called B.mp4. I want to show the left half of A on the left of the screen and the right half of B on the right side of the screen.

  • "Add" both "movies".

  • Slide them around to align the content and trim the ends if needed.

  • With A selected, "Add" an "Effect Strip", "Transform".

  • With the green transform strip selected, go to "Strip Input" and check both "Image Offset" and "Image Crop".

  • Leave the offset at zeros but check the box.

  • For the crop, change the "Right" value to the width of the video divided by 2, e.g. 960 for 1920 wide (dimensions are helpfully listed under "Edit Strip" properties at the top). (Also make sure your overall render dimensions are as expected.)

  • Then at the top change the setting "Blend" to "Alpha Over".

That’s it for the transform strip. Make sure the transform strip is on top. The B strip needs to be visible, but you can turn off A’s visibility and just let the transform render what is needed from it.

Rendering

  • Save the project before attempting it! Actually save early and often, of course.

  • It might not be a great idea to render off of clips that are on flash drives. But it can be done.

  • Double check that Keep UI is set.

  • Choose "Render Animation" or Ctrl-F12 to start.

  • I got a lot of Segmentation faults when using Xvid. Better to use H.264.

Mikeycal’s Videos

It seems that a completely reasonable way to study video editing in Blender is to watch some videos on the topic edited with the same. The videos I found helpful were by "Mikeycal Meyers". The problem with the videos was that they were so comprehensive and patient that there are hours of material. That is a worthwhile exercise to initially learn Blender video editing, but after the first viewing, I found I needed a simple reference to the stuff he talked about. Besides providing a quick reference for cryptic key bindings, if I still have trouble, this list of what the videos contain can direct me to it. I commissioned my son to make the original list this is based on.

0 Introduction

No technical content.

  • History

  • Euros and dollars were equal in 2002

  • Blender was bought from someone else

1 Layout - Simple Stuff

  • Top left corner has drop down to select layout; to edit videos select the video editing option.

  • Replace curve graph editor w/ properties menu

  • Sequencer is where you put your videos

  • Properties window is important used for about everything

  • Set all default properties

  • Render presets

  • HDTV 1080p

  • For youtube use 30 frames per second

  • Use vlc to find FPS

  • Choose where rendered product goes, usually /tmp at default

  • Reset output format

  • xvid works best

  • Select rgb

  • Set preset to xvid

  • Set bitrate

  • Choose audio encoder to mp3

  • Set to Keep ui

  • Select audio scrubbing

  • Select AV-sync

  • Select Frame dropping

  • Save as startup file (preconfigured template) before any other steps

2

  • Channels are rows

  • Drag up for more channels

  • put cursor at frame 1

  • Click add and select type of media

  • Right click selects

  • Number on strips is different

  • Must be the same to be in sync

  • Select right frame rate

  • Strip/set render size

3

  • Right click is to drag and to select strips.

  • Import video.

  • Handles at front and back of strips to edit length.

  • Use cut tool to hard cut the strips.

  • Middle mouse (may not work).

  • Number on strips is # of frames.

  • Mouse wheel to zoom.

  • Home to see all of the strips.

4

  • Group select is B or Shift-right click.

  • Soft cut is when you drag the back.

  • Hard cut is Shift-K

  • Y key to constrain movement of strips to only between channels.

  • G key to constrain movement of strips to only along channels.

5

  • Channel 0 is above all

  • Higher the channel higher the priority

  • Don’t use channel 0

6

  • Can be either or resolution

  • Choose bigger resolution

  • If distortion after ^ then use image offset

  • Add/effect strip/transform

  • Transform makes whole new strip

  • Mute original