Commit 836b49e3 authored by YIxin-Hu's avatar YIxin-Hu
Browse files

update cmake for fast winding number; fix disable tbb

parent 3898a770
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
################################################################################

# FloatTetwild options
option(FLOAT_TETWILD_ENABLE_TBB         "Enable TBB"                    ON)
option(FLOAT_TETWILD_ENABLE_TBB         "Enable TBB"                    OFF)
option(FLOAT_TETWILD_USE_FLOAT          "Use floats instead of double"  OFF)
option(FLOAT_TETWILD_WITH_SANITIZERS    "Use sanitizers"                OFF)
option(FLOAT_TETWILD_WITH_EXACT_ENVELOPE    "Use exact envelope"        OFF)
@@ -97,7 +97,7 @@ ENDIF()
# ENDIF()

# add_library() can only be called without any source since CMake 3.11 ...
add_library(${PROJECT_NAME} src/Logger.cpp)
add_library(${PROJECT_NAME} src/Logger.cpp src/external/WindingNumber.h)

# Public include directory for FloatTetwild
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}/include)
@@ -135,7 +135,7 @@ target_link_libraries(${PROJECT_NAME}
		geogram::geogram
		spdlog::spdlog
		Threads::Threads
		fast_winding_number
#		fast_winding_number
		json
		${GMP_LIBRARIES}
		# ${MPFR_LIBRARIES}
+27 −27
Original line number Diff line number Diff line
@@ -93,30 +93,30 @@ endif()


# winding number
float_tetwild_download_windingnumber()
set(windingnumber_SOURCES
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Math.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Types.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.cpp
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ArrayImpl.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVH.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVHImpl.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_FixedVector.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ParallelUtil.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SmallArray.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.cpp
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SIMD.h
	${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SSEFunc.h
)

add_library(fast_winding_number ${windingnumber_SOURCES})
target_link_libraries(fast_winding_number PRIVATE tbb::tbb)
target_compile_features(fast_winding_number PRIVATE ${CXX17_FEATURES})
target_include_directories(fast_winding_number PUBLIC "${FLOAT_TETWILD_EXTERNAL}/")

if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE)
	float_tetwild_download_exact_envelope()
	add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope)
endif()
 No newline at end of file
#float_tetwild_download_windingnumber()
#set(windingnumber_SOURCES
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Math.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Types.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.cpp
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ArrayImpl.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVH.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVHImpl.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_FixedVector.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ParallelUtil.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SmallArray.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.cpp
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SIMD.h
#	${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SSEFunc.h
#)
#
#add_library(fast_winding_number ${windingnumber_SOURCES})
##target_link_libraries(fast_winding_number PRIVATE tbb::tbb)
#target_compile_features(fast_winding_number PRIVATE ${CXX17_FEATURES})
#target_include_directories(fast_winding_number PUBLIC "${FLOAT_TETWILD_EXTERNAL}/")
#
#if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE)
#	float_tetwild_download_exact_envelope()
#	add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope)
#endif()
 No newline at end of file
+8 −8
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ endfunction()
function(float_tetwild_download_libigl)
    float_tetwild_download_project(libigl
        GIT_REPOSITORY https://github.com/libigl/libigl.git
        GIT_TAG        015ac35cd135e3a40c3e71443eeda4a9a4ccf7f5
        GIT_TAG        fb3bd3571e7cc36d99ea505bc5ccba99650ad73c
    )
endfunction()

@@ -104,13 +104,13 @@ function(float_tetwild_download_aabbcc)
            )
endfunction()

## winding number
function(float_tetwild_download_windingnumber)
    float_tetwild_download_project(windingnumber
            GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git
            GIT_TAG        1e6081e52905575d8e98fb8b7c0921274a18752f
            )
endfunction()
### winding number
#function(float_tetwild_download_windingnumber)
#    float_tetwild_download_project(windingnumber
#            GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git
#            GIT_TAG        bde8780ec848fa71c1294a0af50347e968b19493
#            )
#endfunction()


## exact envelope
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ else()
			bfs_orient.h
			bfs_orient.cpp

			WindingNumber.h
			FastWindingNumber.hpp
			FastWindingNumber.cpp

+17 −21
Original line number Diff line number Diff line
#include <floattetwild/FastWindingNumber.hpp>

#include <igl/parallel_for.h>

#include <windingnumber/UT_SolidAngle.h>
#include <floattetwild/WindingNumber.h>
//#include <windingnumber/UT_SolidAngle.h>

#include <cstdlib>
#define _USE_MATH_DEFINES
#include <math.h>


namespace floatTetWild {

void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P, Eigen::VectorXd &W)
{
void floatTetWild::fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P,
                         Eigen::VectorXd &W) {
    Eigen::Matrix<int, Eigen::Dynamic, 3, Eigen::RowMajor> F_copy = F;

    HDK_Sample::UT_SolidAngle<float,float> solid_angle;
    igl::FastWindingNumber::HDK_Sample::UT_SolidAngle<float, float> solid_angle;

    int order = 2;
    double accuracy_scale = 2.0;

    std::vector<HDK_Sample::UT_Vector3T<float> > U(V.rows());
    std::vector<igl::FastWindingNumber::HDK_Sample::UT_Vector3T<float> > U(V.rows());
    for (int i = 0; i < V.rows(); i++) {
        for (int j = 0; j < 3; j++) {
            U[i][j] = V(i, j);
@@ -33,11 +30,10 @@ void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, con

    //for(int p = 0;p<P.rows();p++)
    igl::parallel_for(P.rows(), [&](int p) {
        HDK_Sample::UT_Vector3T<float>Pp;
        igl::FastWindingNumber::HDK_Sample::UT_Vector3T<float> Pp;
        Pp[0] = P(p, 0);
        Pp[1] = P(p, 1);
        Pp[2] = P(p, 2);
        W(p) = solid_angle.computeSolidAngle(Pp, accuracy_scale) / (4.0 * M_PI);
    }, 1000);
}
 No newline at end of file
}
 No newline at end of file
Loading