Commit: a380ca2a63248b9d628652a24ab6b6b5f1bb1930
Author: Roman Pogribnyi
Date:   Sat Nov 15 15:05:23 2014 +0100
Branches: soc-2014-fluid
https://developer.blender.org/rBa380ca2a63248b9d628652a24ab6b6b5f1bb1930

passing obstacle flags to manta correctly

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

M       intern/smoke/intern/FLUID_3D.cpp
M       intern/smoke/intern/FLUID_3D.h
M       intern/smoke/intern/MANTA.cpp
M       intern/smoke/intern/scenarios/smoke.h
M       intern/smoke/intern/smoke_API.cpp
M       source/blender/blenkernel/intern/smoke.c

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

diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index a53c861..869ba12 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -514,6 +514,8 @@ _xRes(res[0]), _yRes(res[1]), _zRes(res[2]), _res(0.0f)
        _zVelocityTemp = new float[_totalCells];
        _densityTemp   = new float[_totalCells];
        
+       //initializing manta flag grids
+       _manta_flags = NULL;
        // DG TODO: check if alloc went fine
        
        for (int x = 0; x < _totalCells; x++)
diff --git a/intern/smoke/intern/FLUID_3D.h b/intern/smoke/intern/FLUID_3D.h
index 4d10e1d..38dd48d 100644
--- a/intern/smoke/intern/FLUID_3D.h
+++ b/intern/smoke/intern/FLUID_3D.h
@@ -142,7 +142,7 @@ struct FLUID_3D
                float *_color_bTemp;
                bool using_colors;
 
-
+               int *_manta_flags;
                // CG fields
                int _iterations;
 
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index a6576d4..ff9c1ac 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -466,7 +466,10 @@ std::string Manta_API::getRealValue( const std::string& 
varName, SmokeModifierDa
                ss << (-smd->domain->beta);
        else if (varName == "ADVECT_ORDER")
                ss << 2;
-       else if (varName == "BOUNDCONDITIONS"){
+       else if (varName == "VORTICITY"){
+               cout << "Vorticity :" << smd->domain->vorticity / 
smd->domain->fluid->_constantScaling << endl; 
+               ss << smd->domain->vorticity / 
smd->domain->fluid->_constantScaling;
+       }else if (varName == "BOUNDCONDITIONS"){
                if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << 
"xXyYz";
                else if (smd->domain->border_collisions == SM_BORDER_VERTICAL) 
ss << "xXyYz";
                else if (smd->domain->border_collisions == SM_BORDER_CLOSED) ss 
<< "xXyYzZ";
@@ -586,6 +589,7 @@ void * Manta_API::pointerFromString(const std::string& s){
 void Manta_API::updatePointers(FLUID_3D *fluid, bool updateColor)
 {
        fluid->_density = (float* )pointerFromString(getGridPointer("density", 
"s"));
+       fluid->_manta_flags = (int* )pointerFromString(getGridPointer("flags", 
"s"));
        if (fluid->using_colors){
                cout<< "POINTER FOR R_LOW" << fluid->_color_r<< endl;
                fluid->_color_r = (float* 
)pointerFromString(getGridPointer("color_r_low", "s"));
diff --git a/intern/smoke/intern/scenarios/smoke.h 
b/intern/smoke/intern/scenarios/smoke.h
index 9822257..0095c5e 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -153,7 +153,8 @@ const string smoke_step_low = "def sim_step_low(t):\n\
   #addBuoyancy(density=density, vel=vel, 
gravity=vec3($BUYO_X$,$BUYO_Y$,$BUYO_Z$), flags=flags)\n\
   if manta_using_heat:\n\
     addHeatBuoyancy(density=density, densCoeff = $ALPHA$, vel=vel, 
gravity=$GRAVITY$, flags=flags, heat = heat_low, heatCoeff = $BETA$*10)\n\
-  #vorticityConfinement( vel=vel, flags=flags, strength=0.2 ) \n\
+  if $VORTICITY$ > 0.01:\n\
+    vorticityConfinement( vel=vel, flags=flags, strength=$VORTICITY$ ) \n\
   addForceField(flags=flags, vel=vel,force=forces)\n\
   \n\
   solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True, 
openBound='$BOUNDCONDITIONS$')\n\
diff --git a/intern/smoke/intern/smoke_API.cpp 
b/intern/smoke/intern/smoke_API.cpp
index e5c5f9d..a428362 100644
--- a/intern/smoke/intern/smoke_API.cpp
+++ b/intern/smoke/intern/smoke_API.cpp
@@ -39,6 +39,10 @@
 
 #include "../extern/smoke_API.h"  /* to ensure valid prototypes */
 
+extern "C" int *smoke_get_manta_flags(struct FLUID_3D *fluid){
+       return fluid->_manta_flags;
+}
+
 extern "C" FLUID_3D *smoke_init(int *res, float dx, float dtdef, int use_heat, 
int use_fire, int use_colors, struct SmokeModifierData *smd )
 {
        FLUID_3D *fluid = new FLUID_3D(res, dx, dtdef, use_heat, use_fire, 
use_colors,smd);
diff --git a/source/blender/blenkernel/intern/smoke.c 
b/source/blender/blenkernel/intern/smoke.c
index dadd98f..530e339 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -864,6 +864,7 @@ static void update_obstacles(Scene *scene, Object *ob, 
SmokeDomainSettings *sds,
 
        unsigned int collIndex;
        unsigned char *obstacles = smoke_get_obstacle(sds->fluid);
+       int *manta_obstacles = smoke_get_manta_flags(sds->fluid);
        float *velx = NULL;
        float *vely = NULL;
        float *velz = NULL;
@@ -922,6 +923,7 @@ static void update_obstacles(Scene *scene, Object *ob, 
SmokeDomainSettings *sds,
                if (obstacles[z])
                {
                        manta_obs_sdf[z] = 1.;
+                       manta_obstacles[z] = 2;/*manta obstacle flag*/
 //                     velxOrig[z] = 0;
 //                     velyOrig[z] = 0;
 //                     velzOrig[z] = 0;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to