Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualL. Spiro

Posted 12 September 2013 - 06:47 AM

but then what you offer is thing I have never heard of before: tracks. What are those exactly? And what would you be storing with tracks? I know if I use dual quaternions, I would be storing quaternions--but what would I be storing with tracks.

If we think in programmer’s terms, which might be more comfortable for you, an animation track is nothing more than a class whose only responsibility is to track the change of a given value over time.

At the end of the day, this is indeed the bare necessity behind all animation, and it’s how all 3D modeling tools work.

A track modifies a single floating-point value over time.
An animation is a collection of tracks.
Thus if an animation requires only the position (XYZ) to be changed, only that is calculated and updated. Not only is this a closer relationship with the tools the artists are using, it is also faster at run-time.


When you define a track as nothing more than “something that modifies a floating-point value over time,” it becomes easy to see how it can be useful in all forms of animation.
When the value being modified is a boolean, a floating-point value is still modified internally but it is cast to “bool” afterwards. And this exactly mimics how Autodesk® Maya® works, as well as all other 3D authoring software.
When a value is float, nothing changes.  A float cast to a float results in no output code.

In other words you can easily make a template class that keeps a float internally but casts the interpolated result to any type.  That is how all 3D authoring tools work.

 

Once you’ve made track so low-level, they can easily be applied to other things, as I mentioned.  Changing only the R component of an RGB color overlay, for example.

 

 

Basically, everything you want to animate is just a number.  A track works on a single number and it tells how that number changes over time.

If your position, scale, and rotation are all animating, you would need 3 tracks for position, 3 for scale, and 3 for rotation.

The overhead would be similar to interpolating between full matrices every frame.

If scale is not changing, you only need 6 tracks, and you save time.  If only rotation is changing, you only need 3 tracks.

 

 

L. Spiro


#1L. Spiro

Posted 12 September 2013 - 06:46 AM

but then what you offer is thing I have never heard of before: tracks. What are those exactly? And what would you be storing with tracks? I know if I use dual quaternions, I would be storing quaternions--but what would I be storing with tracks.

If we think in programmer’s terms, which might be more comfortable for you, an animation track is nothing more than a class whose only responsibility is to track the change of a given value over time.

At the end of the day, this is indeed the bare necessity behind all animation, and it’s how all 3D modeling tools work.

A track modifies a single floating-point value over time.
An animation is a collection of tracks.
Thus if an animation requires only the position (XYZ) to be changed, only that is calculated and updated. Not only is this a closer relationship with the tools the artists are using, it is also faster at run-time.


When you define a track as nothing more than “something that modified a floating-point value over time,” it becomes easy to see how it can be useful in all forms of animation.
When the value being modified is a boolean, a floating-point value is still modified internally but it is cast to “bool” afterwards. And this exactly mimics how Autodesk® Maya® works, as well as all other 3D authoring software.
When a value is float, nothing changes.  A float cast to a float results in no output code.

In other words you can easily make a template class that keeps a float internally but casts the interpolated result to any type.  That is how all 3D authoring tools work.

 

Once you’ve made track so low-level, they can easily be applied to other things, as I mentioned.  Changing only the R component of an RGB color overlay, for example.

 

 

Basically, everything you want to animate is just a number.  A track works on a single number and it tells how that number changes over time.

If your position, scale, and rotation are all animating, you would need 3 tracks for position, 3 for scale, and 3 for rotation.

The overhead would be similar to interpolating between full matrices every frame.

If scale is not changing, you only need 6 tracks, and you save time.  If only rotation is changing, you only need 3 tracks.

 

 

L. Spiro


PARTNERS