Code Monkey home page Code Monkey logo

ipc-sim / ipc Goto Github PK

View Code? Open in Web Editor NEW
537.0 20.0 73.0 166.98 MB

Incremental Potential Contact (IPC) is for robust and accurate time stepping of nonlinear elastodynamics. IPC guarantees intersection- and inversion-free trajectories regardless of materials, time-step sizes, velocities, or deformation severity.

Home Page: https://ipc-sim.github.io/

License: MIT License

CMake 5.73% Python 1.91% Shell 1.08% C++ 91.27%
computer-graphics computer-animation physics-based-animation physical-simulation elastodynamics optimization-time-integrator numerical-optimization constrained-optimization barrier-method interior-point-method

ipc's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ipc's Issues

how to link SuitSparse to IPC-master on Windows

I am using Windows and am new to SuitSparse. I wonder how to link SuitSparse to IPC-master.

I clone SuitSparse and build it as below.

图片

When I build IPC-master, the output is as below

图片

What else should I do to use SuitSparse in IPC?

Black gif files

Any thought on why I see black gif and white PNGs in the output directory? I can see the rendering window and it shows the simulation perfectly.
I am running on Ubuntu.
Thanks

Maybe directly set LIBIGL_USE_STATIC_LIBRARY to be always OFF

Hi

There're several places requiring compiler to be C++17 compliant in the code.

At the same time, the CMakeLists.txt allows users to set LIBIGL_USE_STATIC_LIBRARY to be ON. If user really does so, it will lead to compilation error from LIBIGL. The reason is that there're STL functions in libigl being removed in C++17.

Suggestions: either

  1. Remove the option(LIBIGL_USE_STATIC_LIBRARY ... in CMakeLists.txt
  2. OR update README.md to tell users they cannot build with LIBIGL_USE_STATIC_LIBRARY=ON

Additional info: the error I got with ON:

/home/wzheng/cipc/external/libigl/include/igl/blue_noise.cpp:212:10: error: no
      member named 'random_shuffle' in namespace 'std'
    std::random_shuffle(std::begin(N), std::end(N));

Thanks

Camera to world transformation

Was wondering if there's an easy or recommended way to get a pixel -> world coordinates transform for an image taken in IPC?

[error] constraintVal = 0 when evaluating constraints

I get this error when trying to run IPC on a custom rope mesh.

       0  8.90364 0.155414
      0 8.83411  0.1542
       0  8.80866 0.153756
       0  8.99863 0.157072

A friend is able to run the same .txt file with the same mesh on a different computer. Do you have any suggestions on what the root cause may be? The tutorials run fine for me.

New Animation Request

Hello,

I was wondering if you could help me write a new Animation case that applies a normal force to the surface nodes of the mesh.
The algorithm would go something like this:

  1. Calculate normals at either nodes or elements (then average them in 1 ring to get at nodes)
  2. Apply a prescribed magnitude force at each node on the external surface in the normal direction
    The use case is that I want to apply both an internal/external pressure to a cylinder

Obviously, this is an enhancement and just looking for some help

Docs for integration into existing project

Hi, I just got to know this paper the found it is amazingly open-sourced!

By briefly reading the doc, it seems (correct me if I'm wrong) the current code is meant to be used as independent software.

Is it possible / Is there any doc for integrating it into an existing project in a library mode?
Say, I'd like to run the simulation in my own OpenGL environment on my mesh; and instead of exporting all the output into files, I would like to store the obj output internally, and use a slider control at which stage the simulation is, etc...

The meaning of matrix B

// compute B

Dear authors, thank you for your amazing work. I am new to continuum mechanics, and I cannot understand the meaning of matrix B, left, and right coefficient here, and how B is composed of by the two coefficients. And why should we compute some values on Cdim2 (i.e. xy, yz, zx)?
Thanks a lot!

Output interval control

I'm having trouble getting IPC to output and .obj file every timestep. I looked over the documentation and there is an input called playBackSpeed. I've tried setting this value to 1 and to a speed that that equals number of time steps/simulation end time. Neither of these setting has produced a 1.obj or a 2.obj file after Timestep 1 and 2 are completed.

Any help would be appreciated.

Thanks,
Nick

meshSeq error

Hello,

I'm trying to use the meshSeq script to put a custom motion in some objects but I'm getting the "iteration cap reached for IP subproblem solve!!!", even for the example "2cubesFall_rotateCO_meshSeq.txt" showed in the Wiki.

Is there some specific configuration to run such type of simulations?

Can IPC be used to simulate voxel-based object

Hi, Thanks for your great work!!

I'd like to know if IPC is able to be used to simulate contact between voxel-based objects with inner voxels, like:
image

instead of the mesh-based representation which can only represent the surface of an object:
image

However, in the example, it seems all objects are represented as surface mesh without inner structures.

Thanks!

Error for calculating point edge distance?

In MeshCollisionUtils.cpp, the point edge distance was calculated as following.

inline void d_PE(const Eigen::RowVector3d& v0,
    const Eigen::RowVector3d& v1,
    const Eigen::RowVector3d& v2,
    double& d)
{
    d = (v1 - v0).cross(v2 - v0).squaredNorm() / (v2 - v1).squaredNorm();
}

I think this is actually calculating the squared distance between a point and edge.

Running very slow

When I run this example 1_squeezeOut.txt,it's very slow.Hoping for help.Thank you very much

error about compile

hello,thanks for your project.It's amazing that project can search dependence and clone and make it automatically.
when I run the command:"python build.py",it met error in the step of "make"

pf@pf-N95TP6:~/IPC$ python build.py
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is Clang 3.8.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found BLAS: /usr/lib/libopenblas.so
-- Found AMD headers in: /usr/include/suitesparse
-- Found AMD library: /usr/lib/x86_64-linux-gnu/libamd.so
-- Found CAMD headers in: /usr/include/suitesparse
-- Found CAMD library: /usr/lib/x86_64-linux-gnu/libcamd.so
-- Found COLAMD headers in: /usr/include/suitesparse
-- Found COLAMD library: /usr/lib/x86_64-linux-gnu/libcolamd.so
-- Found CCOLAMD headers in: /usr/include/suitesparse
-- Found CCOLAMD library: /usr/lib/x86_64-linux-gnu/libccolamd.so
-- Found CHOLMOD headers in: /usr/include/suitesparse
-- Found CHOLMOD library: /usr/lib/x86_64-linux-gnu/libcholmod.so
-- Found SUITESPARSEQR headers in: /usr/include/suitesparse
-- Found SUITESPARSEQR library: /usr/lib/x86_64-linux-gnu/libspqr.so
-- Found SUITESPARSE_CONFIG headers in: /usr/include/suitesparse
-- Found SUITESPARSE_CONFIG library: /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so
-- Found LIBRT library: /usr/lib/x86_64-linux-gnu/librt.so
-- Adding librt: /usr/lib/x86_64-linux-gnu/librt.so to SuiteSparse_config libraries (required on Linux & Unix [not OSX] if SuiteSparse is compiled with timing).
-- Found METIS headers in: /usr/include
-- Found METIS library: /usr/lib/x86_64-linux-gnu/libmetis.so
-- Found SuiteSparse: TRUE (found version "4.4.6")
Cloning into 'osqp'...
HEAD is now at e2b6fdb... Added bintray override to package deployment
Cloning into 'lin_sys/direct/qdldl/qdldl_sources'...
-- We are on a Linux system
-- Embedded is OFF
-- Printing is ON
-- Profiling is ON
-- User interrupt is ON
-- Floats are OFF
-- Long integers (64bit) are OFF
-- Code coverage is OFF
-- MKL Pardiso: ON
-- Floats are OFF
-- Long integers (64bit) are OFF
Cloning into 'libigl'...
HEAD is now at b0d7740... Use edge length from mesh in igl::dijkstra. (#1170)
Cloning into 'eigen'...
HEAD is now at cf794d3... bump to 3.3.7
-- Creating target: igl::core (igl)
-- Creating target: igl::opengl (igl_opengl)
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
Cloning into 'glad'...
HEAD is now at 09b4969... Update CMakeLists.txt
-- Creating target: igl::opengl_glfw (igl_opengl_glfw)
Cloning into 'glfw'...
HEAD is now at b079610... Documentation work
-- Using X11 for window creation
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Creating target: igl::opengl_glfw_imgui (igl_opengl_glfw_imgui)
Cloning into 'imgui'...
HEAD is now at ebe79bb... Demo: Custom rendering: Minor sizing issue fix.
Cloning into 'libigl-imgui'...
HEAD is now at 07ecd38... Update to imgui 1.66b.
Cloning into 'stb'...
HEAD is now at cd0fa3f... Merge pull request #2 from w-m/master
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Creating target: igl::png (igl_png)
Cloning into 'tetgen'...
HEAD is now at c63e7a6... Fix a stack-buffer overflow in predicates.cxx
-- Creating target: igl::tetgen (igl_tetgen)
Cloning into 'triangle'...
HEAD is now at d284c4a... Avoid symbol collision with predicates (libigl/libigl#1168).
-- Creating target: igl::triangle (igl_triangle)
Cloning into 'predicates'...
HEAD is now at 4c57c1d... Revert "Avoid symbol collision with triangle."
-- Creating target: igl::predicates (igl_predicates)
Cloning into 'tbb'...
HEAD is now at 344fa84... Build system / CI fixes
-- TBB: NOT using libc++.
Cloning into 'exact-ccd'...
HEAD is now at 305bb6f... Merge pull request #2 from zfergus/master
Cloning into 'spdlog'...
HEAD is now at 1549ff1... Replace STRING(PREPEND ..) in CMakeLists.txt to support older CMake versions
Cloning into 'amgcl'...
HEAD is now at 461a66c... Suppress uninitialized variable warning
Cloning into 'pyamgcl/pybind11'...
Cloning into 'tools/clang'...
-- Found Boost: /usr/include (found version "1.58.0") found components: program_options serialization unit_test_framework
-- Found OpenMP_C: -fopenmp (found version "4.0")
-- Found OpenMP_CXX: -fopenmp=libomp (found version "4.0")
-- Found OpenMP: TRUE (found version "4.0")
-- Found MPI_C: /usr/lib/openmpi/lib/libmpi.so (found version "3.0")
-- Found MPI_CXX: /usr/lib/openmpi/lib/libmpi_cxx.so (found version "3.0")
-- Found MPI: TRUE (found version "3.0")
CMake Warning (dev) at /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message):
The package name passed to find_package_handle_standard_args (METIS) does
not match the name of the calling package (Metis). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
external/amgcl/cmake/FindMetis.cmake:24 (find_package_handle_standard_args)
external/amgcl/CMakeLists.txt:195 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Found METIS: /usr/include
CMake Warning (dev) at /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message):
The package name passed to find_package_handle_standard_args (SCOTCH)
does not match the name of the calling package (Scotch). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
external/amgcl/cmake/FindScotch.cmake:22 (find_package_handle_standard_args)
external/amgcl/CMakeLists.txt:196 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Could NOT find SCOTCH (missing: SCOTCH_INCLUDES SCOTCH_LIBRARIES)
CMake Warning (dev) at /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message):
The package name passed to find_package_handle_standard_args (PASTIX)
does not match the name of the calling package (Pastix). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
external/amgcl/cmake/FindPastix.cmake:11 (find_package_handle_standard_args)
external/amgcl/CMakeLists.txt:197 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Could NOT find PASTIX (missing: PASTIX_INCLUDES PASTIX_LIBRARIES)
Cloning into 'Catch2'...
HEAD is now at 87b745d... v2.10.2
Cloning into 'finite-diff'...
HEAD is now at a1b8b56... Fixed name collision in custom_download_project
-- Performing Test IS_SUPPORTED_-Wall
-- Performing Test IS_SUPPORTED_-Wall - Success
-- Performing Test IS_SUPPORTED_-Wextra
-- Performing Test IS_SUPPORTED_-Wextra - Success
-- Performing Test IS_SUPPORTED_-pedantic
-- Performing Test IS_SUPPORTED_-pedantic - Success
-- Performing Test IS_SUPPORTED_-Wunused
-- Performing Test IS_SUPPORTED_-Wunused - Success
-- Performing Test IS_SUPPORTED_-Wno-long-long
-- Performing Test IS_SUPPORTED_-Wno-long-long - Success
-- Performing Test IS_SUPPORTED_-Wpointer-arith
-- Performing Test IS_SUPPORTED_-Wpointer-arith - Success
-- Performing Test IS_SUPPORTED_-Wformat-2
-- Performing Test IS_SUPPORTED_-Wformat-2 - Success
-- Performing Test IS_SUPPORTED_-Wuninitialized
-- Performing Test IS_SUPPORTED_-Wuninitialized - Success
-- Performing Test IS_SUPPORTED_-Wcast-qual
-- Performing Test IS_SUPPORTED_-Wcast-qual - Success
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn - Success
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute - Success
-- Performing Test IS_SUPPORTED_-Wredundant-decls
-- Performing Test IS_SUPPORTED_-Wredundant-decls - Success
-- Performing Test IS_SUPPORTED_-Werror-implicit
-- Performing Test IS_SUPPORTED_-Werror-implicit - Success
-- Performing Test IS_SUPPORTED_-Werror-nonnull
-- Performing Test IS_SUPPORTED_-Werror-nonnull - Success
-- Performing Test IS_SUPPORTED_-Werror-init-self
-- Performing Test IS_SUPPORTED_-Werror-init-self - Success
-- Performing Test IS_SUPPORTED_-Werror-main
-- Performing Test IS_SUPPORTED_-Werror-main - Success
-- Performing Test IS_SUPPORTED_-Werror-missing-braces
-- Performing Test IS_SUPPORTED_-Werror-missing-braces - Success
-- Performing Test IS_SUPPORTED_-Werror-sequence-point
-- Performing Test IS_SUPPORTED_-Werror-sequence-point - Success
-- Performing Test IS_SUPPORTED_-Werror-return-type
-- Performing Test IS_SUPPORTED_-Werror-return-type - Success
-- Performing Test IS_SUPPORTED_-Werror-trigraphs
-- Performing Test IS_SUPPORTED_-Werror-trigraphs - Success
-- Performing Test IS_SUPPORTED_-Werror-array-bounds
-- Performing Test IS_SUPPORTED_-Werror-array-bounds - Success
-- Performing Test IS_SUPPORTED_-Werror-write-strings
-- Performing Test IS_SUPPORTED_-Werror-write-strings - Success
-- Performing Test IS_SUPPORTED_-Werror-address
-- Performing Test IS_SUPPORTED_-Werror-address - Success
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast - Success
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast - Success
-- Performing Test IS_SUPPORTED_-Wno-unused-variable
-- Performing Test IS_SUPPORTED_-Wno-unused-variable - Success
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable - Failed
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter - Success
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast - Success
-- Performing Test IS_SUPPORTED_-Wshadow
-- Performing Test IS_SUPPORTED_-Wshadow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel - Failed
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual - Success
-- Performing Test IS_SUPPORTED_-Wsign-promo
-- Performing Test IS_SUPPORTED_-Wsign-promo - Success
-- Performing Test IS_SUPPORTED_-Wstack-protector
-- Performing Test IS_SUPPORTED_-Wstack-protector - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2 - Success
-- Performing Test IS_SUPPORTED_-Wswitch
-- Performing Test IS_SUPPORTED_-Wswitch - Success
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable - Failed
-- Performing Test IS_SUPPORTED_-Wcast-align
-- Performing Test IS_SUPPORTED_-Wcast-align - Success
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization - Success
-- Performing Test IS_SUPPORTED_-Winvalid-pch
-- Performing Test IS_SUPPORTED_-Winvalid-pch - Success
-- Performing Test IS_SUPPORTED_-Wpacked
-- Performing Test IS_SUPPORTED_-Wpacked - Success
-- Performing Test IS_SUPPORTED_-Wno-padded
-- Performing Test IS_SUPPORTED_-Wno-padded - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow
-- Performing Test IS_SUPPORTED_-Wstrict-overflow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2 - Success
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy - Success
-- Performing Test IS_SUPPORTED_-Wlogical-op
-- Performing Test IS_SUPPORTED_-Wlogical-op - Failed
-- Performing Test IS_SUPPORTED_-Wnoexcept
-- Performing Test IS_SUPPORTED_-Wnoexcept - Failed
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wno-sign-compare
-- Performing Test IS_SUPPORTED_-Wno-sign-compare - Success
-- Performing Test IS_SUPPORTED_-Wnull-dereference
-- Performing Test IS_SUPPORTED_-Wnull-dereference - Success
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks - Failed
-- Performing Test IS_SUPPORTED_-Wduplicated-cond
-- Performing Test IS_SUPPORTED_-Wduplicated-cond - Failed
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation - Failed
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer - Success
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls - Success
Cloning into 'eigen'...
HEAD is now at cf794d3... bump to 3.3.7
Cloning into 'cli11'...
HEAD is now at b979d3a... Bug fix for issue 369. (#370)
Cloning into 'extern/googletest'...
Cloning into 'extern/json'...
Cloning into 'extern/sanitizers'...
Cloning into 'rational_ccd'...
HEAD is now at 01277f5... fixed tri edge inter
CMake Warning (dev) at /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message):
The package name passed to find_package_handle_standard_args (GMP) does
not match the name of the calling package (GMPECCD). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
external/rational_ccd/cmake/FindGMPECCD.cmake:33 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
external/rational_ccd/CMakeLists.txt:57 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Found GMP: /usr/include/x86_64-linux-gnu
-- GMP libs: /usr/lib/x86_64-linux-gnu/libgmp.so /usr/include/x86_64-linux-gnu
-- clang-format not found: skipping Format subdirectory
-- Using scalar implmentation of SVD
-- Seaching for SSE...
-- Using CPU native flags for SSE optimization: -march=native
-- Performing Test DETECTED_SSE_42
-- Performing Test DETECTED_SSE_42 - Success
-- Performing Test DETECTED_SSE_41
-- Performing Test DETECTED_SSE_41 - Success
-- Performing Test DETECTED_SSE_30
-- Performing Test DETECTED_SSE_30 - Success
-- Performing Test DETECTED_SSE_20
-- Performing Test DETECTED_SSE_20 - Success
-- Performing Test DETECTED_SSE_10
-- Performing Test DETECTED_SSE_10 - Success
-- Found SSE 4.2 extensions, using flags: -march=native -msse4.2 -mfpmath=sse
-- Searching for AVX...
-- Using CPU native flags for AVX optimization: -march=native
-- Performing Test DETECTED_AVX_20
-- Performing Test DETECTED_AVX_20 - Success
-- Performing Test DETECTED_AVX_10
-- Performing Test DETECTED_AVX_10 - Success
-- Found AVX 2.0 extensions, using flags: -march=native -mavx2 -mno-avx512f -mno-avx512pf -mno-avx512er -mno-avx512cd
-- Searching for FMA...
-- Using CPU native flags for FMA optimization: -march=native
-- Performing Test DETECTED_FMA
-- Performing Test DETECTED_FMA - Success
-- Found FMA extensions, using flags: -march=native -mfma
-- Building for three dimensions
CMake Warning at CMakeLists.txt:274 (message):
MKL not found: disabling OSQP MKL Pardiso linear system solver

-- Configuring done
-- Generating done
-- Build files have been written to: /home/pf/IPC/build
Scanning dependencies of target EVCTCD
Scanning dependencies of target qdldlobject
Scanning dependencies of target RationalCCD
Scanning dependencies of target linsys_pardiso
Scanning dependencies of target linsys_qdldl
Scanning dependencies of target glad
Scanning dependencies of target glfw
Scanning dependencies of target tetgen
Scanning dependencies of target igl_stb_image
Scanning dependencies of target triangle
Scanning dependencies of target predicates
Scanning dependencies of target tbb_static
[ 0%] Building C object external/osqp/lin_sys/direct/qdldl/qdldl_sources/CMakeFiles/qdldlobject.dir/src/qdldl.c.o
[ 1%] Building C object external/libigl/glad/CMakeFiles/glad.dir/src/glad.c.o
[ 2%] Building C object external/libigl/predicates/CMakeFiles/predicates.dir/predicates.c.o
[ 3%] Building C object external/osqp/lin_sys/direct/CMakeFiles/linsys_pardiso.dir/pardiso/pardiso_interface.c.o
[ 3%] Building CXX object external/libigl/stb_image/CMakeFiles/igl_stb_image.dir/igl_stb_image.cpp.o
[ 4%] Building C object external/libigl/triangle/CMakeFiles/triangle.dir/triangle.c.o
[ 5%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_1.c.o
[ 5%] Building CXX object external/libigl/tetgen/CMakeFiles/tetgen.dir/tetgen.cxx.o
[ 5%] Building CXX object external/rational_ccd/CMakeFiles/RationalCCD.dir/src/ECCD.cpp.o
[ 5%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/context.c.o
[ 5%] Building CXX object CMakeFiles/EVCTCD.dir/src/CCD/EVCTCD/CTCD.cpp.o
[ 5%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/old/concurrent_queue_v2.cpp.o
[ 5%] Built target qdldlobject
[ 7%] Building CXX object external/rational_ccd/CMakeFiles/RationalCCD.dir/src/Utils.cpp.o
[ 7%] Building C object external/osqp/lin_sys/direct/CMakeFiles/linsys_pardiso.dir/pardiso/pardiso_loader.c.o
[ 8%] Linking C static library ../../../libglad.a
[ 8%] Linking C static library ../../../libpredicates.a
[ 9%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_2.c.o
[ 9%] Built target linsys_pardiso
[ 10%] Building CXX object external/rational_ccd/CMakeFiles/RationalCCD.dir/src/Plots.cpp.o
[ 11%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/old/concurrent_vector_v2.cpp.o
[ 11%] Built target predicates
[ 11%] Built target glad
[ 12%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/init.c.o
[ 14%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_aat.c.o
[ 14%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/old/spin_rw_mutex_v2.cpp.o
[ 14%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/input.c.o
[ 15%] Building CXX object external/libigl/tetgen/CMakeFiles/tetgen.dir/predicates.cxx.o
[ 16%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_control.c.o
[ 16%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_defaults.c.o
[ 17%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_info.c.o
[ 18%] Linking C static library ../../../libtriangle.a
[ 18%] Built target triangle
[ 18%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/old/task_v2.cpp.o
[ 20%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/monitor.c.o
[ 21%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_order.c.o
[ 21%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_post_tree.c.o
[ 22%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/vulkan.c.o
[ 23%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/window.c.o
[ 23%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_preprocess.c.o
[ 24%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/x11_init.c.o
[ 24%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_postorder.c.o
[ 25%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/arena.cpp.o
[ 27%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/amd_valid.c.o
[ 28%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/amd/src/SuiteSparse_config.c.o
[ 28%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/cache_aligned_allocator.cpp.o
[ 28%] Building C object external/osqp/lin_sys/direct/qdldl/CMakeFiles/linsys_qdldl.dir/qdldl_interface.c.o
[ 29%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/concurrent_hash_map.cpp.o
[ 29%] Built target linsys_qdldl
Scanning dependencies of target exact-ccd
[ 30%] Building CXX object external/exact-ccd/CMakeFiles/exact-ccd.dir/expansion.cpp.o
[ 30%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/x11_monitor.c.o
[ 31%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/x11_window.c.o
In file included from /home/pf/IPC/external/exact-ccd/expansion.cpp:4:
/home/pf/IPC/external/exact-ccd/expansion.h:195:24: error: unknown type name
'size_t'; did you mean '__gnu_cxx::size_t'?
inline void resize( size_t new_size )

^~~~~~
__gnu_cxx::size_t
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.5.0/../../../../include/c++/6.5.0/ext/new_allocator.h:44:14: note:
'__gnu_cxx::size_t' declared here
using std::size_t;
^
[ 32%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/xkb_unicode.c.o
[ 32%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/posix_time.c.o
[ 34%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/concurrent_monitor.cpp.o
1 error generated.
external/exact-ccd/CMakeFiles/exact-ccd.dir/build.make:82: recipe for target 'external/exact-ccd/CMakeFiles/exact-ccd.dir/expansion.cpp.o' failed
make[2]: *** [external/exact-ccd/CMakeFiles/exact-ccd.dir/expansion.cpp.o] Error 1
CMakeFiles/Makefile2:1278: recipe for target 'external/exact-ccd/CMakeFiles/exact-ccd.dir/all' failed
make[1]: *** [external/exact-ccd/CMakeFiles/exact-ccd.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 34%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/concurrent_queue.cpp.o
[ 35%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/concurrent_vector.cpp.o
[ 35%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/condition_variable.cpp.o
[ 36%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/critical_section.cpp.o
[ 37%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/posix_thread.c.o
[ 37%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/glx_context.c.o
[ 38%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/dynamic_link.cpp.o
[ 38%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/governor.cpp.o
[ 40%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/itt_notify.cpp.o
[ 40%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/market.cpp.o
[ 41%] Linking CXX static library libEVCTCD.a
[ 41%] Built target EVCTCD
[ 42%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/mutex.cpp.o
[ 43%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/egl_context.c.o
[ 44%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/osmesa_context.c.o
[ 45%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/observer_proxy.cpp.o
[ 45%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/pipeline.cpp.o
[ 45%] Building C object external/libigl/glfw/src/CMakeFiles/glfw.dir/linux_joystick.c.o
[ 47%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/private_server.cpp.o
[ 47%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/queuing_mutex.cpp.o
[ 48%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/queuing_rw_mutex.cpp.o
[ 49%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/reader_writer_lock.cpp.o
[ 50%] Linking C static library ../../../../libglfw3.a
[ 50%] Built target glfw
[ 50%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/recursive_mutex.cpp.o
[ 51%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/scheduler.cpp.o
[ 51%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/semaphore.cpp.o
[ 52%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/spin_mutex.cpp.o
[ 54%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/task.cpp.o
[ 54%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/spin_rw_mutex.cpp.o
[ 55%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/task_group_context.cpp.o
[ 55%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/tbb_main.cpp.o
[ 56%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/tbb_misc.cpp.o
[ 57%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/tbb_misc_ex.cpp.o
[ 57%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/tbb_statistics.cpp.o
[ 58%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/tbb_thread.cpp.o
[ 58%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/tbb/x86_rtm_rw_mutex.cpp.o
[ 60%] Building CXX object external/tbb/CMakeFiles/tbb_static.dir/src/rml/client/rml_tbb.cpp.o
[ 60%] Linking CXX static library libRationalCCD.a
[ 60%] Built target RationalCCD
[ 61%] Linking CXX static library libtbb_static.a
[ 61%] Built target tbb_static
[ 62%] Linking CXX static library ../../../libigl_stb_image.a
[ 62%] Built target igl_stb_image
[ 62%] Linking CXX static library ../../../libtetgen.a
[ 62%] Built target tetgen
Makefile:182: recipe for target 'all' failed
make: *** [all] Error 2

Is there environment preparation or other error, expect your reply and thank you.

Attached configuration

This is really amazing work- thank you! I'm wondering if there is a way to maintain an attachment between 2 objects throughout the simulation. For example, in your initialize attached configuration example on the wiki, the objects fall together, but then separate after colliding with the ground. Is there a way for them to maintain the attachment (i.e. minimal distance between nodes) throughout the simulation?

Inconsistency in normal force magnitudes when varying 1) timestep size or 2) material properties

First, I wanted to say that this is an amazing project, and I really appreciate the work you have put into this project. I’m currently trying to see if there is a way to calculate the total force acting on a mesh (i.e., for each mesh inputted in with shapes input configuration), and I was hoping that the friction information export update in 24ab245 would be sufficient to do this task.

For some initial testing, I placed a cube on top of a 20x20 pad as shown below. Here, I expected that normal forces should be approximately aligned with the y-axis, so a sum of the normal force magnitudes (from lambda terms as saved by the last call of save_friction_data within the simulation) should equal the force applied by the cube onto the pad by its weight.

0

shapes input 2
input/tetMeshes/cube.msh -0.5 0.2 -0.5  0 0 0  1 1 1 material 1000 1e10 0.4
input/tetMeshes/mat20x20.msh 0 0 0  0 0 0  2 10 2 material 1000 1e10 0.4 DBC -5 0 -5 5 0 5 0 0 0 0 0 0

selfFric 0.1
time 5 1

fricIterAmt 4

When I run the script above, the normal force applied by the cube is calculated to be 9948.064, which similar to the expected value 9810 (1000 kg cube presses into pad with force of 1000*9.81 newtons).

For a more extensive study, I tried repeating the above test, while:

  • Changing timestep size: However, if I make the timestep smaller, from 1 to 0.1, the sum falls to a value of 100.856, which has at least one order of magnitude difference. I would have expected this sum to stay consistent even if I vary the timestep size.
  • Changing material properties: If I change the density of the pad (1e10 -> 1e5), then the total normal force falls to 8347, which is noticeably smaller than our original value of 9948.
  • Changing mesh resolution: If I vary the mesh resolution (go from mat20x20.msh to mat40x40.msh), I observe a similar trend; the total normal force equals 9852 with timestep=1, and equals 99.37 with timestep 0.1. Mesh resolution does not seem to add inconsistency.

Is there something I’m missing? I would have expected all of these tests to return the same normal force values, but this does not appear to be the case.

Build step for glfw failed: 1

I met this error where glfw failed to download. How can I solve this?

shayito@KingBob MINGW64 /e/_Computer_Graphics/_simulation/IPC-master/build
$ cmake -DCMAKE_BUILD_TYPE=Release -DIPC_WITH_CHOLMOD=OFF ..
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19044.
-- We are on a Windows system
-- Embedded is OFF
-- Printing is ON
-- Profiling is ON
-- User interrupt is ON
-- Floats are OFF
-- Long integers (64bit) are OFF
-- Code coverage is OFF
-- MKL Pardiso: ON
-- Floats are OFF
-- Long integers (64bit) are OFF
-- MSVC -> forcing use of dynamically-linked runtime.
-- Creating target: igl::core (igl)
-- Creating target: igl::opengl (igl_opengl)
-- Creating target: igl::opengl_glfw (igl_opengl_glfw)
CMake Error at cmake/DownloadProject.cmake:179 (message):
  Build step for glfw failed: 1
Call Stack (most recent call first):
  external/libigl/cmake/LibiglDownloadExternal.cmake:25 (download_project)
  external/libigl/cmake/LibiglDownloadExternal.cmake:37 (igl_download_project_aux)
  external/libigl/cmake/LibiglDownloadExternal.cmake:95 (igl_download_project)
  external/libigl/cmake/libigl.cmake:375 (igl_download_glfw)
  external/libigl/CMakeLists.txt:59 (include)


-- Configuring incomplete, errors occurred!
See also "E:/_Computer_Graphics/_simulation/IPC-master/build/CMakeFiles/CMakeOutput.log".
See also "E:/_Computer_Graphics/_simulation/IPC-master/build/CMakeFiles/CMakeError.log".

element hessian matrix / stress differentials computation of Neo-Hookean material

Hi, when I read IPC's code about how to compute tetrahedron element hessian matrix of Neo-Hookean material, I found it difficult to figure out, mainly confused of this function Energy<dim>::compute_dP_div_dF.
I have read Sifakis's SIGGRAPH Course note (FEM simulation of 3D deformable solids: A practitioner's guide to theory, discretization and model reduction), but still can't correspond to the formula of stress differentials and IPC's code, having no idea about the meaning of BLeftCoef, rightCoef.

I want to know whether a detailed formulas derivation of stress differentials in IPC's code or any related reference documents could be provided. I really appreciate your help!

Issue will running 2fallingcubes example.

Hello,
When running the 2cubesFall.txt example. I get the following error : X11: The DISPLAY environment variable is missingThe GLFW library is not initializedThe GLFW library is not initializedThe GLFW library is not initializedSegmentation fault (core dumped). I think the problem may be that I'm running on a remote machine using a non-x11 terminal. Is there a way to disable the viz and have IPC dump files I can read in later?

Export only the mesh of select bodies

Creating a feature request from an email I received:

We are simulating the bouncing sphere inside of a closed boundary, so we input multiple mesh files (including the mesh of the surrounding boxes, and the mesh of the sphere). Is there a way to only output the mesh file we are interested in? (we only want the output mesh to contain the sphere, not the surrounding constraints).

My reply:

Unfortunately, exporting each input shape individually is not implemented. The reason being that all shapes are concatenated together and simulated as one large shape with disconnected components.

Probably the easiest way for you to implement this feature is as a post-process of the exported OBJ files. I would for each OBJ: load the OBJ, separate the mesh into disconnected components, save the component you want. The order of components should be consistent with the input order of shapes and is consistent throughout the simulation. The "complicated" part is splitting by disconnected components, but luckily libigl has some functions for this or PyMesh has a single function that does exactly this.

Alternatively, I think it would be easy to keep track of which vertices/faces belong to which input shape and modify IPC to export the components individually. If you are comfortable with C++ and want to try adding this feature to IPC it would be welcomed. Otherwise, I think it is worth my time to add this, but I don't know when I will have time to get to it.

This should help me keep track of the feature request.

compile issues in Ubuntu

I tried to install IPC on Ubuntu 16.04 and I got couple of compile errors. I fixed them and sent a PR. I changed some lines in src/CollisionObject/CollisionObject.h and src/CollisionObject/HalfSpace.cpp.
Here is what I did to install the modified code:
Pre-requisites (in addition to what the repo says):

  • GMP LIB: sudo apt install libgmp-dev
  • Also, you will need gcc 7 or later. I installed it like (sudo add-apt-repository ppa:jonathonf/gcc-7.1
    sudo apt-get update
    sudo apt-get install gcc-7 g++-7)

Then you can use the following:
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_CC_COMPILER=gcc-7 -DCMAKE_PREFIX_PATH=/home/kazem/programs/SuiteSparse/ -DCMAKE_BUILD_TYPE=Release ..
make -j4

I could run the first tutorial.

Performance questions in Windows

Hi,

Thanks for sharing this project! I complied it in Windows by Visual Studio 2019, but I found its performance is much lower than in Ubuntu. I checked that I used MKL intel blas and lapack to build sparsesuit package from https://github.com/jlblancoc/suitesparse-metis-for-windows.
I used the hello world example and get both output files of "info1.txt" in Windows and Ubuntu as follows. I used the same threads (=12) in both Windows and Ubuntu for the simulation. The left one is the output from Windows, and the right one is from Ubuntu. when outputting this first output file, those two cubes and the ground are not get contacted with each other. From the output, basic every step is lower even for matrix manipulation, so I don't know if I missed something else that would make the performance lower so much.

Thanks!

image

template deducing issue on Windows

I'm trying to compile IPC on Windows with MSVC.

image

The issue is mainly caused by the static template function IglUtils::makePD, IglUtils::flipDet_SVD and IglUtils::computeCofactorMtr, where the compiler cannot deduce template argument for the variables these functions trying to apply to.

Any ideas or is this because of the platform?

Boundary Conditions Degrees of Freedom

Hello, I was wondering if there was a way to control the degrees of freedom when we are applying boundary conditions. For example, if I wanted to design a uniaxial extension boundary condition, I only want to apply zero velocity to the x-component of the nodes I select.
Currently, I have to set the velocity components of all the selected nodes but in a uniaxial displacement experiment example pulling in the x-direction, I want the y & z components to be free to contract due to the poison effect.

Thank you,
Ron F

Ask for reference

I've been looking for details about how to constructing the stiffness matrix, though I know the general steps according to the siggraph course.

I'm stuck here, how to compute the derivatives of the First Piola-Kirchhoff stress tensor with respect to deformation gradient?

void Energy<dim>::compute_dP_div_dF(const AutoFlipSVD<Eigen::Matrix<double, dim, dim>>& svd,

it there any resource that I can follow so that I can finally understand this.

meshprocessing linking error

Hi, to use my own mesh, I tried to build MeshProcessing.cpp in root/src/Projects/MeshProcessing, but met with linking errors as follow:

[  3%] Built target predicates
[  3%] Built target tbb_def_files
[  5%] Built target triangle
[  5%] Built target tetgen
[  7%] Built target igl_stb_image
[  9%] Built target linsys_pardiso
[ 10%] Built target qdldlobject
[ 10%] Built target glad
[ 25%] Built target glfw
[ 39%] Built target mshio
[ 42%] Built target linsys_qdldl
[ 45%] Built target tight_inclusion
[ 48%] Built target imgui
[ 50%] Built target imguizmo
[ 58%] Built target osqpstatic
[ 59%] Built target ccd_wrapper_floating_point_root_finder
[ 84%] Built target tbb
[ 85%] Built target ccd_wrapper
[ 97%] Built target IPC_dev
[ 98%] Linking CXX executable ../../../../src/Projects/MeshProcessing/meshprocessing
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `timer_mt'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `timer'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `timer_temp3'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `V_CE'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `surfIndToTet'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `compVAccSize'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `F_surf'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `V_surf'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `F_CE'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `timer_step'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `compFAccSize'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `logFile'
/usr/bin/ld: ../../../libIPC_dev.so: undefined reference to `CEIndToTet'
collect2: error: ld returned 1 exit status
make[3]: *** [src/Projects/MeshProcessing/CMakeFiles/meshprocessing.dir/build.make:117: ../src/Projects/MeshProcessing/meshprocessing] Error 1
make[2]: *** [CMakeFiles/Makefile2:2275: src/Projects/MeshProcessing/CMakeFiles/meshprocessing.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:2282: src/Projects/MeshProcessing/CMakeFiles/meshprocessing.dir/rule] Error 2
make: *** [Makefile:926: meshprocessing] Error 2

Thanks for any guidance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.