JP6423566B1 - 画像処理装置、画像処理プログラム、及び、画像処理方法 - Google Patents

画像処理装置、画像処理プログラム、及び、画像処理方法 Download PDF

Info

Publication number
JP6423566B1
JP6423566B1 JP2018117721A JP2018117721A JP6423566B1 JP 6423566 B1 JP6423566 B1 JP 6423566B1 JP 2018117721 A JP2018117721 A JP 2018117721A JP 2018117721 A JP2018117721 A JP 2018117721A JP 6423566 B1 JP6423566 B1 JP 6423566B1
Authority
JP
Japan
Prior art keywords
node
affine
matrix
image processing
product
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.)
Active
Application number
JP2018117721A
Other languages
English (en)
Other versions
JP2019219985A (ja
Inventor
坊野 博典
博典 坊野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DeNA Co Ltd
Original Assignee
DeNA Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DeNA Co Ltd filed Critical DeNA Co Ltd
Priority to JP2018117721A priority Critical patent/JP6423566B1/ja
Application granted granted Critical
Publication of JP6423566B1 publication Critical patent/JP6423566B1/ja
Publication of JP2019219985A publication Critical patent/JP2019219985A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

【課題】制御部と描画処理部を含む画像処理装置において、描画処理に係る制御部の負荷を低減する。
【解決手段】CPU18は、木構造40において、根ノードであるノード42rから、描画対象のtile0に対応するノード42tへ向かう経路に含まれる複数のノード42であって、平行移動及び拡大縮小のいずれかを示すアフィン行列Lが定義された上位ノード群(42r、42f、42)を識別する。CPU18は、上位ノード群の複数のアフィン行列の上位行列積Gbg=Lroot・Lfield・Lbgを演算し、上位行列積Gbg、及び、下位ノード42tに定義されたアフィン行列Ltile0をGPU20に送信する。GPU20は、上位行列積Gbgと下位ノードのアフィン行列Ltile0との行列積Gtile0=Gbg・Ltile0を演算し、行列積Gtile0に基づいてtile0の描画位置を特定する。
【選択図】図6

Description

本発明は、画像処理装置、画像処理プログラム、及び、画像処理方法に関する。
従来、表示部に表示させる画面の描画処理を行う画像処理装置が知られている。画像処理装置は、ユーザからの入力の受付を含む一般的な処理及び描画処理を行う制御部(例えばCPU(Central Processing Unit))と、描画処理を専門に行う描画処理部(例えばGPU(Graphics Processing Unit))とを含んで構成される場合がある。
例えば、特許文献1には、ゲームを提供するゲーム装置であって、ゲームの進行処理あるいはユーザがタッチしているタッチパネルの位置を取得する処理などを含む処理を実行するCPUと、ゲーム画面の描画処理を行うGPUを含むゲーム装置が開示されている。
特開2011−78649号公報
制御部と描画処理部を含む画像処理装置においては、描画処理は、制御部と描画処理部の双方で実行されるのが一般的である。通常、描画処理の処理能力は、制御部よりも描画処理部の方が優れている(高速に処理できる)。また、制御部は、描画処理以外にも種々の処理(入力検出処理など)を行う必要がある。したがって、描画処理において制御部の負荷が高いと、制御部がボトルネックとなって描画処理が遅れるなどの不具合が生じ得る。
このことに鑑み、制御部と描画処理部を含む画像処理装置において、描画処理に係る制御部の負荷を低減させたいという要望がある。
描画処理に係る制御部の負荷を低減させるべく、描画処理の全てを描画処理部に行わせることが考えられる。しかしながら、描画処理の全てを描画処理部が行う場合、制御部が画像に含まれる各描画要素(例えばオブジェクト)の描画位置を把握できなくなるという問題が生じ得る。制御部が各描画要素の描画位置を把握できないと、ユーザが表示上の入力位置を指定した上で入力を行った場合に、入力位置に描画された描画要素(ユーザ指定の描画要素)を制御部が識別できなくなるなどの問題が生じる。なお、描画処理の全てを描画処理部に行わせた上で、描画処理部から各描画要素の位置を制御部に逐一知らせることも考えられるが、これを行うと、制御部と描画処理部との間の通信負荷が増大し、かえって描画処理が遅くなることも考えられるため適切ではない。
本発明の目的は、制御部と描画処理部を含む画像処理装置において、描画処理に係る制御部の負荷を低減することにある。
本発明は、複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理装置であって、前記木構造の根ノードは表示画像全体に対応し、前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、前記画像処理装置は、前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する制御部と、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理部と、を備えることを特徴とする画像処理装置である。
望ましくは、前記木構造に含まれる複数のノードに定義されたアフィン行列を解析することで、前記上位ノード群を特定する上位ノード群特定部、をさらに備えることを特徴とする。
望ましくは、前記上位ノード群特定部は、前記木構造の変動に応じて、前記上位ノード群に含まれるノードを変更する、ことを特徴とする。
望ましくは、前記表示部上の入力位置を指定した入力をユーザから受け付ける入力部と、をさらに備え、前記制御部は、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積の逆行列に基づいて、各前記ノードに対応する前記描画要素における前記入力位置の相対位置を演算し、演算された相対位置に基づいて、前記入力位置に対応する前記ノードを特定する、ことを特徴とする。
また、本発明は、複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理プログラムであって、前記木構造の根ノードは表示画像全体に対応し、前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、コンピュータを、前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する制御部と、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理部と、として機能させることを特徴とするプログラムである。
また、本発明は、複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理方法であって、前記木構造の根ノードは表示画像全体に対応し、前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、前記画像処理方法は、制御部が、前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する上位行列積演算ステップと、描画処理部が、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理ステップと、を含むことを特徴とする画像処理方法である。
本発明によれば、制御部と描画処理部を含む画像処理装置において、描画処理に係る制御部の負荷を低減することができる。
本実施形態に係る画像処理装置の構成概略図である。 本実施形態に係るゲーム画面の例を示す図である。 ゲーム画面の階層構造を示す図である。 ゲーム画面を構成する各ノードの木構造を示す概念図である。 アフィン行列を示す図である。 上位行列積を生成する範囲を示す概念図である。 平行移動又は拡大縮小を行うアフィン行列を示す図である。 本実施形態の描画処理の流れを示すフローチャートである。 本実施形態の入力処理の流れを示すフローチャートである。
以下、本発明の実施形態について説明する。
<画像処理装置の構成概略>
図1には、本実施形態に係る画像処理装置10の構成概略図が示されている。本実施形態では、画像処理装置10はスマートフォンやタブレット端末などの携帯端末であるが、画像処理装置10としては、以下に説明する機能を発揮可能な限りにおいてどのような装置であってもよい。
画像処理装置10は、表示部12に表示される画面の描画処理を行う。本実施形態では、画像処理装置10はゲームを提供するゲーム装置であり、画像処理装置10が処理する画面はゲーム画面であるが、以下に説明する木構造で表される画面である限り、画像処理装置10が処理する画面はゲーム画面に限るものではない。
表示部12は、例えば液晶ディスプレイなどを含んで構成される。表示部12には、画像処理装置10で実行されるゲームに関するゲーム画面などの種々の画面が表示される。
入力部14は、タッチパネルを含んで構成される。あるいは、画像処理装置10がパーソナルコンピュータである場合には、入力部14としてマウス、キーボード、又はポインティングデバイスなどが含まれていてもよい。本実施形態では、表示部12としての液晶ディスプレイがタッチパネルとなっている。つまり、画像処理装置10においては、ユーザ(ゲームのプレイヤ)は、ゲーム画面が表示されたタッチパネルに対して入力操作することが可能となっている。特に、入力部14は、ユーザからの、表示部12上の入力位置を指定した入力を受け付ける。入力部14に対するプレイヤの操作を示す入力信号は後述のCPU18に送られる。
記憶部16は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、あるいはハードディスクなどを含んで構成される。記憶部16には、画像処理装置10の各部を動作させるための画像処理プログラムが記憶される。本実施形態においては、画像処理装置10上でゲームが動作するため、当該画像処理プログラムはゲームプログラムである。また、記憶部16には、各種の制御データあるいは各種の処理結果データなどが記憶される。
制御部としてのCPU18は、記憶部16に記憶された画像処理プログラムに従って、画像処理装置10の各部を制御する。また、CPU18は、ゲームプログラム(画像処理プログラム)に従ってゲームの進行処理を行い、ゲーム処理において入力部14へのプレイヤ入力操作の検出(入力位置の検出あるいは操作対象のゲーム内の描画要素(例えばプレイヤキャラクタなどのオブジェクト)の特定など)を行う。
また、CPU18は画面の描画処理を行う。本明細書における描画処理とは、レンダリング処理のみならず、描画位置の特定処理を含む概念である。本実施形態では、CPU18は、描画処理のうち、描画位置の特定処理の一部を実行する。
描画処理部としてのGPU20は、画面の描画処理を行う。描画処理において、GPU20はCPU18よりも高速に処理可能となっている。GPU20は、描画処理のうち、描画位置の特定処理の一部、及びレンダリング処理を実行する。
<画面の論理的構成>
図2には、表示部12に表示されるゲーム画面の一例が示されている。図2に示されたゲーム画面を参照しつつ、画像処理装置10で処理される画面の論理的構成を説明する。
ゲーム画面は、複数の描画要素30を含んで構成される。具体的には、フィールド30a、フィールド30aを構成するバックグラウンド30b及び背景オブジェクト30c(草や木など)、バックグラウンド30bを構成する複数のタイル30d、並びに、プレイヤキャラクタ30e及び敵キャラクタ30fを含んで構成される。さらに、ゲーム画面は、ヘッダ30h及びフッタ30iを含むGUI30gを含んで構成される。
図3には、各描画要素30が区分けされて図示されている。すなわち、図3(a)にはバックグラウンド30b及びバックグラウンド30bを構成するタイル30dが図示され、図3(b)には背景オブジェクト30cが図示され、図3(c)にはプレイヤキャラクタ30e及び敵キャラクタ30fが図示され、図3(d)にはGUI30gが図示されている。
なお、各タイル30dは、複数画素分の面積を有した領域となっている。タイル30dの形状は、適宜設定されてよいが、本実施形態では菱形となっている。複数のタイル30dが敷き詰められることによってバックグラウンド30bが形成されている。
本実施形態におけるゲーム画面の論理的構成は、図4に示されるような木構造40で表すことができる。木構造40には、複数のノード42が含まれる。各ノード42は、ゲーム画面に含まれる各描画要素30に対応している。例えば、ノード42rは表示画像全体に対応し、ノード42fはフィールド30aに対応し、ノード42gはGUI30gに対応し、ノード42bはバックグラウンド30bに対応し、ノード42tはタイル30dに対応している。
木構造40においては、各描画要素30の階層構造が表現されている。例えば、表示画像全体(ルート)に対応するノード42rが根ノードであり、ノード42rの子ノードとしてフィールド30aに対応するノード42fが定義されている。さらに、ノード42fの子ノードとしてバックグラウンド30bに対応するノード42bが定義され、ノード42bの子ノードとして複数のタイル30dに対応する複数のノード42tが定義されている。
根ノードであるノード42rには、表示部12上における表示画像全体のアフィン変換を示すアフィン行列Lrootが定義されている。また、根ノード(ノード42r)以外の各ノード42には、親ノードに対応する描画要素30に対する相対的な位置関係における、当該ノード42に対応する描画要素のアフィン変換を表すアフィン行列L(以下、「親ノードに対する相対アフィン行列L」と記載する場合がある)が定義されている。アフィン変換とは、変換対象(本実施形態では描画要素30)を平行移動、拡大縮小、回転、あるいはスキューさせる処理である。なお、本実施形態では、各ノード42のアフィン行列Lは、その親ノードに対応する描画要素30の左上隅の画素に対する相対位置を表すものとなっている。
例えば、ノード42fには、ノード42rに対応する表示画像全体に対する相対的な位置関係におけるフィールド30aのアフィン変換を示すアフィン行列Lfieldが定義され、ノード42bには、ノード42fに対応するフィールド30aに対する相対的な位置関係におけるバックグラウンド30bのアフィン変換を示すアフィン行列Lbgが定義され、ノード42tには、ノード42bに対応するバックグラウンド30bに対する相対的な位置関係におけるタイル30dのアフィン変換を示すアフィン行列Ltileが定義されている。
図5には、アフィン行列Lの一般式が示されている。図5に示されたアフィン行列Lの変数a、b、c、d、tx、及びtyの値を適宜決定することで、アフィン変換の変換種別を決定することができる。例えば、a=b=c=d=0とすると、x方向にtx分移動し、y方向にty分移動する平行移動を示すアフィン行列Lとなる。また、b=c=tx=ty=0とすると、x方向にa倍し、y方向にd倍する拡大縮小を示すアフィン行列Lとなる。また、tx=ty=0とし、a=d=cosθ、b=sinθ、c=−sinθとすると、回転を示すアフィン行列Lとなる。また、tx=ty=0とし、a=cosθ、b=sinθ、c=−sinθ、d=conθとすると、スキューを示すアフィン行列Lとなる。
上述のように、各ノード42に定義されたアフィン行列Lは、親ノードに対する相対アフィン行列Lであるが、子ノードに定義されたアフィン行列Lと孫ノードに定義されたアフィン行列Lとの積は、親ノードに対応する描画要素30に対する相対的な位置関係における、孫ノード42に対応する描画要素のアフィン変換を表すアフィン行列Lとなる。例えば、ノード42fに定義されたアフィン行列Lfieldとノード42bに定義されたアフィン行列Lbgの積Lfield・Lbgは、ノード42rに対応する表示画像全体に対するバックグラウンド30bの相対的な位置関係(すなわち表示部12の絶対位置となる)においてのアフィン変換を示す。
図4に示すように、画面の構造を階層化した上で、各ノード42に対して、親ノードに対する相対アフィン行列Lを定義することで、画面の描画をより効率的に行うことができる。例えば、フィールド30aが平行移動した場合、バックグラウンド30bあるいは各タイル30dも平行移動されることになるが、フィールド30aに対するバックグラウンド30bあるいは各タイル30dの相対位置は変動しない。したがって、この場合、アフィン行列Lfieldのみを変更すればよく、ノード42fの下位にある各ノード42b、42tに対応するアフィン行列LbgあるいはLtileを変更する必要がない。
<従来の描画処理及び入力処理>
本実施形態のゲーム画面における描画処理及び入力処理を説明する前に、従来の描画処理及び入力処理について説明する。まず、従来における描画要素30の描画処理について説明する。ここでは、特定のタイル(tile0)を描画する場合を例に説明する。
描画要素30の描画処理を行うにあたり、当該描画要素30を描画する描画位置を特定する必要がある。描画位置とは、表示部12上の絶対位置であり、すなわち画素の座標である。上述のように、ゲーム画面の論理的構成を示す木構造40においては、各描画要素30は、親ノードに対応する描画要素30に対する相対位置で表されているため、CPU18は、木構造40に基づいて、描画したい描画要素30の描画位置を特定する。
描画要素30の描画位置は、当該描画要素30に対応するノード42からルートに対応するノード42r(木構造40の根ノード)までの各ノード42に定義されている複数のアフィン行列Lの積で表される。したがって、tile0の描画位置は、以下の式で算出されるGtile0で表される。
tile0=Lroot・Lfield・Lbg・Ltile0
CPU18は、算出した行列積Gtile0をGPU20に送信し、GPU20は、行列積Gtile0が表す座標の画素に対してtile0の描画を行う。
このように、従来、CPU18は、描画要素30を描画する度に、当該描画要素30について行列積Gを演算してGPU20に送信していた。複数のタイルを描画する際に、行列積Gbg=Lroot・Lfield・Lbgを保持しておき、Gbgと、各タイルに対応するLtile*との積を演算するなどの演算方法を用いることで演算量を低減させることができるが、描画要素30を描画する度に行列積Gを演算する必要があることは変わらず、また、行列積Gの演算は比較的処理量が多くなることから、描画処理(特に描画位置の特定処理)におけるCPU18の負荷が大きかった。なお、フィールド30aが表示部12上を平行移動した場合、あるいはバックグラウンド30bがフィールド30aに対して平行移動した場合などは、LfieldあるいはLbgが変化するため、CPU18は、再度行列積Gbgを演算する必要がある。
木構造40の管理をGPU20に任せ、行列積Gの演算をGPU20に行わせた場合、ユーザからの入力処理を受け付けるCPU18が各描画要素30の描画位置を把握できなくなってしまう。また、GPU20から各描画要素30の描画位置をCPU18に逐一送信する処理を行った場合、CPU18とGPU20間の通信負荷が増大してしまう。したがって、従来においては、木構造40の管理及び行列積Gの演算はCPU18が行っている。
次に、従来における入力処理について説明する。入力処理とは、ユーザが表示部12上の入力位置(画素)を特定して、ゲーム画面に含まれるいずれかの描画要素30を選択する処理である。ここでは、バックグラウンド30bを構成する複数のタイル30dのうち、いずれのタイル30dがユーザによって選択されたかを判定する処理について説明する。
ユーザにより指定された入力位置は、表示部12上の絶対位置であり、木構造40においては各タイル30dの位置はフィールド30a及びバックグラウンド30bに対する相対位置で示されているから、入力処理においては、描画処理とは反対に、CPU18は、入力位置をフィールド30a及びバックグラウンド30bに対する相対位置に変換する必要がある。
絶対位置の相対位置への変換は、上述のように演算した行列積Gの逆行列G’を用いて行うことができる。CPU18は、tile0に対応する行列積Gtile0の逆行列G’tile0に基づいて、ユーザが指定した入力位置をtile0の左上隅の画素からの相対位置に変換する。そして、変換された相対位置が、tile0の内部であるか否かを判定する。なお相対位置がtile0の内部であるか否かは、相対位置とtile0の大きさ(面積)とに基づいて判定することができる。相対位置がtile0の内部である場合は、ユーザがtile0を選択したと判定でき、相対位置がtile0の内部でない場合には、次のタイル(例えばtile1)について同様の処理を繰り返す。このように、相対位置が内部にあるタイルが見つかるまで処理を繰り返し、ユーザが選択したタイルを特定する。
<本実施形態の描画処理及び入力処理>
以下、本実施形態における描画処理及び入力処理について説明する。まず、本実施形態における描画要素30の描画処理について説明する。ここでも、特定のタイル(tile0)を描画する場合を例に説明する。
まず、CPU18は、木構造40において、根ノードであるノード42rから、描画対象の描画要素30であるtile0に対応する対象ノードであるノード42tへ向かう経路に含まれる複数のノード42から構成される上位ノード群を識別する。
上位ノード群は、上述の経路に含まれるノード42のうち、平行移動及び拡大縮小のいずれかを示すアフィン行列Lが定義された複数のノード42により構成される。図6に、木構造40の一部であって、根ノードであるノード42rからtile0に対応するノード42tまでの経路が示されている。本実施形態では、ノード42rに定義されたアフィン行列Lroot、ノード42fに定義されたアフィン行列Lfield、及び、ノード42bに定義されたアフィン行列Lbgが、それぞれ平行移動又は拡大縮小を示すものであるとする。したがって、CPU18は、ノード42r、42f、及び42bを上位ノード群として識別する。
ゲーム画面その他の種々の画面においては、木構造において根ノードに近い描画要素(例えば背景など)は、回転及びスキューがほとんど行われず、根ノードから遠い描画要素(例えばキャラクタなどの細かいオブジェクト)は回転及びスキューを含めた処理が行われることが多い。本実施形態におけるゲームにおいても、フィールド30a及びバックグラウンド30bは、平行移動及び拡大縮小はされ得るものの、回転及びスキューは行われず、タイル30dなどにおいては回転及びスキューを含めた処理が行われる。したがって、画面を表す木構造においては、複数のノードを上位ノード群に含めることができる場合が多い。
ある特定の画面において、平行移動又は拡大縮小のみのアフィン変換が行われるノード42が固定的に決定されている場合は、上位ノード群に含まれるノード42は予め決められていてもよい。例えば、図6の例において、フィールド30a及びバックグラウンド30bが平行移動又は拡大縮小のみ行う(つまり回転及びスキューを行わない)と決まっている場合には、予め、ノード42r、42f、及び42bが上位ノード群であると決められていてよい。
また、CPU18が木構造40に含まれる各ノード42に定義されたアフィン行列Lを解析することで、上位ノード群に含まれるノード42を特定するようにしてもよい。例えば、CPU18は、根ノードから対象ノードへ向かって順番に、ノード42に定義されたアフィン行列Lのうち、行列要素b及びc(図5参照)が0であるか否かを解析し、b及びcが0ならば当該ノードを上位ノード群に加え、b又はcが0でなければその直前のノード42までが上位ノード群であると特定する。このように、CPU18は上位ノード群特定部としても機能し得る。
また、例えばゲームモードが切り替わる、あるいは画面の表示モードが切り替わるなどして木構造40に内容が変動する場合がある。例えば、あるゲームモードではバックグラウンド30bは平行移動及び拡大縮小のみで、回転及びスキューは行われなかったが、他のゲームモードに遷移した場合に、当該他のゲームモードにおいては、バックグラウンド30bが回転又はスキューが行われる場合がある。このように、木構造40が変動した場合であっても、CPU18は各ノード42のアフィン行列Lを解析することで、木構造40の変動に応じて上位ノード群に含まれるノード42を変更することで、常に適切な上位ノード群を特定することができる。
一方、上述の経路(図6参照)に含まれるノード42のうち、上位ノード群以外のノード42、すなわち、上位ノード群の末端ノードであるノード42bの子ノードから対象ノードまでの経路に含まれるノード42が下位ノードとなる。下位ノードに対応する描画要素30は、回転及びスキューを行い得るものである。図6の例では、当該子ノードと対象ノードが同一であり、すなわち下位ノードがtile0に対応するノード42tの1つのみとなっているが、下位ノードは複数あってもよい。
CPU18は、上位ノード群に含まれる複数のノード42それぞれに定義された複数のアフィン行列Lの積である上位行列積を演算する。図6の例では、CPU18は、上位行列積Gbg=Lroot・Lfield・Lbgを演算する。
ここで、上位ノード群に定義された各アフィン行列Lは、平行移動又は拡大縮小を行うものである。図7に示す通り、平行移動又は拡大縮小を行うアフィン行列Lは、行列要素のb及びc(図5参照)が0となる。したがって、上位ノード群に定義された複数のアフィン行列Lの積を算出する際の演算量はそれほど大きくならない。少なくとも、演算量は、回転やスキューを示すアフィン行列L(すなわち行列要素のb及びcが0でない行列)を含む行列の積を算出する際の演算量よりも小さくなる。つまり、上位行列積を演算しても、CPU18にはそれほど負荷がかからない。
CPU18は、演算した上位行列積(図6の例ではGbg)と、下位ノードに定義されたアフィン行列(図6の例ではLtile0)をGPU20に送信する。
GPU20は、CPU18から受け取った上位行列積と、下位ノードに定義されたアフィン行列との積を演算する。本実施形態では、上位行列積Gbgと下位ノードのアフィン行列Ltile0との行列積Gtile0=Gbg・Ltile0を演算する。上述のように、行列積Gtile0はtile0の表示部12上の絶対位置を表す。したがって、GPU20は、行列積Gtile0に基づいて、tile0の表示部12上の描画位置を特定する。そして、GPU20は、特定した描画位置にtile0の描画を行う。
上述のように、本実施形態においては、描画要素30の描画位置の特定のために必要な行列積Gの演算のうち、演算量が少ない部分、すなわち、上位ノード群に定義された、平行移動及び拡大縮小のいずれかを示す複数のアフィン行列Lの積である上位行列積の演算をCPU18が行い、比較的演算量が多くなる、回転及びスキューを示すアフィン行列Lを含む行列積の演算はGPU20が行う。これにより、描画処理に係るCPU18の負荷が低減される。
しかも、本実施形態においては、CPU18が木構造40の管理を行っているから、CPU18が各描画要素30の描画位置を把握できなくなることがない。したがって、描画要素30を指定するための、表示部12上の入力位置を指定した入力をユーザから受け付けた場合であっても、CPU18は、ユーザが指定した描画要素30を特定することができる。
以下、本実施形態における入力処理について説明する。ここでも、バックグラウンド30bを構成する複数のタイル30dのうち、いずれのタイル30dがユーザによって選択されたかを判定する処理について説明する。
従来同様、本実施形態においても、入力処理はCPU18が行う。まず、CPU18は、演算済みの上位行列積と、下位ノードに定義されたアフィン行列との行列積Gを演算する。本実施形態では、上位行列積Gbgと下位ノードに定義されたアフィン行列Ltile0との行列積Gtile0=Gbg・Ltile0を演算する。
さらに、CPU18は演算した行列積Gの逆行列G’を演算する。本実施形態では、行列積Gtile0の逆行列G’tile0を演算する。
CPU18は、演算した逆行列G’に基づいて、各ノード42に対応する描画要素30における入力位置の相対位置を演算し、演算された相対位置に基づいて、入力位置に対応する描画要素30を特定する。本実施形態では、CPU18は、逆行列G’tile0に基づいて、ユーザが指定した入力位置をtile0の左上隅の画素からの相対位置に変換する。そして、変換された相対位置が、tile0の内部であるか否かを判定する。相対位置がtile0の内部である場合は、ユーザがtile0を選択したと判定でき、相対位置がtile0の内部でない場合には、次のタイル(例えばtile1)について同様の処理を繰り返す。このように、相対位置が内部にあるタイルが見つかるまで処理を繰り返し、ユーザが選択したタイルを特定する。
以下、図8に示すフローチャートに従って、画像処理装置10における描画処理の流れについて説明する。図8のフローチャートは、tile0を描画する場合の処理の流れを示すものである。
ステップS10において、CPU18は、木構造40の中から、上位ノード群(ノード42r、42f、42b)を特定し、上位行列積Gbg=Lroot・Lfield・Lbgを演算する。
ステップS12において、CPU18は、上位行列積Gbg、及び、下位ノード(tile0に対応するノード42t)に定義されたアフィン行列Ltile0をGPU20に送信する。
ステップS10及びS12が上位行列積演算ステップに相当する。
ステップS14において、GPU20は、ステップS12でCPU18から受信した上位行列積Gbgと下位ノードのアフィン行列Ltile0との行列積Gtile0=Gbg・Ltile0を演算する。そして、演算した行列積Gtile0に基づいて、tile0の表示部12上の描画位置を特定する。
ステップS16において、GPU20は、ステップS14で特定した描画位置にtile0の描画を行う。
ステップS14及びS16が描画処理ステップに相当する。
次に、図9に示すフローチャートに従って、画像処理装置10における入力処理の流れについて説明する。図9のフローチャートは、バックグラウンド30bを構成する複数のタイル30dのうち、ユーザがいずれのタイル30dを指定したのかを特定する処理の流れを示すものである。
ステップS30において、入力部14は、表示部12上の入力位置を指定したユーザからの入力を受け付ける。
ステップS32において変数nが0に初期化される。変数nはタイル番号に相当する変数である。
ステップS34において、CPU18は、上位行列積Gbgと下位ノードのアフィン行列Ltilenとの行列積Gtilen=Gbg・Ltilenを演算する。さらに、CPU18は行列積Gtilenの逆行列G’tilenを演算する。
ステップS36において、CPU18は、逆行列G’tilenに基づいて、ユーザが指定した入力位置をtilenの左上隅の画素からの相対位置に変換する。
ステップS38において、CPU18は、ステップS36で変換された相対位置がtilenの内部であるか否かを判定する。tilenの内部でない場合、ステップS40に進み、ステップS40で変数nが1インクリメントされた後、再度ステップS34からの処理を繰り返す。つまり、次のタイルに対する処理を行う。
ステップS38で相対位置がtilenの内部であると判定された場合、ステップS42に進み、ステップS42において、CPU18は、tilenがユーザにより指定された描画要素30であると特定する。
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
例えば、本実施形態では、表示部12に表示される画面は2次元の画面であったが、3次元の画像に対する処理においても本発明を適用することができる。なお、3次元の画像に対する処理の場合、各ノード42に定義されるアフィン行列の次元数が1つ増え、4×4の行列となる。
また、画像処理装置10が有する構成要件の一部が別の装置(例えばサーバなど)に設けられていてもよい。例えば、CPU18とGPU20とが異なる装置に設けられていてもよい。
10 画像処理装置、12 表示部、14 入力部、16 記憶部、18 CPU、20 GPU、30 描画要素、40 木構造、42 ノード。

Claims (6)

  1. 複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理装置であって、
    前記木構造の根ノードは表示画像全体に対応し、
    前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、
    前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、
    前記画像処理装置は、
    前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する制御部と、
    前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理部と、
    を備えることを特徴とする画像処理装置。
  2. 前記木構造に含まれる複数のノードに定義されたアフィン行列を解析することで、前記上位ノード群を特定する上位ノード群特定部、
    をさらに備えることを特徴とする請求項1に記載の画像処理装置。
  3. 前記上位ノード群特定部は、前記木構造の変動に応じて、前記上位ノード群に含まれるノードを変更する、
    ことを特徴とする請求項2に記載の画像処理装置。
  4. 前記表示部上の入力位置を指定した入力をユーザから受け付ける入力部と、
    をさらに備え、
    前記制御部は、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積の逆行列に基づいて、各前記ノードに対応する前記描画要素における前記入力位置の相対位置を演算し、演算された相対位置に基づいて、前記入力位置に対応する前記ノードを特定する、
    ことを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
  5. 複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理プログラムであって、
    前記木構造の根ノードは表示画像全体に対応し、
    前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、
    前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、
    コンピュータを、
    前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する制御部と、
    前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理部と、
    として機能させることを特徴とするプログラム。
  6. 複数の描画要素に対応する複数のノードを含み、各ノードにアフィン行列が定義された木構造で表される画面の描画処理を行う画像処理方法であって、
    前記木構造の根ノードは表示画像全体に対応し、
    前記根ノードに定義された前記アフィン行列は、表示部上における前記表示画像全体のアフィン変換を表し、
    前記根ノード以外の各ノードに定義された前記アフィン行列は、親ノードに対応する前記描画要素に対する相対的な位置関係においての、当該ノードに対応する前記描画要素のアフィン変換を表し、
    前記画像処理方法は、
    制御部が、前記根ノードからの経路に含まれる複数の前記ノードから構成される上位ノード群であって、平行移動及び拡大縮小のいずれかを示すアフィン行列が定義されたノードで構成される上位ノード群に定義された複数の前記アフィン行列の積である上位行列積を演算し、前記上位行列積と、前記上位ノード群の末端ノードの子ノードから、前記末端ノードの下位にある対象ノードまでの経路に含まれる1又は複数の下位ノードに定義された1又は複数の前記アフィン行列を描画処理部へ送信する上位行列積演算ステップと、
    描画処理部が、前記上位行列積と、前記下位ノードに定義された前記アフィン行列との積を演算することで、前記対象ノードに対応する前記描画要素の前記表示部上の描画位置を特定して、当該描画要素の描画を行う描画処理ステップと、
    を含むことを特徴とする画像処理方法。
JP2018117721A 2018-06-21 2018-06-21 画像処理装置、画像処理プログラム、及び、画像処理方法 Active JP6423566B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018117721A JP6423566B1 (ja) 2018-06-21 2018-06-21 画像処理装置、画像処理プログラム、及び、画像処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018117721A JP6423566B1 (ja) 2018-06-21 2018-06-21 画像処理装置、画像処理プログラム、及び、画像処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018196322A Division JP2019220131A (ja) 2018-10-18 2018-10-18 画像処理装置、画像処理プログラム、及び、画像処理方法

Publications (2)

Publication Number Publication Date
JP6423566B1 true JP6423566B1 (ja) 2018-11-14
JP2019219985A JP2019219985A (ja) 2019-12-26

Family

ID=64269207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018117721A Active JP6423566B1 (ja) 2018-06-21 2018-06-21 画像処理装置、画像処理プログラム、及び、画像処理方法

Country Status (1)

Country Link
JP (1) JP6423566B1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001014482A (ja) * 1999-05-10 2001-01-19 Canon Inf Syst Res Australia Pty Ltd アートワークの形状変更方法及び装置
WO2009154294A1 (ja) * 2008-06-20 2009-12-23 国立大学法人静岡大学 移動量抽出装置及びプログラム、画像補正装置及びプログラム並びに記録媒体
JP2013200770A (ja) * 2012-03-26 2013-10-03 Copcom Co Ltd 画像再生プログラム及びゲームシステム
JP2015519661A (ja) * 2013-04-19 2015-07-09 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元場面グラフをスクリーンに表示する方法及び3次元コンピュータシステムのためのオペレーティングシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001014482A (ja) * 1999-05-10 2001-01-19 Canon Inf Syst Res Australia Pty Ltd アートワークの形状変更方法及び装置
WO2009154294A1 (ja) * 2008-06-20 2009-12-23 国立大学法人静岡大学 移動量抽出装置及びプログラム、画像補正装置及びプログラム並びに記録媒体
JP2013200770A (ja) * 2012-03-26 2013-10-03 Copcom Co Ltd 画像再生プログラム及びゲームシステム
JP2015519661A (ja) * 2013-04-19 2015-07-09 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元場面グラフをスクリーンに表示する方法及び3次元コンピュータシステムのためのオペレーティングシステム

Also Published As

Publication number Publication date
JP2019219985A (ja) 2019-12-26

Similar Documents

Publication Publication Date Title
US20200410155A1 (en) System and method for extended dynamic layout
US7451408B2 (en) Selecting moving objects on a system
JP5389757B2 (ja) 画像処理装置、コンテンツ作成装置、画像処理方法、およびコンテンツファイルのデータ構造
JP5981175B2 (ja) 図面表示装置、及び図面表示プログラム
US20150116367A1 (en) Information processing device, display enlarging method, and computer readable medium
US20210141514A1 (en) Automatically positioning objects in three-dimensional space utilizing a widget
JPH0640340B2 (ja) データ表示装置
US10403040B2 (en) Vector graphics rendering techniques
JP6423566B1 (ja) 画像処理装置、画像処理プログラム、及び、画像処理方法
CN113538623A (zh) 确定目标图像的方法、装置、电子设备及存储介质
US20190295497A1 (en) Information processing apparatus and display system
JP2019220131A (ja) 画像処理装置、画像処理プログラム、及び、画像処理方法
US20140101602A1 (en) Methods and apparatus related to expanding or contracting representations of data
CN114169304A (zh) 表格创建方法、装置、电子设备及计算机可读存储介质
US11288778B2 (en) Creation and rasterization of shapes using geometry, style settings, or location
KR20230145478A (ko) 복수 단말 연동의 디스플레이 업데이트 방법 및 장치
US11017505B2 (en) System and method for applying antialiasing to images
KR20230073235A (ko) 디스플레이 스케일링 이벤트를 위한 사용자 인터페이스 시스템
US10387997B2 (en) Information processing device, information processing method, and storage medium
JP2017211579A (ja) 文字作成装置
JP2000315073A (ja) 画像描画装置、画像描画方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US11233920B1 (en) Transforming document elements for modified document layouts
CN111757081B (zh) 用于虚拟场景的移动限制方法、客户端、服务器及计算设备
JP4863306B2 (ja) ベクターイメージ描画装置、ベクターイメージ描画方法およびプログラム
CN111383310B (zh) 一种图片分裂方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180705

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180705

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180925

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181018

R150 Certificate of patent or registration of utility model

Ref document number: 6423566

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250