The first week assignment.

The process!


For 3d scanning, I have made an attempt with 20 pictures of Nour to make a model, using photogrammetry - AutoDesk's ReCap 360 photo. The model, from just 20 pictures, came out disturbing, and it was actually hard for my spouse to keep her pose for a long time, plus walking around her in a furnished living room at a sensible distance was kind of hard.

So I changed my strategy. Using my beautiful Sony Alpha 7, I attached a vintage wide angle (24mm) lens to allow to capture a wider area from a closer distance.

Instead of pictures, I will take a short video, and will use a Python script to read the video and dismantle it into individual frames, which I can then use as pictures in the photogrammetry software being used.
As for what to film - I decided it's to be my guitar sitting on a chair.
I recorded a video of it, walking around it and filming from (some) variety of angles.

I then transferred the video to my computer, opened up Anaconda (the IDE I use with Python), and typed the following script. Note - the script itself contains explanations on what and why is being done, and is also part of the documentation.

#import opencv, the package used to process the video and images. #also possible to use other packages, or tap into the FFMPEG package directly via pipe, but this is by far the simplest import cv2 #read the video file and assign to the cap variable cap = cv2.VideoCapture("C:/Users/Dima's_Monster/Desktop/temp_pictures_storage/MAH03598.MP4") #define quick function of shrinking frame by 25% #the current video resolution is 1440x1080, which is fairly big, so for the sake of: #making a sharper image (getting rid of some blurring), and saving on space (due to the large amount of frames to be extracted) def frame_resize(frame): frame = cv2.resize(frame, (0,0), fx=0.75, fy=0.75) return frame #simple counter to count the frames counter = 0 #read the actual video and save it's frames one by one while (cap.isOpened()): ret, frame = cap.read() #call the resize function we defined earlier frame = frame_resize(frame) #write the frame as jpg image and give it a number based on our counter #worth noting - with how the below is written, the images are going to be saved to the same location as the code file is cv2.imwrite('frame%s.jpg' %counter, frame) #iterate the counter (duh) counter = counter + 1

Running the code I got all of this (and much more):

I actually ended up getting 2016 images in total, so I did what we call in Hebrew a "seleczia" and kept only 299 images of the whole bunch.
Firing up Recap Photo:

I click "Object":

Browse for my pictures folder and select them all:

Click the 'Create' button:

Aaaand I am told I can only use 100 photos.

So it's back to the folder and remove 199 more photos, and am now left with 100, just right for the project. Doing all the same steps again, I click the 'Create' button in Recap, and no error this time. I get to name my project:

And it sends my images to be uploaded to the cloud, where they will also be processed into a fancy model.

One thing to note - using a wide angle lens produces a lot of lens distortion, so most of the pictures vary slightly in how the guitar looks in them - it is a little bit stretched here, a little bit blow up there, I'm hoping that with 100 images the model will come out just fine even if they are not all exactly right, but this is something that I am going to see for certain only after the model finishes it's processing.
To note - the model processing itself takes a very long time.

Some time later

The model is ready!
After downloading and opening it:

Looks ok, right?
NO!

This is horrendous! :D Absolutely hideous. Terrible. Terrifying even. A lesson in the sensitivity of photogrammetry.
I'm going to try one last scan, of a shoe. Using my phone.

20 shoe pictures. They say "keep it simple stupid", here's hoping this will be a normal model. Creating the model, I called it "SHOEpls" to express my emotions.
After the model finished rendering on the cloud, I opened it, and…

It's perfect. It looks great! Finally. This shoe was definitely the most consistent thing I've taken pictures of, or rather - taken pictures of the most consistently.

Now to make a few mesh adjustments, because I guess I should? So in the model view window, I click the Export button and export it as OBJ. I got these cool looking maps:

And here it is in MeshMixer:

It's a real AutoDesk happy family of products! It's actually quite wonderful.
So, a few adjustments just to demonstrate.
Meshmix > Heads > Cow head:

Beautiful.
Sculpt > Brushes > Attract:

Ah, so I need multiple objects. So this puts multiple objects together. Okay nevermind, instead the brush "Robustsmooth":

Nothing happens.
Brush > Flatten!

Ah, beautiful. Finally.

Bootiful! More!

Inflate:

It is so bootiful!
Shaders! Star Stamps!

This is definitely the model I was going for, all from the very beginning.

3D Scan file - in rar archive:

3D Scan OBJ


Back home 3D Print