JP2004152132A - 画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 - Google Patents
画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 Download PDFInfo
- Publication number
- JP2004152132A JP2004152132A JP2002318285A JP2002318285A JP2004152132A JP 2004152132 A JP2004152132 A JP 2004152132A JP 2002318285 A JP2002318285 A JP 2002318285A JP 2002318285 A JP2002318285 A JP 2002318285A JP 2004152132 A JP2004152132 A JP 2004152132A
- Authority
- JP
- Japan
- Prior art keywords
- information
- content
- image output
- screen
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
【課題】複数のキーフレームから中間フレームを生成する種類のアニメーションにおける従来の画像出力方法において、適切な表示を行なう。
【解決手段】図形情報の内部、あるいは外部に図形情報パラメータを調整するかどうかの情報を加え、図形情報パラメータを調整する必要があり、かつ特定の中間フレームにおいて図形の全てが表示できない場合、図形が画面内に表示できるようパラメータを調整する。これにより、文字列や画像などの図形がスクロールするようなアニメーションの画像を出力した際、図形の全てを表示することができないという状況を防ぐことができる。
【選択図】 図6
【解決手段】図形情報の内部、あるいは外部に図形情報パラメータを調整するかどうかの情報を加え、図形情報パラメータを調整する必要があり、かつ特定の中間フレームにおいて図形の全てが表示できない場合、図形が画面内に表示できるようパラメータを調整する。これにより、文字列や画像などの図形がスクロールするようなアニメーションの画像を出力した際、図形の全てを表示することができないという状況を防ぐことができる。
【選択図】 図6
Description
【0001】
【発明の属する技術分野】
本発明は、画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体に関し、特に、時系列中の特定のフレーム(キーフレーム)における画像をもとにして、キーフレーム間の画像を出力する画像出力方法に関するものである。
【0002】
【従来の技術】
コンピュータを用いたアニメーション再生方法として、時系列中の全てのフレーム画像を記憶せずに、キーとなる時刻におけるフレームの画像の座標データをもとにして、キーフレーム間のフレームを生成してアニメーションを再生する方法がある。
【0003】
キーフレーム間のフレームを生成してアニメーションを再生する方法の例として、以下の特許文献1において提案された方法について説明する。
【0004】
図20は、キーフレーム間のフレームを生成してアニメーションを再生する方法の具体例を示す図である。
【0005】
図20を参照して、アニメーションの全てのフレームを保存せず、特定のフレーム(キーフレーム)の画像のみを記憶しておく。この図20の場合、図形30と図形31とが各々キーフレームに属する図形である。これらは、互いに時間軸上で隣接したキーフレームに属している。
【0006】
特許文献1においては、この隣接するキーフレームの図形30と図形31の間の時間をn等分し、中間フレーム32,33および34(n=3と想定する)の画像の中の各点を、キーフレームの図形30および31の間での対応する各点から線型補完によって求める。こうして、図20において矢印で示される方向に時間軸が進むものとすれば、まず図形30を含むキーフレームが、続いて中間の図形32、33および34をそれぞれ含む3つの中間フレームが、最後に図形31を含むキーフレームが表示されてアニメーションが再生されることになる。図形31を含むキーフレームを表示した後は、このキーフレームと、この次のキーフレームとの間で同様の補完計算を行ってアニメーション再生が行われる。
【0007】
また、特許文献2においては、CPU速度や1フレーム当りの描画量に依存せずに一定時間のアニメーションを再生する方法が公開されている。この方法では、前回のアニメーション画像の描画が終了した時刻を基準として、その時刻の前後にあるキーフレーム画像から基準となる時刻のアニメーション画像を補完計算することでアニメーション再生を行っている。
【0008】
上記の従来技術を用いることによって、任意の時刻におけるアニメーション画像を、キーフレームにおける画像から補完して生成することが可能である。
【0009】
【特許文献1】
特開昭60−191366号公報
【0010】
【特許文献2】
特開平10−275244号公報
【0011】
【発明が解決しようとする課題】
このようなアニメーション再生方法は、アニメーション再生のために必要となるデータ量が、全てのフレームの情報を持つ場合と比較して遥かに少なくてすむという利点がある。近年のCPU(中央演算処理装置)の処理能力の向上により、さまざまなコンピュータにおいてこの方式のアニメーションの再生が可能になってきている。
【0012】
また、一部のコンピュータではこのようなアニメーションを再生することができない場合がある。このような場合として、例えば携帯電話など、CPUの処理速度が遅いためアニメーションの再生が困難な場合や、利用者側でアニメーション再生用のソフトウェアを導入できない場合などが挙げられる。このようなコンピュータに対しては、アニメーションを再生できる別のコンピュータ上でアニメーション画像を数枚分出力しておき、アニメーションを再生できないコンピュータ上でこれら画像を順番に表示することによって、擬似的にアニメーションを表現する方法を取ることができる。この場合、対象となる機器での再生処理能力を考慮して、出力されるべき画像は少なくすることが望ましい。
【0013】
ところがこの方法を利用した場合において、文字列や画像などがスクロールする種類のアニメーションの画像を出力した際、文字列や画像の全てを表示することができないといった問題があった。例えば、図13に示すように画面サイズの横幅よりも大きい文字列が右上から左下にスクロールするアニメーションの画像を出力した場合、どの時間における画像を出力した場合においても、スクロールする文字列の全てを表示することができない。この場合、全ての文字列を表示するためには、ある程度文字列がスクロールした時点での画像を何度も出力させる必要があり、結果として出力される画像が多くなってしまう。逆に出力する画像の数を減らした場合は、出力した全ての画像を合わせても文字列の全てを表示することができず、アニメーションの内容を適切に表現する画像を表示できない。
【0014】
より詳しくは、図13では2つのキーフレーム間で文字列が右上から左下にスクロールする例を示している。この例では、文字列における1行あたりの文字数が多いため、一つの画面で文字列の全てが表示できないものとする。また、第1のキーフレーム40から第2のキーフレーム41への経過時間を仮に32秒とする。このようなアニメーションから静止画を出力した例を図21に示す。この図21において、符号420は第1のキーフレームから10秒が経過したもの、符号421は第1のキーフレームから23秒が経過したものである。この場合、いずれの場合においても全ての文字列を表示することができない。
【0015】
この発明は上記問題点を解決するためになされたものであり、適切にコンテンツを表示できる画像出力方法、画像出力装置、およびコンピュータに画像出力方法を実行させるプログラムを提供することを目的としている。
【0016】
【課題を解決するための手段】
上記の目的を達成するためこの発明のある局面に従うと、画像出力方法は、コンテンツを出力する方法であって、表示時刻を特定するための情報と、当該表示時刻に表示フレーム内に表示されるべきコンテンツの特徴を特定するためのコンテンツ情報とを含む、複数のキーフレーム情報をメモリ内に準備するステップと、画像出力のための時刻を指定するステップと、複数のキーフレーム情報のうち、指定された時刻の前後の表示時刻をそれぞれ有する少なくとも2つのキーフレーム情報を選択するステップと、少なくとも2つのキーフレーム情報にそれぞれ含まれた対応のコンテンツ情報の間で所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む。
【0017】
この発明の他の局面に従うと、画像出力方法は、コンテンツを出力する方法であって、コンテンツの変化開始時刻を特定するための情報と、表示フレーム内に表示されるべきコンテンツのその時刻からの変化を特定するための情報とを含む、1ないし複数のアニメーション命令をメモリ内に準備するステップと、画像出力のための時刻を指定するステップと、1ないし複数のアニメーション命令のうち、指定された時刻の前の変化開始時刻を有するアニメーション命令を選択するステップと、指定された時刻の前の変化開始時刻を有するアニメーション命令に基づいて、所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む。
【0018】
好ましくは画像出力方法は、作成されたコンテンツ情報でコンテンツが画面内に全て表示されるかを判断するステップをさらに備え、画面内にコンテンツの全てが表示されない場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する。
【0019】
好ましくは画像出力方法は、画面内にコンテンツが収まるようにコンテンツ情報を調整する必要があるかを判断するステップをさらに備え、コンテンツ情報を調整するステップは、コンテンツ情報を調整する必要がある場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する。
【0020】
好ましくは画像出力方法は、コンテンツ情報を調整する必要があるかを判断するための情報が、コンテンツ情報に含まれていることを特徴とする。
【0021】
好ましくは画像出力方法は、コンテンツ情報を調整する必要があるかを判断するための情報を、コンテンツ情報とは別のメモリ内に準備するステップを有する。
【0022】
好ましくはコンテンツ情報を調整する所定の方法は、コンテンツの大きさを変更する方法である。
【0023】
好ましくはコンテンツ情報を調整する所定の方法は、コンテンツを変形する方法である。
【0024】
好ましくは、コンテンツの種類が文字列である場合に、コンテンツ情報を調整する所定の方法は、文字列の改行位置を変更する方法である。
【0025】
この発明の他の局面に従うと、画像出力装置は、上述のいずれかに記載の画像出力方法を実施する。
【0026】
この発明の他の局面に従うと、画像出力プログラムは、上述のいずれかに記載の画像出力方法をコンピュータに実行させる。
【0027】
この発明の他の局面に従うと、コンピュータ読取可能な記録媒体は、上述の画像出力プログラムを記録する。
【0028】
【発明の実施の形態】
[実施の形態1]
図1は、本発明の第1の実施の形態におけるコンテンツ出力システムの構成を示す図である。
【0029】
図を参照して、コンテンツ出力システムは、インターネットその他の通信回線800と、専用回線850と、サーバコンピュータ1aと、クライアントコンピュータ1bと、アニメーションを表示するための各種データを記録するアニメーション生成データデータベース700と、携帯電話基地局350と、携帯電話基地局350との間で通信を行なう携帯電話300とから構成される。
【0030】
アニメーション生成データデータベース700のデータを、サーバコンピュータ1a、クライアントコンピュータ1b、または携帯電話300にダウンロードし、そこで再生することも可能であるし、サーバコンピュータ1a、またはクライアントコンピュータ1bでキーフレームからアニメーションを作成し、それを携帯電話300へ送信し、そこでアニメーションを再生することも可能である。
【0031】
図2は、サーバコンピュータ1aまたはクライアントコンピュータ1bの具体的なハードウェア構成を示す図である。
【0032】
図を参照して、サーバコンピュータ1aまたはクライアントコンピュータ1bは、コンピュータ本体902と、それに接続されるモニタ904と、マウス912と、キーボード910とを備えている。
【0033】
コンピュータ本体902は、CPU920と、メモリ922と、固定ディスク924と、フレキシブルディスク(FD)駆動装置906と、CD−ROM駆動装置908と、通信インタフェース926とを備えている。
【0034】
フレキシブルディスク(FD)駆動装置906、およびCD−ROM駆動装置908のそれぞれは、フレキシブルディスク916またはCD−ROM918からプログラムまたはデータを読取ることができる。
【0035】
図3は、図1の携帯電話300の構成を示すブロック図である。
図を参照して、携帯電話300は、ユーザインタフェース340と、通信部310と、制御部320と、記憶部330とを備えている。ユーザインタフェース340は、操作部342と、表示部344と、音声入力部346と、音声出力部348とを備えている。
【0036】
図4は、図1のサーバコンピュータ1a、またはクライアントコンピュータ1bの機能ブロック図である。
【0037】
図を参照して、コンピュータ1は、所定のプログラムを実行することによって後述するフローチャートの各ステップの処理を実現するCPU10と、CPU10に接続されているメモリ11とを備えている。メモリ11は、複数のキーフレーム情報を記憶するキーフレーム情報記憶部110と、CPU10が実行するアニメーション画像出力方法を実現するためのプログラム情報を記憶するためのプログラム情報記憶部111と、アニメーション画像出力に関わる情報を記憶するための画像出力情報記憶部112と、出力された画像を記憶するための出力画像記憶部113とを含んでいる。
【0038】
図5は、キーフレーム情報記憶部110の構成を示す図である。
図5において、キーフレーム情報記憶部110は、複数個のキーフレーム情報20、21および22を含んでいる。なお、通常の場合キーフレームの数はこれよりも多いが、この例では説明を簡略にするためにキーフレームが3つである場合を考えることとする。
【0039】
この例において、第1のキーフレーム20は、第1のキーフレームが表示されるべき時刻を特定するための情報、すなわちアニメーションの表示開始から第1のキーフレーム表示までの予定経過時間200と、予定経過時間の経過後にフレーム上に表示されるべき図形の特徴を特定するための図形情報201、203を含んでいる。第1のキーフレームが表示されるのはアニメーションの開始時であるため、第1のキーフレームでは予定経過時間=0である。各図形情報201、203はそれぞれ、後述する第2のキーフレームの対応する図形が格納された領域へのポインタ202、204を有している。図形情報の内容については図6を参照して後述する。
【0040】
同様に、第2のキーフレーム情報21は、予定経過時間210と、図形情報211、213および215を含んでいる。第1のキーフレーム情報20の図形情報201、203のポインタ202、204はそれぞれ、第2のキーフレーム21の図形情報211、213の領域の先頭を指し示している。同様にして第2のキーフレーム情報21の図形情報211、213および215はポインタ212、214および216を有している。これらのうちポインタ212、216は、後述する第3のキーフレーム22の対応する図形情報の領域の先頭を指し示している。第2の図形情報213のポインタ214は、次のキーフレームにおいて対応する図形情報が無いこと、すなわち終端であることを示す値を格納している。
【0041】
同様に、第3のキーフレーム情報22は、予定経過時間220と、図形情報221、223を含んでいる。第2のキーフレーム情報21のポインタ212、216はそれぞれ、この第3のキーフレーム情報22の図形情報221、223の領域の先頭を指し示している。図形情報221、223はそれぞれポインタ222、224を有しているが、この例ではこの第3のキーフレームが最終キーフレームであるものと仮定しているので、これらポインタはいずれも終端であることを示す値が格納されている。
【0042】
図6は、図形情報として格納されているデータの例を示す図である。
図6の第1のキーフレーム20における情報において、図形情報201では、図形の種類が閉多角形であること、閉多角形の頂点の数が3つであること、そして各々の座標が(1,2)、(2,3)、(1,4)であることが示されている。さらに、この図形に対して各種パラメータを調整する必要があることを示す情報が付加されている。この情報は、画像を出力した際図形が全て画面内に入らない場合に、位置や大きさなどの情報を調整することで画面内に図形を表示できるようにするために用いられる。
【0043】
この情報は、このようにコンテンツ情報の中に記載するようにしてもよいし、コンテンツ情報とは別のメモリ内に準備するようにしてもよい。
【0044】
また、ポインタ202では、図形情報201と、第2のキーフレーム21における図形情報211とが関連付けられていることが示されている。
【0045】
次に、図6の第2のキーフレーム21における情報において、図形情報211によって図形の種類が閉多角形であること、閉多角形の頂点の数が3つであること、そして各々の座標が(2,2)、(4,4)、(2,6)であること、画面内に図形を収めるためにパラメータを調整する必要が無いということが示されており、ポインタ212にて、図形情報211と、第3キーフレーム22における図形情報221とが関連付けられていることが示されている。第3のキーフレーム22でも同様の図形情報221が示されているが、ポインタ222では、この図形情報221に続いて関連する図形情報が無いこと、つまりこの図形が終端であることが示されている。
【0046】
図7は、図6における図形情報201、211、221により表示を行なった状況を示す図である。
【0047】
まず第1のキーフレームにおける予定経過時間、つまりアニメーションが再生された直後の時間では座標を(1,2)、(2,3)、(1,4)とする閉多角形35が画面36に描かれる(図7(a))。この閉多角形は次のキーフレーム21の予定経過時間210、つまり1秒後には各頂点の座標が(2,2)、(4,4)、(2,6)となるように移動し(図7(b))、さらに次のキーフレーム22での予定経過時間220、つまり2秒後には、各頂点の座標が(3,2)、(4,3)、(3,4)となるように移動する(図7(c))。
【0048】
なお、図6ではキーフレーム情報の例として閉多角形を挙げたが、この他にも文字列や画像をアニメーション表示させることも可能である。
【0049】
図8は、文字列や画像をアニメーション表示させるためのキーフレームデータを示す図である。
【0050】
図8において、図8(a)の図形情報231では閉多角形の枠線の色、塗りつぶし色、線の太さ、線の種類が指定されている。この場合、頂点の座標と同様に、キーフレーム間の時間をもとに中間パラメータが計算されて表示される。図8(b)における図形情報232は、図形が文字列の場合の例である。この場合パラメータとして、文字列を表示する座標、文字列の内容、文字フォントの種類、文字ポイント(大きさ)、文字色、行間、字間、などが挙げられる。図8(c)における図形情報233は、図形が画像である場合の例である。この場合パラメータとして、画像を表示する座標、画像データ、画像形式、画像の表示倍率、などがある。図8(d)における図形情報234は、複数の図形を一つのグループにまとめた図形であり、この場合は図形の数と、それぞれの図形へのポインタ、これら図形の基準となる座標、全体の図形の縮尺などがパラメータとなる。
【0051】
画像出力情報記憶部112には、キーフレーム情報によるアニメーションから画像を出力する際、どれ位の大きさの画面にアニメーション画像を出力するかの情報と、どの時刻における画像を出力すべきかの情報が記されている。
【0052】
図9は画像出力情報記憶部112の一例を示す図である。
この例では、アニメーション画像を横幅10、縦幅15の大きさの画面に出力し、アニメーション再生開始から1.0秒、16.0秒、および40.0秒経過した際の画像を出力することが記述されている。なお、今回の実施例においてはアニメーションが開始してからの秒数で時刻を指定したが、この他にも、アニメーション開始からのミリ秒単位での指定や、1秒を何枚かのフレームとして計算した際のフレーム番号で指定する方法などがある。また、画面サイズの情報と画像を出力する時間の情報は別々にすることもできる。
【0053】
出力画像保存部113には、CPU10によってプログラム情報記憶部111におけるプログラムを実行した実行結果、すなわち出力画像が格納される。実行結果は画像データとして格納され、表示装置によって表示されたり、別のプログラムやコンピュータに利用されたりする。
【0054】
図10は、図4でのプログラム情報記憶部111における画像出力の手順を示す図である。
【0055】
図10において、最初のステップS100で画像出力情報記憶部が読み込まれ、これによってキーフレーム情報のどの時点での画像を出力するかを判断する。また画面のサイズに関する情報は後で表示パラメータの調整に利用される。次にステップS101にて次の画像出力時間を変数tに設定する。最初にステップS101が呼び出された場合は、画像出力情報記憶部において最初に指定された時刻がtとして設定される。ステップS102ではキーフレーム番号を格納するための変数iに初期値1を設定する。
【0056】
以降、i番目のキーフレームの予定経過時間をPiと呼ぶことにする。ステップS103にて、i+1番目のキーフレーム(i=1であれば2番目のキーフレーム)の予定経過時間が変数t以下であるか否かについて判断を行う。この条件が成立した場合はステップS104へ、成立しなかった場合はステップS107にそれぞれ進む。
【0057】
ステップS104に進んだ場合、変数iに1が加算される。さらにステップS105にて、加算後のiを用いてi+1が、当初予定されたキーフレームの数nよりも大きいか否かについての判断が行なわれる。この条件が成立しなければ制御はステップS103に進んで再度処理が続行される。もし条件が成立した場合は、すなわち出力時間tが最後のキーフレームの予定経過時間を過ぎたということであるので、この場合はステップS106において最後のキーフレームにおける画像を出力するようにtの値をPiに変更する。
【0058】
ステップS107では、描画すべきフレームの位置づけを示す値hが計算される。この値は、変数tすなわち出力すべき時刻において、現在のキーフレームから次のキーフレームへ進んだ割合を示しており、0以上1未満の小数として表現される。一般的には、
h=(t−Pi)/(Pi+1−Pi) …(数式1)
のように、時間tにおける現在のキーフレームから次のキーフレームへの比率として表現される。この値hを用いてキーフレームiにおける全ての図形に対して次の処理が行われる。まず、ステップS108にて中間フレームにおける各図形の各特徴値(パラメータ)が次のように計算される。i番目のキーフレームにおける全ての図形のパラメータをQiと表わし、i+1番目のキーフレームにおいて対応するパラメータをQi+1と表わす。この時、パラメータQiとパラメータQi+1に対応する中間パラメータをRとすると、Rは次のようにして計算される。
【0059】
R=Qi+h×(Qi+1−Qi) …(数式2)
この中間パラメータRを利用して各図形が描画されるが、これについては別図11を用いて後述する。キーフレームiにおける全ての図形に対してステップS108及びステップS109における描画が終了した時点で、画像の出力は完了する。この後、ステップS110にて画像出力情報記憶部に記憶された出力時間の画像を全て出力したかどうかが判断され、もし全ての画像を出力していなければステップS101に戻り再度出力処理を行う。全ての画像が出力された場合は処理を終了する。
【0060】
ステップS109における図形の描画における処理を図11で説明する。まず、ステップS200において図形がパラメータを調整する必要とするものかどうかが判断される。このパラメータを調整するかの情報はキーフレーム情報記憶部110内の各図形に対して収められており(図6を参照)、パラメータの調整が必要な場合、閉多角形や文字列、画像などの図形の全てを画面の中に収めることになる。もし図形が調整を必要とする場合、ステップS201に進み、必要としない場合はS209に進む。ステップS201では、調整を必要とする図形に対して、図形が少しでも画面の中に入るかが判断される。例えば図形が閉多角形であった場合、閉多角形を構成する各座標が画面内に入っているか、また座標間を結ぶ線分が画面内に入っているかどうかをもとに、図形が画面内にあるかを判断する。もし図形が全く画面に入らない場合は、図形を描画する必要がないため、当該図形における描画は終了する。図形が少しでも画面内に入ると判断した場合はステップS202に進む。
【0061】
ステップS202では、図形の種類が判断される。今回の実施例においては、図形が文字列であった場合とそれ以外であった場合を判断する。図形が文字列の場合はステップS203へ、文字列でない場合はステップS205に進む。ステップS203では、文字列が画面内に全て入りきるかを判断するために、文字列の1行あたりの最大文字数および文字の大きさを掛け合わせた値(これを文字列の横幅と呼ぶ)と画面の横幅とを、また文字列の行数および文字の大きさを掛け合わせた値(これを文字列の縦幅と呼ぶ)と画面の縦幅とを比較する。例えば、ある文字列図形における文字の大きさが1であり、文字列の1行あたりの最大文字数が12文字で、文字列の行数を2とした場合、文字列の横幅は12となり、文字列の縦幅は2となる。文字列の横幅が画面の横幅を上回った場合、もしくは文字列の縦幅が画面の縦幅を上回った場合は、どのような位置に文字列を配置しても図形を画面内に収めることができないため、ステップS204にて文字の大きさを小さくする必要がある。そうでない場合はステップS207に進む。ステップS204では、画面内に文字列を全て表示させるため文字の大きさを変更する。具体的には、文字一つの大きさをS、文字列の横幅をWs、文字列の縦幅をHsとし、画面の横幅をW、文字列の縦幅をHとした場合、画面の幅及び高さを縦横の文字数で割った数値よりも文字の大きさが小さくなれば良い。すなわち、文字の大きさは、横幅においてはW÷(Ws÷S)以下に、縦幅においてはH÷(Hs÷S)以下にすれば良いことになる。なお、ステップS203およびS204においては、文字と文字の間、および行と行の間に空間が無いものとしたが、文字と文字の間や行と行の間に空間がある場合は、その空間の大きさも加味して大きさの判断と変更を行う必要がある。
【0062】
ステップS205では、文字列以外の図形に対して、図形が画面に全て収まりきるかが判断される。このステップでの判断方法として、図形の横幅および縦幅が画面サイズを上回っているかどうかで判断する方法がある。具体的には、図形が閉多角形であった場合、閉多角形の各座標において、最も右にある点の水平座標(X座標)をXM、最も左にある点の水平座標をXmとした時、XM−Xmが図形の横幅となるため、この値が画面の幅よりも大きければ図形は画面内に収まりきらず、逆に画面の横幅が大きい場合は図形の大きさを変更しなくても画面内に収めることができる。縦幅においても同様で、最も下にある点の垂直座標(Y座標)をYM、最も上にある点の垂直座標をYmとした時、YM−Ymが画面の縦幅よりも小さくなった場合に図形を画面内に収めることができる。図形の横幅あるいは縦幅が画面サイズを上回る場合はステップS206へ、そうでない場合はステップS207へ進む。
【0063】
ステップS206では、図形が画面内に入りきるように図形の大きさが縮小される。先ほど求めた図形の横幅XM−Xmが、画面の横幅以下になればよいため、画面の横幅をWとすると、図形は横方向に、
W/(XM−Xm) …(数式3)
倍以下の比率で縮小すれば良いことになる。この大きさに画像を縮小するためには、閉曲線を構成する全ての座標点のX座標を上記の倍率で掛ければ良い。縦方向についても同様で、画面の縦幅をHとした場合、縮小すべき比率は、
H/(YM−Ym) …(数式4)
の倍率以下の値となる。もし元の図形と縮小した図形とで縦横の比率を合わせておきたい場合は、上記数式3および数式4の値のうち小さい方の値を用いて横幅と縦幅を縮小すれば良い。
【0064】
ステップS204またはS206において図形の大きさが変更された後、次のステップS207において図形の位置情報から図形が画面内に入りきるかが判断される。具体的には、図形が閉多角形であった場合は先ほどのXの最大値および最小値XM、Xmが画面の中に収まる位置であるか、またYの最大および最小値YM、Ymが画面内に入るかどうかで判断できる。図形が文字列であった場合は文字列の左上にあたる座標と右下にあたる座標が画面内に入っているかで判断することができる。もし全て画面内に入る場合はステップS209に、収まらない場合はステップS208に進む。
【0065】
ステップS208における処理は、図形が画面内に入るように図形の位置パラメータを修正する処理である。もし、図形における座標の最大値XMが、画面の右端を意味するX座標XVMを上回った場合、図形全体を左に(XVM−XM)だけ移動することによって図形を画面内に移動させることができる。この図形の移動と、ステップS204およびステップS206における図形の大きさの変更処理によって、必要な図形を画面内に収めることが可能となる。最後に、ステップS209において調整されたパラメータ、または全く調整を行う必要のなかったパラメータを用いて図形が描画され、図形の描画処理は終了する。
【0066】
この実施例を用いて実際に画像が生成される過程を例示して説明する。
図12は、キーフレーム情報の具体例を示す図である。
【0067】
まずキーフレーム情報として図12に示す情報が格納されているとする。すなわち、第1のキーフレームと第2のキーフレームのそれぞれに1つずつ文字列の図形情報が格納されている。また、それぞれの図形における文字列の内容は「左下にスクロールする文字数の多い文字列。」となっている。第1のキーフレーム50では、文字列の座標が(12,1)であり、第2のキーフレーム51では、座標が(−20,13)となっている。また、文字の大きさを示すポイント数は第1のキーフレーム、第2のキーフレームの両方で1であるとする。この数字は、文字一つあたりの大きさを示すものである。さらに、両方の図形ともに図形を画面内に収めるようパラメータを調整する必要がある、という情報が格納されている。
【0068】
図13は、この2つのキーフレーム情報を実際に表示される画面に対応させた図である。この図では文字列が左下にスクロールするアニメーションが示されている。
【0069】
今回の例において、画像出力情報記憶部には図9に示す内容の情報が格納されているとする。すなわち図9において、アニメーション出力における画像のサイズは横幅が10、縦幅が15、またアニメーションが開始してから1.0秒後と16.0秒後、および40.0秒後の画像を出力することが指定されている。
【0070】
図12と図9での例において、画像が出力される過程を図10のフローチャートを用いて説明する。最初にステップS100で画像出力情報記憶部が読み込まれ、画像サイズが横10、縦15であることと、各々の画像の時間とが読み込まれる。S101で次の出力時間、つまりtが1.0秒に設定される。次に、ステップS102にてキーフレーム番号iに1が代入される。今回の例において、第1のキーフレームの予定経過時間は0秒、第2のキーフレームの予定経過時間は32秒であるから、P1は0秒、P2は32秒となる。ステップS103にて、P2とtが比較されるが、P2はtよりも大きいため、ステップS107に処理が移り、描画すべきフレームの位置づけを示すhが計算される。この場合ではi=1で、Pi=0、Pi+1=32であるから、数式1よりh=0.03125となる。このhをもとに各図形が描画される。ステップS108において、中間フレームの文字列の座標が計算される。すなわち、数式2を用いることによって座標が(11,1.375)となる。ひき続き図11のステップS200にて、この図形はパラメータの調整が必要である図形であると判断されるが、ステップS201で、この図形が全て画面の外にあると判断される。これは、文字列の左上の座標が(11,1.375)であり画面内ではないためである。したがって図形の描画は行われない。
【0071】
図11のフローの処理が終了した後、図10のステップS110にて全ての画像が出力されたかどうかが確認されるが、まだ出力すべき画像が残っているため、再度ステップS101より処理が継続される。最初の画像の出力における手順と同様、ステップS101及びS102にてt=16.0、i=1が代入され、ステップS103にてPi+1がtよりも小さいため、ステップS107で数式1からh=0.5を計算し、ステップS108に処理が移る。ステップS108にて文字列の座標が(−4,7)と計算され、図11のフローに移る。図11のステップS200でこの図形はパラメータを調整すべき図形であり、かつステップS201で画面内にあると判断される。これは、文字列の開始する座標が(−4,7)であるが、文字列の長さが20文字であるため、途中の文字が画面内に入るためである。続けて、ステップS202で図形の種類が文字列であると判断されステップS203に進む。ステップS203にて、1行あたりの文字数20および文字の大きさ1をかけて文字列の横幅とした値と画面の横幅とが比較されるが、この場合文字列の幅の数値20が画面の横幅の数値10よりも上回るため、ステップS204にて図形が画面内に収まるように大きさが調整される。今回の例では、画面の幅が10で文字幅が20、文字の大きさが1であるから、文字の大きさ(ポイント)は10÷(20÷1)=0.5以下の値に変更すれば良いことになる。ひき続きステップS207にて、図形の端となる位置が画面内にあるかが判断されるが、今回の例では文字列の左上の座標が(−4,7)であり画面の外となるため、この図形は位置を画面内に移動させる必要がある。したがってS208にて、画面外となる画像の水平座標(X座標)の数値−4を0に変更することで図形を移動させる。最後にステップS209において文字列図形を描画し、図11の処理を終了する。
【0072】
1枚目、2枚目の画像と同様に、3枚目の画像についてもステップS101から順に処理される。ステップS101及びS102において、t=40.0、i=1が代入される。ステップS103でPi+1とtとが比較されるが、この場合tはPi+1以上となるため、処理はステップS104に移る。ステップS104においてiが1加算されるが、ステップS105でi+1=3がキーフレーム数2よりも大きくなるため、ステップS106においてtにPi=32.0、つまりアニメーションの最終状態の時刻が代入される。ステップS107ではh=0.0と計算され、ステップS108で文字列の座標が(−20,13)と計算される。この図形はパラメータの調整を必要とする図形であるので(ステップS200)ステップS201に処理が移るが、この時間では図形は画面の中に全く入らない。これは、最も右側となる位置の水平座標(X座標)が−20+20=0となり、画面内に入らないと判断されるためである。したがって、この図形は何も描画されない。最後の画面が出力された後で、ステップS110において全ての画像が出力されたと判断し、画像出力処理を終了する。
【0073】
図14は、以上の処理によって出力される画像の例を示す図である。
図14(a)は1枚目の、図14(c)は3枚目の出力画像であるが、これらの画像において、文字列は全て画面外に存在するため何も描画されない。図14(b)は2枚目として出力された画像であるが、ステップS204にて文字列の大きさが変更され、ステップS208にて文字列の位置を変更することで、文字列が画面内に入るように描画された出力画像となっている。
【0074】
なお、先の例においては、文字列の大きさを変更する方法として、ステップS204において文字の大きさを変更する方法を用いたが、別の方法として、文字列の途中の改行位置を変更する方法を用いることができる。この場合は、文字列の一行あたりの文字数が、画面の幅÷文字のポイント数(大きさ)よりも小さくなるように、文字列の改行位置を調整すれば良い。今回の例では、文字列の一行あたりの文字数の最大値を、画面の幅の値10を文字の大きさの値1で割った数値10と同じかそれ以下にすれば良いことになるため、「左下にスクロールする」と「文字数の多い文字列。」の間に改行を加えることで、文字列の横幅が10となり画面の幅と同じとなる。したがってこの方法でも文字列図形を画面内に収めることができる(図14(d))。
【0075】
また、ステップS200において、図形がパラメータを調整するかどうかを判断したが、このステップは必ずしも必要ではなく、どのような図形においてもパラメータを調整させることも可能である。このような場合、図形情報にパラメータ調整が必要かどうかの情報を格納する必要が無くなる。また、図11におけるフローでは、最初に実行されるステップがS201となるが、残りの処理は同じである。
【0076】
[実施の形態2]
図15は、本発明の第2の実施の形態におけるコンピュータの構成を示す図であり、図4に対応する図である。
【0077】
図15において、符号10は、図4におけるCPUと同じである。符号11’はメモリであるが、図4のメモリと違い、キーフレーム情報記憶部112の代わりに図形情報記憶部114とアニメーション命令記憶部115とを備えている点で異なっている。
【0078】
図16は、図形情報記憶部114の構成例を示す図である。
図形情報記憶部114には、アニメーションを構成する各々の図形に関する情報が格納されている。図16の例では図形60に関する情報のみが格納されているが、これは一例であり、実際のアニメーションにおいては複数の図形に関する情報がこの図形情報記憶部114に格納される。各々の図形における情報は図6に示した図形情報とほぼ同じであるが、文字列の位置など、図形の位置を示すパラメータは、次に説明するアニメーション命令によって指定されるためここでは記述されない。
【0079】
図17は、アニメーション命令記憶部115の構成例を示す図である。
アニメーション命令情報記憶部115には、図形情報記憶部114に格納されている図形に対するアニメーション命令70、71、72、73が、命令の開始する時刻順に格納されている。なお、実際のアニメーションにおけるアニメーション命令とは、図形に対する表示や、移動、拡大・縮小、変形を行うなどの命令が指定されたものであり、それぞれの命令は開始時刻、命令の種類、対象となる図形、及びそれぞれの命令に付随するパラメータによって構成されている。図17の例では、アニメーション命令70において、時刻が0.0秒となった時に、図形1を位置(1,1)に表示する命令が記述されている。また、アニメーション命令71では、同じく時刻が0.0秒となった時に、図形1の縮尺を1.0秒後に2.0倍に変更する命令が記述されている。今回の例において、複数の命令の開始時刻が同時に指定された場合、先に指定された命令を優先して実行するものとする。なお、この図16及び図17における例を図示したものは図7となる。
【0080】
図18は、図15でのプログラム情報記憶部111’における画像出力の手順を示す図である。
【0081】
まずステップS300において、画像出力情報記憶部が読み込まれ、ステップS301において次の出力時間を得る。これらの処理は図10におけるステップS100及びステップS101における処理と同じである。次に、図形情報記憶部114における全ての図形に対して、まずステップS302で変数iに1がセットされる。この変数iは命令番号を参照するための値である。続いてステップS303にて、命令iが現在処理している図形を対象としているかどうかが判断される。もし対象となる図形なのであればステップS304へ、そうでない場合はステップS306に進む。ステップS304では、出力時間tが命令iで指定された開始時刻を過ぎているかが判断される。もし開始時刻を過ぎている場合は、命令が既に実行されているとみなされるため、ステップS305に進み、命令iに対応するパラメータを変更する。具体的には、命令iが表示命令の場合は図形が表示されているという状態をオンにする、命令iが移動命令の場合は、移動時間をu、命令が実行される前の図形の座標を(Xs,Ys)、移動目標の座標を(Xd,Yd)とした場合、もし出力時間tが命令iの開始時間s+移動時間uを超えない場合は、座標を、
に変更する、などの処理が実行される。これらのパラメータ変更処理については従来技術となるため、ここでは詳細を説明しない。出力時間tが命令iの開始時刻を過ぎていない場合はステップS306に進む。
【0082】
ステップS306では次の命令を処理するため変数iに1が加算される。次にステップS307において、変数iが命令の総数(ここではnとする)を上回っていないかが判断される。もし上回っていない場合は、ステップS303に戻って次の命令を処理する。変数iが命令総数nを上回る場合、すなわち全ての命令を処理した場合はステップS308に進む。ステップS308において、出力時間tにおける図形が出力されるが、ここでの処理は図11におけるフローと同じである。最後にステップS309にて全ての画像が出力したかが判断される。この処理は図10におけるステップS110と同じである。
【0083】
この実施例を用いて実際に画像が生成される過程を以下の例で説明する。
図19は、図形情報記憶部114とアニメーション命令記憶部115に記録されている情報を示す図である。
【0084】
図形情報記憶部114には文字列図形に関する情報80が1つ格納されており、その内容は「左下にスクロールする文字数の多い文字列。」となっている。また、文字の大きさを示すポイント数は1であり、図形を画面内に収めるようパラメータを調整する必要があることが指定されている。次に、アニメーション命令記憶部115には2つのアニメーション命令90及び91が格納されている。最初のアニメーション命令90には、時刻0.0秒において、図形1を位置(12,1)に表示することが記述されている。二つ目のアニメーション命令91には、同じく時刻0.0秒において、図形1を32.0秒後に(−20,13)に移動することが記述されている。以上によって示された図形情報80及びアニメーション命令90、91を実際に表示される画面に対応させたものは、先に示した実施の形態1における図13と同じものとなる。つまり、この図13では文字列が左下にスクロールするアニメーションが示されている。実施の形態1の場合と同様に、画像出力情報記憶部には図9に示す内容の情報が格納されているものとする。すなわち図9において、アニメーション出力における画像のサイズは横幅が10、縦幅が15、またアニメーションが開始してから1.0秒後と16.0秒後、および40.0秒後の画像を出力することが指定されている。
【0085】
図19と図9での例において、画像が出力される過程を図18のフローチャートを用いて説明する。最初にステップS300で画像出力情報記憶部が読み込まれ、画像サイズが横10、縦15であることと、各々の画像の時間が読み込まれる。S301で次の出力時間、つまりtが1.0秒に設定される。今回の例では図形が1つであるので、ステップS302からステップS308までの処理は、各出力図形に対して1度しか行なわれない。次に、ステップS302にて命令番号iに1が代入される。次にステップS303において、命令1が図形1を対象としているかが判断されるが、この命令は図形1を対象とした命令であるためステップS304に進む。次に、出力時間tが命令1の開始時刻を過ぎているかが判断されるが、命令1の開始時刻は0.0秒であるため開始時刻を過ぎている。よってステップS305に進み、命令1、すなわち表示命令が実行され、図形1は(12,1)に表示された状態となる。続けてステップS306にて命令番号に1が加算され、ステップS307にて命令番号と命令総数(今回の例の場合は2)とが比較されるが、まだ全ての命令を処理していないため、ステップS303に戻る。同じく命令2においても、図形1を対象としているか(ステップS303)、開始時刻を過ぎているか(ステップS304)が判断されるが、いずれにも適合するため、ステップS305において命令2、すなわち図形の移動命令が時間tまで実行される。この場合、時間tは1.0秒であり、命令2では図形が32.0秒後に(−20,13)に移動することが指定されているため、1.0秒後の図形の位置は数式5より(11,1.375)と計算される。ステップS306において命令番号iに1が加算され、ステップS307において命令総数と比較されるが、今回の場合は命令番号が命令総数を上回るため、ステップS308において図形が出力される。ステップS308における図形の出力における処理は実施の形態1と同じであり、図形の座標も実施の形態1と同じとなるため、図形は描画されない。
【0086】
図11のフローの処理が終了した後、図18のステップS309にて全ての画像が出力されたかどうかが確認されるが、まだ出力すべき画像が残っているため、再度ステップS301より処理が継続される。2枚目、3枚目の画像においても大半の処理は先に示した処理と同じである。異なる点は、出力時間tが異なるため、命令2におけるステップS305において、計算される座標の値が異なる点だけである。出力時間tが16.0である場合の図形の位置は、1枚目の場合と同様に数式5より(−4,7)となる。また、出力時間tが40.0である場合の図形の位置は、出力時間tが命令2の開始時間に図形の移動にかかる時間を足した値32.0秒を上回っているため、移動命令が終了した後の座標(−20,13)となる。これらの図形に対しても同様に図11で図形の描画処理が行われるが、処理される文字列に関するパラメータは実施の形態1と同じであるので詳細は省略する。したがって、この例においても実施の形態1と同様、図14における出力が期待できる。つまり、1つ目と3つ目の出力時間においては図形が描画されない(図14(a)、図14(c))が、2つ目の出力時間における画像は、大きさ及び位置が調整されたものとなる(図14(b))。
【0087】
なお、上述の実施の形態における処理は、時間に応じて文字、画像、図形などのコンテンツに変化を与える処理であればそれをアニメーションと呼ぶか否かに拘わらず適用可能である。
【0088】
【発明の効果】
本発明によって、ある時点での中間フレーム画像を出力する画像出力方法で、図形情報の一部のパラメータ、例えば図形の大きさや文字列の内容、及び図形の位置を調整することにより、静止画の出力において、元のコンテンツの内容を損なわず、かつ少ない枚数で画像を出力することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態におけるコンテンツ出力システムの構成を示す図である。
【図2】サーバコンピュータ1aまたはクライアントコンピュータ1bの具体的なハードウェア構成を示す図である。
【図3】図1の携帯電話300の構成を示すブロック図である。
【図4】本発明の実施の形態1におけるコンピュータのブロック図である。
【図5】キーフレーム情報を模式的に示す図である。
【図6】キーフレーム情報の一例を示した図である。
【図7】キーフレーム情報の一例をもとにしたアニメーションを示した図である。
【図8】図形情報が座標情報以外のデータを格納している場合の例を示した図である。
【図9】画像出力情報の一例を示した図である。
【図10】実施の形態1でのアニメーション画像出力方法を実現するためのフローチャートである。
【図11】図10における図形の描画処理(S109)を示すフローチャートである。
【図12】キーフレーム情報の一例を示した図である。
【図13】キーフレーム補完方式のアニメーションの一例を示した図である。
【図14】本発明によって出力される画像の一例を示した図である。
【図15】本発明の実施の形態2におけるコンピュータのブロック図である。
【図16】図形情報の一例を示した図である。
【図17】アニメーション命令の一例を示した図である。
【図18】実施の形態2でのアニメーション画像出力方法を実現するためのフローチャートである。
【図19】図形情報およびアニメーション命令の一例を示した図である。
【図20】従来のキーフレーム補完方式のアニメーションの原理を模式的に示す図である。
【図21】従来技術によるアニメーション画像出力方式の問題点を示すための図である。
【符号の説明】
1 コンピュータ、10 CPU、11、11’ メモリ、110 キーフレーム情報記憶部、111,111’ プログラム情報記憶部、112 画像出力情報記憶部、113 出力画像記憶部、114 図形情報記憶部、115 アニメーション命令記憶部、20,21,22,50,51 キーフレーム情報、200,210,220,500,510 キーフレームの予定経過時間、201,203,211,213,215,221,223,501,511 キーフレームの図形情報、202,204,212,214,216,222,224,502,512 キーフレームの図形情報が指すポインタ、231,232,233,234,60,80 図形情報、30,31,32,33,34,35図形、36,420,421,422 出力画像、40,41,52,53,53’、54 キーフレーム情報、70,71,72,73,90,91 アニメーション命令。
【発明の属する技術分野】
本発明は、画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体に関し、特に、時系列中の特定のフレーム(キーフレーム)における画像をもとにして、キーフレーム間の画像を出力する画像出力方法に関するものである。
【0002】
【従来の技術】
コンピュータを用いたアニメーション再生方法として、時系列中の全てのフレーム画像を記憶せずに、キーとなる時刻におけるフレームの画像の座標データをもとにして、キーフレーム間のフレームを生成してアニメーションを再生する方法がある。
【0003】
キーフレーム間のフレームを生成してアニメーションを再生する方法の例として、以下の特許文献1において提案された方法について説明する。
【0004】
図20は、キーフレーム間のフレームを生成してアニメーションを再生する方法の具体例を示す図である。
【0005】
図20を参照して、アニメーションの全てのフレームを保存せず、特定のフレーム(キーフレーム)の画像のみを記憶しておく。この図20の場合、図形30と図形31とが各々キーフレームに属する図形である。これらは、互いに時間軸上で隣接したキーフレームに属している。
【0006】
特許文献1においては、この隣接するキーフレームの図形30と図形31の間の時間をn等分し、中間フレーム32,33および34(n=3と想定する)の画像の中の各点を、キーフレームの図形30および31の間での対応する各点から線型補完によって求める。こうして、図20において矢印で示される方向に時間軸が進むものとすれば、まず図形30を含むキーフレームが、続いて中間の図形32、33および34をそれぞれ含む3つの中間フレームが、最後に図形31を含むキーフレームが表示されてアニメーションが再生されることになる。図形31を含むキーフレームを表示した後は、このキーフレームと、この次のキーフレームとの間で同様の補完計算を行ってアニメーション再生が行われる。
【0007】
また、特許文献2においては、CPU速度や1フレーム当りの描画量に依存せずに一定時間のアニメーションを再生する方法が公開されている。この方法では、前回のアニメーション画像の描画が終了した時刻を基準として、その時刻の前後にあるキーフレーム画像から基準となる時刻のアニメーション画像を補完計算することでアニメーション再生を行っている。
【0008】
上記の従来技術を用いることによって、任意の時刻におけるアニメーション画像を、キーフレームにおける画像から補完して生成することが可能である。
【0009】
【特許文献1】
特開昭60−191366号公報
【0010】
【特許文献2】
特開平10−275244号公報
【0011】
【発明が解決しようとする課題】
このようなアニメーション再生方法は、アニメーション再生のために必要となるデータ量が、全てのフレームの情報を持つ場合と比較して遥かに少なくてすむという利点がある。近年のCPU(中央演算処理装置)の処理能力の向上により、さまざまなコンピュータにおいてこの方式のアニメーションの再生が可能になってきている。
【0012】
また、一部のコンピュータではこのようなアニメーションを再生することができない場合がある。このような場合として、例えば携帯電話など、CPUの処理速度が遅いためアニメーションの再生が困難な場合や、利用者側でアニメーション再生用のソフトウェアを導入できない場合などが挙げられる。このようなコンピュータに対しては、アニメーションを再生できる別のコンピュータ上でアニメーション画像を数枚分出力しておき、アニメーションを再生できないコンピュータ上でこれら画像を順番に表示することによって、擬似的にアニメーションを表現する方法を取ることができる。この場合、対象となる機器での再生処理能力を考慮して、出力されるべき画像は少なくすることが望ましい。
【0013】
ところがこの方法を利用した場合において、文字列や画像などがスクロールする種類のアニメーションの画像を出力した際、文字列や画像の全てを表示することができないといった問題があった。例えば、図13に示すように画面サイズの横幅よりも大きい文字列が右上から左下にスクロールするアニメーションの画像を出力した場合、どの時間における画像を出力した場合においても、スクロールする文字列の全てを表示することができない。この場合、全ての文字列を表示するためには、ある程度文字列がスクロールした時点での画像を何度も出力させる必要があり、結果として出力される画像が多くなってしまう。逆に出力する画像の数を減らした場合は、出力した全ての画像を合わせても文字列の全てを表示することができず、アニメーションの内容を適切に表現する画像を表示できない。
【0014】
より詳しくは、図13では2つのキーフレーム間で文字列が右上から左下にスクロールする例を示している。この例では、文字列における1行あたりの文字数が多いため、一つの画面で文字列の全てが表示できないものとする。また、第1のキーフレーム40から第2のキーフレーム41への経過時間を仮に32秒とする。このようなアニメーションから静止画を出力した例を図21に示す。この図21において、符号420は第1のキーフレームから10秒が経過したもの、符号421は第1のキーフレームから23秒が経過したものである。この場合、いずれの場合においても全ての文字列を表示することができない。
【0015】
この発明は上記問題点を解決するためになされたものであり、適切にコンテンツを表示できる画像出力方法、画像出力装置、およびコンピュータに画像出力方法を実行させるプログラムを提供することを目的としている。
【0016】
【課題を解決するための手段】
上記の目的を達成するためこの発明のある局面に従うと、画像出力方法は、コンテンツを出力する方法であって、表示時刻を特定するための情報と、当該表示時刻に表示フレーム内に表示されるべきコンテンツの特徴を特定するためのコンテンツ情報とを含む、複数のキーフレーム情報をメモリ内に準備するステップと、画像出力のための時刻を指定するステップと、複数のキーフレーム情報のうち、指定された時刻の前後の表示時刻をそれぞれ有する少なくとも2つのキーフレーム情報を選択するステップと、少なくとも2つのキーフレーム情報にそれぞれ含まれた対応のコンテンツ情報の間で所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む。
【0017】
この発明の他の局面に従うと、画像出力方法は、コンテンツを出力する方法であって、コンテンツの変化開始時刻を特定するための情報と、表示フレーム内に表示されるべきコンテンツのその時刻からの変化を特定するための情報とを含む、1ないし複数のアニメーション命令をメモリ内に準備するステップと、画像出力のための時刻を指定するステップと、1ないし複数のアニメーション命令のうち、指定された時刻の前の変化開始時刻を有するアニメーション命令を選択するステップと、指定された時刻の前の変化開始時刻を有するアニメーション命令に基づいて、所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む。
【0018】
好ましくは画像出力方法は、作成されたコンテンツ情報でコンテンツが画面内に全て表示されるかを判断するステップをさらに備え、画面内にコンテンツの全てが表示されない場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する。
【0019】
好ましくは画像出力方法は、画面内にコンテンツが収まるようにコンテンツ情報を調整する必要があるかを判断するステップをさらに備え、コンテンツ情報を調整するステップは、コンテンツ情報を調整する必要がある場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する。
【0020】
好ましくは画像出力方法は、コンテンツ情報を調整する必要があるかを判断するための情報が、コンテンツ情報に含まれていることを特徴とする。
【0021】
好ましくは画像出力方法は、コンテンツ情報を調整する必要があるかを判断するための情報を、コンテンツ情報とは別のメモリ内に準備するステップを有する。
【0022】
好ましくはコンテンツ情報を調整する所定の方法は、コンテンツの大きさを変更する方法である。
【0023】
好ましくはコンテンツ情報を調整する所定の方法は、コンテンツを変形する方法である。
【0024】
好ましくは、コンテンツの種類が文字列である場合に、コンテンツ情報を調整する所定の方法は、文字列の改行位置を変更する方法である。
【0025】
この発明の他の局面に従うと、画像出力装置は、上述のいずれかに記載の画像出力方法を実施する。
【0026】
この発明の他の局面に従うと、画像出力プログラムは、上述のいずれかに記載の画像出力方法をコンピュータに実行させる。
【0027】
この発明の他の局面に従うと、コンピュータ読取可能な記録媒体は、上述の画像出力プログラムを記録する。
【0028】
【発明の実施の形態】
[実施の形態1]
図1は、本発明の第1の実施の形態におけるコンテンツ出力システムの構成を示す図である。
【0029】
図を参照して、コンテンツ出力システムは、インターネットその他の通信回線800と、専用回線850と、サーバコンピュータ1aと、クライアントコンピュータ1bと、アニメーションを表示するための各種データを記録するアニメーション生成データデータベース700と、携帯電話基地局350と、携帯電話基地局350との間で通信を行なう携帯電話300とから構成される。
【0030】
アニメーション生成データデータベース700のデータを、サーバコンピュータ1a、クライアントコンピュータ1b、または携帯電話300にダウンロードし、そこで再生することも可能であるし、サーバコンピュータ1a、またはクライアントコンピュータ1bでキーフレームからアニメーションを作成し、それを携帯電話300へ送信し、そこでアニメーションを再生することも可能である。
【0031】
図2は、サーバコンピュータ1aまたはクライアントコンピュータ1bの具体的なハードウェア構成を示す図である。
【0032】
図を参照して、サーバコンピュータ1aまたはクライアントコンピュータ1bは、コンピュータ本体902と、それに接続されるモニタ904と、マウス912と、キーボード910とを備えている。
【0033】
コンピュータ本体902は、CPU920と、メモリ922と、固定ディスク924と、フレキシブルディスク(FD)駆動装置906と、CD−ROM駆動装置908と、通信インタフェース926とを備えている。
【0034】
フレキシブルディスク(FD)駆動装置906、およびCD−ROM駆動装置908のそれぞれは、フレキシブルディスク916またはCD−ROM918からプログラムまたはデータを読取ることができる。
【0035】
図3は、図1の携帯電話300の構成を示すブロック図である。
図を参照して、携帯電話300は、ユーザインタフェース340と、通信部310と、制御部320と、記憶部330とを備えている。ユーザインタフェース340は、操作部342と、表示部344と、音声入力部346と、音声出力部348とを備えている。
【0036】
図4は、図1のサーバコンピュータ1a、またはクライアントコンピュータ1bの機能ブロック図である。
【0037】
図を参照して、コンピュータ1は、所定のプログラムを実行することによって後述するフローチャートの各ステップの処理を実現するCPU10と、CPU10に接続されているメモリ11とを備えている。メモリ11は、複数のキーフレーム情報を記憶するキーフレーム情報記憶部110と、CPU10が実行するアニメーション画像出力方法を実現するためのプログラム情報を記憶するためのプログラム情報記憶部111と、アニメーション画像出力に関わる情報を記憶するための画像出力情報記憶部112と、出力された画像を記憶するための出力画像記憶部113とを含んでいる。
【0038】
図5は、キーフレーム情報記憶部110の構成を示す図である。
図5において、キーフレーム情報記憶部110は、複数個のキーフレーム情報20、21および22を含んでいる。なお、通常の場合キーフレームの数はこれよりも多いが、この例では説明を簡略にするためにキーフレームが3つである場合を考えることとする。
【0039】
この例において、第1のキーフレーム20は、第1のキーフレームが表示されるべき時刻を特定するための情報、すなわちアニメーションの表示開始から第1のキーフレーム表示までの予定経過時間200と、予定経過時間の経過後にフレーム上に表示されるべき図形の特徴を特定するための図形情報201、203を含んでいる。第1のキーフレームが表示されるのはアニメーションの開始時であるため、第1のキーフレームでは予定経過時間=0である。各図形情報201、203はそれぞれ、後述する第2のキーフレームの対応する図形が格納された領域へのポインタ202、204を有している。図形情報の内容については図6を参照して後述する。
【0040】
同様に、第2のキーフレーム情報21は、予定経過時間210と、図形情報211、213および215を含んでいる。第1のキーフレーム情報20の図形情報201、203のポインタ202、204はそれぞれ、第2のキーフレーム21の図形情報211、213の領域の先頭を指し示している。同様にして第2のキーフレーム情報21の図形情報211、213および215はポインタ212、214および216を有している。これらのうちポインタ212、216は、後述する第3のキーフレーム22の対応する図形情報の領域の先頭を指し示している。第2の図形情報213のポインタ214は、次のキーフレームにおいて対応する図形情報が無いこと、すなわち終端であることを示す値を格納している。
【0041】
同様に、第3のキーフレーム情報22は、予定経過時間220と、図形情報221、223を含んでいる。第2のキーフレーム情報21のポインタ212、216はそれぞれ、この第3のキーフレーム情報22の図形情報221、223の領域の先頭を指し示している。図形情報221、223はそれぞれポインタ222、224を有しているが、この例ではこの第3のキーフレームが最終キーフレームであるものと仮定しているので、これらポインタはいずれも終端であることを示す値が格納されている。
【0042】
図6は、図形情報として格納されているデータの例を示す図である。
図6の第1のキーフレーム20における情報において、図形情報201では、図形の種類が閉多角形であること、閉多角形の頂点の数が3つであること、そして各々の座標が(1,2)、(2,3)、(1,4)であることが示されている。さらに、この図形に対して各種パラメータを調整する必要があることを示す情報が付加されている。この情報は、画像を出力した際図形が全て画面内に入らない場合に、位置や大きさなどの情報を調整することで画面内に図形を表示できるようにするために用いられる。
【0043】
この情報は、このようにコンテンツ情報の中に記載するようにしてもよいし、コンテンツ情報とは別のメモリ内に準備するようにしてもよい。
【0044】
また、ポインタ202では、図形情報201と、第2のキーフレーム21における図形情報211とが関連付けられていることが示されている。
【0045】
次に、図6の第2のキーフレーム21における情報において、図形情報211によって図形の種類が閉多角形であること、閉多角形の頂点の数が3つであること、そして各々の座標が(2,2)、(4,4)、(2,6)であること、画面内に図形を収めるためにパラメータを調整する必要が無いということが示されており、ポインタ212にて、図形情報211と、第3キーフレーム22における図形情報221とが関連付けられていることが示されている。第3のキーフレーム22でも同様の図形情報221が示されているが、ポインタ222では、この図形情報221に続いて関連する図形情報が無いこと、つまりこの図形が終端であることが示されている。
【0046】
図7は、図6における図形情報201、211、221により表示を行なった状況を示す図である。
【0047】
まず第1のキーフレームにおける予定経過時間、つまりアニメーションが再生された直後の時間では座標を(1,2)、(2,3)、(1,4)とする閉多角形35が画面36に描かれる(図7(a))。この閉多角形は次のキーフレーム21の予定経過時間210、つまり1秒後には各頂点の座標が(2,2)、(4,4)、(2,6)となるように移動し(図7(b))、さらに次のキーフレーム22での予定経過時間220、つまり2秒後には、各頂点の座標が(3,2)、(4,3)、(3,4)となるように移動する(図7(c))。
【0048】
なお、図6ではキーフレーム情報の例として閉多角形を挙げたが、この他にも文字列や画像をアニメーション表示させることも可能である。
【0049】
図8は、文字列や画像をアニメーション表示させるためのキーフレームデータを示す図である。
【0050】
図8において、図8(a)の図形情報231では閉多角形の枠線の色、塗りつぶし色、線の太さ、線の種類が指定されている。この場合、頂点の座標と同様に、キーフレーム間の時間をもとに中間パラメータが計算されて表示される。図8(b)における図形情報232は、図形が文字列の場合の例である。この場合パラメータとして、文字列を表示する座標、文字列の内容、文字フォントの種類、文字ポイント(大きさ)、文字色、行間、字間、などが挙げられる。図8(c)における図形情報233は、図形が画像である場合の例である。この場合パラメータとして、画像を表示する座標、画像データ、画像形式、画像の表示倍率、などがある。図8(d)における図形情報234は、複数の図形を一つのグループにまとめた図形であり、この場合は図形の数と、それぞれの図形へのポインタ、これら図形の基準となる座標、全体の図形の縮尺などがパラメータとなる。
【0051】
画像出力情報記憶部112には、キーフレーム情報によるアニメーションから画像を出力する際、どれ位の大きさの画面にアニメーション画像を出力するかの情報と、どの時刻における画像を出力すべきかの情報が記されている。
【0052】
図9は画像出力情報記憶部112の一例を示す図である。
この例では、アニメーション画像を横幅10、縦幅15の大きさの画面に出力し、アニメーション再生開始から1.0秒、16.0秒、および40.0秒経過した際の画像を出力することが記述されている。なお、今回の実施例においてはアニメーションが開始してからの秒数で時刻を指定したが、この他にも、アニメーション開始からのミリ秒単位での指定や、1秒を何枚かのフレームとして計算した際のフレーム番号で指定する方法などがある。また、画面サイズの情報と画像を出力する時間の情報は別々にすることもできる。
【0053】
出力画像保存部113には、CPU10によってプログラム情報記憶部111におけるプログラムを実行した実行結果、すなわち出力画像が格納される。実行結果は画像データとして格納され、表示装置によって表示されたり、別のプログラムやコンピュータに利用されたりする。
【0054】
図10は、図4でのプログラム情報記憶部111における画像出力の手順を示す図である。
【0055】
図10において、最初のステップS100で画像出力情報記憶部が読み込まれ、これによってキーフレーム情報のどの時点での画像を出力するかを判断する。また画面のサイズに関する情報は後で表示パラメータの調整に利用される。次にステップS101にて次の画像出力時間を変数tに設定する。最初にステップS101が呼び出された場合は、画像出力情報記憶部において最初に指定された時刻がtとして設定される。ステップS102ではキーフレーム番号を格納するための変数iに初期値1を設定する。
【0056】
以降、i番目のキーフレームの予定経過時間をPiと呼ぶことにする。ステップS103にて、i+1番目のキーフレーム(i=1であれば2番目のキーフレーム)の予定経過時間が変数t以下であるか否かについて判断を行う。この条件が成立した場合はステップS104へ、成立しなかった場合はステップS107にそれぞれ進む。
【0057】
ステップS104に進んだ場合、変数iに1が加算される。さらにステップS105にて、加算後のiを用いてi+1が、当初予定されたキーフレームの数nよりも大きいか否かについての判断が行なわれる。この条件が成立しなければ制御はステップS103に進んで再度処理が続行される。もし条件が成立した場合は、すなわち出力時間tが最後のキーフレームの予定経過時間を過ぎたということであるので、この場合はステップS106において最後のキーフレームにおける画像を出力するようにtの値をPiに変更する。
【0058】
ステップS107では、描画すべきフレームの位置づけを示す値hが計算される。この値は、変数tすなわち出力すべき時刻において、現在のキーフレームから次のキーフレームへ進んだ割合を示しており、0以上1未満の小数として表現される。一般的には、
h=(t−Pi)/(Pi+1−Pi) …(数式1)
のように、時間tにおける現在のキーフレームから次のキーフレームへの比率として表現される。この値hを用いてキーフレームiにおける全ての図形に対して次の処理が行われる。まず、ステップS108にて中間フレームにおける各図形の各特徴値(パラメータ)が次のように計算される。i番目のキーフレームにおける全ての図形のパラメータをQiと表わし、i+1番目のキーフレームにおいて対応するパラメータをQi+1と表わす。この時、パラメータQiとパラメータQi+1に対応する中間パラメータをRとすると、Rは次のようにして計算される。
【0059】
R=Qi+h×(Qi+1−Qi) …(数式2)
この中間パラメータRを利用して各図形が描画されるが、これについては別図11を用いて後述する。キーフレームiにおける全ての図形に対してステップS108及びステップS109における描画が終了した時点で、画像の出力は完了する。この後、ステップS110にて画像出力情報記憶部に記憶された出力時間の画像を全て出力したかどうかが判断され、もし全ての画像を出力していなければステップS101に戻り再度出力処理を行う。全ての画像が出力された場合は処理を終了する。
【0060】
ステップS109における図形の描画における処理を図11で説明する。まず、ステップS200において図形がパラメータを調整する必要とするものかどうかが判断される。このパラメータを調整するかの情報はキーフレーム情報記憶部110内の各図形に対して収められており(図6を参照)、パラメータの調整が必要な場合、閉多角形や文字列、画像などの図形の全てを画面の中に収めることになる。もし図形が調整を必要とする場合、ステップS201に進み、必要としない場合はS209に進む。ステップS201では、調整を必要とする図形に対して、図形が少しでも画面の中に入るかが判断される。例えば図形が閉多角形であった場合、閉多角形を構成する各座標が画面内に入っているか、また座標間を結ぶ線分が画面内に入っているかどうかをもとに、図形が画面内にあるかを判断する。もし図形が全く画面に入らない場合は、図形を描画する必要がないため、当該図形における描画は終了する。図形が少しでも画面内に入ると判断した場合はステップS202に進む。
【0061】
ステップS202では、図形の種類が判断される。今回の実施例においては、図形が文字列であった場合とそれ以外であった場合を判断する。図形が文字列の場合はステップS203へ、文字列でない場合はステップS205に進む。ステップS203では、文字列が画面内に全て入りきるかを判断するために、文字列の1行あたりの最大文字数および文字の大きさを掛け合わせた値(これを文字列の横幅と呼ぶ)と画面の横幅とを、また文字列の行数および文字の大きさを掛け合わせた値(これを文字列の縦幅と呼ぶ)と画面の縦幅とを比較する。例えば、ある文字列図形における文字の大きさが1であり、文字列の1行あたりの最大文字数が12文字で、文字列の行数を2とした場合、文字列の横幅は12となり、文字列の縦幅は2となる。文字列の横幅が画面の横幅を上回った場合、もしくは文字列の縦幅が画面の縦幅を上回った場合は、どのような位置に文字列を配置しても図形を画面内に収めることができないため、ステップS204にて文字の大きさを小さくする必要がある。そうでない場合はステップS207に進む。ステップS204では、画面内に文字列を全て表示させるため文字の大きさを変更する。具体的には、文字一つの大きさをS、文字列の横幅をWs、文字列の縦幅をHsとし、画面の横幅をW、文字列の縦幅をHとした場合、画面の幅及び高さを縦横の文字数で割った数値よりも文字の大きさが小さくなれば良い。すなわち、文字の大きさは、横幅においてはW÷(Ws÷S)以下に、縦幅においてはH÷(Hs÷S)以下にすれば良いことになる。なお、ステップS203およびS204においては、文字と文字の間、および行と行の間に空間が無いものとしたが、文字と文字の間や行と行の間に空間がある場合は、その空間の大きさも加味して大きさの判断と変更を行う必要がある。
【0062】
ステップS205では、文字列以外の図形に対して、図形が画面に全て収まりきるかが判断される。このステップでの判断方法として、図形の横幅および縦幅が画面サイズを上回っているかどうかで判断する方法がある。具体的には、図形が閉多角形であった場合、閉多角形の各座標において、最も右にある点の水平座標(X座標)をXM、最も左にある点の水平座標をXmとした時、XM−Xmが図形の横幅となるため、この値が画面の幅よりも大きければ図形は画面内に収まりきらず、逆に画面の横幅が大きい場合は図形の大きさを変更しなくても画面内に収めることができる。縦幅においても同様で、最も下にある点の垂直座標(Y座標)をYM、最も上にある点の垂直座標をYmとした時、YM−Ymが画面の縦幅よりも小さくなった場合に図形を画面内に収めることができる。図形の横幅あるいは縦幅が画面サイズを上回る場合はステップS206へ、そうでない場合はステップS207へ進む。
【0063】
ステップS206では、図形が画面内に入りきるように図形の大きさが縮小される。先ほど求めた図形の横幅XM−Xmが、画面の横幅以下になればよいため、画面の横幅をWとすると、図形は横方向に、
W/(XM−Xm) …(数式3)
倍以下の比率で縮小すれば良いことになる。この大きさに画像を縮小するためには、閉曲線を構成する全ての座標点のX座標を上記の倍率で掛ければ良い。縦方向についても同様で、画面の縦幅をHとした場合、縮小すべき比率は、
H/(YM−Ym) …(数式4)
の倍率以下の値となる。もし元の図形と縮小した図形とで縦横の比率を合わせておきたい場合は、上記数式3および数式4の値のうち小さい方の値を用いて横幅と縦幅を縮小すれば良い。
【0064】
ステップS204またはS206において図形の大きさが変更された後、次のステップS207において図形の位置情報から図形が画面内に入りきるかが判断される。具体的には、図形が閉多角形であった場合は先ほどのXの最大値および最小値XM、Xmが画面の中に収まる位置であるか、またYの最大および最小値YM、Ymが画面内に入るかどうかで判断できる。図形が文字列であった場合は文字列の左上にあたる座標と右下にあたる座標が画面内に入っているかで判断することができる。もし全て画面内に入る場合はステップS209に、収まらない場合はステップS208に進む。
【0065】
ステップS208における処理は、図形が画面内に入るように図形の位置パラメータを修正する処理である。もし、図形における座標の最大値XMが、画面の右端を意味するX座標XVMを上回った場合、図形全体を左に(XVM−XM)だけ移動することによって図形を画面内に移動させることができる。この図形の移動と、ステップS204およびステップS206における図形の大きさの変更処理によって、必要な図形を画面内に収めることが可能となる。最後に、ステップS209において調整されたパラメータ、または全く調整を行う必要のなかったパラメータを用いて図形が描画され、図形の描画処理は終了する。
【0066】
この実施例を用いて実際に画像が生成される過程を例示して説明する。
図12は、キーフレーム情報の具体例を示す図である。
【0067】
まずキーフレーム情報として図12に示す情報が格納されているとする。すなわち、第1のキーフレームと第2のキーフレームのそれぞれに1つずつ文字列の図形情報が格納されている。また、それぞれの図形における文字列の内容は「左下にスクロールする文字数の多い文字列。」となっている。第1のキーフレーム50では、文字列の座標が(12,1)であり、第2のキーフレーム51では、座標が(−20,13)となっている。また、文字の大きさを示すポイント数は第1のキーフレーム、第2のキーフレームの両方で1であるとする。この数字は、文字一つあたりの大きさを示すものである。さらに、両方の図形ともに図形を画面内に収めるようパラメータを調整する必要がある、という情報が格納されている。
【0068】
図13は、この2つのキーフレーム情報を実際に表示される画面に対応させた図である。この図では文字列が左下にスクロールするアニメーションが示されている。
【0069】
今回の例において、画像出力情報記憶部には図9に示す内容の情報が格納されているとする。すなわち図9において、アニメーション出力における画像のサイズは横幅が10、縦幅が15、またアニメーションが開始してから1.0秒後と16.0秒後、および40.0秒後の画像を出力することが指定されている。
【0070】
図12と図9での例において、画像が出力される過程を図10のフローチャートを用いて説明する。最初にステップS100で画像出力情報記憶部が読み込まれ、画像サイズが横10、縦15であることと、各々の画像の時間とが読み込まれる。S101で次の出力時間、つまりtが1.0秒に設定される。次に、ステップS102にてキーフレーム番号iに1が代入される。今回の例において、第1のキーフレームの予定経過時間は0秒、第2のキーフレームの予定経過時間は32秒であるから、P1は0秒、P2は32秒となる。ステップS103にて、P2とtが比較されるが、P2はtよりも大きいため、ステップS107に処理が移り、描画すべきフレームの位置づけを示すhが計算される。この場合ではi=1で、Pi=0、Pi+1=32であるから、数式1よりh=0.03125となる。このhをもとに各図形が描画される。ステップS108において、中間フレームの文字列の座標が計算される。すなわち、数式2を用いることによって座標が(11,1.375)となる。ひき続き図11のステップS200にて、この図形はパラメータの調整が必要である図形であると判断されるが、ステップS201で、この図形が全て画面の外にあると判断される。これは、文字列の左上の座標が(11,1.375)であり画面内ではないためである。したがって図形の描画は行われない。
【0071】
図11のフローの処理が終了した後、図10のステップS110にて全ての画像が出力されたかどうかが確認されるが、まだ出力すべき画像が残っているため、再度ステップS101より処理が継続される。最初の画像の出力における手順と同様、ステップS101及びS102にてt=16.0、i=1が代入され、ステップS103にてPi+1がtよりも小さいため、ステップS107で数式1からh=0.5を計算し、ステップS108に処理が移る。ステップS108にて文字列の座標が(−4,7)と計算され、図11のフローに移る。図11のステップS200でこの図形はパラメータを調整すべき図形であり、かつステップS201で画面内にあると判断される。これは、文字列の開始する座標が(−4,7)であるが、文字列の長さが20文字であるため、途中の文字が画面内に入るためである。続けて、ステップS202で図形の種類が文字列であると判断されステップS203に進む。ステップS203にて、1行あたりの文字数20および文字の大きさ1をかけて文字列の横幅とした値と画面の横幅とが比較されるが、この場合文字列の幅の数値20が画面の横幅の数値10よりも上回るため、ステップS204にて図形が画面内に収まるように大きさが調整される。今回の例では、画面の幅が10で文字幅が20、文字の大きさが1であるから、文字の大きさ(ポイント)は10÷(20÷1)=0.5以下の値に変更すれば良いことになる。ひき続きステップS207にて、図形の端となる位置が画面内にあるかが判断されるが、今回の例では文字列の左上の座標が(−4,7)であり画面の外となるため、この図形は位置を画面内に移動させる必要がある。したがってS208にて、画面外となる画像の水平座標(X座標)の数値−4を0に変更することで図形を移動させる。最後にステップS209において文字列図形を描画し、図11の処理を終了する。
【0072】
1枚目、2枚目の画像と同様に、3枚目の画像についてもステップS101から順に処理される。ステップS101及びS102において、t=40.0、i=1が代入される。ステップS103でPi+1とtとが比較されるが、この場合tはPi+1以上となるため、処理はステップS104に移る。ステップS104においてiが1加算されるが、ステップS105でi+1=3がキーフレーム数2よりも大きくなるため、ステップS106においてtにPi=32.0、つまりアニメーションの最終状態の時刻が代入される。ステップS107ではh=0.0と計算され、ステップS108で文字列の座標が(−20,13)と計算される。この図形はパラメータの調整を必要とする図形であるので(ステップS200)ステップS201に処理が移るが、この時間では図形は画面の中に全く入らない。これは、最も右側となる位置の水平座標(X座標)が−20+20=0となり、画面内に入らないと判断されるためである。したがって、この図形は何も描画されない。最後の画面が出力された後で、ステップS110において全ての画像が出力されたと判断し、画像出力処理を終了する。
【0073】
図14は、以上の処理によって出力される画像の例を示す図である。
図14(a)は1枚目の、図14(c)は3枚目の出力画像であるが、これらの画像において、文字列は全て画面外に存在するため何も描画されない。図14(b)は2枚目として出力された画像であるが、ステップS204にて文字列の大きさが変更され、ステップS208にて文字列の位置を変更することで、文字列が画面内に入るように描画された出力画像となっている。
【0074】
なお、先の例においては、文字列の大きさを変更する方法として、ステップS204において文字の大きさを変更する方法を用いたが、別の方法として、文字列の途中の改行位置を変更する方法を用いることができる。この場合は、文字列の一行あたりの文字数が、画面の幅÷文字のポイント数(大きさ)よりも小さくなるように、文字列の改行位置を調整すれば良い。今回の例では、文字列の一行あたりの文字数の最大値を、画面の幅の値10を文字の大きさの値1で割った数値10と同じかそれ以下にすれば良いことになるため、「左下にスクロールする」と「文字数の多い文字列。」の間に改行を加えることで、文字列の横幅が10となり画面の幅と同じとなる。したがってこの方法でも文字列図形を画面内に収めることができる(図14(d))。
【0075】
また、ステップS200において、図形がパラメータを調整するかどうかを判断したが、このステップは必ずしも必要ではなく、どのような図形においてもパラメータを調整させることも可能である。このような場合、図形情報にパラメータ調整が必要かどうかの情報を格納する必要が無くなる。また、図11におけるフローでは、最初に実行されるステップがS201となるが、残りの処理は同じである。
【0076】
[実施の形態2]
図15は、本発明の第2の実施の形態におけるコンピュータの構成を示す図であり、図4に対応する図である。
【0077】
図15において、符号10は、図4におけるCPUと同じである。符号11’はメモリであるが、図4のメモリと違い、キーフレーム情報記憶部112の代わりに図形情報記憶部114とアニメーション命令記憶部115とを備えている点で異なっている。
【0078】
図16は、図形情報記憶部114の構成例を示す図である。
図形情報記憶部114には、アニメーションを構成する各々の図形に関する情報が格納されている。図16の例では図形60に関する情報のみが格納されているが、これは一例であり、実際のアニメーションにおいては複数の図形に関する情報がこの図形情報記憶部114に格納される。各々の図形における情報は図6に示した図形情報とほぼ同じであるが、文字列の位置など、図形の位置を示すパラメータは、次に説明するアニメーション命令によって指定されるためここでは記述されない。
【0079】
図17は、アニメーション命令記憶部115の構成例を示す図である。
アニメーション命令情報記憶部115には、図形情報記憶部114に格納されている図形に対するアニメーション命令70、71、72、73が、命令の開始する時刻順に格納されている。なお、実際のアニメーションにおけるアニメーション命令とは、図形に対する表示や、移動、拡大・縮小、変形を行うなどの命令が指定されたものであり、それぞれの命令は開始時刻、命令の種類、対象となる図形、及びそれぞれの命令に付随するパラメータによって構成されている。図17の例では、アニメーション命令70において、時刻が0.0秒となった時に、図形1を位置(1,1)に表示する命令が記述されている。また、アニメーション命令71では、同じく時刻が0.0秒となった時に、図形1の縮尺を1.0秒後に2.0倍に変更する命令が記述されている。今回の例において、複数の命令の開始時刻が同時に指定された場合、先に指定された命令を優先して実行するものとする。なお、この図16及び図17における例を図示したものは図7となる。
【0080】
図18は、図15でのプログラム情報記憶部111’における画像出力の手順を示す図である。
【0081】
まずステップS300において、画像出力情報記憶部が読み込まれ、ステップS301において次の出力時間を得る。これらの処理は図10におけるステップS100及びステップS101における処理と同じである。次に、図形情報記憶部114における全ての図形に対して、まずステップS302で変数iに1がセットされる。この変数iは命令番号を参照するための値である。続いてステップS303にて、命令iが現在処理している図形を対象としているかどうかが判断される。もし対象となる図形なのであればステップS304へ、そうでない場合はステップS306に進む。ステップS304では、出力時間tが命令iで指定された開始時刻を過ぎているかが判断される。もし開始時刻を過ぎている場合は、命令が既に実行されているとみなされるため、ステップS305に進み、命令iに対応するパラメータを変更する。具体的には、命令iが表示命令の場合は図形が表示されているという状態をオンにする、命令iが移動命令の場合は、移動時間をu、命令が実行される前の図形の座標を(Xs,Ys)、移動目標の座標を(Xd,Yd)とした場合、もし出力時間tが命令iの開始時間s+移動時間uを超えない場合は、座標を、
に変更する、などの処理が実行される。これらのパラメータ変更処理については従来技術となるため、ここでは詳細を説明しない。出力時間tが命令iの開始時刻を過ぎていない場合はステップS306に進む。
【0082】
ステップS306では次の命令を処理するため変数iに1が加算される。次にステップS307において、変数iが命令の総数(ここではnとする)を上回っていないかが判断される。もし上回っていない場合は、ステップS303に戻って次の命令を処理する。変数iが命令総数nを上回る場合、すなわち全ての命令を処理した場合はステップS308に進む。ステップS308において、出力時間tにおける図形が出力されるが、ここでの処理は図11におけるフローと同じである。最後にステップS309にて全ての画像が出力したかが判断される。この処理は図10におけるステップS110と同じである。
【0083】
この実施例を用いて実際に画像が生成される過程を以下の例で説明する。
図19は、図形情報記憶部114とアニメーション命令記憶部115に記録されている情報を示す図である。
【0084】
図形情報記憶部114には文字列図形に関する情報80が1つ格納されており、その内容は「左下にスクロールする文字数の多い文字列。」となっている。また、文字の大きさを示すポイント数は1であり、図形を画面内に収めるようパラメータを調整する必要があることが指定されている。次に、アニメーション命令記憶部115には2つのアニメーション命令90及び91が格納されている。最初のアニメーション命令90には、時刻0.0秒において、図形1を位置(12,1)に表示することが記述されている。二つ目のアニメーション命令91には、同じく時刻0.0秒において、図形1を32.0秒後に(−20,13)に移動することが記述されている。以上によって示された図形情報80及びアニメーション命令90、91を実際に表示される画面に対応させたものは、先に示した実施の形態1における図13と同じものとなる。つまり、この図13では文字列が左下にスクロールするアニメーションが示されている。実施の形態1の場合と同様に、画像出力情報記憶部には図9に示す内容の情報が格納されているものとする。すなわち図9において、アニメーション出力における画像のサイズは横幅が10、縦幅が15、またアニメーションが開始してから1.0秒後と16.0秒後、および40.0秒後の画像を出力することが指定されている。
【0085】
図19と図9での例において、画像が出力される過程を図18のフローチャートを用いて説明する。最初にステップS300で画像出力情報記憶部が読み込まれ、画像サイズが横10、縦15であることと、各々の画像の時間が読み込まれる。S301で次の出力時間、つまりtが1.0秒に設定される。今回の例では図形が1つであるので、ステップS302からステップS308までの処理は、各出力図形に対して1度しか行なわれない。次に、ステップS302にて命令番号iに1が代入される。次にステップS303において、命令1が図形1を対象としているかが判断されるが、この命令は図形1を対象とした命令であるためステップS304に進む。次に、出力時間tが命令1の開始時刻を過ぎているかが判断されるが、命令1の開始時刻は0.0秒であるため開始時刻を過ぎている。よってステップS305に進み、命令1、すなわち表示命令が実行され、図形1は(12,1)に表示された状態となる。続けてステップS306にて命令番号に1が加算され、ステップS307にて命令番号と命令総数(今回の例の場合は2)とが比較されるが、まだ全ての命令を処理していないため、ステップS303に戻る。同じく命令2においても、図形1を対象としているか(ステップS303)、開始時刻を過ぎているか(ステップS304)が判断されるが、いずれにも適合するため、ステップS305において命令2、すなわち図形の移動命令が時間tまで実行される。この場合、時間tは1.0秒であり、命令2では図形が32.0秒後に(−20,13)に移動することが指定されているため、1.0秒後の図形の位置は数式5より(11,1.375)と計算される。ステップS306において命令番号iに1が加算され、ステップS307において命令総数と比較されるが、今回の場合は命令番号が命令総数を上回るため、ステップS308において図形が出力される。ステップS308における図形の出力における処理は実施の形態1と同じであり、図形の座標も実施の形態1と同じとなるため、図形は描画されない。
【0086】
図11のフローの処理が終了した後、図18のステップS309にて全ての画像が出力されたかどうかが確認されるが、まだ出力すべき画像が残っているため、再度ステップS301より処理が継続される。2枚目、3枚目の画像においても大半の処理は先に示した処理と同じである。異なる点は、出力時間tが異なるため、命令2におけるステップS305において、計算される座標の値が異なる点だけである。出力時間tが16.0である場合の図形の位置は、1枚目の場合と同様に数式5より(−4,7)となる。また、出力時間tが40.0である場合の図形の位置は、出力時間tが命令2の開始時間に図形の移動にかかる時間を足した値32.0秒を上回っているため、移動命令が終了した後の座標(−20,13)となる。これらの図形に対しても同様に図11で図形の描画処理が行われるが、処理される文字列に関するパラメータは実施の形態1と同じであるので詳細は省略する。したがって、この例においても実施の形態1と同様、図14における出力が期待できる。つまり、1つ目と3つ目の出力時間においては図形が描画されない(図14(a)、図14(c))が、2つ目の出力時間における画像は、大きさ及び位置が調整されたものとなる(図14(b))。
【0087】
なお、上述の実施の形態における処理は、時間に応じて文字、画像、図形などのコンテンツに変化を与える処理であればそれをアニメーションと呼ぶか否かに拘わらず適用可能である。
【0088】
【発明の効果】
本発明によって、ある時点での中間フレーム画像を出力する画像出力方法で、図形情報の一部のパラメータ、例えば図形の大きさや文字列の内容、及び図形の位置を調整することにより、静止画の出力において、元のコンテンツの内容を損なわず、かつ少ない枚数で画像を出力することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態におけるコンテンツ出力システムの構成を示す図である。
【図2】サーバコンピュータ1aまたはクライアントコンピュータ1bの具体的なハードウェア構成を示す図である。
【図3】図1の携帯電話300の構成を示すブロック図である。
【図4】本発明の実施の形態1におけるコンピュータのブロック図である。
【図5】キーフレーム情報を模式的に示す図である。
【図6】キーフレーム情報の一例を示した図である。
【図7】キーフレーム情報の一例をもとにしたアニメーションを示した図である。
【図8】図形情報が座標情報以外のデータを格納している場合の例を示した図である。
【図9】画像出力情報の一例を示した図である。
【図10】実施の形態1でのアニメーション画像出力方法を実現するためのフローチャートである。
【図11】図10における図形の描画処理(S109)を示すフローチャートである。
【図12】キーフレーム情報の一例を示した図である。
【図13】キーフレーム補完方式のアニメーションの一例を示した図である。
【図14】本発明によって出力される画像の一例を示した図である。
【図15】本発明の実施の形態2におけるコンピュータのブロック図である。
【図16】図形情報の一例を示した図である。
【図17】アニメーション命令の一例を示した図である。
【図18】実施の形態2でのアニメーション画像出力方法を実現するためのフローチャートである。
【図19】図形情報およびアニメーション命令の一例を示した図である。
【図20】従来のキーフレーム補完方式のアニメーションの原理を模式的に示す図である。
【図21】従来技術によるアニメーション画像出力方式の問題点を示すための図である。
【符号の説明】
1 コンピュータ、10 CPU、11、11’ メモリ、110 キーフレーム情報記憶部、111,111’ プログラム情報記憶部、112 画像出力情報記憶部、113 出力画像記憶部、114 図形情報記憶部、115 アニメーション命令記憶部、20,21,22,50,51 キーフレーム情報、200,210,220,500,510 キーフレームの予定経過時間、201,203,211,213,215,221,223,501,511 キーフレームの図形情報、202,204,212,214,216,222,224,502,512 キーフレームの図形情報が指すポインタ、231,232,233,234,60,80 図形情報、30,31,32,33,34,35図形、36,420,421,422 出力画像、40,41,52,53,53’、54 キーフレーム情報、70,71,72,73,90,91 アニメーション命令。
Claims (12)
- コンテンツを出力する方法であって、
表示時刻を特定するための情報と、当該表示時刻に表示フレーム内に表示されるべきコンテンツの特徴を特定するためのコンテンツ情報とを含む、複数のキーフレーム情報をメモリ内に準備するステップと、
画像出力のための時刻を指定するステップと、
複数のキーフレーム情報のうち、指定された時刻の前後の表示時刻をそれぞれ有する少なくとも2つのキーフレーム情報を選択するステップと、
前記少なくとも2つのキーフレーム情報にそれぞれ含まれた対応のコンテンツ情報の間で所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、
所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、
調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む、画像出力方法。 - コンテンツを出力する方法であって、
コンテンツの変化開始時刻を特定するための情報と、表示フレーム内に表示されるべきコンテンツのその時刻からの変化を特定するための情報とを含む、1ないし複数のアニメーション命令をメモリ内に準備するステップと、
画像出力のための時刻を指定するステップと、
1ないし複数のアニメーション命令のうち、指定された時刻の前の変化開始時刻を有するアニメーション命令を選択するステップと、
指定された時刻の前の変化開始時刻を有するアニメーション命令に基づいて、所定の補完計算を行うことにより、当該指定された時刻において表示されるべきコンテンツ情報を作成するステップと、
所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整するステップと、
調整されたコンテンツ情報に基づいて、当該指定された時刻における画像を出力するステップとを含む、画像出力方法。 - 作成されたコンテンツ情報でコンテンツが画面内に全て表示されるかを判断するステップをさらに備え、
画面内にコンテンツの全てが表示されない場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する、請求項1または2に記載の画像出力方法。 - 画面内にコンテンツが収まるようにコンテンツ情報を調整する必要があるかを判断するステップをさらに備え、
前記コンテンツ情報を調整するステップは、コンテンツ情報を調整する必要がある場合に、所定の方法により画面内にコンテンツが描画できるようコンテンツ情報を調整する、請求項1〜3に記載の画像出力方法。 - コンテンツ情報を調整する必要があるかを判断するための情報が、コンテンツ情報に含まれていることを特徴とする、請求項4に記載の画像出力方法。
- コンテンツ情報を調整する必要があるかを判断するための情報を、コンテンツ情報とは別のメモリ内に準備するステップを有する、請求項4に記載の画像出力方法。
- コンテンツ情報を調整する所定の方法が、コンテンツの大きさを変更する方法である、請求項1〜6のいずれかに記載の画像出力方法。
- コンテンツ情報を調整する所定の方法が、コンテンツを変形する方法である、請求項1〜6のいずれかに記載の画像出力方法。
- コンテンツの種類が文字列である場合に、コンテンツ情報を調整する所定の方法が、文字列の改行位置を変更する方法である、請求項1〜6のいずれかに記載の画像出力方法。
- 請求項1〜9のいずれかに記載の画像出力方法を実施する、画像出力装置。
- 請求項1〜9のいずれかに記載の画像出力方法をコンピュータに実行させる、画像出力プログラム。
- 請求項11に記載の画像出力プログラムを記録した、コンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002318285A JP2004152132A (ja) | 2002-10-31 | 2002-10-31 | 画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002318285A JP2004152132A (ja) | 2002-10-31 | 2002-10-31 | 画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004152132A true JP2004152132A (ja) | 2004-05-27 |
Family
ID=32461451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002318285A Pending JP2004152132A (ja) | 2002-10-31 | 2002-10-31 | 画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004152132A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669623A (zh) * | 2020-06-28 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 视频特效的处理方法、装置以及电子设备 |
-
2002
- 2002-10-31 JP JP2002318285A patent/JP2004152132A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669623A (zh) * | 2020-06-28 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 视频特效的处理方法、装置以及电子设备 |
CN111669623B (zh) * | 2020-06-28 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 视频特效的处理方法、装置以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7737978B2 (en) | Display, displaying method, information recording medium, and program | |
JP3507176B2 (ja) | マルチメディアシステム動的連動方式 | |
US20090262139A1 (en) | Video image display device and video image display method | |
JP4462819B2 (ja) | 情報処理装置および方法、記録媒体、並びにプログラム | |
JP2012027705A (ja) | 画像処理装置、画像表示装置、画像処理方法、および画像ファイルのデータ構造 | |
JP4796530B2 (ja) | マンガの表示方法およびマンガを表示する電子機器 | |
JP4606692B2 (ja) | 情報処理装置および方法、記録媒体、並びにプログラム | |
JP2010035978A (ja) | ゲームプログラムおよびゲーム装置 | |
JP3616241B2 (ja) | アニメーション表示方法、及びアニメーション表示プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP4827659B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
JP2004355235A (ja) | マンガの表示方法およびマンガを表示する電子機器 | |
JP2004152132A (ja) | 画像出力方法、画像出力装置、画像出力プログラムおよびコンピュータ読取可能な記録媒体 | |
JP5292146B2 (ja) | 情報処理装置および情報処理方法 | |
JP5432933B2 (ja) | マンガを表示する方法、プログラム、および電子機器 | |
JP4815410B2 (ja) | 表示装置、表示方法、ならびに、プログラム | |
JP4637199B2 (ja) | 画像処理装置、画像処理方法、ならびに、プログラム | |
JP5292147B2 (ja) | 情報処理装置および情報処理方法 | |
JP4603902B2 (ja) | 3dグラフィック表示システムおよび表示装置並びに電子メッセージ転送システムおよび表示装置 | |
JP2000148126A (ja) | 画像表示装置及び方法 | |
JP2004021149A (ja) | 画像処理装置及び画像処理方法 | |
JP4166207B2 (ja) | アニメーション再生装置及びアニメーション再生プログラム | |
JP2007148822A (ja) | 情報処理装置、プログラムおよび記録媒体 | |
JP2024118633A (ja) | 画像処理装置、画像処理プログラム、及び、画像処理方法 | |
JPH1139123A (ja) | 情報表示装置および情報表示プログラムを記録した記録媒体 | |
JPH117539A (ja) | アニメーション作成装置およびアニメーション作成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080527 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081007 |