本願の目的、技術案及び利点をより明確にするために、以下に図面及び実施例を参照しながら、本願をさらに詳細に説明する。ここで記述された具体的な実施例は本願を説明するためのものに過ぎず、本願を限定するものではないと理解すべきである。
図1は、一実施例におけるアニメーションレンダリング方法の適用環境図である。図1を参照すると、当該アニメーションレンダリング方法は、アニメーションレンダリングシステムに適用される。当該アニメーションレンダリングシステムは、端末110及びサーバ120を含む。端末110 及びサーバ120は、ネットワークを介して接続される。端末110は、具体的に、デスクトップ端末又はモバイル端末であってもよく、モバイル端末は、具体的に、携帯電話、タブレットコンピュータ、ノートブックコンピュータなどのうちの少なくとも1つであり得る携帯端末であってもよい。サーバ120は、独立したサーバ又は複数のサーバで構成されるサーバクラスタで実現されてもよい。
図2に示すように、一実施例において、アニメーションレンダリング方法を提供する。本実施例では、主に当該方法を上記の図1の端末110に適用することを例として説明する。図2を参照すると、当該アニメーションレンダリング方法は、具体的に、以下のステップを含む。
S202において、ターゲットフォーマットのアニメーションファイルを取得する。
なお、ターゲットフォーマットは、サフィックス名がPAG(又はpag)であるPAGフォーマットであり得る。PAGフォーマットのアニメーションファイルは、テキストや、画像などのリソースをシングルファイルに統合することで取得されることができる。また、PAGフォーマットのアニメーションファイルは、非常に高い圧縮率の動的ビットストレージ技術を採用する。また、PAGフォーマットのアニメーションファイルは、クロスプラットフォーム実行を実現し、実行中に、アニメーション効果を維持しながら、アニメーションにおけるテキストコンテンツ、フォントサイズスタイルを任意かつ動的に修正することができ、画像コンテンツを置き換え、豊富で多様なアニメーションコンテンツのカスタマイズ効果を実現することもできる。
一実施例において、トリガイベントを検出した場合に、端末は、ターゲットフォーマットのアニメーションファイルを取得する。当該トリガイベントは、アニメーション再生命令などの外部入力された操作命令であってもよい。
一実施例において、S202の前に、当該方法は、AE(Adobe
After Effects、Adobe)クライアントによりアニメーションファイルを作成した後に、AEクライアントにインストールされているPAGエクスポートプラグインを介してターゲットフォーマットのアニメーションファイルをエクスポートすることをさらに含むことができる。ターゲットフォーマットのアニメーションファイルをエクスポートする過程において、ターゲット符号化方式を採用してアニメーションファイルを符号化することができる。ターゲット符号化方式、ハフマン(Huffman)符号化、シャノン符号化、RLC(Run
Length Code、ランレングス符号化)、LZW(Lenpel-Ziv&Welch)符号化、算術符号化、予測符号化、変換符号化及び量子化符号化などの方式のいずれかであってもよい。
なお、インストールされたPAGエクスポートプラグインは、AEクライアント用に開発されるターゲットフォーマットをエクスポートするためのプラグインである。AEクライアントにおいてアニメーションファイルをエクスポートする場合に、少なくとも3つのオプションのエクスポート方式があり得、例えば、ベクトル合成エクスポートや、シーケンスフレームエクスポート、ビデオ合成エクスポートなどのエクスポート方式である。なお、ターゲットフォーマットのアニメーションファイルは、AEクライアントに特定のPAGエクスポートプラグインをインストールする必要がある。
アニメーションレンダリングは、特定のアプリケーションシナリオにおけるアニメーション再生に適用され得る。したがって、S202でアニメーションファイルを取得する方式は、アニメーション再生のアプリケーションシナリオに従って分類することができる。
シナリオ1:クライアントの表示ページでアニメーションを再生する。
一実施例において、クライアントを起動する過程において、端末は、ローカルに格納されたアニメーションライブラリからターゲットフォーマットのアニメーションファイルを取得し、あるいは、本端末は、アニメーション取得命令をサーバに送信し、当該アニメーション取得命令に応答したターゲットフォーマットのアニメーションファイルを受信し、クライアントが起動された場合に、当該アニメーションファイルに従って開始ページで開始アニメーションを再生する。クライアントの開始ページは、一種の表示ページである。
例えば、クライアントの開始ページにアニメーション効果を追加する。クライアントを起動する場合に、開始ページで再生されるためのPAGフォーマットのアニメーションファイルを取得して、PAGフォーマットのアニメーションファイルに従って開始ページでアニメーションを再生することができ、開始ページのアニメーション効果を増加し、ユーザエクスペリエンスを向上させる。
一実施例において、クライアントが起動された後、表示ページがターゲット位置にスクロールされると、端末は、ローカルに格納されたアニメーションライブラリからターゲットフォーマットのアニメーションファイルを取得し、あるいは、端末は、アニメーション取得指令をサーバに送信し、当該アニメーション取得指令に応答したターゲットフォーマットのアニメーションファイルを受信し、当該アニメーションファイルはターゲット位置にスクロールされた表示ページで開始アニメーションを再生する。
例えば、クライアントの表示ページが一番下までスクロールされると、表示ページの一番下で再生するためのPAGフォーマットのアニメーションファイルを取得することができ、ユーザは、表示ページスが一番下までクロールされる場合にアニメーションを見ることができ、クライアントの表示ページにアニメーション効果を設置することで、ユーザエクスペリエンスを向上させることができる。
シナリオ2:クライアントは、ビデオを再生する場合又は画像を表示する場合に、ビデオ又は画像の対応位置にアニメーションを表示する。
ビデオ又は画像を撮影する場合に、撮影ページで提供されたアニメーションを選択すると、撮影されたビデオ又は画像は、対応するアニメーションを含む。一実施例では、ビデオを再生する必要がある場合、端末は、入力された選択命令に従って指定されたビデオ識別子を選択し、当該ビデオ識別子に従って対応するIP(Internet Protocol、インターネットプロトコル)アドレスを取得し、IPアドレスに従ってビデオファイル及び対応するアニメーションを取得し、ビデオの再生中にビデオの設定された位置でアニメーションを再生するようにする。
S204において、アニメーションファイルを復号化する場合に、復号化されたアニメーション描画データから、静止条件を満たすアニメーション描画データ区間を確定する。
なお、アニメーション描画データはPAGアニメーションの描画データと呼ばれ得、PAGアニメーションコンテンツを説明又は描画するためのデータであってもよく、アニメーション描画データに応じてアニメーションレンダリングを行い、次に、画面へのロードを行って対応する表示用のPAGアニメーションコンテンツを得ることができる。アニメーション描画データ区間におけるある瞬時アニメーション描画データに対してアニメーションレンダリングを行い、そして、画面へのロードを行って表示することで、あるフレームを得ることができ、したがって、瞬時アニメーション描画データは、あるアニメーションフレームを構成するデータであり、アニメーションフレームと対応する。静止条件を満たすアニメーション描画データ区間は、アニメーション描画データが一定の期間内に変化しないデータ区間であってもよい。
静止条件を満たすアニメーション描画データ区間は、アニメーション描画データの静止区間、すなわち、アニメーションレイヤーの静止区間として理解することができる。アニメーションファイルのアニメーションレイヤーが1つである場合に、アニメーション描画データ区間は、アニメーションファイルの静止間隔であり、アニメーションファイルのアニメーションレイヤーが複数である場合に、各アニメーション描画データ区間の共通集合が、アニメーションファイルの静止間隔である。後続の実施例では、特に明記しない限り、アニメーション描画データ区間は、静止条件を満たす描画データ区間である。
静止条件とは、一定の期間内に変化しないことを指し得る。 例えば、マクロ的には、静止状態とは、アニメーションが再生中に一定の期間内に変化しない(すなわち、アニメーションがその期間内に静止したままである)ことを指し得る。ミクロ的には、定常状態は、アニメーションフレームを構成するアニメーション描画データが一定の期間内に変化しないことを指し得る。また、アニメーション描画データは、グループ描画データで構成されるので、定常状態とは、グループ描画データが一定の期間内に変化しないことを指し得、さらに、グループ描画データは、アニメーション属性値で構成されるため、定常状態は、アニメーション属性値が一定の期間内に変化しないことを指してもよい。なお、アニメーション属性値は、アニメーションにおける文字の色、サイズ、フォント、文字のモーションパラメータなどであってもよい。アニメーション属性値は、時間の変化に関連し、例えば、アニメーション属性値と時間は、線形関連であってもよく、つまり、アニメーション属性値は、時間の経過とともに比例して増加又は減少し、アニメーション属性値と時間は、ベッセル関連であってもよく、つまり、アニメーション属性値は、時間の経過とともにベッセル曲線になり、アニメーション属性値と時間は、また、ホールドタイプであってもよく、つまり、アニメーション属性値は、一定の時間範囲内に変化しない、即ち、静止条件を満たす。
アニメーション属性値は、時間軸属性のパラメータ値に属する。時間軸属性は、アニメーション属性値が時間の変化に関連する属性であってもよい。
1つのアニメーションファイルの各アニメーションフレームは、複数のアニメーションレイヤー(すなわち、アニメーションのレイヤー)を重ね合わせることで形成されることができ、アニメーションレイヤーは、より小さな粒度のアニメーション属性グループによって構成されてもよい。アニメーション属性グループには、合計6つのタイプがあり、変換(transform)、レイヤー内のマスクを示す(mask)、レイヤー間のマスクを示す(trackMatter)、レイヤースタイル(layerStyle)、効果(effect)、及びコンテンツ(effect)などの6種のアニメーション属性グループを含む。コンテンツタイプのアニメーション属性グループには、画像、テキスト、形状などの描画可能な要素を含んでいるため、当該コンテンツタイプのアニメーション属性グループは、描画可能な要素属性グループである。アニメーション属性グループに含まれるコンテンツは、対応するアニメーション属性値で記述され得る。つまり、アニメーション属性値は、アニメーション属性グループ内の要素である。例えば、グラフィックスレンダリング中に、形状の記述について、パス情報及びペイント情報の2つのタイプのアニメーション属性値でアニメーションの形状を記述することができる。
一実施例において、ターゲットフォーマットのアニメーションファイルを取得した後に、端末は、クライアントを介して当該アニメーションファイルをロードして復号化することで、アニメーションファイルオブジェクトを取得する。次に、端末は、アニメーションファイルオブジェクト上のアニメーション属性値リストをトラバースし、対応するアニメーション属性グループに従ってトラバースされたアニメーション属性値を組み合わせることで、グループ描画データを取得する。端末は、対応するアニメーションレイヤーに従ってグループ描画データを組み合わせることで、アニメーション描画データを取得する。
一実施例において、静止条件を満たすアニメーション描画データ区間の確定方式について、端末は、まず、静止条件を満たすアニメーション属性値区間を見つけることができる。アニメーション描画データにグループ描画データを含み、グループ描画データにアニメーション属性値を含むので、端末は、まず、アニメーション属性グループにおける各アニメーション属性値区間の共通集合を計算し、アニメーション属性値区間の共通集合を、静止条件を満たすグループ描画データ区間とし、次に、バブルアルゴリスケーリングを採用して静止条件を満たすアニメーション描画データ区間を計算する。
S206において、アニメーション描画データ区間における開始アニメーション描画データをキャッシュする。
なお、アニメーション描画データ区間におけるアニメーション描画データが時間の経過とともに変化しないので、アニメーション描画データ区間内の各瞬時アニメーション描画データは同じである。また、アニメーション描画データ区間内のある瞬時アニメーション描画データは、アニメーションフレームに対応付けられ、アニメーション描画データをキャッシュする場合に、端末は、アニメーション描画データ区間における開始アニメーション描画データをキャッシュするだけでよく、当該開始アニメーション描画データにより対応するアニメーションフレームにおける画面をレンダリングすることができる。
一実施例において、端末は、静止条件を満たすアニメーション描画データ区間を確定した後に、アニメーション描画データ区間における開始アニメーション描画データを取得し、次に、取得された開始アニメーション描画データをキャッシュする。なお、当該開始アニメーション描画データは、瞬時アニメーション描画データである。
例えば、アニメーションファイルAの場合、合計100フレームであり、前の10フレームのアニメーションが静止している、すなわち、前の10フレームのアニメーション描画データが静止条件を満すと仮定する。したがって、端末は、前の10フレームにおいて第1フレームのアニメーション描画データを取得し、次にキャッシュすることができる。
S208において、アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュされた再生すべきフレームに対応する開始アニメーション描画データを読み取る。
一実施例において、端末は、再生中に、アニメーションファイルの再生進度をリアルタイムで検出し、現在の再生すべきフレームが静止していると、即ち、再生すべきフレームに対応するアニメーション描画データが静止条件を満たすと、キャッシュから読み取り再生すべきフレームに対応する開始アニメーション描画データを読み取る。
例えば、アニメーションファイルAの場合、合計100フレームであり、前の10フレームのアニメーション描画データが静止条件を満すと仮定する。アニメーションファイルAを再生する過程で、第1フレームが完了した後に第2フレームを再生する必要がある場合、前の10フレームのアニメーション描画データが静止条件を満たすので、端末はキャッシュから第1フレームのアニメーション描画データを読み取るだけでよい。
一実施例において、各アニメーション描画データ区間に対して対応する識別子を設定し得、アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュから、設置された識別子に従って開始アニメーション描画データを読み取り、読み取られた開始アニメーション描画データが再生すべきフレームに対応する。
S210において、読み取られた開始アニメーション描画データに応じてアニメーションレンダリングを行う。
一実施例において、端末は、レンダリングツールを呼び出して読み取られた開始アニメーション描画データをレンダリングすることで、視覚的アニメーションレンダリングデータを取得し、次に当該アニメーションレンダリングデータに対して画面へのロードを行って表示する。
例えば、端末は、WebGL(Web
Graphics Library、ネットワークグラフィックスライブラリ)、又はOpenGL ES(Open Graphics Library for Embedded Systems、組み込みシステム用のオープングラフィックスライブラリ)、又はOpenGL ES2.0バージョンを呼び出して、読み取られた開始アニメーション描画データをレンダリングし、その後、画面へのロードを行って表示することで、第2~第10フレームのアニメーションを得ることができる。
一例として、アニメーションファイルAの場合、合計100フレームのアニメーションにおける前の10フレームが静止していると、アニメーション描画データをキャッシュする場合に、第1フレームに対応するアニメーション描画データをキャッシュするだけでよい。第2フレーム~第10フレームを再生する場合、端末は、キャッシュされた第1フレームに対応するアニメーション描画データを取得するだけでよく、第1フレームに対応するアニメーション描画データをレンダリングすることで、第2フレーム~第10フレームのアニメーションレンダリングデータを得ることができ、その後、画面へのロードを行って表示することで第2フレーム~第10フレームのアニメーションレンダリングデータを得ることができる。
上記の実施例では、静止条件を満たすアニメーション描画データの開始アニメーション描画データをキャッシュし、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得し、再びアニメーションファイルを解析して再生すべきフレームに対応するアニメーション描画データを取得する必要がないので、大量の計算を回避し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、図3に示すように、S204は、具体的に、S302、S304、及びS306を含むことができる。
S302において、アニメーションファイルを復号化して、アニメーションファイルオブジェクトを取得する。
なお、アニメーションファイルオブジェクトには、アニメーションフレームに関連する様々なデータ、例えば、アニメーションを説明するために用いられ、最小の粒度であるアニメーション属性値を含んでいる。
一実施例において、アニメーションファイルを再生する必要がある場合に、端末は、クライアントを介してターゲットフォーマットのアニメーションファイルを解析して、バイナリアニメーションデータを取得する。端末は、ビットごとにバイナリアニメーションデータを読み取ってアニメーションファイルオブジェクトを取得する。
一実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合、端末は、同一のアニメーションファイルのみを復号化し、復号化されたアニメーションファイルオブジェクトをキャッシュする。1つよりも多いアプリケーションが同一のアニメーションを再生する場合、キャッシュされたアニメーションファイルからアニメーションファイルオブジェクトを読み取ることができればよい。
例えば、クライアントが同じなアニメーションを再生する必要がある場合に、同一のアニメーションファイルをメモリにロードしアニメーションファイルオブジェクトに復号化するだけでよく、複数の同じなアニメーションを同時に再生する場合に、キャッシュされたアニメーションファイルオブジェクトを多重化すればよい。
一実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、同一のアニメーションファイルのみを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトから読み取られた静止条件を満たすアニメーション描画データ区間における開始アニメーション描画データをキャッシュする。1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、キャッシュから各アプリケーションの再生すべきフレームに対応する開始アニメーション描画データを読み取ればよい。
S304において、アニメーションファイルオブジェクトにおけるアニメーション描画データを読み取る。
一実施例において、端末は、アニメーションファイルオブジェクト上のアニメーション属性値リストをトラバースし、トラバースされたアニメーション属性値を、対応するアニメーション属性グループに従って組み合わせることで、グループ描画データを取得する。端末は、グループ描画データを、対応するアニメーションレイヤーに従って組み合わせることで、アニメーション描画データを取得する。
S306において、読み取られたアニメーション描画データから、静止条件を満たすアニメーション描画データ区間を確定する。
一実施例において、静止条件を満たすアニメーション描画データ区間の確定方式について、端末は、まず、静止条件を満たすアニメーション属性値区間を見つけることができる。アニメーション描画データにグループ描画データを含み、グループ描画データにアニメーション属性値を含むので、端末は、まず、アニメーション属性グループにおける各アニメーション属性値区間の共通集合を計算し、アニメーション属性値区間の共通集合を、静止条件を満たすグループ描画データ区間とし、その後、バブルアルゴリスケーリングを採用して静止条件を満たすアニメーション描画データ区間を計算する。
一実施例において、アニメーションファイルが1つよりも多いアプリケーションに再生される場合に、端末は、各アプリケーションに対応する再生進度を確定し、再生進度に対応する再生すべきフレームのアニメーション描画データが静止条件を満たすと、キャッシュされた再生進度に対応する1つよりも多いアプリケーションで共有される開始アニメーション描画データを読み取る。
上記の実施例では、アニメーションファイルを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトにおけるアニメーション描画データを読み取り、その後、アニメーションファイルオブジェクトにおける静止条件を満たすアニメーション描画データ区間を見つけることにより、アニメーション描画データ区間における開始アニメーション描画データをキャッシュし、これにより、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得し、大量の計算を回避し、レンダリングプロセスにかかる時間を短縮し、アニメーションの再生をよりスムーズにする。
一実施例において、図4に示すように、アニメーションファイルは、少なくとも1つのアニメーションレイヤーを含み、各アニメーションレイヤーは、少なくとも二つのアニメーション属性グループを含み、各アニメーション属性グループは、少なくとも二つのアニメーション属性値を含んでおり、S204は、具体的に、S402、S404、及びS406を含むことができる。
S402において、アニメーション属性グループ中静止条件を満たす各アニメーション属性値区間を確定する。
なお、アニメーション属性グループは、transform、mask、trackMatter、layerStyle、effect及びcontentなどの合計6つのタイプのアニメーション属性グループを含む。アニメーション属性値は、アニメーション属性グループにおける要素であり、maskは、path情報及びマスクモードを利用して描画を実現するものであるので、path情報及びマスクモードは、maskのアニメーション属性値である。アニメーション属性値は、時間の変化に関連する値であり、例えば、アニメーション属性値は、時間の経過とともに比例して増加又は低減し、あるいは、アニメーション属性値は時間の経過とともにベッセル曲線のように変化し、また、あるいは、アニメーション属性値は一定の時間範囲内に時間の経過とともに変化しない。
なお、静止条件を満たすアニメーション属性値区間は、アニメーション属性値の静止区間として理解することができる。
一実施例において、端末は、アニメーション属性グループにおいて、一定の時間範囲内で時間の経過とともに変化しないアニメーション属性値を検索する。この時間範囲は、静止条件を満たすアニメーション属性値区間として使用し得る。なお、上記時間範囲は、具体的な時間を測定単位とする1つの時間区間であってもよいし、フレームを測定単位とする1つの時間区間であってもよい。
S404において、アニメーション属性値区間の共通集合をアニメーション属性グループのグループ描画データ区間とする。
なお、グループ描画データ区間は、グループ描画データの静止区間として理解することができ、アニメーション属性グループの静止区間でもある。
一実施例において、端末は、各アニメーション属性値区間の間の共通集合を計算し、アニメーション属性値区間の共通集合をアニメーション属性グループのグループ描画データ区間とし、そして、S406を実行し、つまり、バブルアルゴリスケーリングを採用してアニメーションレイヤーのアニメーション描画データ区間を計算する。
一実施例において、各アニメーション属性値区間の間に共通集合がない場合に、各アニメーション属性値区間の開始アニメーション属性値をキャッシュする。なお、アニメーション属性値区間の間に共通集合がないこととは、アニメーション属性グループに時間の経過とともに変化する少なくとも1つのアニメーション属性値が存在することを意味するので、アニメーション属性グループも時間の経過とともに変化し、即ち、アニメーション属性値グループが静止条件を満たさない(即ち、アニメーション属性値グループに静止区間がない)が、アニメーション属性値グループに静止条件を満たす少なくとも1つのアニメーション属性値が存在し、その後、静止条件を満たすアニメーション属性値区間を探し出し、アニメーション属性値区間の開始アニメーション属性値をキャッシュする。
一実施例において、アニメーション属性グループが描画可能な要素属性グループである場合に、アニメーション属性グループは、少なくとも二つの描画可能な要素を含み、描画可能な要素は、少なくとも二つのアニメーション属性値を含んでおり、当該方法は、端末がアニメーション属性値区間の共通集合を描画可能な要素の要素区間として確定し、描画可能な要素の要素区間の間の共通集合を計算することをさらに含んでおり、S404は、具体的に、要素区間の間の共通集合をアニメーション属性グループのグループ描画データ区間として確定することを含むことができる。
なお、アニメーション属性グループは、transform、mask、trackMatter、layerStyle、effect及びcontentなどの6つのタイプのアニメーション属性グループを含む。contentのようなアニメーション属性グループは、アニメーションレイヤーの不可欠な構成部分であり、当該アニメーションレイヤーの描画可能な要素、例えば、shape、text、エンティティ(solid)、プレ合成(PreCompose)及びimageなどを示し、他のgroupは、contentに基づいて、例えば、平行移動やスケーリング、マスクの追加、フィルター効果の追加などの処理を実行することで得られるものである。Contentは、多様性であるため、具体的な描画可能な要素対してキャッシュする必要がある。
S406において、グループ描画データ区間の共通集合をアニメーションレイヤーのアニメーション描画データ区間として確定する。
なお、アニメーション描画データ区間は、アニメーション描画データの静止区間として理解することができる、アニメーションレイヤーの静止区間でもある。
一実施例において、端末は、各グループ描画データ区間の共通集合を計算し、グループ描画データ区間の共通集合をアニメーションレイヤーのアニメーション描画データ区間として確定する。
アニメーションファイルは、少なくとも1つのアニメーションレイヤーから構成され、1つのアニメーションレイヤーは、1つのアニメーション描画データに対応し、アニメーション描画データは、少なくとも1つのグループ描画データから構成され、各アニメーション描画データをレンダリングし、その後、画面へのロードを行って対応するアニメーションを得ることができる。
一実施例において、各グループ描画データ区間の間に共通集合がない場合に、各グループ描画データ区間の開始グループ描画データをキャッシュする。なお、グループ描画データ区間の間に共通集合がないこととは、アニメーションレイヤーに時間の経過とともに変化する少なくとも1つのグループ描画データが存在することを意味するので、アニメーションレイヤーも時間の経過とともに変化し、即ち、グループ描画データグループが静止条件を満たさないが、グループ描画データグループに静止条件を満たす少なくとも1つのグループ描画データが存在し、その後、静止条件を満たすグループ描画データ区間を探し出し、グループ描画データ区間の開始グループ描画データをキャッシュする。
一実施例において、アニメーションファイルのアニメーションレイヤーの数が1つである場合に、端末は、アニメーション描画データ区間をアニメーション静止区間とする。アニメーションファイルのアニメーションレイヤーの数が複数である場合に、端末は、各アニメーションレイヤーの数のアニメーション描画データ区間の間の共通集合を計算し、アニメーション描画データ区間の間の共通集合をアニメーション静止区間とする。
なお、アニメーションファイルのアニメーションレイヤーの数が複数である場合に、静止条件を満たすアニメーション描画データ区間があると、アニメーション描画データ区間において、対応するアニメーションレイヤーにおける画像又はテキストは変化しない(即ち、静止状態にある)。アニメーションファイルのアニメーションレイヤーの数が複数である場合に、アニメーション静止区間があると、アニメーション静止区間において、アニメーションにおける全ての画像又はテキストは、変化しない(即ち、静止状態にある)。
一実施例において、アニメーションファイルには、アニメーションレイヤーに加えて、プレ合成属性グループを含む場合に、プレ合成属性グループは、1つのサブアニメーションファイルとみなすことができ、当該サブアニメーションファイルは、また、少なくとも1つのアニメーションレイヤー及び/又は埋め込まれたサブプレ合成属性グループを含んでもよい。プレ合成属性グループにおけるアニメーションレイヤー、アニメーション属性グループ及びアニメーション属性値の静止区間を計算するには、上記の実施例の方式を参照できる。
一例として、図5に示すように、アニメーションファイルのあるアニメーションレイヤーについて、当該アニメーションレイヤーが3つのgroupから構成され、それぞれtransform、mask及びcontentである。なお、[t1,t2]は、transformの静止区間を示し、即ち、当該アニメーションレイヤーで変換を実行しない(例えば、平行移動、スケーリング及び回転などを実行しない)ことを示し、[m1,m2]は、maskの静止区間を示し、つまり、当該アニメーションレイヤーが常に同一のマスクを使用し、且つマスクは変化しないことを示し、[c1,c2]及び[c3,c4]は、contentの静止区間を示し、即ち、当該アニメーションレイヤーが同一のテキスト及び同一の画像をそれぞれ応用し、且つ[c1,c2]の期間にテキストが変化せず、[c3,c4]の期間に画像も変化しないことを示す。なお、t1、t2、m1、m2、c1、c2、c3及びc4は、フレームで示され得、例えば、t1は、アニメーションの第1のフレーム、m1はアニメーションの第3フレーム、t2は、アニメーションの第10フレームを示してもよい。
Contentについて、[c1,c2]及び[c3,c4]は、contentの静止区間である。アニメーションファイルを再生する場合に、端末は、c1時点のテキスト及びc3時点の画像を1回解析し、解析されたテキスト及び画像をキャッシュしマークするだけで済む。アニメーションの再生中に描画する必要のあるフレームがcで、cが[c1,c2]区間に属する場合に、端末は、cフレームのテキストを再解析する必要がせず、キャッシュからc1フレームのグループ描画データを直接取得でき、その後、c1フレームのグループ描画データに応じてテキストをレンダリングし、レンダリングされたテキストは、cフレームテキストとまったく同じである。
上記でcontentのようなgroupシナリオのみを考慮し、1つのアニメーションレイヤーは、一般複数のgroupから構成され、例えば、transform、mask及びcontentの3つのタイプのgroupのみを含むアニメーションレイヤーは、その静止区間がtransform、mask及びcontent静止区間の共通集合であり、図5に示すように、その静止区間は、[m1,c2]及び[c3,t2]の二つを含み、具体的に、図5の破線を参照することができる。
上記の実施例において、アニメーション描画データ区間における開始アニメーション描画データをキャッシュするように、まず、静止条件を満たすアニメーション属性値区間を確定し、次にバブルアルゴリスケーリングを採用してアニメーション描画データ区間を計算することにより、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得し、大量の計算を回避し、レンダリングプロセスにかかる時間を短縮し、アニメーションの再生をよりスムーズにする。
一実施例において、図6に示すように、当該方法は、S602、S604、S606及びS608をさらに含む。
S602において、アニメーション属性値区間の間に共通集合がない場合に、アニメーション属性値区間の開始アニメーション属性値をキャッシュする。
なお、アニメーション属性値区間は、アニメーション属性値の静止区間として理解することができる。アニメーション属性値区間の間に共通集合がないこととは、アニメーション属性グループに時間の経過とともに変化する少なくとも1つのアニメーション属性値が存在することを意味するので、アニメーション属性グループも時間の経過とともに変化し、即ち、アニメーション属性値グループに静止区間がないが、アニメーション属性値グループに静止条件を満たす少なくとも1つのアニメーション属性値が存在し、次に、静止条件を満たすアニメーション属性値区間を探し出し、アニメーション属性値区間の開始アニメーション属性値をキャッシュする。
S604において、アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たさず、かつアニメーション属性値区間の間に共通集合がない場合に、キャッシュされた再生すべきフレームに対応する開始アニメーション属性値を読み取る。
なお、アニメーション描画データ区間は、アニメーション描画データの静止区間として理解することができ、アニメーションレイヤーの静止区間でもある。アニメーションファイルの再生中において、再生すべきフレームに対応するアニメーション描画データが静止条件を満たさず、且つアニメーション属性値区間の間に共通集合がない場合に、再生すべきフレームに対応するアニメーション描画データが対応する静止区間にヒットせず、且つ再生すべきフレームに対応するグループ描画データも対応する静止区間にヒットしないことを意味する。
一実施例において、アニメーションファイルを再生する場合に、再生すべきフレームに対応するアニメーション描画データが静止区間にヒットしないと、S208を実行する。再生すべきフレームに対応するアニメーション描画データが静止区間にヒットしないと、端末は、アニメーション描画データにおける小粒子(即ち、グループ描画データ)に向けて検索し続け、再生すべきフレームに対応するグループ描画データが対応する静止区間にヒットするかどうかを検索し、ヒットしたと、キャッシュから再生すべきフレームに対応する開始グループ描画データを取得し、さらに、アニメーションファイルオブジェクトから再生すべきフレームに対応し、且つ非静止区間内であるグループ描画データを解析することにより、端末は、取得された開始グループ描画データ、及び解析されたグループ描画データに応じてアニメーションのレンダリングを行うことができる。
一実施例において、再生すべきフレームに対応するアニメーション描画データが対応する静止区間にヒットせず、且つ再生すべきフレームに対応するグループ描画データも対応する静止区間にヒットしないと、端末は、グループ描画データにおける小粒子(即ち、アニメーション属性値)に向けて検索し続け、再生すべきフレームに対応するアニメーション属性値が対応する静止区間にヒットするかどうかを検索し、ヒットしたと、キャッシュから再生すべきフレームに対応する開始アニメーション属性値を取得し、そして、S606を実行する。
静止区間セグメントが存在するため、あるフレームまで再生された場合に、全てのアニメーションレイヤーをトラバースする必要があり、現在の再生すべきフレームがアニメーションレイヤーの静止区間にヒットすると、当該アニメーションレイヤーにとって、静止区間全体の全てのフレームのデータは同じであるので、キャッシュから対応する開始描画データを直接取得できる。アニメーションレイヤーの静止区間にヒットしないと、当該アニメーションレイヤーの全てのgroupを再度トラバースし、groupの静止区間にヒットしたと、端末は、直接にgroupの静止区間における開始グループ描画データをそのまま使用すればよく、また、さらに、アニメーションファイルオブジェクトから再生すべきフレームに対応し、且つ非静止区間内であるグループ描画データを解析する。groupの静止区間にヒットしないと、端末は、当該groupの全てのアニメーション属性値を再度トラバースし、アニメーション属性値の静止区間にヒットすると、端末は、直接にアニメーション属性値の静止区間における開始アニメーション属性値をそのまま使用すればよく、また、S606を実行する。
S606において、アニメーションファイルを復号化したアニメーションファイルオブジェクトから、再生すべきフレームに対応し、且つ静止条件を満たさないアニメーション属性値を取得する。
一実施例において、再生すべきフレームに対応する開始アニメーション属性値が読み取られると、端末は、さらに、アニメーションファイルオブジェクトから再生すべきフレームに対応し、非静止区間であるアニメーション属性値を解析することにより、端末は、取得された開始アニメーション属性値、及び解析されたアニメーション属性値に応じてアニメーションレンダリングを行うことができる。
S608において、読み取られた開始アニメーション属性値、及び取得されたアニメーション属性値に応じてアニメーションレンダリングを行う。
なお、再生すべきフレームは、そのアニメーション描画データが静止区間内のアニメーション属性値及び非静止区間内のアニメーション属性値から構成され得る。静止区間内のアニメーション属性値について、アニメーションファイルオブジェクトから解析することなく、キャッシュから再生すべきフレームに対応する開始アニメーション属性値を直接読み取ればよい。
一実施例において、端末によって読み取られた開始アニメーション属性値、及び取得されたアニメーション属性値は、アニメーション描画データに変換され、次に、アニメーション描画データに応じてアニメーションレンダリングを行う。
上記の実施例において、アニメーションレイヤー及びアニメーション属性グループの両方が静止区間にないと、静止区間があるアニメーション属性値の開始アニメーション属性値をキャッシュする。再生すべきフレームがアニメーション属性値の静止区間にヒットすると、アニメーションファイルオブジェクトから静止区間に属するアニメーション属性値を解析することはく、キャッシュから再生すべきフレームに対応する開始アニメーション属性値を読み取り、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、図7に示すように、当該方法は、S702、S704、S706及びS708をさらに含む。
S702において、アニメーション属性値区間の間に共通集合があるが、グループ描画データ区間の間に共通集合がない場合に、グループ描画データ区間の開始グループ描画データをキャッシュする。
なお、アニメーション属性値区間は、アニメーション属性値の静止区間として理解することができる。アニメーション属性値区間の間に共通集合があることとは、アニメーション属性グループにおける全てのアニメーション属性値が時間の経過とともに変化しないことを意味するので、アニメーション属性グループに静止区間があり、アニメーションレイヤーに静止区間がないと、端末はグループ描画データ区間の開始グループ描画データをキャッシュする。
S704において、アニメーションファイルの再生中において、再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュされた再生すべきフレームに対応する開始アニメーション描画データを読み取る。
なお、アニメーション描画データ区間はアニメーション描画データの静止区間として理解することができ、アニメーションレイヤーの静止区間でもある。アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たさず、且つアニメーション属性値区間の間に共通集合があることとは、再生すべきフレームに対応するアニメーション描画データが対応する静止区間にヒットしないことを意味するが、再生すべきフレームに対応するグループ描画データの少なくとも一部のデータが対応する静止区間にヒットした。
一実施例において、アニメーションファイルを再生する場合に、再生すべきフレームに対応するアニメーション描画データが静止区間にヒットしないと、S208を実行する。再生すべきフレームに対応するアニメーション描画データが静止区間にヒットしないと、端末はアニメーション描画データにおける小粒子(即ち、グループ描画データ)に向けて検索し続け、再生すべきフレームに対応するグループ描画データが対応する静止区間にヒットするかどうかを検索し、ヒットすると、キャッシュから再生すべきフレームに対応する開始グループ描画データを取得し、そして、S706を実行する。
S706において、アニメーションファイルを復号化したアニメーションファイルオブジェクトから、再生すべきフレームに対応し、且つ静止条件を満たさないグループ描画データを取得する。
一実施例において、再生すべきフレームに対応する開始グループ描画データが読み取られると、端末は、さらに、アニメーションファイルオブジェクトから再生すべきフレームに対応し、且つ非静止区間内であるグループ描画データを解析することにより、端末は、取得された開始グループ描画データ、及び解析されたグループ描画データに応じてアニメーションレンダリングを行うことができる。
S708において、読み取られた開始グループ描画データ、及び取得されたグループ描画データに応じてアニメーションレンダリングを行う。
なお、再生すべきフレームは、そのアニメーション描画データが静止区間内のグループ描画データ及び非静止区間内のグループ描画データから構成され得る。静止区間内のグループ描画データの場合、アニメーションファイルオブジェクトから解析することなく、キャッシュから再生すべきフレームに対応する開始グループ描画データを直接読み取ればよい。
一実施例において、端末によって読み取られた開始グループ描画データ、及び取得されたグループ描画データは、アニメーション描画データに変換され、その後、アニメーション描画データに応じてアニメーションレンダリングを行う。
上記の実施例において、当アニメーションレイヤーに静止区間がないが、アニメーション属性グループに静止区間がある場合に、静止区間があるグループ描画データの開始グループ描画データをキャッシュする。再生すべきフレームがグループ描画データの静止区間にヒットすると、アニメーションファイルオブジェクトから静止区間に属するグループ描画データを解析することなく、キャッシュから再生すべきフレームに対応する開始グループ描画データ読み取り、これにより、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、図8に示すように、S208は、具体的に、S802、S804及びS806を含むことができる。
S802において、アニメーションファイルが1つよりも多いアプリケーションで再生される場合に、各アプリケーションに対応する再生進度を確定する。
なお、1つよりも多いアプリケーションによるアニメーションファイルの再生は、クライアントにおける複数の箇所で同じアニメーションを再生する必要があることであり得る。例えば、クライアントのビデオプレーヤーがビデオを再生し、且つ当該ビデオがアニメーションを含んでいる場合に、ビデオプレーヤーの外部にある表示ページのある箇所で(例えば、ビデオプレーヤーが全画面モードではなく、且つビデオプレーヤーが表示画面の上部に固定され、表示ページが一番下までスクロールされる)でも当該アニメーションを再生する必要がある。
一実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、同一のアニメーションファイルのみを復号化し、復号化されたアニメーションファイルオブジェクトをキャッシュする。1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、キャッシュされたアニメーションファイルからアニメーションファイルオブジェクトを読み取ればよい。
例えば、クライアントニーズが同じアニメーションを再生する必要がある場合に、同一のアニメーションファイルをメモリにロードしてアニメーションファイルオブジェクトに復号化するだけで済み、複数の同じアニメーションを同時に再生する場合に、キャッシュされたアニメーションファイルオブジェクトを多重化すればよい。
他の実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、同一のアニメーションファイルのみを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトによって読み取られた静止条件を満たすアニメーション描画データ区間における開始アニメーション描画データをキャッシュし、キャッシュされた開始アニメーション描画データは、複数のアプリケーションの再生中に共有され得る。1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、キャッシュから各アプリケーションの再生すべきフレームに対応する開始アニメーション描画データを読み取ればよい。
他の実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、同一のアニメーションファイルのみを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトによって読み取られたアニメーション描画データが静止条件を満たさないと、アニメーション属性グループのグループ描画データが静止条件を満たすかどうかを判断し、満たすと、静止条件を満たす開始グループ描画データをキャッシュし、キャッシュされた開始グループ描画データは、複数のアプリケーションの再生中に共有され得る。1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、キャッシュから各アプリケーションの再生すべきフレームに対応する開始グループ描画データを読み取ればよい。
他の実施例において、クライアントにおいて1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、同一のアニメーションファイルのみを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトによって読み取られたアニメーション描画データが静止条件を満たさず、且つアニメーション属性グループのグループ描画データも静止条件を満たさないと、アニメーション属性値が静止条件を満たすかどうかを判断し、満たすと、静止条件を満たす開始アニメーション属性値をキャッシュし、キャッシュされた開始アニメーション属性値は、複数のアプリケーションの再生中に共有され得る。1つよりも多いアプリケーションが同一のアニメーションを再生する場合に、端末は、キャッシュから各アプリケーションの再生すべきフレームに対応する開始アニメーション属性値を読み取ればよい。
S804において、再生進度に対応する再生すべきフレームのアニメーション描画データが静止条件を満たす場合に、キャッシュされた、再生進度に対応し且つ1つよりも多いアプリケーションで共有される開始アニメーション描画データを読み取る。
なお、再生進度に対応する再生すべきフレームのアニメーション描画データが静止条件を満たすことは、再生進度に対応する再生すべきフレームのアニメーション描画データが静止区間に存在することである。
一実施例において、複数のアプリケーションが同じアニメーションを再生する場合に、端末は、各アプリケーションがアニメーションを再生する再生進度をそれぞれ記録し、次に、各再生進度に従って再生すべきフレームに対応するアニメーション描画データが静止区間にヒットするかどうかを確定し、アニメーション描画データの静止区間にヒットすると、キャッシュされた、再生進度に対応し且つ1つよりも多いアプリケーションで共有される開始アニメーション描画データを読み取る。アニメーション描画データの静止区間にヒットしないと、端末は、アニメーションレイヤーにおけるアニメーション描画データを構成するためのグループ描画データを再度トラバースし、グループ描画データの静止区間にヒットすると、直接に当該静止区間における開始グループ描画データをそのまま使用すればよい。グループ描画データの静止区間にヒットしないと、端末はアニメーション属性グループにおけるグループ描画データを構成するためのアニメーション属性値を再度トラバースし、アニメーション属性値の静止区間にヒットすると、直接に当該静止区間における開始アニメーション属性値をそのまま使用すればよい。
S806において、読み取られた1つよりも多いアプリケーションで共有される開始アニメーション描画データを順次レンダリングして、各アプリケーションに対応するアニメーションレンダリングデータを取得する。
一実施例において、若アニメーション描画データ及びグループ描画データの両方に静止区間がなく、アニメーション属性値に静止区間があると、端末は、1つよりも多いアプリケーションで共有される開始アニメーション属性値を読み取る一方、共有されるアニメーションファイルオブジェクトから非静止区間のアニメーション属性値を解析し、読み取られた開始アニメーション属性値、及び解析されたアニメーション属性値を、アニメーション描画データに変換し、その後、レンダリングする。
一実施例において、アニメーション描画データに静止区間がないが、グループ描画データに静止区間があると、端末は、1つよりも多いアプリケーションで共有される開始グループ描画データを読み取る一方で、共有されるアニメーションファイルオブジェクトから非静止区間のグループ描画データを解析し、読み取られた開始グループ描画データ、及び解析されたグループ描画データをアニメーション描画データに合成し、その後、レンダリングする。
上記の実施例において、クライアントの複数のアプリケーションが同一のアニメーションを再生する場合に、複数のアプリケーションは、同一のアニメーションファイルを解析したアニメーション描画データを同時に共有し、開始アニメーション描画データをキャッシュすることにより、一方で、キャッシュスペースを削減し、他方で、解析の計算量を減らす。各再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、アニメーションファイルオブジェクトから静止区間に属するアニメーション描画デーを解析することなく、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを取得することにより、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、アニメーション描画データをキャッシュすることに加えて、アニメーションレンダリングデータをキャッシュすることができる。アニメーションファイルにはベクトルグラフを含んでおり、図9に示すように、当該方法は、S902、S904、S906S908をさらに含むことができる。
S902において、アニメーションファイルを復号化したベクトルグラフに関するアニメーション描画データを取得する。
なお、ベクトルグラフはオブジェクト指向画像とも呼ばれ、点、線、又は多角形などの数式に基づく幾何学的プリミティブを使用して画像を示し、拡大、縮小又は回転などの場合に歪まないようにする。アニメーションのテキスト(例えば、グラフィック文字)もベクトルグラフに属する。
ベクトルグラフについて、端末は、アニメーション描画データ、グループ描画データ、又はアニメーション属性値をキャッシュする場合に、アニメーションがある瞬時の記述データを取得する際に直接取得できることを保証し、これらの記述データを画面へのロードを行って表示できるアニメーションレンダリングデータに変換するには、計算が必要であり、特に複雑なpath情報で記述されるベクトルグラフの場合、レンダリングの中にpath情報における点座標情報、及び点から点へのパス記述情報を1つずつ解析する必要があり、このようにすればpath情報をベクトルグラフに変換できる。テキストの記述情報も同様であり、アニメーション描画データは、テキストのpath情報及びpaint情報のみをキャッシュし、これらの情報に対してレンダリングを行うたびに、計算量が大きく、時間がかかる。従って、アニメーションを再生する場合に、まず、アニメーション描画データをアニメーションレンダリングデータにレンダリングし、その後をキャッシュする必要があり、必要に応じてキャッシュから対応するアニメーションレンダリングデータを直接読み取ればよい。
一実施例において、アニメーションファイルにベクトルグラフを含んでいることを確定した場合に、端末は、アニメーションファイルを復号化したベクトルグラフに関するアニメーション描画データを取得するか、又は、ベクトルグラフにおけるアニメーション描画データが静止条件を満たす場合に、静止条件を満たすアニメーション描画データ区間を確定し、当該アニメーション描画データ区間から開始アニメーション描画データを取得する。
S904において、アニメーション描画データに対してオフスクリーンレンダリングを行って、アニメーションレンダリングデータを取得する。
なお、アニメーションレンダリングデータは、画像テクスチャであってもよい。
一実施例において、S904は、具体的に、端末が復号化されたアニメーション描画データに対してオフスクリーンレンダリングを行って、アニメーションレンダリングデータを取得する、又は、端末がアニメーション描画データ区間における開始アニメーション描画データに対してオフスクリーンレンダリングを行って、アニメーション描画データを取得することを含むことができる。
S906において、アニメーションレンダリングデータをキャッシュする。
一実施例において、アニメーションレンダリングデータをキャッシュする前に、端末は、アニメーションレンダリングデータのサイズを確定し、アニメーションレンダリングデータのサイズがプリセットサイズ閾値よりも大きいと、アニメーションの画質を保証することを前提としてアニメーションレンダリングデータを圧縮することで、アニメーションレンダリングデータのサイズを縮小し、そして、キャッシュすることにより、キャッシュ量を削減できる。
S908において、アニメーションファイルの再生中に再生すべきフレームがベクトルグラフアニメーションフレームである場合に、キャッシュされた再生すべきフレームに対応するアニメーションレンダリングデータを読み取る。
一実施例において、再生中に再生すべきフレームがベクトルグラフアニメーションフレームである場合に、キャッシュにおいて再生すべきフレームに対応するアニメーションレンダリングデータを読み取るか、又は、再生中に再生すべきフレームがベクトルグラフアニメーションフレームであり、且つ再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュから、再生すべきフレームに対応し、且つアニメーション描画データ区間における開始アニメーション描画データに対してレンダリングすることで得られたアニメーションレンダリングデータを読み取る。
上記の実施例において、まず、ベクトルグラフのアニメーション描画データをプリレンダリングし、その後、レンダリングされたアニメーションレンダリングデータをキャッシュすることで、再生中に再生すべきフレームがベクトルグラフアニメーションフレームである場合に、キャッシュから再生すべきフレームに対応するアニメーションレンダリングデータを読み取ることにより、アニメーション描画データからアニメーションレンダリングデータへの変換にかかる時間を回避し、レンダリング中にかかる時間を効果的に短縮し、アニメーション再生の流暢さの向上に役立つ。
一実施例において、図10に示すように、S904は、具体的に、S1002、S1004、S1006、及びS1008を含むことができる。
S1002において、ベクトルグラフを表示するための外部コンテナのサイズを確定する。
なお、外部コンテナは、ベクトルグラフを表示するための外部コンテナビュー(View)である。例えば、アニメーションが携帯電話で再生され、携帯電話でベクトルグラフが表示される領域に対応する画像コンテナは、外部コンテナと呼ばれ得る。
ベクトルグラフが実際に表示されるサイズは外部コンテナのサイズに依存し、アニメーションレンダリングデータをキャッシュする場合に、アニメーションレンダリングデータのサイズは既に確定されているので、アニメーションの解像度を保証するために、アニメーションレンダリングデータをキャッシュする場合に、そのサイズは、最大スケール比で適用され得、キャッシュされたアニメーションレンダリングデータが比較的小さなシナリオに適用される場合に、アニメーションレンダリングデータを、ストレッチするのではなく圧縮できるようにし、アニメーションの解像度を効果的に保証できる。
一実施例において、設計プロセスにおいて、端末が各端末におけるアニメーションのサイズに応じてベクトルグラフを表示するための外部コンテナのサイズを予め設置するように設計される。アニメーションを再生する場合に、端末は、端末自体のサイズに応じて、予め設置されたサイズから、対応する、ベクトルグラフを表示するための外部コンテナのサイズを確定することができる。
S1004において、外部コンテナのサイズに対するアニメーション描画データのサイズのスケール比を確定する。
一実施例において、S1004は、具体的に、アニメーションフレームをベアリングする内部コンテナと外部コンテナとの間の第1のサイズ比を確定し、アニメーションレイヤーと内部コンテナとの間の第2のサイズ比を確定し、描画可能な要素属性グループにおけるアニメーション描画データとアニメーションレイヤーとの間の第3のサイズ比を確定し、第1のサイズ比、第2のサイズ比、及び第3のサイズ比に応じてスケール比を確定することを含むことができる。
例えば、スケール比の計算について、端末は、まず、ニメーションフレームをベアリングする内部コンテナと外部コンテナとの第1のサイズ比S1を取得し、各レイヤー(layer)をレイヤーごとにトラバースし、内部コンテナに対するlayerの第2のサイズ比S2を取り出し、さらに、contentが検索されるまで、順次にツリー構造で各サブノードをトラバースし、当該contentノードの元の幅及び高さ、layerノードに対する第3のサイズ比S3を取り出し、最後、外部コンテナに対するcontentのスケール比を計算し、S1、S2及びS3を累乗する。なお、ノードツリーは外部コンテナ、内部コンテナ、アニメーションレイヤー、描画可能な要素属性グループ及び描画可能な要素属性グループにおけるアニメーション描画データから構成される。
一実施例において、ノードツリーにおけるノードに対応する比が変化した場合に、変化したスケール比を取得し、ノードツリーは、外部コンテナ、内部コンテナ、アニメーションレイヤー、描画可能な要素属性グループ及び描画可能な要素属性グループにおけるアニメーション描画データから構成され、スケールに従ってキャッシュされたアニメーションレンダリングデータのサイズを調整するか、又は、入力されたスケール比を取得し、入力されたスケール比に従ってキャッシュされたアニメーションレンダリングデータのサイズを調整する。
例えば、アニメーションを再生する場合に、端末は、アニメーションを表示するPAGビュー(PAGView)を他のノード、例えば、終わりのリーフノードに配置し、これらの親ノードのサイズが変化すると、PAGViewに通知し、スケール比をアニメーションレンダリングデータのキャッシュに適用し、このようにして、キャッシュされるアニメーションレンダリングデータが解像度を保証しながら最適であることを保証することができる。
また、最大スケール比の使用が依然として比較的大きい内部メモリを占有し、キャッシュされたアニメーションレンダリングデータをさらに圧縮してもアニメーションの解像度を保証でき、アニメーション効果に影響を与えないと、最大スケール比に基づいて別の
スケール比を設置でき、キャッシュの占有量を減らす。
S1006において、オフスクリーンバッファエリアを作成する。
S1008において、オフスクリーンバッファエリアにおいて、外部コンテナのサイズ、及びスケール比に従って、アニメーション描画データに対してアニメーションレンダリングを行って、アニメーションレンダリングデータを取得する。
一実施例において、端末は、ディスプレイの表示をアニメーションコントローラと同期させるために、電子銃が新しい行をスキャンする場合に、スキャンの準備ができたら、1つの水平同期信号を送信し、ディスプレイのリフレッシュ周波数は同歩信号が生じる周波数である。そして、プロセッサは、アニメーションフレーム(frame)、アニメーションの幅及び高さなどのパラメータ値を計算し、計算されたパラメータ値をビデオカードに送信してレンダリングしてアニメーションレンダリングデータを取得し、ビデオカードでレンダリングされたアニメーションレンダリングデータは、オフスクリーンバッファエリアに入れる。最後、ビデオコントローラは、同歩信号に従ってオフスクリーンバッファエリアのアニメーションレンダリングデータを行ごとに読み取り、デジタルからアナログへの変換後にディスプレイに送信して表示する。
また、オフスクリーンレンダリングのプロセス全体で、コンテキスト環境を切り替える必要があり、まず、オンスクリーン(On-Screen)からオフスクリーン(Off-Screen)へ切り替え、オフスクリーンレンダリングが終了すると、オフスクリーンバッファエリアのアニメーションレンダリングデータをスクリーンに表示する場合に、端末はコンテキスト環境をオフスクリーンからオンスクリーンへ切り替える必要がある。
上記の実施例では、まず、ベクトルグラフのアニメーション描画データをプリレンダリングし、再生中にアニメーション描画データからアニメーションレンダリングデータへの変換にかかる時間を回避し、レンダリング中にかかる時間を効果的に短縮し、アニメーション再生の流暢さを向上させるのに役立つ。
一実施例において、図11に示すように、当該方法は、S1102とS1104とをさらに含む。
S1102において、アニメーションファイルが複数のアニメーションレイヤーを含んでおり、且つアニメーションレイヤーのそれぞれに含まれるベクトルグラフが同じであるがサイズが異なる場合に、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータを取得する。
一実施例において、アニメーションファイルがプレ合成属性グループを含んでおり、且つプレ合成属性グループに複数のアニメーションレイヤーを合成し、且つ各アニメーションレイヤーに含まれるベクトルグラフが同じであるサイズが異なる場合に、端末は、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータを取得する。
S906は、具体的に、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータをキャッシュするS1104を含むことができる。
例えば、1つアニメーションが3つのアニメーションレイヤーを有し、同一の画像が各アニメーションレイヤーに現れ、3つのアニメーションレイヤーの全てに同一の画像を含むので、キャッシュする必要があるものは1つだけである。しかしながら、アニメーションレンダリングデータをキャッシュするサイズについて、各アニメーションレイヤーのスケーリング状況を考慮する必要があり、最大のスケール比を選択し、これにより、キャッシュの場合、キャッシュされたアニメーションレンダリングデータのサイズは、最大スケール比であり、このアニメーションレンダリングデータが比較的小さいコンテナ又はレイヤーで描画される場合に、キャッシュされたアニメーションレンダリングデータを圧縮でき、解像度を保証する。
上記の実施例では、複数のレイヤーに同じベクトルグラフが現れた場合に、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータをキャッシュし、一方、3つのアニメーションレンダリングデータを同時にキャッシュすることを回避し、キャッシュが占有する量を減らすことができ、他方、最大サイズのアニメーションレンダリングデータをキャッシュすることで、表示中にベクトルグラフをストレッチすることによる画像の解像度の低下の問題を回避する。
一実施例において、図12に示すように、S906は、具体的に、S1202、S1204、S1206及びS1208を含むことができる。
S1202において、アニメーションファイルにプレ合成属性グループを含んでいる場合に、プレ合成属性グループにおける、第1のターゲットアニメーションレンダリングデータを含むアニメーション領域を確定する。
なお、第1のターゲットアニメーションレンダリングデータは、アニメーションレンダリングデータの一部を含む。例えば、図13に示すように、第1のターゲットアニメーションレンダリングデータは、ペンタグラム及びクラウドの一部のデータである。
アニメーションレンダリングデータは、画像テクスチャとして理解され得、サイズを有するので、アニメーション領域に含まれるコンテンツは、アニメーションレンダリングデータの一部のみを含む可能性があり、アニメーション領域における非アニメーションレンダリングデータ領域のサイズが大きいと、レンダリング中に追加の計算量を消費する可能性があることを回避するために、アニメーション領域を最適化する必要がある。
S1204において、アニメーション領域に含まれる非アニメーションレンダリングデータ領域のサイズが事前設定された条件に達した場合に、第2のターゲットアニメーションレンダリングデータを含む最小アニメーション領域を確定し、第1のターゲットアニメーションレンダリングデータは、第2のターゲットアニメーションレンダリングデータの一部である。
なお、第2のターゲットアニメーションレンダリングデータは、アニメーションレンダリングデータの全てを含み、つまり、第1のターゲットアニメーションレンダリングデータは、第2のターゲットアニメーションレンダリングデータの一部に属する。非アニメーションレンダリングデータ領域は、空白領域又は無効領域であってもよい。
第2のターゲットアニメーションレンダリングデータは全てのアニメーションデータを含むので、1つの矩形のフレームを使用して第2のターゲットアニメーションデータをフレーミングすることができ、そして、当該矩形のフレームは、第2のターゲットアニメーションデータフレーミングする場合における最小矩形のフレームであり、図13の破線の領域に示されるように、当該最小矩形のフレームを最小アニメーション領域とする。
S1206において、取得されたアニメーション領域と最小アニメーション領域との間の共通集合領域を確定する。
S1208において、共通集合領域を、プレ合成属性グループのアニメーション領域として確定する。
一実施例において、アニメーション領域と最小アニメーション領域との間の共通集合領域を確定する場合に、端末は、共通集合領域をプレ合成属性グループのアニメーション領域として表示する。
一例として、プレ合成属性グループのアニメーション領域に多すぎる無効領域又は空白領域を含む場合、端末は、プレ合成属性グループの境界を最適化し、計算により全てのアニメーションレンダリングデータを含む最小の矩形領域を取得し、その後、この矩形とプレ合成属性グループの境界矩形との共通集合を求めることにより、プレ合成属性グループの実境界を取得する。
図13に示すように、アニメーションファイルに1つのlayer
A及び1つのプレ合成に関する1つの属性グループのみを含み、プレ合成属性グループの境界は黒い細い線の矩形のフレームCであり、実際のコンテンツ領域は、ペンタグラム及びクラウドの一部であり、ペンタグラム及びクラウドの他の部分は、この矩形フレームの外にある。レンダリング中に、この矩形のフレームは、ほとんど空白であるため、最適化され得る。最適化のプロセスは、まず、実際のコンテンツ領域を含む最小の矩形のサイズを計算し、図の破線の矩形のフレームAを取得でき、最後、破線の矩形Aとプレ合成属性グループの境界(即ち、黒い細い線の矩形のフレームC)との間の共通集合を求めて、黒の太い線の矩形のフレームBを取得し、黒の太い線の矩形のフレームBは、実際に、レンダリングして表示する必要があるアニメーション領域である。
上記の実施例において、プレ合成アニメーション属性グループのアニメーション領域が比較的大きな無効領域を含む場合に、アニメーション領域を再確定する必要があり、アニメーションレンダリングデータがアニメーション領域に含まれることを保証し、そして、無効領域を可能な限り減らし、これにより、レンダリング中に追加の計算量を消費する可能性があることを回避し、画面へのロードの場合に無効な領域をスキャンすることを回避し、画面へのロードにかかる時間を短縮する。
一例として、従来のアニメーションレンダリングソリューションでは、例えばLottieアニメーションレンダリングの場合、Lottieアニメーションはjson(JavaScript Object Notation、JSオブジェクト表記)フォーマットで記憶されたアニメーションの情報の全てを採用し、アニメーションの再生中に、まず、アニメーションファイルをメモリにローディングし、次に、アニメーションファイルをjsonフォーマットで解析し、再生中に再生の時点に位置決めされ、瞬時のアニメーション情報を取り出し、つまり、解析されたjsonファイルにおいてこの瞬時アニメーションで表示する必要があるコンテンツを探し出し、画像や、テキストなどであってもよく、最後、この瞬時の表示コンテンツを描画可能な画面へのロードのレンダリングデータに変換する。レンダリング中に、ベクトルグラフについて、path情報での各点情報を計算しパスを描画する必要があり、テキストについて、paint及びpath情報を読み取り変換する。
従来のアニメーションレンダリングソリューションでは、同じアニメーションの場合、同一のアニメーションファイルのメモリデータを多重化せず、スクリーンに複数の同じアニメーションが同時に再生されると、同一のアニメーションファイルを複数回ローディング。また、アニメーションのある瞬時のデータを解析して、その後、描画すべきデータに変換するが、描画データの静止区間が考慮されないので、メモリデータから描画データへの変換は静止区間における開始描画データを多重化しない。最後、ベクトルグラフの描画データからレンダリングデータへの変換にかかる時間を考慮しないので、複雑なベクトルグラフの場合、描画データからレンダリングデータに変換するたびに、多いレンダリング時間がかかる。
上記の問題に対して、本発明の実施例は、3つのレベルのキャッシュのアニメーションレンダリングソリューションを提出し、当該ソリューションには、アニメーションファイルキャッシュ、描画データキャッシュ及びレンダリングデータキャッシュを含んでおり、次に、3種類のキャッシュ方式について記述し、以下とおりである。
(一)アニメーションファイルのキャッシュ
アニメーションファイルを復号化してメモリに保存し、同一のアニメーションファイルについて、復号化されたファイルオブジェクトは1つだけ保存される。複数のシナリオでこのアニメーションを再生する必要がある場合に、このファイルオブジェクトに基づいて、アニメーションファイルを新たに読み取り、復号化を何度も実行するプロセスを回避し、このようにして、多くの不要なオーバーヘッド、特に内部メモリのオーバーヘッドが節約される。例えば、クライアントの起動後、1つの汎用のローディング(loading)アニメーションが存在し、全てのローディングアプリケーションシナリオは、このloadingアニメーションを使用し、loadingのたびにアニメーションファイルは一回ローディングされ、アニメーションファイルの記述データが少ないメモリを占有しても、数十のアニメーションがこのアニメーションをローディングする必要がある場合に、メモリが占有するオーバーヘッドは非常に大きくなる。
また、復号化にかかる時間をさらに短縮することができ、同じ複数のloadingアニメーションについて、アニメーションファイルを1回だけ復号化し、かかる時間が比較的短くなり、各アニメーションをアニメーションファイルからメモリに一回復号化することによって追加の時間が生じることを回避する。
(二)描画データキャッシュ
PAGアニメーション特性を利用して、アニメーション静止区間を分割し、静止区間に対して描画データキャッシュを行い、描画データキャッシュを説明する前に、まず、静止区間の分割について記述し、具体的には、以下とおりである。
(1)静止区間の分割
静止区間とは、以下のように直観的に理解される。例えば、1つのPAGアニメーションの合計時間は2sであり、1秒あたり24フレームあると想定され、1sから1.5までの時間帯に変化がないと、1sから1.5まで、アニメーションが静止していると、このアニメーションの静止間隔は[24,36]であり、単位がフレームである。
1つのアニメーションファイルにおける各フレームアニメーションは、複数のレイヤーを重畳することで形成されてもよく、レイヤーがより小さなgroupから構成され、最後のgroupが時間軸属性及び固定属性を含む一連の属性で記述される。時間軸属性の場合、Holdタイプの区間セグメント、即ち、時間軸属性の静止区間を見つけることができ、固定属性の場合、時間帯全体は静止区間である。時間軸属性の静止区間を検索した後に、上向きにバブリングし、1つのgroupに幾つかの時間軸属性を含んでいると、各時間軸属性の静止区間に共通集合がある場合に、対応するgroupの共通集合での属性値は変化せず、この共通集合は、groupの静止区間である。同様に、引き続き上向きにバブリングし、複数のgroup静止区間の共通集合を見つけることができ、つまり、共通集合がlayerの静止区間であり、複数のlayerの静止区間共通集合がベクトル合成(composition)の静止区間であり、これにより、アニメーション全体の静止区間を得ることができる。
layerを構成するgroupは、transform、mask、trackMatter、layerStyle、effect及びcontentの6つのタイプに分類される。transformを例として、複数のキーフレーム(Keyframe)<Transform2D>から構成され、各Keyframeは、layerについての平行移動、スケーリング、回転及び/又は透明度の変化情報の記録であり、PAGアニメーションファイルに保存され、PAGアニメーションファイルを解析する場合に、これらのKeyframeを取り出すと、このlayerのアニメーション軌跡を復元することができる。これらのキーフレームが最終的に記憶するデータ構造はTransform2Dであり、このTransform2Dは、実際に、時間軸属性で記述され、図14に示すように、アンカーポイント(anchorPoint)、位置(position)、x軸座標位置(xPosition)、y軸座標位置(yPosition)、スケール比(scale)、回転(rotation)及び透明度(opacity)を含んでいる。position、xPosition、yPositionは、平行移動情報を記述し、anchorPoint、scaleはスケーリング情報を記述し、anchorPoint、rotationは回転情報を記述し、opacityは透明度情報を記述する。
PAGアニメーションファイルを解析すると、あるlayerのgroupタイプがtransformである場合に、その記述情報Transform2Dの時間軸属性は、いくつかのKeyframeで属性値が変化しないと、これらのフレームがtransformの静止区間であると理解することができる。静止区間であるかどうかを判断することは、最終的に、時間軸属性のHoldタイプ区間セグメントを検索することに変換でき、他のgroupについても同様である。groupの親ノードlayerの静止区間を求めると、このlayerの全てgroupの静止区間の共通集合を計算する。
静止区間を計算する場合に、静止区間を直接計算してもよく、非静止区間を検索することで取得されてもよく、つまり、非静止区間を検索した場合に、検索された非静止区間を除外して、アニメーション全体の静止区間を得ることができる。非静止区間を検索することで静止区間を取得する方式は、具体的に、ルートcompositionから始まり、アニメーションが全体としてアニメーションの第1のフレームから最後のフレーム(即ち、[1,n])までのnフレームを含み、その後、全てのlayer又はサブcompositionを順次トラバースし、また、layerの各groupをトラバースして、group内の非静止区間を[1,n]から直接削除し、このようにして、[1,n]を多くの小さな区間セグメントに分割することを含むことができる。1つのlayerの静止区間は、当該layerの全てのgroupの静止区間の共通集合を計算したものであり、同様に、全てのlayer静止区間の共通集合は、compositionの静止区間であり、このようにして、バブリングがレイヤーごとに実行され、最終、composition(即ち、アニメーション全体)の静止区間である。
図5に示すように、図5は、静止区間の共通集合を求める概略図であり、t1、t2、m1、m2、c1、c2、c3及びc4は、フレーム単位である。compositionにおけるあるlayerについて、当該layerの3つのgroupは、アニメーション期間全体において図5に示される。その中、[t1,t2]区間内で、当該layerは、平行移動、スケーリング及び回転などの変換を行わず、[m1,m2]区間内で、当該layerは、同一のマスクを使用し、マスクが変化せず、[c1,c2]及び[c3,c4]区間内で、当該layerは、それぞれ1つのテキスト及び1枚のピクチャを適用し、且つテキスト及びピクチャも変化しない。
contentのgroupについて、[c1,c2]及び[c3,c4]の両方は、当該contentの静止区間であり、アニメーションのレンダリングを行う場合に、c1時点のテキストを1回だけ解析し、及びc3時点のピクチャを1回だけ解析する必要があり、テキスト及びピクチャをメモリに保存しマークする。アニメーションの再生中に描画する必要のあるフレームがcであり、且つcが[c1,c2]区間内にあると、cフレームのテキストを新たに解析する必要はなく、c1を直接使用してマークされたキャッシュを検索し、c1のテキストを描画し、このテキストは、cフレームテキストとまったく同じである。
上記でcontentのgroupのシナリオのみが考慮され、1つのlayerについて、layerは複数のgroupから構成され、その静止区間は、当該layerでの全てのgroup静止区間の共通集合である。図5に示すように、1つのlayerの3つのgroupのみで構成されると、当該layerには、[m1,c2]及び[c3,t2]の二つの静止区間がある。
静止区間の分割は、実際にバブルプロセスであることが分かり、まず、時間軸属性のHoldタイプ区間を検索し、次に、共通集合を求めてgroupの静止区間を探し出し、その後、最後のルートcompositionの静止区間がアニメーション全体の静止区間であるまで、レイヤーごとに上向きに共通集合を求める。
要するに、静止区間の分割は、その流れが以下通りである。
S1502において、ルートcompositionから開始し、初期静止区間は第1のフレームから最後のフレームまでである。
S1504において、サブcompositionがあるかどうかを判断する。
S1506において、サブcompositionがないと、全てのlayerによりルートcompositionの静止区間を計算し、そして、S1518を実行する。
S1508において、サブcompositionがあると、サブcompositionから開始し、初期静止区間はサブcompositionの開始フレームから終了フレームまでである。
S1510において、サブcompositionにlayerがあるかどうかを判断する。
S1512において、サブcompositionにlayerがあると、layerにおける各groupの静止区間を計算する。
S1514において、groupを記述する時間軸属性のHoldタイプ区間を選択し、その後、サブcompositionにlayerがあるかどうかを判断する。
S1516において、サブcompositionにlayerがないと、全てのgroupによりlayerの静止区間を計算する。
S1518において、ルートcompositionの静止区間を計算する。
(2) 描画データのキャッシュ
描画データのキャッシュとは、PAGファイル(PAGFile)オブジェクトに関連する部分をキャッシュすることであり、復号化してPAGFileオブジェクトを取得した後に、上記の静止区間分割の方法で全ての静止区間を得ることができる。同時に、PAGFileオブジェクトを解析して、静止区間の開始描画データを取得でき、その後、開始描画データをキャッシュすればよい。キャッシュのサイズを可能な限り小さくするために、必要な描画データのみをキャッシュし、ここで、異なるlayer、異なるgroup及びより小さな粒度の分類について、異なるキャッシュポリシーを実行する。
PAGアニメーションにおいて1フレームアニメーションを描画する場合に、当該フレームにジャンプし、その後、各layer又はプレ合成compositionを順次描画し、プレ合成compositionは、本質的に、複数のlayer又はcompositionを埋め込み、最終、layerの描画であるため、描画の粒度は、具体的なlayerの描画にさらに細分化されることができる。1つのlayerは、6種類のgroupのいずれか又は複数を組み合わせることで形成され、以下、各種類のgroupのキャッシュポリシーを順次説明する。
1)Content
Contentは、layerの不可欠な構成部分であり、当該layerの描画可能な要素部分、例えば、ピクチャ、文字及び形状などを示す。他のgroupは、ほぼ、Contentを基にして、例えば、平行移動スケーリング、マスクの追加及びフィルタ効果の追加などの処理を実行する。
Contentによって示され得る要素は、おおよそ、shape、text、solid、PreCompose及びimageに分類され得る。Contentは多様であるため、具体的な要素に対してキャッシュする必要があり、5つの要素について、異なるデータコンテンツをそれぞれキャッシュする。
shapeは形状を示し、通常の円、矩形、ペンタグラムなどであってもよく、規則のない形状であってもよい。グラフィックスのレンダリングにおいて、形状の記述は、path情報及びpaint情報を描画するだけで、示されるグラフィックスを完全に描画できる。ここで、shapeキャッシュは、カスタマイズされたデータ構造であり、当該カスタマイズされたデータ構造のコンテンツは、形状描画(ShapePaint)であり、ShapePaintには、描画されたpath情報及びpaint情報の二つの属性値を含んでいる。
textは、テキストコンテンツ、すなわち、テキストを示し、例えば、アニメーションにおける1行のプロンプトをスクロールして再生され、ここで、プロンプトは、textを使用する。テキストレンダリングに必要な情報は、shapeと類似し、path情報及びpaint情報の両方が必要である。また、テキストは、フォントタイプを設定する場合があり、例えば、1つのアニメーションにフォントは、さまざまなタイプから取得できるため、フォントタイプ情報という属性値をさらに記録する必要がある。
solidは、shapeの特別な例であり、色でベタ塗りつぶされた矩形を示し得、その記述は矩形の幅、高さ、及び塗りつぶしの色を使用し、つまり、幅、高さ、塗りつぶしの色の3種類の属性値をキャッシュできる。solidが応用されるシナリオは多いであり、例えば、単純なベクトルアニメーションのグラフィック、レイヤーとして使用されるマスク、又はプレ合成マスクなどである。
Imageはピクチャを示し、レンダリング中に、ピクチャの具体的な画素情報を取得する必要があるので、ピクチャ画素情報を属性値としてキャッシュされ、また、ピクチャ表示のサイズで、特に、スケーリング中に、ピクチャの幅及び高さが変化し、レンダリング中に、相応する圧縮及びストレッチを行う必要がある。従って、ピクチャの元の幅及び高さも属性値としてキャッシュする。
PreComposeはプレ合成を示し、1つ又は複数のlayerから構成され、他のcompositionをさらに埋め込むこともできる。本実施例において、PreComposeは、サブcompositionに適用され、PreComposeのキャッシュについて、PreComposeに含まれるlayerをトラバースし、その後、layerのキャッシュポリシーを採用してキャッシュする。
2)Transform
アニメーションは、実際に、時間軸によって変化する場合があり、変化のほとんどは、平行移動、スケーリング、回転又はフェードイン及びフェードアウトのうちの少なくともからなる。
2D空間において、1つの矩形に対してtransformを実行し、平行移動アニメーションであれば、矩形の初期位置点(position、座標x及びyを記録する)を確定し、その後、x及びy軸を距離xPoition及びyPositionだけ平行移動させる(浮動小数点数、記録距離)ことを記録することで、座標x、y及び距離の3つの情報により1つの平行移動アニメーションを復元できる。スケーリングアニメーションであれば、まず、1つのアンカーポイントanchorPointを確定し、さらにscale情報を追加し、完全に復元できる。回転アニメーションであれば、まず、1つのアンカーポイントanchorPointを確定し、さらに回転したrotation情報を追加することで、回転アニメーションを復元できる。フェードイン及びフェードアウトの透明度アニメーションであれば、opacity情報を記録できればよい。
要するに、任意の2D空間内の変化は、少量の情報で記録され得、平行移動、スケーリング及び回転のために記録される情報は、行列(Matrix)で記録され、透明度変化はopacityで記録されてもよい。この二つの情報を記録することで、アニメーションの変化を復元できるので、キャッシュ中、Matrix及びopacityを属性値としてキャッシュするだけでよい。
3)Mask
マスクの使用は、2つの単純なグラフィックスを使用して組み合わせ関係により1つの新しいグラフィックスを形成し、ここで、Maskは、1つのレイヤー内のマスクを示す。マスクは、レンダリング中に、path情報及びマスクモードを利用して描画を実現する。例えば、1つの矩形マスクは、このマスク矩形を復元するために、実質的に、この矩形のpath情報、即ち、矩形の頂点情報を記録する必要があるので、path情報及びマスクモードをキャッシュする必要がある。
マスクモードは、最終的な表示を決定する。例えば、加算
(Add)モードは、マスクを直接追加することを示し、減算(Subtract)モードは、マスクで覆われた部分を減算することを示し、交差(Intersect)モードは、元のグラフィックとマスクとの共通集合を取って表示することを示し、差分(Difference)モードは、元のグラフィックとマスクとが交差しない部分を取って表示することを示す。
4)TrackMatter
TrackMatterは、マスクとしても機能するMaskと類似し、違いは、Maskが1つのレイヤー内のマスクであり、TrackMatterが透明度及び輝度に応じて1つのレイヤーを別のレイヤーのマスクとして使用することにある。TrackMatterについて、キャッシュする必要のあるものはMaskと同様であり、path情報及びモード情報でもある。
なお、TrackMatterのモードは、レイヤーの不透明領域に応じて表示領域を制御するAlphaモードと、レイヤーの透明領域に応じてレイヤーの表示領域を制御するAlphaInvertedモードと、Alphaと類似し、表示領域を制御する条件を輝度に置き換えるLumaモード及びLumaInvertedモードとを含む。
5)layerStyle及びeffect
layerStyle及びeffectは、一種のフィルタである。フィルタが、ピクチャの画素点を処理することで生成されるパーソナライズされた効果として理解できる。layerStyle及びeffectは、PAGアニメーションにおい投影効果をサポートするために用いられ、実現中にフィルタ情報に依存し、例えば、元の画像に投影imageをさらに描画し、imageのパラメータは、投影の色、方向及び距離などから計算されるので、キャッシュの場合に、フィルタ情報をキャッシュすればよい。
(三)レンダリングデータのキャッシュ
ベクトルグラフは、描画データのキャッシュは、アニメーションがある瞬時描画データを取得する場合に直接取得できることを保証することができるが、これらの描画データを直接描画可能なレンダリングデータに変換するには、さらに計算が必要であり、特に、複雑なpath情報のベクトルグラフの場合に、レンダリング中、path情報の点座標、及び点から点へのパス説明情報を1つずつ解析する必要があり、次にpath情報をベクトルグラフに完全に描画する。テキストの描画データも同様であり、描画データは、テキストのpath情報及びpaint情報のみをキャッシュし、これらの情報は描画されるたびに、計算と変換に時間がかかる場合があり、レンダリングデータキャッシュの方式でかかる時間を短縮することができ、具体的な方式は、描画データを取得した後に、1つのオフスクリーンバッファエリアを作成し、その後、オフスクリーンレンダリングを行ってレンダリングデータを取得し、レンダリングデータをキャッシュし、描画が必要な場合に,キャッシュからレンダリングデータを直接読み取ることであり、このようにして、描画データからレンダリングデータへの変換にかかる時間を短縮することができる。
ベクトルグラフはランダムにスケーリングされ得るので、ベクトルグラフの表示サイズは、外部表示コンテナViewのサイズに依存する。レンダリングデータをキャッシュする場合に、テクスチャのサイズを既に確定したので、最終的なアニメーション解像度を保証するために、レンダリングデータをキャッシュする場合に、テクスチャサイズの大きさは最大スケール比で適用され、このようにして、キャッシュされたレンダリングデータが比較的小さいシナリオに適用される場合に、レンダリングデータは、ストレッチされるのではなく圧縮される可能性があり、解像度を保証する。このスケール比の計算は、まず、アニメーションをベアリング及び表示するための外部Viewのスケール比S1を取得し、次に、レイヤーごとに各composition及びlayerをトラバースして、そのスケール比S2を取り出し、また、contentまで検索するまで、順次にツリー構造で各ノードのスケール比を検索し、当該contentの元の幅と高さ、及び親ノードのスケール比S3を取得し、最後、表示Viewに対するcontentのスケール比を計算し、これらのツリー状レベルスケール比S1、S2及びS3を累乗する。
埋め込みを考慮したので、PreComposeタイプ及びimageタイプのcontentは異なる。例えば、PreComposeタイプを含むアニメーションについて、1つのアニメーションに3つのlayerレイヤーがあり、同一のピクチャは、各レイヤーに現れる可能性があるが、同一のピクチャであるため、1つをキャッシュするだけでよく、ピクチャをキャッシュするサイズの選択について、当該ピクチャを使用している箇所のスケール比を考慮し、最大のスケール比を取って、キャッシュの場合、キャッシュされたテクスチャサイズは、最大スケール比のシナリオであり、このテクスチャが比較的小さいViewに描画される場合に、キャッシュされたimageを直接圧縮し、解像度を保証する。
また、外部設置のために、サイズを設置するためのsetCacheScale(float scale)インターフェースをさらに提供し、アニメーションを表示する場合に、アニメーションを表示するPAGViewは、通常、他のコンテナに配置され、これらの親コンテナのサイズが変化した場合に、PAGViewに通知し、スケール比を、レンダリングデータのキャッシュに適用する必要があり、このようにして、キャッシュされたレンダリングデータが解像度を保証する場合に最適であることを保証することができる。また、最大スケール比を使用しても依然として大量のメモリを占有し、そして圧縮でキャッシュされたピクチャは解像度を保証することもでき、アニメーション効果に影響を与えず、最大スケール比を基にして、1つのスケール比を再設置でき、キャッシュの量を減らす。
PreComposeの境界測定の最適化は、すべてのコンテンツを含む最小矩形領域を計算して取得し、その後、この矩形とPreComposeの境界矩形との共通集合を求めることにより、PreComposeの実境界を取得する。図13は、1つのlayer A及び1つのPreComposeのみによって構成されるアニメーションであり、その中、PreComposeの境界は、小さな黒い細い線の矩形のフレームであり、実際のコンテンツ領域はペンタグラムと雲の一部であり、他の一部は、矩形のフレームの外にある。レンダリング中、この矩形のフレームは、ほとんど空白であるため、最適化を行うことができ、最適化の方式は、まず、実際のコンテンツを含む最小の矩形のフレームを計算して、図13の黒い破線の矩形のフレームAを取得し、最後、矩形のフレームAとPreCompose境界との共通集合を求めて、黒い太い線の矩形のフレームBを取得し、矩形のフレームBが実際に表示されている領域であることを含むことができる。
(四)レンダリングにかかる時間の比較
同一のPAGアニメーション「人山人海」について、アニメーションプレビューア(PAGViewer)を使用してレンダリング(Render)にかかる時間を表示する。なお、図16は、キャッシュポリシーがフルオープンされるレンダリングにかかる時間の概略図であり、図17は、レンダリングデータのキャッシュをオフにするレンダリングにかかる時間の概略図であり、図18は、描画データのキャッシュをオフにするレンダリングにかかる時間の概略図であり、図19は、キャッシュポリシーがフルクローズされるレンダリングにかかる時間の概略図である。
図16ないし19からわかるように、Renderにかかる時間は、キャッシュポリシーがフルオープンされる場合に、レンダリングにかかる時間が最小となり、図16の破線ボックス1602に示されるように、わずか25msを占有し、キャッシュポリシーがフルクローズされる場合に、図19の破線ボックス1902に示されるように、レンダリングにかかる時間は、最大1052msとなり、図16ないし図19におけるレンダリングにかかる時間から、キャッシュポリシーのフルオープン及びフルクローズに対応するレンダリングにかかる時間の差は、2オーダーであることが分かる。
また、レンダリングデータのキャッシュをオフにする(即ち、描画データキャッシュを採用する)場合に、対応するレンダリングにかかる時間は、図17中の破線ボックス1702に示されるように、863sであり、描画データのキャッシュをオフにする(即ち、レンダリングデータのキャッシュを採用する)場合に、対応するレンダリングにかかる時間は、図18の破線ボックス1802に示されるように、184sである。描画データのキャッシュを採用する場合と、レンダリングデータのキャッシュを採用する場合とで、両方に対応するレンダリングにかかる時間に違いがあるが、描画データのキャッシュとレンダリングデータのキャッシュとは、異なる二つのタイプのキャッシュポリシーであり、異なるアプリケーションシナリオに適用するため、機能も異なり、ここでの「人山人海」というアニメーションは、レンダリングデータのキャッシュが複雑なグラフィックに適用される場合における優れたパフォーマンスを具体化する。
上記の実施例を採用することで、以下の有益な効果を有し得る。
1)アニメーションのレンダリングにかかる時間を大幅に短縮でき、従来のアニメーションレンダリング方法と比較して、本発明の実施例に係るアニメーションレンダリング方法を採用することにより、レンダリングにかかる時間を1~2オーダー短縮することができる。レンダリングにかかる時間の短縮により、アニメーションがよりスムーズに再生され、ローエンドの携帯電話でもより良い再生効果を達成することができ、特に、クライアントで同一のページに複数のアニメーションを同時に再生する場合、アニメーションが同じであれば、復号化にかかる時間を大幅に短縮することができる。
2)異なるレイヤーに対して異なるキャッシュポリシーを採用し、及びアニメーションスケール比を計算する場合に、ピクチャとプレ合成compositionに対して異なる計算ルールを採用する。
図2-4、6-12、15は、一実施例におけるアニメーションレンダリング方法のフローチャートである。理解すべきこととして、図2-4、6-12、15のフローチャートの各ステップは、矢印の指した順序で示されているが、これらのステップは、必ずしも矢印の指した順序で実行されるものではない。本明細書で明確に説明しない限り、これらのステップの実行は、厳密な順序に制限されず、他の順序で実行されてもよい。さらに、図2-4、6-12、15の少なくとも一部のステップは、複数のサブステップ又は複数の段階を含んでよく、これらのサブステップ又は段階は、必ずしも同じ時刻で実行されるものではなく、異なる時刻で実行されてもよく、これらのサブステップ又は段階の実行順序も、必ずしも順に行われるものではなく、その他のステップ又はその他のステップのサブステップ或いは段階の少なくとも一部と順番に又は交互に実行されてもよい。
図20に示すように、一実施例において、アニメーションレンダリング装置を提供し、当該装置は、ファイル取得モジュール2002、確定モジュール2004、データキャッシュモジュール2006、データ読み取りモジュール2008、及びアニメーションレンダリングモジュール2010を含む。
ファイル取得モジュール2002は、ターゲットフォーマットのアニメーションファイルを取得するために用いられる。
確定モジュール2004は、前記アニメーションファイルを復号化する場合に、復号化されたアニメーション描画データから、静止条件を満たすアニメーション描画データ区間を確定するために用いられる。
データキャッシュモジュール2006は、アニメーション描画データ区間における開始アニメーション描画データをキャッシュするために用いられる。
データ読み取りモジュール2008は、アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュされた再生すべきフレームに対応する開始アニメーション描画データを読み取るために用いられる。
アニメーションレンダリングモジュール2010は、読み取られた開始アニメーション描画データに応じてアニメーションレンダリングを行うために用いられる。
上記の実施例において、静止条件を満たすアニメーション描画データの開始アニメーション描画データをキャッシュし、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得し、アニメーションファイルを再度解析して再生すべきフレームに対応する開始アニメーション描画データを取得する必要がないので、大量の計算を回避し、レンダリングプロセスにかかる時間を短縮し、アニメーションの再生をよりスムーズにする。
一実施例において、確定モジュール2004は、さらに、アニメーションファイルを復号化して、アニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトにおけるアニメーション描画データを読み取り、読み取られたアニメーション描画データから、静止条件を満たすアニメーション描画データ区間を確定するために用いられる。
上記の実施例において、アニメーション描画データ区間における開始アニメーション描画データをキャッシュするように、アニメーションファイルを復号化してアニメーションファイルオブジェクトを取得し、アニメーションファイルオブジェクトにおけるアニメーション描画データを読み取り、その後、アニメーションファイルオブジェクトにおける静止条件を満たすアニメーション描画データ区間を探し出すことにより、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得し、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、アニメーションの再生をよりスムーズにする。
一実施例において、アニメーションファイルは、少なくとも1つのアニメーションレイヤーを含み、各アニメーションレイヤーは、少なくとも二つのアニメーション属性グループを含み、各アニメーション属性グループは、少なくとも二つのアニメーション属性値を含んでおり、確定モジュール2004は、さらに、前記アニメーションファイルを復号化する場合に、アニメーションファイルを復号化する場合に、アニメーション属性グループにおける静止条件を満たす各アニメーション属性値区間を確定し、アニメーション属性値区間の共通集合を、アニメーション属性グループのグループ描画データ区間とし、グループ描画データ区間の共通集合を、アニメーションレイヤーのアニメーション描画データ区間として確定するために用いられる。
上記の実施例において、アニメーション描画データ区間における開始アニメーション描画データをキャッシュするように、まず、静止条件を満たすアニメーション属性値区間を確定し、その後、バブルアルゴリスケーリングを採用してアニメーション描画データ区間を計算することにより、対応するアニメーションフレームの属性値が前記静止条件を満たすまで再生される場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを直接取得することにより、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、アニメーションの再生をよりスムーズにする。
一実施例において、図21に示すように、当該装置は、属性値取得モジュール2012をさらに含む。
データキャッシュモジュール2006は、さらに、アニメーション属性値区間の間に共通集合がない場合に、アニメーション属性値区間の開始アニメーション属性値をキャッシュするために用いられる。
データ読み取りモジュール2008は、さらに、アニメーションファイルの再生中において、再生すべきフレームに対応するアニメーション描画データが静止条件を満たさず、且つアニメーション属性値区間の間に共通集合がない場合に、キャッシュされた再生すべきフレームに対応する開始アニメーション属性値を読み取るために用いられる。
属性値取得モジュール2012は、アニメーションファイルを復号化したアニメーションファイルオブジェクトから、再生すべきフレーム対応し、且つ静止条件を満たさないアニメーション属性値を取得するために用いられる。
アニメーションレンダリングモジュール2010は、さらに、読み取られた開始アニメーション属性値、及び取得されたアニメーション属性値に応じてアニメーションレンダリングを行うために用いられる。
上記の実施例において、アニメーションレイヤー及びアニメーション属性グループの両方が静止区間に存在しないと、静止区間があるアニメーション属性値の開始アニメーション属性値をキャッシュする。再生すべきフレームがアニメーション属性値の静止区間に達すると、キャッシュから再生すべきフレームに対応する開始アニメーション属性値を読み取り、アニメーションファイルオブジェクトから静止区間に属するアニメーション属性値を解析する必要がないので、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、図21に示すように、当該装置は、データ取得モジュール2014をさらに含む。
データキャッシュモジュール2006は、さらに、アニメーション属性値区間の間に共通集合があるが、グループ描画データ区間の間に共通集合がない場合に、グループ描画データ区間の開始グループ描画データをキャッシュするために用いられる。
データ読み取りモジュール2008は、さらに、アニメーションファイルの再生中において、再生すべきフレームに対応するアニメーション描画データが静止条件を満たさない場合に、キャッシュされた再生すべきフレームに対応する開始グループ描画データを読み取るために用いられる。
データ取得モジュール2014は、アニメーションファイルを復号化したアニメーションファイルオブジェクトから、再生すべきフレームに対応し、且つ静止条件を満たさないグループ描画データを取得するために用いられる。
アニメーションレンダリングモジュール2010は、さらに、読み取られた開始グループ描画データ、及び取得されたグループ描画データに応じてアニメーションレンダリングを行うために用いられる。
上記の実施例では、アニメーションレイヤーに静止区間がないが、アニメーション属性グループに静止区間がある場合に、静止区間があるグループ描画データの開始グループ描画データをキャッシュする。再生すべきフレームがグループ描画データの静止区間に達すると、キャッシュから再生すべきフレームに対応する開始グループ描画データを読み取り、アニメーションファイルオブジェクトから静止区間に属するグループ描画データを解析する必要がないので、計算量を削減し、レンダリングプロセスにかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、アニメーション属性グループが描画可能な要素属性グループである場合に、アニメーション属性グループは少なくとも二つの描画可能な要素を含み、描画可能な要素は少なくとも二つのアニメーション属性値を含んでおり、図21に示すように、当該装置は共通集合計算モジュール2016をさらに含む。
。
確定モジュール2004は、さらに、アニメーション属性値区間の共通集合を、描画可能な要素の要素区間として確定するために用いられる。
共通集合計算モジュール2016は、描画可能な要素の要素区間の間の共通集合を計算するために用いられる。
確定モジュール2004は、さらに、要素区間の間の共通集合を、アニメーション属性グループのグループ描画データ区間として確定するために用いられる
一実施例において、アニメーションファイルの再生中に再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、データ読み取りモジュール2008は、さらに、アニメーションファイルが1つよりも多いアプリケーションで再生される場合に、各アプリケーションに対応する再生進度を確定し、再生進度に対応する再生すべきフレームのアニメーション描画データが静止条件を満たす場合に、キャッシュされた、再生進度に対応し且つ1つよりも多いアプリケーションで共有される開始アニメーション描画データを読み取るために用いられる。
上記の実施例では、クライアントの複数のアプリケーション同一のアニメーションを再生する場合に、複数のアプリケーションは、同一のアニメーションファイルから解析したアニメーション描画データを同時に共有し、開始アニメーション描画データをキャッシュすることにより、キャッシュスペースが削減される一方で、解析の計算量が削減される。各再生すべきフレームに対応するアニメーション描画データが静止条件を満たす場合に、キャッシュから再生すべきフレームに対応する開始アニメーション描画データを取得し、アニメーションファイルオブジェクトから静止区間に属するアニメーション描画データを解析する必要がないので、計算量を削減し、レンダリング中にかかる時間を短縮し、ひいては、アニメーションの再生をよりスムーズにする。
一実施例において、アニメーションファイルは、ベクトルグラフを含んでおり、データ取得モジュール2014は、さらに、アニメーションファイルを復号化したベクトルグラフに関するアニメーション描画データを取得するために用いられる。
アニメーションレンダリングモジュール2010は、さらに、アニメーション描画データに対してオフスクリーンレンダリングを行ってアニメーションレンダリングデータを取得するために用いられる。
データキャッシュモジュール2006は、さらに、アニメーションレンダリングデータをキャッシュするために用いられる。
データ読み取りモジュール2008は、さらに、アニメーションファイルの再生中に再生すべきフレームがベクトルグラフアニメーションフレームである場合に、キャッシュされた再生すべきフレームに対応するアニメーションレンダリングデータを読み取るために用いられる。
一実施例において、アニメーションレンダリングモジュール2010は、さらに、アニメーションフレームをベアリングする内部コンテナと外部コンテナとの間の第1のサイズ比を確定し、アニメーションレイヤーと内部コンテナとの間の第2のサイズ比を確定し、描画可能な要素属性グループにおけるアニメーション描画データとアニメーションレイヤーとの間の第3のサイズ比を確定し、第1のサイズ比、第2のサイズ比、及び第3のサイズ比に応じてスケール比を確定するために用いられる。
一実施例において、アニメーションレンダリングモジュール2010は、さらに、ベクトルグラフを表示するための外部コンテナのサイズを確定し、外部コンテナのサイズに対するアニメーション描画データのサイズのスケール比を確定し、オフスクリーンバッファエリアエリアを作成し、オフスクリーンバッファエリアにおいて、外部コンテナのサイズ、及びスケール比に従って、アニメーション描画データに対してアニメーションレンダリングを行って、アニメーションレンダリングデータを取得するために用いられる。
上記の実施例では、まず、ベクトルグラフのアニメーション描画データをプリレンダリングし、その後、レンダリングされたアニメーションレンダリングデータをキャッシュし、再生中に再生すべきフレームがベクトルグラフアニメーションフレームである場合に、キャッシュから再生すべきフレームに対応するアニメーションレンダリングデータ読み取ることにより、アニメーション描画データからアニメーションレンダリングデータへの変換にかかる時間を回避し、レンダリング中にかかる時間を効果的に短縮し、ニメーション再生の流暢さを向上させるのに役立つ。
一実施例において、図21に示すように、当該装置は、スケール比取得モジュール2018、サイズ調整モジュール2020をさらに含む。
スケール比取得モジュール2018は、ノードツリーにおけるノードに対応する比が変化した場合に、変化したスケール比を取得するために用いられ、ノードツリーは、外部コンテナ、内部コンテナ、アニメーションレイヤー、描画可能な要素属性グループ、及び描画可能な要素属性グループにおけるアニメーション描画データから構成される。
サイズ調整モジュール2020は、スケール比に従ってキャッシュされたアニメーションレンダリングデータのサイズを調整するために用いられる。
スケール比取得モジュール2018は、さらに、入力されたスケール比を取得するために用いられる。
サイズ調整モジュール2020は、さらに、入力されたスケール比に応じて、キャッシュされたアニメーションレンダリングデータのサイズを調整するために用いられる。
上記の実施例では、まず、ベクトルグラフ的アニメーション描画データをプリレンダリングし、再生中にアニメーション描画データをアニメーションレンダリングデータに変換する必要がある場合にかかる時間を回避し、レンダリング中にかかる時間を効果的に短縮し、アニメーションの再生の流暢さを向上させるのに役立つ。
一実施例において、データ取得モジュール2014は、さらに、アニメーションファイルが複数のアニメーションレイヤーを含んでおり、且つアニメーションレイヤーのそれぞれに含まれるベクトルグラフが同じであるがサイズが異なる場合に、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータを取得するために用いられる。
データキャッシュモジュール2006は、さらに、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータをキャッシュするために用いられる。
上記の実施例では、当複数のレイヤーに同じなベクトルグラフが現れる場合に、サイズが最大となるベクトルグラフに対応するアニメーションレンダリングデータをキャッシュし、一方、3つのアニメーションレンダリングデータを同時にキャッシュすることができ、キャッシュの占有量を減らし、他方、サイズが最大となるアニメーションレンダリングデータをキャッシュし、ベクトルグラフをストレッチすることによる画像の鮮明度の低下の問題を回避する。
一実施例において、データキャッシュモジュール2006は、さらに、アニメーションファイルにプレ合成属性グループを含んでいる場合に、プレ合成属性グループにおける、第1のターゲットアニメーションレンダリングデータを含むアニメーション領域を確定し、アニメーション領域に含まれる非アニメーションレンダリングデータ領域のサイズが事前設定された条件に達した場合に、第2のターゲットアニメーションレンダリングデータを含む最小アニメーション領域を確定し、第1のターゲットアニメーションレンダリングデータは第2のターゲットアニメーションレンダリングデータの一部であり、取得されたアニメーション領域と最小アニメーション領域との共通集合領域を確定し、通集合領域を、プレ合成属性グループのアニメーション領域として確定するために用いられる
上記の実施例では、プレ合成アニメーション属性グループのアニメーション領域に比較的大きな無効領域を含む場合に、アニメーション領域を再確定する必要があり、アニメーションレンダリングデータがアニメーション領域に含まれることを保証し、無効領域をできるだけ減らし、これにより、レンダリング中に余分な計算量が必要になる場合があり、画面へのロードの場合に無効領域をスキャンすることを回避し、画面へのロードにかかる時間を短縮することができる。
図22は、一実施例におけるコンピュータ機器の内部構造図を表示する。当該コンピュータ機器は具体的に図1の端末110であってもよい。図22に表示するように、当該コンピュータ機器は、システムバスにより接続されたプロセッサ、メモリ、ネットワークインタフェース、入力装置及びディスプレイスクリーンを含む。メモリは、不揮発性記憶媒体及び内部メモリを含む。当該コンピュータ機器の不揮発性記憶媒体には、オペレーティングシステムが記憶され、プロセッサによって実行されると、プロセッサに動画スタンプの生成方法を実現させるコンピュータプログラムも記憶されてもよい。当該内部メモリには、プロセッサによって実行されると、プロセッサにアニメーションレンダリング方法を実現させるコンピュータプログラムが記憶されてもよい。当該内部メモリには、プロセッサによって実行されると、プロセッサにアニメーションレンダリング方法を実行させるコンピュータプログラムが記憶されてもよい。コンピュータ機器のディスプレイスクリーンは、液晶ディスプレイスクリーン又は電子インクディスプレイスクリーンであってもよく、コンピュータ機器の入力装置は、ディスプレイスクリーンに覆われたタッチ層であってもよく、コンピュータ機器の筐体に設けられたキー、トラックボール又はタッチパッドであってもよく、外付けのキーボード、タッチパッド又はマウス等であってもよい。
当業者であれば、図22に示される構造は、本願の手段に関連する一部の構造のブロック図に過ぎず、本願の手段が適用するコンピュータ機器を限定するものではなく、具体的なコンピュータ機器は、図に表示するものよりも多い又は少ない部材を含んでもよく、いくつかの部材を組み合わせてもよく、異なる部材配置を有してもよいと理解されたい。
一実施例において、本願で提供されるアニメーションレンダリング装置は、図22に示されるコンピュータ機器上で実行可能なコンピュータプログラムの形態で実現されてもよい。コンピュータ機器のメモリには、当該アニメーションレンダリング装置を構成する各プログラムモジュール、例えば、図20に示されるファイル取得モジュール2002、確定モジュール2004、データキャッシュモジュール2006、データ読み取りモジュール2008、及びアニメーションレンダリングモジュール2010を記憶することができる。各プログラムモジュールで構成されるコンピュータプログラムは、プロセッサに本明細書で説明される本願の各実施例のアニメーションレンダリング方法のステップを実行させる。
例えば、図22に示されるコンピュータ機器は、図20に示されるアニメーションレンダリング装置におけるファイル取得モジュール2002によりS202を実行することができる。コンピュータ機器は、確定モジュール2004によりS204を実行することができる。コンピュータ機器は、データキャッシュモジュール2006によりS206を実行することができる。コンピュータ機器は、データ読み取りモジュール2008によりS208を実行することができる。コンピュータ機器はアニメーションレンダリングモジュール2010によりS210を実行することができる。
一実施例において、メモリ及びプロセッサを含んでおり、メモリにはコンピュータプログラムを記憶しており、コンピュータプログラムがプロセッサによって実行される場合に、プロセッサに上記アニメーションレンダリング方法のステップを実行させるコンピュータ機器を提供する。ここで、アニメーションレンダリング方法のステップは上記各実施例のアニメーションレンダリング方法におけるステップであってもよい。
一実施例において、プロセッサによって実行される場合に、プロセッサに上記アニメーションレンダリング方法のステップを実行させるコンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供する。ここで、アニメーションレンダリング方法のステップは、上記各実施例のアニメーションレンダリング方法のステップであってもよい。
当業者であれば理解できるように、上記方法実施例の全部又は一部の流れは、コンピュータプログラムが関連ハードウェアを命令することにより実現され、前記プログラムが不揮発性コンピュータ読み取り可能な記憶媒体に記憶することができ、当該プログラムが実行される場合に、上記各方法実施例の流れを含んでもよい。本願に係る各実施例に用いられる、メモリ、ストレージ、データベース又は他の媒体への任意の参照は、いずれも不揮発性及び/又は揮発性メモリを含んでもよい。非揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)又はフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ(RAM)又は外部キャッシュメモリを含んでもよい。限定ではなく例示として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、デュアルデータレートSDRAM(DDRSDRAM)、強化SDRAM(ESDRAM)、同期リンク(Synchlink)DRAM(SLDRAM)、メモリバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトメモリバスダイナミックRAM(DRDRAM)及びメモリバスダイナミックRAM(RDRAM)などの様々な形態で得られる。
以上の実施例の各技術的特徴を任意に組み合わせることができ、簡単に説明するために、上記実施例における各技術的特徴のすべての可能性のある組み合わせをいずれも説明せず、しかしながら、これらの技術的特徴の組み合わせに矛盾が存在しないと、いずれも本明細書に記載の範囲に属するべきであると考えられる。
上述した実施例は、本願のいくつかの実施形態のみを示し、その説明が具体的で詳細であるが、それにより本願の特許の範囲を限定するものと理解されるべきではない。注意すべきこととして、当業者であれば、本願の構想から逸脱しない前提で、さらにいくつかの変形及び修正を行うこともでき、これらがいずれも本願の保護範囲に属する。したがって,本願の特許の保護範囲は、添付の請求項を基準とすべきである。