[Bf-blender-cvs] [7548135] soc-2014-fluid: Manta vars initialization, support for inflow objs in setup file, *.obj export for bounding box[ -1, 1]
Roman Pogribnyi
noreply at git.blender.org
Mon Jun 16 23:15:04 CEST 2014
Commit: 7548135aec7e2abdf8bea9252e40448ae20c7145
Author: Roman Pogribnyi
Date: Mon Jun 16 23:11:58 2014 +0200
https://developer.blender.org/rB7548135aec7e2abdf8bea9252e40448ae20c7145
Manta vars initialization, support for inflow objs in setup file, *.obj export for bounding box[ -1,1]
===================================================================
M intern/smoke/intern/MANTA.h
M release/scripts/startup/bl_ui/properties_physics_smoke.py
M source/blender/blenkernel/intern/smoke.c
===================================================================
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index 72722e9..3bc48f7 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -167,7 +167,6 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
float noise_time_anim = smd->domain->noise_time_anim;
FLUID_3D *fluid = smd->domain->fluid;
-
ofstream manta_setup_file;
manta_setup_file.open("manta_scene.py", std::fstream::trunc);
stringstream ss; /*setup contents*/
@@ -176,6 +175,10 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
ss << "from manta import * \n";
ss << "import os, shutil, math, sys \n";
+ if (!file_exists("manta_flow.obj")){
+ return;
+ }
+
/*Data Declaration*/
/*Wavelets variables*/
int upres = smd->domain->amplify;
@@ -201,8 +204,13 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
manta_gen_noise(ss, "s", 0, "noise", 256, true, noise_clamp, noise_clamp_neg, noise_clamp_pos, noise_val_scale, noise_val_offset, noise_time_anim);
/*Inflow source - for now, using mock sphere */
- ss << "source = s.create(Cylinder, center=gs*vec3(0.3,0.2,0.5), radius=res*0.081, z=gs*vec3(0.081, 0, 0))\n";
- ss << "sourceVel = s.create(Cylinder, center=gs*vec3(0.3,0.2,0.5), radius=res*0.15 , z=gs*vec3(0.15 , 0, 0))\n";
+ ss << "source = s.create(Mesh)\n";
+ ss << "source.load('manta_flow.obj')\n";
+ ss << "sourceVel = s.create(Mesh)\n";
+ ss << "sourceVel.load('manta_flow.obj')\n";
+
+// ss << "source = s.create(Cylinder, center=gs*vec3(0.3,0.2,0.5), radius=res*0.081, z=gs*vec3(0.081, 0, 0))\n";
+// ss << "sourceVel = s.create(Cylinder, center=gs*vec3(0.3,0.2,0.5), radius=res*0.15 , z=gs*vec3(0.15 , 0, 0))\n";
/*Wavelets: larger solver*/
if(wavelets && upres>0)
@@ -216,7 +224,11 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
ss << "xl_flags.initDomain() \n";
ss << "xl_flags.fillGrid() \n";
- ss << "xl_source = xl.create(Cylinder, center=xl_gs*vec3(0.3,0.2,0.5), radius=xl_gs.x*0.081, z=xl_gs*vec3(0.081, 0, 0)) \n";
+// ss << "xl_source = xl.create(Cylinder, center=xl_gs*vec3(0.3,0.2,0.5), radius=xl_gs.x*0.081, z=xl_gs*vec3(0.081, 0, 0)) \n";
+ ss << "xl_source = s.create(Mesh)\n";
+ ss << "xl_source.load('manta_flow.obj')\n";
+ ss << "xl_source.scale(vec3("<< upres <<", " << upres <<", " << upres << "))\n";
+
/*Obstacle handling*/
if (file_exists("manta_coll.obj"))
{
@@ -280,8 +292,10 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
}
ss << " applyInflow=False\n";
ss << " if (t>=0 and t<75):\n";
- ss << " densityInflow( flags=flags, density=density, noise=noise, shape=source, scale=1, sigma=0.5 )\n";
- ss << " sourceVel.applyToGrid( grid=vel , value=velInflow )\n";
+ ss << " densityInflowMesh( flags=flags, density=density, noise=noise, mesh=source, scale=1, sigma=0.5 )\n";
+ //ss << " densityInflow( flags=flags, density=density, noise=noise, shape=source, scale=1, sigma=0.5 )\n";
+ ss << " sourceVel.applyToGrid(grid=vel , value=velInflow,cutoff = -1)\n";
+ //ss << " sourceVel.applyToGrid( grid=vel , value=velInflow )\n";
ss << " applyInflow=True\n";
ss << " setWallBcs(flags=flags, vel=vel) \n";
@@ -320,7 +334,8 @@ static void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
ss << " for substep in range(upres): \n";
ss << " advectSemiLagrange(flags=xl_flags, vel=xl_vel, grid=xl_density, order=2) \n";
ss << " if (applyInflow): \n";
- ss << " densityInflow( flags=xl_flags, density=xl_density, noise=xl_noise, shape=xl_source, scale=1, sigma=0.5 ) \n";
+ ss << " densityInflowMesh( flags=xl_flags, density=xl_density, noise=xl_noise, mesh=xl_source, scale=1, sigma=0.5 ) \n";
+ //ss << " densityInflow( flags=xl_flags, density=xl_density, noise=xl_noise, shape=xl_source, scale=1, sigma=0.5 ) \n";
ss << " xl.step() \n";
}
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index b653841..3a602ab 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -334,28 +334,21 @@ class OBJECT_OT_MantaButton(bpy.types.Operator):
def silent_remove(filename):
if os.path.exists(filename):
os.remove(filename)
+
def transform(obj, domain_obj):
scale_factor = domain_obj.modifiers['Smoke'].domain_settings.domain_resolution
for dim in range(3):
- scale_fac = scale_factor[dim] / 2
- obj.scale[dim] *= scale_fac / domain_obj.scale[dim]
- obj.location[dim] = (obj.location[dim] - domain_obj.location[dim])* scale_fac / domain_obj.scale[dim]
- if dim != 1: #handle y
- obj.location[dim] += scale_fac
- else:
- obj.location[dim] -= scale_fac
-
+ obj.scale[dim] /= domain_obj.scale[dim]
+ obj.location[dim] -= domain_obj.location[dim]
+ obj.location[dim] /= domain_obj.scale[dim]
+
def transform_back(obj, domain_obj):
scale_factor = domain_obj.modifiers['Smoke'].domain_settings.domain_resolution
for dim in range(3):
- scale_fac = scale_factor[dim] / 2
- obj.scale[dim] *= domain_obj.scale[dim] / scale_fac
- if dim != 1: #handle y
- obj.location[dim] -= scale_fac
- else:
- obj.location[dim] += scale_fac
- obj.location[dim] = (obj.location[dim])* domain_obj.scale[dim] / scale_fac + domain_obj.location[dim]
-
+ obj.scale[dim] *= domain_obj.scale[dim]
+ obj.location[dim] *= domain_obj.scale[dim]
+ obj.location[dim] += domain_obj.location[dim]
+
coll_objs = []
flow_objs = []
selected_before = []
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 74edd19..36babcb 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -562,6 +562,14 @@ void smokeModifier_createType(struct SmokeModifierData *smd)
smd->domain->viewsettings = MOD_SMOKE_VIEW_SHOWBIG;
smd->domain->effector_weights = BKE_add_effector_weights(NULL);
+
+ /*mantaflow settings*/
+ smd-> domain->manta_solver_res = 3;
+ smd->domain->noise_clamp_neg = 0;
+ smd->domain->noise_clamp_pos = 1;
+ smd->domain->noise_val_scale = 1;
+ smd->domain->noise_val_offset = 0.075;
+ smd->domain->noise_time_anim = 0.2;
}
else if (smd->type & MOD_SMOKE_TYPE_FLOW)
{
More information about the Bf-blender-cvs
mailing list