Remove collision property on just part of a mesh [vellum]

   18507   15   3
User Avatar
Member
350 posts
Joined: June 2016
Offline
Is there some way to remove collision on just part of a mesh?
I was thinking possibly some combination of vex and custom attributes or..?
User Avatar
Member
8784 posts
Joined: July 2007
Offline
you can use following point attributes on your vellum geometry to control collisions per point
i@disableself = 1; // to disable self collisions 
i@disableexternal = 1; // to disable collisions with external objects
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
350 posts
Joined: June 2016
Offline
Awesome. Pretty sure this will work. Thanks!
User Avatar
Member
44 posts
Joined:
Offline
tamte
you can use following point attributes on your vellum geometry to control collisions per point
i@disableself = 1; // to disable self collisions 
i@disableexternal = 1; // to disable collisions with external objects


Is there a way to do it per object ? I would like to disable it on one object but not the other.

Cheers !
User Avatar
Member
8784 posts
Joined: July 2007
Offline
if you are talking about colliders then you can also assign i@disableexternal to individual colliders

or use collision groups

https://www.sidefx.com/docs/houdini/vellum/vellumattributes.html [www.sidefx.com]
https://www.sidefx.com/docs/houdini/vellum/collisions.html [www.sidefx.com]
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
28 posts
Joined: May 2020
Offline
Sorry for reopening this thread, but I am having a very similar issue.
In my case, I have an alembic cached character, with separate vellum clothing.
In order to govern the way that each clothing piece responds to vellum collision, I have created separate vellum attachment nodes with different properties, which works ALMOST perfectly. The only problem I am having is that at some point during the animation, the mesh of the feet of the character almost interpenetrate, causing the clothing of the pants to get caught.

I figured I could resolve the issue by creating groups of points for each character's leg, and each of the pants leg as well, and then use a property wrangle to ignore collision between the right character leg and the left character pants, and viceversa.

This seems to have absolutely no effect, and I have tried everything, even setting multiple wrangles for each property, as per screenshot.
The scene is way too big to upload together with the alembic meshes, so I hope the screenshot is sufficient at least for a rough determination of what I might be doing wrong. Any help is appreciated!

- Fabio
Edited by fabiobasile - Sept. 12, 2020 22:56:56

Attachments:
Capture.JPG (254.3 KB)

Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
8784 posts
Joined: July 2007
Offline
screenshot is not enough, but just to guess
since you are trying to ignore “pants_leg_right” do the points you hope to be ignored have s@collisiongroup = “pants_leg_right”; ?
or are you assuming it would ignore the grometry group “pants_leg_right” that I see you have

s@collisionignore is only matched against s@collisiongroup , not the grometry point groups
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
28 posts
Joined: May 2020
Offline
Being very new to VEX and how to use property wrangles, I am not quite sure. I assumed that the property collisiongroup and collisionignore with “pants_leg_right” (the name of the group to which it belongs), would call that group and set it to ignore collision with leg_left, but it's just me kinda hitting levers and pushing buttons since i couldn't find a lot of sample code to play with that would apply to this situation.

So let's say I have these groups of primitive setup, how would i go about setting them up to ignore collision using a wrangle?
Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
8784 posts
Joined: July 2007
Offline
in that case I'd advise to start with the example
on yor Vellum Solver SOP RMB/Examples/CollisionIgnore

they are using Attribute Expression instead of wrangle, which is not important, the important is understanding how s@collisionignore and s@collisiongroup attributes are used by vellum, which together with the help links above should clear things up a bit
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
28 posts
Joined: May 2020
Offline
Thanks, i have spent a bit of time going through the example here: https://www.sidefx.com/docs/houdini/examples/nodes/sop/vellumsolver/CollisionIgnore.html [www.sidefx.com]
and i have replaced the wrangles with attribute expressions like in the examples. I have specified the name of the nodes of the collision groups i want to use in the form of a string in VEX expression, and typed the property collisiongroup in the name field.

For some reason it still has no effect as all, as if the attribute expression node isn't even there. I'm not sure what i am missing…

Attachments:
Capture.JPG (259.2 KB)

Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
8784 posts
Joined: July 2007
Offline
where is your s@collisionignore = "leg_right";? I don't see any wrangle or attrib expression on your cloth stream
Edited by tamte - Sept. 13, 2020 00:45:48
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
28 posts
Joined: May 2020
Offline
Oops, i just added a second attribute to the node, so the same attribute expression has both the collisiongroup and collisionignore, but still no dice… should i create separate attribute expression nodes for each collision attribute?

Attachments:
Capture.JPG (266.8 KB)

Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
8784 posts
Joined: July 2007
Offline
you are still defining it only on collider geo, not on the cloth geo
I'd suggest you to study the example and understand what s going on and what are the attributes assigned to

or post simplified example of your exact issue
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
28 posts
Joined: May 2020
Offline
I haven't tested this on my actual scene, but i did manage to accomplish the same effect on this smaller test scene i reverse engineered from one of the samples.

I have created four groups:

1. left half of torus
2. right half of torus
3. left half of plane
4. right half of plane

Next i have set collision groups for the two halves of the torus, and the plane respectively.
Finally, i have setup collisionignore expression nodes pointing at the name of the groups.

The result is that only one half of the torus, and one half of the plane are affected by collision, leaving the other halves unaffected.

That took me way too long to figure out… lol

Attachments:
test.hiplc (560.5 KB)

Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
28 posts
Joined: May 2020
Offline
Update: apparently, adding the Vellum IO node will interfere with group-based collisions by wrangle or property expression, at least when collision groups are defined within the same mesh (i.e. the sleeves of a jacket).
Fabio Basile - 3D Artist

https://www.behance.net/fabiobasile [www.behance.net]
User Avatar
Member
2 posts
Joined: Sept. 2018
Offline
You can have a look this file.

Attachments:
test.hiplc (543.4 KB)

  • Quick Links