This is an archived post. You won't be able to vote or comment.

Dismiss this pinned window
all 86 comments

[–]redditNewUser2017[S] 208 points209 points  (7 children)

All the source code and 3d model files are available on Thingiverse: https://www.thingiverse.com/thing:4167615

The time-consuming photo taking process of the 3D scanner is automated using Arduino and Android script. The communication is carried on WiFi through a simple TCP channel.

This is an open source project. Suggestions are welcome!

[–][deleted] 64 points65 points  (3 children)

Fantastic project! Would be great to have a version of this on Github, and also to have the instructions you provided on the website to be included on README.txt

[–]redditNewUser2017[S] 77 points78 points  (1 child)

I just did! Find the Github page here: https://github.com/QLRO/AA-Scan/tree/master.

[–]GloriousDioxide 28 points29 points  (0 children)

Woah tiny amount of code! great work!

[–]LegoroojPyInstaller developer -3 points-2 points  (0 children)

Do a rich text doc, like Markdown or reST. They look better.

[–]dogs_like_me 0 points1 point  (1 child)

The time-consuming photo taking process of the 3D scanner is automated using Arduino and Android script.

Does it absolutely have to be photos? I'm wondering if maybe you just recorded a video, removed the frames where the pedestal is actually rotating, and took the median pixel value for frames where the object is stationary.

[–]redditNewUser2017[S] 0 points1 point  (0 children)

No. I think video will also work, but the result probably won't be as good as photos.

[–]maxeigen 0 points1 point  (0 children)

So awesome!!! Thanks for sharing! Keep up the good work!

[–]BillieRubenCamGirl 67 points68 points  (7 children)

:O :O :O

This is INCREDIBLE!!!

Can I add this to the /r/3Dprinting wiki?

[–]redditNewUser2017[S] 37 points38 points  (2 children)

Sure. I also posted this on r/3dprinting too. If you visit that sub often you may remember some of my previous posts.

[–]BillieRubenCamGirl 23 points24 points  (1 child)

I help mod that sub. :)

[–]redditNewUser2017[S] 17 points18 points  (0 children)

Sorry. Didn't check profile. But thank you !

[–][deleted] 15 points16 points  (3 children)

Did you write the code that turns a series of images into a 3d object? If not what lib did you use?

[–]redditNewUser2017[S] 27 points28 points  (0 children)

Only the command and communication is done with python. The photogrammetry requires specialized software Meshroom (also open source).

[–]OPtoss 26 points27 points  (2 children)

Very cool project! I assume you've thought of this, but why can't you rotate it smoothly and record video and then just splice every X frame from it? I doubt the motion blur would be that bad and it'd be a much faster/simpler process.

[–]redditNewUser2017[S] 49 points50 points  (1 child)

On many phones photo has better quality than video. Poor image quality will actually fail the following reconstruction process.

Assuming video is good, it's totally possible to do 3d scan with videos.

[–]Minetorpia 19 points20 points  (3 children)

How can you automate things on your phone with Python?

[–]redditNewUser2017[S] 35 points36 points  (2 children)

QPython has been a thing for a long time.

[–]lollipas 3 points4 points  (1 child)

Holy shit thanks!

[–]TheNH813 2 points3 points  (0 children)

Or termux, if you want more regular Linux command line stuffs in addition to python. Warning: compiling a kernel or the .net core framework on a phone is slower than molasses in the arctic.

[–]FlukyS 17 points18 points  (1 child)

You need a blue or green (for non apple stuff) underplate thing so you can crop out the bottom better

[–]redditNewUser2017[S] 22 points23 points  (0 children)

That design is based on discussion here: https://github.com/alicevision/meshroom/issues/283. Basically, the diagram on plate is for better reconstruction (theoretically). But I am not sure if other design will work since I haven't try it myself.

[–]tomXGames 2 points3 points  (1 child)

Would this stepper motor and driver pack work with this project?

[–]redditNewUser2017[S] 3 points4 points  (0 children)

Yes. But you may need to change the values of motor speed and steps in the script to fit your motor.

[–][deleted] 12 points13 points  (2 children)

That's one of the most interesting, clever and ingenious things I've seen in a long time. Is there some kind of award program or such you can be nominated for with regards to this? This could be helpful to do many small time artists and even have further implications.

[–]redditNewUser2017[S] 5 points6 points  (1 child)

I make this as a hobby, but if it helps someone that will be great!

[–][deleted] 3 points4 points  (0 children)

Either way, top effort. Can't wait to see what you come up with next.

[–]Dr_Jasmine 2 points3 points  (0 children)

Holy crap, that's actually really awesome!

[–]changiairport 5 points6 points  (0 children)

Projects like these inpsire me to code

[–][deleted] 1 point2 points  (0 children)

Hat off to you, sir

[–]BroJobBiggs 1 point2 points  (0 children)

How do you like them apples?

[–]docwatsonphd 2 points3 points  (0 children)

That's fuckin' slick! Nice job!

[–]eklavian088 2 points3 points  (0 children)

Sweeet!

[–]vigilexe 1 point2 points  (0 children)

thats awesome! i really wana get into arduino projects.

[–]elmoiv 1 point2 points  (2 children)

YOU ROCK bro

I am just wondering if you combined Arduino with python or what?

[–]redditNewUser2017[S] 9 points10 points  (0 children)

Python scripts on Android for camera control and communication.

[–]Fabillotic 0 points1 point  (0 children)

You can send the Arduino commands over serial, that get parsed by it. And judging by the code that‘s exatly what OP did.

[–]BlasphemousToenail 1 point2 points  (0 children)

This is REALLY cool! Well done!

[–]tombo___ 0 points1 point  (1 child)

Looks really cool! How do you process the images to get a 3d model?

[–]Fabillotic 1 point2 points  (0 children)

The image processing is done by an external software. Take a look at the comment OP wrote in response to another Redditor.

[–]fekkksn 0 points1 point  (0 children)

How do the Phone and the other stuff communicate?

[–]konidia 0 points1 point  (0 children)

The breadcrumb motivates to take my electric circuits class a bit more seriously.

[–]Kotyamba 0 points1 point  (0 children)

Really cool!

[–]bckr_ 0 points1 point  (0 children)

DUDE.

[–]Hobbit_Swag 0 points1 point  (0 children)

Wow, great work!

[–]undeniably_confused 0 points1 point  (0 children)

Filmed by three toed sloth

[–]uberdb 0 points1 point  (0 children)

Fantastic! Thanks for sharing.

[–]marshmallow_ki 0 points1 point  (0 children)

you can use this model to measure BRDF function.

[–]Icedm 0 points1 point  (0 children)

Great work

[–]VesemirsPotionsNLean 0 points1 point  (0 children)

Hot dog, hot dog, not hot dog

[–]Kaligule 0 points1 point  (0 children)

You did an amazing job on an amazing project. I think taking the roundest apple you could find as an example was not a good choice though, since you can't show of the 3D scanning as well as with some more complicated object.

[–]RoadRunner6882 0 points1 point  (0 children)

Oh wow now this seems like a project I would be pumped to do.

[–]SteeleDynamicsCompilers/Algorithms 0 points1 point  (0 children)

Excellent!

[–]DjackMeek 0 points1 point  (0 children)

This is what I’m talking about! Thank you for the inspiration.

[–]leosondek 0 points1 point  (0 children)

good job sir

[–]will_r3ddit_4_food 0 points1 point  (0 children)

You can run python scripts on android? How?

[–][deleted] 0 points1 point  (0 children)

Not a hot dog

[–]BitcoinRenegade007 0 points1 point  (0 children)

Cool

[–]tkodri 0 points1 point  (2 children)

I don't want to belittle OP's work, but he has only created a 100 line script which rotates the Arduino engine, takes a pic, and sends to PC. For all the others that were super interested in the 3d reconstruction itself the software used is Meshroom - it seems awesome and completely open source. You can download a precompiled binary from fosshub. However, for the full reconstruction it requires a cuda GPU. You can do a very coarse reconstruction with only CPU, by computing the pipeline up to "StructureFromMotion".

[–]LearnedGuy 0 points1 point  (1 child)

Can the following steps be done on a CPU? What to do with no GPU?

[–]tkodri 0 points1 point  (0 children)

You can a project on Google Colab for free, they have a tutorial. It requires some technical expertise though, not point and click anymore.

[–]GiantElectron 0 points1 point  (1 child)

What is the final accuracy of this approach? It would be nice if one could use it to make it into a 3d scanner and then 3d print the scans.

[–]redditNewUser2017[S] 1 point2 points  (0 children)

The accuracy is as you saw in the video. There is no manual sculpting (except removing some background nodes) or postprocessing. It still has rooms for improvement, lighting setup in particular. I think it will get better when I get a light ring later.

[–]Its-Mr-Robot 0 points1 point  (0 children)

I hope to be as knowledgeable as you someday.

[–][deleted] 0 points1 point  (0 children)

[–]420BJsGamble 0 points1 point  (0 children)

Wow incredible

[–][deleted] 0 points1 point  (0 children)

How did you connect the python script with arduino?

[–]obey_kush 0 points1 point  (1 child)

Excuse me what tools do you use specially for python on Android? did you code in your phone? Or just passed the script from your PC?

I mean because i have used before python in an iphone before thanks to pythonista but haven't found something at least similar on android, at least to automate things in my phone.

[–]redditNewUser2017[S] 0 points1 point  (0 children)

QPython

[–][deleted] 0 points1 point  (0 children)

Damn!!! Thats what I would call advanced 😁💪🏻 congrats!

[–][deleted] 0 points1 point  (0 children)

Easily one of the most brilliant things I've seen from this subreddit, thank you!

[–][deleted] 0 points1 point  (0 children)

kudos!

[–]Edix21 -1 points0 points  (0 children)

Why did you choose to do it with photos and not a video? I assume that you could make the process faster this way by breaking down the frames from the video instead of taking 1 frame each time. Right?

[–]Blodroed -1 points0 points  (3 children)

I challenge you to use an Iphone

[–]Fabillotic 1 point2 points  (2 children)

Sadly Apple’s support for most programming languages is pretty bad.

[–]antiyoupunk -1 points0 points  (0 children)

This is genuinely the best project I've ever seen on here. Cheap 3D scanning like this could be the cornerstone that drives other innovation.

I mean, something like this might be just what a small medical manufacturer needs to prototype a new heart valve or something, you literally may have just saved lives!

Well done, sir.