Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

13 Schritt:Schritt 1: Zutaten Schritt 2: Funktionsprinzip Schritt 3: Motor Schritt 4: Motor-Treiber und Stromversorgung Schritt 5: Drehende Plattform Schritt 6: Webcam Schritt 7: Lineare Laser Schritt 8: Arduino + IDE Schritt 9: Verarbeitung Schritt 10: Scannen Schritt 11: Punktwolke Schritt 12: Der Kampf mit Meshlab Schritt 13: To-do und Ideen

Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
Überhaupt sich wundern von Copypaste-Methode, verwendbar im wirklichen Leben, nicht nur in der virtuellen Realität? Ich auch. Es ist 21. Jahrhundert, und jene, die näher als die meisten alle können sich vorstellen, sind! Dies ist möglich, Dank an 3D-Scanner und Drucker. Also lassen Sie uns versuchen, etwas zu scannen!

Zunächst einmal sorry für meine Englisch-Kenntnisse. Es ist nicht meine Muttersprache, ich habe es in der Schule gelernt, aber nicht viele Gelegenheiten, es zu benutzen, mit Ausnahme von Lesen von Artikeln in Englisch. Aber ich hoffe, es wäre gut genug, um zu verstehen.

Schritt 1: Zutaten

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    -on mit Arduino Arduino IDE
    -on Verarbeitung IDE
    -a viele LEGO (beste Spielzeug aller Zeiten!)
    -on-Schrittmotor
    -on Schrittmotor-Treiber und Stromversorgung
    -on lineare Laser
    -on Webcam
    - Eine Arbeits Meshlab
    und Einige helfen :)

    Zuerst müssen Sie alle Teile erhalten und denken über allgemeine Aussehen und Arbeitsweise.
    Und es hängt davon ab, das Beste aus Art der Schrittmotor Sie bekommen können. Ich habe mein Schritt aus alten OKI Drucker, der angebracht Gang gesetzt wurde. Es war sehr nützlich, denn ich konnte Lego Riemenscheibe zu befestigen, ohne sie dauerhaft zu zerstören. In einer Tat, ich hatte keine Legosteine ​​während Build von rotierenden Plattform zerstört. Ich hasse es, Dinge zu zerstören.
    Code ist primitiv, ich weiß es. Es hat große Fehler, nicht alle benötigten Algorithmen angewendet werden. Aber es erzeugt Punktwolken, die sehr ähnlich zu wirklichen Dinge sind, und das war Ziel dieser Alpha-Version des Scanners.

    Lassen Sie uns so vorbereiten Teile.

Schritt 2: Funktionsprinzip

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Wie funktioniert das?
    Wir müssen kartesischen Koordinaten (in einem Raum) von Punkten, die auf Objekt gescannt gehört gefunden.
    Grundsätzlich sind wir für die Entfernung der Suche, zwischen Drehachse und einem rot markiert durch Laser ("ro" auf dem Bild) Punkt. Um dies zu finden, müssen wir uns messen, wie viele Pixel zwischen optischen Achse der Kamera und Laserpunkt markiert. Bild wird dieser Abstand als "b" gekennzeichnet. Wenn wir diese Informationen zu gelangen, müssen wir sie in Millimeter (wie viele Pixel sind in einem Millimeter) zu konvertieren. Winkel zwischen Laser und Kamera Achse konstant ist und gleich "alpha". Verwendung einfacher Trigonometrie, können wir "ro" zu berechnen:
    sinus (alpha) = b / ro, wonach ro = b / sinus (alpha) bedeutet,
    Dieser Vorgang wiederholt sich jede Schicht, in meinem Fall ist es 480times. Dann rotierenden Plattformen zu bewegen durch einige Winkel und die ganze Operation wird wiederholt.

    Lassen Sie uns auf das zweite Bild zu bewegen.
    Vorherige Operationen gab uns Koordinaten in Polarkoordinaten-System. In Polarsystem, jeder Punkt in etwa so aussehen, dass:
    P = (Abstand von der Z-Achse, Winkel zwischen dem Punkt und der X-Achse, Z), die P = (ro, fi, z) ist.
    Ro ist unser Abstand in früheren Operation gemessen. Fi ist ein Winkel von rotierenden Plattform. Es wächst eine konstante Menge, jedes Mal Plattform drehen. Diese konstante Menge in gleichen 360-Grad / Anzahl der Betrieb
    Dh für 120 Profile in der Umgebung bewegt Plattform zu 360deg / 120 = 3 Grad. So nach dem ersten Zug, fi = 3, nach der zweiten fi = 6, nach dritten fi = 9 usw.
    Z-Wert ist der gleiche Wert wie Z in kartesisches System.

    Die Umrechnung von polaren in kartesische ist sehr einfach:
    x = ro * cosinus (fi)
    y = ro * Sinus (fi)
    z = z

Schritt 3: Motor

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    Es ist 4-Stecker bipolaren Schrittmotor von einem alten OKI Drucker. Es verfügt über 48 Schritte pro Umdrehung (7,5 Grad pro Schritt), um 3,7V Stromversorgung angetrieben. Integrierte Getriebe 6: 1-Verhältnis, was bedeutet, ich hatte 6 * 48 Schritte auf den Ausgang. Es dauert 200-250mA bei Bewegung.
    Ich gelötet 4 Drähte an Anschlüsse der Schrittmotor. Zu einem anderen Enden der Drähte ich habe einzelne Goldstift gelötet. Jetzt ist es sehr einfach, um es mit Fahrer zu verbinden.
    Ich legte Lego Riemenscheibe der integrierten Getriebe. Ich nahm es heraus und bohren Sie 6 Löcher. Löcher hat dieselbe Größe und Anordnung wie Löcher auf Lego Scheibe. Riemenscheibe und Getriebe werden zusammen mit "3-langen" Wellen verbunden.

Schritt 4: Motor-Treiber und Stromversorgung

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Driver:
    Bipolare Schritt wird durch H-Brücke gefahren. Aufgrund der geringen Leistungsaufnahme von Schritt ist L293D mehr als genug. In einfachsten Variante verwendet H-Brücke 4 digitalen Ausgangspins von Arduino, + 5V und GND. Für Ausgangsstifte zum 2 können Sie kleine Zusatzplatine verwenden.
    Weitere Daten können in Arduino Referenz und auf Tom Igoe Link zur Verfügung: http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors/
    Ready to termotransfer Boards und Schaltplänen sind unten angebracht.
    Parts:
    Part Value Package Bibliothek Position (mil) Orientation

    IC1 L293D DIL16 st-Mikroelektronik (700 750) R270
    JP1 2x03 Stecknadelkopf (700 1350) R0
    JP2 2x03 Stecknadelkopf (700 1875) R0
    OUT1 AK500 / 2-H con-ptr500 (300 150) R0
    OUT2 AK500 / 2-H con-ptr500 (1100 150) R0
    POWER-1X02 Stecknadelkopf (950 1875) R90
    Q1 BC547 TO92-Transistor-NPN (275 2175) R180
    Q2 BC547 TO92-Transistor-NPN (1125 2175) R180
    R1 1k 0207/10 rcl (425 1700) R0
    R2 1k 0207/10 rcl (750 2175) R180
    R3 10k 0207/10 rcl (975 1700) R0
    R4 10k 0207/10 rcl (800 2050) R0
    SIGNAL 1X02 Stecknadelkopf (450 1875) R90
    X3 AK500 / 2-H con-ptr500 (700 150) R0

    Stromversorgung:
    Netzteil für Schritt ist super-einfach LM317 Anwendung. Schematische können auf Datenblatt. Mit Potentiometer, kann ich Spannung benötigt Ebene (3,7V in meinem Fall) eingestellt.
    Parts:

    Part Value Package Bibliothek Position (mm) Ausrichtung

    C1 100uF E5-8,5 rcl (24,13 5,08) R270
    C2 100nF C050-030X075 rcl (10,16 13,335) R270
    IC1 317TS v-reg (20,32 16,51) R0
    R1 240R 0207/10 rcl (17.78 10.16) R0
    R2 5k CA6V Topf (13,97 4,445) R180
    X1 AK500 / 2 con-ptr500 (3,81 13,335) R270
    X2 AK500 / 2 con-ptr500 (33,02 13,335) R90

Schritt 5: Drehende Plattform

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Alle 9 Artikel anzeigen
    Lego Teil! Meine Schritt wurde von Lego verrohrt, so dass es keine Chance, sich zu bewegen hat. Ich brauchte nicht zu Schrauben, Leim usw. Momentum ist auf Plattform durch Gummiband und Riemenscheibe dieselbe Größe wie die auf Motor übertragen verwenden (Verhältnis 1: 1). Dann wird es mit einer anderen Achse von 20.12 Zahnradsatz verbunden ist. All dies führt zu Gesamtverhältnis 10: 1, was bedeutet, ich muss genau 10 volle Umdrehungen. steilerer für eine Umdrehung der Plattform. Platform wurde von CD gemacht geklebt, um Lego gerädert (es war sehr schlecht Reihe von Lego Elemente verursacht dünnen Kunststoff einem Viele Brokes während der normalen Wiedergabe ...). CD ist von grünen Papier überzogen, um 2-seitige Klebeband verklebt.
    Pic ist mehr als tausend Worte?

Schritt 6: Webcam

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    Früher habe ich sehr primitiv Creative WebCam Vista. Es ist ziemlich alt, arm Sensor (640x480) hat, hat sie schlechte Optik (Kunststofflinsen). Aber es hat einen Vorteil. Ich habe es bereits. Es ist auch zu drehenden Plattform befestigt (wenig zu niedrig, müssen Sie sich bald ändern).

Schritt 7: Lineare Laser

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    Schlechte Qualität (~ 1 $) Laser-Pointer ist mit Zylinderlinse aus Glasstab gemacht angebracht. Diese Art der Glasstäbe werden in Chemielabors verwendet. Laser und Linse in Lego Fall verrohrt (bei verrohrten, danke Obvious Mannschaftskapitän ...). Laser basiert auf durch Drehung ein wenig gedreht wird, wird durch Lego-Taste gedrückt wird. Auch zu Plattform befestigt ist. Winkel zwischen optischen Achse der Kamera und Laser sind um 30degree.

Schritt 8: Arduino + IDE

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    Ich schulde Arduino Leonardo nur, es war also nur die Wahl ich habe.
    Es hat einfache Code, der sich drehen Schritt verursacht, wenn Befehl bekam von Procesing. Befehle werden von Serien gesendet.
    Ich entschied mich für 4 Stufen pro Phase, was bedeutet, ich habe 120 Fotos und 120 Profile in der Umgebung, alle 12 Grad. Weniger Stufen verursacht Fehler aufgrund Elastizität des Gummiband.
    Es wird unter Verwendung von Standard-Schrittbibliothek Arduino.

    Code:

    #include <Stepper.h>
    Stepper oki (48,8,9); // Siehe Schritt Tutorial in arduino.cc für Infos über die
    const int ledPin = 13; // Der Stift, dass die LED angeschlossen ist
    int incomingByte; // Eine Variable, um eingehenden seriellen Daten in gelesen

    Leere setup () {
    // Initialisierung der seriellen Kommunikation:
    Serial.begin (9600);
    // Initialisierung der LED-Pin als Ausgang:
    pinMode (ledPin, OUTPUT);
    oki.setSpeed ​​(60);
    }

    Leere Schleife () {
    // Sehen, ob es eingehenden seriellen Daten:
    if (Serial.available ()> 0) {
    // Lesen Sie die ältesten Bytes im seriellen Puffer:
    incomingByte = Serial.read ();
    // Wenn es ein Kapital H (ASCII 72), schalten Sie die LED:
    if (incomingByte == 'S') {
    digital (ledPin, HIGH);
    oki.step (4);
    }
    // Wenn es ein L (ASCII 76) schalten Sie die LED:
    if (incomingByte == 'K') {
    digital (ledPin, LOW);
    }
    }
    }

Schritt 9: Verarbeitung

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung
    Warum Verarbeitung? Denn es ist einfach zu bedienen, mit großen Referenz und Tutorial Basis. Auch ist es sehr ähnlich arduino. Das bedeutet, dass die Wahrscheinlichkeit der Fehler bei der Codeschreib Rückgang. Bibliotheken sind gut dokumentiert.

    Erste, was zu tun ist, die Verarbeitung Installation GSVideo Bibliothek. Download- und Installationsanweisungen sind da: http://gsvideo.sourceforge.net/
    Also im Grunde Programmablauf sieht so ähnlich, aber es ist in 2 Schleifen (Fotos machen und den Rest) unterteilt:
    Foto machen => Sie finden hellste Pixel in jeder Zeile => Bild speichern Darstellungs hellsten Pixel => Abstand zwischen Bildmitte und hellste Pixel finden in jeder Zeile => konvertieren gesammelt Polarkoordinaten in kartesischen XYZ => Speichern ASC-Datei mit Punktwolke.
    Erläuterung kann in Kommentaren im Code gefunden werden.
    Das erste, was müssen preety bald geschehen wird, in dem Z-Wert gleich 0. Nun Z = 0 ist nicht auf die Mitte der Plattform festgelegt, aber in der ersten Zeile des Fotos. Dies bewirkt, dass die Ausgangspunktwolke auf dem Kopf steht.

    Code:
    importieren codeanticode.gsvideo. *;
    importieren processing.serial. *;

    // Objekte
    PFont f;
    GSCapture cam;
    Serien myport;
    Printwriter Ausgang;

    // Farben
    Farbe schwarz = Farbe (0);
    Farbe Weiß = Farbe (255);

    // Variablen
    int itr; // Iteration
    schweben pixBright;
    schweben Maxbright = 0;
    int maxBrightPos = 0;
    int prevMaxBrightPos;
    int cntr = 1;
    int row;
    int col;

    // Scannerparameter
    schweben odl = 210; // Abstand zwischen Webcam und Drehachse, [Millimeter], noch nicht verwendet
    float Etap = 120; // Anzahl der Phasen Profilierungs pro Umdrehung
    schweben katLaser = 25 * PI / 180; // Winkel zwischen Laser und Kamera [rad]
    schweben katOperacji = 2 * PI / Etap; // Winkel zwischen 2 Profilen [rad]

    // Koordinaten
    float x, y, z; // Kartesischen Kabel. [Millimeter]
    ro schweben; // Erste von Polarkoordinaten, [Millimeter]
    schweben fi; // Zweite von Polarkoordinaten, [rad]
    float b; // Abstand zwischen hellsten Pixel und Mitte photo [Pixel]
    float pxmmpoz = 5; // Pixel pro Millimeter horizontal 1px = 0,2 mm
    float pxmmpion = 5; // Pixel pro Millimeter vertikal 1px = 0,2 mm

    // ================= CONFIG ===================

    Leere setup () {
    Größe (800, 600);
    strokeWeight (1);
    glatt ();
    Hintergrund (0);

    // Schriftarten
    f = Createfont ("Arial", 16, true);

    // Kamera conf.
    String ([] = avcams GSCapture.list);
    if (avcams.length == 0) {
    println ("Es gibt keine Kameras für die Aufnahme zur Verfügung.");
    textfont (f, 12);
    füllen (255,0,0);
    Text ("Kamera nicht bereit", 680,32);
    }
    else {
    println ("Verfügbare Kameras:");
    for (int i = 0; i <avcams.length; i ++) {
    println (avcams [i]);
    }
    textfont (f, 12);
    füllen (0,255,0);
    Text ("Kamera bereit", 680,32);
    cam = new GSCapture (this, 640, 480, avcams [0]);
    cam.start ();
    }

    // Serielle (COM) conf.
    println (Serial.list ());
    myport = new Serien (this, Serial.list () [0], 9600);

    // Ausgabedatei
    output = createWriter ("skan.asc"); // Plik wynikowy * .asc

    }

    // ============== MAIN PROGRAM =================

    Leere draw () {

    PImage zdjecie = create (cam.width, cam.height, RGB);
    cam.read ();
    Verzögerung (2000);
    für (itr = 0; itr <Etap; itr ++) {
    cam.read ();
    zdjecie.loadPixels ();
    cam.loadPixels ();
    for (int n = 0; n <zdjecie.width * zdjecie.height; n ++) {
    zdjecie.pixels [n] = cam.pixels [n];
    }
    zdjecie.updatePixels ();
    Set (20,20, cam);
    String nazwaPliku = "zdjecie -" + nf (itr + 1, 3) + ". Png";
    zdjecie.save (nazwaPliku);
    obroc ();
    Verzögerung (500);
    }
    obroc ();
    licz ();
    NOLOOP ();

    }

    Leere licz () {
    für (itr = 0; itr <Etap; itr ++) {

    String nazwaPliku = "zdjecie -" + nf (itr + 1, 3) + ". Png";
    PImage skan = loadimage (nazwaPliku);
    String nazwaPliku2 = "odzw -" + nf (itr + 1, 3) + ". Png";
    PImage odwz = create (skan.width, skan.height, RGB);
    skan.loadPixels ();
    odwz.loadPixels ();
    int CurrentPos;
    fi = * itr katOperacji;
    println (fi);

    für (row = 0; Zeile <skan.height; Reihe ++) {// Startreihenanalyse
    maxBrightPos = 0;
    Maxbright = 0;
    für (col = 0; col <skan.width; col ++) {
    CurrentPos = Zeile * skan.width + col;
    pixBright = Helligkeit (skan.pixels [CurrentPos]);
    if (pixBright> Maxbright) {
    Maxbright = pixBright;
    maxBrightPos = CurrentPos;
    }
    odwz.pixels [CurrentPos] = schwarz; // Setzen aller Pixel schwarz
    }

    odwz.pixels [maxBrightPos] = weiß; // Setzen hellste Pixel weiß

    b = ((maxBrightPos + 1-Zeile * skan.width) -skan.width / 2) / pxmmpoz;
    ro = b / sin (katLaser);
    //output.println(b + "," + prevMaxBrightPos + "," + maxBrightPos); // Ich habe diese für die Fehlersuche

    x = ro * cos (fi); // Änderung polaren Koordinaten zum kartesischen
    y = ro * sin (fi);
    z = Zeile / pxmmpion;

    if ((ro> = - 30) && (ro <= 60)) {// Druckkoordinaten
    output.println (x + "," + y + "," + z);
    }

    } // Ende der Zeile Analyse

    odwz.updatePixels ();
    odwz.save (nazwaPliku2);

    }
    output.flush ();
    output.close ();
    }

    Leere obroc () {// Sendebefehl zu drehen
    myPort.write ('S');
    Verzögerung (50);
    myPort.write ("K");
    }

Schritt 10: Scannen

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Wenn alle oben genannten Schritte durchgeführt werden, können wir das Scannen zu starten. Derzeit ist die Verarbeitung Code abgehört, so dass es nicht zu leben Ansicht. Zur Webcam richtig eingestellt, ich bin mit GettingStartedWithCaptureWin Codeform GSVideo Bibliothek Beispiele. Beste Scans gemacht werden, wenn es keinen Blitz, so schließt Scanner in einiger Gehäuse wird gute Idee sein. Wenn Sie keine haben, warten Sie bis zum Abend, wie I.
    Schalten Sie die Stromversorgung, schalten Sie den Laser, traf Run in Verarbeitung IDE. Warten Sie bis Scannen bereit ist. Sie erhalten * .asc-Datei, die kartesischen Koordinaten eines jeden Punktes enthält.

    Sorry für Video niedrige Qualität! Is not Got keine bessere Aufnahmekamera!

Schritt 11: Punktwolke

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Laden Sie Meshlab (http://meshlab.sourceforge.net/) oder verwenden Sie eine andere Software, um 3D-Punktwolken zu verwalten. Importieren Sie Ihre * .asc-Datei, einfach per Drag & Drop-Methode. Deaktivieren Triangulation und klicken Sie auf OK. Sie erhalten zu sehen Trübungspunkte von gescannten Objekt! Erfolg!
    Ich kann nicht mehr tun, fast alles, was in Meshlab, weil es eine Menge stürzt. Ich weiß nicht warum, ich werde mit diesem Kampf werden. Aber wenn man stabile Version zu erhalten (gibt es eine?) Können Sie Cloud in feste drehen und exportieren es als stereolitography * .stl-Datei. Und dies kann auf jedem 3D-Drucker ausgedruckt werden!

    Ist es nicht reizenden?

    Edit: 4. Dezember 2012:
    Ich war mir ziemlich sicher, dass ich Ausgabedatei zu diesem Schritt angeschlossen.
    Es scheint, ich kann asc oder 7z-Datei nicht in den der instructable ...
    Wenn Sie einen Blick auf asc Ausgabedatei übernehmen wollen, laden Sie pdf zu diesem Schritt angeschlossen und löschen ".pdf" Dateierweiterung aus dem Namen der Datei. Sie sollten "owl.asc" nur zu bleiben.
    Dieser Scan ist nicht der gleiche Scan zeigte in instructable! Es wurde gestern während Tag eingenommen, so ist es wenig verzerrt ist! Es war Kontrollmessung nach geringfügigen Änderung der Kamerahalterung gemacht.

Schritt 12: Der Kampf mit Meshlab

  1. Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Lassen Sie uns kochen: 3D-Scanner auf der Basis Arduino und Verarbeitung

    Hinzugefügt 4. Dezember 2012.
    Wie ich bereits sagte, ich habe zu gehen viel MeshLab abstürzt. Aber ich habe versucht, mit ihnen gekämpft, und ich habe teilweise Erfolg. Ich habe eine weitere Überprüfung vorgenommen, und tat etwas Mitte der Qualität fester davon! Ich glaube nicht, dass ich mehr Genauigkeit zu erhalten mit meiner Webcam.
    Aber hey! Es sieht aus wie eine Eule!

    Ich habe so etwas gemacht:
      Filter => Neuvernetzung ... => Flächenrück: Poisson; Attribute 10, 8, 1, 1 (es durchaus möglich ist, müssen Sie mit einem anderen Werten experimentieren) Filter => Normals ... => Invert Flächenorientierung Filter => Glätten ... => Taubin Glatte Filter => Vertex-Attribut zu übertragen; mark "Transfer-Geometrie", "Transfernormalen"; Quelle "eine andere Eule - gute quality.asc"; target "poisson mesh"
    Wie in den vorangegangenen Schritt werden dort mit Doppelverlängerung angebracht 2 Dateien. Löschen letzte (pdf), und Sie erhalten wil .ply * .asc-Datei, direkt von Scanner und *: solid in MeshLab gemacht (vor einem anderen Crash OFC).

Schritt 13: To-do und Ideen

  1. Tun:
    Setzen Z = 0 Position.
    Rebuild-Schnittstelle (eigentlich: zu bauen ...;))
    Kaufen echten linearen Laser-Modul, ohne "Geisterlicht-Effekt"
    hinzufügen Kalibrierung auf Hauptprogramm
    fügen Sie eine Scan-Algorithmen, die genauer macht
    und viele, viele andere Dinge ...

    Ideen:
    bessere Webcam, fullHD vielleicht?
    Vielleicht DSLR statt Webcam?
    Drehen Webcam 90degree werden vertikale Auflösung von 480 bis 640 Schichten zu erhöhen
    Linux compatibile (momentan habe ich Fehler Installation gsvideo auf meinem mint13)

    Weit, weit weg Idee:
    Handy-Scanner. Fast jeder mittleren und Premium-Class-Smartphone verfügt über eine sehr gute Qualität Kamera. Android-Software sollte nicht so schwer zu schreiben. Arduino Mega ADK kann direkt durch Android-Handy betrieben werden ... Leider habe ich nicht Smartphone weder Mega ADK. Wenn ich das zu bekommen, werde ich versuchen.

    Ich hoffe, Sie werden wie mein instructable. Scannen Sie die Dinge und haben Spaß mit dem!
    cube.