1
$\begingroup$

enter image description here

Blender Version 3.2.0 (3.2.0 2022-06-08)

I have created a conveyor belt for a piece of complex machinery that I am animating.

I am using this tutorial as my base concept.

It is partially working as my object rides across the conveyor belt OK, but I am having 2 issues.

  1. My conveyor belt is straight for a few meters and then slightly angles upward and then straightens back out again. My object will ride on top of the belt until it reaches the angle at which point it just continues through the belt rather than slanting upward with the surface of the belt.

  2. Once my object reaches the end of the belt it just continues to go straight as if gravity doesn't exist rather than falling off the belt.

See video

Blend file

This "Simulation" will eventually take the object from one belt, to the next, to a third belt. I am simulating baked items going down a piece of equipment called a grouper and so I'll be changing RPMs of each belt to space out the product in the end.

This is just the very first belt in a bigger machine.

$\endgroup$
1
  • $\begingroup$ Hello and welcome. While files, images, and external videos or links may be helpful additions they should not be the only way to obtain information about your issue. Don't make understanding your question rely on downloading a file, watching a video or visiting an external site. Use the builtin tools to upload images or gifs, along with thoroughly explaining the problem in written form so it can be indexed and searched for thus helping future visitors with similar issues. $\endgroup$ Jun 16, 2022 at 22:04

1 Answer 1

0
$\begingroup$

Blender doesn't seem to support deformations interacting with rigidbodies, or at least not very well.

There's a workaround, but it's in no way close to perfect. To use it, you will lose performance and accuracy of the simulation.

In this workaround a handler will be registered to run before each frame, it's action is setting the source of the conveyor's rigidbody to Final. This will cause an update on the mesh being used for the simulation.

import bpy

handler = bpy.app.handlers.frame_change_pre

def fixRB(scene):
    ob = bpy.data.objects.get("Belt One Animation")
    ob.rigid_body.mesh_source = 'FINAL'
    ob.rigid_body.collision_shape = 'MESH'

def register():
    handler.append(fixRB)

def unregister():
    for h in handler:
        if h.__name__ == 'fixRB':
            handler.remove(h)
            print("handler removed")
    
register()

Now there's another problem, the object colliding with the conveyor will jump when touching angled surfaces:

enter image description here

To solve this, you will need to lose collision quality by setting the substeps of the simulation to a very low value:

enter image description here

Here's the result when using $5$ as Substeps Per Frame:

enter image description here

When rendering, you will need to disable the curve modifier in the viewport for the first two frames. Blender will crash if it's enabled or disabled all the time.

enter image description here enter image description here

There's also the option to bake the rigidbody and unregister the handler before rendering, that way you won't need to disable the curve modifier on viewport since blender won't crash.

$\endgroup$
1
  • $\begingroup$ This may solve my issues. Thank you! $\endgroup$
    – andyteel
    Jun 18, 2022 at 1:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .