aboutsummaryrefslogtreecommitdiff
path: root/demo/scenes
diff options
context:
space:
mode:
authorMiles Macklin <[email protected]>2017-06-09 13:41:15 +1200
committerMiles Macklin <[email protected]>2017-06-09 13:41:15 +1200
commit688b5f42e9bfe498d7af7075d4d8f4429867f3a3 (patch)
tree7e0d0e7c95298f0418723abd92f61ac6e16b055e /demo/scenes
parentUpdate README.md (diff)
downloadflex-1.2.0.beta.1.tar.xz
flex-1.2.0.beta.1.zip
1.2.0.beta.11.2.0.beta.1
Diffstat (limited to 'demo/scenes')
-rw-r--r--demo/scenes/adhesion.h1
-rw-r--r--demo/scenes/armadilloshower.h1
-rw-r--r--demo/scenes/bouyancy.h1
-rw-r--r--demo/scenes/bunnybath.h1
-rw-r--r--demo/scenes/ccdfluid.h1
-rw-r--r--demo/scenes/dambreak.h1
-rw-r--r--demo/scenes/debris.h7
-rw-r--r--demo/scenes/envcloth.h5
-rw-r--r--demo/scenes/fluidblock.h1
-rw-r--r--demo/scenes/fluidclothcoupling.h1
-rw-r--r--demo/scenes/forcefield.h2
-rw-r--r--demo/scenes/gamemesh.h3
-rw-r--r--demo/scenes/googun.h1
-rw-r--r--demo/scenes/granularpile.h7
-rw-r--r--demo/scenes/granularshape.h3
-rw-r--r--demo/scenes/inflatable.h2
-rw-r--r--demo/scenes/lighthouse.h1
-rw-r--r--demo/scenes/localspacecloth.h1
-rw-r--r--demo/scenes/localspacefluid.h1
-rw-r--r--demo/scenes/lowdimensionalshapes.h1
-rw-r--r--demo/scenes/melting.h3
-rw-r--r--demo/scenes/mixedpile.h7
-rw-r--r--demo/scenes/parachutingbunnies.h1
-rw-r--r--demo/scenes/plasticstack.h50
-rw-r--r--demo/scenes/player.h4
-rw-r--r--demo/scenes/rayleightaylor.h2
-rw-r--r--demo/scenes/rigidfluidcoupling.h5
-rw-r--r--demo/scenes/rigidrotation.h20
-rw-r--r--demo/scenes/rockpool.h3
-rw-r--r--demo/scenes/shapechannels.h48
-rw-r--r--demo/scenes/softbody.h350
-rw-r--r--demo/scenes/surfacetension.h1
-rw-r--r--demo/scenes/tearing.h6
-rw-r--r--demo/scenes/thinbox.h1
-rw-r--r--demo/scenes/triggervolume.h4
-rw-r--r--demo/scenes/viscosity.h3
-rw-r--r--demo/scenes/waterballoon.h8
37 files changed, 310 insertions, 248 deletions
diff --git a/demo/scenes/adhesion.h b/demo/scenes/adhesion.h
index efbdec2..10c614a 100644
--- a/demo/scenes/adhesion.h
+++ b/demo/scenes/adhesion.h
@@ -11,7 +11,6 @@ public:
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.fluidRestDistance = g_params.radius*0.55f;
diff --git a/demo/scenes/armadilloshower.h b/demo/scenes/armadilloshower.h
index fdbf194..0fd2cfe 100644
--- a/demo/scenes/armadilloshower.h
+++ b/demo/scenes/armadilloshower.h
@@ -18,7 +18,6 @@ public:
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.fluidRestDistance = g_params.radius*0.5f;
diff --git a/demo/scenes/bouyancy.h b/demo/scenes/bouyancy.h
index 816146f..9f5b0d2 100644
--- a/demo/scenes/bouyancy.h
+++ b/demo/scenes/bouyancy.h
@@ -34,7 +34,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.1f;
- g_params.fluid = true;
g_params.viscosity = 2.0f;
g_params.numIterations = 4;
g_params.vorticityConfinement = 180.f;
diff --git a/demo/scenes/bunnybath.h b/demo/scenes/bunnybath.h
index db9e6ac..eeec5ac 100644
--- a/demo/scenes/bunnybath.h
+++ b/demo/scenes/bunnybath.h
@@ -37,7 +37,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.01f;
- g_params.fluid = true;
g_params.viscosity = 2.0f;
g_params.numIterations = 4;
g_params.vorticityConfinement = 40.0f;
diff --git a/demo/scenes/ccdfluid.h b/demo/scenes/ccdfluid.h
index 356eec7..9ba018e 100644
--- a/demo/scenes/ccdfluid.h
+++ b/demo/scenes/ccdfluid.h
@@ -50,7 +50,6 @@ public:
g_numSubsteps = 2;
- g_params.fluid = true;
g_params.radius = radius;
g_params.fluidRestDistance = restDistance;
g_params.dynamicFriction = 0.1f;
diff --git a/demo/scenes/dambreak.h b/demo/scenes/dambreak.h
index c2f9a40..cf45c29 100644
--- a/demo/scenes/dambreak.h
+++ b/demo/scenes/dambreak.h
@@ -22,7 +22,6 @@ public:
g_numSubsteps = 2;
- g_params.fluid = true;
g_params.radius = radius;
g_params.fluidRestDistance = restDistance;
g_params.dynamicFriction = 0.f;
diff --git a/demo/scenes/debris.h b/demo/scenes/debris.h
index 39013ff..5454b76 100644
--- a/demo/scenes/debris.h
+++ b/demo/scenes/debris.h
@@ -112,7 +112,7 @@ public:
// emit new debris
int numToEmit = 1;//Rand()%8;
- int particleOffset = NvFlexGetActiveCount(g_flex);
+ int particleOffset = NvFlexGetActiveCount(g_solver);
for (int i = 0; i < numToEmit; ++i)
{
@@ -265,7 +265,7 @@ public:
virtual void Sync()
{
- NvFlexSetRigids(g_flex, g_buffers->rigidOffsets.buffer, g_buffers->rigidIndices.buffer, g_buffers->rigidLocalPositions.buffer, g_buffers->rigidLocalNormals.buffer, g_buffers->rigidCoefficients.buffer, g_buffers->rigidRotations.buffer, g_buffers->rigidTranslations.buffer, g_buffers->rigidOffsets.size() - 1, g_buffers->rigidIndices.size());
+ NvFlexSetRigids(g_solver, g_buffers->rigidOffsets.buffer, g_buffers->rigidIndices.buffer, g_buffers->rigidLocalPositions.buffer, g_buffers->rigidLocalNormals.buffer, g_buffers->rigidCoefficients.buffer, g_buffers->rigidPlasticThresholds.buffer, g_buffers->rigidPlasticCreeps.buffer, g_buffers->rigidRotations.buffer, g_buffers->rigidTranslations.buffer, g_buffers->rigidOffsets.size() - 1, g_buffers->rigidIndices.size());
}
virtual void KeyDown(int key)
@@ -303,8 +303,7 @@ public:
{
if (mBatches[b].mInstanceTransforms.size())
{
- extern Colour gColors[];
- DrawGpuMeshInstances(mBatches[b].mMesh, &mBatches[b].mInstanceTransforms[0], mBatches[b].mInstanceTransforms.size(), Vec3(gColors[b % 8]));
+ DrawGpuMeshInstances(mBatches[b].mMesh, &mBatches[b].mInstanceTransforms[0], mBatches[b].mInstanceTransforms.size(), Vec3(g_colors[b % 8]));
}
}
}
diff --git a/demo/scenes/envcloth.h b/demo/scenes/envcloth.h
index 7405739..50a703a 100644
--- a/demo/scenes/envcloth.h
+++ b/demo/scenes/envcloth.h
@@ -34,7 +34,7 @@ public:
int gridz = mGridZ;
int clothIndex = 0;
- int phase = NvFlexMakePhase(0, eNvFlexPhaseSelfCollide);
+ int phase = NvFlexMakePhase(0, eNvFlexPhaseSelfCollide | eNvFlexPhaseSelfCollideFilter);
for (int x=0; x < gridx; ++x)
{
@@ -49,6 +49,9 @@ public:
}
}
+ // only simple collision necessary
+ g_solverDesc.featureMode = eNvFlexFeatureModeSimpleSolids;
+
g_params.radius = radius*1.05f;
g_params.dynamicFriction = 0.25f;
g_params.dissipation = 0.0f;
diff --git a/demo/scenes/fluidblock.h b/demo/scenes/fluidblock.h
index 82de2cb..abf508b 100644
--- a/demo/scenes/fluidblock.h
+++ b/demo/scenes/fluidblock.h
@@ -45,7 +45,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.0f;
- g_params.fluid = true;
g_params.viscosity = 0.0f;
g_params.numIterations = 3;
g_params.vorticityConfinement = 40.f;
diff --git a/demo/scenes/fluidclothcoupling.h b/demo/scenes/fluidclothcoupling.h
index 403a775..d9802b0 100644
--- a/demo/scenes/fluidclothcoupling.h
+++ b/demo/scenes/fluidclothcoupling.h
@@ -138,7 +138,6 @@ public:
g_numExtraParticles = 64*1024;
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 5;
g_params.vorticityConfinement = 0.0f;
g_params.anisotropyScale = 30.0f;
diff --git a/demo/scenes/forcefield.h b/demo/scenes/forcefield.h
index 1ffcd12..6510e87 100644
--- a/demo/scenes/forcefield.h
+++ b/demo/scenes/forcefield.h
@@ -40,7 +40,7 @@ public:
NvFlexExtDestroyForceFieldCallback(callback);
// create new callback
- callback = NvFlexExtCreateForceFieldCallback(g_flex);
+ callback = NvFlexExtCreateForceFieldCallback(g_solver);
// expand scene bounds to include force field
g_sceneLower -= Vec3(1.0f);
diff --git a/demo/scenes/gamemesh.h b/demo/scenes/gamemesh.h
index 6de6bd0..11824db 100644
--- a/demo/scenes/gamemesh.h
+++ b/demo/scenes/gamemesh.h
@@ -40,7 +40,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.3f;
g_params.dissipation = 0.0f;
- g_params.fluid = false;
g_params.fluidRestDistance = g_params.radius*0.5f;
g_params.viscosity = 0.05f;
g_params.anisotropyScale = 20.0f;
@@ -73,7 +72,6 @@ public:
g_params.dissipation = 0.0f;
g_params.numIterations = 4;
g_params.numPlanes = 1;
- g_params.fluid = false;
g_params.particleCollisionMargin = g_params.radius*0.1f;
g_params.restitution = 0.0f;
@@ -103,7 +101,6 @@ public:
g_params.numIterations = 3;
g_params.anisotropyScale = 30.0f;
g_params.smoothing = 0.5f;
- g_params.fluid = true;
g_params.relaxationFactor = 1.0f;
g_params.restitution = 0.0f;
g_params.smoothing = 0.5f;
diff --git a/demo/scenes/googun.h b/demo/scenes/googun.h
index 79ff396..71d1c51 100644
--- a/demo/scenes/googun.h
+++ b/demo/scenes/googun.h
@@ -17,7 +17,6 @@ public:
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.fluidRestDistance = g_params.radius*0.55f;
diff --git a/demo/scenes/granularpile.h b/demo/scenes/granularpile.h
index 56a85ea..d71c7a9 100644
--- a/demo/scenes/granularpile.h
+++ b/demo/scenes/granularpile.h
@@ -19,7 +19,7 @@ public:
CreateParticleShape(GetFilePathByPlatform("../../data/sandcastle.obj").c_str(), Vec3(-2.0f, -radius*0.15f, 0.0f), 4.0f, 0.0f, radius*1.0001f, 0.0f, 1.0f, false, 0.0f, NvFlexMakePhase(0, eNvFlexPhaseSelfCollide), false, 0.00f);
g_numSubsteps = 2;
-
+
g_params.radius = radius;
g_params.staticFriction = 1.0f;
g_params.dynamicFriction = 0.5f;
@@ -37,9 +37,8 @@ public:
g_drawPoints = true;
g_warmup = false;
- // hack, change the color of phase 0 particles to 'sand'
- extern Colour gColors[];
- gColors[0] = Colour(0.805f, 0.702f, 0.401f);
+ // hack, change the color of phase 0 particles to 'sand'
+ g_colors[0] = Colour(0.805f, 0.702f, 0.401f);
}
void Update()
diff --git a/demo/scenes/granularshape.h b/demo/scenes/granularshape.h
index 6d21738..b07581d 100644
--- a/demo/scenes/granularshape.h
+++ b/demo/scenes/granularshape.h
@@ -27,8 +27,7 @@ public:
g_numSubsteps = 3;
- extern Colour gColors[];
- gColors[1] = Colour(0.805f, 0.702f, 0.401f);
+ g_colors[1] = Colour(0.805f, 0.702f, 0.401f);
// draw options
g_drawPoints = true;
diff --git a/demo/scenes/inflatable.h b/demo/scenes/inflatable.h
index 58f5f08..b3e97f6 100644
--- a/demo/scenes/inflatable.h
+++ b/demo/scenes/inflatable.h
@@ -135,7 +135,7 @@ public:
virtual void Sync()
{
- NvFlexSetInflatables(g_flex, g_buffers->inflatableTriOffsets.buffer, g_buffers->inflatableTriCounts.buffer, g_buffers->inflatableVolumes.buffer, g_buffers->inflatablePressures.buffer, g_buffers->inflatableCoefficients.buffer, mCloths.size());
+ NvFlexSetInflatables(g_solver, g_buffers->inflatableTriOffsets.buffer, g_buffers->inflatableTriCounts.buffer, g_buffers->inflatableVolumes.buffer, g_buffers->inflatablePressures.buffer, g_buffers->inflatableCoefficients.buffer, mCloths.size());
}
virtual void Draw(int pass)
diff --git a/demo/scenes/lighthouse.h b/demo/scenes/lighthouse.h
index e4b410a..41e5d2f 100644
--- a/demo/scenes/lighthouse.h
+++ b/demo/scenes/lighthouse.h
@@ -23,7 +23,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.f;
- g_params.fluid = true;
g_params.viscosity = 0.01f;
g_params.numIterations = 3;
g_params.vorticityConfinement = 50.0f;
diff --git a/demo/scenes/localspacecloth.h b/demo/scenes/localspacecloth.h
index f28912e..1030f8b 100644
--- a/demo/scenes/localspacecloth.h
+++ b/demo/scenes/localspacecloth.h
@@ -65,7 +65,6 @@ public:
g_numSubsteps = 2;
- g_params.fluid = false;
g_params.radius = radius;
g_params.dynamicFriction = 0.f;
g_params.restitution = 0.0f;
diff --git a/demo/scenes/localspacefluid.h b/demo/scenes/localspacefluid.h
index 494249a..7bcbd8b 100644
--- a/demo/scenes/localspacefluid.h
+++ b/demo/scenes/localspacefluid.h
@@ -46,7 +46,6 @@ public:
g_numSubsteps = 2;
- g_params.fluid = true;
g_params.radius = radius;
g_params.fluidRestDistance = restDistance;
g_params.dynamicFriction = 0.f;
diff --git a/demo/scenes/lowdimensionalshapes.h b/demo/scenes/lowdimensionalshapes.h
index 5d32ea5..3c91394 100644
--- a/demo/scenes/lowdimensionalshapes.h
+++ b/demo/scenes/lowdimensionalshapes.h
@@ -21,7 +21,6 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 1.0f;
- g_params.fluid = false;
g_params.fluidRestDistance = radius;
g_params.viscosity = 0.0f;
g_params.numIterations = 4;
diff --git a/demo/scenes/melting.h b/demo/scenes/melting.h
index c7da792..f8d7083 100644
--- a/demo/scenes/melting.h
+++ b/demo/scenes/melting.h
@@ -13,7 +13,6 @@ public:
g_params.dynamicFriction = 0.25f;
g_params.dissipation = 0.0f;
g_params.viscosity = 0.0f;
- g_params.fluid = true;
g_params.cohesion = 0.0f;
g_params.fluidRestDistance = g_params.radius*0.6f;
g_params.anisotropyScale = 4.0f / g_params.radius;
@@ -63,7 +62,7 @@ public:
virtual void Sync()
{
- NvFlexSetRigids(g_flex, g_buffers->rigidOffsets.buffer, g_buffers->rigidIndices.buffer, g_buffers->rigidLocalPositions.buffer, g_buffers->rigidLocalNormals.buffer, g_buffers->rigidCoefficients.buffer, g_buffers->rigidRotations.buffer, g_buffers->rigidTranslations.buffer, g_buffers->rigidOffsets.size() - 1, g_buffers->rigidIndices.size());
+ NvFlexSetRigids(g_solver, g_buffers->rigidOffsets.buffer, g_buffers->rigidIndices.buffer, g_buffers->rigidLocalPositions.buffer, g_buffers->rigidLocalNormals.buffer, g_buffers->rigidCoefficients.buffer, g_buffers->rigidPlasticThresholds.buffer, g_buffers->rigidPlasticCreeps.buffer, g_buffers->rigidRotations.buffer, g_buffers->rigidTranslations.buffer, g_buffers->rigidOffsets.size() - 1, g_buffers->rigidIndices.size());
}
int mFrame;
diff --git a/demo/scenes/mixedpile.h b/demo/scenes/mixedpile.h
index 61bc5a5..35333ff 100644
--- a/demo/scenes/mixedpile.h
+++ b/demo/scenes/mixedpile.h
@@ -186,7 +186,6 @@ public:
g_params.shockPropagation = 0.0f;
g_params.restitution = 0.0f;
g_params.collisionDistance = g_params.radius*0.5f;
- g_params.fluid = false;
g_params.maxSpeed = 2.0f*g_params.radius*g_numSubsteps/g_dt;
// separte solid particle count
@@ -207,13 +206,13 @@ public:
g_emitters[0].mSpeed = (g_params.radius*0.5f/g_dt);
g_emitters[0].mSpeed = (g_params.radius/g_dt);
- extern Colour gColors[];
- gColors[0] = Colour(0.805f, 0.702f, 0.401f);
+ extern Colour g_colors[];
+ g_colors[0] = Colour(0.805f, 0.702f, 0.401f);
}
virtual void Update()
{
- NvFlexSetInflatables(g_flex, &mTriOffset[0], &mTriCount[0], &mRestVolume[0], &mOverPressure[0], &mConstraintScale[0], mCloths.size(), eFlexMemoryHost);
+ NvFlexSetInflatables(g_solver, &mTriOffset[0], &mTriCount[0], &mRestVolume[0], &mOverPressure[0], &mConstraintScale[0], mCloths.size(), eFlexMemoryHost);
}
int mHeight;
diff --git a/demo/scenes/parachutingbunnies.h b/demo/scenes/parachutingbunnies.h
index 04f2052..bfb18bb 100644
--- a/demo/scenes/parachutingbunnies.h
+++ b/demo/scenes/parachutingbunnies.h
@@ -124,7 +124,6 @@ public:
}
}
- g_params.fluid = true;
g_params.radius = 0.1f;
g_params.fluidRestDistance = radius;
g_params.numIterations = 4;
diff --git a/demo/scenes/plasticstack.h b/demo/scenes/plasticstack.h
deleted file mode 100644
index e1543ca..0000000
--- a/demo/scenes/plasticstack.h
+++ /dev/null
@@ -1,50 +0,0 @@
-
-class PlasticStack : public Scene
-{
-public:
-
- PlasticStack(const char* name) : Scene(name) {}
-
- virtual void Initialize()
- {
- g_params.radius = 0.225f;
-
- g_params.numIterations = 2;
- g_params.dynamicFriction = 0.5f;
- g_params.particleFriction = 0.15f;
- g_params.dissipation = 0.0f;
- g_params.viscosity = 0.0f;
-
- AddPlinth();
-
- const float rotation = -kPi*0.5f;
- const float spacing = g_params.radius*0.5f;
-
- // alternative box and sphere shapes
- const char* mesh[] =
- {
- "../../data/box_high.ply",
- "../../data/sphere.ply"
- };
-
- Vec3 lower = Vec3(4.0f, 1.0f, 0.0f);
- float sizeInc = 0.0f;
- float size = 1.0f;
- int group = 0;
-
- for (int i=0; i < 8; ++i)
- {
- CreateParticleShape(GetFilePathByPlatform(mesh[i%2]).c_str(), lower, size + i*sizeInc, rotation, spacing, Vec3(.0f, 0.0f, 0.0f), 1.0f, true, 1.0f, NvFlexMakePhase(group++, 0), true, 0.0f, 0.0f, g_params.radius*0.5f);
-
- lower += Vec3(0.0f, size + i*sizeInc + 0.2f, 0.0f);
- }
-
- g_params.plasticThreshold = 0.00025f;
- g_params.plasticCreep = 0.165f;
-
- g_numSubsteps = 4;
-
- // draw options
- g_drawPoints = false;
- }
-};
diff --git a/demo/scenes/player.h b/demo/scenes/player.h
index 83407ac..46f4ca5 100644
--- a/demo/scenes/player.h
+++ b/demo/scenes/player.h
@@ -40,7 +40,7 @@ public:
{
g_buffers->activeIndices = mInitialActive;
- NvFlexSetActive(g_flex, &mInitialActive[0], mInitialActive.size(), eFlexMemoryHost);
+ NvFlexSetActive(g_solver, &mInitialActive[0], mInitialActive.size(), eFlexMemoryHost);
}
virtual Matrix44 GetBasis()
@@ -166,6 +166,8 @@ public:
ReadArray(g_buffers->rigidLocalNormals, true);
ReadArray(g_buffers->rigidCoefficients, true);
+ ReadArray(g_buffers->rigidPlasticThresholds, true);
+ ReadArray(g_buffers->rigidPlasticCreeps, true);
ReadArray(g_buffers->rigidOffsets, true);
ReadArray(g_buffers->rigidRotations, true);
ReadArray(g_buffers->rigidTranslations, true);
diff --git a/demo/scenes/rayleightaylor.h b/demo/scenes/rayleightaylor.h
index f07fb46..b4f7ebd 100644
--- a/demo/scenes/rayleightaylor.h
+++ b/demo/scenes/rayleightaylor.h
@@ -31,7 +31,6 @@ public:
g_params.gravity[1] = -9.f;
g_params.radius = radius;
g_params.dynamicFriction = 0.00f;
- g_params.fluid = true;
g_params.viscosity = 2.0f;
g_params.numIterations = 10;
g_params.vorticityConfinement = 0.0f;
@@ -109,7 +108,6 @@ public:
g_params.gravity[1] = -9.f;
g_params.radius = radius;
g_params.dynamicFriction = 0.00f;
- g_params.fluid = true;
g_params.viscosity = 0.0f;
g_params.numIterations = 10;
g_params.vorticityConfinement = 0.0f;
diff --git a/demo/scenes/rigidfluidcoupling.h b/demo/scenes/rigidfluidcoupling.h
index b978eb8..0bde7d9 100644
--- a/demo/scenes/rigidfluidcoupling.h
+++ b/demo/scenes/rigidfluidcoupling.h
@@ -43,13 +43,12 @@ public:
g_params.radius = radius;
g_params.dynamicFriction = 0.5f;
- g_params.fluid = true;
g_params.viscosity = 0.1f;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.anisotropyScale = 25.0f;
- g_params.fluidRestDistance = g_params.radius*0.55f;
-
+ g_params.fluidRestDistance = g_params.radius*0.55f;
+ g_params.solidRestDistance = g_params.radius*0.5f;
g_emitters[0].mEnabled = true;
g_emitters[0].mSpeed = 2.0f*(g_params.fluidRestDistance)/g_dt;
diff --git a/demo/scenes/rigidrotation.h b/demo/scenes/rigidrotation.h
index 8abcb98..6d2e1d7 100644
--- a/demo/scenes/rigidrotation.h
+++ b/demo/scenes/rigidrotation.h
@@ -12,9 +12,9 @@ public:
{
float radius = 0.1f;
- float dimx = 1.0f;
- float dimy = 5.0f;
- float dimz = 1.0f;
+ float dimx = 3.0f;
+ float dimy = 3.0f;
+ float dimz = 3.0f;
CreateParticleShape(GetFilePathByPlatform("../../data/box.ply").c_str(), Vec3(0.0f, 1.0f, 0.0f), Vec3(dimx, dimy, dimz)*radius, 0.0f, radius, Vec3(0.0f), 1.0f, true, 1.0f, 0, true, 0.0f, 0.0f, 0.0f);
@@ -22,7 +22,7 @@ public:
g_params.gravity[1] = 0;
g_params.numIterations = 1;
- g_numSubsteps = 1;
+ g_numSubsteps = 3;
g_pause = true;
@@ -39,17 +39,19 @@ public:
Vec3 center = (lower + upper)*0.5f;
- Matrix44 rotation = RotationMatrix(DegToRad(95.0f), Vec3(0.0f, 0.0f, 1.0f));
+ //Matrix44 rotation = RotationMatrix(DegToRad(40.0f), Vec3(0.0f, 0.0f, 1.0f));
for (int i = 0; i < int(g_buffers->positions.size()); ++i)
{
Vec3 delta = Vec3(g_buffers->positions[i]) - center;
- delta = Vec3(rotation*Vec4(delta, 1.0f));
+ //delta = Vec3(rotation*Vec4(delta, 1.0f));
- g_buffers->positions[i].x = center.x + delta.x;
- g_buffers->positions[i].y = center.y + delta.y;
- g_buffers->positions[i].z = center.z + delta.z;
+ //g_buffers->positions[i].x = center.x + delta.x;
+ //g_buffers->positions[i].y = center.y + delta.y;
+ //g_buffers->positions[i].z = center.z + delta.z;
+
+ g_buffers->velocities[i] = Cross(delta, Vec3(0.0f, 0.0f, 1.0f))*10.0f;
}
}
}
diff --git a/demo/scenes/rockpool.h b/demo/scenes/rockpool.h
index e7c0034..f596de2 100644
--- a/demo/scenes/rockpool.h
+++ b/demo/scenes/rockpool.h
@@ -21,11 +21,12 @@ public:
CreateParticleGrid(Vec3(0.0f, radius*0.5f, -1.0f), 32, 32, 32, radius*0.55f, Vec3(0.0f), 1.0f, false, 0.0f, NvFlexMakePhase(0, eNvFlexPhaseSelfCollide | eNvFlexPhaseFluid), 0.005f);
+ g_solverDesc.featureMode = eNvFlexFeatureModeSimpleFluids;
+
g_numSubsteps = 2;
g_params.radius = radius;
g_params.dynamicFriction = 0.00f;
- g_params.fluid = true;
g_params.viscosity = 0.01f;
g_params.numIterations = 2;
g_params.vorticityConfinement = 75.0f;
diff --git a/demo/scenes/shapechannels.h b/demo/scenes/shapechannels.h
new file mode 100644
index 0000000..22ee649
--- /dev/null
+++ b/demo/scenes/shapechannels.h
@@ -0,0 +1,48 @@
+
+
+// demonstrates how to make particles collide with
+// selected collision shapes based on the channel mask
+class ShapeChannels : public Scene
+{
+public:
+
+ ShapeChannels(const char* name) : Scene(name) {}
+
+ void Initialize()
+ {
+ const float radius = 0.05f;
+
+ Vec3 offset = Vec3(-0.25f, 6.0f, -0.25f);
+
+ // layers of particles each set to collide with a different shape channel
+ int numLayers = 8;
+
+ for (int i=0; i < numLayers; ++i)
+ {
+ CreateParticleGrid(offset + Vec3(0.0f, 2.0f*i*radius, 0.0f), 10, 1, 10, radius, Vec3(0.0f), 1.0f, false, 0.0f, NvFlexMakePhaseWithChannels(i, eNvFlexPhaseSelfCollide, eNvFlexPhaseShapeChannel0<<i), 0.0f);
+ //CreateParticleGrid(offset + Vec3(0.0f, 2.0f*radius, 0.0f), 10, 1, 10, radius, Vec3(0.0f), 1.0f, false, 0.0f, NvFlexMakePhaseWithChannels(0, eNvFlexPhaseSelfCollide, eNvFlexPhaseShapeChannel1), 0.0f);
+ //CreateParticleGrid(offset + Vec3(0.0f, 4.0f*radius, 0.0f), 10, 1, 10, radius, Vec3(0.0f), 1.0f, false, 0.0f, NvFlexMakePhaseWithChannels(0, eNvFlexPhaseSelfCollide, eNvFlexPhaseShapeChannel2), 0.0f);
+
+ AddBox(Vec3(0.5f, 0.1f, 0.5f), Vec3(0.0f, 0.5f + i*0.5f, 0.0f), Quat(), false, eNvFlexPhaseShapeChannel0<<i);
+ }
+
+ // regular box
+ //AddBox(Vec3(0.5f, 0.1f, 0.5f), Vec3(0.0f, 0.5f, 0.0f), Quat(), false, eNvFlexPhaseShapeChannel0);
+ //AddBox(Vec3(0.5f, 0.1f, 0.5f), Vec3(0.0f, 1.0f, 0.0f), Quat(), false, eNvFlexPhaseShapeChannel1);
+ //AddBox(Vec3(0.5f, 0.1f, 0.5f), Vec3(0.0f, 1.5f, 0.0f), Quat(), false, eNvFlexPhaseShapeChannel2);
+
+ g_params.radius = radius;
+ g_params.dynamicFriction = 0.025f;
+ g_params.dissipation = 0.0f;
+ g_params.restitution = 0.0;
+ g_params.numIterations = 4;
+ g_params.particleCollisionMargin = g_params.radius*0.05f;
+
+ g_numSubsteps = 1;
+ }
+
+ virtual void Update()
+ {
+
+ }
+}; \ No newline at end of file
diff --git a/demo/scenes/softbody.h b/demo/scenes/softbody.h
index c12680c..265626b 100644
--- a/demo/scenes/softbody.h
+++ b/demo/scenes/softbody.h
@@ -2,51 +2,145 @@
class SoftBody : public Scene
{
-public:
- SoftBody(const char* name, const char* mesh) :
+public:
+ SoftBody(const char* name) :
Scene(name),
- mFile(mesh),
- mScale(2.0f),
- mOffset(0.0f, 1.0f, 0.0f),
mRadius(0.1f),
- mClusterSpacing(1.0f),
- mClusterRadius(0.0f),
- mClusterStiffness(0.5f),
- mLinkRadius(0.0f),
- mLinkStiffness(1.0f),
- mGlobalStiffness(0.0f),
- mSurfaceSampling(0.0f),
- mVolumeSampling(4.0f),
- mSkinningFalloff(2.0f),
- mSkinningMaxDistance(100.0f),
- mPlasticThreshold(0.0f),
- mPlasticCreep(0.0f),
mRelaxationFactor(1.0f),
- mPlinth(false)
+ mPlinth(false),
+ plasticDeformation(false)
{
- mStack[0] = 1;
- mStack[1] = 1;
- mStack[2] = 1;
+ const Vec3 colorPicker[7] =
+ {
+ Vec3(0.0f, 0.5f, 1.0f),
+ Vec3(0.797f, 0.354f, 0.000f),
+ Vec3(0.000f, 0.349f, 0.173f),
+ Vec3(0.875f, 0.782f, 0.051f),
+ Vec3(0.01f, 0.170f, 0.453f),
+ Vec3(0.673f, 0.111f, 0.000f),
+ Vec3(0.612f, 0.194f, 0.394f)
+ };
+ memcpy(mColorPicker, colorPicker, sizeof(Vec3) * 7);
+ }
+
+ float mRadius;
+ float mRelaxationFactor;
+ bool mPlinth;
+
+ Vec3 mColorPicker[7];
+
+ struct Instance
+ {
+ Instance(const char* mesh) :
+
+ mFile(mesh),
+ mColor(0.5f, 0.5f, 1.0f),
+
+ mScale(2.0f),
+ mTranslation(0.0f, 1.0f, 0.0f),
+
+ mClusterSpacing(1.0f),
+ mClusterRadius(0.0f),
+ mClusterStiffness(0.5f),
+
+ mLinkRadius(0.0f),
+ mLinkStiffness(1.0f),
+
+ mGlobalStiffness(0.0f),
+
+ mSurfaceSampling(0.0f),
+ mVolumeSampling(4.0f),
+
+ mSkinningFalloff(2.0f),
+ mSkinningMaxDistance(100.0f),
+
+ mClusterPlasticThreshold(0.0f),
+ mClusterPlasticCreep(0.0f)
+ {}
+
+ const char* mFile;
+ Vec3 mColor;
+
+ Vec3 mScale;
+ Vec3 mTranslation;
+
+ float mClusterSpacing;
+ float mClusterRadius;
+ float mClusterStiffness;
+
+ float mLinkRadius;
+ float mLinkStiffness;
+
+ float mGlobalStiffness;
+
+ float mSurfaceSampling;
+ float mVolumeSampling;
+
+ float mSkinningFalloff;
+ float mSkinningMaxDistance;
+
+ float mClusterPlasticThreshold;
+ float mClusterPlasticCreep;
+ };
+
+ std::vector<Instance> mInstances;
+
+private:
+
+ struct RenderingInstance
+ {
+ Mesh* mMesh;
+ std::vector<int> mSkinningIndices;
+ std::vector<float> mSkinningWeights;
+ vector<Vec3> mRigidRestPoses;
+ Vec3 mColor;
+ int mOffset;
+ };
+
+ std::vector<RenderingInstance> mRenderingInstances;
+
+ bool plasticDeformation;
+
+
+public:
+ virtual void AddInstance(Instance instance)
+ {
+ this->mInstances.push_back(instance);
+ }
+
+ virtual void AddStack(Instance instance, int xStack, int yStack, int zStack, bool rotateColors = false)
+ {
+ Vec3 translation = instance.mTranslation;
+ for (int x = 0; x < xStack; ++x)
+ {
+ for (int y = 0; y < yStack; ++y)
+ {
+ for (int z = 0; z < zStack; ++z)
+ {
+ instance.mTranslation = translation + Vec3(x*(instance.mScale.x + 1), y*(instance.mScale.y + 1), z*(instance.mScale.z + 1))*mRadius;
+ if (rotateColors) {
+ instance.mColor = mColorPicker[(x*yStack*zStack + y*zStack + z) % 7];
+ }
+ this->mInstances.push_back(instance);
+ }
+ }
+ }
}
virtual void Initialize()
{
float radius = mRadius;
+ // no fluids or sdf based collision
+ g_solverDesc.featureMode = eNvFlexFeatureModeSimpleSolids;
+
g_params.radius = radius;
g_params.dynamicFriction = 0.35f;
g_params.particleFriction = 0.25f;
- g_params.dissipation = 0.0f;
g_params.numIterations = 4;
- g_params.viscosity = 0.0f;
- g_params.drag = 0.0f;
- g_params.lift = 0.0f;
g_params.collisionDistance = radius*0.75f;
- g_params.plasticThreshold = mPlasticThreshold;
- g_params.plasticCreep = mPlasticCreep;
-
g_params.relaxationFactor = mRelaxationFactor;
g_windStrength = 0.0f;
@@ -61,14 +155,14 @@ public:
g_buffers->rigidOffsets.push_back(0);
- mInstances.resize(0);
+ mRenderingInstances.resize(0);
+ // build soft bodies
+ for (int i = 0; i < int(mInstances.size()); i++)
+ CreateSoftBody(mInstances[i], mRenderingInstances.size());
- CreateBodies();
-
- if (mPlinth) {
+ if (mPlinth)
AddPlinth();
- }
// fix any particles below the ground plane in place
for (int i = 0; i < int(g_buffers->positions.size()); ++i)
@@ -81,73 +175,60 @@ public:
g_lightDistance *= 1.5f;
}
- virtual void CreateBodies()
+ void CreateSoftBody(Instance instance, int group = 0)
{
- // build soft body
- for (int x = 0; x < mStack[0]; ++x)
- {
- for (int y = 0; y < mStack[1]; ++y)
- {
- for (int z = 0; z < mStack[2]; ++z)
- {
- CreateSoftBody(mRadius, mOffset + Vec3(x*(mScale.x + 1), y*(mScale.y + 1), z*(mScale.z + 1))*mRadius, mClusterStiffness, mInstances.size());
- }
- }
- }
- }
-
- void CreateSoftBody(float radius, Vec3 position, float clusterStiffness, int group = 0)
- {
- Instance instance;
+ RenderingInstance renderingInstance;
- Mesh* mesh = ImportMesh(GetFilePathByPlatform(mFile).c_str());
+ Mesh* mesh = ImportMesh(GetFilePathByPlatform(instance.mFile).c_str());
mesh->Normalize();
- mesh->Transform(TranslationMatrix(Point3(position))*ScaleMatrix(mScale*radius));
+ mesh->Transform(TranslationMatrix(Point3(instance.mTranslation))*ScaleMatrix(instance.mScale*mRadius));
- instance.mMesh = mesh;
- instance.mColor = Vec3(0.5f, 0.5f, 1.0f);
- instance.mOffset = g_buffers->rigidTranslations.size();
+ renderingInstance.mMesh = mesh;
+ renderingInstance.mColor = instance.mColor;
+ renderingInstance.mOffset = g_buffers->rigidTranslations.size();
double createStart = GetSeconds();
// create soft body definition
NvFlexExtAsset* asset = NvFlexExtCreateSoftFromMesh(
- (float*)&instance.mMesh->m_positions[0],
- instance.mMesh->m_positions.size(),
- (int*)&instance.mMesh->m_indices[0],
- instance.mMesh->m_indices.size(),
- radius,
- mVolumeSampling,
- mSurfaceSampling,
- mClusterSpacing*radius,
- mClusterRadius*radius,
- clusterStiffness,
- mLinkRadius*radius,
- mLinkStiffness,
- mGlobalStiffness);
+ (float*)&renderingInstance.mMesh->m_positions[0],
+ renderingInstance.mMesh->m_positions.size(),
+ (int*)&renderingInstance.mMesh->m_indices[0],
+ renderingInstance.mMesh->m_indices.size(),
+ mRadius,
+ instance.mVolumeSampling,
+ instance.mSurfaceSampling,
+ instance.mClusterSpacing*mRadius,
+ instance.mClusterRadius*mRadius,
+ instance.mClusterStiffness,
+ instance.mLinkRadius*mRadius,
+ instance.mLinkStiffness,
+ instance.mGlobalStiffness,
+ instance.mClusterPlasticThreshold,
+ instance.mClusterPlasticCreep);
double createEnd = GetSeconds();
// create skinning
const int maxWeights = 4;
- instance.mSkinningIndices.resize(instance.mMesh->m_positions.size()*maxWeights);
- instance.mSkinningWeights.resize(instance.mMesh->m_positions.size()*maxWeights);
+ renderingInstance.mSkinningIndices.resize(renderingInstance.mMesh->m_positions.size()*maxWeights);
+ renderingInstance.mSkinningWeights.resize(renderingInstance.mMesh->m_positions.size()*maxWeights);
for (int i = 0; i < asset->numShapes; ++i)
- instance.mRigidRestPoses.push_back(Vec3(&asset->shapeCenters[i * 3]));
+ renderingInstance.mRigidRestPoses.push_back(Vec3(&asset->shapeCenters[i * 3]));
double skinStart = GetSeconds();
NvFlexExtCreateSoftMeshSkinning(
- (float*)&instance.mMesh->m_positions[0],
- instance.mMesh->m_positions.size(),
+ (float*)&renderingInstance.mMesh->m_positions[0],
+ renderingInstance.mMesh->m_positions.size(),
asset->shapeCenters,
asset->numShapes,
- mSkinningFalloff,
- mSkinningMaxDistance,
- &instance.mSkinningWeights[0],
- &instance.mSkinningIndices[0]);
+ instance.mSkinningFalloff,
+ instance.mSkinningMaxDistance,
+ &renderingInstance.mSkinningWeights[0],
+ &renderingInstance.mSkinningIndices[0]);
double skinEnd = GetSeconds();
@@ -178,6 +259,52 @@ public:
g_buffers->rigidCoefficients.push_back(asset->shapeCoefficients[i]);
}
+
+ // add plastic deformation data to solver, if at least one asset has non-zero plastic deformation coefficients, leave the according pointers at NULL otherwise
+ if (plasticDeformation)
+ {
+ if (asset->shapePlasticThresholds && asset->shapePlasticCreeps)
+ {
+ for (int i = 0; i < asset->numShapes; ++i)
+ {
+ g_buffers->rigidPlasticThresholds.push_back(asset->shapePlasticThresholds[i]);
+ g_buffers->rigidPlasticCreeps.push_back(asset->shapePlasticCreeps[i]);
+ }
+ }
+ else
+ {
+ for (int i = 0; i < asset->numShapes; ++i)
+ {
+ g_buffers->rigidPlasticThresholds.push_back(0.0f);
+ g_buffers->rigidPlasticCreeps.push_back(0.0f);
+ }
+ }
+ }
+ else
+ {
+ if (asset->shapePlasticThresholds && asset->shapePlasticCreeps)
+ {
+ int oldBufferSize = g_buffers->rigidCoefficients.size() - asset->numShapes;
+
+ g_buffers->rigidPlasticThresholds.resize(oldBufferSize);
+ g_buffers->rigidPlasticCreeps.resize(oldBufferSize);
+
+ for (int i = 0; i < oldBufferSize; i++)
+ {
+ g_buffers->rigidPlasticThresholds[i] = 0.0f;
+ g_buffers->rigidPlasticCreeps[i] = 0.0f;
+ }
+
+ for (int i = 0; i < asset->numShapes; ++i)
+ {
+ g_buffers->rigidPlasticThresholds.push_back(asset->shapePlasticThresholds[i]);
+ g_buffers->rigidPlasticCreeps.push_back(asset->shapePlasticCreeps[i]);
+ }
+
+ plasticDeformation = true;
+ }
+ }
+
// add link data to the solver
for (int i = 0; i < asset->numSprings; ++i)
{
@@ -190,7 +317,7 @@ public:
NvFlexExtDestroyAsset(asset);
- mInstances.push_back(instance);
+ mRenderingInstances.push_back(renderingInstance);
}
virtual void Draw(int pass)
@@ -198,9 +325,9 @@ public:
if (!g_drawMesh)
return;
- for (int s = 0; s < int(mInstances.size()); ++s)
+ for (int s = 0; s < int(mRenderingInstances.size()); ++s)
{
- const Instance& instance = mInstances[s];
+ const RenderingInstance& instance = mRenderingInstances[s];
Mesh m;
m.m_positions.resize(instance.mMesh->m_positions.size());
@@ -239,58 +366,15 @@ public:
DrawMesh(&m, instance.mColor);
}
}
-
- struct Instance
- {
- Mesh* mMesh;
- std::vector<int> mSkinningIndices;
- std::vector<float> mSkinningWeights;
- vector<Vec3> mRigidRestPoses;
- Vec3 mColor;
- int mOffset;
- };
-
- std::vector<Instance> mInstances;
-
- const char* mFile;
- Vec3 mScale;
- Vec3 mOffset;
-
- float mRadius;
-
- float mClusterSpacing;
- float mClusterRadius;
- float mClusterStiffness;
-
- float mLinkRadius;
- float mLinkStiffness;
-
- float mGlobalStiffness;
-
- float mSurfaceSampling;
- float mVolumeSampling;
-
- float mSkinningFalloff;
- float mSkinningMaxDistance;
-
- float mPlasticThreshold;
- float mPlasticCreep;
-
- float mRelaxationFactor;
-
- bool mPlinth;
-
- int mStack[3];
};
-
-
class SoftBodyFixed : public SoftBody
{
public:
- SoftBodyFixed(const char* name, const char* mesh) : SoftBody(name, mesh) {}
+ SoftBodyFixed(const char* name) : SoftBody(name)
+ {}
virtual void Initialize()
{
@@ -302,16 +386,16 @@ public:
g_buffers->positions[i].w = 0.0f;
}
- virtual void CreateBodies()
+ virtual void AddStack(Instance instance, int zStack)
{
- int x = 0;
- int y = 0;
+ float clusterStiffness = instance.mClusterStiffness;
+ Vec3 translation = instance.mTranslation;
- for (int z = 0; z < 4; ++z)
+ for (int z = 0; z < zStack; ++z)
{
- float stiffness = sqr(mClusterStiffness*(z + 1));
-
- CreateSoftBody(mRadius, mOffset + Vec3(x*(mScale.x + 1), y*(mScale.y + 1), -z*(mScale.z + 1))*mRadius, stiffness, mInstances.size());
+ instance.mClusterStiffness = sqr(clusterStiffness*(z + 1));
+ instance.mTranslation = translation + Vec3(0.0f, 0.0f, -z*(instance.mScale.z + 1))*mRadius;
+ this->mInstances.push_back(instance);
}
}
@@ -322,4 +406,4 @@ public:
(Vec4&)g_params.planes[1] = Vec4(1.0f, 0.0f, 0.0f, 0.0f);
g_params.numPlanes = 2;
}
-};
+}; \ No newline at end of file
diff --git a/demo/scenes/surfacetension.h b/demo/scenes/surfacetension.h
index b22ad6d..60f1836 100644
--- a/demo/scenes/surfacetension.h
+++ b/demo/scenes/surfacetension.h
@@ -17,7 +17,6 @@ public:
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.fluidRestDistance = restDistance;
diff --git a/demo/scenes/tearing.h b/demo/scenes/tearing.h
index c36ca7a..ce9dacc 100644
--- a/demo/scenes/tearing.h
+++ b/demo/scenes/tearing.h
@@ -123,9 +123,9 @@ public:
virtual void Sync()
{
// update solver data not already updated in the main loop
- NvFlexSetSprings(g_flex, g_buffers->springIndices.buffer, g_buffers->springLengths.buffer, g_buffers->springStiffness.buffer, g_buffers->springLengths.size());
- NvFlexSetDynamicTriangles(g_flex, g_buffers->triangles.buffer, g_buffers->triangleNormals.buffer, g_buffers->triangles.size() / 3);
- NvFlexSetRestParticles(g_flex, g_buffers->restPositions.buffer, g_buffers->restPositions.size());
+ NvFlexSetSprings(g_solver, g_buffers->springIndices.buffer, g_buffers->springLengths.buffer, g_buffers->springStiffness.buffer, g_buffers->springLengths.size());
+ NvFlexSetDynamicTriangles(g_solver, g_buffers->triangles.buffer, g_buffers->triangleNormals.buffer, g_buffers->triangles.size() / 3);
+ NvFlexSetRestParticles(g_solver, g_buffers->restPositions.buffer, NULL);
}
NvFlexExtAsset* mCloth;
diff --git a/demo/scenes/thinbox.h b/demo/scenes/thinbox.h
index a77f258..d9005c9 100644
--- a/demo/scenes/thinbox.h
+++ b/demo/scenes/thinbox.h
@@ -47,7 +47,6 @@ public:
g_params.gravity[1] = -9.f;
g_params.radius = radius;
g_params.dynamicFriction = 0.0f;
- g_params.fluid = false;
g_params.numIterations = 5;
g_params.numPlanes = 1;
g_params.restitution = 0.0f;
diff --git a/demo/scenes/triggervolume.h b/demo/scenes/triggervolume.h
index 0e4c1a4..8c078de 100644
--- a/demo/scenes/triggervolume.h
+++ b/demo/scenes/triggervolume.h
@@ -45,14 +45,14 @@ public:
NvFlexVector<int> contactIndices(g_flexLib, g_buffers->positions.size());
NvFlexVector<unsigned int> contactCounts(g_flexLib, g_buffers->positions.size());
- NvFlexGetContacts(g_flex, contactPlanes.buffer, contactVelocities.buffer, contactIndices.buffer, contactCounts.buffer);
+ NvFlexGetContacts(g_solver, contactPlanes.buffer, contactVelocities.buffer, contactIndices.buffer, contactCounts.buffer);
contactPlanes.map();
contactVelocities.map();
contactIndices.map();
contactCounts.map();
- int activeCount = NvFlexGetActiveCount(g_flex);
+ int activeCount = NvFlexGetActiveCount(g_solver);
for (int i = 0; i < activeCount; ++i)
{
diff --git a/demo/scenes/viscosity.h b/demo/scenes/viscosity.h
index 0615855..52db6d5 100644
--- a/demo/scenes/viscosity.h
+++ b/demo/scenes/viscosity.h
@@ -10,9 +10,10 @@ public:
float radius = 0.1f;
float restDistance = radius*0.5f;
+ g_solverDesc.featureMode = eNvFlexFeatureModeSimpleFluids;
+
g_params.radius = radius;
- g_params.fluid = true;
g_params.numIterations = 3;
g_params.vorticityConfinement = 0.0f;
g_params.fluidRestDistance = restDistance;
diff --git a/demo/scenes/waterballoon.h b/demo/scenes/waterballoon.h
index 544bf78..0e59f40 100644
--- a/demo/scenes/waterballoon.h
+++ b/demo/scenes/waterballoon.h
@@ -88,8 +88,6 @@ public:
g_params.collisionDistance = 0.01f;
g_params.solidPressure = 0.0f;
- g_params.fluid = true;
-
g_params.fluidRestDistance = radius*0.65f;
g_params.viscosity = 0.0;
g_params.adhesion = 0.0f;
@@ -190,11 +188,11 @@ public:
virtual void Sync()
{
// send new particle data to the GPU
- NvFlexSetRestParticles(g_flex, g_buffers->restPositions.buffer, g_buffers->restPositions.size());
+ NvFlexSetRestParticles(g_solver, g_buffers->restPositions.buffer, NULL);
// update solver
- NvFlexSetSprings(g_flex, g_buffers->springIndices.buffer, g_buffers->springLengths.buffer, g_buffers->springStiffness.buffer, g_buffers->springLengths.size());
- NvFlexSetDynamicTriangles(g_flex, g_buffers->triangles.buffer, g_buffers->triangleNormals.buffer, g_buffers->triangles.size() / 3);
+ NvFlexSetSprings(g_solver, g_buffers->springIndices.buffer, g_buffers->springLengths.buffer, g_buffers->springStiffness.buffer, g_buffers->springLengths.size());
+ NvFlexSetDynamicTriangles(g_solver, g_buffers->triangles.buffer, g_buffers->triangleNormals.buffer, g_buffers->triangles.size() / 3);
}
virtual void Update()