Basic Perspective principles + quick/unfinished drawings.


This is a page of notes about perspective drawing. It’s been a long time since I’ve drawn anything so this little revision exercise should get me back into the habit.

Here you will find some notes one very basic perspective rules, some quick sketches and an unfinished line drawing alone with various links.


Reference links for One Point Perspective:

Perspective and the Cube – Bill Martin’s Guide to Drawing

Student Guide to drawing One Point Perspective

The Geometry of perspective drawing – Mathmatics

Cubes in One Point Perspective

Reference links for Two Point Perspective

Setup For 2 Point Perspective within Cone of vision

Drawing Ellipses

Perspective Drawing in Photoshop

01. Setup

Here is a reference image from  showing a two point perspective system with a station point(90 degrees) and a cone of vision(60 degrees).httpwww.chasrowe.comhowToimagesperspectiveDrawing.jpg

My drawn version:

  • Red Square= station point (with 90 degree lines extending to Vanishing Points)
  • Green Inner Circle= Cone of Vision (60 degrees – minimal distortion)
  • Light Blue Horizontal Line = Horizon


I created some actions for the repetitive placement of the left and right vanishing points. This allows me to zoom in on a particular section and create the perspective line with a shift/click. I also made an erase action.



02. Ellipses

Here are some links and notes on ellipses that, in turn, can be used to create squares in perspective.

Reference sourced from: The Bad Ellipse: Circles in Perspective – The Minor Axis is the Key


The following images were sourced from Here ( – Scott Robertson & Neville Page):



With this in mind we can create a circle with the minor and major axes.


When we work digitally we can squish the circle into an ellipse, which is just a circle in perspective, with the minor axis pointing towards a vanishing point and the edges of the circle touching as shown in the above image, directly above/below the circle mid point or along a perspective line extending from the mid point.

Close to, or outside of, the cone of vision distortion will cause alighnment issues. My cylinder extends out past the COV.

Here is a link to a video by Irshad Karim describing how to do this.



The Cube by itself:


Adding more ellipses to create a cylinder and using this “scaffolding” to rough in some shapes.


Adding some background Mech/Tech Stuff. I think it will be a walkway. I also defined the frame region. Normally its best to frame a region far inside the cone of vision however, as I want to experiment a bit, I’ve extended the scene beyond this region.


Exploring some shapes with ellipses. Note the direction of the minor axis:


Exploring more shapes:


Forms extracted from construction lines:


Adding a science fiction tunnel outside the cone of vision. (note: I added some wires and tubes to the cylinder but didn’t like them)


Simple cross lines to obtain an even spacing. Note the direction the the minor axis in red.



Creating evenly spaced lines



Some sketching – keeping these rules in mind.

First some mechanical objects. I”ll take some progress photos and see what works and what doesn’t. I’m interested to see if creating constructions, lines as rough guides, is helpful.

First a helicopter created by sketching a box and adding construction lines.


Next airplane sketched from a bunch of sketched boxes with the aim of finding placement points for curves.



Some very quickly sketched  ideas drawn from an initial box.


Progress shots complied as animated gifs:



Note: I was a bit lazy with my ellipses and didn’t stick to the initial structure at the front. Consequently things look a bit off.

Another way to perspective freehand sketch is from the inside out. Scott peterson is a  master at this technique. Check his site out here: Scott Peterson on YouTube

This feels like modeling in 3D and starts from a basis of what, in 3D, would be called image planes for side and top views. The side view is therefore drawn along the center line and the top view on the ground plane. Positional co-ordinates are then plotted and mirrored to the other side via the ground projection. From these positions forms are built.

My first attempt is a tadpole. Note image planes on the center line, running through the center of the tadpole, and on the ground plane.


Here is my second attempt – more made up stuff. The front curves of the plane are completely off but I like this process a lot. Practicing straight lines and ellipses should sort out some of the issues.



I’d like to choose one and redraw it into the Sci-Fi scene I started with as an experiment.


Base shape from circles:



All shapes were multiplied back into the scene:



Unfinished Line drawing:


Here is a very old and unfinished life sketch I did – with a warped perspective. This effect can be created by keeping in mind a 5 point perspective system like the one described here: How to draw in 5-Point Perspective


Here are some old perspective drawing I created around a decade ago together with the perspective lines used to create them. They were commissioned by Republic Films.



Image converted using ImgCvt

Image converted using ImgCvt




Blender modeling Notes

This page documents my first steps learning blender. I’ll also add to the page over the next week or two as I explore more of what blender can do. So far I’m really impressed. Note: – Page last added to on 18/10/17

As blender relies heavily on numPad keys,  and the “emulate numpad” overrides various shortcuts, I’m using a numPad keyboard for easy access on the left of my keyboard.




  • MMB = Orbit
  • Ctl + shift + Middle Click /or/ Scroll Wheel = Zoom
  • Shift + F5 = Viewport
  • 0(numPad) = Camera Mode (Enter/Exit)
  • 5 = Orthographic Perspective
  • 1/3/7(numPad) = Front/Right/Top View
  • Ctl + 1/3/7(numPad) = Back/Left/Bottom
  • Home = Frame All
  • .(numPad) = Frame Selection
  • Shift + C = Reset Viewport
  • Shift + F = Video Game Navigation

Object Viewing – In Viewport:

  • /(numPad = Frame Selection
  • Z = Wireframe
  • Alt + Z = Toggle Texture/Shader
  • Shift + Z = Toggle rendered/Shaded
  • (Shift + B + release) + Drag = Zoom into Portion

Editing/Creating Objects:

  • Shift + A = Add Objects
  • Ctl + Tab = Switch Edge/Vertex/Face panel
  • Tab = Edit Object Mode
  • Left Click = Move 3D Cursor
  • Ctl + A = Apply objects transformations (like freeze trans)
  • Y = Edge Split
  • Ctl + 1/2/3/0 = Subdivision Amount
  • Ctl + # = Add Subdivisions
  • U = UV uwrap
  • K = Knife Tool
  • I = Inset
  • E = Extrude
  • Alt + M = Merge Vertices (options panel ex: merge to centre)
  • Ctl + R = Loop Cut(Scroll wheel to add loops – pre right click)
  • Ctl + J = Join Objects
  • Ctl + B =Bevel (scroll for subdivs)
  • G + G = Slide Vert/Edge/Face
  • V = Rip
  • Alt + V = Duplicate Edge Loop on Object
  • F = Fill/Bridge Edges/Verts
  • P = Separate Selected (Verts/Face/Edge)
  • G + O = Offset and slide vert across edge

Within the Sculpt Brush

  • D = Draw Tool
  • Click + Drag = Add
  • Shift + Click + Drag = Subtract
  • F + Drag = Brush Radius
  • Shift + F + Drag = Brush Strength
  • C = Clay Brush
  • 2 = Clay Brush
  • G = Grab Brush
  • 7 = Grab Brush
  • I = Inflate/Deflate Brush
  • 8 = Inflate/Deflate
  • Shift+5 = SculptDraw
  • Shift+6 = Smooth
  • S = Smooth Brush
  • Shift+C = Crease Brush
  • L = Layer Brush
  • 9 = Layer Brush
  • M = Mask Painting
  • 0 = Mask
  • K = Snake Hook Brush
  • Shift+T = Flatten/Contrast Brush
  • P = Pinch/Magnify Brush
  • 1 = Blob Brush
  • 3 = Clay Strips Brush
  • 4 = Crease Brush
  • 5 = Fill/Deepen
  • 6 = Flatten/Contrast Brush
  • Shift+1 = Nudge Brush
  • Shift+2 = Pinch/Magnify Brush
  • Shift+3 = Rotate
  • Shift+4 = Scrape/Peaks
  • Shift+7 = Snake Hook
  • Shift+8 = Thumb


Moving Objects:

  • G = Move  (+ X/Y/Z to Constrain)
  • S = Scale   (+ X/Y/Z to Constrain)
  • R = Rotate (+ X/Y/Z to Constrain)
  • G + 5 = Move 5 Units
  • R + 2 = Rotate 2 Units
  • W = Panel (select Bridge)
  • Shift + C = Cursor at 000 (plus frame focus)


  • A = Select/Deselect All
  • B(release) + Drag = Box Selection
  • B(release) + Drag + Shift = Box Deselect
  • B(release) + Left Click(drag) = Rectangle Select(add)
  • B(release) + Middle Click(drag) = Rectangle Select(Remove)
  • C + Left Click = Circle Selection(add) – (+ Scroll for Circle Radius change)
  • C(release) + Shift = Circle Selection(remove) – (+ Scroll for Circle Radius change)
  • Ctl + Left Click – Lasso Selection(add)
  • Ctl + Shift + Left Click – Lasso Selection(add)
  • Alt + Right Click = Select Edge Loop
  • Ctl + Alt + Right Click = Select Edge Ring
  • L = Select shared Verts/Edges/Faces
  • Ctl + +(numPad) / (numPad) = Grow/Shrink Selection

Duplicating/Deleting/History/Hiding Objects:

  • H = Hide
  • Shift + H = Hide Unselected
  • Alt + H = Unhide
  • X = Delete Panel
  • Shift + D = Duplicate
  • Alt + Shift + D = Duplicate
  • Ctl + Alt + Z = Undo History Panel


  • Shift + S = Snap Cursor to Selection
  • Ctl + Shift + Alt + C = Set Origin (Geo to Origin/Origin to 3D cursor etc)
  • Shift + S = Cursor options (ex: Cursor to center)


  • Alt + A = Play/Pause
  • Shift + Alt + A = Play in Reverse
  • Left/Right Arrows = Next/Previous Frame
  • shift Left/Right Arrows = Beginning/End of Timeline
  • Shift + Up/Down Arrows = Jump Forward/Back 10 Frames

Windows & Panels:

  • Shift + Spacebar = Window Focus
  • Ctl + Ring Arrow = Scroll through window setups
  • Shift F4 = Python Console
  • Shift + F10 = UV Unwrap Window
  • F10 = Image Window
  • Shift + F7 = Editing Window (modifiers etc)
  • N = Transform Window Toggle
  • T = Tool Bar Toggle
  • Ctl + I = Invert Selection
  • Shift + F9 = Outliner
  • Shift + F3 = Node Editor
  • Shift + F11 = Text Editor
  • Shift + F7 = Properties Editor
  • Shift + F2 = Logic Editor
  • Ctl + .(NumPad) = Object Focus
  • Spacebar = Search Menu


  • M = Move object to Layer Panel
  • 1/2/3/4 etc = Layer number

Changes that I found to be useful.By right clicking on a menu we can add a shortcut hotkey to an item. We can also add it directly into user Preferences/Input:



Hotkeys added:

  • Ctl + ` = Smooth Shade

I also switched the ‘”select with” mouse buttons around:


I’m used to the way the Maya Viewport looks so I installed the following “Maya Lover” Theme from Here. It’s just cosmetic but I like it.


Modeling Practice – Ant (I’ll document my first modeling attempt in blender)

  • Shift + S to center the cursor via the panel
  • Shift + A to add – mesh – cube


  •  Ctl + R to place a loop cut through the center of the object
  • Z to make the object transparent (so we can select the back faces)
  • 1(numpad) to switch to front view
  • B + Release + drag for rectangular selection of left side faces


  • Spacebar – “type add m” bring up the add modifier panel
  • Add mirror modifier



  • To constrain the central verts to the Y and Z axis we need to enable “clipping”:
  • To see the mirrored mesh we need to turn on “cage to modified result”:


  • Show the back facing verts so we can select them


  • Base mesh for the head, abdomen and thorax.



  • Extruding some legs


  • Within the transforms window(N) / display / Shading there are a number of Metcap shaders which are excellent for picking up surface imperfections while modeling.


  • Subdivisions with cage


  • To isolate an area for modeling the details we select the faces we want to isolate and Shift + H.


  • A little more tweaking



Testing Out the Sculpt Brush

  • Before starting to sculpt – Apply Mirror Modifier and delete Subsurface Modifier if we are starting from a model created with the above method


  • Spacebar + “add m” to add modifier  Multiresolution


  • Switch to sculpt mode
  • For roughing in a sculpt we can switch to Dynopo


  • Choose Brush and start sculpting


  • Hotkeys of Note: F = Brush Radius Shift F = Brush Strength
  • Sculpting from a poly UV Sphere, (in Dyntopo mode), allows us to sculpt in a similar way to zbrush – as we would in real life with clay.


Once we are happy with a Dyntopo sculpt we can retopologize the mesh in one of two ways:

  1. The easy way is to buy a script like “RetopoFlow” which appears to be similar to Maya’s quad draw tools.
  2. The second/free way  is explained HERE  by Zacharias Reinhardt.

Process notes:

  • Create plane with cursor at 000.
  • Ctl + R to slice in half and delete Left Side
  • Add Mirror modifier Enable clipping
  • Add Subsurf modifier and set as simple (not Catmull-clark)
  • Add a Shrink Wrap modifier and choose target mesh and set the offest to .002 and enable keep above surface and make sure the triangle icon is enbled so as to see the Verts
  • To avoid selecting verts on the other side – (alt + b = Clipping border) – (alt + b to remove clipping border).

Alpha brushes in sculpt mode:


  • choose brush mapping style


  • We can use a stencil – (note hotkeys: RMB = move stencil / shift + RMB = Scale Stencil / Ctl + RMB = Rotate stencil)


  • Some details added to the mesh with alpha brushes


  • With a shiny gold met material we can see more details


Modeling with Blender’s Skin Modifier


  • Create plain(shift + C to center Pivot) / Alt + M  / Merge at center / Edit Mode / Spacebar/“Add Modifier” / Mirror/Skin/SubDiv 


  • Extrude + G + Move / Ctl + A(x,y,z) for Scale / Ctl + R = Add Vert

Test – Bipedal Character:

  • Starting with Torso and Feet – a little bit tricky


  • Attempt at constructing the hand


  • Base mesh completed


  • From here we could use the sculpt tools to refine the character and then retopologize the mesh once we are happy.

 In sculpt mode – start clay style sculpting:

  • Clay Brush / Area Plane 
  •  Dyntopo Enabled / + Subdivide Edges / + Brush Detail

  •  Ogre type creature created from the base mesh using the above brush settings

Blender is a much loved, free and open source 3D application with a thriving user community. It was originally created by Ton Roosendaal as an in house software tool at  NeoGeo – an animation studio he co-founded. It was later released as free creation tool.


Open Project Films created by the Blender foundation:

Organic Shapes from Nparticles – Maya

Some experiments creating organic shapes from particle motion. I found a few useful scripts and have linked to them and their creators.

  1. Particle set up for testing


2. Turning these particles into curves

There are two ways to do this.

The first involves expressions which allow the curves to be draw in real time. 3D Splanchnic has a tutorial showing what to put where. Watch it HERE.

code for expressions:


(update: if ( frame%10 == 0)  is simpler)

The second is a script. Bryan Woodward’s ‘ParticletoTube’ Script for Maya makes tubes out of particles by first creating curves. The first part of the script loops through the timeline frames for “theParticle” and then uses a nested loop to capture each “particlesPosition” and draws each curve form the “pointList”. Read about the script HERE.



Now I can change my particles into Curves


Note: I have connected my nParticles to mash with a polySphere connected to the repo-node.


3. Finally I need a script to turn these curves into organic looking geometry. Andrew Tubelli has a nice script for doing just that. Download it from his site HERE

The code simplifies what would be an annoying task by adding a UI with a few friendly sliders:


Completing the process via the maya UI instead of the script:


The code rebuilds the curves based on “arcLen”, creates nParticles for the curves and evaluates a mel command to create polygons with the ability to set attributes Via a UI.


None: Some variable Changes are occasionally needed. For example the  curves generated by particles can be excessive – Try changing the (arcLen)*5 to say (arcLen)/5 or just add it into the UI. I also needed to up the ‘.maxTriangleResolution’ count.

Example:4. A few shapes generated by moving a passive collider around so as to alter the particle movement.


5. Now an experiment just from wires. I used a skull I previously modeled to draw curves on and then turned the curves into geometry.

Preiew render experiment

Some paint effect brushes added:

Instancing test using Maya’s Mash + Vray

This is a test for instancing grass with Mash in Maya. Very simple. Very quick. The settings are low and the render took next to no time. Perfect for previewing.

Oh how I am going to love using mash… and it has a python node!

I recently delved into writing some math nodes for Maya with python, (and compiling them in c++), with the idea of building something like what Rhino has with Grasshopper. It’s turning into an excellent learning exercise. However, mash already has a lot of what I always wanted Maya to have. So… fun times ahead.

To test out some instancing using Maya’s Mash

1. Paint Effect for grass  – converted to polygon quads;

2. UV’s organized 3X3. Vray 2 sided shader applied:


3. I thought I would throw in an old skull I poly modeled a long time ago. I decimated it in Zbrush, instead of using a displacement, and gave it a Vrays SSS shader. Here is a time-lapse of the Maya session:

4. In mash I instanced the grass over a plane and created a falloff object to mute the grass around the skull within a strength node. I also added a random node to the mix.


There is so much artistic control with this kind of procedural approach. Change, add, swap, blend, randomize, mute, duplicate etc.

Notes – Nodes & Mash – Maya

Here are some learning notes on creating a node plug-in for Maya, an example of it as an expression. These are just for me but perhaps others may stumble upon them and find them to be of interest. I’ll probably change and grow this page as I learn a little more.

  1. Notes and links on how to create a Maya plug-in

Autodesk have an example Python Math Node. Here are my notes:

  • API module: import maya.openMaya
  • Proxy class access: import maya.openMayaMPx
  • Access to math module: import math
  • Variable for node name:  kPluginNodeTypeName = “nodeNameNode”
  • ID number for Node:        nodeNameNodeId = OpenMaya.MTypeId(0x00001)
  • Define subclass of existing class: class nodeName(OpenMayaMPx.MPxNode)
  • input = OpenMaya.MObject()
  • output = OpenMaya.MObject()
  • Override constructor using base: OpenMayaMPx.MPxNode.__init__(self)
  • plug = current input: def compute(self,plug,dataBlock):
  • Compute math example: result = math.sin( inputFloat )
  • Recompute plug and flag as clean: dataBlock.setClean( plug )
  • Maya pointer: return OpenMayaMPx.asMPxPtr( sineNode() )
  • Initialize method – input and output: nodeInitializer():
  • Add attribute here (ex- frequency or or amplitude): input = nAttr.create( “input”, “in”, ####)
  • Causes compute method to re-calculate – sets relationship: sineNode.attributeAffects( sineNode.input, sineNode.output )
  • Plug-in registration – Node Name/ID/Create Method/Initialize Method/Node Type: mplugin.registerNode( kPluginNodeTypeName, sineNodeId, nodeCreator, nodeInitializer )
  • De-register plug-in: mplugin.deregisterNode( sineNodeId)

Understanding this we can now turn these python math functions into Maya nodes:


2. Some links to various resources:


  • Wrappers – math classes – m -(Quaternion, matrix, vector, points, vectors etc)
  • MObjects – data encapsulation (meshes, skin clustter nodes, curves  etc).
  • Functions Sets  mfn  – (access and manipulate data)
  • Proxy Classmpx – – (abstractions – create new object types – inheritance)

For memory intensive process plug-ins need to be complied in c++. Here are some links:

3. Example: Testing cosine node works.



3. A Mel expression that does the exact same thing. A little bit less work 🙂


Two very simple expressions that create tangent circles (also known as kissing circles).



Nodes and expressions can build almost any kind of relationship we want. If the task is process hungry its best to compile.

4. Mash Nodes – Python node


Python Node Test with controllers piped in as variables – Expression: (cos(t) + cos(6t)/2 + sin(14t)/3, sin(t) + sin(6t)/2 + cos(14t)/3) – (see article “Creating Art with Mathematics”)






Metallic Carpenter Bee (Xylocopa (Lestis)) – Poly Modeling

Modeling – MayaCarpenterBeePolyModeling_nwjones02


Shader Dev – Maya Vray

  1. Super simple – Just falloff curves for red green and blue. Trying to match some photo reference of an iridescent beetle – source from here
  2. A test render using “Thin Film Interference”. An explanation for the code used can be found HERE ( and the OSL shader code can be found HERE ( This is a work in progress but I like the general direction its going. More hair and some modeling tweeks are obviously needed. Photos of the actual bees can be found HERE. They’re quite pretty.NWJONES_WIP_CARPENTER_BEE02