Using a reference image to map vertex displacements means you can sculpt into the mesh by drawing a 2D template. I also darken the dents so that they look deeper than they actually are. 

A message from jhclaura
The glitch micky mouse is so interesting! Can I ask you how did you do it and what kind of software/platform you use? This is really awesome!

thanks, well first I scan objects with a digital SLR and an in-browser app called 123D catch. Then I download an OBJ file and clean it up and reduce the number of faces in meshlab. Then I import the file into a custom made Processing sketch that is built using a library called He_mesh. He_mesh has all these functions like bend, twist, expand, and so on. I’ve built upon some of these to introduce Perlin noise, etc, and I’ve made my own interface so that I can trigger those functions with keyboard shortcuts and a set of sliders. I call my sketch ccc. It also algorithmically generates colour patterns and gradients. The sketch exports the models as VRML files with colours assigned to each face. To prepare these objects for 3D printing I use Magics which automatically checks the file for errors and can hollow out a solid. I then send these to print via Shapeways. The whole process can take 2 - 5 hours which is not bad compared to traditional approaches to sculpture.

Using a blend of both colours imported from the scan and colours generated in Processing. This helps give a bit more definition to the shape.

starting with a simple cube (32 faces on each side), then applying fractal subdivision, smooth, scale, twist, colour and contrast algorithms. 

nice glitch, I subdivided the mesh, then moved it, but only the original vertices were selected so that it pulled these upwards forming spikes, top and bottom.

combined with Catmull-Clark subdivision (built into Hemesh), you get these faint circular patterns appearing in the dapple.

combined with Catmull-Clark subdivision (built into Hemesh), you get these faint circular patterns appearing in the dapple.

i tend to forget I’ve got this custom system that can make weird looking objects in just a few clicks.

i tend to forget I’ve got this custom system that can make weird looking objects in just a few clicks.

photogrammetry (3D scan) to Processing/ he_mesh.

photogrammetry (3D scan) to Processing/ he_mesh.

personal coding milestone achieved - importing colour data into Hemesh + Processing!!! Thanks Corneel Cannaerts for his HEC_FromObjFile class that I’ve hacked, and then for fixing my hack over an email to correctly lerp vertex colour to face colour. So to get from 3D scan to this you must:
1. Export 123D scan as obj file with texture.
2. Open in meshlab, do the texture color -> vertex color. Save as .obj 
3. Copy the HEC_FromObjFile into a .pde tab, change class name.
4. When it reads iterates through vertices getting parts 1,2,3 (x,y,z) tell it to also get parts 4,5,6 (rgb for vertex). Save that into an Arraylist of colors
5. Extend HE_Mesh class to store face color, iterate through faces, get face vertices, match vertex with colour data from your Arraylist. Lerp the 3 vertex colours to produce one face colour. Mesh.display()
6. Go to tumblr, let others know.

personal coding milestone achieved - importing colour data into Hemesh + Processing!!! Thanks Corneel Cannaerts for his HEC_FromObjFile class that I’ve hacked, and then for fixing my hack over an email to correctly lerp vertex colour to face colour. So to get from 3D scan to this you must:

1. Export 123D scan as obj file with texture.

2. Open in meshlab, do the texture color -> vertex color. Save as .obj 

3. Copy the HEC_FromObjFile into a .pde tab, change class name.

4. When it reads iterates through vertices getting parts 1,2,3 (x,y,z) tell it to also get parts 4,5,6 (rgb for vertex). Save that into an Arraylist of colors

5. Extend HE_Mesh class to store face color, iterate through faces, get face vertices, match vertex with colour data from your Arraylist. Lerp the 3 vertex colours to produce one face colour. Mesh.display()

6. Go to tumblr, let others know.

Simple effect but took a lot of work, almost 3 hours. Its like a slice but then new faces are created and added between the two mesh halves, finally the mesh has to be rebuilt so that the faces are glued together. From here I can hopefully do some interesting multiple offsets.

Someone requested by email the Processing code for importing STL files to HE_Mesh, apparently its not on the web, so here is mine, download the zip from here. I’ve formatted it to look like a typical HE_Mesh tutorial. Also find it copied below. 
import wblut.math.*;
import wblut.processing.*;
import wblut.core.*;
import wblut.*;
import wblut.hemesh.*;
import wblut.geom.*;
// Toxiclibs for the import stl and save color stl
import toxi.geom.*;
import toxi.geom.mesh.*;
import toxi.math.*;
import toxi.processing.*;


String stlFilename = "yourSTLfilename.stl";
HE_Mesh mesh;
WB_Render render;

void setup() {
  size(800,800, P3D);
  mesh = new HE_Mesh(fromStl(stlFilename));
  render=new WB_Render(this); 
}

void draw(){
  background(230);
  directionalLight(255, 255, 255, 1, 1, -1);
  directionalLight(127, 127, 127, -1, -1, 1);
  translate(400, 400, 0);
  scale(2,2,2);
  rotateY(mouseX*1.0f/width*TWO_PI);
  rotateX(mouseY*1.0f/height*TWO_PI);
  stroke(0);
  render.drawEdges(mesh);
  noStroke();
  render.drawFaces(mesh); 
}



HEC_FromFacelist fromStl(String stlName) { 
  println("Start Build");
  WETriangleMesh wemesh = (WETriangleMesh) new STLReader().loadBinary(sketchPath(stlName), STLReader.WEMESH);
  //convert toxi mesh to a hemesh. Thanks to wblut for personally coding this part during #GX30
  int n=wemesh.getVertices().size();
  ArrayList<WB_Point3d> points=new ArrayList<WB_Point3d>(n);
  for (Vec3D v : wemesh.getVertices()) { 
      points.add(new WB_Point3d(v.x,v.y,v.z));
  }
  int[] toxiFaces=wemesh.getFacesAsArray();
  int nf=toxiFaces.length/3;
  int[][] faces=new int[nf][3];
  for(int i=0;i<nf;i++){
   faces[i][0]=toxiFaces[i*3];
   faces[i][1]=toxiFaces[i*3+1];
   faces[i][2]=toxiFaces[i*3+2]; 
  }
  HEC_FromFacelist ff=new HEC_FromFacelist().setVertices(points).setFaces(faces);
  return ff;
}

Someone requested by email the Processing code for importing STL files to HE_Mesh, apparently its not on the web, so here is mine, download the zip from here. I’ve formatted it to look like a typical HE_Mesh tutorial. Also find it copied below. 

import wblut.math.*;
import wblut.processing.*;
import wblut.core.*;
import wblut.*;
import wblut.hemesh.*;
import wblut.geom.*;
// Toxiclibs for the import stl and save color stl
import toxi.geom.*;
import toxi.geom.mesh.*;
import toxi.math.*;
import toxi.processing.*;


String stlFilename = "yourSTLfilename.stl";
HE_Mesh mesh;
WB_Render render;

void setup() {
  size(800,800, P3D);
  mesh = new HE_Mesh(fromStl(stlFilename));
  render=new WB_Render(this); 
}

void draw(){
  background(230);
  directionalLight(255, 255, 255, 1, 1, -1);
  directionalLight(127, 127, 127, -1, -1, 1);
  translate(400, 400, 0);
  scale(2,2,2);
  rotateY(mouseX*1.0f/width*TWO_PI);
  rotateX(mouseY*1.0f/height*TWO_PI);
  stroke(0);
  render.drawEdges(mesh);
  noStroke();
  render.drawFaces(mesh); 
}



HEC_FromFacelist fromStl(String stlName) { 
  println("Start Build");
  WETriangleMesh wemesh = (WETriangleMesh) new STLReader().loadBinary(sketchPath(stlName), STLReader.WEMESH);
  //convert toxi mesh to a hemesh. Thanks to wblut for personally coding this part during #GX30
  int n=wemesh.getVertices().size();
  ArrayList<WB_Point3d> points=new ArrayList<WB_Point3d>(n);
  for (Vec3D v : wemesh.getVertices()) { 
      points.add(new WB_Point3d(v.x,v.y,v.z));
  }
  int[] toxiFaces=wemesh.getFacesAsArray();
  int nf=toxiFaces.length/3;
  int[][] faces=new int[nf][3];
  for(int i=0;i<nf;i++){
   faces[i][0]=toxiFaces[i*3];
   faces[i][1]=toxiFaces[i*3+1];
   faces[i][2]=toxiFaces[i*3+2]; 
  }
  HEC_FromFacelist ff=new HEC_FromFacelist().setVertices(points).setFaces(faces);
  return ff;
}
3D mesh hill-climbing algorithm, using Processing, Hemesh, Python and the image compare command-line tool in ImageMagick. Given any image the mesh will self-iterate towards it, first by transforming shape, then mesh face colour. The sequence pictured above takes about 1 hour, these are just 16 stills from thousands of permutations that take place over that duration. The result is an entirely automated 3D printable colour object visually similar to the image provided. 

3D mesh hill-climbing algorithm, using Processing, Hemesh, Python and the image compare command-line tool in ImageMagick. Given any image the mesh will self-iterate towards it, first by transforming shape, then mesh face colour. The sequence pictured above takes about 1 hour, these are just 16 stills from thousands of permutations that take place over that duration. The result is an entirely automated 3D printable colour object visually similar to the image provided. 

Playing around with a completely new concept to take a short break from scan/remix prints.

Playing around with a completely new concept to take a short break from scan/remix prints.

Voxelator. The start to a new Processing sketch that transforms 3D Scans into voxels, with definable voxel size. 

Voxelator. The start to a new Processing sketch that transforms 3D Scans into voxels, with definable voxel size. 

Work in progress: generating textures for multi-particle meshes, with Hemesh, Processing and meshlab.

Work in progress: generating textures for multi-particle meshes, with Hemesh, Processing and meshlab.