GridFluidSim3D 开源项目教程
项目介绍
GridFluidSim3D 是一个基于 C++11 实现的 PIC/FLIP 液体流体模拟程序,其方法来源于 Robert Bridson 的 "Fluid Simulation for Computer Graphics" 教科书。该流体模拟程序输出流体表面作为一系列存储在 Stanford PLY 文件格式中的三角形网格。
项目快速启动
环境准备
确保您的开发环境已安装 C++11 编译器和 CMake。
克隆项目
git clone https://github.com/rlguy/GridFluidSim3D.git
cd GridFluidSim3D
构建项目
mkdir build
cd build
cmake ..
make
运行示例
./GridFluidSim3D
应用案例和最佳实践
示例:中心立方体流体域
此示例相对快速计算,可用于测试模拟程序是否正确运行。流体模拟器在 3D 网格上执行其计算,因此模拟域呈长方体形状。
int xsize = 32;
int ysize = 32;
int zsize = 32;
double cellsize = 0.25;
FluidSimulation fluidsim(xsize, ysize, zsize, cellsize);
添加流体球
我们希望在流体域中心添加一个流体球,因此需要通过调用 getSimulationDimensions
获取域的尺寸。
double width, height, depth;
fluidsim.getSimulationDimensions(&width, &height, &depth);
fluidsim.addImplicitFluidPoint(width / 2, height / 2, depth / 2, 6.0);
添加重力
通过调用 addBodyForce
添加重力。
fluidsim.addBodyForce(0, 0, -25);
典型生态项目
FLIPViscosity3D
FLIPViscosity3D 是一个基本的自由表面液体 FLIP 流体模拟器,具有粘度。
FantasyMapGenerator
FantasyMapGenerator 是一个基于 Martin O'Leary 的 "Generating fantasy map" 笔记的幻想地图生成器。
通过这些项目,您可以进一步扩展和应用 GridFluidSim3D 的功能,实现更复杂的流体模拟和可视化效果。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考