12. SMIL 2.0遷移効果モジュール

12.1 導入

SMILの最も公的な記述では,言語は"制作者がウエブにテレビのような内容をもたらすことを可能とする"ものとして書かれている。 しかしながら,テレビで一般に見られるプレゼンテーションのある様相 (フェード及びワイプのような遷移) が,SMILには顕著に欠けていた。 SMIL 1.0では,遷移におけるいかなる表現もメディア自体"に焼き付け"られなければならなく,そしてSMIL1.0のタイミングフレームワークによる多数のメディア要素に渡って遷移を調整する方法はない。 12. の目的は,SMIL及び他のXMLに基づいた文書内の遷移についての記述のためのセマンティクス及び構文を定めることとする。 さらに,この仕様は,この遷移の集合を表現するために使用することができるパラメタの小さな集合と同様にSMPTE 258M-1993 [SMPTE-EDL]に基づいた遷移の分類法について記述する。

各々5秒間表示される四つの画像の単純な静止画像スライドショーを考慮する。 SMILタイミングを使用して,このスライドショーは次のように記述される。

...
<seq>
    <img src="butterfly.jpg" dur="5s" ... />
    <img src="eagle.jpg"     dur="5s" ... />
    <img src="wolf.jpg"      dur="5s" ... />
    <img src="seal.jpg"      dur="5s" ... />
</seq>
...

現在,このプレゼンテーションが再生する場合,このアニメーション化された画像に示されるように,ある画像からもう一つの画像まで連続した"カット"を見る。 しかしながら,見たいのは,四つの画像間における(5秒目にbutterfly.jpg及びeagle.jpgの間で,10秒目にeagle.jpg及びwolf.jpgの間で,15秒目にwolf.jpg及びseal.jpgの間で)三つの左から右へのワイプとする。 これはこのアニメーション化された画像で例証される。 12. の目的はSMIL及びXMLに基づいた文書の中でこのような遷移を指定する構文及びセマンティクスを定義することとする。

12. に記述される遷移は視覚的遷移とするが,レイアウトの重なり合いではなく時間による音声メディアの重なり合いに焦点を当てることにより,概念は音声遷移にも同様に適用される。 しかしながら,12. では音声遷移効果は定義しないし,特にどのように音声遷移が振る舞うべきかについても扱わない。

12. は次のように編成される。

12.2 遷移モデル

遷移はアニメーション化されたフィルタ振る舞いとしてモデル化される。 遷移モジュールが言語プロファイルに含まれる場合,レンダリング可能な内容をもつすべての要素は暗黙に,それらに加えられた遷移フィルタ振る舞いをもっている。 デフォルトでは,振る舞いには何の効果もないが,属性と要素がレンダリングできる内容への遷移振る舞いの効果を指定し制御するために提供されている。 レンダリングできる内容は,メディア要素を使用してSMIL メディアオブジェクトモジュールに宣言される。 HTMLのような他の言語は,レンダリングのためにspan及びdivのような付加要素を提供する。 12. では,"メディア要素"及び"メディアオブジェクト"の用語はホスト言語で定義されるすべての"レンダリングできる内容"を含む。

遷移フィルタ振る舞いは,一つの入力として背景を使用する。 この文脈では,背景は遷移が適用されるレイアウトに現在表現されていることすべてとする。 したがって,背景は活発に変わっているメディア,動きの止まったメディア又は無地の色を含んでもよい。 さらに,入力として遷移が適用されるメディアオブジェクトをとる。メディアオブジェクトは,他の入力を供給する背景とともに,リンク元又はリンク先の入力のいずれかとして使用することができる。 メディアオブジェクトは,さらに遷移が生じる領域を定義する。 無地の色からのフェードインのようなある遷移は一つの入力(遷移が適用されるメディアオブジェクト)だけをとるだろう。

すべての遷移フィルタ振る舞いに共通の自由なパラメタは,遷移効果の単純持続時間を通した進行状況とする。 それは,フィルタ効果を通した進行状況と抽象的に考えられる。 進行状況が 0.0 から 1.0 の範囲の実数であリ,0.0 の進行状況がフィルタの出力が完全に背景であることを意味し,1.0 の進行状況がフィルタの出力が完全にリンク先メディアであることを意味するという約束事を設ける。 中間の値は,背景及びリンク先メディアを何らかの方法で合成する遷移フィルタ振る舞いを適用したものになる。 遷移における他のすべてのパラメタは,フィルタ効果自体の一部であると仮定される。 進行状況は,アニメーション化されたただ一つのパラメタとする。 他のパラメタは,フィルタ効果を指定するために使用されるがアニメーション化されない。

フィルタの進行状況だけアニメーション化することに対して,メディアにおける一つ以上の特性をアニメーション化することの間の区別は次に例証される。 導入例の左から右へのワイプの中で,私たちはこの遷移を次のどちらかと考えることができる。

  1. リンク先メディアを切り取るフィルタ。 切り取る長方形の左側は,リンク先メディアの左側と常に一致し,そして切り取る長方形の右側は変わる。 したがってこの遷移は,切り取る長方形の右側をアニメーション化させるとみなすことができる。
  2. 進行状況が0.0 から1.0の範囲で変わる,左から右にワイプするためにあらかじめ定められたフィルタ。 進行状況が0.0の場合,背景が示される。 進行状況が0.5の場合,リンク先メディアの左半分が示され,そして背景の右半分が示される。 進行状況が1.0の場合,リンク先メディアがすべて示される。

これは,左から右へのワイプについての非常に小さな違いのように見えるが,クロスフェードについて対応する違いについて考えてみる。 次のようにクロスフェードの遷移について考えることができる。

  1. リンク先メディア及び背景の両方の"不透明"特性のアニメーション化,又は
  2. 0.5 の進行状況が 50% の混合を意味し,0.75 の進行状況がリンク先メディアが 75% 及び背景が 25% を意味することなどを知っているフィルタにおける進行状況のアニメーション化。

いくつかの場合,遷移の各々の型に一意の特定の特性をアニメーション化させようと考えることが便利に見える。 しかしながら,そのモデルは,現在使用している遷移の広い種類を渡ってあまり一般化されていない。 したがって,このモデルの単純性を保持するために,左から右のワイプ及びクロスフェードの両方をどちらも同じ入力(背景,リンク先メディア及び進行状況の値)をとる"暗箱"とみなす。

XMLの要素及び属性が,遷移の特性を制御するために提供される。 しかしながら,遷移自体は遷移振る舞いを制御するために使用される属性又は要素の特性ではない。 モデルでは,遷移がメディア要素自体の振る舞い的な特性とする。

遷移はプレゼンテーションに対するヒントとする。 実装は,それらが望むなら遷移を無視し,プレゼンテーションのメディアを依然として再生することができなければならない。 これは,遷移フィルタ振る舞いが動作しない,又は効果がないと言うことと等価とする。 遷移は,遷移に関係するメディア要素の活性持続時間を変更しない。 遷移振る舞いは,それぞれのメディア要素の活性持続時間内に活動する。 一度に一つの要素に対して活性している複数同時遷移の振る舞いは定義されない。

遷移を指定する二つの方法を導入する。

  1. "スタイルに似た" 遷移簡略記述方法。 この場合,制作者は遷移クラスの一つの集合を定義し,次に,メディア要素上の属性を使用することによって遷移フィルタ振る舞いをこれらのクラスの一つに設定する。 同じ遷移クラスは異なるメディアにBasicTransitionsモジュールで指定されるtransIn及びtransOut属性を経由して数回適用してもよい。 さらに遷移の各々はデフォルト方法で再生する。 つまり,その進行状況は,指定された遷移持続時間の間0.0から1.0まで直線的に動作する。
  2. 行内の遷移。 この場合制作者は,遷移の進行状況に渡り完全な制御を行う。 進行状況は,加速,減速,前方向にアニメーション化,後方向にアニメーション化などされることができる。 これらの遷移はInlineTransitionsモジュールで記述されるtransitionFilter要素について適用される。 行内の遷移はSMIL 2.0 BasicAnimationモジュール内のアニメーション化フレームワークに基づき,そしてメディアオブジェクトの空間的位置が直接操作されることを許すanimateMotion要素のように,メディア要素の遷移振る舞いの進行状況が明示的に制御されることを許す。

12.3 遷移分類法

型及び下位型の2レベルの分類法によって遷移を分類する。 各々の遷移型は,密接に関連づけられた1グループの遷移について記述する。 その型内で,個々の遷移には,その遷移の特徴的な特性を強調する下位型が割当てられる。 通常,その特徴的な特性はその遷移の幾何学的パタンの起点又は方向と関係がある。 例えば,遷移型のうちの一つは"barWipe"と呼ばれ,そしてSMPTE ワイプ符号 1及び2を表現する。 SMPTE ワイプ符号 1は,左から右に動く垂直の棒から成るワイプとする。 SMPTE ワイプ符号 2は上から下に動く水平の棒とする。 したがって,SMPTE ワイプ符号 1のための下位型は"leftToRight"と呼ばれ,そしてSMPTE ワイプ符号 2のための下位型は"topToBottom"と呼ばれる。

遷移型及び下位型の表は非常に広範囲なので,ここでは完全なリストは示さない。 事前に定義された遷移型及び下位型に加え,SMPTE ワイプ符号へのそれらの対応付けとの完全なリストについては付録を参照すること。 SMPTE ワイプ符号への対応付けは参照のためだけに提供されることに注意すること。

12.3.1 デフォルト遷移の下位型

各々の型に対して,下位型の一つが,付録内で"default"下位型としてラベル付けされる。 この遷移クラスが利用可能でないか,又は利用者エージェントによって実装されてない場合,利用者エージェントは,遷移ファミリに対するデフォルト下位型に後退することが望ましい。 これは,遷移クラスのための下位型を指定することを要求せずに,制作者が遷移クラスのための型を指定することを許可する。 構文解析規則及び後退のセマンティクスについての詳細については,遷移構文解析の規則の節を参照すること。

12.3.2 必須の遷移

実装では次の各々の遷移型のためのデフォルト下位型を実装することが必須とされる。

遷移型 デフォルト遷移下位型 SMPTE ワイプ符号
barWipe leftToRight 1
irisWipe rectangle 101
clockWipe clockwiseTwelve 201
snakeWipe topLeftHorizontal 301

付録でリストされた遷移型及び下位型の残りの実装は奨励されるが,遷移の数が多いために必須ではない。

12.4 BasicTransitionsモジュール

遷移型及び下位型の分類法が今定義されたので,遷移の"スタイルに似た"簡略構文について議論する。 この簡略構文は,次の仕様を要求する。

  1. 適用される遷移のクラス。例えば,プレゼンテーションで1秒間左から右にワイプを使用するために,ワイプはtransition要素で定義される遷移クラスとして定義される。
  2. この遷移クラスが適用されるメディア要素。 この簡略構文で,遷移クラスはtransIn及びtransOut属性をもつメディア要素に適用される。

12.4.1 transition要素

transition要素は単一の遷移クラスを定義する。 言語プロファイルに依存してこの要素は文書内の異なる場所に現れる。 しかしながら,ほとんどの場合,transition要素は文書のheadでだけ許可されるだろう。 明快にするために,グループ分け"コンテナ"要素(例えば,SMIL内のlayout 要素)は,すべてのtransition要素を一緒にグループ化するために望ましいかもしれない。 一つの文書で複数の遷移クラスを使用してもよいので,文書のheadに複数のtransition要素があってもよい。

要素の属性

type
これは遷移の型又はファミリとする。 この属性は必須であり,分類法の節にリストされた遷移ファミリの一つ(又は利用者エージェントによって提供され拡張された遷移型)でなければならない。 どの遷移を使用するかを決定するアルゴリズムについては遷移構文解析の規則を参照すること。
subtype
これは遷移の下位型とする。 このパラメタはオプションであり,指定される場合には付録でリストされる指定された型のための適切な遷移下位型の一つ(又は利用者エージェントによって提供された拡張された遷移下位型)でなければならない。 このパラメタが指定されない場合,遷移は指定された遷移型に対するデフォルト下位型に戻る。 どの遷移を使用するかを決定するアルゴリズムについては遷移構文解析の規則を参照すること。
dur
これは遷移の持続時間とする。この属性の値はSMIL タイミング及び同期モジュールによって定義されたclock-valueでなければならない。 デフォルト持続時間は遷移に組込まれた本来的持続時間とする。付録で定義された遷移のすべては1秒のデフォルト持続時間をもっている。
startProgress
これは,遷移の中で動作を開始する進行状況の量とする。 有効な値は0.0から1.0の範囲の実数とする。 例えば,30%すでにフェードインされたリンク先画像でクロスフェードを始めたいとする。 この場合,startProgressは0.3だろう。
デフォルト値は0.0とする。
endProgress
これは,遷移の中で動作を終了する進行状況の量とする。 有効な値は0.0から1.0の実数であり,この属性の値はstartProgress属性の値より大きい又は等しくなければならない。 endProgressがstartProgressと等しい場合,遷移は遷移の持続時間において固定された進行状況のままである。
デフォルト値は1.0とする。
direction
これは,遷移が動作する方向を指定する。 有効な値は"forward"及び"reverse"とする。 デフォルト値は"forward"とする。 これは遷移されているメディアに影響を与えないが,遷移のジオメトリに影響するだけということに注意すること。 例えば,"barWipe"の型及び"leftToRight"の下位型を指定する場合,メディアは左から右に動く垂直の棒によってワイプされるだろう。 しかしながら,direction="reverse"を指定する場合,それは右から左に動く同じ垂直の棒によってワイプされるだろう。 別の例は"starWipe"の型及び"fourPoint"の下位型で示される。 この遷移にとって,前への遷移の動作では,最初は小さく遷移の進行とともに大きくなる4点の星の内部にリンク先メディアが現れてくる。 この遷移を逆に動作すると,大きな4点の星の外部の領域にリンク先メディアが現れてくるだろう。 星は最初は大きく,遷移の進行とともに小さくなる。 すべての遷移に意味のある逆の解釈があるとは限らないだろうということに注意する。 例えば,クロスフェードは幾何学的な遷移でなく,したがって逆方向の解釈はない。 逆の解釈を持たない遷移はdirection属性を無視し,"forward"のデフォルト値を仮定することが望ましい。
fadeColor
"type"属性の値が"fade"で,そして"subtype"属性の値が"fadeToColor"又は"fadeFromColor"である場合,この属性はフェードの開始点又は終了点の色を指定する。 "type"属性の値が"fade"でない場合,又は"subtype"属性の値が"fadeToColor"又は"fadeFromColor"でない場合,この属性は無視される。 有効な色値はCSS2システム色値とする。
デフォルト値は"black"とする。

要素内容

transition要素は子としてparam要素をもつことができる。

transition要素の

例えば,二つの遷移クラスを定義したいと仮定する。 単純な2秒の黒へのフェード及び5秒の鍵穴形の虹彩ワイプである。 これらの遷移クラスは次のように表現することができる。

    ...
    <transition id="ftb2" type="fade" subtype="fadeToColor"
                dur="2s" color="#000000" />
    <transition id="star5" type="starWipe" subtype="fivePoint"
                dur="5s" />
    ...

12.4.2 param要素

上に議論されたパラメタの組は,12. で定義されたすべての遷移を表現することにおいて適切である。 しかしながら,実装は,遷移の組を拡張することを選び,自分自身の型及び下位型を定義してもよい。 これらの新しい遷移クラスのうちのいくつかは,上にリストされた属性の現在の組によっては網羅されないパラメタを必要としてもよい。param要素の目的は,拡張された遷移型及び下位型にパラメタを供給する総括的な手段を提供することとする。

遷移要素は子要素としてSMIL MediaParamモジュールで定義されたparam要素をとることができる。 この要素はホスト言語のプロファイルに依存して,HTML又は何らかの他のモジュールから含めることができる。

例えば,"superCool"と呼ばれる新しい遷移型及び"fire"と呼ばれる下位型を作成することを実装が決定したと仮定する。 この新しい遷移は"flameLength"と呼ばれるパラメタを必要とする。 次の例は"flameLength"に対する値を提供するために,この実装がどのようにparam要素を使用することができるかを示す。

<transition id="myfire" type="superCool" subtype="fire">
    <param name="flameLength" value="20" >
</transition>

遷移要素に提供される付加パラメタの意味が特定の遷移の実装に依存することに注意すること。

12.4.3 transIn属性及びtransOut属性

いったん遷移クラスが文書の頭で定義された場合,その後,遷移インスタンスは,メディアオブジェクト要素又は"レンダリング可能な内容"をもつ他の要素の活性持続時間に遷移クラスを適用することにより作成することができる。 メディアオブジェクト要素にtransIn 又は transOut 属性を指定することによりこれを行う。 transIn属性を指定された遷移はメディア要素の活性持続時間の開始点で開始するだろう。 transOut属性を指定された遷移はメディア要素の活性持続時間の終了点で終了するか,又は非デフォルトのfill値が適用される場合,要素のfill状態の終了点で終了するだろう。

transIn及びtransOut属性はSMILメディアオブジェクトモジュールでリストされたすべてのメディアオブジェクトに加えられる。 両方の属性のデフォルト値は,遷移が動作してはならないことを示す空文字列とする。

これらの属性の値は遷移id群のセミコロン区切りリストとする。 id群の各々は文書で事前に定義されたtransition要素の一つのXMLの識別子の値に一致することが望ましい。 セミコロンで分離されたリストの目的は,好みの遷移が利用可能でない場合に後退遷移の集合を制作者が指定することを許すこととする。 利用者エージェントがこの遷移を実装した場合,リスト中の最初の遷移が動作されることが望ましい。 この遷移が利用可能でない場合,リスト中の第2の遷移が動作されることが望ましい。 transIn又はtransOut属性の値が事前に定義されたどのtransition要素の一つのXML識別子の値とも一致しない場合,これはエラーとする。 このエラーの場合には,属性の値は空文字列と考えられ,遷移は動作されてはいけない。 より詳細な構文解析の規則については遷移構文解析の規則の節を参照すること。

メディア要素への遷移適用の規則

  1. 遷移の目的はあるメディアオブジェクトから他のオブジェクトへと渡っていくことであるので,遷移は何らかのメディアオブジェクトを開始又は終了(又はその両方)するために適用されなければならない。

    しかしながら,視覚効果は,要素の活性持続時間の途中でこの遷移が適用されているかのように見えるかもしれない。 次の例を考えてみる。

        ...
        <par>
            <img src="butterfly.jpg" dur="10s" />
            <img src="eagle.jpg" begin="3s" dur="4s" />
        </par>
        ...
        
    

    eagle.jpgは,butterfly.jpgの一番上にz軸に順序化されていると仮定する。 そのとき,eagle.jpgの開始点と終了点の両方に適用される遷移は,butterfly.jpgの活性持続時間の間に適用されているような視覚的概観をもつだろう。 しかしながら,オーサリングの観点からは,それらはeagle.jpgの開始点及び終了点で依然として適用される。

  2. デフォルトでは,遷移が適用される要素の任意のfill期間に活性持続時間を加えた間,遷移は起こる。 外向き遷移(transOut)の開始時間におけるfill値の効果のために次の規則を参照すること。 要素への遷移の適用は,要素の持続時間に影響しない。 例えば,次の例において,eagle.jpgの開始時に1秒の遷移を適用することは,eagle.jpgの活性持続時間を増やさないし減らさない。 それは,プレゼンテーションで5秒目から10秒目までの間依然として表示される。 eagle.jpgの開始時に1秒の遷移を適用するとその遷移は5秒目から6秒目で起こり,eagle.jpgの終了時に2秒の遷移を適用するとその遷移は8秒目から10秒目で起こる。
    ...
    <seq>
        <img src="butterfly.jpg" dur="5s" ... />
        <img src="eagle.jpg"     dur="5s" ... />
    </seq>
    ...
    
  3. 外向き遷移(transOut)は,要素の活性持続時間の終了点にfill期間を加えて終了する。 削除のデフォルトfill振る舞いをもつ要素では,外向き遷移は要素の活性持続時間の終了点で終了する。 他のfill値をもつ要素では,遷移は要素の凍結期間の終了点で終了する。

    例えば,次のプレゼンテーションでは,画像要素のfill振る舞いは"freeze"であり,画像をその親が終了するまで凍結する。 子どもがすべて終了するときに親が終了するが,それは30秒目のビデオ終了時である。 凍結持続時間(30秒)の終了点で終了するために,黒へのフェード遷移は29秒目に開始する。 したがって,両方の要素は,29秒目に一緒に黒へとフェードする。

        ...
        <transition id="toblack1s" type="fade" subtype="fadeToColor"
                       fadeColor="#000000" dur="1s"/>
        ...
        <par>
            <img   ... dur="10s" transOut="toblack1s" fill="freeze"/>
            <video ... dur="30s" transOut="toblack1s"/>
        </par>
        
    

    しかしながら,次の例において,画像要素のfill振る舞いは"remove"とする。 したがって,遷移は要素の活性持続時間の終了点で終了する。 画像要素は9秒目から黒にフェードし,ビデオ要素は29秒目から黒にフェードする。

        ...
    
        <transition id="toblack1s"   type="fade" subtype="fadeToColor"
                       color="#000000" dur="1s"/>
        ...
        <par>
            <img   ... dur="10s" transOut="toblack1s" fill="remove"/>
            <video ... dur="30s" transOut="toblack1s"/>
        </par>
        
    
  4. リンク先メディア遷移されるメディア要素における活性持続時間は,背景から遷移されるメディア要素における活性持続時間又はfill状態に重なり合わなければならない。 導入例では,各々のリンク先メディアオブジェクトにおける活性持続時間は,各々の背景メディアオブジェクトの活性持続時間の終了点にただちに続く。 これらの場合(活性持続時間がただちに続くが,重なり合わない場合),fill="transition"値が前の(背景)メディアの凍結した最後のフレームと現在の(リンク先)メディアの活性フレームの間で遷移を可能とするために使用されなければならない。 詳しい情報はfill="transition"を参照すること。 活性持続時間が重なり合う(したがって再生されるメディアが異なるz軸順序にある)場合,遷移は両方のメディアの活性フレーム間にある。

    次の例において,活性持続時間は重なり合わないが,fill="transition"が最初のビデオの最後のフレームを凍結する。 結果はfoo1.mpgの最後のフレームとfoo2.mpgの活性フレーム間のクロスフェードとなる。

        ...
        <seq>
            <video src="foo1.mpg" fill="transition"... />
            <video src="foo2.mpg" transIn="xfade1s" ... />
        </seq>
        ...
        
    

    次のプレゼンテーションでは,しかしながら,活性持続時間が重なり合うので,foo2.mpgの開始点及び終了点の両方でのクロスフェードは,foo1.mpg及びfoo2.mpgの両方の活性フレーム間にある。 この例は,ビデオが異なるz軸順序にあると仮定する。

        ...
        <transition id="xfade" type="fade" subtype="crossfade" dur="1s" />
        ...
        <par>
            <video src="foo1.mpg" dur="30s" />
            <video src="foo2.mpg" begin="10s" dur="10s"
                   transIn="xfade" transOut="xfade" />
        </par>
        ...
        
    
  5. 遷移に含まれるメディアオブジェクトのための活性持続時間が重なり合わない場合,メディアの後ろの領域のための背景が使用されることが望ましい。 例えば,img1.jpg及びimg2.jpgのための活性持続時間は次の例において重なり合わない。 したがって,img1.jpgは,その後ろにあるものすべてに遷移するだろう。
        ...
        <transition id="awipe" type="barWipe" dur="1s" ... />
        ...
        <par>
            <img src="img1.jpg" dur="2s" transOut="awipe" .../>
            <img src="img2.jpg" begin="5s" dur="2s"       .../>
        </par>
        ...
        
    
  6. 内向き及び外向き遷移がメディア要素上で指定され,それらの遷移の時間が重なり合う場合,内向き遷移が優先され,そして外向き遷移は無視され,どの外向き遷移も動作されない。

    例えば,次の例において,"barWipe"内向き遷移は"fadeToColor"外向き遷移よりも優先されるだろう。 内向き遷移は最初の2秒間完全に起こり,そして外向き遷移は無視され,どの外向き遷移も動作されない。

        ...
        <transition id="awipe"   type="barWipe"    dur="2s" ... />
        <transition id="toblack" type="fadeToColor" dur="2s" ... />
        ...
        <img src="img1.jpg" dur="3s" transIn="awipe" transOut="toblack" .../>
        ...
        
        
    
  7. 遷移は一つのメディアの表示の開始点又は終了点から他のものへと渡っていくことを意味するので,遷移は繰返さない。

    次の例を考えてみる。 img2.jpgは単純に5秒間の持続時間をもつが,合計3倍再生するので,15秒の活性持続時間ももつ。 しかしながら,内向き遷移は,img2.jpgの活性持続時間の最初,つまり連続する時間コンテナの活性持続時間へと入っていく5秒目に一度だけ再生する。 外向き遷移もまた,連続する時間コンテナの活性持続時間へと入っていく19秒目から一度だけ再生する。

        ...
        <transition id="awipe"   type="barWipe"     dur="1s" ... />
        <transition id="toblack" type="fadeToColor" dur="1s" ... />
        ...
        <seq>
            <img src="img1.jpg" dur="5s" fill="transition" .../>
            <img src="img2.jpg" dur="5s" repeatCount="3"
                 transIn="awipe" transOut="toblack" ... />
            <img src="img3.jpg" dur="5s" .../>
        </seq>
        ...
        
    

fill="transition"の使用

SMIL タイミング及び同期モジュールで定義されたfill属性は制作者に,要素の最終状態を凍結することによって要素が活性持続時間を越えて拡張されることが望ましいかを指定できるようにする。 新しいfill値"transition"は通常では同時に表示されない要素間の遷移を可能にするために要求される。 このfill属性値はレンダリングできる内容をもつ要素にだけ適用することができ,parseq及びexclのような純粋な時間コンテナ要素に適用可能ではない。 fill=transitionが純粋な時間コンテナ要素に適用される場合,値は無視され,そのデフォルト値に戻る。

"transition" fill値は,その活性持続時間が終了した後に要素が凍結になり,そしてそれがレイアウトで重なり合う要素上における次の遷移の終了点まで凍結のままだろうことを指し示す。 遷移が終了する場合,fill="transition"を含む要素が取除かれるだろう。 SMIL タイミング及び同期モジュールで定義されるタイミング規則は依然として適用される。 要素は,その親の時間コンテナの制約に従い,遷移が宣言されるかどうかにかかわらずその親によって取除くことができる。 各々のプロファイルは,レイアウトで重なり合う意味を定義しなければならない。

遷移を使用していない次の例では,デフォルト振る舞いは10秒後にimg1.jpgを表現するオブジェクトを取除く。

    ...
    <seq>
        <img src="img1.jpg" dur="10s" ... />
        <img src="img2.jpg" dur="10s" ... />
    </seq>
    ...
    

img1.jpg及びimg2.jpgの間の遷移を加えることは,img2.jpgへの遷移がそれを使用することができるようにimg1.jpgがその活性持続時間の終了後に表示され続けることを必要とする。 遷移が終了すると同時に,最初の画像が取除かれるだろう。fill="transition"は次の例のようにしてこの振る舞いを可能にする。

    ...
    <transition id="awipe" type="barWipe" dur="1s" ... />
    ...
    <seq>
        <img src="img1.jpg" dur="10s" fill="transition" ... />
        <img src="img2.jpg" dur="10s" transIn="awipe"   ... />
    </seq>
    ...
    

遷移付きスライドショーの例

fill及びtransIn属性を加えた後,導入で出てきたスライドショーの例は今次のように見える。

...
<transition id="wipe1" type="barWipe" subtype="leftToRight" dur="1s"/>
...
<seq>
    <img src="butterfly.jpg" dur="5s" fill="transition" ... />
    <img src="eagle.jpg"     dur="5s" fill="transition" transIn="wipe1" ... />
    <img src="wolf.jpg"      dur="5s" fill="transition" transIn="wipe1" ... />
    <img src="seal.jpg"      dur="5s"                   transIn="wipe1" ... />
</seq>

このアニメーション化された画像に例証されるように今プレゼンテーションは次のように再生する。

これらの遷移は,遷移を参照するそれぞれの画像の活性持続時間の間に起こり,それらのホスト要素の活性持続時間を加えないし,減じないことに注意すること。 この場合,遷移は各々のメディア要素の活性持続時間の開始点に生じる。

fill="transition"の重要性に注意すること。butterfly.jpg,eagle.jpg及びwolf.jpg上でfill="transition"を指定していない場合,0秒,5秒,10秒及び15秒での遷移は連鎖の中の前の画像の代わりに再生領域(又はデフォルトの背景色。レイアウト言語がどのように指定されるかに依存する)の背景間で起こっていただろう。

排他的な子ども及びfill="transition"

以前に活性していた子がディスプレイから正常に取除かれた場合,fill="transition"は一つの excl の子から他の子への遷移を可能にする。 次の例において,背景からの最初の画像遷移は,5秒間表示して,fill="transition"のために凍結する。 ボタンクリックによって活性された次の子は,butterfly.jpgから遷移するだろう。 子が完了すると,fill="transition"のために凍結し,次の遷移で使用するために利用可能なまま残る。 ボタンクリックによって活性された次の画像へ遷移するだろう。

...
<transition id="wipe1" type="barWipe" subtype="leftToRight" dur="1s"/>
...
<excl>
    <img src="butterfly.jpg" begin="0" dur="5s" fill="transition" transIn="wipe1" ... />
    <img src="eagle.jpg"     begin="button1.click" dur="5s" fill="transition" transIn="wipe1" ... />
    <img src="wolf.jpg"      begin="button2.click" dur="5s" fill="transition" transIn="wipe1" ... />
    <img src="seal.jpg"      begin="button3.click" dur="5s" fill="transition" transIn="wipe1" ... />
</excl>

要素の活性持続時間が終了した後fillが効果を現わすことに注意すること。 前述の例において,button2が3秒にクリックされる場合,butterfly.jpgは終了し,butterfly.jpgにおけるfill="transition"値は次の遷移の終了で有効となるだろう。 したがって,遷移はbutterfly.jpgからwolf.jpgへと起こり,遷移が完了した時点で凍結されたbutterfly.jpgは消えるだろう。

SMIL タイミング及び同期モジュールで定義されたpriorityClass要素のpauseDisplay属性も排他的な要素における子どものディスプレイを制御するために使用することができる。 前述の例において,休止したときにbutterfly.jpgの表示を保つためにpauseDisplayを使用することができ,遷移がbutterfly.jpgと次に活性されるメディアとの間で生じて,遷移の後にもbutterfly.jpgが表示され続けるようにできた(それが他のメディアによって完全にはカバーされないと仮定して)。

12.4.4 パラメタエラーの処理

遷移パラメタは,様々な重大度のレベルで多くの異なる方法で不正確に指定することができる。 したがって,次のエラーが指定された動作で扱われることが望ましい。

  1. 遷移型が妥当でない。 実装が型属性の値を認識しない場合,又はその遷移型が実装されない場合,この遷移クラスは妥当でない。 しかしながら,これは遷移解析の規則の節で指定されるように,遷移が動作されないことを必ずしも意味しない。
  2. 遷移下位型が指定された遷移型にとって妥当でない。 指定された遷移下位型は無視され,指定された遷移型のためのデフォルト下位型が動作されることが望ましい。
  3. 遷移持続時間が指定されない。1秒のデフォルト持続時間が仮定されることが望ましい。
  4. 型又は下位型に付けられた遷移パラメタが正当な範囲の外である。 遷移パラメタが正当な範囲の外で指定される場合,パラメタのデフォルト値が仮定されることが望ましい。
  5. 遷移パラメタがこの遷移型に適用されない。 すべての遷移パラメタはすべての遷移型に適用されるとは限らないので,共通のエラーは指定された遷移型に適用されない遷移パラメタを指定することができる。 これらの無関係のパラメタは無視されることが望ましい。 例えば,"borderWidth"パラメタは"fade"遷移型に適用されない。 "borderWidth"が"fade"遷移型のために指定されることになっていた場合,無視されることが望ましい。
  6. 遷移持続時間がメディアオブジェクト自体の持続時間より長い。 この場合,全遷移は無視され,動作されてはいけない。

12.4.5 遷移解析の規則

以前に述べたように,各々のtransitionはデフォルト遷移下位型をもっている。 さらに,メディア要素におけるtransIn又はtransOut属性は後退遷移のリストを指し示すために遷移id群のセミコロンに分離されたリストをとる。 デフォルト下位型及び後退リストの間の不明瞭なところを除去するために,12.4.5 は,動作する遷移を決定するために従うアルゴリズムを定義する。 一般的な手続きは,後退遷移のリストの中で最初に解決された遷移が動作されるものとすることとする。

一つ以上の(transIn又はtransOut属性で指定された)transition要素及び後退遷移id群が前に宣言されている場合,実装は動作する遷移を決定するために次のアルゴリズムを使用しなければならない。

  1. current-idにリストの最初のidを設定する。
  2. current-idが空(リストの中にこれ以上のid群がない)の場合,このアルゴリズムを出る。 実装はこれをエラーと考えてはならず,そして遷移を動作してはならない。
  3. current-idが前にtransition要素に定義されたどれかのidである場合,ステップ4へと行く。そうでない場合,リストの次のidをcurrent-idに設定してステップ2へ行く。
  4. current-idによって識別されたtransition要素上の"type"属性の値が実装に知られている場合,ステップ5へ行く。 そうでない場合,リストの次のidをcurrent-idに設定しそしてステップ2へ行く。
  5. current-idによって識別されたtransition要素上で"subtype"属性が指定される場合,ステップ6へ行く。 指定されない場合,実装はこのアルゴリズムを出て,指定された遷移型におけるデフォルト遷移下位型を動作しなけれならない。
  6. current-idによって識別されたtransition要素上の"subtype"属性の値が実装に知られている場合,実装はこのアルゴリズムを出て,型及び下位型によって指定された遷移を動作しなければならない。 そうでない場合,リストの次のidをcurrent-idに設定し,そしてステップ2へ行く。

12.4.6 遷移集合の拡張

どの遷移を動作するか決定するために前に指定したアルゴリズムでは,遷移の設定を拡張する暗黙の方法がある。 新しい遷移が遷移分類法の節の遷移ファミリの一般的な記述のどれにも分類されない場合,実装は新しい遷移型(新しい遷移のファミリ)を作成して,新しく定義された型の下で新しい遷移下位型を作成してもよい。 しかしながら,新しい遷移が遷移の既存のファミリのうちの一つに分類される場合,実装はその既存の型のための下位型の集合を単に拡張することを推奨する。 実装は,これらの拡張された遷移に対して型及び下位型の名前としてどんな名前を使用してもよい。 しかしながら,これらの新しい遷移が文書内で使用される場合,それらは名前空間で限定されていなければならない。

12.5 InlineTransitionsモジュール

遷移モデルの節で言及したように,SMIL 2.0遷移は遷移を指定する二つの方法(簡略記述方法及び行内方法)を許可する。 BasicTransitions モジュールは簡略記述方法を指定するが,このモジュールは行内方法を指定する。 行内遷移は,簡略遷移と比較して付加的なタイミング及び進行状況の制御を提供する。 transitionFilter要素は行内遷移のサポートを提供する。

12.5.1 transitionFilter要素

transitionFilter 要素はSMIL 2.0 BasicAnimation モジュールで定義されたanimateMotionと類似したアニメーション化要素とする。 animateMotion要素は,要素の位置をアニメーション化する。 対照的に,transitionFilter要素は,レンダリングできる内容をもつメディア要素又はメディア要素群の上でのフィルタ振る舞い(遷移)の進行状況をアニメーション化する。 フィルタ振る舞いは,一時的にメディアの視覚的又は聴覚的レンダリングを変更する。 transitionFilter要素は"レンダリングできる内容"をもつ任意の要素をターゲットにでき,必ずしもメディア要素である必要はない。 ホスト言語は,transitionFilterが適用される要素がどれかを決定する。 例えば,HTMLでは,span又はdivが"レンダリングできる内容"を表わすかもしれない。 transitionFilter要素は,二つの方法(その要素の子として指定してもよいし,又はtargetElement属性で指定してもよい)でレンダリングできる内容の要素をターゲットにしてもよい。

transitionFilter要素はtransition要素と多くの属性を共有する。 それは,SMIL 2.0 BasicInlineTimingモジュールからのタイミングサポート及びSMIL 2.0 BasicAnimationモジュールからのアニメーション化サポートを統合する。 このモジュールもホスト言語によって実装されたモジュールに依存して,TimeManipulationsのような他のSMIL 2.0モジュールと結合することができる。

ホスト言語によって定義されるように,この要素はメディア要素又はレンダリング内容についての他の要素の子でなければならない。 これは"transition"要素で宣言されメディア要素に適用されるtransIn又はtransOut属性で指定されるBasicTransitionsとは対照的である。

transIn及びtransOutが遷移が適用されるメディアオブジェクトの属性であることと類似して,transitionFilter要素は遷移が適用されるメディアオブジェクトのとする。 しかしながら,たとえtransitionFilter要素がメディアオブジェクトの子でも,それは時間コンテナでなく,そしてメディアオブジェクトの活性持続時間を拡張することはできない。 したがって,transitionFilterがメディア要素の子であれば,それはそのメディア要素の活性持続時間の間そのメディア要素に遷移を適用することができるだけとする。 要素の凍結の期間に遷移を適用したい場合,transitionFilterはメディア要素の子であってはいけない。 むしろ,targetElement属性がそのメディア要素をターゲットにするために使用されることが望ましい。

リンク先メディア(進行状況が1.0のときに完全に可視なメディア)が遷移が適用されるメディア(この場合,親メディア)であるという意味で,transitionFilter要素は"内向き"遷移を表現することに注意すること。 しかしながら,transitionFilterが進行状況のタイミングに渡ってfill制御を与えるので,単に1.0の進行状況から遷移を動作させて0.0の進行状況で遷移を終了することによって,"内向き"遷移は"外向き"遷移のように見えるように作られてもよい。

transitionFilter 要素の属性

type
これはtransition要素におけるものと同じ属性とする。
subtype
これはtransition要素におけるものと同じ属性とする。
mode
transitionFilterの親要素が内向き又は外向きのどちらに遷移するかを示す。 正当な値は遷移の進行状況が増加するにつれて親メディアが次第に可視になることを指し示す"in"及び遷移の進行状況が増加するにつれて親メディアが次第に不可視になることを指し示す"out"とする。 デフォルト値は"in"とする。 メディア要素上のtransIn及びtransOut属性とは違い,mode属性が自動的にメディアの開始点又は終了点にtransitionFilterを結び付けることはない。 transitionFilterのための開始時間を指し示すために,制作者はtransitionFilter上でbegin属性を使用することができる。
fadeColor
これはtransition要素におけるものと同じ属性とする。
begin
SMIL タイミング及び同期モジュールで定義される。 この属性はオプションであり,デフォルトは0秒とする。
dur
SMIL タイミング及び同期モジュールで定義される。 デフォルト持続時間は遷移に組込まれた本来的持続時間とする。 付録で定義された遷移のすべては1秒のデフォルト持続時間をもっている。
end
SMIL タイミング及び同期モジュールで定義される。
repeatCount
SMIL タイミング及び同期モジュールで定義される。
repeatDur
SMIL タイミング及び同期モジュールで定義される。
from
transitionFilterの動作を始めるtransitionFilterによる進行状況の量。 正当な値は0.0から1.0の範囲の実数とする。 例えば,リンク先画像が30%ほどフェードインした状態でクロスフェードを始めるにはこの属性は"0.3"と等しくなる。 この属性はSMIL 2.0 BasicAnimation モジュールで定義され,transition要素上のstartProgress属性と似ている。デフォルト値は0.0とする。 values属性が指定された場合,無視される。
to
transitionFilterの動作を終了するtransitionFilterによる進行状況の量。 正当な値は0.0から1.0の範囲の実数とする。 この属性はSMIL 2.0 BasicAnimation モジュールで定義され,transition要素上のendProgress属性と似ている。 デフォルト値は1.0とする。 values属性が指定された場合,無視される。
by
transitionFilterの進行状況のための相対的なオフセット値を指定する。 正当な値は0.0から1.0の範囲の実数とする。 SMIL 2.0 BasicAnimation モジュールで定義される。 values属性が指定された場合,無視される。
values
transitionFilterの進行状況を指定する一つ以上の値のセミコロンで切り離されたリスト。 この属性はfrom,to及びby属性の組よりも正確な進行状況の制御を与えることができ,指定された場合それらの属性を上書きする。 正当な値は0.0から1.0の範囲の実数とする。 SMIL 2.0 BasicAnimation モジュールで定義される。 値がどのように解釈されるかを決定するためにcalcMode属性を使用すること。
calcMode
transitionFilterの進行状況の補間モードを指定する。 SMIL 2.0 BasicAnimationモジュールで定義される。 calcMode属性は次の値のどれかを取り得る。
discrete
これはtransitionFilterの進行状況が,ある値から次の値に補間なしでジャンプすることを指定する。
linear
値間の単純な線形補完がtransitionFilterの進行状況の計算に使用される。 これをデフォルトとする。
paced
transitionFilter要素のために指定される場合,値は無視される。 デフォルト値("linear")が代わりに使用される。
targetElement
この属性はアニメーション化されるべきターゲット要素を指定する。 この属性値はホスト文書内の要素のXML識別子属性(つまり"IDREF")の値でなければならない。 正式なIDREFの定義については,XML 1.0[XML10]を参照すること。
href
この属性はアニメーション化されるべきターゲット要素を指定する。 この属性値はアニメーション化されるべきターゲット要素を参照するXLink位置指定子でなければならない。

ホスト言語内にtransitionFilter要素を統合する場合,言語設計者はこれらの属性の両方を含むことを避けるべきだろう。しかしながら,ホスト言語設計者がホスト言語で属性の両方を含むことを選ぶならば,与えられたアニメーション化要素に対して両方とも指定されたときXLinkの href属性がtargetElement属性よりも優先される。

targetElement属性を使用する利点は href属性と比較して属性値の構文が単純なことである。 XLinkのhref属性を使用する利点は,SMIL Transitionsの将来の版で完全なリンク機構へと拡張でき,アニメーション化要素が一般的なXLinkプロセサによって処理されることができることである。 XLink型式はまた,すべてのそのような参照に対してXLinkを用いるよう設計されたホスト言語に対して提供される。 次の二つの例で二つの方法を示す。

この例はより単純なtargetElement構文を使用する。

<transitionFilter targetElement="foo" .../>

この例は同一のターゲットについてより柔軟なXLink位置指定子構文を使用する。

<foo xmlns:xlink="http://www.w3.org/1999/xlink">
    ...
    <transitionFilter xlink:href="#foo" .../>
    ...
</foo>

transitionFilter要素においてXLinkのhref属性を使用する場合,次の付加的なXLink属性がホスト言語で定義されることを必要とする。 これらはDTDで定義されてもよいし,ホスト言語が一般的なXLinkプロセサをサポートするために文書構文でこれらを要求してもよい。 詳しい情報については[XLINK]を参照すること。

次のXLink属性はXLink仕様によって要求される。 値は固定であり,DTDの中などで指定してもよい。 すべての他のXLink属性はオプションであり,SMIL Transitionsセマンティクスに影響しない。

hrefのためのXLink属性
type
simpleでなければならない。 使用されるXLinkの型を指定する。
actuate
onLoadでなければならない。 ターゲット要素へのリンクが自動的に(すなわち,ユーザの動作なしで)従うことを指し示す。
show
embedでなければならない。 参照がファイル中に付加的な内容を含まないことを指し示す。

ホスト文書及び言語に関連するターゲット要素仕様についての更なる詳細は統合の節で記述される。

メディア要素 fill="transition"
fill
このモジュールは,SMIL タイミング及び同期モジュールでメディアに対して定義されるfill属性の可能な値へ"transition"値を加える。 これはBasicTransitionsモジュールで指定されるものと同じ属性とする。

要素内容

transitionFilter要素は子としてparam要素をもつことができる。

transitionFilter要素の例

例1 transitionFilterスライドショー

次の例は,導入で議論された例と同様に,画像間に遷移を含むスライドショーを供給する行内の遷移を使用する。 プレゼンテーションは次のように再生する。

...
<seq>
    <img id="butterfly" src="butterfly.jpg" dur="5s" fill="transition" />
    <img id="eagle" src="eagle.jpg" dur="5s" fill="transition" >
        <transitionFilter type="barWipe" subtype="leftToRight" dur="1s" />
    </img>
    <img id="wolf" src="wolf.jpg" dur="5s" fill="transition" >
        <transitionFilter type="barWipe" subtype="leftToRight" dur="1s" />
    </img>
    <img id="seal" src="seal.jpg" dur="5s" >
        <transitionFilter type="barWipe" subtype="leftToRight" dur="1s" />
    </img>
</seq>
...

例2 transitionFilter離散時計遷移

次の例は12ステップの遷移の進行状況を指定するために値のリスト及び離散的calcModeを使用する。 遷移はビデオが開始した2秒後に始まり12秒間続く。 遷移がcircularであるので,効果は一度に時計の表面の1時間分を見せていくような時計ワイプとなる。

<video id="video1" src="car.avi">
    <transitionfilter id="trans1"
         type="ellipseWipe" subtype="circle" 
         begin="2" dur="12" calcMode="discrete" 
         values="0.083; 0.166; 0.250; 0.333; 0.416; 0.500;
             0.583; 0.666; 0.750; 0.833; 0.916; 1.000;" />
</video>

例3 transitionFilter from 及び to

次の例は,0から50%(0.5)完了まで進行する部分的な遷移を使用する。 レイアウトでの画像上にビデオが直接位置付けされると仮定する。 そのプレゼンテーションは次のように再生する。

<par>    
    <img src="racing.jpg" begin="0s" dur="5s" />
    <video id="car" src="car.avi" begin="0s" dur="3s"
        <transitionfilter type="clockWipe" subtype="clockwiseTwelve" 
            begin="1s" dur="2s" from="0.0" to="0.5" />
    </video>
</par>

12.5.2 param要素

transitionFilter要素は子要素としてSMIL MediaParam モジュールで定義されるparam要素を取り得る。 この要素はホスト言語のプロファイルに依存して,HTMLから,又はいくつかの他のモジュールから含むことができる。 param要素は個々のtransitionFilterに固有のパラメタ情報を定義する。 例えば,windshieldWipeの実装は,ワイプのための半径の長さを定義するパラメタを次のようにとることができた。

<transitionfilter type="windshieldWipe"
    begin="4" dur="3" from="0.5" to="1.0" >
    <param name="radius" value="3in" >
</transitionFilter>

param要素のサポートは実装依存とする。パラメタの意味は特定の遷移の実装に依存する。

12.6 TransitionModifiersモジュール

TransitionModifiersモジュールは,水平及び垂直の繰返しパタンの制御及びパタン境界に沿った視覚効果の制御など,遷移の視覚効果に対する付加的な制御を与える。 SMPTE標準もまたこの幾何学的な制御の型を許可する。

このモジュールはBasicTransitions モジュール又はInlineTransitions モジュールのどちらかを要求する。

horzRepeat
この属性は,水平軸に沿って遷移パタンを何回動作するかを指定する。
デフォルト値は1とする(パタンが一度水平に生じる)。
vertRepeat
この属性は,垂直軸に沿って遷移パタンを何回動作するかを指定する。
デフォルト値は1とする(パタンが一度垂直に生じる)。
borderWidth
この属性は,ワイプの端に沿って生成される境界の幅を指定する。 正当な値は0以上の整数とする。 borderWidthが0に等しい場合,ワイプの端に沿った境界は生成されない。
デフォルト値は0とする。
borderColor
type属性の値が"fade"でない場合,この属性はワイプの端に沿って生成される境界の内容を指定する。 正当な値はCSS2 システム色値又は文字列"blend"とする。 この属性の値が色である場合,ワイプ又はワイプの端に沿って生成された境界はこの色で満たされる。 この属性の値が"blend"の場合,ワイプブレンドに沿って生成された境界はメディアリンク元の加算的混合(又はにじみ)とする。 デフォルト値は"black"とする。

12.6.1 水平パタン及び垂直パタンの繰返し

horzRepeat及びvertRepeat属性を使用して,遷移を作る幾何学的パタンは,メディアによって占められた領域一帯を水平及び垂直の方向へ繰返されることができる。 繰返しを達成するために,リンク先メディアによって占められた領域は,horzRepeat及びvertRepeatの値によって等しい部分に水平に及び(又は)垂直に分割される。 その後,同一の遷移が,同時に,分割により生じた部分の各々に一つ動作される。

次の図は,デフォルトhorzRepeat及びvertRepeat属性によって提供される振る舞い及び画像に遷移の二つのコピーが適用されるようにした各属性によって提供される振る舞いの違いを例証する。

Image without any transition applied

図1。 適用される遷移のない画像。

Default Vertical Repeat

図2。 図1からファン遷移が進行中の画像。 遷移の現在の領域は黒い三角形によって示される。 この例は,horzRepeat及びvertRepeatの両方に対して1というデフォルト値を使用し,そして,一つの遷移の発生をもたらす。 したがって,ファンパタンはどちらの方向へも繰返されない。

このアニメーション化された画像は図2の単一のファン遷移を示す。 ファン遷移は次のように宣言され得る。

<transition ... type="fanWipe" subtype="centerTop" dur="1s"/>

Horizontal Repeat of two

図3。 図2と同様なファン遷移が進行中だが,二つの水平の繰返しが指定されている(horzRepeat="2")。 繰返しは,二つのより小さい遷移の同一コピーを,一つは画像の左半分にもう一つは画像の右半分に産出する。 水平方向のパタンの数はhorzRepeatと等しい。

Vertical Repeat of two

図4。 図2と同様なファン遷移が進行中だが,二つの垂直の繰返しが指定されている(vertRepeat="2")。 繰返しは,二つのより小さい遷移の同一コピーを,一つは画像の上半分にもう一つは画像の下半分に産出する。 垂直方向のパタンの数はvertRepeatと等しい。

次の例は図4の遷移の宣言を示す。 メディア上の二つの位置にファン遷移がただちに生じるだろうということを示すよう,vertRepeat値として2を指定する。

<transition ... type="fanWipe" subtype="centerTop" dur="1s"
        horzRepeat="1" vertRepeat="2"/>

ここではわかりやすくするために明示的に設定したが,1がデフォルト値であるので,horzRepeatを1に設定する必要はなかったことに注意すること。 この遷移はこのアニメーション化された画像によって例証される。

より複雑な例として,horzRepeatが3に設定されvertRepeatが2に設定された場合,6つの小さなファン遷移が,横に三つ(horzRepeat)及び縦に二つ(vertRepeat)のパタンで,メディア上にただちに生じるだろう。

horzRepeat及びvertRepeat属性が遷移の型に依存する視覚的な変更を生成しなくてもよいことに注意すること。 特に,遷移パタンの反復が同一の結果を生む場合,これらの属性には視覚効果はない。 例えば,遷移が依然としてメディアの左端から右端までずっと生じるので,vertRepeat属性を2に設定することは左から右へのpush-又はslideWipeに視覚効果を及ぼさないだろう。 対照的に,一つの遷移が上からメディアの中間に,もう一つの遷移がメディアの中間から下に同時に生じるので,同じvertRepeat属性は上から下へのpush-又はslideWipeに影響するだろう。 何度反復されるにかかわらずフェードは一様に適用されるので,horzRepeat及びvertRepeatのどちらもフェード遷移には影響しない。

効果が現れない場合,実装がhorzRepeat及びvertRepeat属性を無視することによって最適化することを選んでもよい。

12.7 統合

12.7の目的は,ホスト言語又はプロファイルにSMIL Transitionsを統合するための要求及び推奨を指定することとする。

  1. TransitionModifiers モジュールを含むプロファイルはBasicTransitions モジュール又はInlineTransitions モジュールのどちらかもまた含まなければならない。
  2. 遷移はメディアに適用されるものでありメディアのレイアウトに特有のものではないので,SMIL Transitionsはレイアウトを知らなくてよい。 レイアウト言語の任意の型は使用してもよい。
  3. BasicTransitions モジュールを含むプロファイルはtransition要素を指定する何らかの方法をもっていなければならない。 すべてのtransition 要素が文書の<head>(存在する場合)で指定され,すべてのtransition要素を一緒にグループ化する何らかのコンテナ要素(SMIL 1.0文書の<head>の中の<layout>要素のようなもの)があることが推奨される。
  4. BasicTransitions モジュールを統合するプロファイルはtransition要素上にXML識別子を宣言する方法を提供しなければならない。
  5. InlineTransitions モジュールを統合するプロファイルはtransitionFilter要素上にXML識別子を宣言する方法を提供しなければならない。
  6. プロファイルは,レイアウト中のどのような重なり合いがfill="transition"を意味するかを定義しなければならない (BasicTransitions モジュール及びInlineTransitions モジュールで要求される)。
  7. プロファイルがInlineTranstions モジュールを含む場合,ホスト言語設計者はターゲット要素を指定するためにtargetElement属性又はXLink属性のどちらをサポートするかを選ばなくてはならない。 XLink構文が使用される場合,ホスト言語設計者は関連属性のためにXLink名前空間をどのように表示するかを決定しなければならない。 名前空間はDTDで固定することもできるし,ホスト言語設計者が属性のためのXLink名前空間を表示するためにコロン付けした属性名(qnames)を加えることを要求することもできる。 要求されたXLink属性値は固定値をもつため,DTDで指定してもよいし,アニメーション化要素に要求してもよい。 ホスト言語設計者はオプションのXLink属性が指定されることを要求してもよい。 これらの決定はホスト言語設計者に委ねられている。 XLink属性における構文詳細はSMIL Transitionsのセマンティクスに影響しない。

12.8 付録 分類表

表1: 分類表は遷移の型名及び下位型名の詳細リストを含む。 型名及び下位型名は,遷移の視覚効果のいくつかのヒントを提供するように選ばれている。 しかしながら,場合によっては,名前だけでこれらの遷移を視覚的に十分に記述できない。 これらの遷移についてよりよい理解のためには,SMPTE 258M-1993 [SMPTE-EDL] の11-16ページを参照すること。

SMPTE遷移のパタンを識別するための補助として,12.8 ではまた,対応するSMPTEワイプの実例を次の表で提供する。

表2: SMPTE端ワイプ

表3: SMPTE虹彩ワイプ

表4: SMPTE時計ワイプ

表5: SMPTE行列ワイプ

分類表及び実例の表の間で型名及び下位型名に相違がある場合は,この分類表が優先権をもつ。 SMPTE仕様[SMPTE-EDL]は 12.8 の実例の表よりも優先権をもつ。 実例は利便性のためだけに提供される。

12.8.1 表1 分類表

SMPTE ワイプ符号(適切な場合には)が下位型名の後に括弧の中で提供され,参照だけのためにある。 ワイプ符号は遷移下位型名の一部ではない。 各々の型のデフォルトの遷移下位型は単語[default]によって示される。

遷移型

遷移下位型 (括弧内はSMPTEワイプ符号)

端ワイプ - ワイプが端に沿って生じる

"barWipe" "leftToRight" (1) [default],"topToBottom" (2)
"boxWipe" "topLeft" (3) [default],"topRight" (4),"bottomRight" (5), "bottomLeft" (6),"topCenter" (23),"rightCenter" (24),"bottomCenter" (25),
"leftCenter" (26)
"fourBoxWipe" "cornersIn" (7) [default],"cornersOut" (8)
"barnDoorWipe" "vertical" (21) [default],"horizontal" (22), "diagonalBottomLeft" (45),
"diagonalTopLeft" (46)
"diagonalWipe" "topLeft" (41) [default],"topRight" (42)
"bowTieWipe" "vertical" (43) [default],"horizontal" (44)
"miscDiagonalWipe" "doubleBarnDoor" (47) [default],"doubleDiamond" (48)
"veeWipe" "down" (61) [default],"left" (62),"up" (63),"right" (64)
"barnVeeWipe" "down" (65) [default],"left" (66),"up" (67),"right" (68)
"zigZagWipe" "leftToRight" (71) [default],"topToBottom" (72)
"barnZigZagWipe" "vertical" (73) [default],"horizontal" (74)

虹彩ワイプ - 形がメディアの中心から拡大する

"irisWipe" "rectangle" (101) [default],"diamond" (102)
"triangleWipe" "up" (103) [default],"right" (104),"down" (105),"left" (106)
"arrowHeadWipe" "up" (107) [default],"right" (108),"down" (109),"left" (110)
"pentagonWipe" "up" (111) [default],"down" (112)
"hexagonWipe" "horizontal" (113) [default],"vertical" (114)
"ellipseWipe" "circle" (119) [default],"horizontal" (120), "vertical" (121)
"eyeWipe" "horizontal" (122) [default],"vertical" (123)
"roundRectWipe" "horizontal" (124) [default],"vertical" (125)
"starWipe" "fourPoint" (127) [default],"fivePoint" (128),"sixPoint" (129)
"miscShapeWipe" "heart" (130) [default],"keyhole" (131)

時計ワイプ - 中心点の周りを回転する

"clockWipe" "clockwiseTwelve" (201) [default],"clockwiseThree" (202), "clockwiseSix" (203),
"clockwiseNine" (204)
"pinWheelWipe" "twoBladeVertical" (205) [default],"twoBladeHorizontal" (206),"fourBlade" (207)
"singleSweepWipe" "clockwiseTop" (221) [default],"clockwiseRight" (222), "clockwiseBottom" (223),"clockwiseLeft" (224),"clockwiseTopLeft" (241), "counterClockwiseBottomLeft" (242),"clockwiseBottomRight" (243),
"counterClockwiseTopRight" (244)
"fanWipe" "centerTop" (211) [default],"centerRight" (212),"top" (231), "right" (232),
"bottom" (233),"left" (234)
"doubleFanWipe" "fanOutVertical" (213) [default],"fanOutHorizontal" (214),
"fanInVertical" (235),"fanInHorizontal" (236)
"doubleSweepWipe" "parallelVertical" (225) [default],"parallelDiagonal" (226), "oppositeVertical" (227),"oppositeHorizontal" (228),
"parallelDiagonalTopLeft" (245),"parallelDiagonalBottomLeft" (246)
"saloonDoorWipe" "top" (251) [default],"left" (252),"bottom" (253),"right" (254)
"windshieldWipe" "right" (261) [default],"up" (262),"vertical" (263), "horizontal" (264)

行列ワイプ - メディアがパタンにしたがって四角形状に明らかにされる

"snakeWipe" "topLeftHorizontal" (301) [default],"topLeftVertical" (302), "topLeftDiagonal" (303),"topRightDiagonal" (304),"bottomRightDiagonal" (305),
"bottomLeftDiagonal" (306)
"spiralWipe" "topLeftClockwise" (310) [default],"topRightClockwise" (311), "bottomRightClockwise" (312),
"bottomLeftClockwise" (313), "topLeftCounterClockwise" (314),"topRightCounterClockwise" (315), "bottomRightCounterClockwise" (316),"bottomLeftCounterClockwise" (317)
"parallelSnakesWipe" "verticalTopSame" (320),[default] "verticalBottomSame" (321), "verticalTopLeftOpposite" (322),"verticalBottomLeftOpposite" (323), "horizontalLeftSame" (324),"horizontalRightSame" (325), "horizontalTopLeftOpposite" (326),"horizontalTopRightOpposite" (327), "diagonalBottomLeftOpposite" (328),"diagonalTopLeftOpposite" (329)
"boxSnakesWipe" "twoBoxTop" (340) [default],"twoBoxBottom" (341),"twoBoxLeft" (342),"twoBoxRight" (343),
"fourBoxVertical" (344),"fourBoxHorizontal" (345)
"waterfallWipe" "verticalLeft" (350) [default],"verticalRight" (351), "horizontalLeft" (352),
"horizontalRight" (353)

非SMPTEワイプ

"pushWipe" "fromLeft" [default],"fromTop","fromRight","fromBottom"
"slideWipe" "fromLeft" [default],"fromTop","fromRight","fromBottom"
"fade" "crossfade" [default],"fadeToColor","fadeFromColor"

非STMTPE遷移の説明

"pushWipe"遷移はリンク先メディアが背景メディアを"押し"出すように見える。 言い換えれば,背景メディア及びリンク先メディアの両方は動いている。

"slideWipe"遷移では,リンク先メディアは動くが,背景メディアは動かない。 "slideWipe"遷移の視覚効果はリンク先メディアが背景メディアを横切って"滑って"いくこととする。

"fade"遷移はリンク先メディア及び,背景メディア又は指定された色との間のピクセル単位の混合とする。

12.8.2 表2 SMPTE端ワイプ

端ワイプは水平,垂直,又は対角の端から始まり,指定された形で拡張する。 変化の方向は白い領域が増える方向である。


"barWipe"

SMPTE Wipe #1
"leftToRight" (1) [default]

SMPTE Wipe #2
"topToBottom" (2)


"boxWipe"

SMPTE Wipe #3
"topLeft" (3) [default] 

SMPTE Wipe #5
"bottomRight" (5)

SMPTE Wipe #23
"topCenter" (23)

SMPTE Wipe #25
"bottomCenter" (25)

SMPTE Wipe #4
"topRight" (4) 

SMPTE Wipe #6
"bottomLeft" (6) 

SMPTE Wipe #24
"rightCenter" (24) 

SMPTE Wipe #26
"leftCenter" (26)


 "fourBoxWipe"

SMPTE Wipe #7
"cornersIn" (7) [default] 

SMPTE Wipe #8
"cornersOut" (8)


 "barnDoorWipe"

SMPTE Wipe #21
"vertical" (21) [default] 

SMPTE Wipe #45
"diagonalBottomLeft" (45) 

SMPTE Wipe #22
"horizontal" (22) 

SMPTE Wipe #46
"diagonalTopLeft" (46)


 "diagonalWipe"

SMPTE Wipe #41
"topLeft" (41) [default] 

SMPTE Wipe #42
"topRight" (42)


 "bowTieWipe"

SMPTE Wipe #43
"vertical" (43) [default] 

SMPTE Wipe #44
"horizontal" (44)


 "miscDiagonalWipe"

SMPTE Wipe #47
"doubleBarnDoor" (47) [default] 

SMPTE Wipe #48
"doubleDiamond" (48)


"veeWipe"

SMPTE Wipe #61
"down" (61) [default] 

SMPTE Wipe #63
"up" (63) 

SMPTE Wipe #62
"left" (62) 

SMPTE Wipe #64
"right" (64)


 "barnVeeWipe"

SMPTE Wipe #65
"down" (65) [default] 

SMPTE Wipe #67
"up" (67) 

SMPTE Wipe #66
"left" (66) 

SMPTE Wipe #68
"right" (68)


 "zigZagWipe"

SMPTE Wipe #71
"leftToRight" (71) [default] 

SMPTE Wipe #72
"topToBottom" (72)


 "barnZigZagWipe"

SMPTE Wipe #73
"vertical" (73) [default] 

SMPTE Wipe #74
"horizontal" (74)

 



12.8.3 表3 SMPTE虹彩ワイプ

虹彩ワイプはメディアの中心から指定された形で拡張する。 変化の方向は白い領域が増加する方向である。


 "irisWipe"

SMPTE Wipe #101
"rectangle" (101) [default] 

SMPTE Wipe #102
"diamond" (102)


 "triangleWipe"

SMPTE Wipe #103
"up" (103) [default] 

SMPTE Wipe #105
"down" (105) 

SMPTE Wipe #104
"right" (104) 

SMPTE Wipe #106
"left" (106)


 "arrowHeadWipe"

SMPTE Wipe #107
"up" (107) [default] 

SMPTE Wipe #109
"down" (109) 

SMPTE Wipe #108
"right" (108) 

SMPTE Wipe #110
"left" (110)


 "pentagonWipe"

SMPTE Wipe #111
"up" (111) [default] 

SMPTE Wipe #112
"down" (112)


 "hexagonWipe"

SMPTE Wipe #113
"horizontal" (113) [default] 

SMPTE Wipe #114
"vertical" (114)


 "ellipseWipe"

SMPTE Wipe #119
"circle" (119) [default] 

SMPTE Wipe #121
"vertical" (121)

SMPTE Wipe #120
"horizontal" (120) 


 "eyeWipe"

SMPTE Wipe #122
"horizontal" (122) [default] 

SMPTE Wipe #123
"vertical" (123)


 "roundRectWipe"

SMPTE Wipe #124
"horizontal" (124) [default] 

SMPTE Wipe #125
"vertical" (125)


 "starWipe"

SMPTE Wipe #127
"fourPoint" (127) [default]

SMPTE Wipe #129
"sixPoint" (129)

SMPTE Wipe #128
"fivePoint" (128) 

 


 "miscShapeWipe"

SMPTE Wipe #130
"heart" (130) [default]

SMPTE Wipe #131
"keyhole" (131)



12.8.4 表4 SMPTE時計ワイプ

時計ワイプは中心点の周りを回転する。 回転の中心はCenter of rotationの記号によって次の例で指し示される。 矢印curved arrowは回転の方向を示す。 変化の方向は白い領域が増加する方向である。


 "clockWipe"

SMPTE Wipe #201
"clockwiseTwelve" (201) [default]

SMPTE Wipe #203
"clockwiseSix" (203)

SMPTE Wipe #202
"clockwiseThree" (202)

SMPTE Wipe #204
"clockwiseNine" (204)


 "pinWheelWipe"

SMPTE Wipe #205
"twoBladeVertical" (205) [default] 

SMPTE Wipe #207
"fourBlade" (207)

SMPTE Wipe #206
"twoBladeHorizontal" (206) 

 


 "singleSweepWipe"

SMPTE Wipe #221
"clockwiseTop" (221) [default] 

SMPTE Wipe #223
"clockwiseBottom" (223) 

SMPTE Wipe #241
"clockwiseTopLeft" (241) 

SMPTE Wipe #243
"clockwiseBottomRight" (243)

SMPTE Wipe #222
"clockwiseRight" (222) 

SMPTE Wipe #224
"clockwiseLeft" (224) 

SMPTE Wipe #242
"counterClockwiseBottomLeft" (242) 

SMPTE Wipe #244
"counterClockwiseTopRight" (244)


 "fanWipe"

SMPTE Wipe #211
"centerTop" (211) [default] 

SMPTE Wipe #231
"top" (231)

SMPTE Wipe #233
"bottom" (233) 

SMPTE Wipe #212
"centerRight" (212) 

SMPTE Wipe #232
"right" (232)

SMPTE Wipe #234
"left" (234)


 "doubleFanWipe"

SMPTE Wipe #213
"fanOutVertical" (213) [default] 

SMPTE Wipe #235
"fanInVertical" (235)

SMPTE Wipe #214
"fanOutHorizontal" (214) 

SMPTE Wipe #236
"fanInHorizontal" (236)


 "doubleSweepWipe"

SMPTE Wipe #225
"parallelVertical" (225) [default] 

SMPTE Wipe #227
"oppositeVertical" (227) 

SMPTE Wipe #245
"parallelDiagonalTopLeft" (245) 

SMPTE Wipe #226
"parallelDiagonal" (226) 

SMPTE Wipe #228
"oppositeHorizontal" (228) 

SMPTE Wipe #246
"parallelDiagonalBottomLeft" (246)


 "saloonDoorWipe"

 

SMPTE Wipe #251
"top" (251) [default] 

SMPTE Wipe #253
"bottom" (253) 

SMPTE Wipe #252
"left" (252) 

SMPTE Wipe #254
"right" (254)


 "windshieldWipe"

 

SMPTE Wipe #261
"right" (261) [default] 

SMPTE Wipe #263
"vertical" (263) 

SMPTE Wipe #262
"up" (262) 

SMPTE Wipe #264
"horizontal" (264)



12.8.5 表5 SMPTE行列ワイプ

行列ワイプはパタンにしたがって四角形でメディアを明らかにする。 矢印arrowはパタンを示す。


 "snakeWipe"

SMPTE Wipe #301
"topLeftHorizontal" (301) [default] 

SMPTE Wipe #303
"topLeftDiagonal" (303)

SMPTE Wipe #305
"bottomRightDiagonal" (305) 

SMPTE Wipe #302
"topLeftVertical" (302) 

SMPTE Wipe #304
"topRightDiagonal" (304) 

SMPTE Wipe #306
"bottomLeftDiagonal" (306)


 "spiralWipe"

SMPTE Wipe #310
"topLeftClockwise" (310) [default] 

SMPTE Wipe #312
"bottomRightClockwise" (312) 

SMPTE Wipe #314
"topLeftCounterClockwise" (314)

SMPTE Wipe #316
"bottomRightCounterClockwise" (316) 

SMPTE Wipe #311
"topRightClockwise" (311) 

SMPTE Wipe #313
"bottomLeftClockwise" (313) 

SMPTE Wipe #315
"topRightCounterClockwise" (315) 

SMPTE Wipe #317
"bottomLeftCounterClockwise" (317)


 "parallelSnakesWipe"

 

SMPTE Wipe #320
"verticalTopSame" (320) [default] 

SMPTE Wipe #322
"verticalTopLeftOpposite" (322) 

SMPTE Wipe #324
"horizontalLeftSame" (324) 

SMPTE Wipe #326
"horizontalTopLeftOpposite" (326) 

SMPTE Wipe #328
"diagonalBottomLeftOpposite" (328) 

SMPTE Wipe #321
"verticalBottomSame" (321) 

SMPTE Wipe #323
"verticalBottomLeftOpposite" (323) 

SMPTE Wipe #325
"horizontalRightSame" (325) 

SMPTE Wipe #327
"horizontalTopRightOpposite" (327) 

SMPTE Wipe #329
"diagonalTopLeftOpposite" (329)


 "boxSnakesWipe"

 

SMPTE Wipe #340
"twoBoxTop" (340) [default] 

SMPTE Wipe #342
"twoBoxLeft" (342)

SMPTE Wipe #344
"fourBoxVertical" (344) 

SMPTE Wipe #341
"twoBoxBottom" (341) 

SMPTE Wipe #343
"twoBoxRight" (343) 

SMPTE Wipe #345
"fourBoxHorizontal" (345)


 "waterfallWipe"

SMPTE Wipe #350
"verticalLeft" (350) [default] 

SMPTE Wipe #352
"horizontalLeft" (352) 

SMPTE Wipe #351
"verticalRight" (351) 

SMPTE Wipe #353
"horizontalRight" (353)