diff options
Diffstat (limited to 'intern/mantaflow/intern/manta_fluid_API.cpp')
-rw-r--r-- | intern/mantaflow/intern/manta_fluid_API.cpp | 345 |
1 files changed, 124 insertions, 221 deletions
diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp b/intern/mantaflow/intern/manta_fluid_API.cpp index 49bc224b3fa..60546bc1183 100644 --- a/intern/mantaflow/intern/manta_fluid_API.cpp +++ b/intern/mantaflow/intern/manta_fluid_API.cpp @@ -27,9 +27,9 @@ #include "manta_fluid_API.h" /* Fluid functions */ -MANTA *manta_init(int *res, struct FluidModifierData *mmd) +MANTA *manta_init(int *res, struct FluidModifierData *fmd) { - return new MANTA(res, mmd); + return new MANTA(res, fmd); } void manta_free(MANTA *fluid) { @@ -37,208 +37,173 @@ void manta_free(MANTA *fluid) fluid = nullptr; } -void manta_ensure_obstacle(MANTA *fluid, struct FluidModifierData *mmd) +void manta_ensure_obstacle(MANTA *fluid, struct FluidModifierData *fmd) { if (!fluid) return; - fluid->initObstacle(mmd); + fluid->initObstacle(fmd); fluid->updatePointers(); } -void manta_ensure_guiding(MANTA *fluid, struct FluidModifierData *mmd) +void manta_ensure_guiding(MANTA *fluid, struct FluidModifierData *fmd) { if (!fluid) return; - fluid->initGuiding(mmd); + fluid->initGuiding(fmd); fluid->updatePointers(); } -void manta_ensure_invelocity(MANTA *fluid, struct FluidModifierData *mmd) +void manta_ensure_invelocity(MANTA *fluid, struct FluidModifierData *fmd) { if (!fluid) return; - fluid->initInVelocity(mmd); + fluid->initInVelocity(fmd); fluid->updatePointers(); } -void manta_ensure_outflow(MANTA *fluid, struct FluidModifierData *mmd) +void manta_ensure_outflow(MANTA *fluid, struct FluidModifierData *fmd) { if (!fluid) return; - fluid->initOutflow(mmd); + fluid->initOutflow(fmd); fluid->updatePointers(); } -int manta_write_config(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_write_config(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->writeConfiguration(mmd, framenr); + return fluid->writeConfiguration(fmd, framenr); } -int manta_write_data(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_write_data(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->writeData(mmd, framenr); + return fluid->writeData(fmd, framenr); } -int manta_write_noise(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_write_noise(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->writeNoise(mmd, framenr); + return fluid->writeNoise(fmd, framenr); } -int manta_read_config(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_read_config(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readConfiguration(mmd, framenr); + return fluid->readConfiguration(fmd, framenr); } -int manta_read_data(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_read_data(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readData(mmd, framenr); + return fluid->readData(fmd, framenr, resumable); } -int manta_read_noise(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_read_noise(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readNoise(mmd, framenr); + return fluid->readNoise(fmd, framenr, resumable); } -int manta_read_mesh(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_read_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readMesh(mmd, framenr); + return fluid->readMesh(fmd, framenr); } -int manta_read_particles(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_read_particles(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readParticles(mmd, framenr); + return fluid->readParticles(fmd, framenr, resumable); } -int manta_read_guiding(MANTA *fluid, FluidModifierData *mmd, int framenr, bool sourceDomain) +int manta_read_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool sourceDomain) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->readGuiding(mmd, framenr, sourceDomain); + return fluid->readGuiding(fmd, framenr, sourceDomain); } -int manta_update_liquid_structures(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_bake_data(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->updateFlipStructures(mmd, framenr); + return fluid->bakeData(fmd, framenr); } -int manta_update_mesh_structures(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_bake_noise(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->updateMeshStructures(mmd, framenr); + return fluid->bakeNoise(fmd, framenr); } -int manta_update_particle_structures(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_bake_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->updateParticleStructures(mmd, framenr); + return fluid->bakeMesh(fmd, framenr); } -int manta_update_smoke_structures(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_bake_particles(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->updateSmokeStructures(mmd, framenr); + return fluid->bakeParticles(fmd, framenr); } -int manta_update_noise_structures(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_bake_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->updateNoiseStructures(mmd, framenr); + return fluid->bakeGuiding(fmd, framenr); } -int manta_bake_data(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_has_data(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->bakeData(mmd, framenr); + return fluid->hasData(fmd, framenr); } -int manta_bake_noise(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_has_noise(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->bakeNoise(mmd, framenr); + return fluid->hasNoise(fmd, framenr); } -int manta_bake_mesh(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_has_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->bakeMesh(mmd, framenr); + return fluid->hasMesh(fmd, framenr); } -int manta_bake_particles(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_has_particles(MANTA *fluid, FluidModifierData *fmd, int framenr) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->bakeParticles(mmd, framenr); + return fluid->hasParticles(fmd, framenr); } -int manta_bake_guiding(MANTA *fluid, FluidModifierData *mmd, int framenr) +int manta_has_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool domain) { - if (!fluid || !mmd) + if (!fluid || !fmd) return 0; - return fluid->bakeGuiding(mmd, framenr); + return fluid->hasGuiding(fmd, framenr, domain); } -int manta_has_data(MANTA *fluid, FluidModifierData *mmd, int framenr) -{ - if (!fluid || !mmd) - return 0; - return fluid->hasData(mmd, framenr); -} - -int manta_has_noise(MANTA *fluid, FluidModifierData *mmd, int framenr) -{ - if (!fluid || !mmd) - return 0; - return fluid->hasNoise(mmd, framenr); -} - -int manta_has_mesh(MANTA *fluid, FluidModifierData *mmd, int framenr) -{ - if (!fluid || !mmd) - return 0; - return fluid->hasMesh(mmd, framenr); -} - -int manta_has_particles(MANTA *fluid, FluidModifierData *mmd, int framenr) -{ - if (!fluid || !mmd) - return 0; - return fluid->hasParticles(mmd, framenr); -} - -int manta_has_guiding(MANTA *fluid, FluidModifierData *mmd, int framenr, bool domain) -{ - if (!fluid || !mmd) - return 0; - return fluid->hasGuiding(mmd, framenr, domain); -} - -void manta_update_variables(MANTA *fluid, FluidModifierData *mmd) +void manta_update_variables(MANTA *fluid, FluidModifierData *fmd) { if (!fluid) return; - fluid->updateVariables(mmd); + fluid->updateVariables(fmd); } int manta_get_frame(MANTA *fluid) @@ -262,11 +227,11 @@ void manta_adapt_timestep(MANTA *fluid) fluid->adaptTimestep(); } -bool manta_needs_realloc(MANTA *fluid, FluidModifierData *mmd) +bool manta_needs_realloc(MANTA *fluid, FluidModifierData *fmd) { if (!fluid) return false; - return fluid->needsRealloc(mmd); + return fluid->needsRealloc(fmd); } /* Fluid accessors */ @@ -396,94 +361,11 @@ float *manta_get_phioutstatic_in(MANTA *fluid) } /* Smoke functions */ -void manta_smoke_export_script(MANTA *smoke, FluidModifierData *mmd) +void manta_smoke_export_script(MANTA *smoke, FluidModifierData *fmd) { - if (!smoke || !mmd) + if (!smoke || !fmd) return; - smoke->exportSmokeScript(mmd); -} - -void manta_smoke_export(MANTA *smoke, - float *dt, - float *dx, - float **dens, - float **react, - float **flame, - float **fuel, - float **heat, - float **vx, - float **vy, - float **vz, - float **r, - float **g, - float **b, - int **flags, - float **shadow) -{ - if (dens) - *dens = smoke->getDensity(); - if (fuel) - *fuel = smoke->getFuel(); - if (react) - *react = smoke->getReact(); - if (flame) - *flame = smoke->getFlame(); - if (heat) - *heat = smoke->getHeat(); - *vx = smoke->getVelocityX(); - *vy = smoke->getVelocityY(); - *vz = smoke->getVelocityZ(); - if (r) - *r = smoke->getColorR(); - if (g) - *g = smoke->getColorG(); - if (b) - *b = smoke->getColorB(); - *flags = smoke->getFlags(); - if (shadow) - *shadow = smoke->getShadow(); - *dt = 1; // dummy value, not needed for smoke - *dx = 1; // dummy value, not needed for smoke -} - -void manta_smoke_turbulence_export(MANTA *smoke, - float **dens, - float **react, - float **flame, - float **fuel, - float **r, - float **g, - float **b, - float **tcu, - float **tcv, - float **tcw, - float **tcu2, - float **tcv2, - float **tcw2) -{ - if (!smoke && !(smoke->usingNoise())) - return; - - *dens = smoke->getDensityHigh(); - if (fuel) - *fuel = smoke->getFuelHigh(); - if (react) - *react = smoke->getReactHigh(); - if (flame) - *flame = smoke->getFlameHigh(); - if (r) - *r = smoke->getColorRHigh(); - if (g) - *g = smoke->getColorGHigh(); - if (b) - *b = smoke->getColorBHigh(); - *tcu = smoke->getTextureU(); - *tcv = smoke->getTextureV(); - *tcw = smoke->getTextureW(); - - *tcu2 = smoke->getTextureU2(); - *tcv2 = smoke->getTextureV2(); - *tcw2 = smoke->getTextureW2(); + smoke->exportSmokeScript(fmd); } static void get_rgba( @@ -519,7 +401,7 @@ void manta_smoke_get_rgba(MANTA *smoke, float *data, int sequential) sequential); } -void manta_smoke_turbulence_get_rgba(MANTA *smoke, float *data, int sequential) +void manta_noise_get_rgba(MANTA *smoke, float *data, int sequential) { get_rgba(smoke->getColorRHigh(), smoke->getColorGHigh(), @@ -554,39 +436,36 @@ void manta_smoke_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, get_rgba_fixed_color(color, smoke->getTotalCells(), data, sequential); } -void manta_smoke_turbulence_get_rgba_fixed_color(MANTA *smoke, - float color[3], - float *data, - int sequential) +void manta_noise_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential) { get_rgba_fixed_color(color, smoke->getTotalCellsHigh(), data, sequential); } -void manta_smoke_ensure_heat(MANTA *smoke, struct FluidModifierData *mmd) +void manta_smoke_ensure_heat(MANTA *smoke, struct FluidModifierData *fmd) { if (smoke) { - smoke->initHeat(mmd); + smoke->initHeat(fmd); smoke->updatePointers(); } } -void manta_smoke_ensure_fire(MANTA *smoke, struct FluidModifierData *mmd) +void manta_smoke_ensure_fire(MANTA *smoke, struct FluidModifierData *fmd) { if (smoke) { - smoke->initFire(mmd); + smoke->initFire(fmd); if (smoke->usingNoise()) { - smoke->initFireHigh(mmd); + smoke->initFireHigh(fmd); } smoke->updatePointers(); } } -void manta_smoke_ensure_colors(MANTA *smoke, struct FluidModifierData *mmd) +void manta_smoke_ensure_colors(MANTA *smoke, struct FluidModifierData *fmd) { if (smoke) { - smoke->initColors(mmd); + smoke->initColors(fmd); if (smoke->usingNoise()) { - smoke->initColorsHigh(mmd); + smoke->initColorsHigh(fmd); } smoke->updatePointers(); } @@ -682,45 +561,69 @@ int manta_smoke_has_colors(MANTA *smoke) return (smoke->getColorR() && smoke->getColorG() && smoke->getColorB()) ? 1 : 0; } -float *manta_smoke_turbulence_get_density(MANTA *smoke) +float *manta_noise_get_density(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getDensityHigh() : nullptr; } -float *manta_smoke_turbulence_get_fuel(MANTA *smoke) +float *manta_noise_get_fuel(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getFuelHigh() : nullptr; } -float *manta_smoke_turbulence_get_react(MANTA *smoke) +float *manta_noise_get_react(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getReactHigh() : nullptr; } -float *manta_smoke_turbulence_get_color_r(MANTA *smoke) +float *manta_noise_get_color_r(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getColorRHigh() : nullptr; } -float *manta_smoke_turbulence_get_color_g(MANTA *smoke) +float *manta_noise_get_color_g(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getColorGHigh() : nullptr; } -float *manta_smoke_turbulence_get_color_b(MANTA *smoke) +float *manta_noise_get_color_b(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getColorBHigh() : nullptr; } -float *manta_smoke_turbulence_get_flame(MANTA *smoke) +float *manta_noise_get_flame(MANTA *smoke) { return (smoke && smoke->usingNoise()) ? smoke->getFlameHigh() : nullptr; } +float *manta_noise_get_texture_u(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureU() : nullptr; +} +float *manta_noise_get_texture_v(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureV() : nullptr; +} +float *manta_noise_get_texture_w(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureW() : nullptr; +} +float *manta_noise_get_texture_u2(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureU2() : nullptr; +} +float *manta_noise_get_texture_v2(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureV2() : nullptr; +} +float *manta_noise_get_texture_w2(MANTA *smoke) +{ + return (smoke && smoke->usingNoise()) ? smoke->getTextureW2() : nullptr; +} -int manta_smoke_turbulence_has_fuel(MANTA *smoke) +int manta_noise_has_fuel(MANTA *smoke) { return (smoke->getFuelHigh()) ? 1 : 0; } -int manta_smoke_turbulence_has_colors(MANTA *smoke) +int manta_noise_has_colors(MANTA *smoke) { return (smoke->getColorRHigh() && smoke->getColorGHigh() && smoke->getColorBHigh()) ? 1 : 0; } -void manta_smoke_turbulence_get_res(MANTA *smoke, int *res) +void manta_noise_get_res(MANTA *smoke, int *res) { if (smoke && smoke->usingNoise()) { res[0] = smoke->getResXHigh(); @@ -728,24 +631,24 @@ void manta_smoke_turbulence_get_res(MANTA *smoke, int *res) res[2] = smoke->getResZHigh(); } } -int manta_smoke_turbulence_get_cells(MANTA *smoke) +int manta_noise_get_cells(MANTA *smoke) { int total_cells_high = smoke->getResXHigh() * smoke->getResYHigh() * smoke->getResZHigh(); return (smoke && smoke->usingNoise()) ? total_cells_high : 0; } /* Liquid functions */ -void manta_liquid_export_script(MANTA *liquid, FluidModifierData *mmd) +void manta_liquid_export_script(MANTA *liquid, FluidModifierData *fmd) { - if (!liquid || !mmd) + if (!liquid || !fmd) return; - liquid->exportLiquidScript(mmd); + liquid->exportLiquidScript(fmd); } -void manta_liquid_ensure_sndparts(MANTA *liquid, struct FluidModifierData *mmd) +void manta_liquid_ensure_sndparts(MANTA *liquid, struct FluidModifierData *fmd) { if (liquid) { - liquid->initLiquidSndParts(mmd); + liquid->initLiquidSndParts(fmd); liquid->updatePointers(); } } |