Engine3D est une librairie permettant le chargement, la manipulation et le rendu de nuages de points avec un contrôle avancé des performances. La librairie est disponible sur Windows, Ubuntu 22.04 et Android.
Télécharger Visual Studio et installer :
- Développement Desktop en C++
- Kit de développement logiciel (SDK) Windows 11 (10.0.22621.0) -> Dans l'onglet "Composants individuels"
Télécharger l'installeur de Qt sur le site officiel et installer la dernière version de Qt6 avec le compilateur MSVC.
git clone https://github.com/g-truc/glm
cd glm && mkdir build && cd build
cmake -DBUILD_TESTING=False -DCMAKE_INSTALL_PREFIX=install ..
cmake --build . --config Release --target install
Télécharger et extraire la dernière version d'OpenCV sur le site officiel.
La librairie ViSP a besoin d'être compilée avec deux autres librairies : Eigen (pour libPeR) et OpenCV (pour ESILab).
git clone https://gitlab.com/libeigen/eigen.git
cd eigen && mkdir build && cd build
cmake -DBUILD_TESTING=FALSE -DCMAKE_INSTALL_PREFIX=install ..
cmake --build . --config Release --target install
Il est recommandé d'utiliser la version release pré-compilée d'OpenCV (plus simple et Engine3D a été testé sur celle-ci). Pour utiliser OpenCV depuis les sources, il faut également ajouter opencv_contrib et donner le dossier "modules" dans la variable CMake.
git clone https://github.com/opencv/opencv_contrib.git
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
$OpenCV_CONTRIB_MODULES_DIR="../../opencv_contrib/modules"
$OpenCV_CONTRIB_MODULES_DIR=$OpenCV_CONTRIB_MODULES_DIR.replace("\","/")
cmake -DBUILD_PERF_TESTS=False -DBUILD_TESTS=False -DBUILD_opencv_python_tests=False -DOPENCV_EXTRA_MODULES_PATH="$OpenCV_CONTRIB_MODULES_DIR" -DBUILD_opencv_world=True ..
cmake --build . --config Release --target install
Le dépôt officiel de ViSP ne fonctionne pas avec Engine3D à cause d'une incompatibilité avec PThread même en le désactivant. Il faut utiliser un fork corrigeant vpImage et vpImageConvert.
git clone https://github.com/NoelVillette/visp.git
cd visp
git checkout remotes/origin/patch4engine3d -b patch4engine3d
mkdir build && cd build
$Eigen3_DIR="<Eigen3_INSTALL_DIR>"
$OpenCV_DIR="<OpenCV_BUILD_DIRECTORY>"
$Eigen3_DIR=$Eigen3_DIR.replace("\","/")
$OpenCV_DIR=$OpenCV_DIR.replace("\","/")
cmake -DBUILD_DEMOS=FALSE -DBUILD_EXAMPLES=FALSE -DBUILD_TESTS=FALSE -DBUILD_TUTORIALS=FALSE -DEIGEN3_INCLUDE_DIR="$Eigen3_DIR/include/eigen3" -DOpenCV_DIR="$OpenCV_DIR" -DWITH_PTHREAD=FALSE ..
cmake --build . --config Release --parallel --target install
git clone https://github.com/ValveSoftware/openvr.git
git clone https://github.com/PerceptionRobotique/Engine3D.git
cd Engine3D
mkdir build && cd build
$QT_DIR="<QT_MSVC_DIR>"
$glm_DIR="<glm_INSTALL_DIRECTORY>"
$OpenCV_DIR="<OpenCV_BUILD_DIRECTORY>"
$ViSP_DIR="<ViSP_INSTALL_DIRECTORY>"
$OpenVR_DIR="<OpenVR_DIRECTORY>"
$QT_DIR=$QT_DIR.replace("\","/")
$glm_DIR=$glm_DIR.replace("\","/")
$OpenCV_DIR=$OpenCV_DIR.replace("\","/")
$ViSP_DIR=$ViSP_DIR.replace("\","/")
$OpenVR_DIR=$OpenVR_DIR.replace("\","/")
cmake -DQT_DIR="$QT_DIR/lib/cmake/Qt6" -Dglm_DIR="$glm_DIR/lib/cmake/glm" -DWITH_OPENCV=TRUE -DOpenCV_DIR="$OpenCV_DIR" -DWITH_ViSP=TRUE -DVISP_DIR="$ViSP_DIR" -DWITH_OpenVR=TRUE -DOPENVR_DIR="$OpenVR_DIR" ..
cmake --build . --config Release --parallel --target install
Compiler et installer ViSP et Engine3D en configuration Debug :
cmake --build . --config Debug --target install
Installer NSIS. Si Engine3D a été compilé et installé en Debug et Release alors les deux configurations seront présentes dans le package.
cmake --build . --config Release --target package
sudo apt install git cmake build-essential ninja-build ffmpeg libgl1-mesa-dev libglu1-mesa-dev
sudo apt install qt6-base-dev libglm-dev libopencv-dev libvisp-dev libopenvr-dev
Cette section est à titre d'information. Il est recommandé de passer par les dépôts officiels de Ubuntu. Cela peut-être utile par exemple sur d'anciennes version d'Ubuntu où certains dépôts manquent, mais la compatibilité n'est pas garantie.
Il est tout à fait possible d'utiliser Qt6 depuis l'installeur disponible sur leur site internet.
sudo apt install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
git clone https://github.com/qt/qtbase.git
cd qtbase
mkdir build && cd build
../configure -release -shared
cmake --build . --parallel
sudo cmake --build . --target install
Si Qt6 a été compilé en shared, ajouter le dossier des librairies à la variable d'environnement PATH. Pour cela, ajouter à la fin du fichier .bashrc :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Qt-6.<version>/lib:/usr/local/Qt-6.<version>/plugins
git clone https://github.com/g-truc/glm.git
cd glm
mkdir build && cd build
cmake -DBUILD_TESTING=False ..
sudo cmake --build . --config Release --target install
git clone https://gitlab.com/libeigen/eigen.git
cd eigen
mkdir build && cd build
cmake -DBUILD_TESTING=False ..
sudo cmake --build . --config Release --target install
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=False -DBUILD_PERF_TESTS=False -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -DWITH_EIGEN=False ..
cmake --build . --config Release --parallel
sudo cmake --build . --config Release --target install
git clone https://github.com/lagadic/visp.git
cd visp
mkdir build && cd build
cmake -DBUILD_DEMOS=False -DBUILD_EXAMPLES=False -DBUILD_TESTS=False -DBUILD_TUTORIALS=False -DEIGEN3_INCLUDE_DIR=/usr/local/include/eigen3 ..
cmake --build . --config Release --parallel
sudo cmake --build . --config Release --target install
git clone https://github.com/ValveSoftware/openvr.git
cd openvr
mkdir build && cd build
cmake ..
cmake --build . --parallel
sudo cmake --build . --target install
git clone https://github.com/PerceptionRobotique/Engine3D.git
cd Engine3D
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_OPENCV=TRUE -DWITH_ViSP=TRUE -DWITH_OpenVR=TRUE ..
cmake --build . --config Release --parallel
cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_OPENCV=TRUE -DWITH_ViSP=TRUE -DWITH_OpenVR=TRUE ..
cmake --build . --config Debug --parallel
Si libEngine3Dd.so existe dans le dossier de build alors le package va inclure les deux configurations.
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_OPENCV=TRUE -DWITH_ViSP=TRUE -DWITH_OpenVR=TRUE ..
cmake --build . --config Release --target package
Les étapes d'installation et de compilation pour Android sont très complexes et demandent parfois de faire face à des comportements "étranges" surtout venant de Qt. Les étapes ont été réalisées sur Windows.
- Télécharger et installer la dernière version de [Qt6]{https://www.qt.io/} pour Android
- Télécharger et installer [Java JDK]{https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe} version 17 (LTS) pour éviter certains problèmes
- Télécharger et installer [Android Studio]{https://developer.android.com/studio/}
- Lancer Android Studio pour qu'il installe les outils par défaut
- Dans le launcher d'Android Studio, aller dans
SDK Manager - Cocher la dernière version du SDK d'Android (avec un "API Level" correspondant à un numéro, actuellement Android 13.0 Tiramisu avec un API Level à 33)
- Aller dans
More Actions > SDK Manager > SDK Tools - Décocher
Hide Obsolete Packages - Cocher
Android SDK Command-line Tools (latest) - Cocher
Android SDK Tools (Obsolete)car il sera nécessaire pour ViSP - Valider l'installation et fermer Android Studio
- Lancer Qt Creator
- Aller dans
Édition > Preferences... > Appareils mobiles > Android - Remplir l'emplacement du JDK (installé dans
C:\Program Files\Java\jdk-17) - Si Qt demande d'installer des packages supplémentaires répondre oui
- Remplir l'emplacement du SDK Android si besoin (par défaut
C:\Users\<user>\AppData\Local\Android\Sdk) - Cliquer sur
Setup SDKsi Android n'est pas encore configuré, il faut parfois cliquer plusieurs fois dessus pour avoir toutes les coches vertes - Si OpenSSL est manquant, aller dans
C:\Users\<user>\AppData\Local\Android\Sdk, ouvrir un terminal et cloner le dépôt git d'Android OpenSSL :git clone https://github.com/KDAB/android_openssl.git - Redémarrer Qt Creator et vérifier qu'Android OpenSSL est OK.
Normalement, toutes les coches sont au vert.
Pour rappel, les libraires OpenCV et ViSP sont optionnelles.
git clone https://github.com/g-truc/glm.git- Ouvrir le fichier
CMakeLists.txtde glm dans Qt - glm peut être configuré pour Android sur les architectures arm64-v8a et x86_64 (sélectionner les configurations "Release" sauf si vous savez ce que vous faites)
- Le changement de configuration se fait en cliquant sur le bouton au dessus de "Run" en bas à gauche (logo de smartphone avec une pastille rouge)
- Aller dans
Projets - Attendre la fin de la configuration initiale de glm
- Aller dans l'onglet
Current Configuration - Décocher les options :
BUILD_TESTING - Changer
CMAKE_INSTALL_PREFIXpour "install" - Dans "Étapes Build", cliquer sur "Détails" de Compilation, décocher
allet cocherinstall - Désactiver le "Build Android APK" (logo à sélectionner à côté de "Détails")
- Cliquer sur "Exécuter CMake" et attendre la fin de la configuration
- Compiler (logo du marteau en bas à gauche)
- Recommencer avec les autres architectures de processeur voulues
Télécharger et extraire la librairie [OpenCV]{https://opencv.org/releases/} pour Android.
git clone https://github.com/lagadic/visp.git- Ouvrir le fichier
CMakeLists.txtde ViSP dans Qt - ViSP peut être configuré pour Android sur les architectures arm64-v8a et x86_64 (sélectionner les configurations "Release" sauf si vous savez ce que vous faites)
- Le changement de configuration se fait en cliquant sur le bouton au dessus de "Run" en bas à gauche (logo de smartphone avec une pastille rouge)
- Aller dans
Projets - Attendre la fin de la configuration initiale de ViSP
- Aller dans l'onglet
Current Configuration - Décocher les options :
BUILD_ANDROID_EXAMPLES,BUILD_ANDROID_PROJECTS,BUILD_DEMOS,BUILD_EXAMPLES,BUILD_JAVA,BUILD_TESTSetBUILD_TUTORIALS - Cocher l'option
BUILD_SHARED_LIBS - Dans "Étapes Build", cliquer sur "Détails" de Compilation, décocher
allet cocherinstall - Désactiver le "Build Android APK" (logo à sélectionner à côté de "Détails")
- Cliquer sur "Exécuter CMake" et attendre la fin de la configuration (vérifier dans la sortie que Tests, Demos, Examples et Tutorials retournent "no", sinon fermer Qt Creator, supprimer tous les fichiers dans le dossier de build en cours à l'exception du "CMakeCache.txt" et recommencer, la configuration est normalement sauvegardée donc il suffit de ré-exécuter CMake)
- Compiler (logo du marteau en bas à gauche)
- Recommencer avec les autres architectures de processeur voulues
git clone https://github.com/PerceptionRobotique/Engine3D.git- Ouvrir le fichier
CMakeLists.txtd'Engine3D dans Qt - Engine3D peut être configuré pour Android sur les architectures arm64-v8a et x86_64 (sélectionner les configurations "Release" sauf si vous savez ce que vous faites)
- Aller dans
Projets - Attendre la fin de la configuration initiale (qui échoue, c'est normal)
- Aller dans l'onglet
Current Configuration - Créer la variable suivante en cliquant sur
Add > Directory:glm_DIR:<glm_install_dir>/lib/cmake/glm
- Cliquer sur "Exécuter CMake"
- Définir la variable :
CMAKE_INSTALL_PREFIX:install - [optionnel] Cocher les variables :
WITH_OPENCVetWITH_ViSPet définir les variables :OpenCV_DIR:<chemin_vers_OpenCV_android>/OpenCV-android-sdk/sdk/native/jniVISP_DIR:<visp_install_dir>/sdk/native/jni
- Changer
CMAKE_INSTALL_PREFIXpour "install" - Dans "Étapes Build", cliquer sur "Détails" de Compilation, décocher
allet cocherinstall - Désactiver le "Build Android APK" (logo à sélectionner à côté de "Détails")
- Cliquer sur "Exécuter CMake" et attendre la fin de la configuration (vérifier dans la sortie que Tests, Demos, Examples et Tutorials retournent "no", sinon fermer Qt Creator, supprimer tous les fichiers dans le dossier de build en cours à l'exception du "CMakeCache.txt" et recommencer, la configuration est normalement sauvegardée donc il suffit de ré-exécuter CMake)
- Compiler (logo du marteau en bas à gauche)
- Recommencer avec les autres architectures de processeur voulues
Pour compiler la documentation, installer Doxygen.
- Windows : https://www.doxygen.nl/download.html
- Ubuntu :
sudo apt install doxygen
Ajouter -DGENERATE_DOXYGEN=TRUE à la commande cmake. Exécuter ensuite cmake --build . --target Doxygen. Quand la documentation a été générée, elle est installée avec le package.
This software was developed at:
MIS - UPJV
33 rue Saint-Leu
80039 AMIENS CEDEX
France
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Description:
Insight about how to set the project and build the program
Authors:
Noel Villette, El Mustapha Mouaddib