Skip to content

Commit

Permalink
Merge pull request #67 from Forceflow/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
Forceflow committed Jul 27, 2022
2 parents 75bf3b1 + b3833dc commit 6b5e022
Show file tree
Hide file tree
Showing 12 changed files with 544 additions and 10 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build_cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CMake

on:
push:
branches: [ main ]
branches: [ main,dev ]
pull_request:
branches: [ main ]
branches: [ main,dev ]

jobs:
build:
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[![Build Status](https://travis-ci.org/Forceflow/ooc_svo_builder.svg?branch=master)](https://travis-ci.org/Forceflow/ooc_svo_builder) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4JAUNWWYUVRN4&currency_code=EUR&source=url)
[![CMake](https://github.com/Forceflow/ooc_svo_builder/actions/workflows/build_cmake.yml/badge.svg?branch=main)](https://github.com/Forceflow/ooc_svo_builder/actions/workflows/build_cmake.yml) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4JAUNWWYUVRN4&currency_code=EUR&source=url)

# Out-Of-Core SVO Builder v1.6.3
# Out-Of-Core SVO Builder v1.6.4

This is a proof of concept implementation of the algorithm explained in our HPG 2013 paper, Out Of Core Construction of Sparse Voxel Octrees. The project was subsequently updated after the article was also published in Computer Graphics Forum 2014. The paper and additional material can be found on the [project page](http://graphics.cs.kuleuven.be/publications/BLD14OCCSVO/).

Expand All @@ -15,9 +15,9 @@ There are two tools distributed in this release, both are required to convert a
The current `ooc_svo_builder` can be built on:

* **Windows:**
* Visual Studio project files for VS2015, VS2017 and VS2019 (tested on Community Editions)
* Visual Studio project files for VS2015, VS2017, VS2019 and VS2022 (tested on Community Editions)
* Precompiled binaries for Win64 (see releases)
* **Linux** through Cmake or build scripts in `linux` folder. Also, see the travis.yml for how the automated build is made.
* **Linux** through Cmake or build scripts in `linux` folder. Also, see the [github action config file](https://github.com/Forceflow/ooc_svo_builder/blob/main/.github/workflows/build_cmake.yml) for more info.
* **OSX** through Cmake

# Dependencies
Expand All @@ -28,12 +28,12 @@ Additional library dependencies are:

For the Windows build, you have to configure the location of the external libraries (see dependencies) in the supplied props files. You can configure where VS should copy the compiled binaries to and where the build process can find the required [trimesh2](https://github.com/Forceflow/trimesh2) and [glm](https://github.com/g-truc/glm) libraries.

*/msvc/vs2019/svo_builder_custom_includes.props* :
*/msvc/vs2022/svo_builder_custom_includes.props* :
```
<BINARY_OUTPUT_DIR>C:\Binaries\</BINARY_OUTPUT_DIR>
<GLM_DIR>C:\libs\glm\</GLM_DIR>
```
*/msvc/vs2019/tri_convert_custom_includes.props* :
*/msvc/vs2022/tri_convert_custom_includes.props* :
```
<BINARY_OUTPUT_DIR>C:\Binaries\</BINARY_OUTPUT_DIR>
<TRIMESH_DIR>C:\libs\trimesh2\</TRIMESH_DIR>
Expand Down
40 changes: 40 additions & 0 deletions msvc/vs2022/ooc_svo_builder.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2015
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tri_convert", "tri_convert.vcxproj", "{BD2A8ED9-8168-4999-869C-F2D52496BA10}"
ProjectSection(ProjectDependencies) = postProject
{7E07FCA1-CC53-4E69-86CD-29D886C50569} = {7E07FCA1-CC53-4E69-86CD-29D886C50569}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "svo_builder", "svo_builder.vcxproj", "{7E07FCA1-CC53-4E69-86CD-29D886C50569}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug Binary|x64 = Debug Binary|x64
Debug|x64 = Debug|x64
Release Binary|x64 = Release Binary|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Debug Binary|x64.ActiveCfg = Debug Binary|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Debug Binary|x64.Build.0 = Debug Binary|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Debug|x64.ActiveCfg = Debug|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Debug|x64.Build.0 = Debug|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Release Binary|x64.ActiveCfg = Release Binary|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Release Binary|x64.Build.0 = Release Binary|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Release|x64.ActiveCfg = Release|x64
{BD2A8ED9-8168-4999-869C-F2D52496BA10}.Release|x64.Build.0 = Release|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Debug Binary|x64.ActiveCfg = Debug Binary|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Debug Binary|x64.Build.0 = Debug Binary|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Debug|x64.ActiveCfg = Debug|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Debug|x64.Build.0 = Debug|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Release Binary|x64.ActiveCfg = Release Binary|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Release Binary|x64.Build.0 = Release Binary|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Release|x64.ActiveCfg = Release|x64
{7E07FCA1-CC53-4E69-86CD-29D886C50569}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
172 changes: 172 additions & 0 deletions msvc/vs2022/svo_builder.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug Binary|x64">
<Configuration>Debug Binary</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release Binary|x64">
<Configuration>Release Binary</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7E07FCA1-CC53-4E69-86CD-29D886C50569}</ProjectGuid>
<RootNamespace>svo_builder</RootNamespace>
<ProjectName>svo_builder</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Binary|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Binary|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="svo_builder_custom_includes.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Binary|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="svo_builder_custom_includes.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="svo_builder_custom_includes.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Binary|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="svo_builder_custom_includes.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Binary|x64'">
<TargetName>$(ProjectName)_binary</TargetName>
<OutDir>$(BINARY_OUTPUT_DIR)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(BINARY_OUTPUT_DIR)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(BINARY_OUTPUT_DIR)</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Binary|x64'">
<OutDir>$(BINARY_OUTPUT_DIR)</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Binary|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>BINARY_VOXELIZATION;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WholeProgramOptimization>true</WholeProgramOptimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Binary|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;BINARY_VOXELIZATION;NDEBUG;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<OptimizeForWindowsApplication>true</OptimizeForWindowsApplication>
<EnableMatrixMultiplyLibraryCall>Yes</EnableMatrixMultiplyLibraryCall>
<Parallelization>true</Parallelization>
<UseIntelOptimizedHeaders>true</UseIntelOptimizedHeaders>
<Optimization>MaxSpeed</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\src\svo_builder\BarycentricCoords.h" />
<ClInclude Include="..\..\src\svo_builder\BBoxBuffer.h" />
<ClInclude Include="..\..\src\svo_builder\geometry_primitives.h" />
<ClInclude Include="..\..\src\svo_builder\globals.h" />
<ClInclude Include="..\..\src\svo_builder\intersection.h" />
<ClInclude Include="..\..\src\svo_builder\Node.h" />
<ClInclude Include="..\..\src\svo_builder\OctreeBuilder.h" />
<ClInclude Include="..\..\src\svo_builder\octree_io.h" />
<ClInclude Include="..\..\src\svo_builder\partitioner.h" />
<ClInclude Include="..\..\src\svo_builder\timer.h" />
<ClInclude Include="..\..\src\svo_builder\VoxelData.h" />
<ClInclude Include="..\..\src\svo_builder\voxelizer.h" />
<ClInclude Include="..\..\src\svo_builder\svo_builder_util.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\svo_builder\OctreeBuilder.cpp" />
<ClCompile Include="..\..\src\svo_builder\partitioner.cpp" />
<ClCompile Include="..\..\src\svo_builder\voxelizer.cpp" />
<ClCompile Include="..\..\src\svo_builder\main.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
81 changes: 81 additions & 0 deletions msvc/vs2022/svo_builder.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Header Files\Partitioning">
<UniqueIdentifier>{58358ae3-48a3-4644-89b1-6407b78a1d87}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\SVO Building">
<UniqueIdentifier>{0c388158-f680-4ed5-be2e-b0dd722deb0c}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Voxelizer">
<UniqueIdentifier>{662e2f44-ecc7-49f5-a7eb-e0fb3121c710}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\svo_builder\OctreeBuilder.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\svo_builder\partitioner.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\svo_builder\voxelizer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\svo_builder\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\svo_builder\geometry_primitives.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\globals.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\intersection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\svo_builder_util.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\timer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\BBoxBuffer.h">
<Filter>Header Files\Partitioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\partitioner.h">
<Filter>Header Files\Partitioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\OctreeBuilder.h">
<Filter>Header Files\SVO Building</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\Node.h">
<Filter>Header Files\SVO Building</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\octree_io.h">
<Filter>Header Files\SVO Building</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\VoxelData.h">
<Filter>Header Files\SVO Building</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\voxelizer.h">
<Filter>Header Files\Voxelizer</Filter>
</ClInclude>
<ClInclude Include="..\..\src\svo_builder\BarycentricCoords.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
23 changes: 23 additions & 0 deletions msvc/vs2022/svo_builder_custom_includes.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BINARY_OUTPUT_DIR>D:\dev\Binaries\</BINARY_OUTPUT_DIR>
<GLM_DIR>D:\dev\libs\glm\</GLM_DIR>
</PropertyGroup>
<PropertyGroup>
<IncludePath>$(GLM_DIR);$(SolutionDir)\..\..\src\libs\libtri\include\;$(IncludePath)</IncludePath>
<OutDir>$(BINARY_OUTPUT_DIR)</OutDir>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="BINARY_OUTPUT_DIR">
<Value>$(BINARY_OUTPUT_DIR)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="GLM_DIR">
<Value>$(GLM_DIR)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
Loading

0 comments on commit 6b5e022

Please sign in to comment.