11. SMIL 2.0時間操作モジュール

11.1 導入

このモジュールは,要素における時間の速度又は進度を制御するような時間的振る舞いにおける高度な操作のための新しい属性を導入する。これらの時間操作は,特にアニメーション及び非線形又は離散メディアに適合する。すべての連続的なメディア型が全面的に時間操作をサポートするとは限らない。 例えば,ストリーミングMPEG 1ビデオは一般に逆方向再生することをサポートしない。後退機構はこれらのメディア用に記述される。

新しい四つの属性は,要素の速度に対する制御を含むSMILタイミングモジュールへの時間操作のサポート,及び加速と減速のサポートを加える。 全面的なタイミング及び同期への影響が記述される。 定義は,時間操作をサポートすることができないメディアプレーヤ用の合理的な後退機構のために提供される。

再生速度の制御用のアクセシビリティ要件は速度制御と関係があるだけでなく,DOMインタフェースのような他の機構によって制御してもよい。

11.1.1 背景

タイミングの共通アプリケーションは,アニメーションをサポートする。 SVGについてのSMILタイミングの最近の統合は,この領域に着目したよい例である。 より一般的な感覚のアニメーションは,基礎的な変換の時間に基づく操作を含み,プレゼンテーションに適用されている。 サポートされた効果のいくつかは,CSSのようなスタイルフレームワーク内のプレゼンテーション操作のホストと同様に動き,拡大縮小,回転,色操作を含む。

アニメーションは,基本的な構造をモデル化するためにしばしば使用される。 多くのアニメーションの使用事例は,変化率を制御し,そして共通の機械的な現象をエミュレートする単純な効果を適用するための単純な方法なしで記述することが困難又は,ほとんど不可能とする。 アニメーション振る舞いにそれら自身の機構を構築することが可能な間,すべてのアニメーション拡張がこのサポートを複写することを要求する。これはフレームワークを拡張しカスタマイズすることをより困難にする。 さらに,分散されたモデルは,任意のアニメーション振る舞いがこれらの機構のために個々の構文及びセマンティクスを導入することを許可する。 これが導入されることによって生じる矛盾が制作モデルを学習することをより困難にし,また任意の制作ツール設計者の仕事を同様に複雑にする。 最後に特別な要素ごとのモデルは,構造化したアニメーション(例えば同期アニメーション振る舞いの時間コンテナへの時間操作の適用)上のそのような機構の使用を排除する。

必要なサポートを提供するためのはるかに単純なモデルは,タイミングフレームワークで必要とされる機能性を中心に集める。 これは,時間の要素がすべてこの機能性をサポートすることを許可し,制作者及びツール設計者に一貫したモデルを提供する。 変化率及び関連する機能性を一般化する最も直接な方法は与えられた要素のための時間の変化率を変換する。 これは要素時間(時々“局所的時間”と呼ばれることもある)のための一般的なフレームワーク及び,一つの要素上の時間から別の要素上の時間と変換するサポートの拡張とする。 したがって動きアニメーションの変化率を制御するための,一時的な変換は動き要素のために時間(つまり進行状況)の変化率の調整を適用する。 時間が普通のプレゼンテーション時間より速く経過すると計算される場合,動きはより速く動作するように見える。 同様に,時間の変化率が動的に調節される場合,加速と減速の効果は容易に得られる。

時間操作は,時間を連結するモデルに基づく。 すなわち,各々の要素は,その活性及び単純時間を親単純時間の変換として定義する。 これは,ルート時間コンテナから時間グラフで各々の"葉"へ再帰する。 時間コンテナが時間操作を定義する場合,それらが親時間コンテナでは時間を定義するので,これは,時間コンテナのすべての子どもに反映される。 次の例において,シーケンス時間コンテナは普通の速度よりも2倍速く(つまりそのそれぞれの時間コンテナより2倍速く)動作されるように定義される。

<seq speed="2.0">
   <video src="movie1.mpg" dur="10s" />
   <video src="movie2.mpg" dur="10s" />
   <img src="img1.jpg" begin="2s" dur="10s">
      <animateMotion from="-100,0" to="0,0" dur="10s" />
   </img>
   <video src="movie4.mpg" dur="10s" />
</seq>

シーケンスの全内容が2倍速く再生する(つまり進行状況)ことが観測される。 各々のビデオの子が普通の進度の2倍で再生することが観測され,そして5秒間だけ続く。 画像の子は1秒間遅れることが観測される(指定された半分の開始オフセット)。 画像のアニメーションの子は,さらにシーケンス時間コンテナからの速度操作を"継承"し,動きは普通の2倍の速さで動作し,画像の最終位置から5秒だけ表示される。 単純持続時間及びシーケンスの活性接続時間は21秒(42秒を2で割った)になる。

11.1.2 サポートの概要

三つの一般的な時間操作が定義される。

accelerate decelerate
これらの二つの属性は,共通の機械的な動きをシミュレートするために,要素単純時間における進行率を制御するための単純な簡略記述を提供する。 単純モデルは単純持続時間における開始点の休止からの加速及び(又は)単純持続時間の終了点で休止する減速を許可するために提示される。 このモデルは,単純持続時間を保存するという長所がある。モデルは,"イーズイン(ゆとりをもって現れる),イーズアウト(ゆとりをもって消える)"として制作者が時々提示される。
autoReverse
"true"と設定した場合,まず順方向,そして逆方向に再生される単純持続時間をもたらす。これは宣言された又は暗黙的にされた単純持続時間を2倍にする。autoReverseのサポートは,"順方向再生し、次に逆方向再生する"として制作者にしばしば提示される。
speed
要素活性時間の変化率(又は速度) を制御すること。速度は,親時間コンテナの進行率に関する活性持続時間の要素における進行率を有効に拡大縮小する。

時間の速度が時間操作のうちのどれかでフィルタされる場合,文書時間は,どのように要素単純時間に変換されるかどうかに影響する。 これを理解するためには,与えられた進度で進行状況要素の内容について考える。 未変更の入力時間値は要素内容のための蓄積進行状況に変換される。要素進行状況は,フィルタされた時間として表現される。 これは,任意の進度(加速と減速を含んで)の効果が任意の時間付けされた子どもに連結することを許可する。 要素進行状況が,一定の進度(例えば2の速度値を備えた)で進んでいる場合,フィルタされた時間計算は単に進度を掛けた入力時間とする。 進度が変わっている場合,フィルタされた時間は変化する進度の積分として計算される。 与えられた入力時間でフィルタされた時間を計算するために使用される方程式は,要素時間へ文書時間の変換の際に表される。

accelerate及びdecelerateの機能は,単純持続時間上で局所的に適用され,要素の単純持続時間か活性持続時間の長さ以上の副効果をもっていない。 時間コンテナに適用された場合,accelerate及びdecelerateは,時間コンテナに単純持続時間及びそのすべての時間付けられた子どもを適用し,時間付けられた子どもの観測された持続時間に影響する。

autoReverseの機能は,単純持続時間に直接適用され,明示又は暗黙の単純持続時間を2倍にする。 したがって,単純持続時間が5秒と定義する場合(普通のタイミングセマンティクスに従って),autoReverseに"true"と設定する事は単純持続時間を10秒にする。 したがって,活性持続時間が,単純持続時間(例えばrepeatCountの指定によって)で定義される場合,autoReverseはさらに活性持続時間を2倍にする。 しかしながら,活性持続時間が,単純持続時間(例えば繰返し持続時間,終了値及び/又は最小値・最大値に指定される)とは無関係に定義される場合,autoReverseは活性持続時間に影響しなくてもよい。 活性持続時間は,タイミング及び同期モデルのセマンティクスによって計算される。ただ一つの変更は修正済の(2倍になった)単純持続時間値を使用する。

speed属性は,要素のための要素時間の進行を拡大縮小する。 時間コンテナに適用された場合,時間コンテナの内容は拡大縮小された速度でまとまって再生する。要素が普通の2倍の速さで再生する場合,観測された単純持続時間は普通の半分の長さだけとする。 これは要素のためにどのように定義されるかに依存し,活性持続時間に影響してもよいし,又は影響しなくてもよい。属性repeatDurmin及びmaxは要素の活性時間をすべて測られ,そして関連する値は,要素速度によって拡大縮小される。 同様に,単純持続時間は拡大縮小されるためrepeatCountによって定義された要素も拡大縮小される。 しかしながら,要素がend属性を指定する場合,end値は要素速度には影響されない。end 属性に対するオフセット値は親単純時間において測定されるため要素速度の影響から除外される。 他の値(同期弧値やイベント値などを含んでいる)は親単純時間に変換されなければならなく,そして同様に要素速度に影響されない。

要素上のspeed属性が要素の開始時間に影響しないことに注意すること。begin属性に対するオフセット値は親単純時間において測定され,そして要素速度の効果から除外される。(開始時間又は他の先祖時間コンテナ上の任意の時間操作によって影響される。)

これらの時間操作が時間コンテナに適用される場合,時間操作は時間コンテナ進行の全内容の方法に影響する。 つまり,時間操作は時間コンテナにおける時間付けられた子孫すべてに影響する。大域的時間が要素時間に変換されるにつれて,各先祖の時間操作は,時間グラフ及び進行のルートから始めて要素用の親時間コンテナまで適用される。 したがって,与えられた要素用の単純時間及び活性時間は,要素自身で定義された任意の時間操作と同様にすべての先祖時間コンテナの時間操作の機能として究極的に計算される。これはタイミングモデル算術の詳細においてより完全に説明される。

要素の実質縦続速度は,要素及びその要素の先祖の時間コンテナのすべてに関するあらゆる時間操作の関数とする。記述された値から直接計算されるはずだが,速度も任意のポイントでの時間の微分(進行率)と見なすことができる。

このモデルは,非線形メディア(また"ランダムアクセス"メディアと呼ばれている)と一緒に"標本化"時間グラフに基づいた実装に対してよく役に立つ。 時間操作モデルはグラフィックス及びアニメーションで一般に使用されるモデルに基づき,アニメーショングラフはアニメーション用の現在値を計算するために"標本化され",そして関連するグラフィックスがレンダリングされる。 いくつかの線形メディアプレーヤは,時間操作(例えば普通の再生速度で再生するだけのプレイヤ)でうまく動作できない。 後退機構は,時間操作モデルの純粋に数学的手法で計算される時間グラフ及び同期基底値時間によって記述されるが,個々のメディア要素は単に普通の速度で再生,又は静止フレームを表示する。

animate及びanimateMotionのような下記の例のいくつかはアニメーション要素を含む。これらの要素はSMIL 2.0のAnimationに定義される。タイミング及び同期 と関連する付加的な要素及び属性は,SMIL 2.0のタイミングに記述される。

11.1.3 属性構文

加速(accelerate)属性及び減速(decelerate)属性

これらの属性は,単純持続時間内の要素時間の単純加速及び減速を定義する。値は単純持続時間(つまり0と1の間で)の比率として表現され,これらの属性の使用によって単純持続時間の長さが変更されないそのようなものを定義する。 単純持続時間内における普通の再生速度は加速及び減速の期間を補うために増やされる(このようにして,単純持続時間は保持される)。 修正された速度は動作率と名付けられる。 単純持続時間の進行状況として(つまり再生),加速は0からある動作率まで進行率を増加させる。 進行状況がその動作率から0まで遅くなる場合,進行状況は減速過程までその動作率で継続する。これは次の図1で表される。

Diagram relating input time to element progress

<animation dur="10s" accelerate="0.3" decelerate="0.3" .../>

図1: 進行率上の加速および減速の効果。 これらの属性は単純持続時間に適用する。これらの属性が繰返し振る舞いと結合する場合,加速及び(又は)減速がそれぞれ反復を繰り返すことになる。

accelerate = " number "
要素のための時間の単純な加速を定義する。 要素時間は,開始点の0から単純持続時間の指定された比率を超え動作率まで加速する。
デフォルト値は0(加速無し)とする。
文法に合った値は0から1(0,1を含む)の間の浮動小数点とする。
decelerate = " number "
要素のための時間の単純な減速を定義する。 要素時間は,単純持続時間の指定された比率を超え動作率から単純持続時間の終了点の0まで減速する。
デフォルト値は0(減速無し)とする。
文法に合った値は0と1(0,1を含む)の間の浮動小数点とする。

accelerate及びdecelerateの合計は1を超えてはならない。accelerate及びdecelerate属性の個々の値が0から1の間であり,そして合計が1より大きい場合, accelerate及びdecelerate属性の両方は無視され,そして時間要素は属性がまったく指定されないかのように振る舞う。

要素の単純持続時間が解決されない場合,又はそれが不定と解決される場合,accelerate及びdecelerate属性は無視される。

計算された動作率の詳細のため,そしてaccelerate及び(又は)decelerateが指定される場合,親単純時間から要素単純時間に切替えるため,要素の動作率の計算及び要素時間への文書時間の変換を見ること。

この例で,動き経路は最初の2秒以上の停止から加速し,4秒間の普通の進度より速く動作し,そして次に, 最後の2秒間に滑らかに減速して止まる。これは,動きアニメーションをより現実的に見せる。

<img ...>
    <animateMotion dur="8s" accelerate=".25" decelerate=".25" .../>
</img>

次の例で,画像は画面外左から"フライインする",そして次に画像の速度を"イーズインする"ために最後の何秒間を減速する。 これは位置決め(例えばCSS位置決め,又はSMILレイアウトでのregionの位置)をサポートするレイアウトモデルを仮定する。

<img ...>
    <animate attributeName="left" dur="4s" decelerate=".25" 
             from="-1000" to="0" additive="sum" />
</img>

autoReverse属性

別の共通な機械的現象は,処理の進行及び逆行とする。いくつかの例は次のものを含む。

非常に多くの共通使用事例は修正された局所的時間(前述の例のような)の繰返しを適用し, この機能は単純持続時間の修正としてモデル化される。そのため,autoReverseは明示又は暗黙に単純持続時間を2倍にする。 繰返し振る舞いと結合した場合,各々の繰返される反復が順方向に一度,逆方向に一度再生する。

autoReverse = " true | false "
autoReverse再生モードの制御。
引数値はBooleanとする。
デフォルト値はfalseとする(つまり普通に再生する)。

これが時間コンテナに適用される場合,それは時間コンテナを順方向にその後,逆方向に再生する。時間コンテナを逆方向に再生することのセマンティクスは時間コンテナ上の時間操作の関係に詳述される。

単純持続時間が解決され,そして完了するまで,autoReverse時間操作は逆方向に再生し始めないが,解決した単純持続時間を最初に要求しない。 単純持続時間が未解決の暗黙的単純持続時間(本来的メディア持続時間のような)によって定義される場合,これは起こることができる。 この場合,暗黙的単純持続時間が解決される(又はSMIL 2.0のタイミングに記述されるような活性持続時間又は親時間コンテナが単純持続時間を切り抜く)まで,要素は順方向に再生し続ける。 暗黙的単純持続時間が活性持続時間の終了の前に解決される場合, 単純持続時間は2回この暗黙の持続に解決され,及び暗黙的単純持続時間は逆方向に再生する。

autoReverse操作の第2の部分を含めて,要素が逆方向に再生する場合はいつでも単純持続時間が解決されければならない。速度属性も参照すること。

この例において,動き経路は,5秒間順方向に(右に要素を20画素分だけを移動),そして次に,5秒間逆方向(元の位置へ20画素分もどるまで)にアニメーション化する。 繰返し振る舞いは,この動作をもう2回繰返し,最終的に元の位置に要素を置く。 アニメーションの計算上の単純持続時間は10秒で,活性持続時間は30秒とする。 .

<img ...>
    <animateMotion by="20, 0" dur="5s" autoReverse="true" repeatCount="3"/>
</img>

次の例において,動き経路は前述のように作用するが15秒早く,又は画像を利用者がクリックした場合終了する。 要素が15秒(利用者がクリックしない場合)で終了する場合,動き経路は定義さ れた経路の最後(20画素右)に要素を置く。 活性持続時間はrepeatDur及びendによって定義されるので,活性持続時間はこの場合autoReverse属性によって影響を受けない。 fillのセマンティクスは,時間操作によって変更されない。 活性持続時間の終了点でのメディア状態は任意のfill期間に使用される。 活性持続時間の終了点は順方向再生間隔を通じて方法の一部又は,逆方向再生間隔を通じて方法の一部になってもよい。

<img ...>
    <animateMotion  by="20, 0" dur="5s" autoReverse="true" 
         repeatDur="15" end="click" fill="freeze"/>
</img>

accelerate及びdecelerate属性はautoReverseと結合することができ,そして変更していない単純持続時間に適用される。 例えば,次のようにする。

<img ...>
    <animateMotion by="20, 0" dur="4s" autoReverse="true" 
       accelerate=".25" decelerate=".25" />
</img>

これは,元の位置から右に移るとともに1秒間加速する,わずかに2秒間普通より速く移動し,次に右へ20画素の位置に近づくとともに1秒間減速する経路についてのある種の弾性の動きを生み出す。 それは,元の位置の後方に加速し,元の位置で逆方向の動き経路の端へ減速する。

回転(SVGのanimateTransform要素に基づいた)における次の例は,さらにacceleratedecelerate及びautoReverseの結合を実証する。 それは,対象(対象が,頂点で変換の原点がある振り子の形状を仮定する)上の単振り子振動をもたらす。

<animateTransform type="rotate" from="20" to="-20" dur="1s" repeatCount="indefinite"
        accelerate=".5" decelerate=".5" autoReverse="true" ... />

振り子は,1秒間で弧にそって振れ,それから1秒間で戻ってくる。 加速及び減速は未変更の単純持続時間で適用され,またautoReverseはこの修正された単純持続時間を順方向そしてその後,逆方向へ再生する。 効果は,初めから終わりまで振降ろしで加速し,次に振上げで減速する。 autoReverse特徴はその後,逆方向の同じアニメーション(例えば,単純持続時間)再生し,開始位置へ振り子が戻る。 修正された単純持続時間全体は,連続的前後アニメーションの生産を繰返す。 現実世界の振り子の動きの本物のように見えるアニメーションを生成する。

速度属性

speed属性は, 親時間コンテナに関連する再生の実効比率を速く又は遅くするために要素の局所再生速度を制御する。speed属性はすべての時限の要素上でサポートされる。 引数値は絶対的な再生速度を指定しないが,親時間コンテナの再生速度を基準とする。 指定された値は,すべての時間付けられた子孫を連結する。 したがって,par及びその子どものうちの一つが両方とも50%のspeedを指定する場合,子は普通の再生速度の25%で再生する。

speed = " number "
要素時間の再生速度を定義する。 文法に合った値は符号付浮動小数点の値とする。0の値は許可されない(無視される)。
デフォルトは"1.0"(速度の修正はない)とする。

0未満の値は許可され,そして要素を逆方向再生させる。 単純及び活性持続時間について十分な情報がある場合,要素は,逆方向再生だけすることができる。特に

要素に対する縦続速度値が負で,前述の二つの条件のどちらも合わない場合,要素は開始してすぐに終了する。 (例えば,それはあたかも活性持続時間を0と指定されたかのように振る舞う)。 min属性が指定されている場合,時間コンテナは初期状態で指定された最小持続時間凍結する。

タイミング計算に対する要素speedの効果の詳細は,タイミングモデル算術の詳細に記述されている。

次の動きアニメーションは対象を普通の2倍の速さで移動させる。

<animateMotion dur="10s" repeatCount="2" speed="2.0" path= ... />

対象は,5秒(単純持続時間(dur)/速度(speed)=10秒/2.0=5秒)で経路上を移動し,そしてこの動き(repeatCountが2に設定されいるので)を繰返す。活性持続時間はそのため10秒とする。

speedが時間コンテナに適用される場合,それは時間コンテナの時間軸によって進行率を拡大縮小する。 この効果が連結する。さらに子孫がspeed値を指定する場合,親速度及び子速度は結果を産出するために増加される。 例えば次のようとする。

<par speed=2.0>
   <animate begin="2s" dur="9s" speed=0.75 .../>
</par>

animate要素の観測された再生の進度は普通の再生速度の1.5倍(2.0*0.75==1.5)とする。 parが開始した1秒後,要素は開始し(beginオフセットは親speedによってだけ拡大縮小される),6秒後に(接続時間(dur)/速度(speed)=9/1.5=6)終了する。

次の例は,end に基づいたイベントが時間操作とどのように合成するか示す。

<par speed=2.0>
   <animate begin="2s" dur="9s" speed=0.75 
        repeatCount="4" end="click" .../>
</par>

これは第1の例のように振る舞うがanimate要素は,24秒(dur/縦続さ れたspeed = 9秒/(2.0 * 0.75) = 6秒,及び6秒 * 4回 = 24秒)の観測された時間で4回繰返す。 24秒より前でクリックした場合,要素はクリックした時点で終了する。 この変形は同期基底タイミングで実証される。

<par speed=2.0>
   <img id="foo" dur="30s" .../>
   <animate dur="9s" speed=0.75 
        repeatCount="4" end="click; foo.end" .../>
</par>

画像は15秒間再生する。animate要素は1.5(2.0*0.75)倍の再生速度において観測された進度で再生するが,画像が終了する場合15秒後に終了する。 観測された単純接続時間は6秒間(9秒を縦続された速度1.5で割る)になる。 アニメーションは,活性持続時間中に2.5回繰返す。 アニメーションはspeed値をもつが,これは同期基底タイミングのセマンティックに影響しないことに注意すること。 同期基底,イベント基底,掛け時計又はメディアマーカ時間が起こるのが観測 された場合,それはその実際の時に使用されるいかなる場所でも適用される。 (変換は内部に適用されるが,例えば,同期基底要素活性時間から親単純時間への変換―要素時間への文書時間の変換も参照すること)

前述の例において,parコンテナのデフォルト持続時間がendsync="last"として定義されることを注意すること。 要素の観側された終了が親時間コンテナ上の正確な単純持続時間を生成するという意味で,この振る舞いは速度修正に影響されない。

次の例が,オフセット時間拡大縮小の重要な効果を例証する。

<par speed=2.0>
   <img id="foo" dur="30s" .../>
   <animate begin="2s" dur="9s" speed=0.75 
        repeatCount="4" end="foo.end+6s" .../>
</par>

前述のように,画像は15秒間表示する。 開始オフセットが,要素速度によってではなく親時間コンテナ速度によって拡大縮小されるので,animate要素は1秒に開始する。animate要素は,18秒(時間コンテ ナ速度2.0で6秒を割り,15秒に足す)で終了する。 "foo.end"に加えられた"6秒"のオフセットは,要素速度ではなく親時間コンテナ速度によって拡大縮小される。

11.1.4 タイミングモデル計算の詳細

タイミング及び実世界時計時間

時間操作属性が単純持続時間内の速度及び(又は)変化率を調節するために使用される場合,セマンティクスを与えられた間隔の時間の変化率の変更とみなすことができる。 等価なモデルは与えられた間隔によるプレゼンテーション進行状況の中で変化率を変更する属性とする。 二つの解釈は数学上等価であり,また重要な点は,要素の単純持続時間が実世界時計時間として解釈してはならないために定義されるような"時間"についての概念とする。 SMIL時間操作(SMILタイミング及び同期に関する)のために,"時間"は実世界時計時間とはずいぶん異なって振る舞うことができる。

共通定義

次の議論では,いくつかのシンボルは簡略記述として使用される。

accelerateの値をadecelerateの値をbとする。 両方は値0〜1(浮動小数点)をとり,そして合計は1を超えることはない。

durにタイミング及び同期モデルによって定義されている単純持続時間の値とする。 これは単にdur属性ではなく実際の単純持続時間とする。 この値は,任意の時間操作の効果を説明しない。

加速過程の持続時間をdacc,及び減速過程の持続時間ddecとする。 これらの値は,修正されない単純持続時間の機能として計算される。 加速及び減速のための記述されたモデルで,時間が加速及び(又は)減速するのを観測された持続時間がdacc及びddecよりそれぞれ大きくてもよいことに注意すること。

dacc = dur * a

ddec = dur * d

要素の動作率の計算

単純持続時間を保存する手段として,加速及び減速を説明するために単純持続時間を通して速度を増加させなければならない。 単純持続時間の経路上で動作率を計算するため,次の定式が使用される。 動作率rは次のとおりとする。

r = 1 / ( 1 - a/2 - b/2 )

したがって,例えばaccelerateの値が1の場合(つまり単純持続時間全体を通して加速する),動作率は2(普通の2倍の再生速度)とする。

r(t)は,単純持続時間内のどんな時間tでも,加速及び減速により速度修正をする。 パラメタ時間tは加速及び減速を説明するにはまだ修正してはいけない。 後述の要素時間への文書時間の変換のように,パラメタ時間ttsu'空間とする。 速度修正は動作率rの機能として次のように定義される。

( 0 <= t < dacc )の条件の加速間隔では
r(t) = r * ( t / dacc )
とする。

( dacc <= t <= ( dur - ddec ) )の条件で動作率の間隔では

r(t) = r
とする。

( ( dur - ddec ) < t <= dur ) の条件で減速間隔では

r(t) = r * ( dur - t ) / ( ddec )
とする。

動作率は,任意の加速及び減速を説明するために適用される修正についてだけ記述する。 これは,親時間コンテナから継承した速度と同様任意の要素速度とも合成する。 合成された,又は"実質"の速度は要素の実質縦続速度の計算に定義される。

要素時間への文書時間の変換

文書時間から要素時間へ変換するために,元の時間はルート時間コンテナから要素のための親時間コンテナまでそれぞれの時間コンテナの単純時間に変換される。 この再帰的なアルゴリズムは,親単純時間から要素活性時間及び要素単純時間まで変換の単純モデルを考慮に入れる。 第1ステップは要素活性時間を計算し又,第2ステップは要素単純時間を計算する。

これらのステップは,時間操作機能性とは独立しているタイミングモデルに適用する時間変換のための,より単純で一般的なモデルに基づく(SMIL 2.0のタイミングを参照すること)。 後述のステップは時間操作のセマンティクスを考慮に入れて,時間の変換のために修正された算術について記述する。

後述のステップは,関連する時間が解決され不定ではないと仮定する。 要求された時間が解決されないか不定の場合,変換は定義されず動作することができない。

フィルタされた活性時間の計算

要素速度のセマンティクスを反映するために,要素活性時間が調節されなければならない。 調整された時間はフィルタされた活性時間と呼ばれ,そしてタイミングセマンティクスが参照する"要素活性時間"の要素として使われる。 autoReverse及びaccelerate/decelerate属性は,フィルタされた単純時間の計算にだけに影響し,したがって,このステップでは再生に入らない。

入力時間は親単純時間においての時間とする。 これは要素活性持続時間に正規化され,蓄積同期化オフセット(蓄積同期化オフセットに記述)に合わせて調節する。

tpsを親単純時間においての時間とし,Bを開始時間とし,そしてOを親単純時間で測定された要素のために蓄積同期化オフセットとする。

任意の子要素においてフィルタされていない活性時間tauは次のようとする。

tau = tps - B - O

与えられたフィルタされていない活性tau,フィルタされた活性時間tafは要素の速度(speed属性で指定された値,又はデフォルト値,及び実質縦続速度ではない)における機能だけとする。

(speed > 0 )の場合 例えば局所速度の進行方向が順方向の場合
taf = tau * speed

それ以外の場合  例えば局所速度の進行方向が逆方向の場合

taf = AD - tau * ABS( speed )

期待されるように,速度値が1(デフォルト)とする場合,この二つは同一であり,よってtaf = tauとする。 速度が0未満(進行方向が逆方向)とする場合,活性持続時間は活性持続時間の終了点から0に向けて進む。

フィルタされた単純時間の計算

autoReverse及びaccelerate/decelerate属性のセマンティクスを反映するために,要素単純時間を調節しなければならない。 調整された時間はフィルタされた単純時間と呼ばれる。 フィルタされた単純時間はフィルタされた活性時間の機能として定義され,したがって要素におけるすべての時間操作を反映する。

要素単純時間はメディア要素のための動作時の同期を確立するか,アニメーション機能の入力値,又は標本化時間を計算するために使用される時間とする。 要素が時間コンテナとする場合,さらにこれは時間コンテナ(時間コンテナ要素の単純時間として)のすべての子どもによって見られる時間とする。

入力時間はフィルタされた活性時間tafとする。

dur'をautoReverse属性の効果を説明する修正された単純持続時間とする。 それは以下のように計算される。
autoReverseがfalseの場合

dur' = dur

それ以外(autoReverseがtrue)の場合

dur' = dur * 2

フィルタされた単純時間を計算する手順は次に記述される。

  1. フィルタされていない単純時間tsuを計算し,任意の繰返し振る舞いを説明する。

    繰返し振る舞いがない場合

    tsu = taf

    他に,修正された単純持続時間dur'は固定し,変えない場合(理想的な場合)

    tsu = REMAINDER( taf, dur' )

    ここでREMAINDER( t, d )(t - d*floor(t/d))として定義される。

    他に,修正された単純持続時間dur'が反復を繰返すことから反復を繰返すことが変わる場合,又はそれが分からない場合,フィルタされていない単純時間は最も最近の反復の開始時間からちょうど計算される―これをtlast-repeatと呼ぶ。 他のある機構(endsync論理又はメディアプレイヤのような)は単純持続時間が終了し,又はtlast-repeatの値を再設定する場合,注意しなければならない。 要素がまだ繰返していない場合,tlast-repeatの値は0が使用される。

    tsu = taf - tlast-repeat
  2. autoReverse振る舞いを説明する。autoReverseがfalseの場合 tsu' = tsu.

    また,autoReverseがtrueの場合(次のステップが変更してないdur'ではなく持続時間durを使用するのを注意すること。)

    tsu < durの場合
    tsu' = tsu

    また( tsu >= dur )の場合

    tsu' = dur - ( tsu - dur ) = 2*dur - tsu
  3. 加速及び(又は)減速の振る舞いを説明する。 これは入力tsu' (ステップ1及び2の結果)としてとる。
フィルタされた単純時間tsfは, 入力時間tsu'及び0からtsu'までの間隔に関する効果での動作率の関数として計算される。 フィルタされた単純時間は入力時間までの 蓄積進行状況であり,加速率,動作率及び減速率の積分として計算される。 加速率及び減速率が一定とするので,積分は加速と減速の値によって定義された3つそれぞれの間隔における平均進行率の関数を単純化する。 下記のステップは,入力時間及び平均進行率をかけることにより,フィルタされた時間を計算する。 加速間隔の中で,加速が一定で,進度が0からrに変わるため,平均進度は次式の上に定義された瞬間の進度r(t)のちょうど1/2とする。
平均進度 = (r(t) + r(0) ) / 2) = r(t)/2

減速間隔では,平均進度が同様に計算される。 動作率の間隔では,進度が一定であり,平均進度は動作率と等しい。

加速間隔で,(0 <= tsu' < dacc)の場合,フィルタされた単純時間は加速間隔中に平均動作率をかけた入力時間とする。

tsf = tsu' * r(tsu') / 2

動作率の間隔で,( dacc <= tsu' <= ( dur - ddec ) )の場合フィルタされた単純時間は,加速及び動作率の間隔での入力時間及び進度から計算される。 これは,動作率間隔内の進行に加速間隔における蓄積進行状況を加える。

tsf = dacc * r / 2  + ( tsu' - dacc ) * r

    = r * ( dacc / 2  + ( tsu' - dacc ))

    = r * (  tsu' - dacc / 2 )

減速間隔で,( ( dur - ddec ) < tsu' <= dur )の場合,フィルタされた単純時間は,三つの間隔すべての入力時間及び進度から計算される。 これは,加速間隔における進行の合計,動作率間隔内の進行及び減速間隔内の進行の合計を合計する。

表現を単純化するために,tdec (減速間隔で費やされた時間)を定義する。

tdec =  tsu' - ( dur - ddec )

さらに,減速間隔内に比例する持続時間を次のように定義する。

pd =  tdec / ddec

減速間隔内のフィルタされた時間は次のとおりとする。

tsf = dacc * r / 2  
          + ( dur - dacc - ddec ) * r  
          + tdec * (( r + r*(1 - pd )) / 2 ))
     = r * ( dur - dacc / 2 - ddec 
   
          + tdec * ( 2 - pd ) / 2 )

要素時間から文書時間への変換

要素時間空間から別の時間空間に変換するために,第1の要素 te1における時間は最初に両方の要素を含んでいる最も接近している先祖時間コンテナ上の単純時間に変換されなければならない。 要素時間から親時間に変換することは,前述のプロセスの逆とする。 また,それは再帰的で,要素単純時間から要素活性時間,そして要素活性時間から親単純時間の変換について記述されている。

要素単純時間から要素活性時間に変換するために,最も最近の反復における開始時間,tlast-repeatが必要となる。 要素が繰り返さないか,又はまだ繰り返していない場合,tlast-repeatの値は0が使用される。

ta = ts + tlast-repeat

要素活性時間から親単純時間への変換は,結合した要素の開始点及び蓄積同期化オフセットが使用される。

tps = ta + B + O

純粋な変換が活性持続時間を強制的に固定すること及び埋めること(時間が凍結した場合)の効果を考慮に入れないことに注意すること。 時間空間の間で翻訳に使った大域的時間から局所的時間への変換はこれらの問題を無視しなければならなく,したがって要素の単純持続時間の前又は後ろとする局所的時間空間のリンク先の時間をもたらしてもよい。

現実に時間グラフを標本化する場合,変換の代わりの形式が使用される。 それが活性又は凍結の場合,時間コンテナは標本化されるだけであり,したがって,時間コンテナが開始する前に生成される時間はないであろう。 時間コンテナに対してのグローバル時間から局所的時間への変換が,時間コンテ ナが凍結している時間にもたらす場合,時間は活性終了点の値に強制的に固定される。

要素の実質縦続速度の計算

与えられた時間内の場所で,与えられた要素のための実質縦続速度はメディア要素のために正確な再生進度を設定するために使用することができる。 それは,時間操作モデルの中でそうでなければ直接使用される。

与えられた時間内における要素のための実質縦続速度speednc(t)を計算することは,speednc-parent(t)の中における時間の実質縦続速度,要素速度値のspeed及び任意の加速及び減速から計算された瞬間の動作率r(t)を組合わせる。 要素に時間親がない場合,speednc-parent(t)1を使用する。

親のための単純時間において実質縦続親速度が計算されることに注意すること。したがって,要素単純時間は親単純時間に変換されなければならない。 これは,前述の要素時間から文書時間への変換に記述されている

パラメタ時間値は単純持続時間の範囲内にある。 時間値を加速及び減速を説明するためには,まだ修正してはならない。 前述の議論の用語に,要素時間への文書時間の変換,パラメタ時間はtsu'空間にある。

与えられたフィルタされていない単純時間speednc(t)のための実質縦続速度tsu' は次のとおりとする。

speednc(tsu') =  speednc-parent(tsu') * speed * r(tsu')

この定義は,時間封じ込め階層のルートまで再帰的で,したがって,親及び他のすべての先祖時間コンテナの任意の速度設定を説明する。

11.1.5 メディア後退セマンティクス

理論的なモデルはすべての要素の局所的時間軸(どんなメディア要素も含む)は完全に非線形で,自由な弾道(つまり,どの瞬間のどの時点でも標本化することができ,観側された再生進度を即座に調節することができる)があることを仮定すると記述できる。 この理想的モデルは,純粋な表示的グラフィックス,テキストなどを含む多くのアプリケーションに適用することができる。 しかしながら,多くの共通のアプリケーションがさらに線形の振る舞い及び再生に対する他の制限を備えたメディアを含んでいる。 時間グラフが線形の振る舞いをもつメディア要素を含んでいる場合,時間操作モデルはこれらの実世界の制限を提供しなければならない。

モデルが線形と非線形の振る舞いを混ぜて,時間グラフをサポートし,理想的な非線形のモデルを支援することができないメディア要素用の特定のセマンティクスを定義する一方,それは混合のようなあらゆる時間グラフのために理想的な代替プレゼンテーションを与える目的ではない。 適切な状況の時間操作を適用するために,それは制作者と制作ツールに残される。 この節は線形メディア要素に関連したセマンティクスと同様に理想的モデルの両方を記述する。

理想的モデル

理想的モデルでは,局所的時間の変化率又は速度は任意に操作できる。 グラフはプレゼンテーションの時間の経過として進行(又はあなたの展望に依存して標本化される)する。 時間コンテナは各々のその子どもを順番に標本化し,その結果グラフのたどりは各々のレンダリングされた時間で動作される。 活性でもなく凍結してもいない要素は最適化としてたどりから除去してもよい。 たどりがグラフ(時間コンテナから子どもまで)を下って移動するとともに,個々の局所的時間軸は単に親時間スペースから局所的時間空間へ現在の時間を変換し,次に,変換された現在の時間に局所的時間軸を標本化する。 各要素が自身及びすべての子孫のための要素時間及び要素速度を変換するので,時間フィルタの速度及び影響が時間グラフを下って有効な縦続接続するのを注意すること。

これはタイミングモデル算術の詳細に算術モデルとして記述されるモデルとする。

線形メディアがこのモデルに加えられ,及び"現在の時間"(標本)たどりがメディア要素に出会う場合,メディア要素は実効的に特別の位置及び進度で"標本化する"ように命じられる。 線形メディアが任意の標本化ができないとすれば(つまり,任意の構造か標本 を直ちに探索して表示することができない),メディア要素プレイヤは理想的モデルと一致することができない。

多くのメディア要素が普通の再生速度以外で再生することができず,したがって,要求された速度を単に無視しなければならない。 要素再生として,それは,タイミング構文に定義された同期関係を備えた同期から外れる。 SMIL syncTolerance属性によって定義された範囲内で,理論的な時間軸の位置からの相違は無視してもよい。 しかしながら,この寛容以上の先の相違については,要素は同期外れと考えられる。 要素がsyncBehavior="locked"で定義される場合,再生エンジンは実行時に同期セマンティクス(また,これは恐らく望ましいプレゼンテーション再生を産出しない)を強化しようとするであろう。 線形メディア,又は線形メディアを含んでいる時間コンテナに時間操作を適用する制作者は,恐らく"canSlip"として線形メディア用のsyncBehaviorを指定したいと思う。

メディア要素上の時間フィルタのための後退

後退セマンティクスはメディアプレーヤ能力の大小に依存する。 あるメディア用のいくつかのプレーヤは,普通の再生進度でだけ順方向及び逆方向に再生し,他のものが普通の順方向再生速度だけサポートしてもよい。

要素速度(つまり縦続値)がメディア要素にサポートされない場合,メディ アは最も近いサポートされた速度"最大の努力"で再生することが望ましい。 要素が普通の再生速度より遅く又は速く再生できない場合,最も近いサポートされた再生速度は普通の再生速度になる。

どんな場合も,計算された単純持続時間は時間フィルタによって修正されるように考慮される。

clipBegin及びclipEndのセマンティクスは時間操作に影響されない。 clipBegin及びclipEndセマンティクスは,普通の順方向再生速度では常に解釈される。 時間モデルに適用された時間フィルタの効果の前に評価される。 これは,時間モデルとは独立しているメディア要素処理によって評価されることができるモデルと一致している。

後退セマンティクスにおける考察のオーサリング

この後退モデルでは,いくつかのメディア要素が,時間グラフによって定義され計算された速度で再生することができない。 後退セマンティクスは,メディア要素が時間グラフの残りについての視覚的な同期からなってもよい。 例えば,画像要素がビデオ要素が開始した10秒後に開始すると定義され,そして2.0の速度が両方の要素用の時間コンテナに適用される場合,画像要素は5秒後(10s/2.0)に開始する。 ビデオが普通の速度の2倍で再生できない場合,画像が現われる場合ビデオは 10秒になっていない,したがってプレゼンテーションは,同期が欠損するように見えてもよい。

時間操作が線形メディアと共に使用される場合,制作者は同期関係を定義するためにメディアマーカ値を使用することができる。 これは,後退する振る舞いにかかわらず"視覚的な"同期を保持することを補助できる。 メディアマーカ値がメディア中の特定のポイントが再生される場合に起こると定義されるので,このタイミングは計算された速度振る舞いではなく,メディアの実際の振る舞いを尊重するであろう。

時間コンテナ上の時間操作の関係

時間操作は時間コンテナを含む任意の要素に適用できる。 時間モデルのためにこの二つの主要な関係がある。

  1. 親の中で進行する時間の進度(普通の再生速度と関係のある)は観側された時間コンテナの子どものための開始及び終了時間に影響を及ぼすことができる。 グラフ中一つの要素の時間スペースから別の要素の時間スペースに変換する過程で,先祖時間コンテナ上の全ての時間操作は尊重されなければならない。 例えば時間コンテナが加速を定義する場合,時間が親単純接続時間の始めに,よりゆっくり移動するので,単純なオフセット条件で開始すると定義される子どもはその後(指定されたオフセットより)開始するのを観測される(実時間で)であろう。 さらにタイミングモデルの算術の詳細を参照すること。
  2. 時間コンテナが逆方向再生すると定義される場合,子どものための開始と終了時間は修正されたアルゴリズム(後述)で計算されなければならない。 これは,時間コンテナ上のspeed又はautoReverseの属性に関連がある(だけ)とは定義されない。 時間コンテナのための実質縦続速度が0未満の場合,修正されたセマンティクスが適用される。 また要素の実質縦続速度の計算を参照すること。
時間コンテナ上の負の速度の扱い

次の議論は開始及び終了のインスタンスリストのセマンティクス,またSMIL2.0のタイミングに記述された開始及び終了時間のリストの説明に基づく。

時間コンテナが逆方向(単純及び活性接続時間で逆方向再生するための一般的な制約に基づく)再生できる場合,子どもは逆順で定義された間隔で再生しなければならない。 これは,子の要素のための次の修正されたライフサイクルで遂行される。 次の記述では,間隔のための用語"開始"及び"終了"は順方向再生に関係して使用される。 動詞("間隔を開始する")として使用された場合,開始及び終了は活性及び不活性になる現在の間隔をそれぞれ適用する。 間隔は間隔の終了点から開始点に再生すると記述されている。 そして間隔の終了点で開始し間隔の開始点で終了する

  1. 再生するために最初の間隔を見つけること。 子要素は,再生するため最初の間隔(現実にインスタンス存在時間によって定義された最後の間隔)を計算するであろう。 これは早い物から遅い物へとの普通の順でインスタンス存在時間リストを考慮すること,及び時間コンテナ単純時間接続の終了前に開始する最後の間隔の計算することにより行われる。 順方向再生の最初の間隔を決定するのに使用されるように,同じ基礎的なアプローチは使用され,インスタンスリスト内の既知の時間を与えられた再始動セマンティクスを説明する。 これについて考える一つの方法は,子要素に関して,親単純時間が0から単純持続時間の終了点へ経過し,最後の間隔は使用する一つとする。 正確な時間が見つかり,現在の間隔が定義され,順方向再生中と同じ副作用があるまで,間隔はこのプロセスで作られない。 全ての時間依存は通知され,この現在の間隔に関連した新しいインスタンス存在時間を作成する。
  2. 再生間隔の休止。 時間が時間コンテナ単純接続時間の終了点から0へ進行すると共に,現在の間 隔は,活性化されることを待ってもよい。 時間コンテナ単純時間が現在の間隔の定義された終了時間に達する場合,現在の間隔は活性化するであろう。 現在の間隔が開始するのを待っている期間に,任意の十分な効果が適用されなければならない。 これは,定義された現在の間隔の終了における要素状態を使用した順方向再生と同様に定義される。
  3. 活性再生。 現在の間隔が活性化する場合,beginEventイベントが挙げられる。 イベントはたとえそれが間隔の終わりで活性しても,要素が活性したことを示すために挙げられる。 親単純時間が現在の間隔の開始時間に達するまで,現在の間隔は活性した状態とする。 一旦現在の間隔が活性化した場合,インスタンス存在時間へのどんな変更も現在の間隔に影響を及ぼさないであろう。 これは,普通の機構とはわずかに異なるが,機能性の重要な損失のないモデルに重要な単純化を提供する。 このセマンティクスは要素の親時間コンテナが逆方向再生している場合だけ適用される。
  4. 終了—次の間隔の取得。 現在の間隔が不活性となる場合,endEventイベントが挙げられる。 イベントはたとえそれが間隔の最初で不活性化しても,要素が不活性化したことを示すために挙げられる。 このポイントでは,要素がインスタンス存在時間リストを考慮し,次の間隔(ある場合)を計算する。 前述の過程1のように次の間隔が現在の間隔が開始する以前(ちょうど終了点)に開始されなければならない場合以外で,同じアプローチは使用される。 さらに,次の間隔の終了は,現在の間隔(ちょうど終了点)の開始以前に終了する再始動セマンティクスによって抑制される。 したがって,次の間隔(ある場合)は現在の間隔の開始の前に開始し,現在の間隔の開始以前に終了するであろう。 この間隔が親の開始の前で開始すると定義される可能性がある。
  5. これ以上の間隔はなし。 一度でも親単純接続時間で再生された終了点と開始点の間のすべてを定義され た間隔は,子要素のための現在のライフサイクルは完了する。

時間コンテナが逆方向再生すると定義される場合,子ども要素は速度又は再生の方向でさえ影響する追加の時間操作を定義してもよい。 子要素上のそのような追加の時間操作も前述のモデルに影響しない。

親(又は任意の先祖)時間コンテナが,ちょうど順方向再生を繰り返すか又は再開するごとに,ライフサイクルが再開される。

間隔の反対の評価のために,逆方向再生する場合,順方向再生する場合の順方向へ伝播される周期的な時間の依存性は正確に伝播しないであろう。 時間グラフ中のサイクルを評価し停止させるための規則は,時間操作のセマンティクスによって不変である。