You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Mar 28, 2024. It is now read-only.
This proposal is for a new data-type for llSetKeyframedMotion()'s KFM_DATA option, entitled KFM_BEZIER_INTERPOLATION.
The additional data type adds an extra rotation to each keyframe that is interpreted as a bezier curve, described by the four points; P0=<0,0>, P1=<x,y>, P2=<z,s> and P3=<1,1>.
Using the bezier curve the key framed animation is able to determine how quickly or slowly to apply the interpolation between position and/or rotation. Specifically, the percentage time elapsed for the keyframe is treated as X, and fed into the curve to gain access to Y, which will describe the extent of the translation at that point. Using bezier curves it is possible to create smoothed transitions that accelerate, decelerate or both, allowing us to create natural movement with only a handful of keyframes; currently it is only possible to create smooth looking animations by adding multiple keyframes to simulate an acceleration or deceleration phase, however a bezier curve would allow this to be done with infinite precision, and with far greater simplicity for the scripter, and far less complexity for the simulator (no need for complex workarounds).
If not specified the default behaviour would be BEZIER_LINEAR, with other useful constants defined below (minus KFM_ prefix as they may be useful elsewhere):
Why is this feature important to you? How would it benefit the community?
This would be a very useful capability for key-framed motion, as it eliminates the need to add additional frames in order to perform smoothing, as the curves can be used to produce smoothing far more easily.
Original Jira Fields
Field
Value
Issue
BUG-7743
Summary
Bezier Curve Support for llSetKeyframedMotion()
Type
New Feature Request
Priority
Unset
Status
Closed
Resolution
Unactionable
Reporter
Haravikk Mistral (haravikk.mistral)
Created at
2014-11-08T19:08:28Z
Updated at
2014-11-12T19:30:29Z
{
'Business Unit': ['Platform'],
'Date of First Response': '2014-11-12T13:30:29.308-0600',
'How would you like the feature to work?': "This is being copied over from SCR-373\r\n\r\nThis proposal is for a new data-type for {{llSetKeyframedMotion()}}'s {{KFM_DATA}} option, entitled {{KFM_BEZIER_INTERPOLATION}}.\r\n\r\nThe additional data type adds an extra {{rotation}} to each keyframe that is interpreted as a [bezier curve|http://en.wikipedia.org/wiki/Bezier_curve], described by the four points; P0=<0,0>, P1=<x,y>, P2=<z,s> and P3=<1,1>.\r\n\r\nUsing the bezier curve the key framed animation is able to determine how quickly or slowly to apply the interpolation between position and/or rotation. Specifically, the percentage time elapsed for the keyframe is treated as X, and fed into the curve to gain access to Y, which will describe the extent of the translation at that point. Using bezier curves it is possible to create smoothed transitions that accelerate, decelerate or both, allowing us to create natural movement with only a handful of keyframes; currently it is only possible to create smooth looking animations by adding multiple keyframes to simulate an acceleration or deceleration phase, however a bezier curve would allow this to be done with infinite precision, and with far greater simplicity for the scripter, and far less complexity for the simulator (no need for complex workarounds).\r\n\r\nIf not specified the default behaviour would be {{BEZIER_LINEAR}}, with other useful constants defined below (minus {{KFM_}} prefix as they may be useful [elsewhere|https://jira.secondlife.com/browse/SCR-325]):\r\n||Constant||Value||\r\n|{{BEZIER_LINEAR}}|{{<0.0, 0.0, 1.0, 1.0>}}|\r\n|{{BEZIER_EASE}}|{{<0.25, 0.1, 0.25, 1.0}}|\r\n|{{BEZIER_EASE_IN}}|{{<0.42, 0.0, 1.0, 1.0>}}|\r\n|{{BEZIER_EASE_OUT}}|{{<0.0, 0.0, 0.58, 1.0>}}|\r\n|{{BEZIER_EASE_IN_OUT}}|{{<0.42, 0.0, 0.58, 1.0>}}|\r\n\r\n*Examples*:\r\n{code:title=Launcher}default {\r\n state_entry() {\r\n llSetKeyframedMotion(\r\n [ // Keyframes\r\n <0.0, 0.0, 10.0>, BEZIER_EASE_OUT, 1.0, // Launch\r\n <0.0, 0.0, -10.0>, BEZIER_EASE_IN, 1.0, // Fall\r\n <0.0, 0.0, 0.5>, BEZIER_EASE_IN_OUT, 0.25, // Unconvincing bounce up\r\n <0.0, 0.0, -0.5>, BEZIER_EASE_IN, 0.25, // Fall to start position\r\n ],\r\n [ // Options\r\n KFM_DATA, KFM_TRANSLATION | KFM_BEZIER_INTERPOLATION\r\n ]\r\n );\r\n }\r\n\r\n touch_start(integer x) {\r\n llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_PLAY]);\r\n }\r\n}{code}\r\n\r\n{code:title=Smooth Mover}default {\r\n state_entry() {\r\n llSetKeyframedMotion(\r\n [ // Keyframes\r\n <10.0, 0.0, 0.0>, BEZIER_EASE_IN_OUT, 5.0,\r\n <-10.0, 0.0, 0.0>, BEZIER_EASE_IN_OUT, 5.0\r\n ],\r\n [ // Options\r\n KFM_DATA, KFM_TRANSLATION | KFM_BEZIER_INTERPOLATION,\r\n KFM_MODE, KFM_LOOP,\r\n KFM_COMMAND, KFM_CMD_PLAY\r\n ]\r\n );\r\n }\r\n}{code}\r\n\r\nFor a good source to see what bezier-curves make possible, take a look at the [CSS3 animation-timing-function|http://www.w3schools.com/cssref/css3_pr_animation-timing-function.asp].",
'Severity': 'Unset',
'Target Viewer Version': 'viewer-development',
'Why is this feature important to you? How would it benefit the community?': 'This would be a very useful capability for key-framed motion, as it eliminates the need to add additional frames in order to perform smoothing, as the curves can be used to produce smoothing far more easily.',
}
The text was updated successfully, but these errors were encountered:
Thank you for your suggestion. We've reviewed your request and determined that it is not something we can tackle at this time.
Please be assured that we truly appreciate the time you invested in creating this feature request, and have given it thoughtful consideration among our review team. This wiki outlines some of the reasoning we use to determine which requests we can, or can't, take on: http://wiki.secondlife.com/wiki/Feature_Requests
Thanks again for your interest in improving Second Life.
How would you like the feature to work?
This is being copied over from SCR-373
This proposal is for a new data-type for
llSetKeyframedMotion()
'sKFM_DATA
option, entitledKFM_BEZIER_INTERPOLATION
.The additional data type adds an extra
rotation
to each keyframe that is interpreted as a bezier curve, described by the four points; P0=<0,0>, P1=<x,y>, P2=<z,s> and P3=<1,1>.Using the bezier curve the key framed animation is able to determine how quickly or slowly to apply the interpolation between position and/or rotation. Specifically, the percentage time elapsed for the keyframe is treated as X, and fed into the curve to gain access to Y, which will describe the extent of the translation at that point. Using bezier curves it is possible to create smoothed transitions that accelerate, decelerate or both, allowing us to create natural movement with only a handful of keyframes; currently it is only possible to create smooth looking animations by adding multiple keyframes to simulate an acceleration or deceleration phase, however a bezier curve would allow this to be done with infinite precision, and with far greater simplicity for the scripter, and far less complexity for the simulator (no need for complex workarounds).
If not specified the default behaviour would be
BEZIER_LINEAR
, with other useful constants defined below (minusKFM_
prefix as they may be useful elsewhere):|Constant|Value|
|
|-|-|-|
|
BEZIER_LINEAR
|<0.0, 0.0, 1.0, 1.0>
||
|
BEZIER_EASE
|<0.25, 0.1, 0.25, 1.0
||
|
BEZIER_EASE_IN
|<0.42, 0.0, 1.0, 1.0>
||
|
BEZIER_EASE_OUT
|<0.0, 0.0, 0.58, 1.0>
||
|
BEZIER_EASE_IN_OUT
|<0.42, 0.0, 0.58, 1.0>
|Examples:
Java<br>default { <br> state_entry() { <br> llSetKeyframedMotion( <br> [ // Keyframes <br> <0.0, 0.0, 10.0>, BEZIER_EASE_OUT, 1.0, // Launch <br> <0.0, 0.0, -10.0>, BEZIER_EASE_IN, 1.0, // Fall <br> <0.0, 0.0, 0.5>, BEZIER_EASE_IN_OUT, 0.25, // Unconvincing bounce up <br> <0.0, 0.0, -0.5>, BEZIER_EASE_IN, 0.25, // Fall to start position <br> ], <br> [ // Options <br> KFM_DATA, KFM_TRANSLATION | KFM_BEZIER_INTERPOLATION <br> ] <br> ); <br> } <br> <br> touch_start(integer x) { <br> llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_PLAY]); <br> } <br>}<br>
Java<br>default { <br> state_entry() { <br> llSetKeyframedMotion( <br> [ // Keyframes <br> <10.0, 0.0, 0.0>, BEZIER_EASE_IN_OUT, 5.0, <br> <-10.0, 0.0, 0.0>, BEZIER_EASE_IN_OUT, 5.0 <br> ], <br> [ // Options <br> KFM_DATA, KFM_TRANSLATION | KFM_BEZIER_INTERPOLATION, <br> KFM_MODE, KFM_LOOP, <br> KFM_COMMAND, KFM_CMD_PLAY <br> ] <br> ); <br> } <br>}<br>
For a good source to see what bezier-curves make possible, take a look at the CSS3 animation-timing-function.|
Why is this feature important to you? How would it benefit the community?
This would be a very useful capability for key-framed motion, as it eliminates the need to add additional frames in order to perform smoothing, as the curves can be used to produce smoothing far more easily.
Original Jira Fields
The text was updated successfully, but these errors were encountered: