<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Diginess</id>
	<title>Open Source Ecology - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Diginess"/>
	<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/wiki/Special:Contributions/Diginess"/>
	<updated>2026-04-21T04:42:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215825</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215825"/>
		<updated>2020-04-04T06:29:35Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Layout editing, minor notes added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installation:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
*  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
* Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
* Get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
https://sourceforge.net/projects/meshlab/&lt;br /&gt;
Sourceforge is no longer including adware automatically in all downloads.  I installed this and had no issues (JJ, as of Apr 4th, 2020).&lt;br /&gt;
&lt;br /&gt;
* Get Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
* Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Running the pipeline:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;VisualSFM:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
* Load the images into VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
* Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
* Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
&lt;br /&gt;
* Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Troubleshooting the VSFM process:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
* Note, after you get done with the &amp;quot;Calculate missing matches&amp;quot; step, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  You should shoot for 50-60 pictures at least, both rotating around and above (below if possible) the object and perhaps even closeups.  More pictures should give a better point cloud, but costs more processing time.&lt;br /&gt;
&lt;br /&gt;
* Make sure that the object you are taking pictures of has good lighting and contrast and there is enough detail on it, matte surfaces work really well.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t work.&lt;br /&gt;
* The process doesn&#039;t work at all for moving subjects.&lt;br /&gt;
* You&#039;ll want to avoid reflective surfaces if at all possible, because when you change your perspective, the reflected light changes as well, messing up the solver, meaning you won&#039;t capture any points there and you&#039;ll likely have a gap in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Meshlab:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
* Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
* Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
* Generate the Texture:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
* Save the model:&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blender:&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
* Create the scene in Blender:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=13m04s&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).&lt;br /&gt;
&lt;br /&gt;
* Recentering the model (if necessary):&lt;br /&gt;
Press shift-ctrl-alt-c and select &amp;quot;geometry to origin&amp;quot;.  The model should move to the center.&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
TODO:  At the end of this process, I had a model in Blender that still looked somewhat point-cloudish.  I need to find more tutorials on Meshlab to include tips/tricks.  The texture also didn&#039;t come through the process, so I need to go back over that and find a fix.  Most of the tutorials tell you not to expect to have super nice looking models when you first start.  I&#039;ll add the most helpful tips and tricks as I find them.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Open_Source_Photogrammetry&amp;diff=215824</id>
		<title>Open Source Photogrammetry</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Open_Source_Photogrammetry&amp;diff=215824"/>
		<updated>2020-04-04T06:08:55Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Added link to VisualSFM pipeline notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=2020 Update=&lt;br /&gt;
It is now 2020. Is there an effective phone app today that is capable of high quality photogrammetry?&lt;br /&gt;
&lt;br /&gt;
Meshroom appears to work for Prusa - https://blog.prusaprinters.org/photogrammetry-2-3d-scanning-simpler-better-than-ever/&lt;br /&gt;
&lt;br /&gt;
On my computer, it looks like it just froze on Ubuntu 18.04. - MJ&lt;br /&gt;
&lt;br /&gt;
=3D Scanning a Cordless Drill=&lt;br /&gt;
&lt;br /&gt;
See https://www.facebook.com/marcin.jakubowski.378/posts/10214266043662164&lt;br /&gt;
&lt;br /&gt;
=Intro=&lt;br /&gt;
&lt;br /&gt;
*Wikipedia article on Photogrammetry - [https://en.wikipedia.org/wiki/Photogrammetry]&lt;br /&gt;
*International Society for Photogrammetry and Remote Sensing (ISPRS)&lt;br /&gt;
*http://opensourcephotogrammetry.blogspot.com/&lt;br /&gt;
*[http://www.cs.cornell.edu/~snavely/bundler/ Bundler]&lt;br /&gt;
* VisualSFM/CMVS-PMVS/Meshlab/Blender pipeline: [[PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab]]&lt;br /&gt;
*[https://colmap.github.io/ Colmap] - &lt;br /&gt;
*[http://www.efoto.eng.uerj.br/en Efoto]. PDF on the topic - Brazilian - [http://www.efoto.eng.uerj.br/images/Documentos/fotogrametria_digital_revisado.pdf]&lt;br /&gt;
*[https://sourceforge.net/projects/insight3dng/ Insight3dng]. &lt;br /&gt;
*[https://alicevision.github.io AliceVision/Meshroom] allows you to run the whole photogrammetric pipeline. Put your images and it will generate a textured mesh automatically.&lt;br /&gt;
*[https://opendronemap.github.io/odm/pages/about.html Open Drone Map]. [https://demo.webodm.org/dashboard/ WebODM]&lt;br /&gt;
*[https://www.gcc.tu-darmstadt.de/home/proj/mve/ MVE]. Paper on Floating Scale Surface Reconstruction - [https://www.gcc.tu-darmstadt.de/media/gcc/papers/Fuhrmann-2014-FSS.pdf]&lt;br /&gt;
*[http://imagine.enpc.fr/~moulonp/openMVG/ OpenMVG]&lt;br /&gt;
*[[Regard3D]].&lt;br /&gt;
&lt;br /&gt;
=Colmap=&lt;br /&gt;
See Joseph Prusa&#039;s video. This one uses Colmap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ye-C-OOFsX8&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;autoplay; encrypted-media&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=With VisualSFM=&lt;br /&gt;
Available, but no license.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/D6eqW6yk50k&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;autoplay; encrypted-media&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=AliceVision/Meshroom=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/v_O6tYKQEBA&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/1D0EhSi-vvc&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sketchfab.com/blogs/community/tutorial-meshroom-for-beginners Tutorial: Meshroom for Beginners on Sketchfab Blog.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
*[[Open Source 3D Scanning/Motion Capture Construction Set]]&lt;br /&gt;
&lt;br /&gt;
=Useful Links=&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=1won7AYden0 This video has an intresting (albeit expensive) Stil Photogrammetry Setup]&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=Ryawcs6OZmI This video has an intresting (and impossibly expensive) video Photogrammetry Setup]&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=ye-C-OOFsX8&lt;br /&gt;
&lt;br /&gt;
*OpenScan - https://www.youtube.com/watch?v=m7ee4jLk_As&amp;amp;feature=push-sd&amp;amp;attr_tag=REkFiylbiOEAE-v7%3A6  It sounds like they may be confusing freeware &amp;amp; opensource? Interesting project and good scanning ideas.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215823</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215823"/>
		<updated>2020-04-04T06:05:14Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Bolding headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039;&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installation:&#039;&#039;&#039;&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
https://sourceforge.net/projects/meshlab/&lt;br /&gt;
Sourceforge is no longer including adware automatically in all downloads.  I installed this and had no issues (JJ, as of Apr 4th, 2020).&lt;br /&gt;
&lt;br /&gt;
Finally, download and install Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Handling pictures:&#039;&#039;&#039;&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Running the pipeline:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VisualSFM:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Load the images into VisualSFM:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calculate missing matches:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sparse reconstruction:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Troubleshooting:&#039;&#039;&#039;  &lt;br /&gt;
Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
Another thing I noticed was that the top cover of the book I was capturing was partially reflective.  You&#039;ll want to avoid reflective surfaces if at all possible, because when you change your perspective, the reflected light changes as well, messing up the solver.  It is very likely nothing will get captured at all from the reflective spots because matching of features can&#039;t occur between images there, causing gaps in the point cloud and resulting mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Meshlab:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Build the geometry:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simplify the geometry:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generate the Texture:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Save the model:&#039;&#039;&#039;&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blender:&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Create the scene in Blender:&#039;&#039;&#039;&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=13m04s&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).&lt;br /&gt;
&lt;br /&gt;
If you need to recenter the model in the scene, select the model in the scene then press shift-ctrl-alt-c and select &amp;quot;geometry to origin&amp;quot;.  The model should move to the center.&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
TODO:  At the end of this process, I had a model in Blender that still looked somewhat point-cloudish.  I need to find more tutorials on Meshlab to include tips/tricks.  The texture also didn&#039;t come through the process, so I need to go back over that and find a fix.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215822</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215822"/>
		<updated>2020-04-04T06:01:34Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Tip about surface reflection being undesirable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
https://sourceforge.net/projects/meshlab/&lt;br /&gt;
Sourceforge is no longer including adware automatically in all downloads.  I installed this and had no issues (JJ, as of Apr 4th, 2020).&lt;br /&gt;
&lt;br /&gt;
Finally, download and install Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Troubleshooting:  Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
Another thing I noticed was that the top cover of the book I was capturing was partially reflective.  You&#039;ll want to avoid reflective surfaces if at all possible, because when you change your perspective, the reflected light changes as well, messing up the solver.  It is very likely nothing will get captured at all from the reflective spots because matching of features can&#039;t occur between images there, causing gaps in the point cloud and resulting mesh.&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
Meshlab:&lt;br /&gt;
&lt;br /&gt;
Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
Generate the Texture:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
Save the model:&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
Create the scene in Blender:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=13m04s&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).&lt;br /&gt;
&lt;br /&gt;
If you need to recenter the model in the scene, select the model in the scene then press shift-ctrl-alt-c and select &amp;quot;geometry to origin&amp;quot;.  The model should move to the center.&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
TODO:  At the end of this process, I had a model in Blender that still looked somewhat point-cloudish.  I need to find more tutorials on Meshlab to include tips/tricks.  The texture also didn&#039;t come through the process, so I need to go back over that and find a fix.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215818</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215818"/>
		<updated>2020-04-04T04:32:41Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Added TODO to end&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Finally, download and install Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Troubleshooting:  Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
Meshlab:&lt;br /&gt;
&lt;br /&gt;
Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
Generate the Texture:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
Save the model:&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
Create the scene in Blender:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=13m04s&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).&lt;br /&gt;
&lt;br /&gt;
If you need to recenter the model in the scene, select the model in the scene then press shift-ctrl-alt-c and select &amp;quot;geometry to origin&amp;quot;.  The model should move to the center.&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
TODO:  At the end of this process, I had a model in Blender that still looked somewhat point-cloudish.  I need to find more tutorials on Meshlab to include tips/tricks.  The texture also didn&#039;t come through the process, so I need to go back over that and find a fix.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215817</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215817"/>
		<updated>2020-04-04T04:26:51Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Change to model centering instructions to simplify.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Finally, download and install Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Troubleshooting:  Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
Meshlab:&lt;br /&gt;
&lt;br /&gt;
Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
Generate the Texture:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
Save the model:&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
Create the scene in Blender:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=13m04s&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).&lt;br /&gt;
&lt;br /&gt;
If you need to recenter the model in the scene, select the model in the scene then press shift-ctrl-alt-c and select &amp;quot;geometry to origin&amp;quot;.  The model should move to the center.&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215814</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215814"/>
		<updated>2020-04-04T03:45:24Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Finishing up first draft - I&amp;#039;m still not happy with the result, but I need more expertise in Meshlab to really finalize this product&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors and texture.  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a slicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Finally, download and install Blender:&lt;br /&gt;
https://www.blender.org/download/&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Troubleshooting:  Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
Meshlab:&lt;br /&gt;
&lt;br /&gt;
Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
Extra notes:  At this point, I went to File, &amp;quot;Export Mesh&amp;quot; and exported the mesh as a .obj file.  It was 410KB, not too bad.  When I loaded it into a slicer program, nothing came up.  I think the origin of the 3D coordinate system for the model may have been too far from the model itself.  &lt;br /&gt;
Note:  I was looking for a way to recenter the origin in Meshlab, but found an easy way to do it in Blender.  For now, I&#039;ll leave that to a later step in Blender (just in case you need it).&lt;br /&gt;
&lt;br /&gt;
Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;br /&gt;
Look at the number of faces you have in your layers.  If you have more than a million, you should probably do this step the quadric decimation:&lt;br /&gt;
Go to the Filters menu, select &amp;quot;Remeshing, Simplification and Reconstruction&amp;quot;, then select &amp;quot;Quadric Edge Collapse Decimation&amp;quot; (sounds intimidating and final).  Give it a target number of faces of maybe 700,000 and apply.&lt;br /&gt;
Next, go to the Filters menu, select &amp;quot;Cleaning and Repairing&amp;quot;, and select &amp;quot;Remove Faces from Non Manifold Edges&amp;quot; (this prevents crazy things from happening in the next step where we do texturing).&lt;br /&gt;
&lt;br /&gt;
Generate the Texture:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=11m06s&lt;br /&gt;
Go to the Filters menu, Texture, and select &amp;quot;Parameterization + texturing from registered rasters&amp;quot; (not the one that is named almost exactly the same but without the &#039;+&#039;).&lt;br /&gt;
In the dialog window, set the Texture size to 8192, change the texture name to what you want, and click apply.&lt;br /&gt;
Wait for it to finish, may take a bit.  You should be able to see a progress bar in the lower right.&lt;br /&gt;
&lt;br /&gt;
Save the model:&lt;br /&gt;
In Meshlab, go to the File menu, select &amp;quot;Export Mesh As&amp;quot;, and in the dialog, change the file type to &amp;quot;Alias Wavefront Object (*.obj)&amp;quot; and give it a descriptive name, then click save.  In the next dialog box, uncheck &amp;quot;normals&amp;quot; and click OK.  Now to make things easier for the later step, copy the texture (.png file) and your latest .obj file into a new folder (name that something descriptive).&lt;br /&gt;
&lt;br /&gt;
Opening the object in Blender:&lt;br /&gt;
Open Blender.  Go to File, select new, general.&lt;br /&gt;
Import your model - go to File, import, wavefront (.obj).  In the dialog, navigate to your model you saved in the &amp;quot;Save the model&amp;quot; step above.&lt;br /&gt;
Once it has imported, take a look around the scene by rotating (in Blender, that is by default holding down the middle mouse button while you move the mouse).  If you need to recenter the model in the scene, press the following all at once, see this:&lt;br /&gt;
https://blender.stackexchange.com/questions/14294/how-to-recenter-an-objects-origin&lt;br /&gt;
If when doing that, the model suddenly disappears, it&#039;s probably just inside the gray box that appears by default in Blender at the origin of the scene, which means you succeeded (you can scroll to zoom inside the box and check).  You can delete the cube from the scene collection pane at the right by selecting it and selecting &amp;quot;delete&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215808</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215808"/>
		<updated>2020-04-04T02:14:00Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Continuing on this pipeline, steps for Meshlab.  Saving so I don&amp;#039;t lose the work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors, but no texture (if you want fancy / any textures at all, that&#039;s not part of this process yet).  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a splicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Calculate missing matches:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Troubleshooting:  Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras, add the pictures and go back and do the prior step &amp;quot;calculate missing matches&amp;quot; again.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  Note that the video author took 70 pictures to capture his Millenium Falcon model.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).  If the &amp;quot;compute missing matches&amp;quot; took enough time like this / you have plenty of pictures and features, you&#039;re probably going to be OK with the sparse reconstruction step that comes next.  The next dense reconstruction for me after I took the extra pictures took 10 minutes, 55 seconds - note that unless you properly copied CMVS-PMVS into the VisualSFM folder as documented in the CMVS-PMVS installation step above, dense reconstruction will not work.&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction (VisualSFM also uses the CMVS-PMVS software here):&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;br /&gt;
To see the results, go to View on the menu and select &amp;quot;Dense 3D points&amp;quot; (or just press tab).&lt;br /&gt;
That&#039;s it, you&#039;re done with the VisualSFM and CMVS-PMVS portion of the pipeline.  Next we will move on to Meshlab to connect the point cloud surface together with a mesh.&lt;br /&gt;
&lt;br /&gt;
Meshlab:&lt;br /&gt;
&lt;br /&gt;
Build the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=7m07s&lt;br /&gt;
Open Meshlab and go to the File menu option and select &amp;quot;Open project&amp;quot;.  Navigate to where you saved the project through the dialog window in the &amp;quot;Dense reconstruction&amp;quot; step in VisualSFM above.  Select the project file and wait until it finishes loading - you should see the point cloud.&lt;br /&gt;
Go to the View menu option and select &amp;quot;Show Layer Dialog&amp;quot; - you should now see a pane to the right representing layers.&lt;br /&gt;
Rotate the point cloud around until you have a good idea where your object is (left click and drag) and what points you can cut.&lt;br /&gt;
Make sure that you have a good rotation for the cuts, then click the &amp;quot;Select vertexes&amp;quot; icon from the toolbar.&lt;br /&gt;
Click and drag to create boxes to select points you don&#039;t want in your 3D model.  You can hold control to click and drag again to add more boxes of points to your selection.  When you&#039;re done, click on the first red X icon (it&#039;s an X over connected vertexes) to delete the selected points.&lt;br /&gt;
Next, go to the File menu and select &amp;quot;Import mesh&amp;quot;.  Select the file (the dialog should already be in the correct folder since you loaded the project from there, and there will probably only be one file showing - it will end in the .ply extension) and click &amp;quot;open&amp;quot;.&lt;br /&gt;
Now you should have a much better view and be able to see which of the remaining points you want to delete.  Repeat the select vertexes / delete vertexes step again until you have deleted those.&lt;br /&gt;
Once you are happy that you have deleted all the points you want gone, go to the Filters menu, select &amp;quot;Point Set&amp;quot;, then select &amp;quot;Surface Reconstructions Poisson&amp;quot;.  In the dialog window, set the octree depth to 12 and solver divide to 7, leaving the other two settings as is.  Click &amp;quot;Apply&amp;quot;.&lt;br /&gt;
To get rid of the weird bubble that it creates while keeping the modifications to the model/mesh, on layers click on the model and .ply layers to make them invisible, then select the poisson layer (click on the name, not on the icon) highlighting it, then use the &amp;quot;select vertexes&amp;quot; and &amp;quot;delete vertexes&amp;quot; to get rid of the top part of the bubble.&lt;br /&gt;
&lt;br /&gt;
Simplify the geometry:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=10m11s&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215782</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215782"/>
		<updated>2020-04-04T00:26:49Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Troubleshooting detail in case of too many gaps in between pictures - how to tell early in the process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors, but no texture (if you want fancy / any textures at all, that&#039;s not part of this process yet).  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a splicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Do initial matching of images:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m23s (through 5m52s)&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct sparse&amp;quot;.&lt;br /&gt;
Wait until it finishes.  You should then see the beginnings of a pointcloud with indicators where the cameras were located when the pictures were taken.&lt;br /&gt;
Note, at this point when it has finished, if you notice that there are two few camera indicators, it is likely that one of them has a red &amp;quot;X&amp;quot; over it and is overall red.  This means that while you were taking your pictures, the locations you took them from were likely too far (too many degrees) apart and it could not &amp;quot;connect the dots&amp;quot; between images.  Try taking more images in between where there are more distant gaps in positions between the cameras.  This was happening to me and I got confused before really starting to think about it.  I had taken about 20 images around a book on my couch.  It wasn&#039;t nearly enough.  So I went back and took around 40 more (I had 64 when I was done, 5 were duplicates - this process doesn&#039;t care about those), being careful to move around the book no more than 15 degrees between images.  Note that the time each step of this process takes will increase as the number of pictures goes up.  After doing the missing matches step again, this time I had 2080 features instead of just over 100 and 434 seconds versus the 43 seconds it had taken prior (the last time it had stopped after getting confused after 3 pictures - if that step stops after less than a minute, you might have too few pictures).&lt;br /&gt;
Other:  Make sure that the object you are taking pictures of has good lighting and contrast and there is detail on it.  This process might not do well for scenes that don&#039;t have enough features/edges/contrast/detail - for instance a blank white wall wouldn&#039;t be captured well at all.&lt;br /&gt;
For something as plain as a big piece of steel where the surface is very smooth, it might have to be enough to capture all the edges and for it to be dimensionally correct.  Otherwise those surfaces will need detail somehow.&lt;br /&gt;
(if you want a real challenge, try to do this to your cat when it happens to lay down - the process doesn&#039;t work at all for moving subjects, so move quickly - just kidding, probably a bad idea that will frustrate you to no end)&lt;br /&gt;
&lt;br /&gt;
Dense reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m52s&lt;br /&gt;
Within VisualSFM, select &amp;quot;SfM&amp;quot; from the menu at top (2nd one from left).  Within that menu, select &amp;quot;Reconstruct dense&amp;quot;.&lt;br /&gt;
It will pop up a dialog asking where it should save the files it creates.  Give it a location on your hard drive by navigating, and type a file name you would like the project file to be called (you&#039;ll want to remember where you saved it so you can open it in Meshlab later - maybe write the path down).&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215768</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215768"/>
		<updated>2020-04-03T23:27:44Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Lots of min edits, adding steps in the VisualSFM portion of the pipeline.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently using Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be for Windows versions (installation instructions at least, I think app usage will mostly be similar) until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors, but no texture (if you want fancy / any textures at all, that&#039;s not part of this process yet).  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a splicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Final note before proceeding to installation steps:  You might note that I am linking the same video over and over again.  That&#039;s because I&#039;m including the time stamps in the video for that piece of the instructions.  If you already have the video up and do not want to open another tab, just look at the end.  For instance, if I wanted the link to open the video at the 5 minute 30 second mark, I would add &amp;amp;t=5m30s to the end of the Youtube video link (stand for &amp;quot;time equals 5 minutes, 30 seconds&amp;quot;).  You can just progress the video to that point in the tab you already have up if you want to move forward.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m45s&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;br /&gt;
Now wait for a bit while it processes all the images.  When it is done, you will see mini icons for all of the images in the main view and a summary in the log on the right.&lt;br /&gt;
&lt;br /&gt;
Do initial matching of images:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=5m10s&lt;br /&gt;
Select the &amp;quot;compute missing matches&amp;quot; icon.  It&#039;s sixth from the right and looks like four arrows pointed at diagonal corners.&lt;br /&gt;
Wait until it finishes.&lt;br /&gt;
&lt;br /&gt;
Sparse reconstruction:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215758</id>
		<title>PhotogrammetryWorkflows/VisualSFM CMVS-PMVS Meshlab</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=PhotogrammetryWorkflows/VisualSFM_CMVS-PMVS_Meshlab&amp;diff=215758"/>
		<updated>2020-04-03T23:10:37Z</updated>

		<summary type="html">&lt;p&gt;Diginess: Summary and installation instructions for open source software in the VisualSFM, CMVS-PMVS, Meshlab, Blender photogrammetry pipeline - saving so I don&amp;#039;t lose progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note:  I (Jacob Johnson, JJ) am currently working on Windows.  I will try to leave some leeway in these instructions for other OSs by including the overall links where you can find software for those versions, but the most detailed instructions at first will be Windows until I get my Desktop back online with Ubuntu later and run through the process again for that, then document it.&lt;br /&gt;
&lt;br /&gt;
Before going into the installation steps, here is a breakdown of what this set of software is doing / what we can do with it.  This is what I have gathered so far, and it is still loose / rough around the edges.  Please feel free to correct any mistakes I&#039;ve made, or I will adjust as I learn more.&lt;br /&gt;
VisualSFM takes in photos that you&#039;ve taken around a 3D object and then runs an algorithm/program against them (SiftGPU, based on David Lowe&#039;s work - Chang Chang Wu wrote SiftGPU and VisualSFM) to find &amp;quot;feature points&amp;quot; (types of features in images that are easy to find in other images when the object is viewed from a different angle or distance) and from these, find the relative positions of where your camera was when you took each picture.  Up to this point, it has performed &amp;quot;sparse reconstruction&#039;.  After this, it will turn to the CMVS-PMVS software (if you&#039;ve copied it into the root VisualSFM install folder with the VisualSFM executable) to do dense reconstruction which involves finding many more features from the image data to fill out the point cloud.  When you click on the dense reconstruction button, it&#039;ll ask you to provide a folder path where you would like it to save the results.  Later, we will use Meshlab and open that folder/project.  We will use Meshlab to construct a colored mesh around the point cloud.  At that point, we&#039;ll have a 3D object with colors, but no texture (if you want fancy / any textures at all, that&#039;s not part of this process yet).  Once that&#039;s done, we can open it with any modelling software (or the main open source one, Blender), as well as import it into a splicer program for conversion to gcode for 3D printing.&lt;br /&gt;
&lt;br /&gt;
After searching among many videos on Youtube, I found a good one that documents the installation process here:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&lt;br /&gt;
I will include timestamps into this video for each step below.  Note that where my instructions differ it has to do with getting Windows binaries rather than Linux versions.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
1.  https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m41s&lt;br /&gt;
Download VisualSFM from this page :&lt;br /&gt;
http://ccwu.me/vsfm/  (it has multiple OS versions, Windows, Linux, and MacOS, generally you&#039;ll want the 64 bit version - if that doesn&#039;t work you may have an old computer and need the 32 bit version)&lt;br /&gt;
Installing this only consists of downloading the zip file and extracting it (there&#039;s no installer - once extracted, the executable is in the extracted folder and ready to run).&lt;br /&gt;
&lt;br /&gt;
Next get CMVS-PMVS:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=2m52s&lt;br /&gt;
https://github.com/pmoulon/CMVS-PMVS&lt;br /&gt;
Click on the green button to the top right of the repo file list &amp;quot;Clone or Download&amp;quot;, then select the option to clone download as a zip file.  Extract the zip file and navigate to the subfolder that has the version for your operating system (for instance, for Windows the path from the top level &amp;quot;CMVS-PMVS-Master&amp;quot; extracted repo zip file to the Win64 version is:  CMVS-PMVS-master.zip\CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010).  Copy everything from that subfolder into the folder where you put VisualSFM (further questions on how / what files to copy, watch the Youtube video starting at the 4 minute mark).&lt;br /&gt;
&lt;br /&gt;
Next get Meshlab:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=3m15s&lt;br /&gt;
Yes, it&#039;s at SourceForge.  They are no longer including adware automatically in all downloads.  Grab the installer and install it.&lt;br /&gt;
&lt;br /&gt;
Handling pictures:&lt;br /&gt;
If you&#039;re using your cell phone, you&#039;ll want a way to easily get pictures from your phone to your computer so that you can run these apps on them to make the model.  I had some initial difficulties, probably due to my phone being encrypted, where when I connected it to my computer, I could not see the phone&#039;s internal storage from Windows File Explorer.  To overcome that, what I did was upload all the images to Google drive and installed Google Backup and Sync on my computer.  Once you&#039;ve uploaded photos to Google drive, when you sign into Google Backup and sync on the same Google account, it will download all of the files on Google drive to your computer.  Its default directory is C:\Users\&amp;lt;YourUserNameHere&amp;gt;\Google Drive.&lt;br /&gt;
I didn&#039;t do anything else with the files from there, only selected them in VisualSFM from where they were on my computer / where Google Backup and sync put them (see above).  You may have to wait a few minutes after uploading for Backup and Sync to download all the pictures to your computer&#039;s hard drive.  It will happen automatically as long as the app is signed into that Google account.&lt;br /&gt;
&lt;br /&gt;
Running the pipeline:&lt;br /&gt;
&lt;br /&gt;
VisualSFM steps:&lt;br /&gt;
https://www.youtube.com/watch?v=GEAbXYDzUjU&amp;amp;t=4m33s&lt;br /&gt;
Open VisualSFM by going into the folder and double clicking the executable (the one with the green &#039;V&#039; icon).&lt;br /&gt;
&lt;br /&gt;
Open the images in VisualSFM:&lt;br /&gt;
Click on the &amp;quot;Open Multiple Images&amp;quot; button (it&#039;s third from the left, just under the File tab in VisualSFM).&lt;br /&gt;
Navigate to the location you stored your pictures on your computer (if you&#039;re using Google Backup and Sync, that&#039;s &amp;quot;C:\Users\Your User Name\Google Drive\Whatever you called the image folder&amp;quot;).  Select all of the images by left clicking the first one, pressing shift and holding it down while you left click the last one.  Finally, click the &amp;quot;open&amp;quot; button on the bottom right of that dialog window (while all the images still highlighted/selected).&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Ultrasonic_Distance_Sensor&amp;diff=151153</id>
		<title>Ultrasonic Distance Sensor</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Ultrasonic_Distance_Sensor&amp;diff=151153"/>
		<updated>2017-04-20T16:51:55Z</updated>

		<summary type="html">&lt;p&gt;Diginess: /* R&amp;amp;D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Requirements=&lt;br /&gt;
*1mm accuracy optimal, 3 mm is absolute max&lt;br /&gt;
*Open source version of http://www.cnccontrols.com/thcontrol.asp - 20-250 mm range for pointing to metal, with no obstructions&lt;br /&gt;
&lt;br /&gt;
=Tech Support=&lt;br /&gt;
*Maxbotics - [http://www.maxbotix.com/contact.htm]. 2&#039; has under 1% error.&lt;br /&gt;
*Sparkfun has them - [https://www.sparkfun.com/categories/84]. Online chat at https://www.sparkfun.com/technical_assistance&lt;br /&gt;
*Banner Engineering - $121 - [http://www.plccenter.com/Shop/BANNER%20ENGINEERING/S18UBAQ/USPP?source=GoogleShopping&amp;amp;IgnoreRedirect=true&amp;amp;gclid=CO2y_4is3s4CFQuNaQod8TsBEw&amp;amp;kwid=productads-adid^113089519769-device^c-plaid^93272993125-sku^15000003399-adType^PLA]&lt;br /&gt;
*Xenix - [https://senix.com/ultrasonic-sensor-toughsonic-3/]&lt;br /&gt;
&lt;br /&gt;
=YouTube=&lt;br /&gt;
*Ultrasonic sensor on plasma table - [https://www.youtube.com/watch?v=pZJozdF_OaE]&lt;br /&gt;
&lt;br /&gt;
=R&amp;amp;D=&lt;br /&gt;
*From EMC list [http://info.bannersalesforce.com/cs/groups/public/documents/literature/110738.pdf] - Banner Engineering sensor PDF - 1-11&amp;quot; range - [http://info.bannersalesforce.com/cs/groups/public/documents/literature/110738.pdf]&lt;br /&gt;
*Making a better HC-SR04 distance sensor - Emil - [http://uglyduck.ath.cx/ep/archive/2014/01/Making_a_better_HC_SR04_Echo_Locator.html]&lt;br /&gt;
&lt;br /&gt;
Here is a good starting template Arduino sketch (code measuring distance) for the HC-SR04:  https://www.arduino.cc/en/tutorial/ping&lt;br /&gt;
Also present on the top of that page is an accurate visual circuit diagram of how the wires should be connected to work with the sketch.&lt;br /&gt;
Connect the USB / serial cable from your computer to the Arduino, go to the Tools menu, select the port that you will use.  I am using the Genuino Arduino IDE - the official IDE developed by the Arduino team.&lt;br /&gt;
Select the arrow under the File menu option to upload the sketch to the Arduino.  If you have an error message, it is likely you selected the wrong port (also verify you have a light on the Arduino, an LED should light up if the cable is connected) or you may not have run the IDE with administrator rights (on Linux you will likely have to use &amp;quot;sudo&amp;quot;).  If you are using Ubuntu, here is the page I used to look up the error I had:  https://askubuntu.com/questions/646254/arduino-serial-port-com1-problem&lt;br /&gt;
&lt;br /&gt;
Once you are able to upload the sketch to the Arduino without an error, it&#039;s actually running right away.  In order to see the output of the program, go to the Tools menu and select &amp;quot;serial monitor&amp;quot;.  A window will come up where you can see the instantaneous distance measurements scrolling.&lt;br /&gt;
&lt;br /&gt;
The code templates available are not actually giving very accurate readings - typically they print out the distance in centimeters, or even worse, inches.  We need millimeters.  In order to get millimeters, we have to modify the code and add another division to go from cm to mm (divide by 100).  However, this is not enough if it&#039;ll only ever return the same thing it did but listed as in millimeters.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s first review some physics:  http://learn.parallax.com/support/reference/speed-sound-air-vs-temperature&lt;br /&gt;
Short summary:  sound leaves the ultrasonic wavelength speaker on the sensor, bounces off whatever surface it hits, and hopefully comes back toward the microphone.  The Arduino measures the time between when the sound leaves the speaker and when it is detected by the microphone.  It uses the following equation to convert from the delay time to the calculated distance.  Note that the speed of sound in air is dependent on temperature more than anything else.  A difference of 10 degrees Fahrenheit will change the speed of sound by approx 4.64 meters per second, which will affect the calculated distance as well.  In other words, we are going to have to include temperature in the equation, and we should enter the temperature or get it using another sensor before depending on the readings for precise measurements.&lt;br /&gt;
&lt;br /&gt;
Here is the equation:&lt;br /&gt;
Let C be speed of sound in air&lt;br /&gt;
Let Tc be temperature in degrees Celsius&lt;br /&gt;
Let Tf be temperature in degrees Fahrenheit&lt;br /&gt;
&lt;br /&gt;
The starting equation is in Celsius (from the link above):&lt;br /&gt;
C = 331.5 + (0.6 * Tc) m/s&lt;br /&gt;
&lt;br /&gt;
To convert to Tf, we use this equation:  Tc = (Tf - 32) / 1.8&lt;br /&gt;
and substitute that for Tc in the first equation:&lt;br /&gt;
C = 331.5 + (0.6 * (Tf - 32) / 1.8) m/s&lt;br /&gt;
&lt;br /&gt;
Simplified:&lt;br /&gt;
C = 331.5 + ((0.6/1.8) * (Tf - 32) = 331.5 + (1/3)*Tf - 32/3&lt;br /&gt;
C = 320.83333 + 1/3Tf&lt;br /&gt;
&lt;br /&gt;
-----OK, now for the code to go along with the above - open a new Arduino sketch and paste this code in:--------------&lt;br /&gt;
&lt;br /&gt;
/* Ping))) Sensor&lt;br /&gt;
&lt;br /&gt;
   This sketch reads a PING))) ultrasonic rangefinder and returns the&lt;br /&gt;
   distance to the closest object in range. To do this, it sends a pulse&lt;br /&gt;
   to the sensor to initiate a reading, then listens for a pulse&lt;br /&gt;
   to return.  The length of the returning pulse is proportional to&lt;br /&gt;
   the distance of the object from the sensor.&lt;br /&gt;
&lt;br /&gt;
   The circuit:&lt;br /&gt;
    * +V connection of the PING))) attached to +5V&lt;br /&gt;
    * GND connection of the PING))) attached to ground&lt;br /&gt;
    * SIG connection of the PING))) attached to digital pin 7&lt;br /&gt;
&lt;br /&gt;
   http://www.arduino.cc/en/Tutorial/Ping&lt;br /&gt;
&lt;br /&gt;
   created 3 Nov 2008&lt;br /&gt;
   by David A. Mellis&lt;br /&gt;
   modified 30 Aug 2011&lt;br /&gt;
   by Tom Igoe&lt;br /&gt;
   modified 20 Apr 2017&lt;br /&gt;
   by Jacob Johnson&lt;br /&gt;
&lt;br /&gt;
   This example code is in the public domain.&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// this constant won&#039;t change.  It&#039;s the pin number&lt;br /&gt;
// of the sensor&#039;s output:&lt;br /&gt;
const int pingPin = 7;&lt;br /&gt;
&lt;br /&gt;
long duration = 0;&lt;br /&gt;
&lt;br /&gt;
//Change this to the current temp before running the sensor.&lt;br /&gt;
//We will get this from a temp sensor later.&lt;br /&gt;
const int tempF = 78;  //In degres Fahrenheit&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // initialize serial communication:&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  //convert the time into a distance&lt;br /&gt;
  //inches = microsecondsToInches(duration);&lt;br /&gt;
  //cm = microsecondsToCentimeters(duration);&lt;br /&gt;
&lt;br /&gt;
  float sum = 0.0000;&lt;br /&gt;
  int counter = 0;&lt;br /&gt;
  while (counter &amp;lt; 20){&lt;br /&gt;
    duration = pingAndGetDurationFromEcho();&lt;br /&gt;
    float mm = microsecondsToMillimeters(duration, tempF);&lt;br /&gt;
    sum += mm;&lt;br /&gt;
    counter++;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  float averageMillimeters = sum / 20;&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;duration: &amp;quot;);&lt;br /&gt;
  Serial.print(duration);&lt;br /&gt;
  Serial.print(&amp;quot;, millimeters: &amp;quot;);&lt;br /&gt;
  Serial.print(averageMillimeters);&lt;br /&gt;
  Serial.print(&amp;quot;\n&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long pingAndGetDurationFromEcho(){&lt;br /&gt;
  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.&lt;br /&gt;
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:&lt;br /&gt;
  pinMode(pingPin, OUTPUT);&lt;br /&gt;
  digitalWrite(pingPin, LOW);&lt;br /&gt;
  delayMicroseconds(2);&lt;br /&gt;
  digitalWrite(pingPin, HIGH);&lt;br /&gt;
  delayMicroseconds(5);&lt;br /&gt;
  digitalWrite(pingPin, LOW);&lt;br /&gt;
&lt;br /&gt;
  // The same pin is used to read the signal from the PING))): a HIGH&lt;br /&gt;
  // pulse whose duration is the time (in microseconds) from the sending&lt;br /&gt;
  // of the ping to the reception of its echo off of an object.&lt;br /&gt;
  pinMode(pingPin, INPUT);&lt;br /&gt;
  duration = pulseIn(pingPin, HIGH);&lt;br /&gt;
&lt;br /&gt;
  return duration;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long microsecondsToInches(long microseconds) {&lt;br /&gt;
  // According to Parallax&#039;s datasheet for the PING))), there are&lt;br /&gt;
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per&lt;br /&gt;
  // second).  This gives the distance travelled by the ping, outbound&lt;br /&gt;
  // and return, so we divide by 2 to get the distance of the obstacle.&lt;br /&gt;
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf&lt;br /&gt;
  return microseconds / 74 / 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
long microsecondsToCentimeters(long microseconds) {&lt;br /&gt;
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.&lt;br /&gt;
  // The ping travels out and back, so to find the distance of the&lt;br /&gt;
  // object we take half of the distance travelled.&lt;br /&gt;
  return microseconds / 29 / 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//All the math for calculating distance in millimeters, starting&lt;br /&gt;
//from the equations at:&lt;br /&gt;
//http://learn.parallax.com/support/reference/speed-sound-air-vs-temperature  &lt;br /&gt;
float microsecondsToMillimeters(long microseconds, int temperature) {&lt;br /&gt;
  //The above calculations do not take temperature into account.&lt;br /&gt;
  //A 10F difference causes a 4.64 m/s difference in sound velocity.&lt;br /&gt;
  //long metersPerSecond = 331.5 + (0.6 * (temperature - 32)/1.8);&lt;br /&gt;
  long metersPerSecond = 320.8334 + (0.333 * temperature);&lt;br /&gt;
  float millimetersPerSecond = metersPerSecond * 1000.0000;&lt;br /&gt;
  float millimetersPerMicroSecond = millimetersPerSecond / 1000000.00000;&lt;br /&gt;
  float millimeters = millimetersPerMicroSecond * microseconds;&lt;br /&gt;
  return millimeters;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Selection=&lt;br /&gt;
*Maxbotics - 1 mm resolution options, not water protected - 12&amp;quot; minimum distance - $40 - [http://www.maxbotix.com/Ultrasonic_Sensors/MB1013.htm]. Adafruit has it.&lt;br /&gt;
*Microptik - 3 mm resolution - http://www.micropik.com/PDF/HCSR04.pdf - 2-400 cm range - services@elecfreaks.com. Sample Arduino sketch - [http://www.elecfreaks.com/244.html]&lt;br /&gt;
*HC-SR04 - appears to get 3 mm accuracy - [https://www.youtube.com/watch?v=-1SDVVepaP8]. Sparkfun has the sensor + code - [https://codebender.cc/sketch:356078#HC-SR04%20Ultrasonic%20Sensor%20Example.ino]&lt;br /&gt;
:*Video shows 15 cm measurement, with oscillation +- 1mm - and text says well within 2% accuracy. 2% of 15 cm is 3 mm - so this would do for measurements of torch height for 1/2&amp;quot; steel  easily (12 mm thickness).&lt;br /&gt;
&lt;br /&gt;
=Comparisons=&lt;br /&gt;
*http://www.robotshop.com/en/compare-infrared-ultrasonic-distance-sensors.html&lt;br /&gt;
&lt;br /&gt;
=Explanation=&lt;br /&gt;
*Nice video - [https://www.youtube.com/watch?v=aLkkAsrSibo]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sourcing=&lt;br /&gt;
*VexIQ - sensor for robots - [http://www.robotmesh.com/vexiq-distance-sensor?gclid=CMKUrNml3s4CFYGHaQoduNsEEw]&lt;br /&gt;
*4-30 cm - $99 - [http://www.automationdirect.com/adc/Shopping/Catalog/Sensors_-z-_Encoders/Ultrasonic_Proximity_Sensors/18mm_Round,_400mm_Maximum_Sensing_Distance_(UK_Series)/UK6A-D1-0A?utm_source=google&amp;amp;utm_medium=product-search&amp;amp;gclid=CNHMntmD3s4CFQuLaQod-MkCMw]&lt;br /&gt;
*1-100 inch - $25 - [http://www.robotmesh.com/vexiq-distance-sensor?gclid=COfEnNiD3s4CFQGsaQodUHsC1A]&lt;br /&gt;
*$4 Sparkfun - 6&amp;quot;-10&#039; - [https://www.sparkfun.com/products/13959]&lt;br /&gt;
*$6 - .5 cm accuracy - [https://www.amazon.com/Arrela%C2%AE-Hc-sr04-Ultrasonic-Distance-Measuring/dp/B00KKKT7YK]&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[[Ultrasonic Sensor Log]]&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144466</id>
		<title>CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144466"/>
		<updated>2016-09-25T02:48:42Z</updated>

		<summary type="html">&lt;p&gt;Diginess: /* Controlling ultrasonic sensor from Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary=&lt;br /&gt;
Computer numerical control, a computer controller that reads instructions and drives a machine tool.&lt;br /&gt;
&lt;br /&gt;
In modern CNC systems, end-to-end component design is highly automated using computer-aided design ([[CAD]]) and computer-aided manufacturing ([[CAM]]) programs. The programs produce a computer file that is interpreted to extract the commands needed to operate a particular machine via a postprocessor, and then loaded into the CNC machines for production. Since any particular component might require the use of a number of different tools-drills, saws, etc., modern machines often combine multiple tools into a single &amp;quot;cell&amp;quot;. In other cases, a number of different machines are used with an external controller and human or robotic operators that move the component from machine to machine. In either case, the complex series of steps needed to produce any part is highly automated and produces a part that closely matches the original CAD design.&lt;br /&gt;
&lt;br /&gt;
[[File: cnctoolchain.svg|500px]]&lt;br /&gt;
&lt;br /&gt;
Use the [[Processing]] [[IDE]] to open the [[Gctrl]] [[GUI]]&lt;br /&gt;
&lt;br /&gt;
Then you can send [[CAM]] [[Electrical Information]] from your [[Computer]] via its [[USB]] port to the [[Arduino]] [[Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
The [[Electrical Information]] will be interpreted by the [[GRBL]] software and then you will get processed [[Electrical Information]] as the output&lt;br /&gt;
&lt;br /&gt;
You can configure the [[GRBL]] settings using the [[Arduino]] [[IDE]]&#039;s [[Serial Monitor]]&lt;br /&gt;
&lt;br /&gt;
=Modules=&lt;br /&gt;
&lt;br /&gt;
[[Processing]]&lt;br /&gt;
&lt;br /&gt;
[[Gctrl]]&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.com/Arduino-Rev-3-Uno-R3/dp/B006H06TVG/ref=sr_1_1?ie=UTF8&amp;amp;qid=1339352565&amp;amp;sr=8-1 Arduino Uno R3 from Amazon]&lt;br /&gt;
&lt;br /&gt;
[[Arduino]]&lt;br /&gt;
&lt;br /&gt;
[[RXTX]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL Config]]&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&lt;br /&gt;
arduino IDE Serial Monitor: carriage return&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-6-jre&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
sudo ./arduino&lt;br /&gt;
&lt;br /&gt;
sudo ./processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Fedora Notes (for install of the Arduino development environment)=&lt;br /&gt;
Type this command (without quotations) to install the development environment for the Arduino:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sudo dnf install arduino&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To start the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;arduino&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Controlling ultrasonic sensor from Arduino=&lt;br /&gt;
Diginess&#039;s notes:  I bought this:  https://www.radioshack.com/products/radioshack-ultrasonic-range-sensor from Radio Shack ($30) - have some on order from Amazon, but ran out of time.&lt;br /&gt;
&lt;br /&gt;
The wiring is very simple - I used a solderless prototyping board and followed the instructions on the manual (page 4):  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/2760342_PM_EN.pdf&lt;br /&gt;
&lt;br /&gt;
Note that the picture shows the view from the sensor&#039;s front - I initially wired it backwards, but there are only 4 wires.  If you get 0s showing for distance measurements, you probably reversed the signal wire and ground.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s the code to paste in the development environment:  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/UltrasonicRangeSensor.ino&lt;br /&gt;
&lt;br /&gt;
Plug the Arduino into your computer with a USB A-B cable.  Wait for initialization on the Arduino.&lt;br /&gt;
&lt;br /&gt;
From the environment (after code has been pasted), go to the File menu and select Upload.  Wait for the LEDs on the Arduino to stop flashing, indicating code upload is complete.  &lt;br /&gt;
&lt;br /&gt;
Next, go to the Tools menu option, and select &amp;quot;Serial Monitor&amp;quot;.  The code will immediately be ran on the Arduino, and you will see a scrolling log of the results (distance to object in front of the sensor).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Research==&lt;br /&gt;
*[[CNC Software]]&lt;br /&gt;
*[[Stepper Motor]]&lt;br /&gt;
&lt;br /&gt;
==Product Ecology==&lt;br /&gt;
{{3D Printer}}&lt;br /&gt;
{{Circuit Mill}}&lt;br /&gt;
{{Multimachine}}&lt;br /&gt;
{{Torch Table}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Digital Fabrication]]&lt;br /&gt;
*[[Vinyl Cutter]]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Cnc Wikipedia: CNC]&lt;br /&gt;
&lt;br /&gt;
[[Category: Links]]&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144465</id>
		<title>CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144465"/>
		<updated>2016-09-25T02:47:43Z</updated>

		<summary type="html">&lt;p&gt;Diginess: /* Fedora Notes (for install of the Arduino development environment) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary=&lt;br /&gt;
Computer numerical control, a computer controller that reads instructions and drives a machine tool.&lt;br /&gt;
&lt;br /&gt;
In modern CNC systems, end-to-end component design is highly automated using computer-aided design ([[CAD]]) and computer-aided manufacturing ([[CAM]]) programs. The programs produce a computer file that is interpreted to extract the commands needed to operate a particular machine via a postprocessor, and then loaded into the CNC machines for production. Since any particular component might require the use of a number of different tools-drills, saws, etc., modern machines often combine multiple tools into a single &amp;quot;cell&amp;quot;. In other cases, a number of different machines are used with an external controller and human or robotic operators that move the component from machine to machine. In either case, the complex series of steps needed to produce any part is highly automated and produces a part that closely matches the original CAD design.&lt;br /&gt;
&lt;br /&gt;
[[File: cnctoolchain.svg|500px]]&lt;br /&gt;
&lt;br /&gt;
Use the [[Processing]] [[IDE]] to open the [[Gctrl]] [[GUI]]&lt;br /&gt;
&lt;br /&gt;
Then you can send [[CAM]] [[Electrical Information]] from your [[Computer]] via its [[USB]] port to the [[Arduino]] [[Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
The [[Electrical Information]] will be interpreted by the [[GRBL]] software and then you will get processed [[Electrical Information]] as the output&lt;br /&gt;
&lt;br /&gt;
You can configure the [[GRBL]] settings using the [[Arduino]] [[IDE]]&#039;s [[Serial Monitor]]&lt;br /&gt;
&lt;br /&gt;
=Modules=&lt;br /&gt;
&lt;br /&gt;
[[Processing]]&lt;br /&gt;
&lt;br /&gt;
[[Gctrl]]&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.com/Arduino-Rev-3-Uno-R3/dp/B006H06TVG/ref=sr_1_1?ie=UTF8&amp;amp;qid=1339352565&amp;amp;sr=8-1 Arduino Uno R3 from Amazon]&lt;br /&gt;
&lt;br /&gt;
[[Arduino]]&lt;br /&gt;
&lt;br /&gt;
[[RXTX]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL Config]]&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&lt;br /&gt;
arduino IDE Serial Monitor: carriage return&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-6-jre&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
sudo ./arduino&lt;br /&gt;
&lt;br /&gt;
sudo ./processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Fedora Notes (for install of the Arduino development environment)=&lt;br /&gt;
Type this command (without quotations) to install the development environment for the Arduino:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sudo dnf install arduino&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To start the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;arduino&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Controlling ultrasonic sensor from Arduino=&lt;br /&gt;
Diginess&#039;s notes:  I bought this:  https://www.radioshack.com/products/radioshack-ultrasonic-range-sensor from Radio Shack ($30) - have some on order from Amazon, but ran out of time.&lt;br /&gt;
The wiring is very simple - I used a solderless prototyping board and followed the instructions on the manual (page 4):  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/2760342_PM_EN.pdf&lt;br /&gt;
Note that the picture shows the view from the sensor&#039;s front - I initially wired it backwards, but there are only 4 wires.  If you get 0s showing for distance measurements, you probably reversed the signal wire and ground.&lt;br /&gt;
Here&#039;s the code to paste in the development environment:  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/UltrasonicRangeSensor.ino&lt;br /&gt;
Plug the Arduino into your computer with a USB A-B cable.  Wait for initialization on the Arduino.&lt;br /&gt;
From the environment (after code has been pasted), go to the File menu and select Upload.  Wait for the LEDs on the Arduino to stop flashing, indicating code upload is complete.  Next, go to the Tools menu option, and select &amp;quot;Serial Monitor&amp;quot;.  The code will immediately be ran on the Arduino, and you will see a scrolling log of the results (distance to object in front of the sensor).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Research==&lt;br /&gt;
*[[CNC Software]]&lt;br /&gt;
*[[Stepper Motor]]&lt;br /&gt;
&lt;br /&gt;
==Product Ecology==&lt;br /&gt;
{{3D Printer}}&lt;br /&gt;
{{Circuit Mill}}&lt;br /&gt;
{{Multimachine}}&lt;br /&gt;
{{Torch Table}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Digital Fabrication]]&lt;br /&gt;
*[[Vinyl Cutter]]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Cnc Wikipedia: CNC]&lt;br /&gt;
&lt;br /&gt;
[[Category: Links]]&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144464</id>
		<title>CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC&amp;diff=144464"/>
		<updated>2016-09-25T02:46:39Z</updated>

		<summary type="html">&lt;p&gt;Diginess: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary=&lt;br /&gt;
Computer numerical control, a computer controller that reads instructions and drives a machine tool.&lt;br /&gt;
&lt;br /&gt;
In modern CNC systems, end-to-end component design is highly automated using computer-aided design ([[CAD]]) and computer-aided manufacturing ([[CAM]]) programs. The programs produce a computer file that is interpreted to extract the commands needed to operate a particular machine via a postprocessor, and then loaded into the CNC machines for production. Since any particular component might require the use of a number of different tools-drills, saws, etc., modern machines often combine multiple tools into a single &amp;quot;cell&amp;quot;. In other cases, a number of different machines are used with an external controller and human or robotic operators that move the component from machine to machine. In either case, the complex series of steps needed to produce any part is highly automated and produces a part that closely matches the original CAD design.&lt;br /&gt;
&lt;br /&gt;
[[File: cnctoolchain.svg|500px]]&lt;br /&gt;
&lt;br /&gt;
Use the [[Processing]] [[IDE]] to open the [[Gctrl]] [[GUI]]&lt;br /&gt;
&lt;br /&gt;
Then you can send [[CAM]] [[Electrical Information]] from your [[Computer]] via its [[USB]] port to the [[Arduino]] [[Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
The [[Electrical Information]] will be interpreted by the [[GRBL]] software and then you will get processed [[Electrical Information]] as the output&lt;br /&gt;
&lt;br /&gt;
You can configure the [[GRBL]] settings using the [[Arduino]] [[IDE]]&#039;s [[Serial Monitor]]&lt;br /&gt;
&lt;br /&gt;
=Modules=&lt;br /&gt;
&lt;br /&gt;
[[Processing]]&lt;br /&gt;
&lt;br /&gt;
[[Gctrl]]&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.com/Arduino-Rev-3-Uno-R3/dp/B006H06TVG/ref=sr_1_1?ie=UTF8&amp;amp;qid=1339352565&amp;amp;sr=8-1 Arduino Uno R3 from Amazon]&lt;br /&gt;
&lt;br /&gt;
[[Arduino]]&lt;br /&gt;
&lt;br /&gt;
[[RXTX]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL]]&lt;br /&gt;
&lt;br /&gt;
[[GRBL Config]]&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&lt;br /&gt;
arduino IDE Serial Monitor: carriage return&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-6-jre&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
sudo ./arduino&lt;br /&gt;
&lt;br /&gt;
sudo ./processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Fedora Notes (for install of the Arduino development environment)=&lt;br /&gt;
Type this command (without quotations) to install the development environment for the Arduino:&lt;br /&gt;
&amp;quot;sudo dnf install arduino&amp;quot;&lt;br /&gt;
To start the environment:&lt;br /&gt;
&amp;quot;arduino&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Controlling ultrasonic sensor from Arduino=&lt;br /&gt;
Diginess&#039;s notes:  I bought this:  https://www.radioshack.com/products/radioshack-ultrasonic-range-sensor from Radio Shack ($30) - have some on order from Amazon, but ran out of time.&lt;br /&gt;
The wiring is very simple - I used a solderless prototyping board and followed the instructions on the manual (page 4):  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/2760342_PM_EN.pdf&lt;br /&gt;
Note that the picture shows the view from the sensor&#039;s front - I initially wired it backwards, but there are only 4 wires.  If you get 0s showing for distance measurements, you probably reversed the signal wire and ground.&lt;br /&gt;
Here&#039;s the code to paste in the development environment:  https://github.com/RadioShackCorp/2760342-Range-Sensor/blob/master/UltrasonicRangeSensor.ino&lt;br /&gt;
Plug the Arduino into your computer with a USB A-B cable.  Wait for initialization on the Arduino.&lt;br /&gt;
From the environment (after code has been pasted), go to the File menu and select Upload.  Wait for the LEDs on the Arduino to stop flashing, indicating code upload is complete.  Next, go to the Tools menu option, and select &amp;quot;Serial Monitor&amp;quot;.  The code will immediately be ran on the Arduino, and you will see a scrolling log of the results (distance to object in front of the sensor).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Research==&lt;br /&gt;
*[[CNC Software]]&lt;br /&gt;
*[[Stepper Motor]]&lt;br /&gt;
&lt;br /&gt;
==Product Ecology==&lt;br /&gt;
{{3D Printer}}&lt;br /&gt;
{{Circuit Mill}}&lt;br /&gt;
{{Multimachine}}&lt;br /&gt;
{{Torch Table}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Digital Fabrication]]&lt;br /&gt;
*[[Vinyl Cutter]]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Cnc Wikipedia: CNC]&lt;br /&gt;
&lt;br /&gt;
[[Category: Links]]&lt;/div&gt;</summary>
		<author><name>Diginess</name></author>
	</entry>
</feed>