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



  • My blog post saying nice things about Blender.

  • My blog post integrating my programming language with Blender.

  • - Official website

  • Blender+Python

  • Blender source code. Looks like they know how to host their own Git repo. Good job!

  • Diagram of source code layout.

  • Modifier Encyclopedia - An incredibly helpful visual catalog of millions of Blender modifier features.

  • GC Masters high quality videos.

  • Good high-quality written guides.

  • A superb tips video with 100 really well thought out, properly demonstrated tips. Just to see so much of the Blender arcana being properly used is worth the 2 hours it takes to watch this. Ya, this guy is a boss.

  • Art Station - modeling showcase. Great for general CG inspiration.

  • Paper models from Blender models? Yes, there is an add-on for that!

  • HDRI - High Dynamic Range Images - used for setting a lighting base so that the reflections seem plausible. Ideally you’d take such a reference image during your shoot on location, but these are useful for faking that.


  • Poliigon - textures, and other stuff.

  • If you really, really have to have a giant keyboard with a numpad and the complexity of an airplane cockpit, this Blender keyboard is cool.

Technical And Architectural Modelling

  • I’m pretty impressed with this Construction Lines add-on — here’s the author’s site. This focuses on construction lines but also seems to cover things obvious to CAD people like rational copying and moving with base points. Not free but it is worth $7 just to use to illustrate what CAD users find frustrating about Blender.

  • Clockmender’s CAD functions also show a frustration with normal Blender. Here is Precision Drawing Tools from the same source. Looks like TinyCAD is joining this project.

  • tinyCAD Mesh Tool Add-on - other people are frustrated by Blender not living up to its potential. Has some simple useful geometry helpers. Couldn’t find this in stock add-ons — suspect it’s for 2.8+. Still interesting.

  • Mechanical Blender is trying to bring sensible technical features to Blender. Looks early (or dead) but worth watching.

  • A nice site showing the potential of architecture in Blender.

  • This is the best video I’ve seen demonstrating good techniques and practices for dimensionally accurate technical modeling.

  • Measureit is an amazingly powerful add-on that allows full blueprint style dimensioning. This video, a continuation of the technical modeling video just mentioned, is the best comprehensive demonstration of it (in 2.8+).

  • Another superb demonstration of technical modeling in Blender is this video showing how to model a hard surface item directly from accurate measurements.


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.

Screencast-keys is a non-standard addon, found here, that will highlight what keys are pressed so that observers can follow along. I think it could be helpful for knowing what key you accidentally might have pressed. Note I haven’t tried this.

Making Illustrative Animated Gifs

Making tutorials or trying to posti on BlenderSE? Want fancy illustrative gifs? Check this answer for hints about how to do that.

I had good luck with apt install byzanz, a CLI animated GIF recorder for Linux. I got it working fine as expected with this (see sensible man page).

byzanz-record -h 400 -w 650 -x 1264 -y 1500 -c -d 15 --delay=3 /tmp/byz-test.gif

Also peek looks promising.

  • Keep things under 2mb.

  • 15fps is a good starting point.

  • 650x400 seems traditional.


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.



It used to suffice to just sudo apt install blender and a Debian system was happily ready to use Blender. But today, it really is not sensible to use a pre-2.8 version and unfortunately Debian will probably be mired in that for a long while. So you probably will need to go to and download their package. Click the "Download Blender 2.83.2" button or whatever version is current. You can then find the real and proper link down at the message: "Your download should begin automatically. If it doesn’t, click here to retry." It’s helpful to know that if you’re trying to install it remotely.

This might be helpful too for cutting through fluff:

sudo mv blender-2.83.2-linux64.tar.xz /usr/local/src/
cd /usr/local/src/
sudo tar -xvJf blender-2.83.2-linux64.tar.xz
cd ../bin
sudo ln -s ../src/blender-2.83.2-linux64/blender

Now when you type blender, a proper modern version should start up. Make sure /usr/local/bin is in your $PATH.

Set Up And Configuration

Here are some things I like to change in a default start file.

  • Get rid of the cube.

  • n shelf open.

  • Rotation point around 3d-cursor.

  • Vertex snapping, not increment.

  • Viewport overlays → Guides → Statistics. On.

  • Output properties → Dimensions → Frame End. 240 (250 at 24fps is just stupid.)

  • Output properties → Output → Color. RGBA.

  • Add to quick q menu: Preferences

  • Add to quick q menu: Save Copy

  • System → Memory&Limits → Undo Steps. Change from 32 to 128.

  • System → Memory&Limits → Console Scrollback Lines. Change from 256 to 1204.

  • Scene Properties → Units → Unit System = Freedom

  • Show Normals size .005

  • Change all default generation sizes from 24" to 1". This may not stick and I don’t know how to make it permanent. :-(

Addons I like.

  • MeasureIt

  • mesh_tinyCAD

  • Import DXF

  • Import Images as planes

3-D Modeling

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


Here in the USA many things are measured in Freedom Units. Blender can play along. Got to the properties tabs and look for the "Scene Properties" tab which will be a little cone and sphere icon. The second item is "Units". Choose "Imperial" and "Inches" and things should be fine.

Importing From CAD

Sometimes I need to get CAD models imported into Blender and that isn’t always easy. One important trick is running the models through FreeCAD. Try exporting to STEP files from the CAD program and having FreeCAD import that and export STL files. Blender can then import those pretty well.

Window Layout

Full official details are here and actually helpful.

The old way to split areas into subdivided areas: drag the upper right corner down (horizontal split) or left (vertical split). To combine areas, 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.

In 2.8+ things seem much easier to arrange. Just go to the edge of the viewport you’re interested in fixing and look for the left-right or up-down arrow icons. Once those are visible, you can use RMB to bring up a menu that will allow you to "Vertical/Horizontal Split" or "Join Areas". Also look at the "View → Area" top button menu for another easy way to split. This allows you to customize easily without the drama of old Blender.

A huge tip for people with multiple monitors is that you can detach windows. In old Blender this is done with 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.

In 2.8+ there is a similar technique with [S] and dragging the plus to the left or something like that. You can also use the "Window" button on the top row menu to create a "New Window" — you may need to do a lot of shuffling after that though. Another way is to use the "View" button on the top row menu and then "Areas" (which is what these Blender function regions are called) and then "Duplicate Area into New Window". This will usually duplicate the wrong window but at least it only gives you one area to reset the way you want it.

Mouse Buttons

  • LMB - Select (in 2.8+). LMB - Position 3-d cursor

    • [S]-LMB - expand selection explicitly.

    • [C]-LMB - expand selection inclusive or "Pick Shortest Path". E.g. LMB click one vertex and then [C]-LMB a few vertices over and all in between will be selected.

    • [A]-LMB - Select edge rings and face loops. The axis depends on which component is closest to mouse pointer when clicked.

    • [A]-LMB - (OM) Bring up a selection box for ambiguous selection. For example if there is an object inside of another object, holding [A] while LMB clicking in the general direction will bring up a menu of the possible objects.

    • [S][C]-LMB - expand selection inclusive but entire area on 2 axes.

  • 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

    • [A]-MMB - Center on mouse cursor. Drag to change among constrained ortho views.

  • RMB -

    • RMB - Vertex/edge/face context menu (EM). Object context menu (OM).

    • [C]-RMB - Select intermediate faces to mouse cursor automatically when certain EM geometry is selected. So for example, you can get A1 on a chessboard, hold [C] and right click on A8 and get the entire A column. Also, if you’re in some kind of edit mode where you’re extruding over and over again, [C]-RMB will extrude to the current mouse position.

Keyboard Shortcuts

There are 1000s. Here I will try to enumerate the ones I’ve encountered. Also remember that you can go to Preferences and select the "Keymap" section and learn a lot about what the currently configured bindings (and possibilities) are. Probably best to not go too wild with changing those unless you really know what you’re doing. Note that the tooltips often have the keybinding for the operation and an extra interesting hint is that if you turn off tool tips in the Prferences → Interface you can get them at any time by holding Alt and hovering over the feature. F3 searching also shows the keybinding when available. Note that the Shift key will slow down transformations that can use a mouse input and also slow down how fast values are changing when modifying a value by moving a slider.

  • F1 F1 - "Help".

    • [S]-F1 - File browser.

  • F2 - Rename selected (OM). Only last (bright orange) if multiple selected.

    • [S]-F2 - Movie clip editor.

    • [C]-F2 - Batch renaming in the outliner.

  • F3 - Open search form/menu.

    • [S]-F3 - Texture node editor. Press again for shader editor. Again for compositor.

  • F4 - File menu including Preferences.

    • [S]-F4 - Python console.

  • F5-F8 - In theory these are reserved to be defined by the user.

    • [S]-F5 - 3D viewport.

    • [S]-F6 - Graph editor. Press again for drivers.

    • [S]-F7 - Properties.

    • [S]-F8 - Video sequencer.

  • F9 - Bring up modification menu for last operation. E.g. adjust bevel segments.

    • [S]-F9 - Outliner.

  • F10 -

    • [S]-F10 - Image editor. Press again for UV editor.

  • F11 -

    • [S]-F11 - Text editor.

  • F12 -

    • [S]-F12 - Dope sheet.

  • "." - Pivot menu. Like the one next to the snap magnet icon. [C]-. - Transform origin.

  • "," - Orientation.

  • "`" - Ortho view pie menu removing the need for a numpad.

  • "~"

    • Pie menu. For what normally? Solves no numpad for views. -[S]-~ - Fly. (No idea what this means.)

  • "/" - Zooms nicely onto the selected object to focus attention on it. Press again to return to previous view.

  • [C] - Snapping. Hold [C] or use toggle snap property button.

  • arrows

    • Used with "g" movements, moves a tiny increment (sort of one pixel).

    • <LRarrows> - Go to next and previous frame.

    • [S]-<LRarrows> - Go to first and last frame.

    • [S]-<UDarrows> - Go to next and previous keyframe.

    • [C]-<LRarrows> - Move by word (Text Mode).

  • space

    • Start animation.

    • [S]-space - Menu.

    • [C]-space - Toggles current viewport to fill entire workspace (or go back to normal).

    • [C][S]-space - Start animation in reverse.

    • [C][A]-space - makes current viewport fill entire workspace with no menus.

  • backspace

    • Resets to default value when hovering over a form box field.

  • tab

    • Toggle object and edit mode. [C]-tab - full mode menu (pose, sculpt, etc).

    • [C]-tab - Opens a pie menu for selecting from all of the modes. Very useful for more complex things.

  • home

    • Zoom extents.

    • Beginning of text (Text Mode).

    • [C]-home - Set start frame.

  • end

    • [C]-end - Set end frame.

    • End of text (Text Mode).

  • 1,2,3 - Vertex (1), edge (2), face (3) selection switching. [S] allows for multiple simultaneous modes.

  • a

    • Select all.

    • aa - Deselect all.

    • [S]-a. Add object to selection.

    • [C]-a - Apply menu, to apply scale and transforms, etc (OM).

    • [A]-a. Select none. (Similar to "a + [C]-i".)

  • b

    • Box select (EM). Box mask (SculptMode).

    • [S]-b - Zoom region, i.e. zoom view to a box.

    • [C]-b - Bevel edge.

    • [C][S]-b - Bevel a corner.

    • [A]-b - Clipping region, limit view to selected box (i.e. drag a selection box first). Repeat to clear. Good for clearing off some walls on a room so you can work on the interior of the room.

  • c

    • Circle (brush) select (EM). Clay (Sculpt Mode).

    • [S]-c - Center 3d cursor (like [S]-s,1) and view all (home). Crease (SculptMode).

    • [C]-c - Copy. Note that this can often be used to pick colors (and other properties) by hovering over a color patch and then pasting it elsewhere.

  • d

    • Hold down d while using LMB to draw with the grease pencil. Holding down d with RMB erases.

    • [S]-d - Assign a driver (Driver Editor).

    • [S][C]-d - Clear a driver (Driver Editor).

    • [S]-d - Duplicate - deep copy.

    • [A]-d - Duplicate - linked replication.

  • e

    • Extrude.

    • [S]-e - Edge crease.

    • [C]-e - Edge menu. Contains very useful things like "bridge edge loops".

    • [A]-e - Shows extrude menu.

    • [C]-RMB can extrude also.

  • f

    • Fill - Fill. Creates lines between vertices too, e.g. to close a closed path. See j for join. In node editor "f" will automatically connect nodes, as many as selected. In a brush mode such as sculpt, weight, texture, etc., f changes brush size.

    • [C]-f - Face menu. Hmm. Or maybe a find menu????

    • [S]-f - Brush strength. Try WASD for controlling?

  • g

    • Grab - Same idea as translate/move. I think of it as "Go (somewhere else)".

    • gg - Pressing gg (twice) edge slides along neighboring geometry.

    • [S]-g - Select similar (normals, area, material, et al) menu.

    • [C]-g - Vertex groups menu (EM). Create new collection dialog (OM) — though I can’t figure out how to actually do anything with this.

    • [A]-g - Reset position of object. Remove bone movements in Pose Mode.

  • h

    • Hide selected.

    • [S]-h - Hide everything but selected.

    • [C]-h - Hooks menu.

    • [A]-h - Reveal hidden.

  • i

    • Inset (EM) with faces selected. Press i twice for individual face insets. Insert keyframe (OM/Pose). Inflate (Sculpt Mode).

    • [C]-i - Invert selection.

    • [A]-i - Delete keyframe (OM/Pose).

  • j

    • Join (EM). With "fill" between two opposite vertices of a quad, you get the edge between them but the quad face hasn’t changed. Join will break that quad face up. The subdivide function can do the same thing - access at the top of the EM context menus (RMB).

    • [C]-j - (OM) Joins two objects into one. Also joins grease pencil strokes.

    • [A]-j - Triangles to quads.

  • k

    • Knife tool. Hold [C] to snap (e.g. to mid points). Snake hook (SculptMode).

  • l

    • Select all vertices, edges, and faces that are "linked" to the geometry the mouse pointer is hovering over. Or edges the same way. Layer (Sculpt Mode).

    • [C]-l - Select linked geometry, i.e. everything connected.

  • m

    • Move to collection (OM).

    • (EM) Merge menu. Collapse vertices into one. Important for creating a single vertex. Can be done "By Distance" which will collapse vertices that are very (you specify) close. Formerly [A]-m (remove doubles/duplicates), now it seems just m in Edit mode brings up the merge menu. Using "By Distance" will mostly do what the old one did.

    • [C]-m - Followed by the axis (e.g. "x" or "y", etc) will mirror the object immediately. No copy. Mirrors cameras too if you need reversed images.

    • [A]-m - (EM) Split menu (by selection, faces by edges, faces&edges by vertices). Like Separate but keeps the geometry in the same object. Think of opening a box. Can also pull off bonus copies of edges if they’re selected alone.

  • n

    • Toggle "Properties Shelf" (right side) menus.

    • [S]-n - Recalculate normals. (If you need to see them, display normals with "Overlays" menu just over the Properties Shelf.)

    • [C]-n - New file.

    • [A]-n - Normals menu.

  • o

    • Proportional editing.

  • p

    • Separate (EM). Pinch (SculptMode).

    • [C]-p - Parent menu.

  • q

    • Quick favorites custom menu. Use RMB on menu actions to add them to the quick favorites menu.

    • [C]-q - Quit.

    • [C][A]-q - Toggle quad view. This means 4 viewports showing different ortho sides. Note that in quad view, for some reason Measureit annotations are invisible.

  • r

    • Rotate.

    • rr - Double rr goes to "trackball" mode.

    • [S]-r - Repeat last operation.

    • [C]-r - Loop cuts. Note that number of cuts is controlled with PgUp and PgDn. You can do partial cuts by hiding the faces (h) that form the boundary.

    • [A]-r - Reset rotation value of an object. Remove bone rotations in Pose Mode.

  • s

    • Scale.

    • [S]-s - Snap/cursor menu. Smooth (SculptMode).

    • [C]-s - Save file.

    • [S][A]-s - (EM) Turns an object into a sphere! (Does it need to be mainifold?)

    • [S][C][A]-s - Shear.

    • [A]-s - Resets scale? In Edit Mode it subjects selected geometry to the Shrink/Fatten tool which does pretty much what that sounds like. Remove bone scale changes in Pose Mode.

  • t

    • Toggle main "3D View" tool shelf (left side) menus.

    • [C]-t - Triangulate faces.

    • [S]-t - Flatten (Sculpt Mode)

  • u

    • UV mapping menu (EM).

  • v

    • Rip Vertices (EM?).

    • [S]-v - Slide vertices (EM?). This constrains movement along existing geometry.

    • [C]-v - Paste. Or maybe Vertex menu depending on context.

    • [A]-v - Rip Vertices and fill (EM?).

    • [S][C]-v - Paste but with inverted sense somehow. (A good example. Another good one at 17:40 too.

  • w

    • Change selection mode (box, brush (circle), freeform border).

    • [C]-w - Edit face set (SculptMode).

  • x

    • Delete.

    • In operations, constrain to x axis or with shift constrain other two.

  • y

    • In operations, constrain to y axis or with shift constrain other two.

  • z

    • z - View mode.

    • [C]-z - Undo.

    • [S][C]-z - Redo.

    • [A]-z - Toggle X-ray (solid, but transparent) mode.

    • [S][A]-z - Toggle display of all overlay helpers (grid, axes, 3d cursor, etc).

    • In operations, constrain to z axis or with shift constrain other two.

This video has a lot of tips about shortcuts for the node editor.

Numpad Number Keys On Numeric Keypad

Since you have all those stupid useless keys sitting there that you never use, you might as well use them, right? Thought the Blender devs. Well I had a similar thought which was to get a less idiotic keyboard that didn’t have all that extraneous cruft. But Blender is really keen on being the one piece of software that justifies stupid keyboards. But there are tenuous workarounds.

The numpad numbers tend to change the view.

  • np1 - Front

  • np2 - Down

  • np3 - Side

  • np4 - Left

  • np5 - Perspective/Orthographic

  • np6 - Right

  • np7 - Top

  • np8 - Up

  • np9 - Opposite

  • np0 - Camera

  • np/ - Isolate selected by zooming to it and hiding everything else.

  • np+ - Zoom in

  • np- - Zoom out

Strange And Uncertain Features

I’m still trying to sort out these features but am noting them here so they don’t get completely forgotten.

  • [Space] - Brings up the "search for it" menu. Just type the thing you want and that option is found often with its proper key binding shown. Looks like this has all changed a lot with 2.8+.

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

  • [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.

Edit Mode Keys

  • 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

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.


  • / - 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.

In Blender 2.8 some new useful interface features appear. Now you can go ahead and use the limited number keys (assuming you don’t have a stupid number pad) to select vertex, edge, or face editing. So how do you get quick access to viewports? Use the "`" backtick key to bring up a new style wheel menu from which you can use the mouse or numbers to select the view you want.

Simple Coloring

Often when modeling I would like something more helpful than everything showing up default gray. This can be done by going to the little down arrow box to the right of the "shading" menu which is located above the "n" menu on the upper right. Then you can choose "Random" and the objects will be colored in random different colors instead of default gray. That’s often enough for my simple needs.

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.

The new system in 2.8+ is set up for a special kind of "empty" to contain an image. These can be created by inserting [S]-a "Image". This gives you a choice of "Reference" or "background". It seems that background images will show other objects in front of them while reference images may still be persistently visible. This has some subtleties explained here.

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 (pre 2.8 - see below)

  • . - Move origin to 3D-Cursor. In 2.8+ this sets the pivot point in a handy way.

  • [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.

In 2.8+ to reposition the origin of your objects, select the object in object mode, click the "Object" button on the bottom menu, choose "Set Origin", and pick the thing you need such as "Origin to Geometry". Or in Object Context Menu (RMB in OM) look for "Set Origin" - also easy.

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!

To set the 3d cursor’s location more specifically than random LMB madness, there are a couple of different options.

  • If you want a rough position, the LMB will work, but in v2.8+ make sure you’re in the Cursor mode and not, say, the Select Box mode.

  • In the "n" menu under the "View" tab, the "3D Cursor" section has a form box for explicit entry of X,Y,Z location.

  • Often you want the cursor placed with respect to some geometry. [S]-s brings up the cursor placement wheel menu. Doing [S]-s and then 2 will put the cursor on the selected geometry. Note that by doing this and checking the "n" menu’s coordinates (see previous item) you can take measurements and find out locations. Another example to clarify this useful use case is if you want the cursor at the "endpoint" of some other edge in the model.

  • Note that when you get the cursor on some existing geometry, you can go to the View→3d Cursor section of the "n" menu and put math operations in the location box. So if you want to move the cursor up from a known endpoint you can [S]-s,2 select the endpoint, then go to the Z box for 3d cursor location and put "+2.5" after whatever is there to move the cursor up 2.5 units.

Some technical details:

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

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.)

It looks like in 2.8, there is now a prominent feature to measure stuff! Yay! How this got overlooked until now is a complete mystery.

To use it check out [S]-space + m. (This was formerly [A]-space I believe.) LMB hold on the first point to measure. Then drag to the second point. If you mess it up, you can pick up the ends and reposition them. You can also use [C] to constrain the endpoints of the measurement to snap points.

If these little measurement lines hang around as dashed lines, it can be tricky to delete them. Click on the ends of the unwanted phantom measurement ruler and then del or x.

MeasureIt Tools

There is an included add-on that is pretty nice which creates dimension line geometry. With the new native "Measure" tools, this add-on (and other similar ones) become a lot less important. However, if you need to actively communicate dimensions as in a shop print, this add-on is still excellent.

Generally to use it, you simply select two vertices or 1 edge in Edit Mode and click the "Segment" button. Sometimes tweaking the position is required. See troubleshooting below.

Troubleshooting MeasureIt

Don’t see MeasureIt in the "View" tab of the "n" menu? Maybe the addon is not enabled. Look at Edit → Preferences → Add-ons and check the box for "3D View: MeasureIt".

An annoying flaw that has frustrated me is the addon’s visibility is off by default!! Note the "Show" button — if you click that it will make the measurements from the addon visible. Clicking it again will "Hide" the measurements. It’s frustrating because you assume the default to show the stuff if you’ve bothered to use it, but that’s not how it works.

Note that for some annoying reason MeasureIt annotations are invisible in quad view! This is problematic because if you’re doing something technical that could make use of MeasureIt, you’re also more likely to be using quad view. As a reminder for how to turn it off, try [C][A]-q to toggle and ` for individual view selection.

You can see the dimension lines but they are all crazy and not at all properly automatically lined up with the mesh or axes or anything discernible. If you expand the settings (the little gear icon) on one of the measurements in the "Items" list, it will have a checkbox for "Automatic Position". Obviously you want automatic positioning, so turn OFF automatic position! I found that to cure alignment issues. Maybe then you’ll need to play around with "Change Orientation In __ Axis" to really put the aligned dimension where it should be.

If you’re trying to make a final render with the MeasureIt dimension lines included, you will be disappointed. The way it works is that the measurement lines are created in their own separate transparent image. One thing to keep in mind is to export RGB*A* (not RGB), especially if you’re just looking at the measureit_output in the Image Editor (check the "Browse Image" thingy to the left of the image name to see if there’s a second image from MeasureIt hiding in there).

Importing the scene render’s final image and the MeasureIt overlay image into layers in Gimp, you can combine them for what you’re after. Or use ImageMagic

composite measureit_output.png coolpart.png coolpart_w_dims.png

Keeping the undimensioned one can maybe be used nicely to toggle the dimensions on and off with JavaScript.

DIY Python Measurments

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.


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.


The basic grid seems like the kind of thing that should be controlled in user preferences (like Inkscape) but it is not. Turn on the "n" menu and look for the "Display" section. There is a selection for which axis you want the "Grid Floor" to be (usually Z). Then adjust the scale and size.


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, Cables, Complex 3d Shapes

A very common task I have when modeling is something like a racing bicycle’s handlebars or its brake cables or a curved railing or drain p-trap, 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.


If you just need a normal round pipe or cable, it seems this is now easier than ever. Just create the pipe’s path with Add → Curve → Bezier. Then go to "Object Data Properties" whose icon should look like a curve and is right above the Materials icon. Open up the "Bevel" and choose "Round". You can adjust the "Depth" setting to change the thickness of the pipe; in theory this is the "radius of the bevel geometry" but be careful, because in practice I couldn’t quite get that to make sense.

Custom Profile

This video explains the classic 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! I’m assuming it can be any kind of path since a circle — unless you scale it into an ellipse or something — is better achieved with the "round" technique described above.

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 RMB to get the object menu and choose "Convert to Mesh". Now you can delete the circle.

Measuring Tube Length

Imagine modeling a bathroom sink with a supply line you know from real world measurements is 18" long. How would that look when you hook up the shut-off valve to the faucet supply? I do not know how to specify a curve with a fixed length, but you can do trial an error until you get it the right length.

How do you measure the length? This video provides some hints, but it’s a bit too quick and maybe not 2.8 friendly. The best way I could deploy was to create a small temporary cube object to use as a measuring device. Position it so that it is at the beginning of the pipe. Then with that new cube object selected in object mode, add a "Curve" modifier. Select the path of the pipe you’re trying to measure. Then slide the position of the cube along its new special X axis which will be along the curve. By sliding the cube object up and down the curve by adjusting it’s X position you can now get a rough start and end point for your pipe. Subtract and that’s your length. Roughly.

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 some 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 use the edge loop feature — press [C]-r and then enter. The enter is important or it won’t take.

One task that comes up a lot is that a face needs more detail and it needs to be split into two faces. Imagine you want to transform the stock cube into a little house with a peaked roof. You basically want the top face to be two faces each 1x.5. Then you can just "g" position that edge up in the Z a bit and you have your house. But how to make that split? First select the two opposite edges that will be getting the new roof peak edge. Look in the "tools" menu for the "Subdivide" button. Click that and make sure you press enter to confirm the settings (which are settable in the lower left corner, in the tools panel).

Reorganizing Mesh Geometry Into Desired Objects

Often with the frenzy of extrude operations needed to get accurate geometry, you wind up with some silly organization. For example, I might extrude along a wall and then up a door edge, over the door’s width, back down the door height and then continue along the wall. This would be based on measurements of the room and door. But at the end of it all, I probably want an object representing the floor or walls and a separate object representing the door. How does one break out the door object?

My best guess for doing this which seems to work is to go into edit mode with the object selected that has the geometry you want to liberate. Select just that subset you want to make a new object out of. Then [S]-d seems to reasonably create in-mesh duplicates. This is also a good tip for doing things like repeating framing studs or some other repetitive geometry that might reasonably all be in the same mesh.

Once you have the geometry to create a new object from selected, press "p" which brings up the "Separate" menu. Since your geometry of interest is selected, choose "By Selection".

If you’re trying to hop some geometry from one object to the other, you can select the new object and the target object and use [C]-j to join the objects.

Loop Cuts

Loop cuts are very powerful and in dense meshes they can be quite intuitive. But in simple sparse geometry, they can get quite perplexing. The general idea is to go to edit mode and then edge select mode. From there use [C]-r to start the loop cut process; move the mouse around and little yellow guides should show you where your cut will happen.

You can use the page up and page down keys to adjust the number of cuts. (A mouse wheel, the normal clumsy way to do this, is not needed.)

When you’re happy with it, press enter. Now you should be in sliding mode where you can slide your loop cuts along the loops. If you did sliding by accident, you can use the RMB to put them back in the middle, without sliding. If you don’t want sliding at all, just press enter twice when accepting the cut.

Loop cuts provide a bizarre but serviceable trick for accurate technical modeling. A very common requirement in technical modeling is the need for a new feature a known distance away from some other feature. Imagine a face that represents a wall in a house - if you want to add a window, you need to make some cuts in that face where the window actually is. You can measure where the window is in the house, say, 40" from the corner of the room. To model this, do a loop cut. You get the orientation right, hit enter, and during the sliding phase, you slide this new window edge all the way into the corner of the room. Hit enter to accept this. That seems useless, but now you have the correct geometry to use "g" on the selected geometry, constrain it to the appropriate axis (with "x" or "y" probably) and type the exact value to put it in the right place ("40"). Now you have fresh geometry exactly where it should be based on numerical measurements.

Sometimes the loop cut extends farther than you’d like and you want to rejoin some cut faces. Use the face mode, select the faces to join and from the RMB menu use "Dissolve Faces".

This is a very strange workflow but doable once you get used to it.

Knife Tool Cut

  • [Space] - finishes knife tool operation

  • S - suppress the auto snapping.

  • [C] - snap to midpoints


Do you love triangles? I do. But Blender likes to hide the triangular truth of computer science from you. You can go into face mode and select non triangular faces and press [C]-t. This will triangulate them.


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. Put the modifier on the thing to project (e.g. the road) and select the object onto which it should be projected as target. Note that the quality can be very poor for very low poly models - this seems to like lots of geometry to work with.

  • 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.


Repeats a line of objects. If you want a higher dimensional array, stack multiple modifiers.

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).

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.

Polar Arrays

Unfortunately just accomplishing a simple polar array (e.g. bolt circle) seems absurdly tricky. But it is possible. The second half of this video and this one covers this trick, but it isn’t super obvious or easy to use. Basically you need to add an "empty" type object to the center of your polar array; disable relative offset and enable object offset. You also must make sure your mesh’s geometry center is in the polar center. Choose the number of items you want. Nothing seems to happen until you rotate the object around the geometry center which should also be where the empty is. You have to put in the rotational angle manually for a single interval. For example, if you want and specified 6 objects and your object is at the 3d cursor you can "rz60" and all 6 should appear and correctly rotated in place. Note that before you apply this modifier, you should [C]-a to apply transformations; this will prevent a weird spiraling out of control look.

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.

Another completely different technique is quite tolerable when you have a tame number of items in your bolt circle. If you have 6 items and know that the angle between them is 60 degrees (or 4 for 90, or 5 for 72, or 8 for 45, etc) you can do the following. Make sure that your pivot point is on the 3d cursor. Then select the object you want replicated. Duplicate it with [S]-d (or [A]-d if a shallow copy makes sense) and instead of hitting enter or moving the new object, hit r to rotate. Assuming your 3d cursor is in the middle of the bolt circle type in that angle. That’s one copy done. Then hit [S]-r to repeat the last action and you can fill out the others very quickly and easily with a minimum of cognitive fuss.

Note that I’ve found it helpful to create geometry from the faces of cylinders. A very interesting trick is "Deselect checkered" which can leave every other face selected. From there you can build them out as if they were individually created and placed with a polar array.


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.

There is an addon called BoolTool that ships with Blender that dramatically streamlines this janky workflow by putting a sensible direct menu right in the n shelf.


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.


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!


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 modeling 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.)

Mirror Naming Conventions

Blender has some deep dark functionality that can understand and do the right thing with symmetrical pairs of items — basically imagine a left arm bone and a right one. Messy details are here. Blender is pretty flexible about the conventions it accepts. But let’s be consistent and go with the one that Blender itself prefers when the "AutoName" feature is used.

Name symmetrical pairs of objects with the following convention.

  • Left - MyObjectName.L

  • Right - MyObjectName.R

  • Front - MyObjectName.Fr

  • Back - MyObjectName.Ba

  • Top - MyObjectName.Top

  • Bottom - MyObjectName.Bot


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.


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.


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.


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.


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.


  • 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.



mesh_tinyCAD comes ready to go. Just turn it on in addon preferences.

Find mesh_tinyCAD features by right clicking into the context menu in edit mode; it will be at the top.

Here are things it claims to do, all of which are sensible.

  • VTX - Identify intersections from crossing edges (X shape), or edges that would cross if one (T shape) or both (V shape) were projected.

  • V2X - Similar to the case with V shapes this puts a vertex at the projected intersection but leaves the original lines alone.

  • XALL - Add intersection points like the X shape but on a collection of crossing edges.

  • E2F - Extend an edge until it hits a face at what my system’s terminology called the pierce point. A good way to execute this is to select the face in face select mode, then change to edge mode, get the edge, then apply. So 3, pick face, 2, [S]+pick edge, RMB, choose E2F from mesh_tinyCAD menu.

  • BIX - For two non-parallel edges, bisects their angle and creates usable guide geometry (not part of original) representing that bisector. Note that if the lines are intersecting, it will double up the angle vertex.

  • CCEN - Construct a circle from any 3 points. Note that the 3 points may easily find themselves doubled up. Note that the 3d cursor will move to the circles center point which is extremely useful for reusing it as a datum once the circle object has degenerated into just an arbitrary, if circular, mesh. This can possibly help when looking for quadrant points for a degenerate "circle". Try creating the circle with 4 faces. Then the only problem is how to align this square with the axes. I haven’t figured it out, but there must be a way. Check out Align Rotation To Vector; don’t know if that helps, but interesting.

BlenderGIS Addon

Here’s an amazing resource that allows GIS data to be handled smoothly in Blender. If it’s working properly, it seems to be able to construct topo maps from nothing and populate them with simple building models. It looks so amazing that I am still interested even though it’s a struggle to install and get working.

Here’s a nice demo of it in action. Here’s how to install.

These modules are needed.

apt install python-gdal python3-gdal libgdal-dev gdal-data gdal-bin
apt install python-pyproj python3-pyproj

But wait! Remember that Blender has its own Python. So this apt install is nice, but doesn’t help.

BAD=~/.config/blender/2.92/scripts/addons/ # Blender Addon Directory
cd $BAD && git clone

Maybe restart Blender to be safe.

Go to Edit → Preferences → Addons and find BlenderGIS and enable it. Note the little triangle hinting that there are tons of settings you can play with to set up the behavior of the addon.

There is now a GIS panel in the 3d view properties menu. You should also have a GIS menu with "View Select Add Object" etc. Under that GIS menu, select "Web Geodata → Basemap"… I’m following these directions and… Well, dang.

Still, this looks very cool and worth keeping an eye on.

Drawing Tools

Note that there is a pre-set layout called "2D Animation" but it’s tab is not out by default. Click the + on the layouts bar to find it. It’s not required, but good to remember that it’s there.


Annotations are ways to scribble notes and other things onto your model. It can be used for other things but if you need anything too fancy, look to the grease pencil.

The annotation tool can be selected with the icon on the left vertical ("t") menu. Start scribbling. One way to control what you’ve scribbled is to look at the "Tools" tab on the right ("n") menu. There you can name your annotation. You can change its color. And you can change the behavior of how your new annotations. The very useful one is "Surface" "Placement". This will allow you to scribble on the face of some geometry, flat or complicated.

Grease Pencil

The grease pencil is a way to do fancy 2d animation based on a 3d model or in a 3d environment. Or not — these tools are powerful even if you don’t need 3d support. The intent, I believe, is to get a 2d drawn animation from a 3d modeled environment. This includes characters and rigging. All of it can be animated.

To get started, you must add a grease pencil object in a normal 3d editing situation. Once you put that in your scene, you can change the mode to "Draw" and start playing around.

Note that you will not see the proper line thickness or color if you are in wireframe view mode — try solid.

Textures And Materials

Object Appearance During Editing

There are many helpful modes in Blender to control how stuff looks but they can be hard to find.

  • Permanent wireframe - If you want an object to always show it’s wireframe outline, maybe only that, no matter what mode is selected, try: Object Properties → Viewport Display → Wireframe It can be very helpful when trying to carve something up with the boolean modifiers to make the cutting tool easy to see through.

  • Want objects to be colored randomly so they’re easier to distinguish? Try z,6 to get solid mode. Then look for the "Viewport Shading" option pull down — a V icon near the render mode ball icons in the top right. The Color → Random.

  • Put a texture on something without running the full render? You can do the same as Random, but choose "Texture". This is slightly different than z,2 "Material Preview" mode. Both are lightweight and helpful.

Camera Tracking And Projection Painting

This video introduces camera tracking which seems to be a kind of photogrammetry with more hand work. You help Blender identify some tracking points in various frames and a camera solver can reconstruct where the camera must have been and what its parameters (error, lens, etc) were. This allows you to do amazing things with the 2d image that combines elements of a 3d model.

Here is part 2 which shows how a random scene with naturalistic trackers can be tracked and an objected added. Part 3 is very long but comprehensive. And part 4 has examples explained more thoroughly.

This video shows how to remap textures from a 2d photo into a clean perpendicular view, including unwrapping cylindrical objects like tree bark.

Here’s another one showing panorama stitching up to the level of spherical environment maps.

Part 3 in the series shows how to do projection painting to remove an object from a video. Pretty amazing.

Same guy doing an amazing job of facial motion capture in Blender. This seems to have implications for other 3d reconstruction tasks.



Fancy people setup every part of their virtual universe but I’m often just trying to show off some single artifact I’ve been working on. The default dark gray background that shows up on renders is often at odds with dark items. To change the way the rendered background looks when it is empty, go to "Properties → World Properties → Surface → Surface" and set that to "Background". Now you can change the color and "strength" of the background. Note this does not do anything to make wireframe or solid view look any different.

Apparently to change the background of the 3d Viewport for wireframe and solid mode, you can go to Edit → Preferences → Themes → 3D Viewport

The color of the grid lines can be changed here. But keep scrolling down… farther… keep going… almost there… until you get to an entire section questionably called Gradient Colors. In there you will find Theme Background Color which has options. By default the eponymous "gradient" is turned off, but turning it on can be a festive thing to do. In this context, I get the feeling that "low" means the bottom of the screen, not a color property; high is the top.


One of the most frustrating things about trying to get high-quality realistic rendering is noise artifacts. This manifests as a sparse field of bright pixels where that is not accurate. Here are some places to start when trying to figure out how to minimize this problem.

Exporting To Unity

I think this process has been streamlined with some necessary transformations automatically sorted out. Now just doing the export step works.

  • File → Export → FBX → Write a FBX file

When imported into Unity, it opens and looks right in the scene. Here are how the axes are adjusted.













The location of the imported asset seems correct when placed exactly by setting the Transform Position attributes in Unity.

It may be wise to set the units in Blender to match what you’re trying to achieve in Unity.

Hmm. Yes, there still are problems. The two clues that things didn’t work quite right are that in the icon of the model asset, it is pointing up. When it’s placed in the scene it seems correct, but that icon is not consistent. And the position is just a little bit off by a weird amount.

This video is quite specific about what the problems are and what you can do to minimize Blender/Unity conversion problems.

I did the easy first method of clicking the "Experimental transforms" box during the FBX export. That seemed to cure problems.


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.


Freestyle rendering mode is a way to achieve interesting non-photorealistic effects in final renders.

One problem I had was where I had a very simple blocky shape with simple 90 degree angles and on a couple of the straight lines, there was a strange fluctuation of width. This made no sense, but I tracked it down to a particular setting. In the "Freestyle Line Style" section there is a property called "Chaining" which in theory can link geometry together. Turning this off cured the problem. I never figured out what it was trying to chain or how since the defective features were single edges with no complexity whatsoever.


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.

Note that default Blender 2.8+ seems to want to open a completely new window when asked to render. This can be fixed in the preferences. Look for this.

Interface → Temporary Windows → Render In → Image Editor

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.


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.

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.


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.

This whole series, Humane Rigging is very well done. I watched it all just to marvel at the amazing complexity that high quality rigging seems to require. This video series was nice because it was not "easy" or for beginners — it told the mathematical truth to many of Blender’s weird decisions. Overall very helpful to understand things even if you’ll never rig and animate a battle between a robot squid and a Medusa.

Danpro has a nice vehicle rig series. I think if you watch these 10 times, the ideas will start to sink in a bit.

I think that in pose mode while rigging you can use these predictable short cuts to reset your rig back to the default pose.

  • [A]+g - Remove bone movements.

  • [A]+r - Remove bone rotations.

  • [A]+s - Remove bone size changes.

2d Drawing With Grease Pencil

It might be helpful to recall what a "grease pencil" is in real life — they are (were?) weird pencil-like writing instruments that could write on difficult smooth surfaces. People used them to mark up things like glass (they seem to be called "china markers" today) and, if my recollection is not amiss, transparencies for overhead projectors which were basically PowerPoint machines before there was PowerPoint. They had a weird string which was used to "sharpen" them by tearing off layers of paper which composed their housing. I think these were traditionally used to mark up clear plastic animation frames (though I can not imagine them being used to execute the artwork). So the gist of the concept is that they write on smooth clear plastic and if you do a stack of such things just right, you’d have an animation. Again, it’s a bit odd to me to think of the grease pencil executing the artwork itself (it’s not permanent, smudges off, poor detail, etc.) but I think the much finer Blender tool evolved from a less fancy feature. I think of grease pencils as being a better skeuomorphic fit with Blender’s annotation tools (and I guess they’re kind of related).

This information was so useful, I’m going to reproduce it here.

Collections can contain grease pencil objects (fat squiggly snake icon). The grease pencil objects can contain a grease pencil data block (similar icon with endpoint vertex squares). The grease pencil data block generally contains layers, the basic two are by default called "Lines" and "Fills". Layers contain frames which are selected by the playhead placement. Frames are composed of the strokes and fills themselves which are composed of points (perhaps vertices).

The grease pencil data block tab — near the Materials thingy when a GP Object is active — allows you to add and remove layers if the ordinary "Lines" and "Fills" is not enough. I find that adding a GP Object with "Add → Grease Pencil → Stroke" starts you off with a quintessential stroke that is inevitably not what you really need; it seems quite ok to use "Blank".

If you’re not seeing the grease pencil strokes or they are faded out while you’re trying to create them there are many possible explanations.

  • Your reference image could be set "front" and not "back" obscuring your work, maybe by some background opacity.

  • In the grease pencil’s object data properties, there is a section called "Layers" with its own opacity setting that needs to be sufficiently visible.

  • Make sure you’re not on a neighboring frame with the onionskin effect on.

  • The "strength" of the stroke is a setting like brush size. It is found at the top of the screen near the brush radius in the interface while editing. A pressure sensitive tablet pen can change this fluidly but RMB while editing lets you set it explicitly.


Reference Images

When doing hand-drawn 2d animation it is very helpful (and not at all cheating!) to have some live action video of such action to use as a reference. In the outliner, select the camera and then in the properties panel (where materials and modifiers live) look for the camera settings. There you will find a section for "Background Images" which works as expected. You can even bring in video clips.

I found it helpful to use youtube-dl to bring in the video and then use something like this to remove the audio and crop it down.

ffmpeg -i YouTubeJumper.mkv -ss 00:01:34 -t 00:00:03 -vf "crop=950:550:400:350" -an jumpaction.mp4

The "-ss" is the start time and the "-t" is the duration of the clip, allowing you to isolate just a small set of frames. And the crop parameter allows you to just take a portion of each frame. The crop format is "crop=width:height:upperleftX:upperleftY".

If you want stills you can do that too by just having the output file look something like this: jumpaction%03d.jpg.


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

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


  • 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.


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.


The documentation is mysterious and this seems an arcane topic, but this link to official documentation is extremely helpful. This video tutorial is extraordinarily clear and patient covering many useful Python API concepts.

A good test tuple to start with is Another good one — which will remind you that Blender carries it’s own completely separate Python installation — is sys.exec_prefix. Here’s what I’m showing.


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

Installing Dependency Modules

Of course fancy addons will want fancy modules. And since this is not system Python, it will appear that they are missing even when your system can use those modules just fine. You must first install pip in your Blender python.

cd /usr/local/src/blender-2.92.0-linux64/2.92/python
sudo ./bin/python3.7m -m ensurepip                   # Installs pip
sudo ./bin/python3.7m -m pip install --upgrade pip   # Upgrades pip
sudo ./bin/python3.7m -m pip install pyproj pillow numpy # Deps

Now it looks like GDAL is the real PITA. Sure Debian can get one no problem with apt install gdal. But things are tougher in the world of Blender. You have to go to this repackager’s repo and pick the right one. I guessed until I found one that worked. No idea what the compatibility parameters are.

sudo ./bin/python3.7m -m pip install $W
sudo chmod -R a+X /usr/local/src/blender-2.92.0-linux64/2.92 # I had restrictive perms.

This also downgraded the Nympy. Why not? Go for it! After that, I could go to the Python console in Blender and import gdal came back with the goods.

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.


The one Python function that did not work which was a bit of an impediment for my purposes was the input("Prompt:") command (formerly known in Python2 as raw_input). I understand the limitation but what if you need to send user input to your Python activities?

This helpful tutorial has some answers. It says…

Because the user interface itself is written in Python and is designed to be extended and because virtually all internal data structures are accessible through a well documented interface it is pretty straight forward to implement add-ons that are written in Python.


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

[ for i in if]

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

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


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.from_pydata(verts, [], faces)
mesh_data.update() # (calc_edges=True) not needed here
tet_object="Tet_Object", mesh_data)
scene= bpy.context.scene 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.


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.


  • 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

The first time you run Blender, 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".

  • Make sure you choose a sensible container. Probably mp4 or avi and not matroska (unless you’re unconcerned if impoverished OS users never see it).

  • 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.


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.


  • 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.

Here are some settings hints that did work.

  • Display: Keep UI (!)

  • Preset: HDTV1080p Start with this (implies 1920x1080)

  • Video Codec: H.264

  • Container: MPEG-4

  • Medium quality

  • Medium speed

  • Audio Codec: MP3

  • Frame rate: 30fps (not 29.9whatever)

  • Anti-Alias: Mitchell-Netravali, 8, 1px

  • Output: FFmpeg video

Click Animation to begin render of the video.

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


  • 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


  • 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.


  • 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.


  • Channel 0 is above all

  • Higher the channel higher the priority

  • Don’t use channel 0


  • 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