Skip to content

cpp implement of Paper Eulerian-on-Lagrangian Cloth Simulation

Notifications You must be signed in to change notification settings

Ryan-yang125/eol-cloth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EOL-Cloth

Eulerian-on-Lagrangian Cloth Simulation

我们参考并使用了论文作者提供的代码中的:

  • /src/external/Mosek
  • /src/external/Arcsim

分别是使用Mosek求解运动方程,和使用Arcsim处理remesh

Dependencies

Build

考虑到win32/win64/macOS/linux不同系统的兼容性,我们没有提供二进制包,而是在CMakeLists.txt中声明对应依赖的地址,可在安装后更新对应地址然后编译

# set header: glew, glfw, glm, eigen, mosek
set(GLEW_H /usr/local/Cellar/glew/2.2.0_1/include)
set(GLFW_H /usr/local/Cellar/glfw/3.3.4/include)
set(GLM_H /usr/local/Cellar/glm/0.9.9.8/include)
set(EIGEN_H /usr/local/Cellar/eigen/3.3.9/include/eigen3)
set(MOSEK_H /Users/apple/mosek/8/tools/platform/osx64x86/h)

# set lib: glew, glfw, mosek
set(GLEW_LINK /usr/local/Cellar/glew/2.2.0_1/lib/libGLEW.2.2.0.dylib)
set(GLFW_LINK /usr/local/Cellar/glfw/3.3.4/lib/libglfw.3.3.dylib)
set(MOSEK_LINK /Users/apple/mosek/8/tools/platform/osx64x86/bin/libmosek64.8.1.dylib)
cd build
cmake ..

Run

我们将在macOS下编译后的结果放在build文件夹下,linuxmacOS下可以直接运行,windows下可以参照上一节使用cmake进行编译

cd build
./eol_cloth

在macOS中运行时可能还需要单独指定mosek的地址

install_name_tool -change libmosek64.8.1.dylib <path_to_libmosek64.8.1.dylib>

Problem

在展示时,我们遇到了mesh穿刺的现象,我们在测试了很多遍之后,测试次数为100次,出现的机率为3次,将这三次结果进行分析后我们发现,在那个角落出现了ill condition triangle and 小边,这使得arcsim对于网格的remesh效果很差,我们将边的剔除的threshold上调至1.19%,原来为布料边长的1%,得以解决同时为了更好地展示布料的特性我们将面片数增加以更好的模拟。

Result

我们机器的配置为CPU:2.2 GHz 四核Intel Core i7内存:16 GB 1600 MHz DDR3,实现方式是C++单线程。

初始时为mesh的节点为数48,一个timestep在0.015854~0.0216522s之间。

在与障碍物碰撞后,插入eol节点,总数为168时,在0.754335~0.834698之间。

总数为192时,在0.976975~1.159245之间。模拟结果与论文基本一致。

我们同时在Unity里做了传统的弹簧质点模型的模拟,通过对比,可以比较明显的看出,传统的方法不能完全贴合边缘并且会发生卷曲,对比结果放在PPT和result文件夹下。

About

cpp implement of Paper Eulerian-on-Lagrangian Cloth Simulation

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published