Remove an object from the environment at a given frame

I'm working on a model throwing a ball using MoCap data.
I added a ball in the environment and attached it on the palm.
However I do not have markers on the ball, hence the ball is on the hand throughout the analysis.
I know the release point (frame). How can I remove the ball from the hand at a given frame (Or at least remove the weight of the ball after the given frame) ?

Thank you in advance!


Hi Niroshan,

One way would be to use AnyMuscleModelUsr1 and AnyGeneralMuscles.

You would have one set of artificial muscles(AnyGeneralMuscles) to carry between hand and ball until a certain point, then another set of muscles between ball and global to take over the load.

You would have to use define AnyGeneralMuscles on each of the six DOF (3 linear and 3 rotational ) and two muscles on each DOF a push and a pull (ForceDirection controls this).

Best regards

Hi Søren,

Thank you very much for your prompt reply.
Sorry I did not introduce myself properly in the previous post.
I'm currently pursuing a doctoral course at the Biomechanics lab in the University of Miyazaki, Japan.

I'm still in the process of learning Anybody modeling system and the approach you have suggested is little bit complex for me. Will you be able to share a simple example such as drop a ball in free fall or similar scenario.
That would be really helpful for me to move on to the next step.

Thank you in advance!

Best regards,

Hi @MZ_biomech8833

The task is quite complex even for simple examples.
The idea is that you create artificial muscles between the hand and ball to enable contact when the ball is in the hand. This requires artificial muscles for all 6 DOF in both the push and pull direction = 12 muscles.
These muscles must use an instance of the AnyMuscleModelUsr1 which can define the strength of the muscle model as a function. This function you define so that the muscles have strength when the ball is in contact with the hand and no strength when the ball is released.

Addtionally you create the same elements for when the ball is out of the hand. Here you define the artificial muscles between the ball and the global coordiante system. Again with 12 muscles and a AnyMuscleModelUsr1 with the opposite strength function. This one should be 0 when the ball is in the hand and high when the ball is not carried by the hand.

To better understand these elements and how it looks. Here is a link to a example model.

This one simulates a dumbbell curl where the dumbbell is removed midway through the simulation.
The strength functions here are time dependent but can also rely on other measures.
Look at the elements in the Environment and EnvironmentConnection folders to see what you must add to your model.

Best regards,

Dear Bjorn,

Thank you very much for sharing the example model.

I could able to use the example to change my model accordingly.

I have one question about the strength value in AnyMuscleModelUsr1.

S = .StrengthFunction.Data[...ArmModelStudy.iStep][...ArmModelStudy.iStep] * 1000;

Why is it multiplied by 1000?
Sorry if this is a basic parameter I should know when using AnyMuscleModelUsr1.

Thank you!

Best regards,

Hi @MZ_biomech8833

No problem, I see it is not totally clear what the 1000 does.
Essentially it is the strength of the muscle. The .StrengthFunction.Data array is an array of 0 and 1. But the AnyMuscleModelUsr1.S takes a strength in newtons so we multiply whatever comes from the strength function with 1000 to get a strong muscle. So the muscle model either outputs 0N or 1000N.

You could change this to be anything you want. a constant, derived measure of something like the joint angle or almost anything you can think of.

Best regards,

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.