single character fix in Plugins for corrected punctuation of subsampling
[goodguy/cin-manual-latex.git] / parts / Keyframes.tex
index f0eace575c19eefc478db3ad1e59259763b64b6c..d4b98ef9d8625e13f5bbdbdf0faa8104d9ff44b5 100644 (file)
@@ -13,6 +13,10 @@ track. \includegraphics[height=\baselineskip]{auto.png} Auto
 $\leftarrow$ Keyframe $\rightarrow$ Plugin
 \includegraphics[height=\baselineskip]{plugin.png}
 
+It is important to understand the fundamental difference between \CGG{} \textit{Autos} (zoom,
+pan, etc.) is that \textit{Autos} are interpolable in any way (linear, bezier, etc.) while
+\textit{Plugin keyframes} may be interpolable in various ways or not be interpolable at all.
+
 \section{Automation Keyframes /\,Autos}%
 \label{sec:automation_keyframes_autos}
 \index{keyframes!autos}
@@ -33,6 +37,8 @@ Usually, the use of the keyframe values are more pleasing when the data varies s
 
 Curve smoothing is called \textit{interpolation} and it uses keyframe point values and control values that determine how the curve will react at the time the media is played or rendered.  Interpolation uses 2 keyframes to create a set of intermediates which are used as active values between the \textit{previous} and \textit{next} keyframe anchors on the timeline.  The way the intermediate data is generated depends on the type of curve used to invent these values.  \CGG{} interpolates the intermediate values making the change happen smoothly and gradually over time.  The simple linear mathematical formula for interpolation is:   $a\times(1-t) + b\times t$    where $0\le t\le 1$ uniformly.
 
+Autos are handled inside the main executable. Therefore \CGG{} knows exactly what a particular Auto does, how to interpret it, and how it can be interpolated.
+
 \section{Using Autos}%
 \label{sec:using_autos}
 
@@ -134,7 +140,7 @@ An easy way to get an exact position is to set the \textit{Automation range} in
 window to the low and high ends of the desired range. For example, 1.000 to 50.000, which makes it
 so you can drag the speed/fade handle all the way to the left for 1.000 or all the way to the right for 50.
 
-Figure~\ref{fig:always} shows orange keyframes and lines for the ganged speed automation on all video/audio tracks. The figure shows the orange speed slider bar triangle with the current value displayed via the tooltip. Note the status bar numbers in the lower lefthand corner displaying 01:08 seconds as the location and 2.05 as the playback rate.
+Figure~\ref{fig:speed} shows orange keyframes and lines for the ganged speed automation on all video/audio tracks. The figure shows the orange speed slider bar triangle with the current value displayed via the tooltip. Note the status bar numbers in the lower lefthand corner displaying 01:08 seconds as the location and 2.05 as the playback rate.
 
 \begin{figure}[htpb]
     \centering
@@ -243,6 +249,9 @@ The Plugin keyframes are structured.  The individual data values are named param
 Plugins also may use interpolation to smooth the data between the keyframe paramaters on the timeline.  Just exactly how this is done varies with the plugin and is not always easy to predict, but this
 is usually due to the nature of the keyframe parameter data.  For example, it does not make sense to interpolate which font is in use.
 
+Plugin keyframes are handled inside its own plugin. \CGG{} knows nothing about internal functionalities inside plugins, either external (such as ffmpeg) or native plugins. And has no chance to do 
+any interpolation. Only the plugin can interpolate its own keyframes. And if you succeed to add plugin keyframe interpolation in some particular plugin, all the other (even similar in functionality) plugins will know nothing about it. So, each one out of dozen of plugin keyframes has to be implemented individually.
+
 \section{Default Keyframe}%
 \label{sec:default_keyframe}
 \index{keyframes!default keyframe}
@@ -265,20 +274,22 @@ The \texttt{keyframes $\rightarrow$ paste} \texttt{keyframes} function may then
 \label{sec:keyframe_edit_params_plugin}
 \index{plugins!preset edit}
 
-Keyframe values can be set using the various plugin \textit{plugins: show controls} \index{plugins!show controls} (magnifying glass) icon on the plugin track (figure~\ref{fig:parameters}).  It is possible to see all of the keyframe data in a raw format using the \textit{Edit Params} popup menu item which you will see when you right mouse click the keyframe icon on the timeline.  The keyframe data is stored in xml format, and the \textit{edit params} feature allows you to view and modify the xml data directly.  This normally should not be necessary since the plugin's control gui displays the intended parameters, but this will let you view and specify just about anything that can be specified in xml.  There is no validation checking of the modified data.
+Keyframe values can be set using the various plugin \textit{plugins: show controls} \index{plugins!show controls} (magnifying glass) icon on the plugin track (figure~\ref{fig:parameters}).
 
 \begin{figure}[htpb]
-    \centering
-    \includegraphics[width=0.7\linewidth]{parameters.png}
-    \caption{Keyframe Parameters window for a Color 3 Way plugin added to the video track}
-    \label{fig:parameters}
+       \centering
+       \includegraphics[width=0.7\linewidth]{parameters.png}
+       \caption{Keyframe Parameters window for a Color 3 Way plugin added to the video track}
+       \label{fig:parameters}
 \end{figure}
 
+It is possible to see all of the keyframe data in a raw format using the \textit{Edit Params} popup menu item which you will see when you right mouse click the keyframe icon on the timeline.  The keyframe data is stored in xml format, and the \textit{edit params} feature allows you to view and modify the xml data directly.  This normally should not be necessary since the plugin's control gui displays the intended parameters, but this will let you view and specify just about anything that can be specified in xml.  There is no validation checking of the modified data.
+
 \section{Generate Keyframes while Tweaking / Automatic Keyframe Mode}%
 \label{sec:generate_keyframe_tweaking}
 \index{keyframes!automatic mode}
 
-Tweaking is defined as changing a parameter while playing -- it can be small changes or small motion increments performed in a series.  These changes are recorded as a series of new keyframes on the timeline.  Enable automatic keyframe mode by enabling the automatic keyframe toggle, that is \textit{Generate keyframes while tweaking}.  In automatic keyframe mode, every time you tweak a key-framable parameter it creates a keyframe on the timeline.  Since keyframes affect playback, you should enable generate keyframes just before you need a keyframe and disable when your parameter changes are complete.  So turn on when ready to make changes and turn off when done!
+Tweaking is defined as changing a parameter while playing -- it can be small changes or small motion increments performed in a series.  These changes are recorded as a series of new keyframes on the timeline.  Enable automatic keyframe mode by enabling the automatic keyframe toggle, that is \textit{Generate keyframes while tweaking}.  In automatic keyframe mode, every time you tweak a key-framable parameter it creates a keyframe on the timeline (visible by activating the respective \textit{Camera x, y, z} and \textit{Projector x, y, z} curves).  Since keyframes affect playback, you should enable generate keyframes just before you need a keyframe and disable when your parameter changes are complete.  So turn on when ready to make changes and turn off when done!
 
 Also, before making a change, be sure to check the \textit{View} pulldown and make the desired parameter visible with the enable checkmark.  The location where the automatic keyframe is generated is under the insertion point.  If the timeline is playing back during a tweak, several automatic keyframes may be generated as you change the parameter.  When automatic keyframe mode is disabled, adjusting a parameter adjusts the keyframe immediately preceding the insertion point.  For example, if two fade keyframes exist and the insertion point is between them, changing the fader changes the first keyframe.
 
@@ -286,9 +297,9 @@ Also, before making a change, be sure to check the \textit{View} pulldown and ma
 \label{sec:compositor_keyframes}
 \index{keyframes!compositor}
 
-Camera and projector translation is represented by two parameters: \textit{x} and \textit{y}, making it difficult to adjust with curves.  \CGG{} solves this problem by relying on automatic keyframes.  With a video track loaded, move the insertion point to the beginning of the track and enable automatic keyframe mode.  Move the projector slightly in the compositor window to create a keyframe.  Then go forward several seconds.  Move the projector a long distance to create another keyframe and emphasize motion.  This creates a second projector box in the compositor, with a line joining the two boxes. The joining line is the motion path.  If you create more keyframes, more boxes are created.  Once all the desired keyframes are created, disable automatic keyframe mode.
+Camera and projector translation is represented by two parameters: \textit{x} and \textit{y}, making it difficult to adjust with curves.  \CGG{} solves this problem by relying on automatic keyframes.  With a video track loaded, move the insertion point to the beginning of the track and enable automatic keyframe mode.  Move the projector slightly in the compositor window to create a keyframe  (visible by activating the \textit{Projector x, y, z} curves).  Then go forward several seconds.  Move the projector a long distance to create another keyframe and emphasize motion.  This moves the projector box to its new position.  If you create more keyframes, we can move the box several times.  Once all the desired keyframes are created, disable automatic keyframe mode.
 
-Dragging the auto curve with tweaking off, adjusts the previous keyframe.  With tweaking on, if no keyframe is at the timeline position, then a new one is created at that position and the modification value is applied.  If you are halfway between two keyframes, the first projector box is adjusted while the second one stays the same.  The video does not appear to move in step with the first keyframe.  This is because halfway between two keyframes, the projector translation is interpolated.  In order to set the second keyframe you will need to move after the second keyframe.
+Dragging the auto curve with tweaking off, adjusts the previous keyframe.  With tweaking on, if no keyframe is at the timeline position, then a new one is created at that position and the modification value is applied.  If you are halfway between two keyframes, the value from the previous box position will be altered, while the second is not changed. The video does not appear to move in step with the first keyframe.  This is because halfway between two keyframes, the projector translation is interpolated.  In order to set the second keyframe you will need to move after the second keyframe.
 
 Image translation, motion direction, and speed determine the results.  Motion varies based on the  interpolation type that is set, for example, if set to Linear, the result will be uniform straight line motion.  Smooth is the default so that interpolation will generate curved lines with control points.  Ctrl-drag the endpoint of the control handle to adjust the curved slope.