Jump to content
Hash, Inc. - Animation:Master

Throttle control


Recommended Posts

Here is a screen grab of the formula you need. The way I set it up is with 2 bones, one has the geometry (bone 2) and the other has the expression (bone 1). The expression is in an on/off pose for bone 1. Bone 2 has a roll like bone 1 constraint in a percentage pose, setting the enforcement to a spline interpolation method. The reason for the numbers that I used in the expression is that, at 1% of the throttle pose the prop will have a full rotation.

Link to comment
Share on other sites

  • Replies 31
  • Created
  • Last Reply

Top Posters In This Topic

Why not upload the project file?

 

What I can understand are you not using a Pose to alter the rotation....

 

PIXMITE tried to use this expression:

 

Z’s Rotation Angle = GetTime()*(PoseEnforcementValue)*0.55 + 0.44)*360

 

 

His problem was this:

 

My problem is when I click on the enforcement value in my throttle pose that I created while building the expression for Z’ rotation angle I get an entry in my expression that looks something like this:

 

|….|….|….|Throttle Pose|Relationship1.Enforcement

 

***************************************************

Do you need to use GetTime()?

And how to use a Pose with some Percentage to alter the rotation speed?

 

***********************************************''''

 

And what are you doing?

 

Can you alter the rotation along the timeline in the Choreography...

that is my question...

************************************************

And I do not understand how you are using the two bones...

No picture of them to see...

Link to comment
Share on other sites

OK! Can you upload your file?

 

But PIXMITE wanted to use an expression.

Here is my try...

it does not function... I have to understand how to use expressions better

before trying more... some other day perhaps....

post-7-1115505010.jpg

Link to comment
Share on other sites

The expression is there for the automatic rotation. The percentage pose is for the rotation speed (throttle). He was trying to animate an expression with a pose, which I don't know if that's possible. Here's a movie of the animated prop.

Link to comment
Share on other sites

He was trying to animate an expression with a pose, which I don't know if that's possible. Here's a movie of the animated prop.

mtpeak2:

 

Yes, I was trying insert a user imposed/controlled variable in to an expression directly, i.e. a pose percentage. I like your idea of getting around this indirectly through a pose to set the roll like enforcement percentatge. Its ashame that one cannot do this directly, maybe in the next version. I try out your solution and see if I can tweak it for the RPM settings I'm shooting for. Thanks for pushing me in the right direction (or should I say twisting me?) ;)

 

Pixmite

Link to comment
Share on other sites

Perhaps this can be something useful. I have not got time to try to understand it...

But there are some posesliders and expressions

for a cloud and especially for a lightningBolt:

http://www.members.optusnet.com.au/~s_bruc.../downloads.html

:D

OdinsEye has also done some things with expressions and he is also talking about using a property values for pose sliders - perhaps it can solve something with a propeller?

http://www.prism.gatech.edu/~gtg724n/math.html

 

TORNADO

A fun use of the cosine-sine functions for circular motion can be shown with this tornado example. The first thing to do is to take a simple object (say a sphere from the CD) and apply a new Percentage Pose called "radius." After the pose is created, right-click under the User Properties for the model and change the settings of radius so that it has a fuller range (like 10,000). The radius of the spiral is now an animatible property.

 

In a new action or choreography, add the model and then move it slightly and tweak the radius property. This will initialize all of the channels you need to pick up for use in the expression.

 

Go to the properties of the model bone and right-click on X, then edit the expression. Click in the f(x) box and then click the channel that was created under user properties. This should put something like

 

..|..|..|User Properties.Radius

 

into your formula. Add the following to the Expression:

 

*Cos(10*GetTime()).

Link to comment
Share on other sites

Hey folks,

 

I was requested by seven to add something to the discussion.

 

As I had written in that tornado example, it is possible to use a pose percentage slider as a kind of "dummy variable," simply inputting whatever numbers you wish over time to change the outcome of the Expression.

 

The drawback to this that I have yet to solve is that A:M currently does not do well with velocities or accelerations. The reason is that you can only deal with properties directly (position, rotation). Normally, in a program, I would write something like:

 

Pos = Pos + speed*time

 

in order to update the position based on a speed function that changes over time. This is an illegal Expression as far as I know.

 

I'm curious to see how the pose enforcement trick works. In my mind, I don't see how it would work with speed any better than the Expression.

Link to comment
Share on other sites

As I had written in that tornado example, it is possible to use a pose percentage slider as a kind of "dummy variable," simply inputting whatever numbers you wish over time to change the outcome of the Expression.

 

The drawback to this that I have yet to solve is that A:M currently does not do well with velocities or accelerations. The reason is that you can only deal with properties directly (position, rotation). Normally, in a program, I would write something like:

 

Pos = Pos + speed*time

 

in order to update the position based on a speed function that changes over time. This is an illegal Expression as far as I know.

 

I'm curious to see how the pose enforcement trick works. In my mind, I don't see how it would work with speed any better than the Expression.

Thanks a lot contributing a bit to the Expressions magics!

 

I hope you can do a little example with a Pose Percentage slider so we can see for ourselves how you do it...

Perhaps I can do some WINK tutorial on it or you?

:D

It would be nice to have an example to understand a little better...

 

You are writing:

In a new action or choreography, add the model and then move it slightly and tweak the radius property. This will initialize all of the channels you need to pick up for use in the expression.

 

This I am curious about - having tweaked a bit - you can get every value?

because I am getting those Syntax Errors trying to insert values/variables/propertys...

 

 

 

Pos = Pos + speed*time

This is not illegal in other programming languages!

I think the ones having programmed expressions have to give us some nice examples too!

 

Hope you will come up with something - an example with Pose Percentage sliders!

:D

Link to comment
Share on other sites

Sorry for the multipost, but did those quick to ensure the file worked.

 

Small explanation - the Tornado was implemented as described in my Expressions tute. I just did two keyframes on the radius in the movie - more are certainly possible for more interesting behavior.

Link to comment
Share on other sites

Tornado thanks for uploading the Tornado Project.

Perhaps I will make a WINK tutorial on it - if OdinsEye2k - has no objections - or perhaps someone else are willing?

 

I believe you can use this project to regulate the rotation speed of a propeller using a Pose Percentage., someone willing to have a try and hopefully making a WINK on it...

 

OdinsEye2k has a tutorial on the Tornado. Here it is:

http://www.prism.gatech.edu/~gtg724n/math.html

And here an excerpt:

 

Tornado

 

A fun use of the cosine-sine functions for circular motion can be shown with this tornado example. The first thing to do is to take a simple object (say a sphere from the CD) and apply a new Percentage Pose called "radius." After the pose is created, right-click under the User Properties for the model and change the settings of radius so that it has a fuller range (like 10,000). The radius of the spiral is now an animatible property.

 

In a new action or choreography, add the model and then move it slightly and tweak the radius property. This will initialize all of the channels you need to pick up for use in the expression.

 

Go to the properties of the model bone and right-click on X, then edit the expression. Click in the f(x) box and then click the channel that was created under user properties. This should put something like

 

..|..|..|User Properties.Radius

 

into your formula. Add the following to the Expression:

 

*Cos(10*GetTime()).

 

This should cause the sphere to oscillate back and forth in the X direction. Now do the same for the Z direction, only using Sin instead of Cos. Now the sphere will be moving in a circle. To complete the tornado effect, you can animate both the Y position and the radius with time.

 

Now to a little of the math behind these expressions: ......................................

 

 

Opening the Project file you can see how it is done:

post-7-1115886375.jpg

Link to comment
Share on other sites

Feel free to WINK, link or whatever seven.

 

I tried the speed Expressions, and managed to crash AM a few times. It really does not like self-referencing.

 

If I could figure out a way to do numerical integration with Expressions, I see a lot of possibility.

 

Of course, if I could figure out GetWorldPos and GetWorldDir, that would make a lot of neat stuff possible too....

Link to comment
Share on other sites

This guy - Bob Croucher - he is clever I believe - programming A:M!

 

Tech Talk #5 "Expressions" - Bob Croucher 124 Megabytes

Tech Talk #3 "Dynamic Contraints" - Bob Croucher 165 Megabytes

Tech Talk #2 "CP Weights" - Bob Croucher 72 Megabytes

 

I messaged him telling I wanted him to do some tutorial on expressions - a WINK one - easy to download and navigate - 1 Megabyte or perhaps 2 Megabytes.

 

No - he has not got the time he is telling me!

 

I believe he has to take some hours to tell us something about the goodies he has programmed... just a little while - some coffee break perhaps...

Link to comment
Share on other sites

Bob Croucher hallo! Tell us a little about expressions... so we do understand...

No answer...

 

Well after some experimenting so here is a propeller rotation with an expression and a pose slider giving the amount of rotation.

 

Transform.Rotate.Z=

..|..|..|..|..|User Properties.AA*90*GetTime()

 

AA that is what I called the Pose Percentage slider

90 that is to get the propeller rotatate 90 degrees pro second

And the seconds will the GetTime() show up with

 

That is the expression to get the propeller rotatating in an Action.

 

An Action then used in the Choreography.

post-7-1115954047.jpg

Link to comment
Share on other sites

Fellow AMers:

 

Well I got the Throttle control to work… :) Well sort of… :( using the indirect method of using a pose to adjust the enforcement of a roll like constrained propeller bone to another bone with a constant rate of rotation set up to do so with an expression Rot.Z = GetTime()*16200.

 

What do I mean by kinda? Well, as I increase the enforcement of the pose over time in an action the prop does accelerate nicely, but then slows down and speeds up several times as the pose enforcement increases to 100%. :blink: My guess is that something about this set up isn’t linear mathematically or that since the final RPM is well past the Nyquist rate the rotational vales are jumping so far ahead that when MODed by (360) resulting values make it spin at a decreasing rate.

 

Any thoughts on this? Maybe I should set the max RPM to be at the Nyquist rate?

 

Pixmite

Link to comment
Share on other sites

I'd probably agree with the Nyquist thing.

 

But, then again, you'll be Nyquist limited at anything over 30 RPS (1 rev/frame), so why bother? It will give the "authentic" look that you would expect on TV or film.

Nyquist!?.,

 

And I forget to tell if you are changing the Percentage on a time value that gives a full rotation 360 degrees you will never have any backward rotation, so I will call this a throttle control...

Link to comment
Share on other sites

with a constant rate of rotation set up to do so with an expression Rot.Z = GetTime()*16200

I wonder if you can do more than 360 degrees every second?

Well it depends on how it is programmed - perhaps - some day have a look at it...

 

16200/360 is about 16200/400 and that is about 40 RPS pro second - seems a little fast... animation is not about being true to reality... it is about giving an impression... of something happening...

Link to comment
Share on other sites

I'd probably agree with the Nyquist thing.

 

But, then again, you'll be Nyquist limited at anything over 30 RPS (1 rev/frame), so why bother? It will give the "authentic" look that you would expect on TV or film.

So what I'm hearing is that I should limit my rotations something less that 30 RPS. I would agree that would most likely fix my slow down issue, but limit the depicted RPM rate to about 1800 RPM. Then the next question becomes how would one simulate RPMs greater than 1800?

 

An idea I can try:

Create a pose to stretch the propeller blades to make them wider (in the arc of their rotation) introduce a bit to transparency and pull back on the throttle pose slider to give a bit of Nyquist effect. Any other thoughts?

 

Pixmite

Link to comment
Share on other sites

I should also state that since my propeller bone what I constrained to aanother bone that was rotating at a constant rate, I only experienced a slow down in rotation. The the prop never actualy went backwards.

 

Pixmite

Link to comment
Share on other sites

So what I'm hearing is that I should limit my rotations something less that 30 RPS. I would agree that would most likely fix my slow down issue, but limit the depicted RPM rate to about 1800 RPM. Then the next question becomes how would one simulate RPMs greater than 1800?

 

Well, I mean, do you want the rotation to appear to be forward or backwards? Nyquist just says that you lose a true appreciation for the underlying signal if you sample at too low a rate (FPS).

 

If you don't care about the look, just go for whatever rotation speed you want to show up on screen (below the 1800) and then use a phony motion blur or extra set of 'virtual' propeller blades to give the illusion of really fast travel. It was used to great effect in Bob Fleeman's "Skeeters" sketch.

Link to comment
Share on other sites

A propeller rotated by an expression with the speed controlled by a pose slider attached.

 

I have had a problem in 11.1 where if I try to use the rotation value of a bone in an expression I end up with something like this

 

..|..|..|..|..|..|..|..|Objects|Model1|Relationships|User Properties Relationships|rotate propeller Relationships|Relationship1|Bones|speed|Transform|Rotate.X

 

And get a nasty syntax error on it.

 

So I tried selecting a transform attribute on the bone and this popped up in the expression window.

 

..|..|..|..|speed.Transform.Translate.X (No syntax error)

 

I changed the expresion to this

..|..|..|..|speed.Transform.Rotate.X

 

and it worked fine

 

I used this expresion to get a propeller working

(GetTime()*..|..|..|..|speed.Transform.Translate.Z)

 

It gets the current time and multiplies it by the Z position of a bone called speed. Applying that value to the Z rotation of the bone that controls the propeller. The bone called speed has its Z position increased in a pose called propeller speed. As the Z position of the bone speed increases the propeller picks up speed.

 

Hope this helps. And makes sense. :blink:

Expressions are great I use them more and more with every project.

Hope I'm not repeating stuff. I just did a quick read through the discussion. Sorry if I am.

 

 

Stephen

expressionPropeller.prj

Link to comment
Share on other sites

Hope this helps. And makes sense. :blink:

Expressions are great I use them more and more with every project.

Had a look on your project seems to work fine...

 

Have you had a look on my tutorial?

http://www.hash.com/forums/index.php?showtopic=14521

 

The difference is that I do not use any extra bone - to control the rotation speed.

I think that is more elegant...

:D

But if something function that is all you need...

 

I am really curious about how the guy(s) having programmed the possibilities

with Expression would do this?

Bob Croucher - let us hear!

 

And here is your project and you can see the ingredients in the programming:

post-7-1116077385.jpg

Link to comment
Share on other sites

The difference is that I do not use any extra bone - to control the rotation speed.

I think that is more elegant...

 

Nice, I hadn't seen pose values directly controlling an expression before.

 

I guess you would only use a bone to hold a variable if you wanted to overdrive it through another attribute or attributes of the model or environment. Since Poses have a defined range. But thats not needed for this example.

 

I don't think I would use an action though. I would embed the expression within a pose in the model. Then one file then does everything and there is less setup in the chor. Its not a problem with a single expression but with multiple expressions it just adds to the setup time.

Link to comment
Share on other sites

  • 8 months 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...