Jump to content

kill world space motion in Vellum simulation


norse

Recommended Posts

Hi.

So I've got some Vellum experience but I'm very fresh to Houdini in general(Just to do some work in there, but it's been 10+ years since I did it in earnest).

So I'm trying to 'kill' world space motion on Vellum, thus only picking up the character motion. I've found 3 ways to do this. But I'm not overly happy with any of them.

I should specify that this is for Curves! For Cloth one of the solutions works pretty well.

 

1. Vellumrefframe. This node should do exactly what I want, but unfortunately it does not kill all motion, and it's highly susceptible to settings. A higher resolution or mass means the node is way less effective. Maybe I'm using it incorrectly?

 

2. I have an attribWrangle and an inverted transform node that esentially allows me to use sliders to control the kill motion in each axis. This is something that I desire in the final version of this. This particular one works decently and it's easy enough to hook on anything else in the scene to move in reverse. Can't say I love the idea though and if we wanna simulate anything else in here, or use different values on different characters, or even layers, it'll be very hard to manage that. But it is a bridge solution to something better.

 

3. A vellumAttach constraint with 'velcotyBlend' somewhat works. But has the same issues as 'vellumrefframe'. I'm guess it's done in a similar fashion, but haven't looked into it. Overall it almost gets me all the way there.

 

4. Lastly a vellum Pin constraint can be used for cloth and generally works quite well. It doesn't work for hair(as far as I can tell after looking around), however setting the pin type to 'soft' makes it "work". But with that being said it basically just attaches the entire strand to the character so it kills too much dynamic motion from the character.

 

What I would love to have and just haven't been able to figure out is a way to solve this in POPs(or any way), where it can be calculated per point. That way the motion could be killed per root point, and controlled using a envelope value attached to a slider. So essentially #2 but without actually moving the character around and controlling it per point instead of for the entire character. That way it could be a choice to do it for the whole character(with the roots all inheriting the Center of the character), or per curve. I haven't been able to work out exactly how to negate all motion, I've gotten a ton of weird results when playing with pointvelocity nodes and trying to control velocity and target velocity. I've tried mixing in air resistance and acceleration but I think it's just due to my inability within DOPs and POPs in general I can't get that to work.

 

I've added an example file that showcases #1 and #2. I left #3 and #4 out since they are similar to #1 really, and yields similar results. In this particular file I expect No dynamic motion at all on the curve. For those that are familiar with maya, this is easily achieved by parenting the Nuclues to the object driving the simulation. There are also several other ways to achieve that within Maya, but I'll skip those since this is all about how to achieve that within Houdini :D Any help is greatly appreciated!

 

Cheers / Henrik

kill_motion_example_v1.hip

Link to comment
Share on other sites

Hi,

You can use Extract Transform SOP to do this.

image.thumb.png.0713eaed1da78e4e52372c8e033857ad.png

First remove the rigid transformation using:

matrix m = point ( 1, "transform", 0 );
@P *= invert ( m );

Then apply it back after the sim:

matrix m = point ( 1, "transform", 0 );
@P *= m;

 

Edited by animatrix
Link to comment
Share on other sites

Hi Animatrix.

 

I think that basically just does what I've done above the switch node? I could easily re-apply that after the sim as well. But the problem here is that I don't want to remove the motion of the character itself, if I do then simulating multiple characters with different values of 'kill motion' with inter character collision would become really annoying, especially when factoring in environment collisions as well, if it's a different value per layer on the same character it becomes even more complex. Instead I want to find a way to retain the character animation and simply adjust the underlying forces to negate that motion.

 

Unless I'm missunderstanding? I'll definitely test it to verify, but initially it looks like it's just the same solution done differently?

 

 

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...