6. 3D Scanning and Printing

printing_result

Design and 3D print an object (small, few cm3, limited by printer time) and 3D scan an object

Self 3d printer troubles

prusa_problem

I had some problems with my buse thermistor, I decide to replace it during this week. I was used to disassemble and reassemble it, so I try to replace it.

prusa_problem_2

But unfortunatly, I was not able to do it, and I discover another problem, I don't know if I broke an other part. So I will take it in the lab and see with the fab tool what's going on.

final_prusa_problem

I give up 😢 But I will take in the lab to see what's going on.

Characterization of the 3D printer

With our group, we maid a characterization of our 3d printer, the ultimaker 3, and maid a little comparaison between the Ultimaker3 and Creality CR-10S, you can find the documentation by clicking here.

Design and 3d print an object

Design the captive sphere

Inspired by some thingiverse projects, I want to make a parametric captive sphere, and try the mode two colors of the ultimaker.

  1. Find a simple example on thingiverse

    captive_sphere_basic_code

  2. Make it parametric

    captive_sphere_parametric_incomplete_code

  3. Try with big size

    There is a problem, the fixing parameter couldn't, gapBetweenSphereAndCube and insideSphereRadius need to be calculated in function of cubeSize.

    captive_sphere_parametric_ic_big_size

  4. Let's be more parametric

    I create all this variable, by deducted the relation and test with multiple value.

    captive_sphere_parametric_big_size

  5. Let's create module

    captive_sphere_module_whithout_color

  6. Let's play with $fn

    • $fn = 6

      captive_sphere_module_fn_8

    • $fn = 8

      captive_sphere_module_fn_8

      captive_sphere_module_fn_8_slicer_estimated_prusa

    • $fn = 30

      captive_sphere_module_fn_30_slicer_estimated_prusa

    • $fn = 100

      captive_sphere_module_fn_100

    • $fn = 360

      captive_sphere_module_fn_360

      The render is too slow, because it's the perfect circle so it's hard to the machine to get the full result, the render take 9 minutes, 20 seconds

      captive_sphere_module_fn_360_slicer_estimated_prusa

      But the print time seems the same.

    I tested a lot of variant, but I really like the result with $fn = 8 😄

  7. Add colors I want to test the mode with the two extruders, So i will add some colors to my openscad.

    To define colors, in openscad, you can use rgb (rgb(R, G, B) = color[ R/255, G/255, B/255 ]), or give juste the name color (like red). For more details go there.

    captive_sphere_module_color

    You couldn't export color render in openscad

    You need to make some tricks to be able to transform openscad output monocolor in model multicolor.

    There is some tricks using Slic3r or meshmixer, for now I don't know what kind tool I will use.

Result file

One of the most render that I liked was this one available on the bottom, you can download it, just by clicking here.

Your browser does not seem to support WebGL.
'

3d print it

First print

For the first print, I used the CR100.

Openscad parameter

  • $fn = 8
  • cubeSizeParameter = 20

The sphere was well printer, it's clean and all the things was smooth.

The cube was printed as well, they are just some failures on the top openess in the sides parts.

let_s_print_small

first_print_result

Two colors print

Openscad parameter

  • $fn = 8
  • cubeSizeParameter = 20
Modelisation

Unfortunately we could'nt export the colors from openscad. So, as I said at the top of this page, they are some tricks to do with slicers, or mesh tools to have multicolor in models made by openscad. Even the AMF export does'nt work.

I want to test the two extruders of Utilmaker 3, so I use Cura for make the configuration. I need to export each part of the model.

captive_sphere_export_box

After that, for each of part I select the right extruder. For me it's just two part, the cube with Extruder 1 and the sphere with Extruder 2.

cura_multi_color

When it's done, select each part and right click to merge the part in one model.

We only print PVA in the second nozzle of the ultimaker, so I ty to print with it but it was a failure.

ultimake_double_color_failure

I need to test others tools like Povray, or alternative to see if I can facilitate the processus.

Cr100 vs Ultimaker 3

Openscad parameter

  • $fn = 30
  • cubeSizeParameter = 40

compare_cr100_ultimaker

  • The print time seems equal
  • The spheres have the same quality
  • Utilmaker have better management of constraints

Openscad file

Here you can download the Openscad file, or you can see the script file on the bottom:

// Configuration parameter
$fn = 30;
cubeSizeParameter = 40;

/*      Define colors, in openscad:
          rgb(R, G, B) = [ R/255, G/255, B/255 ] or "red"
          For more details go the official documentation
*/
colorCubeUser = [255/255, 255/255, 240/255];
colorSphereUser = "OrangeRed";

logoFile = "../images/UDEZ_logo_cutter_mini.png";

logoFile2 = "../images/udez_logo_2.dxf";

module logo(cubeSize= cubeSizeParameter) {
    translate([-3*cubeSize/8,-3*cubeSize/8,cubeSize/2+0.6])
    scale([0.1, 0.1, 0.01])
        surface(file=logoFile,center=true, invert=true);
}
// Modules
module cubeWithEmptySphere(insideCubeSphereRadius, cubeSize= cubeSizeParameter){
    
    difference() {
        union(){
        cube(cubeSize, center=true);
        logo();
    }
    sphere(insideCubeSphereRadius);
    
    }
}

module sphereBottomSquare(insideSphereRadius, cubeSize= cubeSizeParameter){
    difference() {
        sphere(insideSphereRadius);
        translate ([0,0,-cubeSize])
        cube([insideSphereRadius,insideSphereRadius,cubeSize], center=true);
    }
}


module captiveSphere(colorCube, colorSphere, cubeSize= cubeSizeParameter){

//  Inside calculated parameter
    gapBetweenSphereAndCube = cubeSize /10;
    insideSphereRadius = cubeSize/2 + gapBetweenSphereAndCube / 3;
    insideCubeSphereRadius = insideSphereRadius + gapBetweenSphereAndCube;
    
//  Render
    color(c=colorCube) cubeWithEmptySphere(insideCubeSphereRadius, cubeSize);
    color(c=colorSphere) sphereBottomSquare(insideSphereRadius, cubeSize);
}


// Final render
captiveSphere(colorCube=colorCubeUser, colorSphere=colorSphereUser);

//linear_extrude(height = 1, center = true, convexity = 10)
//		import(logoFile2);

Scanning

First try: scan the volcano extruder

For this assignment, I try to scanning a volcano extruder from E3D. I try to use VisualSFM without success, then I used the application SCANN3D. When you using the application, you are helped to take pictures. There is a little tutorial in the first to explain how to do it. I take 42 pictures but the result was to hudge, and to export you need to pay the application, so I didn't pay because I wasn't satisfied by the result (⚠️ I lost screenshot of renders). I think, the object will be hard to be scanned, because it's in aluminium, and I think the light is to reflected and it can't be scanned easly.

volcano volcano

Meshroom scanning

To validate, this week I tried to use meshroom, an open source photogrammetric software, he works a little bit like Mods, they are several module connectable on each of them, and they are many possible customization. Usually to use meshroom, you need to have NVIDIA GPU with Cuda installed. So I try to use it with my personnal computer, I try to understand the documentation about how to use it without cuda, Draft Meshing butit was not concluante I already have an error "No cuda founded".

Then I took a a computer of a lab with NVDIA GPU and Cuda installed, and I decide to scan 3d printed pumpkin. Before to use the software, I placed the pumpkin in the center of table with some white papers around the scanned object. I turn arround the table and takes pictures from my smartphone in all angles and I upload pictures in the computer.

place_pumpkin_center_table

The first step is to upload pictures, when it was done I try to directly launch the Compute button, but it doesn't work, so I looked a video tutorial to know how it works and what is the best way to start.

meshroom_init

So from the video, I learn that I need to first compute StructureFromMotion, by right click in the module on the graph view and click on Compute. Then Meshroom, will generate differents maching points from all the pictures. Strangely from the 37 pictures that I give to meshroom, for this computation, he dectect similitude only on 20 pictures, so he recognize maching point only in one side, maybe I need to take more pictures in the future.

structure_from_motion matching_points

After this step, as StructureFromMotion, I need to compute Meshing and Texturing to have the result. Because of what I describe in the top, I have only a half of the renderer, but I found that really exciting, and I want to know more how to configure meshroom. Because for the exercise, I really stay simple. You can click the above screenshot renderer or download it just by clicking here for the obj file, and for texture click here.

model

I tried to make rendering of the object in the web browser, but it was too slow, so I remove it (even the library seems work in the demo example).

3DF Zephyr

  • Install the free software version
  • Workflow > New project
  • Import less then 50 pictures

3dzephyr_recap_new_project

  • Click on run

3dzephyr_recap_run

  • With my free version, I did'nt get any relevent result, the software takes only 50 pictures, it's hard to find the good pictures that the software needed to made the scan.

Qlone

After all, I decide to use Qlone application for this exercise, the application use photogrammetry technology and it's freemium, that's mean it's free, but you have some paid features. So in the free version, you can only made the scanning in one time, when it's done you could'nt update/improve it and you can only export it to sketch fab as an object or as video. But if you want to export the obj, stl or ply file or improve the scanning, you need to upgrade to the premium version of the application. So here on the bottom, you can find the export prices. For this exercise, I will not paid, I will use the free version and export to sketchfab to show the result.

qlone_price

Before to start the scanning, you need to print the help scanning paper in the dimension that you prefer. In my case, I use standard A4 format. The bellow video of Qlone, explain all the functionnality and how the scan works.

First try

For the first try, I used a mini sculture maid by hand, I put it on the middle of the paper that I printed before. Then I start to follow the instruction of the application.

1_initial

After the placement of the object to scan on the paper, there is a record button on the left of the screen and sphere all around the scanned object. So the goal, is to capture all the square of the sphere. To do that, you need to turn around the object or to turn the paper, the direction hasn't importance, all you need is to capture all squares of the sphere. So I clicked on the record button to start the process.

1_scanning

Then after I scanned all the object, the application need some time to process and to get the result. There is two steps it takes a minimum of 2 or 3 minutes to compute the result. I didn't think that they use the smartphone to compute the result, the smartphone does'nt overheat, so I suppose they use web api to compute the result.

1_scanning_processing

The result was not relevant, too many imprecisions, I think the object is may be to complexe for the free version. For the curiosity, I tried to see what is the flatten top option, I suppose that it is for the objects with flatten top, that it is not my case, but let see.

1_flatten_top 1_flatten_top_result

As you can see the result is worst the first rendering exported on sketchfab, you can see the rendering just here:

Second try

So, for the second try I take one more simple object for the scanning. Like I describe on the top, I made the process to begin the scan.

2_initial 2_processing 2_processing_compute

The result is good, but it's not enought good with details, so I decide to test the option reverse object. The goal of this option is to improve the scan, all the need is to rotate the object, and making the same process, and then the application will compute the two results.

2_rotate_object 2_processing_rotate

The last result is pretty cool, and I'm happy with it, I think it could be more precise if I paid the application and make some retouch on the model, but this result is pretty cool, the two position help the application to be more precise, and getting better rendering. So to save the model, all need is to click on the blue button. And the the model is on the gallery, and it can be exported.

2_processing_result qlone_export

So, here you can find the result of the 3D scanning of the second try: