3D tryckt fotografera (1 / 1 steg)

Steg 1: Koden



Alla dessa 3D modeller genererades algoritmiskt från behandling med ModelBuilder bibliotek av Marius Watz. Detta bibliotek kan du spara 3D geometrier i STL filformat, STL-filer som bildar ett vattentätt mesh kan skrivas av en 3D-skrivare.

För att komma igång med denna kod själv, ladda ner den senaste versionen av ModelBuilder bibliotek, packa upp filen och kopiera mappen till bearbetnings "bibliotek" mapp. Om du har installerat föregångare till ModelBuilder biblioteket (kallas Unlekker bibliotek), måste du ta bort den. När detta är klart starta om bearbetning.

bild till 3d utskrivbar heightmap/lithophane
av Amanda Ghassaei
Maj 2013

/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*/
bibliotek
import processing.opengl.*;
import unlekker.util.*;
import unlekker.modelbuilder.*;
import ec.util.*;

String namn = "your_file_name_here.jpg";//name av fil (med filnamnstillägget - detta också fungerar med png)

lagring för dimensioner
int widthRes;
int heightRes;
flyta widthDim = 5; //width dimension (i tum)
float widthScaled;
float heightScaled;
flyta zDim = 0.1;//max i höjdled (i tum)
flyta tjocklek = 0.02;//base tjocklek (i tum)

booleska Invertera = true; //if sant, sedan vita områden är lägre än svart, om inte sant vita områden är högre

PImage img; //storage för bild
float pixeldata []; //storage för pixel array
UVertexList v1, v2, v3, v4, //storage för verticies
UGeometry geo, //storage för stl geometri

void setup() {

IMG = loadImage (namn); //load bild
få måtten på bilden
widthRes = img.width;
heightRes = img.height;

storlek (widthRes, heightRes, P3D); //set dimensioner av produktionen

bild (img, 0,0); //display bild
loadPixels (); //poad pixlar till array

pixeldata = ny float [widthRes * heightRes]; //initialize lagring för pixeldata
för (heltal index = 0; index < widthRes * heightRes; index ++) {
int getPixelData = pixlar [index]; //get data från pixlar [] matris
pixeldata [index] = getPixelData & 255; //convert till gråskala byte (0-255)
}

initiera lagring för stl
Geo = nya UGeometry();
v1 = nya UVertexList();
v2 = nya UVertexList();
v3 = nya UVertexList();
v4 = nya UVertexList();

Rita stl

IF(Invert) {
Rita upp
för (int jag = 0; jag <(heightRes-1); i ++) {
v1.Reset();
v2.Reset();
för (int j = 0; j < widthRes; j ++) {
widthScaled = j/float (widthRes) * widthDim;
översta lagret
v1.Add(widthScaled,i/float(widthRes)*widthDim,(255-pixeldata[widthRes*i+j])*zDim/255+thickness);
v2.Add(widthScaled,(i+1)/float(widthRes)*widthDim,(255-pixeldata[widthRes*(i+1)+j])*zDim/255+thickness);
}
geo.quadStrip(v1,v2);
}
dra sidor
v1.Reset();
v2.Reset();
v3.Reset();
v4.Reset();
för (int j = 0; j < widthRes; j ++) {
widthScaled = j/float (widthRes) * widthDim;
v1.Add(widthScaled,0,(255-pixeldata[j])*zDim/255+thickness);
v2.Add(widthScaled,0,0);
v3.Add(widthScaled,(heightRes-1)/float(widthRes)*widthDim,(255-pixeldata[widthRes*(heightRes-1)+j])*zDim/255+thickness);
v4.Add(widthScaled,(heightRes-1)/float(widthRes)*widthDim,0);
}
geo.quadStrip(v2,v1);
geo.quadStrip(v3,v4);
dra sidor
v1.Reset();
v2.Reset();
v3.Reset();
v4.Reset();
för (int jag = 0; jag < heightRes; i ++) {
heightScaled = jag / flyta (widthRes) * widthDim;
v1.Add(0,heightScaled,(255-pixeldata[widthRes*i])*zDim/255+thickness);
v2.Add(0,heightScaled,0);
v3.Add((widthRes-1)/float(widthRes)*widthDim,heightScaled,(255-pixeldata[widthRes*(i+1)-1])*zDim/255+thickness);
v4.Add((widthRes-1)/float(widthRes)*widthDim,heightScaled,0);
}
geo.quadStrip(v1,v2);
geo.quadStrip(v4,v3);
}
annat {
Rita upp
för (int jag = 0; jag <(heightRes-1); i ++) {
v1.Reset();
v2.Reset();
för (int j = 0; j < widthRes; j ++) {
widthScaled = j/float (widthRes) * widthDim;
översta lagret
v1.Add(widthScaled,i/float(widthRes)*widthDim,(pixeldata[widthRes*i+j])*zDim/255+thickness);
v2.Add(widthScaled,(i+1)/float(widthRes)*widthDim,(pixeldata[widthRes*(i+1)+j])*zDim/255+thickness);
}
geo.quadStrip(v1,v2);
}
dra sidor
v1.Reset();
v2.Reset();
v3.Reset();
v4.Reset();
för (int j = 0; j < widthRes; j ++) {
widthScaled = j/float (widthRes) * widthDim;
v1.Add(widthScaled,0,(pixeldata[j])*zDim/255+thickness);
v2.Add(widthScaled,0,0);
v3.Add(widthScaled,(heightRes-1)/float(widthRes)*widthDim,(pixeldata[widthRes*(heightRes-1)+j])*zDim/255+thickness);
v4.Add(widthScaled,(heightRes-1)/float(widthRes)*widthDim,0);
}
geo.quadStrip(v2,v1);
geo.quadStrip(v3,v4);
dra sidor
v1.Reset();
v2.Reset();
v3.Reset();
v4.Reset();
för (int jag = 0; jag < heightRes; i ++) {
heightScaled = jag / flyta (widthRes) * widthDim;
v1.Add(0,heightScaled,(pixeldata[widthRes*i])*zDim/255+thickness);
v2.Add(0,heightScaled,0);
v3.Add((widthRes-1)/float(widthRes)*widthDim,heightScaled,(pixeldata[widthRes*(i+1)-1])*zDim/255+thickness);
v4.Add((widthRes-1)/float(widthRes)*widthDim,heightScaled,0);
}
geo.quadStrip(v1,v2);
geo.quadStrip(v4,v3);
}

Rita botten
v1.Reset();
v2.Reset();
lägga till fyra nedersta hörn
v1.Add(0,0,0);
v1.Add(0,(heightRes-1)/float(widthRes)*widthDim,0);
v2.Add((widthRes-1)/float(widthRes)*widthDim,0,0);
v2.Add((widthRes-1)/float(widthRes)*widthDim,(heightRes-1)/float(widthRes)*widthDim,0);
geo.quadStrip(v1,v2);

ändra förlängning av filnamn
int dotPos = name.lastIndexOf(".");
om (dotPos > 0)
namn = name.substring (0, dotPos);

geo.writeSTL(this,name+".stl");

Exit();

println("finished");

}

Hämta den senaste versionen av bearbetning skiss från GitHub (ladda ner som en zip genom att klicka på knappen moln). Öppna mappen kallas Lithograph3DPrint. Kopiera alla gråskalebilder som du vill konvertera till denna mapp.

Om du vill köra skissen, ersätta del inom citationstecken i följande rad:

String namn = "your_file_name_here";

med namnet på din gråskala bild. Jag tror .gif, .jpg, .tga, och PNG-filer kommer alla att fungera bra, men jag har bara testat .jpg hittills. Springa skissen, efter en minut eller två bearbetning kommer att berätta att det är att skriva en STL-fil och så småningom det kommer att berätta att den är klar. Den resulterande filen kommer att placeras i den skiss mapp som heter "NAME_OF_ORIGINAL_FILE.stl" kan du öppna filen stl med en mängd olika CAD programvara och stl tittare, jag gillar MeshLab för enkel visning (det är gratis och öppen källkod).

Som standard kommer min skiss skala bilder till 8" bred, med en bas tjocklek på 0,02" och funktionen tjocklek upp till 0.1", kan du ändra dessa inställning genom att justera variabeln överst på skissen.

Se Steg
Relaterade Ämnen

Regnbåge rulle

En rulle som målar regnbågar!Barn älskar målning instant rainbow och om du är en anhängare av hbt-personers rättigheter, Visa din uppskattning genom att färga grå världen med stolthet regnbågen. I stället för målning en enda färg, blandar Regnbåge ru...

3D tryckt Tilt-Shift makro förlängningsrör

Hej där fotografi / 3D utskrift entusiast. Dagens projekt syftar till att göra något sånt här till något som detta, med något lite sånt här. Jag gjorde denna adapter för Nikon F-bajonett, men det finns ingen anledning det inte kunde ändras för andra...

3D tryckt tid förflutit Dolly

om du gillar detta instructable vänligen överväga att rösta för det i göra den riktiga tävlingen, tack.En time lapse dolly lägger en mycket dynamisk touch till ett normalt statiska form av fotografi. Jag har byggt flera dockor de senaste åren, min fö...

En liten färg referens för fotografering

få bättre färgåtergivning i varje foto med denna lilla enhet.Tricken till exakta färger fånga är att alltid ha och använda en färg referens varje gång du börjar skjuta i olika belysning... men bär en färg referens kort stor nog att fokusera på är en...

Börja fotografering och arbeta dig upp till pro...

Vem som helst kan bli ett proffs fotograf, oavsett ålder. Fotografering är baserad på de tre aspekterna av kreativitet, material och kunskap, som vem som helst kan utnyttja. Fotografering är en färdighet att tar tid för att utveckla, och även om det...

3D tryckt MatTracks för RC bil i skala 1/10

Tidigare i höst, var jag i butiken för hobby att plocka upp vissa delar för min Sawback Gmade GM52000 och såg en uppsättning vad såg ut som små MatTracks att installera på den. Inte vilja spendera $250 hobby butiken ville för begagnade set, tänkte ja...

3D-tryckt Birdhouse, A Sign

trött på 3D-utskrift vapen? Vad sägs om skriva ut något som uppmuntrar liv?Denna birdhouse är posten/donation från min dotter och mig till årliga Birdhouse Display och fördel auktion, maj 24-juni 2, 2013, på The Arboretum i Lexington, KY, http://www....

3D tryckt, ultralätt, 3-axlig modulära Time-Lapse Motion Control System

Detta är historien om min första 3D utskrift projekt och hur det hjälpte att drastiskt minska den totala vikten på min 3-axlig rörelse time-lapse dolly kontrollsystem för lättare transport på flera dagars backcountry, backpacking resor. Inte bara gjo...

Kedjekransar hål fotografering

kedjekransar hål fotografering (eller full sprocket fotografi) är den metod som exponerar full bredd på 35mm film, inklusive kedjekransar hål, i exponeringen. Detta skapar några mycket unika resultat och är ett roligt projekt att experimentera med. I...

Alternativa fotografi - skriva ut bilder på objekt

flytande ljus är förmodligen en av de coolaste uppfinningarna i fotografiska historia. Det i princip kan du skriva ut fotografier på allting med standard mörkrum procedurer. Du kan skriva ut på trä, metall, glas, väggar, även ägg! (Oroa dig inte, om...

Inbäddade metall-3D tryckt Chip-Clip för köket

föreslogs det att jag gör instructables artiklar jag har skrivit med plast och andra material kombineras. Tekniken jag använder är ganska enkel och kan göras av vem som helst som har tillgång till en 3D-skrivare.Det första projektet är ett enkelt kli...

Makro fotografering Robot för omkring $15

Detta Instructable visar dig hur man bygger en robot som hjälper dig att skapa fantastiska makrobilder med din DSLR-kamera. Det kommer inte endast att skapa vackra statiska bilder som de som visas ovan, men det kan även snurra i ämnet för att få en f...

3D tryckt Merlin stil Steadicam: MO-FLO 1,0

Låt mig presentera den MO-FLO 1.0, ytterligare en av mina poster in i världen av DIY kameran stabilisering utrustningen. MO-FLO, kort för MOVIE och FLOW, är en 3d tryckt Merlin stil steadicam.Om du är ny till ämnet, är Steadicam ett varumärkesskyddad...

Hög hastighet blixt fotografering

detta är en bild på en skruvmejsel mitten av bounce.Efter att ha läst om hög hastighet fotografering i en tidning blev jag inspirerad att gräva igenom min garderob och se vad jag kunde komma på. Jag använde ett hem gjorde make-skärm att utlösa blixte...

3D tryckt undervattenskamera

Att välja en undervattenskamera är inte lätt: det finns ingen bästa eller rätt undervattens kamera att köpa, utan snarare den bästa eller rätt kameran för dina specifika behov och tyvärr: din budgetrestriktioner.För att skjuta undervattensfoto behöve...

Fotografering för 3D lentikulär utskrift

Midwest lentikulär presenterar:Fotografering för 3D lentikulär utskriftDet finns flera sätt att skapa en illusion av tre dimensioner med hjälp av linsgrumlingar process men en av de mest effektiva har alltid varit naturliga 3D-fotografering. Självstu...

Lätt 35 3D tryckta hålkamera

Lätt 35 kameran är snabb att skriva ut, Billigt och lätt att göra.Baserat på 35mm film, lätt 35 kan tryckas i ca 3,5 timmar på bara om någon glödtråd-baserad 3D-skrivare, och behöver bara ett hål att montera och använda. Inga batterier behövs.Lätt 35...

Avskärma som skrivar ut Tutorial del 1: Från fotografi till monokrom bild

detta är först i en serie av tre skärm utskrift tutorials, som jag kommer att beskriva processen jag använder för att skapa handen ut objekt till salu i min Etsy shop, Hund hus. Under loppet av tutorials kommer att jag visa dig hur att använda ett fo...

Time-Lapse fotografi bearbetning med hjälp av GIMP

efter att ha tagit flera bilder av moln utanför mitt hem, märkte jag att de var på nästan samma riktning. Genom att visa dem i snabb följd, de såg nästan ut som en tidsfördröjd bildruta-för-bildruta-animering. Jag bestämde mig att göra den till en an...