Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dragging Particles Cause Too Much Pixelation
#1
Hi,
I've been trying to figure this problem out for three months, and unfortunately, I'm still at the same place where I started.
I'll try to summarize what's my objective and my result:
My main soft-body object is a stomach. I created little sphere colliders in the place of obi particles. Then, I shoot a ray from my pulling device and find the picked particles. I assign these particle indices to my pulling device as a particle attachment group and prevent the other particles' movement(basically, I create another particle attachment and specify the particle group to a static position). When I do that, I have this mesh deformation problem. I see triangles and it doesn't look smooth. Here is an example picture:
   


Before you comment, I'd like to say that I've tried various techniques. I played all the parameters(Obi Softbody Skinner, Obi Solver, Shape matching constraints), tested different blueprint resolutions, and finally, tested with different mesh vertex counts. I also tried a combination of these solution techniques. But, the result was always similar to the picture.
Furthermore, I tested without limiting particle behavior(I assigned the picked-particle group to the pulling device but didn't limit other particles' movement). This time, the whole mesh was affected by the soft body, but my objective was to simulate a focused group of particles solely.
I'll share my current parameters with you here, I look forward to your help to cease or reduce the pixelation problem. I post extra information if you need it.

Current Parameters:
Obi Version: 6.4
Vertex Count of the Stomach: 32k
Softbody Skinner
Softbody Influence:0.7
Max Bones Per Vertex:28
Skinning Falloff:0.8
Skinning Max Distance:0.22
Shape Matching Constraints
Deformation resistance:0.207
Max Deformation:0.875
Plastic Yield: 100
Plastic Creep: 100
Plastic Recovery:500
   
   
   
   
Reply
#2
(18-10-2023, 01:18 AM)Fisixus Wrote: Then, I shoot a ray from my pulling device and find the picked particles. I assign these particle indices to my pulling device as a particle attachment group and prevent the other particles' movement(basically, I create another particle attachment and specify the particle group to a static position). When I do that, I have this mesh deformation problem. I see triangles and it doesn't look smooth.

[...]

Furthermore, I tested without limiting particle behavior(I assigned the picked-particle group to the pulling device but didn't limit other particles' movement). This time, the whole mesh was affected by the soft body, but my objective was to simulate a focused group of particles solely.

Hi!

If you're moving some specific particles while locking all other particles in place, it stands to reason that deformation will not be smooth. Not limiting other particle's movement should allow nearby particles to smoothly deform.

Here's an example: I've created a blueprint out of a flat square, using less particles than vertices are in it. I've grouped the particles at the border of the mesh, and statically attached them so that the softbody stays in place. All other particles are free to move.

[Image: NdVQwIP.png]

Then I've added the ObiParticleDragger to select and drag a single particle around. Notice how the mesh smoothly deforms even though only one particle is being dragged, this is because the surrounding softbody particles are free to deform and follow the dragged particle.

[Image: K51On2D.png]

Some comment on your parameters:

Softbody influence of 0.7: this won't allow the mesh to fully follow the softbody simulation, only 70% of the deformation will be applied making physics/rendering out of sync. This is mostly used when blending character animation with simulation, which doesn't seem to be your case. Should be set to 1.

Max Bones Per Vertex:28 That's a lot of influences per vertex. 8 should be more than enough in pretty much all cases, that's what I'm using in the test above.

Skinning Max Distance:0.22 Lowering the max distance will make skinning sharper, which is the exact opposite of what you want. Larger max distances will yield smoother influence of particles over vertices. The default of 0.5 should work well enough in most cases, allowing particles to influence vertices over a wide radius.

Deformation resistance:0.207 Low deformation resistance will make the softbody very soft, allowing for very large deformations. Might not be a good idea in your case, since this will lead to more extreme mesh deformation and exacerbate the "pixelation" problem.


Max Deformation:0.875
Plastic Yield: 100
Plastic Creep: 100
Plastic Recovery:500


These don't make any sense whatsoever. You have an extremely high plastic recovery rate, which will cause the softbody to recover from plastic deformation almost instantaneously. But you also have rather high yield and creep, so you're paying for plasticity with performance but it won't have any visible effect on the simulation. If not using plasticity, set all four to zero.

Some settings in your ObiSolver don't make any sense either:

Collision Margin: 0.001 This will only allow collisions to be detected if particles are within 1 millimeter of a collision surface, making collision detection noticeably less robust. The default of 0.02 (2 cm) should be enough unless you're working at an extremely small scale.

Max Depenetration: 0.1 This is the maximum velocity change in meters/second that particles are allowed to undergo when colliding against something. Such a low value will cause particles to mostly ignore collisions. Higher values (at least 5 m/s) should be used.

Shock propagation: 0.27 This is used to improve stacking stability, mostly for piles of granular materials like pebbles. Unless you're using granulars this should be set to zero.

There's also a warning in your ObiSolver component: it's set to use the Burst backend, but none of the Burst dependencies are installed so it will fall back to the native (Oni) backend. It's recommended you install the required dependencies for performance reasons. See:
http://obi.virtualmethodstudio.com/manua...kends.html


kind regards,
Reply
#3
Thank you so much for the quick and detailed reply. I'll edit the parameters and the algorithm as you've recommended and let you know about the result!
Reply
#4
Pregunta 
Hello again,
So, I tested the simulation with the values you suggested. And as you said before, I work with tiny numbers. If I keep the moveable zone radius=0.06f(I only attach one particle to the group), then I have this output, which looks very smooth, actually.
   
   

On the other hand, this is not my target. I still need to pull a more sparse zone than this. So, if I keep the radius=0.01f then I have this output. And you can see that there are still sharp edges. I want the output above but for a smaller zone.
   
   

What else can I fix to get that result?

Thank you for your time and help.
Best,
Reply
#5
(19-10-2023, 03:02 AM)Fisixus Wrote: Hello again,
So, I tested the simulation with the values you suggested. And as you said before, I work with tiny numbers. If I keep the moveable zone radius=0.06f(I only attach one particle to the group), then I have this output, which looks very smooth, actually.
On the other hand, this is not my target. I still need to pull a more sparse zone than this. So, if I keep the radius=0.01f then I have this output. And you can see that there are still sharp edges. I want the output above but for a smaller zone.

Hi,

What do you mean by "moveable zone radius"? Is this "Skinning Max Distance" or some parameter of your own?

In the images it just looks like you need higher mesh density (more vertices per area unit), while keeping the same particle resolution.

kind regards,
Reply
#6
(19-10-2023, 06:32 AM)josemendez Wrote: Hi,

What do you mean by "moveable zone radius"? Is this "Skinning Max Distance" or some parameter of your own?

In the images it just looks like you need higher mesh density (more vertices per area unit), while keeping the same particle resolution.

kind regards,
It's the parameter I created. What I've meant is the same as your first picture. I don't limit the movement of particles in that radius. 
This object already has 112k vertices, I only use that for creating the blueprint, I am not showing that in the actual scene. So, I'll try with 224k and 448k also but FPS might be a concern from a certain point.
Unfortunately, I can't make any static adjustments, that's why I am not able to increase the number of vertices in a certain area. 
Best,
Reply
#7
aaaaa
Reply