Breaking ragdoll constraints in H17.5

   5326   15   2
User Avatar
Member
18 posts
Joined: Nov. 2015
Offline
Hello

So i have a crowd system setup with my ragdoll setup and working. I am now trying to break the contraints.
Im familiar with breaking constraints using the sopsolver in dops but i cant seem to get it working with my rogdoll.

This is the part in the manual i am stuck at ….

“The ragdoll_constraints node has a modify_ragdoll_constraints SOP Solver network attached that you can use to modify the constraints as part of the simulation. This is where you can delete constraint lines to detach limbs.”

I took this as i should just connect my sopsolver to the 3rd input on the ragdoll_internal_constraints node in my crowd sim, i then get the warnings . . .

“ Unexpected subdata found: sopsolver1_ragdoll_internal_constraints_constraint_geo_4.” (on the constraint network)
and


“Warning
crowdobject - /obj/crowd_sim/sopsolver1: This data is attached to an unexpected parent data.” (On the sop solver)



Maybe im misssing where this “ modify_ragdoll_constraints SOP Solver network ” is mentioned in the manual.

Attachments:
Selection_015.png (24.4 KB)

User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
Those docs are a bit out of date - they'll be fixed for tomorrow's build.
The shelf tool now sets up different parameters on the Constraint Network DOP, so that the constraints are attached to the ConstraintGeometry subdata of the crowd object instead of creating a DOP Relationship. This means that you can just wire the SOP solver or wrangle into the main multisolver, and then change the Data Name parameter from Geometry to ConstraintGeometry to operate on the crowd object's constraints
User Avatar
Member
32 posts
Joined: Sept. 2013
Offline
cwhite
Those docs are a bit out of date - they'll be fixed for tomorrow's build.
The shelf tool now sets up different parameters on the Constraint Network DOP, so that the constraints are attached to the ConstraintGeometry subdata of the crowd object instead of creating a DOP Relationship. This means that you can just wire the SOP solver or wrangle into the main multisolver, and then change the Data Name parameter from Geometry to ConstraintGeometry to operate on the crowd object's constraints


Works for me thanks cwhite,between I am not able to find the angle attribute in my constraint network.Can you help?
User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
It may not appear until after the initial frame, since it's added by the Bullet solver at the end of the timestep. It should be a primitive attribute on the ConstraintGeometry subdata
User Avatar
Member
18 posts
Joined: Nov. 2015
Offline
Hi

Thanx for the quick reply !

I hope im on the right track

I placed a geometry wrangle into the multi solver and changed the Data Name parameter .
In my wrangle i put….

if (f@torque > 1000000)
{
@group_broken = 1;}



Now my constraints appear to be breaking .

Thnx
User Avatar
Member
32 posts
Joined: Sept. 2013
Offline
cwhite
It may not appear until after the initial frame, since it's added by the Bullet solver at the end of the timestep. It should be a primitive attribute on the ConstraintGeometry subdata


My scene is simulated and I have the crowd on my view port. Please have a look at the attached image ,angle attribute doesn't seem to be in the primitive attributes list.Dont know where I am going wrong



PS: can`t find force and torque attributes either.
Edited by MarXindia - July 30, 2019 08:31:02

Attachments:
constraint_PrimitiveAttributes_list.JPG (260.1 KB)

User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
Hard to guess without the scene file, but perhaps the Bullet solver hasn't run yet (e.g. no agents are active ragdolls or animated static objects)
User Avatar
Member
32 posts
Joined: Sept. 2013
Offline
cwhite
Hard to guess without the scene file, but perhaps the Bullet solver hasn't run yet (e.g. no agents are active ragdolls or animated static objects)


got it!! Thanks
User Avatar
Member
28 posts
Joined: Jan. 2010
Offline
Looking at this last post - from 2015 - I am getting exact same issue now in Houdini 18.0 and wondering how i can sop solve breaking constraints. I manage to load the constraints inside my sopsolver from the Dops path, correctly. However setting groups to broken, or simply blasting the primitives away has no effect at all…. not what i expect.
I should say the crowd agents do turn to ragdoll and work fine. But why do the constraints not get deleted?
Anyone can explain why this does not work - is there a hidden trick to this for the case of crowds, over usual bullet rbd.
User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
Is your SOP solver operating on the crowd object's ConstraintGeometry subdata? (https://www.sidefx.com/forum/topic/68172/?page=1#post-289807)
User Avatar
Member
28 posts
Joined: Jan. 2010
Offline
Hi - thanks for replying.
I am referencing this subdata, yes. I have tried several possibly ways to make a difference but nothing works.

I attach a hip file that demonstrates the issue. Its very simple

my constraints are referenced like this: in the sop solver

/obj/crowd_sim:crowdobject/ConstraintGeometry
Image Not Found

Attachments:
very_simple_crowd_2.hip (893.7 KB)

User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
The SOP solver should be wired into the normal multisolver (same as the crowd / Bullet solver) since the constraint geometry is attached to the DOP object and can be modified while solving the object (see attached file)

The third input on the Constraint Network DOP is only used when there is a constraint relationship between multiple DOP objects, and adds warnings to the node otherwise.

Attachments:
very_simple_crowd_2.fix.hip (897.3 KB)

User Avatar
Member
28 posts
Joined: Jan. 2010
Offline
Thanks- that is now clear. As i progress i realise crowds are not so similar to rbd.
My main task was to create procedural contraints, which i have working in my rbd version hip file.
i managed to create new poly lines with the joint name attribute on the point, and the name attribute of the outside object i am referencing. It does not carry through to outside the sopsolver.
So i tried to copy also the anchor_point and then also the primitive name attribute, which is the name of the agent to no result.
Could there be an example of how to do this via sopsolver? I have seen a demo of how to create constraints in sops prior to entering the dopnetwork, so i am missing something else again, which is probably obvious to you, but not to myself being unfamiliar with crowds.
User Avatar
Staff
727 posts
Joined: Oct. 2012
Offline
Do you have an example file of your current progress? There is a helpcard example (“PinnedRagdolls”) in the documentation that creates constraints between an agent's joint and an external object, which should be fairly similar.

There aren't too many differences with how agent constraints work - the main difference is that they use a different anchor type (https://www.sidefx.com/docs/houdini18.0/nodes/dop/constraintnetwork#anchortypes) to allow attaching at an offset from a joint.
Edited by cwhite - Nov. 3, 2020 13:30:42
User Avatar
Member
28 posts
Joined: Jan. 2010
Offline
Thanks - I will take a look at the example and get back to you with a reply.
User Avatar
Member
28 posts
Joined: Jan. 2010
Offline
Hello - Im returning to this issue after a long break. I still cannot find any way to allow the restlength of the new constraint to update. I am creating some walking agents, and at the moment they switch to ragdoll state i want the new restlength to be saved , and fixed, so that the agents will not snap. I feel I have run out of new ideas on how to make this work.
  • Quick Links