[Bf-blender-cvs] [35c99918f4b] fluid-mantaflow: added api to read fluid domain dimension from particle file

Sebastián Barschkis noreply at git.blender.org
Fri Jun 9 00:58:53 CEST 2017


Commit: 35c99918f4b10f549c42c6a73b16f7e8b51cdce9
Author: Sebastián Barschkis
Date:   Wed Jun 7 02:40:18 2017 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB35c99918f4b10f549c42c6a73b16f7e8b51cdce9

added api to read fluid domain dimension from particle file

===================================================================

M	intern/mantaflow/extern/manta_fluid_API.h
M	intern/mantaflow/intern/FLUID.cpp
M	intern/mantaflow/intern/FLUID.h
M	intern/mantaflow/intern/manta_fluid_API.cpp

===================================================================

diff --git a/intern/mantaflow/extern/manta_fluid_API.h b/intern/mantaflow/extern/manta_fluid_API.h
index 7095fddf533..542db9c18e5 100644
--- a/intern/mantaflow/extern/manta_fluid_API.h
+++ b/intern/mantaflow/extern/manta_fluid_API.h
@@ -108,6 +108,9 @@ float liquid_get_triangle_x_at(struct FLUID *liquid, int i);
 float liquid_get_triangle_y_at(struct FLUID *liquid, int i);
 float liquid_get_triangle_z_at(struct FLUID *liquid, int i);
 int liquid_get_num_particles(struct FLUID *liquid);
+int liquid_get_particle_dim_x(struct FLUID *liquid);
+int liquid_get_particle_dim_y(struct FLUID *liquid);
+int liquid_get_particle_dim_z(struct FLUID *liquid);
 int liquid_get_particle_flag_at(struct FLUID *liquid, int i);
 float liquid_get_particle_position_x_at(struct FLUID *liquid, int i);
 float liquid_get_particle_position_y_at(struct FLUID *liquid, int i);
diff --git a/intern/mantaflow/intern/FLUID.cpp b/intern/mantaflow/intern/FLUID.cpp
index 86ad1d778db..4e818b2cc43 100644
--- a/intern/mantaflow/intern/FLUID.cpp
+++ b/intern/mantaflow/intern/FLUID.cpp
@@ -966,9 +966,9 @@ void FLUID::updateParticleData(const char* filename)
 
 	// read particle header
 	gzread(gzf, &mNumParticles, sizeof(int));
-	gzread(gzf, &ibuffer, sizeof(int)); // Skipping dimX
-	gzread(gzf, &ibuffer, sizeof(int)); // Skipping dimY
-	gzread(gzf, &ibuffer, sizeof(int)); // Skipping dimZ
+	gzread(gzf, &mParticleDimX, sizeof(int));
+	gzread(gzf, &mParticleDimY, sizeof(int));
+	gzread(gzf, &mParticleDimZ, sizeof(int));
 	gzread(gzf, &elementType, sizeof(int));
 	gzread(gzf, &bytesPerElement, sizeof(int));
 	gzread(gzf, &info, sizeof(info));
diff --git a/intern/mantaflow/intern/FLUID.h b/intern/mantaflow/intern/FLUID.h
index 4a5cb4c7e27..4d17a608d33 100644
--- a/intern/mantaflow/intern/FLUID.h
+++ b/intern/mantaflow/intern/FLUID.h
@@ -149,8 +149,14 @@ public:
 	inline int getTriangleZAt(int i) { return mTrianglesZ[i]; }
 	
 	// Particle getters
-	inline int   getNumParticles()             { return mNumParticles; }
-	inline int   getParticleFlagAt(int i)      { return mParticleFlags[i]; }
+	inline int getNumParticles() { return mNumParticles; }
+
+	inline int getParticleDimX() { return mParticleDimX; }
+	inline int getParticleDimY() { return mParticleDimY; }
+	inline int getParticleDimZ() { return mParticleDimZ; }
+
+	inline int getParticleFlagAt(int i) { return mParticleFlags[i]; }
+
 	inline float getParticlePositionXAt(int i) { return mParticlePositionsX[i]; }
 	inline float getParticlePositionYAt(int i) { return mParticlePositionsY[i]; }
 	inline float getParticlePositionZAt(int i) { return mParticlePositionsZ[i]; }
@@ -241,6 +247,9 @@ private:
 	
 	// Particle fields
 	int mNumParticles;
+	int mParticleDimX;
+	int mParticleDimY;
+	int mParticleDimZ;
 	std::vector<int> mParticleFlags;
 	std::vector<float> mParticlePositionsX;
 	std::vector<float> mParticlePositionsY;
diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp b/intern/mantaflow/intern/manta_fluid_API.cpp
index e9fdb86c5be..e8ea0f0dc5c 100644
--- a/intern/mantaflow/intern/manta_fluid_API.cpp
+++ b/intern/mantaflow/intern/manta_fluid_API.cpp
@@ -607,6 +607,21 @@ extern "C" int liquid_get_num_particles(FLUID *liquid)
 	return liquid->getNumParticles();
 }
 
+extern "C" int liquid_get_particle_dim_x(FLUID *liquid)
+{
+	return liquid->getParticleDimX();
+}
+
+extern "C" int liquid_get_particle_dim_y(FLUID *liquid)
+{
+	return liquid->getParticleDimY();
+}
+
+extern "C" int liquid_get_particle_dim_z(FLUID *liquid)
+{
+	return liquid->getParticleDimZ();
+}
+
 extern "C" int liquid_get_particle_flag_at(FLUID *liquid, int i)
 {
 	return liquid->getParticleFlagAt(i);




More information about the Bf-blender-cvs mailing list