bbenchoff.github.io



Contact

Email
Twitter
Github
LinkedIn



Résumé (PDF)


Weird Stuff

Citicar Restoration
Converting a car to CAN
My Instagram clone for vintage digital cameras.


Software Development

Instagram Clone (Python, Django)
IS31FL3741 LED driver library (C)
NT35510 TFT driver library (C)
Terminal Parser library (C & C++)


Hardware Development

Nikon lens adapter
The $15 Linux Machine
Portable Dumb Terminal
Mr. Robot Badge
Zip Drive Tower
Full Color Circuit Boards
RGB Gaming Coaster
Serial Fidget Spinner
Baud Box
A Wall of Circuit Boards


CAD Design

Silicone Membrane Keyboard
Injection Molded Palmtop
Retro-inspired industrial design
Quarter-Scale Retrocomputing
Hardened clamshell computer
3D Printed Tank Treads
Porygon

Porygon

According to the Pokedex, Porygon is:

A Pokemon that consists entirely of programming code. Capable of moving freely in cyberspace.

While there are many 3D models of Pokemon, there are no 3D models of Pokemon that were created entirely by computer code. OpenSCAD is a programming language that creates 3D models, so I made Porygon in OpenSCAD

Code is as follows:

module bodyHalf()
{
	polyhedron(
		points=[ [16,31,5], [0,31,5],   [0,34,23],  [0,35,30], 
                 [18,35,30],[21,34,23], [21,-23,23],[11,-1,49],
                 [0,-1,49], [13,-16,44],[0,-16,44], [0,-23,23],
                 [0,-9,5], [16,-9,5]],

		faces=[ [0,2,1], [0,5,2], [2,5,4], [3,2,4], [4,5,6], 
                [7,8,3], [3,4,7], [4,6,7], [8,7,9], [7,6,9],
                [10,8,9], [6,11,9],[10,9,11],[11,6,12],[6,13,12], 
                [13,5,0], [6,5,13],[0,1,12], [12,13,0]]
	);
}

module tail()
{
	translate([0,-5,0])
		polyhedron(
		points=[ [0,90,67],[6,37,30], [-6,37,30],[13,40,5],
                 [-13,40,5], [13,32,5], [-13,32,5]],

		faces=[ [0,1,2], [0,3,1], [0,2,4], [0,4,3],[1,3,5],
                [4,2,6], [3,6,5], [3,4,6],[1,6,2], [1,5,6] ]
		);
}

module footLeft()
{
	polyhedron(
		points=[[40,-20,0], [22,-20,0], [22,36,0], [40,36,0],
                [22,36,13], [40,36,8], [40,-20,6], [22,-20,9],
                [40,14,20], [22,14,25], [40,14,0]],

		faces=[ [2,1,0], [0,3,2], [2,3,4], [5,4,3], [1,6,0],
                [6,1,7], [6,7,8], [9,8,7], [9,5,8], [4,5,9],
                [0,6,10], [10,6,8], [5,3,10], [10,8,5], [4,9,2],
		[2,9,1], [1,9,7]
		]
	);
}

module headhalf()
{
	polyhedron(
		points = [[18,-16,44], [0,-16,44], [8,-50,44], [8,-52,46], 
                  [0,-50,44], [0,-52,46],[15,-22,60], [12,-25,67],
                  [0,-25,67], [0,-15,74], [9,-15,74], [12,-6,76],
                  [0,-6,76], [17,-3,67], [18,-10,58], [20,10,53], 
                  [20,14,66], [9,12,80],[0,12,80], [0,14,66],
                  [0,10,53]
		],
		faces = [ [0,1,2], [1,4,2], [2,4,3], [4,5,3], [0,2,6],
                  [8,7,5], [3,5,7], [6,3,7], [2,3,6], [7,10,11],
                  [7,8,10], [8,9,10], [9,11,10], [9,12,11],
                  [6,7,11], [6,11,13], [6,13,14], [6,14,0],
                  [0,14,15], [14,13,15], [13,16,15], [13,17,16],
		  [13,11,17], [11,12,17], [17,12,18], [17,18,19],
                  [19,16,17], [15,16,20],[20,16,19], [20,0,15],
                  [1,0,20],
				]
	);
}

module body()
{
	union()
	{
		bodyHalf();
		mirror([1,0,0])
		{
			bodyHalf();
		}
	}
}

module feet()
{
	union()
	{
		translate([-7,0,0]) footLeft();
		mirror([1,0,0]){
			translate([-7,0,0]) footLeft();
		}
	}
}

module head()
{
	union()
	{
		headhalf();
		mirror([1,0,0])
		{
			headhalf();
		}
	}
}

module porygon()
{   
	union()
	{
		head();
		body();
		tail();
		feet();
	}
}

porygon();

back