Skip to content

Runner script and extended docs #5

Merged
merged 13 commits into from
Nov 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ temp_cells
metadata
h3_cells
.DS_Store
.venv
.venv
pointclouds
PotreeConverter/build
conversion_log.txt
7 changes: 7 additions & 0 deletions PotreeConverter/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

Converter/bin
Converter/.vs
Converter/obj
Converter.vcxproj.user
nocommit
build
20 changes: 20 additions & 0 deletions PotreeConverter/.vscode/keybindings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Place your key bindings in this file to overwrite the defaults
[
{
"key": "ctrl+l",
"command": "editor.action.deleteLines",
"when": "editorTextFocus && !editorReadonly"
},{
"key": "ctrl+shift+i",
"command": "editor.action.toggleRenderWhitespace"
},{
"key": "ctrl+d",
"command": "editor.action.copyLinesDownAction"
},{
"key": "alt+2",
"command": "type",
"args": {
"text": "`"
}
}
]
113 changes: 113 additions & 0 deletions PotreeConverter/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/build/Release/PotreeConverter.exe",
"args": [




// ===================
// SYSTEM 1
// ===================
// "D:/dev/pointclouds/bunny_20M.las",
// "D:/dev/pointclouds/mschuetz/lion.las",
// "D:/dev/pointclouds/riegl/retz.laz",
// "D:/dev/pointclouds/pix4d/eclepens.las",
// "D:/dev/pointclouds/pix4d/matterhorn.laz",
// "D:/dev/pointclouds/archpro/heidentor.las",
// "D:/dev/pointclouds/hg_v2_clip.las",
// "D:/dev/pointclouds/CA13",

// "D:/dev/pointclouds/CA13/ot_35120D8108C_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120D8108D_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120D8109A_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120D8109B_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120D8109C_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120D8109D_1.laz",

// "D:/temp/crashreport2/cube.laz",
// "D:/temp/crashreport2/trott_crashing",
// "D:/temp/crashreport/3dbuildings_walls_azimuth.laz",
// "-o", "D:/temp/crashreport2/converted",

// "D:/dev/pointclouds/CA13/ot_35120B4122C_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4121D_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4301B_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4301D_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4302C_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4302B_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4122D_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4302D_1.laz",
// "D:/dev/pointclouds/CA13/ot_35120B4302A_1.laz",

// "D:/temp/C_25ez1.laz",

// "F:/pointclouds/AHN3/files/C_25ez1.laz",
// "F:/pointclouds/AHN3/files/C_25gn1.laz",
// "F:/pointclouds/AHN3/files/C_25bz1.laz",
// "F:/pointclouds/AHN3/files/C_25bz2.laz",
// "F:/pointclouds/AHN3/files/C_25ez2.laz",
// "F:/pointclouds/AHN3/files/C_25dn1.laz",
// "F:/pointclouds/AHN3/files/C_25dn2.laz",
// "F:/pointclouds/AHN3/files/C_25gn2.laz",

// "D:/temp/compression/C_05DN2.LAZ",

// "D:/dev/pointclouds/tuwien_baugeschichte/candi Banyunibo",


"D:/dev/pointclouds/sitn/potree2/aerial_lidar2019_2524_1197_laz14_dip.laz",
// "D:/dev/pointclouds/sitn/potree2/aerial_lidar2019_2524_1197_las14.las",

// "D:/temp/Bargello10Mtest.las",


// "D:/dev/pointclouds/testdata/Bargello10Mtest.las",
// "D:/dev/pointclouds/testdata/crash.las",
// "D:/dev/pointclouds/testdata/eclepens.laz",
// "D:/dev/pointclouds/testdata/Grab15.laz",
// "D:/dev/pointclouds/testdata/heidentor.las",
// "D:/dev/pointclouds/testdata/lion.laz",
// "D:/dev/pointclouds/testdata/3dbuildings_walls_azimuth.laz",


"-o", "D:/temp/cpotree/sitn_dip_2.0",

// ===================
// SYSTEM 2
// ===================
// "C:/dev/pointclouds/nvidia.las",
// "C:/dev/pointclouds/eclepens.las",
// "-o", "C:/temp/test/converter",

// ===================
// OPTIONS
// ===================
// "--flags", "just-stats",
// "--flags", "no-chunking",
// "--flags", "no-indexing", "keep-chunks",
// "--flags", "no-chunking", "keep-chunks",
// "--flags", "keep-chunks",
// "--keep-chunks",
// "--generate-page", "heidentor",
// "-m", "poisson", // ["poisson", "poisson_average", "random"]
// "--chunkMethod", "SKIP" // [LASZIP, LAS_CUSTOM, SKIP]
// "--attributes", "rgb", "Dip (degrees)", "Dip direction (degrees)", "NormalX", "NormalY", "NormalZ",
// "--attributes" , "rgb", "intensity", "classification", "mjpmie",
"--encoding", "BROTLI",
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
106 changes: 106 additions & 0 deletions PotreeConverter/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
{
"workbench.editor.enablePreview": false,
"files.associations": {
"*.cs": "cpp",
"*.wgsl": "cpp",
"*.vs": "cpp",
"*.fs": "cpp",
"filesystem": "cpp",
"xstring": "cpp",
"algorithm": "cpp",
"array": "cpp",
"atomic": "cpp",
"cctype": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"concepts": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"deque": "cpp",
"exception": "cpp",
"execution": "cpp",
"resumable": "cpp",
"forward_list": "cpp",
"fstream": "cpp",
"functional": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"ios": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"iterator": "cpp",
"limits": "cpp",
"list": "cpp",
"locale": "cpp",
"map": "cpp",
"memory": "cpp",
"mutex": "cpp",
"new": "cpp",
"numeric": "cpp",
"ostream": "cpp",
"queue": "cpp",
"ratio": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"string": "cpp",
"system_error": "cpp",
"thread": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"typeinfo": "cpp",
"unordered_map": "cpp",
"utility": "cpp",
"valarray": "cpp",
"vector": "cpp",
"xfacet": "cpp",
"xhash": "cpp",
"xiosbase": "cpp",
"xlocale": "cpp",
"xlocbuf": "cpp",
"xlocinfo": "cpp",
"xlocmes": "cpp",
"xlocmon": "cpp",
"xlocnum": "cpp",
"xloctime": "cpp",
"xmemory": "cpp",
"xstddef": "cpp",
"xtr1common": "cpp",
"xtree": "cpp",
"xutility": "cpp",
"random": "cpp",
"hash_map": "cpp",
"set": "cpp",
"condition_variable": "cpp",
"regex": "cpp",
"stack": "cpp",
"variant": "cpp",
"bit": "cpp",
"charconv": "cpp",
"compare": "cpp",
"format": "cpp",
"optional": "cpp",
"stop_token": "cpp"
},
"files.trimTrailingWhitespace": false,
"editor.fontSize": 28,
"editor.autoIndent": "advanced",
"editor.detectIndentation": false,
"editor.insertSpaces": false,
"editor.minimap.enabled": false,
"editor.autoClosingBrackets": "never",
"editor.formatOnType": false,
"editor.acceptSuggestionOnEnter": "off",
"editor.acceptSuggestionOnCommitCharacter": false,
"editor.mouseWheelZoom": true,
"editor.renderWhitespace": "all",
"editor.autoClosingQuotes": "never",
"editor.autoSurround": "never",
}
110 changes: 110 additions & 0 deletions PotreeConverter/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
cmake_minimum_required(VERSION 3.16)
set(CMAKE_SUPPRESS_REGENERATION true)

project(PotreeConverter LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)

#message(${PROJECT_SOURCE_DIR})

set(HEADER_FILES
./Converter/include/Attributes.h
./Converter/include/chunker_countsort_laszip.h
./Converter/include/ChunkRefiner.h
./Converter/include/ConcurrentWriter.h
./Converter/include/converter_utils.h
./Converter/include/indexer.h
./Converter/include/prototyping.h
./Converter/include/sampler_poisson.h
./Converter/include/sampler_poisson_average.h
./Converter/include/sampler_random.h
./Converter/include/structures.h
./Converter/include/Vector3.h
./Converter/include/PotreeConverter.h
./Converter/include/logger.h
./Converter/modules/LasLoader/LasLoader.h
./Converter/modules/unsuck/unsuck.hpp
)

add_executable(PotreeConverter
./Converter/src/chunker_countsort_laszip.cpp
./Converter/src/indexer.cpp
./Converter/src/main.cpp
./Converter/src/logger.cpp
./Converter/modules/LasLoader/LasLoader.cpp
./Converter/modules/unsuck/unsuck_platform_specific.cpp
${HEADER_FILES}
)

set(LASZIP_DIR "${PROJECT_SOURCE_DIR}/Converter/libs/laszip")
add_subdirectory(${LASZIP_DIR})
target_link_libraries(PotreeConverter laszip)

set(BROTLI_DIR "${PROJECT_SOURCE_DIR}/Converter/libs/brotli")
add_subdirectory(${BROTLI_DIR})
target_link_libraries(PotreeConverter brotlienc-static)
target_link_libraries(PotreeConverter brotlidec-static)


target_include_directories(PotreeConverter PRIVATE "./Converter/include")
target_include_directories(PotreeConverter PRIVATE "./Converter/modules")
target_include_directories(PotreeConverter PRIVATE "./Converter/libs")

if(APPLE)
## Do nothing. Just skip the Unix check
elseif (UNIX)
find_package(Threads REQUIRED)
find_package(TBB REQUIRED)

target_link_libraries(${PROJECT_NAME} Threads::Threads)
target_link_libraries(${PROJECT_NAME} tbb)


#SET(CMAKE_CXX_FLAGS "-pthread -ltbb")
endif ()

###############################################
# COPY PAGE TEMPLATE TO BINARY DIRECTORY
###############################################

add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/resources/page_template
$<TARGET_FILE_DIR:${PROJECT_NAME}>/resources/page_template)

###############################################
# COPY LICENSE FILES TO BINARY DIRECTORY
###############################################
add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${LASZIP_DIR}/COPYING
$<TARGET_FILE_DIR:${PROJECT_NAME}>/licenses/license_laszip.txt)

add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${BROTLI_DIR}/LICENSE
$<TARGET_FILE_DIR:${PROJECT_NAME}>/licenses/license_brotli.txt)

add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${PROJECT_SOURCE_DIR}/Converter/libs/json/LICENSE
$<TARGET_FILE_DIR:${PROJECT_NAME}>/licenses/license_json.txt)

add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${PROJECT_SOURCE_DIR}/LICENSE
$<TARGET_FILE_DIR:${PROJECT_NAME}>/licenses/license_potree_converter.txt)

add_custom_command(
TARGET PotreeConverter POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${PROJECT_SOURCE_DIR}/README.md
$<TARGET_FILE_DIR:${PROJECT_NAME}>/README.md)

Loading