本文的目地为总结splishsplash的入门使用方法
splishsplash是一个C++开源流体引擎,主要用于产生流体动画。 它的核心算法是SPH法。
资源汇总
github: https://github.com/InteractiveComputerGraphics/SPlisHSPlasH
文档:https://splishsplash.readthedocs.io/en/latest/
算法论文:https://interactivecomputergraphics.github.io/SPH-Tutorial/
安装
主要参考文档。
有两种版本:python版本和c++版本。但是程序主体是c++写的。python版本只是用pybind11转换成啦python的API,所以建议直接用c++版本。但是python版本由于可以使用pip包管理工具,所以安装非常简便,无需编译,直接安装二进制包。
python版本的安装:
pip install pysplishsplash
运行
splash
c++版本的安装:
先下载下来源代码:
git clone https://github.com/InteractiveComputerGraphics/SPlisHSPlasH.git
无论是linux还是windows,都使用cmake来进行构建,然后编译。
需要先下载cmake(建议使用GUI版本,linux也有GUI版本):https://cmake.org/
然后打开cmake,填写源代码的位置,还有你想构建的位置(一般是源代码文件夹下自己新建一个叫build的文件夹)。
点击下方Configure之后,就会出现图中的各种编译选项。这项相当于各种开关,选择想要的功能。如果初次使用就默认即可。然后再次Configure,最后Generate。
Generate就会自动构建编译所需要的工程文件。在Windows下是.sln和.projx文件,在linux下就是MakeFile文件。在windows下打开.sln文件,然后编译即可。
这里有自动构建了四种工程,即Debug, Release, MinSizeRel, RelWithDebInfo
如果想要Debug就用Debug,如果想最快速的运行(建议初次运行用此)就用Release。
在Linux下面,进入build文件夹
make
即可
编译时间较长,请耐心等待。有一两个错误是不碍事的,只要最后bin目录下出现了SPHSimulator.exe就是成功。
运行Demo
编译的结果是生成可执行的二进制文件,在bin目录下面。其中最关键的是SPHSimulator.exe,其余的可执行文件只是一些第三方功能。
双击SPHSimulator.exe会自动弹出窗口,让用户选择所需要的json
这些json文件代表的是不同的场景:比如龙的场景、兔子的场景、溃坝场景等。
json文件所在的位置为data/Scences
建议初次使用DoubleDamBreak.json场景。
用户也可以自己定义json文件,其规则请查看文档相应章节。
对于linux用户,不会弹出窗口选择json。所以需要在CLI中输入参数来指定json。
命令如下:
./SPHSimulator ../data/Scenes/DoubleDamBreak.json
然后就会打开如下GUI窗口。
注意此时处于暂停状态,按空格或者取消勾选Pause即可开始运行。
GUI的快捷键
查看文档,可见控制GUI的各种快捷键。
Space: pause/contiunue simulation
r: reset simulation
w: wireframe rendering of meshes
m: recompute min and max values for color-coding the color field in the rendering process
i: print all field information of the selected particles to the console
s: save current simulation state
l: load simulation state (currently only Windows)
+: perform a single time step
ESC: exit
其中最主要的是这两个:
空格 暂停
r reset
在debug的时候,还有两个很关键
i 打印粒子信息(需要先用鼠标左键框选粒子,然后会打印到终端)
运行单个时间步(需要先暂停)
其中i的使用很有用。首先左键框选粒子,然后按i,会打印粒子信息