#!/bin/sh
# install_photogrammetry_env.deb.sh
# 2025-10-23
# by Gernot Walzl
# This script installs software used for photogrammetry. Tested on Debian 13.
# Installed software: COLMAP, OpenMVS, MeshLab, Blender.
COLMAP_DOCKERFILE_DOWNLOAD="https://gernot-walzl.at/Miscellaneous/Photogrammetry/colmap.Dockerfile"
OPENMVS_DEBBUILD_DOWNLOAD="https://gernot-walzl.at/Debian/DebBuilds/openmvs.DebBuild"
MESHLAB_VERSION="2025.07"
MESHLAB_APPIMG="MeshLab${MESHLAB_VERSION}-linux_x86_64.AppImage"
MESHLAB_DOWNLOAD="https://github.com/cnr-isti-vclab/meshlab/releases/download/MeshLab-${MESHLAB_VERSION}/${MESHLAB_APPIMG}"
BLENDER_VERSION="4.5.3"
BLENDER_ARCHIVE="blender-${BLENDER_VERSION}-linux-x64.tar.xz"
BLENDER_DOWNLOAD="https://download.blender.org/release/Blender4.5/${BLENDER_ARCHIVE}"
CWD=$(pwd)
TMP=${TMP:-'/tmp'}
install_colmap () {
if [ ! -f colmap.Dockerfile ]; then
wget -O colmap.Dockerfile "$COLMAP_DOCKERFILE_DOWNLOAD"
fi
apt-get update
apt-get install docker.io
docker build -o=output -f colmap.Dockerfile .
mkdir -p /usr/local/bin
cp output/usr/local/bin/colmap /usr/local/bin/colmap
# https://github.com/colmap/colmap/blob/main/docker/Dockerfile#L66
apt-get install \
libboost-program-options1.83.0 \
libomp5 \
libopengl0 \
libmetis5 \
libceres4t64 \
libfreeimage3 \
libgcc-s1 \
libgl1 \
libglew2.2 \
libqt6core6t64 \
libqt6gui6 \
libqt6widgets6 \
libqt6openglwidgets6 \
libcurl4t64 \
libssl3t64 \
libmkl-intel-lp64 \
libmkl-intel-thread \
libmkl-core \
nvidia-cuda-toolkit
rm -rf output
}
install_openmvs () {
if [ ! -f openmvs.DebBuild ]; then
wget -O openmvs.DebBuild "$OPENMVS_DEBBUILD_DOWNLOAD"
fi
chmod +x openmvs.DebBuild
./openmvs.DebBuild
dpkg -i /tmp/openmvs_*_amd64.deb
}
install_meshlab () {
if [ ! -f "$CWD/$MESHLAB_APPIMG" ]; then
wget -O "$CWD/$MESHLAB_APPIMG" "$MESHLAB_DOWNLOAD"
fi
mkdir -p /opt
cp "$CWD/$MESHLAB_APPIMG" /opt
chown root:root "/opt/$MESHLAB_APPIMG"
chmod +x "/opt/$MESHLAB_APPIMG"
rm -f /usr/local/bin/meshlab
ln -s "/opt/$MESHLAB_APPIMG" /usr/local/bin/meshlab
# rm "$CWD/$MESHLAB_APPIMG"
}
install_blender () {
if [ ! -f "$CWD/$BLENDER_ARCHIVE" ]; then
wget -O "$CWD/$BLENDER_ARCHIVE" "$BLENDER_DOWNLOAD"
fi
cd "$TMP" || return 1
tar xvf "$CWD/$BLENDER_ARCHIVE"
mkdir -p /opt
rm -rf "/opt/blender-${BLENDER_VERSION}"
mv "blender-${BLENDER_VERSION}-linux-x64" "/opt/blender-${BLENDER_VERSION}"
rm -f /usr/local/bin/blender
ln -s "/opt/blender-${BLENDER_VERSION}/blender" /usr/local/bin/blender
# rm "$CWD/$BLENDER_ARCHIVE"
}
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root."
exit 1
fi
install_colmap
install_openmvs
install_meshlab
install_blender