├── .gitattributes ├── .github └── workflows │ ├── cmake-multi-platform-build.yml │ ├── ros-humble.yml │ ├── ros-iron.yml │ └── ros-jazzy.yml ├── .gitignore ├── CHANGELOG.rst ├── CMakeLists.txt ├── CMakeModules ├── FindDraco.cmake ├── FindFLANN.cmake ├── FindGEOTIFF.cmake ├── FindLZ4.cmake ├── FindNabo.cmake ├── FindOpenCL2.cmake ├── FindOpenNI.cmake ├── FindOpenNI2.cmake ├── FindQVTK.cmake ├── FindRDB.cmake ├── FindSTANN.cmake ├── Findembree.cmake ├── TBBConfig.cmake ├── lvr2-uninstall.cmake.in └── max_cuda_gcc_version.cmake ├── CMakeSettings.json ├── Doxyfile.in ├── LICENSE ├── LVR2Config.cmake.in ├── PMP_LICENSE.txt ├── README.md ├── Singularity.def ├── dat └── scan.pts ├── debian ├── changelog ├── compat ├── control ├── copyright ├── liblvr2-cuda-dev.install ├── liblvr2-cuda.install ├── liblvr2-dev.install ├── liblvr2.install ├── lvr2-bin.install ├── lvr2-cuda-bin.install ├── lvr2-docs.docs ├── rules └── source │ └── format ├── eval.sh ├── examples ├── CMakeLists.txt ├── channels │ ├── CMakeLists.txt │ └── Main.cpp ├── coordinates │ ├── CMakeLists.txt │ └── Main.cpp ├── raycasting │ ├── CMakeLists.txt │ └── Main.cpp └── scan_projects │ ├── CMakeLists.txt │ ├── README.md │ ├── compression │ ├── CMakeLists.txt │ ├── Main.cpp │ └── README.md │ ├── helper │ ├── CMakeLists.txt │ ├── include │ │ ├── Logging.hpp │ │ ├── ScanTypesCompare.hpp │ │ └── ScanTypesDummies.hpp │ └── src │ │ ├── ScanTypesCompare.cpp │ │ └── ScanTypesDummies.cpp │ ├── loadpartial │ ├── CMakeLists.txt │ ├── Main.cpp │ └── README.md │ ├── schema │ ├── CMakeLists.txt │ ├── Main.cpp │ └── README.md │ └── simple │ ├── CMakeLists.txt │ ├── Main.cpp │ └── README.md ├── ext ├── CTPL │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── ctpl.h │ ├── ctpl_stl.h │ └── example.cpp ├── HighFive │ ├── .clang-format │ ├── .gitignore │ ├── .gitmodules │ ├── .travis.yml │ ├── CHANGELOG.md │ ├── CMake │ │ ├── HighFiveConfig.cmake.in │ │ ├── HighFiveTargetDeps.cmake │ │ ├── HighFiveTargetExport.cmake │ │ ├── config │ │ │ ├── CompilerFlagsHelpers.cmake │ │ │ ├── ReleaseDebugAutoFlags.cmake │ │ │ └── TestHelpers.cmake │ │ └── portability │ │ │ ├── BlueGenePortability.cmake │ │ │ └── CheckCXXStandardSupport.cmake │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── VERSION │ ├── default.nix │ ├── doc │ │ └── CMakeLists.txt │ ├── include │ │ └── highfive │ │ │ ├── H5Attribute.hpp │ │ │ ├── H5DataSet.hpp │ │ │ ├── H5DataSpace.hpp │ │ │ ├── H5DataType.hpp │ │ │ ├── H5Easy.hpp │ │ │ ├── H5Exception.hpp │ │ │ ├── H5File.hpp │ │ │ ├── H5FileDriver.hpp │ │ │ ├── H5Group.hpp │ │ │ ├── H5Object.hpp │ │ │ ├── H5PropertyList.hpp │ │ │ ├── H5Reference.hpp │ │ │ ├── H5Selection.hpp │ │ │ ├── H5Utility.hpp │ │ │ ├── H5Version.hpp.in │ │ │ ├── bits │ │ │ ├── H5Annotate_traits.hpp │ │ │ ├── H5Annotate_traits_misc.hpp │ │ │ ├── H5Attribute_misc.hpp │ │ │ ├── H5ConverterEigen_misc.hpp │ │ │ ├── H5Converter_misc.hpp │ │ │ ├── H5DataSet_misc.hpp │ │ │ ├── H5DataType_misc.hpp │ │ │ ├── H5Dataspace_misc.hpp │ │ │ ├── H5Exception_misc.hpp │ │ │ ├── H5FileDriver_misc.hpp │ │ │ ├── H5File_misc.hpp │ │ │ ├── H5Iterables_misc.hpp │ │ │ ├── H5Node_traits.hpp │ │ │ ├── H5Node_traits_misc.hpp │ │ │ ├── H5Object_misc.hpp │ │ │ ├── H5PropertyList_misc.hpp │ │ │ ├── H5ReadWrite_misc.hpp │ │ │ ├── H5Reference_misc.hpp │ │ │ ├── H5Selection_misc.hpp │ │ │ ├── H5Slice_traits.hpp │ │ │ ├── H5Slice_traits_misc.hpp │ │ │ ├── H5Utils.hpp │ │ │ └── H5_definitions.hpp │ │ │ └── h5easy_bits │ │ │ ├── H5Easy_Eigen.hpp │ │ │ ├── H5Easy_misc.hpp │ │ │ ├── H5Easy_opencv.hpp │ │ │ ├── H5Easy_public.hpp │ │ │ ├── H5Easy_scalar.hpp │ │ │ ├── H5Easy_vector.hpp │ │ │ └── H5Easy_xtensor.hpp │ ├── src │ │ └── examples │ │ │ ├── CMakeLists.txt │ │ │ ├── boost_multi_array_2D.cpp │ │ │ ├── boost_multiarray_complex.cpp │ │ │ ├── boost_ublas_double.cpp │ │ │ ├── create_attribute_string_integer.cpp │ │ │ ├── create_dataset_double.cpp │ │ │ ├── create_datatype.cpp │ │ │ ├── create_extensible_dataset.cpp │ │ │ ├── easy_attribute.cpp │ │ │ ├── easy_dumpoptions.cpp │ │ │ ├── easy_load_dump.cpp │ │ │ ├── parallel_hdf5_write_dataset.cpp │ │ │ ├── read_write_dataset_string.cpp │ │ │ ├── read_write_fixedlen_string.cpp │ │ │ ├── read_write_single_scalar.cpp │ │ │ ├── read_write_vector_dataset.cpp │ │ │ ├── renaming_objects.cpp │ │ │ ├── select_by_id_dataset_cpp11.cpp │ │ │ └── select_partial_dataset_cpp11.cpp │ └── tests │ │ ├── test_dependent_library │ │ ├── CMakeLists.txt │ │ ├── deps │ │ │ └── HighFive │ │ ├── include │ │ │ └── simpleton.hpp │ │ └── src │ │ │ ├── otherton.cpp │ │ │ └── simpleton.cpp │ │ ├── test_project │ │ ├── CMakeLists.txt │ │ ├── deps │ │ │ └── HighFive │ │ └── read_write_vector_dataset.cpp │ │ ├── test_project_integration.sh │ │ └── unit │ │ ├── CMakeLists.txt │ │ ├── tests_high_five.hpp │ │ ├── tests_high_five_base.cpp │ │ ├── tests_high_five_easy.cpp │ │ ├── tests_high_five_multi_dims.cpp │ │ ├── tests_high_five_parallel.cpp │ │ └── tests_import_public_headers.cpp ├── QVTKOpenGLWidget │ ├── CMakeLists.txt │ ├── QVTKOpenGLNativeWidget.h │ └── QVTKOpenGLWidget.h ├── kintinuous │ ├── .gitignore │ ├── CMakeLists.txt │ ├── LICENSE.md │ ├── README.md │ ├── kfusion │ │ ├── CMakeLists.txt │ │ ├── include │ │ │ ├── io │ │ │ │ └── capture.hpp │ │ │ └── kfusion │ │ │ │ ├── AbstractStage.hpp │ │ │ │ ├── BlockingQueue.hpp │ │ │ │ ├── FusionStage.hpp │ │ │ │ ├── GridStage.hpp │ │ │ │ ├── LVRPipeline.hpp │ │ │ │ ├── LinearPipeline.hpp │ │ │ │ ├── MeshStage.hpp │ │ │ │ ├── OptimizeStage.hpp │ │ │ │ ├── Options.hpp │ │ │ │ ├── PointSave.hpp │ │ │ │ ├── cuda │ │ │ │ ├── device.hpp │ │ │ │ ├── device_array.hpp │ │ │ │ ├── device_memory.hpp │ │ │ │ ├── imgproc.hpp │ │ │ │ ├── kernel_containers.hpp │ │ │ │ ├── projective_icp.hpp │ │ │ │ ├── temp_utils.hpp │ │ │ │ ├── texture_binder.hpp │ │ │ │ └── tsdf_volume.hpp │ │ │ │ ├── cyclical_buffer.h │ │ │ │ ├── exports.hpp │ │ │ │ ├── internal.hpp │ │ │ │ ├── kinfu.hpp │ │ │ │ ├── precomp.hpp │ │ │ │ ├── safe_call.hpp │ │ │ │ ├── tsdf_buffer.h │ │ │ │ └── types.hpp │ │ └── src │ │ │ ├── FusionStage.cpp │ │ │ ├── GridStage.cpp │ │ │ ├── LVRPipeline.cpp │ │ │ ├── MeshStage.cpp │ │ │ ├── OptimizeStage.cpp │ │ │ ├── PointSave.cpp │ │ │ ├── app │ │ │ ├── KinFuApp.hpp │ │ │ ├── LVR_KinFu.cpp │ │ │ └── Options.cpp │ │ │ ├── capture.cpp │ │ │ ├── core.cpp │ │ │ ├── cuda │ │ │ ├── imgproc.cu │ │ │ ├── proj_icp.cu │ │ │ └── tsdf_volume.cu │ │ │ ├── cyclical_buffer.cpp │ │ │ ├── device_memory.cpp │ │ │ ├── imgproc.cpp │ │ │ ├── kinfu.cpp │ │ │ ├── precomp.cpp │ │ │ ├── projective_icp.cpp │ │ │ └── tsdf_volume.cpp │ └── qt_app │ │ ├── CMakeLists.txt │ │ ├── KinfuMainWindow.ui │ │ ├── Main.cpp │ │ ├── MainWindow.cpp │ │ ├── MainWindow.hpp │ │ ├── MeshUpdateThread.cpp │ │ └── MeshUpdateThread.hpp ├── laslib │ ├── CHANGES.txt │ ├── CMakeLists.txt │ ├── COPYING.txt │ ├── LASlib.dsp │ ├── LASlib.dsw │ ├── LASlib.plg │ ├── Makefile │ ├── inc │ │ ├── bytestreamin.hpp │ │ ├── lasdefinitions.hpp │ │ ├── lasfilter.hpp │ │ ├── lasindex.hpp │ │ ├── lasinterval.hpp │ │ ├── lasquadtree.hpp │ │ ├── lasreader.hpp │ │ ├── lasreader_bin.hpp │ │ ├── lasreader_las.hpp │ │ ├── lasreader_qfit.hpp │ │ ├── lasreader_shp.hpp │ │ ├── lasreader_txt.hpp │ │ ├── lasreadermerged.hpp │ │ ├── lasspatial.hpp │ │ ├── lastransform.hpp │ │ ├── lasunzipper.hpp │ │ ├── lasutility.hpp │ │ ├── laswaveform13reader.hpp │ │ ├── laswaveform13writer.hpp │ │ ├── laswriter.hpp │ │ ├── laswriter_bin.hpp │ │ ├── laswriter_las.hpp │ │ ├── laswriter_qfit.hpp │ │ ├── laswriter_txt.hpp │ │ ├── laszip.hpp │ │ ├── laszipper.hpp │ │ └── mydefs.hpp │ ├── laslib_README.txt │ └── src │ │ ├── Makefile │ │ ├── arithmeticdecoder.cpp │ │ ├── arithmeticdecoder.hpp │ │ ├── arithmeticencoder.cpp │ │ ├── arithmeticencoder.hpp │ │ ├── arithmeticmodel.cpp │ │ ├── arithmeticmodel.hpp │ │ ├── bytestreamin_file.hpp │ │ ├── bytestreamin_istream.hpp │ │ ├── bytestreamout.hpp │ │ ├── bytestreamout_file.hpp │ │ ├── bytestreamout_nil.hpp │ │ ├── bytestreamout_ostream.hpp │ │ ├── entropydecoder.hpp │ │ ├── entropyencoder.hpp │ │ ├── fopen_compressed.cpp │ │ ├── integercompressor.cpp │ │ ├── integercompressor.hpp │ │ ├── lasfilter.cpp │ │ ├── lasindex.cpp │ │ ├── lasinterval.cpp │ │ ├── lasquadtree.cpp │ │ ├── lasreader.cpp │ │ ├── lasreader_bin.cpp │ │ ├── lasreader_las.cpp │ │ ├── lasreader_qfit.cpp │ │ ├── lasreader_shp.cpp │ │ ├── lasreader_txt.cpp │ │ ├── lasreadermerged.cpp │ │ ├── lasreaditem.hpp │ │ ├── lasreaditemcompressed_v1.cpp │ │ ├── lasreaditemcompressed_v1.hpp │ │ ├── lasreaditemcompressed_v2.cpp │ │ ├── lasreaditemcompressed_v2.hpp │ │ ├── lasreaditemraw.hpp │ │ ├── lasreadpoint.cpp │ │ ├── lasreadpoint.hpp │ │ ├── lasspatial.cpp │ │ ├── lastransform.cpp │ │ ├── lasunzipper.cpp │ │ ├── lasutility.cpp │ │ ├── laswaveform13reader.cpp │ │ ├── laswaveform13writer.cpp │ │ ├── laswriteitem.hpp │ │ ├── laswriteitemcompressed_v1.cpp │ │ ├── laswriteitemcompressed_v1.hpp │ │ ├── laswriteitemcompressed_v2.cpp │ │ ├── laswriteitemcompressed_v2.hpp │ │ ├── laswriteitemraw.hpp │ │ ├── laswritepoint.cpp │ │ ├── laswritepoint.hpp │ │ ├── laswriter.cpp │ │ ├── laswriter_bin.cpp │ │ ├── laswriter_las.cpp │ │ ├── laswriter_qfit.cpp │ │ ├── laswriter_txt.cpp │ │ ├── laszip.cpp │ │ ├── laszip_common_v2.hpp │ │ └── laszipper.cpp ├── nanoflann │ ├── CMakeLists.txt │ └── nanoflann.hpp ├── psimpl │ ├── CMakeLists.txt │ └── psimpl.h ├── rply │ ├── CMakeLists.txt │ ├── license │ ├── rply.c │ └── rply.h ├── spdlog │ ├── .clang-format │ ├── .clang-tidy │ ├── .git-blame-ignore-revs │ ├── .gitattributes │ ├── .github │ │ └── workflows │ │ │ ├── linux.yml │ │ │ ├── macos.yml │ │ │ └── windows.yml │ ├── .gitignore │ ├── CMakeLists.txt │ ├── INSTALL │ ├── LICENSE │ ├── README.md │ ├── appveyor.yml │ ├── bench │ │ ├── CMakeLists.txt │ │ ├── async_bench.cpp │ │ ├── bench.cpp │ │ ├── formatter-bench.cpp │ │ ├── latency.cpp │ │ └── utils.h │ ├── cmake │ │ ├── ide.cmake │ │ ├── pch.h.in │ │ ├── spdlog.pc.in │ │ ├── spdlogCPack.cmake │ │ ├── spdlogConfig.cmake.in │ │ ├── utils.cmake │ │ └── version.rc.in │ ├── example │ │ ├── CMakeLists.txt │ │ └── example.cpp │ ├── include │ │ └── spdlog │ │ │ ├── async.h │ │ │ ├── async_logger-inl.h │ │ │ ├── async_logger.h │ │ │ ├── cfg │ │ │ ├── argv.h │ │ │ ├── env.h │ │ │ ├── helpers-inl.h │ │ │ └── helpers.h │ │ │ ├── common-inl.h │ │ │ ├── common.h │ │ │ ├── details │ │ │ ├── backtracer-inl.h │ │ │ ├── backtracer.h │ │ │ ├── circular_q.h │ │ │ ├── console_globals.h │ │ │ ├── file_helper-inl.h │ │ │ ├── file_helper.h │ │ │ ├── fmt_helper.h │ │ │ ├── log_msg-inl.h │ │ │ ├── log_msg.h │ │ │ ├── log_msg_buffer-inl.h │ │ │ ├── log_msg_buffer.h │ │ │ ├── mpmc_blocking_q.h │ │ │ ├── null_mutex.h │ │ │ ├── os-inl.h │ │ │ ├── os.h │ │ │ ├── periodic_worker-inl.h │ │ │ ├── periodic_worker.h │ │ │ ├── registry-inl.h │ │ │ ├── registry.h │ │ │ ├── synchronous_factory.h │ │ │ ├── tcp_client-windows.h │ │ │ ├── tcp_client.h │ │ │ ├── thread_pool-inl.h │ │ │ ├── thread_pool.h │ │ │ ├── udp_client-windows.h │ │ │ ├── udp_client.h │ │ │ └── windows_include.h │ │ │ ├── fmt │ │ │ ├── bin_to_hex.h │ │ │ ├── bundled │ │ │ │ ├── args.h │ │ │ │ ├── base.h │ │ │ │ ├── chrono.h │ │ │ │ ├── color.h │ │ │ │ ├── compile.h │ │ │ │ ├── core.h │ │ │ │ ├── fmt.license.rst │ │ │ │ ├── format-inl.h │ │ │ │ ├── format.h │ │ │ │ ├── locale.h │ │ │ │ ├── os.h │ │ │ │ ├── ostream.h │ │ │ │ ├── printf.h │ │ │ │ ├── ranges.h │ │ │ │ ├── std.h │ │ │ │ └── xchar.h │ │ │ ├── chrono.h │ │ │ ├── compile.h │ │ │ ├── fmt.h │ │ │ ├── ostr.h │ │ │ ├── ranges.h │ │ │ ├── std.h │ │ │ └── xchar.h │ │ │ ├── formatter.h │ │ │ ├── fwd.h │ │ │ ├── logger-inl.h │ │ │ ├── logger.h │ │ │ ├── mdc.h │ │ │ ├── pattern_formatter-inl.h │ │ │ ├── pattern_formatter.h │ │ │ ├── sinks │ │ │ ├── android_sink.h │ │ │ ├── ansicolor_sink-inl.h │ │ │ ├── ansicolor_sink.h │ │ │ ├── base_sink-inl.h │ │ │ ├── base_sink.h │ │ │ ├── basic_file_sink-inl.h │ │ │ ├── basic_file_sink.h │ │ │ ├── callback_sink.h │ │ │ ├── daily_file_sink.h │ │ │ ├── dist_sink.h │ │ │ ├── dup_filter_sink.h │ │ │ ├── hourly_file_sink.h │ │ │ ├── kafka_sink.h │ │ │ ├── mongo_sink.h │ │ │ ├── msvc_sink.h │ │ │ ├── null_sink.h │ │ │ ├── ostream_sink.h │ │ │ ├── qt_sinks.h │ │ │ ├── ringbuffer_sink.h │ │ │ ├── rotating_file_sink-inl.h │ │ │ ├── rotating_file_sink.h │ │ │ ├── sink-inl.h │ │ │ ├── sink.h │ │ │ ├── stdout_color_sinks-inl.h │ │ │ ├── stdout_color_sinks.h │ │ │ ├── stdout_sinks-inl.h │ │ │ ├── stdout_sinks.h │ │ │ ├── syslog_sink.h │ │ │ ├── systemd_sink.h │ │ │ ├── tcp_sink.h │ │ │ ├── udp_sink.h │ │ │ ├── win_eventlog_sink.h │ │ │ ├── wincolor_sink-inl.h │ │ │ └── wincolor_sink.h │ │ │ ├── spdlog-inl.h │ │ │ ├── spdlog.h │ │ │ ├── stopwatch.h │ │ │ ├── tweakme.h │ │ │ └── version.h │ ├── logos │ │ ├── jetbrains-variant-4.svg │ │ └── spdlog.png │ ├── scripts │ │ ├── ci_setup_clang.sh │ │ ├── extract_version.py │ │ └── format.sh │ ├── src │ │ ├── async.cpp │ │ ├── bundled_fmtlib_format.cpp │ │ ├── cfg.cpp │ │ ├── color_sinks.cpp │ │ ├── file_sinks.cpp │ │ ├── spdlog.cpp │ │ └── stdout_sinks.cpp │ └── tests │ │ ├── CMakeLists.txt │ │ ├── includes.h │ │ ├── main.cpp │ │ ├── test_async.cpp │ │ ├── test_backtrace.cpp │ │ ├── test_bin_to_hex.cpp │ │ ├── test_cfg.cpp │ │ ├── test_circular_q.cpp │ │ ├── test_create_dir.cpp │ │ ├── test_custom_callbacks.cpp │ │ ├── test_daily_logger.cpp │ │ ├── test_dup_filter.cpp │ │ ├── test_errors.cpp │ │ ├── test_eventlog.cpp │ │ ├── test_file_helper.cpp │ │ ├── test_file_logging.cpp │ │ ├── test_fmt_helper.cpp │ │ ├── test_macros.cpp │ │ ├── test_misc.cpp │ │ ├── test_mpmc_q.cpp │ │ ├── test_pattern_formatter.cpp │ │ ├── test_registry.cpp │ │ ├── test_sink.h │ │ ├── test_stdout_api.cpp │ │ ├── test_stopwatch.cpp │ │ ├── test_systemd.cpp │ │ ├── test_time_point.cpp │ │ ├── utils.cpp │ │ └── utils.h └── spdmon │ ├── .clang-format │ ├── .clang-tidy │ ├── .gitattributes │ ├── .gitignore │ ├── .gitmodules │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── benchmark │ ├── CMakeLists.txt │ └── src │ │ ├── main_benchmark.cpp │ │ └── utils.hpp │ ├── cmake │ ├── CompilerWarnings.cmake │ ├── Conan.cmake │ ├── Doxygen.cmake │ ├── SourcesAndHeaders.cmake │ ├── StandardSettings.cmake │ ├── StaticAnalyzers.cmake │ ├── Utils.cmake │ ├── Vcpkg.cmake │ ├── cpplint.cmake │ ├── spdmonConfig.cmake.in │ └── version.hpp.in │ ├── include │ └── spdmon │ │ ├── spdmon.hpp │ │ └── version.hpp │ ├── scripts │ ├── runClangFormat.sh │ └── runCpplint.sh │ ├── src │ ├── CPPLINT.cfg │ └── example.cpp │ └── test │ ├── CMakeLists.txt │ └── src │ └── main_test.cpp ├── include └── lvr2 │ ├── algorithm │ ├── BaseBufferManipulators.hpp │ ├── ChunkBuilder.hpp │ ├── ChunkHashGrid.hpp │ ├── ChunkHashGrid.tcc │ ├── ChunkManager.hpp │ ├── ChunkManager.tcc │ ├── ChunkingPipeline.hpp │ ├── ChunkingPipeline.tcc │ ├── CleanupAlgorithms.hpp │ ├── CleanupAlgorithms.tcc │ ├── ClusterAlgorithms.hpp │ ├── ClusterAlgorithms.tcc │ ├── ClusterPainter.hpp │ ├── ClusterPainter.tcc │ ├── ColorAlgorithms.hpp │ ├── ColorAlgorithms.tcc │ ├── ContourAlgorithms.hpp │ ├── ContourAlgorithms.tcc │ ├── FinalizeAlgorithms.hpp │ ├── FinalizeAlgorithms.tcc │ ├── GeometryAlgorithms.hpp │ ├── GeometryAlgorithms.tcc │ ├── HLODTree.hpp │ ├── HLODTree.tcc │ ├── KDTree.hpp │ ├── KDTree.tcc │ ├── Materializer.hpp │ ├── Materializer.tcc │ ├── NormalAlgorithms.hpp │ ├── NormalAlgorithms.tcc │ ├── RaycastingTexturizer.hpp │ ├── RaycastingTexturizer.tcc │ ├── ReductionAlgorithms.hpp │ ├── ReductionAlgorithms.tcc │ ├── SpectralTexturizer.hpp │ ├── SpectralTexturizer.tcc │ ├── Tesselator.hpp │ ├── Tesselator.tcc │ ├── Texturizer.hpp │ ├── Texturizer.tcc │ ├── UtilAlgorithms.hpp │ ├── UtilAlgorithms.tcc │ ├── pmp │ │ ├── BarycentricCoordinates.h │ │ ├── DifferentialGeometry.h │ │ ├── DistancePointTriangle.h │ │ ├── Heap.h │ │ ├── NormalCone.h │ │ ├── Quadric.h │ │ ├── SurfaceCurvature.h │ │ ├── SurfaceFactory.h │ │ ├── SurfaceFairing.h │ │ ├── SurfaceFeatures.h │ │ ├── SurfaceGeodesic.h │ │ ├── SurfaceHoleFilling.h │ │ ├── SurfaceNormals.h │ │ ├── SurfaceParameterization.h │ │ ├── SurfaceRemeshing.h │ │ ├── SurfaceSimplification.h │ │ ├── SurfaceSmoothing.h │ │ ├── SurfaceSubdivision.h │ │ ├── SurfaceTriangulation.h │ │ └── TriangleKdTree.h │ └── raycasting │ │ ├── BVHRaycaster.hpp │ │ ├── BVHRaycaster.tcc │ │ ├── CLRaycaster.hpp │ │ ├── CLRaycaster.tcc │ │ ├── EmbreeRaycaster.hpp │ │ ├── EmbreeRaycaster.tcc │ │ ├── Intersection.hpp │ │ ├── RaycasterBase.hpp │ │ ├── RaycasterBase.tcc │ │ └── opencl │ │ ├── cast_rays.cl │ │ └── cast_rays_bvh.cl │ ├── attrmaps │ ├── AttrMaps.hpp │ ├── AttributeMap.hpp │ ├── AttributeMap.tcc │ ├── HashMap.hpp │ ├── HashMap.tcc │ ├── ListMap.hpp │ ├── ListMap.tcc │ ├── StableVector.hpp │ ├── StableVector.tcc │ ├── VectorMap.hpp │ └── VectorMap.tcc │ ├── config │ ├── BaseOption.hpp │ ├── LSROptionsYamlExtensions.hpp │ ├── SLAMOptionsYamlExtensions.hpp │ └── lvropenmp.hpp │ ├── display │ ├── Arrow.hpp │ ├── BOct.hpp │ ├── Color.hpp │ ├── CoordinateAxes.hpp │ ├── GlTexture.hpp │ ├── Grid.hpp │ ├── GroundPlane.hpp │ ├── InteractivePointCloud.hpp │ ├── MemoryHandler.hpp │ ├── MeshCluster.hpp │ ├── MeshOctree.hpp │ ├── MeshOctree.tcc │ ├── MultiPointCloud.hpp │ ├── PointCloud.hpp │ ├── PointCorrespondences.hpp │ ├── PointOctree.hpp │ ├── PointOctree.tcc │ ├── Renderable.hpp │ ├── StaticMesh.hpp │ └── TexturedMesh.hpp │ ├── geometry │ ├── BVH.hpp │ ├── BVH.tcc │ ├── BaseMesh.hpp │ ├── BaseMesh.tcc │ ├── BaseVector.hpp │ ├── BaseVector.tcc │ ├── BoundingBox.hpp │ ├── BoundingBox.tcc │ ├── BoundingRectangle.hpp │ ├── BoundingRectangle.tcc │ ├── ColorVertex.hpp │ ├── HalfEdge.hpp │ ├── HalfEdgeFace.hpp │ ├── HalfEdgeMesh.hpp │ ├── HalfEdgeMesh.tcc │ ├── HalfEdgeVertex.hpp │ ├── Handles.hpp │ ├── LBPointArray.hpp │ ├── LBPointArray.tcc │ ├── LazyMesh.hpp │ ├── LazyMesh.tcc │ ├── Line.hpp │ ├── Line.tcc │ ├── Matrix4.hpp │ ├── Normal.hpp │ ├── Normal.tcc │ ├── PMPMesh.hpp │ ├── PMPMesh.tcc │ ├── Plane.hpp │ ├── Plane.tcc │ ├── Quaternion.hpp │ ├── Quaternion.tcc │ ├── SoilAssistField.hpp │ ├── SoilAssistSubField.hpp │ └── pmp │ │ ├── BoundingBox.h │ │ ├── Exceptions.h │ │ ├── MatVec.h │ │ ├── MemoryUsage.h │ │ ├── Properties.h │ │ ├── SurfaceMesh.h │ │ ├── SurfaceMeshIO.h │ │ ├── Timer.h │ │ ├── Types.h │ │ └── Version.h │ ├── io │ ├── AttributeMeshIOBase.hpp │ ├── AttributeMeshIOBase.tcc │ ├── ChunkIO.hpp │ ├── DataStruct.hpp │ ├── GridIO.hpp │ ├── GroupedChannelIO.hpp │ ├── LineReader.hpp │ ├── MeshGeometryIO.hpp │ ├── ModelFactory.hpp │ ├── PlutoMapIO.hpp │ ├── PlutoMapIO.tcc │ ├── ScanDirectoryParser.hpp │ ├── Tiles3dIO.hpp │ ├── Tiles3dIO.tcc │ ├── YAML.hpp │ ├── baseio │ │ ├── ArrayIO.hpp │ │ ├── ArrayIO.tcc │ │ ├── BaseIO.hpp │ │ ├── BaseIO.tcc │ │ ├── ChannelIO.hpp │ │ ├── ChannelIO.tcc │ │ ├── MatrixIO.hpp │ │ ├── MatrixIO.tcc │ │ ├── MetaIO.hpp │ │ ├── MetaIO.tcc │ │ ├── VariantChannelIO.hpp │ │ ├── VariantChannelIO.tcc │ │ └── yaml │ │ │ ├── AABB.hpp │ │ │ └── Matrix.hpp │ ├── deprecated │ │ ├── KinectGrabber.hpp │ │ ├── KinectIO.hpp │ │ └── hdf5 │ │ │ ├── ArrayIO.hpp │ │ │ ├── ArrayIO.tcc │ │ │ ├── ChannelIO.hpp │ │ │ ├── ChannelIO.tcc │ │ │ ├── ChunkIO.hpp │ │ │ ├── ChunkIO.tcc │ │ │ ├── HDF5FeatureBase.hpp │ │ │ ├── HDF5FeatureBase.tcc │ │ │ ├── HyperspectralCameraIO.hpp │ │ │ ├── HyperspectralCameraIO.tcc │ │ │ ├── ImageIO.hpp │ │ │ ├── ImageIO.tcc │ │ │ ├── MatrixIO.hpp │ │ │ ├── MatrixIO.tcc │ │ │ ├── MeshIO.hpp │ │ │ ├── MeshIO.tcc │ │ │ ├── PointCloudIO.hpp │ │ │ ├── PointCloudIO.tcc │ │ │ ├── ScanCameraIO.hpp │ │ │ ├── ScanCameraIO.tcc │ │ │ ├── ScanIO.hpp │ │ │ ├── ScanIO.tcc │ │ │ ├── ScanImageIO.hpp │ │ │ ├── ScanImageIO.tcc │ │ │ ├── ScanPositionIO.hpp │ │ │ ├── ScanPositionIO.tcc │ │ │ ├── ScanProjectIO.hpp │ │ │ ├── ScanProjectIO.tcc │ │ │ ├── VariantChannelIO.hpp │ │ │ └── VariantChannelIO.tcc │ ├── kernels │ │ ├── DirectoryKernel.hpp │ │ ├── FileKernel.hpp │ │ ├── FileKernel.tcc │ │ ├── HDF5Kernel.hpp │ │ └── HDF5Kernel.tcc │ ├── meshio │ │ ├── ArrayMeta.hpp │ │ ├── ClusterIO.hpp │ │ ├── ClusterIO.tcc │ │ ├── DirectoryIO.hpp │ │ ├── FaceIO.hpp │ │ ├── FaceIO.tcc │ │ ├── HDF5IO.hpp │ │ ├── MaterialIO.hpp │ │ ├── MaterialIO.tcc │ │ ├── MeshIO.hpp │ │ ├── MeshIO.tcc │ │ ├── TextureIO.hpp │ │ ├── TextureIO.tcc │ │ └── yaml │ │ │ ├── ArrayMeta.hpp │ │ │ ├── Material.hpp │ │ │ └── Texture.hpp │ ├── modelio │ │ ├── AsciiIO.hpp │ │ ├── B3dmIO.hpp │ │ ├── DatIO.hpp │ │ ├── DracoDecoder.hpp │ │ ├── DracoEncoder.hpp │ │ ├── DrcIO.hpp │ │ ├── GeoTIFFIO.hpp │ │ ├── LasIO.hpp │ │ ├── ModelIOBase.hpp │ │ ├── ObjIO.hpp │ │ ├── PCDIO.hpp │ │ ├── PLYIO.hpp │ │ ├── PPMIO.hpp │ │ ├── RdbxIO.hpp │ │ ├── RxpIO.hpp │ │ ├── STLIO.hpp │ │ ├── UosIO.hpp │ │ └── WaveformIO.hpp │ ├── scanio │ │ ├── CameraIO.hpp │ │ ├── CameraIO.tcc │ │ ├── CameraImageGroupIO.hpp │ │ ├── CameraImageGroupIO.tcc │ │ ├── CameraImageIO.hpp │ │ ├── CameraImageIO.tcc │ │ ├── ChunkIO.hpp │ │ ├── ChunkIO.tcc │ │ ├── DirectoryDataIO.hpp │ │ ├── DirectoryDataIO.tcc │ │ ├── DirectoryIO.hpp │ │ ├── HDF5IO.hpp │ │ ├── HyperspectralCameraIO.hpp │ │ ├── HyperspectralCameraIO.tcc │ │ ├── HyperspectralPanoramaChannelIO.hpp │ │ ├── HyperspectralPanoramaChannelIO.tcc │ │ ├── HyperspectralPanoramaIO.hpp │ │ ├── HyperspectralPanoramaIO.tcc │ │ ├── ImageIO.hpp │ │ ├── ImageIO.tcc │ │ ├── LIDARIO.hpp │ │ ├── LIDARIO.tcc │ │ ├── LabelHDF5IO.hpp │ │ ├── LabelIO.hpp │ │ ├── LabelIO.tcc │ │ ├── LabelScanProjectIO.hpp │ │ ├── LabelScanProjectIO.tcc │ │ ├── MetaFormatFactory.hpp │ │ ├── PointCloudIO.hpp │ │ ├── PointCloudIO.tcc │ │ ├── PolygonIO.hpp │ │ ├── PolygonIO.tcc │ │ ├── ScanIO.hpp │ │ ├── ScanIO.tcc │ │ ├── ScanPositionIO.hpp │ │ ├── ScanPositionIO.tcc │ │ ├── ScanProjectIO.hpp │ │ ├── ScanProjectIO.tcc │ │ ├── WaveformIO.hpp │ │ ├── WaveformIO.tcc │ │ └── yaml │ │ │ ├── Camera.hpp │ │ │ ├── CameraImage.hpp │ │ │ ├── CameraModels.hpp │ │ │ ├── HyperspectralCamera.hpp │ │ │ ├── LIDAR.hpp │ │ │ ├── Label.hpp │ │ │ ├── Scan.hpp │ │ │ ├── ScanPosition.hpp │ │ │ ├── ScanProject.hpp │ │ │ ├── VariantChannel.hpp │ │ │ └── Waveform.hpp │ └── schema │ │ ├── LabelScanProjectSchemaHDF5V2.hpp │ │ ├── MeshSchema.hpp │ │ ├── MeshSchemaDirectory.hpp │ │ ├── MeshSchemaHDF5.hpp │ │ ├── ScanProjectSchema.hpp │ │ ├── ScanProjectSchemaEuRoC.hpp │ │ ├── ScanProjectSchemaHDF5.hpp │ │ ├── ScanProjectSchemaHDF5V2.hpp │ │ ├── ScanProjectSchemaHyperlib.hpp │ │ ├── ScanProjectSchemaRaw.hpp │ │ ├── ScanProjectSchemaRdbx.hpp │ │ └── ScanProjectSchemaSlam6D.hpp │ ├── reconstruction │ ├── AdaptiveKSearchSurface.hpp │ ├── AdaptiveKSearchSurface.tcc │ ├── BigGrid.hpp │ ├── BigGrid.tcc │ ├── BigGridKdTree.hpp │ ├── BigGridKdTree.tcc │ ├── BigVolumen.hpp │ ├── BigVolumen.tcc │ ├── BilinearFastBox.hpp │ ├── BilinearFastBox.tcc │ ├── CellHandle.hh │ ├── CudaKSearchSurface.hpp │ ├── CudaKSearchSurface.tcc │ ├── DMCPointHandle.hpp │ ├── DMCReconstruction.hpp │ ├── DMCReconstruction.tcc │ ├── DMCVecPointHandle.hpp │ ├── DMCVecPointHandle.tcc │ ├── DualOctree.hpp │ ├── DualOctree.tcc │ ├── ExtendedMCTable.hpp │ ├── FastBox.hpp │ ├── FastBox.tcc │ ├── FastBoxTables.hpp │ ├── FastReconstruction.hpp │ ├── FastReconstruction.tcc │ ├── FastReconstructionTables.hpp │ ├── HashGrid.hpp │ ├── HashGrid.tcc │ ├── LBKdTree.hpp │ ├── LargeScaleReconstruction.hpp │ ├── LargeScaleReconstruction.tcc │ ├── LocalApproximation.hpp │ ├── Location.hh │ ├── MCTable.hpp │ ├── MeshGenerator.hpp │ ├── ModelToImage.hpp │ ├── NodeData.hpp │ ├── NodeData.tcc │ ├── Octree.hpp │ ├── OctreeTables.hpp │ ├── PCLFiltering.hpp │ ├── PanoramaNormals.hpp │ ├── PointsetGrid.hpp │ ├── PointsetGrid.tcc │ ├── PointsetMeshGenerator.hpp │ ├── PointsetSurface.hpp │ ├── PointsetSurface.tcc │ ├── Projection.hpp │ ├── QueryPoint.hpp │ ├── QueryPoint.tcc │ ├── SearchTree.hpp │ ├── SearchTree.tcc │ ├── SearchTreeFlann.hpp │ ├── SearchTreeFlann.tcc │ ├── SearchTreeLBVH.hpp │ ├── SearchTreeLBVH.tcc │ ├── SharpBox.hpp │ ├── SharpBox.tcc │ ├── TetraederBox.hpp │ ├── TetraederBox.tcc │ ├── TetraederTables.hpp │ ├── VirtualGrid.hpp │ ├── VirtualGrid.tcc │ ├── cuda │ │ ├── CudaSurface.hpp │ │ ├── LBVHIndex.hpp │ │ └── lbvh │ │ │ ├── GPUErrorCheck.h │ │ │ ├── aabb.cuh │ │ │ ├── lbvh.cuh │ │ │ ├── lbvh_kernels.cuh │ │ │ ├── morton_code.cuh │ │ │ ├── normals_kernel.cuh │ │ │ ├── query.cuh │ │ │ ├── query_knn.cuh │ │ │ ├── static_priorityqueue.cuh │ │ │ └── vec_math.h │ ├── gs2 │ │ ├── DynamicKDTree.hpp │ │ ├── DynamicKDTree.tcc │ │ ├── GrowingCellStructure.hpp │ │ ├── GrowingCellStructure.tcc │ │ ├── TumbleTree.hpp │ │ └── TumbleTree.tcc │ ├── largescale │ │ └── LargeScaleReconstructionBase.hpp │ ├── metrics │ │ ├── DMCReconstructionMetric.hpp │ │ ├── DMCStepMetric.hpp │ │ ├── MSRMetric.hpp │ │ ├── MSRMetric.tcc │ │ ├── OneSidedHausdorffMetric.hpp │ │ ├── OneSidedHausdorffMetric.tcc │ │ ├── SymmetricHausdorffMetric.hpp │ │ └── SymmetricHausdorffMetric.tcc │ └── opencl │ │ ├── ClStatisticalOutlierFilter.hpp │ │ ├── ClSurface.hpp │ │ └── cl_helper.h │ ├── registration │ ├── EigenSVDPointAlign.hpp │ ├── EigenSVDPointAlign.tcc │ ├── FPFH.hpp │ ├── GraphSLAM.hpp │ ├── ICPPointAlign.hpp │ ├── Metascan.hpp │ ├── OctreeReduction.hpp │ ├── ReductionAlgorithm.hpp │ ├── RegistrationPipeline.hpp │ ├── SLAMAlign.hpp │ ├── SLAMOptions.hpp │ └── SLAMScanWrapper.hpp │ ├── texture │ ├── ClusterTexCoordMapping.hpp │ ├── Material.hpp │ ├── Texture.hpp │ ├── TextureFactory.hpp │ ├── Triangle.hpp │ └── Triangle.tcc │ ├── types │ ├── BaseBuffer.hpp │ ├── BaseBuffer.tcc │ ├── ByteEncoding.hpp │ ├── CameraModels.hpp │ ├── Channel.hpp │ ├── Channel.tcc │ ├── ColorTypes.hpp │ ├── CustomChannelTypes.hpp │ ├── DistortionModels.hpp │ ├── DistortionModels.tcc │ ├── ElementProxy.hpp │ ├── LabelBuffer.hpp │ ├── MatrixTypes.hpp │ ├── MeshBuffer.hpp │ ├── Model.hpp │ ├── MultiChannelMap.hpp │ ├── PointBuffer.hpp │ ├── PolygonBuffer.hpp │ ├── ScanTypes.hpp │ ├── Variant.hpp │ ├── Variant.tcc │ ├── VariantChannel.hpp │ ├── VariantChannel.tcc │ ├── VariantChannelMap.hpp │ ├── VariantChannelMap.tcc │ └── WaveformBuffer.hpp │ └── util │ ├── BaseHandle.hpp │ ├── CLUtil.hpp │ ├── Cluster.hpp │ ├── ClusterBiMap.hpp │ ├── ClusterBiMap.tcc │ ├── ColorGradient.hpp │ ├── ConvertShared.hpp │ ├── CoordinateTransform.hpp │ ├── Debug.hpp │ ├── Debug.tcc │ ├── Factories.hpp │ ├── Factories.tcc │ ├── Hdf5Util.hpp │ ├── Hdf5Util.tcc │ ├── IOUtils.hpp │ ├── IOUtils.tcc │ ├── Logging.hpp │ ├── Meap.hpp │ ├── Meap.tcc │ ├── Panic.hpp │ ├── Progress.hpp │ ├── Random.hpp │ ├── Random.tcc │ ├── ScanProjectUtils.hpp │ ├── ScanSchemaUtils.hpp │ ├── Synthetic.hpp │ ├── Timestamp.hpp │ ├── TransformUtils.hpp │ ├── TransformUtils.tcc │ ├── Tuple.hpp │ ├── Util.hpp │ └── YAMLUtil.hpp ├── notes.txt ├── package.xml ├── spack_modules.bash └── src ├── liblvr2 ├── CMakeLists.txt ├── algorithm │ ├── ChunkBuilder.cpp │ ├── ChunkHashGrid.cpp │ ├── ChunkManager.cpp │ ├── HLODTree.cpp │ ├── UtilAlgorithms.cpp │ ├── pmp │ │ ├── DifferentialGeometry.cpp │ │ ├── DistancePointTriangle.cpp │ │ ├── SurfaceCurvature.cpp │ │ ├── SurfaceFactory.cpp │ │ ├── SurfaceFairing.cpp │ │ ├── SurfaceFeatures.cpp │ │ ├── SurfaceGeodesic.cpp │ │ ├── SurfaceHoleFilling.cpp │ │ ├── SurfaceNormals.cpp │ │ ├── SurfaceParameterization.cpp │ │ ├── SurfaceRemeshing.cpp │ │ ├── SurfaceSimplification.cpp │ │ ├── SurfaceSmoothing.cpp │ │ ├── SurfaceSubdivision.cpp │ │ ├── SurfaceTriangulation.cpp │ │ └── TriangleKdTree.cpp │ └── raycasting │ │ └── EmbreeRaycaster.cpp ├── config │ ├── BaseOption.cpp │ └── lvropenmp.cpp ├── display │ ├── Arrow.cpp │ ├── Color.cpp │ ├── CoordinateAxes.cpp │ ├── GlTexture.cpp │ ├── Grid.cpp │ ├── GroundPlane.cpp │ ├── InteractivePointCloud.cpp │ ├── MeshCluster.cpp │ ├── MultiPointCloud.cpp │ ├── PointCloud.cpp │ ├── PointCorrespondences.cpp │ ├── Renderable.cpp │ ├── StaticMesh.cpp │ └── TexturedMesh.cpp ├── geometry │ ├── SoilAssistField.cpp │ ├── SoilAssistSubField.cpp │ └── pmp │ │ ├── SurfaceMesh.cpp │ │ └── SurfaceMeshIO.cpp ├── io │ ├── AttributeMeshIOBase.cpp │ ├── ChunkIO.cpp │ ├── GridIO.cpp │ ├── HDF5IO.cpp │ ├── KinectGrabber.cpp │ ├── KinectIO.cpp │ ├── LineReader.cpp │ ├── ModelFactory.cpp │ ├── ScanDataManager.cpp │ ├── ScanDirectoryParser.cpp │ ├── Tiles3dIO.cpp │ ├── baseio │ │ └── yaml │ │ │ └── Matrix.cpp │ ├── kernels │ │ ├── DirectoryKernel.cpp │ │ └── HDF5Kernel.cpp │ ├── modelio │ │ ├── AsciiIO.cpp │ │ ├── B3dmIO.cpp │ │ ├── DatIO.cpp │ │ ├── DracoDecoder.cpp │ │ ├── DracoEncoder.cpp │ │ ├── DrcIO.cpp │ │ ├── GeoTIFFIO.cpp │ │ ├── LasIO.cpp │ │ ├── ModelIOBase.cpp │ │ ├── ObjIO.cpp │ │ ├── PCDIO.cpp │ │ ├── PLYIO.cpp │ │ ├── PPMIO.cpp │ │ ├── RdbxIO.cpp │ │ ├── RxpIO.cpp │ │ ├── STLIO.cpp │ │ ├── UosIO.cpp │ │ └── WaveformIO.cpp │ ├── scanio │ │ ├── DirectoryDataIO.cpp │ │ ├── LabelHDF5IO.cpp │ │ ├── MetaFormatFactory.cpp │ │ └── ScanProjectManager.cpp │ └── schema │ │ ├── LabelScanProjectSchemaHDF5V2.cpp │ │ ├── MeshSchemaDirectory.cpp │ │ ├── MeshSchemaHDF5.cpp │ │ ├── ScanProjectSchema.cpp │ │ ├── ScanProjectSchemaEuRoC.cpp │ │ ├── ScanProjectSchemaHDF5.cpp │ │ ├── ScanProjectSchemaHDF5V2.cpp │ │ ├── ScanProjectSchemaHyperlib.cpp │ │ ├── ScanProjectSchemaRaw.cpp │ │ ├── ScanProjectSchemaRdbx.cpp │ │ └── ScanProjectSchemaSlam6D.cpp ├── reconstruction │ ├── LBKdTree.cpp │ ├── ModelToImage.cpp │ ├── PCLFiltering.cpp │ ├── PanoramaNormals.cpp │ ├── Projection.cpp │ ├── cuda │ │ ├── CudaSurface.cu │ │ ├── LBVHIndex.cu │ │ └── lbvh │ │ │ ├── knn_normals_kernel.cu │ │ │ ├── lbvh_kernels.cu │ │ │ ├── morton_code.cu │ │ │ ├── normals_kernel.cu │ │ │ └── query_knn_kernels.cu │ └── opencl │ │ ├── ClStatisticalOutlierFilter.cpp │ │ └── ClSurface.cpp ├── registration │ ├── FPFH.cpp │ ├── GraphSLAM.cpp │ ├── ICPPointAlign.cpp │ ├── Metascan.cpp │ ├── NearestCenterOctreeReduction.cpp │ ├── RandomSampleOctreeReduction.cpp │ ├── RegistrationPipeline.cpp │ ├── SLAMAlign.cpp │ └── SLAMScanWrapper.cpp ├── texture │ ├── Texture.cpp │ └── TextureFactory.cpp ├── types │ ├── CustomChannelTypes.cpp │ ├── DistortionModels.cpp │ ├── LabelBuffer.cpp │ ├── MeshBuffer.cpp │ ├── PointBuffer.cpp │ ├── PolygonBuffer.cpp │ └── WaveformBuffer.cpp └── util │ ├── ColorGradient.cpp │ ├── CoordinateTransform.cpp │ ├── Hdf5Util.cpp │ ├── IOUtils.cpp │ ├── Logging.cpp │ ├── Progress.cpp │ ├── ScanProjectSchemaUtils.cpp │ ├── ScanProjectUtils.cpp │ ├── Synthetic.cpp │ ├── Timestamp.cpp │ └── Util.cpp └── tools ├── lvr2_3dtiles ├── CMakeLists.txt └── Main.cpp ├── lvr2_ascii_viewer ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp ├── Options.hpp ├── include │ └── ascii_viewer │ │ ├── AsciiRenderer.hpp │ │ ├── BitField.hpp │ │ ├── Braille.hpp │ │ └── CursesHelper.hpp └── src │ └── ascii_viewer │ ├── AsciiRenderer.cpp │ └── Braille.cpp ├── lvr2_asciiconverter ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_chunking ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_chunking_server ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_cl_normals ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_cl_sor ├── CMakeLists.txt └── Main.cpp ├── lvr2_cuda_normals ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_dmc_reconstruction ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_fastsense_reconstruction ├── CMakeLists.txt ├── Main.cpp └── tsdf.h ├── lvr2_ground_level_extractor ├── CMakeLists.txt ├── Main.cpp ├── Main.hpp ├── Options.cpp ├── Options.hpp └── README.md ├── lvr2_gs_reconstruction ├── CMakeLists.txt ├── Main.cpp ├── OptionsGS.cpp └── OptionsGS.hpp ├── lvr2_hdf5_builder ├── CMakeLists.txt ├── HDF5Tool.cpp ├── Options.cpp └── Options.hpp ├── lvr2_hdf5_builder_2 ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_hdf5_convert_old ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp ├── Options.hpp ├── include │ ├── Hdf5ReaderOld.hpp │ ├── Logging.hpp │ ├── Logging.tcc │ └── ScanTypesCompare.hpp └── src │ ├── Hdf5ReaderOld.cpp │ ├── Logging.cpp │ └── ScanTypesCompare.cpp ├── lvr2_hdf5_inspect ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_hdf5_mesh_tool ├── CMakeLists.txt ├── HDF5MeshTool.cpp ├── Options.cpp └── Options.hpp ├── lvr2_hdf5togeotiff ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp ├── Options.hpp ├── README.md └── scripts │ ├── __init__.py │ ├── create_png.py │ ├── normalize.py │ └── normalize_multiple.py ├── lvr2_image_normals ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_kaboom ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_largescale_reconstruct ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp ├── Options.hpp └── README.md ├── lvr2_largescale_reconstruct_mpi ├── CMakeLists.txt ├── LargeScaleOptions.cpp ├── LargeScaleOptions.hpp ├── Main.cpp ├── Options.cpp ├── Options.hpp └── README.md ├── lvr2_mesh_reducer ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_octree_test ├── CMakeLists.txt └── Main.cpp ├── lvr2_plymerger ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_reconstruct ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_registration ├── CMakeLists.txt └── Main.cpp ├── lvr2_riegl_project_converter ├── CMakeLists.txt ├── Options.cpp ├── Options.hpp ├── RieglProject.cpp ├── RieglProject.hpp └── main.cpp ├── lvr2_scanproject_parser ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_slam2hdf5 ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_slam6d_merger ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_transform ├── CMakeLists.txt ├── Main.cpp ├── Options.cpp └── Options.hpp ├── lvr2_viewer ├── CMakeLists.txt ├── NOTES ├── app │ ├── LVRMain.cpp │ ├── LVRMainWindow.cpp │ ├── LVRMainWindow.hpp │ ├── LVRTreeWidgetHelper.cpp │ ├── LVRTreeWidgetHelper.hpp │ ├── Options.cpp │ └── Options.hpp ├── log.txt ├── res │ ├── contrast.png │ ├── contrast_decrease.png │ ├── contrast_increase.png │ ├── down.png │ ├── drive.png │ ├── export.png │ ├── folder_add.png │ ├── icons.svg │ ├── page_white_camera.png │ ├── player.png │ ├── qv_addclass.png │ ├── qv_animation.png │ ├── qv_createMesh.png │ ├── qv_delete.png │ ├── qv_edm.png │ ├── qv_export.png │ ├── qv_flight.png │ ├── qv_fog.png │ ├── qv_fogsettings.png │ ├── qv_histogram.png │ ├── qv_import.png │ ├── qv_instance.png │ ├── qv_labeling.png │ ├── qv_labeltool.png │ ├── qv_lassoTool.png │ ├── qv_mesh_texture_icon.png │ ├── qv_mesh_tree_icon.png │ ├── qv_model_tree_icon.png │ ├── qv_pc_tree_icon.png │ ├── qv_play_add.png │ ├── qv_play_animate.png │ ├── qv_play_delete.png │ ├── qv_play_first.png │ ├── qv_play_last.png │ ├── qv_play_next.png │ ├── qv_play_prev.png │ ├── qv_point.png │ ├── qv_pointNormals.png │ ├── qv_points.png │ ├── qv_polygonTool.png │ ├── qv_rendering.png │ ├── qv_scandata_tree_icon.png │ ├── qv_screenshot.png │ ├── qv_segmentin.png │ ├── qv_segmentout.png │ ├── qv_selectack.png │ ├── qv_selectcancel.png │ ├── qv_selectlasso.png │ ├── qv_selectpoly.png │ ├── qv_shooter.png │ ├── qv_showSelection.png │ ├── qv_showall.png │ ├── qv_spectralchannel.png │ ├── qv_spectralsettings.png │ ├── qv_surfaces.png │ ├── qv_toggleselect.png │ ├── qv_trackball.png │ ├── qv_transform.png │ ├── qv_transform_tree_icon.png │ ├── qv_vertices.png │ ├── qv_wireframe.png │ ├── qv_zoom.png │ ├── rotate.png │ ├── tb_delete.png │ ├── tb_left.png │ ├── tb_right.png │ ├── up.png │ ├── viewer.qrc │ └── world.png ├── ui │ ├── LVRAboutDialogUI.ui │ ├── LVRAnimationDialogUI.ui │ ├── LVRBackgroundDialogUI.ui │ ├── LVRClassificationFurnitureRecognitionDialogUI.ui │ ├── LVRClassificationSimplePlaneClassificationDialogUI.ui │ ├── LVRFilteringMLSProjectionDialogUI.ui │ ├── LVRFilteringRemoveOutliersDialogUI.ui │ ├── LVRHistogram.ui │ ├── LVRLabelDialogUI.ui │ ├── LVRMainWindowUI.ui │ ├── LVRMeshOpenDialogUI.ui │ ├── LVROptimizationPlanarOptimizationDialogUI.ui │ ├── LVROptimizationRemoveArtifactsDialogUI.ui │ ├── LVRPointInfo.ui │ ├── LVRPreferencesDialog.ui │ ├── LVRReconstructionComputeTexturesDialogUI.ui │ ├── LVRReconstructionEstimateNormalsDialogUI.ui │ ├── LVRReconstructionExtendedMarchingCubesDialogUI.ui │ ├── LVRReconstructionMarchingCubesDialogUI.ui │ ├── LVRReductionAlgorithmDialogUI.ui │ ├── LVRRegisterViaICPDialogUI.ui │ ├── LVRRegistrationPickCorrespondancesDialogUI.ui │ ├── LVRRenameDialogUI.ui │ ├── LVRScanProjectOpenDialogUI.ui │ ├── LVRTooltipDialogUI.ui │ └── LVRTransformationDialogUI.ui ├── util │ ├── qttf.cpp │ └── qttf.hpp ├── vtkBridge │ ├── LVRBoundingBoxBridge.cpp │ ├── LVRBoundingBoxBridge.hpp │ ├── LVRChunkedMeshBridge.cpp │ ├── LVRChunkedMeshBridge.hpp │ ├── LVRChunkedMeshCuller.cpp │ ├── LVRChunkedMeshCuller.hpp │ ├── LVRInteractorStylePolygonPick.cpp │ ├── LVRInteractorStylePolygonPick.hpp │ ├── LVRLabelBridge.cpp │ ├── LVRLabelBridge.hpp │ ├── LVRLabelInteractor.cpp │ ├── LVRLabelInteractor.hpp │ ├── LVRLabeledScanProjectEditMarkBridge.cpp │ ├── LVRLabeledScanProjectEditMarkBridge.hpp │ ├── LVRMeshBufferBridge.cpp │ ├── LVRMeshBufferBridge.hpp │ ├── LVRModelBridge.cpp │ ├── LVRModelBridge.hpp │ ├── LVRPickingInteractor.cpp │ ├── LVRPickingInteractor.hpp │ ├── LVRPointBufferBridge.cpp │ ├── LVRPointBufferBridge.hpp │ ├── LVRScanCamBridge.cpp │ ├── LVRScanCamBridge.hpp │ ├── LVRScanImageBridge.cpp │ ├── LVRScanImageBridge.hpp │ ├── LVRScanPositionBridge.cpp │ ├── LVRScanPositionBridge.hpp │ ├── LVRScanProjectBridge.cpp │ ├── LVRScanProjectBridge.hpp │ ├── LVRSoilAssistBridge.cpp │ ├── LVRSoilAssistBridge.hpp │ ├── LVRVtkArrow.cpp │ └── LVRVtkArrow.hpp └── widgets │ ├── LVRAnimationDialog.cpp │ ├── LVRAnimationDialog.hpp │ ├── LVRBackgroundDialog.cpp │ ├── LVRBackgroundDialog.hpp │ ├── LVRBoundingBoxItem.cpp │ ├── LVRBoundingBoxItem.hpp │ ├── LVRCamDataItem.cpp │ ├── LVRCamDataItem.hpp │ ├── LVRCameraModelItem.cpp │ ├── LVRCameraModelItem.hpp │ ├── LVRCorrespondanceDialog.cpp │ ├── LVRCorrespondanceDialog.hpp │ ├── LVRCvImageItem.cpp │ ├── LVRCvImageItem.hpp │ ├── LVRExtrinsicsItem.cpp │ ├── LVRExtrinsicsItem.hpp │ ├── LVRFilteringMLSProjectionDialog.cpp │ ├── LVRFilteringMLSProjectionDialog.hpp │ ├── LVRFilteringRemoveOutliersDialog.cpp │ ├── LVRFilteringRemoveOutliersDialog.hpp │ ├── LVRGraphicsView.cpp │ ├── LVRGraphicsView.hpp │ ├── LVRHistogram.cpp │ ├── LVRHistogram.hpp │ ├── LVRImageModelItem.cpp │ ├── LVRImageModelItem.hpp │ ├── LVRItemTypes.hpp │ ├── LVRLabelClassTreeItem.cpp │ ├── LVRLabelClassTreeItem.hpp │ ├── LVRLabelDialog.cpp │ ├── LVRLabelDialog.hpp │ ├── LVRLabelInstanceTreeItem.cpp │ ├── LVRLabelInstanceTreeItem.hpp │ ├── LVRLabelItem.cpp │ ├── LVRLabelItem.hpp │ ├── LVRLabelTreeWidget.cpp │ ├── LVRLabelTreeWidget.hpp │ ├── LVRLabeledScanProjectEditMarkItem.cpp │ ├── LVRLabeledScanProjectEditMarkItem.hpp │ ├── LVRMeshItem.cpp │ ├── LVRMeshItem.hpp │ ├── LVRMeshOpenDialog.cpp │ ├── LVRMeshOpenDialog.hpp │ ├── LVRModelItem.cpp │ ├── LVRModelItem.hpp │ ├── LVRModelTreeWidget.cpp │ ├── LVRModelTreeWidget.hpp │ ├── LVROptimizationPlanarOptimizationDialog.cpp │ ├── LVROptimizationPlanarOptimizationDialog.hpp │ ├── LVROptimizationRemoveArtifactsDialog.cpp │ ├── LVROptimizationRemoveArtifactsDialog.hpp │ ├── LVRPickItem.cpp │ ├── LVRPickItem.hpp │ ├── LVRPlotter.cpp │ ├── LVRPlotter.hpp │ ├── LVRPointCloudItem.cpp │ ├── LVRPointCloudItem.hpp │ ├── LVRPointInfo.cpp │ ├── LVRPointInfo.hpp │ ├── LVRPointcloudSelectionDialog.cpp │ ├── LVRPointcloudSelectionDialog.hpp │ ├── LVRPoseItem.cpp │ ├── LVRPoseItem.hpp │ ├── LVRReconstructionEstimateNormalsDialog.cpp │ ├── LVRReconstructionEstimateNormalsDialog.hpp │ ├── LVRReconstructionExtendedMarchingCubesDialog.cpp │ ├── LVRReconstructionExtendedMarchingCubesDialog.hpp │ ├── LVRReconstructionMarchingCubesDialog.cpp │ ├── LVRReconstructionMarchingCubesDialog.hpp │ ├── LVRRecordedFrameItem.cpp │ ├── LVRRecordedFrameItem.hpp │ ├── LVRReductionAlgorithmDialog.cpp │ ├── LVRReductionAlgorithmDialog.hpp │ ├── LVRRenameDialog.cpp │ ├── LVRRenameDialog.hpp │ ├── LVRScanCamItem.cpp │ ├── LVRScanCamItem.hpp │ ├── LVRScanDataItem.cpp │ ├── LVRScanDataItem.hpp │ ├── LVRScanImageItem.cpp │ ├── LVRScanImageItem.hpp │ ├── LVRScanPositionItem.cpp │ ├── LVRScanPositionItem.hpp │ ├── LVRScanProjectItem.cpp │ ├── LVRScanProjectItem.hpp │ ├── LVRScanProjectOpenDialog.cpp │ ├── LVRScanProjectOpenDialog.hpp │ ├── LVRTextureMeshItem.cpp │ ├── LVRTextureMeshItem.hpp │ ├── LVRTransformationDialog.cpp │ └── LVRTransformationDialog.hpp └── teaser_example ├── CMakeLists.txt ├── Main.cpp ├── Main.h └── util ├── MyMatching.cpp ├── MyMatching.h ├── pointtovertex.cpp └── pointtovertex.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.c text 7 | *.h text 8 | *.hpp text 9 | *.cpp text 10 | *.tcc text 11 | 12 | # Declare files that will always have CRLF line endings on checkout. 13 | *.sln text eol=crlf 14 | 15 | # Denote all files that are truly binary and should not be modified. 16 | *.png binary 17 | *.jpg binary 18 | -------------------------------------------------------------------------------- /.github/workflows/ros-humble.yml: -------------------------------------------------------------------------------- 1 | name: humble 2 | on: 3 | push: 4 | branches: 5 | - 'main' 6 | - 'develop' 7 | - 'humble' 8 | pull_request: 9 | branches: 10 | - 'main' 11 | - 'develop' 12 | - 'humble' 13 | workflow_dispatch: 14 | branches: 15 | - '*' 16 | jobs: 17 | ros_humble: 18 | name: humble 19 | runs-on: ubuntu-22.04 20 | strategy: 21 | fail-fast: false 22 | steps: 23 | - name: Checkout LVR2 24 | uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | 28 | - name: Compile LVR2 in ROS 2 humble WS 29 | uses: 'ros-industrial/industrial_ci@master' 30 | env: 31 | ROS_DISTRO: humble 32 | ROS_REPO: main 33 | AFTER_SCRIPT: cd ~/target_ws && ./build/lvr2/bin/lvr2_reconstruct src/lvr2/dat/scan.pts -------------------------------------------------------------------------------- /.github/workflows/ros-iron.yml: -------------------------------------------------------------------------------- 1 | name: iron 2 | on: 3 | push: 4 | branches: 5 | - 'main' 6 | - 'develop' 7 | - 'iron' 8 | pull_request: 9 | branches: 10 | - 'main' 11 | - 'develop' 12 | - 'iron' 13 | workflow_dispatch: 14 | branches: 15 | - '*' 16 | jobs: 17 | ros_iron: 18 | name: iron 19 | runs-on: ubuntu-22.04 20 | strategy: 21 | fail-fast: false 22 | steps: 23 | - name: Checkout LVR2 24 | uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | 28 | - name: Compile LVR2 in ROS 2 iron WS 29 | uses: 'ros-industrial/industrial_ci@master' 30 | env: 31 | ROS_DISTRO: iron 32 | ROS_REPO: main 33 | AFTER_SCRIPT: cd ~/target_ws && ./build/lvr2/bin/lvr2_reconstruct src/lvr2/dat/scan.pts -------------------------------------------------------------------------------- /.github/workflows/ros-jazzy.yml: -------------------------------------------------------------------------------- 1 | name: jazzy 2 | on: 3 | push: 4 | branches: 5 | - 'main' 6 | - 'develop' 7 | - 'jazzy' 8 | pull_request: 9 | branches: 10 | - 'main' 11 | - 'develop' 12 | - 'jazzy' 13 | workflow_dispatch: 14 | branches: 15 | - '*' 16 | jobs: 17 | ros_jazzy: 18 | name: jazzy 19 | runs-on: ubuntu-24.04 20 | strategy: 21 | fail-fast: false 22 | steps: 23 | - name: Checkout LVR2 24 | uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | 28 | - name: Compile LVR2 in ROS 2 jazzy WS 29 | uses: 'ros-industrial/industrial_ci@master' 30 | env: 31 | ROS_DISTRO: jazzy 32 | ROS_REPO: main 33 | AFTER_SCRIPT: cd ~/target_ws && ./build/lvr2/bin/lvr2_reconstruct src/lvr2/dat/scan.pts -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .configured 2 | # Compiled Object files 3 | *.slo 4 | *.lo 5 | *.o 6 | *.obj 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | # Compiled Dynamic libraries 11 | *.so 12 | *.dylib 13 | *.dll 14 | # Fortran module files 15 | *.mod 16 | # Compiled Static libraries 17 | *.lai 18 | *.la 19 | *.a 20 | *.lib 21 | # Executables 22 | *.exe 23 | *.out 24 | *.appi 25 | # Build Folder 26 | build/ 27 | bin/ 28 | dat/ 29 | doc/ 30 | .idea/ 31 | .codelite/ 32 | cmake-build-debug/ 33 | cmake-build-release/ 34 | 35 | # Debian packaging 36 | deb-build*/ 37 | debian/files 38 | debian/*.substvars 39 | debian/*.log 40 | debian/.debhelper/ 41 | debian/debhelper-build-stamp 42 | # package directories 43 | debian/lvr2/ 44 | debian/lvr2-cuda/ 45 | debian/liblvr2*/ 46 | debian/lvr2-*/ 47 | 48 | # QT Creator files 49 | /*.config 50 | /*.creator 51 | /*.files 52 | /*.includes 53 | /*.user 54 | /*.orig 55 | 56 | # IDE files 57 | .vscode/ 58 | .settings 59 | .project 60 | .cproject 61 | # Clang cache 62 | .cache 63 | 64 | # RiVLib lib path 65 | ext/rivlib/ 66 | texture_*.jpg 67 | texture_*.ppm 68 | -------------------------------------------------------------------------------- /CMakeModules/FindDraco.cmake: -------------------------------------------------------------------------------- 1 | # Finddraco 2 | # 3 | # Locates draco and sets the following variables: 4 | # 5 | # draco_FOUND draco_INCLUDE_DIRS draco_LIBARY_DIRS draco_LIBRARIES draco_STATIC_LIBRARIES 6 | # draco_VERSION_STRING 7 | # 8 | # draco_FOUND is set to YES only when all other variables are successfully 9 | # configured. 10 | 11 | unset(draco_FOUND) 12 | unset(draco_INCLUDE_DIRS) 13 | unset(draco_LIBRARY_DIRS) 14 | unset(draco_LIBRARIES) 15 | unset(draco_VERSION_STRING) 16 | 17 | mark_as_advanced(draco_FOUND) 18 | mark_as_advanced(draco_INCLUDE_DIRS) 19 | mark_as_advanced(draco_LIBRARY_DIRS) 20 | mark_as_advanced(draco_LIBRARIES) 21 | mark_as_advanced(draco_VERSION_STRING) 22 | 23 | set(draco_version_file_no_prefix "draco/core/draco_version.h") 24 | 25 | # Set draco_INCLUDE_DIRS 26 | find_path(draco_INCLUDE_DIRS NAMES "${draco_version_file_no_prefix}" HINTS "/usr/include/ /usr/local/incude/") 27 | 28 | find_library(draco_LIBRARIES NAMES draco.dll libdraco.dylib libdraco.so) 29 | find_library(draco_STATIC_LIBRARIES NAMES draco.lib libdraco.a) 30 | 31 | # Store path to library. 32 | get_filename_component(draco_LIBRARY_DIRS ${draco_LIBRARIES} DIRECTORY) 33 | 34 | if(draco_INCLUDE_DIRS 35 | AND draco_LIBRARY_DIRS 36 | AND draco_LIBRARIES) 37 | set(draco_FOUND YES) 38 | endif() 39 | -------------------------------------------------------------------------------- /CMakeModules/FindFLANN.cmake: -------------------------------------------------------------------------------- 1 | # Try to find STANN - Nearest neighbour search 2 | # This module will define the following variables: 3 | # FLANN_FOUND - indicates whether FLANN was found on the system 4 | # FLANN_INCLUDE_DIRS - the directories of the FLANN headers 5 | 6 | find_path( FLANN_INCLUDE_DIR flann.hpp HINTS "${FLANN_DIR}" PATH_SUFFIXES flann include) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(FLANN DEFAULT_MSG 10 | FLANN_INCLUDE_DIR) 11 | 12 | mark_as_advanced( FLANN_INCLUDE_DIR ) 13 | -------------------------------------------------------------------------------- /CMakeModules/FindGEOTIFF.cmake: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # cmake module for GeoTIFF 3 | # source: https://github.com/OSGeo/libgeotiff/blob/master/libgeotiff/cmake/FindGeoTIFF.cmake 4 | # NOTE: The assignment GEOTIFF_LIBRARIES ${GEOTIFF_LIBRARY} does not work. 5 | # Need to use ${GEOTIFF_LIBRARY} in CMakeLists instead. 6 | ##################################################################################### 7 | 8 | set(GEOTIFF_NAMES geotiff) 9 | 10 | find_path(GEOTIFF_INCLUDE_DIR geotiff.h PATH_PREFIXES geotiff) 11 | 12 | find_library(GEOTIFF_LIBRARY NAMES ${GEOTIFF_NAMES}) 13 | 14 | # Handle the QUIETLY and REQUIRED arguments and set SPATIALINDEX_FOUND to TRUE 15 | # if all listed variables are TRUE 16 | include(FindPackageHandleStandardArgs) 17 | find_package_handle_standard_args(GEOTIFF DEFAULT_MSG GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR) 18 | -------------------------------------------------------------------------------- /CMakeModules/FindNabo.cmake: -------------------------------------------------------------------------------- 1 | # Try to find Nabo - Nearest neighbour search 2 | # This module will define the following variables: 3 | # NABO_FOUND - indicates whether nabo was found on the system 4 | # NABO_INCLUDE_DIR - the directory for the nabo headerfiles 5 | # NABO_LIBRARY - the compiled nabo library 6 | 7 | find_path( NABO_INCLUDE_DIR nabo/nabo.h PATH_SUFFIXES nabo ) 8 | find_library( NABO_LIBRARY NAMES nabo libnabo ) 9 | 10 | include(FindPackageHandleStandardArgs) 11 | find_package_handle_standard_args(Nabo DEFAULT_MSG 12 | Nabo_LIBRARY Nabo_INCLUDE_DIR) 13 | -------------------------------------------------------------------------------- /CMakeModules/FindOpenCL2.cmake: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Find OpenCL Wrapper 3 | # This is a find_package(catkin) wrapper for packages 4 | # that are able to be build with and without ros 5 | # The syntax is the same as find_package(catkin) 6 | # Compatible with latest CUDA versions 7 | # Additional Variables: 8 | # OPENCL_FOUND - True if Ros code can be build 9 | # 10 | find_package(OpenCL) 11 | if(NOT OpenCL_FOUND) 12 | find_package(CUDA) 13 | if(CUDA_FOUND) 14 | if(CUDA_OpenCL_LIBRARY) 15 | set(OpenCL_INCLUDE_DIRS "${CUDA_INCLUDE_DIRS}") 16 | set(OpenCL_LIBRARY "${CUDA_OpenCL_LIBRARY}") 17 | set(OpenCL_LIBRARIES "${CUDA_OpenCL_LIBRARY}" ) 18 | set(OpenCL_FOUND 1) 19 | set(OPENCL_FOUND 1) 20 | elseif(EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/include/CL") 21 | set(OpenCL_INCLUDE_DIRS "${CUDA_INCLUDE_DIRS}") 22 | set(OpenCL_LIBRARY "${CUDA_TOOLKIT_ROOT_DIR}/lib64/libOpenCL.so") 23 | set(OpenCL_LIBRARIES "${OpenCL_LIBRARY}" ) 24 | set(OpenCL_FOUND 1) 25 | set(OPENCL_FOUND 1) 26 | endif() 27 | endif() 28 | endif() 29 | 30 | # check API Version 31 | if(OpenCL_FOUND) 32 | set(OpenCL_NEW_API False) 33 | if(EXISTS "${OpenCL_INCLUDE_DIRS}/CL/cl2.hpp") 34 | set(OpenCL_NEW_API True) 35 | endif() 36 | endif() 37 | -------------------------------------------------------------------------------- /CMakeModules/FindQVTK.cmake: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Find QVTK 3 | # 4 | # This sets the following variables: 5 | # 6 | # QVTK_FOUND - True if QVTK was found 7 | # QVTK_INCLUDE_DIR - Directory containing the QVTK include files 8 | # QVTK_LIBRARY - QVTK library 9 | # 10 | # If QVTK_FOUND then QVTK_INCLUDE_DIR is appended to VTK_INCLUDE_DIRS and 11 | # QVTK_LIBRARY is appended to QVTK_LIBRARY_DIR. 12 | # 13 | 14 | find_package(VTK) 15 | 16 | find_path (QVTK_INCLUDE_DIR QVTKWidget.h HINT ${VTK_INCLUDE_DIRS}) 17 | 18 | if(VTK_MAJOR_VERSION VERSION_LESS "6") 19 | find_library (QVTK_LIBRARY QVTK HINTS ${VTK_DIR} ${VTK_DIR}/bin 20 | PATH_SUFFIXES Release Debug) 21 | 22 | find_package_handle_standard_args(QVTK DEFAULT_MSG 23 | QVTK_LIBRARY QVTK_INCLUDE_DIR) 24 | else() 25 | # VTK 6 doesn't have a dedicated QVTK lib anymore 26 | find_package_handle_standard_args(QVTK DEFAULT_MSG 27 | QVTK_INCLUDE_DIR) 28 | set(QVTK_LIBRARY "" CACHE PATH "stubbed QVTK library [obsolete]") 29 | endif() 30 | 31 | if(QVTK_FOUND) 32 | if(VTK_MAJOR_VERSION VERSION_LESS "6") 33 | get_filename_component (QVTK_LIBRARY_DIR ${QVTK_LIBRARY} PATH) 34 | set (VTK_LIBRARY_DIRS ${VTK_LIBRARY_DIRS} ${QVTK_LIBRARY_DIR}) 35 | endif() 36 | set (VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${QVTK_INCLUDE_DIR}) 37 | endif(QVTK_FOUND) 38 | -------------------------------------------------------------------------------- /CMakeModules/FindSTANN.cmake: -------------------------------------------------------------------------------- 1 | # Try to find STANN - Nearest neighbour search 2 | # This module will define the following variables: 3 | # STANN_FOUND - indicates whether STANN was found on the system 4 | # STANN_INCLUDE_DIRS - the directories of the STANN headers 5 | 6 | find_path( STANN_INCLUDE_DIR sfcnn.hpp HINTS "${STANN_DIR}" PATH_SUFFIXES stann include) 7 | 8 | include(FindPackageHandleStandardArgs) 9 | find_package_handle_standard_args(STANN DEFAULT_MSG 10 | STANN_INCLUDE_DIR) 11 | 12 | mark_as_advanced( STANN_INCLUDE_DIR ) 13 | -------------------------------------------------------------------------------- /CMakeModules/lvr2-uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) 2 | string(REGEX REPLACE "\n" ";" files "${files}") 3 | foreach(file ${files}) 4 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}") 5 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 6 | exec_program( 7 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 8 | OUTPUT_VARIABLE rm_out 9 | RETURN_VALUE rm_retval 10 | ) 11 | if(NOT "${rm_retval}" STREQUAL 0) 12 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") 13 | endif() 14 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 15 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.") 16 | endif() 17 | endforeach() -------------------------------------------------------------------------------- /CMakeSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "x64-Debug", 5 | "generator": "Ninja", 6 | "configurationType": "RelWithDebInfo", 7 | "inheritEnvironments": [ "clang_cl_x64" ], 8 | "buildRoot": "${projectDir}\\out\\build\\${name}", 9 | "installRoot": "${projectDir}\\out\\install\\${name}", 10 | "cmakeCommandArgs": "", 11 | "buildCommandArgs": "", 12 | "ctestCommandArgs": "", 13 | "intelliSenseMode": "windows-msvc-x64" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /Singularity.def: -------------------------------------------------------------------------------- 1 | BootStrap: debootstrap 2 | OSVersion: focal 3 | MirrorURL: http://us.archive.ubuntu.com/ubuntu/ 4 | 5 | 6 | %post 7 | export DEBIAN_FRONTEND=noninteractive 8 | export NPROC=$(nproc) 9 | apt-get update 10 | apt-get install -y software-properties-common 11 | add-apt-repository universe 12 | apt-get update 13 | apt-get -y install build-essential cmake git coreutils cmake-curses-gui libflann-dev libgsl-dev libeigen3-dev libopenmpi-dev openmpi-bin opencl-c-headers ocl-icd-opencl-dev libvtk7-dev libvtk7-qt-dev libboost-all-dev freeglut3-dev libhdf5-dev qtbase5-dev qt5-default libqt5opengl5-dev liblz4-dev libopencv-dev libyaml-cpp-dev libtbb-dev libspdlog-dev 14 | 15 | git config --global http.sslverify false 16 | 17 | git clone https://github.com/embree/embree.git embree 18 | cd embree 19 | mkdir build 20 | cd build 21 | cmake -DEMBREE_TUTORIALS=OFF -DEMBREE_ISPC_SUPPORT=OFF .. 22 | make -j $NPROC 23 | make install 24 | cd .. 25 | rm -r build 26 | cd / 27 | 28 | git clone https://gitlab.informatik.uni-osnabrueck.de/Las_Vegas_Reconstruction/Develop.git lvr 29 | cd lvr 30 | git checkout develop 31 | 32 | mkdir build 33 | cd build 34 | cmake -DCMAKE_BUILD_TYPE=Release .. 35 | make -j $NPROC 36 | make install 37 | cd .. 38 | rm -r build 39 | cd / 40 | 41 | %environment 42 | export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 43 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /debian/liblvr2-cuda-dev.install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/dh-exec 2 | debian/lvr2-cuda/usr/include/* usr/include/ 3 | debian/lvr2-cuda/usr/lib/*/lib*.a usr/lib/ 4 | debian/lvr2-cuda/usr/share/HighFive/* usr/share/HighFive/ 5 | 6 | # cmake 7 | debian/lvr2-cuda/usr/lib/cmake/* usr/lib/${DEB_HOST_MULTIARCH}/cmake 8 | debian/lvr2-cuda/usr/lib/*/cmake/* usr/lib/ 9 | -------------------------------------------------------------------------------- /debian/liblvr2-cuda.install: -------------------------------------------------------------------------------- 1 | debian/lvr2-cuda/usr/lib/*/lib*.so usr/lib/ 2 | -------------------------------------------------------------------------------- /debian/liblvr2-dev.install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/dh-exec 2 | debian/lvr2/usr/include/* usr/include/ 3 | debian/lvr2/usr/lib/*/lib*.a usr/lib/ 4 | debian/lvr2/usr/share/HighFive/* usr/share/HighFive/ 5 | 6 | # cmake 7 | debian/lvr2/usr/lib/cmake/* usr/lib/${DEB_HOST_MULTIARCH}/cmake 8 | debian/lvr2/usr/lib/*/cmake/* usr/lib/ 9 | -------------------------------------------------------------------------------- /debian/liblvr2.install: -------------------------------------------------------------------------------- 1 | debian/lvr2/usr/lib/*/lib*.so usr/lib/ 2 | -------------------------------------------------------------------------------- /debian/lvr2-bin.install: -------------------------------------------------------------------------------- 1 | debian/lvr2/usr/bin/* usr/bin/ 2 | -------------------------------------------------------------------------------- /debian/lvr2-cuda-bin.install: -------------------------------------------------------------------------------- 1 | debian/lvr2-cuda/usr/bin/* usr/bin/ 2 | -------------------------------------------------------------------------------- /debian/lvr2-docs.docs: -------------------------------------------------------------------------------- 1 | README.source 2 | README.Debian 3 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(channels) 2 | #add_subdirectory(coordinates) 3 | #add_subdirectory(raycasting) 4 | add_subdirectory(scan_projects) -------------------------------------------------------------------------------- /examples/channels/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | include_directories( 6 | include 7 | ) 8 | 9 | set(LVR2_EXAMPLE_CHANNELS_SRCS 10 | ) 11 | 12 | ##################################################################################### 13 | # Setup dependencies to external libraries 14 | ##################################################################################### 15 | 16 | set(LVR2_EXAMPLE_CHANNELS_DEPENDENCIES 17 | lvr2_static 18 | ) 19 | 20 | ##################################################################################### 21 | # Add executable 22 | ##################################################################################### 23 | 24 | add_executable(lvr2_examples_channels 25 | Main.cpp 26 | ${LVR2_EXAMPLE_CHANNELS_SRCS} 27 | ) 28 | 29 | target_link_libraries(lvr2_examples_channels ${LVR2_EXAMPLE_CHANNELS_DEPENDENCIES}) 30 | -------------------------------------------------------------------------------- /examples/coordinates/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Package includes 3 | ##################################################################################### 4 | 5 | 6 | ##################################################################################### 7 | # Add executable 8 | ##################################################################################### 9 | add_executable(lvr2_examples_coordinates 10 | Main.cpp 11 | ) 12 | 13 | target_link_libraries(lvr2_examples_coordinates 14 | lvr2_static 15 | ) 16 | -------------------------------------------------------------------------------- /examples/raycasting/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # RAYCASTER EXAMPLE 3 | ##################################################################################### 4 | 5 | set(RAYCASTER_DEPS lvr2_static) 6 | 7 | # if(OPENCL_FOUND) 8 | # list(APPEND RAYCASTER_DEPS ${OpenCL_LIBRARIES}) 9 | # endif(OPENCL_FOUND) 10 | 11 | # if(embree_FOUND) 12 | # list(APPEND RAYCASTER_DEPS ${EMBREE_LIBRARY}) 13 | # endif(embree_FOUND) 14 | 15 | # Add executable 16 | add_executable(lvr2_examples_raycasting 17 | Main.cpp 18 | ) 19 | 20 | # link 21 | target_link_libraries(lvr2_examples_raycasting 22 | ${RAYCASTER_DEPS} 23 | ) -------------------------------------------------------------------------------- /examples/scan_projects/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | add_subdirectory(helper) 3 | add_subdirectory(simple) 4 | add_subdirectory(schema) 5 | add_subdirectory(compression) 6 | add_subdirectory(loadpartial) -------------------------------------------------------------------------------- /examples/scan_projects/README.md: -------------------------------------------------------------------------------- 1 | # Handling Scan Projects with LVR2 2 | 3 | This folder contains examples handling different types of scan project structes for a given purpose. 4 | 5 | ## Scan Projects 6 | Scan projects are collections of sensory data collected by different sensors at certain scan positions. Internally, entities of a scan project are managed hierarchichally as follows: 7 | 8 | 1. Scan projects 9 | 2. Scan positions 10 | 3. Sensors 11 | 4. Sensor data 12 | 13 | ## Meta Information 14 | 15 | Each of the entities above gets its own meta information. 16 | Given a specialization of an entity ("type") this information is 17 | extended. 18 | 19 | ### Scan projects 20 | A scan project is a container for scan positions. The meta information 21 | consists of 22 | 23 | - Coordinate Reference System (crs) 24 | - Transformation 25 | - Pose Estimation 26 | 27 | ### Sensors 28 | .... TODO 29 | 30 | -------------------------------------------------------------------------------- /examples/scan_projects/compression/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(LVR2_EXAMPLES_SP_COMP_SRCS 2 | Main.cpp 3 | ) 4 | 5 | set(LVR2_EXAMPLES_SP_COMP_DEPS 6 | lvr2_static 7 | lvr2las_static 8 | lvr2rply_static 9 | lvr2_examples_scan_projects_helper 10 | ${LVR2_LIB_DEPENDENCIES} 11 | ) 12 | 13 | include_directories(include) 14 | 15 | add_executable(lvr2_examples_scanprojects_compression 16 | ${LVR2_EXAMPLES_SP_COMP_SRCS}) 17 | 18 | target_link_libraries(lvr2_examples_scanprojects_compression 19 | ${LVR2_EXAMPLES_SP_COMP_DEPS} ) 20 | -------------------------------------------------------------------------------- /examples/scan_projects/compression/README.md: -------------------------------------------------------------------------------- 1 | # ScanProject Compression example 2 | 3 | TODO -------------------------------------------------------------------------------- /examples/scan_projects/helper/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | set(LVR2_EXAMPLES_SCAN_PROJECTS_SRCS 3 | src/ScanTypesCompare.cpp 4 | src/ScanTypesDummies.cpp 5 | # src/Logging.cpp 6 | ) 7 | 8 | set(LVR2_EXAMPLES_SCAN_PROJECTS_DEPS 9 | lvr2_static 10 | lvr2las_static 11 | lvr2rply_static 12 | ${LVR2_LIB_DEPENDENCIES} 13 | ) 14 | 15 | include_directories(include) 16 | 17 | add_library(lvr2_examples_scan_projects_helper 18 | ${LVR2_EXAMPLES_SCAN_PROJECTS_SRCS}) 19 | 20 | target_link_libraries(lvr2_examples_scan_projects_helper ${LVR2_EXAMPLES_SCAN_PROJECTS_DEPS} ) 21 | -------------------------------------------------------------------------------- /examples/scan_projects/helper/include/ScanTypesDummies.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_EXAMPLES_SCANTYPES_DUMMIES_HPP 2 | #define LVR2_EXAMPLES_SCANTYPES_DUMMIES_HPP 3 | 4 | #include "lvr2/types/ScanTypes.hpp" 5 | 6 | namespace lvr2 { 7 | 8 | /** 9 | * @brief Apply a transformation to a pointbuffer. 10 | * 11 | * @param T 12 | * @param points 13 | * @return 14 | */ 15 | PointBufferPtr operator*(Transformd T, PointBufferPtr points); 16 | 17 | /** 18 | * @brief Generates a dummy scan projects with some sensors and sensordata 19 | * - pointclouds of size 2502 in shapes of spheres 20 | * - lvr2 logo as images 21 | * 22 | * @return ScanProjectPtr 23 | */ 24 | ScanProjectPtr dummyScanProject(); 25 | 26 | /** 27 | * @brief Generates a dummy scan projects with some sensors and sensordata 28 | * - pointclouds of size 2502 in shapes of spheres 29 | * - lvr2 logo as images 30 | * 31 | * @return ScanProjectPtr 32 | */ 33 | ScanProjectPtr dummyScanProjectMinimal(); 34 | 35 | } // namespace lvr2 36 | 37 | #endif // LVR2_EXAMPLES_SCANTYPES_DUMMIES_HPP -------------------------------------------------------------------------------- /examples/scan_projects/loadpartial/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(LVR2_EXAMPLES_SP_LOADPARTIAL_SRCS 2 | Main.cpp 3 | ) 4 | 5 | set(LVR2_EXAMPLES_SP_LOADPARTIAL_DEPS 6 | lvr2_static 7 | lvr2las_static 8 | lvr2rply_static 9 | lvr2_examples_scan_projects_helper 10 | ${LVR2_LIB_DEPENDENCIES} 11 | ) 12 | 13 | include_directories(include) 14 | 15 | add_executable(lvr2_examples_scanprojects_loadpartial 16 | ${LVR2_EXAMPLES_SP_LOADPARTIAL_SRCS}) 17 | 18 | target_link_libraries(lvr2_examples_scanprojects_loadpartial 19 | ${LVR2_EXAMPLES_SP_LOADPARTIAL_DEPS} ) 20 | -------------------------------------------------------------------------------- /examples/scan_projects/loadpartial/README.md: -------------------------------------------------------------------------------- 1 | # Load scan projects partially 2 | 3 | ## Datasets 4 | 5 | ## Meta Only 6 | 7 | TODO -------------------------------------------------------------------------------- /examples/scan_projects/schema/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(LVR2_EXAMPLES_SP_SCHEMA_SRCS 2 | Main.cpp 3 | ) 4 | 5 | set(LVR2_EXAMPLES_SP_SCHEMA_DEPS 6 | lvr2_static 7 | lvr2las_static 8 | lvr2rply_static 9 | lvr2_examples_scan_projects_helper 10 | ${LVR2_LIB_DEPENDENCIES} 11 | ) 12 | 13 | add_executable(lvr2_examples_scanprojects_schema 14 | ${LVR2_EXAMPLES_SP_SCHEMA_SRCS}) 15 | 16 | target_link_libraries(lvr2_examples_scanprojects_schema 17 | ${LVR2_EXAMPLES_SP_SCHEMA_DEPS} ) 18 | -------------------------------------------------------------------------------- /examples/scan_projects/schema/README.md: -------------------------------------------------------------------------------- 1 | # Schema ScanProjectIO example 2 | 3 | Saving and loading Scanprojects with selfmade schemas. 4 | -------------------------------------------------------------------------------- /examples/scan_projects/simple/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(LVR2_EXAMPLES_SP_SIMPLE_SRCS 2 | Main.cpp 3 | ) 4 | 5 | set(LVR2_EXAMPLES_SP_SIMPLE_DEPS 6 | lvr2_static 7 | lvr2las_static 8 | lvr2rply_static 9 | lvr2_examples_scan_projects_helper 10 | ${LVR2_LIB_DEPENDENCIES} 11 | ) 12 | 13 | include_directories(include) 14 | 15 | add_executable(lvr2_examples_scanprojects_simple 16 | ${LVR2_EXAMPLES_SP_SIMPLE_SRCS}) 17 | 18 | target_link_libraries(lvr2_examples_scanprojects_simple 19 | ${LVR2_EXAMPLES_SP_SIMPLE_DEPS} ) 20 | -------------------------------------------------------------------------------- /examples/scan_projects/simple/README.md: -------------------------------------------------------------------------------- 1 | # Simple ScanProject IO example 2 | 3 | Saving and loading Scanprojects from different sources into ScanProject 4 | buffer. 5 | 6 | ## Sources 7 | - Directory 8 | - Hdf5 -------------------------------------------------------------------------------- /ext/CTPL/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4...3.16) 2 | 3 | set(CTPL_INSTALL_INCLUDE_DIR 4 | ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/lvr2/ext/CTPL 5 | CACHE 6 | PATH 7 | "install location of CTPL library header") 8 | 9 | find_path(CTPL_INCLUDE_DIR ctpl.h PATH .) 10 | mark_as_advanced(CTPL_INCLUDE_DIR CTPL_INSTALL_INCLUDE_DIR) 11 | 12 | include_directories(${CTPL_INCLUDE_DIR}) 13 | 14 | install(DIRECTORY . DESTINATION ${CTPL_INSTALL_INCLUDE_DIR} 15 | FILES_MATCHING PATTERN "*.h") 16 | -------------------------------------------------------------------------------- /ext/HighFive/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | .idea 3 | -------------------------------------------------------------------------------- /ext/HighFive/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "deps/git-cmake-format"] 2 | path = deps/git-cmake-format 3 | url = https://github.com/tristan0x/git-cmake-format.git 4 | branch = bbp 5 | -------------------------------------------------------------------------------- /ext/HighFive/.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | 3 | matrix: 4 | include: 5 | - os: linux 6 | sudo: required 7 | 8 | install: 9 | - ./ci/travis/install.sh 10 | 11 | script: 12 | - mkdir -p build && pushd build 13 | - cmake -G Ninja ../ 14 | - ninja -v 15 | - ninja test 16 | 17 | -------------------------------------------------------------------------------- /ext/HighFive/CMake/portability/BlueGenePortability.cmake: -------------------------------------------------------------------------------- 1 | ## 2 | ## Portability check on Blue Gene Q environment 3 | 4 | if(NOT DEFINED SUPPORTED_COMPILER_LANGUAGE_LIST) 5 | message(FATAL_ERROR "CheckCXXCompilerFlag module required by BlueGenePortability") 6 | endif() 7 | 8 | if(IS_DIRECTORY "/bgsys" AND (NOT DEFINED BLUEGENE) ) 9 | set(BLUEGENE TRUE) 10 | endif() 11 | 12 | 13 | if(BLUEGENE AND CMAKE_C_COMPILER_IS_XLC ) 14 | # define library type to static on BGQ 15 | set(COMPILE_LIBRARY_TYPE "STATIC") 16 | ## Blue Gene/Q do not support linking with MPI library when compiled with mpicc wrapper 17 | ## we disable any MPI_X_LIBRARY linking and rely on mpicc wrapper 18 | set(MPI_LIBRARIES "") 19 | set(MPI_C_LIBRARIES "") 20 | set(MPI_CXX_LIBRARIES "") 21 | 22 | ## static linking need to be forced on BlueGene 23 | # Boost need a bit of tuning parameters for static linking 24 | set(Boost_NO_BOOST_CMAKE TRUE) 25 | set(Boost_USE_STATIC_LIBS TRUE) 26 | 27 | #enforce static linking for hdf5 28 | set(HDF5_USE_STATIC_LIBRARIES TRUE) 29 | 30 | else() 31 | 32 | if(NOT DEFINED COMPILE_LIBRARY_TYPE) 33 | set(COMPILE_LIBRARY_TYPE "SHARED") 34 | endif() 35 | 36 | endif() 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /ext/HighFive/CMake/portability/CheckCXXStandardSupport.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Basic check for C++ compiler startndard support 3 | # 4 | include(CheckCXXCompilerFlag) 5 | 6 | # Set flags for older CMake 7 | if(${CMAKE_VERSION} VERSION_LESS 3.10) 8 | if (CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang|AppleClang|Intel|PGI|XL)") 9 | set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11") 10 | set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14") 11 | set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17") 12 | elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 13 | # MSVC Supports some c++11 features since long time, way before language levels 14 | set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "") 15 | # VS 2015u3 understands these flags and is the first to support C++14 16 | set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "/std:c++14") 17 | set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "/std:c++17") 18 | endif() 19 | endif() 20 | 21 | check_cxx_compiler_flag("${CMAKE_CXX11_STANDARD_COMPILE_OPTION}" COMPILER_SUPPORTS_CXX11) 22 | check_cxx_compiler_flag("${CMAKE_CXX14_STANDARD_COMPILE_OPTION}" COMPILER_SUPPORTS_CXX14) 23 | -------------------------------------------------------------------------------- /ext/HighFive/VERSION: -------------------------------------------------------------------------------- 1 | 2.2.2 2 | -------------------------------------------------------------------------------- /ext/HighFive/default.nix: -------------------------------------------------------------------------------- 1 | # Nix development environment 2 | # 3 | # build: 4 | # nix-build -I "BBPpkgs=https://github.com/BlueBrain/bbp-nixpkgs/archive/master.tar.gz" default.nix 5 | # 6 | # build and test: 7 | # nix-build -I "BBPpkgs=https://goo.gl/wTvE5t" --arg testExec true default.nix -j 4 8 | # 9 | # dev shell: 10 | # nix-shell -I "BBPpkgs=https://goo.gl/wTvE5t" default.nix 11 | # 12 | with import { }; 13 | 14 | { 15 | highfive = highfive.overrideDerivation (oldAttr: rec { 16 | name = "highfive-0.1"; 17 | src = ./.; 18 | 19 | }); 20 | } 21 | -------------------------------------------------------------------------------- /ext/HighFive/doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Doxygen) 2 | if(Doxygen_FOUND) 3 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) 4 | add_custom_target(doc COMMAND Doxygen::doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) 5 | else() 6 | message(STATUS " Documentation (doc) cannot be built since Doxygen is not available.") 7 | endif() 8 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/H5FileDriver.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2017, Adrien Devresse 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | #ifndef H5FILEDRIVER_HPP 10 | #define H5FILEDRIVER_HPP 11 | 12 | #include "H5PropertyList.hpp" 13 | 14 | namespace HighFive { 15 | 16 | /// 17 | /// \brief file driver base concept 18 | /// 19 | class FileDriver : public FileAccessProps {}; 20 | 21 | /// 22 | /// \brief MPIIO Driver for Parallel HDF5 23 | /// 24 | class MPIOFileDriver : public FileDriver { 25 | public: 26 | template 27 | inline MPIOFileDriver(Comm mpi_comm, Info mpi_info); 28 | 29 | private: 30 | }; 31 | 32 | } // namespace HighFive 33 | 34 | #include "bits/H5FileDriver_misc.hpp" 35 | 36 | #endif // H5FILEDRIVER_HPP 37 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/H5Group.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2017, Adrien Devresse 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | #ifndef HIGHFIVE_H5GROUP_HPP 10 | #define HIGHFIVE_H5GROUP_HPP 11 | 12 | #include "H5Object.hpp" 13 | #include "bits/H5_definitions.hpp" 14 | #include "bits/H5Annotate_traits.hpp" 15 | #include "bits/H5Node_traits.hpp" 16 | 17 | namespace HighFive { 18 | 19 | /// 20 | /// \brief Represents an hdf5 group 21 | class Group : public Object, 22 | public NodeTraits, 23 | public AnnotateTraits { 24 | public: 25 | const static ObjectType type = ObjectType::Group; 26 | 27 | protected: 28 | using Object::Object; 29 | 30 | inline Group(Object&& o) noexcept : Object(std::move(o)) {}; 31 | 32 | friend class File; 33 | friend class Reference; 34 | template friend class ::HighFive::NodeTraits; 35 | }; 36 | 37 | } // namespace HighFive 38 | 39 | #endif // HIGHFIVE_H5GROUP_HPP 40 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/H5Utility.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2017, Blue Brain Project - EPFL (CH) 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | 10 | #ifndef H5UTILITY_HPP 11 | #define H5UTILITY_HPP 12 | 13 | #include 14 | 15 | namespace HighFive { 16 | 17 | /// 18 | /// \brief Utility class to disable HDF5 stack printing inside a scope. 19 | /// 20 | class SilenceHDF5 { 21 | public: 22 | inline SilenceHDF5(bool enable=true) 23 | : _client_data(nullptr) 24 | { 25 | H5Eget_auto2(H5E_DEFAULT, &_func, &_client_data); 26 | if (enable) H5Eset_auto2(H5E_DEFAULT, NULL, NULL); 27 | } 28 | 29 | inline ~SilenceHDF5() { 30 | H5Eset_auto2(H5E_DEFAULT, _func, _client_data); 31 | } 32 | 33 | private: 34 | H5E_auto2_t _func; 35 | void* _client_data; 36 | }; 37 | 38 | } // namespace HighFive 39 | 40 | #endif // H5UTIL_HPP 41 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/H5Version.hpp.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2020 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | #ifndef H5VERSION_HPP 10 | #define H5VERSION_HPP 11 | 12 | #define HIGHFIVE_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ 13 | #define HIGHFIVE_VERSION_MINOR @PROJECT_VERSION_MINOR@ 14 | #define HIGHFIVE_VERSION_PATCH @PROJECT_VERSION_PATCH@ 15 | #define HIGHFIVE_VERSION @PROJECT_VERSION@ 16 | 17 | #endif // H5VERSION_HPP 18 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/bits/H5FileDriver_misc.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2017-2018, Adrien Devresse 3 | * Juan Hernando 4 | * 5 | * Distributed under the Boost Software License, Version 1.0. 6 | * (See accompanying file LICENSE_1_0.txt or copy at 7 | * http://www.boost.org/LICENSE_1_0.txt) 8 | * 9 | */ 10 | #ifndef H5FILEDRIVER_MISC_HPP 11 | #define H5FILEDRIVER_MISC_HPP 12 | 13 | #include 14 | 15 | #ifdef H5_HAVE_PARALLEL 16 | #include 17 | #endif 18 | 19 | namespace HighFive { 20 | 21 | namespace { 22 | 23 | template 24 | class MPIOFileAccess 25 | { 26 | public: 27 | MPIOFileAccess(Comm comm, Info info) 28 | : _comm(comm) 29 | , _info(info) 30 | {} 31 | 32 | void apply(const hid_t list) const { 33 | if (H5Pset_fapl_mpio(list, _comm, _info) < 0) { 34 | HDF5ErrMapper::ToException( 35 | "Unable to set-up MPIO Driver configuration"); 36 | } 37 | } 38 | private: 39 | Comm _comm; 40 | Info _info; 41 | }; 42 | 43 | } //namespace 44 | 45 | template 46 | inline MPIOFileDriver::MPIOFileDriver(Comm comm, Info info) { 47 | add(MPIOFileAccess(comm, info)); 48 | } 49 | 50 | } // namespace HighFive 51 | 52 | #endif // H5FILEDRIVER_MISC_HPP 53 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/bits/H5Selection_misc.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2017, Adrien Devresse 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | #ifndef H5SELECTION_MISC_HPP 10 | #define H5SELECTION_MISC_HPP 11 | 12 | namespace HighFive { 13 | 14 | inline Selection::Selection(const DataSpace& memspace, 15 | const DataSpace& file_space, const DataSet& set) 16 | : _mem_space(memspace) 17 | , _file_space(file_space) 18 | , _set(set) {} 19 | 20 | inline DataSpace Selection::getSpace() const noexcept { 21 | return _file_space; 22 | } 23 | 24 | inline DataSpace Selection::getMemSpace() const noexcept { 25 | return _mem_space; 26 | } 27 | 28 | inline DataSet& Selection::getDataset() noexcept { 29 | return _set; 30 | } 31 | 32 | inline const DataSet& Selection::getDataset() const noexcept { 33 | return _set; 34 | } 35 | 36 | // Not only a shortcut but also for templated compat with H5Dataset 37 | inline const DataType Selection::getDataType() const { 38 | return _set.getDataType(); 39 | } 40 | 41 | } // namespace HighFive 42 | 43 | #endif // H5SELECTION_MISC_HPP 44 | -------------------------------------------------------------------------------- /ext/HighFive/include/highfive/bits/H5_definitions.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(__GNUC__) || defined(__clang__) 4 | #define H5_DEPRECATED(msg) __attribute__((deprecated(#msg))) 5 | #elif defined(_MSC_VER) 6 | #define H5_DEPRECATED(msg) __declspec(deprecated(#msg)) 7 | #else 8 | #pragma message("WARNING: Compiler doesnt support deprecation") 9 | #define H5_DEPRECATED 10 | #endif 11 | 12 | 13 | // Forward declarations 14 | 15 | namespace HighFive { 16 | 17 | enum class LinkType; 18 | enum class ObjectType; 19 | enum class PropertyType; 20 | 21 | class Attribute; 22 | class DataSet; 23 | class DataSpace; 24 | class DataType; 25 | class Exception; 26 | class File; 27 | class FileDriver; 28 | class Group; 29 | class Object; 30 | class ObjectInfo; 31 | class Reference; 32 | class Selection; 33 | class SilenceHDF5; 34 | 35 | template 36 | class AtomicType; 37 | 38 | template 39 | class AnnotateTraits; 40 | 41 | template 42 | class FixedLenStringArray; 43 | 44 | template 45 | class NodeTraits; 46 | 47 | template 48 | class PropertyList; 49 | 50 | 51 | // Internal 52 | 53 | namespace details { 54 | 55 | // Forward declaration of data_converter with default value of Enable 56 | template 57 | struct data_converter; 58 | 59 | } 60 | 61 | } // namespace HighFive 62 | 63 | -------------------------------------------------------------------------------- /ext/HighFive/src/examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(${HDF5_INCLUDE_DIRS}) 2 | 3 | function(compile_example exemple_source) 4 | 5 | get_filename_component(example_filename ${exemple_source} NAME) 6 | string(REPLACE ".cpp" "_bin" example_name ${example_filename}) 7 | 8 | if(${example_filename} MATCHES ".*boost.*") 9 | if(NOT HIGHFIVE_USE_BOOST) 10 | return() 11 | endif() 12 | endif() 13 | 14 | if(${example_filename} MATCHES ".*parallel_hdf5.*") 15 | if(NOT HIGHFIVE_PARALLEL_HDF5) 16 | return() 17 | endif() 18 | endif() 19 | 20 | add_executable(${example_name} ${exemple_source}) 21 | target_link_libraries(${example_name} HighFive) 22 | 23 | endfunction() 24 | 25 | file(GLOB list_example "*.cpp") 26 | 27 | foreach(example_src ${list_example}) 28 | compile_example(${example_src}) 29 | endforeach() 30 | -------------------------------------------------------------------------------- /ext/HighFive/src/examples/boost_multiarray_complex.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c), 2020 Blue Brain Project - EPFL 3 | * 4 | * Distributed under the Boost Software License, Version 1.0. 5 | * (See accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | */ 9 | #include 10 | #include 11 | 12 | #undef H5_USE_BOOST 13 | #define H5_USE_BOOST 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | typedef std::complex complex_t; 21 | 22 | int main() { 23 | boost::multi_array multi_array(boost::extents[3][2][1][1]); 24 | std::fill_n(multi_array.origin(), multi_array.num_elements(), 1.0); 25 | multi_array[1][1][0][0] = complex_t{1.1, 1.2}; 26 | 27 | HighFive::File file("multi_array_complex.h5", HighFive::File::Truncate); 28 | 29 | HighFive::DataSet dataset = file.createDataSet("multi_array", multi_array); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /ext/HighFive/src/examples/easy_attribute.cpp: -------------------------------------------------------------------------------- 1 | /// To enable plug-ins, load the relevant libraries BEFORE HighFive. E.g. 2 | /// 3 | /// #include 4 | /// #include 5 | /// #include 6 | /// 7 | /// or ask HighFive to include them. E.g. 8 | /// 9 | /// #define H5_USE_XTENSOR 10 | /// #define H5_USE_EIGEN 11 | /// #include 12 | /// 13 | 14 | // optionally enable plug-in xtensor 15 | #ifdef H5_USE_XTENSOR 16 | #include 17 | #endif 18 | 19 | // optionally enable plug-in Eigen 20 | #ifdef H5_USE_EIGEN 21 | #include 22 | #endif 23 | 24 | #include 25 | 26 | int main() 27 | { 28 | H5Easy::File file("example.h5", H5Easy::File::Overwrite); 29 | 30 | std::vector measurement = {1.0, 2.0, 3.0}; 31 | std::string desc = "This is an important dataset."; 32 | double temperature = 1.234; 33 | 34 | H5Easy::dump(file, "/path/to/measurement", measurement); 35 | H5Easy::dumpAttribute(file, "/path/to/measurement", "description", desc); 36 | H5Easy::dumpAttribute(file, "/path/to/measurement", "temperature", temperature); 37 | 38 | 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /ext/HighFive/tests/test_dependent_library/deps/HighFive: -------------------------------------------------------------------------------- 1 | ../../.. -------------------------------------------------------------------------------- /ext/HighFive/tests/test_dependent_library/include/simpleton.hpp: -------------------------------------------------------------------------------- 1 | #ifndef H5_TEST_SIMPLETON_HPP 2 | #define H5_TEST_SIMPLETON_HPP 3 | 4 | // Include all headers here to catch any missing `inline` statements, since 5 | // they will be included by two different compilation units. 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | // Boost should always be found in this setup 22 | #include 23 | 24 | void function(const HighFive::Object& obj); 25 | void other_function(const boost::numeric::ublas::matrix& m); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /ext/HighFive/tests/test_dependent_library/src/otherton.cpp: -------------------------------------------------------------------------------- 1 | #include "simpleton.hpp" 2 | 3 | void other_function(const boost::numeric::ublas::matrix& m) { 4 | m(0, 0) * 0.0; 5 | } 6 | -------------------------------------------------------------------------------- /ext/HighFive/tests/test_dependent_library/src/simpleton.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "simpleton.hpp" 4 | 5 | void function(const HighFive::Object& obj) { 6 | if (!obj.isValid()) { 7 | throw std::exception(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ext/HighFive/tests/test_project/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This is a sample project to test integration via add_subdirectory and CMakeConfig 2 | cmake_minimum_required(VERSION 3.1) 3 | 4 | project(test_project VERSION 0.1) 5 | 6 | if(NOT DEFINED CMAKE_CXX_STANDARD) 7 | set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11") # For come compilers under cmake 3.1 8 | set(CMAKE_CXX_STANDARD 11) 9 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 10 | set(CMAKE_CXX_EXTENSIONS OFF) 11 | endif() 12 | 13 | option(USE_BUNDLED_HIGHFIVE "Use highfive from deps folder. Otherwise must be installed" ON) 14 | 15 | if(USE_BUNDLED_HIGHFIVE) 16 | add_subdirectory("deps/HighFive" EXCLUDE_FROM_ALL) 17 | else() 18 | find_package(HighFive REQUIRED) 19 | endif() 20 | 21 | add_executable(read_write_bin "read_write_vector_dataset.cpp") 22 | target_link_libraries(read_write_bin HighFive) 23 | 24 | enable_testing() 25 | add_test(NAME test_project COMMAND ${CMAKE_CURRENT_BINARY_DIR}/read_write_bin) 26 | -------------------------------------------------------------------------------- /ext/HighFive/tests/test_project/deps/HighFive: -------------------------------------------------------------------------------- 1 | ../../.. -------------------------------------------------------------------------------- /ext/HighFive/tests/test_project/read_write_vector_dataset.cpp: -------------------------------------------------------------------------------- 1 | ../../src/examples/read_write_vector_dataset.cpp -------------------------------------------------------------------------------- /ext/HighFive/tests/unit/tests_import_public_headers.cpp: -------------------------------------------------------------------------------- 1 | // This is a compilation test to be sure that public header can be included alone 2 | 3 | #include <@PUBLIC_HEADER@> 4 | 5 | int main() 6 | { 7 | return 0; 8 | } 9 | -------------------------------------------------------------------------------- /ext/QVTKOpenGLWidget/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4...3.16) 2 | 3 | # set include dirs 4 | set(QVTK_PATCHED_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/lvr2/ext/QVTKOpenGLWidget CACHE PATH "install location of nanoflann headers") 5 | find_path(QVTK_PATCHED_INCLUDE_DIR QVTKOpenGLWidget.h PATH .) 6 | find_path(QVTK_PATCHED_INCLUDE_DIR QVTKOpenGLNativeWidget.h PATH .) 7 | 8 | mark_as_advanced(QVTK_PATCHED_INCLUDE_DIR QVTK_PATCHED_INSTALL_INCLUDE_DIR) 9 | 10 | install(DIRECTORY . DESTINATION ${QVTK_PATCHED_INSTALL_INCLUDE_DIR} 11 | FILES_MATCHING PATTERN "*.h") 12 | -------------------------------------------------------------------------------- /ext/kintinuous/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /data 3 | -------------------------------------------------------------------------------- /ext/kintinuous/kfusion/include/kfusion/PointSave.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | #include 11 | 12 | class PointSave { 13 | public: 14 | /** 15 | * saves more contours 16 | * @param size : size of all elements 17 | * @param filename : output filename 18 | */ 19 | bool savePoints(const char* filename,std::vector > > rcb,int size); 20 | 21 | bool savePointsWithCameras(const char* filename,std::vector > > rcb,int size,std::vector image_pose_buffer); 22 | 23 | bool saveBoundingRectangles(const char* filename, std::vector< std::vector > b_rects, int size); 24 | 25 | private: 26 | 27 | }; 28 | -------------------------------------------------------------------------------- /ext/kintinuous/kfusion/include/kfusion/exports.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if (defined WIN32 || defined _WIN32 || defined WINCE) && defined KFUSION_API_EXPORTS 4 | #define KF_EXPORTS __declspec(dllexport) 5 | #else 6 | #define KF_EXPORTS 7 | #endif 8 | -------------------------------------------------------------------------------- /ext/kintinuous/kfusion/include/kfusion/precomp.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | //#include 9 | #include 10 | #include 11 | //#include "vector_functions.h" 12 | 13 | namespace kfusion 14 | { 15 | template 16 | inline D device_cast(const S& source) 17 | { 18 | return *reinterpret_cast(source.val); 19 | } 20 | 21 | template<> 22 | inline device::Aff3f device_cast(const Affine3f& source) 23 | { 24 | device::Aff3f aff; 25 | Mat3f R = source.rotation(); 26 | Vec3f t = source.translation(); 27 | aff.R = device_cast(R); 28 | aff.t = device_cast(t); 29 | return aff; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ext/kintinuous/kfusion/include/kfusion/safe_call.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "cuda_runtime_api.h" 4 | 5 | namespace kfusion 6 | { 7 | namespace cuda 8 | { 9 | void error(const char *error_string, const char *file, const int line, const char *func); 10 | } 11 | } 12 | 13 | #if defined(__GNUC__) 14 | #define cudaSafeCall(expr) kfusion::cuda::___cudaSafeCall(expr, __FILE__, __LINE__, __func__) 15 | #else /* defined(__CUDACC__) || defined(__MSVC__) */ 16 | #define cudaSafeCall(expr) kfusion::cuda::___cudaSafeCall(expr, __FILE__, __LINE__) 17 | #endif 18 | 19 | namespace kfusion 20 | { 21 | namespace cuda 22 | { 23 | static inline void ___cudaSafeCall(cudaError_t err, const char *file, const int line, const char *func = "") 24 | { 25 | if (cudaSuccess != err) 26 | error(cudaGetErrorString(err), file, line, func); 27 | } 28 | 29 | static inline int divUp(int total, int grain) { return (total + grain - 1) / grain; } 30 | } 31 | 32 | namespace device 33 | { 34 | using kfusion::cuda::divUp; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ext/kintinuous/qt_app/Main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Main.cpp 3 | * 4 | * Created on: Jan 26, 2016 5 | * Author: twiemann 6 | */ 7 | 8 | #include 9 | #include "MainWindow.hpp" 10 | 11 | using namespace std; 12 | 13 | int main(int argc, char** argv) 14 | { 15 | QApplication app(argc, argv); 16 | MainWindow mainWindow; 17 | mainWindow.show(); 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /ext/kintinuous/qt_app/MeshUpdateThread.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * MeshUpdateThread.hpp 3 | * 4 | * Created on: Jan 29, 2016 5 | * Author: twiemann 6 | */ 7 | 8 | #ifndef EXT_KINTINUOUS_QT_APP_MESHUPDATETHREAD_HPP_ 9 | #define EXT_KINTINUOUS_QT_APP_MESHUPDATETHREAD_HPP_ 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | 17 | class MeshUpdateThread : public QThread 18 | { 19 | Q_OBJECT 20 | Q_SIGNALS: 21 | void meshUpdate(vtkActor* actor); 22 | 23 | public: 24 | MeshUpdateThread(kfusion::KinFu::Ptr kinfu); 25 | virtual ~MeshUpdateThread(); 26 | 27 | 28 | 29 | //private: 30 | typedef lvr::HalfEdgeVertex >* VertexPtr; 31 | 32 | void run(); 33 | void computeMeshActor(HMesh* meshbuffer); 34 | 35 | kfusion::KinFu::Ptr m_kinfu; 36 | unordered_map m_indexMap; 37 | vtkActor* m_meshActor; 38 | vtkSmartPointer m_wireframeActor; 39 | 40 | vector m_vertices; 41 | vector m_faces; 42 | }; 43 | 44 | #endif /* EXT_KINTINUOUS_QT_APP_MESHUPDATETHREAD_HPP_ */ 45 | -------------------------------------------------------------------------------- /ext/laslib/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | cd src && make 3 | cd example && make 4 | cd test && make 5 | 6 | clean: 7 | cd src && make clean 8 | cd example && make clean 9 | cd test && clean 10 | rm -f lib/* 11 | rm -f libD/* 12 | 13 | clobber: 14 | cd src && make clobber 15 | cd example && make clobber 16 | cd test && make clobber 17 | rm -f lib/* 18 | rm -f libD/* 19 | -------------------------------------------------------------------------------- /ext/laslib/src/Makefile: -------------------------------------------------------------------------------- 1 | # makefile for liblas.a 2 | # 3 | #COPTS = -g -Wall 4 | COPTS = -O3 -Wall -Wno-deprecated -DNDEBUG -DUNORDERED 5 | COMPILER = g++ 6 | AR = ar rc 7 | #BITS = -64 8 | 9 | INCLUDE = -I/usr/include/ -I../inc -I. 10 | 11 | OBJ_LAS = lasreader.o laswriter.o lasreader_las.o lasreader_bin.o lasreader_shp.o lasreader_qfit.o lasreader_txt.o lasreadermerged.o laswriter_las.o laswriter_bin.o laswriter_qfit.o laswriter_txt.o laswaveform13reader.o laswaveform13writer.o lasutility.o lasinterval.o lasspatial.o lasquadtree.o lasindex.o lasfilter.o lastransform.o laszip.o laszipper.o lasunzipper.o lasreadpoint.o lasreaditemcompressed_v1.o lasreaditemcompressed_v2.o laswritepoint.o laswriteitemcompressed_v1.o laswriteitemcompressed_v2.o integercompressor.o arithmeticdecoder.o arithmeticencoder.o arithmeticmodel.o fopen_compressed.o 12 | 13 | all: liblas.a 14 | 15 | liblas.a: ${OBJ_LAS} 16 | $(AR) $@ ${OBJ_LAS} 17 | cp -p $@ ../lib 18 | 19 | .cpp.o: 20 | ${COMPILER} ${BITS} -c ${COPTS} ${INCLUDE} $< -o $@ 21 | 22 | .c.o: 23 | ${COMPILER} ${BITS} -c ${COPTS} ${INCLUDE} $< -o $@ 24 | 25 | clean: 26 | rm -rf liblas.a 27 | rm -rf *.o 28 | 29 | clobber: 30 | rm -rf liblas.a 31 | rm -rf *.o 32 | rm -rf *~ 33 | -------------------------------------------------------------------------------- /ext/nanoflann/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4...3.16) 2 | 3 | # set include dirs 4 | set(NANOFLANN_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/lvr2/ext/nanoflann CACHE PATH "install location of nanoflann headers") 5 | find_path(NANOFLANN_INCLUDE_DIR nanoflann.hpp PATH .) 6 | mark_as_advanced(NANOFLANN_INCLUDE_DIR NANOFLANN_INSTALL_INCLUDE_DIR) 7 | 8 | install(DIRECTORY . DESTINATION ${NANOFLANN_INSTALL_INCLUDE_DIR} 9 | FILES_MATCHING PATTERN "*.hpp") 10 | -------------------------------------------------------------------------------- /ext/psimpl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4...3.16) 2 | 3 | # set include dirs 4 | set(PSIMPL_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/lvr2/ext/psimpl CACHE PATH "install location of psimple header") 5 | find_path(PSIMPL_INCLUDE_DIR psimpl.h PATH .) 6 | mark_as_advanced(PSIMPL_INCLUDE_DIR PSIMPL_INSTALL_INCLUDE_DIR) 7 | 8 | install(DIRECTORY . DESTINATION ${PSIMPL_INSTALL_INCLUDE_DIR} 9 | FILES_MATCHING PATTERN "*.h") 10 | -------------------------------------------------------------------------------- /ext/rply/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.4...3.16) 2 | 3 | #project(rply) 4 | 5 | # set include dirs 6 | set(RPLY_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/lvr2/ext/rply CACHE PATH "install location of rply library header") 7 | find_path(RPLY_INCLUDE_DIR rply.h PATH .) 8 | mark_as_advanced(RPLY_INCLUDE_DIR RPLY_INSTALL_INCLUDE_DIR) 9 | 10 | include_directories(${RPLY_INCLUDE_DIR}) 11 | 12 | add_library(lvr2rply_static STATIC rply.c) 13 | 14 | add_library(lvr2rply SHARED rply.c) 15 | 16 | set_target_properties(lvr2rply 17 | PROPERTIES 18 | SOVERSION ${lvr2_VERSION_MAJOR} 19 | VERSION ${lvr2_VERSION} 20 | ) 21 | 22 | install(DIRECTORY . DESTINATION ${RPLY_INSTALL_INCLUDE_DIR} 23 | FILES_MATCHING PATTERN "*.h") 24 | 25 | install(TARGETS lvr2rply_static lvr2rply 26 | EXPORT lvr2Targets 27 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 28 | ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 29 | -------------------------------------------------------------------------------- /ext/rply/license: -------------------------------------------------------------------------------- 1 | RPly 1.1.1 license 2 | Copyright © 2003-2011 Diego Nehab. 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a 5 | copy of this software and associated documentation files (the "Software"), 6 | to deal in the Software without restriction, including without limitation 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 | and/or sell copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /ext/spdlog/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: Google 4 | AccessModifierOffset: -4 5 | Standard: c++17 6 | IndentWidth: 4 7 | TabWidth: 4 8 | UseTab: Never 9 | ColumnLimit: 100 10 | AlignAfterOpenBracket: Align 11 | BinPackParameters: false 12 | AlignEscapedNewlines: Left 13 | AlwaysBreakTemplateDeclarations: Yes 14 | PackConstructorInitializers: Never 15 | BreakConstructorInitializersBeforeComma: false 16 | IndentPPDirectives: BeforeHash 17 | SortIncludes: Never 18 | ... 19 | 20 | -------------------------------------------------------------------------------- /ext/spdlog/.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # clang-format 2 | 1a0bfc7a89f2d58e22605a4dc7e18a9a555b65aa 3 | 95c226e9c92928e20ccdac0d060e7241859e282b 4 | 9d52261185b5f2c454c381d626ec5c84d7b195f4 5 | 4b2a8219d5d1b40062d030441adde7d1fb0d4f84 6 | 0a53eafe18d983c7c8ba4cadd02d0cc7f7308f28 7 | -------------------------------------------------------------------------------- /ext/spdlog/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=false 2 | -------------------------------------------------------------------------------- /ext/spdlog/.github/workflows/macos.yml: -------------------------------------------------------------------------------- 1 | name: macos 2 | 3 | on: [push, pull_request] 4 | 5 | permissions: 6 | contents: read 7 | 8 | jobs: 9 | build: 10 | runs-on: macOS-latest 11 | name: "macOS Clang (C++11, Release)" 12 | steps: 13 | - uses: actions/checkout@v4 14 | - name: Build 15 | run: | 16 | mkdir -p build && cd build 17 | cmake .. \ 18 | -DCMAKE_BUILD_TYPE=Release \ 19 | -DCMAKE_CXX_STANDARD=11 \ 20 | -DSPDLOG_BUILD_EXAMPLE=ON \ 21 | -DSPDLOG_BUILD_EXAMPLE_HO=ON \ 22 | -DSPDLOG_BUILD_WARNINGS=ON \ 23 | -DSPDLOG_BUILD_BENCH=OFF \ 24 | -DSPDLOG_BUILD_TESTS=ON \ 25 | -DSPDLOG_BUILD_TESTS_HO=OFF \ 26 | -DSPDLOG_SANITIZE_ADDRESS=OFF 27 | make -j 4 28 | ctest -j 4 --output-on-failure 29 | -------------------------------------------------------------------------------- /ext/spdlog/INSTALL: -------------------------------------------------------------------------------- 1 | Header Only Version 2 | ================================================================== 3 | Just copy the files to your build tree and use a C++11 compiler. 4 | Or use CMake: 5 | ``` 6 | add_executable(example_header_only example.cpp) 7 | target_link_libraries(example_header_only spdlog::spdlog_header_only) 8 | ``` 9 | 10 | Compiled Library Version 11 | ================================================================== 12 | CMake: 13 | ``` 14 | add_executable(example example.cpp) 15 | target_link_libraries(example spdlog::spdlog) 16 | ``` 17 | 18 | Or copy files src/*.cpp to your build tree and pass the -DSPDLOG_COMPILED_LIB to the compiler. 19 | 20 | Important Information for Compilation: 21 | ================================================================== 22 | * If you encounter compilation errors with gcc 4.8.x, please note that gcc 4.8.x does not fully support C++11. In such cases, consider upgrading your compiler or using a different version that fully supports C++11 standards 23 | 24 | Tested on: 25 | gcc 4.8.1 and above 26 | clang 3.5 27 | Visual Studio 2013 -------------------------------------------------------------------------------- /ext/spdlog/bench/utils.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2015 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | namespace utils { 13 | 14 | template 15 | inline std::string format(const T &value) { 16 | static std::locale loc(""); 17 | std::stringstream ss; 18 | ss.imbue(loc); 19 | ss << value; 20 | return ss.str(); 21 | } 22 | 23 | template <> 24 | inline std::string format(const double &value) { 25 | static std::locale loc(""); 26 | std::stringstream ss; 27 | ss.imbue(loc); 28 | ss << std::fixed << std::setprecision(1) << value; 29 | return ss.str(); 30 | } 31 | 32 | } // namespace utils 33 | -------------------------------------------------------------------------------- /ext/spdlog/cmake/ide.cmake: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------------------------- 2 | # IDE support for headers 3 | # --------------------------------------------------------------------------------------- 4 | set(SPDLOG_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/../include") 5 | 6 | file(GLOB SPDLOG_TOP_HEADERS "${SPDLOG_HEADERS_DIR}/spdlog/*.h") 7 | file(GLOB SPDLOG_DETAILS_HEADERS "${SPDLOG_HEADERS_DIR}/spdlog/details/*.h") 8 | file(GLOB SPDLOG_SINKS_HEADERS "${SPDLOG_HEADERS_DIR}/spdlog/sinks/*.h") 9 | file(GLOB SPDLOG_FMT_HEADERS "${SPDLOG_HEADERS_DIR}/spdlog/fmt/*.h") 10 | file(GLOB SPDLOG_FMT_BUNDELED_HEADERS "${SPDLOG_HEADERS_DIR}/spdlog/fmt/bundled/*.h") 11 | set(SPDLOG_ALL_HEADERS ${SPDLOG_TOP_HEADERS} ${SPDLOG_DETAILS_HEADERS} ${SPDLOG_SINKS_HEADERS} ${SPDLOG_FMT_HEADERS} 12 | ${SPDLOG_FMT_BUNDELED_HEADERS}) 13 | 14 | source_group("Header Files\\spdlog" FILES ${SPDLOG_TOP_HEADERS}) 15 | source_group("Header Files\\spdlog\\details" FILES ${SPDLOG_DETAILS_HEADERS}) 16 | source_group("Header Files\\spdlog\\sinks" FILES ${SPDLOG_SINKS_HEADERS}) 17 | source_group("Header Files\\spdlog\\fmt" FILES ${SPDLOG_FMT_HEADERS}) 18 | source_group("Header Files\\spdlog\\fmt\\bundled\\" FILES ${SPDLOG_FMT_BUNDELED_HEADERS}) 19 | -------------------------------------------------------------------------------- /ext/spdlog/cmake/spdlog.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | includedir=@PKG_CONFIG_INCLUDEDIR@ 4 | libdir=@PKG_CONFIG_LIBDIR@ 5 | 6 | Name: lib@PROJECT_NAME@ 7 | Description: Fast C++ logging library. 8 | URL: https://github.com/gabime/@PROJECT_NAME@ 9 | Version: @SPDLOG_VERSION@ 10 | CFlags: -I${includedir} @PKG_CONFIG_DEFINES@ 11 | Libs: -L${libdir} -lspdlog -pthread 12 | Requires: @PKG_CONFIG_REQUIRES@ 13 | 14 | -------------------------------------------------------------------------------- /ext/spdlog/cmake/spdlogConfig.cmake.in: -------------------------------------------------------------------------------- 1 | # Copyright(c) 2019 spdlog authors 2 | # Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | @PACKAGE_INIT@ 5 | 6 | find_package(Threads REQUIRED) 7 | 8 | set(SPDLOG_FMT_EXTERNAL @SPDLOG_FMT_EXTERNAL@) 9 | set(SPDLOG_FMT_EXTERNAL_HO @SPDLOG_FMT_EXTERNAL_HO@) 10 | set(config_targets_file @config_targets_file@) 11 | 12 | if(SPDLOG_FMT_EXTERNAL OR SPDLOG_FMT_EXTERNAL_HO) 13 | include(CMakeFindDependencyMacro) 14 | find_dependency(fmt CONFIG) 15 | endif() 16 | 17 | 18 | include("${CMAKE_CURRENT_LIST_DIR}/${config_targets_file}") 19 | 20 | check_required_components(spdlog) 21 | -------------------------------------------------------------------------------- /ext/spdlog/cmake/version.rc.in: -------------------------------------------------------------------------------- 1 | #define APSTUDIO_READONLY_SYMBOLS 2 | #include 3 | #undef APSTUDIO_READONLY_SYMBOLS 4 | 5 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 6 | 7 | 8 | VS_VERSION_INFO VERSIONINFO 9 | FILEVERSION @SPDLOG_VERSION_MAJOR@,@SPDLOG_VERSION_MINOR@,@SPDLOG_VERSION_PATCH@,0 10 | PRODUCTVERSION @SPDLOG_VERSION_MAJOR@,@SPDLOG_VERSION_MINOR@,@SPDLOG_VERSION_PATCH@,0 11 | FILEFLAGSMASK 0x3fL 12 | #ifdef _DEBUG 13 | FILEFLAGS 0x1L 14 | #else 15 | FILEFLAGS 0x0L 16 | #endif 17 | FILEOS 0x40004L 18 | FILETYPE 0x2L 19 | FILESUBTYPE 0x0L 20 | BEGIN 21 | BLOCK "StringFileInfo" 22 | BEGIN 23 | BLOCK "040904b0" 24 | BEGIN 25 | VALUE "FileDescription", "spdlog dll\0" 26 | VALUE "FileVersion", "@SPDLOG_VERSION@.0\0" 27 | VALUE "InternalName", "spdlog.dll\0" 28 | VALUE "LegalCopyright", "Copyright (C) spdlog\0" 29 | VALUE "ProductName", "spdlog\0" 30 | VALUE "ProductVersion", "@SPDLOG_VERSION@.0\0" 31 | END 32 | END 33 | BLOCK "VarFileInfo" 34 | BEGIN 35 | VALUE "Translation", 0x409, 1200 36 | END 37 | END 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /ext/spdlog/example/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright(c) 2019 spdlog authors Distributed under the MIT License (http://opensource.org/licenses/MIT) 2 | 3 | cmake_minimum_required(VERSION 3.11) 4 | project(spdlog_examples CXX) 5 | 6 | if(NOT TARGET spdlog) 7 | # Stand-alone build 8 | find_package(spdlog REQUIRED) 9 | endif() 10 | 11 | # --------------------------------------------------------------------------------------- 12 | # Example of using pre-compiled library 13 | # --------------------------------------------------------------------------------------- 14 | add_executable(example example.cpp) 15 | target_link_libraries(example PRIVATE spdlog::spdlog $<$:ws2_32>) 16 | 17 | # --------------------------------------------------------------------------------------- 18 | # Example of using header-only library 19 | # --------------------------------------------------------------------------------------- 20 | if(SPDLOG_BUILD_EXAMPLE_HO) 21 | add_executable(example_header_only example.cpp) 22 | target_link_libraries(example_header_only PRIVATE spdlog::spdlog_header_only) 23 | endif() 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/cfg/env.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | #include 6 | #include 7 | #include 8 | 9 | // 10 | // Init levels and patterns from env variables SPDLOG_LEVEL 11 | // Inspired from Rust's "env_logger" crate (https://crates.io/crates/env_logger). 12 | // Note - fallback to "info" level on unrecognized levels 13 | // 14 | // Examples: 15 | // 16 | // set global level to debug: 17 | // export SPDLOG_LEVEL=debug 18 | // 19 | // turn off all logging except for logger1: 20 | // export SPDLOG_LEVEL="*=off,logger1=debug" 21 | // 22 | 23 | // turn off all logging except for logger1 and logger2: 24 | // export SPDLOG_LEVEL="off,logger1=debug,logger2=info" 25 | 26 | namespace spdlog { 27 | namespace cfg { 28 | inline void load_env_levels() { 29 | auto env_val = details::os::getenv("SPDLOG_LEVEL"); 30 | if (!env_val.empty()) { 31 | helpers::load_levels(env_val); 32 | } 33 | } 34 | 35 | } // namespace cfg 36 | } // namespace spdlog 37 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/cfg/helpers.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | namespace spdlog { 10 | namespace cfg { 11 | namespace helpers { 12 | // 13 | // Init levels from given string 14 | // 15 | // Examples: 16 | // 17 | // set global level to debug: "debug" 18 | // turn off all logging except for logger1: "off,logger1=debug" 19 | // turn off all logging except for logger1 and logger2: "off,logger1=debug,logger2=info" 20 | // 21 | SPDLOG_API void load_levels(const std::string &txt); 22 | } // namespace helpers 23 | 24 | } // namespace cfg 25 | } // namespace spdlog 26 | 27 | #ifdef SPDLOG_HEADER_ONLY 28 | #include "helpers-inl.h" 29 | #endif // SPDLOG_HEADER_ONLY 30 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/backtracer.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | // Store log messages in circular buffer. 14 | // Useful for storing debug data in case of error/warning happens. 15 | 16 | namespace spdlog { 17 | namespace details { 18 | class SPDLOG_API backtracer { 19 | mutable std::mutex mutex_; 20 | std::atomic enabled_{false}; 21 | circular_q messages_; 22 | 23 | public: 24 | backtracer() = default; 25 | backtracer(const backtracer &other); 26 | 27 | backtracer(backtracer &&other) SPDLOG_NOEXCEPT; 28 | backtracer &operator=(backtracer other); 29 | 30 | void enable(size_t size); 31 | void disable(); 32 | bool enabled() const; 33 | void push_back(const log_msg &msg); 34 | bool empty() const; 35 | 36 | // pop all items in the q and apply the given fun on each of them. 37 | void foreach_pop(std::function fun); 38 | }; 39 | 40 | } // namespace details 41 | } // namespace spdlog 42 | 43 | #ifdef SPDLOG_HEADER_ONLY 44 | #include "backtracer-inl.h" 45 | #endif 46 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/console_globals.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | namespace spdlog { 10 | namespace details { 11 | 12 | struct console_mutex { 13 | using mutex_t = std::mutex; 14 | static mutex_t &mutex() { 15 | static mutex_t s_mutex; 16 | return s_mutex; 17 | } 18 | }; 19 | 20 | struct console_nullmutex { 21 | using mutex_t = null_mutex; 22 | static mutex_t &mutex() { 23 | static mutex_t s_mutex; 24 | return s_mutex; 25 | } 26 | }; 27 | } // namespace details 28 | } // namespace spdlog 29 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/log_msg.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | namespace spdlog { 10 | namespace details { 11 | struct SPDLOG_API log_msg { 12 | log_msg() = default; 13 | log_msg(log_clock::time_point log_time, 14 | source_loc loc, 15 | string_view_t logger_name, 16 | level::level_enum lvl, 17 | string_view_t msg); 18 | log_msg(source_loc loc, string_view_t logger_name, level::level_enum lvl, string_view_t msg); 19 | log_msg(string_view_t logger_name, level::level_enum lvl, string_view_t msg); 20 | log_msg(const log_msg &other) = default; 21 | log_msg &operator=(const log_msg &other) = default; 22 | 23 | string_view_t logger_name; 24 | level::level_enum level{level::off}; 25 | log_clock::time_point time; 26 | size_t thread_id{0}; 27 | 28 | // wrapping the formatted text with color (updated by pattern_formatter). 29 | mutable size_t color_range_start{0}; 30 | mutable size_t color_range_end{0}; 31 | 32 | source_loc source; 33 | string_view_t payload; 34 | }; 35 | } // namespace details 36 | } // namespace spdlog 37 | 38 | #ifdef SPDLOG_HEADER_ONLY 39 | #include "log_msg-inl.h" 40 | #endif 41 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/log_msg_buffer.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | 8 | namespace spdlog { 9 | namespace details { 10 | 11 | // Extend log_msg with internal buffer to store its payload. 12 | // This is needed since log_msg holds string_views that points to stack data. 13 | 14 | class SPDLOG_API log_msg_buffer : public log_msg { 15 | memory_buf_t buffer; 16 | void update_string_views(); 17 | 18 | public: 19 | log_msg_buffer() = default; 20 | explicit log_msg_buffer(const log_msg &orig_msg); 21 | log_msg_buffer(const log_msg_buffer &other); 22 | log_msg_buffer(log_msg_buffer &&other) SPDLOG_NOEXCEPT; 23 | log_msg_buffer &operator=(const log_msg_buffer &other); 24 | log_msg_buffer &operator=(log_msg_buffer &&other) SPDLOG_NOEXCEPT; 25 | }; 26 | 27 | } // namespace details 28 | } // namespace spdlog 29 | 30 | #ifdef SPDLOG_HEADER_ONLY 31 | #include "log_msg_buffer-inl.h" 32 | #endif 33 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/null_mutex.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | // null, no cost dummy "mutex" and dummy "atomic" int 9 | 10 | namespace spdlog { 11 | namespace details { 12 | struct null_mutex { 13 | void lock() const {} 14 | void unlock() const {} 15 | }; 16 | 17 | struct null_atomic_int { 18 | int value; 19 | null_atomic_int() = default; 20 | 21 | explicit null_atomic_int(int new_value) 22 | : value(new_value) {} 23 | 24 | int load(std::memory_order = std::memory_order_relaxed) const { return value; } 25 | 26 | void store(int new_value, std::memory_order = std::memory_order_relaxed) { value = new_value; } 27 | 28 | int exchange(int new_value, std::memory_order = std::memory_order_relaxed) { 29 | std::swap(new_value, value); 30 | return new_value; // return value before the call 31 | } 32 | }; 33 | 34 | } // namespace details 35 | } // namespace spdlog 36 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/periodic_worker-inl.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #ifndef SPDLOG_HEADER_ONLY 7 | #include 8 | #endif 9 | 10 | namespace spdlog { 11 | namespace details { 12 | 13 | // stop the worker thread and join it 14 | SPDLOG_INLINE periodic_worker::~periodic_worker() { 15 | if (worker_thread_.joinable()) { 16 | { 17 | std::lock_guard lock(mutex_); 18 | active_ = false; 19 | } 20 | cv_.notify_one(); 21 | worker_thread_.join(); 22 | } 23 | } 24 | 25 | } // namespace details 26 | } // namespace spdlog 27 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/synchronous_factory.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include "registry.h" 7 | 8 | namespace spdlog { 9 | 10 | // Default logger factory- creates synchronous loggers 11 | class logger; 12 | 13 | struct synchronous_factory { 14 | template 15 | static std::shared_ptr create(std::string logger_name, SinkArgs &&...args) { 16 | auto sink = std::make_shared(std::forward(args)...); 17 | auto new_logger = std::make_shared(std::move(logger_name), std::move(sink)); 18 | details::registry::instance().initialize_logger(new_logger); 19 | return new_logger; 20 | } 21 | }; 22 | } // namespace spdlog 23 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/details/windows_include.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef NOMINMAX 4 | #define NOMINMAX // prevent windows redefining min/max 5 | #endif 6 | 7 | #ifndef WIN32_LEAN_AND_MEAN 8 | #define WIN32_LEAN_AND_MEAN 9 | #endif 10 | 11 | #include 12 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/bundled/core.h: -------------------------------------------------------------------------------- 1 | // This file is only provided for compatibility and may be removed in future 2 | // versions. Use fmt/base.h if you don't need fmt::format and fmt/format.h 3 | // otherwise. 4 | 5 | #include "format.h" 6 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/bundled/locale.h: -------------------------------------------------------------------------------- 1 | #include "xchar.h" 2 | #warning fmt/locale.h is deprecated, include fmt/format.h or fmt/xchar.h instead 3 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/chrono.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's chrono support 9 | // 10 | #include 11 | 12 | #if !defined(SPDLOG_USE_STD_FORMAT) 13 | #if !defined(SPDLOG_FMT_EXTERNAL) 14 | #ifdef SPDLOG_HEADER_ONLY 15 | #ifndef FMT_HEADER_ONLY 16 | #define FMT_HEADER_ONLY 17 | #endif 18 | #endif 19 | #include 20 | #else 21 | #include 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/compile.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's compile-time support 9 | // 10 | #include 11 | 12 | #if !defined(SPDLOG_USE_STD_FORMAT) 13 | #if !defined(SPDLOG_FMT_EXTERNAL) 14 | #ifdef SPDLOG_HEADER_ONLY 15 | #ifndef FMT_HEADER_ONLY 16 | #define FMT_HEADER_ONLY 17 | #endif 18 | #endif 19 | #include 20 | #else 21 | #include 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/fmt.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016-2018 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | 8 | // 9 | // Include a bundled header-only copy of fmtlib or an external one. 10 | // By default spdlog include its own copy. 11 | // 12 | #include 13 | 14 | #if defined(SPDLOG_USE_STD_FORMAT) // SPDLOG_USE_STD_FORMAT is defined - use std::format 15 | #include 16 | #elif !defined(SPDLOG_FMT_EXTERNAL) 17 | #if !defined(SPDLOG_COMPILED_LIB) && !defined(FMT_HEADER_ONLY) 18 | #define FMT_HEADER_ONLY 19 | #endif 20 | #ifndef FMT_USE_WINDOWS_H 21 | #define FMT_USE_WINDOWS_H 0 22 | #endif 23 | 24 | #include 25 | #include 26 | 27 | #else // SPDLOG_FMT_EXTERNAL is defined - use external fmtlib 28 | #include 29 | #include 30 | #endif 31 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/ostr.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's ostream support 9 | // 10 | #include 11 | 12 | #if !defined(SPDLOG_USE_STD_FORMAT) 13 | #if !defined(SPDLOG_FMT_EXTERNAL) 14 | #ifdef SPDLOG_HEADER_ONLY 15 | #ifndef FMT_HEADER_ONLY 16 | #define FMT_HEADER_ONLY 17 | #endif 18 | #endif 19 | #include 20 | #else 21 | #include 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/ranges.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's ranges support 9 | // 10 | #include 11 | 12 | #if !defined(SPDLOG_USE_STD_FORMAT) 13 | #if !defined(SPDLOG_FMT_EXTERNAL) 14 | #ifdef SPDLOG_HEADER_ONLY 15 | #ifndef FMT_HEADER_ONLY 16 | #define FMT_HEADER_ONLY 17 | #endif 18 | #endif 19 | #include 20 | #else 21 | #include 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/std.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's std support (for formatting e.g. 9 | // std::filesystem::path, std::thread::id, std::monostate, std::variant, ...) 10 | // 11 | #include 12 | 13 | #if !defined(SPDLOG_USE_STD_FORMAT) 14 | #if !defined(SPDLOG_FMT_EXTERNAL) 15 | #ifdef SPDLOG_HEADER_ONLY 16 | #ifndef FMT_HEADER_ONLY 17 | #define FMT_HEADER_ONLY 18 | #endif 19 | #endif 20 | #include 21 | #else 22 | #include 23 | #endif 24 | #endif 25 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fmt/xchar.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(c) 2016 Gabi Melman. 3 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 | // 5 | 6 | #pragma once 7 | // 8 | // include bundled or external copy of fmtlib's xchar support 9 | // 10 | #include 11 | 12 | #if !defined(SPDLOG_USE_STD_FORMAT) 13 | #if !defined(SPDLOG_FMT_EXTERNAL) 14 | #ifdef SPDLOG_HEADER_ONLY 15 | #ifndef FMT_HEADER_ONLY 16 | #define FMT_HEADER_ONLY 17 | #endif 18 | #endif 19 | #include 20 | #else 21 | #include 22 | #endif 23 | #endif 24 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/formatter.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | namespace spdlog { 10 | 11 | class formatter { 12 | public: 13 | virtual ~formatter() = default; 14 | virtual void format(const details::log_msg &msg, memory_buf_t &dest) = 0; 15 | virtual std::unique_ptr clone() const = 0; 16 | }; 17 | } // namespace spdlog 18 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/fwd.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | namespace spdlog { 7 | class logger; 8 | class formatter; 9 | 10 | namespace sinks { 11 | class sink; 12 | } 13 | 14 | namespace level { 15 | enum level_enum : int; 16 | } 17 | 18 | } // namespace spdlog 19 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/sinks/sink-inl.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #ifndef SPDLOG_HEADER_ONLY 7 | #include 8 | #endif 9 | 10 | #include 11 | 12 | SPDLOG_INLINE bool spdlog::sinks::sink::should_log(spdlog::level::level_enum msg_level) const { 13 | return msg_level >= level_.load(std::memory_order_relaxed); 14 | } 15 | 16 | SPDLOG_INLINE void spdlog::sinks::sink::set_level(level::level_enum log_level) { 17 | level_.store(log_level, std::memory_order_relaxed); 18 | } 19 | 20 | SPDLOG_INLINE spdlog::level::level_enum spdlog::sinks::sink::level() const { 21 | return static_cast(level_.load(std::memory_order_relaxed)); 22 | } 23 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/sinks/sink.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | namespace spdlog { 10 | 11 | namespace sinks { 12 | class SPDLOG_API sink { 13 | public: 14 | virtual ~sink() = default; 15 | virtual void log(const details::log_msg &msg) = 0; 16 | virtual void flush() = 0; 17 | virtual void set_pattern(const std::string &pattern) = 0; 18 | virtual void set_formatter(std::unique_ptr sink_formatter) = 0; 19 | 20 | void set_level(level::level_enum log_level); 21 | level::level_enum level() const; 22 | bool should_log(level::level_enum msg_level) const; 23 | 24 | protected: 25 | // sink log level - default is all 26 | level_t level_{level::trace}; 27 | }; 28 | 29 | } // namespace sinks 30 | } // namespace spdlog 31 | 32 | #ifdef SPDLOG_HEADER_ONLY 33 | #include "sink-inl.h" 34 | #endif 35 | -------------------------------------------------------------------------------- /ext/spdlog/include/spdlog/version.h: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #pragma once 5 | 6 | #define SPDLOG_VER_MAJOR 1 7 | #define SPDLOG_VER_MINOR 15 8 | #define SPDLOG_VER_PATCH 0 9 | 10 | #define SPDLOG_TO_VERSION(major, minor, patch) (major * 10000 + minor * 100 + patch) 11 | #define SPDLOG_VERSION SPDLOG_TO_VERSION(SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH) 12 | -------------------------------------------------------------------------------- /ext/spdlog/logos/spdlog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/ext/spdlog/logos/spdlog.png -------------------------------------------------------------------------------- /ext/spdlog/scripts/ci_setup_clang.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ex 4 | 5 | VERSION=$1 6 | 7 | apt-get update 8 | apt-get install -y libc++-${VERSION}-dev libc++abi-${VERSION}-dev 9 | 10 | if [[ "${VERSION}" -ge 12 ]]; then 11 | apt-get install -y --no-install-recommends libunwind-${VERSION}-dev 12 | fi 13 | -------------------------------------------------------------------------------- /ext/spdlog/scripts/extract_version.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os 4 | import re 5 | 6 | base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 7 | config_h = os.path.join(base_path, 'include', 'spdlog', 'version.h') 8 | data = {'MAJOR': 0, 'MINOR': 0, 'PATCH': 0} 9 | reg = re.compile(r'^\s*#define\s+SPDLOG_VER_([A-Z]+)\s+([0-9]+).*$') 10 | 11 | with open(config_h, 'r') as fp: 12 | for l in fp: 13 | m = reg.match(l) 14 | if m: 15 | data[m.group(1)] = int(m.group(2)) 16 | 17 | print(f"{data['MAJOR']}.{data['MINOR']}.{data['PATCH']}") 18 | -------------------------------------------------------------------------------- /ext/spdlog/scripts/format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd "$(dirname "$0")"/.. 4 | pwd 5 | find_sources="find include src tests example bench -not ( -path include/spdlog/fmt/bundled -prune ) -type f -name *\.h -o -name *\.cpp" 6 | echo -n "Running dos2unix " 7 | $find_sources | xargs -I {} sh -c "dos2unix '{}' 2>/dev/null; echo -n '.'" 8 | echo 9 | echo -n "Running clang-format " 10 | 11 | $find_sources | xargs -I {} sh -c "clang-format -i {}; echo -n '.'" 12 | 13 | echo 14 | echo -n "Running cmake-format " 15 | find . -type f -name "CMakeLists.txt" -o -name "*\.cmake"|grep -v bundled|grep -v build|xargs -I {} sh -c "cmake-format --line-width 120 --tab-size 4 --max-subgroups-hwrap 4 -i {}; echo -n '.'" 16 | echo 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ext/spdlog/src/async.cpp: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #ifndef SPDLOG_COMPILED_LIB 5 | #error Please define SPDLOG_COMPILED_LIB to compile this file. 6 | #endif 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | -------------------------------------------------------------------------------- /ext/spdlog/src/cfg.cpp: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #ifndef SPDLOG_COMPILED_LIB 5 | #error Please define SPDLOG_COMPILED_LIB to compile this file. 6 | #endif 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /ext/spdlog/src/file_sinks.cpp: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #ifndef SPDLOG_COMPILED_LIB 5 | #error Please define SPDLOG_COMPILED_LIB to compile this file. 6 | #endif 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | template class SPDLOG_API spdlog::sinks::basic_file_sink; 16 | template class SPDLOG_API spdlog::sinks::basic_file_sink; 17 | 18 | #include 19 | template class SPDLOG_API spdlog::sinks::rotating_file_sink; 20 | template class SPDLOG_API spdlog::sinks::rotating_file_sink; 21 | -------------------------------------------------------------------------------- /ext/spdlog/src/spdlog.cpp: -------------------------------------------------------------------------------- 1 | // Copyright(c) 2015-present, Gabi Melman & spdlog contributors. 2 | // Distributed under the MIT License (http://opensource.org/licenses/MIT) 3 | 4 | #ifndef SPDLOG_COMPILED_LIB 5 | #error Please define SPDLOG_COMPILED_LIB to compile this file. 6 | #endif 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | #include 22 | 23 | // template instantiate logger constructor with sinks init list 24 | template SPDLOG_API spdlog::logger::logger(std::string name, 25 | sinks_init_list::iterator begin, 26 | sinks_init_list::iterator end); 27 | template class SPDLOG_API spdlog::sinks::base_sink; 28 | template class SPDLOG_API spdlog::sinks::base_sink; 29 | -------------------------------------------------------------------------------- /ext/spdlog/tests/includes.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(__GNUC__) && __GNUC__ == 12 4 | #pragma GCC diagnostic push 5 | #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" // Workaround for GCC 12 6 | #endif 7 | #include 8 | #if defined(__GNUC__) && __GNUC__ == 12 9 | #pragma GCC diagnostic pop 10 | #endif 11 | 12 | #include "utils.h" 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG 25 | 26 | #include "spdlog/spdlog.h" 27 | #include "spdlog/async.h" 28 | #include "spdlog/details/fmt_helper.h" 29 | #include "spdlog/details/os.h" 30 | 31 | #ifndef SPDLOG_NO_TLS 32 | #include "spdlog/mdc.h" 33 | #endif 34 | 35 | #include "spdlog/sinks/basic_file_sink.h" 36 | #include "spdlog/sinks/daily_file_sink.h" 37 | #include "spdlog/sinks/null_sink.h" 38 | #include "spdlog/sinks/ostream_sink.h" 39 | #include "spdlog/sinks/rotating_file_sink.h" 40 | #include "spdlog/sinks/stdout_color_sinks.h" 41 | #include "spdlog/sinks/msvc_sink.h" 42 | #include "spdlog/pattern_formatter.h" 43 | -------------------------------------------------------------------------------- /ext/spdlog/tests/main.cpp: -------------------------------------------------------------------------------- 1 | #if defined(__GNUC__) && __GNUC__ == 12 2 | #pragma GCC diagnostic push 3 | #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" // Workaround for GCC 12 4 | #endif 5 | 6 | #include 7 | 8 | #if defined(__GNUC__) && __GNUC__ == 12 9 | #pragma GCC diagnostic pop 10 | #endif 11 | -------------------------------------------------------------------------------- /ext/spdlog/tests/test_circular_q.cpp: -------------------------------------------------------------------------------- 1 | #include "includes.h" 2 | #include "spdlog/details/circular_q.h" 3 | 4 | using q_type = spdlog::details::circular_q; 5 | TEST_CASE("test_size", "[circular_q]") { 6 | const size_t q_size = 4; 7 | q_type q(q_size); 8 | REQUIRE(q.size() == 0); 9 | REQUIRE(q.empty() == true); 10 | for (size_t i = 0; i < q_size; i++) { 11 | q.push_back(std::move(i)); 12 | } 13 | REQUIRE(q.size() == q_size); 14 | q.push_back(999); 15 | REQUIRE(q.size() == q_size); 16 | } 17 | 18 | TEST_CASE("test_rolling", "[circular_q]") { 19 | const size_t q_size = 4; 20 | q_type q(q_size); 21 | 22 | for (size_t i = 0; i < q_size + 2; i++) { 23 | q.push_back(std::move(i)); 24 | } 25 | 26 | REQUIRE(q.size() == q_size); 27 | 28 | REQUIRE(q.front() == 2); 29 | q.pop_front(); 30 | 31 | REQUIRE(q.front() == 3); 32 | q.pop_front(); 33 | 34 | REQUIRE(q.front() == 4); 35 | q.pop_front(); 36 | 37 | REQUIRE(q.front() == 5); 38 | q.pop_front(); 39 | 40 | REQUIRE(q.empty()); 41 | 42 | q.push_back(6); 43 | REQUIRE(q.front() == 6); 44 | } 45 | 46 | TEST_CASE("test_empty", "[circular_q]") { 47 | q_type q(0); 48 | q.push_back(1); 49 | REQUIRE(q.empty()); 50 | } -------------------------------------------------------------------------------- /ext/spdlog/tests/test_systemd.cpp: -------------------------------------------------------------------------------- 1 | #include "includes.h" 2 | #include "spdlog/sinks/systemd_sink.h" 3 | 4 | TEST_CASE("systemd", "[all]") { 5 | auto systemd_sink = std::make_shared(); 6 | spdlog::logger logger("spdlog_systemd_test", systemd_sink); 7 | logger.set_level(spdlog::level::trace); 8 | logger.trace("test spdlog trace"); 9 | logger.debug("test spdlog debug"); 10 | SPDLOG_LOGGER_INFO((&logger), "test spdlog info"); 11 | SPDLOG_LOGGER_WARN((&logger), "test spdlog warn"); 12 | SPDLOG_LOGGER_ERROR((&logger), "test spdlog error"); 13 | SPDLOG_LOGGER_CRITICAL((&logger), "test spdlog critical"); 14 | } 15 | -------------------------------------------------------------------------------- /ext/spdlog/tests/utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | std::size_t count_files(const std::string &folder); 7 | 8 | void prepare_logdir(); 9 | 10 | std::string file_contents(const std::string &filename); 11 | 12 | std::size_t count_lines(const std::string &filename); 13 | 14 | void require_message_count(const std::string &filename, const std::size_t messages); 15 | 16 | std::size_t get_filesize(const std::string &filename); 17 | 18 | bool ends_with(std::string const &value, std::string const &ending); -------------------------------------------------------------------------------- /ext/spdmon/.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: '*,-fuchsia-*,-google-*,-zircon-*,-abseil-*,-modernize-use-trailing-return-type,-llvm-*,-llvmlibc-*' 3 | WarningsAsErrors: '' 4 | HeaderFilterRegex: '' 5 | AnalyzeTemporaryDtors: false 6 | FormatStyle: none 7 | CheckOptions: 8 | - key: google-readability-braces-around-statements.ShortStatementLines 9 | value: '1' 10 | - key: google-readability-function-size.StatementThreshold 11 | value: '800' 12 | - key: google-readability-namespace-comments.ShortNamespaceLines 13 | value: '10' 14 | - key: google-readability-namespace-comments.SpacesBeforeComments 15 | value: '2' 16 | - key: modernize-loop-convert.MaxCopySize 17 | value: '16' 18 | - key: modernize-loop-convert.MinConfidence 19 | value: reasonable 20 | - key: modernize-loop-convert.NamingStyle 21 | value: CamelCase 22 | - key: modernize-pass-by-value.IncludeStyle 23 | value: llvm 24 | - key: modernize-replace-auto-ptr.IncludeStyle 25 | value: llvm 26 | - key: modernize-use-nullptr.NullMacros 27 | value: 'NULL' 28 | ... 29 | 30 | -------------------------------------------------------------------------------- /ext/spdmon/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /ext/spdmon/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | logs/ 3 | .vscode 4 | .idea 5 | /cmake-build-debug 6 | /cmake-build-release -------------------------------------------------------------------------------- /ext/spdmon/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "external/spdlog"] 2 | path = external/spdlog 3 | url = https://github.com/gabime/spdlog -------------------------------------------------------------------------------- /ext/spdmon/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 michalber 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ext/spdmon/benchmark/src/utils.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace utils 6 | { 7 | 8 | template 9 | inline std::string format(const T &value) 10 | { 11 | static std::locale loc(""); 12 | std::stringstream ss; 13 | ss.imbue(loc); 14 | ss << value; 15 | return ss.str(); 16 | } 17 | 18 | template <> 19 | inline std::string format(const double &value) 20 | { 21 | static std::locale loc(""); 22 | std::stringstream ss; 23 | ss.imbue(loc); 24 | ss << std::fixed << std::setprecision(1) << value; 25 | return ss.str(); 26 | } 27 | 28 | } // namespace utils -------------------------------------------------------------------------------- /ext/spdmon/cmake/Conan.cmake: -------------------------------------------------------------------------------- 1 | if(${PROJECT_NAME}_ENABLE_CONAN) 2 | # 3 | # Setup Conan requires and options here: 4 | # 5 | 6 | set(${PROJECT_NAME}_CONAN_REQUIRES "") 7 | set(${PROJECT_NAME}_CONAN_OPTIONS "") 8 | 9 | # 10 | # If `conan.cmake` (from https://github.com/conan-io/cmake-conan) does not exist, download it. 11 | # 12 | if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") 13 | message( 14 | STATUS 15 | "Downloading conan.cmake from https://github.com/conan-io/cmake-conan..." 16 | ) 17 | file(DOWNLOAD "https://github.com/conan-io/cmake-conan/raw/v0.15/conan.cmake" 18 | "${CMAKE_BINARY_DIR}/conan.cmake" 19 | ) 20 | message(STATUS "Cmake-Conan downloaded succesfully.") 21 | endif() 22 | 23 | include(${CMAKE_BINARY_DIR}/conan.cmake) 24 | 25 | conan_add_remote(NAME bincrafters 26 | URL 27 | https://api.bintray.com/conan/bincrafters/public-conan 28 | ) 29 | 30 | conan_cmake_run( 31 | REQUIRES 32 | ${CONAN_REQUIRES} 33 | OPTIONS 34 | ${CONAN_OPTIONS} 35 | BASIC_SETUP 36 | CMAKE_TARGETS # Individual targets to link to 37 | BUILD 38 | missing 39 | ) 40 | 41 | verbose_message("Conan is setup and all requires have been installed.") 42 | endif() 43 | -------------------------------------------------------------------------------- /ext/spdmon/cmake/Doxygen.cmake: -------------------------------------------------------------------------------- 1 | if(${PROJECT_NAME}_ENABLE_DOXYGEN) 2 | set(DOXYGEN_CALLER_GRAPH YES) 3 | set(DOXYGEN_CALL_GRAPH YES) 4 | set(DOXYGEN_EXTRACT_ALL YES) 5 | set(DOXYGEN_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs) 6 | 7 | find_package(Doxygen REQUIRED dot) 8 | doxygen_add_docs(doxygen-docs ${PROJECT_SOURCE_DIR}) 9 | 10 | verbose_message("Doxygen has been setup and documentation is now available.") 11 | endif() 12 | -------------------------------------------------------------------------------- /ext/spdmon/cmake/SourcesAndHeaders.cmake: -------------------------------------------------------------------------------- 1 | set(sources 2 | 3 | ) 4 | 5 | set(exe_sources 6 | ${sources} 7 | src/example.cpp 8 | ) 9 | 10 | set(headers 11 | spdmon.hpp 12 | ) 13 | 14 | set(linking_dep 15 | 16 | ) -------------------------------------------------------------------------------- /ext/spdmon/cmake/StaticAnalyzers.cmake: -------------------------------------------------------------------------------- 1 | if(${PROJECT_NAME}_ENABLE_CLANG_TIDY) 2 | find_program(CLANGTIDY clang-tidy) 3 | if(CLANGTIDY) 4 | set(CMAKE_CXX_CLANG_TIDY ${CLANGTIDY} -extra-arg=-Wno-unknown-warning-option) 5 | message("Clang-Tidy finished setting up.") 6 | else() 7 | message(SEND_ERROR "Clang-Tidy requested but executable not found.") 8 | endif() 9 | endif() 10 | 11 | if(${PROJECT_NAME}_ENABLE_CPPCHECK) 12 | find_program(CPPCHECK cppcheck) 13 | if(CPPCHECK) 14 | set(CMAKE_CXX_CPPCHECK ${CPPCHECK} --suppress=missingInclude --enable=all 15 | --inline-suppr --inconclusive) 16 | message("Cppcheck finished setting up.") 17 | else() 18 | message(SEND_ERROR "Cppcheck requested but executable not found.") 19 | endif() 20 | endif() 21 | -------------------------------------------------------------------------------- /ext/spdmon/cmake/Vcpkg.cmake: -------------------------------------------------------------------------------- 1 | if(${PROJECT_NAME}_ENABLE_VCPKG) 2 | # 3 | # If `vcpkg.cmake` (from https://github.com/microsoft/vcpkg) does not exist, download it. 4 | # 5 | if(NOT EXISTS "${CMAKE_BINARY_DIR}/vcpkg.cmake") 6 | message( 7 | STATUS 8 | "Downloading `vcpkg.cmake` from https://github.com/microsoft/vcpkg..." 9 | ) 10 | file(DOWNLOAD "https://github.com/microsoft/vcpkg/raw/master/scripts/buildsystems/vcpkg.cmake" 11 | "${CMAKE_BINARY_DIR}/vcpkg.cmake" 12 | ) 13 | message(STATUS "Vcpkg config downloaded succesfully.") 14 | endif() 15 | 16 | if(${PROJECT_NAME}_VERBOSE_OUTPUT) 17 | set(VCPKG_VERBOSE ON) 18 | endif() 19 | set(CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" "${CMAKE_BINARY_DIR}/vcpkg.cmake") 20 | endif() 21 | -------------------------------------------------------------------------------- /ext/spdmon/cmake/spdmonConfig.cmake.in: -------------------------------------------------------------------------------- 1 | set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@) 2 | 3 | @PACKAGE_INIT@ 4 | 5 | set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@") 6 | 7 | include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") 8 | 9 | check_required_components(@PROJECT_NAME@) 10 | -------------------------------------------------------------------------------- /ext/spdmon/cmake/version.hpp.in: -------------------------------------------------------------------------------- 1 | #ifndef @PROJECT_NAME_UPPERCASE@_VERSION_H_ 2 | #define @PROJECT_NAME_UPPERCASE@_VERSION_H_ 3 | 4 | #define @PROJECT_NAME_UPPERCASE@_VERSION "@PROJECT_VERSION@" 5 | 6 | #define @PROJECT_NAME_UPPERCASE@_MAJOR_VERSION @PROJECT_VERSION_MAJOR@ 7 | #define @PROJECT_NAME_UPPERCASE@_MINOR_VERSION @PROJECT_VERSION_MINOR@ 8 | #define @PROJECT_NAME_UPPERCASE@_PATCH_VERSION @PROJECT_VERSION_PATCH@ 9 | 10 | #include 11 | 12 | void PrintAppVersion() 13 | { 14 | std::cout << "@PROJECT_NAME_UPPERCASE@_VERSION: "; 15 | std::cout.width(16); 16 | std::cout << std::right << @PROJECT_NAME_UPPERCASE@_VERSION << std::endl; 17 | } 18 | 19 | #endif // @PROJECT_NAME_UPPERCASE@_VERSION_H_ 20 | 21 | -------------------------------------------------------------------------------- /ext/spdmon/include/spdmon/version.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SPDMON_VERSION_H_ 2 | #define SPDMON_VERSION_H_ 3 | 4 | #define SPDMON_VERSION "1.0.0" 5 | 6 | #define SPDMON_MAJOR_VERSION 1 7 | #define SPDMON_MINOR_VERSION 0 8 | #define SPDMON_PATCH_VERSION 0 9 | 10 | #include 11 | 12 | void PrintAppVersion() 13 | { 14 | std::cout << "SPDMON_VERSION: "; 15 | std::cout.width(16); 16 | std::cout << std::right << SPDMON_VERSION << std::endl; 17 | } 18 | 19 | #endif // SPDMON_VERSION_H_ 20 | 21 | -------------------------------------------------------------------------------- /ext/spdmon/scripts/runClangFormat.sh: -------------------------------------------------------------------------------- 1 | cmake --build build --target clang-format -------------------------------------------------------------------------------- /ext/spdmon/scripts/runCpplint.sh: -------------------------------------------------------------------------------- 1 | cmake --build build --target cpplint-format -------------------------------------------------------------------------------- /ext/spdmon/src/CPPLINT.cfg: -------------------------------------------------------------------------------- 1 | # Don't search for additional CPPLINT.cfg in parent directories. 2 | set noparent 3 | # Use 'ART_' as the cpp header guard prefix (e.g. #ifndef ART_PATH_TO_FILE_H_). 4 | root=. 5 | # Limit line length. 6 | linelength=120 7 | # Ignore the following categories of errors, as specified by the filter: 8 | # (the filter settings are concatenated together) 9 | filter=-whitespace/braces, -whitespace/newline, -readability/casting -------------------------------------------------------------------------------- /ext/spdmon/test/src/main_test.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | TEST(ExampleTestGroup, TestName) 4 | { 5 | ASSERT_EQ(true, true); 6 | } 7 | 8 | int main(int argc, char **argv) 9 | { 10 | ::testing::InitGoogleTest(&argc, argv); 11 | return RUN_ALL_TESTS(); 12 | } 13 | -------------------------------------------------------------------------------- /include/lvr2/algorithm/pmp/DistancePointTriangle.h: -------------------------------------------------------------------------------- 1 | // Copyright 2011-2020 the Polygon Mesh Processing Library developers. 2 | // Distributed under a MIT-style license, see PMP_LICENSE.txt for details. 3 | 4 | #pragma once 5 | 6 | #include "lvr2/geometry/pmp/Types.h" 7 | 8 | namespace pmp { 9 | 10 | //! \addtogroup algorithms 11 | //! @{ 12 | 13 | //! Compute the distance of a point p to a line segment given by points (v0,v1). 14 | Scalar dist_point_line_segment(const Point& p, const Point& v0, const Point& v1, 15 | Point& nearest_point); 16 | 17 | //! Compute the distance of a point p to the triangle given by points (v0, v1, v2). 18 | Scalar dist_point_triangle(const Point& p, const Point& v0, const Point& v1, 19 | const Point& v2, Point& nearest_point); 20 | 21 | //! @} 22 | 23 | } // namespace pmp 24 | -------------------------------------------------------------------------------- /include/lvr2/display/BOct.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOCT_HPP_ 2 | #define BOCT_HPP_ 3 | 4 | 5 | namespace lvr2 6 | { 7 | 8 | struct BOct 9 | { 10 | long long m_child : 48; 11 | unsigned char m_valid : 8; 12 | unsigned char m_leaf : 8; 13 | BOct(): m_child(0), m_valid(0), m_leaf(0){} 14 | }; 15 | } 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /include/lvr2/geometry/BoundingRectangle.tcc: -------------------------------------------------------------------------------- 1 | #include "BoundingRectangle.hpp" 2 | 3 | namespace lvr2 4 | { 5 | 6 | template 7 | BaseVector BoundingRectangle::center() const 8 | { 9 | BaseVector ret; 10 | 11 | CoordType a_offset = (m_maxDistA - m_minDistA) / 2; 12 | CoordType b_offset = (m_maxDistB - m_minDistB) / 2; 13 | 14 | ret = m_supportVector + m_vec1 * a_offset + m_vec2 * b_offset; 15 | 16 | return ret; 17 | } 18 | 19 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/geometry/SoilAssistSubField.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by imitschke on 13.11.20. 3 | // 4 | 5 | #ifndef LAS_VEGAS_SOILASSISTSUBFIELD_HPP 6 | #define LAS_VEGAS_SOILASSISTSUBFIELD_HPP 7 | 8 | #include "lvr2/types/PolygonBuffer.hpp" 9 | 10 | namespace lvr2 11 | { 12 | class SoilAssistSubField{ 13 | public: 14 | SoilAssistSubField(); 15 | 16 | void setHeadlands(std::vector& headlands); 17 | void addHeadland(PolygonBufferPtr headland); 18 | 19 | void setReferenceLines(std::vector& lines); 20 | void addReferenceLine(PolygonBufferPtr line); 21 | 22 | void setBoundary(PolygonBufferPtr boundary); 23 | void setAccessPoints(std::vector& pts); 24 | void addAccessPoint(floatArr point); 25 | void addAccessPoint(float* p); 26 | 27 | std::vector getHeadlands(); 28 | std::vector getReferenceLines(); 29 | PolygonBufferPtr getBoundary(); 30 | std::vector getAccessPoints(); 31 | 32 | private: 33 | std::vector m_headlands; 34 | std::vector m_reference_lines; 35 | PolygonBufferPtr m_boundary; 36 | std::vector m_access_points; 37 | 38 | 39 | }; 40 | 41 | using SoilAssistSubFieldPtr = std::shared_ptr; 42 | } 43 | 44 | 45 | 46 | #endif //LAS_VEGAS_SOILASSISTSUBFIELD_HPP 47 | -------------------------------------------------------------------------------- /include/lvr2/geometry/pmp/Version.h: -------------------------------------------------------------------------------- 1 | // Copyright 2021 the Polygon Mesh Processing Library developers. 2 | // Distributed under a MIT-style license, see PMP_LICENSE.txt for details. 3 | 4 | #pragma once 5 | 6 | #define PMP_MAJOR_VERSION 1 7 | #define PMP_MINOR_VERSION 2 8 | #define PMP_PATCH_VERSION 1 -------------------------------------------------------------------------------- /include/lvr2/io/YAML.hpp: -------------------------------------------------------------------------------- 1 | #include "baseio/yaml/Matrix.hpp" 2 | #include "baseio/yaml/AABB.hpp" 3 | #include "scanio/yaml/VariantChannel.hpp" 4 | #include "scanio/yaml/ScanProject.hpp" 5 | #include "scanio/yaml/ScanPosition.hpp" 6 | #include "scanio/yaml/CameraModels.hpp" 7 | #include "scanio/yaml/LIDAR.hpp" 8 | #include "scanio/yaml/Camera.hpp" 9 | #include "scanio/yaml/Scan.hpp" 10 | #include "scanio/yaml/CameraImage.hpp" 11 | #include "meshio/yaml/ArrayMeta.hpp" 12 | #include "meshio/yaml/Material.hpp" 13 | #include "meshio/yaml/Texture.hpp" -------------------------------------------------------------------------------- /include/lvr2/io/baseio/BaseIO.tcc: -------------------------------------------------------------------------------- 1 | namespace lvr2 2 | { 3 | 4 | namespace baseio 5 | { 6 | 7 | template typename ...Features> 8 | template typename F> 9 | bool BaseIO::has() { 10 | return BaseIO::template has_feature::value; 11 | } 12 | 13 | template typename ...Features> 14 | template typename F> 15 | F >* BaseIO::scast() { 16 | return static_cast< F >* >(this); 17 | } 18 | 19 | template typename ...Features> 20 | template typename F> 21 | F >* BaseIO::dcast() { 22 | return dynamic_cast< F >* >(this); 23 | } 24 | 25 | } // namespace baseio 26 | 27 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/baseio/MatrixIO.hpp: -------------------------------------------------------------------------------- 1 | 2 | #ifndef MATRIXIO 3 | #define MATRIXIO 4 | 5 | #include 6 | #include "lvr2/io/baseio/BaseIO.hpp" 7 | namespace lvr2 8 | { 9 | 10 | namespace baseio 11 | { 12 | 13 | template 14 | class MatrixIO { 15 | public: 16 | 17 | template 18 | void save( 19 | std::string groupName, 20 | std::string datasetName, 21 | const Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& mat 22 | ) const; 23 | 24 | template 25 | void saveMatrix( 26 | std::string groupName, 27 | std::string datasetName, 28 | const Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& mat 29 | ) const; 30 | 31 | template 32 | MatrixT loadMatrix(std::string groupName, 33 | std::string datasetName); 34 | 35 | protected: 36 | BaseIO* m_BaseIO = static_cast(this); 37 | 38 | }; 39 | 40 | } // namespace baseio 41 | 42 | } // namespace lvr2 43 | 44 | #include "MatrixIO.tcc" 45 | 46 | #endif // MATRIXIO 47 | -------------------------------------------------------------------------------- /include/lvr2/io/baseio/MetaIO.hpp: -------------------------------------------------------------------------------- 1 | #ifndef METAIO 2 | #define METAIO 3 | 4 | #include "lvr2/io/schema/ScanProjectSchema.hpp" 5 | 6 | namespace lvr2 { 7 | 8 | namespace baseio 9 | { 10 | 11 | template 12 | class MetaIO 13 | { 14 | public: 15 | 16 | boost::optional load( 17 | Description d) const; 18 | 19 | void save( 20 | Description d, 21 | YAML::Node node) const; 22 | protected: 23 | BaseIO* m_BaseIO = static_cast(this); 24 | }; 25 | 26 | } // namespace baseio 27 | 28 | } // namespace lvr2 29 | 30 | #include "MetaIO.tcc" 31 | 32 | #endif // METAIO 33 | -------------------------------------------------------------------------------- /include/lvr2/io/baseio/MetaIO.tcc: -------------------------------------------------------------------------------- 1 | 2 | namespace lvr2 3 | { 4 | namespace baseio 5 | { 6 | 7 | template 8 | boost::optional MetaIO::load( 9 | Description d) const 10 | { 11 | boost::optional ret; 12 | 13 | if(!d.meta) 14 | { 15 | return ret; 16 | } 17 | 18 | if(!d.metaRoot) 19 | { 20 | d.metaRoot = d.dataRoot; 21 | } 22 | 23 | if(!m_BaseIO->m_kernel->exists(*d.metaRoot)) 24 | { 25 | return ret; 26 | } 27 | 28 | YAML::Node meta; 29 | if(!m_BaseIO->m_kernel->loadMetaYAML(*d.metaRoot, *d.meta, meta)) 30 | { 31 | return ret; 32 | } 33 | ret = meta; 34 | return ret; 35 | } 36 | 37 | template 38 | void MetaIO::save( 39 | Description d, 40 | YAML::Node node) const 41 | { 42 | 43 | } 44 | 45 | } // namespace baseio 46 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/deprecated/hdf5/HDF5FeatureBase.tcc: -------------------------------------------------------------------------------- 1 | namespace lvr2 { 2 | 3 | template typename ...Features> 4 | void Hdf5IO::open(std::string filename) { 5 | 6 | m_filename = filename; 7 | this->m_hdf5_file = hdf5util::open(filename); 8 | 9 | if (!m_hdf5_file->isValid()) 10 | { 11 | throw std::runtime_error("[Hdf5IO] Hdf5 file not valid!"); 12 | return; 13 | } 14 | } 15 | 16 | template typename ...Features> 17 | template typename F> 18 | bool Hdf5IO::has() { 19 | return Hdf5IO::template has_feature::value; 20 | } 21 | 22 | template typename ...Features> 23 | template typename F> 24 | F >* Hdf5IO::scast() { 25 | return static_cast< F >* >(this); 26 | } 27 | 28 | template typename ...Features> 29 | template typename F> 30 | F >* Hdf5IO::dcast() { 31 | return dynamic_cast< F >* >(this); 32 | } 33 | 34 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/deprecated/hdf5/ImageIO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef LVR2_IO_HDF5_IMAGEIO_HPP 4 | #define LVR2_IO_HDF5_IMAGEIO_HPP 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | namespace lvr2 { 14 | 15 | namespace hdf5features { 16 | 17 | template 18 | class ImageIO { 19 | public: 20 | 21 | void save(std::string groupName, 22 | std::string datasetName, 23 | const cv::Mat& img 24 | ); 25 | 26 | void save(HighFive::Group& group, 27 | std::string datasetName, 28 | const cv::Mat& img 29 | ); 30 | 31 | boost::optional load(HighFive::Group& group, 32 | std::string datasetName); 33 | 34 | boost::optional load(std::string groupName, 35 | std::string datasetName); 36 | 37 | boost::optional loadImage(std::string groupName, 38 | std::string datasetName); 39 | 40 | protected: 41 | 42 | template 43 | cv::Mat createMat(std::vector& dims); 44 | 45 | Derived* m_file_access = static_cast(this); 46 | 47 | }; 48 | 49 | } // namespace hdf5features 50 | 51 | } // namespace lvr2 52 | 53 | #include "ImageIO.tcc" 54 | 55 | #endif // LVR2_IO_HDF5_IMAGEIO_HPP -------------------------------------------------------------------------------- /include/lvr2/io/meshio/ArrayMeta.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace lvr2 6 | { 7 | namespace meshio 8 | { 9 | 10 | typedef struct ArrayMetaStruct 11 | { 12 | std::vector shape; 13 | std::string data_type; 14 | static constexpr char entity[] = "channel"; 15 | static constexpr char type[] = "array"; 16 | 17 | } ArrayMeta; 18 | 19 | } // namespace meshio 20 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/meshio/ClusterIO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "lvr2/types/MeshBuffer.hpp" 4 | #include "lvr2/io/schema/MeshSchema.hpp" 5 | #include "lvr2/io/DataStruct.hpp" 6 | 7 | namespace lvr2 8 | { 9 | namespace meshio 10 | { 11 | 12 | struct ClusterIOData 13 | { 14 | size_t num_faces = 0; 15 | size_t material_index = 0; 16 | indexArray face_indices = nullptr; 17 | }; 18 | 19 | template 20 | class ClusterIO 21 | { 22 | public: 23 | 24 | void saveClusters( 25 | const std::string& mesh_name, 26 | const MeshBufferPtr mesh 27 | ); 28 | 29 | /** 30 | * @brief 31 | * 32 | * @param mesh_name 33 | * @param[out] mesh The MeshBuffer the data is written to 34 | */ 35 | void loadClusters( 36 | const std::string& mesh_name, 37 | MeshBufferPtr mesh 38 | ); 39 | 40 | protected: 41 | BaseIO* m_baseIO = static_cast(this); 42 | }; 43 | 44 | } // namespace meshio 45 | } // namespace lvr2 46 | 47 | #include "ClusterIO.tcc" -------------------------------------------------------------------------------- /include/lvr2/io/meshio/DirectoryIO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "lvr2/io/kernels/DirectoryKernel.hpp" 4 | #include 5 | #include 6 | #include 7 | 8 | using lvr2::baseio::FeatureConstruct; 9 | using lvr2::baseio::FeatureBuild; 10 | 11 | namespace lvr2 12 | { 13 | namespace meshio 14 | { 15 | 16 | using DirectoryIOBase = FeatureBuild; 17 | 18 | class DirectoryIO : public DirectoryIOBase 19 | { 20 | public: 21 | DirectoryIO(DirectoryKernelPtr kernel, MeshSchemaDirectoryPtr schema) 22 | : DirectoryIOBase(kernel, schema) 23 | {} 24 | }; 25 | 26 | using DirectoryIOPtr = std::shared_ptr; 27 | 28 | } // namespace meshio 29 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/meshio/HDF5IO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | namespace lvr2 9 | { 10 | namespace meshio 11 | { 12 | 13 | using HDF5IOBase = lvr2::baseio::FeatureBuild; 14 | 15 | class HDF5IO: public HDF5IOBase 16 | { 17 | public: 18 | HDF5IO(HDF5KernelPtr kernel, MeshSchemaHDF5Ptr schema) 19 | : HDF5IOBase(kernel, schema) 20 | {} 21 | }; 22 | 23 | using HDF5IOPtr = std::shared_ptr; 24 | 25 | } // namespace meshio 26 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/meshio/TextureIO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace lvr2 7 | { 8 | namespace meshio 9 | { 10 | 11 | using TextureOptional = boost::optional; 12 | 13 | template 14 | class TextureIO 15 | { 16 | public: 17 | void saveTexture( 18 | const std::string &mesh_name, 19 | const size_t material_index, 20 | const std::string &texture_name, 21 | const Texture &texture) const; 22 | 23 | TextureOptional loadTexture( 24 | const std::string &mesh_name, 25 | const size_t material_index, 26 | const std::string &texture_name) const; 27 | 28 | protected: 29 | BaseIO *m_baseIO = static_cast(this); 30 | }; 31 | 32 | } // namespace meshio 33 | 34 | template 35 | struct lvr2::baseio::FeatureConstruct 36 | { 37 | using type = typename FB::template add_features::type; 38 | }; 39 | 40 | } // namespace lvr2 41 | 42 | #include "TextureIO.tcc" -------------------------------------------------------------------------------- /include/lvr2/io/scanio/DirectoryIO.hpp: -------------------------------------------------------------------------------- 1 | #ifndef DIRECTORYIO 2 | #define DIRECTORYIO 3 | 4 | #include "lvr2/io/kernels/DirectoryKernel.hpp" 5 | #include "lvr2/io/schema/ScanProjectSchema.hpp" 6 | #include "lvr2/io/baseio/BaseIO.hpp" 7 | #include "lvr2/io/scanio/ScanProjectIO.hpp" 8 | #include "lvr2/types/ScanTypes.hpp" 9 | #include // shared_ptr 10 | 11 | namespace lvr2 12 | { 13 | namespace scanio 14 | { 15 | using DirectoryIOBase = FeatureBuild; 16 | 17 | class DirectoryIO : public DirectoryIOBase 18 | { 19 | public: 20 | 21 | /** 22 | * @brief Construct a new Directory IO object. 23 | * DirectoryIO allows only combinations of DirectoryKernels and DirectorySchemas in constructor 24 | * 25 | * @param kernel 26 | * @param schema 27 | */ 28 | DirectoryIO(DirectoryKernelPtr kernel, DirectorySchemaPtr schema, bool load_data = false) 29 | : DirectoryIOBase(kernel, schema, load_data) 30 | {} 31 | }; 32 | 33 | using DirectoryIOPtr = std::shared_ptr; 34 | 35 | } // namespace scanio 36 | } // namespace lvr2 37 | 38 | #endif // DIRECTORYIO 39 | -------------------------------------------------------------------------------- /include/lvr2/io/scanio/HDF5IO.hpp: -------------------------------------------------------------------------------- 1 | #ifndef HDF5_DESCRIPTION_IO_HPP 2 | #define HDF5_DESCRIPTION_IO_HPP 3 | 4 | #include "lvr2/io/kernels/HDF5Kernel.hpp" 5 | #include "lvr2/io/schema/ScanProjectSchema.hpp" 6 | #include "lvr2/io/baseio/BaseIO.hpp" 7 | #include "lvr2/io/scanio/ScanProjectIO.hpp" 8 | #include "lvr2/types/ScanTypes.hpp" 9 | 10 | #include 11 | 12 | namespace lvr2 13 | { 14 | namespace scanio 15 | { 16 | 17 | using HDF5IOBase = lvr2::baseio::FeatureBuild; 18 | 19 | class HDF5IO : public HDF5IOBase 20 | { 21 | public: 22 | HDF5IO(HDF5KernelPtr kernel, HDF5SchemaPtr schema, bool load_data = false) 23 | : HDF5IOBase(kernel, schema, load_data) 24 | { } 25 | }; 26 | 27 | using HDF5IOPtr = std::shared_ptr; 28 | 29 | } // namepsace scanio 30 | } // namespace lvr2 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /include/lvr2/io/scanio/ImageIO.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef IMAGEIO 4 | #define IMAGEIO 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | namespace lvr2 { 11 | 12 | namespace scanio 13 | { 14 | 15 | template 16 | class ImageIO { 17 | public: 18 | 19 | void save( 20 | std::string groupName, 21 | std::string datasetName, 22 | const cv::Mat& img 23 | ) const; 24 | 25 | boost::optional load( 26 | std::string groupName, 27 | std::string datasetName 28 | ) const; 29 | 30 | void saveImage( 31 | std::string groupName, 32 | std::string datasetName, 33 | const cv::Mat& img 34 | ) const; 35 | 36 | boost::optional loadImage( 37 | std::string groupName, 38 | std::string datasetName 39 | ) const; 40 | 41 | protected: 42 | 43 | BaseIO* m_baseIO = static_cast(this); 44 | 45 | }; 46 | 47 | } // namespace scanio 48 | 49 | } // namespace lvr2 50 | 51 | #include "ImageIO.tcc" 52 | 53 | #endif // IMAGEIO 54 | -------------------------------------------------------------------------------- /include/lvr2/io/scanio/ImageIO.tcc: -------------------------------------------------------------------------------- 1 | 2 | namespace lvr2 { 3 | 4 | namespace scanio 5 | { 6 | 7 | template 8 | void ImageIO::save(std::string groupName, 9 | std::string datasetName, 10 | const cv::Mat& img) const 11 | { 12 | m_baseIO->m_kernel->saveImage(groupName, datasetName, img); 13 | } 14 | 15 | template 16 | boost::optional ImageIO::load(std::string groupName, 17 | std::string datasetName) const 18 | { 19 | return m_baseIO->m_kernel->loadImage(groupName, datasetName); 20 | } 21 | 22 | template 23 | void ImageIO::saveImage(std::string groupName, 24 | std::string datasetName, 25 | const cv::Mat& img) const 26 | { 27 | save(groupName, datasetName, img); 28 | } 29 | 30 | template 31 | boost::optional ImageIO::loadImage(std::string groupName, 32 | std::string datasetName) const 33 | { 34 | return load(groupName, datasetName); 35 | } 36 | 37 | } // namespace scanio 38 | 39 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/io/scanio/LabelHDF5IO.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LABELHDF5_DESCRIPTION_IO_HPP 2 | #define LABELHDF5_DESCRIPTION_IO_HPP 3 | 4 | #include "lvr2/io/kernels/HDF5Kernel.hpp" 5 | #include "lvr2/io/schema/ScanProjectSchema.hpp" 6 | #include "lvr2/io/baseio/BaseIO.hpp" 7 | #include "lvr2/io/scanio/LabelScanProjectIO.hpp" 8 | #include "lvr2/types/ScanTypes.hpp" 9 | 10 | namespace lvr2 11 | { 12 | class LabelHDF5IO 13 | { 14 | public: 15 | 16 | LabelHDF5IO(HDF5KernelPtr kernel, LabelHDF5SchemaPtr schema); 17 | 18 | void saveLabelScanProject(LabeledScanProjectEditMarkPtr project); 19 | LabeledScanProjectEditMarkPtr loadScanProject(); 20 | 21 | private: 22 | HDF5KernelPtr m_kernel; 23 | LabelHDF5SchemaPtr m_schema; 24 | }; 25 | } // namespace lvr2 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /include/lvr2/io/scanio/MetaFormatFactory.hpp: -------------------------------------------------------------------------------- 1 | #ifndef METAFILEFACTORY_HPP 2 | #define METAFILEFACTORY_HPP 3 | 4 | #include "lvr2/util/Timestamp.hpp" 5 | 6 | #include 7 | 8 | #include "lvr2/io/YAML.hpp" 9 | #include "lvr2/util/IOUtils.hpp" 10 | #include "lvr2/util/TransformUtils.hpp" 11 | 12 | 13 | #include 14 | #include 15 | 16 | namespace lvr2 17 | { 18 | 19 | bool isMetaFile(const std::string& filename); 20 | 21 | void saveMetaInformation(const std::string &outfile, const YAML::Node &node); 22 | YAML::Node loadMetaInformation(const std::string &in); 23 | 24 | } // namespace lvr2 25 | 26 | #endif -------------------------------------------------------------------------------- /include/lvr2/io/scanio/PolygonIO.tcc: -------------------------------------------------------------------------------- 1 | namespace lvr2 2 | { 3 | 4 | template 5 | void PolygonIO::savePolygon( 6 | const std::string& groupName, 7 | const std::string& container, 8 | const PolygonPtr& buffer) 9 | { 10 | m_baseIO->m_kernel->savePointBuffer(groupName, container, buffer); 11 | } 12 | 13 | template 14 | PolygonPtr PolygonIO::loadPolygon(const std::string& group, const std::string& name) 15 | { 16 | return m_baseIO->m_kernel->loadPointBuffer(group, name); 17 | } 18 | 19 | 20 | template 21 | bool PointCloudIO::isPolygon( 22 | HighFive::Group& group) 23 | { 24 | return true; 25 | } 26 | 27 | } // namespace lvr2 -------------------------------------------------------------------------------- /include/lvr2/reconstruction/CudaKSearchSurface.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_RECONSTRUCTION_CUDAKSEARCHSURFACE_HPP_ 2 | #define LVR2_RECONSTRUCTION_CUDAKSEARCHSURFACE_HPP_ 3 | 4 | #include "cuda/LBVHIndex.hpp" 5 | #include "lvr2/types/PointBuffer.hpp" 6 | #include "lvr2/geometry/BaseVector.hpp" 7 | 8 | #include "PointsetSurface.hpp" 9 | 10 | namespace lvr2 11 | { 12 | 13 | template 14 | class CudaKSearchSurface : public PointsetSurface 15 | { 16 | private: 17 | using CoordT = typename BaseVecT::CoordType; 18 | public: 19 | CudaKSearchSurface( 20 | PointBufferPtr pbuffer, 21 | size_t k 22 | ); 23 | 24 | CudaKSearchSurface(); 25 | 26 | virtual ~CudaKSearchSurface() {}; 27 | 28 | // This function is not suited for GPU 29 | virtual std::pair 30 | distance(BaseVecT v) const; 31 | 32 | virtual void calculateSurfaceNormals(); 33 | 34 | protected: 35 | 36 | lbvh::LBVHIndex m_tree; 37 | }; 38 | 39 | } // namespace lvr2 40 | 41 | #include "CudaKSearchSurface.tcc" 42 | 43 | #endif // LVR2_RECONSTRUCTION_CUDAKSEARCHSURFACE_HPP_ -------------------------------------------------------------------------------- /include/lvr2/reconstruction/cuda/lbvh/GPUErrorCheck.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef LVR2_GPU_ERROR_CHECK_H 3 | #define LVR2_GPU_ERROR_CHECK_H 4 | #ifndef NDEBUG 5 | 6 | #include 7 | #include 8 | 9 | #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } 10 | inline void gpuAssert(cudaError_t code, char *file, int line, bool abort=true) 11 | { 12 | if (code != cudaSuccess) 13 | { 14 | fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line); 15 | if (abort) exit(code); 16 | } 17 | } 18 | 19 | #else 20 | #define gpuErrchk(ans) {ans;} 21 | #endif 22 | #endif // LVR2_GPU_ERROR_CHECK_H -------------------------------------------------------------------------------- /include/lvr2/reconstruction/largescale/LargeScaleReconstructionBase.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LARGESCALERECONSTRUCTIONBASE 2 | #define LARGESCALERECONSTRUCTIONBASE 3 | 4 | #include "lvr2/types/ScanTypes.hpp" 5 | 6 | /** 7 | * @brief Base Class for all large scale reconstruction methods. 8 | */ 9 | class LargeScaleReconstructionBase 10 | { 11 | private: 12 | 13 | public: 14 | 15 | /** 16 | * @brief Construct a new Large Scale Reconstruction Base object 17 | * with default parameters and empty scan project. 18 | */ 19 | LargeScaleReconstructionBase(); 20 | 21 | /** 22 | * @brief Destroy the Large Scale Reconstruction Base object 23 | * 24 | */ 25 | ~LargeScaleReconstructionBase(); 26 | 27 | 28 | 29 | protected: 30 | 31 | /// Scan project parsed for reconstruction 32 | ScanProjectPtr m_scanProject; 33 | }; 34 | 35 | 36 | 37 | #endif // LARGESCALERECONSTRUCTIONBASE 38 | -------------------------------------------------------------------------------- /include/lvr2/registration/FPFH.hpp: -------------------------------------------------------------------------------- 1 | #ifndef FPFH 2 | #define FPFH 3 | 4 | #include 5 | 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | namespace lvr2 12 | { 13 | 14 | using FPFHFeature = Eigen::MatrixXf; 15 | using FPFHFeaturePtr = std::shared_ptr; 16 | 17 | /** 18 | * @brief Computes FPFH features for the given point cloud. Requires 19 | * point normals in the passed PointBufferPtr. 20 | * 21 | * Implementation based on the feature computation in Open3D: 22 | * http://www.open3d.org/docs/release/cpp_api/_feature_8cpp.html 23 | * 24 | * @param pointCloud A point cloud containing normals 25 | * @param k Number of nearest neighbors 26 | * @return FPFHFeaturePtr An Eigen matrix containing the computed features 27 | * (33 x numPoints) 28 | */ 29 | FPFHFeaturePtr computeFPFHFeatures(const PointBufferPtr pointCloud, size_t k); 30 | 31 | } // namespace lvr2 32 | 33 | #endif // FPFH 34 | -------------------------------------------------------------------------------- /include/lvr2/types/ByteEncoding.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_TYPES_BYTE_ENCODING_HPP 2 | #define LVR2_TYPES_BYTE_ENCODING_HPP 3 | 4 | #include 5 | #include 6 | 7 | namespace lvr2 { 8 | 9 | /** 10 | * @brief Specialize this method in CustomChannelTypes.cpp for your CustomType. 11 | * Only if specialized, datatype can be stored. 12 | * 13 | * @tparam T 14 | * @param data 15 | * @param bsize 16 | * @return boost::shared_array 17 | */ 18 | template 19 | boost::shared_array byteEncode( 20 | const T& data, size_t& bsize); 21 | 22 | // default 23 | template 24 | boost::shared_array byteEncode(const T& data, size_t& bsize) 25 | { 26 | boost::shared_array ret; 27 | return ret; 28 | } 29 | 30 | template 31 | boost::optional byteDecode(const unsigned char* buffer, const size_t& bsize); 32 | 33 | template 34 | boost::optional byteDecode(const unsigned char* buffer, const size_t& bsize) 35 | { 36 | boost::optional ret; 37 | return ret; 38 | } 39 | 40 | } // namespace lvr2 41 | 42 | #endif // LVR2_TYPES_BYTE_ENCODING_HPP -------------------------------------------------------------------------------- /include/lvr2/types/ColorTypes.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_TYPES_COLORTYPES_HPP 2 | #define LVR2_TYPES_COLORTYPES_HPP 3 | 4 | #include 5 | #include 6 | 7 | namespace lvr2 8 | { 9 | 10 | using RGB8Color = std::array; 11 | using RGBFColor = std::array; 12 | 13 | } // namespace lvr2 14 | 15 | #endif // LVR2_TYPES_COLORTYPES_HPP 16 | -------------------------------------------------------------------------------- /include/lvr2/types/CustomChannelTypes.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef LVR2_TYPES_CUSTOMCHANNELTYPES_HPP 4 | #define LVR2_TYPES_CUSTOMCHANNELTYPES_HPP 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include "ByteEncoding.hpp" 11 | 12 | namespace lvr2 { 13 | 14 | struct WaveformData { 15 | std::vector samples; 16 | uint16_t echo_type; 17 | bool low_power; 18 | }; 19 | 20 | template<> 21 | boost::shared_array byteEncode( 22 | const WaveformData& data, size_t& bsize); 23 | 24 | template<> 25 | boost::optional byteDecode( 26 | const unsigned char* buffer, const size_t& bsize); 27 | 28 | 29 | 30 | 31 | } // namespace lvr2 32 | 33 | #endif // LVR2_TYPES_CUSTOMCHANNELTYPES_HPP -------------------------------------------------------------------------------- /include/lvr2/util/Synthetic.hpp: -------------------------------------------------------------------------------- 1 | 2 | #ifndef LVR2_UTIL_SYNTHETIC_HPP 3 | #define LVR2_UTIL_SYNTHETIC_HPP 4 | 5 | #include "lvr2/geometry/BaseVector.hpp" 6 | #include "lvr2/types/MeshBuffer.hpp" 7 | #include "lvr2/types/ScanTypes.hpp" 8 | 9 | namespace lvr2 { 10 | 11 | namespace synthetic { 12 | 13 | MeshBufferPtr genSphere( 14 | int num_long=50, 15 | int num_lat=50); 16 | 17 | PointBufferPtr genSpherePoints(int num_long=50, 18 | int num_lat=50); 19 | 20 | CameraImagePtr genLVRImage(); 21 | 22 | } // namespace synthetic 23 | 24 | } // namespace lvr2 25 | 26 | #endif // LVR2_UTIL_SYNTHETIC_HPP -------------------------------------------------------------------------------- /include/lvr2/util/Tuple.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_UTIL_TUPLE_HPP 2 | #define LVR2_UTIL_TUPLE_HPP 3 | 4 | #include 5 | #include 6 | 7 | namespace lvr2 { 8 | 9 | template 10 | constexpr bool tupleContains(std::tuple) { 11 | return std::disjunction_v...>; 12 | } 13 | 14 | template 15 | struct Tuple : std::tuple 16 | { 17 | template 18 | static constexpr bool contains() 19 | { 20 | return std::disjunction_v...>; 21 | } 22 | }; 23 | 24 | } // namespace lvr2 25 | 26 | #endif // LVR2_UTIL_TUPLE_HPP -------------------------------------------------------------------------------- /spack_modules.bash: -------------------------------------------------------------------------------- 1 | spack load cmake 2 | spack load libtiff 3 | spack load gdal 4 | spack load flann 5 | spack load lz4 6 | spack load gsl 7 | spack load eigen 8 | spack load vtk 9 | spack load yaml-cpp 10 | spack load doxygen 11 | spack load glu 12 | spack load intel-oneapi-tbb@2021.5.0 13 | spack load freeglut@3.2.1 14 | spack load mesa /dy2xkgc 15 | spack load mesa-glu@9.0.1 16 | spack load opencv@4.5.4 17 | 18 | export CPATH=$CPATH:/appl/spack/opt/spack/linux-rocky8-zen/gcc-8.5.0/yaml-cpp-0.7.0-w2wzgwlraxdbrjwnnyj4x5m4on7b2gh2/include/:/appl/spack/opt/spack/linux-rocky8-zen/gcc-8.5.0/freeglut-3.2.1-733kk24orp2geq2jcewmhfka6opklp25/include:/appl/spack/opt/spack/linux-rocky8-zen/gcc-8.5.0/mesa-glu-9.0.1-cpgio2khlhv27v5smprfkxfdnu7awxkt/include/:/appl/spack/opt/spack/linux-rocky8-zen/gcc-8.5.0/flann-1.9.1-qr2c5tu7o6fkaspfx5udbvarbfq457vn/include/ 19 | -------------------------------------------------------------------------------- /src/liblvr2/algorithm/raycasting/EmbreeRaycaster.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/algorithm/raycasting/EmbreeRaycaster.hpp" 2 | 3 | #include 4 | 5 | namespace lvr2 { 6 | 7 | void EmbreeErrorFunction(void* userPtr, enum RTCError error, const char* str) 8 | { 9 | printf("error %d: %s\n", error, str); 10 | } 11 | 12 | } // namespace lvr2 13 | -------------------------------------------------------------------------------- /src/liblvr2/io/ScanDataManager.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/io/ScanDataManager.hpp" 2 | 3 | namespace lvr2 4 | { 5 | 6 | ScanDataManager::ScanDataManager(std::string filename) : m_io(filename) 7 | { 8 | 9 | } 10 | 11 | void ScanDataManager::loadPointCloudData(ScanPtr& sd, bool preview) 12 | { 13 | if ((!sd->pointsLoaded && !preview) || ( sd->pointsLoaded && preview)) 14 | { 15 | sd = m_io.getSingleRawScan(sd->positionNumber, !preview); 16 | } 17 | } 18 | 19 | std::vector ScanDataManager::getScans() 20 | { 21 | return m_io.getRawScans(false); 22 | } 23 | 24 | std::vector > ScanDataManager::getCameraData() 25 | { 26 | return m_io.getRawCamData(false); 27 | } 28 | 29 | cv::Mat ScanDataManager::loadImageData(int scan_id, int cam_id) 30 | { 31 | ScanImage ret = m_io.getSingleRawCamData(scan_id, cam_id, true); 32 | return ret.image; 33 | } 34 | 35 | 36 | } // namespace lvr2 37 | -------------------------------------------------------------------------------- /src/liblvr2/io/baseio/yaml/Matrix.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/io/baseio/yaml/Matrix.hpp" 2 | 3 | namespace YAML 4 | { 5 | 6 | bool isMatrix(const Node& node) 7 | { 8 | if (!node.IsSequence()) 9 | { 10 | return false; 11 | } 12 | 13 | // check first entry 14 | YAML::const_iterator row_it = node.begin(); 15 | 16 | if(!row_it->IsSequence()) 17 | { 18 | return false; 19 | } 20 | 21 | return true; 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /src/liblvr2/io/scanio/LabelHDF5IO.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/io/scanio/LabelHDF5IO.hpp" 2 | 3 | namespace lvr2 4 | { 5 | 6 | LabelHDF5IO::LabelHDF5IO(HDF5KernelPtr kernel, LabelHDF5SchemaPtr schema) 7 | : m_kernel(kernel), m_schema(schema) 8 | { 9 | 10 | } 11 | 12 | void LabelHDF5IO::saveLabelScanProject(LabeledScanProjectEditMarkPtr project) 13 | { 14 | using BaseScanProjectIO = lvr2::FeatureBase<>; 15 | using MyScanProjectIO = BaseScanProjectIO::AddFeatures; 16 | 17 | MyScanProjectIO io(m_kernel, m_schema); 18 | io.saveLabelScanProject(project); 19 | } 20 | 21 | LabeledScanProjectEditMarkPtr LabelHDF5IO::loadScanProject() 22 | { 23 | using BaseScanProjectIO = lvr2::FeatureBase<>; 24 | using MyScanProjectIO = BaseScanProjectIO::AddFeatures; 25 | 26 | MyScanProjectIO io(m_kernel, m_schema); 27 | return io.loadLabelScanProject(); 28 | } 29 | 30 | } // namespace lvr2 31 | 32 | -------------------------------------------------------------------------------- /src/liblvr2/io/schema/ScanProjectSchema.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/io/schema/ScanProjectSchema.hpp" 2 | #include "lvr2/util/Timestamp.hpp" 3 | 4 | namespace lvr2 5 | { 6 | 7 | std::ostream& operator<<(std::ostream& os, const Description& desc) 8 | { 9 | os << timestamp << "[LVR Description] -------------------------------------------------------" << std::endl; 10 | if(desc.dataRoot) 11 | { 12 | os << timestamp << "[LVR Description] DataRoot: " << *desc.dataRoot << std::endl; 13 | } 14 | 15 | if(desc.data) 16 | { 17 | os << timestamp << "[LVR Description] Data: " << *desc.data << std::endl; 18 | } 19 | 20 | if(desc.metaRoot) 21 | { 22 | os << timestamp << "[LVR Description] Meta Root: " << *desc.metaRoot << std::endl; 23 | } 24 | 25 | if(desc.meta) 26 | { 27 | os << timestamp << "[LVR Description] Meta: " << *desc.meta << std::endl; 28 | } 29 | 30 | return os; 31 | } 32 | 33 | } // namespace lvr2 -------------------------------------------------------------------------------- /src/liblvr2/types/WaveformBuffer.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/types/WaveformBuffer.hpp" 2 | #include "lvr2/util/Timestamp.hpp" 3 | 4 | #include 5 | 6 | namespace lvr2 7 | { 8 | 9 | WaveformBuffer WaveformBuffer::clone() 10 | { 11 | WaveformBuffer wfb; 12 | 13 | floatArr pb = PointBuffer::getPointArray(); 14 | wfb.setPointArray(pb, numPoints()); 15 | if (hasNormals()) 16 | { 17 | wfb.setNormalArray(getNormalArray(), numPoints()); 18 | } 19 | 20 | if (hasColors()) 21 | { 22 | size_t colorArraySize; 23 | ucharArr colorArray = PointBuffer::getColorArray(colorArraySize); 24 | wfb.setColorArray(colorArray, numPoints(), colorArraySize); 25 | } 26 | 27 | wfb.setWaveformArray(m_waveform, m_waveformSize); 28 | return wfb; 29 | } 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/tools/lvr2_3dtiles/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(NOT WITH_3DTILES) 2 | add_custom_target(lvr2_3dtiles 3 | COMMAND echo "ERROR: building lvr2_3dtiles requires -DWITH_3DTILES=ON cmake flag.") 4 | return() 5 | endif() 6 | 7 | ##################################################################################### 8 | # Set source files 9 | ##################################################################################### 10 | 11 | set(TILES_SOURCES 12 | Main.cpp 13 | ) 14 | 15 | ##################################################################################### 16 | # Setup dependencies to external libraries 17 | ##################################################################################### 18 | 19 | set(LVR2_3DTILES_DEPENDENCIES 20 | lvr2_static 21 | ${LVR2_LIB_DEPENDENCIES} 22 | ) 23 | 24 | ##################################################################################### 25 | # Add executable 26 | ##################################################################################### 27 | 28 | add_executable(lvr2_3dtiles ${TILES_SOURCES}) 29 | target_link_libraries(lvr2_3dtiles ${LVR2_3DTILES_DEPENDENCIES}) 30 | 31 | install(TARGETS lvr2_3dtiles 32 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 33 | -------------------------------------------------------------------------------- /src/tools/lvr2_ascii_viewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | set(LVR2_ASCII_VIEWER_SRC 5 | Main.cpp 6 | Options.cpp 7 | src/ascii_viewer/AsciiRenderer.cpp 8 | src/ascii_viewer/Braille.cpp 9 | ) 10 | 11 | include_directories(include) 12 | 13 | ##################################################################################### 14 | # Setup dependencies to external libraries 15 | ##################################################################################### 16 | 17 | set(LVR2_ASCII_VIEWER_DEPS 18 | lvr2_static 19 | lvr2las_static 20 | lvr2rply_static 21 | ${LVR2_LIB_DEPENDENCIES} 22 | ) 23 | 24 | ##################################################################################### 25 | # Add executable 26 | ##################################################################################### 27 | 28 | ###### ADD YOUR CODE HERE ####### 29 | 30 | add_executable(lvr2_ascii_viewer ${LVR2_ASCII_VIEWER_SRC}) 31 | target_link_libraries(lvr2_ascii_viewer 32 | ${LVR2_ASCII_VIEWER_DEPS} 33 | ncursesw 34 | ) 35 | -------------------------------------------------------------------------------- /src/tools/lvr2_ascii_viewer/include/ascii_viewer/BitField.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_ASCII_RENDERER_BITFIELD_HPP 2 | #define LVR2_ASCII_RENDERER_BITFIELD_HPP 3 | 4 | #include 5 | 6 | namespace lvr2 { 7 | 8 | template 9 | struct BitField { 10 | // storage 11 | unsigned char data = 0; 12 | 13 | BitField():data(0){} 14 | 15 | void set(const unsigned int& i, const unsigned int& j) 16 | { 17 | data |= 1UL << (i * H + j); 18 | } 19 | 20 | bool get(const unsigned int& i, const unsigned int& j) const 21 | { 22 | return (data >> (i * H + j)) & 1U; 23 | } 24 | 25 | void toggle(const unsigned int& i, const unsigned int& j) 26 | { 27 | data ^= 1UL << (i * H + j); 28 | } 29 | 30 | void clear(const unsigned int& i, const unsigned int& j) 31 | { 32 | data &= ~(1UL << (i * H + j) ); 33 | } 34 | 35 | 36 | }; 37 | 38 | } // namespace lvr2 39 | 40 | #endif // LVR2_ASCII_RENDERER_BITFIELD_HPP -------------------------------------------------------------------------------- /src/tools/lvr2_ascii_viewer/src/ascii_viewer/Braille.cpp: -------------------------------------------------------------------------------- 1 | #include "ascii_viewer/Braille.hpp" 2 | #include 3 | 4 | // std::ostream& operator<<(std::ostream& os, const lvr2::BrailleChar& bc) 5 | // { 6 | // os << lvr2::BrailleTable[bc.data]; 7 | // return os; 8 | // } 9 | 10 | namespace lvr2 { 11 | 12 | 13 | 14 | } // namespace lvr2 -------------------------------------------------------------------------------- /src/tools/lvr2_asciiconverter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(ASCII_SOURCES 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_ASCIICONVERT_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | ##################################################################################### 22 | # Add executable 23 | ##################################################################################### 24 | 25 | add_executable(lvr2_ascii_convert ${ASCII_SOURCES}) 26 | target_link_libraries(lvr2_ascii_convert ${LVR2_ASCIICONVERT_DEPENDENCIES}) 27 | 28 | install(TARGETS lvr2_ascii_convert 29 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_chunking/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_CHUNKING_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_CHUNKING_DEPENDENCIES 15 | lvr2_static 16 | TBB::tbb 17 | ${LVR2_LIB_DEPENDENCIES} 18 | ) 19 | 20 | ##################################################################################### 21 | # Add executable 22 | ##################################################################################### 23 | 24 | add_executable( lvr2_chunking ${LVR2_CHUNKING_SOURCES} ) 25 | target_link_libraries( lvr2_chunking ${LVR2_CHUNKING_DEPENDENCIES} ) 26 | 27 | install(TARGETS lvr2_chunking 28 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 29 | -------------------------------------------------------------------------------- /src/tools/lvr2_cl_normals/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | # find_package(OPENCL REQUIRED) 6 | # include_directories(OpenCL_INCLUDE_DIRS) 7 | # message(STATUS "Loaded OpenCL version ${OpenCL_VERSION_STRING}") 8 | # message(STATUS "OpenCL Libraries: ${OpenCL_LIBRARIES}") 9 | 10 | set(LVR2_CL_NORMAL_SRC 11 | Main.cpp 12 | Options.cpp 13 | ) 14 | 15 | ##################################################################################### 16 | # Setup dependencies to external libraries 17 | ##################################################################################### 18 | 19 | set(LVR2_CL_NORMAL_DEPS 20 | lvr2_static 21 | ${LVR2_LIB_DEPENDENCIES} 22 | ) 23 | 24 | ##################################################################################### 25 | # Add executable 26 | ##################################################################################### 27 | add_executable(lvr2_cl_normals ${LVR2_CL_NORMAL_SRC}) 28 | target_link_libraries(lvr2_cl_normals ${LVR2_CL_NORMAL_DEPS}) 29 | -------------------------------------------------------------------------------- /src/tools/lvr2_cl_sor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | # find_package(OPENCL REQUIRED) 6 | # include_directories(OpenCL_INCLUDE_DIRS) 7 | # message(STATUS "Loaded OpenCL version ${OpenCL_VERSION_STRING}") 8 | # message(STATUS "OpenCL Libraries: ${OpenCL_LIBRARIES}") 9 | 10 | set(LVR2_CL_NORMAL_SRC 11 | Main.cpp 12 | ) 13 | 14 | ##################################################################################### 15 | # Setup dependencies to external libraries 16 | ##################################################################################### 17 | 18 | set(LVR2_CL_NORMAL_DEPS 19 | lvr2_static 20 | ${LVR2_LIB_DEPENDENCIES} 21 | ) 22 | 23 | ##################################################################################### 24 | # Add executable 25 | ##################################################################################### 26 | add_executable(lvr2_cl_sor ${LVR2_CL_NORMAL_SRC}) 27 | target_link_libraries(lvr2_cl_sor ${LVR2_CL_NORMAL_DEPS}) 28 | -------------------------------------------------------------------------------- /src/tools/lvr2_cuda_normals/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_CUDA_NORMAL_SRC 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_CUDA_NORMAL_DEPS 15 | lvr2_static 16 | lvr2cuda_static 17 | ${LVR2_LIB_DEPENDENCIES} 18 | ) 19 | 20 | ##################################################################################### 21 | # Add executable 22 | ##################################################################################### 23 | 24 | ###### ADD YOUR CODE HERE ####### 25 | 26 | add_executable(lvr2_cuda_normals ${LVR2_CUDA_NORMAL_SRC}) 27 | target_link_libraries(lvr2_cuda_normals ${LVR2_CUDA_NORMAL_DEPS}) 28 | -------------------------------------------------------------------------------- /src/tools/lvr2_dmc_reconstruction/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(DMC_RECONSTRUCTION_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(DMC_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | ##################################################################################### 22 | # Add executable 23 | ##################################################################################### 24 | 25 | add_executable(lvr2_dmc_reconstruction ${DMC_RECONSTRUCTION_SOURCES}) 26 | target_link_libraries(lvr2_dmc_reconstruction ${DMC_DEPENDENCIES} ${Boost_LOG_LIBRARY_RELEASE}) 27 | 28 | install(TARGETS lvr2_dmc_reconstruction 29 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_fastsense_reconstruction/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(FASTSENSE_RECONSTRUCTION_SOURCES 6 | Main.cpp 7 | ) 8 | 9 | ##################################################################################### 10 | # Setup dependencies to external libraries 11 | ##################################################################################### 12 | 13 | set(FASTSENSE_DEPENDENCIES 14 | lvr2_static 15 | lvr2las_static 16 | lvr2rply_static 17 | ${LVR2_LIB_DEPENDENCIES} 18 | ) 19 | 20 | ##################################################################################### 21 | # Add executable 22 | ##################################################################################### 23 | 24 | add_executable(lvr2_fastsense_reconstruction ${FASTSENSE_RECONSTRUCTION_SOURCES}) 25 | target_link_libraries(lvr2_fastsense_reconstruction ${FASTSENSE_DEPENDENCIES} boost_date_time ${Boost_LOG_LIBRARY_RELEASE} lz4) 26 | 27 | install(TARGETS lvr2_fastsense_reconstruction 28 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 29 | -------------------------------------------------------------------------------- /src/tools/lvr2_gs_reconstruction/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(GS_RECONSTRUCTION_SOURCES 6 | Main.cpp 7 | OptionsGS.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(GS_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | ##################################################################################### 22 | # Add executable 23 | ##################################################################################### 24 | 25 | add_executable(lvr2_gs_reconstruction ${GS_RECONSTRUCTION_SOURCES}) 26 | target_link_libraries(lvr2_gs_reconstruction ${GS_DEPENDENCIES} ${Boost_LOG_LIBRARY_RELEASE}) 27 | 28 | install(TARGETS lvr2_gs_reconstruction 29 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_builder/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_HDF5_SOURCES 6 | HDF5Tool.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_HDF5_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_hdf5tool ${LVR2_HDF5_SOURCES} ) 27 | target_link_libraries( lvr2_hdf5tool ${LVR2_HDF5_DEPENDENCIES} ) 28 | 29 | install(TARGETS lvr2_hdf5tool 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_builder_2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_HDF5_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_HDF5_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_hdf5tool_2 ${LVR2_HDF5_SOURCES} ) 27 | target_link_libraries( lvr2_hdf5tool_2 ${LVR2_HDF5_DEPENDENCIES} ) 28 | 29 | install(TARGETS lvr2_hdf5tool_2 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_convert_old/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_HDF5_CONVERT_OLD_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | src/Hdf5ReaderOld.cpp 9 | src/ScanTypesCompare.cpp 10 | src/Logging.cpp 11 | ) 12 | 13 | ##################################################################################### 14 | # Setup dependencies to external libraries 15 | ##################################################################################### 16 | 17 | set(LVR2_HDF5_CONVERT_OLD_DEPENDENCIES 18 | lvr2_static 19 | lvr2las_static 20 | lvr2rply_static 21 | ${LVR2_LIB_DEPENDENCIES} 22 | ) 23 | 24 | include_directories(include) 25 | 26 | ##################################################################################### 27 | # Add executable 28 | ##################################################################################### 29 | 30 | add_executable( lvr2_hdf5_convert_old ${LVR2_HDF5_CONVERT_OLD_SOURCES} ) 31 | target_link_libraries( lvr2_hdf5_convert_old ${LVR2_HDF5_CONVERT_OLD_DEPENDENCIES} ) 32 | 33 | install(TARGETS lvr2_hdf5_convert_old 34 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 35 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_convert_old/include/Hdf5ReaderOld.hpp: -------------------------------------------------------------------------------- 1 | #ifndef HDF5_READER_OLD_HPP 2 | #define HDF5_READER_OLD_HPP 3 | 4 | #include "lvr2/util/Hdf5Util.hpp" 5 | #include "lvr2/types/ScanTypes.hpp" 6 | 7 | namespace lvr2 { 8 | 9 | std::string string_shift(size_t nspaces); 10 | 11 | ScanPtr loadScanOld(HighFive::Group g); 12 | 13 | ScanPositionPtr loadScanPositionOld(HighFive::Group g); 14 | 15 | ScanProjectPtr loadScanProjectOld(HighFive::Group g); 16 | 17 | ScanProjectPtr loadOldHDF5(std::string filename); 18 | 19 | } // namespace lvr2 20 | 21 | #endif // HDF5_READER_OLD_HPP -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_convert_old/include/Logging.tcc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_hdf5_convert_old/include/Logging.tcc -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_convert_old/src/Logging.cpp: -------------------------------------------------------------------------------- 1 | #include "Logging.hpp" 2 | 3 | namespace lvr2 { 4 | 5 | 6 | 7 | } // namespace lvr2 -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_inspect/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_HDF5_INSPECT_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_HDF5_INSPECT_DEPS 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_hdf5_inspect ${LVR2_HDF5_INSPECT_SOURCES} ) 27 | target_link_libraries( lvr2_hdf5_inspect ${LVR2_HDF5_INSPECT_DEPS} ) 28 | 29 | install(TARGETS lvr2_hdf5_inspect 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5_mesh_tool/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_HDF5_MESH_SOURCES 6 | HDF5MeshTool.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_HDF5_MESH_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_hdf5_mesh_tool ${LVR2_HDF5_MESH_SOURCES} ) 27 | target_link_libraries( lvr2_hdf5_mesh_tool ${LVR2_HDF5_MESH_DEPENDENCIES} ) 28 | 29 | install(TARGETS lvr2_hdf5_mesh_tool 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5togeotiff/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # set source files 3 | ##################################################################################### 4 | 5 | set( 6 | LVR_CONVERTER_SOURCES 7 | Main.cpp 8 | Options.cpp 9 | ) 10 | 11 | ##################################################################################### 12 | # Setup dependencies to external libraries 13 | ##################################################################################### 14 | 15 | set( 16 | LVR_CONVERTER_DEPENDENCIES 17 | lvr2_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_hdf5togeotiff ${LVR_CONVERTER_SOURCES} ) 27 | target_link_libraries( lvr2_hdf5togeotiff ${LVR_CONVERTER_DEPENDENCIES} ) 28 | 29 | install(TARGETS lvr2_hdf5togeotiff RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5togeotiff/README.md: -------------------------------------------------------------------------------- 1 | # Toolkit for the classification of hyperspectral datasets 2 | 3 | ## Conversion HDF5 to TIFF 4 | 1. Create a HDF5 file of a scan dataset using the lvr2_hdf5tool 5 | 2. extract the radiometric data to a GDAL readable TIFF file like so: 6 | in your build/bin execute `./lvr2_hdf5togeotiff ` 7 | 8 | ## Post processing 9 | You can process your radiometric data using the script normalize.py. This will apply a normalization and afterwards a savgol filter to the radiometric data. 10 | The script requires python 3.x and the following python libraries: 11 | + gdal 12 | + numpy 13 | + scipy 14 | Execute the script like so: `python normalize.py ` 15 | 16 | ## Conversion of a classification to an rbg file 17 | A classification in the form of another one-channeled TIFF file can be converted to an rgb file using the script create_png.py 18 | The script requires python 3.x and the following python libraries: 19 | + gdal 20 | + numpy 21 | + matplotlib 22 | + OpenCV (cv2) 23 | Execute the script like so: `python create_png.py ` -------------------------------------------------------------------------------- /src/tools/lvr2_hdf5togeotiff/scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_hdf5togeotiff/scripts/__init__.py -------------------------------------------------------------------------------- /src/tools/lvr2_image_normals/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_IMG_NORMAL_SRC 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_IMG_NORMAL_DEPS 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | if(PCL_FOUND) 22 | set(LVR2_IMG_NORMAL_DEPS ${LVR2_IMG_NORMAL_DEPS} ${PCL_LIBRARIES} ) 23 | endif(PCL_FOUND) 24 | 25 | if( ${NABO_FOUND} ) 26 | set(LVR2_IMG_NORMAL_DEPS ${LVR2_IMG_NORMAL_DEPS} ${NABO_LIBRARY} ) 27 | endif( ${NABO_FOUND} ) 28 | 29 | ##################################################################################### 30 | # Add executable 31 | ##################################################################################### 32 | 33 | add_executable(lvr2_image_normals ${LVR2_IMG_NORMAL_SRC}) 34 | target_link_libraries(lvr2_image_normals ${LVR2_IMG_NORMAL_DEPS}) 35 | 36 | 37 | install(TARGETS lvr2_image_normals 38 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 39 | -------------------------------------------------------------------------------- /src/tools/lvr2_kaboom/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(KABOOM_SOURCES 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | 11 | ##################################################################################### 12 | # Setup dependencies to external libraries 13 | ##################################################################################### 14 | 15 | set(LVR2_KABOOM_DEPENDENCIES 16 | lvr2_static 17 | lvr2las_static 18 | lvr2rply_static 19 | ${LVR2_LIB_DEPENDENCIES} 20 | ) 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable(lvr2_kaboom ${KABOOM_SOURCES}) 27 | target_link_libraries(lvr2_kaboom ${LVR2_KABOOM_DEPENDENCIES}) 28 | 29 | install(TARGETS lvr2_kaboom 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_octree_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(OCTREE_TEST_SOURCES 6 | Main.cpp 7 | ) 8 | 9 | ##################################################################################### 10 | # Setup dependencies to external libraries 11 | ##################################################################################### 12 | 13 | set(LVR2_OCTREE_TEST_DEPENDENCIES 14 | lvr2_static 15 | lvr2las_static 16 | lvr2rply_static 17 | ${LVR2_LIB_DEPENDENCIES} 18 | ) 19 | 20 | ##################################################################################### 21 | # Add executable 22 | ##################################################################################### 23 | 24 | add_executable(lvr2_octree_test ${OCTREE_TEST_SOURCES}) 25 | target_link_libraries(lvr2_octree_test ${LVR2_OCTREE_TEST_DEPENDENCIES}) 26 | target_precompile_headers(lvr2_octree_test PUBLIC ${LVR2_PCHS}) 27 | install(TARGETS lvr2_octree_test 28 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 29 | -------------------------------------------------------------------------------- /src/tools/lvr2_octree_test/Main.cpp: -------------------------------------------------------------------------------- 1 | #include "lvr2/display/PointOctree.hpp" 2 | #include "lvr2/geometry/BaseVector.hpp" 3 | #include "lvr2/types/PointBuffer.hpp" 4 | #include "lvr2/io/ModelFactory.hpp" 5 | #include "lvr2/util/IOUtils.hpp" 6 | #include "lvr2/util/Timestamp.hpp" 7 | 8 | 9 | using namespace lvr2; 10 | using Vec = lvr2::BaseVector; 11 | 12 | int main(int argc, char** argv) 13 | { 14 | if(argc < 2) 15 | { 16 | return 0; 17 | } 18 | 19 | std::cout << argv[1] << std::endl; 20 | ModelPtr model = ModelFactory::readModel(std::string(argv[1])); 21 | 22 | // Parse loaded data 23 | if (!model) 24 | { 25 | std::cout << "IO Error: Unable to parse " << std::endl; 26 | return 0; 27 | } 28 | 29 | PointOctree oct = PointOctree(model->m_pointCloud, 5); 30 | 31 | return 0; 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/tools/lvr2_plymerger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(PLY_MERGE_SRC 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_PLY_MERGER_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | ##################################################################################### 22 | # Add executable 23 | ##################################################################################### 24 | 25 | add_executable(lvr2_ply_merger ${PLY_MERGE_SRC}) 26 | target_link_libraries(lvr2_ply_merger ${LVR2_PLY_MERGER_DEPENDENCIES}) 27 | 28 | install(TARGETS lvr2_ply_merger 29 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_reconstruct/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(RECONSTRUCT_SOURCES 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_RECONSTRUCT_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | if(CUDA_FOUND) 22 | list(APPEND LVR2_RECONSTRUCT_DEPENDENCIES lvr2cuda_static) 23 | endif(CUDA_FOUND) 24 | 25 | if( ${NABO_FOUND} ) 26 | list(APPEND LVR2_RECONSTRUCT_DEPENDENCIES ${NABO_LIBRARY}) 27 | endif( ${NABO_FOUND} ) 28 | 29 | ##################################################################################### 30 | # Add executable 31 | ##################################################################################### 32 | add_executable(lvr2_reconstruct ${RECONSTRUCT_SOURCES}) 33 | target_link_libraries(lvr2_reconstruct ${LVR2_RECONSTRUCT_DEPENDENCIES}) 34 | 35 | install(TARGETS lvr2_reconstruct 36 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -------------------------------------------------------------------------------- /src/tools/lvr2_registration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_REGISTRATION_SOURCES 6 | Main.cpp 7 | ) 8 | 9 | ##################################################################################### 10 | # Setup dependencies to external libraries 11 | ##################################################################################### 12 | 13 | set(LVR2_REGISTRATION_DEPENDENCIES 14 | lvr2_static 15 | ${LVR2_LIB_DEPENDENCIES} 16 | ) 17 | 18 | ##################################################################################### 19 | # Add executable 20 | ##################################################################################### 21 | 22 | add_executable(lvr2_registration ${LVR2_REGISTRATION_SOURCES}) 23 | target_link_libraries(lvr2_registration ${LVR2_REGISTRATION_DEPENDENCIES}) 24 | 25 | 26 | install(TARGETS lvr2_registration RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 27 | -------------------------------------------------------------------------------- /src/tools/lvr2_riegl_project_converter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(RIEGL_PROJECT_CONVERTER_SRC main.cpp RieglProject.cpp Options.cpp) 2 | 3 | add_executable(lvr2_riegl_project_converter ${RIEGL_PROJECT_CONVERTER_SRC}) 4 | 5 | target_link_libraries(lvr2_riegl_project_converter lvr2_static ${LVR2_LIB_DEPENDENCIES}) 6 | 7 | install(TARGETS lvr2_riegl_project_converter RUNTIME DESTINATION &{CMAKE_INSTALL_BINDIR}) 8 | -------------------------------------------------------------------------------- /src/tools/lvr2_scanproject_parser/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_SCANPROJECT_PARSER_SOURCES 6 | Main.cpp 7 | Options.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_SCANPROJECT_PARSER_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | 22 | ##################################################################################### 23 | # Add executable 24 | ##################################################################################### 25 | 26 | add_executable( lvr2_scanproject_parser ${LVR2_SCANPROJECT_PARSER_SOURCES} ) 27 | target_link_libraries( lvr2_scanproject_parser ${LVR2_SCANPROJECT_PARSER_DEPENDENCIES} ) 28 | 29 | install(TARGETS lvr2_scanproject_parser 30 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 31 | -------------------------------------------------------------------------------- /src/tools/lvr2_slam2hdf5/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(PLY_MERGE_SRC 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_PLY_MERGER_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | ##################################################################################### 22 | # Add executable 23 | ##################################################################################### 24 | 25 | add_executable(lvr2_slam2hdf5 ${PLY_MERGE_SRC}) 26 | target_link_libraries(lvr2_slam2hdf5 ${LVR2_PLY_MERGER_DEPENDENCIES}) 27 | 28 | install(TARGETS lvr2_slam2hdf5 29 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 30 | -------------------------------------------------------------------------------- /src/tools/lvr2_slam6d_merger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_SLAM_MERGE_SOURCES 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_SLAM_MERGE_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | if(PCL_FOUND) 22 | list(APPEND LVR2_SLAM_MERGE_DEPENDENCIES ${PCL_LIBRARIES} ) 23 | endif(PCL_FOUND) 24 | 25 | ##################################################################################### 26 | # Add executable 27 | ##################################################################################### 28 | 29 | add_executable(lvr2_slam6d_merger ${LVR2_SLAM_MERGE_SOURCES}) 30 | target_link_libraries(lvr2_slam6d_merger ${LVR2_SLAM_MERGE_DEPENDENCIES}) 31 | 32 | install(TARGETS lvr2_slam6d_merger 33 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 34 | -------------------------------------------------------------------------------- /src/tools/lvr2_transform/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ##################################################################################### 2 | # Set source files 3 | ##################################################################################### 4 | 5 | set(LVR2_TRANSFORM_SOURCES 6 | Options.cpp 7 | Main.cpp 8 | ) 9 | 10 | ##################################################################################### 11 | # Setup dependencies to external libraries 12 | ##################################################################################### 13 | 14 | set(LVR2_TRANSFORM_DEPENDENCIES 15 | lvr2_static 16 | lvr2las_static 17 | lvr2rply_static 18 | ${LVR2_LIB_DEPENDENCIES} 19 | ) 20 | 21 | if( ${NABO_FOUND} ) 22 | set(LVR2_TRANSFORM_DEPENDENCIES ${LVR2_TRANSFORM_DEPENDENCIES} ${NABO_LIBRARY}) 23 | endif( ${NABO_FOUND} ) 24 | 25 | 26 | ##################################################################################### 27 | # Add executable 28 | ##################################################################################### 29 | 30 | add_executable(lvr2_transform_model ${LVR2_TRANSFORM_SOURCES}) 31 | target_link_libraries(lvr2_transform_model ${LVR2_TRANSFORM_DEPENDENCIES}) 32 | 33 | 34 | install(TARGETS lvr2_transform_model 35 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 36 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/NOTES: -------------------------------------------------------------------------------- 1 | thread in bridge 2 | flags wenn fertig zu laden 3 | 4 | vtkCommand 5 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/contrast.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/contrast_decrease.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/contrast_decrease.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/contrast_increase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/contrast_increase.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/down.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/drive.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/export.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/folder_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/folder_add.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/page_white_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/page_white_camera.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/player.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_addclass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_addclass.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_animation.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_createMesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_createMesh.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_delete.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_edm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_edm.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_export.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_flight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_flight.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_fog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_fog.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_fogsettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_fogsettings.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_histogram.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_import.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_instance.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_labeling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_labeling.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_labeltool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_labeltool.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_lassoTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_lassoTool.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_mesh_texture_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_mesh_texture_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_mesh_tree_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_mesh_tree_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_model_tree_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_model_tree_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_pc_tree_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_pc_tree_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_add.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_animate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_animate.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_delete.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_first.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_last.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_next.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_play_prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_play_prev.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_point.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_pointNormals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_pointNormals.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_points.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_polygonTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_polygonTool.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_rendering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_rendering.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_scandata_tree_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_scandata_tree_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_screenshot.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_segmentin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_segmentin.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_segmentout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_segmentout.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_selectack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_selectack.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_selectcancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_selectcancel.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_selectlasso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_selectlasso.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_selectpoly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_selectpoly.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_shooter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_shooter.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_showSelection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_showSelection.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_showall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_showall.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_spectralchannel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_spectralchannel.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_spectralsettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_spectralsettings.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_surfaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_surfaces.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_toggleselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_toggleselect.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_trackball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_trackball.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_transform.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_transform_tree_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_transform_tree_icon.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_vertices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_vertices.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_wireframe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_wireframe.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/qv_zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/qv_zoom.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/rotate.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/tb_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/tb_delete.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/tb_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/tb_left.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/tb_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/tb_right.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/up.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/res/world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uos/lvr2/74a5672b40c6e2e4e40fdd057cbe3ae263a0f192/src/tools/lvr2_viewer/res/world.png -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/util/qttf.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include 6 | 7 | #include "lvr2/types/MatrixTypes.hpp" 8 | #include "lvr2/types/ScanTypes.hpp" 9 | #include "lvr2/geometry/BaseVector.hpp" 10 | #include "lvr2/geometry/Normal.hpp" 11 | #include "lvr2/types/PointBuffer.hpp" 12 | #include 13 | 14 | namespace lvr2 { 15 | 16 | namespace qttf { 17 | 18 | Transformd getTransformation( 19 | QTreeWidgetItem* from, 20 | QTreeWidgetItem* to = NULL 21 | ); 22 | 23 | PointBufferPtr transform( 24 | PointBufferPtr pc_in, 25 | const Transformd& T 26 | ); 27 | 28 | PointBufferPtr transform( 29 | PointBufferPtr pc_in, 30 | QTreeWidgetItem* from, 31 | QTreeWidgetItem* to = NULL 32 | ); 33 | 34 | } // namespace qttf 35 | 36 | } // namespace lvr2 -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/vtkBridge/LVRBoundingBoxBridge.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_TOOLS_VIEWER_VTKBRIDGE_LVRBOUNDINGBOXBRIDGE_HPP 2 | #define LVR2_TOOLS_VIEWER_VTKBRIDGE_LVRBOUNDINGBOXBRIDGE_HPP 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include "lvr2/geometry/BaseVector.hpp" 9 | #include "lvr2/geometry/BoundingBox.hpp" 10 | 11 | 12 | namespace lvr2 13 | { 14 | 15 | class Pose; 16 | 17 | class LVRBoundingBoxBridge 18 | { 19 | using Vec = BaseVector; 20 | 21 | public: 22 | LVRBoundingBoxBridge(BoundingBox bb); 23 | BoundingBox getBoundingBox() { return m_boundingBox; } 24 | vtkSmartPointer getActor() { return m_actor; } 25 | void setPose(const Pose& pose); 26 | void setVisibility(bool visible); 27 | void setColor(double r, double g, double b); 28 | 29 | private: 30 | BoundingBox m_boundingBox; 31 | vtkSmartPointer m_actor; 32 | 33 | }; 34 | 35 | using BoundingBoxBridgePtr = boost::shared_ptr; 36 | 37 | } // namespace lvr2 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/vtkBridge/LVRChunkedMeshCuller.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRCHUNKEDMESHCULLER_HPP_ 2 | #define LVRCHUNKEDMESHCULLER_HPP_ 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "LVRChunkedMeshBridge.hpp" 13 | 14 | #include 15 | 16 | 17 | 18 | 19 | namespace lvr2 { 20 | class ChunkedMeshCuller: public vtkCuller 21 | { 22 | public: 23 | ChunkedMeshCuller(LVRChunkedMeshBridge* bridge, double highResDistance = 150.0) : m_bridge(bridge), cull_(true), m_highResDistance(highResDistance){ 24 | std::cout << "Initialized Culler with highResDistance: " << m_highResDistance << std::endl; 25 | } 26 | 27 | virtual double Cull(vtkRenderer *ren, vtkProp **propList, int &listLength, int &initialized) override; 28 | 29 | void NoCulling() { cull_ = false; } 30 | void enableCulling() { cull_ = true; } 31 | 32 | private: 33 | LVRChunkedMeshBridge* m_bridge; 34 | bool cull_; 35 | double m_highResDistance; 36 | }; 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRBoundingBoxItem.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_TOOLS_VIEWER_LVRBOUNDINGBOXITEM_HPP 2 | #define LVR2_TOOLS_VIEWER_LVRBOUNDINGBOXITEM_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "../vtkBridge/LVRBoundingBoxBridge.hpp" 8 | 9 | namespace lvr2 10 | { 11 | 12 | class LVRBoundingBoxItem : public QTreeWidgetItem 13 | { 14 | public: 15 | LVRBoundingBoxItem( 16 | BoundingBoxBridgePtr bb, 17 | QString name = "", 18 | QTreeWidgetItem *parent = NULL); 19 | 20 | void setVisibility(bool visible); 21 | 22 | BoundingBoxBridgePtr getBoundingBoxBridge() { return m_bb; } 23 | 24 | private: 25 | BoundingBoxBridgePtr m_bb; 26 | QString m_name; 27 | }; 28 | 29 | } // namespace lvr2 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRCameraModelItem.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRCAMERAMODELITEM_HPP 2 | #define LVRCAMERAMODELITEM_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "lvr2/types/ScanTypes.hpp" 8 | #include "lvr2/types/CameraModels.hpp" 9 | 10 | #include "LVRItemTypes.hpp" 11 | 12 | namespace lvr2 13 | { 14 | 15 | class LVRCameraModelItem : public QTreeWidgetItem 16 | { 17 | public: 18 | /** 19 | * @brief Constructor. Constructs an item with the cameramodel for the given ScanCamera 20 | */ 21 | LVRCameraModelItem(Camera& cam); 22 | 23 | /** 24 | * @brief Destructor. 25 | */ 26 | virtual ~LVRCameraModelItem() = default; 27 | 28 | /** 29 | * @brief Set the internal model to the given model 30 | */ 31 | void setModel(PinholeModel& model); 32 | 33 | protected: 34 | PinholeModel m_model; 35 | std::shared_ptr m_fxItem; 36 | std::shared_ptr m_cxItem; 37 | std::shared_ptr m_fyItem; 38 | std::shared_ptr m_cyItem; 39 | std::shared_ptr m_distortionItem; 40 | std::shared_ptr m_distortionCoef[4]; 41 | 42 | }; 43 | 44 | } /* namespace lvr2 */ 45 | 46 | #endif -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRExtrinsicsItem.cpp: -------------------------------------------------------------------------------- 1 | #include "LVRExtrinsicsItem.hpp" 2 | 3 | namespace lvr2 4 | { 5 | 6 | LVRExtrinsicsItem::LVRExtrinsicsItem(Extrinsicsd extrinsics) : 7 | QTreeWidgetItem(LVRExtrinsicsItemType) 8 | { 9 | setText(0, "Matrix"); 10 | setText(1, "Click to expand"); 11 | m_extrinsics = extrinsics; 12 | } 13 | 14 | Extrinsicsd LVRExtrinsicsItem::extrinsics() 15 | { 16 | return m_extrinsics; 17 | } 18 | 19 | } //namespace lvr2 -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRExtrinsicsItem.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVREXTRINSICSITEM_HPP 2 | #define LVREXTRINSICSITEM_HPP 3 | 4 | #include 5 | #include "lvr2/types/ScanTypes.hpp" 6 | #include 7 | #include "LVRItemTypes.hpp" 8 | 9 | 10 | namespace lvr2 11 | { 12 | 13 | class LVRExtrinsicsItem : public QTreeWidgetItem 14 | { 15 | public: 16 | 17 | /** 18 | * @brief Constructor. Constructs an Extrinsicsitem from the given extrinsics 19 | */ 20 | LVRExtrinsicsItem(Extrinsicsd extrinsics); 21 | 22 | /** 23 | * @brief Destructor. 24 | */ 25 | virtual ~LVRExtrinsicsItem() = default; 26 | 27 | /** 28 | * @brief returns the stored extrinsics 29 | */ 30 | Extrinsicsd extrinsics(); 31 | 32 | protected: 33 | Extrinsicsd m_extrinsics; 34 | 35 | }; 36 | 37 | } /* namespace lvr2 */ 38 | 39 | #endif -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRGraphicsView.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVR2_TOOLS_VIEWER_WIDGETS_LVRGraphicsView_HPP 2 | #define LVR2_TOOLS_VIEWER_WIDGETS_LVRGraphicsView_HPP 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | namespace lvr2 { 11 | 12 | class LVRGraphicsView : public QGraphicsView { 13 | Q_OBJECT 14 | public: 15 | using QGraphicsView::QGraphicsView; 16 | 17 | void init(); 18 | 19 | void gentle_zoom(double factor); 20 | void set_modifiers(Qt::KeyboardModifiers modifiers); 21 | void set_zoom_factor_base(double value); 22 | 23 | private: 24 | bool eventFilter(QObject* object, QEvent* event); 25 | void closeEvent(QCloseEvent *event); 26 | 27 | Qt::KeyboardModifiers m_modifiers; 28 | double m_zoom_factor_base; 29 | QPointF m_target_scene_pos; 30 | QPointF m_target_viewport_pos; 31 | 32 | Q_SIGNALS: 33 | void zoomed(); 34 | void closed(); 35 | }; 36 | 37 | } // namespace lvr2 38 | 39 | #endif -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRImageModelItem.cpp: -------------------------------------------------------------------------------- 1 | #include "LVRImageModelItem.hpp" 2 | 3 | namespace lvr2 4 | { 5 | 6 | LVRImageModelItem::LVRImageModelItem(CameraImage& img) : 7 | QTreeWidgetItem(LVRImageModelItemType) 8 | { 9 | //set text off item to meta 10 | setText(0, "Meta"); 11 | 12 | //create Extrinsics and timestamp item 13 | m_extrinsics = std::make_shared(img.extrinsicsEstimation); 14 | m_timestamp = std::make_shared(this); 15 | 16 | addChild(m_extrinsics.get()); 17 | addChild(m_timestamp.get()); 18 | 19 | //set text for children 20 | m_timestamp->setText(0, "timestamp"); 21 | m_timestamp->setText(1, QString::number(img.timestamp)); 22 | } 23 | 24 | } //namespace lvr2 -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRImageModelItem.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRIMAGEMODELITEM_HPP 2 | #define LVRIMAGEMODELITEM_HPP 3 | 4 | #include 5 | #include "lvr2/types/ScanTypes.hpp" 6 | #include 7 | #include "LVRExtrinsicsItem.hpp" 8 | #include "LVRItemTypes.hpp" 9 | 10 | 11 | namespace lvr2 12 | { 13 | 14 | class LVRImageModelItem : public QTreeWidgetItem 15 | { 16 | public: 17 | /** 18 | * @brief Constructor. Constructs an ImageModelItem from the ScanImage. 19 | */ 20 | LVRImageModelItem(CameraImage& img); 21 | 22 | /** 23 | * @brief Destructor. 24 | */ 25 | virtual ~LVRImageModelItem() = default; 26 | 27 | protected: 28 | std::shared_ptr m_extrinsics; 29 | std::shared_ptr m_timestamp; 30 | 31 | }; 32 | 33 | } /* namespace lvr2 */ 34 | 35 | #endif -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRLabelTreeWidget.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRLABELTREEWIDGET_HPP 2 | #define LVRLABELTREEWIDGET_HPP 3 | #include 4 | #include "lvr2/types/ScanTypes.hpp" 5 | #include "lvr2/types/MatrixTypes.hpp" 6 | #include 7 | #include "../vtkBridge/LVRPickingInteractor.hpp" 8 | class LVRLabelTreeWidget : public QTreeWidget 9 | { 10 | public: 11 | LVRLabelTreeWidget(QWidget *parent = nullptr); 12 | //using QTreeWidget::QTreeWidget; 13 | void addTopLevelItem(QTreeWidgetItem *item); 14 | void itemSelected(int); 15 | void setLabelRoot(lvr2::LabelRootPtr labelRoot, lvr2::LVRPickingInteractor*, QComboBox*); 16 | int getNextId(); 17 | 18 | lvr2::LabelRootPtr getLabelRoot(); 19 | private: 20 | int m_id = 1; 21 | lvr2::LabelRootPtr m_root; 22 | lvr2::LVRLabelInstanceTreeItem * m_selectedItem = nullptr; 23 | }; 24 | 25 | #endif //LVRLABELTREEWIDGET_HPP 26 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRModelTreeWidget.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRMODELTREEWIDGET_HPP 2 | #define LVRMODELTREEWIDGET_HPP 3 | #include 4 | #include "LVRModelItem.hpp" 5 | #include "LVRLabeledScanProjectEditMarkItem.hpp" 6 | #include "LVRScanProjectItem.hpp" 7 | #include "lvr2/types/ScanTypes.hpp" 8 | #include "lvr2/types/MatrixTypes.hpp" 9 | class LVRModelTreeWidget : public QTreeWidget 10 | { 11 | public: 12 | LVRModelTreeWidget(QWidget *parent = nullptr); 13 | //using QTreeWidget::QTreeWidget; 14 | void addTopLevelItem(QTreeWidgetItem *item); 15 | 16 | void addScanProject(lvr2::ScanProjectPtr scanProject, std::string =""); 17 | void addLabeledScanProjectEditMark(lvr2::LabeledScanProjectEditMarkPtr labeledScanProject, std::string =""); 18 | 19 | lvr2::LabeledScanProjectEditMarkBridgePtr getBridgePtr(){ 20 | return labelScanBridgePtr; 21 | }; 22 | lvr2::LabeledScanProjectEditMarkBridgePtr labelScanBridgePtr; 23 | }; 24 | 25 | #endif //LVRMODELTREEWIDGET_HPP 26 | -------------------------------------------------------------------------------- /src/tools/lvr2_viewer/widgets/LVRPointcloudSelectionDialog.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LVRPOINTCLOUDSELECTIONDIALOG_H 2 | #define LVRPOINTCLOUDSELECTIONDIALOG_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | class LVRPointcloudSelectionDialog : public QDialog 17 | { 18 | Q_OBJECT 19 | public: 20 | LVRPointcloudSelectionDialog(QStringList names, QWidget *parent = 0); 21 | QStringList getChecked(); 22 | public Q_SLOTS: 23 | void highlightChecked(QListWidgetItem* item); 24 | private: 25 | QListWidget* widget; 26 | QDialogButtonBox* buttonBox; 27 | QGroupBox* viewBox; 28 | QPushButton* acceptButton; 29 | QPushButton* closeButton; 30 | 31 | }; 32 | 33 | #endif // LVRPOINTCLOUDSELECTIONDIALOG 34 | -------------------------------------------------------------------------------- /src/tools/teaser_example/util/MyMatching.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by praktikum on 20.09.22. 3 | // 4 | 5 | #ifndef LAS_VEGAS_MYMATCHING_H 6 | #define LAS_VEGAS_MYMATCHING_H 7 | 8 | #include "open3d/Open3D.h" 9 | #include "open3d/pipelines/registration/Feature.h" 10 | /** 11 | * @brief Builds Correspondences for to sets of FPFH-features 12 | * 13 | * @param src_features, the indices of these features are first in the correspondences pair 14 | * @param dst_features, the indices of these features are second in the correspondences pair 15 | * @return 16 | */ 17 | std::vector> MyMatching( 18 | open3d::pipelines::registration::Feature& src_features, const open3d::pipelines::registration::Feature& dst_features); 19 | 20 | #endif //LAS_VEGAS_MYMATCHING_H 21 | -------------------------------------------------------------------------------- /src/tools/teaser_example/util/pointtovertex.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Gruppe teaser on 15.09.22. 3 | // 4 | 5 | #ifndef LAS_VEGAS_POINTTOVERTEX_H 6 | #define LAS_VEGAS_POINTTOVERTEX_H 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | 13 | /** 14 | * @brief replaces a word in a string 15 | * 16 | * @param s, string to replace something in 17 | * @param toReplace 18 | * @param replaceWith 19 | */ 20 | void replace_first( 21 | std::string &s, 22 | std::string const &toReplace, 23 | std::string const &replaceWith 24 | ); 25 | /** 26 | * @brief reads original ply files with point in header and creates new .ply with vertex in header 27 | * 28 | * @param src, path to ply 29 | * @param dest, path to new ply 30 | * @return status int 31 | */ 32 | int pointtovertex(std::string src, std::string dest); 33 | 34 | #endif //LAS_VEGAS_POINTTOVERTEX_H 35 | --------------------------------------------------------------------------------