Meshroom: Free photogrammetry

@YAFU You use Linux? I hope you have better luck than me trying to build this for windows. It sucks to be dumb, LOL. I got as far as making the aliceVision.sln file for AliceVision ,but that’s about it. The Instructions for meshroom isn’t that clear. To top it off, I tried to install cuda 9.1 and it errors out every time I try.

Yes, linux. Now I am fighting against that CUDA and gcc version. I choose v4.8 or v6 from cmake-gui but it still keeps giving the same error message (I hope I have correctly understood what “later than 6” means in error message)

Edit:
Ok, I used this to force configuring with gcc 6 in AliceVision:
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-6 -DCMAKE_BUILD_TYPE=Release . ../AliceVision

Now starting to read meshroom documentation to try to compile it correctly.
Edit again:
Apparently it is not necessary to compile anything here. Yep, I did not understand the meshroom documentation.

I was able to open Meshroom GUI. For Ubuntu 18.04 you need to install this:

sudo apt install python-psutil python-pip

And then download and install this python component:

pip install --index-url=http://download.qt.io/snapshots/ci/pyside/5.11/latest/ pyside2 --trusted-host download.qt.io

Then to launch application you go to the folder where Meshroom has been downloaded from git (the same folder from where you run “git pull” to update), and enter the following command:

PYTHONPATH=$PWD python meshroom/ui

Now, I do not know what to do with AliceVision binaries (I did not run “make install” when I built it, just make). Meshroom documentation talks about “The Path”, but I do not understand exactly what that path is. So I’m not sure if I should copy the binaries to some folder.

@YAFU I’m almost ready to just wait for builds before I pull my hair out, LOL.

I was able to make the .sln with no trouble(I think) ,but building in visual studio gives this error. I’m still trying to figure out what it is. I do see I have a release folder with files in it ,but I doubt it did it successfully with that error.

Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB3073	The command "setlocal
"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1.	INSTALL	C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets	133

Any idea what this is is ran from since I’m on windows?

ALICEVISION_SENSOR_DB=/path/to/database

and

pip install -r requirements.txt

Both windows command prompt and Visual Studio command prompt doesn’t do anything with it. They both complain about pip and ALICEVISION_SENSOR_DB. I’m guessing those commands are not ran from either of those?

@AFWS, I’m sorry, I never built anything on Windows.

“pip” is a component for downloading and installing Python modules. In Linux you must install “pip” from repositories. I suppose that in Windows you should download it from somewhere.
The others are environment variables that must be established for the program to find all the components.

I’m having a problem with that. Assuming that I have AliceVision binaries in “/home/USER/AliceVision/build/Linux-x86_64” folder, if I open the terminal in the meshroom folder and execute:

export PATH=/home/USER/AliceVision/build/Linux-x86_64:$PATH
PYTHONPATH=$PWD python meshroom/ui

then I can add images in Meshroom GUI, but then it does not find database.

If I execute:

export ALICEVISION_SENSOR_DB=/home/USER/AliceVision/AliceVision/src/aliceVision/sensorDB
export ALICEVISION_VOCTREE=/home/USER/AliceVision/AliceVision/src/aliceVision/voctree
export PATH=/home/USER/AliceVision/build/Linux-x86_64:$PATH
PYTHONPATH=$PWD python meshroom/ui

Then I can not add images to Meshroom GUI.
So I do not know exactly how to add these multiple variables at the same time.

@YAFU I made some progress this morning. Having python installed on my computer, would help with running “pip” commands, LOL.

I still got to figure out how to set the “Environment variables” and “Plugins paths” on the https://github.com/alicevision/meshroom/blob/develop/INSTALL.md page.

@AFWS, Good! Keep it up, we’ll make it!

@fabiencastan, Please, any clues about how to correctly configure the environment variables? I feel so close :sweat:

I’m getting closer. It keeps stopping at this point ,but doesn’t appear to error out.

I’m trying to figure out the Qt Plugins now. Looks like you need the Alembic QML for point cloud and cameras. INSTALL.md says you need QT5 official installer and it looks like it’s paid of course. Not sure how I go about building those plugins.

You seem to be in a more advanced state than I am now :slight_smile:

Here set of photos to try:

I tried different photos and actually got something to happen, LOL.

I was doing it right! Just that I should point exactly to the database file “sensor_width_camera_database.txt”, not just the folder!
However, I’m not sure where exactly to point “voctree”, whether to the folder or some file inside it.
Well, loading “MirebeauStHilaireStatue” sample images from github above link, I get this kind of error when processing:

http://pasteall.org/1051006

__
@AFWS, I think that only 4 photos is too little to achieve a good reconstruction.

Yeah, that’s one of the things that’s kinda confusing. I tried pointing to the file and then tried just pointing to the folder and both seems to work.

I tried to download those pics as a zip file ,but it wouldn’t unzip for some reason. I now am doing “git clone”.

So this wont work without nvidia card?

I have been able to compile “qmlAlembic” (I guess).

sudo apt install qt3d5-dev qt3d-assimpsceneimport-plugin qt3d-defaultgeometryloader-plugin qt3d-gltfsceneio-plugin qt3d-scene2d-plugin

If you were used to compiling Blender and you had run Blender install_deps.sh script, you will have installed Alembic in “/opt/lib/”. So find in this path Alembic version installed and look where “AlembicConfig.cmake” file is (mine is 1.7.1 version and it is located in /opt/lib/alembic-1.7.1/lib/cmake/Alembic/).
Entering “qmlAlembic” folder downloaded from git:

mkdir build
cd build
cmake .. -DAlembic_DIR=/opt/lib/alembic-1.7.1/lib/cmake/Alembic/
make
sudo make install

This install it in “/usr/local/qml/AlembicEntity/libalembicEntityQmlPlugin.so”
For Meshroom I tried with “export QML2_IMPORT_PATH=/usr/local/qml:$QML2_IMPORT_PATH” or “export QML2_IMPORT_PATH=/usr/local/qml/AlembicEntity:$QML2_IMPORT_PATH” but still getting error in “PrepareDenseScene” node (testing with “MirebeauStHilaireStatue” images from this GitHub repo above)

qmlAlembic plugin is used to visualize the sparse point cloud and the reconstructed cameras in 3D. If you don’t have the qmlAlembic plugin, you will still be able to compute and visualize your final mesh.

What is your error message in PrepareDenseScene?

Without an nvidia card for CUDA, you can compute the structure-from-motion and get the sparse point cloud and reconstructed cameras but you will not be able to create the depth maps. And without depth maps, you cannot create the mesh.

Well that’s sad, but thanks for the info.

Hi.
This is the output of the terminal starting from when launch Meshroom, until the process stops and I get the error:
http://pasteall.org/1052446

Do you need any other meshroom log file in tmp folder?

StructureFromMotion step has been able to write in Alembic but PrepareDenseScene does not recognize the Alembic file format (as if it had been built without Alembic support).
You have built AliceVision without Alembic first, added it and rebuilt. So it seems that some parts have not been rebuilt as needed.

Ok, then Alembic is a necessary dependency for meshroom to be able to finish the job?

I have entered to the “build” folder where AliceVision had previously compiled. I opened “CMakeCache.txt” with cmake-gui and configured these two parameters:
ALICEVISION_USE_ALEMBIC ON
Alembic_DIR /opt/lib/alembic-1.7.1/lib/cmake/Alembic/
(is where Blender install_deps.sh install it)
Then Configure, Generate and run “make” from terminal again.

Now it has been able to pass “PrepareDenseScene” stage, and now it is processing DepthMap (using GPU apparently). So, now waiting for it to end without errors :slight_smile:

Thank you!