Dynamic Constraints - Lots of potential....


#1

Hey All,

Been a while, I know - no great excuses, just being lazy and waiting for V11 to get a bit more solid. I’ve been waiting specifically for Dynamic Constraints to be more useable, and while they are showing a lot of potential, there are still problems… (but then again, it IS Alpha software…)

Unfortunately, one of the biggest problems I’m seeing is the difference between what happens in the Action or Cho window, and what gets rendered. What happens is that everything looks great in wireframe or shaded mode - then when you render, it seems like your dynamics get kind of smoothed over. I’ve seen this with the new hair, too. Has anyone else seen this kind of thing?

http://www.hash.com/users/joewllms/CGTalk/DynamicsComparo.mov

The top half of the movie is what the Action looked like (and what it looked like in the Choreography) - the bottom movie is rendered as one-pass shaded mode. Seems like the dynamics just got muted down somehow…

Anyway, it looks like this could be an awesome feature once it gets ironed out… and a few minor changes added to the controls… :slight_smile:

JoeW


#2

Hi Joe, nice to see you back here again:wavey:

Sorry in advance for going on…

I have fiddled with the dynamic constraints also. I hope that they are still being worked on (I remember that they were actually added in v10.5 beta which was a bit odd but welcome).

When they first arrived, I (in a discracefully fan-boy and technocratic way) made a replica of the earings from your hunter model to see if the constraints would work in a situation where a number of dangly bits came off another dangly bit. It was a bit of a disaster.

I sent a bug report in and I think this helped Hash see that they had to look into making the thing more robust. I Mess around with DCs (Dynamic constraints) from time to time to see how they are getting on and the code seems to be shifting about. At one point they would move in the wrong direction if you only used one bone.

Hopefully they are still looking into improving them. I find that it is often the case (particularly with the renderer) that they will improve it in one place but not in another, maybe that is what has happened here.

One feature that I would like to see implemented is the ability to slow the constraint down by adding more friction at the joint. At the moment I find that things sometimes move a little fast. I guess that this kind of thing could be done by canging the enforcement but the last time that I looked this had no effect.

I would also like to be able to set an angle limit on the rotation of a whole load of bones in a chain otherwise this could be very time consuming. I guess that I shoule be sending all this into hash.

Well, those are my observations anyway. I hope that we get more control and flexibility in the future as I am hoping to make a beast with a large number of whips coming off it and I don’t fancy animating them by hand!

Edit: I have noticed that the hair renders oddly if you have motiom blur on with multipass. AM seems to calculate the movement between frames as if it were through frames (if you see what I mean) I pointed this out on the forum and they said that they were looking into it. It is possible that they are using the same system for the hair as for the DCs so problems with them could be linked. I hope that they add more controllability to the hair dynamics also as It sometimes moves a little fast for my liking.


#3

I’ve been using the dynamic constraints a bit lately. I don’t plan to update until the end of the year so I’m seeing what I can do with 10.5’s dynamics.

The annoying recalculation of the dynamics every time you change frame can be removed by ticking off the “hair & particles” setting in the render panel. This does not seem to actually turn off the simulation so I’m assuming it’s some sort of bug

There’s a stiffness option you can use to affect the constraint, it’s probably a better choice to tinker with than the constraint percentage - I’ve tried varying that because I wanted an animation to loop and couldn’t get the end and start frames to be the same, but varying the enforcement seems to cause problems

As far as I can tell, the simulation seems to redo itself every time you cycle the animation, if you scrub forwards and back the simluation acts as if that was the movement. Unfortunately the actual rendered simulation does not seem to correspond to what the choreography window shows you - it would be nice to be able to save a “good” bone motion to your animation, but it doesn’t seem to store it permanently

Still, it’s a good way to animate dangling chains of bones quickly if you don’t particularly care where they go


#4

Oooh!, I have just taken a look at DCs in v11 (should have done this before my last post). They have added a few features including collision detection. This is realy cool. :thumbsup: it works with action objects which is handy. There is a Mass feature there also. Can anyone get this to do anything?

One thing that I have noticed is that the thing seems to calculate differently depending on the viewing angle which is odd.

Anyways, as you say Joe, this is an alpha so we can expect things to get ironed out in time.


#5

Hi John, Bugle,

I agree wholeheartedly about the rotational limits and what I would call “drag” on the bones. It would also be nice to be able to set different stiffness on bones in the chain - so you could have a very stiff “base” and a very limp end - right now, this doesn’t seem to work well at all.

Another very important feature to me is to be able to give a bone mass and drag, but be able to make it ignore gravity. This is important in areas where you want flesh to respond to inertia, but you don’t want it to sag from it’s base position - BUT- you also have objects in the scene that you want to dangle (so you can’t just turn off gravity).

I would also like to be able to “bake” out the motion of the dynamic bones into an action, then be able to shut off dynamics and possibly tweak the bone movement. This would help a lot with network renders, which I’m afraid would be a bit of a nightmare with each machine calculating it’s own dynamics on every frame. (I tried this already, and it didn’t seem to affect the motions of the bones at all… but now that I’ve said that, I didn’t go back and remove the dynamic constraints… hmmm…)

I think your observation on the hair with multi-pass is correct - it seems like the renderer thinks you’ve just slowed down the movement when you are doing multiple passes - and this is probably the same with the bones. Weird.

I’m going to talk to the guy at work who programs our physics for our engine - he’s the one that provided Hash with the core technology for the dynamic bones (we use dynamic bones in our games) - to see what’s possible - we do have collision in our engine, so I’d think it would be possible in AM - but I couldn’t get it to work at all…

Thanks for the reply - Please be sure to forward your suggestions to Hash so that I won’t sound like I’m the only one interested in seeing these changes :slight_smile:

JoeW


#6

I have had a thought about how to set things like rotation limits, stiffness collision distance and drag allong the length of a chain. It could be done with channels like when you set the colour allong length with hair. It would be good if the same could be done with hair but I guess that this would slow the thing down a bit with all of those hairs. What do you think?

I agree about the idea for turning elements of the dynamics on and off and baking motion. The motion channels should reduce well as they wouldn’t have much detail (just a back-forwards type motion). This would be most helpfull with hair of course ( just as long as you have a lot of memory. Baking would also mean that the motion could be edited by hand afterwards.

I have been doing some tests. I found that the collision was not perfect as bones would sometimes go through geometry or pop off the surface of things.

Also, I tried making a chain that dangled down then moving an object up to meet it. The object went right through with no reaction from the chain. It seems that the collision isn’t detected at the tip of the last bone. This would be necessary in some situations.


#7

John is it ok if I use what you wrote and email and post this to Hash? I want to include my voice for asking these cool new features. I dont know enough to write them myself. So I want to know if I can use yours? :bowdown:
I wont use your name if you dont want me to.


#8

Well OK. But I would like to send in these requests myself also. I guess that I would write mine differently rather than expecting you to edit something that you don’t fully understand. However, It might be best if you wait for Joe W to confirm that I am talking sense first.


#9

Originally posted by John Keates
[B]I have had a thought about how to set things like rotation limits, stiffness collision distance and drag allong the length of a chain. It could be done with channels like when you set the colour allong length with hair. It would be good if the same could be done with hair but I guess that this would slow the thing down a bit with all of those hairs. What do you think?

I agree about the idea for turning elements of the dynamics on and off and baking motion. The motion channels should reduce well as they wouldn’t have much detail (just a back-forwards type motion). This would be most helpfull with hair of course ( just as long as you have a lot of memory. Baking would also mean that the motion could be edited by hand afterwards.

I have been doing some tests. I found that the collision was not perfect as bones would sometimes go through geometry or pop off the surface of things.

Also, I tried making a chain that dangled down then moving an object up to meet it. The object went right through with no reaction from the chain. It seems that the collision isn’t detected at the tip of the last bone. This would be necessary in some situations. [/B]

Hey John,

Hmmmmm - I don’t know if I want to depend on Hash to write a curve-based stiffness tool - I guess I could see it NOT working in so many ways that I don’t even want to ask. I’d be happy to set bones on an individual basis, but then I also understand that you’re thinking about things like tentacles (which, BTW could easily be controlled by a few bones controlling a spline to which the tentacle bones were attached - if that makes any sense). It would be a cool feature…

Another thing that was brought up in conversation here - it would be nice to chose a “root” and an “end” bone for each chain - so that you could specify where the dynamics stop. I would also like to be able to anchor the root and the end, and have the bones in the middle waggle about freely - I’m thinking about hydraulic hoses, ropes tied to objects, chains, etc.

As far as collision, well, I can’t get it to work at all. If it’s supposed to be implemented, I can’t see how. I’ve tried moving objects into the chains, moving chains into objects, setting falloff, etc, etc - no go for me (you must be magic!) - LOL. I’d be interested if you could post a prj file…

If we can get enough people interested in this, it will get fixed. I can see SO many applications for this, I think it would be a hugely useful feature…

JoeW


#10

Originally posted by JoeW
[B]Hey John,

Hmmmmm - I don’t know if I want to depend on Hash to write a curve-based stiffness tool - I guess I could see it NOT working in so many ways that I don’t even want to ask. I’d be happy to set bones on an individual basis, but then I also understand that you’re thinking about things like tentacles (which, BTW could easily be controlled by a few bones controlling a spline to which the tentacle bones were attached - if that makes any sense). It would be a cool feature…

Another thing that was brought up in conversation here - it would be nice to chose a “root” and an “end” bone for each chain - so that you could specify where the dynamics stop. I would also like to be able to anchor the root and the end, and have the bones in the middle waggle about freely - I’m thinking about hydraulic hoses, ropes tied to objects, chains, etc.

As far as collision, well, I can’t get it to work at all. If it’s supposed to be implemented, I can’t see how. I’ve tried moving objects into the chains, moving chains into objects, setting falloff, etc, etc - no go for me (you must be magic!) - LOL. I’d be interested if you could post a prj file…

If we can get enough people interested in this, it will get fixed. I can see SO many applications for this, I think it would be a hugely useful feature…

JoeW [/B]

Hi Joe. I was wondering if I was getting carried away with the curve based thing. I was thinking that it wouldn’t be so hard for them to impliment seing as they have done a similar thing with hair. All that the program would have to do is to work out where each bone is as a percentage of the chain length and give it a value based on the equivelent channel position. What pit-falls did you have in mind?

I believe that hash are thinking of implementing a spline IK feature. This would make things like tentacles easier but it would be great if it had dynamic physics built in also. I guess that someone has to do a lot of thinking about workflow here.

Is it not possible to set the root and end bones for a chain by detaching them from the rest of the bones before applying the constraint? I have played with having all of the bones in a chain detached from each other and applying constraints to each seperately but it was quite time consuming.

I thought of a root and end attachment feature also. I see time and again people going through great lenths to make this kind of thing work (and it has been done using the wiegts and springs I believe).

I have started a thread at the hash forum with a project attached with working (ish) collision.

Here: http://www.hash.com/forums/index.php?act=ST&f=4&t=2587

Hash has mentioned the possibility of expanding the hair feature so that instances of models can be used as hair (or trees or whatever). If these instances could have dynamic constraints then that would be awsome! Legions of crazy creatures would flood from the hands of Hash users.


#11

Originally posted by John Keates
[B]Hi Joe. I was wondering if I was getting carried away with the curve based thing. I was thinking that it wouldn’t be so hard for them to impliment seing as they have done a similar thing with hair. All that the program would have to do is to work out where each bone is as a percentage of the chain length and give it a value based on the equivelent channel position. What pit-falls did you have in mind?

I believe that hash are thinking of implementing a spline IK feature. This would make things like tentacles easier but it would be great if it had dynamic physics built in also. I guess that someone has to do a lot of thinking about workflow here.

Is it not possible to set the root and end bones for a chain by detaching them from the rest of the bones before applying the constraint? I have played with having all of the bones in a chain detached from each other and applying constraints to each seperately but it was quite time consuming.

I thought of a root and end attachment feature also. I see time and again people going through great lenths to make this kind of thing work (and it has been done using the wiegts and springs I believe).

I have started a thread at the hash forum with a project attached with working (ish) collision.

Here: http://www.hash.com/forums/index.php?act=ST&f=4&t=2587

Hash has mentioned the possibility of expanding the hair feature so that instances of models can be used as hair (or trees or whatever). If these instances could have dynamic constraints then that would be awsome! Legions of crazy creatures would flood from the hands of Hash users. [/B]

The biggest problem I see with the spline-based stiffness is the fact that the software changes SO much - all it would take for a project to get hosed (or, a model’s setup to get hosed) is for Hash to change how the curve was interpreted.

I don’t know if you worked with this, but originally the curve range for setting things like particle color over lifetime was 100 seconds - i.e. 3000 frames - this made making adjustments absolute agony - because it would calculate all the particles up to the point where you would make the change (almost 2 minutes worth!!) - I think they changed this to 100 frames (as it should have been originally). Anyway, a change of heart like this partway through a project could cause you a lot of problems. I guess I’m getting to the point where I don’t want “fancy” anymore - I just want “solid” - (not to mention that curve interpolation would be almost impossible to edit in a text editor)

Spline IK would be nice. You can do a “hack” for spline IK right now, but it’s kind of a PITA to set up. If I’m not mistaken, Hash V4 used something like spline IK… hmmm… well, I think at least if they do put it in it should be solid (?)…

I’ll take a look at the project as soon as I get a chance. It’s been good to talk this through with you - I sent an e-mail to the programmer at Hash who is handling the Dynamic Constraints listing the features we were asking for - we’ll see what happens with that. If we keep pushing, I think we can get these working the way we want them to :slight_smile:

JoeW


#12

Originally posted by JoeW
[B]The biggest problem I see with the spline-based stiffness is the fact that the software changes SO much - all it would take for a project to get hosed (or, a model’s setup to get hosed) is for Hash to change how the curve was interpreted.

I don’t know if you worked with this, but originally the curve range for setting things like particle color over lifetime was 100 seconds - i.e. 3000 frames - this made making adjustments absolute agony - because it would calculate all the particles up to the point where you would make the change (almost 2 minutes worth!!) - I think they changed this to 100 frames (as it should have been originally). Anyway, a change of heart like this partway through a project could cause you a lot of problems. I guess I’m getting to the point where I don’t want “fancy” anymore - I just want “solid” - (not to mention that curve interpolation would be almost impossible to edit in a text editor)

Spline IK would be nice. You can do a “hack” for spline IK right now, but it’s kind of a PITA to set up. If I’m not mistaken, Hash V4 used something like spline IK… hmmm… well, I think at least if they do put it in it should be solid (?)…

I’ll take a look at the project as soon as I get a chance. It’s been good to talk this through with you - I sent an e-mail to the programmer at Hash who is handling the Dynamic Constraints listing the features we were asking for - we’ll see what happens with that. If we keep pushing, I think we can get these working the way we want them to :slight_smile:

JoeW [/B]

Point taken about the spline-based stiffness thing.

Yes, the curve based controll of particles is much better now that it goes up to 100. It can still be a pain though. I kind of like the way that it and the hair controls are edited in the channel editor as it makes things neat and homely, but it can be confusing when one editer is used for so many things.

I have used the spline IK hack a few times. There were a few bugs in the path constraint that they sorted out recently to make it work. I guess that they could just make a wizard for setting this kind of system up but I would prefer to have the geometry mapped to the spline itself as if it were a bendy bone. That way the curvature would be nice and smooth without
fan bones/smartskins. I guess that disort boxes would work pretty well for this also.

I will have a little think about stuff and do a few more tests before I submit my suggestions.


#13

Hey Joe,

Which programmer should I send my report to? I usually just send things to hash@hash.com. Would this do just as well?


#14

Originally posted by John Keates
[B]Hey Joe,

Which programmer should I send my report to? I usually just send things to hash@hash.com. Would this do just as well? [/B]

Hey John,

Send it to bob@hash.com - he’s the one who’s been working with DC’s. I’d also send it to the “usual” e-mail just to be sure. I sent my comments in, but haven’t heard back yet… which really isn’t that unusual…

JoeW


#15

Ok, I sent it to both - all 720 words of it. It turned into a bit of an essay. I hope it doesn’t scare them.

I rarely get replies from programmers, I got one from Noel the other day though. It is nice when it happens but I have yet to find any pattern. I am surprised that they don’t mail you back though.


#16

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.