Spine models in AMMRV1.2 and 1.3

Hi have you been thinking about how I can start with the programming for the batch runs.

For now is there a way to get a notification from AB once the bones or muscles are complete. Maybe a pop up on the computer, or a sound, or an email??? Is there a way to set this up, or to modify the code?

This way I can do other work and once the bones are complete and i get the notication I can start the muscles, and once the muscles are complete i can get the notification and start a new trail. this will save time in betweeen running the trails.
Sincerely thanks
Damon

Hi Damon,

Last message: there is a trick to include a post-operation into your analysis, which, in turn, will call an external application, e.g. a sound player/e-mail sending application.

It looks rather simple:


    InitialConditions.PostOperation = {
      AnyOperationShellExec soundoperation = 
      {
        FileName = "wmplayer";
        Arguments = " /play "+strquote("c:/work/sound.m4a");
        //Show = On;
        //Wait = On;
      };    
    };

So the code above will play a sound after completing the initial conditions - please adjust it to your situation.

Hope this helps. Do you still need help with the previous questions?

Best regards,
Pavel

P.S. I re-read the first part of your message :slight_smile: Have you tried to run something simple with, say, 2-3 studies and using AnyBodyCon.exe?

Hi Pavel
Thanks for the trick, looks like I need to figure somethings out to make it work with email.

The notification will make the processing more efficient, but I’d still like to set up the batching since I have so many trails to run.

I’ve been spending a tremendous amount of time trying to get the trails to work in AB. So once I get all the 744 trails working in AB, then I would feel better about spending some time to figure out the code for the batching.

Out of the 31 subjects I’ve only completed running 2 subjects. For these two subjects only about 15 out of 24 trails complete, the other 9 do not complete. I get different errors in AB. Is there a way I can send the C3D files over there to you all to get your feedback on what are causing the errors, and how I can mitigate this?

Hi Damon,

That’s a very time-demanding task for us to process your C3Ds, which we do not always have. The forum is generally intended to answer more specific questions.

Please have a look at the list of errors and short descriptions in the reference manual. It is also a good idea to search for similar problems on the forum or on the wiki (wiki.anyscript.org).

And regarding the batch processing: you need to start with a simple case (running 2 studies at once). If you can make 2 run by pressing a button - you will naturally run as many as you want. Let’s start from here.
Please re-read the tutorial that Amir suggested a while back - it should help.

Best regards,
Pavel

Pavel

I will process the C3D files and run them in AB. How about I can just post the error messages in this forum, and your experts can give me some advice if they know what to do?

Sincerely
Thanks Damon

Hi Damon,

Yes, of course - it is much easier to answer a well stated question :slight_smile: So feel free to post unclear messages that you cannot find on the forum or resolve yourself.

Best regards,
Pavel

Thanks Pavel
Should I start a new tread for problem solving, or is there existing threads I should post to that only talk about solving problems?

Sincerely
Damon

Hi Damon,

We would prefer that. This way other people who may have similar problem can find this solution. And at this point we are very far from the ‘spine models’. This way you may also find some answers yourself and save some time.

Kind regards,
Pavel

Pavel
Sounds good, I'll set up a new tread for each type of error, and if there is any other forum threads that apply I'll add in that link during the discussion.

I went to the wiki, and I only saw one page shown below for solving errors. Is this all that is in the wiki for solving errors?

Model trouble shooting

From AnyScript.org - Wiki

Jump to: navigation, search
Contents

[[hide](javascript:toggleToc())]
[ul]
[li]1 How-to display visually a reference frame[/li][li]2 Object already declared error[/li][li]3 Resolve kinematic problems[/li][li]4 Make the solution of the inverse problem stable?[/li][li]5 Resolve penetration errors[/li][/ul]How-to display visually a reference frame

When creating or modifying a model it is sometimes important to be able to visualize the locations of reference systems. The AnyDrawRefFrame object can be used for this.
To add a reference system to a node or a segment in the body model the following code can be used
[ol]
[li]First create a reference to the reference system, in this case a segment: AnySeg &MySeg = Main.Model.......MySeg;[/li][li]Then open up the reference and add the visualization coordinate system: MySeg ={ AnyDrawRefFrame drw={ScaleXYZ={1,1,1}*0.1;};};[/li][/ol]Alternatively skip item one and add the AnyDrawRefFrame directly in the segment or node itself.
If you do not remember the full name of the the object you can do two things:
[ol]
[li]double click on the object in the ModelView it will automatically open the ModelTree highlighting the object which was clicked. Then right click on the highligted object and select "Copy->Copy Complete Name" and paste in the name.[/li][li]open the ModelTree and expand it until you have found the object, then click "Copy->Copy Complete Name" and paste in the name.[/li][/ol]Object already declared error

This is a loading error, typically this occurs when you load a model and you have declared two times the same object in the same folder. To resolve the matter remove one of these objects or rename it. You can click on the links in the error message to locate the lines in the script.
Resolve kinematic problems

[ol]
[li]Make a sketch on how the model is driven and try to imagine what possibly could cause the problem.[/li][li]If the kinematic error occurs in step 0, try to improve the starting conditions[/li][li]Try to omit parts of the model like the arms or legs to detect where the root of the problem is located[/li][li]If the model contains closed chain kinematics, replace these closed chains with joint drivers on the human. With all the closed chain kinematics removed, the model should run kinematically[/li][li]Re-insert the closed chain constraints (in this case the marker drivers) one by one and remove joint drivers accordingly, making sure that a working model is maintained. This will make it easier to locate the problem.[/li][/ol]Make the solution of the inverse problem stable?

Sometimes it can cause troubles to resolve recruitment errors. In general recruitment errors can be caused by an inadequate muscles configuration or missing constraints, that leaves one or several dof. in the model unsupported. The way to resolve this kind of error is to introduce constraints to the joints until it becomes stable; this allows you to detect which dof. is causing the problem, and once this is detected you can address the right solution for it.
When using the 3 elements muscle model a common problem is to forget to run the calibration sequence. Remenber to select RunApplication in the operation tree to run the calibration.
Resolve penetration errors

Many muscles in the body are wrapped over bones and slide on the bony surfaces when the body moves. This means that the contact forces between the bone and the muscle are always perpendicular to the bone surface, and the muscle may in fact release the contact with the bone and resume the contact later depending on the movement of the body. Via point muscles are not capable of modeling this type of situation, so the AnyBody Modeling System has a special muscle object for this purpose.
A wrapping muscle is presumed to have an origin and an insertion just like the via point muscle. However, instead of interior via points it passes a set of surfaces. If the surfaces are blocking the way then the muscle finds the shortest geodesic path around the surface. Hence the name of the class: AnyShortestPathMuscle. The fact that the muscle always uses the shortest path means that it slides effortlessly on the surfaces, and hence there is no friction between the muscle and the surface.
Sometimes one or some of the points defining a muscle turn out to be located inside one of the surfaces that the muscle can wrap on. In general this should be avoided because a part of the muscle path will be located inside the surface and this part of the path becomes unpredictable.
The penetration errors can occur at different times:
[ol]
[li]They may happen at load time when the model is in its initial position. If they only occur in this position they are not important. It just means the initial posture creates penetration.[/li][li]They may occur when running inverse analysis of the model. This can be important.[/li][/ol]There can be different reasons for this, including:
[ol]
[li]If for example the arm is penetrating the thorax this may give a penetration warning. This is not an error related to the Body model but related to the way the model is being used. Here the remedy is to change the drivers of the model.[/li][li]In principle all surfaces in the model used for wrapping have been made in a way that makes them scale with the model. When defining a cylinder it is typically defined using three nodes. These nodes control the size and location of the cylinder. When the bone is scaled, these control nodes will also be scaled like any other node on the bone and consequently the cylinder will be scaled too. Ellipsoids are made in a similar way. This setup does not guarantee that penetration errors will never occur. If the via point and the surface are located on the same bone and are very close, different types of scaling and sizes could potentially create penetration errors.[/li][/ol]In general the remedy is to
[ol]
[li]Exclude all muscles from the model except the one causing the problem.[/li][li]Insert an AnyDrawParamSurface in the surface being penetrated to visualize it you can do this directly in the muscle. Typically by writing Surf1={ AnyDrawParamSurf drw={}; }; //assuming a Surf1 reference is existing![/li][li]Insert an AnyDrawRefFrame in the node which is penetrating.[/li][li]Try to understand the root of the problem, whether it is related to scaling or motion.[/li][li]Do modifications on either model or motion to solve the problem[/li][/ol]

Hi Damon,

Well, it’s probably not very well structured, but you may want to read other topics too. For example, MoCap models - also contains some information about possible errors that may occur in your case.

Regards,
Pavel

Pavel
Do you think there are any webcast that deal with errors? If not maybe when I get done with this effort I could present a webcase on errors?

Second question, Im wondering if a super computer to run AB software would incresase the speed. Do you know if there is a cut off where no matter how much computing power there is the procesing can only go so fast?

Sincerely
Thanks

Hi Damon,

Probably there is no need for that. This forum is a plentiful source of various error discussions and their solutions. I would with very high level of probability guess that whatever you come up with or a major part of it will be well covered in some of the threads here, as well as by wiki-pages/tutorials/ref. manual/etc. But I will pass your suggestion for discussion to my colleagues.

Speaking of existing threads: at some point one of the users suggested ready solutions for automating and running AnyBody in multiple threads, which may speed up your particular problem solving.
check here

Supercomputer: AnyBody does not support parallel computing (yet?) + AnyBody is not available on Unix-based platforms.

Pavel

Hi Pavel
I think your saying that If i can get parallel computing to work with AnyBody then I could imporve the processing speed?

Im going to put the batch runnin on hold for now, and would like to get back to figuring out how to get external kinetic forces for L5/S1, the 3D forces without muscles acting on that joint. When I asked about this previously, the solution was to turn off the muscles.

Below is the BodayPartsSetup File. Can you please get me started on what I need to do to turn off the muscles.

[SIZE=3]// Trunk: 1 included, 0 not included
// *********************************
[/SIZE][SIZE=3]#define[/SIZE] TRUNK 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_SIMPLE_MUSCLES 0
[SIZE=3]// Additional stiffness in the lumbar joints can be added.
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_DISC_STIFFNESS_NORMAL 0

[SIZE=3]// Trunk with neck: 1 included, 0 not included
// *********************************
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] TRUNK_NECK_SIMPLE_MUSCLES_ONLY_ON_NECK 0
[SIZE=3]// Additional stiffness in the lumbar joints can be added.
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK_DISC_STIFFNESS_NORMAL 0

[SIZE=3]// RightArm: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_ARM 1
[SIZE=3]//This is the basic model, following additions available
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_DETAILLED_HAND 0
[SIZE=3]#define[/SIZE] RIGHT_SHOULDER_RHYTHM 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_ARM_SIMPLE_MUSCLE 0
[SIZE=3]#define[/SIZE] RIGHT_ARM_SIMPLE_MUSCLE_ONLY_ON_NECK 0
[SIZE=3]#define[/SIZE] RIGHT_ARM_MUS_3E 0

[SIZE=3]// LeftArm: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_ARM 1
[SIZE=3]//This is the basic model, following additions available
[/SIZE][SIZE=3]#define[/SIZE] LEFT_DETAILLED_HAND 0
[SIZE=3]#define[/SIZE] LEFT_SHOULDER_RHYTHM 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_ARM_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] LEFT_ARM_SIMPLE_MUSCLES_ONLY_ON_NECK 0
[SIZE=3]#define[/SIZE] LEFT_ARM_MUS_3E 0

[SIZE=3]// RightLeg: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] RIGHT_LEG_MUS_3E 0

[SIZE=3]// LeftLeg: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] LEFT_LEG_MUS_3E 0

[SIZE=3]// RightLegTD: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_TD 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_TD_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] RIGHT_LEG_TD_MUS_3E 0

[SIZE=3]// LeftLegTD: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_TD 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_TD_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] LEFT_LEG_TD_MUS_3E 0

Sincerely thanks
Damon

Hi Pavel
I found some good information in MoCap. Below is the words from the wiki, and then I had some questions for each.

"The kinematic can also fail later during the motion. That can be due to a marker dropping, and thus distorting the motion of a limb. Solutions include lowering the constant weight of the marker, using a custom weight function that will be zero when the marker drops or simply deleting the marker (if there are enough remaining to drive the model). "

Pavel, for this in quotes from MoCap. In this case is dropping mean the markers jitters. If so I have some markers that do this, and am spending lots of time cleaning up those markers by removing the marke jump. So if dropping is jittering, can you please help me with an idea for a "custome weight function", and where that function would go? I'm pretty sure it goes where the weight is associated with the marker.

The failing can also come from a bad initial guess of the segment length. For example a too short limb may be stretched by the marker’s motion and may lead to a kinematic error in the joints. To cure this you can make the corresponding segments a bit longer in the TrialSpecificData.any file.

Pavel, I'm trying estimating the segment lengths from Vicon, and in the first trail it seams to be speading up the processing.

Sincerely thanks
Damon

Hi Damon,

As mentioned before the webcast is not needed. This is not the best format to seek for the solutions to errors. We would rather have a list of errors and solutions in a table. That could be beneficial for all. But please keep in mind that this forum and our wikipage already contain the majority if not all the problems/solutions that you will come up with. So it may mean repeating the work again. However, it would definitely be nice to have it in a list for easier navigation.

Super computer's speed of calculation comes from parallelizing the job to be processed by many processors. AB does not support parallel computation (yet). You can run several instances of AB on each node of your HPC to solve several problems at once. That will give you some speed, but note that each node on its own is typically slower than a desktop computer or somewhat similar. Plus on top of everything AB cannot be run in Linux - you would need to use emulators like Wine.

I would recommend to ask the technicians on what can be achieved and what are the best options for running a Windows application without support of parallelization.

In one of my previous messages I recommended you a Matlab script that one of our users shared for running multiple AB instances.

In this particular BodyPartsSetup.any I do not see any muscles switched on.

My colleague will answer your question regarding the weight function.

Best regards,
Pavel

Pavel
For the muscles, I think I have picked the wrong file. There are two bodypart files, BodyPartsSetup, and BodyPartsSetup2. Below, BodyPartsSetup has some muscles ON and some OFF. Hmm, now i'm wondering if all these muscles should be ON for measuring the combined internal/external kinetic forces at L5/S1?

[SIZE=3]// Trunk: 1 included, 0 not included
// *********************************
[/SIZE][SIZE=3]#define[/SIZE] TRUNK 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_SIMPLE_MUSCLES 1
[SIZE=3]// Additional stiffness in the lumbar joints can be added.
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_DISC_STIFFNESS_NORMAL 0

[SIZE=3]// Trunk with neck: 1 included, 0 not included
// *********************************
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] TRUNK_NECK_SIMPLE_MUSCLES_ONLY_ON_NECK 0
[SIZE=3]// Additional stiffness in the lumbar joints can be added.
[/SIZE][SIZE=3]#define[/SIZE] TRUNK_NECK_DISC_STIFFNESS_NORMAL 0

[SIZE=3]// RightArm: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_ARM 1
[SIZE=3]//This is the basic model, following additions available
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_DETAILLED_HAND 0
[SIZE=3]#define[/SIZE] RIGHT_SHOULDER_RHYTHM 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_ARM_SIMPLE_MUSCLE 1
[SIZE=3]#define[/SIZE] RIGHT_ARM_SIMPLE_MUSCLE_ONLY_ON_NECK 0
[SIZE=3]#define[/SIZE] RIGHT_ARM_MUS_3E 0

[SIZE=3]// LeftArm: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_ARM 1
[SIZE=3]//This is the basic model, following additions available
[/SIZE][SIZE=3]#define[/SIZE] LEFT_DETAILLED_HAND 0
[SIZE=3]#define[/SIZE] LEFT_SHOULDER_RHYTHM 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_ARM_SIMPLE_MUSCLES 1
[SIZE=3]#define[/SIZE] LEFT_ARM_SIMPLE_MUSCLES_ONLY_ON_NECK 0
[SIZE=3]#define[/SIZE] LEFT_ARM_MUS_3E 0

[SIZE=3]// RightLeg: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] RIGHT_LEG_MUS_3E 0

[SIZE=3]// LeftLeg: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG 0
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_SIMPLE_MUSCLES 0
[SIZE=3]#define[/SIZE] LEFT_LEG_MUS_3E 0

[SIZE=3]// RightLegTD: 1 included, 0 not included
// ************************************
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_TD 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] RIGHT_LEG_TD_SIMPLE_MUSCLES 1
[SIZE=3]#define[/SIZE] RIGHT_LEG_TD_MUS_3E 0

[SIZE=3]// LeftLegTD: 1 included, 0 not included
// ***********************************
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_TD 1
[SIZE=3]// This is just the bones,
// Choose one of the following options to add muscles
[/SIZE][SIZE=3]#define[/SIZE] LEFT_LEG_TD_SIMPLE_MUSCLES 1
[SIZE=3]#define[/SIZE] LEFT_LEG_TD_MUS_3E 0

Damon, could you please elaborate on what you are trying to achieve? “how to get external kinetic forces for L5/S1”? You at some point tried to compare the model with and without muscles - this can be done by modifying the BodyPartsSetup.any, but your last questions may mean something else.

Thanks,
Pavel

Hi Pavel
There are two aspects to the research I’m doing.

A) Running the experiments to obtain the L5/S1 forces to do ergonomic analysis of the different lifts in the experiments. This is the forces due to the body parts and muscles pulling on the joints.
So my previous question is that some muscles appear to be OFF. I see the muscles in the “Model View”, but possibly being that the programming has them OFF they are not ON for optimization of the muscles, and thus the muscles for those associated joints are not adding to the force values at those joints. Maybe this is ok, since possibley I only need to have ON the trunk muscles to obtain the L5/S1, and if this is the case I could save processing time by turning OFF the other muscles. BUT, i need certainty that only using the trunk muscles will give me the same value for L5/S1, as if I had all the muscles ON. So i’m asking.
i) Because it appears that some muscles are OFF, do i need to change the current programming to ensure I get the correct L5/S1 forces.
ii) If I only have the trunk muscles on, will i get the same L5/S1 values as if all the muscles are ON.

B) The other portion of the research is to compare the L5/S1 forces without muscles, with a Vicon BodyBuilder model that does not have muscles. So this is just the mass of the external body parts that cause the forces at the joints. No muscles pulling on the joints. So this is why I am asking how to turn off the AB muscles, and then get the L5/S1 external forces.

Hope this helps
Sincerely thanks
Damon

Damon,

I’ll start with B) - Just switch all of them to be OFF. Like you have in another file.

A) What you need to have is all muscles that can contribute to the particular joint reaction force. It also on how the subject performs these lifts: are there antagonistic muscles in adjacent segments that are involved into the stabilization tasks? They may redistribute the loads a little.

An oversimplified example: if you look at the elbow joint reaction force while lifting a cup leaning on a chair’s back - you would definitely not need to have the leg muscles.

I cant give a definite answer because I don’t know whether leg muscles may contribute or not. I guess you can try to run 2 inverse dynamics with both configurations and see whether there is a difference or not. But what is most likely not needed in this file - the arm muscles. But you can also easily check that.

So short: try trunk muscles, trunk + legs, trunk + arms on a single person and see whether there is a difference. I anticipate either no difference at all or just the trunk+legs configuration will be different.

Hope this helps,
Pavel

Pavel
Yes that helps. Can you please help me understand the current code better.

[LEFT][LEFT]¡ Starting with the legs. [/LEFT]
[LEFT]o It appears that for “RIGHT_LEG_TD_SIMPLE_MUSCLES 1” is ON, but “RIGHT_LEG_TD_MUS_3E 0” is OFF. [/LEFT]
[LEFT]§ Is “RIGHT_LEG_TD_MUS_3E 0” a subset of “RIGHT_LEG_TD_SIMPLE_MUSCLES 1” and therefore does not need to be ON. [/LEFT]
[LEFT]o It appears that “RIGHT_LEG_SIMPLE_MUSCLES 0” is OFF, and “RIGHT_LEG_MUS_3E 0” is also OFF. [/LEFT]
[LEFT]§ What is the difference between “RIGHT_LEG_SIMPLE_MUSCLES”, and “RIGHT_LEG_TD_SIMPLE_MUSCLES”? [/LEFT]
[LEFT]§ And since “RIGHT_LEG_TD_SIMPLE_MUSCLES” is ON [/LEFT]
[LEFT]· is it ok for “RIGHT_LEG_SIMPLE_MUSCLES to be OFF? [/LEFT]
[LEFT]¡ Or should both be ON, so no muscles are left out?[/LEFT]
[LEFT] [/LEFT]
[LEFT]· For the Arms. I think the two that are OFF are a subset of the “RIGHT_ARM_SIMPLE_MUSCLE” that is ON?[/LEFT]
[LEFT]o #define RIGHT_ARM_SIMPLE_MUSCLE 1
#define RIGHT_ARM_SIMPLE_MUSCLE_ONLY_ON_NECK 0
#define RIGHT_ARM_MUS_3E 0[/LEFT]
[LEFT] [/LEFT]
[LEFT]¡ For the Trunk.[/LEFT]
[LEFT]o #define TRUNK_SIMPLE_MUSCLES 1, is only the trunk is ON?[/LEFT]
[LEFT]¡ For Trunk with Neck.[/LEFT]
[LEFT]o #define TRUNK_NECK_SIMPLE_MUSCLES 0, if this was ON, should “TRUNK_SIMPLE_MUSCLES” be OFF?[/LEFT]
[LEFT]o Don’t think I need to consider the Neck muscles for lifting, but should the neck bones be ON because the angle of the head would affect weight distribution, or is this external kinetics covered in another section of the code?[/LEFT][/LEFT]

Sincerely thanks
Damon