Blender V4.3
manta_fluid_API.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2016 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#ifndef MANTA_API_H
10#define MANTA_API_H
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16struct MANTA;
17
18/* Fluid functions */
19struct MANTA *manta_init(int *res, struct FluidModifierData *fmd);
20void manta_free(struct MANTA *fluid);
21bool manta_ensure_obstacle(struct MANTA *fluid, struct FluidModifierData *fmd);
22bool manta_ensure_guiding(struct MANTA *fluid, struct FluidModifierData *fmd);
23bool manta_ensure_invelocity(struct MANTA *fluid, struct FluidModifierData *fmd);
24bool manta_ensure_outflow(struct MANTA *fluid, struct FluidModifierData *fmd);
25bool manta_write_config(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
26bool manta_write_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
27bool manta_write_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
28bool manta_read_config(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
29bool manta_read_data(struct MANTA *fluid,
30 struct FluidModifierData *fmd,
31 int framenr,
32 bool resumable);
33bool manta_read_noise(struct MANTA *fluid,
34 struct FluidModifierData *fmd,
35 int framenr,
36 bool resumable);
37bool manta_read_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
38bool manta_read_particles(struct MANTA *fluid,
39 struct FluidModifierData *fmd,
40 int framenr,
41 bool resumable);
42bool manta_read_guiding(struct MANTA *fluid,
43 struct FluidModifierData *fmd,
44 int framenr,
45 bool sourceDomain);
46bool manta_bake_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
47bool manta_bake_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
48bool manta_bake_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
49bool manta_bake_particles(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
50bool manta_bake_guiding(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
51bool manta_has_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
52bool manta_has_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
53bool manta_has_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
54bool manta_has_particles(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr);
55bool manta_has_guiding(struct MANTA *fluid,
56 struct FluidModifierData *fmd,
57 int framenr,
58 bool domain);
59
60void manta_update_variables(struct MANTA *fluid, struct FluidModifierData *fmd);
61int manta_get_frame(struct MANTA *fluid);
62float manta_get_timestep(struct MANTA *fluid);
63void manta_adapt_timestep(struct MANTA *fluid);
64bool manta_needs_realloc(struct MANTA *fluid, struct FluidModifierData *fmd);
65void manta_update_pointers(struct MANTA *fluid, struct FluidModifierData *fmd, bool flush);
66
67/* Fluid accessors */
68size_t manta_get_index(int x, int max_x, int y, int max_y, int z /*, int max_z */);
69size_t manta_get_index2d(int x, int max_x, int y /*, int max_y, int z, int max_z */);
70float *manta_get_velocity_x(struct MANTA *fluid);
71float *manta_get_velocity_y(struct MANTA *fluid);
72float *manta_get_velocity_z(struct MANTA *fluid);
73float *manta_get_ob_velocity_x(struct MANTA *fluid);
74float *manta_get_ob_velocity_y(struct MANTA *fluid);
75float *manta_get_ob_velocity_z(struct MANTA *fluid);
76float *manta_get_guide_velocity_x(struct MANTA *fluid);
77float *manta_get_guide_velocity_y(struct MANTA *fluid);
78float *manta_get_guide_velocity_z(struct MANTA *fluid);
79float *manta_get_in_velocity_x(struct MANTA *fluid);
80float *manta_get_in_velocity_y(struct MANTA *fluid);
81float *manta_get_in_velocity_z(struct MANTA *fluid);
82float *manta_get_force_x(struct MANTA *fluid);
83float *manta_get_force_y(struct MANTA *fluid);
84float *manta_get_force_z(struct MANTA *fluid);
85float *manta_get_phiguide_in(struct MANTA *fluid);
86float *manta_get_num_obstacle(struct MANTA *fluid);
87float *manta_get_num_guide(struct MANTA *fluid);
88int manta_get_res_x(struct MANTA *fluid);
89int manta_get_res_y(struct MANTA *fluid);
90int manta_get_res_z(struct MANTA *fluid);
91float *manta_get_phi_in(struct MANTA *fluid);
92float *manta_get_phistatic_in(struct MANTA *fluid);
93float *manta_get_phiobs_in(struct MANTA *fluid);
94float *manta_get_phiobsstatic_in(struct MANTA *fluid);
95float *manta_get_phiout_in(struct MANTA *fluid);
96float *manta_get_phioutstatic_in(struct MANTA *fluid);
97float *manta_get_phi(struct MANTA *fluid);
98float *manta_get_pressure(struct MANTA *fluid);
99
100/* Smoke functions */
101bool manta_smoke_export_script(struct MANTA *smoke, struct FluidModifierData *fmd);
102void manta_smoke_get_rgba(struct MANTA *smoke, float *data, int sequential);
103void manta_noise_get_rgba(struct MANTA *smoke, float *data, int sequential);
104void manta_smoke_get_rgba_fixed_color(struct MANTA *smoke,
105 float color[3],
106 float *data,
107 int sequential);
108void manta_noise_get_rgba_fixed_color(struct MANTA *smoke,
109 float color[3],
110 float *data,
111 int sequential);
112bool manta_smoke_ensure_heat(struct MANTA *smoke, struct FluidModifierData *fmd);
113bool manta_smoke_ensure_fire(struct MANTA *smoke, struct FluidModifierData *fmd);
114bool manta_smoke_ensure_colors(struct MANTA *smoke, struct FluidModifierData *fmd);
115
116/* Smoke accessors */
117float *manta_smoke_get_density(struct MANTA *smoke);
118float *manta_smoke_get_fuel(struct MANTA *smoke);
119float *manta_smoke_get_react(struct MANTA *smoke);
120float *manta_smoke_get_heat(struct MANTA *smoke);
121float *manta_smoke_get_flame(struct MANTA *smoke);
122float *manta_smoke_get_shadow(struct MANTA *fluid);
123float *manta_smoke_get_color_r(struct MANTA *smoke);
124float *manta_smoke_get_color_g(struct MANTA *smoke);
125float *manta_smoke_get_color_b(struct MANTA *smoke);
126int *manta_smoke_get_flags(struct MANTA *smoke);
127float *manta_smoke_get_density_in(struct MANTA *smoke);
128float *manta_smoke_get_heat_in(struct MANTA *smoke);
129float *manta_smoke_get_color_r_in(struct MANTA *smoke);
130float *manta_smoke_get_color_g_in(struct MANTA *smoke);
131float *manta_smoke_get_color_b_in(struct MANTA *smoke);
132float *manta_smoke_get_fuel_in(struct MANTA *smoke);
133float *manta_smoke_get_react_in(struct MANTA *smoke);
134float *manta_smoke_get_emission_in(struct MANTA *smoke);
135bool manta_smoke_has_heat(struct MANTA *smoke);
136bool manta_smoke_has_fuel(struct MANTA *smoke);
137bool manta_smoke_has_colors(struct MANTA *smoke);
138float *manta_noise_get_density(struct MANTA *smoke);
139float *manta_noise_get_fuel(struct MANTA *smoke);
140float *manta_noise_get_react(struct MANTA *smoke);
141float *manta_noise_get_color_r(struct MANTA *smoke);
142float *manta_noise_get_color_g(struct MANTA *smoke);
143float *manta_noise_get_color_b(struct MANTA *smoke);
144float *manta_noise_get_texture_u(struct MANTA *smoke);
145float *manta_noise_get_texture_v(struct MANTA *smoke);
146float *manta_noise_get_texture_w(struct MANTA *smoke);
147float *manta_noise_get_texture_u2(struct MANTA *smoke);
148float *manta_noise_get_texture_v2(struct MANTA *smoke);
149float *manta_noise_get_texture_w2(struct MANTA *smoke);
150float *manta_noise_get_flame(struct MANTA *smoke);
151bool manta_noise_has_fuel(struct MANTA *smoke);
152bool manta_noise_has_colors(struct MANTA *smoke);
153void manta_noise_get_res(struct MANTA *smoke, int *res);
154int manta_noise_get_cells(struct MANTA *smoke);
155
156/* Liquid functions */
157bool manta_liquid_export_script(struct MANTA *smoke, struct FluidModifierData *fmd);
158bool manta_liquid_ensure_sndparts(struct MANTA *fluid, struct FluidModifierData *fmd);
159
160/* Liquid accessors */
161int manta_liquid_get_particle_res_x(struct MANTA *liquid);
162int manta_liquid_get_particle_res_y(struct MANTA *liquid);
163int manta_liquid_get_particle_res_z(struct MANTA *liquid);
164int manta_liquid_get_mesh_res_x(struct MANTA *liquid);
165int manta_liquid_get_mesh_res_y(struct MANTA *liquid);
166int manta_liquid_get_mesh_res_z(struct MANTA *liquid);
167int manta_liquid_get_particle_upres(struct MANTA *liquid);
168int manta_liquid_get_mesh_upres(struct MANTA *liquid);
169int manta_liquid_get_num_verts(struct MANTA *liquid);
170int manta_liquid_get_num_normals(struct MANTA *liquid);
171int manta_liquid_get_num_triangles(struct MANTA *liquid);
172float manta_liquid_get_vertex_x_at(struct MANTA *liquid, int i);
173float manta_liquid_get_vertex_y_at(struct MANTA *liquid, int i);
174float manta_liquid_get_vertex_z_at(struct MANTA *liquid, int i);
175float manta_liquid_get_normal_x_at(struct MANTA *liquid, int i);
176float manta_liquid_get_normal_y_at(struct MANTA *liquid, int i);
177float manta_liquid_get_normal_z_at(struct MANTA *liquid, int i);
178int manta_liquid_get_triangle_x_at(struct MANTA *liquid, int i);
179int manta_liquid_get_triangle_y_at(struct MANTA *liquid, int i);
180int manta_liquid_get_triangle_z_at(struct MANTA *liquid, int i);
181float manta_liquid_get_vertvel_x_at(struct MANTA *liquid, int i);
182float manta_liquid_get_vertvel_y_at(struct MANTA *liquid, int i);
183float manta_liquid_get_vertvel_z_at(struct MANTA *liquid, int i);
185int manta_liquid_get_num_snd_particles(struct MANTA *liquid);
186int manta_liquid_get_flip_particle_flag_at(struct MANTA *liquid, int i);
187int manta_liquid_get_snd_particle_flag_at(struct MANTA *liquid, int i);
188float manta_liquid_get_flip_particle_position_x_at(struct MANTA *liquid, int i);
189float manta_liquid_get_flip_particle_position_y_at(struct MANTA *liquid, int i);
190float manta_liquid_get_flip_particle_position_z_at(struct MANTA *liquid, int i);
191float manta_liquid_get_flip_particle_velocity_x_at(struct MANTA *liquid, int i);
192float manta_liquid_get_flip_particle_velocity_y_at(struct MANTA *liquid, int i);
193float manta_liquid_get_flip_particle_velocity_z_at(struct MANTA *liquid, int i);
194float manta_liquid_get_snd_particle_position_x_at(struct MANTA *liquid, int i);
195float manta_liquid_get_snd_particle_position_y_at(struct MANTA *liquid, int i);
196float manta_liquid_get_snd_particle_position_z_at(struct MANTA *liquid, int i);
197float manta_liquid_get_snd_particle_velocity_x_at(struct MANTA *liquid, int i);
198float manta_liquid_get_snd_particle_velocity_y_at(struct MANTA *liquid, int i);
199float manta_liquid_get_snd_particle_velocity_z_at(struct MANTA *liquid, int i);
200
201#ifdef __cplusplus
202}
203#endif
204
205#endif /* MANTA_API_H_ */
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition btQuadWord.h:117
int manta_liquid_get_flip_particle_flag_at(struct MANTA *liquid, int i)
int manta_liquid_get_snd_particle_flag_at(struct MANTA *liquid, int i)
float * manta_noise_get_density(struct MANTA *smoke)
bool manta_has_particles(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float * manta_smoke_get_color_r(struct MANTA *smoke)
float * manta_noise_get_texture_v(struct MANTA *smoke)
float manta_liquid_get_normal_x_at(struct MANTA *liquid, int i)
float * manta_smoke_get_heat_in(struct MANTA *smoke)
bool manta_has_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float manta_liquid_get_vertex_y_at(struct MANTA *liquid, int i)
float * manta_noise_get_react(struct MANTA *smoke)
float manta_liquid_get_flip_particle_velocity_z_at(struct MANTA *liquid, int i)
int manta_liquid_get_mesh_res_y(struct MANTA *liquid)
float * manta_get_force_z(struct MANTA *fluid)
bool manta_ensure_invelocity(struct MANTA *fluid, struct FluidModifierData *fmd)
bool manta_read_guiding(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr, bool sourceDomain)
bool manta_has_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
bool manta_bake_particles(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
bool manta_smoke_ensure_colors(struct MANTA *smoke, struct FluidModifierData *fmd)
float * manta_smoke_get_fuel_in(struct MANTA *smoke)
float * manta_noise_get_texture_u(struct MANTA *smoke)
void manta_free(struct MANTA *fluid)
float * manta_get_num_guide(struct MANTA *fluid)
bool manta_smoke_has_heat(struct MANTA *smoke)
bool manta_noise_has_colors(struct MANTA *smoke)
int manta_liquid_get_num_triangles(struct MANTA *liquid)
float * manta_get_force_y(struct MANTA *fluid)
bool manta_bake_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float manta_get_timestep(struct MANTA *fluid)
float * manta_get_guide_velocity_y(struct MANTA *fluid)
float * manta_smoke_get_react(struct MANTA *smoke)
float * manta_get_in_velocity_y(struct MANTA *fluid)
bool manta_bake_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
int manta_get_frame(struct MANTA *fluid)
float manta_liquid_get_snd_particle_velocity_z_at(struct MANTA *liquid, int i)
float * manta_smoke_get_shadow(struct MANTA *fluid)
float * manta_get_ob_velocity_x(struct MANTA *fluid)
size_t manta_get_index2d(int x, int max_x, int y)
float manta_liquid_get_flip_particle_velocity_y_at(struct MANTA *liquid, int i)
float * manta_get_ob_velocity_z(struct MANTA *fluid)
float * manta_noise_get_texture_w(struct MANTA *smoke)
bool manta_read_mesh(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
bool manta_liquid_ensure_sndparts(struct MANTA *fluid, struct FluidModifierData *fmd)
float * manta_get_guide_velocity_z(struct MANTA *fluid)
float * manta_get_in_velocity_x(struct MANTA *fluid)
struct MANTA * manta_init(int *res, struct FluidModifierData *fmd)
float * manta_get_guide_velocity_x(struct MANTA *fluid)
float * manta_smoke_get_color_g_in(struct MANTA *smoke)
float * manta_noise_get_fuel(struct MANTA *smoke)
bool manta_write_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float * manta_noise_get_texture_v2(struct MANTA *smoke)
float * manta_get_phioutstatic_in(struct MANTA *fluid)
bool manta_smoke_ensure_fire(struct MANTA *smoke, struct FluidModifierData *fmd)
int manta_liquid_get_mesh_res_x(struct MANTA *liquid)
void manta_noise_get_rgba(struct MANTA *smoke, float *data, int sequential)
void manta_noise_get_res(struct MANTA *smoke, int *res)
float * manta_get_velocity_y(struct MANTA *fluid)
bool manta_noise_has_fuel(struct MANTA *smoke)
float manta_liquid_get_vertvel_y_at(struct MANTA *liquid, int i)
float * manta_noise_get_color_b(struct MANTA *smoke)
int manta_liquid_get_num_verts(struct MANTA *liquid)
float * manta_smoke_get_color_b_in(struct MANTA *smoke)
bool manta_ensure_obstacle(struct MANTA *fluid, struct FluidModifierData *fmd)
bool manta_write_config(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
bool manta_needs_realloc(struct MANTA *fluid, struct FluidModifierData *fmd)
float * manta_noise_get_texture_w2(struct MANTA *smoke)
float * manta_get_force_x(struct MANTA *fluid)
bool manta_has_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float * manta_get_phiguide_in(struct MANTA *fluid)
float manta_liquid_get_vertvel_z_at(struct MANTA *liquid, int i)
bool manta_read_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr, bool resumable)
size_t manta_get_index(int x, int max_x, int y, int max_y, int z)
float * manta_get_ob_velocity_y(struct MANTA *fluid)
float manta_liquid_get_flip_particle_position_y_at(struct MANTA *liquid, int i)
int manta_liquid_get_mesh_res_z(struct MANTA *liquid)
bool manta_read_particles(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr, bool resumable)
bool manta_write_noise(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float * manta_smoke_get_density(struct MANTA *smoke)
float * manta_get_phiobsstatic_in(struct MANTA *fluid)
float manta_liquid_get_vertvel_x_at(struct MANTA *liquid, int i)
int manta_liquid_get_particle_res_y(struct MANTA *liquid)
float * manta_get_in_velocity_z(struct MANTA *fluid)
float * manta_noise_get_color_g(struct MANTA *smoke)
float * manta_get_phi(struct MANTA *fluid)
int manta_liquid_get_particle_upres(struct MANTA *liquid)
float * manta_smoke_get_color_r_in(struct MANTA *smoke)
bool manta_smoke_ensure_heat(struct MANTA *smoke, struct FluidModifierData *fmd)
float manta_liquid_get_flip_particle_position_z_at(struct MANTA *liquid, int i)
float * manta_get_num_obstacle(struct MANTA *fluid)
void manta_update_pointers(struct MANTA *fluid, struct FluidModifierData *fmd, bool flush)
bool manta_ensure_guiding(struct MANTA *fluid, struct FluidModifierData *fmd)
float * manta_get_phi_in(struct MANTA *fluid)
int manta_get_res_x(struct MANTA *fluid)
bool manta_read_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr, bool resumable)
float * manta_smoke_get_react_in(struct MANTA *smoke)
float * manta_get_velocity_z(struct MANTA *fluid)
bool manta_has_guiding(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr, bool domain)
int manta_get_res_z(struct MANTA *fluid)
bool manta_smoke_has_colors(struct MANTA *smoke)
bool manta_read_config(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float * manta_smoke_get_density_in(struct MANTA *smoke)
float manta_liquid_get_vertex_z_at(struct MANTA *liquid, int i)
int manta_liquid_get_mesh_upres(struct MANTA *liquid)
float * manta_noise_get_texture_u2(struct MANTA *smoke)
float * manta_get_phiout_in(struct MANTA *fluid)
float * manta_get_phiobs_in(struct MANTA *fluid)
int * manta_smoke_get_flags(struct MANTA *smoke)
int manta_get_res_y(struct MANTA *fluid)
int manta_liquid_get_num_normals(struct MANTA *liquid)
float manta_liquid_get_snd_particle_position_z_at(struct MANTA *liquid, int i)
float manta_liquid_get_snd_particle_velocity_y_at(struct MANTA *liquid, int i)
float * manta_get_velocity_x(struct MANTA *fluid)
int manta_liquid_get_num_flip_particles(struct MANTA *liquid)
int manta_liquid_get_triangle_z_at(struct MANTA *liquid, int i)
int manta_liquid_get_particle_res_x(struct MANTA *liquid)
bool manta_smoke_has_fuel(struct MANTA *smoke)
float * manta_smoke_get_emission_in(struct MANTA *smoke)
float * manta_get_pressure(struct MANTA *fluid)
float manta_liquid_get_vertex_x_at(struct MANTA *liquid, int i)
float * manta_smoke_get_color_g(struct MANTA *smoke)
int manta_noise_get_cells(struct MANTA *smoke)
bool manta_liquid_export_script(struct MANTA *smoke, struct FluidModifierData *fmd)
bool manta_ensure_outflow(struct MANTA *fluid, struct FluidModifierData *fmd)
float manta_liquid_get_normal_y_at(struct MANTA *liquid, int i)
void manta_noise_get_rgba_fixed_color(struct MANTA *smoke, float color[3], float *data, int sequential)
void manta_update_variables(struct MANTA *fluid, struct FluidModifierData *fmd)
float manta_liquid_get_flip_particle_position_x_at(struct MANTA *liquid, int i)
float * manta_smoke_get_heat(struct MANTA *smoke)
int manta_liquid_get_triangle_x_at(struct MANTA *liquid, int i)
float * manta_get_phistatic_in(struct MANTA *fluid)
float * manta_smoke_get_color_b(struct MANTA *smoke)
void manta_adapt_timestep(struct MANTA *fluid)
int manta_liquid_get_triangle_y_at(struct MANTA *liquid, int i)
float manta_liquid_get_snd_particle_position_x_at(struct MANTA *liquid, int i)
float manta_liquid_get_snd_particle_position_y_at(struct MANTA *liquid, int i)
float manta_liquid_get_normal_z_at(struct MANTA *liquid, int i)
bool manta_bake_data(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
void manta_smoke_get_rgba(struct MANTA *smoke, float *data, int sequential)
float * manta_smoke_get_fuel(struct MANTA *smoke)
bool manta_smoke_export_script(struct MANTA *smoke, struct FluidModifierData *fmd)
float * manta_smoke_get_flame(struct MANTA *smoke)
float manta_liquid_get_snd_particle_velocity_x_at(struct MANTA *liquid, int i)
float * manta_noise_get_flame(struct MANTA *smoke)
int manta_liquid_get_particle_res_z(struct MANTA *liquid)
void manta_smoke_get_rgba_fixed_color(struct MANTA *smoke, float color[3], float *data, int sequential)
int manta_liquid_get_num_snd_particles(struct MANTA *liquid)
float * manta_noise_get_color_r(struct MANTA *smoke)
bool manta_bake_guiding(struct MANTA *fluid, struct FluidModifierData *fmd, int framenr)
float manta_liquid_get_flip_particle_velocity_x_at(struct MANTA *liquid, int i)