(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について説明する。
【0012】
(実施の形態1)
(1.1)ベクターデータ変換出力装置の構成
図1は本発明の実施の形態1に係るベクターデータ変換出力装置の構成を示すブロック図である。本発明の実施の形態1におけるベクターデータ変換出力装置10は、
図1に示すように、ベクターデータ取得部101と、線分メモリ102と、接続探索部103と、閉空間判定制御部104と、閉空間メモリ105と、ベクターデータ出力部106とを備える。
【0013】
ベクターデータ取得部101は、好ましくはウェブサイト等からSWF形式のベクターデータを取得する。なお、取得元はウェブサイトに限らず、ベクターデータ変換出力装置10が備えるハードディスク(不図示)に格納されたSWF形式のベクターデータを取得してもよい。なお「SWF形式」とは、複数の線分データから構成されるフォーマットであり、かつ、各線分データが、始点、終点及び線分の左右のフィルスタイルを定める形式をいう。したがって、SWF形式はSWFフォーマットのベクターデータを含み、かつSWFフォーマットと同様のベクターデータフォーマットを全て含む。
【0014】
線分メモリ102には、ベクターデータ取得部101が取得したSWF形式のベクターデータにおける線分データを、線分データに係るフィルスタイルで分類し、線分リストとして格納される。線分リストは、線分における2つの端点の座標と、フィルスタイルの値を格納する。
【0015】
接続探索部103は、線分メモリ102に格納された線分リストについて、各線分同士の接続関係を探索する。接続関係の探索は、各線分の端点の座標を比較することにより行う。
【0016】
閉空間判定制御部104は、接続探索部103により接続探索された線分の組合せが、フィルスタイルと共に閉空間を形成するかを判定する。
【0017】
閉空間メモリ105には、閉空間判定制御部104が閉空間を形成すると判定した線分データの組合せが、閉空間リストとして格納される。
【0018】
ベクターデータ出力部106は、閉空間メモリ105に格納された閉空間リストに基づきベクターデータを出力する。
【0019】
ここで、ベクターデータ変換出力装置10として機能させるために、コンピュータを好適に用いることができ、そのようなコンピュータは、ベクターデータ変換出力装置10の各機能を実現する処理内容を記述したプログラムを、当該コンピュータの記憶部に格納しておき、当該コンピュータの中央演算処理装置(CPU)によってこのプログラムを読み出して実行させることで実現することができる。
【0020】
(1.2)ベクターデータ変換出力装置10の動作
図2は、ベクターデータ変換出力装置10がSWFベクターデータを取得し、ベクターデータを出力する動作を示すフローチャートである。以下、代表的なSWFベクターデータを出力する場合を例に説明する。
【0021】
(1.2.1)
図3のSWFベクターデータに係るベクターデータ変換出力装置10の出力動作
まず、ベクターデータ変換出力装置10が、
図3に示すSWFベクターデータ201を取得し、変換後のベクターデータを出力する例を示す。
【0022】
はじめにベクターデータ取得部101は、好ましくはウェブサイト等から
図3に係るSWF形式のベクターデータを取得する(ステップS11)。SWF形式のベクターデータは、
図3に示すように、各線分について線分の始点の座標(x座標とy座標)と、線分の終点の座標と、線分の第1のフィルスタイル(線分の右側のフィルスタイル)と、線分の第2のフィルスタイル(線分の左側のフィルスタイル)により構成されている。
【0023】
なお、フィルスタイル“1”は所定のパターンで空間を塗りつぶし、フィルスタイル“2”は、それとは異なる所定のパターンで空間を塗りつぶし、フィルスタイル“0”は、空間を塗りつぶさないことを意味する。
【0024】
なお、ベクターデータ取得部101がベクターデータを取得する取得元はウェブサイトに限らず、ベクターデータ変換出力装置10が備える記憶部等(不図示)に格納されたSWF形式のベクターデータを取得してもよい。
【0025】
次に、ベクターデータ変換出力装置10は、取得したSWF形式のベクターデータにおける線分データを、線分データに係るフィルスタイルで分類し、フィルスタイル毎に線分メモリ102に格納する(ステップS12)。
【0026】
図4に、線分メモリ102に格納された線分データを示す。線分データは好ましくは、フィルスタイル毎に分類された線分リストとして格納される。
図4では、フィルスタイルが“1”に係る線分リスト202と、フィルスタイルが“2”に係る線分リスト203が格納されている。線分リスト202、及び線分リスト203には、それぞれ、線分に係る情報として、線分番号と、線分に係る2つの端点と、フィルスタイルと、確定済みフラグとが格納される。第1の端点と第2の端点は、本事例においては第1の端点としてSWF形式の線分データの始点、第2の端点としてSWF形式の線分データの終点を格納するものとして説明するが、第1の端点としてSWF形式の線分データの終点、第2の端点としてSWF形式の線分データの始点が格納されていてもよい。確定済みフラグには、当該線分が閉空間を形成する線分として確定した場合に、“確定”が格納され、確定していない場合には“未”が格納される。当該フラグは接続の探索に用いる。なお、
図4では、線分メモリ102には第1のフィルスタイルまたは第2のフィルスタイルのいずれか一方が“0”以外である線分データのみが含まれている場合について説明しているが、線分メモリ102には、第1のフィルスタイル及び第2のフィルスタイルの双方が“0”以外である線分データが含まれている場合もある。例えば、第1のフィルスタイルが“1”、第2のフィルスタイルが“2”である線分データが含まれる場合、この線分データは、
図4における線分リスト202と線分リスト203との双方にそれぞれ格納される。また、例えば、第1のフィルスタイル及び第2のフィルスタイルの双方が“1”である線分データが含まれる場合、この線分データは、
図4における線分リスト202に、2データ分として格納される。すなわち、「当該線分の線分番号、2つの端点、フィルスタイル(“1”)、確定済フラグ」を有するエントリが、線分リスト202に2つ作成される。
【0027】
続いて接続探索部103は、夫々の線分リストにおいて、各線分同士の接続を探索し、ある図形(閉空間を形成する図形、及び形成しない図形を含む。)を構成する線分(以下、要素線分という。)を抽出する(ステップS13)。具体的には接続探索部103は、線分リストにおける、ある線分の端点の座標と、当該線分リストに含まれるその他の線分の端点の座標を比較し、同一の座標であれば当該端点においてある線分と他の線分とは接続していると判定する。このときの同一の座標を接続点という。接続探索部103は、接続探索をしている線分が、当該探索処理において過去抽出してきた線分の端点のいずれかと一致した場合に、当該線分についての接続探索を終了する。
【0028】
図4に示す線分リスト202及び線分リスト203について接続探索部103が接続関係を判定する動作を説明する。まず接続探索部103は、線分リストの中で、確定済みフラグが“未”のうちで一番上に格納されている線分(線分番号が“1”の線分)を第1要素線分として選択し、第1要素線分の第1の端点の座標(1,0)について、他の線分との接続関係を探索する。接続関係の判定対象となる他の線分は、線分リスト202における、確定済みフラグが“未”の線分データである。座標の比較は、線分リスト202の上から順に行う。すると、当該座標と、線分番号“3”の第1の端点の座標(1,0)とが同一である。したがって接続探索部103は線分番号“1”と、線分番号“3”の線分が接続していると判定し、線分番号“3”の線分を第2要素線分として抽出する。以下、第1要素線分と第2要素線分との接続点(ここでは、座標(1,0))を、開始接続点という。なお、ある線分と他の線分との接続関係の探索においては、他の線分の第1の端点及び第2の端点の双方がある線分と他の線分との接続点の候補となり、以下の接続探索処理においても同様である。
【0029】
次に接続探索部103は、第2要素線分として抽出された、線分番号“3”の、もう一方の端点である第2の端点の座標(1,1)と同一の座標を探索する。ここで当該座標と、線分番号“7”の第1の端点の座標(1,1)とが同一である。したがって接続探索部103は線分番号“1”と、線分番号“7”の線分が接続していると判定し、線分番号“7”の線分を第3要素線分として抽出する。
【0030】
続いて接続探索部103は、第3要素線分として抽出された、線分番号“7”の、もう一方の端点である第2の端点の座標(0,1)と同一の座標を探索する。ここで当該座標と、線分番号“4”の第1の端点の座標(0,1)とが同一である。したがって接続探索部103は線分番号“7”と、線分番号“4”の線分が接続していると判定し、線分番号“4”の線分を第4要素線分として抽出する。
【0031】
続いて接続探索部103は、第4要素線分として抽出された、線分番号“4”の、もう一方の端点である第2の端点の座標(0,0)と同一の座標を探索する。ここで当該座標と、線分番号“1”の第2の端点の座標(0,0)とが同一である。したがって接続探索部103は線分番号“4”と、線分番号“1”の線分が接続していると判定する。接続探索部103は、接続関係の探索処理において過去抽出してきた要素線分の端点のいずれかと一致した場合、または、線分リストのいずれの端点とも一致しない場合に、当該線分についての接続探索を終了する。ここでは、第4要素線分(線分番号“4”)の第2の端点の座標が、過去に抽出された第1要素線分(線分番号“1”)の第2の端点の座標と同一であったため、接続探索部103は接続探索を終了する。
【0032】
接続探索部103が接続探索を終了した後に、閉空間判定制御部104が、当該接続探索された線分の組合せが、閉空間を形成するかを判定する(ステップS14)。閉空間判定制御部104は、接続探索部103が要素線分として判定をスタートした線分(第1要素線分)の端点のうち、開始接続点ではない方の端点で接続探索を終了した場合に、当該線分の組合せが閉空間を形成すると判定する。そうでない場合には、閉空間判定制御部104は、閉空間を形成しないと判定する。本事例においては、接続探索部103が判定をスタートした第1要素線分(線分番号“1”)における開始接続点が(1,0)である。そして、判定を終了した座標は線分番号“1”のもう一方の端点(0,0)である。したがって閉空間判定制御部104は、第1要素線分(線分番号“1”)、第2要素線分(線分番号“3”)、第3要素線分(線分番号“7”)及び第4要素線分(線分番号“4”)線分の組合せが、閉空間を形成すると判定し、ステップS15に進む。なお、閉空間判定制御部104は、当該線分の組合せが閉空間を形成しないと判定した場合には、ステップS17へ進む。
【0033】
続いて閉空間判定制御部104は、閉空間を形成すると判定した線分データの組合せを、閉空間メモリ105に格納する(ステップS15)。
【0034】
図5に、閉空間メモリ105に格納された閉空間リスト204を示す。閉空間リスト204は、閉空間の通し番号である“閉空間番号”と、“フィルスタイル”と、接続していると判定された線分番号を、接続順に格納する。具体的には、フィルスタイル“1”に係る閉空間として、線分番号“1”、“3”、“7”、“4”がこの順で接続されており、
図5に示すように格納される。このように、格納されるベクターデータは、Canvasや各種ドローソフト等における標準的なフォーマットと同一の形式であり、複数の連結した線分と、当該複数の連結した線分で閉じられる閉空間のフィルスタイルにより規定される。
【0035】
続いて閉空間判定制御部104は、当該閉空間に係る線分データについて、線分メモリ102に格納された線分リストにおける、確定済みフラグを“確定済”に更新する(ステップS16)。すなわち、線分番号“1”、“3”、“7”、“4”に係る確定済みフラグをすべて“確定済”に更新する。
【0036】
続いて接続探索部103は、線分メモリ102に格納された線分リストの確定済みフラグを参照し、確定済みフラグが全て“確定済”であるかを判定する(ステップS17)。確定済みでなければ、全てが確定済みになるまでステップS13からステップS17を繰り返す。本事例においては、線分リスト202については全て確定済みであるが、線分リスト203については確定済みでないため、ステップS13に進む。
【0037】
次に接続探索部103は、線分リスト203の線分について接続探索を行う(ステップS13)。接続探索部103は、線分リスト203のうち、確定済みフラグが“未”のうちで一番上に格納されている線分(線分番号“2”の線分)を第1要素線分として選択し、第1要素線分の第1の端点の座標(1,2)について、他の線分との接続関係を探索する。接続関係の判定対象となる線分は、線分リスト203における、確定済みフラグが“未”の線分データである。座標の比較は、線分リスト203の上から順に行う。すると、当該座標と、線分番号“5”の第2の端点の座標(1,2)とが同一である。したがって接続探索部103は線分番号“2”と、線分番号“5”の線分とが接続していると判定し、線分番号“5”の線分を第2要素線分として抽出する。
【0038】
次に接続探索部103は、第2要素線分として抽出された、線分番号“5”の、もう一方の端点である第1の端点の座標(1,4)と同一の座標を探索する。ここで当該座標と、線分番号“6”の第2の端点の座標(1,4)とが同一である。したがって接続探索部103は線分番号“5”と、線分番号“6”の線分が接続していると判定し、線分番号“6”の線分を第3要素線分として抽出する。
【0039】
続いて接続探索部103は、第3要素線分として抽出された、線分番号“6”の、もう一方の端点である第1の端点の座標(0,3)と同一の座標を探索する。ここで当該座標と、線分番号“2”の第2の端点の座標(0,3)が同一である。したがって接続探索部103は線分番号“6”と、線分番号“2”の線分は接続していると判定する。接続探索部103は、過去抽出してきた要素線分の端点のいずれかと一致した場合、または線分リストのいずれの端点とも一致しない場合に、当該線分についての探索を終了する。したがって、ここでは、第3要素線分(線分番号“6”)の第1の端点の座標が、過去に抽出された第1要素線分(線分番号“2”)の第2の端点の座標と同一であったため、接続探索部103は接続探索をここで終了する。
【0040】
続いて閉空間判定制御部104が、当該接続判定された線分の組合せが、閉空間を形成するかを判定する(ステップS14)。本事例においては、接続探索部103が判定をスタートした第1要素線分(線分番号“2”)における開始接続点が(1,2)である。そして、接続探索を終了した座標は線分番号“2”のもう一方の端点(0,3)である。したがって閉空間判定制御部104は、第1要素線分(線分番号“2”)、第2要素線分(線分番号“5”)及び第3要素線分(線分番号“6”)の組合せが、閉空間を形成すると判定し、ステップS15に進む。
【0041】
続いて閉空間判定制御部104は、閉空間を形成すると判定した線分データの組合せを、閉空間メモリ105に格納する(ステップS15)。具体的には、フィルスタイル“2”に係る閉空間として、線分番号“2”、“5”、“6”がこの順で接続されており、
図5に示す丙空間リスト204を更新し、閉空間リスト205のように閉空間メモリ105に新たな閉空間番号“2”として閉空間の情報が格納される。
【0042】
続いて閉空間判定制御部104は、当該閉空間に係る線分データについて、線分メモリ102に格納された線分リストにおける確定済みフラグを“確定済”に更新する(ステップS16)。すなわち、線分番号“2”、“5”、“6”に係る確定済みフラグをすべて“確定済”に更新する。
【0043】
続いて接続探索部103は、線分メモリ102に格納された線分リストの確定済みフラグを参照し、確定済みフラグが全て“確定済”であるかを判定する(ステップS17)。本事例では、全ての線分が確定済みであるため次のステップに進む。
【0044】
続いてベクターデータ出力部106は、閉空間メモリ105に基づきベクターデータを出力する(ステップS18)。閉空間メモリ105には、標準的なベクターデータフォーマットである、閉空間を形成する複数の線分のデータと、閉空間のフィルスタイルのデータが格納されているため、ベクターデータ出力部106は容易に当該データを出力できる。なおここでベクターデータの出力とは、ディスプレイを含む機器や受信部やメモリにベクターデータを送信することを意味する概念である。当該ベクターデータを受取った機器や受信部は、当該ベクターデータを容易に解釈し、ディスプレイ等に画像を表示することができる。
【0045】
当該ベクターデータによって構成される画像が、ディスプレイ等に出力される場合の表示例を
図6に示す。
図6は、線分番号“1”、“3”、“7”、“4”による閉空間と、線分番号“2”、“5”、“6”による閉空間が所定のフィルスタイルにより塗りつぶされ、表示されていることを示している。
【0046】
(1.2.2)
図7のSWFベクターデータに係るベクターデータ変換出力装置10の出力動作
次に、ベクターデータ変換出力装置10が、
図7に示すSWFベクターデータ211を取得し、変換後のベクターデータを出力する例を示す。
【0047】
はじめにベクターデータ取得部101は、
図7に示すSWF形式のベクターデータを取得する(ステップS11)。
【0048】
次に、ベクターデータ変換出力装置10は、取得したSWF形式のベクターデータに係る線分データを、フィルスタイルで分類し、フィルスタイル毎に線分メモリ102に格納する(ステップS12)。
【0049】
図8に、線分メモリ102に格納された線分リスト212を示す。本事例では、
図8に示すように、フィルスタイルが“1”に係る線分リスト212のみが線分メモリ102に格納される。
【0050】
続いて接続探索部103は、線分リスト212において、各線分同士の接続関係を探索する(ステップS13)。当該探索は、線分番号“1”(第1要素線分)の第1の端点(1,0)からスタートする。探索方法は
図4で示した手法と同様であるため説明は省略する。結果として、接続探索部103は、線分番号“1”、“2”、“3”、“4”がこの順番に接続されていると判定する。
【0051】
次に閉空間判定制御部104は、当該線分の組合せが、閉空間を形成するかを判定する(ステップS14)。本事例においては、接続探索部103が判定をスタートした第1要素線分(線分番号“1”)における開始接続点が(1,0)である。そして、判定を終了した座標は線分番号“1”のもう一方の端点(0,0)である。したがって閉空間判定制御部104は、線分番号“1”、“2”、“3”、“4”の組合せが、閉空間を形成すると判定し、ステップS15に進む。
【0052】
続いて閉空間判定制御部104は、閉空間を形成すると判定した線分データの組合せを、閉空間メモリ105に格納する(ステップS15)。具体的には、フィルスタイル“1”に係る閉空間として、線分番号“1”、“2”、“3”、“4”がこの順で接続されていることを、閉空間メモリ105に格納する。このようにして格納された閉空間リスト213を
図9に示す。
【0053】
続いて閉空間判定制御部104は、当該閉空間に係る線分データについて、線分メモリ102に格納された線分リストにおける確定済みフラグを“確定済”に更新する(ステップS16)。すなわち、線分番号“1”、“2”、“3”、“4”に係る確定済みフラグをすべて“確定済”に更新する。
【0054】
続いて接続探索部103は、線分メモリ102に格納された線分リストの確定済みフラグを参照し、確定済みフラグが全て“確定済”であるかを判定する(ステップS17)。本事例においては、未確定の線分があるため、ステップS13に進む。
【0055】
続いて、接続探索部103は、線分リスト212において、各線分同士の接続関係を探索する(ステップS13)。線分番号“1”から線分番号“4”の線分については確定済みフラグが“確定済”であるため、線分番号“5”を新たに第1要素線分として選択し、第1要素線分の第1の端点から(0.75,0.25)接続探索をスタートする。判定方法は
図4で示した手法と同様であるため説明は省略する。結果として、接続探索部103は、線分番号“5”、“6”、“7”、“8”がこの順番に接続されていると判定する。
【0056】
次に閉空間判定制御部104は、当該接続判定された線分の組合せが、閉空間を形成するかを判定する(ステップS14)。本事例においては、接続探索部103が判定をスタートした第1要素線分(線分番号“5”)における開始接続点が(0.75,0.25)。そして、判定を終了した座標は線分番号“5”のもう一方の端点(0.25,0.25)である。したがって閉空間判定制御部104は、線分番号“5”、“6”、“7”、“8”の組合せが、閉空間を形成すると判定し、ステップS15に進む。
【0057】
続いて閉空間判定制御部104は、閉空間を形成すると判定した線分データの組合せを、閉空間メモリ105に格納する(ステップS15)。具体的には、フィルスタイル“1”に係る閉空間として、線分番号“5”、“6”、“7”、“8”がこの順で接続されていることを、閉空間メモリ105に格納する。閉空間リスト213が更新されて、新たに閉空間の情報が格納された閉空間リスト214を
図9に示す。
【0058】
続いて閉空間判定制御部104は、当該閉空間に係る線分データについて、線分メモリ102に格納された線分リストにおける確定済みフラグを“確定済”に更新する(ステップS16)。すなわち、線分番号“5”、“6”、“7”、“8”に係る確定済みフラグをすべて“確定済”に更新する。
【0059】
続いて接続探索部103は、線分メモリ102に格納された線分リストの確定済みフラグを参照し、確定済みフラグが全て“確定済”であるかを判定し(ステップS17)、全て確定済みであるため次のステップに進む。
【0060】
続いてベクターデータ出力部106は、閉空間メモリ105に基づきベクターデータを出力する(ステップS18)。ここでベクターデータ出力部106は、閉空間の重なり合う部分のフィルスタイルについては、排他的論理和により合成して出力する。具体的には、閉空間番号“1”の閉空間は、閉空間番号“2”の閉空間の閉空間を全て含む。したがって、閉空間番号“2”の閉空間は、閉空間番号“1”及び閉空間番号“2”により2回、フィルスタイルが規定されることになる。このときベクターデータ出力部106は、排他的論理和により当該フィルスタイルを合成する。すなわち、フィルスタイルが同値であった場合には当該空間のフィルスタイルは“0”、つまり透明であるとして画像出力処理をする。
【0061】
ベクターデータ出力部106が出力したベクターデータにより構成される画像がディスプレイ等により表示される場合の表示例を、
図10に示す。
図10に示すとおり、閉空間番号“2”の閉空間は透明となり、すなわち閉空間が彩色されないことになる。
【0062】
(1.3)実施の形態1にかかる発明の効果
このように本発明によれば、接続探索部103が、SWF形式のベクターデータを構成する線分の接続関係を探索して標準的なベクターデータに変換して、変換後のベクターデータを出力するため、FLASH再生ソフトを備えない電子機器であっても、SWF形式のベクターデータで構成された画像を表示することができる。
【0063】
(1.4)変形例
なお、本実施の形態1においてはフィルスタイルとして閉空間を塗りつぶす色を確定する例を示したがこれに限られない。フィルスタイルは閉空間の塗りつぶすスタイルを特定する態様であれば如何なる態様でもよく、例えば閉空間を所定の色のグラデーションや模様等で塗りつぶしてもよい。
【0064】
なお、本実施の形態においては、線分データを2つの端点により規定される直線として説明したが、これに限られず曲線でもよい。曲線の場合には、線分1本につき、2つの端点のほかに、カーブの基準となる点が1点必要になる。この場合であっても2つの端点についての接続探索をすることには相違ない。したがって本ベクターデータ変換出力装置は、直線だけでなく、曲線の場合においても適用することができる。
【0065】
(実施の形態2)
(2.1)ベクターデータ変換出力装置の構成
以下、本発明の実施の形態2について説明する。
図11は本発明の実施の形態2の構成を示すブロック図である。以下、実施の形態1と同一の構成については同一の符号を付し、説明は省略する。実施の形態2に係るベクターデータ変換出力装置20は、実施の形態1に係るベクターデータ変換出力装置10の構成と比較して、動画メモリ107と、命令メモリ108と、動画制御部109と、動画出力部110とを備える点が相違する。動画メモリ107には、ベクターデータを構成する複数の画像要素が格納される。当該ベクターデータは、ベクターデータ出力部106から出力されたものであってもよいが、これには限定されない。当該ベクターデータは、上述した標準形式のベクターデータであれば、ベクターデータ出力部106以外から出力されたものであってもよいし、予め格納されたデータであってもよい。動画メモリ107に格納される情報の概念図を
図12に示す。
【0066】
動画メモリ107は、ライブラリ31と、メインリール32と、プロジェクタ33と、を備える。
【0067】
ライブラリ31は、ベクターデータを構成する画像要素(以下、「シェープ」という。)が格納されるメモリ領域である。画像要素は、ベクターデータ全体を複数に分割することにより得られる小さなベクターデータ(セグメント)である。またライブラリ31にはサブリール313が格納される。シェープやサブリール313をそれぞれ「アクター」とよぶ。シェープについては、例えば閉空間を1つのシェープとしてもよいし、2つ以上の閉空間を組み合わせて1つのシェープとしてもよい。シェープ311及びシェープ312はそれぞれ人物イメージの胴体を表すシェープと、人物イメージの頭を表すシェープである。シェープ311及びシェープ312は、メインリール32のアクターであってもよく、サブリール313のアクターであってもよい。サブリール313は後述するメインリール32と同様の構成をとり、シェープに対する命令と、シェープを配置する格納領域を組み合わせて構成される。なお、各シェープによって形成されるイメージは例示に過ぎず、各シェープは人物イメージ以外のイメージを構成するものであってもよいことは勿論である。また、シェープの範囲は任意に設定することができる。本実施例では、人物イメージを、胴体を表すシェープと、頭を表すシェープとの2シェープによって構成しているが、これに限定されるものではない。例えば、人物イメージを、胴体部分と頭部分との双方を含む1つのシェープとして規定してもよい。また、例えば、胴体部分をさらに分割し、胴体イメージを、腕を表すシェープと、体幹を表すシェープと、足を表すシェープとにより規定してもよい。
【0068】
メインリール32は、アクターを組み合わせて配置し格納するメモリ領域である。メインリール32はさらに、スライド領域321と、コンテナ322とを備える。
【0069】
スライド領域321は、アクターに対する配置、移動、回転、及び変形等を行う命令を、時系列毎に格納するメモリ領域である。
図12に示すスライド領域321には、6つのスライド(スライド321a、321b、321c、321d、321e、321f)が格納されている。つまり、当該6つのスライドは、例えばフレームレートが1fpsであるとすると、左から0秒、1秒、2秒、3秒、4秒、5秒の時点において、各アクターに対して行われる命令を示している。当該命令に従い、コンテナ322に配置したアクターを移動、回転、及び変形することにより、各時間において指定されたベクターデータによって構成される画像が描画され、動画を出力することができる。
【0070】
コンテナ322は、スライド321に格納された命令に従ってライブラリ31から取得したアクターを配置するメモリ領域である。
【0071】
サブリール313はメインリール32と類似の構成であり、スライド領域3131とコンテナ3132を有する。サブリールのコンテナ3132は、メインリール32のコンテナ322に配置される。またサブリール313は、アクターに対する命令をスライド領域3131にあらかじめ格納している。スライド領域3131にはサブリール313のスライド(スライド3131a、スライド3131b)が配置される。当該2つのスライドには、好ましくは、メインリール32のスライド領域321の各スライドに設定されたフレームレートと同じフレームレート(例えば、1fps)が設定される。このように設定された場合、メインリール32のスライド領域321と、サブリール313のスライド領域3131は同期し、同一のタイミングで対応するスライドに記述された命令が実行される。詳細については後述するが、例えば、メインリールのスライド321bにおいてサブリール313が呼び出された場合、メインリールのスライド321bとサブリールのスライド3131aとが同期し、メインリールのスライド321cとサブリールのスライド3131bとが同期する。このようにサブリール313に命令を記述することで、定型的なアニメーションをするアクターを容易に処理することができる。以下においては、メインリール32のスライド領域321と、サブリール313のスライド領域3131とが同期している場合について説明するが、これに限定されるものではなく、メインリール32のスライド領域321及びサブリール313のスライド領域3131にはそれぞれ異なるフレームレートが設定されてもよい。
【0072】
プロジェクタ33は、メインリール32のコンテナ322をコピーし格納するメモリ領域である。当該メモリ領域は動画出力部110が用いる。
【0073】
命令メモリ108には、メインリール32及びサブリール313の各スライドにおける命令が順次格納される。
【0074】
動画制御部109は、アクターを、移動、回転、及び変形(拡大、縮小)をすることによって、描画される画像を制御する。すなわち、動画制御部109は、動画メモリ107の情報を命令メモリ108に格納された命令に従い制御する。また動画制御部109は、ベクターデータ変換出力装置20の動画出力に係る各種制御を行う。
【0075】
動画出力部110は、移動、回転、変形した複数のアクターを組み合わせたベクターデータを所定時間間隔毎に動画として出力する。具体的には、動画メモリ107のプロジェクタ33に格納されることにより描画された画像情報を出力する。
【0076】
(2.2)動画の出力動作
図13は本発明の実施の形態2のベクターデータ変換出力装置20の動作を表すフローチャートである。また、
図14から
図19は、ベクターデータ変換出力装置20の動作時における、動画メモリ107の概念図である。以下、動画メモリ107の概念図と共にフローチャートに沿って動作を説明する。
【0077】
はじめに、動画制御部109は、動画処理の準備をする(ステップS21)。ここでは、動画に必要なベクターデータ及び命令を、すべて動画メモリ107に格納する。すなわち、ライブラリ31と、メインリール32のスライド領域321に、動画処理に必要な全てのデータを格納する。
図12に示す動画メモリ107の概念図は、これらの情報を格納した一例を示している。
【0078】
次に、動画制御部109は、動画メモリ107における、メインリール32、及び有効なサブリール313のスライドを進め、命令リストを更新する(ステップS22)。すなわちスライド領域321に格納された、スライド321aに記述された命令を、命令メモリ108に格納する。
図12に示す動画メモリ107の概念図に従うと、命令“setBGColor 1”を格納する。当該命令は、コンテナ322の背景色を1にするという命令である。
【0079】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、“setBGColor 1”を実行し、背景色を1にする。なお実行した命令は、実行後に命令メモリ108から削除される。
【0080】
続いて動画制御部109は、命令の結果をメインリール32に反映する(ステップS24)。すなわちメインリール32のコンテナ322に命令結果を格納する。ここでは背景色を1にする命令を実行した結果、
図14のコンテナ322の背景色が変化している。また、プロジェクタ33はコンテナ322のコピーであるため、同様に背景色が変化している。
【0081】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0082】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドがまだ残り5つあるため、動画制御部109は“いいえ”と判定する。
【0083】
続いて動画制御部109は、次のスライドに移動する前に所定の時間待機する(ステップS26)。当該待機時間は動画のフレームレートによって適宜設定される。本事例では、フレームレートは1fpsであるものとして説明する。すなわち、各スライドの命令が1秒毎に実行されることになる。
【0084】
次に動画制御部109は、スライドを進めて命令リストを更新する(ステップS22)。すなわち、メインリール32のスライド領域321に格納された、スライド321bに記述された命令を、命令メモリ108に格納する。
図14に示す動画メモリ107の概念図に従うと、命令“place Actor Person”を実行する。当該命令は、ライブラリ31におけるアクターの“Person”のコンテナ3132をコンテナ322に配置するという命令である。ここで、アクター“Person”はサブリール313としてライブラリ31に格納されているため、当該サブリール313に格納されたスライドの命令も命令メモリ108に格納する。すなわち、スライド3131aに記載された命令“place Actor head”と、“place Actor body”を命令リストに格納する。当該命令はそれぞれ、アクター“head”(シェープ312)とアクター“body”(シェープ311)とをコンテナ3132に配置するという命令である。このようにメインリール32のスライド領域321と、サブリール313のスライド領域3131は同期し、同一のタイミングでスライドに記述された命令が実行される。
【0085】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、“place Actor Person”と、“place Actor head”と、“place Actor body”とを実行する。なお、配置位置については、各命令の中に含めておくことができる。
【0086】
続いて動画制御部109は、命令の結果をメインリール32に描画する(ステップS24)。ここでは上記命令を実行した結果、
図15のサブリール313のコンテナ3132に、人物イメージの胴体を表すシェープ311と、人物イメージの頭を表すシェープ312が配置され、さらにコンテナ3132がメインリール32のコンテナ322に配置される。その結果、コンテナ322に各アクターが配置され、人物イメージが描画される。また、プロジェクタ33はコンテナ322のコピーであるため、同様に人物イメージが描画される。
【0087】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0088】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドがまだ残り4つあるため、動画制御部109は“いいえ”と判定する。
【0089】
続いて動画制御部109は、次のスライドに移動する前に所定の時間、待機する(ステップS26)。
【0090】
次に動画制御部109は、スライドを進めて命令リストを更新する(ステップS22)。すなわち、まずメインリール32のスライド領域321に格納された、スライド321cに記述された命令を、命令メモリ108に格納する。また、サブリール313のスライドも進めて命令リストを更新する。具体的には、スライド領域3131のスライド3131bに記述された命令を命令メモリ108に格納する。
図15の概念図に従うと、メインリール32の3番目のスライド(スライド321c)に記述された命令“scale Person”及び命令“translate Person”を格納する。当該命令は、それぞれコンテナ322に配置したアクターの“Person”(サブリール313。より具体的には、コンテナ3132に配置されたシェープ311及びシェープ312で構成される人物イメージ)を拡大する命令、及び、移動する命令である。またサブリール313に格納された2番目のスライドの命令も命令メモリ108に格納する。すなわち、命令“rotate head”を命令リストに格納する。当該命令はライブラリ31におけるアクターの“head”(シェープ312)を回転して配置するという命令である。
【0091】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、“scale Person”と、“translate Person”と、“rotate head”とを実行する。
【0092】
続いて動画制御部109は、命令の結果をメインリール32に反映する(ステップS24)。ここでは上記命令を実行した結果、
図16に示すとおり、コンテナ322に人物イメージ全体の大きさが変更(ここでは拡大)され、右に平行移動し、かつ頭部分が回転し、イメージが描画される。また、プロジェクタ33はコンテナ322のコピーであるため、同様に人物イメージが描画される。なお、イメージ全体の大きさの変更率については、命令“scale Person”の中に含めておくことができる。また、移動方向や移動量については、命令“translate Person”の中に含めておくことができる。また、回転方向や回転量については、命令“rotate head”の中に含めておくことができる。
【0093】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0094】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドがまだ残り3つあるため、動画制御部109は“いいえ”と判定する。
【0095】
続いて動画制御部109は、次のスライドに移動する前に所定の時間、待機する(ステップS26)。
【0096】
次に動画制御部109は、スライドを進めて命令リストを更新する(ステップS22)。すなわち、メインリール32のスライド領域321に格納された、スライド321dに記述された命令を、命令メモリ108に格納する。なお、サブリール313のスライドは2番目までしかないため、サブリール313に係る命令は以後存在しない。したがって、
図16の概念図に従うと、命令“rotate Person”、命令“scale Person”及び命令“translate Person”を格納する。当該命令は、それぞれコンテナ322に配置したアクターの“Person”(サブリール313)を回転する命令、拡大する命令、及び、移動する命令である。
【0097】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、命令“rotate Person”、命令“scale Person”及び命令“translate Person”を実行する。
【0098】
続いて動画制御部109は、命令の結果をメインリール32に反映する(ステップS24)。ここでは上記命令を実行した結果、
図17に示すとおり、コンテナ322に人物イメージ全体が回転し、大きさが変更(ここでは縮小)され、かつ左上に移動したイメージが描画される。また、プロジェクタ33はコンテナ322のコピーであるため、同様に人物イメージが描画される。
【0099】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0100】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドがまだ残り2つあるため、動画制御部109は“いいえ”と判定する。
【0101】
続いて動画制御部109は、次のスライドに移動する前に所定の時間、待機する(ステップS26)。
【0102】
次に動画制御部109は、スライドを進めて命令リストを更新する(ステップS22)。すなわち、メインリール32のスライド領域321に格納された、スライド321eに記述された命令を、命令メモリ108に格納する。したがって、
図17の概念図に従うと、命令“translate Person”及び命令“placeActor Head”を格納する。当該命令は、それぞれコンテナ322に配置したアクターの“Person”(サブリール313)を移動する命令、及びライブラリ31のアクターである“head”(シェープ312)をコンテナ322に配置する命令である。
【0103】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、命令“translate Person”及び命令“placeActor Head”を実行する。
【0104】
続いて動画制御部109は、命令の結果をメインリール32に反映する(ステップS24)。すなわちメインリール32のコンテナ322に命令結果を格納する。ここでは上記命令を実行した結果、
図18に示すとおり、コンテナ322に、上方に移動した人物イメージと、人物の頭部分のイメージとが描画される。また、プロジェクタ33はコンテナ322のコピーであるため、同様に人物のイメージ及び人物の頭部分のイメージが描画される。
【0105】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0106】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドがまだ残り1つあるため、動画制御部109は“いいえ”と判定する。
【0107】
続いて動画制御部109は、次のスライドに移動する前に所定の時間、待機する(ステップS26)。
【0108】
次に動画制御部109は、スライドを進めて命令リストを更新する(ステップS22)。すなわちスライド領域321に格納された、スライド321fに記述された命令を、命令メモリ108に格納する。つまり、
図19の概念図に従うと、命令“removeActor Person”を格納する。当該命令は、コンテナ322に配置したアクターの“Person”(サブリール313)を削除する命令である。
【0109】
続いて動画制御部109は、命令メモリ108に格納された命令を実行する(ステップS23)。すなわち、命令“removeActor Person”を実行する。
【0110】
続いて動画制御部109は、命令の結果をメインリール32に反映する(ステップS24)。ここでは上記命令を実行した結果、
図19に示すとおり、コンテナ322において人物イメージが削除され、人物の頭部分のイメージのみが残る。
【0111】
そして動画出力部110は、プロジェクタ33に描画された画像を、ディスプレイ等(不図示)に表示する。
【0112】
続いて動画制御部109は、次のスライドがあるかを判定する(ステップS25)。本事例の場合にはスライドの残りが無いため、動画制御部109は“はい”と判定し、処理が終了する。
【0113】
(2.3)実施の形態2に係る発明の効果
このように、実施の形態2にかかるベクターデータ変換出力装置20は、動画メモリ107に、ベクターデータを構成する画像要素(ベクターデータのセグメント)に分けて記憶しておき、所定のタイミングで各画像要素を配置する。そして、配置された画像要素毎に、所定のタイミングで移動、回転及び変形をすることによって画像を構築し出力している。そのため、動画のフレームを更新する毎に、動画メモリ107には、ベクターデータを構成する画像要素のうち、動きのある画像要素(例えば、移動、回転または変形される画像要素)を改めて格納しなおす必要が無い。ベクターデータの動画メモリ107への格納処理と比較して、画像要素の配置、移動、回転及び変形処理の処理負荷はきわめて低い。したがって、ベクターデータの出力に係るベクターデータ変換出力装置の処理負荷を格段に低減することができ、画像及び動画の出力速度を格段に向上することができる。まず全ての画像要素を動画メモリ107に格納することから、処理開始時に多くのメモリ容量を要するため、特に、CPUの処理能力が低いが、メモリ容量は大きい携帯電話機器等において有用である。
【0114】
(2.3)変形例
なお、本実施の形態2においては動画メモリ107が、メインリール32と、サブリール313とを備える構成としたがこれに限られない。すなわち、サブリールがさらにサブサブリールを配置するように階層的な構成をとり得る。このようにしてあらかじめサブリール、サブサブリールとしてアクターに対する命令をライブラリ31に格納しておくことで、アクターに対する命令を効率よく行うことができる。
【0115】
本発明を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。従って、これらの変形や修正は本発明の範囲に含まれることに留意されたい。例えば、各部材、各手段、各ステップ等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の手段やステップ等を1つに組み合わせたり、或いは分割したりすることが可能である。