Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Does Obi Softbody fit for a realistic snowboard physics simulation?
#1
Hello,

I’m new to Unity and Obi Softbody, although I have a strong background in C#. I want to create a realistic simulator of snowboard behavior (so that it bends and deforms correctly under the rider’s weight, and so that it starts moving based on gravity/friction/inertia/reaction forces). Is this package suitable for that kind of implementation?
I’ve already experimented a bit with Obi Softbody. I created a blueprint with:
  • Surface Sampling Mode: Voxels, Resolution: 16
  • Volume Sampling: None
From reading the forum, I understood that stiffness depends on the Substeps setting in the solver. When I set Substeps to 3, the snowboard behaved like extremely elastic, highly flexible rubber (FPS was around 240). When I set Substeps to 60, it became stiffer, but FPS immediately dropped to about 140. At Substeps = 120, the board behaved even more rigidly, but FPS fell to 40.
Also, the snowboard bounces off objects very strongly, and when it lands, it slides excessively across them. I also noticed that if the number of solver steps is too low, the snowboard often just hangs in midair.

So:
  1. Is this package suitable for the task?
  2. If yes, what should be changed to keep performance high, make sliding realistic, and prevent it from bouncing like a super-bouncy rubber ball?
Here is a video demonstration with 32 Substeps in the solver:
https://www.youtube.com/watch?v=AOgJ0Ki7G9Y

Sincerely,
nithrous
Reply
#2
(02-06-2025, 08:05 PM)nithrous Wrote: Hello,

I’m new to Unity and Obi Softbody, although I have a strong background in C#. I want to create a realistic simulator of snowboard behavior (so that it bends and deforms correctly under the rider’s weight, and so that it starts moving based on gravity/friction/inertia/reaction forces). Is this package suitable for that kind of implementation?

Hi,

I'm not entirely familiar with how snowboards behave, but intuition tells me they're pretty rigid, behaving much closer to a rigidbody than to a softbody.

If that's the case, Obi is not really a good choice. The reason is it's both a particle based and an iterative engine: sampling a thin, flat object like a snowboard using particles will require many small particles, and many small particles will require an inordinate amount of iterations and/or substeps to behave like a rigidbody.

I would just use a few rigidbodies linked together by joints instead. Let me know if you need a refund for this reason.

kind regards,
Reply
#3
(03-06-2025, 06:29 AM)josemendez Wrote: Hi,

I'm not entirely familiar with how snowboards behave, but intuition tells me they're pretty rigid, behaving much closer to a rigidbody than to a softbody.

If that's the case, Obi is not really a good choice. The reason is it's both a particle based and an iterative engine: sampling a thin, flat object like a snowboard using particles will require many small particles, and many small particles will require an inordinate amount of iterations and/or substeps to behave like a rigidbody.

I would just use a few rigidbodies linked together by joints instead. Let me know if you need a refund for this reason.

kind regards,

Thank you for the response,
I’ve attached how the snowboard deforms just in case. The 3D image shows the deformation during a drifting turn. No refund is needed—you did an excellent job, and I don’t mind contributing even if I won’t be using it.
I believe that in this case one of two approaches would be more suitable:
  1. Split the snowboard into several parts and connect them with joints
  2. Use a rig + mesh collider with its baking

Best regards,
Alex


Attached Files Thumbnail(s)
       
Reply
#4
(03-06-2025, 11:08 AM)nithrous Wrote: Thank you for the response,
I’ve attached how the snowboard deforms just in case. The 3D image shows the deformation during a drifting turn. No refund is needed—you did an excellent job, and I don’t mind contributing even if I won’t be using it.
I believe that in this case one of two approaches would be more suitable:
  1. Split the snowboard into several parts and connect them with joints
  2. Use a rig + mesh collider with its baking

Best regards,
Alex

Hi Alex,

First thing I would try is to rig the snowboard mesh using 3 bones, like so (excuse poor ASCII art):
  ___________________
/                                  \
(    O-------O-------O      )
\___________________/

Such a setup allows the left and rightmost bones to rotate/translate and smoothly deform the snowboard.

Now, create 3 rigidbodies: for the left, center and right part of the snowboard and attach them with joints. Which specific joint type to use would depend on the amount of control you want, hinge joints would work well enough imho.

Then just parent the 3 bones in the rigged snowboard mesh to their corresponding rigidbody, so that the mesh follows the rigidbodies.

If you've ever played Half-Life 2, the mattresses were done using this method. It's a lot cheaper than an actual softbody simulation, and for somewhat rigid objects it works better and it's more controllable:


An alternate, even cheaper approach would be to procedurally deform the mesh - either using blend shapes or a vertex shader. If you can detect turns and player weight on the floor, you can use this information to drive vertex deformation.

kind regards,
Reply